commandmate 0.44.2 → 0.44.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +149 -149
- package/.next/app-path-routes-manifest.json +21 -21
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +12 -12
- package/.next/react-loadable-manifest.json +0 -6
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/update/route.js +1 -1
- package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/versions/route.js +1 -1
- package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update/route.js +2 -2
- package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/route.js +1 -1
- package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/capabilities/route.js +1 -1
- package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/route.js +1 -1
- package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/route.js +1 -1
- package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js +2 -2
- package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/claude-done/route.js +2 -2
- package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/escalation/route.js +1 -1
- package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/subscriptions/route.js +2 -2
- package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/vapid/route.js +1 -1
- package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/route.js +1 -1
- package/.next/server/app/api/relays/route.js.nft.json +1 -1
- package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/route.js +1 -1
- package/.next/server/app/api/repositories/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-agents/route.js +1 -1
- package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sidebar/group-order/route.js +1 -1
- package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/[id]/route.js +1 -1
- package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/[id]/route.js +2 -2
- package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/route.js +2 -2
- package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +3 -3
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/notes/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route.js +3 -3
- package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/more/page_client-reference-manifest.js +1 -1
- package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
- package/.next/server/app/review/page_client-reference-manifest.js +1 -1
- package/.next/server/app/sessions/page.js +1 -1
- package/.next/server/app/sessions/page.js.nft.json +1 -1
- package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/page.js +11 -11
- package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +21 -21
- package/.next/server/chunks/1191.js +2 -2
- package/.next/server/chunks/1210.js +1 -1
- package/.next/server/chunks/1559.js +2 -0
- package/.next/server/chunks/1789.js +1 -0
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2404.js +1 -1
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/2460.js +1 -1
- package/.next/server/chunks/2710.js +1 -1
- package/.next/server/chunks/2908.js +1 -1
- package/.next/server/chunks/2980.js +1 -1
- package/.next/server/chunks/3241.js +1 -1
- package/.next/server/chunks/3480.js +1 -1
- package/.next/server/chunks/3718.js +1 -1
- package/.next/server/chunks/4207.js +2 -2
- package/.next/server/chunks/450.js +1 -1
- package/.next/server/chunks/4672.js +5 -0
- package/.next/server/chunks/{9353.js → 4718.js} +2 -2
- package/.next/server/chunks/4837.js +14 -0
- package/.next/server/chunks/5048.js +1 -1
- package/.next/server/chunks/5209.js +1 -0
- package/.next/server/chunks/5595.js +1 -1
- package/.next/server/chunks/5625.js +25 -0
- package/.next/server/chunks/611.js +1 -1
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6401.js +1 -1
- package/.next/server/chunks/6781.js +1 -1
- package/.next/server/chunks/6793.js +3 -3
- package/.next/server/chunks/7491.js +2 -2
- package/.next/server/chunks/7905.js +1 -1
- package/.next/server/chunks/850.js +1 -1
- package/.next/server/chunks/8728.js +3 -3
- package/.next/server/chunks/8791.js +1 -1
- package/.next/server/chunks/8800.js +1 -1
- package/.next/server/chunks/8918.js +7 -7
- package/.next/server/chunks/9130.js +1 -1
- package/.next/server/chunks/9390.js +2 -2
- package/.next/server/chunks/9584.js +1 -1
- package/.next/server/chunks/9627.js +6 -6
- package/.next/server/chunks/9731.js +3 -3
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/{1642-fb2e176aaadbd137.js → 1642-767aed8e7c61ef7f.js} +1 -1
- package/.next/static/chunks/{2407-051f6f84226a9f2c.js → 2407-06d35bb1aa02de80.js} +1 -1
- package/.next/static/chunks/{2619-04bc32f026a0d946.js → 2619-a305ad4810f1393a.js} +1 -1
- package/.next/static/chunks/4727-5d695d71e3fdf97b.js +1 -0
- package/.next/static/chunks/{8165-3853772f6ae1299b.js → 8165-3525fb42f1b4976e.js} +1 -1
- package/.next/static/chunks/app/{layout-9da1ab602bcb3051.js → layout-0d1750b833f5cc3e.js} +1 -1
- package/.next/static/chunks/app/sessions/page-2af68c63211c751f.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-e36898c3a80e7302.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/terminal/{page-373ea37b16d930c7.js → page-c601f3b3ece6557e.js} +1 -1
- package/.next/static/css/057f64a65726c439.css +1 -0
- package/.next/trace +13 -13
- package/dist/cli/commands/ask.d.ts.map +1 -1
- package/dist/cli/commands/ask.js +120 -119
- package/dist/cli/commands/attach.d.ts +94 -0
- package/dist/cli/commands/attach.d.ts.map +1 -1
- package/dist/cli/commands/attach.js +145 -7
- package/dist/cli/commands/auto-yes.js +1 -1
- package/dist/cli/commands/capture.d.ts.map +1 -1
- package/dist/cli/commands/capture.js +3 -5
- package/dist/cli/commands/command-target.d.ts +23 -0
- package/dist/cli/commands/command-target.d.ts.map +1 -0
- package/dist/cli/commands/command-target.js +25 -0
- package/dist/cli/commands/instances.d.ts.map +1 -1
- package/dist/cli/commands/instances.js +41 -2
- package/dist/cli/commands/message-dispatch.d.ts +36 -0
- package/dist/cli/commands/message-dispatch.d.ts.map +1 -0
- package/dist/cli/commands/message-dispatch.js +63 -0
- package/dist/cli/commands/reply.d.ts.map +1 -1
- package/dist/cli/commands/reply.js +2 -5
- package/dist/cli/commands/respond.d.ts.map +1 -1
- package/dist/cli/commands/respond.js +3 -6
- package/dist/cli/commands/send.d.ts.map +1 -1
- package/dist/cli/commands/send.js +149 -146
- package/dist/cli/commands/wait.d.ts.map +1 -1
- package/dist/cli/commands/wait.js +589 -431
- package/dist/cli/types/api-responses.d.ts +159 -27
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/types/api-responses.js +4 -2
- package/dist/cli/utils/api-client.d.ts +25 -5
- package/dist/cli/utils/api-client.d.ts.map +1 -1
- package/dist/cli/utils/api-client.js +87 -55
- package/dist/cli/utils/server-url.d.ts +1 -0
- package/dist/cli/utils/server-url.d.ts.map +1 -1
- package/dist/cli/utils/server-url.js +7 -0
- package/dist/config/uat-isolation.d.ts +140 -0
- package/dist/config/uat-isolation.d.ts.map +1 -0
- package/dist/config/uat-isolation.js +246 -0
- package/dist/lib/global-state.d.ts +12 -0
- package/dist/lib/global-state.d.ts.map +1 -0
- package/dist/lib/global-state.js +16 -0
- package/dist/lib/polling/auto-yes-suppression-reason.d.ts +33 -0
- package/dist/lib/polling/auto-yes-suppression-reason.d.ts.map +1 -0
- package/dist/lib/polling/auto-yes-suppression-reason.js +2 -0
- package/dist/lib/session/prompt-view.d.ts +26 -3
- package/dist/lib/session/prompt-view.d.ts.map +1 -1
- package/dist/lib/session/prompt-view.js +26 -3
- package/dist/lib/session/status-evidence-type.d.ts +16 -0
- package/dist/lib/session/status-evidence-type.d.ts.map +1 -0
- package/dist/lib/session/status-evidence-type.js +2 -0
- package/dist/lib/tmux/legacy-session-alias.d.ts.map +1 -1
- package/dist/lib/tmux/legacy-session-alias.js +2 -1
- package/dist/server/locales/en/worktree.json +3 -1
- package/dist/server/locales/ja/worktree.json +3 -1
- package/dist/server/src/cli/types/api-responses.js +4 -2
- package/dist/server/src/config/cli-tool-timing-config.js +1 -6
- package/dist/server/src/config/uat-isolation.js +246 -0
- package/dist/server/src/lib/assistant-response-saver.js +62 -3
- package/dist/server/src/lib/auto-yes-lifecycle.js +6 -0
- package/dist/server/src/lib/auto-yes-poller.js +450 -160
- package/dist/server/src/lib/auto-yes-state.js +2 -2
- package/dist/server/src/lib/cli-tools/antigravity.js +38 -79
- package/dist/server/src/lib/cli-tools/base.js +151 -0
- package/dist/server/src/lib/cli-tools/codex.js +44 -80
- package/dist/server/src/lib/cli-tools/command-code.js +24 -56
- package/dist/server/src/lib/cli-tools/copilot.js +25 -67
- package/dist/server/src/lib/cli-tools/direct-input.js +8 -0
- package/dist/server/src/lib/cli-tools/gemini.js +23 -73
- package/dist/server/src/lib/cli-tools/opencode-pane-width.js +53 -0
- package/dist/server/src/lib/cli-tools/opencode-v2.js +9 -7
- package/dist/server/src/lib/cli-tools/opencode.js +21 -85
- package/dist/server/src/lib/cli-tools/submit-verified-sender.js +127 -4
- package/dist/server/src/lib/cli-tools/vibe-local.js +21 -66
- package/dist/server/src/lib/detection/cli-patterns.js +374 -3065
- package/dist/server/src/lib/detection/idle-evidence-observation.js +2 -2
- package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +7 -32
- package/dist/server/src/lib/detection/prompt-detector.js +2 -35
- package/dist/server/src/lib/detection/selection-shape-patterns.js +69 -0
- package/dist/server/src/lib/detection/selection-shape.js +32 -520
- package/dist/server/src/lib/detection/shared/pasted-text.js +41 -0
- package/dist/server/src/lib/detection/shared/shell-pane-command.js +16 -0
- package/dist/server/src/lib/detection/shared/strip-box-drawing.js +25 -0
- package/dist/server/src/lib/detection/tools/antigravity/detect.js +5 -29
- package/dist/server/src/lib/detection/tools/antigravity/dialog.js +2 -15
- package/dist/server/src/lib/detection/tools/antigravity/patterns.js +286 -0
- package/dist/server/src/lib/detection/tools/claude/detect.js +3 -14
- package/dist/server/src/lib/detection/tools/claude/patterns.js +264 -4
- package/dist/server/src/lib/detection/tools/claude/prompt.js +2 -10
- package/dist/server/src/lib/detection/tools/codex/detect.js +46 -85
- package/dist/server/src/lib/detection/tools/codex/live-region.js +33 -2
- package/dist/server/src/lib/detection/tools/codex/patterns.js +855 -0
- package/dist/server/src/lib/detection/tools/codex/prompt.js +2 -10
- package/dist/server/src/lib/detection/tools/command-code/detect.js +8 -50
- package/dist/server/src/lib/detection/tools/command-code/dialog.js +2 -18
- package/dist/server/src/lib/detection/tools/command-code/patterns.js +234 -0
- package/dist/server/src/lib/detection/tools/command-code/selection-shape.js +461 -0
- package/dist/server/src/lib/detection/tools/context-above.js +20 -0
- package/dist/server/src/lib/detection/tools/copilot/detect.js +10 -35
- package/dist/server/src/lib/detection/tools/copilot/patterns.js +640 -0
- package/dist/server/src/lib/detection/tools/copilot/prompt.js +2 -10
- package/dist/server/src/lib/detection/tools/gemini/patterns.js +29 -0
- package/dist/server/src/lib/detection/tools/live-region-specs.js +1 -1
- package/dist/server/src/lib/detection/tools/opencode/detect.js +8 -49
- package/dist/server/src/lib/detection/tools/opencode/patterns.js +508 -0
- package/dist/server/src/lib/detection/tools/opencode-v2/detect.js +7 -42
- package/dist/server/src/lib/detection/tools/opencode-v2/patterns.js +63 -0
- package/dist/server/src/lib/detection/tools/run-detection.js +6 -47
- package/dist/server/src/lib/detection/tools/verdicts.js +59 -0
- package/dist/server/src/lib/detection/tools/vibe-local/patterns.js +20 -0
- package/dist/server/src/lib/detection/truncate-raw-content.js +38 -0
- package/dist/server/src/lib/detection/turn-abandoned.js +66 -0
- package/dist/server/src/lib/detection/unclassified-frame-tracker.js +2 -2
- package/dist/server/src/lib/global-state.js +16 -0
- package/dist/server/src/lib/hooks/agent-session-telemetry.js +4 -6
- package/dist/server/src/lib/hooks/permission-decision-state.js +2 -2
- package/dist/server/src/lib/hooks/sources/antigravity/history.js +11 -76
- package/dist/server/src/lib/hooks/sources/antigravity/hooks-config.js +63 -1
- package/dist/server/src/lib/hooks/sources/antigravity/source.js +16 -0
- package/dist/server/src/lib/hooks/sources/antigravity/transcript.js +3 -12
- package/dist/server/src/lib/hooks/sources/claude/history.js +17 -156
- package/dist/server/src/lib/hooks/sources/claude/queued-notice.js +53 -0
- package/dist/server/src/lib/hooks/sources/claude/source.js +33 -3
- package/dist/server/src/lib/hooks/sources/claude/transcript.js +3 -13
- package/dist/server/src/lib/hooks/sources/codex/history.js +11 -74
- package/dist/server/src/lib/hooks/sources/codex/hooks-config.js +147 -11
- package/dist/server/src/lib/hooks/sources/codex/relay-install.js +64 -21
- package/dist/server/src/lib/hooks/sources/codex/transcript.js +5 -15
- package/dist/server/src/lib/hooks/sources/command-code/history.js +20 -121
- package/dist/server/src/lib/hooks/sources/command-code/transcript.js +3 -13
- package/dist/server/src/lib/hooks/sources/copilot/hook-settings.js +161 -31
- package/dist/server/src/lib/hooks/sources/define-source.js +40 -55
- package/dist/server/src/lib/hooks/sources/event-mapper.js +2 -1
- package/dist/server/src/lib/hooks/sources/opencode/diff.js +3 -4
- package/dist/server/src/lib/hooks/sources/opencode/history.js +2 -1
- package/dist/server/src/lib/hooks/sources/opencode/launch-settings.js +2 -1
- package/dist/server/src/lib/hooks/sources/opencode/payloads.js +2 -1
- package/dist/server/src/lib/hooks/sources/opencode/ports.js +2 -1
- package/dist/server/src/lib/hooks/sources/opencode/subscription.js +4 -3
- package/dist/server/src/lib/hooks/sources/opencode/transcript.js +3 -16
- package/dist/server/src/lib/hooks/sources/opencode-v2/history.js +2 -1
- package/dist/server/src/lib/hooks/sources/opencode-v2/mappers.js +5 -4
- package/dist/server/src/lib/hooks/sources/opencode-v2/ports.js +2 -1
- package/dist/server/src/lib/hooks/sources/opencode-v2/subscription.js +3 -7
- package/dist/server/src/lib/hooks/sources/opencode-v2/usage.js +2 -1
- package/dist/server/src/lib/hooks/sources/pending-decisions.js +2 -1
- package/dist/server/src/lib/hooks/sources/registry.js +3 -2
- package/dist/server/src/lib/hooks/sources/transcript-history.js +262 -0
- package/dist/server/src/lib/hooks/sources/turn-body.js +31 -0
- package/dist/server/src/lib/hooks/tool-input-normalization-state.js +2 -2
- package/dist/server/src/lib/polling/antigravity-permission-receipts.js +2 -2
- package/dist/server/src/lib/polling/auto-yes-enter-fallback-state.js +142 -0
- package/dist/server/src/lib/polling/auto-yes-enter-fallback.js +187 -0
- package/dist/server/src/lib/polling/auto-yes-resolver.js +9 -3
- package/dist/server/src/lib/polling/auto-yes-suppression-reason.js +2 -0
- package/dist/server/src/lib/polling/auto-yes-suppression-state.js +2 -2
- package/dist/server/src/lib/polling/pending-scraped-response.js +190 -0
- package/dist/server/src/lib/polling/prompt-dedup-state.js +2 -2
- package/dist/server/src/lib/polling/prompt-dedup.js +2 -2
- package/dist/server/src/lib/polling/response-checker-dialog-gate.js +95 -0
- package/dist/server/src/lib/polling/response-checker-extraction-result.js +50 -0
- package/dist/server/src/lib/polling/response-checker-extraction-steps.js +670 -0
- package/dist/server/src/lib/polling/response-checker.js +641 -1142
- package/dist/server/src/lib/polling/response-dedup.js +3 -4
- package/dist/server/src/lib/polling/response-poller-constants.js +17 -0
- package/dist/server/src/lib/polling/response-poller-core.js +54 -20
- package/dist/server/src/lib/polling/startup-screen.js +142 -0
- package/dist/server/src/lib/polling/structured-history-gate.js +3 -2
- package/dist/server/src/lib/prompt-answer-semantic.js +178 -0
- package/dist/server/src/lib/prompt-answer-sender.js +5 -4
- package/dist/server/src/lib/push/failure-episode-state.js +2 -2
- package/dist/server/src/lib/push/notification-dedup.js +3 -4
- package/dist/server/src/lib/push/prompt-card-state.js +2 -2
- package/dist/server/src/lib/push/waiting-push-notifier.js +3 -4
- package/dist/server/src/lib/realtime/publisher-registry.js +3 -2
- package/dist/server/src/lib/realtime/terminal-broadcast.js +38 -5
- package/dist/server/src/lib/realtime/terminal-session-ownership.js +45 -0
- package/dist/server/src/lib/relay/relay-delivery.js +3 -2
- package/dist/server/src/lib/relay/relay-readiness.js +38 -1
- package/dist/server/src/lib/response-cleaner.js +24 -1
- package/dist/server/src/lib/response-extractor.js +16 -0
- package/dist/server/src/lib/schedule-manager.js +8 -10
- package/dist/server/src/lib/session/agent-event-ask-user-question.js +168 -0
- package/dist/server/src/lib/session/agent-event-awaiting-instruction.js +104 -0
- package/dist/server/src/lib/session/agent-event-dedup.js +539 -0
- package/dist/server/src/lib/session/agent-event-model.js +562 -0
- package/dist/server/src/lib/session/agent-event-record.js +10 -0
- package/dist/server/src/lib/session/agent-event-state.js +106 -1854
- package/dist/server/src/lib/session/agent-event-structured-state.js +109 -0
- package/dist/server/src/lib/session/agent-event-turn.js +811 -0
- package/dist/server/src/lib/session/agent-session-lifecycle.js +11 -2
- package/dist/server/src/lib/session/chat-turn-progress.js +322 -0
- package/dist/server/src/lib/session/claude-executor.js +45 -5
- package/dist/server/src/lib/session/claude-session.js +21 -65
- package/dist/server/src/lib/session/cli-session.js +17 -0
- package/dist/server/src/lib/session/current-output-builder.js +450 -1103
- package/dist/server/src/lib/session/current-output-history-writers.js +255 -0
- package/dist/server/src/lib/session/current-output-types.js +9 -0
- package/dist/server/src/lib/session/detection-divergence.js +55 -0
- package/dist/server/src/lib/session/global-session-constants.js +2 -13
- package/dist/server/src/lib/session/hook-turn-hold.js +102 -0
- package/dist/server/src/lib/session/layer-disagreement.js +2 -2
- package/dist/server/src/lib/session/opencode-session-store.js +2 -1
- package/dist/server/src/lib/session/prompt-view.js +26 -3
- package/dist/server/src/lib/session/prompt-waiting-composition.js +3 -2
- package/dist/server/src/lib/session/provisional-turn.js +3 -1
- package/dist/server/src/lib/session/send-user-message.js +1 -1
- package/dist/server/src/lib/session/session-starting-state.js +4 -6
- package/dist/server/src/lib/session/status-evidence-type.js +2 -0
- package/dist/server/src/lib/session/status-evidence.js +2 -2
- package/dist/server/src/lib/session/structured-status-merge.js +335 -0
- package/dist/server/src/lib/session/waiting-episode-state.js +3 -4
- package/dist/server/src/lib/session-cleanup.js +1 -5
- package/dist/server/src/lib/skills/install-plan.js +2 -1
- package/dist/server/src/lib/skills/snapshot-store.js +2 -2
- package/dist/server/src/lib/skills/uninstall-plan.js +2 -2
- package/dist/server/src/lib/timer-manager.js +6 -8
- package/dist/server/src/lib/tmux/geometry-delegation.js +3 -4
- package/dist/server/src/lib/tmux/legacy-session-alias.js +2 -1
- package/dist/server/src/lib/tmux/session-hooks.js +2 -1
- package/dist/server/src/lib/tmux/session-status-options.js +3 -3
- package/dist/server/src/lib/tmux/tmux-capture-cache.js +3 -2
- package/dist/server/src/lib/tmux/tmux.js +33 -59
- package/dist/server/src/lib/tui-accumulator.js +2 -2
- package/dist/server/src/lib/version-checker.js +6 -6
- package/dist/server/src/lib/ws-server.js +47 -11
- package/docs/en/user-guide/webapp-guide.md +27 -3
- package/package.json +1 -1
- package/release-notes/0.44.3.json +82 -0
- package/scripts/hooks/cmate-agent-event.sh +18 -0
- package/.next/server/chunks/1068.js +0 -1
- package/.next/server/chunks/4372.js +0 -5
- package/.next/server/chunks/6474.js +0 -14
- package/.next/server/chunks/967.js +0 -1
- package/.next/server/chunks/9798.js +0 -2
- package/.next/server/chunks/9882.js +0 -25
- package/.next/static/chunks/591-539fec878c9dec5e.js +0 -1
- package/.next/static/chunks/app/sessions/page-049e06335187aa91.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-2a81397e60f17e63.js +0 -1
- package/.next/static/css/38070d879efa1371.css +0 -1
- package/dist/server/src/lib/cli-tools/index.js +0 -41
- package/dist/server/src/lib/polling/global-session-poller.js +0 -140
- /package/.next/static/{QlCqLjorauDDBXPa-C7TK → tWwHQzmvc-rv9KKUtDWfQ}/_buildManifest.js +0 -0
- /package/.next/static/{QlCqLjorauDDBXPa-C7TK → tWwHQzmvc-rv9KKUtDWfQ}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MAX_PASTED_TEXT_RETRIES = exports.PASTED_TEXT_DETECT_DELAY = exports.PASTED_TEXT_PATTERN = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Pasted text pattern
|
|
6
|
+
*
|
|
7
|
+
* Claude CLI displays this when it detects multi-line text paste in the
|
|
8
|
+
* ink-based TextInput. The pattern matches the folded display format.
|
|
9
|
+
*
|
|
10
|
+
* @example "[Pasted text #1 +46 lines]"
|
|
11
|
+
* @see Issue #212, #163
|
|
12
|
+
* @designNote PASTE-001: Pattern matches the start of the indicator only.
|
|
13
|
+
* The line count (+XX lines) is variable, so we match the fixed prefix
|
|
14
|
+
* to minimize false negatives. False positive risk is low because
|
|
15
|
+
* "[Pasted text #" is a unique format generated by Claude CLI's ink renderer.
|
|
16
|
+
* @designNote PASTE-001-FP (SF-S4-002): When used in skipPatterns,
|
|
17
|
+
* line-level matching could filter legitimate response lines if Claude's
|
|
18
|
+
* answer text happens to contain "[Pasted text #". This is unlikely and
|
|
19
|
+
* acceptable -- only the affected line would be lost.
|
|
20
|
+
*/
|
|
21
|
+
exports.PASTED_TEXT_PATTERN = /\[Pasted text #\d+/;
|
|
22
|
+
/**
|
|
23
|
+
* Pasted text detection delay (milliseconds)
|
|
24
|
+
*
|
|
25
|
+
* Wait time after sendKeys for tmux buffer to reflect [Pasted text] display.
|
|
26
|
+
*
|
|
27
|
+
* @see Issue #212
|
|
28
|
+
* @designNote PASTE-002: 500ms is the empirically measured time for
|
|
29
|
+
* Claude CLI's ink rendering to complete. capturePane({ startLine: -10 })
|
|
30
|
+
* reads only the last 10 lines since [Pasted text] appears in the most
|
|
31
|
+
* recent few lines.
|
|
32
|
+
*/
|
|
33
|
+
exports.PASTED_TEXT_DETECT_DELAY = 500;
|
|
34
|
+
/**
|
|
35
|
+
* Pasted text detection max retries
|
|
36
|
+
*
|
|
37
|
+
* @see Issue #212
|
|
38
|
+
* @designNote PASTE-003: 3 retries x 500ms = max 1500ms additional delay.
|
|
39
|
+
* Typically resolves on the first attempt (+500ms).
|
|
40
|
+
*/
|
|
41
|
+
exports.MAX_PASTED_TEXT_RETRIES = 3;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isShellPaneCommand = isShellPaneCommand;
|
|
4
|
+
/** `#{pane_current_command}` values of an interactive shell, with tmux's `-` login prefix removed. */
|
|
5
|
+
const SHELL_PANE_COMMANDS = new Set(['sh', 'bash', 'zsh', 'fish', 'dash', 'ksh', 'tcsh', 'csh']);
|
|
6
|
+
/**
|
|
7
|
+
* Whether a pane's foreground command is a shell rather than an agent
|
|
8
|
+
* (Issue #3089). Claude Code shows up as `claude`, `node` or its version
|
|
9
|
+
* string (`2.1.287`), never as one of these, so a shell here after the agent
|
|
10
|
+
* was seen running means the agent has exited.
|
|
11
|
+
*
|
|
12
|
+
* @param command - `#{pane_current_command}` of the pane
|
|
13
|
+
*/
|
|
14
|
+
function isShellPaneCommand(command) {
|
|
15
|
+
return SHELL_PANE_COMMANDS.has(command.trim().replace(/^-/, ''));
|
|
16
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stripBoxDrawing = stripBoxDrawing;
|
|
4
|
+
/**
|
|
5
|
+
* Strip box-drawing border characters from CLI output.
|
|
6
|
+
* Gemini CLI wraps Action Required prompts in ╭─╮│╰─╯ borders.
|
|
7
|
+
* Removes │ (U+2502) prefix/suffix and border-only lines (╭╮╰╯─).
|
|
8
|
+
*
|
|
9
|
+
* @param str - Input string (typically after stripAnsi())
|
|
10
|
+
* @returns String with box-drawing borders removed
|
|
11
|
+
*/
|
|
12
|
+
function stripBoxDrawing(str) {
|
|
13
|
+
return str.split('\n').map(line => {
|
|
14
|
+
// Remove border-only lines (╭──╮, ╰──╯, │ only, ┃ only, ╹▀▀▀, █ scrollbar, etc.)
|
|
15
|
+
// U+2502 │ (light vertical), U+2503 ┃ (heavy vertical - OpenCode TUI)
|
|
16
|
+
// U+2579 ╹ (heavy up), U+2580 ▀ (upper half block - OpenCode separator)
|
|
17
|
+
// U+2588 █ (full block - OpenCode scrollbar)
|
|
18
|
+
if (/^[\u2502\u2503\u256D\u256E\u256F\u2570\u2500\u2579\u2580\u2588\s]+$/.test(line))
|
|
19
|
+
return '';
|
|
20
|
+
// Strip leading whitespace + │/┃ + optional space, trailing space + │/┃/█
|
|
21
|
+
// OpenCode TUI adds 2-space padding before ┃ borders (e.g., " ┃ content")
|
|
22
|
+
// OpenCode scrollbar █ appears at end of content lines
|
|
23
|
+
return line.replace(/^\s*[\u2502\u2503]\s?/, '').replace(/\s*[\u2502\u2503\u2588]$/, '');
|
|
24
|
+
}).join('\n');
|
|
25
|
+
}
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
19
|
exports.antigravityStatusDetector = exports.VERIFIED_AGAINST = void 0;
|
|
20
20
|
const cli_patterns_1 = require("../../cli-patterns");
|
|
21
|
+
const verdicts_1 = require("../verdicts");
|
|
21
22
|
const status_reason_1 = require("../../status-reason");
|
|
22
23
|
const live_region_1 = require("./live-region");
|
|
23
24
|
const run_detection_1 = require("../run-detection");
|
|
@@ -33,13 +34,7 @@ exports.VERIFIED_AGAINST = verified_against_1.ANTIGRAVITY_VERIFIED_AGAINST;
|
|
|
33
34
|
* puts NavigationButtons (and the chat surface's "drive it from the terminal"
|
|
34
35
|
* card) on screen, and what makes `wait` stop with exit 10 instead of hanging.
|
|
35
36
|
*/
|
|
36
|
-
const SELECTION_LIST_VERDICT =
|
|
37
|
-
status: 'waiting',
|
|
38
|
-
confidence: 'high',
|
|
39
|
-
reason: status_reason_1.STATUS_REASON.ANTIGRAVITY_SELECTION_LIST,
|
|
40
|
-
hasActivePrompt: false,
|
|
41
|
-
evidence: 'positive',
|
|
42
|
-
};
|
|
37
|
+
const SELECTION_LIST_VERDICT = (0, verdicts_1.positiveVerdict)('waiting', status_reason_1.STATUS_REASON.ANTIGRAVITY_SELECTION_LIST);
|
|
43
38
|
/**
|
|
44
39
|
* How close to the bottom of the content the survey row must be to count as
|
|
45
40
|
* open: itself, a blank row and the `? for shortcuts` status row.
|
|
@@ -166,14 +161,7 @@ exports.antigravityStatusDetector = (0, run_detection_1.createToolStatusDetector
|
|
|
166
161
|
if ((0, cli_patterns_1.isAntigravityNumberedDialog)(text)) {
|
|
167
162
|
const promptDetection = (0, dialog_1.detectAntigravityNumberedDialogPrompt)(text);
|
|
168
163
|
if (promptDetection !== null) {
|
|
169
|
-
return
|
|
170
|
-
status: 'waiting',
|
|
171
|
-
confidence: 'high',
|
|
172
|
-
reason: status_reason_1.STATUS_REASON.PROMPT_DETECTED,
|
|
173
|
-
hasActivePrompt: true,
|
|
174
|
-
evidence: 'positive',
|
|
175
|
-
promptDetection,
|
|
176
|
-
};
|
|
164
|
+
return (0, verdicts_1.activePromptVerdict)(status_reason_1.STATUS_REASON.PROMPT_DETECTED, promptDetection);
|
|
177
165
|
}
|
|
178
166
|
return {
|
|
179
167
|
status: 'running',
|
|
@@ -194,13 +182,7 @@ exports.antigravityStatusDetector = (0, run_detection_1.createToolStatusDetector
|
|
|
194
182
|
// truth: "esc to cancel" + braille spinner / "Generating..." while running,
|
|
195
183
|
// "? for shortcuts" when idle. Resolve running explicitly here first, then idle.
|
|
196
184
|
if ((0, cli_patterns_1.detectThinking)('antigravity', 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
|
-
};
|
|
185
|
+
return (0, verdicts_1.positiveVerdict)('running', status_reason_1.STATUS_REASON.THINKING_INDICATOR);
|
|
204
186
|
}
|
|
205
187
|
// Idle: bare "> " input prompt visible and the response has completed.
|
|
206
188
|
//
|
|
@@ -214,13 +196,7 @@ exports.antigravityStatusDetector = (0, run_detection_1.createToolStatusDetector
|
|
|
214
196
|
// first, so a generating pane in those modes is still `running`.
|
|
215
197
|
const { promptPattern } = (0, cli_patterns_1.getCliToolPatterns)('antigravity');
|
|
216
198
|
if (promptPattern.test(frame.lastLines)) {
|
|
217
|
-
return
|
|
218
|
-
status: 'ready',
|
|
219
|
-
confidence: 'high',
|
|
220
|
-
reason: status_reason_1.STATUS_REASON.INPUT_PROMPT,
|
|
221
|
-
hasActivePrompt: false,
|
|
222
|
-
evidence: 'positive',
|
|
223
|
-
};
|
|
199
|
+
return (0, verdicts_1.positiveVerdict)('ready', status_reason_1.STATUS_REASON.INPUT_PROMPT);
|
|
224
200
|
}
|
|
225
201
|
return null;
|
|
226
202
|
},
|
|
@@ -69,6 +69,7 @@ const cli_patterns_1 = require("../../cli-patterns");
|
|
|
69
69
|
const prompt_detect_multiple_choice_1 = require("../../prompt-detect-multiple-choice");
|
|
70
70
|
const tui_detection_frame_1 = require("../../tui-detection-frame");
|
|
71
71
|
const dialog_block_1 = require("../dialog-block");
|
|
72
|
+
const truncate_raw_content_1 = require("../../truncate-raw-content");
|
|
72
73
|
/**
|
|
73
74
|
* How many non-blank rows above option 1 may be searched for the question.
|
|
74
75
|
*
|
|
@@ -100,20 +101,6 @@ const TOOL_CALL_ROW_PATTERN = /^\s*●\s/;
|
|
|
100
101
|
const RULE_ROW_PATTERN = /^\s*─{3,}\s*$/;
|
|
101
102
|
/** A row that asks something — the shape the question row takes on every measured dialog. */
|
|
102
103
|
const QUESTION_ROW_PATTERN = /[??]\s*$/;
|
|
103
|
-
/**
|
|
104
|
-
* The same tail limits `prompt-detector.ts` applies to `rawContent`
|
|
105
|
-
* (`RAW_CONTENT_MAX_LINES` / `RAW_CONTENT_MAX_CHARS`), restated because that
|
|
106
|
-
* helper is private to it. A prompt row stores this text as its message body,
|
|
107
|
-
* so an unbounded 1000-row pane must not go in.
|
|
108
|
-
*/
|
|
109
|
-
const RAW_CONTENT_MAX_LINES = 200;
|
|
110
|
-
const RAW_CONTENT_MAX_CHARS = 5000;
|
|
111
|
-
function truncateRawContent(content) {
|
|
112
|
-
const lines = content.split('\n');
|
|
113
|
-
const tail = lines.length > RAW_CONTENT_MAX_LINES ? lines.slice(-RAW_CONTENT_MAX_LINES) : lines;
|
|
114
|
-
const joined = tail.join('\n');
|
|
115
|
-
return joined.length > RAW_CONTENT_MAX_CHARS ? joined.slice(-RAW_CONTENT_MAX_CHARS) : joined;
|
|
116
|
-
}
|
|
117
104
|
/**
|
|
118
105
|
* Read agy's numbered dialog off ANSI-stripped rows.
|
|
119
106
|
*
|
|
@@ -235,5 +222,5 @@ function detectAntigravityNumberedDialogPrompt(text) {
|
|
|
235
222
|
// `Requesting permission for:` block and in the labels is judged and
|
|
236
223
|
// nothing from an earlier, already-answered approval is.
|
|
237
224
|
approvalTarget: (0, prompt_detect_multiple_choice_1.joinApprovalTarget)(lines, (0, prompt_detect_multiple_choice_1.findApprovalContextStart)(lines, dialog.questionRow), dialog.footerRow),
|
|
238
|
-
}, normalized, truncateRawContent);
|
|
225
|
+
}, normalized, truncate_raw_content_1.truncateRawContent);
|
|
239
226
|
}
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Antigravity (agy) pattern constants and helpers 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.ANTIGRAVITY_SKIP_PATTERNS = exports.ANTIGRAVITY_SURVEY_PATTERN = exports.ANTIGRAVITY_DIALOG_MAX_ROWS = exports.ANTIGRAVITY_DIALOG_BOUNDARY_PATTERN = exports.ANTIGRAVITY_SWITCH_MODEL_HEADER_PATTERN = exports.ANTIGRAVITY_NUMBERED_OPTION_PATTERN = exports.ANTIGRAVITY_NAVIGATE_FOOTER_PATTERN = exports.ANTIGRAVITY_SELECTION_LIST_PATTERN = exports.ANTIGRAVITY_SEPARATOR_PATTERN = exports.ANTIGRAVITY_THINKING_PATTERN = exports.ANTIGRAVITY_PROMPT_PATTERN = exports.ANTIGRAVITY_COMPOSER_MODE_BANNER_PATTERN = exports.ANTIGRAVITY_COMPOSER_MODE_BANNER_SOURCE = void 0;
|
|
8
|
+
exports.locateAntigravityDialogRegion = locateAntigravityDialogRegion;
|
|
9
|
+
exports.isAntigravityNumberedDialog = isAntigravityNumberedDialog;
|
|
10
|
+
const pasted_text_1 = require("../../shared/pasted-text");
|
|
11
|
+
/**
|
|
12
|
+
* The banner agy paints INTO its empty input box while a non-default permission
|
|
13
|
+
* mode is on (Issue #2592).
|
|
14
|
+
*
|
|
15
|
+
* Measured on agy 1.2.4 in the #2592 UAT
|
|
16
|
+
* (`tests/fixtures/agent-mode-2592/antigravity-{accept-edits,plan}.txt`, row 18,
|
|
17
|
+
* between the box's two rules):
|
|
18
|
+
*
|
|
19
|
+
* `> Accept-edits mode: file edits auto-approved (shift+tab to cycle)`
|
|
20
|
+
* `> Plan mode: research & plan only (shift+tab to cycle)`
|
|
21
|
+
*
|
|
22
|
+
* It takes the place of the bare `>` an empty box shows in default — it is a
|
|
23
|
+
* placeholder, not typed text — so a reader that only accepts the bare glyph
|
|
24
|
+
* reads an idle accept-edits / plan pane as "no input box at all". Before this
|
|
25
|
+
* pattern existed that is exactly what happened: the status detector fell through
|
|
26
|
+
* to its `default` floor (`running` + `isUnclassifiedActive`), `commandmate ls`
|
|
27
|
+
* showed a resting agent as running, `wait` never completed, and
|
|
28
|
+
* `isAntigravityReady` refused every send. #2592 made those two modes one click
|
|
29
|
+
* away, so the hole had to close with it.
|
|
30
|
+
*
|
|
31
|
+
* The structure is matched rather than the two sentences: `<Name> mode: <text>
|
|
32
|
+
* (shift+tab to cycle)`, anchored on the key hint agy ends every banner with, so
|
|
33
|
+
* a third mode needs no edit here. What stays out is anything a user could have
|
|
34
|
+
* typed into the box — the trailing hint is the part nobody types.
|
|
35
|
+
*
|
|
36
|
+
* Whole-row, no `/g`, no nested quantifiers (`[^\n]*` is followed by a literal).
|
|
37
|
+
*/
|
|
38
|
+
exports.ANTIGRAVITY_COMPOSER_MODE_BANNER_SOURCE = '>[^\\S\\n]+[A-Z][A-Za-z-]*[^\\S\\n]mode:[^\\n]*\\(shift\\+tab to cycle\\)[^\\S\\n]*';
|
|
39
|
+
/** {@link ANTIGRAVITY_COMPOSER_MODE_BANNER_SOURCE} as a single-row pattern. */
|
|
40
|
+
exports.ANTIGRAVITY_COMPOSER_MODE_BANNER_PATTERN = new RegExp(`^${exports.ANTIGRAVITY_COMPOSER_MODE_BANNER_SOURCE}$`, 'm');
|
|
41
|
+
/**
|
|
42
|
+
* Antigravity (agy) interactive REPL prompt pattern (Issue #988)
|
|
43
|
+
* agy shows a bare ">" input box line when waiting for user input. The input box
|
|
44
|
+
* is always rendered (even while generating), so prompt presence alone does not
|
|
45
|
+
* mean "ready" — running vs idle is resolved together with the thinking pattern /
|
|
46
|
+
* footer status bar in status-detector.ts. (Confirmed on machine: line is "> ".)
|
|
47
|
+
*
|
|
48
|
+
* Issue #2592: or the mode banner that replaces the bare glyph in an EMPTY box
|
|
49
|
+
* while accept-edits / plan is on ({@link ANTIGRAVITY_COMPOSER_MODE_BANNER_PATTERN}).
|
|
50
|
+
* Every consumer of this pattern is asking "is agy's input box drawn and empty?"
|
|
51
|
+
* — the idle rule in `detection/tools/antigravity/detect.ts`, the survey guard
|
|
52
|
+
* beside it, `isAntigravityReady` (the send gate) and the liveness probe — and
|
|
53
|
+
* the answer does not depend on the permission mode, so the banner is folded in
|
|
54
|
+
* here once rather than at each of them.
|
|
55
|
+
*/
|
|
56
|
+
exports.ANTIGRAVITY_PROMPT_PATTERN = new RegExp(`^(?:>\\s*|${exports.ANTIGRAVITY_COMPOSER_MODE_BANNER_SOURCE})$`, 'm');
|
|
57
|
+
/**
|
|
58
|
+
* Antigravity (agy) thinking/processing pattern (Issue #988)
|
|
59
|
+
* While generating, agy shows a braille spinner with "Generating..." in the
|
|
60
|
+
* conversation area and an "esc to cancel" hint in the footer status bar. When
|
|
61
|
+
* idle the footer shows "? for shortcuts" instead, so "esc to cancel" is a
|
|
62
|
+
* reliable running signal. Braille spinner chars (U+2800-U+28FF) also matched.
|
|
63
|
+
*/
|
|
64
|
+
exports.ANTIGRAVITY_THINKING_PATTERN = /[\u2800-\u28FF]|Generating|esc to cancel/;
|
|
65
|
+
/**
|
|
66
|
+
* Antigravity (agy) separator pattern (Issue #988)
|
|
67
|
+
* agy draws turn separators and the input-box border with runs of U+2500 (─).
|
|
68
|
+
*/
|
|
69
|
+
exports.ANTIGRAVITY_SEPARATOR_PATTERN = /^─{3,}$/m;
|
|
70
|
+
/**
|
|
71
|
+
* Antigravity (agy) selection list pattern (Issue #995, broadened in #997)
|
|
72
|
+
* Detects agy's interactive arrow-key selection TUIs (e.g. the "Switch Model"
|
|
73
|
+
* model picker, the "Do you want to proceed?" permission-approval menu). Their
|
|
74
|
+
* footer status bar renders "esc to cancel", which ANTIGRAVITY_THINKING_PATTERN
|
|
75
|
+
* also matches, so this pattern must be checked BEFORE thinking detection in
|
|
76
|
+
* status-detector.ts to keep the selection screen from being misreported as
|
|
77
|
+
* "generating".
|
|
78
|
+
*
|
|
79
|
+
* Matches (either is sufficient):
|
|
80
|
+
* - The "Switch Model" header of the model picker.
|
|
81
|
+
* - The "↑/↓ Navigate" arrow-key navigation hint, common to every agy
|
|
82
|
+
* selection TUI footer. Issue #995 originally required an "enter Select"
|
|
83
|
+
* hint too, but the permission-approval menu footer is
|
|
84
|
+
* "↑/↓ Navigate · tab Amend · ctrl+g … · ctrl+r Review" (no "enter Select"),
|
|
85
|
+
* so #997 relaxes this to the "↑/↓ Navigate" footer alone. This covers the
|
|
86
|
+
* Switch Model picker, permission-approval menus, and future agy selection
|
|
87
|
+
* TUIs in one shot, while staying agy-specific (the cliToolId === 'antigravity'
|
|
88
|
+
* guard in status-detector.ts keeps other tools unaffected).
|
|
89
|
+
*
|
|
90
|
+
* No /g flag (S4-5: would make test() stateful).
|
|
91
|
+
* No `.*` at all (SEC4-001: ReDoS safe — strictly safer than the #995 form).
|
|
92
|
+
*/
|
|
93
|
+
exports.ANTIGRAVITY_SELECTION_LIST_PATTERN = /Switch Model|↑\/↓\s*Navigate/m;
|
|
94
|
+
/**
|
|
95
|
+
* The `↑/↓ Navigate` hint agy draws under every arrow-key screen it owns
|
|
96
|
+
* (Issue #2364; measured on agy 1.1.27, pane 200x1000, 2026-09-06).
|
|
97
|
+
*
|
|
98
|
+
* The same token {@link ANTIGRAVITY_SELECTION_LIST_PATTERN} matches, split out
|
|
99
|
+
* because the numbered-dialog reader anchors on THIS row and reads upward from
|
|
100
|
+
* it. It is the one thing all four measured agy dialogs share — the `Do you want
|
|
101
|
+
* to proceed?` command menu, the `Allow creation of this file?` file menu, the
|
|
102
|
+
* folder-trust screen and the `/model` picker all end on it — while the words
|
|
103
|
+
* after it differ on every one (`tab Amend · f full diff`, `tab Amend · ctrl+g
|
|
104
|
+
* edit/expand command`, `enter Confirm`, `←/→ Effort enter Select`).
|
|
105
|
+
*/
|
|
106
|
+
exports.ANTIGRAVITY_NAVIGATE_FOOTER_PATTERN = /↑\/↓\s*Navigate/;
|
|
107
|
+
/**
|
|
108
|
+
* One numbered option row of agy's dialogs: `> 1. Yes`, ` 4. No`,
|
|
109
|
+
* ` 2. No, deny creation`.
|
|
110
|
+
*
|
|
111
|
+
* The `>` gutter marks the highlighted row and is optional, because only one
|
|
112
|
+
* of the rows carries it.
|
|
113
|
+
*/
|
|
114
|
+
exports.ANTIGRAVITY_NUMBERED_OPTION_PATTERN = /^\s*>?\s*\d+\.\s+\S/m;
|
|
115
|
+
/**
|
|
116
|
+
* The header of agy's `/model` picker (Issue #995).
|
|
117
|
+
*
|
|
118
|
+
* Kept as its own exclusion even though the picker's rows already fail the
|
|
119
|
+
* numbered-row test: the Issue #2364 rule is written as "footer + numbered rows
|
|
120
|
+
* + NOT the Switch Model picker", and the picker is the one agy screen whose
|
|
121
|
+
* misreading has a measured cost (#995: NavigationButtons vanished).
|
|
122
|
+
*/
|
|
123
|
+
exports.ANTIGRAVITY_SWITCH_MODEL_HEADER_PATTERN = /^\s*Switch Model\s*$/;
|
|
124
|
+
/**
|
|
125
|
+
* A row that ends the dialog block when reading UPWARD from the footer
|
|
126
|
+
* (Issue #2364).
|
|
127
|
+
*
|
|
128
|
+
* Everything agy draws above its own dialog panel carries one of these:
|
|
129
|
+
*
|
|
130
|
+
* - a horizontal rule (the turn separator, the input-box border, or the rule
|
|
131
|
+
* under the `Command` / `Create file` panel header);
|
|
132
|
+
* - a `>`-prefixed row that is not a numbered option — the echoed user prompt,
|
|
133
|
+
* the bare composer, the highlighted row of an UNNUMBERED picker (`> Gemini
|
|
134
|
+
* 3.8 Flash`, `> Yes, I trust this folder`) or of the slash-command popup
|
|
135
|
+
* (`> /add-dir Add a directory …`);
|
|
136
|
+
* - a `●` tool-call row, a `⎿` tool-result row or a `▸ Thought for …` row.
|
|
137
|
+
*
|
|
138
|
+
* Bounding the block at the nearest one is what keeps a numbered list in the
|
|
139
|
+
* MODEL'S PROSE, sitting in the transcript above an open picker or popup, from
|
|
140
|
+
* being adopted as that screen's options. Wrapped option labels never start
|
|
141
|
+
* with any of these on the measured frames: agy prints the command text inside
|
|
142
|
+
* the quotes of `… commands that start with '<cmd>'`, indented under the row
|
|
143
|
+
* that opened it.
|
|
144
|
+
*
|
|
145
|
+
* `stripBoxDrawing` blanks the rule rows before the response poller's copy of
|
|
146
|
+
* the frame reaches this rule; the `●` / `>` rows survive it, so the block is
|
|
147
|
+
* bounded the same way on both paths.
|
|
148
|
+
*/
|
|
149
|
+
exports.ANTIGRAVITY_DIALOG_BOUNDARY_PATTERN = /^\s*(?:─{3,}\s*$|[●⎿▸]|>(?!\s*\d+\.\s+\S))/;
|
|
150
|
+
/**
|
|
151
|
+
* How many rows above the `↑/↓ Navigate` footer the dialog block may reach.
|
|
152
|
+
*
|
|
153
|
+
* The tallest measured frame (`dialog-bash-wrapped.txt`: header, rule,
|
|
154
|
+
* `Requesting permission for:`, a four-row command, the question and four
|
|
155
|
+
* options of which two wrap onto three rows each) spans 18 rows; the cap leaves
|
|
156
|
+
* room for a longer command without letting a boundary-free frame drag the
|
|
157
|
+
* whole transcript into the block.
|
|
158
|
+
*/
|
|
159
|
+
exports.ANTIGRAVITY_DIALOG_MAX_ROWS = 60;
|
|
160
|
+
/**
|
|
161
|
+
* agy's post-answer survey row (Issue #2364).
|
|
162
|
+
*
|
|
163
|
+
* Drawn once, in place of the composer, after some tool decisions:
|
|
164
|
+
*
|
|
165
|
+
* ```
|
|
166
|
+
* How's the CLI experience so far? Help us improve:
|
|
167
|
+
* [1] Good [2] Fine [3] Bad [0] Skip
|
|
168
|
+
*
|
|
169
|
+
* ? for shortcuts …
|
|
170
|
+
* ```
|
|
171
|
+
*
|
|
172
|
+
* Every option sits on ONE row in `[N] label` form and the screen takes a
|
|
173
|
+
* typed digit, not the arrow keys; there is no `↑/↓ Navigate` footer and no bare
|
|
174
|
+
* `>` composer, so before this pattern existed the frame reached the `default`
|
|
175
|
+
* floor — `running`, with the chat surface showing "generating" over a screen
|
|
176
|
+
* that was waiting for a keypress. Anchored to the whole row.
|
|
177
|
+
*/
|
|
178
|
+
exports.ANTIGRAVITY_SURVEY_PATTERN = /^\s*\[1\]\s*Good\s+\[2\]\s*Fine\s+\[3\]\s*Bad\s+\[0\]\s*Skip\s*$/m;
|
|
179
|
+
/**
|
|
180
|
+
* Find the rows between the last boundary and the last `↑/↓ Navigate` footer
|
|
181
|
+
* (Issue #2364).
|
|
182
|
+
*
|
|
183
|
+
* The footer is searched from the bottom, so an older dialog still in the
|
|
184
|
+
* scrollback above a newer one is never the one read. Returns null when the
|
|
185
|
+
* frame has no footer at all.
|
|
186
|
+
*
|
|
187
|
+
* Also null when agy's input box is drawn BELOW that footer (Issue #2845): agy
|
|
188
|
+
* paints no `>` composer while a dialog is open — the dialog takes its place —
|
|
189
|
+
* so a footer with a composer under it is the model's reply quoting a dialog,
|
|
190
|
+
* or a dialog left in the scrollback, not a screen waiting for a keypress. It is
|
|
191
|
+
* the same reading `isAntigravitySurveyOpen` gives the survey row (#2364), and
|
|
192
|
+
* the composer is recognised by the same {@link ANTIGRAVITY_PROMPT_PATTERN}.
|
|
193
|
+
*
|
|
194
|
+
* @param lines - ANSI-stripped rows, box drawing optional
|
|
195
|
+
*/
|
|
196
|
+
function locateAntigravityDialogRegion(lines) {
|
|
197
|
+
let footer = -1;
|
|
198
|
+
for (let i = lines.length - 1; i >= 0; i--) {
|
|
199
|
+
if (exports.ANTIGRAVITY_NAVIGATE_FOOTER_PATTERN.test(lines[i])) {
|
|
200
|
+
footer = i;
|
|
201
|
+
break;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
if (footer < 0)
|
|
205
|
+
return null;
|
|
206
|
+
for (let i = footer + 1; i < lines.length; i++) {
|
|
207
|
+
if (exports.ANTIGRAVITY_PROMPT_PATTERN.test(lines[i]))
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
210
|
+
const floor = Math.max(0, footer - exports.ANTIGRAVITY_DIALOG_MAX_ROWS);
|
|
211
|
+
let start = floor;
|
|
212
|
+
for (let i = footer - 1; i >= floor; i--) {
|
|
213
|
+
if (exports.ANTIGRAVITY_DIALOG_BOUNDARY_PATTERN.test(lines[i])) {
|
|
214
|
+
start = i + 1;
|
|
215
|
+
break;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return { start, footer };
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Is this frame one of agy's NUMBERED dialogs rather than one of its
|
|
222
|
+
* arrow-key-only pickers? (Issue #2270, re-measured by Issue #2364)
|
|
223
|
+
*
|
|
224
|
+
* Both kinds of screen share the `↑/↓ Navigate` footer that
|
|
225
|
+
* {@link ANTIGRAVITY_SELECTION_LIST_PATTERN} matches, which is why #997 could
|
|
226
|
+
* widen that pattern to cover the permission menu — and why the menu then
|
|
227
|
+
* resolved as `antigravity_selection_list`, `hasActivePrompt: false`. On the
|
|
228
|
+
* chat surface that reads as "a selection list is open, drive it from the
|
|
229
|
+
* terminal": the arrow buttons can only Enter the highlighted option 1, so
|
|
230
|
+
* options 2-4 became unreachable, while the poller and the push notification
|
|
231
|
+
* described the very same frame as a `multiple_choice` prompt.
|
|
232
|
+
*
|
|
233
|
+
* #2270 told the two apart by the question line, `Do you want to proceed?`,
|
|
234
|
+
* because that was the one dialog it had measured. #2364 measured a second one
|
|
235
|
+
* — agy 1.1.27's file-creation menu asks `Allow creation of this file?` above
|
|
236
|
+
* `1. Yes, allow creation` / `2. No, deny creation` — and it fell straight back
|
|
237
|
+
* into the selection-list reading. So the rule is now about the STRUCTURE the
|
|
238
|
+
* dialogs share and the pickers lack:
|
|
239
|
+
*
|
|
240
|
+
* - the `↑/↓ Navigate` footer,
|
|
241
|
+
* - at least two `N. label` rows between the nearest boundary row and that
|
|
242
|
+
* footer ({@link ANTIGRAVITY_DIALOG_BOUNDARY_PATTERN}), and
|
|
243
|
+
* - no `Switch Model` header in that region.
|
|
244
|
+
*
|
|
245
|
+
* The Switch Model picker, the folder-trust screen and the slash-command popup
|
|
246
|
+
* all draw unnumbered rows (`> Gemini 3.8 Flash`, `> Yes, I trust this folder`,
|
|
247
|
+
* `> /add-dir …`), so they keep the #995 reading — and because a `>` row that
|
|
248
|
+
* is not numbered is itself a boundary, a numbered list in the transcript above
|
|
249
|
+
* one of them cannot be counted.
|
|
250
|
+
*
|
|
251
|
+
* True here means "hand the frame to the agy dialog reader"
|
|
252
|
+
* (`tools/antigravity/dialog.ts`), never "this is a prompt": a frame that
|
|
253
|
+
* passes this test and still fails to read is published as an unclassified
|
|
254
|
+
* frame, not as a selection list and never as "generating".
|
|
255
|
+
*
|
|
256
|
+
* Callers pass the same text they hand {@link ANTIGRAVITY_SELECTION_LIST_PATTERN}.
|
|
257
|
+
*/
|
|
258
|
+
function isAntigravityNumberedDialog(text) {
|
|
259
|
+
const lines = text.split('\n');
|
|
260
|
+
const region = locateAntigravityDialogRegion(lines);
|
|
261
|
+
if (region === null)
|
|
262
|
+
return false;
|
|
263
|
+
let numberedRows = 0;
|
|
264
|
+
for (let i = region.start; i < region.footer; i++) {
|
|
265
|
+
const line = lines[i];
|
|
266
|
+
if (exports.ANTIGRAVITY_SWITCH_MODEL_HEADER_PATTERN.test(line))
|
|
267
|
+
return false;
|
|
268
|
+
if (exports.ANTIGRAVITY_NUMBERED_OPTION_PATTERN.test(line))
|
|
269
|
+
numberedRows++;
|
|
270
|
+
}
|
|
271
|
+
return numberedRows >= 2;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Antigravity (agy) skip patterns for response cleaning (Issue #988)
|
|
275
|
+
* Filters turn/input-box separators, the bare ">" input prompt, the idle status
|
|
276
|
+
* bar ("? for shortcuts ... <model>"), the thinking footer/spinner, banner block
|
|
277
|
+
* art, and pasted-text markers from extracted responses.
|
|
278
|
+
*/
|
|
279
|
+
exports.ANTIGRAVITY_SKIP_PATTERNS = [
|
|
280
|
+
exports.ANTIGRAVITY_SEPARATOR_PATTERN, // Turn + input-box separators (─ runs)
|
|
281
|
+
/^>\s*$/, // Bare input prompt line
|
|
282
|
+
/^\?\s+for\s+shortcuts/, // Idle status bar (model name follows on the same line)
|
|
283
|
+
exports.ANTIGRAVITY_THINKING_PATTERN, // Spinner / Generating / "esc to cancel" footer
|
|
284
|
+
/[▄▀█▌▐]/, // Banner block art (defensive; normally above the user-prompt anchor)
|
|
285
|
+
pasted_text_1.PASTED_TEXT_PATTERN, // [Pasted text #N +XX lines]
|
|
286
|
+
];
|
|
@@ -14,6 +14,7 @@ exports.readIdleEvidence = readIdleEvidence;
|
|
|
14
14
|
const cli_patterns_1 = require("../../cli-patterns");
|
|
15
15
|
const composer_text_1 = require("../../composer-text");
|
|
16
16
|
const prompt_detect_multiple_choice_1 = require("../../prompt-detect-multiple-choice");
|
|
17
|
+
const verdicts_1 = require("../verdicts");
|
|
17
18
|
const status_reason_1 = require("../../status-reason");
|
|
18
19
|
const prompt_1 = require("./prompt");
|
|
19
20
|
const frame_1 = require("../frame");
|
|
@@ -135,13 +136,7 @@ exports.claudeStatusDetector = (0, run_detection_1.createToolStatusDetector)({
|
|
|
135
136
|
// Read only the rows at or below the input box (Issue #2847): a footer quoted in the reply
|
|
136
137
|
// above it is conversation, not a picker.
|
|
137
138
|
if (cli_patterns_1.CLAUDE_SELECTION_LIST_FOOTER.test(selectionFooterRows(frame))) {
|
|
138
|
-
return
|
|
139
|
-
status: 'waiting',
|
|
140
|
-
confidence: 'high',
|
|
141
|
-
reason: status_reason_1.STATUS_REASON.CLAUDE_SELECTION_LIST,
|
|
142
|
-
hasActivePrompt: false,
|
|
143
|
-
evidence: 'positive',
|
|
144
|
-
};
|
|
139
|
+
return (0, verdicts_1.positiveVerdict)('waiting', status_reason_1.STATUS_REASON.CLAUDE_SELECTION_LIST);
|
|
145
140
|
}
|
|
146
141
|
return null;
|
|
147
142
|
},
|
|
@@ -159,13 +154,7 @@ exports.claudeStatusDetector = (0, run_detection_1.createToolStatusDetector)({
|
|
|
159
154
|
// signal and does not reintroduce the Issue #188 spinner-summary false positive (only the
|
|
160
155
|
// spinner+ellipsis branch is restricted to the 5-line window).
|
|
161
156
|
if (cli_patterns_1.CLAUDE_INTERRUPT_HINT_PATTERN.test(frame.lastLines)) {
|
|
162
|
-
return
|
|
163
|
-
status: 'running',
|
|
164
|
-
confidence: 'high',
|
|
165
|
-
reason: status_reason_1.STATUS_REASON.THINKING_INDICATOR,
|
|
166
|
-
hasActivePrompt: false,
|
|
167
|
-
evidence: 'positive',
|
|
168
|
-
};
|
|
157
|
+
return (0, verdicts_1.positiveVerdict)('running', status_reason_1.STATUS_REASON.THINKING_INDICATOR);
|
|
169
158
|
}
|
|
170
159
|
return null;
|
|
171
160
|
},
|