commandmate 0.46.1 → 0.47.0
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 +223 -216
- package/.next/app-path-routes-manifest.json +19 -18
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +9 -9
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +8 -0
- package/.next/server/app/_not-found/page_client-reference-manifest.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_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 +4 -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_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_client-reference-manifest.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 -7
- package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
- package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/vapid/route.js +1 -7
- package/.next/server/app/api/push/vapid/route.js.nft.json +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_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_client-reference-manifest.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_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_client-reference-manifest.js +1 -1
- 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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +1 -1
- 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 +1 -1
- 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_client-reference-manifest.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_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_client-reference-manifest.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_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_client-reference-manifest.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_client-reference-manifest.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_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_client-reference-manifest.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_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_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_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_client-reference-manifest.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_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_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]/prompt-response/strict/route.js +1 -0
- package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route_client-reference-manifest.js +1 -0
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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_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_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_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_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_client-reference-manifest.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_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.js.nft.json +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.js.nft.json +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 +19 -18
- package/.next/server/chunks/1210.js +1 -1
- package/.next/server/chunks/1559.js +1 -1
- package/.next/server/chunks/1601.js +7 -0
- package/.next/server/chunks/1836.js +1 -0
- package/.next/server/chunks/1945.js +14 -0
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2404.js +1 -1
- package/.next/server/chunks/2422.js +1 -0
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/2460.js +1 -1
- package/.next/server/chunks/2534.js +1 -1
- package/.next/server/chunks/3241.js +1 -1
- package/.next/server/chunks/{3077.js → 4194.js} +12 -12
- package/.next/server/chunks/4207.js +1 -1
- package/.next/server/chunks/4248.js +1 -1
- package/.next/server/chunks/5209.js +1 -1
- package/.next/server/chunks/5292.js +1 -1
- package/.next/server/chunks/5595.js +1 -1
- package/.next/server/chunks/5845.js +1 -1
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6401.js +1 -1
- package/.next/server/chunks/{2283.js → 6486.js} +7 -7
- package/.next/server/chunks/6722.js +1 -1
- package/.next/server/chunks/6781.js +1 -1
- package/.next/server/chunks/6793.js +2 -2
- package/.next/server/chunks/7166.js +19 -0
- package/.next/server/chunks/7905.js +1 -1
- package/.next/server/chunks/8581.js +10 -10
- package/.next/server/chunks/8728.js +2 -2
- package/.next/server/chunks/8791.js +1 -1
- package/.next/server/chunks/8918.js +4 -4
- package/.next/server/chunks/9199.js +1 -0
- package/.next/server/chunks/936.js +1 -0
- package/.next/server/chunks/9390.js +1 -1
- package/.next/server/chunks/9540.js +1 -0
- package/.next/server/chunks/9627.js +1 -1
- package/.next/server/chunks/9731.js +3 -3
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/{2407-9703c569370b8a9d.js → 2407-b2f524f99f7fc353.js} +1 -1
- package/.next/static/chunks/5371-a549a0d2c2044d41.js +1 -0
- package/.next/static/chunks/{5794-4eee51ff1e878aa6.js → 5794-80ac3f06f098ea29.js} +1 -1
- package/.next/static/chunks/602-1c1488959215e140.js +1 -0
- package/.next/static/chunks/9079-24f9fa549ed298f1.js +1 -0
- package/.next/static/chunks/app/api/agents/update/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
- package/.next/static/chunks/app/api/agents/versions/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
- package/.next/static/chunks/app/api/app/release-notes/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
- package/.next/static/chunks/app/api/app/update/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/app/update-check/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
- package/.next/static/chunks/app/api/auth/login/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/auth/status/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/capabilities/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/status/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/external-apps/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/fs/browse/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/fs/recent-paths/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/hooks/agent-event/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/hooks/claude-done/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/hooks/permission-request/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/metrics/vibe/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/ollama/models/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/push/escalation/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/push/subscriptions/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/push/vapid/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/relays/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/remote/pair/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/repositories/excluded/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/repositories/restore/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/repositories/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/repositories/scan/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/repositories/sync/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/repositories/validate-path/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/settings/default-agents/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/settings/default-surface-mode/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/sidebar/group-order/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/skills/[id]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/skills/installations/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/skills/operations/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/skills/reindex/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/skills/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/slash-commands/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/templates/[id]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/templates/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/layout-419eaf7de340f4ab.js +1 -0
- package/.next/static/chunks/app/manifest.webmanifest/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/proxy/[...path]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/sessions/page-e02f1adb1d1c1ccc.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/layout-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-45294052ee3032f1.js +1 -0
- package/.next/trace +13 -13
- package/.next/types/app/api/worktrees/[id]/prompt-response/strict/route.ts +347 -0
- package/.next/types/routes.d.ts +2 -1
- package/.next/types/validator.ts +9 -0
- package/dist/cli/commands/auto-yes.d.ts +19 -0
- package/dist/cli/commands/auto-yes.d.ts.map +1 -1
- package/dist/cli/commands/auto-yes.js +45 -0
- package/dist/cli/commands/instances.d.ts.map +1 -1
- package/dist/cli/commands/instances.js +23 -18
- package/dist/cli/commands/ls.d.ts +15 -1
- package/dist/cli/commands/ls.d.ts.map +1 -1
- package/dist/cli/commands/ls.js +39 -3
- package/dist/cli/commands/prompt.d.ts +42 -0
- package/dist/cli/commands/prompt.d.ts.map +1 -0
- package/dist/cli/commands/prompt.js +211 -0
- package/dist/cli/commands/relays.d.ts.map +1 -1
- package/dist/cli/commands/relays.js +13 -1
- package/dist/cli/commands/respond-strict.d.ts +31 -0
- package/dist/cli/commands/respond-strict.d.ts.map +1 -0
- package/dist/cli/commands/respond-strict.js +214 -0
- package/dist/cli/commands/respond.d.ts.map +1 -1
- package/dist/cli/commands/respond.js +38 -0
- package/dist/cli/commands/send.d.ts.map +1 -1
- package/dist/cli/commands/send.js +41 -5
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +2 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +18 -0
- package/dist/cli/commands/wait.d.ts +21 -1
- package/dist/cli/commands/wait.d.ts.map +1 -1
- package/dist/cli/commands/wait.js +108 -12
- package/dist/cli/docs/agent-operations.d.ts +1 -1
- package/dist/cli/docs/agent-operations.d.ts.map +1 -1
- package/dist/cli/docs/agent-operations.js +63 -1
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +6 -2
- package/dist/cli/types/api-responses.d.ts +54 -0
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/types/index.d.ts +30 -0
- package/dist/cli/types/index.d.ts.map +1 -1
- package/dist/cli/types/index.js +12 -1
- package/dist/cli/utils/api-client.d.ts +13 -1
- package/dist/cli/utils/api-client.d.ts.map +1 -1
- package/dist/cli/utils/api-client.js +10 -2
- package/dist/cli/utils/daemon-factory.d.ts.map +1 -1
- package/dist/cli/utils/daemon-factory.js +3 -1
- package/dist/cli/utils/daemon.d.ts +38 -1
- package/dist/cli/utils/daemon.d.ts.map +1 -1
- package/dist/cli/utils/daemon.js +161 -8
- package/dist/cli/utils/paths.d.ts +12 -0
- package/dist/cli/utils/paths.d.ts.map +1 -1
- package/dist/cli/utils/paths.js +17 -0
- package/dist/lib/polling/auto-yes-suppression-reason.d.ts +43 -1
- package/dist/lib/polling/auto-yes-suppression-reason.d.ts.map +1 -1
- package/dist/lib/polling/auto-yes-suppression-reason.js +18 -1
- package/dist/lib/prompt-observation/kinds.d.ts +101 -0
- package/dist/lib/prompt-observation/kinds.d.ts.map +1 -0
- package/dist/lib/prompt-observation/kinds.js +123 -0
- package/dist/lib/prompt-observation/types.d.ts +271 -0
- package/dist/lib/prompt-observation/types.d.ts.map +1 -0
- package/dist/lib/prompt-observation/types.js +14 -0
- package/dist/lib/session/send-attempt-types.d.ts +66 -0
- package/dist/lib/session/send-attempt-types.d.ts.map +1 -0
- package/dist/lib/session/send-attempt-types.js +17 -0
- package/dist/server/locales/en/worktree.json +4 -0
- package/dist/server/locales/ja/worktree.json +4 -0
- package/dist/server/server.js +20 -1
- package/dist/server/src/config/auto-yes-config.js +11 -0
- package/dist/server/src/lib/auto-yes-lifecycle.js +28 -2
- package/dist/server/src/lib/auto-yes-poller.js +345 -28
- package/dist/server/src/lib/auto-yes-shutdown-record.js +257 -0
- package/dist/server/src/lib/auto-yes-state.js +197 -4
- package/dist/server/src/lib/cli-tools/antigravity-startup-trust.js +135 -0
- package/dist/server/src/lib/cli-tools/antigravity.js +162 -29
- package/dist/server/src/lib/cli-tools/command-code.js +10 -2
- package/dist/server/src/lib/cli-tools/copilot.js +21 -10
- package/dist/server/src/lib/cli-tools/gemini.js +60 -13
- package/dist/server/src/lib/cli-tools/launch-dialog.js +203 -0
- package/dist/server/src/lib/cli-tools/launch-window.js +96 -0
- package/dist/server/src/lib/detection/selection-shape.js +35 -1
- package/dist/server/src/lib/detection/tools/antigravity/detect.js +38 -9
- package/dist/server/src/lib/detection/tools/antigravity/dialog.js +88 -1
- package/dist/server/src/lib/detection/tools/antigravity/patterns.js +41 -1
- package/dist/server/src/lib/detection/tools/claude/detect.js +60 -0
- package/dist/server/src/lib/detection/tools/command-code/selection-shape.js +63 -13
- package/dist/server/src/lib/detection/tools/copilot/patterns.js +7 -1
- package/dist/server/src/lib/hooks/sources/opencode-v2/history.js +11 -2
- package/dist/server/src/lib/hooks/sources/opencode-v2/subscription.js +5 -3
- package/dist/server/src/lib/polling/antigravity-permission-receipts.js +15 -0
- package/dist/server/src/lib/polling/antigravity-receipt-episodes.js +281 -0
- package/dist/server/src/lib/polling/auto-yes-confirm-page.js +56 -0
- package/dist/server/src/lib/polling/auto-yes-dialog-gate.js +8 -1
- package/dist/server/src/lib/polling/auto-yes-policy.js +61 -7
- package/dist/server/src/lib/polling/auto-yes-poller-stop-reason.js +50 -0
- package/dist/server/src/lib/polling/auto-yes-prompt-suppression.js +220 -5
- package/dist/server/src/lib/polling/auto-yes-suppression-reason.js +18 -1
- package/dist/server/src/lib/polling/auto-yes-suppression-state.js +10 -0
- package/dist/server/src/lib/polling/response-checker-dialog-gate.js +2 -2
- package/dist/server/src/lib/polling/response-checker.js +9 -0
- package/dist/server/src/lib/polling/response-poller-core.js +136 -104
- package/dist/server/src/lib/prompt-observation/kinds.js +123 -0
- package/dist/server/src/lib/prompt-observation/types.js +14 -0
- package/dist/server/src/lib/push/prompt-push-gate.js +195 -3
- package/dist/server/src/lib/push/waiting-push-notifier.js +74 -7
- package/dist/server/src/lib/relay/relay-delivery-claims.js +46 -0
- package/dist/server/src/lib/relay/relay-delivery.js +76 -30
- package/dist/server/src/lib/schedule-manager.js +28 -0
- package/dist/server/src/lib/session/cli-session.js +38 -3
- package/dist/server/src/lib/session/send-attempt-state.js +155 -0
- package/dist/server/src/lib/session/send-attempt-types.js +17 -0
- package/dist/server/src/lib/session/send-user-message.js +46 -0
- package/dist/server/src/lib/session/worktree-session-reconcile.js +2 -1
- package/dist/server/src/lib/tmux/session-created-signal.js +76 -0
- package/dist/server/src/lib/tmux/tmux-capture-cache.js +58 -6
- package/dist/server/src/lib/tmux/tmux.js +4 -0
- package/dist/server/src/lib/verification/scope-gate-format.js +100 -0
- package/dist/server/src/lib/verification/scope-gate-glob.js +185 -0
- package/dist/server/src/lib/verification/scope-gate.js +19 -271
- package/dist/server/src/lib/ws-server.js +48 -6
- package/docs/en/user-guide/cli-setup-guide.md +12 -1
- package/docs/en/user-guide/webapp-guide.md +2 -0
- package/package.json +1 -1
- package/release-notes/0.47.0.json +118 -0
- package/.next/server/chunks/1789.js +0 -1
- package/.next/server/chunks/2908.js +0 -1
- package/.next/server/chunks/2984.js +0 -25
- package/.next/server/chunks/3718.js +0 -1
- package/.next/server/chunks/4837.js +0 -14
- package/.next/server/chunks/611.js +0 -1
- package/.next/server/chunks/850.js +0 -1
- package/.next/static/chunks/3201-c01f1feed69020e6.js +0 -1
- package/.next/static/chunks/5371-0dc947683e46e78c.js +0 -1
- package/.next/static/chunks/602-25e45a2422d2a3ea.js +0 -1
- package/.next/static/chunks/app/api/app/update/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/auth/login/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/auth/status/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/capabilities/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/status/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/external-apps/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/fs/browse/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/fs/recent-paths/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/hooks/agent-event/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/hooks/claude-done/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/hooks/permission-request/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/metrics/vibe/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/ollama/models/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/push/escalation/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/push/subscriptions/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/push/vapid/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/relays/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/remote/pair/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/repositories/excluded/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/repositories/restore/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/repositories/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/repositories/scan/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/repositories/sync/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/repositories/validate-path/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/settings/default-agents/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/settings/default-surface-mode/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/sidebar/group-order/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/skills/[id]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/skills/installations/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/skills/operations/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/skills/reindex/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/skills/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/slash-commands/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/templates/[id]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/templates/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/layout-3e357690446cd2da.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/proxy/[...path]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/sessions/page-9859ed61e93e6890.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/layout-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-effbf0796881dd5a.js +0 -1
- /package/.next/static/{QxDf7lm-JJkWoj-TyWiSB → b5BiQC9F6r_XFPdA9cuSj}/_buildManifest.js +0 -0
- /package/.next/static/{QxDf7lm-JJkWoj-TyWiSB → b5BiQC9F6r_XFPdA9cuSj}/_ssgManifest.js +0 -0
|
@@ -19,6 +19,10 @@
|
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
20
|
exports.AUTO_YES_POLICY_CACHE_TTL_MS = void 0;
|
|
21
21
|
exports.getSessionAutoYesPolicy = getSessionAutoYesPolicy;
|
|
22
|
+
exports.getSessionAutoYesPolicyEntry = getSessionAutoYesPolicyEntry;
|
|
23
|
+
exports.isAutoYesBlockedByPolicy = isAutoYesBlockedByPolicy;
|
|
24
|
+
exports.isSessionAutoYesBlockedByContract = isSessionAutoYesBlockedByContract;
|
|
25
|
+
exports.getSessionContractPolicySummary = getSessionContractPolicySummary;
|
|
22
26
|
exports.invalidateSessionAutoYesPolicy = invalidateSessionAutoYesPolicy;
|
|
23
27
|
exports.clearAutoYesPolicyCache = clearAutoYesPolicyCache;
|
|
24
28
|
const db_1 = require("../../lib/db");
|
|
@@ -60,10 +64,10 @@ function readPolicy(worktreeId, cliToolId, instanceId) {
|
|
|
60
64
|
try {
|
|
61
65
|
const task = (0, db_1.getActiveTaskForInstance)((0, db_instance_1.getDbInstance)(), worktreeId, cliToolId, instanceId);
|
|
62
66
|
if (!task)
|
|
63
|
-
return null;
|
|
67
|
+
return { policy: null, taskId: null };
|
|
64
68
|
// Assignment, not a cast: a drift in TaskContractAutoYes fails the build here.
|
|
65
69
|
const policy = task.contract.autoYes;
|
|
66
|
-
return policy;
|
|
70
|
+
return { policy, taskId: task.id };
|
|
67
71
|
}
|
|
68
72
|
catch (error) {
|
|
69
73
|
logger.warn('policy-lookup-failed', {
|
|
@@ -72,7 +76,7 @@ function readPolicy(worktreeId, cliToolId, instanceId) {
|
|
|
72
76
|
instanceId,
|
|
73
77
|
error: error instanceof Error ? error.message : String(error),
|
|
74
78
|
});
|
|
75
|
-
return null;
|
|
79
|
+
return { policy: null, taskId: null };
|
|
76
80
|
}
|
|
77
81
|
}
|
|
78
82
|
/**
|
|
@@ -85,19 +89,69 @@ function readPolicy(worktreeId, cliToolId, instanceId) {
|
|
|
85
89
|
* @returns The contract's autoYes block, or null when no contract governs this instance
|
|
86
90
|
*/
|
|
87
91
|
function getSessionAutoYesPolicy(worktreeId, cliToolId, instanceId) {
|
|
92
|
+
return lookupEntry(worktreeId, cliToolId, instanceId).policy;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* The policy and the id of the task it came from, read in ONE lookup (Issue
|
|
96
|
+
* #3724), so a log line naming both cannot pair one task's verdict with another
|
|
97
|
+
* task's id when the cache expires between two reads. `taskId` is null when no
|
|
98
|
+
* contract governs the instance.
|
|
99
|
+
*/
|
|
100
|
+
function getSessionAutoYesPolicyEntry(worktreeId, cliToolId, instanceId) {
|
|
101
|
+
const { policy, taskId } = lookupEntry(worktreeId, cliToolId, instanceId);
|
|
102
|
+
return { policy, taskId };
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Whether the contract's policy keeps Auto-Yes from ever answering (Issue #3723).
|
|
106
|
+
*
|
|
107
|
+
* `mode: 'off'` only. `safe` / `allow-listed` still answer some prompts, and a
|
|
108
|
+
* null mode (or no contract) states nothing, so those are not blocked. The
|
|
109
|
+
* poller's resolver reaches the same verdict from the same policy.
|
|
110
|
+
*/
|
|
111
|
+
function isAutoYesBlockedByPolicy(policy) {
|
|
112
|
+
return policy?.mode === 'off';
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Whether the contract governing this instance keeps Auto-Yes from answering
|
|
116
|
+
* (Issue #3723). The poller's own lookup ({@link getSessionAutoYesPolicyEntry})
|
|
117
|
+
* judged by {@link isAutoYesBlockedByPolicy}, so the list cannot read `blocked`
|
|
118
|
+
* for an instance the poller would answer, or the reverse.
|
|
119
|
+
*/
|
|
120
|
+
function isSessionAutoYesBlockedByContract(worktreeId, cliToolId, instanceId) {
|
|
121
|
+
return isAutoYesBlockedByPolicy(getSessionAutoYesPolicyEntry(worktreeId, cliToolId, instanceId).policy);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* The contract policy of an agent instance in the shape the API returns, or null
|
|
125
|
+
* when no contract governs it. Policy and task id come from ONE
|
|
126
|
+
* {@link getSessionAutoYesPolicyEntry} lookup — the poller's cache — so the mode
|
|
127
|
+
* and the task it names are the same task's.
|
|
128
|
+
*/
|
|
129
|
+
function getSessionContractPolicySummary(worktreeId, cliToolId, instanceId) {
|
|
130
|
+
const { policy, taskId } = getSessionAutoYesPolicyEntry(worktreeId, cliToolId, instanceId);
|
|
131
|
+
if (!policy)
|
|
132
|
+
return null;
|
|
133
|
+
return {
|
|
134
|
+
taskId,
|
|
135
|
+
mode: policy.mode,
|
|
136
|
+
allowPromptTypes: policy.allowPromptTypes,
|
|
137
|
+
denyPatternCount: policy.denyPatterns.length,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
function lookupEntry(worktreeId, cliToolId, instanceId) {
|
|
88
141
|
const resolvedInstanceId = instanceId ?? cliToolId;
|
|
89
142
|
const key = (0, auto_yes_state_1.buildCompositeKey)(worktreeId, cliToolId, resolvedInstanceId);
|
|
90
143
|
const now = Date.now();
|
|
91
144
|
const cached = policyCache.get(key);
|
|
92
145
|
if (cached && cached.expiresAt > now) {
|
|
93
|
-
return cached
|
|
146
|
+
return cached;
|
|
94
147
|
}
|
|
95
|
-
const policy = readPolicy(worktreeId, cliToolId, resolvedInstanceId);
|
|
148
|
+
const { policy, taskId } = readPolicy(worktreeId, cliToolId, resolvedInstanceId);
|
|
96
149
|
if (policyCache.size >= MAX_CACHE_ENTRIES) {
|
|
97
150
|
purgeExpired(now);
|
|
98
151
|
}
|
|
99
|
-
|
|
100
|
-
|
|
152
|
+
const entry = { policy, taskId, expiresAt: now + exports.AUTO_YES_POLICY_CACHE_TTL_MS };
|
|
153
|
+
policyCache.set(key, entry);
|
|
154
|
+
return entry;
|
|
101
155
|
}
|
|
102
156
|
/**
|
|
103
157
|
* Drop the cached policy for a composite key, so the next lookup re-reads the
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* The reason a poller stop is made for, when the stop function is called
|
|
4
|
+
* without one (Issue #3730).
|
|
5
|
+
*
|
|
6
|
+
* `stopAutoYesPolling(compositeKey, reason)` takes the reason as an argument,
|
|
7
|
+
* and every direct caller passes it. The lifecycle table
|
|
8
|
+
* (`lib/auto-yes-lifecycle`) cannot: it reaches the poller through the
|
|
9
|
+
* `auto-yes-manager` barrel, whose callers' tests mock it and pin the exact
|
|
10
|
+
* arguments (`stopAutoYesPolling(key)`, `stopAutoYesPollingByWorktree(id)`).
|
|
11
|
+
* So the table names its event here, around the call, and the poller reads it
|
|
12
|
+
* when no argument came. Synchronous only: the scope ends when `fn` returns.
|
|
13
|
+
*
|
|
14
|
+
* A module of its own, not part of the barrel, so mocking the barrel never
|
|
15
|
+
* mocks this away.
|
|
16
|
+
*
|
|
17
|
+
* @module lib/polling/auto-yes-poller-stop-reason
|
|
18
|
+
*/
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.withPollerStopReason = withPollerStopReason;
|
|
21
|
+
exports.resolvePollerStopReason = resolvePollerStopReason;
|
|
22
|
+
let scopedReason = null;
|
|
23
|
+
/**
|
|
24
|
+
* Run `fn` with `reason` as the reason of every poller stop it makes that
|
|
25
|
+
* names none itself.
|
|
26
|
+
*
|
|
27
|
+
* @param reason - Why the pollers are being stopped
|
|
28
|
+
* @param fn - The synchronous stop call(s)
|
|
29
|
+
* @returns What `fn` returns
|
|
30
|
+
*/
|
|
31
|
+
function withPollerStopReason(reason, fn) {
|
|
32
|
+
const previous = scopedReason;
|
|
33
|
+
scopedReason = reason;
|
|
34
|
+
try {
|
|
35
|
+
return fn();
|
|
36
|
+
}
|
|
37
|
+
finally {
|
|
38
|
+
scopedReason = previous;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The reason to log for a stop: the explicit one, else the scope's, else
|
|
43
|
+
* `fallback`.
|
|
44
|
+
*
|
|
45
|
+
* @param explicit - The reason the caller passed, if any
|
|
46
|
+
* @param fallback - What to answer when neither says
|
|
47
|
+
*/
|
|
48
|
+
function resolvePollerStopReason(explicit, fallback) {
|
|
49
|
+
return explicit ?? scopedReason ?? fallback;
|
|
50
|
+
}
|
|
@@ -5,11 +5,22 @@
|
|
|
5
5
|
* auto-yes-poller.ts (cycle) or `../tmux/tmux` (tmux import allowlist).
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.MAX_LOGGED_QUESTION_LENGTH = exports.COPILOT_FOLDER_TRUST_LAUNCH_DIALOG_ID = void 0;
|
|
8
9
|
exports.suppressAndWarnOnce = suppressAndWarnOnce;
|
|
10
|
+
exports.truncateForLog = truncateForLog;
|
|
9
11
|
exports.suppressIfNotOursToAnswer = suppressIfNotOursToAnswer;
|
|
10
12
|
exports.suppressUnclassifiedFrame = suppressUnclassifiedFrame;
|
|
13
|
+
exports.suppressAntigravityTrustScreen = suppressAntigravityTrustScreen;
|
|
11
14
|
const detect_1 = require("../detection/tools/codex/detect");
|
|
12
15
|
const cli_patterns_1 = require("../detection/cli-patterns");
|
|
16
|
+
const patterns_1 = require("../detection/tools/antigravity/patterns");
|
|
17
|
+
const patterns_2 = require("../detection/tools/copilot/patterns");
|
|
18
|
+
const antigravity_startup_trust_1 = require("../cli-tools/antigravity-startup-trust");
|
|
19
|
+
const launch_dialog_1 = require("../cli-tools/launch-dialog");
|
|
20
|
+
const launch_window_1 = require("../cli-tools/launch-window");
|
|
21
|
+
const session_name_1 = require("../cli-tools/session-name");
|
|
22
|
+
const auto_yes_suppression_reason_1 = require("./auto-yes-suppression-reason");
|
|
23
|
+
const auto_yes_confirm_page_1 = require("./auto-yes-confirm-page");
|
|
13
24
|
const auto_yes_suppression_state_1 = require("./auto-yes-suppression-state");
|
|
14
25
|
const auto_yes_dialog_gate_1 = require("./auto-yes-dialog-gate");
|
|
15
26
|
const auto_yes_poller_state_1 = require("./auto-yes-poller-state");
|
|
@@ -34,11 +45,128 @@ function suppressAndWarnOnce(prompt, suppression, warnFrameKey, event, detail) {
|
|
|
34
45
|
...detail,
|
|
35
46
|
});
|
|
36
47
|
}
|
|
48
|
+
/** The `dialog` that copilot's folder-trust suppression records (Issue #3790). */
|
|
49
|
+
exports.COPILOT_FOLDER_TRUST_LAUNCH_DIALOG_ID = 'copilot-folder-trust';
|
|
50
|
+
/** How much of a prompt's question a log line carries (Issue #3497). */
|
|
51
|
+
exports.MAX_LOGGED_QUESTION_LENGTH = 500;
|
|
37
52
|
/**
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
|
|
41
|
-
|
|
53
|
+
* `question` cut to {@link MAX_LOGGED_QUESTION_LENGTH}, for a log line.
|
|
54
|
+
* Exported for `poller:response-sent` (Issue #3748).
|
|
55
|
+
*/
|
|
56
|
+
function truncateForLog(question) {
|
|
57
|
+
return question.length > exports.MAX_LOGGED_QUESTION_LENGTH
|
|
58
|
+
? `${question.slice(0, exports.MAX_LOGGED_QUESTION_LENGTH)}…`
|
|
59
|
+
: question;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Whether the launch still owns its startup confirmation for this instance:
|
|
63
|
+
* its window is open (Issue #3776), or it pressed the confirming key less than
|
|
64
|
+
* `LAUNCH_DIALOG_PRESS_SETTLE_MS` ago and the agent may not have redrawn yet —
|
|
65
|
+
* the window can close in between (Issue #3790).
|
|
66
|
+
*/
|
|
67
|
+
function isLaunchStillAnswering(cliToolId, prompt) {
|
|
68
|
+
let sessionName;
|
|
69
|
+
try {
|
|
70
|
+
sessionName = (0, session_name_1.resolveSessionName)(cliToolId, prompt.worktreeId, prompt.instanceId);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
// An id that would not make a session name was never launched here.
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
return (0, launch_window_1.isLaunchWindowOpen)(sessionName) || (0, launch_window_1.isLaunchDialogPressSettling)(sessionName);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Issue #3776: whether the prompt the poller is about to answer is gemini's
|
|
80
|
+
* folder-trust dialog itself — its parsed options are the declared option
|
|
81
|
+
* rows — rather than another prompt sharing the screen with it (the
|
|
82
|
+
* authentication picker under a dismissed dialog, a permission prompt under a
|
|
83
|
+
* reply that quotes the question).
|
|
84
|
+
*/
|
|
85
|
+
function isGeminiTrustPrompt(promptData) {
|
|
86
|
+
if (promptData.type !== 'multiple_choice')
|
|
87
|
+
return false;
|
|
88
|
+
const { optionRow, minOptionRows } = launch_dialog_1.GEMINI_TRUST_LAUNCH_DIALOG;
|
|
89
|
+
return promptData.options.filter((o) => optionRow.test(`${o.number}. ${o.label}`)).length >= minOptionRows;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Issue #3776: whether gemini's folder-trust dialog on this frame is left to
|
|
93
|
+
* the launch (step 3). Judged only for a prompt whose options are the dialog's
|
|
94
|
+
* declared rows ({@link isGeminiTrustPrompt}): a reply quoting the question
|
|
95
|
+
* over another prompt, or the authentication picker under a dismissed dialog,
|
|
96
|
+
* is answered as any prompt is.
|
|
97
|
+
*
|
|
98
|
+
* Left alone by default — the poller answers only when nothing else will and
|
|
99
|
+
* the answer is the safe one:
|
|
100
|
+
* - While the launch window is open (`cli-tools/launch-window`), never: the
|
|
101
|
+
* launch answers it, and an answered dialog stays drawn above gemini's
|
|
102
|
+
* restart line, where a `1` lands on whatever the restart draws next. Nor
|
|
103
|
+
* for a while after the launch's Enter, window or not (Issue #3790,
|
|
104
|
+
* {@link isLaunchStillAnswering}).
|
|
105
|
+
* - After it — the launch's Enter did not land, or gemini drew the dialog late
|
|
106
|
+
* (an auto-update, a slow start) — only when the prompt's default (the
|
|
107
|
+
* cursor row, which is what the poller sends) is `1. Trust folder`, and,
|
|
108
|
+
* when the screen reads as the declared dialog, the launch's own reading is
|
|
109
|
+
* `press` (not a dismissed dialog).
|
|
110
|
+
*
|
|
111
|
+
* A screen that does not read as the dialog (the wording changed, the options
|
|
112
|
+
* sit further below the question than declared) is not a reason to answer
|
|
113
|
+
* (review of #3776): with the cursor on `3. Don't trust` the poller's default
|
|
114
|
+
* would write that answer for good.
|
|
115
|
+
*/
|
|
116
|
+
function isGeminiTrustDialogLeftToLaunch(prompt, frame) {
|
|
117
|
+
const { promptData } = prompt;
|
|
118
|
+
if (promptData.type !== 'multiple_choice' || !isGeminiTrustPrompt(promptData))
|
|
119
|
+
return false;
|
|
120
|
+
if (isLaunchStillAnswering('gemini', prompt))
|
|
121
|
+
return true;
|
|
122
|
+
const defaultOption = promptData.options.find((o) => o.isDefault);
|
|
123
|
+
const defaultIsSafe = defaultOption !== undefined &&
|
|
124
|
+
launch_dialog_1.GEMINI_TRUST_LAUNCH_DIALOG.safeRow.test(`${defaultOption.number}. ${defaultOption.label}`);
|
|
125
|
+
if (!defaultIsSafe)
|
|
126
|
+
return true;
|
|
127
|
+
if (!(0, launch_dialog_1.isLaunchDialogDrawn)(launch_dialog_1.GEMINI_TRUST_LAUNCH_DIALOG, frame.clean))
|
|
128
|
+
return false;
|
|
129
|
+
if (!(0, launch_dialog_1.isLaunchDialogOpen)(launch_dialog_1.GEMINI_TRUST_LAUNCH_DIALOG, frame.clean))
|
|
130
|
+
return true;
|
|
131
|
+
return (0, launch_dialog_1.decideLaunchDialog)(launch_dialog_1.GEMINI_TRUST_LAUNCH_DIALOG, frame.clean).action !== 'press';
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Issue #3790: whether copilot's folder-trust dialog on this frame is left to
|
|
135
|
+
* the launch (step 3), as gemini's is. The launch confirms it with a bare `1`
|
|
136
|
+
* (`CopilotTool.answerFolderTrustDialog`); the poller answered `1` + Enter
|
|
137
|
+
* beside it, and when the launch's `1` landed first, the poller's was typed
|
|
138
|
+
* into the composer the dismissal revealed and submitted as a user message
|
|
139
|
+
* (measured on 1.0.91, private tmux socket and HOME).
|
|
140
|
+
*
|
|
141
|
+
* Judged only when the frame carries both of the dialog's anchors and the
|
|
142
|
+
* prompt's options are its rows: a reply quoting the question over another
|
|
143
|
+
* prompt is answered as any prompt is. Left alone while the launch is still
|
|
144
|
+
* answering ({@link isLaunchStillAnswering}); after it — the launch's `1` did
|
|
145
|
+
* not land, or copilot drew the dialog late — the poller's default goes through
|
|
146
|
+
* only when it is the session-only `1. Yes` in the declared order
|
|
147
|
+
* (`isCopilotFolderTrustDialog`). `2.` writes `trustedFolders` into the
|
|
148
|
+
* machine-wide `~/.copilot/config.json`.
|
|
149
|
+
*/
|
|
150
|
+
function isCopilotTrustDialogLeftToLaunch(prompt, frame) {
|
|
151
|
+
const { promptData } = prompt;
|
|
152
|
+
if (promptData.type !== 'multiple_choice')
|
|
153
|
+
return false;
|
|
154
|
+
if (!patterns_2.COPILOT_FOLDER_TRUST_ANCHORS.every((anchor) => frame.clean.includes(anchor)))
|
|
155
|
+
return false;
|
|
156
|
+
const trustRows = promptData.options.filter((o) => patterns_2.COPILOT_FOLDER_TRUST_OPTION_LABEL_PATTERN.test(o.label));
|
|
157
|
+
if (trustRows.length < 2)
|
|
158
|
+
return false;
|
|
159
|
+
if (isLaunchStillAnswering('copilot', prompt))
|
|
160
|
+
return true;
|
|
161
|
+
const defaultOption = promptData.options.find((o) => o.isDefault);
|
|
162
|
+
const defaultIsSessionOnly = defaultOption?.number === 1 && defaultOption.label === 'Yes';
|
|
163
|
+
return !(defaultIsSessionOnly && (0, patterns_2.isCopilotFolderTrustDialog)(frame.clean));
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Issue #3214: steps 3, 3.2, 3.3 (Issue #3497) and 3.5 of
|
|
167
|
+
* `detectAndRespondToPrompt` -- the frames that read as a prompt and are still
|
|
168
|
+
* not Auto-Yes's to answer, judged in the order they always were. "The
|
|
169
|
+
* detection above" in the comments below is that function's step 1.
|
|
42
170
|
*
|
|
43
171
|
* Issue #3397: step 3.5 no longer records its refusal here. It hands the gate's
|
|
44
172
|
* verdict back so `tryEnterFallback` can look at the frame first, and records
|
|
@@ -68,7 +196,24 @@ function suppressIfNotOursToAnswer(prompt, frame) {
|
|
|
68
196
|
// to the tool. Auto-answer layer only: the detection above still reports the
|
|
69
197
|
// prompt, so the human keeps seeing the screen and the response poller
|
|
70
198
|
// still notifies them about it.
|
|
71
|
-
|
|
199
|
+
//
|
|
200
|
+
// Issue #3776: gemini's folder-trust question too. The generic parser reads
|
|
201
|
+
// it as a multiple choice whose default is the cursor row, so the poller
|
|
202
|
+
// answered `1` beside the launch's own Enter (the second keypress then fell
|
|
203
|
+
// on the restarted gemini's authentication picker), and answered `3` —
|
|
204
|
+
// `Don't trust`, written for good — when the cursor sat there. The launch
|
|
205
|
+
// confirms only `1. Trust folder` (`cli-tools/launch-dialog`). See
|
|
206
|
+
// {@link isGeminiTrustDialogLeftToLaunch} for when the poller may answer.
|
|
207
|
+
//
|
|
208
|
+
// Issue #3790: copilot's folder-trust question too, whose launch answers a
|
|
209
|
+
// bare `1` (see {@link isCopilotTrustDialogLeftToLaunch}).
|
|
210
|
+
const launchDialog = cliToolId === 'codex'
|
|
211
|
+
? (0, cli_patterns_1.getCodexLifecycleDialog)(frame)
|
|
212
|
+
: cliToolId === 'gemini' && isGeminiTrustDialogLeftToLaunch(prompt, frame)
|
|
213
|
+
? launch_dialog_1.GEMINI_TRUST_LAUNCH_DIALOG.id
|
|
214
|
+
: cliToolId === 'copilot' && isCopilotTrustDialogLeftToLaunch(prompt, frame)
|
|
215
|
+
? exports.COPILOT_FOLDER_TRUST_LAUNCH_DIALOG_ID
|
|
216
|
+
: null;
|
|
72
217
|
if (launchDialog) {
|
|
73
218
|
// Recorded through the #1684 channel so `capture --json` and `cmate wait`
|
|
74
219
|
// can name the reason instead of showing a worker that went quiet.
|
|
@@ -86,6 +231,34 @@ function suppressIfNotOursToAnswer(prompt, frame) {
|
|
|
86
231
|
suppressAndWarnOnce(prompt, { reason: 'unclassified-frame', mode: null, promptType: promptData.type }, `${frameKey}\u0000codex-model-picker`, 'poller:auto-yes-skipped-model-picker', { promptType: promptData.type });
|
|
87
232
|
return { kind: 'left-alone' };
|
|
88
233
|
}
|
|
234
|
+
// 3.3. Issue #3497: Command Code's `AskUserQuestion` confirm page
|
|
235
|
+
// (`❯ 1. Submit` / `2. Cancel` under the question's tab strip) is not ours
|
|
236
|
+
// to answer. `Submit` picks nothing — it commits whatever stands as the
|
|
237
|
+
// answers, and on Kewton/Musunest#283 that was the worker's own proposal,
|
|
238
|
+
// which the worker then implemented as though a human had approved it. The
|
|
239
|
+
// full Review page is already declined by the reader (#2755 §7); a frame
|
|
240
|
+
// without its `← to go back and edit` row reaches the generic parser, and a
|
|
241
|
+
// question whose only choices are the pair is read by the question reader —
|
|
242
|
+
// both as `multiple_choice` with `Submit` as the default, answered `1`. Default, no setting: free-text questions go back to a human.
|
|
243
|
+
// The status path still publishes the prompt, so the human sees it.
|
|
244
|
+
//
|
|
245
|
+
// Issue #3748: Claude's confirmation page (`Ready to submit your answers?` /
|
|
246
|
+
// `❯ 1. Submit answers` / `2. Cancel`) is the same page and is declined the
|
|
247
|
+
// same way. Judged by `isAutoYesDeclinedConfirmPage`, which the browser's
|
|
248
|
+
// fallback (`useAutoYes`) asks too, and recorded with a reason of its own,
|
|
249
|
+
// `question-confirm-page`, which `cmate wait` names as such (it reused
|
|
250
|
+
// `unclassified-frame`, whose wording says no detector recognised the frame).
|
|
251
|
+
if ((0, auto_yes_confirm_page_1.isAutoYesDeclinedConfirmPage)(cliToolId, frame)) {
|
|
252
|
+
suppressAndWarnOnce(prompt, { reason: auto_yes_suppression_reason_1.QUESTION_CONFIRM_PAGE_SUPPRESSION_REASON, mode: null, promptType: promptData.type }, `${frameKey}\u0000question-confirm-page`, 'poller:auto-yes-skipped-question-confirm', {
|
|
253
|
+
reason: auto_yes_suppression_reason_1.QUESTION_CONFIRM_PAGE_SUPPRESSION_REASON,
|
|
254
|
+
promptType: promptData.type,
|
|
255
|
+
question: truncateForLog(promptData.question),
|
|
256
|
+
options: promptData.type === 'multiple_choice'
|
|
257
|
+
? promptData.options.map((option) => `${option.number}. ${option.label}`)
|
|
258
|
+
: [...promptData.options],
|
|
259
|
+
});
|
|
260
|
+
return { kind: 'left-alone' };
|
|
261
|
+
}
|
|
89
262
|
// 3.5. Issue #1928 (§4 D1 decision 4): the generic numbered-list inference is
|
|
90
263
|
// not enough to send an answer. The detection above judges the ROWS, and the
|
|
91
264
|
// rows of an agent's own reply can be indistinguishable from a dialog's --
|
|
@@ -123,3 +296,45 @@ function suppressUnclassifiedFrame(prompt, dialogGate) {
|
|
|
123
296
|
gateMode: dialogGate.mode,
|
|
124
297
|
});
|
|
125
298
|
}
|
|
299
|
+
/**
|
|
300
|
+
* Issue #3757: agy's startup folder-trust screen, which the tick read as no
|
|
301
|
+
* prompt at all — it is unnumbered, so neither agy's dialog reader nor the
|
|
302
|
+
* generic parser reads it, and the tick never got as far as the dialog gate or
|
|
303
|
+
* the Enter fallback. The status path still calls the pane `waiting`, so the
|
|
304
|
+
* prompt Push opened a wait that, with nothing recorded, it held as "Auto-Yes
|
|
305
|
+
* is answering" until the ten-minute reminder.
|
|
306
|
+
*
|
|
307
|
+
* Not answered here: the screen belongs to the launch, which confirms it with
|
|
308
|
+
* one Enter — in its own window, or through the next send when agy drew it
|
|
309
|
+
* later (`cli-tools/antigravity-startup-trust`). A second sender of that Enter
|
|
310
|
+
* here could press it twice. What this does is record the reason, so the gate
|
|
311
|
+
* notifies and `cmate wait` names the screen.
|
|
312
|
+
*
|
|
313
|
+
* Inside the launch window (`isStartupWindowOpen`) nothing is recorded: the
|
|
314
|
+
* window confirms the screen within a second or two, and a record would make
|
|
315
|
+
* the prompt Push ring for a screen that was never a human's. Outside it — the
|
|
316
|
+
* window ended (with the Enter owed, or not) or this process never launched the
|
|
317
|
+
* session — it is recorded.
|
|
318
|
+
*
|
|
319
|
+
* @param frame - The tick's one normalised frame (Issue #3183)
|
|
320
|
+
* @param sessionName - The instance's tmux session, for the launch window
|
|
321
|
+
* @returns true when the frame is the trust screen (recorded or not)
|
|
322
|
+
*/
|
|
323
|
+
function suppressAntigravityTrustScreen(worktreeId, instanceId, pollerState, frame, sessionName) {
|
|
324
|
+
if (!(0, patterns_1.isAntigravityTrustScreen)(frame.lastLines))
|
|
325
|
+
return false;
|
|
326
|
+
if ((0, antigravity_startup_trust_1.isStartupWindowOpen)(sessionName) && !(0, antigravity_startup_trust_1.isStartupTrustPending)(sessionName))
|
|
327
|
+
return true;
|
|
328
|
+
(0, auto_yes_suppression_state_1.recordPolicySuppression)(worktreeId, 'antigravity', instanceId, {
|
|
329
|
+
reason: auto_yes_suppression_reason_1.STARTUP_TRUST_UNHANDLED_SUPPRESSION_REASON,
|
|
330
|
+
mode: null,
|
|
331
|
+
promptType: 'multiple_choice',
|
|
332
|
+
});
|
|
333
|
+
(0, auto_yes_poller_state_1.warnOncePerFrame)(pollerState, 'antigravity-startup-trust', 'poller:auto-yes-skipped-startup-trust', {
|
|
334
|
+
worktreeId,
|
|
335
|
+
cliToolId: 'antigravity',
|
|
336
|
+
instanceId,
|
|
337
|
+
reason: auto_yes_suppression_reason_1.STARTUP_TRUST_UNHANDLED_SUPPRESSION_REASON,
|
|
338
|
+
});
|
|
339
|
+
return true;
|
|
340
|
+
}
|
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PARTIAL_ANSWER_SUPPRESSION_REASON = void 0;
|
|
3
|
+
exports.NO_HOOK_RECEIPT_SUPPRESSION_REASON = exports.QUESTION_CONFIRM_PAGE_SUPPRESSION_REASON = exports.STARTUP_TRUST_UNHANDLED_SUPPRESSION_REASON = exports.PARTIAL_ANSWER_SUPPRESSION_REASON = exports.CONTRACT_SUPPRESSION_REASONS = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Issue #3796: the reasons `resolveAutoAnswerWithPolicy` returns — the contract's
|
|
6
|
+
* verdict on the prompt as it is NOW, which a later tick re-evaluates, as
|
|
7
|
+
* opposed to a reason that remembers an event (`partial-answer`).
|
|
8
|
+
*/
|
|
9
|
+
exports.CONTRACT_SUPPRESSION_REASONS = new Set([
|
|
10
|
+
'mode-off',
|
|
11
|
+
'deny-pattern',
|
|
12
|
+
'deny-pattern-unusable',
|
|
13
|
+
'type-not-allowed',
|
|
14
|
+
]);
|
|
4
15
|
/** Issue #3706: the reason the poller records for an answer stopped part-way. */
|
|
5
16
|
exports.PARTIAL_ANSWER_SUPPRESSION_REASON = 'partial-answer';
|
|
17
|
+
/** Issue #3757: the reason the poller records over agy's unanswered trust screen. */
|
|
18
|
+
exports.STARTUP_TRUST_UNHANDLED_SUPPRESSION_REASON = 'startup-trust-unhandled';
|
|
19
|
+
/** Issue #3748: the reason the poller records over an `AskUserQuestion` confirm page. */
|
|
20
|
+
exports.QUESTION_CONFIRM_PAGE_SUPPRESSION_REASON = 'question-confirm-page';
|
|
21
|
+
/** Issue #3767: the reason the poller records over an agy dialog with no matching hook receipt. */
|
|
22
|
+
exports.NO_HOOK_RECEIPT_SUPPRESSION_REASON = 'no-hook-receipt';
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.recordPolicySuppression = recordPolicySuppression;
|
|
27
27
|
exports.getLastPolicySuppression = getLastPolicySuppression;
|
|
28
|
+
exports.forgetPolicySuppression = forgetPolicySuppression;
|
|
28
29
|
exports.clearPolicySuppressions = clearPolicySuppressions;
|
|
29
30
|
const auto_yes_state_1 = require("../../lib/auto-yes-state");
|
|
30
31
|
const global_state_1 = require("../global-state");
|
|
@@ -49,6 +50,15 @@ function recordPolicySuppression(worktreeId, cliToolId, instanceId, suppression,
|
|
|
49
50
|
function getLastPolicySuppression(worktreeId, cliToolId, instanceId) {
|
|
50
51
|
return lastPolicySuppressions.get((0, auto_yes_state_1.buildCompositeKey)(worktreeId, cliToolId, instanceId)) ?? null;
|
|
51
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Drop the record of one session (Issue #3796): the reason it gives no longer
|
|
55
|
+
* holds for the prompt still on screen (the contract that withheld it changed),
|
|
56
|
+
* so leaving it to age out would have `cmate wait` report a stale reason for up
|
|
57
|
+
* to a minute.
|
|
58
|
+
*/
|
|
59
|
+
function forgetPolicySuppression(worktreeId, cliToolId, instanceId) {
|
|
60
|
+
lastPolicySuppressions.delete((0, auto_yes_state_1.buildCompositeKey)(worktreeId, cliToolId, instanceId));
|
|
61
|
+
}
|
|
52
62
|
/** Drop every recorded suppression. Test seam. */
|
|
53
63
|
function clearPolicySuppressions() {
|
|
54
64
|
lastPolicySuppressions.clear();
|
|
@@ -9,7 +9,7 @@ exports.isWithheldForWantOfReceipt = isWithheldForWantOfReceipt;
|
|
|
9
9
|
exports.isNumberedDialogVouched = isNumberedDialogVouched;
|
|
10
10
|
const logger_1 = require("../../lib/logger");
|
|
11
11
|
const logger = (0, logger_1.createLogger)('response-poller');
|
|
12
|
-
const
|
|
12
|
+
const antigravity_receipt_episodes_1 = require("./antigravity-receipt-episodes");
|
|
13
13
|
// Issue #2457: the same rollout table, `hasDialogRules` cross-check and
|
|
14
14
|
// `detectDialog` seam Auto-Yes reads, reached through the presence helper rather
|
|
15
15
|
// than through `evaluateAutoYesDialogGate` — see `isNumberedDialogVouched`.
|
|
@@ -36,7 +36,7 @@ const auto_yes_dialog_gate_1 = require("./auto-yes-dialog-gate");
|
|
|
36
36
|
function isWithheldForWantOfReceipt(scope) {
|
|
37
37
|
if (scope === undefined)
|
|
38
38
|
return false;
|
|
39
|
-
if ((0,
|
|
39
|
+
if ((0, antigravity_receipt_episodes_1.judgeAntigravityPermissionReceipt)(scope.worktreeId, scope.instanceId).ok)
|
|
40
40
|
return false;
|
|
41
41
|
logger.debug('antigravity-dialog-no-recent-receipt', {
|
|
42
42
|
worktreeId: scope.worktreeId,
|
|
@@ -228,6 +228,15 @@ function detectPromptOnCleanFrame(cleanOutput, cliToolId, precomputedLines, rawF
|
|
|
228
228
|
? { isPrompt: false, cleanContent: cleanOutput.trim() }
|
|
229
229
|
: dialog;
|
|
230
230
|
}
|
|
231
|
+
// Issue #3808: a numbered agy screen the reader declines — the login-method
|
|
232
|
+
// screen, a permission dialog whose `tab Amend` footer a narrow pane cut or
|
|
233
|
+
// left below the pane — is not handed to the generic parser either, which
|
|
234
|
+
// reads `> 1. Google OAuth` as an answerable option. Judged without the
|
|
235
|
+
// footer, so a missing footer cannot reopen the generic path. The status
|
|
236
|
+
// verdict publishes the same frame as unclassified (`tools/antigravity/detect.ts`).
|
|
237
|
+
if ((0, dialog_1.isAntigravityUnvouchedNumberedScreen)(cleanOutput)) {
|
|
238
|
+
return { isPrompt: false, cleanContent: cleanOutput.trim() };
|
|
239
|
+
}
|
|
231
240
|
}
|
|
232
241
|
// Issue #2522: Command Code's footer-less `AskUserQuestion`, read by the same
|
|
233
242
|
// module `tools/command-code/detect.ts` publishes its status from — so the
|