agent-orchestrator/packages/cli/CHANGELOG.md

178 lines
10 KiB
Markdown

# @aoagents/ao-cli
## 0.4.0
### Minor Changes
- f330a1e: `ao session ls` and `ao status` now hide terminated sessions (`killed`, `terminated`, `done`, `merged`, `errored`, `cleanup`) by default. A dim footer reports how many were hidden and how to surface them. Pass `--include-terminated` to restore the previous unfiltered output.
Core change: `parseCanonicalLifecycle()` now preserves `pr.state="merged"` when reconstructing legacy metadata with `status=merged` but no `pr=` URL (previously collapsed to `pr.state="none"`, which made `isTerminalSession()` return false for those sessions). Also exports `sessionFromMetadata` so consumers can round-trip flat metadata through the canonical lifecycle.
**Breaking — JSON output shape:** `ao session ls --json` and `ao status --json` now emit `{ data: [...], meta: { hiddenTerminatedCount: number } }` instead of a bare array. Scripts consuming the JSON must read `.data` for the session list. `--include-terminated` restores full data and reports `hiddenTerminatedCount: 0`.
The existing `-a, --all` flag still only governs orchestrator visibility on `ao session ls` — it does **not** re-enable terminated sessions. Combine with `--include-terminated` when you want both.
- e7ad928: Allow workers to report non-terminal PR workflow events like `pr-created`, `draft-pr-created`, and `ready-for-review` with optional PR URL/number metadata, while keeping merged and closed PR state SCM-owned.
**Migration:** `Session` now carries canonical lifecycle truth in `session.lifecycle`
and explicit activity-evidence metadata in `session.activitySignal`. Third-party
callers that construct `Session` objects directly must populate those fields or
route through the core session helpers that synthesize them.
### Patch Changes
- 2306078: Add SQLite-backed activity event logging for session and lifecycle diagnostics, plus `ao events` commands for listing, searching, and inspecting event log stats.
- f09cc72: `ao session ls` hides terminal sessions in text output by default; use `--include-terminated` for the full text list.
- e1bb51f: Fix restore behavior across AO session recovery flows.
- restore the latest dead-but-restorable orchestrator on `ao start` instead of silently spawning a new orchestrator when tmux is gone
- make worker session orchestrator navigation prefer the most recently active live orchestrator for the project
- make permissionless Codex restores preserve dangerous bypass semantics so resumed workers behave like fresh permissionless launches
- f674422: Make project orchestrators deterministic and idempotent.
- ensure each project uses the canonical `{prefix}-orchestrator` session instead of creating numbered main orchestrators
- make `ao start`, the dashboard, and the orchestrator API reuse or restore the canonical session
- keep legacy numbered orchestrators visible as stale sessions without treating them as the main orchestrator
- 4701122: opencode: bound /tmp blast radius and consolidate session-list cache
Addresses review feedback on PR #1478:
- **TMPDIR isolation.** Every `opencode` child we spawn now points at
`~/.agent-orchestrator/.bun-tmp/` via `TMPDIR`/`TMP`/`TEMP`. Bun's
embedded shared-library extraction lands there instead of the system
`/tmp`, so the cli janitor only ever sweeps AO-owned files. Other
users' or other applications' Bun artifacts on a shared host can no
longer be touched by the regex.
- **Single shared session-list cache.** Core and the agent-opencode
plugin previously kept independent caches; per poll cycle the system
spawned at least two `opencode session list` processes instead of
one. Both consumers now use the shared cache exported from
`@aoagents/ao-core` (`getCachedOpenCodeSessionList`).
- **TTL no longer covers the send-confirmation loop.** The cache TTL
dropped from 3s to 500ms so the
`updatedAt > baselineUpdatedAt` delivery signal in
`sendWithConfirmation` actually fires. Concurrent callers still
share the in-flight promise.
- **Delete invalidates the cache.** `deleteOpenCodeSession` now calls
`invalidateOpenCodeSessionListCache()` on success so reuse, remap,
and restore code paths cannot observe a deleted session id within
the TTL window.
- **Janitor reliability.** `sweepOnce` now filters synchronously
before allocating per-file promises (matters on hosts with thousands
of `/tmp` entries), and `stopBunTmpJanitor()` is now async and awaits
any in-flight sweep so SIGTERM cannot exit while `unlink` is mid-flight.
- **Janitor observability.** The sweep callback in `ao start` now logs
successful reclaims, not just errors, so operators can confirm the
janitor is doing useful work.
- c8af50f: Make `ProjectConfig.repo` optional to support projects without a configured remote.
**Migration:** `ProjectConfig.repo` is now `string | undefined` instead of `string`.
External plugins that access `project.repo` directly (e.g. `project.repo.split("/")`) must
add a null check first. Use a guard like `if (!project.repo) return null;` or a helper that
throws with a descriptive error.
- bcdda4b: Tighten the session lifecycle review follow-ups by debouncing report-watcher reactions, restoring the shared Geist/JetBrains font setup, wiring recovery validation to real agent activity probes, adding direct coverage for `ao report`, activity-signal classification, and dashboard lifecycle audit panels, fixing the remaining lifecycle-state regressions around legacy merged-session rehydration and malformed canonical payload parsing, making agent-report metadata writes atomic, persisting canonical payloads for legacy sessions on read, stabilizing detecting evidence hashes, and removing the remaining inline-style cleanup debt from the session detail view. Follow-on fixes also split the Session Detail view into smaller components, harden PR URL parsing and wrapper capture for GitHub Enterprise and GitLab-style hosts, redact sensitive observability payload fields, bound on-disk audit logs, and align cleanup wording with the current merged-session lifecycle policy.
- 1cbf657: Split orchestrator-only detail views from worker detail views, add an auditable history for `ao acknowledge` / `ao report`, and preserve canonical `needs_input` / `stuck` lifecycle states when polling only has weak or unchanged evidence.
- Updated dependencies [2306078]
- Updated dependencies [b0d0994]
- Updated dependencies [faaddb1]
- Updated dependencies [0cf0190]
- Updated dependencies [f330a1e]
- Updated dependencies [a862327]
- Updated dependencies [331f1ce]
- Updated dependencies [e465a47]
- Updated dependencies [703d584]
- Updated dependencies [e1bb51f]
- Updated dependencies [08667c8]
- Updated dependencies [eca3001]
- Updated dependencies [f674422]
- Updated dependencies [62353eb]
- Updated dependencies [bd36c7b]
- Updated dependencies [e7ad928]
- Updated dependencies [ca8c4cc]
- Updated dependencies [7b82374]
- Updated dependencies [4701122]
- Updated dependencies [c8af50f]
- Updated dependencies [bcdda4b]
- Updated dependencies [eb7314b]
- Updated dependencies [a8bc746]
- Updated dependencies [a8bc746]
- Updated dependencies [1cbf657]
- Updated dependencies [c447c7c]
- Updated dependencies [a45eb32]
- Updated dependencies [7072143]
- Updated dependencies [a8bc746]
- Updated dependencies [e518562]
- Updated dependencies [fed25d5]
- Updated dependencies [ed2dcea]
- @aoagents/ao-core@0.4.0
- @aoagents/ao-plugin-agent-codex@0.4.0
- @aoagents/ao-plugin-agent-claude-code@0.4.0
- @aoagents/ao-web@0.4.0
- @aoagents/ao-plugin-agent-opencode@0.4.0
- @aoagents/ao-plugin-scm-github@0.4.0
- @aoagents/ao-plugin-tracker-github@0.4.0
- @aoagents/ao-plugin-agent-aider@0.4.0
- @aoagents/ao-plugin-agent-cursor@0.1.2
- @aoagents/ao-plugin-agent-kimicode@0.1.1
- @aoagents/ao-plugin-notifier-composio@0.4.0
- @aoagents/ao-plugin-notifier-desktop@0.4.0
- @aoagents/ao-plugin-notifier-discord@0.2.7
- @aoagents/ao-plugin-notifier-openclaw@0.2.7
- @aoagents/ao-plugin-notifier-slack@0.4.0
- @aoagents/ao-plugin-notifier-webhook@0.4.0
- @aoagents/ao-plugin-runtime-process@0.4.0
- @aoagents/ao-plugin-runtime-tmux@0.4.0
- @aoagents/ao-plugin-terminal-iterm2@0.4.0
- @aoagents/ao-plugin-terminal-web@0.4.0
- @aoagents/ao-plugin-tracker-linear@0.4.0
- @aoagents/ao-plugin-workspace-clone@0.4.0
- @aoagents/ao-plugin-workspace-worktree@0.4.0
## 0.2.2
### Patch Changes
- Updated dependencies [5315e4e]
- @composio/ao-web@0.2.2
## 0.2.1
### Patch Changes
- ac625c3: Fix startup onboarding and install reliability:
- Repair npm global install startup path by improving package resolution and web package discovery hints.
- Make `ao start` prerequisite installs explicit and interactive for required tools (`tmux`, `git`) with clearer fallback guidance.
- Keep `ao spawn` preflight check-only for `tmux` (no implicit install).
- Remove redundant agent runtime re-detection during config generation.
## 0.2.0
### Minor Changes
- 3a650b0: Zero-friction onboarding: `ao start` auto-detects project, generates config, and launches dashboard — no prompts, no manual setup. Renamed npm package to `@composio/ao`. Made `@composio/ao-web` publishable with production entry point. Cross-platform agent detection. Auto-port-finding. Permission auto-retry in shell scripts.
### Patch Changes
- Updated dependencies [3a650b0]
- @composio/ao-core@0.2.0
- @composio/ao-web@0.2.0
- @composio/ao-plugin-agent-claude-code@0.2.0
- @composio/ao-plugin-agent-aider@0.2.0
- @composio/ao-plugin-agent-codex@0.2.0
- @composio/ao-plugin-agent-opencode@0.2.0
- @composio/ao-plugin-notifier-composio@0.2.0
- @composio/ao-plugin-notifier-desktop@0.2.0
- @composio/ao-plugin-notifier-openclaw@0.1.1
- @composio/ao-plugin-notifier-slack@0.2.0
- @composio/ao-plugin-notifier-webhook@0.2.0
- @composio/ao-plugin-runtime-process@0.2.0
- @composio/ao-plugin-runtime-tmux@0.2.0
- @composio/ao-plugin-scm-github@0.2.0
- @composio/ao-plugin-terminal-iterm2@0.2.0
- @composio/ao-plugin-terminal-web@0.2.0
- @composio/ao-plugin-tracker-github@0.2.0
- @composio/ao-plugin-tracker-linear@0.2.0
- @composio/ao-plugin-workspace-clone@0.2.0
- @composio/ao-plugin-workspace-worktree@0.2.0