summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorKit Langton <[email protected]>2026-04-16 20:01:37 -0400
committerGitHub <[email protected]>2026-04-17 00:01:37 +0000
commitf6dbb2f3e0de46d2a5e07618548c94259889a22a (patch)
tree31068964f2ee493bdac88ad870a64b7a233c103d
parentfdd5b77bfd9c525a2ae6656a011c1419748761e3 (diff)
downloadopencode-f6dbb2f3e0de46d2a5e07618548c94259889a22a.tar.gz
opencode-f6dbb2f3e0de46d2a5e07618548c94259889a22a.zip
refactor: unwrap Heap namespace + self-reexport (#22931)
-rw-r--r--packages/opencode/src/cli/heap.ts86
1 files changed, 43 insertions, 43 deletions
diff --git a/packages/opencode/src/cli/heap.ts b/packages/opencode/src/cli/heap.ts
index cf1cffa80..87b7b2ebf 100644
--- a/packages/opencode/src/cli/heap.ts
+++ b/packages/opencode/src/cli/heap.ts
@@ -8,52 +8,52 @@ const log = Log.create({ service: "heap" })
const MINUTE = 60_000
const LIMIT = 2 * 1024 * 1024 * 1024
-export namespace Heap {
- let timer: Timer | undefined
- let lock = false
- let armed = true
-
- export function start() {
- if (!Flag.OPENCODE_AUTO_HEAP_SNAPSHOT) return
- if (timer) return
-
- const run = async () => {
- if (lock) return
-
- const stat = process.memoryUsage()
- if (stat.rss <= LIMIT) {
- armed = true
- return
- }
- if (!armed) return
-
- lock = true
- armed = false
- const file = path.join(
- Global.Path.log,
- `heap-${process.pid}-${new Date().toISOString().replace(/[:.]/g, "")}.heapsnapshot`,
- )
- log.warn("heap usage exceeded limit", {
- rss: stat.rss,
- heap: stat.heapUsed,
- file,
- })
+let timer: Timer | undefined
+let lock = false
+let armed = true
- await Promise.resolve()
- .then(() => writeHeapSnapshot(file))
- .catch((err) => {
- log.error("failed to write heap snapshot", {
- error: err instanceof Error ? err.message : String(err),
- file,
- })
- })
+export function start() {
+ if (!Flag.OPENCODE_AUTO_HEAP_SNAPSHOT) return
+ if (timer) return
- lock = false
+ const run = async () => {
+ if (lock) return
+
+ const stat = process.memoryUsage()
+ if (stat.rss <= LIMIT) {
+ armed = true
+ return
}
+ if (!armed) return
+
+ lock = true
+ armed = false
+ const file = path.join(
+ Global.Path.log,
+ `heap-${process.pid}-${new Date().toISOString().replace(/[:.]/g, "")}.heapsnapshot`,
+ )
+ log.warn("heap usage exceeded limit", {
+ rss: stat.rss,
+ heap: stat.heapUsed,
+ file,
+ })
+
+ await Promise.resolve()
+ .then(() => writeHeapSnapshot(file))
+ .catch((err) => {
+ log.error("failed to write heap snapshot", {
+ error: err instanceof Error ? err.message : String(err),
+ file,
+ })
+ })
- timer = setInterval(() => {
- void run()
- }, MINUTE)
- timer.unref?.()
+ lock = false
}
+
+ timer = setInterval(() => {
+ void run()
+ }, MINUTE)
+ timer.unref?.()
}
+
+export * as Heap from "./heap"