commandmate 0.44.1 → 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 +169 -169
- package/.next/app-path-routes-manifest.json +35 -35
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- 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 -2
- 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 -2
- 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 +3 -3
- 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 +35 -35
- 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 -0
- package/.next/server/chunks/2710.js +1 -1
- package/.next/server/chunks/2908.js +1 -0
- 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 -0
- package/.next/server/chunks/5625.js +25 -0
- package/.next/server/chunks/5845.js +1 -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 -0
- package/.next/server/chunks/8543.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 -5
- package/.next/server/chunks/9390.js +2 -3
- 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-f1f258d4a1d92620.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-da66300cc20244ed.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 +10 -13
- 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 +608 -416
- package/dist/cli/types/api-responses.d.ts +174 -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 +228 -0
- package/dist/lib/session/prompt-view.d.ts.map +1 -0
- package/dist/lib/session/prompt-view.js +290 -0
- 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/server.js +5 -3
- 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 +139 -0
- package/dist/server/src/lib/auto-yes-poller.js +465 -160
- package/dist/server/src/lib/auto-yes-state.js +2 -2
- package/dist/server/src/lib/cli-tools/antigravity.js +39 -80
- 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 -3047
- 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/status-detector.js +1 -1
- package/dist/server/src/lib/detection/tools/antigravity/detect.js +12 -60
- package/dist/server/src/lib/detection/tools/antigravity/dialog.js +2 -15
- package/dist/server/src/lib/detection/tools/antigravity/live-region.js +39 -0
- package/dist/server/src/lib/detection/tools/antigravity/patterns.js +286 -0
- package/dist/server/src/lib/detection/tools/claude/detect.js +11 -17
- package/dist/server/src/lib/detection/tools/claude/live-region.js +26 -0
- 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/cli-patterns.js +1 -1
- package/dist/server/src/lib/detection/tools/codex/detect.js +71 -130
- package/dist/server/src/lib/detection/tools/codex/live-region.js +104 -0
- 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 +19 -50
- package/dist/server/src/lib/detection/tools/command-code/dialog.js +2 -18
- package/dist/server/src/lib/detection/tools/command-code/live-region.js +36 -0
- 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 +13 -35
- package/dist/server/src/lib/detection/tools/copilot/live-region.js +52 -0
- 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/frame.js +36 -2
- package/dist/server/src/lib/detection/tools/gemini/patterns.js +29 -0
- package/dist/server/src/lib/detection/tools/live-region-specs.js +31 -0
- package/dist/server/src/lib/detection/tools/live-region.js +204 -0
- package/dist/server/src/lib/detection/tools/opencode/detect.js +11 -49
- package/dist/server/src/lib/detection/tools/opencode/live-region.js +24 -0
- package/dist/server/src/lib/detection/tools/opencode/patterns.js +508 -0
- package/dist/server/src/lib/detection/tools/opencode-gutter-live-region.js +72 -0
- package/dist/server/src/lib/detection/tools/opencode-v2/detect.js +10 -42
- package/dist/server/src/lib/detection/tools/opencode-v2/live-region.js +24 -0
- package/dist/server/src/lib/detection/tools/opencode-v2/patterns.js +63 -0
- package/dist/server/src/lib/detection/tools/run-detection.js +31 -50
- 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-dialog-gate.js +16 -4
- 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 +666 -1162
- 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 +6 -5
- 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 -2
- package/dist/server/src/lib/realtime/terminal-session-ownership.js +45 -0
- package/dist/server/src/lib/relay/relay-delivery.js +6 -2
- package/dist/server/src/lib/relay/relay-readiness.js +38 -1
- package/dist/server/src/lib/relay/relay-triggers.js +9 -0
- package/dist/server/src/lib/resource-cleanup.js +6 -4
- 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 +454 -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 +290 -0
- package/dist/server/src/lib/session/prompt-waiting-composition.js +35 -0
- 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/waiting-kind.js +3 -0
- package/dist/server/src/lib/session-cleanup.js +6 -8
- 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.2.json +33 -0
- 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/434.js +0 -1
- package/.next/server/chunks/5775.js +0 -1
- package/.next/server/chunks/6474.js +0 -14
- package/.next/server/chunks/650.js +0 -1
- package/.next/server/chunks/6661.js +0 -1
- package/.next/server/chunks/8583.js +0 -1
- package/.next/server/chunks/964.js +0 -1
- package/.next/server/chunks/967.js +0 -1
- package/.next/server/chunks/9882.js +0 -25
- package/.next/static/chunks/591-308072f285c34787.js +0 -1
- package/.next/static/chunks/app/sessions/page-049e06335187aa91.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-040c5f0f585e6812.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/{57lOiz8zSEHdw97XIm0af → tWwHQzmvc-rv9KKUtDWfQ}/_buildManifest.js +0 -0
- /package/.next/static/{57lOiz8zSEHdw97XIm0af → tWwHQzmvc-rv9KKUtDWfQ}/_ssgManifest.js +0 -0
|
@@ -47,7 +47,9 @@ 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");
|
|
52
|
+
const live_region_1 = require("./live-region");
|
|
51
53
|
const run_detection_1 = require("../run-detection");
|
|
52
54
|
const verified_against_1 = require("../verified-against");
|
|
53
55
|
exports.VERIFIED_AGAINST = verified_against_1.OPENCODE_V2_VERIFIED_AGAINST;
|
|
@@ -141,6 +143,8 @@ function endsWithTurnComplete(frame) {
|
|
|
141
143
|
exports.opencodeV2StatusDetector = (0, run_detection_1.createToolStatusDetector)({
|
|
142
144
|
tool: 'opencode-v2',
|
|
143
145
|
verifiedAgainst: exports.VERIFIED_AGAINST,
|
|
146
|
+
// Issue #3183: where the live part of the frame begins (`./live-region.ts`).
|
|
147
|
+
liveRegion: live_region_1.OPENCODE_V2_LIVE_REGION,
|
|
144
148
|
// Issue #2991: every v2 dialog is recognised by `beforePrompt` below, so a
|
|
145
149
|
// numbered list that reaches the generic parser is text in a reply (the UAT
|
|
146
150
|
// frame: `❯ 1. Yes / 2. No` quoted in the answer). Unvouched by
|
|
@@ -157,22 +161,10 @@ exports.opencodeV2StatusDetector = (0, run_detection_1.createToolStatusDetector)
|
|
|
157
161
|
// with no Enter — see `detectDialog` below.
|
|
158
162
|
beforePrompt(frame) {
|
|
159
163
|
if (exports.OPENCODE_V2_PERMISSION_PATTERN.test(frame.lastLines)) {
|
|
160
|
-
return
|
|
161
|
-
status: 'waiting',
|
|
162
|
-
confidence: 'high',
|
|
163
|
-
reason: status_reason_1.STATUS_REASON.OPENCODE_PERMISSION_PROMPT,
|
|
164
|
-
hasActivePrompt: false,
|
|
165
|
-
evidence: 'positive',
|
|
166
|
-
};
|
|
164
|
+
return (0, verdicts_1.positiveVerdict)('waiting', status_reason_1.STATUS_REASON.OPENCODE_PERMISSION_PROMPT);
|
|
167
165
|
}
|
|
168
166
|
if (exports.OPENCODE_V2_QUESTION_PATTERN.test(frame.lastLines)) {
|
|
169
|
-
return
|
|
170
|
-
status: 'waiting',
|
|
171
|
-
confidence: 'high',
|
|
172
|
-
reason: status_reason_1.STATUS_REASON.OPENCODE_SELECTION_LIST,
|
|
173
|
-
hasActivePrompt: false,
|
|
174
|
-
evidence: 'positive',
|
|
175
|
-
};
|
|
167
|
+
return (0, verdicts_1.positiveVerdict)('waiting', status_reason_1.STATUS_REASON.OPENCODE_SELECTION_LIST);
|
|
176
168
|
}
|
|
177
169
|
// Issue #2971: a dialog opened over the composer keeps the footer (and
|
|
178
170
|
// often the placeholder) on screen, so every rule below read it as `ready`
|
|
@@ -182,50 +174,26 @@ exports.opencodeV2StatusDetector = (0, run_detection_1.createToolStatusDetector)
|
|
|
182
174
|
// overlay, driven by ↑↓ + Enter and closed with `esc` — no number answers
|
|
183
175
|
// it, hence `hasActivePrompt: false`.
|
|
184
176
|
if ((0, cli_patterns_1.findOpencodeV2DialogTitle)((0, cli_patterns_1.stripAnsi)(frame.raw)) !== null) {
|
|
185
|
-
return
|
|
186
|
-
status: 'waiting',
|
|
187
|
-
confidence: 'high',
|
|
188
|
-
reason: status_reason_1.STATUS_REASON.OPENCODE_MODAL_OVERLAY,
|
|
189
|
-
hasActivePrompt: false,
|
|
190
|
-
evidence: 'positive',
|
|
191
|
-
};
|
|
177
|
+
return (0, verdicts_1.positiveVerdict)('waiting', status_reason_1.STATUS_REASON.OPENCODE_MODAL_OVERLAY);
|
|
192
178
|
}
|
|
193
179
|
return null;
|
|
194
180
|
},
|
|
195
181
|
afterThinking(frame) {
|
|
196
182
|
if ((0, cli_patterns_1.detectThinking)('opencode-v2', frame.lastLines)) {
|
|
197
|
-
return
|
|
198
|
-
status: 'running',
|
|
199
|
-
confidence: 'high',
|
|
200
|
-
reason: status_reason_1.STATUS_REASON.THINKING_INDICATOR,
|
|
201
|
-
hasActivePrompt: false,
|
|
202
|
-
evidence: 'positive',
|
|
203
|
-
};
|
|
183
|
+
return (0, verdicts_1.positiveVerdict)('running', status_reason_1.STATUS_REASON.THINKING_INDICATOR);
|
|
204
184
|
}
|
|
205
185
|
// Issue #2965: the completion row as the last transcript row, with no
|
|
206
186
|
// `esc interrupt` (ruled out just above) — a finished turn, whether or not
|
|
207
187
|
// the footer made it into the capture.
|
|
208
188
|
if (endsWithTurnComplete(frame)) {
|
|
209
|
-
return
|
|
210
|
-
status: 'ready',
|
|
211
|
-
confidence: 'high',
|
|
212
|
-
reason: status_reason_1.STATUS_REASON.OPENCODE_RESPONSE_COMPLETE,
|
|
213
|
-
hasActivePrompt: false,
|
|
214
|
-
evidence: 'positive',
|
|
215
|
-
};
|
|
189
|
+
return (0, verdicts_1.positiveVerdict)('ready', status_reason_1.STATUS_REASON.OPENCODE_RESPONSE_COMPLETE);
|
|
216
190
|
}
|
|
217
191
|
// The placeholder against the ANSI-stripped frame with its box drawing
|
|
218
192
|
// intact (the pattern anchors on the `┃` gutter). The footer is on every
|
|
219
193
|
// frame, and the running hint was ruled out just above.
|
|
220
194
|
if (cli_patterns_1.OPENCODE_V2_IDLE_COMPOSER_PATTERN.test((0, cli_patterns_1.stripAnsi)(frame.raw)) ||
|
|
221
195
|
cli_patterns_1.OPENCODE_V2_FOOTER_PATTERN.test(frame.lastLines)) {
|
|
222
|
-
return
|
|
223
|
-
status: 'ready',
|
|
224
|
-
confidence: 'high',
|
|
225
|
-
reason: status_reason_1.STATUS_REASON.INPUT_PROMPT,
|
|
226
|
-
hasActivePrompt: false,
|
|
227
|
-
evidence: 'positive',
|
|
228
|
-
};
|
|
196
|
+
return (0, verdicts_1.positiveVerdict)('ready', status_reason_1.STATUS_REASON.INPUT_PROMPT);
|
|
229
197
|
}
|
|
230
198
|
return null;
|
|
231
199
|
},
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* opencode-v2's live region (Issue #3183; design doc §7 "opencode-v2").
|
|
4
|
+
*
|
|
5
|
+
* - **composer** — the gutter block above `╹▀▀…` and the `ctrl+p commands`
|
|
6
|
+
* footer. Measured: `opencode-v2-dialogs-2984/quoted-dialog-reply.txt`
|
|
7
|
+
* L194-L199 (2.0.18), under the quotation at L27-L29.
|
|
8
|
+
* - **dialog top** — the `┃ △ Permission required` row or the question form's
|
|
9
|
+
* `┃ Questions` row. Measured: `opencode-v2-dialogs-2984/permission.txt`
|
|
10
|
+
* L186, `question.txt` L190.
|
|
11
|
+
*
|
|
12
|
+
* `composerHidesDialogs: false`, as for v1: v2's dialog-title overlays
|
|
13
|
+
* (`commands.txt`) are drawn over a live composer.
|
|
14
|
+
*
|
|
15
|
+
* @module lib/detection/tools/opencode-v2/live-region
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.OPENCODE_V2_LIVE_REGION = void 0;
|
|
19
|
+
const opencode_gutter_live_region_1 = require("../opencode-gutter-live-region");
|
|
20
|
+
exports.OPENCODE_V2_LIVE_REGION = {
|
|
21
|
+
composer: opencode_gutter_live_region_1.OPENCODE_GUTTER_COMPOSER,
|
|
22
|
+
dialogTop: (0, opencode_gutter_live_region_1.opencodeGutterDialogTop)(/△ Permission required|┃\s*Questions\s*$/),
|
|
23
|
+
composerHidesDialogs: false,
|
|
24
|
+
};
|
|
@@ -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
|
+
];
|
|
@@ -32,6 +32,9 @@ exports.runToolDetection = runToolDetection;
|
|
|
32
32
|
exports.createToolStatusDetector = createToolStatusDetector;
|
|
33
33
|
const cli_patterns_1 = require("../cli-patterns");
|
|
34
34
|
const prompt_detector_1 = require("../prompt-detector");
|
|
35
|
+
const frame_1 = require("./frame");
|
|
36
|
+
const live_region_1 = require("./live-region");
|
|
37
|
+
const verdicts_1 = require("./verdicts");
|
|
35
38
|
const status_reason_1 = require("../status-reason");
|
|
36
39
|
const detection_evidence_config_1 = require("../../../config/detection-evidence-config");
|
|
37
40
|
const idle_evidence_observation_1 = require("../idle-evidence-observation");
|
|
@@ -43,20 +46,6 @@ const idle_evidence_observation_1 = require("../idle-evidence-observation");
|
|
|
43
46
|
* which is `running` with no evidence, not `ready`.
|
|
44
47
|
*/
|
|
45
48
|
const STALE_OUTPUT_THRESHOLD_MS = 5000;
|
|
46
|
-
/**
|
|
47
|
-
* Which tools hand the FULL frame to `detectPrompt` instead of the 15-line tail.
|
|
48
|
-
*
|
|
49
|
-
* Their multiple-choice prompts with descriptions can exceed 15 lines: Codex
|
|
50
|
-
* approval prompts with long file lists, Claude "Yes, and don't ask again for:
|
|
51
|
-
* git commit -m …" options that embed full commit messages. `detectPrompt`
|
|
52
|
-
* applies its own 50-line window internally.
|
|
53
|
-
*/
|
|
54
|
-
const FULL_FRAME_PROMPT_TOOLS = new Set([
|
|
55
|
-
'opencode',
|
|
56
|
-
'codex',
|
|
57
|
-
'claude',
|
|
58
|
-
'copilot',
|
|
59
|
-
]);
|
|
60
49
|
/**
|
|
61
50
|
* Resolve the `evidence` for a `ready` / `input_prompt` verdict from the generic
|
|
62
51
|
* composer check (§4 D1 決定 1 item 2).
|
|
@@ -77,7 +66,10 @@ function resolveIdleEvidence(spec, frame) {
|
|
|
77
66
|
return mode === 'observe' ? 'positive' : evidence;
|
|
78
67
|
}
|
|
79
68
|
/** Run the whole chain for one tool over one frame. */
|
|
80
|
-
function runToolDetection(spec,
|
|
69
|
+
function runToolDetection(spec, input, context = {}) {
|
|
70
|
+
// Issue #3183: every branch below reads the tool's own live region, whoever
|
|
71
|
+
// built the frame.
|
|
72
|
+
const frame = (0, frame_1.withLiveRegion)(input, spec.tool);
|
|
81
73
|
// 0.x — the tool's own pre-prompt branches. A picker, a pager or a status bar
|
|
82
74
|
// whose body the generic parser would misread as a numbered dialog.
|
|
83
75
|
const early = spec.beforePrompt?.(frame) ?? null;
|
|
@@ -88,12 +80,19 @@ function runToolDetection(spec, frame, context = {}) {
|
|
|
88
80
|
// Gemini wraps prompts in box-drawing characters (╭╮╰╯│─) which prevent
|
|
89
81
|
// detectPrompt() from recognizing the prompt content.
|
|
90
82
|
const promptOptions = (0, cli_patterns_1.buildDetectPromptOptions)(spec.tool);
|
|
91
|
-
const promptInput =
|
|
83
|
+
const promptInput = (0, cli_patterns_1.usesFullFramePrompt)(spec.tool)
|
|
92
84
|
? (0, cli_patterns_1.stripBoxDrawing)(frame.clean)
|
|
93
85
|
: (0, cli_patterns_1.stripBoxDrawing)(frame.lastLines);
|
|
94
86
|
let promptDetection = (0, prompt_detector_1.detectPrompt)(promptInput, promptOptions);
|
|
95
87
|
if (promptDetection.isPrompt) {
|
|
96
|
-
if (
|
|
88
|
+
if ((0, live_region_1.isQuotedNumberedPrompt)(frame.liveRegion, promptDetection)) {
|
|
89
|
+
// Issue #3183: the input box is the bottom of the pane, so the numbered
|
|
90
|
+
// list sits in the conversation above it — a reply quoting a dialog
|
|
91
|
+
// (#2845 / #2991) or a dialog left in the scrollback. The same rule the
|
|
92
|
+
// Auto-Yes path applies (`detectPromptOnCleanFrame`), on the same region.
|
|
93
|
+
promptDetection = { ...promptDetection, isPrompt: false, promptData: undefined };
|
|
94
|
+
}
|
|
95
|
+
else if (spec.isStalePrompt?.(frame, promptDetection)) {
|
|
97
96
|
// Issue #1160: an ALREADY-ANSWERED block still inside the scan window.
|
|
98
97
|
// Neutralise it so Auto-Yes and the sidebar never act on a dead prompt,
|
|
99
98
|
// and let the chain continue to the tool's running/idle branches.
|
|
@@ -109,14 +108,7 @@ function runToolDetection(spec, frame, context = {}) {
|
|
|
109
108
|
promptDetection = { ...promptDetection, isPrompt: false, promptData: undefined };
|
|
110
109
|
}
|
|
111
110
|
else {
|
|
112
|
-
return
|
|
113
|
-
status: 'waiting',
|
|
114
|
-
confidence: 'high',
|
|
115
|
-
reason: status_reason_1.STATUS_REASON.PROMPT_DETECTED,
|
|
116
|
-
hasActivePrompt: true,
|
|
117
|
-
evidence: 'positive',
|
|
118
|
-
promptDetection,
|
|
119
|
-
};
|
|
111
|
+
return (0, verdicts_1.activePromptVerdict)(status_reason_1.STATUS_REASON.PROMPT_DETECTED, promptDetection);
|
|
120
112
|
}
|
|
121
113
|
}
|
|
122
114
|
// 1.5 — tool branches that must sit between prompt detection and the thinking
|
|
@@ -127,14 +119,7 @@ function runToolDetection(spec, frame, context = {}) {
|
|
|
127
119
|
// 2. Thinking indicator detection — THINKING_TAIL_LINE_COUNT window (narrower).
|
|
128
120
|
// CLI tool is actively processing (shows spinner, "Planning...", etc.)
|
|
129
121
|
if ((0, cli_patterns_1.detectThinking)(spec.tool, frame.thinkingLines)) {
|
|
130
|
-
return
|
|
131
|
-
status: 'running',
|
|
132
|
-
confidence: 'high',
|
|
133
|
-
reason: status_reason_1.STATUS_REASON.THINKING_INDICATOR,
|
|
134
|
-
hasActivePrompt: false,
|
|
135
|
-
evidence: 'positive',
|
|
136
|
-
promptDetection,
|
|
137
|
-
};
|
|
122
|
+
return (0, verdicts_1.positiveVerdictWithPrompt)('running', status_reason_1.STATUS_REASON.THINKING_INDICATOR, promptDetection);
|
|
138
123
|
}
|
|
139
124
|
// 2.x — the tool's own running and completion markers.
|
|
140
125
|
const afterThinking = spec.afterThinking?.(frame, promptDetection) ?? null;
|
|
@@ -169,14 +154,7 @@ function runToolDetection(spec, frame, context = {}) {
|
|
|
169
154
|
if (context.lastOutputTimestamp) {
|
|
170
155
|
const elapsed = Date.now() - context.lastOutputTimestamp.getTime();
|
|
171
156
|
if (elapsed > STALE_OUTPUT_THRESHOLD_MS) {
|
|
172
|
-
return
|
|
173
|
-
status: 'running',
|
|
174
|
-
confidence: 'low',
|
|
175
|
-
reason: status_reason_1.STATUS_REASON.NO_RECENT_OUTPUT,
|
|
176
|
-
hasActivePrompt: false,
|
|
177
|
-
evidence: 'none',
|
|
178
|
-
promptDetection,
|
|
179
|
-
};
|
|
157
|
+
return (0, verdicts_1.unreadVerdictWithPrompt)(status_reason_1.STATUS_REASON.NO_RECENT_OUTPUT, promptDetection);
|
|
180
158
|
}
|
|
181
159
|
}
|
|
182
160
|
// 5. Floor. `running` with no evidence, as before — the safe default when the
|
|
@@ -186,14 +164,7 @@ function runToolDetection(spec, frame, context = {}) {
|
|
|
186
164
|
// rules looked at this frame and found nothing, which is a statement about the
|
|
187
165
|
// rules and an instruction to capture the frame as a fixture. `default` stays
|
|
188
166
|
// the answer for a tool that has no chain of its own, where nothing looked.
|
|
189
|
-
return
|
|
190
|
-
status: 'running',
|
|
191
|
-
confidence: 'low',
|
|
192
|
-
reason: spec.unreadableReason ?? status_reason_1.STATUS_REASON.DEFAULT,
|
|
193
|
-
hasActivePrompt: false,
|
|
194
|
-
evidence: 'none',
|
|
195
|
-
promptDetection,
|
|
196
|
-
};
|
|
167
|
+
return (0, verdicts_1.unreadVerdictWithPrompt)(spec.unreadableReason ?? status_reason_1.STATUS_REASON.DEFAULT, promptDetection);
|
|
197
168
|
}
|
|
198
169
|
/** Bind the shared chain around one tool's declarations. */
|
|
199
170
|
function createToolStatusDetector(spec) {
|
|
@@ -205,7 +176,17 @@ function createToolStatusDetector(spec) {
|
|
|
205
176
|
// caller which of the two it got, because the Auto-Yes gate must suppress
|
|
206
177
|
// for "this tool has rules and this frame is not a dialog" and must NOT
|
|
207
178
|
// suppress for "nobody has measured this tool yet".
|
|
208
|
-
|
|
179
|
+
//
|
|
180
|
+
// Issue #3183: wrapped so every tool's reading gets the live-region veto in
|
|
181
|
+
// one place — a dialog on a frame whose input box is the bottom of the pane
|
|
182
|
+
// is a quotation, whatever the tool's own rule matched.
|
|
183
|
+
detectDialog: spec.detectDialog
|
|
184
|
+
? (input) => {
|
|
185
|
+
const frame = (0, frame_1.withLiveRegion)(input, spec.tool);
|
|
186
|
+
const verdict = spec.detectDialog(frame);
|
|
187
|
+
return (0, live_region_1.vetoesDialog)(frame.liveRegion, verdict) ? null : verdict;
|
|
188
|
+
}
|
|
189
|
+
: () => null,
|
|
209
190
|
hasDialogRules: spec.detectDialog !== undefined,
|
|
210
191
|
};
|
|
211
192
|
}
|
|
@@ -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
|
*
|