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
|
@@ -12,9 +12,13 @@
|
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
exports.STATUS_CHECK_LINE_COUNT = void 0;
|
|
14
14
|
exports.normalizeFrame = normalizeFrame;
|
|
15
|
+
exports.liveRegionOf = liveRegionOf;
|
|
16
|
+
exports.withLiveRegion = withLiveRegion;
|
|
15
17
|
const cli_patterns_1 = require("../cli-patterns");
|
|
16
18
|
const tui_detection_frame_1 = require("../tui-detection-frame");
|
|
17
19
|
const thinking_constants_1 = require("../../../config/thinking-constants");
|
|
20
|
+
const live_region_specs_1 = require("./live-region-specs");
|
|
21
|
+
const live_region_1 = require("./live-region");
|
|
18
22
|
/**
|
|
19
23
|
* Number of lines from the end to check for prompt and input indicators.
|
|
20
24
|
*
|
|
@@ -23,8 +27,17 @@ const thinking_constants_1 = require("../../../config/thinking-constants");
|
|
|
23
27
|
* existing importers are unaffected.
|
|
24
28
|
*/
|
|
25
29
|
exports.STATUS_CHECK_LINE_COUNT = 15;
|
|
26
|
-
/**
|
|
27
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Build the shared {@link NormalizedFrame} for one capture.
|
|
32
|
+
*
|
|
33
|
+
* @param output - The capture. Pass it as captured (ANSI and box drawing
|
|
34
|
+
* intact): the input-box markers of claude / Command Code / copilot / opencode
|
|
35
|
+
* are rule rows that `stripBoxDrawing` blanks.
|
|
36
|
+
* @param tool - The CLI the capture came from. Names the live-region declaration
|
|
37
|
+
* to apply (Issue #3183); omitted, the region is the whole frame — the reading
|
|
38
|
+
* every rule had before.
|
|
39
|
+
*/
|
|
40
|
+
function normalizeFrame(output, tool) {
|
|
28
41
|
const clean = (0, tui_detection_frame_1.normalizeTuiFrameForDetection)((0, cli_patterns_1.stripAnsi)(output));
|
|
29
42
|
const lines = clean.split('\n');
|
|
30
43
|
// Strip trailing empty lines (tmux terminal padding) before windowing.
|
|
@@ -40,8 +53,29 @@ function normalizeFrame(output) {
|
|
|
40
53
|
clean,
|
|
41
54
|
lines,
|
|
42
55
|
contentLines,
|
|
56
|
+
liveRegion: (0, live_region_1.locateLiveRegion)(tool === undefined ? undefined : live_region_specs_1.LIVE_REGION_SPECS[tool], tool ?? null, {
|
|
57
|
+
raw: output,
|
|
58
|
+
contentLines,
|
|
59
|
+
}),
|
|
43
60
|
lastLines: contentLines.slice(-exports.STATUS_CHECK_LINE_COUNT).join('\n'),
|
|
44
61
|
// DR-003: Separate thinking detection window (5 lines) from prompt detection window (15 lines)
|
|
45
62
|
thinkingLines: contentLines.slice(-thinking_constants_1.THINKING_TAIL_LINE_COUNT).join('\n'),
|
|
46
63
|
};
|
|
47
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* The live region of `frame` as `tool` declares it (Issue #3183).
|
|
67
|
+
*
|
|
68
|
+
* `frame.liveRegion` when the frame was normalised for `tool`; recomputed
|
|
69
|
+
* otherwise — a caller that built the frame without naming the tool (older
|
|
70
|
+
* call sites, tests) still gets the tool's own reading, never a stale one.
|
|
71
|
+
*/
|
|
72
|
+
function liveRegionOf(frame, tool) {
|
|
73
|
+
if (frame.liveRegion.tool === tool)
|
|
74
|
+
return frame.liveRegion;
|
|
75
|
+
return (0, live_region_1.locateLiveRegion)(live_region_specs_1.LIVE_REGION_SPECS[tool], tool, { raw: frame.raw, contentLines: frame.contentLines });
|
|
76
|
+
}
|
|
77
|
+
/** `frame` with its live region located for `tool` (the same object when it already is). */
|
|
78
|
+
function withLiveRegion(frame, tool) {
|
|
79
|
+
const liveRegion = liveRegionOf(frame, tool);
|
|
80
|
+
return liveRegion === frame.liveRegion ? frame : { ...frame, liveRegion };
|
|
81
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Gemini 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.GEMINI_THINKING_PATTERN = exports.GEMINI_PROMPT_PATTERN = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* Gemini interactive REPL prompt pattern
|
|
10
|
+
* Gemini CLI shows a `>` or `❯` prompt when waiting for user input in interactive mode.
|
|
11
|
+
*
|
|
12
|
+
* Two branches (Issue #386):
|
|
13
|
+
* - Branch 1: `^[>❯]\s*$` -- bare prompt character (empty input line)
|
|
14
|
+
* - Branch 2: `^\s*[>❯]\s+Type your message.*$` -- new-format prompt with placeholder text
|
|
15
|
+
* (e.g., " > Type your message or @path/to/file"). Leading whitespace is allowed
|
|
16
|
+
* because tmux capture-pane output may include padding.
|
|
17
|
+
*
|
|
18
|
+
* Branch 2 requires "Type your message" after the indicator to avoid false positives
|
|
19
|
+
* on quoted response lines (e.g., "> some quoted text").
|
|
20
|
+
*
|
|
21
|
+
* @see CLAUDE_PROMPT_PATTERN for similar dual-format matching approach
|
|
22
|
+
*/
|
|
23
|
+
// [S4-5] /g flag prohibited: would make test() stateful
|
|
24
|
+
exports.GEMINI_PROMPT_PATTERN = /^[>❯]\s*$|^\s*[>❯]\s+Type your message.*$/m;
|
|
25
|
+
/**
|
|
26
|
+
* Gemini thinking/processing pattern
|
|
27
|
+
* Gemini CLI shows braille spinner characters and status text while processing.
|
|
28
|
+
*/
|
|
29
|
+
exports.GEMINI_THINKING_PATTERN = /[\u2800-\u28FF]|Thinking\.\.\./;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Every tool's live-region declaration, by tool (Issue #3183).
|
|
4
|
+
*
|
|
5
|
+
* A table of its own rather than a lookup through the detector registry:
|
|
6
|
+
* `normalizeFrame` reads it, and the detector modules import `normalizeFrame`,
|
|
7
|
+
* so going through `registry.ts` would close an import cycle. Each detector
|
|
8
|
+
* declares the same object as its `ToolDetectorSpec.liveRegion`, and
|
|
9
|
+
* `live-region-markers.test.ts` holds the two to identity.
|
|
10
|
+
*
|
|
11
|
+
* `gemini` and `vibe-local` have no measured frames and no declaration: their
|
|
12
|
+
* frames carry the whole-frame region, which is the pre-#3183 reading.
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.LIVE_REGION_SPECS = void 0;
|
|
16
|
+
const live_region_1 = require("./antigravity/live-region");
|
|
17
|
+
const live_region_2 = require("./claude/live-region");
|
|
18
|
+
const live_region_3 = require("./codex/live-region");
|
|
19
|
+
const live_region_4 = require("./command-code/live-region");
|
|
20
|
+
const live_region_5 = require("./copilot/live-region");
|
|
21
|
+
const live_region_6 = require("./opencode/live-region");
|
|
22
|
+
const live_region_7 = require("./opencode-v2/live-region");
|
|
23
|
+
exports.LIVE_REGION_SPECS = {
|
|
24
|
+
claude: live_region_2.CLAUDE_LIVE_REGION,
|
|
25
|
+
codex: live_region_3.CODEX_LIVE_REGION,
|
|
26
|
+
antigravity: live_region_1.ANTIGRAVITY_LIVE_REGION,
|
|
27
|
+
'command-code': live_region_4.COMMAND_CODE_LIVE_REGION,
|
|
28
|
+
copilot: live_region_5.COPILOT_LIVE_REGION,
|
|
29
|
+
opencode: live_region_6.OPENCODE_LIVE_REGION,
|
|
30
|
+
'opencode-v2': live_region_7.OPENCODE_V2_LIVE_REGION,
|
|
31
|
+
};
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* The live region: "where on this frame does the part the operator can act on
|
|
4
|
+
* begin?" (Issue #3183, `docs/design/3183-live-region-extraction.md`).
|
|
5
|
+
*
|
|
6
|
+
* Before this module every tool answered that question on its own — codex by
|
|
7
|
+
* the bottom-most `›` row (#892) and again by its SGR (#2841), agy by a `>`
|
|
8
|
+
* under the list (#2845 / #2851), Command Code by a footer at the very bottom
|
|
9
|
+
* (#2846), claude by the input box (#2847) — and a fix to one tool reached no
|
|
10
|
+
* other. Here the answer is computed once per frame, by `normalizeFrame`, from
|
|
11
|
+
* each tool's {@link LiveRegionSpec}; the status chain and the Auto-Yes path
|
|
12
|
+
* then apply the SAME two rules to it:
|
|
13
|
+
*
|
|
14
|
+
* - {@link isQuotedNumberedPrompt}: a numbered list on a frame whose input box
|
|
15
|
+
* is the bottom of the pane is conversation text, not a dialog;
|
|
16
|
+
* - {@link vetoesDialog}: likewise for a tool's own dialog reading.
|
|
17
|
+
*
|
|
18
|
+
* This file holds the shared parts the per-tool declarations are built from and
|
|
19
|
+
* the two rules. It must stay free of the detector modules (`<tool>/detect.ts`)
|
|
20
|
+
* so `normalizeFrame` can use it without an import cycle.
|
|
21
|
+
*/
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.wholeFrameRegion = wholeFrameRegion;
|
|
24
|
+
exports.locateLiveRegion = locateLiveRegion;
|
|
25
|
+
exports.isQuotedNumberedPrompt = isQuotedNumberedPrompt;
|
|
26
|
+
exports.vetoesDialog = vetoesDialog;
|
|
27
|
+
exports.fencedComposer = fencedComposer;
|
|
28
|
+
exports.bottomMostComposerRow = bottomMostComposerRow;
|
|
29
|
+
exports.dialogTopFrom = dialogTopFrom;
|
|
30
|
+
exports.ruleAboveOptionRun = ruleAboveOptionRun;
|
|
31
|
+
exports.lastContentRow = lastContentRow;
|
|
32
|
+
/** The whole frame — the reading every rule had before Issue #3183. */
|
|
33
|
+
function wholeFrameRegion(tool, contentLines) {
|
|
34
|
+
return {
|
|
35
|
+
tool,
|
|
36
|
+
anchor: 'none',
|
|
37
|
+
startRow: 0,
|
|
38
|
+
composerAtBottom: false,
|
|
39
|
+
composerHidesDialogs: false,
|
|
40
|
+
lines: contentLines,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Locate the live region of one frame from one tool's declaration.
|
|
45
|
+
*
|
|
46
|
+
* The composer wins over the dialog top: a tool that draws its input box is,
|
|
47
|
+
* by every measurement in the design doc §7, not showing a dialog above it.
|
|
48
|
+
*/
|
|
49
|
+
function locateLiveRegion(spec, tool, rows) {
|
|
50
|
+
const { contentLines } = rows;
|
|
51
|
+
if (spec === undefined)
|
|
52
|
+
return wholeFrameRegion(tool, contentLines);
|
|
53
|
+
const composer = spec.composer.locate(rows);
|
|
54
|
+
if (composer !== null) {
|
|
55
|
+
return {
|
|
56
|
+
tool,
|
|
57
|
+
anchor: 'composer',
|
|
58
|
+
startRow: composer.start,
|
|
59
|
+
composerEndRow: composer.end ?? composer.start,
|
|
60
|
+
composerAtBottom: composer.atBottom ?? true,
|
|
61
|
+
composerHidesDialogs: spec.composerHidesDialogs,
|
|
62
|
+
lines: contentLines.slice(composer.start),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
const dialog = spec.dialogTop?.locate(rows) ?? null;
|
|
66
|
+
if (dialog !== null) {
|
|
67
|
+
return {
|
|
68
|
+
tool,
|
|
69
|
+
anchor: 'dialog',
|
|
70
|
+
startRow: dialog.start,
|
|
71
|
+
composerAtBottom: false,
|
|
72
|
+
composerHidesDialogs: spec.composerHidesDialogs,
|
|
73
|
+
lines: contentLines.slice(dialog.start),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
return wholeFrameRegion(tool, contentLines);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Is the numbered list the generic parser read a quotation? (Issue #3183)
|
|
80
|
+
*
|
|
81
|
+
* True when it is a `multiple_choice` reading on a frame whose input box is the
|
|
82
|
+
* bottom of the pane, for a tool whose every answerable screen replaces the
|
|
83
|
+
* input box ({@link LiveRegion.composerHidesDialogs}): the list then sits in
|
|
84
|
+
* the conversation above it — an agent's reply quoting a dialog, or a dialog
|
|
85
|
+
* left in the scrollback.
|
|
86
|
+
*
|
|
87
|
+
* For copilot and the opencode family a composer at the bottom does not prove
|
|
88
|
+
* that much (their pickers are drawn over it), and their numbered candidates
|
|
89
|
+
* stay with their own dialog rules — the Auto-Yes gate, which both enforce, and
|
|
90
|
+
* opencode-v2's `requireVouchedPrompt`.
|
|
91
|
+
*
|
|
92
|
+
* The one rule both the status chain (`run-detection.ts`) and the Auto-Yes
|
|
93
|
+
* path (`response-checker.ts`'s `detectPromptOnCleanFrame`) apply.
|
|
94
|
+
*/
|
|
95
|
+
function isQuotedNumberedPrompt(region, prompt) {
|
|
96
|
+
return (prompt.isPrompt &&
|
|
97
|
+
prompt.promptData?.type === 'multiple_choice' &&
|
|
98
|
+
region.composerAtBottom &&
|
|
99
|
+
region.composerHidesDialogs);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Should a tool's own dialog reading be discarded because the input box is the
|
|
103
|
+
* bottom of the pane? (Issue #3183)
|
|
104
|
+
*
|
|
105
|
+
* Numbered dialogs always are: every tool measured removes its input box while
|
|
106
|
+
* one is up (design doc §7). Arrow-key surfaces are only for tools whose every
|
|
107
|
+
* screen replaces the input box ({@link LiveRegion.composerHidesDialogs}):
|
|
108
|
+
* copilot and opencode draw their pickers OVER a live composer, so there a
|
|
109
|
+
* composer at the bottom says nothing about a `keys` overlay.
|
|
110
|
+
*/
|
|
111
|
+
function vetoesDialog(region, verdict) {
|
|
112
|
+
if (verdict === null || !region.composerAtBottom)
|
|
113
|
+
return false;
|
|
114
|
+
return verdict.answerMode === 'numbered' || region.composerHidesDialogs;
|
|
115
|
+
}
|
|
116
|
+
// ---------------------------------------------------------------------------
|
|
117
|
+
// Shared parts the per-tool declarations are built from.
|
|
118
|
+
// ---------------------------------------------------------------------------
|
|
119
|
+
/**
|
|
120
|
+
* A composer fenced by rules and pinned to the bottom (claude, Command Code,
|
|
121
|
+
* copilot): the tool's own structural finder, which returns the index of the
|
|
122
|
+
* block's first row or -1. The block runs to the last content row (the status
|
|
123
|
+
* bar under the fence is part of it), so it is the bottom by construction.
|
|
124
|
+
*/
|
|
125
|
+
function fencedComposer(find) {
|
|
126
|
+
return {
|
|
127
|
+
locate({ contentLines }) {
|
|
128
|
+
const start = find(contentLines);
|
|
129
|
+
if (start < 0)
|
|
130
|
+
return null;
|
|
131
|
+
return { start, end: lastContentRow(contentLines), atBottom: true };
|
|
132
|
+
},
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* The bottom-most row `isComposerRow` accepts (agy's bare `>`, codex's `›`).
|
|
137
|
+
* `atBottom` decides whether the rows below it still hold something live.
|
|
138
|
+
*/
|
|
139
|
+
function bottomMostComposerRow(options) {
|
|
140
|
+
return {
|
|
141
|
+
locate(rows) {
|
|
142
|
+
const { contentLines } = rows;
|
|
143
|
+
for (let i = contentLines.length - 1; i >= 0; i--) {
|
|
144
|
+
if (options.isComposerRow(contentLines[i])) {
|
|
145
|
+
return { start: i, end: i, atBottom: options.atBottom(rows, i) };
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return null;
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
/** A dialog top found by a tool's own function over `contentLines` (-1 when absent). */
|
|
153
|
+
function dialogTopFrom(find) {
|
|
154
|
+
return {
|
|
155
|
+
locate({ contentLines }) {
|
|
156
|
+
const start = find(contentLines);
|
|
157
|
+
return start < 0 ? null : { start };
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
/** A numbered option row, cursor glyph optional (`❯ 1. Yes`, ` 2. No`, `› 3. …`). */
|
|
162
|
+
const OPTION_ONE_ROW_PATTERN = /^\s*(?:[❯›>●]\s*)?1[.)]\s+\S/;
|
|
163
|
+
/**
|
|
164
|
+
* The top of a dialog drawn as: rule, title, …, `1.` option, …, footer
|
|
165
|
+
* (claude, Command Code). From the bottom-most footer, up to the first option,
|
|
166
|
+
* up to the nearest rule. Searching from the OPTION rather than the footer is
|
|
167
|
+
* what keeps an AskUserQuestion picker's second, inner rule (between its
|
|
168
|
+
* options and its footer) from being taken for the top.
|
|
169
|
+
*/
|
|
170
|
+
function ruleAboveOptionRun(options) {
|
|
171
|
+
return dialogTopFrom(lines => {
|
|
172
|
+
let footer = -1;
|
|
173
|
+
for (let i = lines.length - 1; i >= 0; i--) {
|
|
174
|
+
if (options.footer(lines[i])) {
|
|
175
|
+
footer = i;
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
if (footer < 0)
|
|
180
|
+
return -1;
|
|
181
|
+
const floor = Math.max(0, footer - options.maxRows);
|
|
182
|
+
let optionOne = -1;
|
|
183
|
+
for (let i = footer - 1; i >= floor; i--) {
|
|
184
|
+
if (OPTION_ONE_ROW_PATTERN.test(lines[i])) {
|
|
185
|
+
optionOne = i;
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
if (optionOne < 0)
|
|
190
|
+
return -1;
|
|
191
|
+
for (let i = optionOne - 1; i >= floor; i--) {
|
|
192
|
+
if (options.rule.test(lines[i].trimEnd()))
|
|
193
|
+
return i;
|
|
194
|
+
}
|
|
195
|
+
return -1;
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
/** The last non-blank row's index, or -1. */
|
|
199
|
+
function lastContentRow(lines) {
|
|
200
|
+
let i = lines.length - 1;
|
|
201
|
+
while (i >= 0 && lines[i].trim() === '')
|
|
202
|
+
i--;
|
|
203
|
+
return i;
|
|
204
|
+
}
|
|
@@ -11,10 +11,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
11
11
|
exports.opencodeStatusDetector = exports.VERIFIED_AGAINST = void 0;
|
|
12
12
|
exports.readIdleEvidence = readIdleEvidence;
|
|
13
13
|
const cli_patterns_1 = require("../../cli-patterns");
|
|
14
|
+
const verdicts_1 = require("../verdicts");
|
|
14
15
|
const status_reason_1 = require("../../status-reason");
|
|
15
16
|
const opencode_modal_overlay_1 = require("../../opencode-modal-overlay");
|
|
16
17
|
const prompt_1 = require("./prompt");
|
|
17
18
|
const frame_1 = require("../frame");
|
|
19
|
+
const live_region_1 = require("./live-region");
|
|
18
20
|
const run_detection_1 = require("../run-detection");
|
|
19
21
|
const verified_against_1 = require("../verified-against");
|
|
20
22
|
const thinking_constants_1 = require("../../../../config/thinking-constants");
|
|
@@ -81,6 +83,8 @@ function readIdleEvidence(frame) {
|
|
|
81
83
|
exports.opencodeStatusDetector = (0, run_detection_1.createToolStatusDetector)({
|
|
82
84
|
tool: 'opencode',
|
|
83
85
|
verifiedAgainst: exports.VERIFIED_AGAINST,
|
|
86
|
+
// Issue #3183: where the live part of the frame begins (`./live-region.ts`).
|
|
87
|
+
liveRegion: live_region_1.OPENCODE_LIVE_REGION,
|
|
84
88
|
afterThinking(frame) {
|
|
85
89
|
// 2.5. OpenCode status detection (Issue #379)
|
|
86
90
|
// OpenCode TUI layout: content area (top) | empty padding (~150 lines) | footer status bar (~6 lines at bottom).
|
|
@@ -123,23 +127,11 @@ exports.opencodeStatusDetector = (0, run_detection_1.createToolStatusDetector)({
|
|
|
123
127
|
// `wait` still stops for it (`isSelectionListActive` → exit 10) and the UI
|
|
124
128
|
// renders NavigationButtons, which send exactly the keys the strip takes.
|
|
125
129
|
if (cli_patterns_1.OPENCODE_PERMISSION_PATTERN.test(frame.lastLines)) {
|
|
126
|
-
return
|
|
127
|
-
status: 'waiting',
|
|
128
|
-
confidence: 'high',
|
|
129
|
-
reason: status_reason_1.STATUS_REASON.OPENCODE_PERMISSION_PROMPT,
|
|
130
|
-
hasActivePrompt: false,
|
|
131
|
-
evidence: 'positive',
|
|
132
|
-
};
|
|
130
|
+
return (0, verdicts_1.positiveVerdict)('waiting', status_reason_1.STATUS_REASON.OPENCODE_PERMISSION_PROMPT);
|
|
133
131
|
}
|
|
134
132
|
// A. Check footer for processing indicator ("esc interrupt" replaces "ctrl+t variants..." during processing)
|
|
135
133
|
if (cli_patterns_1.OPENCODE_PROCESSING_INDICATOR.test(frame.lastLines)) {
|
|
136
|
-
return
|
|
137
|
-
status: 'running',
|
|
138
|
-
confidence: 'high',
|
|
139
|
-
reason: status_reason_1.STATUS_REASON.OPENCODE_PROCESSING_INDICATOR,
|
|
140
|
-
hasActivePrompt: false,
|
|
141
|
-
evidence: 'positive',
|
|
142
|
-
};
|
|
134
|
+
return (0, verdicts_1.positiveVerdict)('running', status_reason_1.STATUS_REASON.OPENCODE_PROCESSING_INDICATOR);
|
|
143
135
|
}
|
|
144
136
|
const { candidates, lastIndex } = findContentEnd(frame);
|
|
145
137
|
if (lastIndex < 0)
|
|
@@ -149,13 +141,7 @@ exports.opencodeStatusDetector = (0, run_detection_1.createToolStatusDetector)({
|
|
|
149
141
|
.slice(Math.max(0, lastIndex - thinking_constants_1.THINKING_TAIL_LINE_COUNT + 1), lastIndex + 1)
|
|
150
142
|
.join('\n');
|
|
151
143
|
if ((0, cli_patterns_1.detectThinking)('opencode', contentThinkingWindow)) {
|
|
152
|
-
return
|
|
153
|
-
status: 'running',
|
|
154
|
-
confidence: 'high',
|
|
155
|
-
reason: status_reason_1.STATUS_REASON.THINKING_INDICATOR,
|
|
156
|
-
hasActivePrompt: false,
|
|
157
|
-
evidence: 'positive',
|
|
158
|
-
};
|
|
144
|
+
return (0, verdicts_1.positiveVerdict)('running', status_reason_1.STATUS_REASON.THINKING_INDICATOR);
|
|
159
145
|
}
|
|
160
146
|
// C. Check content area for selection list (Issue #473: fuzzy-search list detection)
|
|
161
147
|
// Selection list header ("Select model"/"Select provider") may be far above the
|
|
@@ -164,13 +150,7 @@ exports.opencodeStatusDetector = (0, run_detection_1.createToolStatusDetector)({
|
|
|
164
150
|
.slice(Math.max(0, lastIndex - frame_1.STATUS_CHECK_LINE_COUNT + 1), lastIndex + 1)
|
|
165
151
|
.join('\n');
|
|
166
152
|
if (cli_patterns_1.OPENCODE_SELECTION_LIST_PATTERN.test(candidates.join('\n'))) {
|
|
167
|
-
return
|
|
168
|
-
status: 'waiting',
|
|
169
|
-
confidence: 'high',
|
|
170
|
-
reason: status_reason_1.STATUS_REASON.OPENCODE_SELECTION_LIST,
|
|
171
|
-
hasActivePrompt: false,
|
|
172
|
-
evidence: 'positive',
|
|
173
|
-
};
|
|
153
|
+
return (0, verdicts_1.positiveVerdict)('waiting', status_reason_1.STATUS_REASON.OPENCODE_SELECTION_LIST);
|
|
174
154
|
}
|
|
175
155
|
// C2. A modal overlay painted over the transcript (Issue #2112).
|
|
176
156
|
//
|
|
@@ -205,13 +185,7 @@ exports.opencodeStatusDetector = (0, run_detection_1.createToolStatusDetector)({
|
|
|
205
185
|
// production caller of `detectSessionStatus` passes the `capture-pane -e`
|
|
206
186
|
// bytes (`lib/tmux/tmux.ts` always passes `-e`).
|
|
207
187
|
if ((0, opencode_modal_overlay_1.detectOpenCodeModalOverlay)(frame.raw) !== null) {
|
|
208
|
-
return
|
|
209
|
-
status: 'waiting',
|
|
210
|
-
confidence: 'high',
|
|
211
|
-
reason: status_reason_1.STATUS_REASON.OPENCODE_MODAL_OVERLAY,
|
|
212
|
-
hasActivePrompt: false,
|
|
213
|
-
evidence: 'positive',
|
|
214
|
-
};
|
|
188
|
+
return (0, verdicts_1.positiveVerdict)('waiting', status_reason_1.STATUS_REASON.OPENCODE_MODAL_OVERLAY);
|
|
215
189
|
}
|
|
216
190
|
// D. Check last few content lines for the finished-turn marker.
|
|
217
191
|
//
|
|
@@ -224,13 +198,7 @@ exports.opencodeStatusDetector = (0, run_detection_1.createToolStatusDetector)({
|
|
|
224
198
|
// through to the heuristics rather than claiming a completion that never
|
|
225
199
|
// happened, which is what design rule D1 asks for.
|
|
226
200
|
if (cli_patterns_1.OPENCODE_TURN_COMPLETE_PATTERN.test(contentCheckWindow)) {
|
|
227
|
-
return
|
|
228
|
-
status: 'ready',
|
|
229
|
-
confidence: 'high',
|
|
230
|
-
reason: status_reason_1.STATUS_REASON.OPENCODE_RESPONSE_COMPLETE,
|
|
231
|
-
hasActivePrompt: false,
|
|
232
|
-
evidence: 'positive',
|
|
233
|
-
};
|
|
201
|
+
return (0, verdicts_1.positiveVerdict)('ready', status_reason_1.STATUS_REASON.OPENCODE_RESPONSE_COMPLETE);
|
|
234
202
|
}
|
|
235
203
|
// E. Idle composer (Issue #473 found the row; Issue #1883 made it positive).
|
|
236
204
|
//
|
|
@@ -254,13 +222,7 @@ exports.opencodeStatusDetector = (0, run_detection_1.createToolStatusDetector)({
|
|
|
254
222
|
.slice(Math.max(0, lastIndex - frame_1.STATUS_CHECK_LINE_COUNT + 1), lastIndex + 1)
|
|
255
223
|
.join('\n');
|
|
256
224
|
if (cli_patterns_1.OPENCODE_IDLE_COMPOSER_PATTERN.test(composerWindow)) {
|
|
257
|
-
return
|
|
258
|
-
status: 'ready',
|
|
259
|
-
confidence: 'high',
|
|
260
|
-
reason: status_reason_1.STATUS_REASON.INPUT_PROMPT,
|
|
261
|
-
hasActivePrompt: false,
|
|
262
|
-
evidence: 'positive',
|
|
263
|
-
};
|
|
225
|
+
return (0, verdicts_1.positiveVerdict)('ready', status_reason_1.STATUS_REASON.INPUT_PROMPT);
|
|
264
226
|
}
|
|
265
227
|
return null;
|
|
266
228
|
},
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* opencode (v1)'s live region (Issue #3183; design doc §7 "opencode").
|
|
4
|
+
*
|
|
5
|
+
* - **composer** — the gutter block above `╹▀▀…` and the `ctrl+p` footer.
|
|
6
|
+
* Measured: `opencode-agent-health-3021/quoted-dialog-reply-done.txt`
|
|
7
|
+
* L192-L199 (1.18.33).
|
|
8
|
+
* - **dialog top** — the `┃ △ Permission required` row. Measured:
|
|
9
|
+
* `opencode-live-1893/permission-bash.txt` L192 / L198 (1.18.21).
|
|
10
|
+
*
|
|
11
|
+
* `composerHidesDialogs: false`: opencode draws its pickers and the command
|
|
12
|
+
* palette over a live composer, so a composer at the bottom vetoes only the
|
|
13
|
+
* numbered readings.
|
|
14
|
+
*
|
|
15
|
+
* @module lib/detection/tools/opencode/live-region
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.OPENCODE_LIVE_REGION = void 0;
|
|
19
|
+
const opencode_gutter_live_region_1 = require("../opencode-gutter-live-region");
|
|
20
|
+
exports.OPENCODE_LIVE_REGION = {
|
|
21
|
+
composer: opencode_gutter_live_region_1.OPENCODE_GUTTER_COMPOSER,
|
|
22
|
+
dialogTop: (0, opencode_gutter_live_region_1.opencodeGutterDialogTop)(/△ Permission required/),
|
|
23
|
+
composerHidesDialogs: false,
|
|
24
|
+
};
|