commandmate 0.44.2 → 0.44.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +149 -149
- package/.next/app-path-routes-manifest.json +21 -21
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +12 -12
- package/.next/react-loadable-manifest.json +0 -6
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/update/route.js +1 -1
- package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/versions/route.js +1 -1
- package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update/route.js +2 -2
- package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/route.js +1 -1
- package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/capabilities/route.js +1 -1
- package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/route.js +1 -1
- package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/route.js +1 -1
- package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js +2 -2
- package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/claude-done/route.js +2 -2
- package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/escalation/route.js +1 -1
- package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/subscriptions/route.js +2 -2
- package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/vapid/route.js +1 -1
- package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/route.js +1 -1
- package/.next/server/app/api/relays/route.js.nft.json +1 -1
- package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/route.js +1 -1
- package/.next/server/app/api/repositories/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-agents/route.js +1 -1
- package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sidebar/group-order/route.js +1 -1
- package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/[id]/route.js +1 -1
- package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/[id]/route.js +2 -2
- package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/route.js +2 -2
- package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +3 -3
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/notes/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route.js +3 -3
- package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/more/page_client-reference-manifest.js +1 -1
- package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
- package/.next/server/app/review/page_client-reference-manifest.js +1 -1
- package/.next/server/app/sessions/page.js +1 -1
- package/.next/server/app/sessions/page.js.nft.json +1 -1
- package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/page.js +11 -11
- package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +21 -21
- package/.next/server/chunks/1191.js +2 -2
- package/.next/server/chunks/1210.js +1 -1
- package/.next/server/chunks/1559.js +2 -0
- package/.next/server/chunks/1789.js +1 -0
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2404.js +1 -1
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/2460.js +1 -1
- package/.next/server/chunks/2710.js +1 -1
- package/.next/server/chunks/2908.js +1 -1
- package/.next/server/chunks/2980.js +1 -1
- package/.next/server/chunks/3241.js +1 -1
- package/.next/server/chunks/3480.js +1 -1
- package/.next/server/chunks/3718.js +1 -1
- package/.next/server/chunks/4207.js +2 -2
- package/.next/server/chunks/450.js +1 -1
- package/.next/server/chunks/4672.js +5 -0
- package/.next/server/chunks/{9353.js → 4718.js} +2 -2
- package/.next/server/chunks/4837.js +14 -0
- package/.next/server/chunks/5048.js +1 -1
- package/.next/server/chunks/5209.js +1 -0
- package/.next/server/chunks/5595.js +1 -1
- package/.next/server/chunks/5625.js +25 -0
- package/.next/server/chunks/611.js +1 -1
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6401.js +1 -1
- package/.next/server/chunks/6781.js +1 -1
- package/.next/server/chunks/6793.js +3 -3
- package/.next/server/chunks/7491.js +2 -2
- package/.next/server/chunks/7905.js +1 -1
- package/.next/server/chunks/850.js +1 -1
- package/.next/server/chunks/8728.js +3 -3
- package/.next/server/chunks/8791.js +1 -1
- package/.next/server/chunks/8800.js +1 -1
- package/.next/server/chunks/8918.js +7 -7
- package/.next/server/chunks/9130.js +1 -1
- package/.next/server/chunks/9390.js +2 -2
- package/.next/server/chunks/9584.js +1 -1
- package/.next/server/chunks/9627.js +6 -6
- package/.next/server/chunks/9731.js +3 -3
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/{1642-fb2e176aaadbd137.js → 1642-767aed8e7c61ef7f.js} +1 -1
- package/.next/static/chunks/{2407-051f6f84226a9f2c.js → 2407-06d35bb1aa02de80.js} +1 -1
- package/.next/static/chunks/{2619-04bc32f026a0d946.js → 2619-a305ad4810f1393a.js} +1 -1
- package/.next/static/chunks/4727-5d695d71e3fdf97b.js +1 -0
- package/.next/static/chunks/{8165-3853772f6ae1299b.js → 8165-3525fb42f1b4976e.js} +1 -1
- package/.next/static/chunks/app/{layout-9da1ab602bcb3051.js → layout-0d1750b833f5cc3e.js} +1 -1
- package/.next/static/chunks/app/sessions/page-2af68c63211c751f.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-e36898c3a80e7302.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/terminal/{page-373ea37b16d930c7.js → page-c601f3b3ece6557e.js} +1 -1
- package/.next/static/css/057f64a65726c439.css +1 -0
- package/.next/trace +13 -13
- package/dist/cli/commands/ask.d.ts.map +1 -1
- package/dist/cli/commands/ask.js +120 -119
- package/dist/cli/commands/attach.d.ts +94 -0
- package/dist/cli/commands/attach.d.ts.map +1 -1
- package/dist/cli/commands/attach.js +145 -7
- package/dist/cli/commands/auto-yes.js +1 -1
- package/dist/cli/commands/capture.d.ts.map +1 -1
- package/dist/cli/commands/capture.js +3 -5
- package/dist/cli/commands/command-target.d.ts +23 -0
- package/dist/cli/commands/command-target.d.ts.map +1 -0
- package/dist/cli/commands/command-target.js +25 -0
- package/dist/cli/commands/instances.d.ts.map +1 -1
- package/dist/cli/commands/instances.js +41 -2
- package/dist/cli/commands/message-dispatch.d.ts +36 -0
- package/dist/cli/commands/message-dispatch.d.ts.map +1 -0
- package/dist/cli/commands/message-dispatch.js +63 -0
- package/dist/cli/commands/reply.d.ts.map +1 -1
- package/dist/cli/commands/reply.js +2 -5
- package/dist/cli/commands/respond.d.ts.map +1 -1
- package/dist/cli/commands/respond.js +3 -6
- package/dist/cli/commands/send.d.ts.map +1 -1
- package/dist/cli/commands/send.js +149 -146
- package/dist/cli/commands/wait.d.ts.map +1 -1
- package/dist/cli/commands/wait.js +589 -431
- package/dist/cli/types/api-responses.d.ts +159 -27
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/types/api-responses.js +4 -2
- package/dist/cli/utils/api-client.d.ts +25 -5
- package/dist/cli/utils/api-client.d.ts.map +1 -1
- package/dist/cli/utils/api-client.js +87 -55
- package/dist/cli/utils/server-url.d.ts +1 -0
- package/dist/cli/utils/server-url.d.ts.map +1 -1
- package/dist/cli/utils/server-url.js +7 -0
- package/dist/config/uat-isolation.d.ts +140 -0
- package/dist/config/uat-isolation.d.ts.map +1 -0
- package/dist/config/uat-isolation.js +246 -0
- package/dist/lib/global-state.d.ts +12 -0
- package/dist/lib/global-state.d.ts.map +1 -0
- package/dist/lib/global-state.js +16 -0
- package/dist/lib/polling/auto-yes-suppression-reason.d.ts +33 -0
- package/dist/lib/polling/auto-yes-suppression-reason.d.ts.map +1 -0
- package/dist/lib/polling/auto-yes-suppression-reason.js +2 -0
- package/dist/lib/session/prompt-view.d.ts +26 -3
- package/dist/lib/session/prompt-view.d.ts.map +1 -1
- package/dist/lib/session/prompt-view.js +26 -3
- package/dist/lib/session/status-evidence-type.d.ts +16 -0
- package/dist/lib/session/status-evidence-type.d.ts.map +1 -0
- package/dist/lib/session/status-evidence-type.js +2 -0
- package/dist/lib/tmux/legacy-session-alias.d.ts.map +1 -1
- package/dist/lib/tmux/legacy-session-alias.js +2 -1
- package/dist/server/locales/en/worktree.json +3 -1
- package/dist/server/locales/ja/worktree.json +3 -1
- package/dist/server/src/cli/types/api-responses.js +4 -2
- package/dist/server/src/config/cli-tool-timing-config.js +1 -6
- package/dist/server/src/config/uat-isolation.js +246 -0
- package/dist/server/src/lib/assistant-response-saver.js +62 -3
- package/dist/server/src/lib/auto-yes-lifecycle.js +6 -0
- package/dist/server/src/lib/auto-yes-poller.js +450 -160
- package/dist/server/src/lib/auto-yes-state.js +2 -2
- package/dist/server/src/lib/cli-tools/antigravity.js +38 -79
- package/dist/server/src/lib/cli-tools/base.js +151 -0
- package/dist/server/src/lib/cli-tools/codex.js +44 -80
- package/dist/server/src/lib/cli-tools/command-code.js +24 -56
- package/dist/server/src/lib/cli-tools/copilot.js +25 -67
- package/dist/server/src/lib/cli-tools/direct-input.js +8 -0
- package/dist/server/src/lib/cli-tools/gemini.js +23 -73
- package/dist/server/src/lib/cli-tools/opencode-pane-width.js +53 -0
- package/dist/server/src/lib/cli-tools/opencode-v2.js +9 -7
- package/dist/server/src/lib/cli-tools/opencode.js +21 -85
- package/dist/server/src/lib/cli-tools/submit-verified-sender.js +127 -4
- package/dist/server/src/lib/cli-tools/vibe-local.js +21 -66
- package/dist/server/src/lib/detection/cli-patterns.js +374 -3065
- package/dist/server/src/lib/detection/idle-evidence-observation.js +2 -2
- package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +7 -32
- package/dist/server/src/lib/detection/prompt-detector.js +2 -35
- package/dist/server/src/lib/detection/selection-shape-patterns.js +69 -0
- package/dist/server/src/lib/detection/selection-shape.js +32 -520
- package/dist/server/src/lib/detection/shared/pasted-text.js +41 -0
- package/dist/server/src/lib/detection/shared/shell-pane-command.js +16 -0
- package/dist/server/src/lib/detection/shared/strip-box-drawing.js +25 -0
- package/dist/server/src/lib/detection/tools/antigravity/detect.js +5 -29
- package/dist/server/src/lib/detection/tools/antigravity/dialog.js +2 -15
- package/dist/server/src/lib/detection/tools/antigravity/patterns.js +286 -0
- package/dist/server/src/lib/detection/tools/claude/detect.js +3 -14
- package/dist/server/src/lib/detection/tools/claude/patterns.js +264 -4
- package/dist/server/src/lib/detection/tools/claude/prompt.js +2 -10
- package/dist/server/src/lib/detection/tools/codex/detect.js +46 -85
- package/dist/server/src/lib/detection/tools/codex/live-region.js +33 -2
- package/dist/server/src/lib/detection/tools/codex/patterns.js +855 -0
- package/dist/server/src/lib/detection/tools/codex/prompt.js +2 -10
- package/dist/server/src/lib/detection/tools/command-code/detect.js +8 -50
- package/dist/server/src/lib/detection/tools/command-code/dialog.js +2 -18
- package/dist/server/src/lib/detection/tools/command-code/patterns.js +234 -0
- package/dist/server/src/lib/detection/tools/command-code/selection-shape.js +461 -0
- package/dist/server/src/lib/detection/tools/context-above.js +20 -0
- package/dist/server/src/lib/detection/tools/copilot/detect.js +10 -35
- package/dist/server/src/lib/detection/tools/copilot/patterns.js +640 -0
- package/dist/server/src/lib/detection/tools/copilot/prompt.js +2 -10
- package/dist/server/src/lib/detection/tools/gemini/patterns.js +29 -0
- package/dist/server/src/lib/detection/tools/live-region-specs.js +1 -1
- package/dist/server/src/lib/detection/tools/opencode/detect.js +8 -49
- package/dist/server/src/lib/detection/tools/opencode/patterns.js +508 -0
- package/dist/server/src/lib/detection/tools/opencode-v2/detect.js +7 -42
- package/dist/server/src/lib/detection/tools/opencode-v2/patterns.js +63 -0
- package/dist/server/src/lib/detection/tools/run-detection.js +6 -47
- package/dist/server/src/lib/detection/tools/verdicts.js +59 -0
- package/dist/server/src/lib/detection/tools/vibe-local/patterns.js +20 -0
- package/dist/server/src/lib/detection/truncate-raw-content.js +38 -0
- package/dist/server/src/lib/detection/turn-abandoned.js +66 -0
- package/dist/server/src/lib/detection/unclassified-frame-tracker.js +2 -2
- package/dist/server/src/lib/global-state.js +16 -0
- package/dist/server/src/lib/hooks/agent-session-telemetry.js +4 -6
- package/dist/server/src/lib/hooks/permission-decision-state.js +2 -2
- package/dist/server/src/lib/hooks/sources/antigravity/history.js +11 -76
- package/dist/server/src/lib/hooks/sources/antigravity/hooks-config.js +63 -1
- package/dist/server/src/lib/hooks/sources/antigravity/source.js +16 -0
- package/dist/server/src/lib/hooks/sources/antigravity/transcript.js +3 -12
- package/dist/server/src/lib/hooks/sources/claude/history.js +17 -156
- package/dist/server/src/lib/hooks/sources/claude/queued-notice.js +53 -0
- package/dist/server/src/lib/hooks/sources/claude/source.js +33 -3
- package/dist/server/src/lib/hooks/sources/claude/transcript.js +3 -13
- package/dist/server/src/lib/hooks/sources/codex/history.js +11 -74
- package/dist/server/src/lib/hooks/sources/codex/hooks-config.js +147 -11
- package/dist/server/src/lib/hooks/sources/codex/relay-install.js +64 -21
- package/dist/server/src/lib/hooks/sources/codex/transcript.js +5 -15
- package/dist/server/src/lib/hooks/sources/command-code/history.js +20 -121
- package/dist/server/src/lib/hooks/sources/command-code/transcript.js +3 -13
- package/dist/server/src/lib/hooks/sources/copilot/hook-settings.js +161 -31
- package/dist/server/src/lib/hooks/sources/define-source.js +40 -55
- package/dist/server/src/lib/hooks/sources/event-mapper.js +2 -1
- package/dist/server/src/lib/hooks/sources/opencode/diff.js +3 -4
- package/dist/server/src/lib/hooks/sources/opencode/history.js +2 -1
- package/dist/server/src/lib/hooks/sources/opencode/launch-settings.js +2 -1
- package/dist/server/src/lib/hooks/sources/opencode/payloads.js +2 -1
- package/dist/server/src/lib/hooks/sources/opencode/ports.js +2 -1
- package/dist/server/src/lib/hooks/sources/opencode/subscription.js +4 -3
- package/dist/server/src/lib/hooks/sources/opencode/transcript.js +3 -16
- package/dist/server/src/lib/hooks/sources/opencode-v2/history.js +2 -1
- package/dist/server/src/lib/hooks/sources/opencode-v2/mappers.js +5 -4
- package/dist/server/src/lib/hooks/sources/opencode-v2/ports.js +2 -1
- package/dist/server/src/lib/hooks/sources/opencode-v2/subscription.js +3 -7
- package/dist/server/src/lib/hooks/sources/opencode-v2/usage.js +2 -1
- package/dist/server/src/lib/hooks/sources/pending-decisions.js +2 -1
- package/dist/server/src/lib/hooks/sources/registry.js +3 -2
- package/dist/server/src/lib/hooks/sources/transcript-history.js +262 -0
- package/dist/server/src/lib/hooks/sources/turn-body.js +31 -0
- package/dist/server/src/lib/hooks/tool-input-normalization-state.js +2 -2
- package/dist/server/src/lib/polling/antigravity-permission-receipts.js +2 -2
- package/dist/server/src/lib/polling/auto-yes-enter-fallback-state.js +142 -0
- package/dist/server/src/lib/polling/auto-yes-enter-fallback.js +187 -0
- package/dist/server/src/lib/polling/auto-yes-resolver.js +9 -3
- package/dist/server/src/lib/polling/auto-yes-suppression-reason.js +2 -0
- package/dist/server/src/lib/polling/auto-yes-suppression-state.js +2 -2
- package/dist/server/src/lib/polling/pending-scraped-response.js +190 -0
- package/dist/server/src/lib/polling/prompt-dedup-state.js +2 -2
- package/dist/server/src/lib/polling/prompt-dedup.js +2 -2
- package/dist/server/src/lib/polling/response-checker-dialog-gate.js +95 -0
- package/dist/server/src/lib/polling/response-checker-extraction-result.js +50 -0
- package/dist/server/src/lib/polling/response-checker-extraction-steps.js +670 -0
- package/dist/server/src/lib/polling/response-checker.js +641 -1142
- package/dist/server/src/lib/polling/response-dedup.js +3 -4
- package/dist/server/src/lib/polling/response-poller-constants.js +17 -0
- package/dist/server/src/lib/polling/response-poller-core.js +54 -20
- package/dist/server/src/lib/polling/startup-screen.js +142 -0
- package/dist/server/src/lib/polling/structured-history-gate.js +3 -2
- package/dist/server/src/lib/prompt-answer-semantic.js +178 -0
- package/dist/server/src/lib/prompt-answer-sender.js +5 -4
- package/dist/server/src/lib/push/failure-episode-state.js +2 -2
- package/dist/server/src/lib/push/notification-dedup.js +3 -4
- package/dist/server/src/lib/push/prompt-card-state.js +2 -2
- package/dist/server/src/lib/push/waiting-push-notifier.js +3 -4
- package/dist/server/src/lib/realtime/publisher-registry.js +3 -2
- package/dist/server/src/lib/realtime/terminal-broadcast.js +38 -5
- package/dist/server/src/lib/realtime/terminal-session-ownership.js +45 -0
- package/dist/server/src/lib/relay/relay-delivery.js +3 -2
- package/dist/server/src/lib/relay/relay-readiness.js +38 -1
- package/dist/server/src/lib/response-cleaner.js +24 -1
- package/dist/server/src/lib/response-extractor.js +16 -0
- package/dist/server/src/lib/schedule-manager.js +8 -10
- package/dist/server/src/lib/session/agent-event-ask-user-question.js +168 -0
- package/dist/server/src/lib/session/agent-event-awaiting-instruction.js +104 -0
- package/dist/server/src/lib/session/agent-event-dedup.js +539 -0
- package/dist/server/src/lib/session/agent-event-model.js +562 -0
- package/dist/server/src/lib/session/agent-event-record.js +10 -0
- package/dist/server/src/lib/session/agent-event-state.js +106 -1854
- package/dist/server/src/lib/session/agent-event-structured-state.js +109 -0
- package/dist/server/src/lib/session/agent-event-turn.js +811 -0
- package/dist/server/src/lib/session/agent-session-lifecycle.js +11 -2
- package/dist/server/src/lib/session/chat-turn-progress.js +322 -0
- package/dist/server/src/lib/session/claude-executor.js +45 -5
- package/dist/server/src/lib/session/claude-session.js +21 -65
- package/dist/server/src/lib/session/cli-session.js +17 -0
- package/dist/server/src/lib/session/current-output-builder.js +450 -1103
- package/dist/server/src/lib/session/current-output-history-writers.js +255 -0
- package/dist/server/src/lib/session/current-output-types.js +9 -0
- package/dist/server/src/lib/session/detection-divergence.js +55 -0
- package/dist/server/src/lib/session/global-session-constants.js +2 -13
- package/dist/server/src/lib/session/hook-turn-hold.js +102 -0
- package/dist/server/src/lib/session/layer-disagreement.js +2 -2
- package/dist/server/src/lib/session/opencode-session-store.js +2 -1
- package/dist/server/src/lib/session/prompt-view.js +26 -3
- package/dist/server/src/lib/session/prompt-waiting-composition.js +3 -2
- package/dist/server/src/lib/session/provisional-turn.js +3 -1
- package/dist/server/src/lib/session/send-user-message.js +1 -1
- package/dist/server/src/lib/session/session-starting-state.js +4 -6
- package/dist/server/src/lib/session/status-evidence-type.js +2 -0
- package/dist/server/src/lib/session/status-evidence.js +2 -2
- package/dist/server/src/lib/session/structured-status-merge.js +335 -0
- package/dist/server/src/lib/session/waiting-episode-state.js +3 -4
- package/dist/server/src/lib/session-cleanup.js +1 -5
- package/dist/server/src/lib/skills/install-plan.js +2 -1
- package/dist/server/src/lib/skills/snapshot-store.js +2 -2
- package/dist/server/src/lib/skills/uninstall-plan.js +2 -2
- package/dist/server/src/lib/timer-manager.js +6 -8
- package/dist/server/src/lib/tmux/geometry-delegation.js +3 -4
- package/dist/server/src/lib/tmux/legacy-session-alias.js +2 -1
- package/dist/server/src/lib/tmux/session-hooks.js +2 -1
- package/dist/server/src/lib/tmux/session-status-options.js +3 -3
- package/dist/server/src/lib/tmux/tmux-capture-cache.js +3 -2
- package/dist/server/src/lib/tmux/tmux.js +33 -59
- package/dist/server/src/lib/tui-accumulator.js +2 -2
- package/dist/server/src/lib/version-checker.js +6 -6
- package/dist/server/src/lib/ws-server.js +47 -11
- package/docs/en/user-guide/webapp-guide.md +27 -3
- package/package.json +1 -1
- package/release-notes/0.44.3.json +82 -0
- package/scripts/hooks/cmate-agent-event.sh +18 -0
- package/.next/server/chunks/1068.js +0 -1
- package/.next/server/chunks/4372.js +0 -5
- package/.next/server/chunks/6474.js +0 -14
- package/.next/server/chunks/967.js +0 -1
- package/.next/server/chunks/9798.js +0 -2
- package/.next/server/chunks/9882.js +0 -25
- package/.next/static/chunks/591-539fec878c9dec5e.js +0 -1
- package/.next/static/chunks/app/sessions/page-049e06335187aa91.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-2a81397e60f17e63.js +0 -1
- package/.next/static/css/38070d879efa1371.css +0 -1
- package/dist/server/src/lib/cli-tools/index.js +0 -41
- package/dist/server/src/lib/polling/global-session-poller.js +0 -140
- /package/.next/static/{QlCqLjorauDDBXPa-C7TK → tWwHQzmvc-rv9KKUtDWfQ}/_buildManifest.js +0 -0
- /package/.next/static/{QlCqLjorauDDBXPa-C7TK → tWwHQzmvc-rv9KKUtDWfQ}/_ssgManifest.js +0 -0
|
@@ -47,6 +47,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
47
47
|
exports.opencodeV2StatusDetector = exports.OPENCODE_V2_PERMISSION_OPTIONS = exports.OPENCODE_V2_TURN_COMPLETE_PATTERN = exports.OPENCODE_V2_QUESTION_PATTERN = exports.OPENCODE_V2_PERMISSION_PATTERN = exports.VERIFIED_AGAINST = void 0;
|
|
48
48
|
exports.endsWithTurnComplete = endsWithTurnComplete;
|
|
49
49
|
const cli_patterns_1 = require("../../cli-patterns");
|
|
50
|
+
const verdicts_1 = require("../verdicts");
|
|
50
51
|
const status_reason_1 = require("../../status-reason");
|
|
51
52
|
const live_region_1 = require("./live-region");
|
|
52
53
|
const run_detection_1 = require("../run-detection");
|
|
@@ -160,22 +161,10 @@ exports.opencodeV2StatusDetector = (0, run_detection_1.createToolStatusDetector)
|
|
|
160
161
|
// with no Enter — see `detectDialog` below.
|
|
161
162
|
beforePrompt(frame) {
|
|
162
163
|
if (exports.OPENCODE_V2_PERMISSION_PATTERN.test(frame.lastLines)) {
|
|
163
|
-
return
|
|
164
|
-
status: 'waiting',
|
|
165
|
-
confidence: 'high',
|
|
166
|
-
reason: status_reason_1.STATUS_REASON.OPENCODE_PERMISSION_PROMPT,
|
|
167
|
-
hasActivePrompt: false,
|
|
168
|
-
evidence: 'positive',
|
|
169
|
-
};
|
|
164
|
+
return (0, verdicts_1.positiveVerdict)('waiting', status_reason_1.STATUS_REASON.OPENCODE_PERMISSION_PROMPT);
|
|
170
165
|
}
|
|
171
166
|
if (exports.OPENCODE_V2_QUESTION_PATTERN.test(frame.lastLines)) {
|
|
172
|
-
return
|
|
173
|
-
status: 'waiting',
|
|
174
|
-
confidence: 'high',
|
|
175
|
-
reason: status_reason_1.STATUS_REASON.OPENCODE_SELECTION_LIST,
|
|
176
|
-
hasActivePrompt: false,
|
|
177
|
-
evidence: 'positive',
|
|
178
|
-
};
|
|
167
|
+
return (0, verdicts_1.positiveVerdict)('waiting', status_reason_1.STATUS_REASON.OPENCODE_SELECTION_LIST);
|
|
179
168
|
}
|
|
180
169
|
// Issue #2971: a dialog opened over the composer keeps the footer (and
|
|
181
170
|
// often the placeholder) on screen, so every rule below read it as `ready`
|
|
@@ -185,50 +174,26 @@ exports.opencodeV2StatusDetector = (0, run_detection_1.createToolStatusDetector)
|
|
|
185
174
|
// overlay, driven by ↑↓ + Enter and closed with `esc` — no number answers
|
|
186
175
|
// it, hence `hasActivePrompt: false`.
|
|
187
176
|
if ((0, cli_patterns_1.findOpencodeV2DialogTitle)((0, cli_patterns_1.stripAnsi)(frame.raw)) !== null) {
|
|
188
|
-
return
|
|
189
|
-
status: 'waiting',
|
|
190
|
-
confidence: 'high',
|
|
191
|
-
reason: status_reason_1.STATUS_REASON.OPENCODE_MODAL_OVERLAY,
|
|
192
|
-
hasActivePrompt: false,
|
|
193
|
-
evidence: 'positive',
|
|
194
|
-
};
|
|
177
|
+
return (0, verdicts_1.positiveVerdict)('waiting', status_reason_1.STATUS_REASON.OPENCODE_MODAL_OVERLAY);
|
|
195
178
|
}
|
|
196
179
|
return null;
|
|
197
180
|
},
|
|
198
181
|
afterThinking(frame) {
|
|
199
182
|
if ((0, cli_patterns_1.detectThinking)('opencode-v2', frame.lastLines)) {
|
|
200
|
-
return
|
|
201
|
-
status: 'running',
|
|
202
|
-
confidence: 'high',
|
|
203
|
-
reason: status_reason_1.STATUS_REASON.THINKING_INDICATOR,
|
|
204
|
-
hasActivePrompt: false,
|
|
205
|
-
evidence: 'positive',
|
|
206
|
-
};
|
|
183
|
+
return (0, verdicts_1.positiveVerdict)('running', status_reason_1.STATUS_REASON.THINKING_INDICATOR);
|
|
207
184
|
}
|
|
208
185
|
// Issue #2965: the completion row as the last transcript row, with no
|
|
209
186
|
// `esc interrupt` (ruled out just above) — a finished turn, whether or not
|
|
210
187
|
// the footer made it into the capture.
|
|
211
188
|
if (endsWithTurnComplete(frame)) {
|
|
212
|
-
return
|
|
213
|
-
status: 'ready',
|
|
214
|
-
confidence: 'high',
|
|
215
|
-
reason: status_reason_1.STATUS_REASON.OPENCODE_RESPONSE_COMPLETE,
|
|
216
|
-
hasActivePrompt: false,
|
|
217
|
-
evidence: 'positive',
|
|
218
|
-
};
|
|
189
|
+
return (0, verdicts_1.positiveVerdict)('ready', status_reason_1.STATUS_REASON.OPENCODE_RESPONSE_COMPLETE);
|
|
219
190
|
}
|
|
220
191
|
// The placeholder against the ANSI-stripped frame with its box drawing
|
|
221
192
|
// intact (the pattern anchors on the `┃` gutter). The footer is on every
|
|
222
193
|
// frame, and the running hint was ruled out just above.
|
|
223
194
|
if (cli_patterns_1.OPENCODE_V2_IDLE_COMPOSER_PATTERN.test((0, cli_patterns_1.stripAnsi)(frame.raw)) ||
|
|
224
195
|
cli_patterns_1.OPENCODE_V2_FOOTER_PATTERN.test(frame.lastLines)) {
|
|
225
|
-
return
|
|
226
|
-
status: 'ready',
|
|
227
|
-
confidence: 'high',
|
|
228
|
-
reason: status_reason_1.STATUS_REASON.INPUT_PROMPT,
|
|
229
|
-
hasActivePrompt: false,
|
|
230
|
-
evidence: 'positive',
|
|
231
|
-
};
|
|
196
|
+
return (0, verdicts_1.positiveVerdict)('ready', status_reason_1.STATUS_REASON.INPUT_PROMPT);
|
|
232
197
|
}
|
|
233
198
|
return null;
|
|
234
199
|
},
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* OpenCode V2 pattern constants moved out of `../../cli-patterns.ts`
|
|
4
|
+
* (Issue #3217 I-3). `cli-patterns.ts` re-exports every public name.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.OPENCODE_V2_SKIP_PATTERNS = exports.OPENCODE_V2_THINKING_PATTERN = exports.OPENCODE_V2_FOOTER_PATTERN = exports.OPENCODE_V2_IDLE_COMPOSER_PATTERN = void 0;
|
|
8
|
+
exports.isOpencodeV2ComposerVisible = isOpencodeV2ComposerVisible;
|
|
9
|
+
const pasted_text_1 = require("../../shared/pasted-text");
|
|
10
|
+
const patterns_1 = require("../opencode/patterns");
|
|
11
|
+
// =============================================================================
|
|
12
|
+
// OpenCode V2 (`opencode2`, Issue #2934)
|
|
13
|
+
// =============================================================================
|
|
14
|
+
//
|
|
15
|
+
// A separate tool id from `opencode` (Epic #2370, decision 1). Its TUI is drawn
|
|
16
|
+
// by the same toolkit and many rows look alike, but v1's constants are v1's:
|
|
17
|
+
// they are left exactly as they are, and v2 names its own here so a change on
|
|
18
|
+
// either side cannot move the other. Phase 1 reads only what the send path and
|
|
19
|
+
// the fallback status reader need; the approval dialog (`Always allow`, the
|
|
20
|
+
// reverse of v1's `Allow always`), the completion row and the session tabs are
|
|
21
|
+
// Phase 3's.
|
|
22
|
+
/**
|
|
23
|
+
* OpenCode V2's empty composer: the input box's `┃` gutter with the
|
|
24
|
+
* `Ask anything…` placeholder on the same row (2.0.18 draws U+2026; the ASCII
|
|
25
|
+
* `...` is accepted too, as for v1 since #2915).
|
|
26
|
+
*
|
|
27
|
+
* Measured on 2.0.18 at 80x200 (2026-09-28):
|
|
28
|
+
* ` ┃ Ask anything… "Fix broken tests"`. Match against the ANSI-stripped
|
|
29
|
+
* frame BEFORE `stripBoxDrawing`, which removes the gutter this anchors on.
|
|
30
|
+
*/
|
|
31
|
+
exports.OPENCODE_V2_IDLE_COMPOSER_PATTERN = /^[^\S\n]*[\u2502\u2503][^\S\n]*Ask anything(?:\.\.\.|\u2026)/m;
|
|
32
|
+
/**
|
|
33
|
+
* OpenCode V2's footer, which ends in `ctrl+p commands` on every frame the
|
|
34
|
+
* TUI draws (before a turn: `<path>:<branch> shift+tab agents ctrl+p commands`;
|
|
35
|
+
* after one: `<path>:<branch> 8.8K (1%) ctrl+p commands`, 2.0.18).
|
|
36
|
+
*
|
|
37
|
+
* Proof that the TUI — and so its composer — is on screen, NOT that it is idle:
|
|
38
|
+
* a running turn keeps the footer.
|
|
39
|
+
*/
|
|
40
|
+
exports.OPENCODE_V2_FOOTER_PATTERN = /ctrl\+p commands/;
|
|
41
|
+
/**
|
|
42
|
+
* OpenCode V2 working indicator: the footer's `esc interrupt` hint, drawn only
|
|
43
|
+
* while a turn is running (2.0.18).
|
|
44
|
+
*/
|
|
45
|
+
exports.OPENCODE_V2_THINKING_PATTERN = /esc interrupt/;
|
|
46
|
+
/**
|
|
47
|
+
* Whether OpenCode V2's composer is on screen, so a send may type into it
|
|
48
|
+
* (Issue #2934, D6): the gutter-anchored placeholder, or the footer.
|
|
49
|
+
*
|
|
50
|
+
* @param text - ANSI-stripped capture, box drawing intact
|
|
51
|
+
*/
|
|
52
|
+
function isOpencodeV2ComposerVisible(text) {
|
|
53
|
+
return exports.OPENCODE_V2_IDLE_COMPOSER_PATTERN.test(text) || exports.OPENCODE_V2_FOOTER_PATTERN.test(text);
|
|
54
|
+
}
|
|
55
|
+
/** OpenCode V2 rows that are chrome, never reply content. */
|
|
56
|
+
exports.OPENCODE_V2_SKIP_PATTERNS = [
|
|
57
|
+
patterns_1.OPENCODE_SEPARATOR_PATTERN,
|
|
58
|
+
exports.OPENCODE_V2_FOOTER_PATTERN,
|
|
59
|
+
exports.OPENCODE_V2_THINKING_PATTERN,
|
|
60
|
+
/Ask anything(?:\.\.\.|\u2026)/,
|
|
61
|
+
/^Build\s+·/,
|
|
62
|
+
pasted_text_1.PASTED_TEXT_PATTERN,
|
|
63
|
+
];
|
|
@@ -34,6 +34,7 @@ const cli_patterns_1 = require("../cli-patterns");
|
|
|
34
34
|
const prompt_detector_1 = require("../prompt-detector");
|
|
35
35
|
const frame_1 = require("./frame");
|
|
36
36
|
const live_region_1 = require("./live-region");
|
|
37
|
+
const verdicts_1 = require("./verdicts");
|
|
37
38
|
const status_reason_1 = require("../status-reason");
|
|
38
39
|
const detection_evidence_config_1 = require("../../../config/detection-evidence-config");
|
|
39
40
|
const idle_evidence_observation_1 = require("../idle-evidence-observation");
|
|
@@ -45,20 +46,6 @@ const idle_evidence_observation_1 = require("../idle-evidence-observation");
|
|
|
45
46
|
* which is `running` with no evidence, not `ready`.
|
|
46
47
|
*/
|
|
47
48
|
const STALE_OUTPUT_THRESHOLD_MS = 5000;
|
|
48
|
-
/**
|
|
49
|
-
* Which tools hand the FULL frame to `detectPrompt` instead of the 15-line tail.
|
|
50
|
-
*
|
|
51
|
-
* Their multiple-choice prompts with descriptions can exceed 15 lines: Codex
|
|
52
|
-
* approval prompts with long file lists, Claude "Yes, and don't ask again for:
|
|
53
|
-
* git commit -m …" options that embed full commit messages. `detectPrompt`
|
|
54
|
-
* applies its own 50-line window internally.
|
|
55
|
-
*/
|
|
56
|
-
const FULL_FRAME_PROMPT_TOOLS = new Set([
|
|
57
|
-
'opencode',
|
|
58
|
-
'codex',
|
|
59
|
-
'claude',
|
|
60
|
-
'copilot',
|
|
61
|
-
]);
|
|
62
49
|
/**
|
|
63
50
|
* Resolve the `evidence` for a `ready` / `input_prompt` verdict from the generic
|
|
64
51
|
* composer check (§4 D1 決定 1 item 2).
|
|
@@ -93,7 +80,7 @@ function runToolDetection(spec, input, context = {}) {
|
|
|
93
80
|
// Gemini wraps prompts in box-drawing characters (╭╮╰╯│─) which prevent
|
|
94
81
|
// detectPrompt() from recognizing the prompt content.
|
|
95
82
|
const promptOptions = (0, cli_patterns_1.buildDetectPromptOptions)(spec.tool);
|
|
96
|
-
const promptInput =
|
|
83
|
+
const promptInput = (0, cli_patterns_1.usesFullFramePrompt)(spec.tool)
|
|
97
84
|
? (0, cli_patterns_1.stripBoxDrawing)(frame.clean)
|
|
98
85
|
: (0, cli_patterns_1.stripBoxDrawing)(frame.lastLines);
|
|
99
86
|
let promptDetection = (0, prompt_detector_1.detectPrompt)(promptInput, promptOptions);
|
|
@@ -121,14 +108,7 @@ function runToolDetection(spec, input, context = {}) {
|
|
|
121
108
|
promptDetection = { ...promptDetection, isPrompt: false, promptData: undefined };
|
|
122
109
|
}
|
|
123
110
|
else {
|
|
124
|
-
return
|
|
125
|
-
status: 'waiting',
|
|
126
|
-
confidence: 'high',
|
|
127
|
-
reason: status_reason_1.STATUS_REASON.PROMPT_DETECTED,
|
|
128
|
-
hasActivePrompt: true,
|
|
129
|
-
evidence: 'positive',
|
|
130
|
-
promptDetection,
|
|
131
|
-
};
|
|
111
|
+
return (0, verdicts_1.activePromptVerdict)(status_reason_1.STATUS_REASON.PROMPT_DETECTED, promptDetection);
|
|
132
112
|
}
|
|
133
113
|
}
|
|
134
114
|
// 1.5 — tool branches that must sit between prompt detection and the thinking
|
|
@@ -139,14 +119,7 @@ function runToolDetection(spec, input, context = {}) {
|
|
|
139
119
|
// 2. Thinking indicator detection — THINKING_TAIL_LINE_COUNT window (narrower).
|
|
140
120
|
// CLI tool is actively processing (shows spinner, "Planning...", etc.)
|
|
141
121
|
if ((0, cli_patterns_1.detectThinking)(spec.tool, frame.thinkingLines)) {
|
|
142
|
-
return
|
|
143
|
-
status: 'running',
|
|
144
|
-
confidence: 'high',
|
|
145
|
-
reason: status_reason_1.STATUS_REASON.THINKING_INDICATOR,
|
|
146
|
-
hasActivePrompt: false,
|
|
147
|
-
evidence: 'positive',
|
|
148
|
-
promptDetection,
|
|
149
|
-
};
|
|
122
|
+
return (0, verdicts_1.positiveVerdictWithPrompt)('running', status_reason_1.STATUS_REASON.THINKING_INDICATOR, promptDetection);
|
|
150
123
|
}
|
|
151
124
|
// 2.x — the tool's own running and completion markers.
|
|
152
125
|
const afterThinking = spec.afterThinking?.(frame, promptDetection) ?? null;
|
|
@@ -181,14 +154,7 @@ function runToolDetection(spec, input, context = {}) {
|
|
|
181
154
|
if (context.lastOutputTimestamp) {
|
|
182
155
|
const elapsed = Date.now() - context.lastOutputTimestamp.getTime();
|
|
183
156
|
if (elapsed > STALE_OUTPUT_THRESHOLD_MS) {
|
|
184
|
-
return
|
|
185
|
-
status: 'running',
|
|
186
|
-
confidence: 'low',
|
|
187
|
-
reason: status_reason_1.STATUS_REASON.NO_RECENT_OUTPUT,
|
|
188
|
-
hasActivePrompt: false,
|
|
189
|
-
evidence: 'none',
|
|
190
|
-
promptDetection,
|
|
191
|
-
};
|
|
157
|
+
return (0, verdicts_1.unreadVerdictWithPrompt)(status_reason_1.STATUS_REASON.NO_RECENT_OUTPUT, promptDetection);
|
|
192
158
|
}
|
|
193
159
|
}
|
|
194
160
|
// 5. Floor. `running` with no evidence, as before — the safe default when the
|
|
@@ -198,14 +164,7 @@ function runToolDetection(spec, input, context = {}) {
|
|
|
198
164
|
// rules looked at this frame and found nothing, which is a statement about the
|
|
199
165
|
// rules and an instruction to capture the frame as a fixture. `default` stays
|
|
200
166
|
// the answer for a tool that has no chain of its own, where nothing looked.
|
|
201
|
-
return
|
|
202
|
-
status: 'running',
|
|
203
|
-
confidence: 'low',
|
|
204
|
-
reason: spec.unreadableReason ?? status_reason_1.STATUS_REASON.DEFAULT,
|
|
205
|
-
hasActivePrompt: false,
|
|
206
|
-
evidence: 'none',
|
|
207
|
-
promptDetection,
|
|
208
|
-
};
|
|
167
|
+
return (0, verdicts_1.unreadVerdictWithPrompt)(spec.unreadableReason ?? status_reason_1.STATUS_REASON.DEFAULT, promptDetection);
|
|
209
168
|
}
|
|
210
169
|
/** Bind the shared chain around one tool's declarations. */
|
|
211
170
|
function createToolStatusDetector(spec) {
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Small builders for the status verdicts a tool detector returns (Issue #3219).
|
|
4
|
+
*
|
|
5
|
+
* They only assemble the `ToolStatusVerdict` object literal the detectors used to
|
|
6
|
+
* spell out by hand. Each builder produces exactly the fields its call sites
|
|
7
|
+
* wrote: the `promptDetection` key is present only for the builders that take
|
|
8
|
+
* one, and is never added as `undefined` where the original omitted it.
|
|
9
|
+
*
|
|
10
|
+
* Types and small functions only: no tool file and no `cli-patterns` import.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.positiveVerdict = positiveVerdict;
|
|
14
|
+
exports.positiveVerdictWithPrompt = positiveVerdictWithPrompt;
|
|
15
|
+
exports.activePromptVerdict = activePromptVerdict;
|
|
16
|
+
exports.unreadVerdictWithPrompt = unreadVerdictWithPrompt;
|
|
17
|
+
/** A verdict resting on something the detector positively recognised, no prompt of its own. */
|
|
18
|
+
function positiveVerdict(status, reason) {
|
|
19
|
+
return {
|
|
20
|
+
status,
|
|
21
|
+
confidence: 'high',
|
|
22
|
+
reason,
|
|
23
|
+
hasActivePrompt: false,
|
|
24
|
+
evidence: 'positive',
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/** {@link positiveVerdict} that also carries the branch's own `promptDetection` key. */
|
|
28
|
+
function positiveVerdictWithPrompt(status, reason, promptDetection) {
|
|
29
|
+
return {
|
|
30
|
+
status,
|
|
31
|
+
confidence: 'high',
|
|
32
|
+
reason,
|
|
33
|
+
hasActivePrompt: false,
|
|
34
|
+
evidence: 'positive',
|
|
35
|
+
promptDetection,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/** `waiting` on a positively detected prompt (`hasActivePrompt: true`). */
|
|
39
|
+
function activePromptVerdict(reason, promptDetection) {
|
|
40
|
+
return {
|
|
41
|
+
status: 'waiting',
|
|
42
|
+
confidence: 'high',
|
|
43
|
+
reason,
|
|
44
|
+
hasActivePrompt: true,
|
|
45
|
+
evidence: 'positive',
|
|
46
|
+
promptDetection,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/** `running` with low confidence and no evidence, carrying the `promptDetection` key. */
|
|
50
|
+
function unreadVerdictWithPrompt(reason, promptDetection) {
|
|
51
|
+
return {
|
|
52
|
+
status: 'running',
|
|
53
|
+
confidence: 'low',
|
|
54
|
+
reason,
|
|
55
|
+
hasActivePrompt: false,
|
|
56
|
+
evidence: 'none',
|
|
57
|
+
promptDetection,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Vibe Local pattern constants moved out of `../../cli-patterns.ts`
|
|
4
|
+
* (Issue #3217). `cli-patterns.ts` re-exports every public name.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.VIBE_LOCAL_THINKING_PATTERN = exports.VIBE_LOCAL_PROMPT_PATTERN = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* Vibe Local prompt pattern
|
|
10
|
+
* vibe-local (vibe-coder) shows `ctx:N% ❯` prompt when waiting for user input.
|
|
11
|
+
* The prompt line includes a context usage percentage prefix.
|
|
12
|
+
* Examples: "ctx:9% ❯", "ctx:30% ❯", "ctx:9% ❯ /model"
|
|
13
|
+
*/
|
|
14
|
+
exports.VIBE_LOCAL_PROMPT_PATTERN = /ctx:\d+%\s*[>❯]/m;
|
|
15
|
+
/**
|
|
16
|
+
* Vibe Local thinking/processing pattern
|
|
17
|
+
* vibe-local shows spinner characters and status text while processing.
|
|
18
|
+
* Matches braille spinners, "Thinking", and tool execution indicators.
|
|
19
|
+
*/
|
|
20
|
+
exports.VIBE_LOCAL_THINKING_PATTERN = /[\u2800-\u28FF]|Thinking|⠋|⠙|⠹|⠸|⠼|⠴|⠦|⠧|⠇|⠏|Running|Executing/;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RAW_CONTENT_MAX_CHARS = exports.RAW_CONTENT_MAX_LINES = void 0;
|
|
4
|
+
exports.truncateRawContent = truncateRawContent;
|
|
5
|
+
/**
|
|
6
|
+
* Maximum number of lines to retain in rawContent.
|
|
7
|
+
* Tail lines are preserved (instruction text typically appears just before the prompt).
|
|
8
|
+
* @see truncateRawContent
|
|
9
|
+
*/
|
|
10
|
+
exports.RAW_CONTENT_MAX_LINES = 200;
|
|
11
|
+
/**
|
|
12
|
+
* Maximum number of characters to retain in rawContent.
|
|
13
|
+
* Tail characters are preserved.
|
|
14
|
+
* @see truncateRawContent
|
|
15
|
+
*/
|
|
16
|
+
exports.RAW_CONTENT_MAX_CHARS = 5000;
|
|
17
|
+
/**
|
|
18
|
+
* Truncate raw content to fit within size limits.
|
|
19
|
+
* Preserves the tail (end) of the content since instruction text
|
|
20
|
+
* typically appears just before the prompt at the end of output.
|
|
21
|
+
*
|
|
22
|
+
* Security: No regular expressions used -- no ReDoS risk. [SF-S4-002]
|
|
23
|
+
* String.split('\n') and String.slice() are literal string operations only.
|
|
24
|
+
*
|
|
25
|
+
* @param content - The content to truncate
|
|
26
|
+
* @returns Truncated content (last RAW_CONTENT_MAX_LINES lines, max RAW_CONTENT_MAX_CHARS characters)
|
|
27
|
+
*/
|
|
28
|
+
function truncateRawContent(content) {
|
|
29
|
+
const lines = content.split('\n');
|
|
30
|
+
const truncatedLines = lines.length > exports.RAW_CONTENT_MAX_LINES
|
|
31
|
+
? lines.slice(-exports.RAW_CONTENT_MAX_LINES)
|
|
32
|
+
: lines;
|
|
33
|
+
let result = truncatedLines.join('\n');
|
|
34
|
+
if (result.length > exports.RAW_CONTENT_MAX_CHARS) {
|
|
35
|
+
result = result.slice(-exports.RAW_CONTENT_MAX_CHARS);
|
|
36
|
+
}
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Per tool, whether the screen may end a turn the agent's hooks opened
|
|
4
|
+
* (Issue #3337).
|
|
5
|
+
*
|
|
6
|
+
* The turn model lets three polls of a finished-looking frame close a turn as
|
|
7
|
+
* `scraper_evidence` (#1930). For codex 0.160.0 that closed live turns: frames
|
|
8
|
+
* of a running turn read `ready` (`tests/fixtures/codex-mid-turn-3337/`), and a
|
|
9
|
+
* reply sent on that `ready` interrupted the turn. So codex's hook turns end at
|
|
10
|
+
* the agent's own `Stop` — except on a frame that shows the turn was
|
|
11
|
+
* interrupted, after which no `Stop` comes.
|
|
12
|
+
*
|
|
13
|
+
* Only codex is listed, because only codex is measured to need it. Reading
|
|
14
|
+
* "this turn was abandoned" off a frame has to be complete to be safe — a form
|
|
15
|
+
* the reader misses leaves the turn `running` until the 30-minute stale bound —
|
|
16
|
+
* and Claude Code showed two forms in one afternoon (`⎿ Interrupted`, and an
|
|
17
|
+
* Esc early in the turn that puts the prompt back in the composer with no marker
|
|
18
|
+
* at all, `tests/fixtures/claude-interrupted-3337/`). A tool not listed keeps
|
|
19
|
+
* the #1930 behaviour: the screen closes its turn, hooks or not.
|
|
20
|
+
*
|
|
21
|
+
* Read by `lib/session/hook-turn-hold`, for both `capture --json` and the
|
|
22
|
+
* relay's readiness check.
|
|
23
|
+
*
|
|
24
|
+
* @module lib/detection/turn-abandoned
|
|
25
|
+
*/
|
|
26
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
exports.screenMayCloseHookTurn = screenMayCloseHookTurn;
|
|
28
|
+
exports.screenShowsAbandonedHookTurn = screenShowsAbandonedHookTurn;
|
|
29
|
+
const ansi_1 = require("./ansi");
|
|
30
|
+
const patterns_1 = require("./tools/codex/patterns");
|
|
31
|
+
/**
|
|
32
|
+
* The tools whose hook turns end at the agent's `Stop` rather than at the
|
|
33
|
+
* screen. Absent means "the screen may close it", as before #3337.
|
|
34
|
+
*/
|
|
35
|
+
const HOOK_TURN_SCREEN_POLICIES = {
|
|
36
|
+
// Measured on 0.160.0: mid-turn frames read `ready`; an Esc fires no `Stop`
|
|
37
|
+
// and leaves `■ Conversation interrupted` above the composer.
|
|
38
|
+
codex: { showsAbandonedTurn: patterns_1.isCodexTurnInterruptedFrame },
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Whether the screen may end a turn this tool's hooks opened.
|
|
42
|
+
*
|
|
43
|
+
* True for a tool with no policy, and for a listed tool whose frame shows an
|
|
44
|
+
* abandoned turn.
|
|
45
|
+
*
|
|
46
|
+
* @param output - The pane as captured (ANSI is stripped here)
|
|
47
|
+
*/
|
|
48
|
+
function screenMayCloseHookTurn(cliToolId, output) {
|
|
49
|
+
const policy = HOOK_TURN_SCREEN_POLICIES[cliToolId];
|
|
50
|
+
if (!policy)
|
|
51
|
+
return true;
|
|
52
|
+
return policy.showsAbandonedTurn((0, ansi_1.stripAnsi)(output).split('\n'));
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Whether the frame shows that a hook turn of a listed tool was abandoned
|
|
56
|
+
* (Issue #3377) — the same reading {@link screenMayCloseHookTurn} closes on,
|
|
57
|
+
* false for a tool with no policy.
|
|
58
|
+
*
|
|
59
|
+
* @param output - The pane as captured (ANSI is stripped here)
|
|
60
|
+
*/
|
|
61
|
+
function screenShowsAbandonedHookTurn(cliToolId, output) {
|
|
62
|
+
const policy = HOOK_TURN_SCREEN_POLICIES[cliToolId];
|
|
63
|
+
if (!policy)
|
|
64
|
+
return false;
|
|
65
|
+
return policy.showsAbandonedTurn((0, ansi_1.stripAnsi)(output).split('\n'));
|
|
66
|
+
}
|
|
@@ -20,6 +20,7 @@ exports.UNCLASSIFIED_RECORD_DWELL_MS = void 0;
|
|
|
20
20
|
exports.observeUnclassifiedFrame = observeUnclassifiedFrame;
|
|
21
21
|
exports.resetUnclassifiedFrameTracking = resetUnclassifiedFrameTracking;
|
|
22
22
|
exports.unclassifiedFrameRunCount = unclassifiedFrameRunCount;
|
|
23
|
+
const global_state_1 = require("../global-state");
|
|
23
24
|
/**
|
|
24
25
|
* How long a frame must stay unclassified before it is worth recording.
|
|
25
26
|
*
|
|
@@ -29,8 +30,7 @@ exports.unclassifiedFrameRunCount = unclassifiedFrameRunCount;
|
|
|
29
30
|
* stall the other never saw.
|
|
30
31
|
*/
|
|
31
32
|
exports.UNCLASSIFIED_RECORD_DWELL_MS = 60_000;
|
|
32
|
-
const runs =
|
|
33
|
-
(globalThis.__unclassifiedFrameRuns = new Map());
|
|
33
|
+
const runs = (0, global_state_1.getOrInitGlobal)('__unclassifiedFrameRuns', () => new Map());
|
|
34
34
|
/**
|
|
35
35
|
* How long an unobserved run survives before it is dropped.
|
|
36
36
|
*
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getOrInitGlobal = getOrInitGlobal;
|
|
4
|
+
/**
|
|
5
|
+
* Process-wide state helper for the `globalThis.__*` cache pattern.
|
|
6
|
+
*
|
|
7
|
+
* Returns the value already stored on `globalThis[key]`, or runs `init` once and
|
|
8
|
+
* stores its result. `init` runs only when the slot is `null`/`undefined`, at the
|
|
9
|
+
* moment this function is called (so callers keep their own init timing).
|
|
10
|
+
*
|
|
11
|
+
* `key` and the initial value are typed from each file's `declare global`
|
|
12
|
+
* declaration. This module imports nothing so any layer (server, CLI) can use it.
|
|
13
|
+
*/
|
|
14
|
+
function getOrInitGlobal(key, init) {
|
|
15
|
+
return (globalThis[key] ??= init());
|
|
16
|
+
}
|
|
@@ -92,6 +92,7 @@ exports.refreshAgentSessionContextUsage = refreshAgentSessionContextUsage;
|
|
|
92
92
|
const auto_yes_state_1 = require("../../lib/auto-yes-state");
|
|
93
93
|
const client_1 = require("./sources/opencode/client");
|
|
94
94
|
const ports_1 = require("./sources/opencode/ports");
|
|
95
|
+
const global_state_1 = require("../global-state");
|
|
95
96
|
/**
|
|
96
97
|
* Longest session title kept.
|
|
97
98
|
*
|
|
@@ -109,8 +110,7 @@ exports.MAX_AGENT_SESSION_TITLE_LENGTH = 200;
|
|
|
109
110
|
*/
|
|
110
111
|
exports.MAX_AGENT_SESSION_NAME_LENGTH = 120;
|
|
111
112
|
/** compositeKey -> the most recent session description for that instance. */
|
|
112
|
-
const records =
|
|
113
|
-
(globalThis.__agentSessionTelemetry = new Map());
|
|
113
|
+
const records = (0, global_state_1.getOrInitGlobal)('__agentSessionTelemetry', () => new Map());
|
|
114
114
|
/** Record what the agent last said about this instance's session. */
|
|
115
115
|
function recordAgentSessionTelemetry(target, record) {
|
|
116
116
|
records.set((0, auto_yes_state_1.buildCompositeKey)(target.worktreeId, target.cliToolId, target.instanceId), record);
|
|
@@ -238,11 +238,9 @@ function readOpencodeSessionInfo(value, at) {
|
|
|
238
238
|
};
|
|
239
239
|
}
|
|
240
240
|
/** compositeKey -> the last context occupancy measured for that instance. */
|
|
241
|
-
const contextUsages =
|
|
242
|
-
(globalThis.__agentSessionContextUsage = new Map());
|
|
241
|
+
const contextUsages = (0, global_state_1.getOrInitGlobal)('__agentSessionContextUsage', () => new Map());
|
|
243
242
|
/** compositeKeys with a refresh in flight, so a poll storm makes one request. */
|
|
244
|
-
const contextRefreshes =
|
|
245
|
-
(globalThis.__agentSessionContextRefreshes = new Set());
|
|
243
|
+
const contextRefreshes = (0, global_state_1.getOrInitGlobal)('__agentSessionContextRefreshes', () => new Set());
|
|
246
244
|
/**
|
|
247
245
|
* The percentage opencode's own footer shows, by opencode's own rule.
|
|
248
246
|
*
|
|
@@ -35,9 +35,9 @@ exports.recordPermissionDecision = recordPermissionDecision;
|
|
|
35
35
|
exports.getLastPermissionDecision = getLastPermissionDecision;
|
|
36
36
|
exports.clearPermissionDecisions = clearPermissionDecisions;
|
|
37
37
|
const auto_yes_state_1 = require("../../lib/auto-yes-state");
|
|
38
|
+
const global_state_1 = require("../global-state");
|
|
38
39
|
/** compositeKey -> the most recent adjudication for that session. */
|
|
39
|
-
const lastDecisions =
|
|
40
|
-
(globalThis.__permissionDecisions = new Map());
|
|
40
|
+
const lastDecisions = (0, global_state_1.getOrInitGlobal)('__permissionDecisions', () => new Map());
|
|
41
41
|
/**
|
|
42
42
|
* Record how one approval was adjudicated.
|
|
43
43
|
*
|