* fix: reduce opencode session list churn * fix: make bun-tmp-janitor cross-platform and move to process-level boot - Extend platform support from Linux-only to Linux + macOS (win32 skipped since opencode ships no Windows binary and the kernel disallows unlinking mapped files there) - Use os.tmpdir() instead of hardcoded /tmp to handle macOS $TMPDIR paths - Extend file pattern from \.so to \.(so|dylib) to cover macOS dylib leaks - Move startBunTmpJanitor() from ensureLifecycleWorker() (per-project) to the process-level boot in registerStart() immediately after register(), where the single-instance contract is already in force - Drop the project-observer-bound onSweep closure that incorrectly attributed janitor health to whichever project happened to start first; replaced with a simple stderr warn on errors (no project context needed for a process-wide sweep of /tmp) - Move stopBunTmpJanitor() into the SIGINT/SIGTERM shutdown handler in registerStart() alongside stopAllLifecycleWorkers() - Remove startBunTmpJanitor/stopBunTmpJanitor from lifecycle-service.ts entirely; lifecycle workers have no business knowing about a process-wide OS resource * fix(opencode): address PR #1478 review (TMPDIR isolation, shared cache, janitor cleanup) Implements all seven findings from the PR #1478 review: Core / agent-opencode: - New @aoagents/ao-core/opencode-shared module owns the single TTL cache + in-flight dedup for 'opencode session list' (was duplicated across core and the plugin, doubling spawns per poll cycle). - TTL dropped from 3s to 500ms so the send-confirmation loop's updatedAt > baselineUpdatedAt delivery signal can actually fire. - New invalidateOpenCodeSessionListCache() called by deleteOpenCodeSession so reuse / remap / restore code paths cannot observe a deleted id. - New getOpenCodeChildEnv() / getOpenCodeTmpDir(): every opencode child spawned by core, the plugin, or the agent runtime points TMPDIR/TMP/TEMP at ~/.agent-orchestrator/.bun-tmp. Bounds the janitor's blast radius to AO-owned files even on shared hosts. CLI janitor: - Sweeps only the AO-owned tmp dir (not the system /tmp). - Filters synchronously before spawning per-entry stat/unlink work. - stopBunTmpJanitor() is now async and awaits any in-flight sweep so SIGTERM cannot exit while unlink() is mid-flight; start.ts shutdown handler awaits it. - onSweep callback in start.ts now logs successful reclaims, not just errors, so operators can confirm the janitor is doing useful work. Tests: - packages/core/__tests__/opencode-shared.test.ts (TTL contract, TMPDIR location, env merge semantics). - packages/cli/__tests__/lib/bun-tmp-janitor.test.ts (sweep behavior, stop-awaits-in-flight, pattern matching, missing-dir tolerance). * chore: remove review postmortem artifact * fix(cli): remove start command non-null assertions |
||
|---|---|---|
| .. | ||
| src | ||
| CHANGELOG.md | ||
| package.json | ||
| tsconfig.json | ||