commandmate 0.45.1 → 0.46.1
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 +319 -315
- package/.next/app-path-routes-manifest.json +15 -15
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +3 -3
- package/.next/react-loadable-manifest.json +4 -4
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/_not-found/page.js +1 -1
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- 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_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_client-reference-manifest.js +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.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 +9 -9
- 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.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_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_client-reference-manifest.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.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.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.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 +3 -3
- 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 +3 -3
- 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.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.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.js +9 -9
- 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_client-reference-manifest.js +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 +3 -3
- 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 +3 -3
- 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_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.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.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_client-reference-manifest.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.js +1 -1
- package/.next/server/app/login/page.js.nft.json +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.js +1 -1
- package/.next/server/app/more/page.js.nft.json +1 -1
- package/.next/server/app/more/page_client-reference-manifest.js +1 -1
- package/.next/server/app/offline/page.js +1 -1
- package/.next/server/app/offline/page.js.nft.json +1 -1
- package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +1 -1
- package/.next/server/app/page.js.nft.json +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.js +2 -2
- package/.next/server/app/repositories/page.js.nft.json +1 -1
- package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
- package/.next/server/app/review/page.js +1 -1
- package/.next/server/app/review/page.js.nft.json +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.js +1 -1
- package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
- package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/installed/page.js +1 -1
- package/.next/server/app/skills/installed/page.js.nft.json +1 -1
- package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/page.js +1 -1
- package/.next/server/app/skills/page.js.nft.json +1 -1
- package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +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 +12 -9
- 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.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +15 -15
- package/.next/server/chunks/1341.js +1 -1
- package/.next/server/chunks/1501.js +2 -2
- package/.next/server/chunks/1559.js +1 -1
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2283.js +15 -13
- package/.next/server/chunks/2404.js +4 -4
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/2460.js +1 -1
- package/.next/server/chunks/2560.js +1 -1
- package/.next/server/chunks/2908.js +1 -1
- package/.next/server/chunks/2984.js +25 -0
- package/.next/server/chunks/3543.js +1 -1
- package/.next/server/chunks/3945.js +1 -1
- package/.next/server/chunks/4072.js +15 -0
- package/.next/server/chunks/4207.js +1 -1
- package/.next/server/chunks/4718.js +3 -3
- package/.next/server/chunks/4837.js +3 -3
- package/.next/server/chunks/5209.js +1 -1
- package/.next/server/chunks/5292.js +2 -2
- package/.next/server/chunks/5845.js +1 -1
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6345.js +1 -0
- package/.next/server/chunks/6401.js +1 -1
- package/.next/server/chunks/6722.js +1 -0
- package/.next/server/chunks/8098.js +1 -1
- package/.next/server/chunks/8356.js +1 -1
- package/.next/server/chunks/8581.js +25 -29
- package/.next/server/chunks/8728.js +2 -2
- package/.next/server/chunks/8791.js +1 -1
- package/.next/server/chunks/8800.js +4 -4
- package/.next/server/chunks/8918.js +5 -5
- package/.next/server/chunks/9390.js +1 -1
- package/.next/server/chunks/9627.js +2 -1
- package/.next/server/chunks/9731.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- 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/pages/_error.js +2 -2
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/{2407-86890b00eeecf391.js → 2407-9703c569370b8a9d.js} +1 -1
- package/.next/static/chunks/{2619-a305ad4810f1393a.js → 2619-04bc32f026a0d946.js} +1 -1
- package/.next/static/chunks/2717.1583400c272dc1d9.js +1 -0
- package/.next/static/chunks/2770-db80aedf6384d594.js +1 -0
- package/.next/static/chunks/2863-6a07ec82fb52f4dd.js +1 -0
- package/.next/static/chunks/3201-c01f1feed69020e6.js +1 -0
- package/.next/static/chunks/4768-ad6f82f034f21eae.js +1 -0
- package/.next/static/chunks/5371-0dc947683e46e78c.js +1 -0
- package/.next/static/chunks/5794-4eee51ff1e878aa6.js +1 -0
- package/.next/static/chunks/5927-54315d21f323e204.js +1 -0
- package/.next/static/chunks/602-25e45a2422d2a3ea.js +1 -0
- package/.next/static/chunks/6606-02ddc006686a6b7d.js +1 -0
- package/.next/static/chunks/6654-f3534f35f16644bc.js +1 -0
- package/.next/static/chunks/7730-011e137be64403ae.js +1 -0
- package/.next/static/chunks/8165-263172c17ae8e8c3.js +1 -0
- package/.next/static/chunks/{8407-9a72e6f07c5d5458.js → 8407-155f84e5ba05f1d5.js} +1 -1
- package/.next/static/chunks/8606-cf6bdbff44a764cf.js +1 -0
- package/.next/static/chunks/934-a37509667baa86ee.js +1 -0
- package/.next/static/chunks/9465-e5a351baa941f31b.js +1 -0
- package/.next/static/chunks/app/layout-3e357690446cd2da.js +1 -0
- package/.next/static/chunks/app/repositories/page-71f5a5ac29b0370d.js +1 -0
- package/.next/static/chunks/app/review/page-e2fd4a590646a2d8.js +1 -0
- package/.next/static/chunks/app/sessions/page-9859ed61e93e6890.js +1 -0
- package/.next/static/chunks/app/skills/[skillId]/page-52ba58712faf3378.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-effbf0796881dd5a.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/terminal/{page-c601f3b3ece6557e.js → page-373ea37b16d930c7.js} +1 -1
- package/.next/static/chunks/{webpack-ee3ccbe378c4aa06.js → webpack-468b7b33030234b3.js} +1 -1
- package/.next/static/css/743f79ff19ab91e9.css +1 -0
- package/.next/trace +13 -13
- package/dist/cli/commands/wait.d.ts.map +1 -1
- package/dist/cli/commands/wait.js +6 -1
- package/dist/cli/types/api-responses.d.ts +8 -6
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/lib/polling/auto-yes-suppression-reason.d.ts +13 -1
- package/dist/lib/polling/auto-yes-suppression-reason.d.ts.map +1 -1
- package/dist/lib/polling/auto-yes-suppression-reason.js +3 -0
- package/dist/server/locales/en/worktree.json +46 -16
- package/dist/server/locales/ja/worktree.json +46 -16
- package/dist/server/src/config/activity-bar-config.js +56 -9
- package/dist/server/src/lib/assistant-response-saver.js +13 -0
- package/dist/server/src/lib/auto-yes-poller.js +252 -54
- package/dist/server/src/lib/conversation-logger.js +14 -2
- package/dist/server/src/lib/db/chat-db.js +2 -1
- package/dist/server/src/lib/history/user-turn-recorder.js +14 -0
- package/dist/server/src/lib/hooks/sources/antigravity/history.js +28 -0
- package/dist/server/src/lib/hooks/sources/claude/history.js +7 -0
- package/dist/server/src/lib/hooks/sources/codex/history.js +7 -0
- package/dist/server/src/lib/hooks/sources/command-code/history.js +7 -0
- package/dist/server/src/lib/hooks/sources/transcript-history.js +34 -0
- package/dist/server/src/lib/log-manager.js +7 -2
- package/dist/server/src/lib/polling/auto-yes-enter-fallback-state.js +22 -3
- package/dist/server/src/lib/polling/auto-yes-poller-state.js +234 -0
- package/dist/server/src/lib/polling/auto-yes-suppression-reason.js +3 -0
- package/dist/server/src/lib/polling/pending-scraped-response.js +119 -3
- package/dist/server/src/lib/polling/poller-owner.js +110 -0
- package/dist/server/src/lib/polling/prompt-dedup-state.js +26 -7
- package/dist/server/src/lib/polling/prompt-dedup.js +50 -22
- package/dist/server/src/lib/polling/response-checker.js +212 -36
- package/dist/server/src/lib/polling/response-dedup.js +112 -20
- package/dist/server/src/lib/polling/response-poller-core.js +178 -38
- package/dist/server/src/lib/polling/structured-history-gate.js +20 -1
- package/dist/server/src/lib/prompt-answer-sender.js +59 -12
- package/dist/server/src/lib/realtime/terminal-broadcast.js +14 -0
- package/dist/server/src/lib/session/chat-turn-progress.js +57 -6
- package/dist/server/src/lib/session/current-output-builder.js +19 -0
- package/dist/server/src/lib/session/next-action-helper.js +2 -15
- package/dist/server/src/lib/session/worktree-session-reconcile.js +83 -10
- package/dist/server/src/lib/timer-manager.js +7 -0
- package/dist/server/src/lib/tmux/tmux.js +24 -2
- package/dist/server/src/lib/verification/env-clean-gate.js +41 -0
- package/dist/server/src/lib/verification/gate-runner.js +17 -11
- package/dist/server/src/lib/verification/scope-gate.js +169 -3
- package/dist/server/src/types/sidebar.js +1 -0
- package/docs/en/architecture.md +26 -14
- package/docs/en/user-guide/webapp-guide.md +31 -18
- package/package.json +1 -1
- package/release-notes/0.46.0.json +110 -0
- package/release-notes/0.46.1.json +40 -0
- package/.next/server/chunks/1674.js +0 -15
- package/.next/server/chunks/5625.js +0 -25
- package/.next/server/chunks/6927.js +0 -1
- package/.next/server/chunks/9355.js +0 -1
- package/.next/static/chunks/1642-0f1bf8fb8161e10a.js +0 -1
- package/.next/static/chunks/2770-827a64760bab8a3a.js +0 -1
- package/.next/static/chunks/3922.0bc2e4e168d2b522.js +0 -1
- package/.next/static/chunks/4727-4c69d1aa4118cc09.js +0 -1
- package/.next/static/chunks/4768-fc0aa1d0891cac08.js +0 -1
- package/.next/static/chunks/5371-af1c2b68e983da61.js +0 -1
- package/.next/static/chunks/5521-c358c31f60e5e689.js +0 -1
- package/.next/static/chunks/6192-a67df090838b9aad.js +0 -1
- package/.next/static/chunks/6322-f1b30ed0ee43518f.js +0 -1
- package/.next/static/chunks/6654-ac431270fac1a283.js +0 -1
- package/.next/static/chunks/8165-3525fb42f1b4976e.js +0 -1
- package/.next/static/chunks/8318-01e7d1e5ad0a15a3.js +0 -1
- package/.next/static/chunks/8606-79c36d4c204bbd38.js +0 -1
- package/.next/static/chunks/9619-6c17a271f7f98fbb.js +0 -1
- package/.next/static/chunks/998-2eb5883186abd0bd.js +0 -1
- package/.next/static/chunks/app/layout-eaa6365f8f942e88.js +0 -1
- package/.next/static/chunks/app/repositories/page-6f7511f4ac8449e2.js +0 -1
- package/.next/static/chunks/app/review/page-95f749caae382f46.js +0 -1
- package/.next/static/chunks/app/sessions/page-ebfed2c80e916fb8.js +0 -1
- package/.next/static/chunks/app/skills/[skillId]/page-e4b14031f946c007.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-3372b78fde232b1f.js +0 -1
- package/.next/static/css/6faeb04a0b6819d4.css +0 -1
- /package/.next/static/{vYIpFRCU_Mt0wtG8F_3-6 → QxDf7lm-JJkWoj-TyWiSB}/_buildManifest.js +0 -0
- /package/.next/static/{vYIpFRCU_Mt0wtG8F_3-6 → QxDf7lm-JJkWoj-TyWiSB}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=2908,exports.ids=[850,2839,2908,5220,9130],exports.modules={2669:(a,b,c)=>{c.d(b,{JI:()=>n,M7:()=>d,Sr:()=>h,Zf:()=>f,c7:()=>e,lU:()=>k,mR:()=>j,qO:()=>i,su:()=>m,wQ:()=>l});let d="SESSION_STARTING",e="SESSION_START_FAILED",f="SESSION_START_UNAVAILABLE",g=[d,e];class h extends Error{constructor(a,b,c){super(`${a} did not reach its input prompt within ${Math.round(c/1e3)}s (initialization timeout). The tmux session '${b}' and its process are still running, so this is a slow start, not a failed one — the message was not delivered, but nothing needs repairing. Retry the send in a few seconds, or run \`commandmate capture <worktree-id>\` to see what it is waiting on.`),this.toolName=a,this.sessionName=b,this.timeoutMs=c,this.code=d,this.name="SessionStartTimeoutError"}}function i(a,b){return`${a} exited before reaching its input prompt: the tmux session '${b}' is back at a shell, so this is not a slow start and waiting will not help. The message was not delivered. Run \`commandmate capture <worktree-id>\` to see why it exited (for example a startup dialog answered with exit, or a missing login), fix that, then send again.`}class j extends Error{constructor(a,b,c){super(`${a} reported an error while starting in tmux session '${b}': "${c}". Retrying will not help until that is resolved; run \`commandmate capture <worktree-id>\` to see the session output.`),this.toolName=a,this.sessionName=b,this.detectedPattern=c,this.code=e,this.name="SessionStartFailedError"}}class k extends Error{constructor(a,b=`${a} is not installed. Please install it first.`){super(b),this.toolName=a,this.code=f,this.name="SessionStartUnavailableError"}}function l(a){return o(a)===d}function m(a){let b=o(a);return void 0!==b&&g.includes(b)}function n(a){return o(a)===f}function o(a){if("object"!=typeof a||null===a)return;let b=a.code;return"string"==typeof b?b:void 0}},22354:(a,b,c)=>{c.d(b,{F0:()=>j.F,K9:()=>e.K9,VM:()=>d.VM,_0:()=>f._0,c1:()=>k.c,o:()=>i.o,vm:()=>h.v,y_:()=>g.y_});var d=c(59409);c(66101);var e=c(45567);c(57510),c(38367);var f=c(25071),g=c(50474),h=c(70997),i=c(77904),j=c(76835),k=c(2734)},39687:(a,b,c)=>{c.d(b,{d:()=>t});var d=c(56791),e=c(8360),f=c(15194),g=c(95220),h=c(12462),i=c(43015),j=c(54325),k=c(72626),l=c(34331),m=c(40964),n=c(58707),o=c(2669),p=c(49319);let q=(0,k.h)("session/send-user-message");function r(a){return a instanceof Error?a.message:String(a)}async function s(a,b){let c=`${a}:${b}`,d=Date.now()+5e3;for(;(0,g.getActivePollers)().includes(c);){if(Date.now()>=d)return!1;await new Promise(a=>setTimeout(a,100))}return!0}async function t(a,b){let{worktreeId:c,content:k,cliToolId:t,instanceId:u,absoluteImagePath:v,copilotModel:w}=b,x=b.messageType??"normal",y=u??t,z=e.CLIToolManager.getInstance().getTool(t),A=(0,m.mf)(t,c,u),B=await (0,l.L)(c,A,a);if(null===B||"foreign"===B.verdict)return q.warn("send-refused-foreign-session",{worktreeId:c,cliToolId:t,instanceId:y,sessionName:A,sessionPath:B?.sessionPath??null,reason:B?"foreign":"worktree_not_found"}),{ok:!1,stage:"foreign_session",error:B?`tmux session "${A}" belongs to another CommandMate server`:`Worktree '${c}' not found; cannot confirm tmux session "${A}" is this server's`};let C=await (0,n.a3)(c,t,u,{ignoreStructured:b.ignoreStructuredPromptGuard});if(C.waiting)return q.info("send-refused-prompt-waiting",{worktreeId:c,cliToolId:t,reason:C.reason,blockedBy:C.blockedBy}),{ok:!1,stage:"prompt_waiting",error:(0,n.br)(c,C.blockedBy)};if(w&&"copilot"===t){try{await z.sendModelCommand(c,w,u),q.info("copilot-model-command-sent",{model:w})}catch(a){return q.error("failed-to-send-model-command:",{error:r(a)}),{ok:!1,stage:"model",error:r(a)}}await s(c,y)||q.warn("previous-turn-poller-still-running",{worktreeId:c,instanceId:y,waitedMs:5e3})}let D=new Date;try{await (0,h.o4)(a,c,t,D,u)}catch(a){q.error("failed-to-save-pending-assistant-response:",{error:r(a)})}let E=null;try{let b=(0,d.getMessages)(a,c,{limit:1,cliToolId:t,instanceId:y,matchResolvedInstance:!0});b.length>0&&"user"===b[0].role&&b[0].content===k&&(E=b[0].id)}catch(a){q.error("failed-to-detect-orphaned-messages:",{error:r(a)})}try{v?(0,f._J)(z)?await z.sendMessageWithImage(c,k,v,u):await z.sendMessage(c,(0,p.TZ)(k,v),u):await z.sendMessage(c,k,u)}catch(a){if(q.error("failed-to-send-message-to:",{error:r(a)}),(0,o.wQ)(a))return{ok:!1,stage:"send",error:a.message,code:o.M7};return{ok:!1,stage:"send",error:r(a)}}let F=(0,d.createMessage)(a,{worktreeId:c,role:"user",content:k,messageType:x,timestamp:D,cliToolId:t,instanceId:u,requestId:b.requestId});try{(0,i.broadcastMessage)("message",{worktreeId:c,message:{...F,cliToolId:t,instanceId:y}})}catch(a){q.warn("user-message-broadcast-failed",{error:r(a)})}if(E)try{if((0,d.deleteMessageById)(a,E)){q.info("cleaned-up-orphaned-user");try{(0,i.broadcastMessage)(j.dz,{worktreeId:c,cliToolId:t,instanceId:y,reason:"orphan_cleanup"})}catch(a){q.warn("orphan-cleanup-broadcast-failed",{error:r(a)})}}}catch(a){q.error("failed-to-clean-up-orphaned-message:",{error:r(a)})}return(0,d.updateLastUserMessage)(a,c,k,D),(0,d.clearInProgressMessageId)(a,c,t,u),q.info("cleared-in-progress-message"),(0,g.startPolling)(c,t,u),{ok:!0,message:F}}},50474:(a,b,c)=>{c.d(b,{y_:()=>d});function d(a){var b=a.noDecision;switch(b.kind){case"proceeds":return{safe:!0,blocksForMs:0,summary:"the agent continues with its own approval flow"};case"blocks":return{safe:!1,blocksForMs:null,summary:"the agent waits indefinitely; nothing else will unblock it"};case"blocksUntil":return{safe:!1,blocksForMs:b.timeoutMs,summary:`the agent waits up to ${b.timeoutMs}ms before continuing`}}}},58707:(a,b,c)=>{c.d(b,{$n:()=>k,a3:()=>l,br:()=>m});var d=c(8360),e=c(31990),f=c(95595),g=c(34405),h=c(72626),i=c(30008);let j=(0,h.h)("prompt-waiting-guard"),k="PROMPT_WAITING";async function l(a,b,c,h){try{let k=d.CLIToolManager.getInstance().getTool(b);if(!await k.isRunning(a,c))return{waiting:!1};let l=await (0,e.Wh)(a,b,g._,c),m=(0,f.WC)(l,b),n=(0,i._G)({worktreeId:a,cliToolId:b,instanceId:c,scraper:{status:m.status,reason:m.reason,hasActivePrompt:m.hasActivePrompt},ignoreStructured:h?.ignoreStructured});if(!n.blocksSend)return null!==n.structuredSendBlockSuppressed&&j.info("structured-send-guard-not-applied",{worktreeId:a,cliToolId:b,instanceId:c,suppressed:n.structuredSendBlockSuppressed,promptWaitingSince:n.structured?.at??null}),{waiting:!1};return{waiting:!0,reason:n.blockReason??void 0,blockedBy:n.blockedBy??void 0}}catch(c){return j.warn("prompt-waiting-check-failed",{worktreeId:a,cliToolId:b,error:c instanceof Error?c.message:String(c)}),{waiting:!1}}}function m(a,b){let c=`${a} is waiting on a prompt. Sending now would type into the prompt's input line instead of reaching the agent, and would leave that text in place for the next answer. Answer the prompt first: \`commandmate respond ${a} <answer>\`.`;if("structured"!==b)return c;let d=Math.round(i.j0/6e4);return`${c} This dialog was reported by the agent's own hooks and is not visible to the terminal scraper, so if the pane looks idle the record has outlived its dialog: it stops blocking sends ${d} minutes after it was reported, or immediately with \`commandmate send ${a} <message> --ignore-structured-prompt\` (server-wide: ${i.F1}=off).`}},85775:(a,b,c)=>{c.d(b,{Tm:()=>p,x4:()=>n,xJ:()=>o});var d=c(34129),e=c(8360),f=c(88807),g=c(72626),h=c(87374),i=c(39687),j=c(36925);let k=(0,g.h)("timer-manager");function l(){return(0,j.v)("__timerManagerState",()=>({timers:new Map,timerWorktrees:new Map,initialized:!1}))}async function m(a){let b=l(),c=(0,f.getDbInstance)();try{let b=(0,d.kx)(c,a);if(!b||"pending"!==b.status)return;let f=e.CLIToolManager.getInstance().getTool(b.cliToolId),g=b.instanceId
|
|
1
|
+
"use strict";exports.id=2908,exports.ids=[850,2839,2908,5220,9130],exports.modules={2669:(a,b,c)=>{c.d(b,{JI:()=>n,M7:()=>d,Sr:()=>h,Zf:()=>f,c7:()=>e,lU:()=>k,mR:()=>j,qO:()=>i,su:()=>m,wQ:()=>l});let d="SESSION_STARTING",e="SESSION_START_FAILED",f="SESSION_START_UNAVAILABLE",g=[d,e];class h extends Error{constructor(a,b,c){super(`${a} did not reach its input prompt within ${Math.round(c/1e3)}s (initialization timeout). The tmux session '${b}' and its process are still running, so this is a slow start, not a failed one — the message was not delivered, but nothing needs repairing. Retry the send in a few seconds, or run \`commandmate capture <worktree-id>\` to see what it is waiting on.`),this.toolName=a,this.sessionName=b,this.timeoutMs=c,this.code=d,this.name="SessionStartTimeoutError"}}function i(a,b){return`${a} exited before reaching its input prompt: the tmux session '${b}' is back at a shell, so this is not a slow start and waiting will not help. The message was not delivered. Run \`commandmate capture <worktree-id>\` to see why it exited (for example a startup dialog answered with exit, or a missing login), fix that, then send again.`}class j extends Error{constructor(a,b,c){super(`${a} reported an error while starting in tmux session '${b}': "${c}". Retrying will not help until that is resolved; run \`commandmate capture <worktree-id>\` to see the session output.`),this.toolName=a,this.sessionName=b,this.detectedPattern=c,this.code=e,this.name="SessionStartFailedError"}}class k extends Error{constructor(a,b=`${a} is not installed. Please install it first.`){super(b),this.toolName=a,this.code=f,this.name="SessionStartUnavailableError"}}function l(a){return o(a)===d}function m(a){let b=o(a);return void 0!==b&&g.includes(b)}function n(a){return o(a)===f}function o(a){if("object"!=typeof a||null===a)return;let b=a.code;return"string"==typeof b?b:void 0}},22354:(a,b,c)=>{c.d(b,{F0:()=>j.F,K9:()=>e.K9,VM:()=>d.VM,_0:()=>f._0,c1:()=>k.c,o:()=>i.o,vm:()=>h.v,y_:()=>g.y_});var d=c(59409);c(66101);var e=c(45567);c(57510),c(38367);var f=c(25071),g=c(50474),h=c(70997),i=c(77904),j=c(76835),k=c(2734)},39687:(a,b,c)=>{c.d(b,{d:()=>t});var d=c(56791),e=c(8360),f=c(15194),g=c(95220),h=c(12462),i=c(43015),j=c(54325),k=c(72626),l=c(34331),m=c(40964),n=c(58707),o=c(2669),p=c(49319);let q=(0,k.h)("session/send-user-message");function r(a){return a instanceof Error?a.message:String(a)}async function s(a,b){let c=`${a}:${b}`,d=Date.now()+5e3;for(;(0,g.getActivePollers)().includes(c);){if(Date.now()>=d)return!1;await new Promise(a=>setTimeout(a,100))}return!0}async function t(a,b){let{worktreeId:c,content:k,cliToolId:t,instanceId:u,absoluteImagePath:v,copilotModel:w}=b,x=b.messageType??"normal",y=u??t,z=e.CLIToolManager.getInstance().getTool(t),A=(0,m.mf)(t,c,u),B=await (0,l.L)(c,A,a);if(null===B||"foreign"===B.verdict)return q.warn("send-refused-foreign-session",{worktreeId:c,cliToolId:t,instanceId:y,sessionName:A,sessionPath:B?.sessionPath??null,reason:B?"foreign":"worktree_not_found"}),{ok:!1,stage:"foreign_session",error:B?`tmux session "${A}" belongs to another CommandMate server`:`Worktree '${c}' not found; cannot confirm tmux session "${A}" is this server's`};let C=await (0,n.a3)(c,t,u,{ignoreStructured:b.ignoreStructuredPromptGuard});if(C.waiting)return q.info("send-refused-prompt-waiting",{worktreeId:c,cliToolId:t,reason:C.reason,blockedBy:C.blockedBy}),{ok:!1,stage:"prompt_waiting",error:(0,n.br)(c,C.blockedBy)};if(w&&"copilot"===t){try{await z.sendModelCommand(c,w,u),q.info("copilot-model-command-sent",{model:w})}catch(a){return q.error("failed-to-send-model-command:",{error:r(a)}),{ok:!1,stage:"model",error:r(a)}}await s(c,y)||q.warn("previous-turn-poller-still-running",{worktreeId:c,instanceId:y,waitedMs:5e3})}let D=new Date;try{await (0,h.o4)(a,c,t,D,u)}catch(a){q.error("failed-to-save-pending-assistant-response:",{error:r(a)})}let E=null;try{let b=(0,d.getMessages)(a,c,{limit:1,cliToolId:t,instanceId:y,matchResolvedInstance:!0});b.length>0&&"user"===b[0].role&&b[0].content===k&&(E=b[0].id)}catch(a){q.error("failed-to-detect-orphaned-messages:",{error:r(a)})}try{v?(0,f._J)(z)?await z.sendMessageWithImage(c,k,v,u):await z.sendMessage(c,(0,p.TZ)(k,v),u):await z.sendMessage(c,k,u)}catch(a){if(q.error("failed-to-send-message-to:",{error:r(a)}),(0,o.wQ)(a))return{ok:!1,stage:"send",error:a.message,code:o.M7};return{ok:!1,stage:"send",error:r(a)}}let F=(0,d.createMessage)(a,{worktreeId:c,role:"user",content:k,messageType:x,timestamp:D,cliToolId:t,instanceId:u,requestId:b.requestId});try{(0,i.broadcastMessage)("message",{worktreeId:c,message:{...F,cliToolId:t,instanceId:y}})}catch(a){q.warn("user-message-broadcast-failed",{error:r(a)})}if(E)try{if((0,d.deleteMessageById)(a,E)){q.info("cleaned-up-orphaned-user");try{(0,i.broadcastMessage)(j.dz,{worktreeId:c,cliToolId:t,instanceId:y,reason:"orphan_cleanup"})}catch(a){q.warn("orphan-cleanup-broadcast-failed",{error:r(a)})}}}catch(a){q.error("failed-to-clean-up-orphaned-message:",{error:r(a)})}return(0,d.updateLastUserMessage)(a,c,k,D),(0,d.clearInProgressMessageId)(a,c,t,u),q.info("cleared-in-progress-message"),(0,g.startPolling)(c,t,u),{ok:!0,message:F}}},50474:(a,b,c)=>{c.d(b,{y_:()=>d});function d(a){var b=a.noDecision;switch(b.kind){case"proceeds":return{safe:!0,blocksForMs:0,summary:"the agent continues with its own approval flow"};case"blocks":return{safe:!1,blocksForMs:null,summary:"the agent waits indefinitely; nothing else will unblock it"};case"blocksUntil":return{safe:!1,blocksForMs:b.timeoutMs,summary:`the agent waits up to ${b.timeoutMs}ms before continuing`}}}},58707:(a,b,c)=>{c.d(b,{$n:()=>k,a3:()=>l,br:()=>m});var d=c(8360),e=c(31990),f=c(95595),g=c(34405),h=c(72626),i=c(30008);let j=(0,h.h)("prompt-waiting-guard"),k="PROMPT_WAITING";async function l(a,b,c,h){try{let k=d.CLIToolManager.getInstance().getTool(b);if(!await k.isRunning(a,c))return{waiting:!1};let l=await (0,e.Wh)(a,b,g._,c),m=(0,f.WC)(l,b),n=(0,i._G)({worktreeId:a,cliToolId:b,instanceId:c,scraper:{status:m.status,reason:m.reason,hasActivePrompt:m.hasActivePrompt},ignoreStructured:h?.ignoreStructured});if(!n.blocksSend)return null!==n.structuredSendBlockSuppressed&&j.info("structured-send-guard-not-applied",{worktreeId:a,cliToolId:b,instanceId:c,suppressed:n.structuredSendBlockSuppressed,promptWaitingSince:n.structured?.at??null}),{waiting:!1};return{waiting:!0,reason:n.blockReason??void 0,blockedBy:n.blockedBy??void 0}}catch(c){return j.warn("prompt-waiting-check-failed",{worktreeId:a,cliToolId:b,error:c instanceof Error?c.message:String(c)}),{waiting:!1}}}function m(a,b){let c=`${a} is waiting on a prompt. Sending now would type into the prompt's input line instead of reaching the agent, and would leave that text in place for the next answer. Answer the prompt first: \`commandmate respond ${a} <answer>\`.`;if("structured"!==b)return c;let d=Math.round(i.j0/6e4);return`${c} This dialog was reported by the agent's own hooks and is not visible to the terminal scraper, so if the pane looks idle the record has outlived its dialog: it stops blocking sends ${d} minutes after it was reported, or immediately with \`commandmate send ${a} <message> --ignore-structured-prompt\` (server-wide: ${i.F1}=off).`}},85775:(a,b,c)=>{c.d(b,{Tm:()=>p,x4:()=>n,xJ:()=>o});var d=c(34129),e=c(8360),f=c(88807),g=c(72626),h=c(87374),i=c(39687),j=c(36925);let k=(0,g.h)("timer-manager");function l(){return(0,j.v)("__timerManagerState",()=>({timers:new Map,timerWorktrees:new Map,initialized:!1}))}async function m(a){let b=l(),c=(0,f.getDbInstance)();try{let b=(0,d.kx)(c,a);if(!b||"pending"!==b.status)return;let f=e.CLIToolManager.getInstance().getTool(b.cliToolId),g=b.instanceId,j=await f.isRunning(b.worktreeId,g),l=(0,d.kx)(c,a);if(!l||"pending"!==l.status)return;if(!j){k.warn("timer:no-session",{timerId:a,worktreeId:b.worktreeId,instanceId:g}),(0,d.j2)(c,a,h.HR.NO_SESSION);return}(0,d.j2)(c,a,"sending");let m=await (0,i.d)(c,{worktreeId:b.worktreeId,content:b.message,cliToolId:b.cliToolId,instanceId:g});if(!m.ok){let b=`[${m.stage}] ${m.error}`;(0,d.j2)(c,a,"failed",void 0,b),k.error("timer:send-failed",{timerId:a,stage:m.stage,error:m.error});return}(0,d.j2)(c,a,"sent",Date.now()),k.info("timer:sent",{timerId:a,worktreeId:b.worktreeId})}catch(e){let b=e instanceof Error?e.message:String(e);try{(0,d.j2)(c,a,"failed",void 0,b)}catch{}k.error("timer:send-failed",{timerId:a,error:b})}finally{b.timers.delete(a),b.timerWorktrees.delete(a)}}function n(a,b,c){let d=l(),e=setTimeout(()=>{m(a)},c);d.timers.set(a,e),d.timerWorktrees.set(a,b)}function o(a){let b=l(),c=b.timers.get(a);c&&(clearTimeout(c),b.timers.delete(a),b.timerWorktrees.delete(a));let e=(0,f.getDbInstance)();(0,d.Ud)(e,a)}function p(a){let b=l(),c=(0,f.getDbInstance)();for(let[c,d]of b.timerWorktrees)if(d===a){let a=b.timers.get(c);a&&clearTimeout(a),b.timers.delete(c),b.timerWorktrees.delete(c)}(0,d.$$)(c,a)}},95220:(a,b,c)=>{c.r(b),c.d(b,{accumulateTuiContent:()=>g.IZ,cleanClaudeResponse:()=>f.NN,cleanCopilotResponse:()=>f.LH,cleanGeminiResponse:()=>f.IS,cleanOpenCodeResponse:()=>f.aW,clearPromptHashCache:()=>h.iX,clearTuiAccumulator:()=>g.q1,extractCopilotContentLines:()=>g.o0,extractTuiContentLines:()=>g.K0,findOverlapIndex:()=>g.vQ,getAccumulatedContent:()=>g.Uz,getActivePollers:()=>d.KQ,initTuiAccumulator:()=>g.tb,isDuplicatePrompt:()=>h.gv,isOpenCodeComplete:()=>e.bE,migrateResponsePollerWorktreeIds:()=>d.sR,normalizeCopilotLine:()=>g.IW,normalizePromptForDedup:()=>h.zm,renamePromptHashCacheKey:()=>h.i2,resolveExtractionStartIndex:()=>e.QM,startPolling:()=>d.g8,stopAllPolling:()=>d.fq,stopPolling:()=>d.Et,truncateMessage:()=>f.Sj});var d=c(45146),e=c(60),f=c(82450),g=c(13033),h=c(72457)}};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";exports.id=2984,exports.ids=[2984],exports.modules={60:(a,b,c)=>{c.d(b,{QM:()=>h,V0:()=>e,ZX:()=>f,bE:()=>g});var d=c(61789);function e(a){let b=(0,d.x7)(a),c=(0,d.M4)(a,b);return{chromeStart:b,echoEnd:c,start:c+1,end:b>=0?b:a.length,headTruncated:c<0}}function f(a){let b=a.split("\n"),c=e(b.map(d.aJ));return c.start>=c.end?"":b.slice(c.start,c.end).join("\n")}function g(a){let b=a.split("\n"),c=e(b),f=c.start>=c.end?"":b.slice(c.start,c.end).join("\n");return d.$t.test(f)&&!d.kD.test(a)&&!d.Ty.test(a)}function h(a,b,c,d,e,f=!1){if(a=Math.max(0,a),"opencode"===d||"copilot"===d||f){let a=e(b);return a>=0?a+1:0}if("antigravity"===d||"command-code"===d){let c=e(b);return c>=0?c+1:Math.max(0,a)}if(a>=b||c){let a=e(40);return a>=0?a+1:0}if("codex"===d)return Math.max(0,a);if(a>=b-5){let a=e(50);return a>=0?a+1:Math.max(0,b-40)}return Math.max(0,a)}},8988:(a,b,c)=>{c.d(b,{R:()=>g});let d=/📄 Session log: (.+?\/([^\/\s]+\.jsonl))/,e=/Request ID: ([^\s\n]+)/,f=/Summary: (.+?)(?:\n─|$)/s;function g(a){let b={content:a},c=d.exec(a);c&&(b.logFileName=c[2],b.logFilePath=c[1]);let g=e.exec(a);g&&(b.requestId=g[1]);let h=f.exec(a);return h&&(b.summary=h[1].trim()),b}},9516:(a,b,c)=>{c.d(b,{Hu:()=>i,Ll:()=>j});let d=["type something","chat about this"],e=/^\s*\[[ xX]\]\s*/,f=/(?:…|\.\.\.)\s*$/,g=new Set(["yes","y","no","n"]);function h(a){return a.replace(e,"").replace(f,"").replace(/\s+/g," ").trim().toLowerCase()}function i(a,b){if("multiple_choice"!==a.type)return null;let c=function(a,b){let c=h(b);if(""===c)return null;let d=a.questions.map((a,b)=>({entry:a,index:b})).filter(({entry:a})=>(function(a,b){let[c,d]=a.length<=b.length?[a,b]:[b,a];return c.length<8?c===d:d.includes(c)})(h(a.question),c));return 1===d.length?d[0]:null}(b,a.question);if(null===c)return null;let{entry:f,index:g}=c,i=new Map(a.options.map(a=>[a.number,a])),j=[];for(let[a,b]of f.choices.entries()){var k;let c=a+1,d=i.get(c);if(!d||!function(a,b){if(""===a||""===b)return!1;if(a===b)return!0;let[c,d]=a.length<=b.length?[a,b]:[b,a];return!(c.length<8)&&d.startsWith(c)}(h(d.label),h(b.label)))return null;j.push({...d,label:`${(k=d.label,e.exec(k)?.[0]??"")}${b.label}`,...b.description?{description:b.description}:{}})}let l=[];for(let b of a.options)!(b.number<=f.choices.length)&&function(a){let b=h(a);return d.some(a=>b===a||b.startsWith(a))}(b.label)&&(j.push(b),l.push(b.number));return j.sort((a,b)=>a.number-b.number),{...a,question:f.question,options:j,isAskUserQuestion:!0,askUserQuestion:{...f.header?{header:f.header}:{},multiSelect:f.multiSelect,questionIndex:g,questionCount:b.questions.length,metaOptionNumbers:l}}}function j(a,b){let c=b.trim();if(/^\d+$/.test(c)){let b=Number.parseInt(c,10);return a.options.some(a=>a.number===b)?{ok:!0,input:String(b)}:{ok:!1,reason:"answer_out_of_range",message:"The option number is outside the range this prompt offers. Use `commandmate capture <worktree-id> --json` to list the current options."}}let d=function(a,b){let c=h(b);if(""===c)return[];let d=a.filter(a=>h(a.label)===c);return d.length>0?d:c.length<2?[]:a.filter(a=>h(a.label).startsWith(c))}(a.options,c);if(1===d.length){let[a]=d;return{ok:!0,input:String(a.number),resolved:{via:"semantic",optionNumber:a.number,optionLabel:a.label}}}return d.length>1?{ok:!1,reason:"unresolvable_answer",message:"The answer matches more than one option label. Answer with an option number."}:a.options.some(a=>!0===a.requiresTextInput)&&!g.has(c.toLowerCase())?{ok:!0,input:b}:{ok:!1,reason:"unresolvable_answer",message:"No option label matches the answer. Answer with an option number (yes/no is not resolved on a numbered picker — Issue #1681)."}}},18778:(a,b,c)=>{c.d(b,{T:()=>i});var d=c(56791),e=c(41364),f=c(72626),g=c(85038);let h=(0,f.h)("conversation-logger");async function i(a,b,c,f="claude",j={}){let{pollerKey:k}=j,l=void 0===k?void 0:()=>(0,g._B)(k);if(l&&!l())return void h.info("conversation:log-refused",{worktreeId:b,cliToolId:f});let m=(0,d.getLastUserMessage)(a,b);if(m)try{let a=await (0,e.hM)(b,m.content,c,f,{mayWrite:l});null===a&&h.info("conversation:log-refused",{worktreeId:b,cliToolId:f})}catch(a){h.error("conversation:log-failed",{error:a instanceof Error?a.message:String(a)})}}},21684:(a,b,c)=>{c.d(b,{U:()=>h});var d=c(33873),e=c.n(d),f=c(87447),g=c(8004);function h(){let a=e().join(process.cwd(),"data","logs");return(0,g.T)((0,f._p)("CM_LOG_DIR"),a,"CM_LOG_DIR")}},28480:(a,b,c)=>{c.d(b,{B9:()=>w,Bm:()=>q,TS:()=>y,Tq:()=>t,hB:()=>x,mQ:()=>o,r4:()=>r,t1:()=>s,vb:()=>v});var d=c(88807),e=c(56791),f=c(43015),g=c(18778),h=c(72626),i=c(71080),j=c(28918),k=c(31517),l=c(36925),m=c(85038);let n=(0,h.h)("response-poller"),o=k.sD.reduce((a,b)=>a+b,0),p=(0,l.v)("__pendingScrapedResponses",()=>new Map);function q(a){return p.has(a)}function r(a,b){if(!(0,m._B)(a)){let a=(0,m.Bh)();return n.info("pending-scrape-hold-refused",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:b.instanceId,generation:a?.generation}),!1}let c=p.get(a);return c?c.content=b.content:p.set(a,b),!0}function s(a){(0,m._B)(a)&&p.delete(a)}function t(a,b){if(!(0,m._B)(a))return!1;let c=p.get(a);return!!c&&(p.delete(a),u(c,b))}function u(a,b){try{let c=(0,d.getDbInstance)(),h=(0,e.createMessage)(c,{worktreeId:a.worktreeId,role:"assistant",content:a.content,messageType:"normal",timestamp:a.timestamp,cliToolId:a.cliToolId,instanceId:a.instanceId,summary:a.summary,logFileName:a.logFileName,requestId:a.requestId});return(0,f.broadcastMessage)("message",{worktreeId:a.worktreeId,message:h}),n.info("pending-scrape-flushed",{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId,reason:b,scrapedLength:a.content.length,heldForMs:Date.now()-a.timestamp.getTime()}),(0,g.T)(c,a.worktreeId,a.content,a.cliToolId).catch(()=>{}),!0}catch(c){return n.warn("pending-scrape-flush-failed",{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId,reason:b,error:c instanceof Error?c.message:String(c)}),!1}}async function v(a){if(!(0,m._B)(a))return;let b=p.get(a);if(!b||Date.now()<b.expiresAt)return;let c=await (0,j.captureStructuredHistoryTurn)(b.worktreeId,b.cliToolId,b.instanceId,{worktreePath:b.worktreePath,transcriptPathHint:b.transcriptPathHint});if(!(0,m._B)(a)||p.get(a)!==b)return void n.info("pending-scrape-settle-abandoned",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:b.instanceId,captured:c});if(c){p.delete(a),(0,i.oE)(a),n.info("pending-scrape-superseded",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:b.instanceId,heldForMs:Date.now()-b.timestamp.getTime()});return}p.delete(a),u(b,"hold-expired")}function w(){return Array.from(p.keys())}function x(a,b){let c=p.get(a);return!!c&&(p.set(a,{...c,worktreeId:b}),!0)}function y(a){let b=[];for(let{oldKey:c,newKey:d,newWorktreeId:e}of a){if(c===d)continue;let a=p.get(c);a&&(p.delete(c),b.push({newKey:d,pending:{...a,worktreeId:e}}))}for(let{newKey:a,pending:c}of b){let b=p.get(a);b&&(p.delete(a),u(b,"migration-displaced")),p.set(a,c)}}},34331:(a,b,c)=>{c.d(b,{L:()=>g});var d=c(88807),e=c(73753),f=c(96463);async function g(a,b,c=(0,d.getDbInstance)()){let h=(0,e.getWorktreeById)(c,a);return h?(0,f.s_)(b,h.path):null}},39217:(a,b,c)=>{c.d(b,{v7:()=>d.v7,DR:()=>d.DR,LP:()=>d.LP,XK:()=>d.XK,pL:()=>d.pL,GE:()=>d.GE,Ue:()=>d.Ue,aq:()=>d.aq,hN:()=>d.hN,kC:()=>d.kC,xU:()=>U,bZ:()=>V,W8:()=>d.W8,W5:()=>ai,BS:()=>ak,_i:()=>aj,_C:()=>al});var d=c(24455),e=c(31990),f=c(89253),g=c(77244),h=c(75498),i=c(91318),j=c(32236),k=c(61878),l=c(16402),m=c(51607),n=c(52767),o=c(88807),p=c(52660),q=c(34331),r=c(63869),s=c(4803),t=c(79892),u=c(8360),v=c(61789),w=c(85726),x=c(77093),y=c(93997),z=c(68901),A=c(72626),B=c(66007),C=c(36925),D=c(27675);let E=(0,A.h)("auto-yes-poller");function F(a){let b="multiple_choice"===a.type?a.options.map(a=>`${a.isDefault?">":""}${a.number}.${a.label}`).join("\n"):"";return[(0,w.J)(a),b,a.approvalTarget??""].join("\0")}function G(a,b,c,d){let e=`${c}\u0000${b}`;if(a.lastSkipWarnKey===e)return void E.debug(c,{...d,repeated:!0});a.lastSkipWarnKey=e,E.warn(c,d)}let H=(0,C.v)("__autoYesPartialAnswers",()=>new Map);function I(a,b){for(let c of(H.delete(a),[...J]))c.recordKey===a&&(void 0===b||c.screenKey===b)&&M(c)}let J=(0,C.v)("__autoYesSendAttempts",()=>new Set),K=(0,C.v)("__autoYesSendAttemptSeq",()=>({last:0}));function L(a,b,c=Date.now()){if("pending"!==a.state||(a.state="settled",J.delete(a),!b||(0,D.cr)(a.recordKey)!==a.recordEpoch))return;let d=H.get(a.recordKey);void 0!==d&&d.epoch===a.recordEpoch&&d.seq>a.seq||H.set(a.recordKey,{screenKey:a.screenKey,epoch:a.recordEpoch,at:c,seq:a.seq})}function M(a){"pending"===a.state&&(a.state="expired"),J.delete(a)}var N=c(52277);function O(a,b,c,d,e){let{worktreeId:f,cliToolId:g,instanceId:h}=a;(0,N.ZS)(f,g,h,b),G(a.pollerState,c,d,{worktreeId:f,cliToolId:g,instanceId:h,...e})}function P(a,b){let{promptData:c,frameKey:d}=a;O(a,{reason:"unclassified-frame",mode:null,promptType:c.type},`${d}\u0000${b.dialog?.kind??""}\u0000${b.mode}`,"poller:auto-yes-skipped-unclassified-frame",{promptType:c.type,dialogKind:b.dialog?.kind??null,answerMode:b.dialog?.answerMode??null,gateMode:b.mode})}let Q=(0,A.h)("auto-yes-poller"),R=(0,C.v)("__autoYesPollerStates",()=>new Map),S=(0,C.v)("__autoYesWithheldNoReceiptLoggedAt",()=>new Map);function T(a){return R.get(a)}function U(a){let b=T(a);return b?.lastServerResponseTimestamp??null}function V(a){return R.has(a)}function W(a,b){let c=Y(a,b);c&&(c.consecutiveErrors=0,c.currentInterval=d.ps)}function X(a,b){let c=Y(a,b);if(c&&(c.consecutiveErrors++,c.currentInterval=(0,d.G)(c.consecutiveErrors),c.consecutiveErrors>=z.ul)){let b=(0,d.Ue)(a),c=(0,d.pL)(a);c&&(0,d.XK)(b,c,"consecutive_errors",(0,d.GE)(a)??void 0),aj(a)}}function Y(a,b){let c=T(a);if(void 0===b||c===b)return c}function Z(a){return T(a.compositeKey)===a.pollerState}function $(a){if(!Z(a))return!1;let b=(0,d.aq)(a.worktreeId,a.cliToolId,a.instanceId);return b===a.grant&&!!b.enabled&&_(a)}function _(a){return(0,m.cr)(a.compositeKey)===a.sessionEpoch}function aa(a){Q.debug("poller:auto-yes-tick-superseded",{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId,pollerCurrent:Z(a)}),Z(a)&&ah(a)}async function ab(a,b,c,d){let f=c??z.FW,g=await (0,e.Wh)(a,b,f,d);return{raw:g,clean:(0,v._A)((0,v.aJ)(g))}}async function ac(a,b,c,d,g){let{worktreeId:n,cliToolId:o,instanceId:p,pollerState:r,promptData:w,frameKey:x}=a,z=null===c.dialog?(0,m.gp)(o,d):null;if(null===z||!z.eligible)return r.enterFallbackCandidateKey=null,P(a,c),!1;let A=(0,m.GR)(w);if(r.enterFallbackSentKey===x)return r.enterFallbackCandidateKey=null,(0,m.gq)(n,o,p,A),P(a,c),G(r,`${x}\u0000enter-fallback-no-effect`,"poller:auto-yes-enter-fallback-no-effect",{worktreeId:n,cliToolId:o,instanceId:p,promptType:w.type,refusalReason:z.refusalReason}),!1;let B=(0,i.n)(n,o,p),C=(0,h.sD)(w,B);if(C.suppressedBy)return r.enterFallbackCandidateKey=null,O(a,{reason:C.suppressedBy,mode:B?.mode??null,promptType:w.type,pattern:C.pattern},`${x}\u0000${C.suppressedBy}\u0000${B?.mode??""}\u0000${C.pattern??""}`,"poller:auto-yes-suppressed-by-policy",{reason:C.suppressedBy,mode:B?.mode??null,pattern:C.pattern,promptType:w.type,enterFallback:!0}),!1;if(null===C.answer||"multiple_choice"===w.type&&(0,s.eM)(w))return r.enterFallbackCandidateKey=null,P(a,c),!1;if(r.enterFallbackCandidateKey!==x)return r.enterFallbackCandidateKey=x,Q.debug("poller:auto-yes-enter-fallback-candidate",{worktreeId:n,cliToolId:o,instanceId:p,promptType:w.type}),!1;let D=u.CLIToolManager.getInstance().getTool(o).getSessionName(n,p),E=await (0,q.L)(n,D);if(void 0!==g&&!$(g))return!1;if(null===E||"foreign"===E.verdict)return G(r,`${x}\u0000${D}\u0000${E?"foreign":"worktree_not_found"}`,"poller:auto-yes-skipped-foreign-session",{worktreeId:n,cliToolId:o,instanceId:p,sessionName:D,sessionPath:E?.sessionPath??null,reason:E?"foreign":"worktree_not_found",enterFallback:!0}),!1;let H=await (0,e.WD)(n,o,(d??"").split("\n").length,p);if(void 0!==g&&!$(g))return!1;if(!function(a,b){let{worktreeId:c,cliToolId:d,instanceId:e,frameKey:g}=a,h=(0,v._A)((0,v.aJ)(b)),i=(0,k.zJ)(b,d),n=(0,f.$M)(h,d,h.split("\n"),b,{worktreeId:c,instanceId:e},i);if(!n.isPrompt||!n.promptData||F(n.promptData)!==g||"codex"===d&&((0,v.E6)(i)||(0,j.AD)(i)))return!1;let o=(0,l.r_)(d,n.promptData.type,i);return!o.allowed&&null===o.dialog&&(0,m.gp)(d,b).eligible}(a,H))return r.enterFallbackCandidateKey=null,Q.debug("poller:auto-yes-enter-fallback-fresh-frame-differs",{worktreeId:n,cliToolId:o,instanceId:p,promptType:w.type}),!1;try{await (0,t.KB)(D,["Enter"])}finally{(0,y.gm)(D)}return(void 0===g||Z(g)&&_(g))&&(r.enterFallbackSentKey=x,r.enterFallbackCandidateKey=null,(0,m.Wl)(n,o,p,{promptType:w.type,refusalReason:z.refusalReason,screenKey:A,...void 0!==g?{epoch:g.sessionEpoch}:{}})),Q.info("poller:auto-yes-enter-fallback-sent",{worktreeId:n,cliToolId:o,instanceId:p,promptType:w.type,refusalReason:z.refusalReason,composerState:z.composerState}),await ad(a,b,"[Enter]",g),!0}async function ad(a,b,d,e){let{worktreeId:f,cliToolId:g,instanceId:h,compositeKey:i,pollerState:j,promptData:k,promptKey:l}=a,m=void 0===e||_(e);m&&(!function(a,b,c){let d=Y(a,c);d&&(d.lastServerResponseTimestamp=b)}(i,Date.now(),e?.pollerState),W(i,e?.pollerState),j.lastAnsweredPromptKey=l,j.lastAnsweredAt=Date.now(),j.lastSkipWarnKey=null),Q.info("poller:response-sent",{worktreeId:f,cliToolId:g,instanceId:h,sameSession:m}),m&&(0,n.r)((0,o.getDbInstance)(),f,g,h??g,"prompt_answered_auto",{promptType:k.type});let q=null;try{q=(0,p.recordAnsweredPrompt)((0,o.getDbInstance)(),{worktreeId:f,cliToolId:g,instanceId:h??g,promptData:k,answer:d,answeredBy:"auto",content:b.rawContent||b.cleanContent,...m?{}:{pendingSavedAtOrBefore:e.startedAt}})}catch(a){Q.warn("poller:prompt-audit-record-failed",{worktreeId:f,cliToolId:g,instanceId:h,error:(0,x.u1)(a)})}if(q){let a=q;Promise.resolve().then(c.bind(c,43015)).then(({broadcastMessage:b})=>{b(a.created?"message":"message_updated",{worktreeId:f,message:a.message})}).catch(()=>{})}let[{startPolling:r},{broadcastTerminalSnapshotAfterInteraction:s}]=await Promise.all([c.e(2839).then(c.bind(c,95220)),Promise.resolve().then(c.bind(c,99508))]);m&&(void 0===e||_(e))&&(r(f,g,h),s(f,g,h))}async function ae(a,b,c,e,n,o,p,s){let t=(0,d.v7)(a,c,o),x=null;try{let z=(0,m.cr)(t);(b.enterFallbackEpoch??0)!==z&&(b.enterFallbackSentKey=null,b.enterFallbackCandidateKey=null,b.enterFallbackEpoch=z);let A=(0,k.zJ)(p??e,c),B=(0,f.$M)(e,c,n,p,{worktreeId:a,instanceId:o},A);if(!B.isPrompt||!B.promptData)return I(t),b.lastAnsweredPromptKey=null,b.lastAnsweredAt=null,b.lastSkipWarnKey=null,b.enterFallbackCandidateKey=null,"antigravity"!==c||B.isPrompt||function(a,b,c,d){if((0,g.FD)(a,"antigravity",b))return;let e=Date.now(),f=S.get(c);if(void 0!==f&&e-f<6e4)return;let h=d();if(h.isPrompt&&h.promptData){for(let[a,b]of S)e-b>=6e4&&S.delete(a);S.set(c,e),Q.info("antigravity-autoyes-withheld-no-hook-receipt",{worktreeId:a,instanceId:b??"antigravity",windowMs:g.Wo,hint:"hook の受信記録が直近に無いため Auto-Yes は答えなかった。~/.gemini/config/hooks.json の向き先(#2622)を確認"})}}(a,o,t,()=>(0,f.$M)(e,c,n,p)),"no_prompt";let C=(0,w.J)(B.promptData),D=F(B.promptData);if(b.lastAnsweredPromptKey===C&&null!==b.lastAnsweredAt&&Date.now()-b.lastAnsweredAt<d.UL)return"duplicate";let E={worktreeId:a,cliToolId:c,instanceId:o,compositeKey:t,pollerState:b,promptData:B.promptData,promptKey:C,frameKey:D},M=function(a){let b="multiple_choice"===a.type?a.options.map(a=>`${a.number}.${a.label}`).join("\n"):a.options.join("\n");return[(0,w.J)(a),b,(a.approvalTarget??"").split("\n").map(a=>a.replace(/^[\s\u276F\u203A>\u25B6\u25BA\u25CF\u25CB\u25C9\u2192]+/u,"")).join("\n")].join("\0")}(B.promptData),N=function(a,b){let c=H.get(a);return c?c.epoch!==b?(H.delete(a),null):c:null}(t,z);if(null!==N){if(N.screenKey===M)return O(E,{reason:"partial-answer",mode:null,promptType:B.promptData.type},`${D}\u0000partial-answer`,"poller:auto-yes-skipped-partial-answer",{promptType:B.promptData.type,stoppedAt:N.at}),"no_answer";I(t,N.screenKey)}if(function(a,b,c){for(let d of J)if(d.moved&&d.recordKey===a&&d.recordEpoch===b&&d.screenKey===c)return!0;return!1}(t,z,M))return G(b,`${D}\u0000moved-send-in-flight`,"poller:auto-yes-skipped-moved-send-in-flight",{worktreeId:a,cliToolId:c,instanceId:o,promptType:B.promptData.type}),"no_answer";let P=function(a,b){let{cliToolId:c,promptData:d,frameKey:e}=a,f="codex"===c?(0,v.E6)(b):null;if(f)return O(a,{reason:"agent-launch-dialog",mode:null,promptType:d.type},`${e}\u0000${f}`,"poller:auto-yes-skipped-launch-dialog",{dialog:f,promptType:d.type}),{kind:"left-alone"};if("codex"===c&&(0,j.AD)(b))return O(a,{reason:"unclassified-frame",mode:null,promptType:d.type},`${e}\u0000codex-model-picker`,"poller:auto-yes-skipped-model-picker",{promptType:d.type}),{kind:"left-alone"};let g=(0,l.r_)(c,d.type,b);return g.allowed?{kind:"ours"}:{kind:"dialog-gate-refused",dialogGate:g}}(E,A);if("dialog-gate-refused"!==P.kind&&(b.enterFallbackCandidateKey=null),"left-alone"===P.kind)return"no_answer";if("dialog-gate-refused"===P.kind)return await ac(E,B,P.dialogGate,p,s)?"responded":"no_answer";let R=(0,i.n)(a,c,o),T=(0,h.sD)(B.promptData,R);T.suppressedBy&&O(E,{reason:T.suppressedBy,mode:R?.mode??null,promptType:B.promptData.type,pattern:T.pattern},`${D}\u0000${T.suppressedBy}\u0000${R?.mode??""}\u0000${T.pattern??""}`,"poller:auto-yes-suppressed-by-policy",{reason:T.suppressedBy,mode:R?.mode??null,pattern:T.pattern,promptType:B.promptData.type});let U=T.answer;if(null===U)return"no_answer";let V=u.CLIToolManager.getInstance().getTool(c).getSessionName(a,o),W=await (0,q.L)(a,V);if(void 0!==s&&!$(s))return"no_answer";if(null===W||"foreign"===W.verdict)return G(b,`${D}\u0000${V}\u0000${W?"foreign":"worktree_not_found"}`,"poller:auto-yes-skipped-foreign-session",{worktreeId:a,cliToolId:c,instanceId:o,sessionName:V,sessionPath:W?.sessionPath??null,reason:W?"foreign":"worktree_not_found"}),"no_answer";x=function(a,b,c){let d={seq:++K.last,screenKey:b,recordKey:a,recordEpoch:c,moved:!1,state:"pending"};return J.add(d),d}(t,M,s?.sessionEpoch??z);try{await (0,r.tV)({sessionName:V,answer:U,cliToolId:c,promptData:B.promptData,...void 0!==s?{stillCurrent:()=>$(s)}:{}})}finally{(0,y.gm)(V)}return L(x,!1),await ad(E,B,U,s),"responded"}catch(b){if(void 0!==s&&!$(s)){let d=b instanceof Error&&"keysSent"in b?!!b.keysSent:null;return null!==x&&L(x,!0===d),Q.info("poller:auto-yes-answer-abandoned",{worktreeId:a,cliToolId:c,instanceId:o,keysSent:d}),"no_answer"}return null!==x&&L(x,!1),X(t,s?.pollerState),Q.warn("poller:detect-respond-error",{worktreeId:a,cliToolId:c,instanceId:o}),"error"}}async function af(a,b,c,e){let f=(0,d.v7)(a,b,c),g=T(f);if(void 0!==e&&g!==e||"valid"!==function(a,b){if(!b)return"stopped";let c=(0,d.Ue)(a),e=(0,d.pL)(a);if(!e)return aj(a),"expired";let f=(0,d.GE)(a)??void 0,g=(0,d.aq)(c,e,f);return g?.enabled?"valid":(aj(a),"expired")}(f,g))return;let h=(0,d.aq)(a,b,c);if(!h?.enabled)return;let i={compositeKey:f,worktreeId:a,cliToolId:b,instanceId:c,pollerState:g,grant:h,sessionEpoch:(0,m.cr)(f),startedAt:Date.now()};try{let e=h.stopPattern?z.FW:z.Ke,{raw:j,clean:k}=await ab(a,b,e,c);if(!$(i))return void aa(i);g.waitingForSession&&(g.waitingForSession=!1,Q.info("poller:session-appeared",{worktreeId:a,cliToolId:b,instanceId:c}));let l=k.split("\n");if(function(a,b,c){if(b.stopCheckBaselineLength<0)return b.stopCheckBaselineLength=c.length,!1;let e=b.stopCheckBaselineLength;if(c.length>e){let f=c.substring(e);return b.stopCheckBaselineLength=c.length,(0,d.Cs)(a,f,aj)}return c.length<e&&(b.stopCheckBaselineLength=c.length),!1}(f,g,k))return;let m=await ae(a,g,b,k,l,c,j,i);if(!$(i))return void aa(i);if("error"!==m&&W(f,i.pollerState),"responded"===m)return void ah(i,d.ZO);if("no_prompt"===m){let a=l.slice(-d.Re).join("\n");if((0,v.ut)(b,a))return void ah(i,z.QN)}}catch(h){let e=await ag(a,b,c);if(!$(i))return void aa(i);if(e){g.waitingForSession||(g.waitingForSession=!0,Q.info("poller:waiting-for-session",{worktreeId:a,cliToolId:b,instanceId:c})),ah(i,d.BT);return}X(f,i.pollerState),Q.warn("poller:poll-error",{worktreeId:a,cliToolId:b,instanceId:c,error:(0,x.u1)(h)})}ah(i)}async function ag(a,b,c){try{return await (0,e.Qj)(a,b,c)==="absent"}catch{return!1}}function ah(a,b){if(!Z(a))return;let{worktreeId:c,cliToolId:e,instanceId:f,pollerState:g}=a,h=Math.max(b??g.currentInterval,d.ps);g.timerId=setTimeout(()=>{af(c,e,f,g)},h)}function ai(a,b,c){if(!(0,B.h6)(a))return{started:!1,reason:"invalid worktree ID"};let e=c??b,f=(0,d.aq)(a,b,e);if(!f?.enabled)return{started:!1,reason:"auto-yes not enabled"};let g=(0,d.v7)(a,b,e),h=T(g);if(!h&&R.size>=d.fC)return{started:!1,reason:"max concurrent pollers reached"};if(h&&h.cliToolId===b)return{started:!0,reason:"already_running"};h&&aj(g);let j={timerId:null,cliToolId:b,instanceId:e,consecutiveErrors:0,currentInterval:d.ps,lastServerResponseTimestamp:null,lastAnsweredPromptKey:null,lastAnsweredAt:null,stopCheckBaselineLength:-1,lastSkipWarnKey:null};return R.set(g,j),(0,i.ie)(g),j.timerId=setTimeout(()=>{af(a,b,e,j)},d.ps),Q.info("poller:started",{worktreeId:a,cliToolId:b,instanceId:e}),{started:!0}}function aj(a){(0,m.MR)(a);let b=T(a);b&&(b.timerId&&clearTimeout(b.timerId),R.delete(a),(0,i.ie)(a),Q.info("poller:stopped",{compositeKey:a}))}function ak(){for(let[a,b]of R.entries())b.timerId&&clearTimeout(b.timerId),(0,i.ie)(a),Q.info("poller:stopped",{compositeKey:a,reason:"shutdown"});for(let a of(R.clear(),(0,m.NR)(),H.clear(),[...J]))M(a)}function al(a,b){(0,d._9)(Array.from(R.keys()),a).forEach(a=>aj(a)),(0,m.vR)(a),b?.keepPartialAnswers||function(a){for(let b of(0,d._9)([...H.keys()],a))H.delete(b);let b=new Set((0,d._9)([...J].map(a=>a.recordKey),a));for(let a of[...J])b.has(a.recordKey)&&M(a)}(a)}},40043:(a,b,c)=>{c.d(b,{AD:()=>l,Q4:()=>h,ox:()=>k,xG:()=>m});var d=c(37717),e=c(33294),f=c(36925);let g=new Set([d.g.NO_RECENT_OUTPUT,d.g.UNKNOWN_FRAME,d.g.DEFAULT]);function h(a,b){return"running"===a&&g.has(b)}let i=e.STRUCTURED_STATE_MAX_AGE_MS,j=(0,f.v)("__lastKnownStatusByKey",()=>new Map);function k(a,b,c=Date.now()){for(let[a,b]of j)c-b.at>=i&&j.delete(a);for(;j.size>512;){let a=j.keys().next();if(a.done)break;j.delete(a.value)}"positive"===b.evidence&&(j.delete(a),j.set(a,{status:b.status,reason:b.reason,at:c}))}function l(a,b=Date.now()){let c=j.get(a);return void 0===c?null:b-c.at>=i?(j.delete(a),null):c}function m(a){j.delete(a)}},41364:(a,b,c)=>{c.d(b,{Gv:()=>o,hM:()=>n});var d=c(79748),e=c.n(d),f=c(33873),g=c.n(f),h=c(1634),i=c(21684),j=c(72626),k=c(15194);function l(a="claude"){return g().join((0,i.U)(),a)}async function m(a="claude"){let b=l(a);try{await e().access(b)}catch{await e().mkdir(b,{recursive:!0})}}async function n(a,b,c,d="claude",f={}){await m(d);let i=function(a,b="claude"){let c=(0,h.GP)(new Date,"yyyy-MM-dd"),d=`${a}-${c}.md`,e=l(b);return g().join(e,d)}(a,d),j=(0,h.GP)(new Date,"yyyy-MM-dd HH:mm:ss"),o="";try{o=await e().readFile(i,"utf-8")}catch{let b=(0,k.hR)(d)?k.ef[d]:d;o=`# ${b} Conversation Log: ${a}
|
|
2
|
+
|
|
3
|
+
Created: ${j}
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
`}o+=`## Conversation at ${j}
|
|
8
|
+
|
|
9
|
+
`,o+=`### User
|
|
10
|
+
|
|
11
|
+
`,o+=`${b}
|
|
12
|
+
|
|
13
|
+
`;let p=(0,k.hR)(d)?k.ef[d]:d;return(o+=`### ${p}
|
|
14
|
+
|
|
15
|
+
`,o+=`${c}
|
|
16
|
+
|
|
17
|
+
`,o+=`---
|
|
18
|
+
|
|
19
|
+
`,f.mayWrite&&!f.mayWrite())?null:(await e().writeFile(i,o,"utf-8"),i)}async function o(a,b="all"){let c="all"===b?[...k.XH]:[b],d=[];for(let b of c){await m(b);let c=l(b);try{let b=(await e().readdir(c)).filter(b=>b.startsWith(`${a}-`)&&b.endsWith(".md")).map(a=>g().join(c,a));d.push(...b)}catch{}}return d.sort().reverse()}(0,j.h)("log-manager")},44321:(a,b,c)=>{c.d(b,{DS:()=>h,LN:()=>f,XH:()=>g});var d=c(24455);let e=(0,c(36925).v)("__promptDedupSkips",()=>new Map);function f(a,b,c,g=Date.now()){let h=(0,d.v7)(a,b,c),i=e.get(h);e.set(h,{skippedCount:(i?.skippedCount??0)+1,lastSkippedAt:g})}function g(a,b,c){return e.get((0,d.v7)(a,b,c))??{skippedCount:0,lastSkippedAt:null}}function h(a){let b=[];for(let{oldWorktreeId:c,newWorktreeId:f,cliToolId:g,instanceId:h}of a){if(c===f)continue;let a=(0,d.v7)(c,g,h);b.push({newKey:(0,d.v7)(f,g,h),record:e.get(a)}),e.delete(a)}for(let{newKey:a,record:c}of b)void 0!==c&&e.set(a,c)}},45146:(a,b,c)=>{c.d(b,{Et:()=>B,KQ:()=>D,MN:()=>t,fq:()=>C,g8:()=>v,sR:()=>F});var d=c(72626),e=c(13033),f=c(72457),g=c(71080),h=c(44321),i=c(89253),j=c(28480),k=c(85038),l=c(99508),m=c(56455),n=c(40964),o=c(36925);let p=(0,d.h)("response-poller"),q=(0,o.v)("__responsePollerCoordinator",()=>({activePollers:new Map,pollingStartTimes:new Map,owners:new Map,running:new Map,pendingRestart:new Map,latestOwners:new Map,generationCounter:0,pausedOnPrompt:new Set}));q.pausedOnPrompt??=new Set,q.latestOwners??=new Map;let r=q.activePollers,s=q.pollingStartTimes;function t(a,b,c){return(0,k.pP)(a,b,c)}function u(a){return"opencode"===a||"copilot"===a}function v(a,b,c){let d=t(a,b,c),e={worktreeId:a,cliToolId:b,instanceId:c},f=q.running.get(d);if(f){if(f.owner.superseded=!0,Date.now()-f.since<6e4)return void q.pendingRestart.set(d,{target:e,behind:f.owner});p.warn("poller:restart-past-stalled-tick",{pollerKey:d,generation:f.owner.generation,runningForMs:Date.now()-f.since}),q.running.delete(d)}w(d,e)}function w(a,b){let c=q.pausedOnPrompt.has(a);A(a,{resume:c}),c&&p.info("poller:resumed-after-prompt",{pollerKey:a}),function(a){let b=t(a.worktreeId,a.cliToolId,a.instanceId);q.pollingStartTimes.set(b,Date.now()),u(a.cliToolId)&&(0,e.tb)(b),x(a.worktreeId,a.cliToolId,a.instanceId)}(b)}function x(a,b,c){let d=t(a,b,c);y({worktreeId:a,cliToolId:b,instanceId:c},function(a){let b=q.owners.get(a)??q.latestOwners.get(a);b&&(b.superseded=!0);let c={pollerKey:a,generation:++q.generationCounter,superseded:!1,stopped:!1,selfStopped:!1};return q.owners.set(a,c),q.latestOwners.set(a,c),c}(d))}function y(a,b){let c=setTimeout(()=>{z(a,b)},2e3);q.activePollers.set(b.pollerKey,c)}async function z(a,b){let c=b.pollerKey;if(!b.superseded&&!b.stopped){q.running.set(c,{owner:b,since:Date.now()});try{let d,e=q.pollingStartTimes.get(c);if(e&&Date.now()-e>18e5)return void A(c);try{d=await (0,m.y)(a.worktreeId,(0,n.mf)(a.cliToolId,a.worktreeId,a.instanceId))}catch(d){p.error("poller:ownership-check-failed",{pollerKey:c,error:d instanceof Error?d.message:String(d)}),b.superseded||b.stopped||y(a,b);return}if(null!==d){p.warn("poller:session-refused",{pollerKey:c,generation:b.generation,refusal:d}),b.superseded||b.stopped||A(c);return}let f=!1;try{f=await k.tV.run(b,()=>(0,i.zX)(a.worktreeId,a.cliToolId,a.instanceId))}catch(a){p.error("error:",{error:a instanceof Error?a.message:String(a)})}b.selfStopped&&function(a,b,c){if(c&&!u(b.cliToolId)){q.pausedOnPrompt.add(a.pollerKey),p.info("poller:paused-on-prompt",{pollerKey:a.pollerKey,generation:a.generation});return}(0,g.L1)(a.pollerKey)}(b,a,f),b.superseded||k.LF.run(b,()=>(0,l.broadcastTerminalSnapshot)(a.worktreeId,a.cliToolId,a.instanceId)),b.superseded||b.stopped||y(a,b)}finally{q.running.get(c)?.owner===b&&q.running.delete(c);let a=q.pendingRestart.get(c);a&&a.behind===b&&(q.pendingRestart.delete(c),w(c,a.target))}}}function A(a,b={}){let c=k.tV.getStore();if(c&&c.pollerKey===a&&(c.superseded||c.stopped))return void p.info("poller:stale-stop-ignored",{pollerKey:a,generation:c.generation});b.resume||(0,i.Tq)(a,"poller-stopped");let d=q.owners.get(a),h=void 0!==d&&c===d;d&&(d.stopped=!0,d.selfStopped=h,q.owners.delete(a)),q.pendingRestart.delete(a),q.pausedOnPrompt.delete(a);let j=q.activePollers.get(a);j&&(clearTimeout(j),q.activePollers.delete(a),q.pollingStartTimes.delete(a)),(0,e.q1)(a),(0,f.iX)(a),h||b.resume||(0,g.L1)(a)}function B(a,b,c){A(t(a,b,c))}function C(){for(let a of new Set([...Array.from(q.activePollers.keys()),...Array.from(q.owners.keys()),...Array.from(q.pausedOnPrompt)]))A(a);q.pendingRestart.clear(),q.pausedOnPrompt.clear()}function D(){return Array.from(q.activePollers.keys())}function E(a){let b=a.indexOf(":");return b<=0||b===a.length-1?null:{worktreeId:a.slice(0,b),instanceId:a.slice(b+1)}}function F(a,b){let c=new Map;for(let{oldId:b,newId:d}of a)b&&d&&b!==d&&c.set(b,d);if(0===c.size)return[];let d=[],i=[];for(let a of Array.from(r.keys())){let e=E(a);if(!e)continue;let f=c.get(e.worktreeId);if(!f)continue;let g=b(e.worktreeId,e.instanceId);if(!g){i.push({pollerKey:a,newWorktreeId:f});continue}d.push({oldKey:a,newKey:t(f,g,e.instanceId),newWorktreeId:f,cliToolId:g,instanceId:e.instanceId})}let k=new Map,l=d.filter(a=>{let b=q.running.get(a.oldKey);return void 0!==b&&b.owner===q.owners.get(a.oldKey)});for(let a of d){let b=r.get(a.oldKey);b&&clearTimeout(b),r.delete(a.oldKey);let c=q.owners.get(a.oldKey);c&&(c.superseded=!0,c.stopped=!0,q.owners.delete(a.oldKey)),q.pendingRestart.delete(a.oldKey),k.set(a.newKey,{startedAt:s.get(a.oldKey)}),s.delete(a.oldKey),(0,e.q1)(a.oldKey)}for(let{pollerKey:a,newWorktreeId:b}of i)(0,j.hB)(a,b),A(a),p.warn("poller:migrate-abandoned",{pollerKey:a});let m=new Set(i.map(({pollerKey:a})=>a)),n=[];for(let a of Array.from(q.pausedOnPrompt)){let b=E(a);if(!b)continue;let d=c.get(b.worktreeId);d&&n.push({oldKey:a,newKey:`${d}:${b.instanceId}`})}let o=[];for(let a of(0,j.B9)()){if(m.has(a))continue;let b=E(a);if(!b)continue;let d=c.get(b.worktreeId);d&&o.push({oldKey:a,newKey:`${d}:${b.instanceId}`,newWorktreeId:d})}let v=new Set([...d.map(a=>a.oldKey),...n.map(a=>a.oldKey),...o.map(a=>a.oldKey)]);for(let a of new Set([...d.map(a=>a.newKey),...n.map(a=>a.newKey),...o.map(a=>a.newKey)]))!(v.has(a)||m.has(a))&&(q.owners.has(a)||r.has(a)||q.pausedOnPrompt.has(a)||(0,j.Bm)(a))&&(A(a),p.warn("poller:migrate-displaced",{pollerKey:a}));for(let a of l)(0,g.L1)(a.oldKey);for(let a of((0,f.nZ)(d),(0,g.qt)([...d,...n]),(0,j.TS)(o),(0,h.DS)(d.flatMap(a=>{let b=E(a.oldKey);return b?[{oldWorktreeId:b.worktreeId,newWorktreeId:a.newWorktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId}]:[]})),d)){let b=k.get(a.newKey)?.startedAt;s.set(a.newKey,b??Date.now()),u(a.cliToolId)&&(0,e.tb)(a.newKey),x(a.newWorktreeId,a.cliToolId,a.instanceId)}for(let a of n)q.pausedOnPrompt.delete(a.oldKey);for(let a of n)q.pausedOnPrompt.add(a.newKey);return d}},50779:(a,b,c)=>{c.d(b,{GT:()=>m});var d=c(88807),e=c(43167),f=c(73753),g=c(72626),h=c(57836),i=c(4806),j=c(61191),k=c(27519);let l=(0,g.h)("push/resolution");async function m(a){let{worktreeId:b,agentName:c,at:g=Date.now()}=a,m=function(a,b=Date.now()){let c;if(!(0,k.lU)())return{send:!1,reason:"push-unconfigured"};if(!(0,i.r0)(a,b))return{send:!1,reason:"no-card"};if((0,h.Te)(a))return{send:!1,reason:"still-waiting"};try{c=(0,e.rC)((0,d.getDbInstance)(),"prompt")}catch{return{send:!1,reason:"single-device",deviceCount:0}}return c<2?{send:!1,reason:"single-device",deviceCount:c}:{send:!0,reason:"cross-device-clear",deviceCount:c}}(b,g),n={worktreeId:b,instanceId:c,reason:m.reason,...void 0!==m.deviceCount?{deviceCount:m.deviceCount}:{}};if("still-waiting"!==m.reason&&(0,i._P)(b),!m.send)return void("single-device"===m.reason?l.info("resolution-push-skipped",n):l.debug("resolution-push-skipped",n));try{await (0,j.notifyPushSubscribers)({worktreeId:b,worktreeName:function(a){try{return(0,f.getWorktreeById)((0,d.getDbInstance)(),a)?.name??a}catch{return a}}(b),kind:"prompt",agentName:c,resolved:!0},g),l.info("resolution-push-sent",n)}catch(a){l.warn("resolution-push-failed",{...n,error:a instanceof Error?a.message:String(a)})}}},51607:(a,b,c)=>{c.d(b,{GR:()=>j.GR,MR:()=>j.MR,NR:()=>j.NR,Wl:()=>j.Wl,YN:()=>j.YN,cr:()=>j.cr,gp:()=>o,gq:()=>j.gq,li:()=>j.li,vR:()=>j.vR});var d=c(91536),e=c(11472),f=c(94154),g=c(61789),h=c(24455),i=c(16402),j=c(27675);let k=["enabled","disabled"],l={claude:"enabled",codex:"enabled",copilot:"disabled",opencode:"disabled","opencode-v2":"disabled",gemini:"disabled",antigravity:"disabled","vibe-local":"disabled","command-code":"disabled"},m=new Set(["content","ghost","empty"]),n=new Set(["claude","codex"]);function o(a,b,c=process.env){if("enabled"!==function(a,b=process.env){let c=b.CM_AUTOYES_ENTER_FALLBACK,d=null,e=null;if("string"==typeof c&&""!==c.trim())for(let b of c.split(",")){let[c,f]=b.split("=");if(void 0===f)continue;let g=c.trim(),h=f.trim();k.includes(h)&&("*"===g?d=h:g===a&&(e=h))}return e??d??l[a]??"disabled"}(a,c))return{eligible:!1,reason:"tool-disabled",refusalReason:null,composerState:null};if(void 0===b)return{eligible:!1,reason:"no-raw-frame",refusalReason:null,composerState:null};let j=(0,i.dd)(a,b).refusal;if(null===j)return{eligible:!1,reason:"answerable",refusalReason:null,composerState:null};let p=(0,f.ji)(b,a).state,q=a=>({eligible:!1,reason:a,refusalReason:j.reason,composerState:p});if(m.has(p))return q("composer-visible");let r=j.reason===i.bj,s=n.has(a)&&"no_composer"===p;if(!r&&!s)return q("no-choice-screen-evidence");if(!(0,e.Hg)(b,(0,d.H7)(a)).alive)return q("tool-exited");let t=(0,g.aJ)(b).split("\n").slice(-h.Re).join("\n");return(0,g.ut)(a,t)?q("thinking"):{eligible:!0,refusalReason:j.reason,composerState:p}}},63209:(a,b,c)=>{c.d(b,{bT:()=>g});var d=c(51297),e=c(76777);let f=[{id:"overloaded",pattern:/\b5\d{2}\s+Overloaded\b/i,selfRetrying:!0},{id:"retrying",pattern:/Retrying in \d+s\s*[·•]\s*attempt \d+\/\d+/i,selfRetrying:!0},{id:"context-limit",pattern:/\bmaximum context length is \d+ tokens\b/i,selfRetrying:!1},{id:"limit-reached",pattern:/\blimit reached\b/i,selfRetrying:!1},{id:"api-error",pattern:/\bAPI Error(?::|\s+\d{3})/i,selfRetrying:!1}];function g(a){let b=(0,d.aJ)(a);for(let a of f){var c;let d=a.pattern.exec(b);if(!d)continue;let f=b.lastIndexOf("\n",d.index)+1,g=b.indexOf("\n",d.index);return{fault:a,matchedText:(c=b.slice(f,-1===g?void 0:g).trim()||d[0],(0,e.D)(c,200,"…[truncated]"))}}return null}},63869:(a,b,c)=>{c.d(b,{It:()=>s,Pw:()=>p,WG:()=>w,if:()=>r,tV:()=>D});var d=c(79892),e=c(61878),f=c(8491),g=c(69119),h=c(96742),i=c(29169),j=c(81254),k=c(93997),l=c(4803),m=c(20610);let n=/^\d+(?:,\d+)*$/,o="answer_mode_keys";class p extends Error{constructor(a,b,c){super(`Refused to send "${b}" to ${a}: its ${c.kind} dialog takes '${c.answerMode}' input, not a typed number (${o}). The digit would be swallowed and the Enter after it would confirm whatever is highlighted. Nothing was sent.`),this.name="PromptAnswerRejectedError",this.reason=o,this.dialogKind=c.kind,this.answerMode=c.answerMode}}let q="unresolvable_answer";class r extends Error{constructor(a,b,c){super(function(a,b,c){let d=b.join(", ");return void 0===c?`Refused to type free text at ${a}'s prompt: option ${d} reads as taking your own words, but on this screen it is a menu row, not a text field. The text would be ignored and the Enter after it would confirm whatever is highlighted. Nothing was sent. Answer with the option number, then send the instructions as a message.`:`Refused to type free text at ${a}'s prompt: option ${d} is the text field on this screen, but the cursor is on option ${c.cursorOptionNumber}. The text would be ignored and the Enter after it would confirm option ${c.cursorOptionNumber}. Nothing was sent. Move the cursor onto the text field in the terminal and send the text again — sending its option number does not move the cursor, it selects nothing.`}(a,b,c)),this.name="FreeTextAnswerRejectedError",this.reason=q,this.optionNumbers=b,this.kind=c?.kind??"menu_row",this.cursorOptionNumber=c?.cursorOptionNumber??null}}class s extends Error{constructor(a,b){super(`Refused to type free text at ${a}'s prompt: none of its ${b} options is a text field on this screen, so the text would be ignored and the Enter after it would confirm whatever is highlighted. Nothing was sent. Answer with the option number instead, then send your instructions as a separate message.`),this.name="FreeTextAtChoiceOnlyPromptError",this.reason=q,this.optionCount=b}}async function t(a){if(void 0!==a.frame)return a.frame;try{return await (0,d.Xg)(a.sessionName,200)}catch{return null}}async function u(a){if(!/^\d+$/.test(a.answer))return null;let b=(0,f.bN)(a.cliToolId);if(!b.hasDialogRules)return null;let c=await t(a);if(null===c)return null;let d=b.detectDialog((0,e.zJ)(c,a.cliToolId));if(null===d)return null;if("numbered"===d.answerMode)return d;throw new p(a.cliToolId,a.answer,d)}function v(a){if(0===a)return[];let b=a>0?"Down":"Up";return Array.from({length:Math.abs(a)},()=>b)}class w extends Error{constructor(a,b,c){super(`The question was not submitted (${a}). `+(b?"Some boxes may have been ticked, but the confirm row was not pressed, so the question is still on screen exactly as the pane shows it. ":"No key was sent. ")+`Requested selection: ${c.join(", ")}. Check the terminal and answer it there, or `+"retry once the screen has settled."),this.name="MultiSelectAnswerRejectedError",this.reason="multi_select_not_committed",this.stage=a,this.keysSent=b,this.wanted=c}}function x(a){return a.options.filter(a=>!0===a.checked).map(a=>a.number)}async function y(a){await new Promise(a=>setTimeout(a,m.x9));try{return await (0,d.Xg)(a,200)}catch{return null}}async function z(a,b,c,d){var e,f;if(void 0===b.options.find(a=>!0===a.isDefault))throw new w("cursor-unknown",!1,c);let g=x(b),j=[...c.filter(a=>!g.includes(a)),...g.filter(a=>!c.includes(a))].sort((a,b)=>a-b);j.length>0&&await C(a,j.map(String),d);let k=j.length>0,l=await y(a);if(B(d,k),null===l)throw new w("recapture-failed",k,c);let m=(0,h.nK)(l);if("prompt"!==m.kind||m.prompt.promptData?.type!=="multiple_choice"||!0!==m.prompt.promptData.multiSelect||m.prompt.promptData.question!==b.question||m.prompt.promptData.options.length!==b.options.length)throw new w("screen-changed",k,c);let n=m.prompt.promptData;if(e=x(n),f=[...c],!(e.length===f.length&&e.every((a,b)=>a===f[b])))throw new w("toggle-mismatch",k,c);let o=n.options.find(a=>!0===a.isDefault);if(void 0===o)throw new w("cursor-unknown",k,c);await C(a,[...Array.from({length:Math.max(0,n.options.length-o.number+1)},()=>"Down"),"Enter"],d);let p=await y(a);if(B(d,!0),null===p)throw new w("recapture-failed",!0,c);let q=(0,i.uG)(p);if(null!==q){if(q.hasUnansweredWarning)throw new w("review-unanswered",!0,c);await C(a,["Enter"],d);return}let r=(0,h.nK)(p);if("prompt"!==r.kind||r.prompt.promptData?.type!=="multiple_choice"||r.prompt.promptData.question===b.question)throw new w("not-committed",!0,c)}class A extends Error{constructor(a){super(`Prompt answer stopped by its caller (${a?"some keys were sent":"no key was sent"})`),this.keysSent=a,this.name="PromptAnswerAbortedError"}}function B(a,b){if(a&&!a())throw new A(b)}async function C(a,b,c){if(!c)return void await (0,d.KB)(a,b);try{await (0,d.KB)(a,b,{shouldContinue:c})}catch(a){if(a instanceof Error&&"SpecialKeysAbortedError"===a.name)throw new A(!0);throw a}}async function D(a){let{sessionName:b,answer:c,cliToolId:e,promptData:f,fallbackPromptType:h,fallbackDefaultOptionNumber:i,stillCurrent:o}=a,p=function(a){if("command-code"!==a.cliToolId)return null;let{promptData:b}=a;return b?.type==="multiple_choice"&&!0===b.multiSelect&&n.test(a.answer)?{promptData:b,wanted:[...new Set(a.answer.split(",").map(Number))].sort((a,b)=>a-b)}:null}(a);if(null!==p){await z(b,p.promptData,p.wanted,o),(0,k.gm)(b);return}let q=await u(a);if(!function(a){if(/^\d+$/.test(a.answer))return;let{promptData:b}=a;if(b?.type!=="multiple_choice"||0===b.options.length)return;let c=b.options.filter(a=>!0===a.requiresTextInput);if(0===c.length)throw new s(a.cliToolId,b.options.length);if(!c.some(g.J0))throw new r(a.cliToolId,c.map(a=>a.number))}(a),!function(a){if(/^\d+$/.test(a.answer))return;let{promptData:b}=a;if(b?.type!=="multiple_choice")return;let c=b.options.filter(g.J0);if(0===c.length)return;let d=b.options.find(a=>!0===a.isDefault);if(void 0!==d&&!(0,g.J0)(d))throw new r(a.cliToolId,c.map(a=>a.number),{kind:"cursor_elsewhere",cursorOptionNumber:d.number})}(a),B(o,!1),("claude"===e||"antigravity"===e)&&(f?.type==="multiple_choice"||"multiple_choice"===h)&&/^\d+$/.test(c)){let a,d=parseInt(c,10),e=null;if(f?.type==="multiple_choice"){let b=(e=f.options).find(a=>a.isDefault);a=b?.number??1}else a=i??1;let g=d-a;if(null!==e&&(0,l.kN)(e)&&null!==e){let a=e.filter(a=>(0,l.kN)([a])).length,c=[...v(g),"Space"];c.push(...v(a-d+1)),c.push("Enter"),await C(b,c,o)}else{let a=v(g),c=f?.type==="multiple_choice"&&!0===f.isAskUserQuestion&&0===g?["Down","Up","Enter"]:[...a,"Enter"];await C(b,c,o)}}else{await (0,d.V1)(b,c,!1);let e=function(a,b){let c=a.promptData?.type==="multiple_choice"?a.promptData.submitMode:void 0,d=b?.submitMode??c??a.fallbackSubmitMode??"answer_then_enter";return(0,j.MI)(d)?d:"answer_then_enter"}(a,q);"answer_only"===e&&(null!==q||a.promptData?.type==="multiple_choice"||"multiple_choice"===a.fallbackPromptType)&&/^\d+$/.test(a.answer)||(await new Promise(a=>setTimeout(a,m.pL)),B(o,!0),await (0,d.V1)(b,"",!0))}(0,k.gm)(b)}},64501:(a,b,c)=>{c.d(b,{$x:()=>j,NV:()=>k,KO:()=>i,$K:()=>l});var d=c(51297);let e={codex:{showsAbandonedTurn:c(27789).Y7}};var f=c(66101),g=c(59409),h=c(33294);function i(a,b,c){return"hooks"!==a||function(a,b){let c=e[a];return!c||c.showsAbandonedTurn((0,d.aJ)(b).split("\n"))}(b,c)}function j(a,b,c,d=Date.now()){let e=(0,g.VM)(b);return(0,f.Kf)(e,e.liveness({worktreeId:a,cliToolId:b,instanceId:c??b}),d).kind}function k(a,b,c,d,e=Date.now()){return!i(j(a,b,c,e),b,d)&&(0,h.getStructuredSessionState)(a,b,c,e)?.status==="running"}function l(a,b,c,f,g,i=Date.now()){let j=(0,h.getStructuredSessionState)(a,b,c,i);return j?.status==="running"&&"hooks"===f&&function(a,b){let c=e[a];return!!c&&c.showsAbandonedTurn((0,d.aJ)(b).split("\n"))}(b,g)?null:j}},70594:(a,b,c)=>{c.d(b,{EV:()=>h,aT:()=>i,mi:()=>k,wG:()=>j});var d=c(52660),e=c(72626),f=c(30008);let g=(0,e.h)("current-output-builder");function h(a){let b=a?.spec.questions[0];return b?{question:b.question,labels:b.choices.map(a=>a.label),questionCount:a.spec.questions.length,...b.custom?{custom:!0}:{}}:null}function i(a,b,c=null,d=null,e=null){if("waiting"===a.status)return{...a,structuredApplied:!1};if(null!==c)return{status:"waiting",reason:(0,f.rB)(c),thinking:!1,evidence:a.evidence,isUnclassifiedActive:a.isUnclassifiedActive,structuredApplied:!0};if(null===b||"waiting"===b.status||function(a,b,c,d){if(null===d||!j(a,b,c))return!1;let e=c?.closedAt??null;return null!==e&&e<d}(a,b,d,e))return{...a,structuredApplied:!1};let g="running"===b.status,h="ready"===b.status&&function(a){if(null===a)return!1;let{closedBy:b,closedAt:c,openedAt:d}=a;return"stop"===b&&null!==c&&null!==d&&c>d}(d)?"positive":a.evidence;return{status:b.status,reason:b.reason,thinking:g,evidence:h,isUnclassifiedActive:a.isUnclassifiedActive,structuredApplied:!0}}function j(a,b,c){return!!a.thinking&&null!==b&&"ready"===b.status&&null!==c&&"stop"===c.closedBy&&null!==c.closedAt}function k(a,b,c,e){try{let f=(0,d.getLastUserMessageForInstance)(a,b,c,e);if(!f)return null;let g=f.timestamp instanceof Date?f.timestamp.getTime():NaN;return Number.isFinite(g)?g:null}catch(a){return g.debug("newest-prompt-read-failed",{worktreeId:b,cliToolId:c,instanceId:e,error:a instanceof Error?a.message:String(a)}),null}}},71080:(a,b,c)=>{c.d(b,{H:()=>j,L1:()=>q,Pe:()=>n,fS:()=>m,j7:()=>k,oE:()=>o,o_:()=>l,pN:()=>p,qt:()=>r});var d=c(55511),e=c(36925),f=c(85038);let g=(0,e.v)("__responseHashCache",()=>new Map),h=(0,e.v)("__structuredHistoryRecheckCache",()=>new Map),i=(0,e.v)("__duplicateResponseSkipStreak",()=>new Map),j=30;function k(a,b){let c=(0,d.createHash)("sha256").update(b).digest("hex");return g.get(a)===c||!!(0,f._B)(a)&&(g.set(a,c),i.delete(a),!1)}function l(a){let b=(i.get(a)??0)+1;i.set(a,b);let c=(b-1)%j==0,d=1===b?0:j-1;return{log:c,consecutive:b,suppressed:d}}function m(a){i.delete(a)}function n(a){h.has(a)||h.set(a,0)}function o(a){h.delete(a)}function p(a){let b=h.get(a);return void 0!==b&&(b>0?(h.set(a,b-1),!1):(h.set(a,2),!0))}function q(a){g.delete(a),h.delete(a),i.delete(a)}function r(a){let b=[];for(let{oldKey:c,newKey:d}of a)c!==d&&b.push({newKey:d,state:function(a){let b={hash:g.get(a),recheck:h.get(a),streak:i.get(a)};return g.delete(a),h.delete(a),i.delete(a),b}(c)});for(let{newKey:a,state:c}of b)void 0!==c.hash&&g.set(a,c.hash),void 0!==c.recheck?h.set(a,c.recheck):void 0!==c.hash&&h.delete(a),void 0!==c.hash&&(void 0!==c.streak?i.set(a,c.streak):i.delete(a))}},72457:(a,b,c)=>{c.d(b,{WR:()=>l,gv:()=>j,i2:()=>n,iX:()=>m,nZ:()=>o,p6:()=>k,zm:()=>p});var d=c(55511),e=c(36925),f=c(71080);let g=(0,e.v)("__promptHashCache",()=>new Map),h=(0,e.v)("__duplicatePromptSkipStreak",()=>new Map),i=f.H;function j(a,b){let c=(0,d.createHash)("sha256").update(b).digest("hex");return g.get(a)===c||(g.set(a,c),h.delete(a),!1)}function k(a){let b=(h.get(a)??0)+1;h.set(a,b);let c=(b-1)%i==0,d=1===b?0:i-1;return{log:c,consecutive:b,suppressed:d}}function l(a){h.delete(a)}function m(a){g.delete(a),h.delete(a)}function n(a,b){o([{oldKey:a,newKey:b}])}function o(a){let b=[];for(let{oldKey:c,newKey:d}of a)c!==d&&(b.push({newKey:d,hash:g.get(c),streak:h.get(c)}),g.delete(c),h.delete(c));for(let{newKey:a,hash:c,streak:d}of b)void 0!==c&&(g.set(a,c),void 0!==d?h.set(a,d):h.delete(a))}function p(a,b){return"copilot"!==b?a:a.replace(/^[❯>]\s/gm," ")}},73478:(a,b,c)=>{c.d(b,{I7:()=>v});var d=c(24455),e=c(88807),f=c(73753),g=c(72626),h=c(57836),i=c(80544),j=c(92010),k=c(61191),l=c(50779),m=c(27519),n=c(36925);let o=(0,g.h)("push/waiting-notifier"),p=(0,n.v)("__waitingPushPending",()=>new Map),q=(0,n.v)("__waitingPushGraceTimers",()=>new Map);async function r(a,b,c){let d=a.instanceId??a.cliToolId;try{await (0,k.notifyPushSubscribers)({worktreeId:a.worktreeId,worktreeName:function(a){try{return(0,f.getWorktreeById)((0,e.getDbInstance)(),a)?.name??a}catch{return a}}(a.worktreeId),kind:"prompt",agentName:d,instanceId:d,waitingKind:a.kind,waitingSince:a.since,escalated:b},c)}catch(c){o.warn("waiting-push-failed",{worktreeId:a.worktreeId,instanceId:d,escalated:b,error:c instanceof Error?c.message:String(c)})}}function s(a){let b=q.get(a);void 0!==b&&(clearTimeout(b),q.delete(a))}function t(a,b){(0,j.R)({worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId,waitingSince:a.since})||r(a,!1,b)}function u(){if(p.size>0)return;let a=globalThis.__waitingPushEscalationTimer;void 0!==a&&(clearInterval(a),globalThis.__waitingPushEscalationTimer=void 0)}function v(){let a=globalThis.__waitingPushUnsubscribe;for(let b of(a&&(a(),globalThis.__waitingPushUnsubscribe=void 0),q.values()))clearTimeout(b);q.clear(),p.clear(),u();let b=(0,h.wN)(a=>{!function(a){var b;if(!(0,m.lU)())return;let c=(0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId);if(!a.waiting||null===a.since){s(c),p.delete(c),u(),(0,l.GT)({worktreeId:a.worktreeId,agentName:a.instanceId??a.cliToolId,at:a.at});return}let e={worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId,since:a.since,kind:a.kind};if(p.set(c,e),!function(){if(void 0!==globalThis.__waitingPushEscalationTimer)return;let a=setInterval(()=>{!function(a=Date.now()){if(0===p.size)return u();let b=(0,i.rS)(),c=6e4*b.thresholdMinutes;for(let[d,e]of Array.from(p)){let f=(0,h.Jp)(e.worktreeId,e.cliToolId,e.instanceId);if(null===f||f.since!==e.since){p.delete(d);continue}b.enabled&&!(a-e.since<c)&&((0,j.R)({worktreeId:e.worktreeId,cliToolId:e.cliToolId,instanceId:e.instanceId,waitingSince:e.since,escalated:!0})||(p.delete(d),r({...e,kind:f.kind??e.kind},!0,a)))}u()}()},6e4);a.unref?.(),globalThis.__waitingPushEscalationTimer=a}(),null==(b=e.kind)||"unclassified"===b){s(c);let a=setTimeout(()=>{!function(a){q.delete(a);let b=p.get(a);if(void 0===b)return;let c=(0,h.Jp)(b.worktreeId,b.cliToolId,b.instanceId);if(null===c||c.since!==b.since){p.delete(a),u();return}let d={...b,kind:c.kind};p.set(a,d),t(d,Date.now())}(c)},8e3);a.unref?.(),q.set(c,a);return}t(e,a.at)}(a)});return globalThis.__waitingPushUnsubscribe=b,b}},79565:(a,b,c)=>{c.d(b,{$v:()=>ak,emitChatTurnProgress:()=>ac});var d=c(56791),e=c(36925);let f=(0,e.v)("__unclassifiedFrameRuns",()=>new Map);var g=c(35583),h=c(94154),i=c(63209),j=c(51297),k=c(76777),l=c(50524);let m=/^([^\S\n]*)╹(▀{4,})/,n=/^([^\S\n]*)[│┃]/;var o=c(72626),p=c(8360),q=c(15194),r=c(59409),s=c(64501),t=c(66101),u=c(33198),v=c(17287),w=c(15388),x=c(3161),y=c(49154),z=c(62171),A=c(97751),B=c(31990),C=c(95595),D=c(39217),E=c(52277),F=c(51607),G=c(44321),H=c(34405),I=c(93997);function J(a){return""===(0,j.aJ)(a).trim()}var K=c(33294),L=c(30008),M=c(24581),N=c(40043),O=c(9516),P=c(31239),Q=c(16402),R=c(61789),S=c(62887);let T=(0,o.h)("layer-disagreement"),U=(0,e.v)("__layerDisagreementReported",()=>new Set);var V=c(27870),W=c(54325),X=c(85038);let Y=(0,o.h)("current-output-builder");function Z(){return{version:0,askedAt:-1/0,turnKey:null,body:null,loggedOutcome:null,loggedTurnKey:null}}let $=(0,e.v)("__chatTurnProgressState",()=>new Map);function _(a){return`${a.worktreeId}:${a.cliToolId}:${a.instanceId??a.cliToolId}`}function aa(a,b,c,d={}){let e=_(a),f=$.get(e)??Z();$.set(e,f),(f.loggedOutcome!==b||f.loggedTurnKey!==c)&&(f.loggedOutcome=b,f.loggedTurnKey=c,Y.info("published"===b?"chat-turn-progress-published":"no-subscribers"===b?"chat-turn-progress-no-subscribers":"chat-turn-progress-failed",{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId??a.cliToolId,turnKey:c,...d}))}async function ab(a,b,c){let d,e=_(a),f=$.get(e)??Z();if(c-f.askedAt<W.r9)return null;f.askedAt=c,$.set(e,f);try{d=await b()}catch{return null}if(!d||0===d.body.length||!(0,X.Z)())return null;let g=(0,W.rx)(d.body);return d.turnKey===f.turnKey&&g.body===f.body?null:{turnKey:d.turnKey,body:g.body,partial:g.truncated||!0===d.partial}}async function ac(a,b,d=Date.now()){try{let{broadcast:e,hasRoomSubscribers:f}=await Promise.resolve().then(c.bind(c,43015));if(!f(a.worktreeId))return aa(a,"no-subscribers",null),!1;let g=await ab(a,b,d);if(!g||!(0,X.Z)())return!1;let h=function(a,b){let c=_(a),d=$.get(c)??Z();return b.turnKey===d.turnKey&&b.body===d.body?null:(d.turnKey=b.turnKey,d.body=b.body,d.version+=1,$.set(c,d),{type:W.rz,worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId??a.cliToolId,turnKey:b.turnKey,body:b.body,partial:b.partial,version:d.version,done:!1})}(a,g);if(!h)return!1;return e(a.worktreeId,h),aa(a,"published",h.turnKey,{version:h.version,bodyLength:h.body.length,partial:h.partial}),!0}catch(b){return aa(a,"failed",null,{error:b instanceof Error?b.message:String(b)}),!1}}async function ad(a,b,d,e){if("claude"!==d)return;let f={worktreeId:b,cliToolId:d,instanceId:e};try{let{getWorktreeById:g}=await Promise.resolve().then(c.bind(c,73753)),h=g(a,b)?.path;if(!h)return;let{hasRoomSubscribers:i}=await Promise.resolve().then(c.bind(c,43015));if(!(0,X.Z)())return;if(!i(b))return void aa(f,"no-subscribers",null);ac(f,async()=>{let{readClaudeTurnProgress:a}=await Promise.resolve().then(c.bind(c,71133));return a({worktreeId:b,cliToolId:d,instanceId:e??d},{worktreePath:h})})}catch(a){aa(f,"failed",null,{error:a instanceof Error?a.message:String(a)})}}var ae=c(70594),af=c(81254);let ag=(0,o.h)("current-output-builder");function ah(a,b){Promise.resolve().then(c.bind(c,43015)).then(({broadcastMessage:c})=>{c("message",{worktreeId:a,message:b})}).catch(b=>{ag.warn("history-row-broadcast-failed",{worktreeId:a,error:b instanceof Error?b.message:String(b)})})}let ai=(0,e.v)("__detectionDivergenceEpisodes",()=>new Map),aj=(0,o.h)("current-output-builder");async function ak(a,b,c,d,e){let f=await al(a,b,c,d);if(!(0,X.Z)())throw new X.SC;return(f.isRunning&&"running"===f.sessionStatus&&null==f.startingSince&&await ad(a,b,c,d),e)?{...f,resolvedBy:e.resolvedBy,conflict:e.conflict??null}:f}async function al(a,b,c,e){let o=e??c,W=p.CLIToolManager.getInstance().getTool(c),Y=W.getSessionName(b,e),{stopEventAt:Z,eventSource:$,askUserQuestion:_,structuredEvents:aa}=function(a,b,c,d){let e=(0,K.getLastStopEventAt)(a,b,c),f=(0,K.getLastAgentEvent)(a,b,c),g=(0,r.VM)(b),h=Date.now(),i=(0,K.getPendingDecisions)(a,b,c,h),j=(0,K.getAskUserQuestion)(a,b,c,h),k=(0,x.Jl)(a,b,c),l={lastEventType:f?.event??null,lastEventAt:f?.at??null,lastEventDetail:f?.detail??null,...(0,K.getPublishedAgentTurn)(a,b,c,h),pendingDecisions:i.map(a=>{let b=(0,y.Wk)(a.toolName);return{id:a.decisionId,at:a.at,source:a.source,toolName:a.toolName,confirmedAt:a.confirmedAt,scraperCorroborated:a.scraperCorroborated,deliveryExpired:(0,M.qX)(a,g.capabilities.decisionTimeoutSeconds,h),kind:b,questionOptions:"question"===b&&j?(0,A.dZ)(j.spec).map(a=>({number:a.number,label:a.label})):null}}),dedupDropped:(0,K.getAgentEventDropCounts)(a,b,c),dialogPendingMaxMs:{...M.h_},promptWaitingSince:null,promptWaitingSource:null,toolInputNormalization:(0,w.SQ)(a,b,c),permissionDecision:(0,v.CD)(a,b,c),source:{cliToolId:g.cliToolId,capabilities:g.capabilities,...(0,t.Kf)(g,g.liveness({worktreeId:a,cliToolId:b,instanceId:d}),h),probedActivity:(0,u.hS)({worktreeId:a,cliToolId:b,instanceId:d})},session:k,sessionContext:(0,x.sc)({worktreeId:a,cliToolId:b,instanceId:c},k),sessionDiff:(0,z.rn)({worktreeId:a,cliToolId:b,instanceId:c})};return{stopEventAt:e,eventSource:g,askUserQuestion:j,structuredEvents:l}}(b,c,e,o),ab=await W.isRunning(b,e);if(!(0,X.Z)())throw new X.SC;if(!ab)return(0,N.xG)((0,D.v7)(b,c,e)),{isRunning:!1,startingSince:(0,g.Bk)(b,c,e),sessionName:Y,content:"",lineCount:0,cliToolId:c,sessionStatus:"idle",sessionStatusReason:"session_not_running",statusEvidence:"positive",lastKnownStatus:null,lastKnownStatusAt:null,lastStopEventAt:Z,structuredEvents:aa,model:null,reasoningEffort:null,promptDedup:(0,G.XH)(b,c,e),upstreamFault:null,paneObstruction:null,composerText:null,composerState:"no_composer"};let ac=(0,d.getSessionState)(a,b,o),ad=ac?.lastCapturedLine||0,ak=await (0,B.Wh)(b,c,H._,e);if(!(0,X.Z)())throw new X.SC;let al=ak.split("\n"),am=al.length,an=(0,I.sl)(am,Math.min(H._,I.xE)),ao=((0,q.qR)(c,an)?al.slice(Math.max(0,ad)):al).join("\n"),{compositeKey:ap,lastServerResponseTimestamp:aq,statusResult:ar,startingSince:as,thinking:at,scraperPromptWaiting:au,isSelectionListActive:av,isPagerActive:aw,isDismissablePanelActive:ax,evidence:ay,isUnclassifiedActive:az}=function(a,b,c,d){let e=(0,D.v7)(a,b,c),f=(0,D.xU)(e),h=f?new Date(f):void 0,i=(0,C.WC)(d,b,h),j=(0,g.a3)(a,b,c,"waiting"===i.status||i.hasActivePrompt),k=null===j?i:(0,g.Gz)(i),l=(0,C.f8)(k),m=k.hasActivePrompt,n="waiting"===k.status&&C.ug.has(k.reason),o=k.reason===C.gv.CODEX_PAGER,p="waiting"===k.status&&k.reason===C.gv.COMMAND_CODE_DISMISSABLE_PANEL,q=k.evidence,r=(0,N.Q4)(k.status,k.reason);return{compositeKey:e,lastServerResponseTimestamp:f,statusResult:k,startingSince:j,thinking:l,scraperPromptWaiting:m,isSelectionListActive:n,isPagerActive:o,isDismissablePanelActive:p,evidence:q,isUnclassifiedActive:r}}(b,c,e,ak);(0,K.observeScraperCompletionEvidence)(b,c,e,"ready"===ar.status&&"positive"===ay,void 0,(0,s.KO)(aa.source.kind,c,ak));let aA=(0,s.$K)(b,c,e,aa.source.kind,ak),aB=(0,L._G)({worktreeId:b,cliToolId:c,instanceId:e,scraper:{status:ar.status,reason:ar.reason,hasActivePrompt:au}}),aC=aB.structured;null!==aC&&(aa.promptWaitingSince=aC.at,aa.promptWaitingSource=aC.source);let aD={status:ar.status,reason:ar.reason,thinking:at,evidence:ay,isUnclassifiedActive:az},aE=(0,ae.wG)(aD,aA,aa)?(0,ae.mi)(a,b,c,o):null,aF=(0,ae.aT)(aD,aA,aC,aa,aE),aG=null===as&&aB.waiting,{structuredFacts:aH,promptData:aI,promptAnswerable:aJ}=function({worktreeId:a,cliToolId:b,output:c,statusResult:d,startingSince:e,promptWaiting:f,askUserQuestion:g,eventSource:h}){let i=d.hasActivePrompt,j=d.promptDetection.promptData,k=j&&g?(0,O.Hu)(j,g.spec):null,l=null!==f&&(0,L.$G)(f,h.capabilities.eventIdentity)?f.decisionId:null,m=null!==f&&"question"===(0,y.Wk)(f.toolName),n=null===l||m?null:(0,V.T5)(b),o=null===f?null:{...f,askUserQuestion:(0,ae.EV)(g),decisionOptions:n,decisionId:l,patterns:null!==n?f.patterns:null},p=null!==e?null:i?k??j??(o?(0,V.Yo)(a,o):null):o?(0,V.Yo)(a,o):null;return{structuredFacts:o,promptData:p,promptAnswerable:i&&(k??j)?null===(0,Q.dd)(b,c).refusal:void 0}}({worktreeId:b,cliToolId:c,output:ak,statusResult:ar,startingSince:as,promptWaiting:aC,askUserQuestion:_,eventSource:$}),aK=null!==aA&&aA.status!==ar.status;aK&&aj.info("detection-divergence",{worktreeId:b,cliToolId:c,instanceId:o,scraperStatus:ar.status,scraperReason:ar.reason,structuredStatus:aA.status,structuredReason:aA.reason,structuredEvent:aA.event,structuredEventAt:aA.at,applied:aF.structuredApplied});let aL=function(a,b,c,d,e=Date.now()){let f=`${a}\u0000${b}\u0000${c}`,g=ai.get(f);return d?(g?g.polls++:ai.set(f,{startedAt:e,polls:1}),null):g?(ai.delete(f),{durationMs:Math.max(0,e-g.startedAt),polls:g.polls}):null}(b,c,o,aK);null!==aL&&aj.info("detection-divergence-resolved",{worktreeId:b,cliToolId:c,instanceId:o,durationMs:aL.durationMs,polls:aL.polls});let aM=(function(a){let b=a.slice(-100);if(b.some(a=>!J(a)))return b;let c=a.length-1;for(;c>=0&&J(a[c]);)c-=1;return c<0?b:a.slice(Math.max(0,c+1-100),c+1)})(al).join("\n"),aN="opencode"===c?function(a){let b=(0,j.aJ)(a).split("\n"),c=-1,d=-1,e=-1;for(let a=0;a<b.length;a++){let f=m.exec(b[a]);f&&(c=a,e=(d=f[1].length)+1+f[2].length)}if(-1===c)return null;let f=0,g="";for(let a=0;a<b.length;a++){let h=b[a];if(a!==c){let a=n.exec(h);if(!a||a[1].length!==d)continue}let i=h.slice((0,l.sh)(h,e)).trim();""!==i&&(f+=1,""===g&&(g=(0,k.D)(i,200,"…[truncated]")))}return f<2?null:{id:"opencode_sidebar",matchedText:g,boxRight:e,rows:f}}(aM):null,aO=(0,V.LF)($.capabilities.eventIdentity,aa.pendingDecisions??[]),aP=function(a,b,c=Date.now()){for(let[a,b]of f)c-b.lastSeen>36e5&&f.delete(a);if(!b)return f.delete(a),{dwellMs:0,shouldRecord:!1};let d=f.get(a);if(!d)return f.set(a,{since:c,lastSeen:c,recorded:!1}),{dwellMs:0,shouldRecord:!1};d.lastSeen=c;let e=Math.max(0,c-d.since);return d.recorded||e<6e4?{dwellMs:e,shouldRecord:!1}:(d.recorded=!0,{dwellMs:e,shouldRecord:!0})}(ap,aF.isUnclassifiedActive&&!aO&&null===as);aP.shouldRecord&&function(a,b){var c;let e=Math.round(b.dwellMs/1e3),f=`${b.sessionStatus}/${b.sessionStatusReason}`,g=`Unclassified interactive frame (${f}) held for ${e}s. The detection layer could not parse it, so no prompt was published and nothing could answer it. Inspect the raw pane with \`commandmate capture ${b.worktreeId} --pane\`.`+((c=b.obstruction)?` Cause: opencode's sidebar is sharing rows with the transcript (paneObstruction=${c.id}, second column reads ${JSON.stringify(c.matchedText)}), which covers the marker that ends a turn. Press \`ctrl+x b\` in the pane to close it.`:""),h={type:af.LT,status:"unclassified",question:g,options:[],dwellSeconds:e,sessionStatusReason:f};try{let c=(0,d.createMessage)(a,{worktreeId:b.worktreeId,role:"assistant",content:g,messageType:"prompt",promptData:h,timestamp:new Date,cliToolId:b.cliToolId,instanceId:b.instanceId});ag.info("unclassified-frame-recorded",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,dwellSeconds:e,statusReason:f}),ah(b.worktreeId,c)}catch(a){ag.warn("unclassified-frame-record-failed",{worktreeId:b.worktreeId,error:a instanceof Error?a.message:String(a)})}}(a,{worktreeId:b,cliToolId:c,instanceId:o,dwellMs:aP.dwellMs,sessionStatus:aF.status,sessionStatusReason:aF.reason,obstruction:aN});let aQ=(aR={supportedEvents:$.capabilities.supportedEvents,scraperStatus:ar.status,scraperReason:ar.reason,hasActivePrompt:au,lastEventType:aa.lastEventType,lastEventDetail:aa.lastEventDetail}).supportedEvents.includes("user_prompt_submit")&&aR.supportedEvents.includes("stop")&&"waiting"===aR.scraperStatus&&"stop"===aR.lastEventType&&aR.lastEventDetail!==S.HV?aR.hasActivePrompt?"approval-after-stop":C.ug.has(aR.scraperReason)?"menu-after-stop":null:null;if(null!==aQ&&function(a){let b=`${a.compositeKey}|${a.turnId??"-"}|${a.kind}`;if(U.has(b))return;U.size>=512&&U.clear(),U.add(b);let c=(0,R.aJ)(a.frame).split("\n").filter(a=>""!==a.trim());T.warn("layerDisagreement",{kind:a.kind,worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId,turnId:a.turnId,scraperReason:a.scraperReason,frameTail:c.slice(-40).join("\n")})}({compositeKey:ap,worktreeId:b,cliToolId:c,instanceId:o,turnId:aa.turnId,kind:aQ,scraperReason:ar.reason,frame:ak}),null!==aC&&null!==aH&&!au&&!aC.recorded&&!aO){(0,K.markStructuredPromptRecorded)(b,c,e);var aR,aS=b,aT=c,aU=o,aV=aC,aW=aH;let f=(0,V.fO)(aS,aW);try{let b=(0,d.createMessage)(a,{worktreeId:aS,role:"assistant",content:f.question,summary:`structured prompt \xb7 source=${aV.source}${aV.toolName?` \xb7 tool=${aV.toolName}`:""}`,messageType:"prompt",promptData:f,timestamp:new Date,cliToolId:aT,instanceId:aU});ag.info("structured-prompt-recorded",{worktreeId:aS,cliToolId:aT,instanceId:aU,source:aV.source,toolName:aV.toolName}),ah(aS,b)}catch(a){ag.warn("structured-prompt-record-failed",{worktreeId:aS,error:a instanceof Error?a.message:String(a)})}}let aX=(0,h.ji)(ak,c),aY=(0,i.bT)(aM),aZ=(0,D.aq)(b,c,e),{model:a$,effort:a_}=(0,K.getResolvedAgentModelInfo)(b,c,e),a0=null===as?aF:{...aF,status:"running",reason:C.gv.STARTING,thinking:!1};(0,N.ox)(ap,{status:a0.status,reason:a0.reason,evidence:a0.evidence});let a1=(0,N.AD)(ap);return function({worktreeId:a,cliToolId:b,instanceId:c,sessionName:d,published:e,merged:f,newContent:g,output:h,realtimeSnippet:i,totalLines:j,lastCapturedLine:k,isPromptWaiting:l,promptData:m,promptAnswerable:n,autoYesState:o,lastEnterFallback:p,isSelectionListActive:q,isPagerActive:r,isDismissablePanelActive:s,startingSince:t,lastKnown:u,lastServerResponseTimestamp:v,compositeKey:w,stopEventAt:x,structuredEvents:y,model:z,effort:A,upstreamFaultMatch:B,paneObstruction:C,composer:F}){return{isRunning:!0,sessionName:d,cliToolId:b,sessionStatus:e.status,sessionStatusReason:e.reason,content:g,fullOutput:h,realtimeSnippet:i,lineCount:j,lastCapturedLine:k,thinking:e.thinking,isPromptWaiting:l,promptData:m,...void 0!==n?{promptAnswerable:n}:{},promptView:(0,P.ds)(m),autoYes:{enabled:o?.enabled??!1,expiresAt:o?.enabled?o.expiresAt:null,stopReason:o?.stopReason,lastSuppression:(0,E.gb)(a,b,c),stopMatchedText:o?.stopMatchedText,lastEnterFallback:p},isSelectionListActive:q,isPagerActive:r,isDismissablePanelActive:s,isUnclassifiedActive:null===t&&f.isUnclassifiedActive,startingSince:t,statusEvidence:e.evidence,lastKnownStatus:u?.status??null,lastKnownStatusAt:u?.at??null,lastServerResponseTimestamp:v,serverPollerActive:(0,D.bZ)(w),lastStopEventAt:x,structuredEvents:y,model:z,reasoningEffort:A,promptDedup:(0,G.XH)(a,b,c),upstreamFault:B?{id:B.fault.id,matchedText:B.matchedText,at:Date.now()}:null,paneObstruction:C?{id:C.id,matchedText:C.matchedText,at:Date.now()}:null,composerText:"content"===F.state?F.text:null,composerState:F.state}}({worktreeId:b,cliToolId:c,instanceId:e,sessionName:Y,published:a0,merged:aF,newContent:ao,output:ak,realtimeSnippet:aM,totalLines:am,lastCapturedLine:ad,isPromptWaiting:aG,promptData:aI,promptAnswerable:aJ,autoYesState:aZ,lastEnterFallback:(0,F.YN)((0,F.li)(b,c,e),void 0!==aJ?ar.promptDetection.promptData:null),isSelectionListActive:av,isPagerActive:aw,isDismissablePanelActive:ax,startingSince:as,lastKnown:a1,lastServerResponseTimestamp:aq,compositeKey:ap,stopEventAt:Z,structuredEvents:aa,model:a$,effort:a_,upstreamFaultMatch:aY,paneObstruction:aN,composer:aX})}},80544:(a,b,c)=>{c.d(b,{Di:()=>h,O$:()=>g,d7:()=>k,rS:()=>j});var d=c(88807);let e=(0,c(72626).h)("push/escalation-settings"),f="push_escalation",g={enabled:!0,thresholdMinutes:10},h=[5,10,30,60];function i(a){if("object"!=typeof a||null===a)return{...g};let b="boolean"==typeof a.enabled?a.enabled:g.enabled,c=a.thresholdMinutes;return{enabled:b,thresholdMinutes:"number"==typeof c&&Number.isFinite(c)&&c>=1&&c<=1440?Math.round(c):g.thresholdMinutes}}function j(){try{let a=(0,d.getDbInstance)().prepare("SELECT value FROM app_settings WHERE key = ?").get(f);if(!a)return{...g};return i(JSON.parse(a.value))}catch(a){return e.warn("escalation-settings-read-failed",{error:a instanceof Error?a.message:String(a)}),{...g}}}function k(a){let b=i(a),c=Date.now();return(0,d.getDbInstance)().prepare(`
|
|
20
|
+
INSERT INTO app_settings (key, value, created_at, updated_at)
|
|
21
|
+
VALUES (?, ?, ?, ?)
|
|
22
|
+
ON CONFLICT(key) DO UPDATE SET
|
|
23
|
+
value = excluded.value,
|
|
24
|
+
updated_at = excluded.updated_at
|
|
25
|
+
`).run(f,JSON.stringify(b),c,c),b}},89253:(a,b,c)=>{c.d(b,{zX:()=>ah,$M:()=>aa,Tq:()=>B.Tq});var d=c(31990),e=c(88807),f=c(56791),g=c(43015),h=c(26895),i=c(28861),j=c(61878),k=c(70605),l=c(96742),m=c(18778),n=c(15194),o=c(8988),p=c(61789),q=c(72626),r=c(46423),s=c(93997),t=c(60),u=c(82450),v=c(56263),w=c(13033),x=c(72457),y=c(44321),z=c(71080),A=c(28918),B=c(28480),C=c(43925),D=c(40964),E=c(83598),F=c(31442),G=c(45146),H=c(85038),I=c(91601),J=c(92010),K=c(81099),L=c(63209),M=c(73478),N=c(57836),O=c(52767);function P(a){return{response:"",isComplete:!1,lineCount:a}}function Q(a,b,c,d,e,f,g,h=!1){let i=(0,t.QM)(b,c,d,e,f,h),j=a.slice(i);return{response:(0,p.aJ)(j.join("\n")),isComplete:!0,lineCount:c,promptDetection:g,bufferReset:d,captureWindowSaturated:h}}var R=c(77244),S=c(16402);let T=(0,q.h)("response-poller");function U(a){return!(void 0===a||(0,R.FD)(a.worktreeId,"antigravity",a.instanceId))&&(T.debug("antigravity-dialog-no-recent-receipt",{worktreeId:a.worktreeId,instanceId:a.instanceId??"antigravity"}),!0)}function V(a,b,c){let d=(0,S.vm)(a,b.promptData?.type,c);return!!d.present||(T.debug("prompt-candidate-not-vouched",{cliToolId:a,promptType:b.promptData?.type,gateMode:d.mode}),!1)}var W=c(96486);let X=["Waiting for auth","⠋","⠙","⠹","⠸","⠼","⠴","⠦","⠧","⠇","⠏"],Y=(0,q.h)("response-poller");function Z(a,b,c,d){let{cliToolId:e,lines:f,lastCapturedLine:g,bufferReset:h,captureWindowSaturated:i}=b;return e===a&&c&&!i&&(0,W.K)(e,f)?((h||d>g)&&Y.info(`${a} startup screen suppressed, response not saved`,{responseLength:c.length,lineCount:d}),{response:"",isComplete:!0,lineCount:d,bufferReset:h,captureWindowSaturated:i}):null}let $=(0,q.h)("response-poller");function _(a){return b=>{try{(0,g.broadcastMessage)("message_updated",{worktreeId:a,message:b})}catch(b){$.warn("prompt-sweep-broadcast-failed",{worktreeId:a,error:b instanceof Error?b.message:String(b)})}}}function aa(a,b,c,d,e,f){if("antigravity"===b){let b=(0,i.g)(a);if(null!==b)return U(e)?{isPrompt:!1,cleanContent:a.trim()}:b}if("command-code"===b&&void 0!==d){let b=(0,l.nK)(d);if("prompt"===b.kind)return b.prompt;if("unsupported"===b.kind)return{isPrompt:!1,cleanContent:a.trim()}}let g=(0,p.KO)(b),m=(0,h.gF)(a,c?{...g,precomputedLines:c}:g);if(m.isPrompt){let c=void 0!==f?(0,j.Yc)(f,b):(0,j.zJ)(d??a,b).liveRegion;if((0,k.z8)(c,m))return{isPrompt:!1,cleanContent:a.trim()}}return"antigravity"===b&&m.isPrompt&&U(e)?{isPrompt:!1,cleanContent:a.trim()}:m}function ab(a,b){return aa((0,p._A)((0,p.aJ)(a)),b,void 0,a)}function ac(a,b){if((0,H._B)(a.pollerKey))return!0;let c=(0,H.Bh)();return void 0!==c&&ad.has(c)||(c&&ad.add(c),$.info("retired-tick-refused",{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.resolvedInstanceId,generation:c?.generation,after:b})),!1}(0,M.I7)();let ad=new WeakSet;async function ae(a,b,c){let{db:d,worktree:e,worktreeId:g,cliToolId:h,instanceId:i,resolvedInstanceId:j,pollerKey:k}=a;if(!ac(a,"capture"))return!1;let l=(0,z.o_)(k);if(l.log&&$.info("duplicate-response-skipped",{worktreeId:g,cliToolId:h,instanceId:j,...l.consecutive>1?{consecutive:l.consecutive,suppressed:l.suppressed}:{}}),(0,f.updateSessionState)(d,g,h,b.lineCount,j),(0,z.pN)(k)){let b=await (0,A.captureStructuredHistoryTurn)(g,h,i,{worktreePath:e.path,transcriptPathHint:c?.logFilePath??null});if(!ac(a,"recheck-reader"))return b;if(b)return(0,z.oE)(k),(0,B.t1)(k),$.info("structured-history-recheck-captured",{worktreeId:g,cliToolId:h,instanceId:j}),!0}return!1}function af(a,b,c,d){let{db:e,worktree:h,worktreeId:i,cliToolId:j,resolvedInstanceId:k,pollerKey:l}=a,{structuredHistoryLive:m,suppressScrapedHistory:n,holdScrapedHistory:o}=d;if(o)(0,B.r4)(l,{worktreeId:i,cliToolId:j,instanceId:k,content:b,timestamp:new Date,summary:c?.summary,logFileName:c?.logFileName,requestId:c?.requestId,worktreePath:h.path,transcriptPathHint:c?.logFilePath??null,expiresAt:Date.now()+B.mQ})&&($.info("structured-history-scrape-held",{worktreeId:i,cliToolId:j,instanceId:k,scrapedLength:b.length,holdMs:B.mQ}),(0,C.vQ)(i,j,k,!1));else if(n||(0,H._B)(l))if(n)m&&(0,B.t1)(l),$.info("structured-history-scrape-suppressed",{worktreeId:i,cliToolId:j,instanceId:k,scrapedLength:b.length,reason:m?"structured-history":"geometry-delegated"});else{let a=(0,f.createMessage)(e,{worktreeId:i,role:"assistant",content:b,messageType:"normal",timestamp:new Date,cliToolId:j,instanceId:k,summary:c?.summary,logFileName:c?.logFileName,requestId:c?.requestId});(0,g.broadcastMessage)("message",{worktreeId:i,message:a}),(0,C.vQ)(i,j,k,!1)}else $.info("scraped-response-save-refused",{worktreeId:i,cliToolId:j,instanceId:k,generation:(0,H.Bh)()?.generation})}async function ag(a,b,c,d,e){let{db:g,worktree:h,worktreeId:i,cliToolId:j,instanceId:k,resolvedInstanceId:l,pollerKey:n}=a,{result:o,isFullScreenTui:p,lineCountIsCursor:q}=b,r={},s=(0,A.isStructuredHistoryWriterLive)(i,j,k)||await (0,A.captureStructuredHistoryTurn)(i,j,k,{worktreePath:h.path,transcriptPathHint:c?.logFilePath??null},r);ac(a,"reader")&&(s?(0,z.oE)(n):(0,z.Pe)(n));let t=s||e.delegated,u=!t&&"not_yet_closed"===r.outcome;if(!d||t||u||await (0,m.T)(g,i,d,j,{pollerKey:n}),!ac(a,"conversation-log"))return af(a,d,c,{structuredHistoryLive:s,suppressScrapedHistory:t,holdScrapedHistory:u}),!1;(0,f.markPendingPromptsAsAnswered)(g,i,j,l,_(i))>0&&$.info("marked-answeredcount-pending");let v=(0,f.getSessionState)(g,i,l);return q&&v&&o.lineCount<=v.lastCapturedLine?($.info("race-condition-detected-skipping-save-re"),!1):(af(a,d,c,{structuredHistoryLive:s,suppressScrapedHistory:t,holdScrapedHistory:u}),(0,N.hd)({worktreeId:i,cliToolId:j,instanceId:k,waiting:!1}),(0,I.J$)({worktreeId:i,worktreeName:h.name,kind:"completion",agentName:l,excerpt:d}).catch(()=>{}),(0,f.updateSessionState)(g,i,j,o.lineCount,l),p&&(0,G.Et)(i,j,k),!0)}async function ah(a,b,c){let h=(0,e.getDbInstance)(),i=c??b;try{let e=(0,f.getWorktreeById)(h,a);if(!e)return $.error("worktree-not-found"),(0,G.Et)(a,b,c),!1;let j=(0,G.MN)(a,b,c),k={db:h,worktree:e,worktreeId:a,cliToolId:b,instanceId:c,resolvedInstanceId:i,pollerKey:j},l=await (0,d.K1)(a,b,c);if(!ac(k,"session-check"))return!1;if(!l)return $.info("session-not-running"),(0,G.Et)(a,b,c),!1;if(await (0,B.vb)(j),!ac(k,"pending-scrape-settle"))return!1;let m=(0,D.mf)(b,a,c),q=(0,F.n9)(m)?await (0,E.zQ)(m):{delegated:!1,released:!1};if(!ac(k,"geometry-probe"))return!1;q.released&&((0,f.updateSessionState)(h,a,b,0,i),$.info("geometry-delegation-released",{worktreeId:a,cliToolId:b,instanceId:i}));let A=(0,f.getSessionState)(h,a,i),C=A?.lastCapturedLine||0,M=await (0,d.Wh)(a,b,s.xE,c),R=ac(k,"capture"),S=function(a,b,c,d){let{db:e,worktreeId:g,cliToolId:h,instanceId:i,resolvedInstanceId:j,pollerKey:k}=a;if(d&&function(a,b,c,d){let e=d.split("\n").slice(-100).join("\n"),f=(0,L.bT)(e);(0,K.notifyUpstreamFaultPush)({worktreeId:a,cliToolId:b,instanceId:c,faultId:f?.fault.id??null,matchedText:f?.matchedText}).catch(()=>{})}(g,h,i,b),d&&("opencode"===h||"copilot"===h)){let a="opencode"===h?(0,t.ZX)(b):b;(0,w.IZ)(k,a,h)}let l=function(a,b,c,d=s.xE){let e=a.split("\n"),f=e.length;for(;f>0&&""===e[f-1].trim();)f--;let g=e.slice(0,f),h=g.length,i=(0,s.sl)(e.length,d),j="opencode"===c?g.map(p.aJ):null,k="claude"===c?(0,p.GT)(g):"copilot"===c?(0,p.wv)(g):"command-code"===c?(0,p.I$)(g):"codex"===c?(0,p.Zu)(g):j?(0,p.x7)(j):-1,l=k>=0?k:h,m=h>0&&b>25&&h+25<b,n=h>0&&b>50&&h<50,o=m||n;if(!o&&h<b-5)return null;let q=Math.max(0,h-20),u=g.slice(q),v=j?j.join("\n"):u.join("\n"),{promptPattern:w,separatorPattern:x,thinkingPattern:y,skipPatterns:z}=(0,p._X)(c),A=(a=60)=>(function(a,b,c,d,e,f){let g;if("codex"===a)return(0,p.Nc)(b,e,f,d>=0);if(c)return(0,t.V0)(c).echoEnd;if("copilot"===a){for(let a=e-1;a>=Math.max(0,e-f);a--){if(!p.y.test((0,p.aJ)(b[a])))continue;let c=a;for(;c+1<e&&p.Fg.test((0,p.aJ)(b[c+1]));)c++;return c}return -1}g=/^[>❯]\s+\S/;for(let a=e-1;a>=Math.max(0,e-f);a--){let c=(0,p.aJ)(b[a]);if(g.test(c))return a}return -1})(c,g,j,k,l,a);if("claude"===c||"codex"===c||"copilot"===c||"command-code"===c){let a=g.join("\n"),d=ab(a,c);if(d.isPrompt&&V(c,d,a))return Q(g,b,h,o,c,A,d,i)}let B={cliToolId:c,lines:g,totalLines:h,openCodeCleanLines:j,chromeStart:k,contentEnd:l,lastCapturedLine:b,bufferReset:o,captureWindowSaturated:i,checkLineCount:20,cleanOutputToCheck:(0,p.aJ)(v),promptPattern:w,separatorPattern:x,thinkingPattern:y,skipPatterns:z,findRecentUserPromptIndex:A};if(function(a){let{cliToolId:b,lines:c,totalLines:d,checkLineCount:e,cleanOutputToCheck:f,promptPattern:g,separatorPattern:h,thinkingPattern:i}=a,j=g.test(f),k=h.test(f),l="codex"===b?(0,p.DR)(c,e):i.test(f),m="copilot"===b?(0,p.Wn)(c.slice(Math.max(0,d-8)).map(p.aJ)):null,n="copilot"===b?"idle"===m:("codex"===b||"gemini"===b||"vibe-local"===b||"antigravity"===b)&&j&&!l,o="opencode"===b&&(0,t.bE)(f);return n||"claude"===b&&j&&k&&!l||"command-code"===b&&j&&k&&!l||o}(B))return function(a){let{cliToolId:b,totalLines:c,openCodeCleanLines:d,bufferReset:e,captureWindowSaturated:f,thinkingPattern:g,skipPatterns:h,findRecentUserPromptIndex:i}=a,{response:j,endIndex:k}=function(a){let{cliToolId:b,lines:c,totalLines:d,chromeStart:e,contentEnd:f,lastCapturedLine:g,bufferReset:h,captureWindowSaturated:i,skipPatterns:j,findRecentUserPromptIndex:k}=a,l=[],m=(0,t.QM)(g,d,h,b,k,i),n="codex"===b?f:d;for(let a=m;a<f;a++){let d=c[a],f=(0,p.aJ)(d);if("codex"===b&&/^›\s+/.test(f)||"gemini"===b&&/^(%|\$|.*@.*[%$#])\s*$/.test(f)||"antigravity"===b&&/^>\s*$/.test(f)||"opencode"===b&&e<0&&(p.sy.test(f)||p.uA.test(f))){n=a;break}j.some(a=>a.test(f))||l.push(d)}return{response:l.join("\n").trim(),endIndex:n}}(a),l=j.split("\n").slice(-r.$).join("\n");if("copilot"!==b&&g.test(l))return P(c);let m=function(a,b,c,d,e){if("claude"===a){let a=(0,p.aJ)(b),f=/[╭╮╰╯]/.test(a)||/░{3,}/.test(a)||/▓{3,}/.test(a),g=/Claude Code v\d+\.\d+|claude\//.test(a),h=/Tip:|for shortcuts|\?\s*for help/.test(a),i=/^\s*\/Users\/.*$/m.test(a)&&a.split("\n").length<30,j=e(c)>=0,k=a.match(/^[>❯]\s+(\S.*)$/m);if(k){let b=a.indexOf(k[0]);if(0===a.substring(b+k[0].length).trim().split("\n").filter(a=>{let b=a.trim();return b&&!d.some(a=>a.test(b))&&!/^─+$/.test(b)}).length)return P(c)}else if(!j&&(f||g||h||i)&&b.length<2e3)return Y.info("Claude startup banner suppressed, response not saved",{responseLength:b.length,hasBannerArt:f,hasVersionInfo:g,hasStartupTips:h,hasProjectInit:i}),P(c)}return null}(b,j,c,h,i)??function(a,b,c){if("copilot"===a){let a=(0,p.aJ)(b);if(!a.split("\n").some(a=>p.y.test(a))&&p.E0.some(b=>b.test(a)))return P(c)}return null}(b,j,c)??("command-code"===b&&0>i(c)?(Y.info("Command Code launch screen suppressed, response not saved",{responseLength:j.length}),P(c)):null)??function(a,b,c){if("gemini"===a&&((b.match(/[░█]/g)||[]).length>.3*b.length||X.some(a=>b.includes(a))||!b.includes("✦")&&b.length<10))return P(c);return null}(b,j,c)??Z("codex",a,j,k)??Z("vibe-local",a,j,k);return m||{response:j,isComplete:!0,lineCount:k,bufferReset:e,captureWindowSaturated:f,turnHeadTruncated:d?(0,t.V0)(d).headTruncated:void 0}}(B);if("opencode"!==c){let a=g.join("\n"),d=ab(a,c);if(d.isPrompt&&V(c,d,a))return Q(g,b,h,o,c,A,d,i)}return function(a){let{lines:b,totalLines:c,contentEnd:d,lastCapturedLine:e,bufferReset:f,captureWindowSaturated:g,skipPatterns:h,findRecentUserPromptIndex:i}=a,j=[],k=f||g||e>=c-5,l=k?i(80):-1,m=k?l>=0?l+1:Math.max(0,c-80):Math.max(0,e);for(let a=m;a<Math.min(c,d);a++){let c=b[a],d=(0,p.aJ)(c);h.some(a=>a.test(d))||j.push(c)}let n=j.join("\n").trim();return n?{response:n,isComplete:!1,lineCount:c}:P(c)}(B)}(b,c,h,s.xE);if(!l||!l.isComplete){d&&l&&((0,x.WR)(k),(0,z.fS)(k));let{thinkingPattern:a}=(0,p._X)(h),c=(0,p.aJ)(b).split("\n").slice(-r.$).join("\n");return d&&a.test(c)&&(0,f.markPendingPromptsAsAnswered)(e,g,h,j,_(g))>0&&$.info("marked-answeredcount-pending"),!1}let m="opencode"===h||"copilot"===h,o=!(0,n.VA)(h)&&!l.captureWindowSaturated;return(!o||!!l.bufferReset||l.lineCount!==c)&&(o&&!l.bufferReset&&l.lineCount<=c?($.debug("already-saved-up-to-last-captured-line",{worktreeId:g,cliToolId:h,instanceId:j,lineCount:l.lineCount,lastCapturedLine:c}),!1):{result:l,isFullScreenTui:m,lineCountIsCursor:o})}(k,M,C,R);if(!S)return!1;let{result:T,isFullScreenTui:U,lineCountIsCursor:W}=S,aa=T.promptDetection??ab(T.response,b);if(aa.isPrompt&&V(b,aa,M))return R&&(0,z.fS)(j),function(a,b,c,d){let{db:e,worktree:h,worktreeId:i,cliToolId:j,instanceId:k,resolvedInstanceId:l,pollerKey:m}=a;if(!(0,H._B)(m))return $.info("prompt-save-refused",{worktreeId:i,cliToolId:j,instanceId:l,generation:(0,H.Bh)()?.generation}),!1;let n=b.rawContent||b.cleanContent,o=(0,x.zm)(n,j);if((0,x.gv)(m,o)){(0,y.LN)(i,j,k);let a=(0,x.p6)(m);return a.log&&$.info("duplicate-prompt-skipped",{worktreeId:i,cliToolId:j,...a.consecutive>1?{consecutive:a.consecutive,suppressed:a.suppressed}:{}}),!1}let p=n;"copilot"===j&&(p=(0,u.LH)(n),p=(0,u.Sj)(p,v.Rf,v.ky)),(0,f.clearInProgressMessageId)(e,i,j,l);let q=(0,f.createMessage)(e,{worktreeId:i,role:"assistant",content:p,messageType:"prompt",promptData:b.promptData,timestamp:new Date,cliToolId:j,instanceId:l});(0,f.updateSessionState)(e,i,j,c.lineCount,l),(0,g.broadcastMessage)("message",{worktreeId:i,message:q}),(0,O.r)(e,i,j,l,"prompt_detected",{promptType:b.promptData?.type});let r=Date.now(),s=(0,N.Jp)(i,j,k)?.since??r;return(0,J.R)({worktreeId:i,cliToolId:j,instanceId:k,waitingSince:s})||(0,I.J$)({worktreeId:i,worktreeName:h.name,kind:"prompt",agentName:l,instanceId:l,waitingKind:"prompt",waitingSince:s,excerpt:b.promptData?.question??p}).catch(()=>{}),(0,N.hd)({worktreeId:i,cliToolId:j,instanceId:k,waiting:!0,kind:"prompt",now:r}),d||(0,G.Et)(i,j,k),!0}(k,aa,T,U);if(R&&(0,x.WR)(j),!T.response||""===T.response.trim())return R&&((0,z.fS)(j),(0,f.updateSessionState)(h,a,b,T.lineCount,i)),!1;let ad="claude"===b?(0,o.R)(T.response):void 0,af=function(a,b,c,d){let e=b.response;if("gemini"===a)e=(0,u.IS)(b.response);else if("claude"===a)e=(0,u.NN)(b.response);else if("copilot"===a){let a=(0,w.Uz)(c)||b.response;e=(0,u.LH)(a),e=(0,u.Sj)(e,v.Rf,v.ky),d&&(0,w.q1)(c)}else if("opencode"===a){let a=(0,w.Uz)(c),f=b.turnHeadTruncated&&a?a:b.response;e=(0,u.aW)(f),d&&(0,w.q1)(c)}return e}(b,T,j,R);if(!af||""===af.trim()||"[No content]"===af)return R&&((0,z.fS)(j),(0,f.updateSessionState)(h,a,b,T.lineCount,i)),(0,f.clearInProgressMessageId)(h,a,b,i),!1;if(!W&&(0,z.j7)(j,af))return await ae(k,T,ad);return await ag(k,S,ad,af,q)}catch(a){return $.error("response:check-failed",{error:a instanceof Error?a.message:String(a)}),!1}}},91601:(a,b,c)=>{c.d(b,{Di:()=>f.Di,HR:()=>d.HR,J$:()=>e.notifyPushSubscribers,O$:()=>f.O$,d7:()=>f.d7,rS:()=>f.rS});var d=c(27519);c(8532);var e=c(61191);c(3915),c(92010),c(81099),c(77703),c(73478);var f=c(80544);c(50779),c(4806),c(55233)},92010:(a,b,c)=>{c.d(b,{R:()=>h});var d=c(24455),e=c(72626),f=c(52277);let g=(0,e.h)("push/prompt-gate");function h(a){let b=function(a){let{worktreeId:b,cliToolId:c,instanceId:e,waitingSince:g}=a,h=(0,d.aq)(b,c,e);if(null===h||!h.enabled)return{suppress:!1,reason:"auto-yes-inactive",stopReason:h?.stopReason};let i=(0,f.gb)(b,c,e);return null!==i&&i.at>=g?{suppress:!1,reason:"policy-withheld",suppressedBy:i.reason}:!0===a.escalated?{suppress:!1,reason:"escalation-reminder"}:{suppress:!0,reason:"auto-yes-answering"}}(a),c={worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId??a.cliToolId,waitingSince:a.waitingSince,escalated:!0===a.escalated,reason:b.reason,...void 0!==b.stopReason?{stopReason:b.stopReason}:{},...void 0!==b.suppressedBy?{suppressedBy:b.suppressedBy}:{}};return b.suppress?g.info("prompt-push-suppressed",c):g.debug("prompt-push-allowed",c),b.suppress}},97751:(a,b,c)=>{c.d(b,{M4:()=>p,W7:()=>r,aK:()=>q,dV:()=>l,dZ:()=>m,yQ:()=>j});var d=c(72626),e=c(27870),f=c(25071),g=c(59409),h=c(62887);let i=(0,d.h)("lib/hooks/structured-decision-response"),j="Rejected by the operator via `commandmate respond`.",k={1:["once","allow once","allow","yes","y"],2:["always","allow always","allow-always"],3:["reject","deny","no","n"]};function l(a,b){let c=a.trim().toLowerCase();if(""===c)return null;for(let a of void 0===b?e.QB:(0,e.T5)(b))if(c===String(a.number)||c===a.label.toLowerCase()||c===a.reply||(k[a.number]??[]).includes(c))return a;return null}function m(a){let b=a.questions[0];return b?b.choices.map((a,b)=>({number:b+1,label:a.label,reply:a.label})):[]}let n=/^\d+(?:\s*[,\s]\s*\d+)*$/;function o(a){return a.map(a=>`${a.number} = ${a.label}`).join(", ")}function p(a,b){let c=b.trim();if(""===c)return{ok:!1,reason:"unresolvable_answer",message:"An empty answer names no choice."};if(1!==a.questions.length)return{ok:!1,reason:"multi_question_unsupported",message:`This call asks ${a.questions.length} questions and \`answers\` carries one array per question; a single answer cannot say what the others are. Answer it in the terminal.`};let d=a.questions[0],e=m(a);if(n.test(c)){let a=[];for(let b of c.split(/[,\s]+/)){let d=e.find(a=>a.number===Number(b));if(!d)return{ok:!1,reason:"answer_out_of_range",message:`'${c}' names no choice this question offers. ${o(e)}.`};a.some(a=>a.number===d.number)||a.push(d)}return a.length>1&&!d.multiSelect?{ok:!1,reason:"multi_select_not_offered",message:`This question accepts one choice. Send a single number: ${o(e)}.`}:{ok:!0,resolved:{answers:[a.map(a=>a.reply)],selected:a,freeText:!1}}}let f=e.find(a=>a.label.toLowerCase()===c.toLowerCase());return f?{ok:!0,resolved:{answers:[[f.reply]],selected:[f],freeText:!1}}:c.length>1e3?{ok:!1,reason:"unresolvable_answer",message:"A free-text answer is limited to 1000 characters; this one is longer and is refused rather than cut short."}:{ok:!0,resolved:{answers:[[c]],selected:[],freeText:!0}}}function q(a){return{kind:"answer",answers:a.answers}}async function r({worktreeId:a,cliToolId:b,instanceId:d,answer:k,useDefault:m=!1}){let n,o=(0,g.VM)(b);if(null===o.capabilities.eventIdentity)return{kind:"not-applicable",reason:"no-decision-identity"};let p={worktreeId:a,cliToolId:b,instanceId:d};try{n=await o.listPending(p)}catch(c){return i.warn("structured-decision-unreachable",{worktreeId:a,cliToolId:b,instanceId:d??b,error:c instanceof Error?c.message:String(c)}),{kind:"not-applicable",reason:"source-unreachable"}}let q=n.filter(a=>"permission"===a.kind);if(0===q.length)return{kind:"not-applicable",reason:"no-pending-decision"};let r=q[0];if(q.length>1&&i.info("structured-decision-multiple-pending",{worktreeId:a,cliToolId:b,instanceId:d??b,pending:q.length,answering:r.id}),m)return{kind:"refused",reason:"unresolvable_answer",message:`--default cannot answer a structured approval: the agent publishes no default verdict. Send a number instead — ${(0,e.T5)(b).map(a=>`${a.number} = ${a.label}`).join(", ")}.`};let s=void 0===k?null:l(k,b);if(!s)return{kind:"refused",reason:"answer_out_of_range",message:`'${k??""}' is not one of the verdicts this approval accepts. `+(0,e.T5)(b).map(a=>`${a.number} = ${a.label} (${a.reply})`).join(", ")+"."};let t=function(a){switch(a){case 1:return{kind:"allowOnce"};case 2:return{kind:"allowAlways"};case 3:return{kind:"deny",message:j};default:return null}}(s.number);if(!t)return{kind:"refused",reason:"unresolvable_answer",message:`Option ${s.number} has no verdict on this server.`};let{delivery:u}=await (0,f.GW)(o,p,r,t),v=u?.delivered===!0;if(v&&o.capabilities.permissionReplyReleasesPrompt){let{recordAgentEvent:e}=await Promise.resolve().then(c.bind(c,33294));e(a,b,d,{event:"notification",at:Date.now(),detail:h.KC,sessionId:r.conversationId,decisionId:r.id,promptSettled:!0})}return i.info("structured-decision-answered",{worktreeId:a,cliToolId:b,instanceId:d??b,decisionId:r.id,optionNumber:s.number,reply:s.reply,delivered:v}),{kind:"answered",decisionId:r.id,option:s,delivered:v}}},99508:(a,b,c)=>{c.r(b),c.d(b,{INTERACTION_SNAPSHOT_RETRY_DELAYS_MS:()=>o,__resetTerminalBroadcastState:()=>w,broadcastSessionStatus:()=>v,broadcastTerminalSnapshot:()=>p,broadcastTerminalSnapshotAfterInteraction:()=>u});var d=c(43015),e=c(88807),f=c(79565),g=c(72626),h=c(8360),i=c(93997),j=c(36925),k=c(56455),l=c(85038);let m=(0,g.h)("terminal-broadcast"),n=(0,j.v)("__terminalSnapshotVersions",()=>new Map),o=[100,250,500,750];async function p(a,b,c){if((0,d.hasRoomSubscribers)(a))try{if(!await r(a,b,c))return;if(!(0,l.Z)())throw new l.SC;let d=(0,e.getDbInstance)(),g=await (0,f.$v)(d,a,b,c);if(!(0,l.Z)())throw new l.SC;t(a,b,g,c)}catch(d){if(d instanceof l.SC)return void m.info("terminal-snapshot:retired",{worktreeId:a,cliToolId:b,instanceId:c});m.error("terminal-snapshot:failed",{worktreeId:a,error:d instanceof Error?d.message:String(d)})}}function q(a){return JSON.stringify([a.fullOutput??"",a.isRunning,a.sessionStatus,a.thinking??!1,a.isPromptWaiting??!1,a.promptAnswerable??null,a.autoYes?.lastEnterFallback??null,a.isSelectionListActive??!1,a.isPagerActive??!1,a.isDismissablePanelActive??!1,a.isUnclassifiedActive??!1,a.startingSince??null])}async function r(a,b,c){let d=h.CLIToolManager.getInstance().getTool(b).getSessionName(a,c),e=await (0,k.y)(a,d);return null===e||(m.info("terminal-snapshot:refused",{worktreeId:a,cliToolId:b,instanceId:c,refusal:e}),!1)}async function s(a,b,c){if(!await r(a,b,c))return null;let d=h.CLIToolManager.getInstance().getTool(b);return(0,i.gm)(d.getSessionName(a,c)),(0,f.$v)((0,e.getDbInstance)(),a,b,c)}function t(a,b,c,e){let f=e??b,g=`${a}:${b}:${f}`;(0,d.broadcast)(a,{type:"terminal_snapshot",worktreeId:a,cliToolId:b,instanceId:f,output:c.fullOutput??"",isRunning:c.isRunning,sessionStatus:c.sessionStatus,thinking:c.thinking??!1,isPromptWaiting:c.isPromptWaiting??!1,promptData:c.promptData??null,promptAnswerable:c.promptAnswerable,autoYesEnterFallback:c.autoYes?.lastEnterFallback,isSelectionListActive:c.isSelectionListActive??!1,isPagerActive:c.isPagerActive??!1,isDismissablePanelActive:c.isDismissablePanelActive??!1,isUnclassifiedActive:c.isUnclassifiedActive??!1,startingSince:c.startingSince??null,version:function(a){let b=(n.get(a)??0)+1;return n.set(a,b),b}(g)})}async function u(a,b,c,e=o){if((0,d.hasRoomSubscribers)(a))try{let d=await s(a,b,c);if(null===d)return;let f=q(d);for(let g of(t(a,b,d,c),e)){await new Promise(a=>setTimeout(a,g));let d=await s(a,b,c);if(null===d)return;if(q(d)!==f)return void t(a,b,d,c)}}catch(d){m.error("terminal-snapshot:interaction-refresh-failed",{worktreeId:a,cliToolId:b,instanceId:c,error:d instanceof Error?d.message:String(d)})}}function v(a,b,c){(0,d.broadcast)(a,{type:"session_status_changed",worktreeId:a,isRunning:b,cliTool:c?.cliTool??null,instance:c?.instance??null})}function w(){n.clear()}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=3543,exports.ids=[3543],exports.modules={73543:a=>{a.exports=JSON.parse('{"sessions":{"idleAgents":"{count} idle","activeAgents":"{count} active","title":"Sessions","description":"All worktree sessions across repositories.","filterPlaceholder":"Filter by name or repository...","filterAriaLabel":"Filter sessions by name or repository","sortByAriaLabel":"Sort by","sortAscending":"Sort ascending","sortDescending":"Sort descending","loadingAriaLabel":"Loading sessions","refreshError":"Failed to refresh sessions: {message}","loadError":"Failed to load sessions: {message}","noMatching":"No matching sessions found.","empty":"No sessions yet.","viewMode":{"groupAriaLabel":"Session layout","list":"List view","tile":"Tile view"},"tileAriaLabel":"Session tile for {branch}","tileInstanceAriaLabel":"Agent instance shown in this tile"},"nav":{"sessions":"Sessions","repositories":"Repositories","repositoriesShort":"Repos","review":"Review","reviewReport":"Review/Report","more":"Settings","skills":"Skills"},"repositories":{"empty":"No repositories registered yet.","add":"Add Repository","syncAll":"Sync All","syncing":"Syncing...","addNewTitle":"Add New Repository","localPathTab":"Local Path","cloneUrlTab":"Clone URL","localPathDescription":"Enter the absolute path to a git repository containing worktrees.","localPathLabel":"Repository Path","localPathExample":"Example: {example}","localPathAllowedRoots":"Allowed roots: {roots}","browse":"Browse…","pickerTitle":"Select a repository folder","pickerRootsLabel":"Allowed roots","pickerRecentLabel":"Recently used","pickerSelectHere":"Select this folder","pickerUp":"Up one level","pickerEmpty":"No subfolders here.","pickerTruncated":"Showing the first {limit} folders only.","pickerLoading":"Loading…","pickerWorktreeCount":"{count} worktree(s)","validationGitRepo":"Git repository detected ({count} worktree(s))","validationNotGitRepo":"This folder is not a git repository.","validationNotFound":"This folder does not exist.","validationOutsideRoots":"Outside the allowed roots ({roots}).","scan":"Scan & Add","scanning":"Scanning...","cloneUrlDescription":"Enter a git clone URL to clone a remote repository.","cloneUrlLabel":"Clone URL","cloneUrlHelp":"Supports HTTPS and SSH URLs","clone":"Clone","forkAndClone":"Fork & Add","forkOptionLabel":"Fork before adding (gh repo fork)","forkOptionHelp":"Creates a fork in your GitHub account and clones that (origin = your fork, upstream = original). Requires an authenticated GitHub CLI (gh).","cloning":"Cloning...","cloneSuccess":"Repository cloned successfully","cloneFailed":"Clone failed","pathRequired":"Repository path is required","urlRequired":"Clone URL is required","urlInvalid":"Invalid URL format","loading":"Loading repositories","filterAll":"All ({count})","filterDisabled":"Disabled ({count})","emptyDisabled":"No repositories are excluded from scans.","disableConfirmTitle":"Exclude from scans?","disableConfirmBody":"\\"{name}\\" will no longer be scanned for worktrees.\\n\\nNothing is deleted: its {count} worktree(s) and their chat history, tasks and verification runs stay in the database, and any tmux session running under it keeps running.\\n\\nIts worktrees also stay in the sidebar — use the Visibility toggle to hide them.","disableConfirmAction":"Exclude from scans","disableSuccess":"\\"{name}\\" is excluded from scans.","enableSuccess":"\\"{name}\\" is scanned again ({count} worktree(s)).","duplicateScanRootWarning":"Same git repository as an existing scan root: {paths}. Both will be scanned, and every worktree they share will be registered twice.","duplicateConfirmTitle":"Register a second scan root for the same repository?","duplicateConfirmBody":"\\"{path}\\" is the same git repository as:\\n{paths}\\n\\nBoth roots list the same worktrees, so every sync registers each of them twice and their \\"repository path\\" flips between the roots run to run.\\n\\nThis is allowed — continue if you want to manage these worktrees as separate roots. Otherwise cancel, or use the Scan toggle on the Repositories list to exclude one of them later.","duplicateConfirmAction":"Add anyway","duplicateRowBadge":"Duplicate scan root","duplicateRowDetail":"Same git repository as {paths}. Use the Scan toggle on one of these rows to exclude it from scans."},"cancel":"Cancel","sending":"Sending...","end":"End","ending":"Ending...","retry":"Retry","reload":"Reload","reconnect":"Reconnect","close":"Close","back":"Back","menu":"Menu","sidebar":{"open":"Open sidebar","close":"Close sidebar","branchNavigation":"Branch navigation","branches":"Branches","searchBranches":"Search branches...","noBranchesFound":"No branches found","noBranchesAvailable":"No branches available","loadingBranches":"Loading branches...","branchesLoadFailed":"Failed to load branches","retryLoadBranches":"Retry","dragToReorderGroup":"Drag to reorder group","viewLabel":"View","viewMode":{"grouped":"Repository","flat":"Branch","sessions":"Session"}},"confirmDelete":"Delete \\"{name}\\"?","favorites":{"add":"Add to favorites","remove":"Remove from favorites"},"syncSuccess":"Synced {count} worktrees","syncError":"Sync failed","syncAuthError":"Authentication error","syncButtonLabel":"Sync branches","tooltips":{"sync":"Sync worktrees"},"displaySize":{"ariaLabel":"Display size","large":"Large","medium":"Medium","small":"Small","xsmall":"Extra small"},"repoTabBar":{"settingLabel":"Repository tabs","overflow":"More repositories","mode":{"always":"Always show","collapsed":"Only when the sidebar is collapsed","hidden":"Hidden"}},"confirmDialog":{"title":"Confirm","confirm":"OK"},"language":"Language","loadingPage":"Loading page","closeNotification":"Close notification","status":{"idle":"Idle","ready":"Ready","running":"Running","generating":"Generating","waiting":"Waiting for response","error":"Error","unknown":"Unknown"},"sort":{"options":"Sort options","updatedAt":"Updated","repositoryName":"Repository name","branchName":"Branch name","status":"Status","lastSent":"Last Sent","label":"Sort","sortBy":"Sort by {label}","ascending":"Sort ascending","descending":"Sort descending","ascShort":"ASC","descShort":"DESC","direction":{"newestFirst":"Newest first","oldestFirst":"Oldest first","aToZ":"A→Z","zToA":"Z→A","attentionFirst":"Needs attention first","attentionLast":"Needs attention last"}},"branchItem":{"cliToolStatus":"CLI tool status","hasUnread":"Has unread messages","agentExited":"exited"},"connection":{"reconnecting":"Reconnecting","offline":"Offline","reconnectingTooltip":"Re-establishing the live connection (running on polling)","offlineTooltip":"No live connection (running on polling)"},"versionMismatch":{"title":"A new version is running","description":"The server is now on {serverVersion}, but this tab is still on {clientVersion}. Reload to get the latest.","reload":"Reload","dismiss":"Dismiss"},"whatsNew":{"title":"What\'s new (v{from} → v{to})","highlight":"Highlights","added":"New","improved":"Improved","fixed":"Fixed","empty":"See the release page for the details of this update.","releaseLink":"Open the release page","close":"Close"},"meta":{"description":"Git worktree management with Claude CLI and tmux sessions"},"attention":{"label":"Needs attention","badgeLabel":"{count} worktrees need your attention"},"agentUpdates":{"title":"Agent CLI versions","description":"Installed versions of the agent CLIs on this machine. The update runs outside the agent pane, so a session that is already open is not interrupted.","installed":"installed {version}","notInstalled":"Not installed","available":"Update available: {version}","dismissed":"Marked as dismissed in codex","update":"Update","updating":"Updating...","running":"Running: {command}","succeeded":"Updated {from} to {to}.","failed":"Update failed: {error}","restartWarning":"These sessions keep the current version until they are restarted: {sessions}","restartNotice":"A session that is already running keeps its current version until it is restarted.","restart":"Restart {alias}","restarted":"Ended. The next message starts it on the new version.","restartError":"Could not restart the session.","loadError":"Could not read the agent CLI versions."},"settings":{"title":"Settings","pageDescription":"Defaults for new branches, notifications, external apps, and more.","sections":{"quickLinks":"Quick Links","general":"General","notifications":"Notifications","externalApps":"External Apps","about":"About"},"categoriesLabel":"Settings categories","defaultSurfaceMode":{"title":"Default output surface","description":"Which surface a session\'s output half opens in: the live terminal, or the conversation transcript. You can still switch either way from the session header.","appliesToNew":"Only affects surfaces you have not switched yet. A split or phone tab you already toggled keeps the mode you left it in.","mode":{"terminal":"Terminal","chat":"Chat"},"hint":{"terminal":"The agent\'s terminal, exactly as it is drawn in tmux.","chat":"The conversation transcript, as a message list."},"saving":"Saving...","saved":"Saved","configured":"Configured","usingBuiltIn":"Using the built-in default","saveError":"Could not save.","loadError":"Could not load the setting."},"defaultAgents":{"title":"Default agents for new branches","description":"The agents a newly discovered branch opens with, in order. The first one is the primary — the tab that opens first and the default target for sends.","appliesToNew":"Existing branches are left alone. Their tabs stay exactly as they are.","primary":"primary","installed":"Installed","notInstalled":"Not installed","addLabel":"Available to add","add":"Add","remove":"Remove","moveUp":"Move up","moveDown":"Move down","save":"Save","saving":"Saving...","saved":"Saved","reset":"Reset to default","builtIn":"Built-in default: {agents}","configured":"Configured","usingBuiltIn":"Using the built-in default","range":"Select between {min} and {max} agents.","saveError":"Could not save.","loadError":"Could not load the setting.","opencodeSharedData":"OpenCode and OpenCode V2 are both installed. They share ~/.local/share/opencode, and V2 changes the database in ways OpenCode 1.x cannot read — if OpenCode fails to start, use OpenCode V2 only or give OpenCode 1.x its own data directory."}}}')}};
|
|
1
|
+
"use strict";exports.id=3543,exports.ids=[3543],exports.modules={73543:a=>{a.exports=JSON.parse('{"sessions":{"idleAgents":"{count} idle","activeAgents":"{count} active","title":"Sessions","description":"All worktree sessions across repositories.","filterPlaceholder":"Filter by name or repository...","filterAriaLabel":"Filter sessions by name or repository","sortByAriaLabel":"Sort by","sortAscending":"Sort ascending","sortDescending":"Sort descending","loadingAriaLabel":"Loading sessions","refreshError":"Failed to refresh sessions: {message}","loadError":"Failed to load sessions: {message}","noMatching":"No matching sessions found.","empty":"No sessions yet.","viewMode":{"groupAriaLabel":"Session layout","list":"List view","tile":"Tile view"},"tileAriaLabel":"Session tile for {branch}","tileInstanceAriaLabel":"Agent instance shown in this tile"},"nav":{"sessions":"Sessions","repositories":"Repositories","review":"Review","more":"Settings","skills":"Skills"},"repositories":{"pageDescription":"Manage repositories and worktrees.","empty":"No repositories registered yet.","add":"Add Repository","syncAll":"Sync All","syncing":"Syncing...","addNewTitle":"Add New Repository","localPathTab":"Local Path","cloneUrlTab":"Clone URL","localPathDescription":"Enter the absolute path to a git repository containing worktrees.","localPathLabel":"Repository Path","localPathExample":"Example: {example}","localPathAllowedRoots":"Allowed roots: {roots}","browse":"Browse…","pickerTitle":"Select a repository folder","pickerRootsLabel":"Allowed roots","pickerRecentLabel":"Recently used","pickerSelectHere":"Select this folder","pickerUp":"Up one level","pickerEmpty":"No subfolders here.","pickerTruncated":"Showing the first {limit} folders only.","pickerLoading":"Loading…","pickerWorktreeCount":"{count} worktree(s)","validationGitRepo":"Git repository detected ({count} worktree(s))","validationNotGitRepo":"This folder is not a git repository.","validationNotFound":"This folder does not exist.","validationOutsideRoots":"Outside the allowed roots ({roots}).","scan":"Scan & Add","scanning":"Scanning...","cloneUrlDescription":"Enter a git clone URL to clone a remote repository.","cloneUrlLabel":"Clone URL","cloneUrlHelp":"Supports HTTPS and SSH URLs","clone":"Clone","forkAndClone":"Fork & Add","forkOptionLabel":"Fork before adding (gh repo fork)","forkOptionHelp":"Creates a fork in your GitHub account and clones that (origin = your fork, upstream = original). Requires an authenticated GitHub CLI (gh).","cloning":"Cloning...","cloneSuccess":"Repository cloned successfully","cloneFailed":"Clone failed","pathRequired":"Repository path is required","urlRequired":"Clone URL is required","urlInvalid":"Invalid URL format","loading":"Loading repositories","filterAll":"All ({count})","filterDisabled":"Disabled ({count})","emptyDisabled":"No repositories are excluded from scans.","disableConfirmTitle":"Exclude from scans?","disableConfirmBody":"\\"{name}\\" will no longer be scanned for worktrees.\\n\\nNothing is deleted: its {count} worktree(s) and their chat history, tasks and verification runs stay in the database, and any tmux session running under it keeps running.\\n\\nIts worktrees also stay in the sidebar — use the Visibility toggle to hide them.","disableConfirmAction":"Exclude from scans","disableSuccess":"\\"{name}\\" is excluded from scans.","enableSuccess":"\\"{name}\\" is scanned again ({count} worktree(s)).","duplicateScanRootWarning":"Same git repository as an existing scan root: {paths}. Both will be scanned, and every worktree they share will be registered twice.","duplicateConfirmTitle":"Register a second scan root for the same repository?","duplicateConfirmBody":"\\"{path}\\" is the same git repository as:\\n{paths}\\n\\nBoth roots list the same worktrees, so every sync registers each of them twice and their \\"repository path\\" flips between the roots run to run.\\n\\nThis is allowed — continue if you want to manage these worktrees as separate roots. Otherwise cancel, or use the Scan toggle on the Repositories list to exclude one of them later.","duplicateConfirmAction":"Add anyway","duplicateRowBadge":"Duplicate scan root","duplicateRowDetail":"Same git repository as {paths}. Use the Scan toggle on one of these rows to exclude it from scans."},"cancel":"Cancel","sending":"Sending...","end":"End","ending":"Ending...","retry":"Retry","reload":"Reload","reconnect":"Reconnect","close":"Close","back":"Back","menu":"Menu","sidebar":{"railLabel":"App navigation","open":"Open sidebar","close":"Close sidebar","branchNavigation":"Branch navigation","branches":"Branches","searchBranches":"Search branches...","noBranchesFound":"No branches found","noBranchesAvailable":"No branches available","loadingBranches":"Loading branches...","branchesLoadFailed":"Failed to load branches","retryLoadBranches":"Retry","dragToReorderGroup":"Drag to reorder group","viewLabel":"View","listOptionsLabel":"View and sort ({summary})","listOptionsSummary":"{view} \xb7 {sort} \xb7 {direction}","needsAttention":"Needs attention","openInReview":"Open in Review","attentionMoreInReview":"+{count} more in Review","hiddenRepository":"Hidden repository","otherBranches":"Other ({count})","viewMode":{"grouped":"Repository","flat":"Branch","sessions":"Session"}},"confirmDelete":"Delete \\"{name}\\"?","favorites":{"add":"Add to favorites","remove":"Remove from favorites"},"syncSuccess":"Synced {count} worktrees","syncError":"Sync failed","syncAuthError":"Authentication error","syncButtonLabel":"Sync branches","tooltips":{"sync":"Sync worktrees"},"displaySize":{"ariaLabel":"Display size","large":"Large","medium":"Medium","small":"Small","xsmall":"Extra small"},"repoTabBar":{"settingLabel":"Repository tabs","overflow":"More repositories","switchBranch":"Switch to another branch of {repository}","mode":{"always":"Always show","collapsed":"Only when the sidebar is collapsed","hidden":"Hidden"}},"confirmDialog":{"title":"Confirm","confirm":"OK"},"language":"Language","loadingPage":"Loading page","closeNotification":"Close notification","status":{"idle":"Idle","ready":"Ready","running":"Running","generating":"Generating","waiting":"Waiting for response","error":"Error","unknown":"Unknown"},"sort":{"options":"Sort options","updatedAt":"Updated","repositoryName":"Repository name","branchName":"Branch name","status":"Status","lastSent":"Last Sent","label":"Sort","sortBy":"Sort by {label}","ascending":"Sort ascending","descending":"Sort descending","ascShort":"ASC","descShort":"DESC","directionLabel":"Order","direction":{"newestFirst":"Newest first","oldestFirst":"Oldest first","aToZ":"A→Z","zToA":"Z→A","attentionFirst":"Needs attention first","attentionLast":"Needs attention last"}},"branchItem":{"cliToolStatus":"CLI tool status","hasUnread":"Has unread messages","agentExited":"exited","actions":"Actions for {name}","openInNewTab":"Open in new tab","copyBranchName":"Copy branch name","copyPath":"Copy path","copied":"Copied","copyFailed":"Could not copy","status":"Status","statusChangeFailed":"Could not change the status"},"connection":{"reconnecting":"Reconnecting","offline":"Offline","reconnectingTooltip":"Re-establishing the live connection (running on polling)","offlineTooltip":"No live connection (running on polling)"},"versionMismatch":{"title":"A new version is running","description":"The server is now on {serverVersion}, but this tab is still on {clientVersion}. Reload to get the latest.","reload":"Reload","dismiss":"Dismiss"},"whatsNew":{"title":"What\'s new (v{from} → v{to})","highlight":"Highlights","added":"New","improved":"Improved","fixed":"Fixed","empty":"See the release page for the details of this update.","releaseLink":"Open the release page","close":"Close"},"meta":{"description":"Git worktree management with Claude CLI and tmux sessions"},"attention":{"label":"Needs attention","badgeLabel":"{count} worktrees need your attention"},"agentUpdates":{"title":"Agent CLI versions","description":"Installed versions of the agent CLIs on this machine. The update runs outside the agent pane, so a session that is already open is not interrupted.","installed":"installed {version}","notInstalled":"Not installed","available":"Update available: {version}","dismissed":"Marked as dismissed in codex","update":"Update","updating":"Updating...","running":"Running: {command}","succeeded":"Updated {from} to {to}.","failed":"Update failed: {error}","restartWarning":"These sessions keep the current version until they are restarted: {sessions}","restartNotice":"A session that is already running keeps its current version until it is restarted.","restart":"Restart {alias}","restarted":"Ended. The next message starts it on the new version.","restartError":"Could not restart the session.","loadError":"Could not read the agent CLI versions."},"settings":{"title":"Settings","pageDescription":"Defaults for new branches, notifications, external apps, and more.","sections":{"quickLinks":"Quick Links","general":"General","notifications":"Notifications","externalApps":"External Apps","about":"About"},"categoriesLabel":"Settings categories","defaultSurfaceMode":{"title":"Default output surface","description":"Which surface a session\'s output half opens in: the live terminal, or the conversation transcript. You can still switch either way from the session header.","appliesToNew":"Only affects surfaces you have not switched yet. A split or phone tab you already toggled keeps the mode you left it in.","mode":{"terminal":"Terminal","chat":"Chat"},"hint":{"terminal":"The agent\'s terminal, exactly as it is drawn in tmux.","chat":"The conversation transcript, as a message list."},"saving":"Saving...","saved":"Saved","configured":"Configured","usingBuiltIn":"Using the built-in default","saveError":"Could not save.","loadError":"Could not load the setting."},"defaultAgents":{"title":"Default agents for new branches","description":"The agents a newly discovered branch opens with, in order. The first one is the primary — the tab that opens first and the default target for sends.","appliesToNew":"Existing branches are left alone. Their tabs stay exactly as they are.","primary":"primary","installed":"Installed","notInstalled":"Not installed","addLabel":"Available to add","add":"Add","remove":"Remove","moveUp":"Move up","moveDown":"Move down","save":"Save","saving":"Saving...","saved":"Saved","reset":"Reset to default","builtIn":"Built-in default: {agents}","configured":"Configured","usingBuiltIn":"Using the built-in default","range":"Select between {min} and {max} agents.","saveError":"Could not save.","loadError":"Could not load the setting.","opencodeSharedData":"OpenCode and OpenCode V2 are both installed. They share ~/.local/share/opencode, and V2 changes the database in ways OpenCode 1.x cannot read — if OpenCode fails to start, use OpenCode V2 only or give OpenCode 1.x its own data directory."}},"newTask":{"title":"New task","loading":"Loading branches…","loadError":"Could not load the branch list.","noTargets":"No branch has an agent to send to.","recentLabel":"Recent","repositoryLabel":"Repository","branchLabel":"Branch","agentLabel":"Agent","agentStatus":{"running":"running","starting":"starting","stopped":"stopped"},"willStart":"{agent} is not running. It will be started, then the request is sent.","startingNotice":"{agent} is still starting. If the send is refused, wait a moment and send again.","messageLabel":"Request","messagePlaceholder":"What should the agent do?","modelLabel":"Model","modelPlaceholder":"Default","modelHintLaunch":"Applied when the session starts.","modelHintSwitch":"Switches the running session to this model.","modelUnavailable":{"unsupported":"{agent} does not take a model on send.","running":"{agent} is already running. A model can only be set when it starts — stop the session first to switch."},"autoYesLabel":"Auto-Yes","autoYesActive":"On for this agent, {remaining} left. Left as it is.","autoYesKeep":"Leave off","autoYesKeepUnknown":"Leave as it is (state unknown)","autoYesUnknown":"Could not confirm the Auto-Yes state; it may be on for this agent.","autoYesEnableFor":"Turn on for {duration}","autoYesScope":"Applies to this agent until it expires, not only to this request.","send":"Send","sending":"Sending…","sendHint":"to send","sentToast":"Sent to {target}. Click to go back.","errors":{"auto_yes_failed":"Auto-Yes could not be turned on, so nothing was sent.","prompt_waiting":"{agent} is waiting on a prompt, so nothing was sent. Answer it on the branch screen, then send again.","conflict":"The session refused the request.","starting":"{agent} is still starting. Wait a moment and send again.","start_failed":"{agent} could not be started.","model_rejected":"The model was not accepted. Clear it or change it, then send again.","invalid":"The request was not accepted.","failed":"Sending failed. Check the connection and send again."}}}')}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=3945,exports.ids=[3945],exports.modules={53945:a=>{a.exports=JSON.parse('{"sessions":{"idleAgents":"アイドル {count} 件","activeAgents":"稼働 {count} 件","title":"セッション","description":"全リポジトリの worktree セッション。","filterPlaceholder":"名前またはリポジトリで絞り込み...","filterAriaLabel":"名前またはリポジトリでセッションを絞り込む","sortByAriaLabel":"並び替え","sortAscending":"昇順に並び替え","sortDescending":"降順に並び替え","loadingAriaLabel":"セッションを読み込み中","refreshError":"セッションの更新に失敗しました: {message}","loadError":"セッションの読み込みに失敗しました: {message}","noMatching":"一致するセッションがありません。","empty":"セッションがまだありません。","viewMode":{"groupAriaLabel":"セッションの表示形式","list":"リスト表示","tile":"タイル表示"},"tileAriaLabel":"{branch} のセッションタイル","tileInstanceAriaLabel":"このタイルに表示するエージェントインスタンス"},"nav":{"sessions":"セッション","repositories":"リポジトリ","
|
|
1
|
+
"use strict";exports.id=3945,exports.ids=[3945],exports.modules={53945:a=>{a.exports=JSON.parse('{"sessions":{"idleAgents":"アイドル {count} 件","activeAgents":"稼働 {count} 件","title":"セッション","description":"全リポジトリの worktree セッション。","filterPlaceholder":"名前またはリポジトリで絞り込み...","filterAriaLabel":"名前またはリポジトリでセッションを絞り込む","sortByAriaLabel":"並び替え","sortAscending":"昇順に並び替え","sortDescending":"降順に並び替え","loadingAriaLabel":"セッションを読み込み中","refreshError":"セッションの更新に失敗しました: {message}","loadError":"セッションの読み込みに失敗しました: {message}","noMatching":"一致するセッションがありません。","empty":"セッションがまだありません。","viewMode":{"groupAriaLabel":"セッションの表示形式","list":"リスト表示","tile":"タイル表示"},"tileAriaLabel":"{branch} のセッションタイル","tileInstanceAriaLabel":"このタイルに表示するエージェントインスタンス"},"nav":{"sessions":"セッション","repositories":"リポジトリ","review":"レビュー","more":"設定","skills":"スキル"},"repositories":{"pageDescription":"リポジトリとワークツリーを管理します。","empty":"リポジトリが登録されていません。","add":"リポジトリを追加","syncAll":"すべて同期","syncing":"同期中...","addNewTitle":"リポジトリを新規追加","localPathTab":"ローカルパス","cloneUrlTab":"クローン URL","localPathDescription":"worktree を含む git リポジトリの絶対パスを入力してください。","localPathLabel":"リポジトリパス","localPathExample":"例: {example}","localPathAllowedRoots":"許可ルート: {roots}","browse":"参照…","pickerTitle":"リポジトリのフォルダを選択","pickerRootsLabel":"許可ルート","pickerRecentLabel":"最近使ったパス","pickerSelectHere":"このフォルダを選択","pickerUp":"1 階層上へ","pickerEmpty":"サブフォルダがありません。","pickerTruncated":"先頭 {limit} 件のみ表示しています。","pickerLoading":"読み込み中…","pickerWorktreeCount":"worktree {count} 件","validationGitRepo":"git リポジトリです(worktree {count} 件検出)","validationNotGitRepo":"このフォルダは git リポジトリではありません。","validationNotFound":"このフォルダは存在しません。","validationOutsideRoots":"許可ルート外です({roots})。","scan":"スキャンして追加","scanning":"スキャン中...","cloneUrlDescription":"リモートリポジトリをクローンする git の URL を入力してください。","cloneUrlLabel":"クローン URL","cloneUrlHelp":"HTTPS と SSH の URL に対応しています","clone":"クローン","forkAndClone":"Fork して追加","forkOptionLabel":"追加前に fork する(gh repo fork)","forkOptionHelp":"自分の GitHub アカウントに fork を作成し、それをクローンします(origin=自分の fork、upstream=元リポジトリ)。認証済みの GitHub CLI(gh)が必要です。","cloning":"クローン中...","cloneSuccess":"リポジトリをクローンしました","cloneFailed":"クローンに失敗しました","pathRequired":"リポジトリパスを入力してください","urlRequired":"クローン URL を入力してください","urlInvalid":"URL の形式が正しくありません","loading":"リポジトリを読み込み中","filterAll":"すべて ({count})","filterDisabled":"無効化中 ({count})","emptyDisabled":"走査対象から外したリポジトリはありません。","disableConfirmTitle":"走査対象から外しますか?","disableConfirmBody":"「{name}」は今後 worktree の走査対象から外れます。\\n\\n削除は行いません: {count} 件の worktree と、そのチャット履歴・タスク・検証実行はデータベースに残り、稼働中の tmux セッションもそのまま動き続けます。\\n\\nworktree はサイドバーにも残ります。非表示にする場合は Visibility トグルを使ってください。","disableConfirmAction":"走査対象から外す","disableSuccess":"「{name}」を走査対象から外しました。","enableSuccess":"「{name}」を走査対象に戻しました (worktree {count} 件)。","duplicateScanRootWarning":"既存の scan root と同じ git リポジトリです: {paths}。両方が走査され、共有している worktree はすべて二重に登録されます。","duplicateConfirmTitle":"同じリポジトリの scan root をもう 1 つ登録しますか?","duplicateConfirmBody":"「{path}」は次と同じ git リポジトリです:\\n{paths}\\n\\nどちらの root も同じ worktree を列挙するため、同期のたびに各 worktree が二重に登録され、「リポジトリパス」が実行ごとに入れ替わります。\\n\\nこの登録自体は可能です。これらの worktree を別々の root として管理したい場合はそのまま続行してください。そうでなければキャンセルするか、後から Repositories 一覧の Scan トグルで片方を走査対象から外してください。","duplicateConfirmAction":"このまま追加","duplicateRowBadge":"scan root 重複","duplicateRowDetail":"{paths} と同じ git リポジトリです。どちらかの行の Scan トグルで走査対象から外せます。"},"cancel":"キャンセル","sending":"送信中...","end":"終了する","ending":"終了中...","retry":"再試行","reload":"再読み込み","reconnect":"再接続","close":"閉じる","back":"戻る","menu":"メニュー","sidebar":{"railLabel":"アプリのナビゲーション","open":"サイドバーを開く","close":"サイドバーを閉じる","branchNavigation":"ブランチナビゲーション","branches":"ブランチ","searchBranches":"ブランチを検索...","noBranchesFound":"ブランチが見つかりません","noBranchesAvailable":"ブランチがありません","loadingBranches":"ブランチを読み込み中...","branchesLoadFailed":"ブランチを取得できませんでした","retryLoadBranches":"再試行","dragToReorderGroup":"ドラッグでグループを並べ替え","viewLabel":"表示","listOptionsLabel":"表示と並び({summary})","listOptionsSummary":"{view} \xb7 {sort} \xb7 {direction}","needsAttention":"要対応","openInReview":"Review で開く","attentionMoreInReview":"ほか {count} 件を Review で見る","hiddenRepository":"非表示のリポジトリ","otherBranches":"その他({count})","viewMode":{"grouped":"リポジトリ","flat":"ブランチ","sessions":"セッション"}},"confirmDelete":"「{name}」を削除しますか?","favorites":{"add":"お気に入りに追加","remove":"お気に入りを解除"},"syncSuccess":"{count}件のworktreeを同期しました","syncError":"同期に失敗しました","syncAuthError":"認証エラー","syncButtonLabel":"ブランチを同期","tooltips":{"sync":"worktree を同期"},"displaySize":{"ariaLabel":"表示サイズ","large":"大","medium":"中","small":"小","xsmall":"極小"},"repoTabBar":{"settingLabel":"リポジトリタブ帯","overflow":"ほかのリポジトリ","switchBranch":"{repository} のほかのブランチへ切り替える","mode":{"always":"常に表示","collapsed":"サイドバー折りたたみ時のみ","hidden":"非表示"}},"confirmDialog":{"title":"確認","confirm":"OK"},"language":"言語","loadingPage":"ページを読み込み中","closeNotification":"通知を閉じる","status":{"idle":"アイドル","ready":"準備完了","running":"実行中","generating":"生成中","waiting":"応答待ち","error":"エラー","unknown":"不明"},"sort":{"options":"並び替えオプション","updatedAt":"更新日時","repositoryName":"リポジトリ名","branchName":"ブランチ名","status":"ステータス","lastSent":"最終送信","label":"並び","sortBy":"並び順: {label}","ascending":"昇順に並び替え","descending":"降順に並び替え","ascShort":"昇順","descShort":"降順","directionLabel":"順序","direction":{"newestFirst":"新しい順","oldestFirst":"古い順","aToZ":"A→Z","zToA":"Z→A","attentionFirst":"要対応が先","attentionLast":"要対応が後"}},"branchItem":{"cliToolStatus":"CLI ツールのステータス","hasUnread":"未読メッセージあり","agentExited":"終了","actions":"{name} の操作","openInNewTab":"新しいタブで開く","copyBranchName":"ブランチ名をコピー","copyPath":"パスをコピー","copied":"コピーしました","copyFailed":"コピーできませんでした","status":"ステータス","statusChangeFailed":"ステータスを変更できませんでした"},"connection":{"reconnecting":"再接続中","offline":"オフライン","reconnectingTooltip":"ライブ接続を再確立しています(ポーリングで動作中)","offlineTooltip":"ライブ接続なし(ポーリングで動作中)"},"versionMismatch":{"title":"新しいバージョンが起動しています","description":"サーバーは {serverVersion} になりましたが、このタブは {clientVersion} のままです。最新の状態にするには再読み込みしてください。","reload":"再読み込み","dismiss":"閉じる"},"whatsNew":{"title":"新機能と改善(v{from} → v{to})","highlight":"ハイライト","added":"新機能","improved":"改善","fixed":"修正","empty":"この更新の詳細はリリースページをご覧ください。","releaseLink":"リリースページを開く","close":"閉じる"},"meta":{"description":"Claude CLI と tmux セッションによる Git worktree 管理"},"attention":{"label":"要対応","badgeLabel":"要対応のワークツリーが {count} 件あります"},"agentUpdates":{"title":"エージェント CLI のバージョン","description":"このマシンにインストールされているエージェント CLI のバージョンです。更新はエージェントの pane ではなく別プロセスで実行するため、開いているセッションは中断されません。","installed":"インストール済み {version}","notInstalled":"未インストール","available":"更新あり: {version}","dismissed":"codex 側で「見送り」扱いになっています","update":"更新する","updating":"更新中...","running":"実行中: {command}","succeeded":"{from} から {to} に更新しました。","failed":"更新に失敗しました: {error}","restartWarning":"次のセッションは再起動するまで現在のバージョンのままです: {sessions}","restartNotice":"すでに起動しているセッションは、再起動するまで現在のバージョンのままです。","restart":"{alias} を再起動","restarted":"終了しました。次のメッセージ送信で新しいバージョンが起動します。","restartError":"セッションを再起動できませんでした。","loadError":"エージェント CLI のバージョンを読み取れませんでした。"},"settings":{"title":"設定","pageDescription":"新しいブランチの既定、通知、外部アプリなどを設定します。","sections":{"quickLinks":"クイックリンク","general":"一般","notifications":"通知","externalApps":"External Apps","about":"About"},"categoriesLabel":"設定のカテゴリ","defaultSurfaceMode":{"title":"出力面の既定","description":"セッションの出力側を最初に何で開くかです。ターミナル(tmux の画面そのまま)か、チャット(会話の履歴)を選べます。開いたあとはセッションのヘッダーからいつでも切り替えられます。","appliesToNew":"まだ切り替えていない出力面にだけ効きます。すでに手で切り替えた split やスマホのタブは、そのときのモードのままです。","mode":{"terminal":"ターミナル","chat":"チャット"},"hint":{"terminal":"エージェントのターミナルを tmux の描画のまま表示します。","chat":"会話の履歴をメッセージ一覧として表示します。"},"saving":"保存中...","saved":"保存しました","configured":"設定済み","usingBuiltIn":"既定値を使用中","saveError":"保存に失敗しました。","loadError":"設定を読み込めませんでした。"},"defaultAgents":{"title":"新規ブランチの既定エージェント","description":"新しく見つかったブランチが最初に開くエージェントと、その並び順です。先頭が primary(最初に開くタブ / 送り先の既定)になります。","appliesToNew":"既存のブランチには適用されません。すでに開いているブランチのタブ構成はそのまま残ります。","primary":"primary","installed":"インストール済み","notInstalled":"未インストール","addLabel":"追加できるエージェント","add":"追加","remove":"削除","moveUp":"上へ","moveDown":"下へ","save":"保存","saving":"保存中...","saved":"保存しました","reset":"既定に戻す","builtIn":"既定値: {agents}","configured":"設定済み","usingBuiltIn":"既定値を使用中","range":"エージェントは {min} 〜 {max} 個で選択してください。","saveError":"保存に失敗しました。","loadError":"設定を読み込めませんでした。","opencodeSharedData":"OpenCode と OpenCode V2 が両方入っています。両者は ~/.local/share/opencode を共有しており、V2 が変えたデータベースを OpenCode(1.x)が読めずに起動に失敗することがあります。その場合は V2 だけを使うか、1.x のデータの置き場所を分けてください。"}},"newTask":{"title":"新しいタスク","loading":"ブランチを読み込んでいます…","loadError":"ブランチの一覧を読み込めませんでした。","noTargets":"送り先にできるエージェントのあるブランチがありません。","recentLabel":"最近の送り先","repositoryLabel":"リポジトリ","branchLabel":"ブランチ","agentLabel":"エージェント","agentStatus":{"running":"稼働中","starting":"起動中","stopped":"停止中"},"willStart":"{agent} を起動して送ります。","startingNotice":"{agent} は起動中です。送れなかったときは少し待ってから送り直してください。","messageLabel":"依頼","messagePlaceholder":"エージェントへの依頼を書く","modelLabel":"モデル","modelPlaceholder":"既定のまま","modelHintLaunch":"セッションを起動するときに使います。","modelHintSwitch":"稼働中のセッションをこのモデルに切り替えます。","modelUnavailable":{"unsupported":"{agent} は送信時のモデル指定に対応していません。","running":"{agent} は稼働中です。モデルは起動時にだけ指定できます(変えるにはセッションを止めてから)。"},"autoYesLabel":"Auto-Yes","autoYesActive":"このエージェントで有効(残り {remaining})。変更しません。","autoYesKeep":"変えない(無効のまま)","autoYesKeepUnknown":"変えない(状態は不明)","autoYesUnknown":"Auto-Yes の状態を確認できませんでした(有効になっている可能性があります)。","autoYesEnableFor":"{duration} 有効にする","autoYesScope":"この依頼だけでなく、期限まで このエージェントに効きます。","send":"送る","sending":"送信中…","sendHint":"で送る","sentToast":"{target} に送りました。クリックで戻ります。","errors":{"auto_yes_failed":"Auto-Yes を有効にできなかったため、送っていません。","prompt_waiting":"{agent} は確認待ちのため、送っていません。ブランチの画面で応答してから送り直してください。","conflict":"セッションが依頼を受け付けませんでした。","starting":"{agent} は起動中です。少し待ってから送り直してください。","start_failed":"{agent} を起動できませんでした。","model_rejected":"モデル指定が受け付けられませんでした。消すか変えてから送り直してください。","invalid":"依頼が受け付けられませんでした。","failed":"送信に失敗しました。接続を確かめて送り直してください。"}}}')}};
|