commandmate 0.47.0 → 0.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +501 -501
- package/.next/app-path-routes-manifest.json +34 -34
- package/.next/build-manifest.json +8 -8
- package/.next/diagnostics/framework.json +1 -1
- package/.next/next-minimal-server.js.nft.json +1 -1
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +12 -12
- package/.next/react-loadable-manifest.json +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/_not-found/page.js +2 -2
- 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.js +2 -2
- package/.next/server/app/api/agents/update/route.js.nft.json +1 -1
- package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/versions/route.js +1 -1
- package/.next/server/app/api/agents/versions/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/app/release-notes/route.js.nft.json +1 -1
- package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update/route.js +5 -5
- package/.next/server/app/api/app/update/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/app/update-check/route.js.nft.json +1 -1
- package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/route.js +1 -1
- package/.next/server/app/api/auth/login/route.js.nft.json +1 -1
- package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/route.js +1 -1
- package/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/status/route.js +1 -1
- package/.next/server/app/api/auth/status/route.js.nft.json +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.js.nft.json +1 -1
- package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/route.js +1 -1
- package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route.js.nft.json +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/route.js +1 -1
- package/.next/server/app/api/external-apps/route.js.nft.json +1 -1
- package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route.js +1 -1
- package/.next/server/app/api/fs/browse/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route.js.nft.json +1 -1
- package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js +2 -2
- package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/claude-done/route.js +2 -2
- package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/metrics/vibe/route.js +2 -2
- package/.next/server/app/api/metrics/vibe/route.js.nft.json +1 -1
- package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/ollama/models/route.js +1 -1
- package/.next/server/app/api/ollama/models/route.js.nft.json +1 -1
- package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/escalation/route.js +1 -1
- package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
- package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/subscriptions/route.js +1 -1
- package/.next/server/app/api/push/subscriptions/route.js.nft.json +1 -1
- package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/vapid/route.js +1 -1
- package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
- package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/route.js +1 -1
- package/.next/server/app/api/relays/route.js.nft.json +1 -1
- package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/remote/pair/route.js +2 -2
- package/.next/server/app/api/remote/pair/route.js.nft.json +1 -1
- package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/repositories/excluded/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-agents/route.js +1 -1
- package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-surface-mode/route.js +1 -1
- package/.next/server/app/api/settings/default-surface-mode/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sidebar/group-order/route.js +1 -1
- package/.next/server/app/api/sidebar/group-order/route.js.nft.json +1 -1
- package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/[id]/route.js +1 -1
- package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/installations/route.js +1 -1
- package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/operations/route.js +2 -2
- package/.next/server/app/api/skills/operations/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/reindex/route.js +1 -1
- package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/slash-commands/route.js +1 -1
- package/.next/server/app/api/slash-commands/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/[id]/route.js +1 -1
- package/.next/server/app/api/templates/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/route.js +1 -1
- package/.next/server/app/api/templates/route.js.nft.json +1 -1
- package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/verification/runs/route.js.nft.json +1 -1
- package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-reference/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-reference/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route.js.nft.json +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 +7 -7
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/env/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/env/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js.nft.json +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.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/notes/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/notes/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js.nft.json +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 +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route.js +3 -3
- package/.next/server/app/api/worktrees/[id]/marp-render/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route.js +3 -3
- package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route.js.nft.json +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 +5 -5
- 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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +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 +1 -103
- 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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/verify/config/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/apply-default-agents/route.js.nft.json +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/apple-icon.png/route.js +1 -1
- package/.next/server/app/apple-icon.png/route.js.nft.json +1 -1
- package/.next/server/app/apple-icon.png.meta +1 -1
- package/.next/server/app/icon.png/route.js +1 -1
- package/.next/server/app/icon.png/route.js.nft.json +1 -1
- package/.next/server/app/icon.png.meta +1 -1
- package/.next/server/app/icon1.png/route.js +1 -1
- package/.next/server/app/icon1.png/route.js.nft.json +1 -1
- package/.next/server/app/icon1.png.meta +1 -1
- package/.next/server/app/icon2.png/route.js +1 -1
- package/.next/server/app/icon2.png/route.js.nft.json +1 -1
- package/.next/server/app/icon2.png.meta +1 -1
- package/.next/server/app/login/page.js +2 -2
- 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.js +2 -2
- package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest.meta +1 -1
- package/.next/server/app/more/page.js +2 -2
- 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 +2 -2
- 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 +2 -2
- 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.js +1 -1
- package/.next/server/app/proxy/[...path]/route.js.nft.json +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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 -12
- 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 +3 -3
- 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 +34 -34
- package/.next/server/chunks/{5048.js → 1185.js} +1 -1
- package/.next/server/chunks/1191.js +11 -4
- package/.next/server/chunks/1501.js +1 -1
- package/.next/server/chunks/1601.js +2 -2
- package/.next/server/chunks/1656.js +19 -0
- package/.next/server/chunks/1945.js +3 -3
- package/.next/server/chunks/1990.js +103 -0
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2404.js +1 -1
- package/.next/server/chunks/2422.js +1 -1
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/2534.js +1 -1
- package/.next/server/chunks/255.js +1 -0
- package/.next/server/chunks/3241.js +1 -1
- package/.next/server/chunks/3505.js +7 -0
- package/.next/server/chunks/3897.js +22 -0
- package/.next/server/chunks/4072.js +5 -5
- package/.next/server/chunks/4248.js +1 -1
- package/.next/server/chunks/4280.js +1 -0
- package/.next/server/chunks/463.js +1 -0
- package/.next/server/chunks/5209.js +1 -1
- package/.next/server/chunks/5611.js +1 -1
- package/.next/server/chunks/6119.js +1 -0
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6345.js +1 -1
- package/.next/server/chunks/6401.js +1 -1
- package/.next/server/chunks/6486.js +9 -8
- package/.next/server/chunks/6781.js +1 -1
- package/.next/server/chunks/6784.js +1 -0
- package/.next/server/chunks/720.js +103 -0
- package/.next/server/chunks/7604.js +2 -0
- package/.next/server/chunks/7905.js +1 -1
- package/.next/server/chunks/8581.js +7 -7
- package/.next/server/chunks/8728.js +3 -3
- package/.next/server/chunks/8791.js +1 -1
- package/.next/server/chunks/8807.js +19 -18
- package/.next/server/chunks/8918.js +2 -104
- package/.next/server/chunks/9130.js +1 -1
- package/.next/server/chunks/936.js +1 -1
- package/.next/server/chunks/9390.js +1 -1
- package/.next/server/chunks/9540.js +1 -1
- package/.next/server/chunks/9627.js +4 -4
- package/.next/server/chunks/9731.js +3 -3
- 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/_document.js.nft.json +1 -1
- package/.next/server/pages/_error.js +3 -3
- package/.next/server/pages/_error.js.nft.json +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/server/src/middleware.js.map +1 -1
- package/.next/static/chunks/{1111.5ab4f0ffb0d944e5.js → 1111.1b653d4a9816a0a7.js} +8 -8
- package/.next/static/chunks/{1255-7e5873f06b25e129.js → 1255-a85690d352f4f8fd.js} +1 -1
- package/.next/static/chunks/2099-c3e0ab70a1b95dd3.js +1 -0
- package/.next/static/chunks/{2407-b2f524f99f7fc353.js → 2407-26139a8a2f1adbe8.js} +1 -1
- package/.next/static/chunks/{2619-04bc32f026a0d946.js → 2619-a305ad4810f1393a.js} +1 -1
- package/.next/static/chunks/{2863-6a07ec82fb52f4dd.js → 2863-f0121af1cbbedb3b.js} +1 -1
- package/.next/static/chunks/{8165-263172c17ae8e8c3.js → 8165-c68b3dc844210e6a.js} +1 -1
- package/.next/static/chunks/8407-35bbfc84793d7004.js +1 -0
- package/.next/static/chunks/9079-406b84d3cc891a87.js +1 -0
- package/.next/static/chunks/9465-b59bb255b376c813.js +1 -0
- package/.next/static/chunks/app/{layout-419eaf7de340f4ab.js → layout-46b4cbf07520d9b6.js} +1 -1
- package/.next/static/chunks/app/sessions/page-fb241bed579c67aa.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-cbc7749a33450cc5.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/terminal/{page-373ea37b16d930c7.js → page-c601f3b3ece6557e.js} +1 -1
- package/.next/static/chunks/main-37ca13e38030fe8b.js +1 -0
- package/.next/static/chunks/{webpack-468b7b33030234b3.js → webpack-838df0273b03af19.js} +1 -1
- package/.next/trace +13 -13
- package/dist/cli/commands/auto-yes.d.ts +24 -0
- package/dist/cli/commands/auto-yes.d.ts.map +1 -1
- package/dist/cli/commands/auto-yes.js +73 -3
- package/dist/cli/commands/instances.d.ts.map +1 -1
- package/dist/cli/commands/instances.js +10 -1
- package/dist/cli/commands/prompt.d.ts.map +1 -1
- package/dist/cli/commands/prompt.js +28 -14
- package/dist/cli/commands/send.d.ts.map +1 -1
- package/dist/cli/commands/send.js +15 -0
- package/dist/cli/commands/wait.d.ts.map +1 -1
- package/dist/cli/commands/wait.js +108 -14
- package/dist/cli/docs/agent-operations.d.ts +2 -2
- package/dist/cli/docs/agent-operations.d.ts.map +1 -1
- package/dist/cli/docs/agent-operations.js +27 -0
- package/dist/cli/types/api-responses.d.ts +131 -4
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/types/index.d.ts +4 -0
- package/dist/cli/types/index.d.ts.map +1 -1
- package/dist/cli/utils/resource-resolvers.d.ts +0 -18
- package/dist/cli/utils/resource-resolvers.d.ts.map +1 -1
- package/dist/cli/utils/resource-resolvers.js +1 -51
- package/dist/lib/polling/auto-yes-suppression-reason.d.ts +65 -2
- package/dist/lib/polling/auto-yes-suppression-reason.d.ts.map +1 -1
- package/dist/lib/polling/auto-yes-suppression-reason.js +36 -2
- package/dist/lib/prompt-observation/types.d.ts +13 -0
- package/dist/lib/prompt-observation/types.d.ts.map +1 -1
- package/dist/server/locales/en/worktree.json +2 -1
- package/dist/server/locales/ja/worktree.json +2 -1
- package/dist/server/src/lib/auto-yes-poller-answer-target.js +38 -0
- package/dist/server/src/lib/auto-yes-poller-keys.js +35 -0
- package/dist/server/src/lib/auto-yes-poller-session-presence.js +26 -0
- package/dist/server/src/lib/auto-yes-poller-tick.js +233 -0
- package/dist/server/src/lib/auto-yes-poller.js +468 -792
- package/dist/server/src/lib/auto-yes-state.js +50 -2
- package/dist/server/src/lib/cli-tools/submit-verified-sender.js +107 -14
- package/dist/server/src/lib/db/chat-db.js +5 -1
- package/dist/server/src/lib/db/verification-db.js +23 -2
- package/dist/server/src/lib/detection/option-recommendation.js +120 -0
- package/dist/server/src/lib/detection/prompt-detect-multiple-choice-approval-context.js +290 -0
- package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +396 -268
- package/dist/server/src/lib/detection/prompt-detector.js +92 -21
- package/dist/server/src/lib/detection/prompt-screen-key.js +60 -0
- package/dist/server/src/lib/detection/tools/antigravity/dialog.js +158 -35
- package/dist/server/src/lib/detection/tools/claude/detect.js +111 -10
- package/dist/server/src/lib/detection/tools/command-code/dialog.js +67 -0
- package/dist/server/src/lib/detection/tools/dialog-block.js +16 -0
- package/dist/server/src/lib/detection/waiting-screen-reading.js +98 -0
- package/dist/server/src/lib/hooks/permission-adjudication.js +26 -0
- package/dist/server/src/lib/hooks/permission-decision-service.js +49 -4
- package/dist/server/src/lib/hooks/permission-request-payload.js +20 -0
- package/dist/server/src/lib/hooks/sources/antigravity/source.js +21 -0
- package/dist/server/src/lib/hooks/sources/claude/source.js +3 -0
- package/dist/server/src/lib/hooks/sources/codex/source.js +2 -0
- package/dist/server/src/lib/hooks/sources/command-code/source.js +2 -0
- package/dist/server/src/lib/hooks/sources/copilot/source.js +2 -0
- package/dist/server/src/lib/hooks/sources/gemini/source.js +2 -0
- package/dist/server/src/lib/hooks/sources/legacy-relay.js +2 -0
- package/dist/server/src/lib/hooks/sources/opencode/ingest.js +6 -0
- package/dist/server/src/lib/hooks/sources/opencode/source.js +2 -0
- package/dist/server/src/lib/hooks/sources/opencode-v2/ingest.js +6 -0
- package/dist/server/src/lib/hooks/sources/opencode-v2/source.js +2 -0
- package/dist/server/src/lib/hooks/sources/pending-decisions.js +14 -2
- package/dist/server/src/lib/polling/antigravity-permission-receipts.js +14 -3
- package/dist/server/src/lib/polling/antigravity-receipt-episodes.js +21 -1
- package/dist/server/src/lib/polling/auto-yes-confirm-page.js +2 -2
- package/dist/server/src/lib/polling/auto-yes-confirmation-ledger-types.js +117 -0
- package/dist/server/src/lib/polling/auto-yes-confirmation-ledger.js +1091 -0
- package/dist/server/src/lib/polling/auto-yes-decision-state.js +195 -0
- package/dist/server/src/lib/polling/auto-yes-dialog-gate.js +139 -10
- package/dist/server/src/lib/polling/auto-yes-enter-fallback.js +14 -0
- package/dist/server/src/lib/polling/auto-yes-ledger-records.js +143 -0
- package/dist/server/src/lib/polling/auto-yes-manual-answer.js +122 -0
- package/dist/server/src/lib/polling/auto-yes-option-effect.js +157 -0
- package/dist/server/src/lib/polling/auto-yes-policy.js +46 -11
- package/dist/server/src/lib/polling/auto-yes-poller-capture.js +63 -0
- package/dist/server/src/lib/polling/auto-yes-poller-enter-fallback.js +37 -0
- package/dist/server/src/lib/polling/auto-yes-poller-generation.js +192 -0
- package/dist/server/src/lib/polling/auto-yes-poller-receipt-log.js +324 -0
- package/dist/server/src/lib/polling/auto-yes-poller-state.js +193 -26
- package/dist/server/src/lib/polling/auto-yes-poller-steps.js +279 -0
- package/dist/server/src/lib/polling/auto-yes-prompt-suppression.js +13 -2
- package/dist/server/src/lib/polling/auto-yes-question-choice.js +57 -0
- package/dist/server/src/lib/polling/auto-yes-resolver.js +117 -22
- package/dist/server/src/lib/polling/auto-yes-suppression-reason.js +36 -2
- package/dist/server/src/lib/polling/auto-yes-suppression-state.js +25 -1
- package/dist/server/src/lib/polling/prompt-screen-reading.js +232 -0
- package/dist/server/src/lib/polling/response-checker-blank-response.js +30 -0
- package/dist/server/src/lib/polling/response-checker-dialog-gate.js +39 -0
- package/dist/server/src/lib/polling/response-checker.js +138 -53
- package/dist/server/src/lib/prompt-answer-sender.js +104 -10
- package/dist/server/src/lib/prompt-observation/appearance.js +165 -0
- package/dist/server/src/lib/push/notification-dedup.js +15 -2
- package/dist/server/src/lib/push/prompt-card-state.js +140 -19
- package/dist/server/src/lib/push/prompt-push-gate.js +158 -12
- package/dist/server/src/lib/push/push-sender.js +23 -3
- package/dist/server/src/lib/push/resolution-push-notifier.js +14 -0
- package/dist/server/src/lib/push/waiting-push-notifier.js +139 -17
- package/dist/server/src/lib/realtime/terminal-broadcast.js +16 -0
- package/dist/server/src/lib/session/agent-event-state.js +25 -5
- package/dist/server/src/lib/session/agent-event-turn.js +140 -46
- package/dist/server/src/lib/session/cli-session.js +21 -2
- package/dist/server/src/lib/session/current-output-builder.js +64 -11
- package/dist/server/src/lib/session/send-attempt-state.js +23 -7
- package/dist/server/src/lib/session/waiting-episode-binding-observation.js +289 -0
- package/dist/server/src/lib/session/waiting-episode-binding-resolve.js +38 -0
- package/dist/server/src/lib/session/waiting-episode-binding.js +276 -0
- package/dist/server/src/lib/session/waiting-episode-state.js +307 -17
- package/dist/server/src/lib/session/waiting-episode-verdict.js +174 -0
- package/dist/server/src/lib/tmux/tmux-capture-cache.js +76 -11
- package/dist/server/src/lib/tmux/tmux.js +54 -9
- package/dist/server/src/lib/verification/gate-runner.js +162 -13
- package/dist/server/src/lib/verification/machine-lock.js +5 -0
- package/dist/server/src/lib/ws-server.js +18 -3
- package/dist/server/src/types/auto-yes-answer-mode.js +38 -0
- package/dist/server/src/types/auto-yes-decision.js +61 -0
- package/dist/server/src/types/auto-yes.js +6 -0
- package/dist/server/src/types/prompt-reading.js +32 -0
- package/dist/types/auto-yes-answer-mode.d.ts +35 -0
- package/dist/types/auto-yes-answer-mode.d.ts.map +1 -0
- package/dist/types/auto-yes-answer-mode.js +38 -0
- package/docs/en/user-guide/webapp-guide.md +33 -4
- package/package.json +2 -2
- package/public/sw.js +76 -4
- package/release-notes/0.47.1.json +20 -0
- package/release-notes/0.47.2.json +20 -0
- package/release-notes/0.48.0.json +57 -0
- package/scripts/hooks/cmate-agent-event.sh +22 -0
- package/.next/server/chunks/1331.js +0 -22
- package/.next/server/chunks/1559.js +0 -2
- package/.next/server/chunks/1836.js +0 -1
- package/.next/server/chunks/1944.js +0 -1
- package/.next/server/chunks/2328.js +0 -1
- package/.next/server/chunks/2460.js +0 -1
- package/.next/server/chunks/5292.js +0 -7
- package/.next/server/chunks/5595.js +0 -1
- package/.next/server/chunks/7166.js +0 -19
- package/.next/server/chunks/9051.js +0 -1
- package/.next/server/chunks/9199.js +0 -1
- package/.next/static/chunks/602-1c1488959215e140.js +0 -1
- package/.next/static/chunks/8407-155f84e5ba05f1d5.js +0 -1
- package/.next/static/chunks/9079-24f9fa549ed298f1.js +0 -1
- package/.next/static/chunks/9465-e5a351baa941f31b.js +0 -1
- package/.next/static/chunks/app/sessions/page-e02f1adb1d1c1ccc.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-45294052ee3032f1.js +0 -1
- package/.next/static/chunks/main-ac91ed6e71380841.js +0 -1
- /package/.next/static/{b5BiQC9F6r_XFPdA9cuSj → PTlAswXLq8PAe2vUJ8dVP}/_buildManifest.js +0 -0
- /package/.next/static/{b5BiQC9F6r_XFPdA9cuSj → PTlAswXLq8PAe2vUJ8dVP}/_ssgManifest.js +0 -0
|
@@ -14,28 +14,28 @@
|
|
|
14
14
|
"/api/repositories/clone/[jobId]/route": "app/api/repositories/clone/[jobId]/route.js",
|
|
15
15
|
"/api/repositories/clone/route": "app/api/repositories/clone/route.js",
|
|
16
16
|
"/api/repositories/excluded/route": "app/api/repositories/excluded/route.js",
|
|
17
|
-
"/api/repositories/restore/route": "app/api/repositories/restore/route.js",
|
|
18
17
|
"/api/repositories/route": "app/api/repositories/route.js",
|
|
18
|
+
"/api/repositories/restore/route": "app/api/repositories/restore/route.js",
|
|
19
19
|
"/api/repositories/scan/route": "app/api/repositories/scan/route.js",
|
|
20
20
|
"/api/repositories/sync/route": "app/api/repositories/sync/route.js",
|
|
21
21
|
"/api/slash-commands/route": "app/api/slash-commands/route.js",
|
|
22
|
-
"/api/tasks/[taskId]/cancel/route": "app/api/tasks/[taskId]/cancel/route.js",
|
|
23
22
|
"/api/tasks/[taskId]/route": "app/api/tasks/[taskId]/route.js",
|
|
23
|
+
"/api/tasks/[taskId]/cancel/route": "app/api/tasks/[taskId]/cancel/route.js",
|
|
24
24
|
"/api/templates/route": "app/api/templates/route.js",
|
|
25
|
-
"/api/templates/[id]/route": "app/api/templates/[id]/route.js",
|
|
26
25
|
"/api/verification/runs/[runId]/route": "app/api/verification/runs/[runId]/route.js",
|
|
26
|
+
"/api/templates/[id]/route": "app/api/templates/[id]/route.js",
|
|
27
27
|
"/api/verification/runs/route": "app/api/verification/runs/route.js",
|
|
28
28
|
"/api/worktrees/[id]/auto-yes/route": "app/api/worktrees/[id]/auto-yes/route.js",
|
|
29
|
-
"/api/worktrees/[id]/clear-composer/route": "app/api/worktrees/[id]/clear-composer/route.js",
|
|
30
29
|
"/api/worktrees/[id]/capture/route": "app/api/worktrees/[id]/capture/route.js",
|
|
30
|
+
"/api/worktrees/[id]/clear-composer/route": "app/api/worktrees/[id]/clear-composer/route.js",
|
|
31
31
|
"/api/worktrees/[id]/cli-reference/route": "app/api/worktrees/[id]/cli-reference/route.js",
|
|
32
32
|
"/api/worktrees/[id]/cli-tool/route": "app/api/worktrees/[id]/cli-tool/route.js",
|
|
33
33
|
"/api/worktrees/[id]/cmate/schedules/route": "app/api/worktrees/[id]/cmate/schedules/route.js",
|
|
34
34
|
"/api/worktrees/[id]/current-output/route": "app/api/worktrees/[id]/current-output/route.js",
|
|
35
35
|
"/api/worktrees/[id]/direct-input/route": "app/api/worktrees/[id]/direct-input/route.js",
|
|
36
36
|
"/api/worktrees/[id]/env/route": "app/api/worktrees/[id]/env/route.js",
|
|
37
|
-
"/api/worktrees/[id]/execution-logs/route": "app/api/worktrees/[id]/execution-logs/route.js",
|
|
38
37
|
"/api/worktrees/[id]/execution-logs/[logId]/route": "app/api/worktrees/[id]/execution-logs/[logId]/route.js",
|
|
38
|
+
"/api/worktrees/[id]/execution-logs/route": "app/api/worktrees/[id]/execution-logs/route.js",
|
|
39
39
|
"/api/worktrees/[id]/files/[...path]/route": "app/api/worktrees/[id]/files/[...path]/route.js",
|
|
40
40
|
"/api/worktrees/[id]/git/branch/create/route": "app/api/worktrees/[id]/git/branch/create/route.js",
|
|
41
41
|
"/api/worktrees/[id]/git/branch/delete/route": "app/api/worktrees/[id]/git/branch/delete/route.js",
|
|
@@ -49,23 +49,23 @@
|
|
|
49
49
|
"/api/worktrees/[id]/git/push/route": "app/api/worktrees/[id]/git/push/route.js",
|
|
50
50
|
"/api/worktrees/[id]/git/reset/route": "app/api/worktrees/[id]/git/reset/route.js",
|
|
51
51
|
"/api/worktrees/[id]/git/revert/route": "app/api/worktrees/[id]/git/revert/route.js",
|
|
52
|
-
"/api/worktrees/[id]/git/show/[commitHash]/route": "app/api/worktrees/[id]/git/show/[commitHash]/route.js",
|
|
53
52
|
"/api/worktrees/[id]/git/stage/route": "app/api/worktrees/[id]/git/stage/route.js",
|
|
54
53
|
"/api/worktrees/[id]/git/staged/route": "app/api/worktrees/[id]/git/staged/route.js",
|
|
54
|
+
"/api/worktrees/[id]/git/show/[commitHash]/route": "app/api/worktrees/[id]/git/show/[commitHash]/route.js",
|
|
55
55
|
"/api/worktrees/[id]/git/stash/[index]/route": "app/api/worktrees/[id]/git/stash/[index]/route.js",
|
|
56
|
-
"/api/worktrees/[id]/git/stash/apply/route": "app/api/worktrees/[id]/git/stash/apply/route.js",
|
|
57
56
|
"/api/worktrees/[id]/git/stash/pop/route": "app/api/worktrees/[id]/git/stash/pop/route.js",
|
|
58
|
-
"/api/worktrees/[id]/git/stash/
|
|
57
|
+
"/api/worktrees/[id]/git/stash/apply/route": "app/api/worktrees/[id]/git/stash/apply/route.js",
|
|
59
58
|
"/api/worktrees/[id]/git/stash/route": "app/api/worktrees/[id]/git/stash/route.js",
|
|
60
|
-
"/api/worktrees/[id]/git/
|
|
59
|
+
"/api/worktrees/[id]/git/stash/push/route": "app/api/worktrees/[id]/git/stash/push/route.js",
|
|
61
60
|
"/api/worktrees/[id]/git/working-diff/route": "app/api/worktrees/[id]/git/working-diff/route.js",
|
|
61
|
+
"/api/worktrees/[id]/git/status/route": "app/api/worktrees/[id]/git/status/route.js",
|
|
62
62
|
"/api/worktrees/[id]/git/unstage/route": "app/api/worktrees/[id]/git/unstage/route.js",
|
|
63
|
-
"/api/worktrees/[id]/instances/notes/route": "app/api/worktrees/[id]/instances/notes/route.js",
|
|
64
63
|
"/api/worktrees/[id]/instances/opencode/route": "app/api/worktrees/[id]/instances/opencode/route.js",
|
|
64
|
+
"/api/worktrees/[id]/instances/notes/route": "app/api/worktrees/[id]/instances/notes/route.js",
|
|
65
65
|
"/api/worktrees/[id]/interrupt/route": "app/api/worktrees/[id]/interrupt/route.js",
|
|
66
66
|
"/api/worktrees/[id]/kill-session/route": "app/api/worktrees/[id]/kill-session/route.js",
|
|
67
|
-
"/api/worktrees/[id]/marp-render/route": "app/api/worktrees/[id]/marp-render/route.js",
|
|
68
67
|
"/api/worktrees/[id]/memos/[memoId]/route": "app/api/worktrees/[id]/memos/[memoId]/route.js",
|
|
68
|
+
"/api/worktrees/[id]/marp-render/route": "app/api/worktrees/[id]/marp-render/route.js",
|
|
69
69
|
"/api/worktrees/[id]/memos/route": "app/api/worktrees/[id]/memos/route.js",
|
|
70
70
|
"/api/worktrees/[id]/messages/route": "app/api/worktrees/[id]/messages/route.js",
|
|
71
71
|
"/api/worktrees/[id]/opencode/diff/route": "app/api/worktrees/[id]/opencode/diff/route.js",
|
|
@@ -73,10 +73,10 @@
|
|
|
73
73
|
"/api/worktrees/[id]/opencode/share/route": "app/api/worktrees/[id]/opencode/share/route.js",
|
|
74
74
|
"/api/worktrees/[id]/prompt-response/route": "app/api/worktrees/[id]/prompt-response/route.js",
|
|
75
75
|
"/api/worktrees/[id]/prompt-response/strict/route": "app/api/worktrees/[id]/prompt-response/strict/route.js",
|
|
76
|
-
"/api/worktrees/[id]/respond/route": "app/api/worktrees/[id]/respond/route.js",
|
|
77
76
|
"/api/worktrees/[id]/route": "app/api/worktrees/[id]/route.js",
|
|
78
|
-
"/api/worktrees/[id]/
|
|
77
|
+
"/api/worktrees/[id]/respond/route": "app/api/worktrees/[id]/respond/route.js",
|
|
79
78
|
"/api/worktrees/[id]/schedules/active/route": "app/api/worktrees/[id]/schedules/active/route.js",
|
|
79
|
+
"/api/worktrees/[id]/schedules/[scheduleId]/route": "app/api/worktrees/[id]/schedules/[scheduleId]/route.js",
|
|
80
80
|
"/api/worktrees/[id]/schedules/route": "app/api/worktrees/[id]/schedules/route.js",
|
|
81
81
|
"/api/worktrees/[id]/search/route": "app/api/worktrees/[id]/search/route.js",
|
|
82
82
|
"/api/worktrees/[id]/send/route": "app/api/worktrees/[id]/send/route.js",
|
|
@@ -85,74 +85,74 @@
|
|
|
85
85
|
"/api/worktrees/[id]/tasks/route": "app/api/worktrees/[id]/tasks/route.js",
|
|
86
86
|
"/api/worktrees/[id]/terminal/route": "app/api/worktrees/[id]/terminal/route.js",
|
|
87
87
|
"/api/worktrees/[id]/timers/history/route": "app/api/worktrees/[id]/timers/history/route.js",
|
|
88
|
+
"/api/worktrees/[id]/todos/[todoId]/route": "app/api/worktrees/[id]/todos/[todoId]/route.js",
|
|
88
89
|
"/api/worktrees/[id]/timers/route": "app/api/worktrees/[id]/timers/route.js",
|
|
89
90
|
"/api/worktrees/[id]/todos/route": "app/api/worktrees/[id]/todos/route.js",
|
|
90
|
-
"/api/worktrees/[id]/todos/[todoId]/route": "app/api/worktrees/[id]/todos/[todoId]/route.js",
|
|
91
91
|
"/api/worktrees/[id]/tree/[...path]/route": "app/api/worktrees/[id]/tree/[...path]/route.js",
|
|
92
92
|
"/api/worktrees/[id]/tree/route": "app/api/worktrees/[id]/tree/route.js",
|
|
93
93
|
"/api/worktrees/[id]/upload/[...path]/route": "app/api/worktrees/[id]/upload/[...path]/route.js",
|
|
94
|
-
"/api/worktrees/[id]/verify/route": "app/api/worktrees/[id]/verify/route.js",
|
|
95
94
|
"/api/worktrees/[id]/verify/config/route": "app/api/worktrees/[id]/verify/config/route.js",
|
|
95
|
+
"/api/worktrees/[id]/verify/route": "app/api/worktrees/[id]/verify/route.js",
|
|
96
96
|
"/api/worktrees/[id]/verify/runs/[runId]/cancel/route": "app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js",
|
|
97
97
|
"/api/worktrees/[id]/verify/runs/[runId]/route": "app/api/worktrees/[id]/verify/runs/[runId]/route.js",
|
|
98
98
|
"/api/worktrees/[id]/verify/runs/route": "app/api/worktrees/[id]/verify/runs/route.js",
|
|
99
99
|
"/api/worktrees/[id]/viewed/route": "app/api/worktrees/[id]/viewed/route.js",
|
|
100
|
-
"/apple-icon.png/route": "app/apple-icon.png/route.js",
|
|
101
100
|
"/icon.png/route": "app/icon.png/route.js",
|
|
101
|
+
"/apple-icon.png/route": "app/apple-icon.png/route.js",
|
|
102
102
|
"/icon1.png/route": "app/icon1.png/route.js",
|
|
103
103
|
"/icon2.png/route": "app/icon2.png/route.js",
|
|
104
104
|
"/manifest.webmanifest/route": "app/manifest.webmanifest/route.js",
|
|
105
|
-
"/api/agents/versions/route": "app/api/agents/versions/route.js",
|
|
106
105
|
"/api/app/release-notes/route": "app/api/app/release-notes/route.js",
|
|
106
|
+
"/api/agents/versions/route": "app/api/agents/versions/route.js",
|
|
107
107
|
"/api/agents/update/route": "app/api/agents/update/route.js",
|
|
108
|
-
"/api/app/update-check/route": "app/api/app/update-check/route.js",
|
|
109
108
|
"/api/auth/status/route": "app/api/auth/status/route.js",
|
|
110
109
|
"/api/capabilities/route": "app/api/capabilities/route.js",
|
|
111
|
-
"/api/
|
|
110
|
+
"/api/app/update-check/route": "app/api/app/update-check/route.js",
|
|
112
111
|
"/api/app/update/route": "app/api/app/update/route.js",
|
|
112
|
+
"/api/daily-summary/status/route": "app/api/daily-summary/status/route.js",
|
|
113
113
|
"/api/external-apps/[id]/health/route": "app/api/external-apps/[id]/health/route.js",
|
|
114
114
|
"/api/external-apps/route": "app/api/external-apps/route.js",
|
|
115
115
|
"/api/fs/recent-paths/route": "app/api/fs/recent-paths/route.js",
|
|
116
|
-
"/api/fs/browse/route": "app/api/fs/browse/route.js",
|
|
117
116
|
"/api/external-apps/[id]/route": "app/api/external-apps/[id]/route.js",
|
|
117
|
+
"/api/fs/browse/route": "app/api/fs/browse/route.js",
|
|
118
118
|
"/api/push/vapid/route": "app/api/push/vapid/route.js",
|
|
119
119
|
"/api/push/escalation/route": "app/api/push/escalation/route.js",
|
|
120
120
|
"/api/push/subscriptions/route": "app/api/push/subscriptions/route.js",
|
|
121
121
|
"/api/remote/pair/route": "app/api/remote/pair/route.js",
|
|
122
|
-
"/api/repositories/validate-path/route": "app/api/repositories/validate-path/route.js",
|
|
123
122
|
"/api/settings/default-surface-mode/route": "app/api/settings/default-surface-mode/route.js",
|
|
124
123
|
"/api/settings/default-agents/route": "app/api/settings/default-agents/route.js",
|
|
125
|
-
"/api/
|
|
124
|
+
"/api/repositories/validate-path/route": "app/api/repositories/validate-path/route.js",
|
|
126
125
|
"/api/skills/[id]/route": "app/api/skills/[id]/route.js",
|
|
126
|
+
"/api/sidebar/group-order/route": "app/api/sidebar/group-order/route.js",
|
|
127
127
|
"/api/skills/reindex/route": "app/api/skills/reindex/route.js",
|
|
128
128
|
"/api/skills/installations/route": "app/api/skills/installations/route.js",
|
|
129
|
-
"/api/skills/route": "app/api/skills/route.js",
|
|
130
129
|
"/api/skills/operations/route": "app/api/skills/operations/route.js",
|
|
130
|
+
"/api/skills/route": "app/api/skills/route.js",
|
|
131
131
|
"/api/worktrees/[id]/logs/route": "app/api/worktrees/[id]/logs/route.js",
|
|
132
132
|
"/api/worktrees/[id]/logs/[filename]/route": "app/api/worktrees/[id]/logs/[filename]/route.js",
|
|
133
133
|
"/api/worktrees/[id]/resolve-target/route": "app/api/worktrees/[id]/resolve-target/route.js",
|
|
134
|
-
"/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route": "app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js",
|
|
135
|
-
"/api/worktrees/[id]/skills/[skillId]/plan/route": "app/api/worktrees/[id]/skills/[skillId]/plan/route.js",
|
|
136
134
|
"/api/worktrees/[id]/skills/[skillId]/git-workflow/route": "app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js",
|
|
135
|
+
"/api/worktrees/[id]/skills/[skillId]/plan/route": "app/api/worktrees/[id]/skills/[skillId]/plan/route.js",
|
|
136
|
+
"/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route": "app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js",
|
|
137
137
|
"/api/worktrees/[id]/skills/[skillId]/install/route": "app/api/worktrees/[id]/skills/[skillId]/install/route.js",
|
|
138
|
-
"/api/worktrees/[id]/skills/[skillId]/update-plan/route": "app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js",
|
|
139
|
-
"/api/worktrees/[id]/skills/route": "app/api/worktrees/[id]/skills/route.js",
|
|
140
138
|
"/api/worktrees/[id]/skills/[skillId]/uninstall/route": "app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js",
|
|
139
|
+
"/api/worktrees/[id]/skills/route": "app/api/worktrees/[id]/skills/route.js",
|
|
140
|
+
"/api/worktrees/[id]/skills/[skillId]/update-plan/route": "app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js",
|
|
141
141
|
"/api/worktrees/apply-default-agents/route": "app/api/worktrees/apply-default-agents/route.js",
|
|
142
|
+
"/proxy/[...path]/route": "app/proxy/[...path]/route.js",
|
|
142
143
|
"/api/worktrees/route": "app/api/worktrees/route.js",
|
|
143
144
|
"/api/worktrees/[id]/skills/[skillId]/update/route": "app/api/worktrees/[id]/skills/[skillId]/update/route.js",
|
|
144
|
-
"/proxy/[...path]/route": "app/proxy/[...path]/route.js",
|
|
145
145
|
"/more/page": "app/more/page.js",
|
|
146
|
-
"/login/page": "app/login/page.js",
|
|
147
146
|
"/page": "app/page.js",
|
|
148
|
-
"/offline/page": "app/offline/page.js",
|
|
149
147
|
"/repositories/page": "app/repositories/page.js",
|
|
150
|
-
"/
|
|
148
|
+
"/login/page": "app/login/page.js",
|
|
149
|
+
"/offline/page": "app/offline/page.js",
|
|
151
150
|
"/review/page": "app/review/page.js",
|
|
152
151
|
"/skills/[skillId]/page": "app/skills/[skillId]/page.js",
|
|
153
|
-
"/
|
|
152
|
+
"/sessions/page": "app/sessions/page.js",
|
|
154
153
|
"/skills/page": "app/skills/page.js",
|
|
154
|
+
"/skills/installed/page": "app/skills/installed/page.js",
|
|
155
|
+
"/worktrees/[id]/terminal/page": "app/worktrees/[id]/terminal/page.js",
|
|
155
156
|
"/worktrees/[id]/page": "app/worktrees/[id]/page.js",
|
|
156
|
-
"/worktrees/[id]/files/[...path]/page": "app/worktrees/[id]/files/[...path]/page.js"
|
|
157
|
-
"/worktrees/[id]/terminal/page": "app/worktrees/[id]/terminal/page.js"
|
|
157
|
+
"/worktrees/[id]/files/[...path]/page": "app/worktrees/[id]/files/[...path]/page.js"
|
|
158
158
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=
|
|
1
|
+
"use strict";exports.id=1185,exports.ids=[1185],exports.modules={1185:(a,b,c)=>{c.d(b,{II:()=>q,_t:()=>m,hN:()=>y,jb:()=>l,kq:()=>u,l6:()=>w,lB:()=>x,oY:()=>z,sJ:()=>j});var d=c(55511),e=c(96210),f=c(93356),g=c(52710),h=c(33095),i=c(36925);let j={MANAGED_UNCHANGED:"SKILL_UNINSTALL_MANAGED_UNCHANGED",LOCAL_MODIFICATION:"SKILL_UNINSTALL_LOCAL_MODIFICATION",RECEIPT_ORPHAN:"SKILL_UNINSTALL_RECEIPT_ORPHAN",UNMANAGED_FILE:"SKILL_UNINSTALL_UNMANAGED_FILE",NOT_A_REGULAR_FILE:"SKILL_UNINSTALL_NOT_A_REGULAR_FILE",NOT_INSTALLED:"SKILL_UNINSTALL_NOT_INSTALLED",RECEIPT_MISSING:"SKILL_UNINSTALL_RECEIPT_MISSING",RECEIPT_UNREADABLE:"SKILL_UNINSTALL_RECEIPT_UNREADABLE",RECEIPT_FOREIGN:"SKILL_UNINSTALL_RECEIPT_FOREIGN",TREE_SCAN_TRUNCATED:"SKILL_UNINSTALL_TREE_SCAN_TRUNCATED"},k={[j.MANAGED_UNCHANGED]:"skills.uninstall.reason.managedUnchanged",[j.LOCAL_MODIFICATION]:"skills.uninstall.reason.localModification",[j.RECEIPT_ORPHAN]:"skills.uninstall.reason.receiptOrphan",[j.UNMANAGED_FILE]:"skills.uninstall.reason.unmanagedFile",[j.NOT_A_REGULAR_FILE]:"skills.uninstall.reason.notARegularFile",[j.NOT_INSTALLED]:"skills.uninstall.reason.notInstalled",[j.RECEIPT_MISSING]:"skills.uninstall.reason.receiptMissing",[j.RECEIPT_UNREADABLE]:"skills.uninstall.reason.receiptUnreadable",[j.RECEIPT_FOREIGN]:"skills.uninstall.reason.receiptForeign",[j.TREE_SCAN_TRUNCATED]:"skills.uninstall.reason.treeScanTruncated"},l={removable:"skills.uninstall.nextAction.removable",blocked:"skills.uninstall.nextAction.blocked",succeeded:"skills.uninstall.nextAction.succeeded",committedReconciling:"skills.uninstall.nextAction.committedReconciling",failed:"skills.uninstall.nextAction.failed"},m={native:"skills.uninstall.reload.native",commandmate_runtime:"skills.uninstall.reload.commandmateRuntime",unsupported:"skills.uninstall.reload.unsupported",unknown:"skills.uninstall.reload.unknown"};function n(a,b){return{code:a,path:b,messageKey:k[a]}}let o={remove:j.MANAGED_UNCHANGED,modified:j.LOCAL_MODIFICATION,missing:j.RECEIPT_ORPHAN,unknown:j.UNMANAGED_FILE},p={remove:"removable",modified:"modified",missing:"missing",unknown:"unknown"};function q(a,b,c={}){let d=(0,h.QL)(c.rootPrefix??e.Co,b),i=c.existing??(0,h.bh)(a),k=(0,h.Hg)(i.files),l={installRoot:d,present:i.present,receipt:null,receiptDigest:null,entries:[],blockers:[],removable:!1,currentTreeHash:k,stats:{removable:0,modified:0,missing:0,unknown:0,irregular:0}};if(!i.present)return{...l,blockers:[n(j.NOT_INSTALLED,d)]};let m=[];i.truncated&&m.push(n(j.TREE_SCAN_TRUNCATED,d));let r=i.files.find(a=>a.path===g.zi),s=r?(0,g.q$)(r.bytes):null;r?null===s?m.push(n(j.RECEIPT_UNREADABLE,`${d}/${g.zi}`)):s.skill_id!==b&&m.push(n(j.RECEIPT_FOREIGN,`${d}/${g.zi}`)):m.push(n(j.RECEIPT_MISSING,`${d}/${g.zi}`));let t=r&&null!==s&&s.skill_id===b?s:null,u=new Map;if(t&&r){for(let a of t.files)u.set(a.path,{sha256:a.sha256,executable:a.executable,size:a.size});u.set(g.zi,{sha256:r.sha256,executable:!1,size:r.size})}let v=new Map(i.files.map(a=>[a.path,a])),w=[],x={removable:0,modified:0,missing:0,unknown:0,irregular:0};for(let a of[...new Set([...u.keys(),...v.keys()])].sort()){let b,c=u.get(a)??null,e=v.get(a)??null,h=o[b=null===c?"unknown":null===e?"missing":(0,f.U2)(e.sha256,c.sha256)&&e.executable===c.executable?"remove":"modified"];w.push({path:`${d}/${a}`,relativePath:a,disposition:b,reason:h,generated:a===g.zi,recordedSha256:c?.sha256??null,currentSha256:e?.sha256??null,size:e?.size??c?.size??null,executable:e?.executable??c?.executable??!1}),x[p[b]]+=1,"remove"!==b&&m.push(n(h,`${d}/${a}`))}for(let a of i.irregularPaths){let b=a?`${d}/${a}`:d;w.push({path:b,relativePath:a,disposition:"irregular",reason:j.NOT_A_REGULAR_FILE,generated:!1,recordedSha256:u.get(a)?.sha256??null,currentSha256:null,size:null,executable:!1}),x.irregular+=1,m.push(n(j.NOT_A_REGULAR_FILE,b))}return{installRoot:d,present:!0,receipt:t,receiptDigest:r?.sha256??null,entries:w.sort((a,b)=>a.path<b.path?-1:+(a.path>b.path)),blockers:m,removable:null!==t&&0===m.length,currentTreeHash:k,stats:x}}let r=(0,i.v)("__skillUninstallPlans",()=>({records:new Map})),s=/^[0-9a-f]{48}$/;function t(a,b){let c=0;for(let d of[...r.records.values()])d.token!==b&&a>=d.expiresAt&&(r.records.delete(d.token),c+=1);return c}function u(a={}){return t(a.now??Date.now())}function v(a,b){if(!s.test(a))throw new g.nf(g.ER.NOT_FOUND);let c=r.records.get(a);if(t(b,a),!c)throw new g.nf(g.ER.NOT_FOUND);let e=Buffer.from(a,"utf-8"),f=Buffer.from(c.token,"utf-8");if(e.length!==f.length||!(0,d.timingSafeEqual)(e,f))throw new g.nf(g.ER.NOT_FOUND);if(b>=c.expiresAt)throw r.records.delete(c.token),new g.nf(g.ER.EXPIRED);if(null!==c.consumedAt)throw new g.nf(g.ER.CONSUMED);return c}function w(a,b={}){return v(a,b.now??Date.now())}function x(a,b,c,d={}){let e=d.now??Date.now(),h=v(a,e),{binding:i}=h;if(i.actor.type!==b.actor.type||i.actor.id!==b.actor.id||i.worktreeId!==b.worktreeId||i.skillId!==b.skillId)throw new g.nf(g.ER.BINDING_MISMATCH);if(!h.dto.removable)throw new g.nf(g.ER.NOT_INSTALLABLE);if(c.branch!==i.branch||c.headCommit!==i.headCommit||c.currentTreeHash!==i.currentTreeHash||null===c.receiptDigest||!(0,f.U2)(c.receiptDigest,i.receiptDigest))throw new g.nf(g.ER.STALE);return h.consumedAt=e,h}function y(a){if(!e.X0.test(a.skillId)||a.skillId.length>e.cj)throw new g.nf(g.ER.TARGET_UNSAFE);let b=a.now??Date.now(),c=q(a.installRootAbs,a.skillId);if(!c.present)throw new g.nf(g.ER.NOT_FOUND);let f=(0,d.randomBytes)(24).toString("hex"),h=b+g.c$,i=c.receipt,j=c.entries.find(a=>a.generated)??null,k={actor:a.actor,operation:"uninstall",worktreeId:a.worktree.id,skillId:a.skillId,version:i?.version??"",receiptDigest:c.receiptDigest??"",branch:a.git.branch,headCommit:a.git.headCommit,currentTreeHash:c.currentTreeHash},n={token:f,expiresAt:new Date(h).toISOString().replace(/\.\d{3}Z$/,"Z"),removable:c.removable,blockers:c.blockers,nextActionKey:c.removable?l.removable:l.blocked,target:{worktreeId:a.worktree.id,worktreeName:a.worktree.name,repositoryName:a.worktree.repositoryName,branch:a.git.branch,headState:a.git.headState,headCommit:a.git.headCommit,workingTreeDirty:a.git.dirty,...a.git.dirtyUnknown?{workingTreeUnknown:!0}:{},installRoot:c.installRoot,currentTreeHash:c.currentTreeHash},skill:{id:a.skillId,version:i?.version??"",source:i?{...i.source}:{repository:"",ref:"",commit:""},artifact:{assetName:i?.artifact.asset_name??"",sha256:i?.artifact.sha256??""},effectiveRisk:i?.effective_risk??"low",agents:(i?.agent_compatibility??[]).map(a=>({agent:a.agent,support:a.support,messageKey:m[a.support]}))},receipt:{path:`${c.installRoot}/${g.zi}`,sha256:c.receiptDigest??"",size:j?.size??0},removals:c.entries.filter(a=>"remove"===a.disposition),retained:c.entries.filter(a=>"remove"!==a.disposition),stats:c.stats},o={token:f,binding:k,bindingHash:(0,d.createHash)("sha256").update(function a(b){if(null===b||"object"!=typeof b)return JSON.stringify(b)??"null";if(Array.isArray(b))return`[${b.map(a).join(",")}]`;let c=Object.entries(b).filter(([,a])=>void 0!==a).sort(([a],[b])=>a<b?-1:+(a>b));return`{${c.map(([b,c])=>`${JSON.stringify(b)}:${a(c)}`).join(",")}}`}(k)).digest("hex"),createdAt:b,expiresAt:h,consumedAt:null,worktreePath:a.worktree.path,receipt:i??{},assessment:c,dto:n};for(t(b);r.records.size>=g.sK;){let a=[...r.records.values()].sort((a,b)=>a.createdAt-b.createdAt)[0];if(!a)break;r.records.delete(a.token)}return r.records.set(f,o),o}function z(a){let b=a.files.find(a=>a.path===g.zi);return b?null===(0,g.q$)(b.bytes)?null:(0,f.Q_)(b.bytes):null}}};
|
|
@@ -1,13 +1,20 @@
|
|
|
1
|
-
"use strict";exports.id=1191,exports.ids=[1191,1296,9358],exports.modules={3915:(a,b,c)=>{c.d(b,{L_:()=>i,jQ:()=>g});var d=c(55511),e=c(36925);let f=(0,e.v)("__notificationDedupLastSent",()=>new Map);function g(a,b=Date.now(),c=3e4){var e;let h=`${a.worktreeId}:${a.kind}`,i=(e=a.content??"",(0,d.createHash)("sha256").update(e).digest("hex")),j=f.get(h);return(!j||j.hash!==i||!(b-j.at<c))&&(f.set(h,{hash:i,at:b}),!0)}let h=(0,e.v)("__waitingPushDedup",()=>new Map);function i(a){let b=`${a.worktreeId}::${a.instanceId}`,c=!0===a.escalated,d=h.get(b)
|
|
1
|
+
"use strict";exports.id=1191,exports.ids=[1191,1296,9358],exports.modules={3915:(a,b,c)=>{c.d(b,{L_:()=>i,jQ:()=>g});var d=c(55511),e=c(36925);let f=(0,e.v)("__notificationDedupLastSent",()=>new Map);function g(a,b=Date.now(),c=3e4){var e;let h=`${a.worktreeId}:${a.kind}`,i=(e=a.content??"",(0,d.createHash)("sha256").update(e).digest("hex")),j=f.get(h);return(!j||j.hash!==i||!(b-j.at<c))&&(f.set(h,{hash:i,at:b}),!0)}let h=(0,e.v)("__waitingPushDedup",()=>new Map);function i(a){let b=`${a.worktreeId}::${a.instanceId}`,c=!0===a.escalated,d=a.episodeId??void 0,e=h.get(b),f=void 0!==e&&(void 0!==e.episodeId&&void 0!==d?e.episodeId===d:e.since===a.since);if(e&&f&&(e.escalated||!c))return void 0===e.episodeId&&void 0!==d&&(e.episodeId=d),!1;let g=d??(f?e?.episodeId:void 0);return h.set(b,{since:a.since,...void 0!==g?{episodeId:g}:{},escalated:c}),!0}},4806:(a,b,c)=>{c.d(b,{Ii:()=>o,_P:()=>r,pI:()=>n,r0:()=>p,zP:()=>q});var d=c(88807),e=c(72626),f=c(36925);let g=(0,e.h)("push/prompt-card-state"),h=(0,f.v)("__promptPushCards",()=>new Map),i=(0,f.v)("__promptPushCardEpisodes",()=>new Map);function j(a){return`push_prompt_card:${a}`}function k(a){return`push_prompt_card_episode:${a}`}function l(a){try{let b=(0,d.getDbInstance)().prepare("SELECT key, value FROM app_settings WHERE key IN (?, ?)").all(j(a),k(a)),c=b.find(b=>b.key===j(a));if(!c)return null;let e=Number.parseInt(c.value,10);if(!Number.isFinite(e))return null;let f=b.find(b=>b.key===k(a));return{at:e,episodeId:function(a,b){if(void 0===a)return null;let c=a.indexOf(":");if(c<0||a.slice(0,c)!==String(b))return null;let d=a.slice(c+1);return""===d?null:d}(f?.value,e)}}catch(b){return g.debug("prompt-card-read-failed",{worktreeId:a,error:b instanceof Error?b.message:String(b)}),null}}function m(a){try{return(0,d.getDbInstance)().prepare("DELETE FROM app_settings WHERE key IN (?, ?)").run(j(a),k(a)).changes>0}catch(b){return g.debug("prompt-card-delete-failed",{worktreeId:a,error:b instanceof Error?b.message:String(b)}),!1}}function n(a,b=Date.now(),c=null){h.set(a,b),i.set(a,c);try{(0,d.getDbInstance)().prepare(`
|
|
2
2
|
INSERT INTO app_settings (key, value, created_at, updated_at)
|
|
3
|
-
VALUES (?, ?, ?, ?)
|
|
3
|
+
VALUES (?, ?, ?, ?), (?, ?, ?, ?)
|
|
4
4
|
ON CONFLICT(key) DO UPDATE SET
|
|
5
5
|
value = excluded.value,
|
|
6
6
|
updated_at = excluded.updated_at
|
|
7
|
-
`).run(
|
|
7
|
+
`).run(j(a),String(b),b,b,k(a),`${b}:${c??""}`,b,b)}catch(b){g.debug("prompt-card-write-failed",{worktreeId:a,error:b instanceof Error?b.message:String(b)})}}function o(a,b=Date.now()){try{let c=(0,d.getDbInstance)().prepare(`
|
|
8
|
+
INSERT INTO app_settings (key, value, created_at, updated_at)
|
|
9
|
+
VALUES (?, '1', ?, ?)
|
|
10
|
+
ON CONFLICT(key) DO UPDATE SET
|
|
11
|
+
value = CAST(app_settings.value AS INTEGER) + 1,
|
|
12
|
+
updated_at = excluded.updated_at
|
|
13
|
+
RETURNING value
|
|
14
|
+
`).get(`push_prompt_order:${a}`,b,b),e=Number(c?.value);return Number.isSafeInteger(e)&&e>0?e:null}catch(b){return g.debug("prompt-order-advance-failed",{worktreeId:a,error:b instanceof Error?b.message:String(b)}),null}}function p(a,b=Date.now()){let c=h.get(a),d=void 0!==c?{at:c,episodeId:i.get(a)??null}:l(a);return null!==d&&(b-d.at>=864e5?(h.delete(a),i.delete(a),m(a),!1):(h.set(a,d.at),i.set(a,d.episodeId),!0))}function q(a){return h.has(a)?i.get(a)??null:l(a)?.episodeId??null}function r(a){i.delete(a);let b=h.delete(a),c=m(a);return b||c}},8532:(a,b,c)=>{c.d(b,{D$:()=>i,W5:()=>j,iS:()=>k});var d=c(55511),e=c(88807);let f=(0,c(72626).h)("push/delivery-health");function g(a){return`push_delivery_health:${(0,d.createHash)("sha256").update(a).digest("hex")}`}function h(a){try{return(0,e.getDbInstance)().prepare("DELETE FROM app_settings WHERE key = ?").run(g(a)).changes>0}catch(a){return f.debug("delivery-health-delete-failed",{error:a instanceof Error?a.message:String(a)}),!1}}function i(a,b=Date.now()){try{let c=(0,e.getDbInstance)().prepare("SELECT value FROM app_settings WHERE key = ?").get(g(a));if(!c)return null;let d=function(a){try{let b=JSON.parse(a);if("object"!=typeof b||null===b||"removed"!==b.state&&"failing"!==b.state||"number"!=typeof b.failureCount||!Number.isFinite(b.failureCount)||"number"!=typeof b.firstFailureAt||!Number.isFinite(b.firstFailureAt)||"number"!=typeof b.lastFailureAt||!Number.isFinite(b.lastFailureAt))return null;let c="number"==typeof b.statusCode&&Number.isFinite(b.statusCode)?b.statusCode:null;return{state:b.state,statusCode:c,failureCount:b.failureCount,firstFailureAt:b.firstFailureAt,lastFailureAt:b.lastFailureAt}}catch{return null}}(c.value);if(null===d)return null;if(b-d.lastFailureAt>=2592e6)return h(a),null;return d}catch(a){return f.debug("delivery-health-read-failed",{error:a instanceof Error?a.message:String(a)}),null}}function j(a,b={},c=Date.now()){let d=i(a,c),h={state:!0===b.removed||d?.state==="removed"?"removed":"failing",statusCode:b.statusCode??null,failureCount:(d?.failureCount??0)+1,firstFailureAt:d?.firstFailureAt??c,lastFailureAt:c};try{(0,e.getDbInstance)().prepare(`
|
|
8
15
|
INSERT INTO app_settings (key, value, created_at, updated_at)
|
|
9
16
|
VALUES (?, ?, ?, ?)
|
|
10
17
|
ON CONFLICT(key) DO UPDATE SET
|
|
11
18
|
value = excluded.value,
|
|
12
19
|
updated_at = excluded.updated_at
|
|
13
|
-
`).run(g(a),JSON.stringify(h),h.firstFailureAt,h.lastFailureAt)}catch(a){f.debug("delivery-health-write-failed",{error:a instanceof Error?a.message:String(a)})}return h}function k(a){return h(a)}},25754:(a,b,c)=>{c.d(b,{Xn:()=>e,d9:()=>g,dI:()=>d,gB:()=>f,rv:()=>h});let d=["en","ja"],e="en",f="locale";function g(a){return"string"==typeof a&&d.includes(a)}function h(a,b){return g(a)?a:d.find(a=>(b??"").includes(a))??e}},27519:(a,b,c)=>{c.d(b,{HR:()=>g,lU:()=>f,vB:()=>e});let d={publicKey:"CM_VAPID_PUBLIC_KEY",privateKey:"CM_VAPID_PRIVATE_KEY",subject:"CM_VAPID_SUBJECT"};function e(){let a=process.env[d.publicKey]?.trim(),b=process.env[d.privateKey]?.trim();return a&&b?{publicKey:a,privateKey:b,subject:process.env[d.subject]?.trim()||"https://github.com/Kewton/CommandMate"}:null}function f(){return null!==e()}function g(){return e()?.publicKey??null}},49358:a=>{a.exports=JSON.parse('{"title":"Notifications","description":"Get a push notification when something needs you — a prompt, a failed verification, an upstream API fault, or a session that could not start — even when the app is closed. Completions are optional.","enable":"Enable notifications","enabling":"Enabling…","enabledOnThisDevice":"Notifications are enabled on this device.","unsubscribe":"Unsubscribe this device","types":{"heading":"Notify me about","promptWaiting":"When you need to act","promptWaitingDesc":"A prompt waiting for you, a failed verification gate, an upstream API fault, or a session that could not start. Nothing moves until you do","completion":"Also tell me about completions (optional)","completionDesc":"Ordinary completions that need nothing from you. Off by default on newly registered devices (change it for this device here)"},"defaultsNotice":{"heading":"What changed in notifications","completionChanged":"Ordinary completions that need nothing from you are now off by default on newly registered devices. This device is still on, so they keep arriving.","failuresAdded":"\\"When you need to act\\" now also covers a failed verification gate, an upstream API fault, and a session that could not start. This device receives those too.","adopt":"Use the new default (turn completions off)","keep":"Keep this device as it is","adopted":"Completions turned off on this device","kept":"Left this device\'s settings unchanged"},"permission":{"denied":"Notifications are blocked in your browser settings. Allow them for this site to receive push notifications."},"delivery":{"headingFailing":"This device is not receiving notifications","headingRemoved":"This device was dropped by the push service","failing":"The push service has rejected the last {count} notification(s) for this device (HTTP {status}). Your subscription is intact — nothing was deleted.","failingUnknownStatus":"The push service has rejected the last {count} notification(s) for this device. Your subscription is intact — nothing was deleted.","removed":"The push service reported this subscription as gone (HTTP {status}), so the server stopped sending to it. Turn notifications on again below to re-subscribe.","removedUnknownStatus":"The push service reported this subscription as gone, so the server stopped sending to it. Turn notifications on again below to re-subscribe.","apnsHint":"On iPhone/iPad an HTTP 403 usually means the server\'s CM_VAPID_SUBJECT is not a contact Apple accepts. See docs/user-guide/webapp-guide.md.","since":"First failure: {timestamp}"},"unsupported":"This browser does not support push notifications.","notConfigured":"Push notifications are not configured on this server. Set the VAPID keys to enable them.","ios":{"guidance":"On iPhone/iPad, add this app to your Home Screen and open it from there to enable notifications."},"toast":{"enabled":"Notifications enabled on this device","disabled":"Notifications turned off on this device","error":"Could not enable notifications","updated":"Notification settings updated"},"push":{"promptWaitingWithExcerpt":"Waiting for reply: {excerpt}","promptWaiting":"Waiting for your reply","completionWithExcerpt":"Done: {excerpt}","completion":"Session complete","terminalAttentionWithExcerpt":"Needs attention in the terminal: {excerpt}","terminalAttention":"Needs attention in the terminal","stillWaitingPrompt":"Still waiting for your reply ({minutes} min)","stillWaitingTerminal":"Still needs attention in the terminal ({minutes} min)","failureVerificationWithExcerpt":"Verification failed: {excerpt}","failureVerification":"Verification failed","failureUpstreamWithExcerpt":"Stalled by an upstream API fault: {excerpt}","failureUpstream":"Stalled by an upstream API fault","failureSessionStartWithExcerpt":"Could not start the session: {excerpt}","failureSessionStart":"Could not start the session","failureSessionUnavailableWithExcerpt":"Could not start the session: {excerpt} is not installed","failureSessionUnavailable":"Could not start the session: the CLI tool is not installed","failureWithExcerpt":"Failed: {excerpt}","failure":"Failed","failureAgentSessionWithExcerpt":"The agent stopped with an error: {excerpt}","failureAgentSession":"The agent stopped with an error","promptResolved":"Handled — answered on another device","updateAvailable":"An update for {agent} is available: {version}"},"escalation":{"heading":"Reminder","toggle":"Remind me if still waiting","toggleDesc":"Send one more notification when an agent has been waiting this long. Applies to every device.","threshold":"Remind after","minutes":"{count} min"},"inApp":{"heading":"In-app notifications","waitingToggle":"Waiting toast","waitingToggleDesc":"Show a toast when another worktree starts waiting for you","waitingToast":"{name} is waiting for your input","soundToggle":"Waiting sound","soundToggleDesc":"Play a short chime when a worktree starts waiting for you. Takes effect after you click or press a key on the page."}}')},61191:(a,b,c)=>{c.r(b),c.d(b,{MODEL_CHANGE_TAG_SUFFIX:()=>r,buildExcerpt:()=>t,buildPushPayload:()=>v,notifyPushSubscribers:()=>x,resolvePushLocale:()=>s});var d=c(48975),e=c.n(d),f=c(88807),g=c(43167),h=c(72626),i=c(25754),j=c(49358),k=c(61296),l=c(27519),m=c(8532),n=c(3915),o=c(4806);let p=(0,h.h)("push/sender"),q={en:j.push,ja:k.push},r="model";function s(a){return(0,i.d9)(a)?a:i.Xn}function t(a,b=120){if(!a)return"";let c=a.replace(/\s+/g," ").trim();return c.length<=b?c:c.slice(0,b-1).trimEnd()+"…"}let u={"verification-failed":{withExcerpt:"failureVerificationWithExcerpt",plain:"failureVerification"},"upstream-fault":{withExcerpt:"failureUpstreamWithExcerpt",plain:"failureUpstream"},"session-start-failed":{withExcerpt:"failureSessionStartWithExcerpt",plain:"failureSessionStart"},"session-start-unavailable":{withExcerpt:"failureSessionUnavailableWithExcerpt",plain:"failureSessionUnavailable"},"agent-session-error":{withExcerpt:"failureAgentSessionWithExcerpt",plain:"failureAgentSession"}};function v(a,b=i.Xn,c=Date.now()){let d=t(a.excerpt),e=a.agentName?` (${a.agentName})`:"",f=`${a.worktreeName}${e}`,g=s(b),h=q[g],j=a.modelChange?a.modelChange.body[g]:"prompt"===a.kind?!0===a.resolved?h.promptResolved:function(a,b,c,d){var e;let f="menu"===(e=a.waitingKind)||"unclassified"===e;if(a.escalated){let c=String(Math.max(1,Math.floor((d-(a.waitingSince??d))/6e4)));return(f?b.stillWaitingTerminal:b.stillWaitingPrompt).replace("{minutes}",c)}return f?c?b.terminalAttentionWithExcerpt.replace("{excerpt}",c):b.terminalAttention:c?b.promptWaitingWithExcerpt.replace("{excerpt}",c):b.promptWaiting}(a,h,d,c):"failure"===a.kind?function(a,b,c,d){let e=a.failure?.body?.[d];if(e)return e;let f=a.failure?.reason,g=void 0!==f?u[f]:void 0;return void 0===g?c?b.failureWithExcerpt.replace("{excerpt}",c):b.failure:c?b[g.withExcerpt].replace("{excerpt}",c):b[g.plain]}(a,h,d,g):a.updateAvailable?h.updateAvailable.replace("{agent}",a.updateAvailable.agent).replace("{version}",a.updateAvailable.version):d?h.completionWithExcerpt.replace("{excerpt}",d):h.completion;return{kind:a.kind,title:f,body:j,worktreeId:a.worktreeId,url:a.url??`/worktrees/${a.worktreeId}`,tag:a.modelChange?`${a.worktreeId}:${r}`:`${a.worktreeId}:${a.kind}`,timestamp:c,...a.waitingKind?{waitingKind:a.waitingKind}:{},...!0===a.resolved?{resolved:!0}:{}}}async function w(a,b,c=Date.now()){try{return await e().sendNotification({endpoint:a.endpoint,keys:a.keys},b),(0,m.iS)(a.endpoint)&&p.info("push-delivery-recovered"),!0}catch(e){let b=e.statusCode;if(404===b||410===b)return(0,g.th)((0,f.getDbInstance)(),a.endpoint),(0,m.W5)(a.endpoint,{statusCode:b,removed:!0},c),p.info("push-subscription-removed",{statusCode:b}),!1;let d=(0,m.W5)(a.endpoint,{statusCode:b??null},c);return p.warn("push-send-failed",{statusCode:b??"unknown",consecutiveFailures:d.failureCount}),!1}}async function x(a,b=Date.now()){try{let c=(0,l.vB)();if(!c||!(!0===a.resolved||(a.modelChange?(0,n.jQ)({worktreeId:a.worktreeId,kind:a.kind,content:`${r}:${a.instanceId??a.agentName??""}:${a.modelChange.from}>${a.modelChange.to}`}):"prompt"===a.kind&&"number"==typeof a.waitingSince?(0,n.L_)({worktreeId:a.worktreeId,instanceId:a.instanceId??a.agentName??"",since:a.waitingSince,escalated:a.escalated}):(0,n.jQ)({worktreeId:a.worktreeId,kind:a.kind,content:"failure"===a.kind?a.failure?.signature:a.excerpt}))))return;let d=(0,f.getDbInstance)(),h=(0,g.gn)(d,a.kind);if(0===h.length)return;"prompt"===a.kind&&!0!==a.resolved&&(0,o.pI)(a.worktreeId,b),e().setVapidDetails(c.subject,c.publicKey,c.privateKey);let i=new Map;for(let a of h){let b=s(a.locale),c=i.get(b);c?c.push(a):i.set(b,[a])}let j=(await Promise.all(Array.from(i,([c,d])=>{let e=JSON.stringify(v(a,c,b));return Promise.all(d.map(a=>w(a,e,b)))}))).flat(),k=j.filter(Boolean).length,m=j.length-k;p.info("push-fanout-complete",{kind:a.kind,worktreeId:a.worktreeId,instanceId:a.instanceId??a.agentName,delivered:k,failed:m})}catch(a){p.warn("push-fanout-error",{error:a instanceof Error?a.message:String(a)})}}},61296:a=>{a.exports=JSON.parse('{"title":"通知","description":"対応が必要になったとき(応答待ち・検証の不合格・上流APIの障害・セッションの起動失敗)に、アプリを開いていなくてもプッシュ通知を受け取れます。対応の要らない完了通知は任意です。","enable":"通知を有効にする","enabling":"有効化中…","enabledOnThisDevice":"この端末で通知が有効です。","unsubscribe":"この端末の通知を解除","types":{"heading":"通知する種別","promptWaiting":"対応が必要なとき","promptWaitingDesc":"応答待ち・検証ゲートの不合格・上流APIの障害・セッションの起動失敗。あなたが動かないと進みません","completion":"完了も知らせる(任意)","completionDesc":"対応の要らない正常完了。新しく登録した端末では既定でオフです(この端末の設定はここで変えられます)"},"defaultsNotice":{"heading":"通知の既定が変わりました","completionChanged":"対応の要らない正常完了は、新しく登録した端末では既定でオフになりました。この端末はオンのままなので、これまでどおり届きます。","failuresAdded":"「対応が必要なとき」に、検証ゲートの不合格・上流APIの障害・セッションの起動失敗の3種が加わりました。この端末はこれらも受け取ります。","adopt":"新しい既定にする(完了通知をオフ)","keep":"この端末の設定を保つ","adopted":"完了通知をこの端末でオフにしました","kept":"この端末の設定はそのままにしました"},"permission":{"denied":"ブラウザの設定で通知がブロックされています。このサイトの通知を許可してください。"},"delivery":{"headingFailing":"この端末には通知が届いていません","headingRemoved":"この端末の購読はプッシュサービス側で失効しました","failing":"直近 {count} 件の通知がプッシュサービスに拒否されました(HTTP {status})。購読は削除されていません。","failingUnknownStatus":"直近 {count} 件の通知がプッシュサービスに拒否されました。購読は削除されていません。","removed":"プッシュサービスがこの購読を失効と報告したため(HTTP {status})、送信を停止しました。下のボタンで通知を有効にし直すと再購読できます。","removedUnknownStatus":"プッシュサービスがこの購読を失効と報告したため、送信を停止しました。下のボタンで通知を有効にし直すと再購読できます。","apnsHint":"iPhone / iPad で HTTP 403 が出る場合、サーバーの CM_VAPID_SUBJECT が Apple の受け付けない値になっていることがほとんどです。docs/user-guide/webapp-guide.md を参照してください。","since":"最初の失敗: {timestamp}"},"unsupported":"このブラウザはプッシュ通知に対応していません。","notConfigured":"このサーバーではプッシュ通知が設定されていません。VAPID鍵を設定すると有効になります。","ios":{"guidance":"iPhone/iPadでは、このアプリをホーム画面に追加し、そこから開くと通知を有効にできます。"},"toast":{"enabled":"この端末で通知を有効にしました","disabled":"この端末の通知をオフにしました","error":"通知を有効にできませんでした","updated":"通知設定を更新しました"},"push":{"promptWaitingWithExcerpt":"応答待ち: {excerpt}","promptWaiting":"応答待ちです","completionWithExcerpt":"完了: {excerpt}","completion":"セッションが完了しました","terminalAttentionWithExcerpt":"端末の確認が必要です: {excerpt}","terminalAttention":"端末の確認が必要です","stillWaitingPrompt":"まだ応答待ちです({minutes}分経過)","stillWaitingTerminal":"まだ端末の確認が必要です({minutes}分経過)","failureVerificationWithExcerpt":"検証ゲート不合格: {excerpt}","failureVerification":"検証ゲートに不合格しました","failureUpstreamWithExcerpt":"上流APIの障害で停止しています: {excerpt}","failureUpstream":"上流APIの障害で停止しています","failureSessionStartWithExcerpt":"セッションを起動できませんでした: {excerpt}","failureSessionStart":"セッションを起動できませんでした","failureSessionUnavailableWithExcerpt":"セッションを起動できませんでした: {excerpt} がインストールされていません","failureSessionUnavailable":"セッションを起動できませんでした: CLI ツールがインストールされていません","failureWithExcerpt":"失敗しました: {excerpt}","failure":"失敗しました","failureAgentSessionWithExcerpt":"エージェントがエラーで停止しました: {excerpt}","failureAgentSession":"エージェントがエラーで停止しました","promptResolved":"対応済みです(他の端末で応答されました)","updateAvailable":"{agent} の更新が利用できます: {version}"},"escalation":{"heading":"再通知","toggle":"待ち続けていたら再通知する","toggleDesc":"エージェントが入力待ちのまま指定時間を超えたら、もう1度だけ通知します。すべての端末に適用されます。","threshold":"再通知するまでの時間","minutes":"{count}分"},"inApp":{"heading":"アプリ内通知","waitingToggle":"入力待ちトースト","waitingToggleDesc":"別のワークツリーが入力待ちになったときにトーストを表示します","waitingToast":"{name} が入力待ちです","soundToggle":"入力待ちの通知音","soundToggleDesc":"ワークツリーが入力待ちになったときに短い通知音を鳴らします。ページを一度クリックまたはキー操作すると有効になります。"}}')}};
|
|
20
|
+
`).run(g(a),JSON.stringify(h),h.firstFailureAt,h.lastFailureAt)}catch(a){f.debug("delivery-health-write-failed",{error:a instanceof Error?a.message:String(a)})}return h}function k(a){return h(a)}},25754:(a,b,c)=>{c.d(b,{Xn:()=>e,d9:()=>g,dI:()=>d,gB:()=>f,rv:()=>h});let d=["en","ja"],e="en",f="locale";function g(a){return"string"==typeof a&&d.includes(a)}function h(a,b){return g(a)?a:d.find(a=>(b??"").includes(a))??e}},27519:(a,b,c)=>{c.d(b,{HR:()=>g,lU:()=>f,vB:()=>e});let d={publicKey:"CM_VAPID_PUBLIC_KEY",privateKey:"CM_VAPID_PRIVATE_KEY",subject:"CM_VAPID_SUBJECT"};function e(){let a=process.env[d.publicKey]?.trim(),b=process.env[d.privateKey]?.trim();return a&&b?{publicKey:a,privateKey:b,subject:process.env[d.subject]?.trim()||"https://github.com/Kewton/CommandMate"}:null}function f(){return null!==e()}function g(){return e()?.publicKey??null}},49358:a=>{a.exports=JSON.parse('{"title":"Notifications","description":"Get a push notification when something needs you — a prompt, a failed verification, an upstream API fault, or a session that could not start — even when the app is closed. Completions are optional.","enable":"Enable notifications","enabling":"Enabling…","enabledOnThisDevice":"Notifications are enabled on this device.","unsubscribe":"Unsubscribe this device","types":{"heading":"Notify me about","promptWaiting":"When you need to act","promptWaitingDesc":"A prompt waiting for you, a failed verification gate, an upstream API fault, or a session that could not start. Nothing moves until you do","completion":"Also tell me about completions (optional)","completionDesc":"Ordinary completions that need nothing from you. Off by default on newly registered devices (change it for this device here)"},"defaultsNotice":{"heading":"What changed in notifications","completionChanged":"Ordinary completions that need nothing from you are now off by default on newly registered devices. This device is still on, so they keep arriving.","failuresAdded":"\\"When you need to act\\" now also covers a failed verification gate, an upstream API fault, and a session that could not start. This device receives those too.","adopt":"Use the new default (turn completions off)","keep":"Keep this device as it is","adopted":"Completions turned off on this device","kept":"Left this device\'s settings unchanged"},"permission":{"denied":"Notifications are blocked in your browser settings. Allow them for this site to receive push notifications."},"delivery":{"headingFailing":"This device is not receiving notifications","headingRemoved":"This device was dropped by the push service","failing":"The push service has rejected the last {count} notification(s) for this device (HTTP {status}). Your subscription is intact — nothing was deleted.","failingUnknownStatus":"The push service has rejected the last {count} notification(s) for this device. Your subscription is intact — nothing was deleted.","removed":"The push service reported this subscription as gone (HTTP {status}), so the server stopped sending to it. Turn notifications on again below to re-subscribe.","removedUnknownStatus":"The push service reported this subscription as gone, so the server stopped sending to it. Turn notifications on again below to re-subscribe.","apnsHint":"On iPhone/iPad an HTTP 403 usually means the server\'s CM_VAPID_SUBJECT is not a contact Apple accepts. See docs/user-guide/webapp-guide.md.","since":"First failure: {timestamp}"},"unsupported":"This browser does not support push notifications.","notConfigured":"Push notifications are not configured on this server. Set the VAPID keys to enable them.","ios":{"guidance":"On iPhone/iPad, add this app to your Home Screen and open it from there to enable notifications."},"toast":{"enabled":"Notifications enabled on this device","disabled":"Notifications turned off on this device","error":"Could not enable notifications","updated":"Notification settings updated"},"push":{"promptWaitingWithExcerpt":"Waiting for reply: {excerpt}","promptWaiting":"Waiting for your reply","completionWithExcerpt":"Done: {excerpt}","completion":"Session complete","terminalAttentionWithExcerpt":"Needs attention in the terminal: {excerpt}","terminalAttention":"Needs attention in the terminal","stillWaitingPrompt":"Still waiting for your reply ({minutes} min)","stillWaitingTerminal":"Still needs attention in the terminal ({minutes} min)","failureVerificationWithExcerpt":"Verification failed: {excerpt}","failureVerification":"Verification failed","failureUpstreamWithExcerpt":"Stalled by an upstream API fault: {excerpt}","failureUpstream":"Stalled by an upstream API fault","failureSessionStartWithExcerpt":"Could not start the session: {excerpt}","failureSessionStart":"Could not start the session","failureSessionUnavailableWithExcerpt":"Could not start the session: {excerpt} is not installed","failureSessionUnavailable":"Could not start the session: the CLI tool is not installed","failureWithExcerpt":"Failed: {excerpt}","failure":"Failed","failureAgentSessionWithExcerpt":"The agent stopped with an error: {excerpt}","failureAgentSession":"The agent stopped with an error","promptResolved":"Handled — answered on another device","updateAvailable":"An update for {agent} is available: {version}"},"escalation":{"heading":"Reminder","toggle":"Remind me if still waiting","toggleDesc":"Send one more notification when an agent has been waiting this long. Applies to every device.","threshold":"Remind after","minutes":"{count} min"},"inApp":{"heading":"In-app notifications","waitingToggle":"Waiting toast","waitingToggleDesc":"Show a toast when another worktree starts waiting for you","waitingToast":"{name} is waiting for your input","soundToggle":"Waiting sound","soundToggleDesc":"Play a short chime when a worktree starts waiting for you. Takes effect after you click or press a key on the page."}}')},61191:(a,b,c)=>{c.r(b),c.d(b,{MODEL_CHANGE_TAG_SUFFIX:()=>r,buildExcerpt:()=>t,buildPushPayload:()=>v,notifyPushSubscribers:()=>x,resolvePushLocale:()=>s});var d=c(48975),e=c.n(d),f=c(88807),g=c(43167),h=c(72626),i=c(25754),j=c(49358),k=c(61296),l=c(27519),m=c(8532),n=c(3915),o=c(4806);let p=(0,h.h)("push/sender"),q={en:j.push,ja:k.push},r="model";function s(a){return(0,i.d9)(a)?a:i.Xn}function t(a,b=120){if(!a)return"";let c=a.replace(/\s+/g," ").trim();return c.length<=b?c:c.slice(0,b-1).trimEnd()+"…"}let u={"verification-failed":{withExcerpt:"failureVerificationWithExcerpt",plain:"failureVerification"},"upstream-fault":{withExcerpt:"failureUpstreamWithExcerpt",plain:"failureUpstream"},"session-start-failed":{withExcerpt:"failureSessionStartWithExcerpt",plain:"failureSessionStart"},"session-start-unavailable":{withExcerpt:"failureSessionUnavailableWithExcerpt",plain:"failureSessionUnavailable"},"agent-session-error":{withExcerpt:"failureAgentSessionWithExcerpt",plain:"failureAgentSession"}};function v(a,b=i.Xn,c=Date.now(),d=null){let e=t(a.excerpt),f=a.agentName?` (${a.agentName})`:"",g=`${a.worktreeName}${f}`,h=s(b),j=q[h],k=a.modelChange?a.modelChange.body[h]:"prompt"===a.kind?!0===a.resolved?j.promptResolved:function(a,b,c,d){var e;let f="menu"===(e=a.waitingKind)||"unclassified"===e;if(a.escalated){let c=String(Math.max(1,Math.floor((d-(a.waitingSince??d))/6e4)));return(f?b.stillWaitingTerminal:b.stillWaitingPrompt).replace("{minutes}",c)}return f?c?b.terminalAttentionWithExcerpt.replace("{excerpt}",c):b.terminalAttention:c?b.promptWaitingWithExcerpt.replace("{excerpt}",c):b.promptWaiting}(a,j,e,c):"failure"===a.kind?function(a,b,c,d){let e=a.failure?.body?.[d];if(e)return e;let f=a.failure?.reason,g=void 0!==f?u[f]:void 0;return void 0===g?c?b.failureWithExcerpt.replace("{excerpt}",c):b.failure:c?b[g.withExcerpt].replace("{excerpt}",c):b[g.plain]}(a,j,e,h):a.updateAvailable?j.updateAvailable.replace("{agent}",a.updateAvailable.agent).replace("{version}",a.updateAvailable.version):e?j.completionWithExcerpt.replace("{excerpt}",e):j.completion;return{kind:a.kind,title:g,body:k,worktreeId:a.worktreeId,url:a.url??`/worktrees/${a.worktreeId}`,tag:a.modelChange?`${a.worktreeId}:${r}`:`${a.worktreeId}:${a.kind}`,timestamp:c,...a.waitingKind?{waitingKind:a.waitingKind}:{},...!0===a.resolved?{resolved:!0}:{},..."prompt"===a.kind&&!0!==a.resolved&&a.waitingEpisodeId?{episodeId:a.waitingEpisodeId,..."number"==typeof d?{order:d}:{}}:{},...!0===a.resolved&&a.resolvedEpisodeId?{resolvedEpisodeId:a.resolvedEpisodeId,..."number"==typeof d?{order:d}:{}}:{}}}async function w(a,b,c=Date.now()){try{return await e().sendNotification({endpoint:a.endpoint,keys:a.keys},b),(0,m.iS)(a.endpoint)&&p.info("push-delivery-recovered"),!0}catch(e){let b=e.statusCode;if(404===b||410===b)return(0,g.th)((0,f.getDbInstance)(),a.endpoint),(0,m.W5)(a.endpoint,{statusCode:b,removed:!0},c),p.info("push-subscription-removed",{statusCode:b}),!1;let d=(0,m.W5)(a.endpoint,{statusCode:b??null},c);return p.warn("push-send-failed",{statusCode:b??"unknown",consecutiveFailures:d.failureCount}),!1}}async function x(a,b=Date.now()){try{let c=(0,l.vB)();if(!c||!(!0===a.resolved||(a.modelChange?(0,n.jQ)({worktreeId:a.worktreeId,kind:a.kind,content:`${r}:${a.instanceId??a.agentName??""}:${a.modelChange.from}>${a.modelChange.to}`}):"prompt"===a.kind&&"number"==typeof a.waitingSince?(0,n.L_)({worktreeId:a.worktreeId,instanceId:a.instanceId??a.agentName??"",since:a.waitingSince,episodeId:a.waitingEpisodeId,escalated:a.escalated}):(0,n.jQ)({worktreeId:a.worktreeId,kind:a.kind,content:"failure"===a.kind?a.failure?.signature:a.excerpt}))))return;let d=(0,f.getDbInstance)(),h=(0,g.gn)(d,a.kind);if(0===h.length)return;"prompt"===a.kind&&!0!==a.resolved&&(0,o.pI)(a.worktreeId,b,a.waitingEpisodeId??null);let i="prompt"===a.kind&&(!0===a.resolved?a.resolvedEpisodeId:a.waitingEpisodeId)?(0,o.Ii)(a.worktreeId,b):null;e().setVapidDetails(c.subject,c.publicKey,c.privateKey);let j=new Map;for(let a of h){let b=s(a.locale),c=j.get(b);c?c.push(a):j.set(b,[a])}let k=(await Promise.all(Array.from(j,([c,d])=>{let e=JSON.stringify(v(a,c,b,i));return Promise.all(d.map(a=>w(a,e,b)))}))).flat(),m=k.filter(Boolean).length,q=k.length-m;p.info("push-fanout-complete",{kind:a.kind,worktreeId:a.worktreeId,instanceId:a.instanceId??a.agentName,delivered:m,failed:q})}catch(a){p.warn("push-fanout-error",{error:a instanceof Error?a.message:String(a)})}}},61296:a=>{a.exports=JSON.parse('{"title":"通知","description":"対応が必要になったとき(応答待ち・検証の不合格・上流APIの障害・セッションの起動失敗)に、アプリを開いていなくてもプッシュ通知を受け取れます。対応の要らない完了通知は任意です。","enable":"通知を有効にする","enabling":"有効化中…","enabledOnThisDevice":"この端末で通知が有効です。","unsubscribe":"この端末の通知を解除","types":{"heading":"通知する種別","promptWaiting":"対応が必要なとき","promptWaitingDesc":"応答待ち・検証ゲートの不合格・上流APIの障害・セッションの起動失敗。あなたが動かないと進みません","completion":"完了も知らせる(任意)","completionDesc":"対応の要らない正常完了。新しく登録した端末では既定でオフです(この端末の設定はここで変えられます)"},"defaultsNotice":{"heading":"通知の既定が変わりました","completionChanged":"対応の要らない正常完了は、新しく登録した端末では既定でオフになりました。この端末はオンのままなので、これまでどおり届きます。","failuresAdded":"「対応が必要なとき」に、検証ゲートの不合格・上流APIの障害・セッションの起動失敗の3種が加わりました。この端末はこれらも受け取ります。","adopt":"新しい既定にする(完了通知をオフ)","keep":"この端末の設定を保つ","adopted":"完了通知をこの端末でオフにしました","kept":"この端末の設定はそのままにしました"},"permission":{"denied":"ブラウザの設定で通知がブロックされています。このサイトの通知を許可してください。"},"delivery":{"headingFailing":"この端末には通知が届いていません","headingRemoved":"この端末の購読はプッシュサービス側で失効しました","failing":"直近 {count} 件の通知がプッシュサービスに拒否されました(HTTP {status})。購読は削除されていません。","failingUnknownStatus":"直近 {count} 件の通知がプッシュサービスに拒否されました。購読は削除されていません。","removed":"プッシュサービスがこの購読を失効と報告したため(HTTP {status})、送信を停止しました。下のボタンで通知を有効にし直すと再購読できます。","removedUnknownStatus":"プッシュサービスがこの購読を失効と報告したため、送信を停止しました。下のボタンで通知を有効にし直すと再購読できます。","apnsHint":"iPhone / iPad で HTTP 403 が出る場合、サーバーの CM_VAPID_SUBJECT が Apple の受け付けない値になっていることがほとんどです。docs/user-guide/webapp-guide.md を参照してください。","since":"最初の失敗: {timestamp}"},"unsupported":"このブラウザはプッシュ通知に対応していません。","notConfigured":"このサーバーではプッシュ通知が設定されていません。VAPID鍵を設定すると有効になります。","ios":{"guidance":"iPhone/iPadでは、このアプリをホーム画面に追加し、そこから開くと通知を有効にできます。"},"toast":{"enabled":"この端末で通知を有効にしました","disabled":"この端末の通知をオフにしました","error":"通知を有効にできませんでした","updated":"通知設定を更新しました"},"push":{"promptWaitingWithExcerpt":"応答待ち: {excerpt}","promptWaiting":"応答待ちです","completionWithExcerpt":"完了: {excerpt}","completion":"セッションが完了しました","terminalAttentionWithExcerpt":"端末の確認が必要です: {excerpt}","terminalAttention":"端末の確認が必要です","stillWaitingPrompt":"まだ応答待ちです({minutes}分経過)","stillWaitingTerminal":"まだ端末の確認が必要です({minutes}分経過)","failureVerificationWithExcerpt":"検証ゲート不合格: {excerpt}","failureVerification":"検証ゲートに不合格しました","failureUpstreamWithExcerpt":"上流APIの障害で停止しています: {excerpt}","failureUpstream":"上流APIの障害で停止しています","failureSessionStartWithExcerpt":"セッションを起動できませんでした: {excerpt}","failureSessionStart":"セッションを起動できませんでした","failureSessionUnavailableWithExcerpt":"セッションを起動できませんでした: {excerpt} がインストールされていません","failureSessionUnavailable":"セッションを起動できませんでした: CLI ツールがインストールされていません","failureWithExcerpt":"失敗しました: {excerpt}","failure":"失敗しました","failureAgentSessionWithExcerpt":"エージェントがエラーで停止しました: {excerpt}","failureAgentSession":"エージェントがエラーで停止しました","promptResolved":"対応済みです(他の端末で応答されました)","updateAvailable":"{agent} の更新が利用できます: {version}"},"escalation":{"heading":"再通知","toggle":"待ち続けていたら再通知する","toggleDesc":"エージェントが入力待ちのまま指定時間を超えたら、もう1度だけ通知します。すべての端末に適用されます。","threshold":"再通知するまでの時間","minutes":"{count}分"},"inApp":{"heading":"アプリ内通知","waitingToggle":"入力待ちトースト","waitingToggleDesc":"別のワークツリーが入力待ちになったときにトーストを表示します","waitingToast":"{name} が入力待ちです","soundToggle":"入力待ちの通知音","soundToggleDesc":"ワークツリーが入力待ちになったときに短い通知音を鳴らします。ページを一度クリックまたはキー操作すると有効になります。"}}')}};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";exports.id=1501,exports.ids=[1501],exports.modules={11501:(a,b,c)=>{c.d(b,{Ky:()=>m,RR:()=>p,cI:()=>o,ct:()=>q,fc:()=>k,oX:()=>n});var d=c(90384),e=c(74985);let f=`${d.uz}(commit または未 commit の変更が存在すること)`,g=`${d.uz}(commit が存在すること。未 commit の変更は作業証跡として数えない)`,h=`${d.le}(変更ファイルが scope.allow の内側に収まっていること)`,i=`${d.Q5}(タスク開始時に在ったポート・tmux セッション・$HOME / ~/.commandmate 直下のエントリが、増えても減っても不合格)`,j=`options.requireCommit (${d.aT})`;function k(a,b){let c=[];return b?.options.requireCommit&&c.push(j),a?.success.requireCommit&&c.push("success.requireCommit (task contract)"),{required:c.length>0,sources:c}}let l=[d.uz,d.le,d.Q5];function m(a){let b=a.verify.gates;if(!b)return null;let c=new Map([[d.uz,a.success.requireWorkEvidence],[d.le,a.success.requireScopeClean],[d.Q5,a.success.requireEnvClean]]);return[...l.filter(a=>!0===c.get(a)||b.includes(a)),...b.filter(a=>!l.includes(a))]}function n(a,b){return!!(0,e.Uq)(a,b).required||(m(a)?.includes(d.Q5)??!1)}function o(a){return a.verify.gateDefinitions??[]}function p(a,b){let c=a.verify.gates,e=o(a),f=[];if(!b)return e.length>0&&f.push(`verify.gateDefinitions: declared ${e.map(a=>a.id).join(", ")}, but ${d.aT} is missing or unreadable in this worktree, so no verification run can execute them`),c&&f.push(`verify.gates: declared ${c.join(", ")}, but ${d.aT} is missing or unreadable in this worktree, so the gate ids cannot be resolved`),f;let g=b.gates.map(a=>a.id),h=e.map(a=>a.id).filter(a=>g.includes(a));if(h.length>0&&f.push(`verify.gateDefinitions: gate id(s) ${h.join(", ")} are already declared in ${d.aT}. A contract may add gates, never redefine the repository's own — rename the contract gate.`),c){let a=new Set([d.uz,d.le,d.Q5,...g]),b=new Set(e.map(a=>a.id)),h=c.filter(c=>!a.has(c)&&!b.has(c));if(h.length>0){let c=[`Declared in ${d.aT}: ${[...a].join(", ")}`];b.size>0&&c.push(`in verify.gateDefinitions: ${[...b].join(", ")}`),f.push(`verify.gates: unknown gate id(s) ${h.join(", ")}. ${c.join("; ")}`)}}return f}function q(a,b){let c=["## 実行契約"];c.push(a.scope.allow.length>0?`- 変更してよいのは次のパスのみ: ${a.scope.allow.join(", ")}`:"- 変更パスの制限: なし(scope.allow が未宣言)"),a.scope.deny.length>0&&c.push(`- 変更してはならないパス: ${a.scope.deny.join(", ")}`),c.push(k(a,b).required?"- 作業完了後は必ず commit すること(未 commit の作業は未完了とみなされる)":"- 作業完了後は commit すること(ただし work-evidence は未 commit の変更も作業証跡として認めるため、commit の有無そのものは検査されない)");let j=function(a,b){if(!b)return[];let c=k(a,b).required?g:f,j=new Map([[d.uz,c],[d.le,h],[d.Q5,i]]),n=[...b.gates,...o(a)],p=(0,e.Uq)(a,b).required,q=m(a);if(!q){let b=[c];return a.success.requireScopeClean&&b.push(h),p&&b.push(i),[...b,...n.map(a=>a.command)]}let r=l.filter(a=>q.includes(a)||a===d.Q5&&p),s=q.filter(a=>!l.includes(a)),t=new Map(n.map(a=>[a.id,a.command]));return[...r,...s].map(a=>j.get(a)??t.get(a))}(a,b);return c.push(j.length>0?`- 完了条件: 次の検証コマンドがすべて成功すること: ${j.join(" / ")}`:`- 完了条件: ${d.aT} に検証ゲートが宣言されていないため、検証コマンドは無い`),`${c.join("\n")}
|
|
2
2
|
|
|
3
3
|
## タスク
|
|
4
|
-
${a.goal}`}},49987:(a,b,c)=>{c.d(b,{H:()=>l,Iq:()=>i,M:()=>k,xL:()=>o});var d=c(29021),e=c(21820),f=c(33873),g=c(55511);let h=(0,c(72626).h)("lib/verification/machine-lock"),i="locks",j="owner";function k(a,b){return(0,f.join)(b,`${a}.lock`)}function l(a=process.env){let b=a.CM_VERIFY_LOCK_ROOT;return b&&""!==b.trim()?b:(0,f.join)((0,e.homedir)(),".commandmate",i)}function m(a){try{let b=JSON.parse((0,d.readFileSync)((0,f.join)(a,j),"utf8"));if("number"!=typeof b.pid||"string"!=typeof b.token)return null;return{pid:b.pid,host:"string"==typeof b.host?b.host:"",token:b.token,acquiredAt:"number"==typeof b.acquiredAt?b.acquiredAt:0}}catch{return null}}function n(a){return a?`pid ${a.pid} on ${a.host||"unknown host"}`:null}async function o(a,b){let c=b.root??l(),i=b.pollIntervalMs??250,o=k(a,c),p=Date.now(),q=p+Math.max(0,b.timeoutMs),r=(0,g.randomUUID)();(0,d.mkdirSync)(c,{recursive:!0});let s=new Set;for(;;){if(b.shouldAbandon?.())return{acquired:!1,waitedMs:Date.now()-p,heldBy:n(m(o)),abandoned:!0};if(function(a,b){try{(0,d.mkdirSync)(a)}catch(a){if("EEXIST"===a.code)return!1;throw a}return(0,d.writeFileSync)((0,f.join)(a,j),JSON.stringify(b),{encoding:"utf8"}),!0}(o,{pid:process.pid,host:(0,e.hostname)(),token:r,acquiredAt:Date.now()}))return{acquired:!0,waitedMs:Date.now()-p,handle:{name:a,path:o,release:()=>{let a=m(o);if(!a||a.token===r)try{(0,d.rmSync)(o,{recursive:!0,force:!0})}catch(a){h.warn("machine-lock-release-failed",{lockPath:o,error:a instanceof Error?a.message:String(a)})}}}};let c=m(o);if(c&&!s.has(c.token)&&function(a){if(a.host!==(0,e.hostname)())return!1;try{return process.kill(a.pid,0),!1}catch(a){return"ESRCH"===a.code}}(c)){s.add(c.token);let a=m(o);if(a&&a.token===c.token)try{(0,d.rmSync)(o,{recursive:!0,force:!0}),h.warn("machine-lock-broken-stale",{lockPath:o,pid:c.pid})}catch{}continue}let g=Date.now();if(g>=q)return{acquired:!1,waitedMs:g-p,heldBy:n(c)};await function(a){return new Promise(b=>setTimeout(b,a))}(Math.min(i,q-g))}}},53604:(a,b,c)=>{c.d(b,{Cr:()=>k,L8:()=>i});var d=c(55511),e=c(29021),f=c(21820),g=c(33873);let h=(0,c(72626).h)("lib/verification/worktree-index"),i="worktree-index";function j(a,b){try{return(0,e.readFileSync)((0,g.join)(a,b),"utf8").trim()}catch{return null}}function k(a,b={}){let c=b.root??function(a=process.env){let b=a.CM_VERIFY_WORKTREE_INDEX_ROOT;return b&&""!==b.trim()?b:(0,g.join)((0,f.homedir)(),".commandmate",i)}();try{(0,e.mkdirSync)(c,{recursive:!0});let b=new Set;for(let d of(0,e.readdirSync)(c))if(/^\d+$/.test(d)){if(j(c,d)===a)return Number(d);b.add(Number(d))}for(let d=0;d<1024;d++)if(!b.has(d)&&function(a,b,c){try{return(0,e.writeFileSync)((0,g.join)(a,String(b)),`${c}
|
|
4
|
+
${a.goal}`}},49987:(a,b,c)=>{c.d(b,{H:()=>l,Iq:()=>i,M:()=>k,xL:()=>o});var d=c(29021),e=c(21820),f=c(33873),g=c(55511);let h=(0,c(72626).h)("lib/verification/machine-lock"),i="locks",j="owner";function k(a,b){return(0,f.join)(b,`${a}.lock`)}function l(a=process.env){let b=a.CM_VERIFY_LOCK_ROOT;return b&&""!==b.trim()?b:(0,f.join)((0,e.homedir)(),".commandmate",i)}function m(a){try{let b=JSON.parse((0,d.readFileSync)((0,f.join)(a,j),"utf8"));if("number"!=typeof b.pid||"string"!=typeof b.token)return null;return{pid:b.pid,host:"string"==typeof b.host?b.host:"",token:b.token,acquiredAt:"number"==typeof b.acquiredAt?b.acquiredAt:0}}catch{return null}}function n(a){return a?`pid ${a.pid} on ${a.host||"unknown host"}`:null}async function o(a,b){let c=b.root??l(),i=b.pollIntervalMs??250,o=k(a,c),p=Date.now(),q=p+Math.max(0,b.timeoutMs),r=(0,g.randomUUID)();(0,d.mkdirSync)(c,{recursive:!0});let s=new Set,t=!1;for(;;){if(b.shouldAbandon?.())return{acquired:!1,waitedMs:Date.now()-p,heldBy:n(m(o)),abandoned:!0};if(function(a,b){try{(0,d.mkdirSync)(a)}catch(a){if("EEXIST"===a.code)return!1;throw a}return(0,d.writeFileSync)((0,f.join)(a,j),JSON.stringify(b),{encoding:"utf8"}),!0}(o,{pid:process.pid,host:(0,e.hostname)(),token:r,acquiredAt:Date.now()}))return{acquired:!0,waitedMs:Date.now()-p,handle:{name:a,path:o,release:()=>{let a=m(o);if(!a||a.token===r)try{(0,d.rmSync)(o,{recursive:!0,force:!0})}catch(a){h.warn("machine-lock-release-failed",{lockPath:o,error:a instanceof Error?a.message:String(a)})}}}};let c=m(o);if(c&&!s.has(c.token)&&function(a){if(a.host!==(0,e.hostname)())return!1;try{return process.kill(a.pid,0),!1}catch(a){return"ESRCH"===a.code}}(c)){s.add(c.token);let a=m(o);if(a&&a.token===c.token)try{(0,d.rmSync)(o,{recursive:!0,force:!0}),h.warn("machine-lock-broken-stale",{lockPath:o,pid:c.pid})}catch{}continue}let g=Date.now();if(g>=q)return{acquired:!1,waitedMs:g-p,heldBy:n(c)};t||(t=!0,b.onWait?.()),await function(a){return new Promise(b=>setTimeout(b,a))}(Math.min(i,q-g))}}},53604:(a,b,c)=>{c.d(b,{Cr:()=>k,L8:()=>i});var d=c(55511),e=c(29021),f=c(21820),g=c(33873);let h=(0,c(72626).h)("lib/verification/worktree-index"),i="worktree-index";function j(a,b){try{return(0,e.readFileSync)((0,g.join)(a,b),"utf8").trim()}catch{return null}}function k(a,b={}){let c=b.root??function(a=process.env){let b=a.CM_VERIFY_WORKTREE_INDEX_ROOT;return b&&""!==b.trim()?b:(0,g.join)((0,f.homedir)(),".commandmate",i)}();try{(0,e.mkdirSync)(c,{recursive:!0});let b=new Set;for(let d of(0,e.readdirSync)(c))if(/^\d+$/.test(d)){if(j(c,d)===a)return Number(d);b.add(Number(d))}for(let d=0;d<1024;d++)if(!b.has(d)&&function(a,b,c){try{return(0,e.writeFileSync)((0,g.join)(a,String(b)),`${c}
|
|
5
5
|
`,{encoding:"utf8",flag:"wx"}),!0}catch(d){if("EEXIST"!==d.code)throw d;return j(a,String(b))===c}}(c,d,a))return d;h.warn("worktree-index-exhausted",{worktreeId:a,root:c})}catch(b){h.warn("worktree-index-unavailable",{worktreeId:a,root:c,error:b instanceof Error?b.message:String(b)})}return Number.parseInt((0,d.createHash)("sha256").update(a).digest("hex").slice(0,8),16)%1024}},74985:(a,b,c)=>{c.d(b,{Uq:()=>n,uT:()=>G,vQ:()=>w});var d=c(79646),e=c(29021),f=c(33873),g=c(88807),h=c(73753),i=c(40964),j=c(15194),k=c(77142),l=c(90384);let m=`options.requireEnvClean (${l.aT})`;function n(a,b){let c=[];return b?.options.requireEnvClean&&c.push(m),a&&!0===a.success.requireEnvClean&&c.push("success.requireEnvClean (task contract)"),{required:c.length>0,sources:c}}function o(a,b){let c=(0,i.NN)(a);if(!c)return"unattributed";let d=c.rest;return d===b||d.startsWith(`${b}-`)?"self":"other"}function p(a,b){if(!a)return"unattributed";let c=(0,f.resolve)(b),d=(0,f.resolve)(a);if(d===c||d.startsWith(c+f.sep))return"self";let e=(0,f.dirname)(c);return d!==e&&d.startsWith(e+f.sep)?"other":"unattributed"}let q=a=>{try{process.kill(a,0)}catch(a){if("EPERM"!==a.code)return null}if("linux"===process.platform)try{return(0,e.readlinkSync)(`/proc/${a}/cwd`)}catch{return null}try{let b=(0,d.execFileSync)("lsof",["-a","-d","cwd","-p",String(a),"-F","n"],{encoding:"utf8",timeout:5e3,stdio:["ignore","pipe","ignore"]}).split("\n").find(a=>a.startsWith("n"));return b?b.slice(1):null}catch{return null}},r=/^\.commandmate-demo-vitest-([1-9]\d*)$/,s=/^\.zcompdump(?:\.[A-Za-z0-9._-]+\.[1-9]\d*)?$/,t=a=>{try{return process.kill(a,0),!0}catch(a){return"EPERM"===a.code}};function u(a){let b=r.exec(a);if(!b)return null;let c=Number(b[1]);return Number.isSafeInteger(c)?c:null}function v(a,b,c,d){switch(a){case"tmux-sessions":return o(b.key,c.worktreeId);case"listeners":return p(b.anchor,c.worktreePath);case"home-entries":return function(a,b,c=q){let d=u(a);return null===d?"unattributed":"other"===p(c(d),b)?"other":"unattributed"}(b.key,c.worktreePath,d);default:return"unattributed"}}function w(a,b,c={namespace:(0,i.s4)(),legacyAliasOf:a=>{let b=(0,i.NN)(a);if(b)try{let c=(0,i.mf)(b.cliToolId,b.rest);return c!==a?c:void 0}catch{return}},repositoryOf:a=>{try{return(0,h.getWorktreeById)((0,g.getDbInstance)(),a)?.repositoryPath||null}catch{return null}}},d=t){return{...a,taskSession:function(a){if(!(0,j.hR)(a.cliToolId))return null;try{return(0,i.mf)(a.cliToolId,a.worktreeId,a.instanceId??void 0)}catch{return null}}(b),otherServerSessions:function(a,b){if(null===b.namespace)return null;let c=a.probes["tmux-sessions"];return c&&"ok"===c.status?c.entries.map(a=>a.key).filter(a=>x(a,b)):[]}(a,c),otherRepositorySessions:function(a,b,c){if(null===c.namespace||!c.repositoryOf)return null;let d=c.repositoryOf(b);if(!d)return null;let e=a.probes["tmux-sessions"];return e&&"ok"===e.status?e.entries.map(a=>a.key).filter(a=>{if("other"!==o(a,b)||x(a,c))return!1;let e=(0,i.NN)(a);if(!e)return!1;let f=function(a,b){let c=b.repositoryOf;if(!c)return null;let d=new Set,e=a.indexOf("-");for(;;){let b=c(-1===e?a:a.slice(0,e));if(b&&d.add(b),-1===e)break;e=a.indexOf("-",e+1)}return 1===d.size?[...d][0]:null}(e.rest,c);return null!==f&&f!==d}):[]}(a,b.worktreeId,c),deadDemoVitestEntries:function(a,b=t){let c=a.probes["home-entries"];return c&&"ok"===c.status?c.entries.map(a=>a.key).filter(a=>{let c=u(a);return null!==c&&!b(c)}):[]}(a,d)}}function x(a,b){let c;if(null===b.namespace)return!1;let d=(0,i.NN)(a);if(!d)return!1;if(null!==d.namespace)return d.namespace!==b.namespace;try{c=(0,i.Ze)(b.namespace,d.cliToolId,d.rest)}catch{return!0}return b.legacyAliasOf(c)!==a}function y(a,b){return{key:a.key,detail:a.detail,owner:b}}function z(a,b){let c=b.slice(0,25),d=b.length-c.length,e=c.map(b=>{let c=b.detail?` ${b.detail}`:"";return` ${a} ${b.key}${c} [${b.owner}]`});return d>0&&e.push(` ... and ${d} more`),e}function A(a){return a.map(a=>{let b=a.detail?` ${a.detail}`:"";return` + ${a.key}${b} [task session, excused]`})}function B(a){return a.map(a=>` \xb7 - ${a.key} (ignored: another CommandMate server's session, recorded at task start)`)}function C(a){return a.map(a=>` \xb7 - ${a.key} (ignored: a worktree of another repository on this server, recorded at task start)`)}function D(a){return a.map(a=>` \xb7 - ${a.key} (ignored: its pid was already dead at task start — a leftover swept by the demo-video tests)`)}function E(a){if(0===a.length)return[];let b=a.map(a=>a.key).join(", ");return[` ignored (options.envCleanIgnoreHomeEntries): ${b}`]}function F(a){if(0===a.length)return[];let b=a.map(a=>a.key).join(", ");return[` ignored (built-in): ${b}`]}async function G(a){var b;let c,d=Date.now(),e=(a,b,c)=>({status:a,exitCode:c,startedAt:d,durationMs:Date.now()-d,logTail:b});if(!a.baseline)return e("error",function(a,b){let c=a?`task ${a}`:"this run",d=b.length>0?b.join(" and "):"nothing";return`${l.Q5}: UNKNOWN — no baseline snapshot exists for ${c}, so nothing can be compared. This is NOT "the environment is unchanged": no measurement was taken. A baseline is recorded when the task is created (\`send --contract\`) and only while the gate is switched on (currently: ${d}). Switch it on, then re-send the task.`+(a?"":" To re-verify this worktree's contract task (this run is not attached to a task), run `commandmate verify <worktree> --task <id>`.")}(a.taskId,a.sources),null);let f=a.capture??(()=>(0,k._8)({worktreeId:a.worktreeId}));try{c=await f()}catch(a){return e("error",`${l.Q5}: UNKNOWN — the current snapshot could not be taken: ${a instanceof Error?a.message:String(a)}`,null)}let g=function(a,b,c,d={}){let e=function(a){if(!("taskSession"in a))return;let b=a.taskSession;return"string"==typeof b&&""!==b?b:null}(a),f=function(a){let b=a.otherServerSessions;return Array.isArray(b)?new Set(b.filter(a=>"string"==typeof a)):new Set}(a),g=function(a){let b=a.otherRepositorySessions;return Array.isArray(b)?new Set(b.filter(a=>"string"==typeof a)):new Set}(a),h=function(a){let b=a.deadDemoVitestEntries;return Array.isArray(b)?new Set(b.filter(a=>"string"==typeof a&&null!==u(a))):new Set}(a),i=new Set(d.ignoreHomeEntries??[]),j=d.resolvePidCwd??q,l=k.I1.map(d=>{let k=a.probes[d],l=b.probes[d];if(!k||"ok"!==k.status)return{probeId:d,status:"unknown",reason:`baseline probe unavailable: ${k?.reason??"not recorded"}`,added:[],ignoredAdded:[],taskSessionAdded:[],removed:[],removedByOtherServer:[],removedByOtherRepository:[],removedStaleDemoVitest:[],ignoredByConfig:[],ignoredBuiltIn:[]};if(!l||"ok"!==l.status)return{probeId:d,status:"unknown",reason:`current probe unavailable: ${l?.reason??"not recorded"}`,added:[],ignoredAdded:[],taskSessionAdded:[],removed:[],removedByOtherServer:[],removedByOtherRepository:[],removedStaleDemoVitest:[],ignoredByConfig:[],ignoredBuiltIn:[]};let m=new Set(k.entries.map(a=>a.key)),n=new Set(l.entries.map(a=>a.key)),o=a=>"home-entries"===d&&i.has(a.key),p=a=>{var b;return"home-entries"===d&&(b=a.key,s.test(b))},q=[],r=[],t=[],u=[],w=[];for(let a of l.entries){if(m.has(a.key))continue;let b=v(d,a,c,j);if(o(a)){u.push(y(a,b));continue}if(p(a)){w.push(y(a,b));continue}if("tmux-sessions"===d&&e&&a.key===e){t.push(y(a,b));continue}("other"===b?r:q).push(y(a,b))}let x="tmux-sessions"===d&&l.entries.some(a=>m.has(a.key)||null!==e&&a.key===e),z=[],A=[],B=[],C=[];for(let a of k.entries){if(n.has(a.key))continue;let b=y(a,v(d,a,c,j));o(a)?u.push(b):p(a)?w.push(b):x&&"self"!==b.owner&&f.has(a.key)?A.push(b):x&&"other"===b.owner&&g.has(a.key)?B.push(b):"home-entries"===d&&h.has(a.key)?C.push(b):z.push(b)}return{probeId:d,status:q.length+z.length>0?"violated":"clean",reason:null,added:q,ignoredAdded:r,taskSessionAdded:t,removed:z,removedByOtherServer:A,removedByOtherRepository:B,removedStaleDemoVitest:C,ignoredByConfig:u,ignoredBuiltIn:w}});return{status:l.some(a=>"violated"===a.status)?"violated":l.some(a=>"unknown"===a.status)?"unknown":"clean",taskSession:e,probes:l}}(a.baseline,c,a,{ignoreHomeEntries:a.ignoreHomeEntries,resolvePidCwd:a.resolvePidCwd}),h=`${l.Q5}: baseline=${new Date(a.baseline.capturedAt).toISOString()} status=${g.status} task-session=${void 0===(b=g.taskSession)?"unrecorded (baseline predates #2472; nothing excused)":null===b?"unresolved (nothing excused)":b}`,i=`${h}
|
|
6
6
|
${function(a){let b=[];for(let c of a.probes){let a=k.J6[c.probeId];if("unknown"===c.status){b.push(` ${c.probeId} UNKNOWN (${a}): ${c.reason??"no reason recorded"}`);continue}if("clean"===c.status){let d=c.ignoredAdded.length>0?` (${c.ignoredAdded.length} addition(s) attributed to another worktree)`:"";b.push(` ${c.probeId} clean (${a})${d}`),b.push(...A(c.taskSessionAdded)),b.push(...B(c.removedByOtherServer)),b.push(...C(c.removedByOtherRepository)),b.push(...D(c.removedStaleDemoVitest)),b.push(...E(c.ignoredByConfig)),b.push(...F(c.ignoredBuiltIn)),b.push(...function(a){if(0===a.length)return[];let b=a.map(a=>a.key).join(", ");return[` ignored (attributed to another worktree): ${b}`]}(c.ignoredAdded));continue}for(let d of(b.push(` ${c.probeId} VIOLATED (${a}): +${c.added.length} -${c.removed.length}`),b.push(...z("+",c.added)),b.push(...z("-",c.removed)),b.push(...A(c.taskSessionAdded)),b.push(...B(c.removedByOtherServer)),b.push(...C(c.removedByOtherRepository)),b.push(...D(c.removedStaleDemoVitest)),b.push(...E(c.ignoredByConfig)),b.push(...F(c.ignoredBuiltIn)),c.ignoredAdded))b.push(` \xb7 ${d.key} (ignored: belongs to another worktree)`)}return b.join("\n")}(g)}`;return"clean"===g.status?e("passed",i,0):"unknown"===g.status?e("error",`${i}
|
|
7
7
|
UNKNOWN is not a pass: at least one probe could not be compared, so the environment was not measured.`,null):e("failed",`${i}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";exports.id=1601,exports.ids=[1601],exports.modules={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)})}}},52277:(a,b,c)=>{c.d(b,{FA:()=>
|
|
1
|
+
"use strict";exports.id=1601,exports.ids=[1601],exports.modules={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}:{}},o=m.send?(0,i.zP)(b):null;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,...null!==o?{resolvedEpisodeId:o}:{}},g),l.info("resolution-push-sent",n)}catch(a){l.warn("resolution-push-failed",{...n,error:a instanceof Error?a.message:String(a)})}}},52277:(a,b,c)=>{c.d(b,{FA:()=>k,WM:()=>j,ZS:()=>h,gb:()=>i});var d=c(24455),e=c(36925),f=c(57836);let g=(0,e.v)("__autoYesPolicySuppressions",()=>new Map);function h(a,b,c,e,i=Date.now()){let{episodeId:j,...k}=e,l=j??(0,f._v)(a,b,c)?.episodeId;g.set((0,d.v7)(a,b,c),{...k,at:i,...void 0!==l?{episodeId:l}:{}})}function i(a,b,c){return g.get((0,d.v7)(a,b,c))??null}function j(a,b,c){return null!=b&&null!==c&&c.episodeId===b&&a.at<c.at}function k(a,b,c){g.delete((0,d.v7)(a,b,c))}},73478:(a,b,c)=>{c.d(b,{I7:()=>A,Zu:()=>u});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");function p(a){let b=(0,h._v)(a.worktreeId,a.cliToolId,a.instanceId);return null===b?null:(0,j.wy)(b,a)?b:null}let q=(0,n.v)("__waitingPushPending",()=>new Map),r=(0,n.v)("__waitingPushGraceTimers",()=>new Map),s=(0,n.v)("__waitingPushAnswerGraceTimers",()=>new Map),t=(0,n.v)("__waitingPushDeferredGates",()=>new Map);function u(a,b,c){let e=(0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId),f=!t.has(e);f&&t.set(e,[]);try{let a=b();return c(a),a}finally{if(f){let a=t.get(e)??[];for(let b of(t.delete(e),a))b()}}}async function v(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,waitingEpisodeId:a.episodeId,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 w(a){let b=r.get(a);void 0!==b&&(clearTimeout(b),r.delete(a));let c=s.get(a);void 0!==c&&(clearTimeout(c),s.delete(a))}function x(a,b,c=!1){let d=(0,j.W3)({worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId,waitingSince:a.since,waitingEpisodeId:a.episodeId,now:b},{recheck:c});if(d.suppress)return void("auto-yes-answering"===d.reason?y(a,b):"auto-yes-answered"===d.reason&&y(a,b,j.Zj));v(a,!1,b)}function y(a,b,c){let e=(0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId),f=s.get(e);void 0!==f&&clearTimeout(f);let g=(0,j.D6)({worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId,waitingSince:a.since,waitingEpisodeId:a.episodeId},b),h=setTimeout(()=>{s.delete(e),function(a,b){let c=q.get(a);if(void 0===c||!(0,j.wy)(c,b))return;let d=p(c);if(null===d){q.delete(a),(0,j.Vf)(a,{since:c.since,episodeId:c.episodeId}),z();return}let e={...c,kind:d.kind};q.set(a,e),x(e,Date.now(),!0)}(e,a)},c??Math.min(j.Zj,Math.max(0,g-b)));h.unref?.(),s.set(e,h)}function z(){if(q.size>0)return;let a=globalThis.__waitingPushEscalationTimer;void 0!==a&&(clearInterval(a),globalThis.__waitingPushEscalationTimer=void 0)}function A(){let a=globalThis.__waitingPushUnsubscribe;for(let b of(a&&(a(),globalThis.__waitingPushUnsubscribe=void 0),r.values()))clearTimeout(b);for(let a of(r.clear(),s.values()))clearTimeout(a);s.clear(),q.clear(),z();let b=(0,h.Bf)(a=>{!function(a){var b;if(!(0,m.lU)())return;let c=(0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId),e="cause"in a?a.cause:null;if(!a.waiting||null===a.since){w(c),q.delete(c),z(),(0,l.GT)({worktreeId:a.worktreeId,agentName:a.instanceId??a.cliToolId,at:a.at});return}if("replaced"===e){let b=q.get(c);w(c),q.delete(c);let d="previousEpisodeId"in a?a.previousEpisodeId:null;(0,j.Vf)(c,{since:b?.since??a.since,episodeId:d??b?.episodeId})}let f={worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId,since:a.since,episodeId:function(a){if("episodeId"in a)return a.episodeId;let b=(0,h._v)(a.worktreeId,a.cliToolId,a.instanceId);return null!==b&&b.since===a.since?b.episodeId:null}(a),kind:a.kind};if(q.set(c,f),!function(){if(void 0!==globalThis.__waitingPushEscalationTimer)return;let a=setInterval(()=>{!function(a=Date.now()){if(0===q.size)return z();let b=(0,i.rS)(),c=6e4*b.thresholdMinutes;for(let[d,e]of Array.from(q)){let f=p(e);if(null===f){q.delete(d);continue}b.enabled&&!(a-e.since<c)&&((0,j.R4)({worktreeId:e.worktreeId,cliToolId:e.cliToolId,instanceId:e.instanceId,waitingSince:e.since,waitingEpisodeId:e.episodeId,escalated:!0})||(q.delete(d),v({...e,kind:f.kind??e.kind},!0,a)))}z()}()},6e4);a.unref?.(),globalThis.__waitingPushEscalationTimer=a}(),null==(b=f.kind)||"unclassified"===b){w(c);let a=setTimeout(()=>{!function(a){r.delete(a);let b=q.get(a);if(void 0===b)return;let c=p(b);if(null===c){q.delete(a),z();return}let d={...b,kind:c.kind};q.set(a,d),x(d,Date.now())}(c)},8e3);a.unref?.(),r.set(c,a);return}let g=t.get(c);if(void 0!==g)return g.push(()=>x(f,a.at));x(f,a.at)}(a)});return globalThis.__waitingPushUnsubscribe=b,b}},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(`
|
|
2
2
|
INSERT INTO app_settings (key, value, created_at, updated_at)
|
|
3
3
|
VALUES (?, ?, ?, ?)
|
|
4
4
|
ON CONFLICT(key) DO UPDATE SET
|
|
5
5
|
value = excluded.value,
|
|
6
6
|
updated_at = excluded.updated_at
|
|
7
|
-
`).run(f,JSON.stringify(b),c,c),b}},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,{D6:()=>
|
|
7
|
+
`).run(f,JSON.stringify(b),c,c),b}},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,{D6:()=>n,R4:()=>r,Vf:()=>o,W3:()=>s,Zj:()=>j,wy:()=>l});var d=c(24455),e=c(72626),f=c(52277),g=c(36925),h=c(57836);let i=(0,e.h)("push/prompt-gate"),j=Math.max(3*d.ps,d.ZO+2*d.ps),k=(0,g.v)("__promptPushAutoYesHolds",()=>new Map);function l(a,b){let c=a.episodeId??null,d=b.episodeId??null;return null!==c&&null!==d?c===d:a.since===b.since}let m=2*d.ps;function n(a,b){let c=function(a,b){let c=(0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId);var e=b;for(let[a,b]of k)e-b.firstHeldAt>=36e5&&k.delete(a);let f=a.waitingEpisodeId??void 0,g=k.get(c);void 0!==g&&l(g,{since:a.waitingSince,episodeId:f})?void 0===g.episodeId&&void 0!==f&&(g.episodeId=f):(g={since:a.waitingSince,...void 0!==f?{episodeId:f}:{},firstHeldAt:b,sessionWaitTick:function(a,b){let c=globalThis.__autoYesPollerStates?.get(a),e=c?.sessionWaitTickAt;if(void 0!==c&&void 0!==e&&!(e<=b))return{at:Math.min(e,b+d.BT),poller:c,heldAt:b}}(c,b)},k.set(c,g));let h=(0,d.aq)(a.worktreeId,a.cliToolId,a.instanceId)?.enabledAt;void 0!==h&&h>g.firstHeldAt&&h<=b&&(g.firstHeldAt=h);let i=globalThis.__autoYesPollerStates?.get(c)?.lastServerResponseTimestamp??null;return null!==i?Math.max(g.firstHeldAt,i):g.firstHeldAt}(a,b),e=(0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId),f=k.get(e)?.sessionWaitTick,g=Math.max(c+j,function(a,b){let c=globalThis.__autoYesPollerStates?.get(a),e=c?.duplicateRetryReservation;return void 0===c||null==e||e.observedAt<b||e.answeredAt!==c.lastAnsweredAt||e.promptKey!==c.lastAnsweredPromptKey?-1/0:e.answeredAt+d.UL+m}(e,a.waitingSince));return void 0===f||globalThis.__autoYesPollerStates?.get(e)!==f.poller?g:(f.at=function(a){let b=a.at;for(let c of[a.poller.sessionWaitTickAt,a.poller.sessionWaitTickRanAt,a.poller.sessionAppearedAt])void 0!==c&&c>=a.heldAt&&c<b&&(b=c);return b}(f),Math.max(g,f.at+m))}function o(a,b){if(void 0!==b){let c=k.get(a);if(void 0===c||!l(c,"number"==typeof b?{since:b}:b))return}k.delete(a)}function p(a){let{worktreeId:b,cliToolId:c,instanceId:e}=a,g=(0,d.aq)(b,c,e);if(null===g||!g.enabled)return{suppress:!1,reason:"auto-yes-inactive",stopReason:g?.stopReason};let i=(0,f.gb)(b,c,e);if(null!==i&&function(a,b){let c=b.waitingEpisodeId??null;return void 0!==a.episodeId&&null!==c?a.episodeId===c:a.at>=b.waitingSince}(i,a)&&!(0,f.WM)(i,a.waitingEpisodeId,q(a)))return{suppress:!1,reason:"policy-withheld",suppressedBy:i.reason};if(!0===a.escalated)return{suppress:!1,reason:"escalation-reminder"};let k=a.holdEndsAt??(void 0!==a.holdStartedAt?a.holdStartedAt+j:void 0);return void 0!==k&&(a.now??Date.now())>=k?!function(a){let b=a.waitingEpisodeId??null;if(null===b||q(a)?.episodeId!==b)return!1;let c=(0,h._v)(a.worktreeId,a.cliToolId,a.instanceId);return null!==c&&c.episodeId===b&&"screen"!==c.binding.kind}(a)?{suppress:!1,reason:"auto-yes-not-answered"}:{suppress:!0,reason:"auto-yes-answered"}:{suppress:!0,reason:"auto-yes-answering"}}function q(a){let b=(0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId);return globalThis.__autoYesPollerStates?.get(b)?.lastAnswer??null}function r(a){return s(a).suppress}function s(a,b={}){let c=p(a);if("auto-yes-inactive"===c.reason&&o((0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId)),"auto-yes-answering"===c.reason&&void 0===a.holdStartedAt&&void 0===a.holdEndsAt){let b=a.now??Date.now();c=p({...a,now:b,holdEndsAt:n(a,b)})}let e={worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId??a.cliToolId,waitingSince:a.waitingSince,...a.waitingEpisodeId?{waitingEpisodeId:a.waitingEpisodeId}:{},escalated:!0===a.escalated,reason:c.reason,...void 0!==c.stopReason?{stopReason:c.stopReason}:{},...void 0!==c.suppressedBy?{suppressedBy:c.suppressedBy}:{}};return c.suppress&&!0===b.recheck?i.debug("prompt-push-suppressed",e):c.suppress?i.info("prompt-push-suppressed",e):"auto-yes-not-answered"===c.reason?i.info("prompt-push-allowed",e):i.debug("prompt-push-allowed",e),c}}};
|