commandmate 0.15.0 → 0.17.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 +425 -310
- package/.next/app-path-routes-manifest.json +35 -20
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +15 -15
- package/.next/react-loadable-manifest.json +11 -11
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +72 -0
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update-check/route.js +1 -1
- package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/conversation/route.js +1 -1
- package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/current-output/route.js +1 -1
- package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/messages/route.js +1 -1
- package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/session/route.js +1 -1
- package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/start/route.js +1 -1
- package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/terminal/route.js +3 -3
- package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/tools/route.js +1 -1
- package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/route.js +1 -1
- package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js +1 -0
- package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -0
- package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/hooks/claude-done/route.js +1 -1
- 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/metrics/vibe/route.js +37 -0
- package/.next/server/app/api/metrics/vibe/route.js.nft.json +1 -0
- package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/ollama/models/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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/route.js +1 -1
- package/.next/server/app/api/repositories/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/[id]/route.js +1 -1
- package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/installations/route.js +23 -0
- package/.next/server/app/api/skills/installations/route.js.nft.json +1 -0
- package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/skills/operations/route.js +13 -0
- package/.next/server/app/api/skills/operations/route.js.nft.json +1 -0
- package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/skills/reindex/route.js +23 -0
- package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -0
- package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route.js +4 -0
- package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +1 -0
- package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/tasks/[taskId]/route.js +4 -0
- package/.next/server/app/api/tasks/[taskId]/route.js.nft.json +1 -0
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/templates/[id]/route.js +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/todos/route.js +1 -1
- package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route.js +1 -0
- package/.next/server/app/api/verification/runs/[runId]/route.js.nft.json +1 -0
- package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/verification/runs/route.js +1 -0
- package/.next/server/app/api/verification/runs/route.js.nft.json +1 -0
- package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -0
- 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]/cli-tool/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +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]/execution-logs/[logId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route.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]/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_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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/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]/respond/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route.js +2 -2
- 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_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 +18 -0
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -0
- 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/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/start-polling/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/start-polling/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route.js +6 -0
- package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route.js +4 -0
- package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -0
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -0
- package/.next/server/app/api/worktrees/[id]/verify/runs/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/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/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/more/page.js +1 -1
- package/.next/server/app/more/page_client-reference-manifest.js +1 -1
- package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/repositories/page.js +1 -1
- package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
- package/.next/server/app/review/page.js +1 -1
- package/.next/server/app/review/page_client-reference-manifest.js +1 -1
- package/.next/server/app/sessions/page.js +1 -1
- package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/[skillId]/page.js +1 -1
- package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
- package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/installed/page.js +2 -0
- package/.next/server/app/skills/installed/page.js.nft.json +1 -0
- package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -0
- 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_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/page.js +4 -4
- package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +35 -20
- package/.next/server/chunks/1068.js +1 -1
- package/.next/server/chunks/1117.js +1 -1
- package/.next/server/chunks/1185.js +1 -0
- package/.next/server/chunks/1239.js +1 -0
- package/.next/server/chunks/1503.js +2 -0
- package/.next/server/chunks/22.js +1 -1
- package/.next/server/chunks/2328.js +1 -1
- package/.next/server/chunks/2366.js +1 -0
- package/.next/server/chunks/2710.js +2 -0
- package/.next/server/chunks/28.js +35 -0
- package/.next/server/chunks/3042.js +1 -2
- package/.next/server/chunks/3736.js +1 -1
- package/.next/server/chunks/4440.js +2 -0
- package/.next/server/chunks/4444.js +1 -1
- package/.next/server/chunks/4548.js +1 -0
- package/.next/server/chunks/4689.js +25 -0
- package/.next/server/chunks/5064.js +1 -1
- package/.next/server/chunks/5381.js +50 -10
- package/.next/server/chunks/5456.js +1 -1
- package/.next/server/chunks/5737.js +1 -0
- package/.next/server/chunks/5793.js +1 -0
- package/.next/server/chunks/5959.js +3 -3
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6274.js +13 -0
- package/.next/server/chunks/646.js +1 -1
- package/.next/server/chunks/8681.js +1 -1
- package/.next/server/chunks/8807.js +255 -51
- package/.next/server/chunks/8856.js +4 -0
- package/.next/server/chunks/9051.js +1 -0
- package/.next/server/chunks/9687.js +2 -2
- 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/server-reference-manifest.json +1 -1
- package/.next/static/chunks/2751-7fabd91275b14ca3.js +1 -0
- package/.next/static/chunks/{4459.03172449db395039.js → 4459.a94b52985a76509a.js} +1 -1
- package/.next/static/chunks/{4560-8ffb0bb19f2ba998.js → 4560-0917ae2e6a0e5400.js} +1 -1
- package/.next/static/chunks/{6488-93870a55f4a3e3cd.js → 6488-f4e447464c9e0e22.js} +1 -1
- package/.next/static/chunks/{7485.43871aedf3dbb980.js → 7485.442b21101fca7257.js} +1 -1
- package/.next/static/chunks/8562-6e2ab32452f4fa5b.js +1 -0
- package/.next/static/chunks/app/api/app/update/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/app/update-check/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/assistant/conversation/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/assistant/current-output/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/assistant/messages/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/assistant/session/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/assistant/start/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/assistant/terminal/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/assistant/tools/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/auth/login/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/auth/status/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/status/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/external-apps/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/fs/browse/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/fs/recent-paths/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/hooks/agent-event/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/hooks/claude-done/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/metrics/vibe/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/ollama/models/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/push/subscriptions/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/push/vapid/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/todos/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/repositories/excluded/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/repositories/restore/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/repositories/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/repositories/scan/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/repositories/sync/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/repositories/validate-path/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/sidebar/group-order/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/skills/[id]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/skills/installations/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/skills/operations/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/skills/reindex/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/skills/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/slash-commands/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/templates/[id]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/templates/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/todos/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/manifest.webmanifest/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/more/{page-082d4ae496f9a36e.js → page-1619018cac999bbc.js} +1 -1
- package/.next/static/chunks/app/proxy/[...path]/route-8440b6c72bed83a1.js +1 -0
- package/.next/static/chunks/app/repositories/page-1ed1e5a542ecc168.js +1 -0
- package/.next/static/chunks/app/review/{page-f431d630097c2e85.js → page-b559bfb11c46931b.js} +1 -1
- package/.next/static/chunks/app/sessions/{page-20f07a99db64d2ca.js → page-3fa7e767d0ab3889.js} +1 -1
- package/.next/static/chunks/app/skills/[skillId]/page-6008b904225ebb25.js +1 -0
- package/.next/static/chunks/app/skills/installed/page-6641f95e6a6e5f9d.js +1 -0
- package/.next/static/chunks/app/skills/page-184f8e23e31a3667.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-5ffc84094830babb.js +1 -0
- package/.next/static/chunks/{webpack-6b35d37d50302d27.js → webpack-180bebdee221b6f4.js} +1 -1
- package/.next/static/css/{5127edd9aa8f3b49.css → d3453a6876553d32.css} +1 -1
- package/.next/static/gR8Sh86RrTynJON8SWkWK/_buildManifest.js +1 -0
- package/.next/trace +12 -11
- package/.next/types/app/api/hooks/agent-event/route.ts +347 -0
- package/.next/types/app/api/metrics/vibe/route.ts +347 -0
- package/.next/types/app/api/skills/installations/route.ts +347 -0
- package/.next/types/app/api/skills/operations/route.ts +347 -0
- package/.next/types/app/api/skills/reindex/route.ts +347 -0
- package/.next/types/app/api/tasks/[taskId]/cancel/route.ts +347 -0
- package/.next/types/app/api/tasks/[taskId]/route.ts +347 -0
- package/.next/types/app/api/verification/runs/[runId]/route.ts +347 -0
- package/.next/types/app/api/verification/runs/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/tasks/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/verify/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/verify/runs/[runId]/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/verify/runs/route.ts +347 -0
- package/.next/types/app/skills/installed/page.ts +84 -0
- package/.next/types/routes.d.ts +17 -2
- package/.next/types/validator.ts +135 -0
- package/dist/cli/commands/report.d.ts +1 -0
- package/dist/cli/commands/report.d.ts.map +1 -1
- package/dist/cli/commands/report.js +54 -0
- package/dist/cli/commands/send.d.ts.map +1 -1
- package/dist/cli/commands/send.js +86 -3
- package/dist/cli/commands/skill.d.ts +2 -1
- package/dist/cli/commands/skill.d.ts.map +1 -1
- package/dist/cli/commands/skill.js +136 -2
- package/dist/cli/commands/task.d.ts +11 -0
- package/dist/cli/commands/task.d.ts.map +1 -0
- package/dist/cli/commands/task.js +126 -0
- package/dist/cli/commands/verify.d.ts +19 -0
- package/dist/cli/commands/verify.d.ts.map +1 -0
- package/dist/cli/commands/verify.js +229 -0
- package/dist/cli/commands/wait.d.ts +2 -0
- package/dist/cli/commands/wait.d.ts.map +1 -1
- package/dist/cli/commands/wait.js +78 -13
- 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 +92 -3
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +6 -0
- package/dist/cli/types/api-responses.d.ts +210 -0
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/types/index.d.ts +88 -0
- package/dist/cli/types/index.d.ts.map +1 -1
- package/dist/cli/types/index.js +30 -1
- package/dist/cli/utils/api-client.d.ts +8 -0
- package/dist/cli/utils/api-client.d.ts.map +1 -1
- package/dist/cli/utils/verify-runner.d.ts +57 -0
- package/dist/cli/utils/verify-runner.d.ts.map +1 -0
- package/dist/cli/utils/verify-runner.js +174 -0
- package/dist/server/server.js +15 -0
- package/dist/server/src/config/auto-yes-config.js +22 -0
- package/dist/server/src/lib/auto-yes-poller.js +34 -2
- package/dist/server/src/lib/auto-yes-state.js +6 -19
- package/dist/server/src/lib/db/db.js +34 -1
- package/dist/server/src/lib/db/migrations/index.js +8 -0
- package/dist/server/src/lib/db/migrations/runner.js +1 -1
- package/dist/server/src/lib/db/migrations/v48-skill-operations-audit-index.js +117 -0
- package/dist/server/src/lib/db/migrations/v49-verification-runs.js +86 -0
- package/dist/server/src/lib/db/migrations/v50-tasks.js +68 -0
- package/dist/server/src/lib/db/migrations/v51-task-events.js +58 -0
- package/dist/server/src/lib/db/task-events-db.js +59 -0
- package/dist/server/src/lib/db/tasks-db.js +218 -0
- package/dist/server/src/lib/db/verification-db.js +272 -0
- package/dist/server/src/lib/polling/auto-yes-policy.js +117 -0
- package/dist/server/src/lib/polling/auto-yes-resolver.js +144 -4
- package/dist/server/src/lib/polling/response-checker.js +8 -0
- package/dist/server/src/lib/session/agent-event-state.js +46 -0
- package/dist/server/src/lib/session/current-output-builder.js +4 -0
- package/dist/server/src/lib/session/status-mapping.js +146 -0
- package/dist/server/src/lib/skills/compatibility-matrix.js +256 -0
- package/dist/server/src/lib/skills/compatibility.js +132 -11
- package/dist/server/src/lib/skills/operation-audit.js +85 -15
- package/dist/server/src/lib/skills/operation-journal.js +14 -1
- package/dist/server/src/lib/tasks/contract-parser.js +385 -0
- package/dist/server/src/lib/tasks/task-state-machine.js +183 -0
- package/dist/server/src/lib/tasks/task-transition-service.js +106 -0
- package/dist/server/src/lib/verification/verification-reconciler.js +49 -0
- package/dist/server/src/types/sidebar.js +7 -20
- package/package.json +5 -2
- package/scripts/hooks/cmate-agent-event.sh +175 -0
- package/.next/server/chunks/1808.js +0 -1
- package/.next/server/chunks/2064.js +0 -2
- package/.next/server/chunks/5226.js +0 -28
- package/.next/server/chunks/5306.js +0 -2
- package/.next/server/chunks/593.js +0 -1
- package/.next/server/chunks/9192.js +0 -1
- package/.next/static/MqlW91_Se_kEW6mtm-1x0/_buildManifest.js +0 -1
- package/.next/static/chunks/3418-7e47651340d940b0.js +0 -1
- package/.next/static/chunks/9142-41b13a2f278529cc.js +0 -1
- package/.next/static/chunks/app/api/app/update/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/app/update-check/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/assistant/conversation/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/assistant/current-output/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/assistant/messages/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/assistant/session/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/assistant/start/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/assistant/terminal/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/assistant/tools/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/auth/login/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/auth/status/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/status/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/external-apps/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/fs/browse/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/fs/recent-paths/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/hooks/claude-done/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/ollama/models/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/push/subscriptions/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/push/vapid/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/todos/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/repositories/excluded/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/repositories/restore/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/repositories/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/repositories/scan/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/repositories/sync/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/repositories/validate-path/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/sidebar/group-order/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/skills/[id]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/skills/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/slash-commands/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/templates/[id]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/templates/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/todos/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/proxy/[...path]/route-8c8bebe20cebf964.js +0 -1
- package/.next/static/chunks/app/repositories/page-3c4fb889da48ce24.js +0 -1
- package/.next/static/chunks/app/skills/[skillId]/page-8c40c9683f242207.js +0 -1
- package/.next/static/chunks/app/skills/page-46242c428ee8bccf.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-6da38f0a06dfd9db.js +0 -1
- /package/.next/static/{MqlW91_Se_kEW6mtm-1x0 → gR8Sh86RrTynJON8SWkWK}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Startup recovery for verification runs orphaned by a restart (Issue #1543).
|
|
4
|
+
*
|
|
5
|
+
* `verification_runs` is opened in `running` state and closed when the gates
|
|
6
|
+
* finish, so a run in flight when the process dies leaves a `running` row that
|
|
7
|
+
* nothing will ever close. Those rows are not merely stale: the per-worktree
|
|
8
|
+
* conflict check treats an open run as "verification in progress", so a single
|
|
9
|
+
* crash would lock that worktree out of verification permanently.
|
|
10
|
+
*
|
|
11
|
+
* Every run this finds is an orphan by construction — gate execution lives in
|
|
12
|
+
* process memory, so after a restart none of them is actually running. They are
|
|
13
|
+
* closed as `error` rather than `failed`: no gate reached a verdict about the
|
|
14
|
+
* work, which is exactly the distinction `error` encodes.
|
|
15
|
+
*
|
|
16
|
+
* Follows the shape of {@link reconcileAllAssistantExecutions}
|
|
17
|
+
* (`src/lib/assistant/non-interactive-execution-reconciler.ts`).
|
|
18
|
+
*
|
|
19
|
+
* @module lib/verification/verification-reconciler
|
|
20
|
+
*/
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.reconcileOrphanVerificationRuns = reconcileOrphanVerificationRuns;
|
|
23
|
+
const db_1 = require("../../lib/db");
|
|
24
|
+
const RECONCILE_NOTE = '[reconciled after server restart: the runner process is gone]';
|
|
25
|
+
/**
|
|
26
|
+
* Close every `running` verification run and its open gate results.
|
|
27
|
+
*
|
|
28
|
+
* @returns counts of what was closed, so startup can log a non-zero recovery
|
|
29
|
+
*/
|
|
30
|
+
function reconcileOrphanVerificationRuns(db) {
|
|
31
|
+
const report = { runs: 0, gates: 0 };
|
|
32
|
+
for (const run of (0, db_1.listRunningVerificationRuns)(db)) {
|
|
33
|
+
const detail = (0, db_1.getVerificationRun)(db, run.id);
|
|
34
|
+
for (const gate of detail?.gates ?? []) {
|
|
35
|
+
if (gate.status !== 'running')
|
|
36
|
+
continue;
|
|
37
|
+
(0, db_1.finishGateResult)(db, gate.id, {
|
|
38
|
+
status: 'error',
|
|
39
|
+
exitCode: null,
|
|
40
|
+
durationMs: null,
|
|
41
|
+
logTail: [gate.logTail, RECONCILE_NOTE].filter(Boolean).join('\n'),
|
|
42
|
+
});
|
|
43
|
+
report.gates += 1;
|
|
44
|
+
}
|
|
45
|
+
(0, db_1.finishVerificationRun)(db, run.id, 'error');
|
|
46
|
+
report.runs += 1;
|
|
47
|
+
}
|
|
48
|
+
return report;
|
|
49
|
+
}
|
|
@@ -5,28 +5,15 @@
|
|
|
5
5
|
* Types for sidebar components and branch status display
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.deriveCliStatus =
|
|
8
|
+
exports.deriveCliStatus = void 0;
|
|
9
9
|
exports.aggregateCliStatus = aggregateCliStatus;
|
|
10
10
|
exports.formatCliStatusBreakdown = formatCliStatusBreakdown;
|
|
11
11
|
exports.calculateHasUnread = calculateHasUnread;
|
|
12
12
|
exports.toBranchItem = toBranchItem;
|
|
13
13
|
const types_1 = require("../lib/cli-tools/types");
|
|
14
14
|
const selected_agents_validator_1 = require("../lib/selected-agents-validator");
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
* Shared by sidebar (toBranchItem) and WorktreeDetailRefactored tab dots.
|
|
18
|
-
*/
|
|
19
|
-
function deriveCliStatus(toolStatus) {
|
|
20
|
-
if (!toolStatus)
|
|
21
|
-
return 'idle';
|
|
22
|
-
if (toolStatus.isWaitingForResponse)
|
|
23
|
-
return 'waiting';
|
|
24
|
-
if (toolStatus.isProcessing)
|
|
25
|
-
return 'running';
|
|
26
|
-
if (toolStatus.isRunning)
|
|
27
|
-
return 'ready';
|
|
28
|
-
return 'idle';
|
|
29
|
-
}
|
|
15
|
+
const status_mapping_1 = require("../lib/session/status-mapping");
|
|
16
|
+
Object.defineProperty(exports, "deriveCliStatus", { enumerable: true, get: function () { return status_mapping_1.deriveCliStatus; } });
|
|
30
17
|
/**
|
|
31
18
|
* Aggregate per-agent CLI statuses into a single representative BranchStatus
|
|
32
19
|
* for the sidebar's single status indicator (Issue #867).
|
|
@@ -140,7 +127,7 @@ function deriveSidebarCliStatus(worktree) {
|
|
|
140
127
|
if (!byInstance) {
|
|
141
128
|
const agents = worktree.selectedAgents ?? selected_agents_validator_1.DEFAULT_SELECTED_AGENTS;
|
|
142
129
|
for (const agent of agents) {
|
|
143
|
-
cliStatus[agent] = deriveCliStatus(worktree.sessionStatusByCli?.[agent]);
|
|
130
|
+
cliStatus[agent] = (0, status_mapping_1.deriveCliStatus)(worktree.sessionStatusByCli?.[agent]);
|
|
144
131
|
cliStatusLabels[agent] = (0, types_1.getCliToolDisplayName)(agent);
|
|
145
132
|
}
|
|
146
133
|
return { cliStatus, cliStatusLabels };
|
|
@@ -152,7 +139,7 @@ function deriveSidebarCliStatus(worktree) {
|
|
|
152
139
|
const rosterIds = new Set();
|
|
153
140
|
for (const instance of roster) {
|
|
154
141
|
rosterIds.add(instance.id);
|
|
155
|
-
cliStatus[instance.id] = deriveCliStatus(byInstance[instance.id]);
|
|
142
|
+
cliStatus[instance.id] = (0, status_mapping_1.deriveCliStatus)(byInstance[instance.id]);
|
|
156
143
|
cliStatusLabels[instance.id] = (0, types_1.getInstanceLabel)(instance);
|
|
157
144
|
}
|
|
158
145
|
// Surface any RUNNING instance missing from the roster (e.g. a `claude`
|
|
@@ -161,7 +148,7 @@ function deriveSidebarCliStatus(worktree) {
|
|
|
161
148
|
for (const [instanceId, status] of Object.entries(byInstance)) {
|
|
162
149
|
if (rosterIds.has(instanceId))
|
|
163
150
|
continue;
|
|
164
|
-
const derived = deriveCliStatus(status);
|
|
151
|
+
const derived = (0, status_mapping_1.deriveCliStatus)(status);
|
|
165
152
|
if (derived === 'idle')
|
|
166
153
|
continue;
|
|
167
154
|
cliStatus[instanceId] = derived;
|
|
@@ -177,7 +164,7 @@ function deriveSidebarCliStatus(worktree) {
|
|
|
177
164
|
*/
|
|
178
165
|
function toBranchItem(worktree) {
|
|
179
166
|
// Issue #608: Derive top-level status from worktree session flags
|
|
180
|
-
const status = deriveCliStatus(worktree.isSessionRunning !== undefined
|
|
167
|
+
const status = (0, status_mapping_1.deriveCliStatus)(worktree.isSessionRunning !== undefined
|
|
181
168
|
? {
|
|
182
169
|
isRunning: worktree.isSessionRunning ?? false,
|
|
183
170
|
isWaitingForResponse: worktree.isWaitingForResponse ?? false,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "commandmate",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.0",
|
|
4
4
|
"description": "A local control plane for agent CLIs — orchestration and visibility for Claude Code, Codex, Gemini CLI, and more across Git worktrees",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude-code",
|
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
".next/",
|
|
33
33
|
"!.next/cache",
|
|
34
34
|
"public/",
|
|
35
|
+
"scripts/hooks/",
|
|
35
36
|
".env.example"
|
|
36
37
|
],
|
|
37
38
|
"scripts": {
|
|
@@ -43,6 +44,7 @@
|
|
|
43
44
|
"prepublishOnly": "npm run build:all",
|
|
44
45
|
"start": "NODE_ENV=production node dist/server/server.js",
|
|
45
46
|
"lint": "eslint src --ext .js,.jsx,.ts,.tsx",
|
|
47
|
+
"check:tracking": "./scripts/check-commandmate-tracking.sh",
|
|
46
48
|
"test": "NODE_ENV=test vitest",
|
|
47
49
|
"test:ui": "NODE_ENV=test vitest --ui",
|
|
48
50
|
"test:coverage": "NODE_ENV=test vitest --coverage",
|
|
@@ -104,7 +106,8 @@
|
|
|
104
106
|
"ws": "^8.18.3",
|
|
105
107
|
"xterm": "^5.3.0",
|
|
106
108
|
"xterm-addon-fit": "^0.8.0",
|
|
107
|
-
"xterm-addon-web-links": "^0.9.0"
|
|
109
|
+
"xterm-addon-web-links": "^0.9.0",
|
|
110
|
+
"yaml": "^2.9.0"
|
|
108
111
|
},
|
|
109
112
|
"devDependencies": {
|
|
110
113
|
"@playwright/test": "^1.56.1",
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# cmate-agent-event.sh — post a structured agent lifecycle event to CommandMate.
|
|
4
|
+
#
|
|
5
|
+
# Wired into an agent CLI's own completion hook (Claude Code `Stop`, Codex
|
|
6
|
+
# `notify`) so the server learns that a turn ended from the agent itself rather
|
|
7
|
+
# than by reading the terminal. See docs/user-guide/agent-event-hooks.md.
|
|
8
|
+
#
|
|
9
|
+
# Written for bash 3.2 — the version macOS still ships — so no associative
|
|
10
|
+
# arrays, `mapfile`, or `${var^^}`.
|
|
11
|
+
#
|
|
12
|
+
# Exits 0 even when the POST fails: a hook that breaks the agent's session
|
|
13
|
+
# because the CommandMate server happens to be down is worse than a missed
|
|
14
|
+
# event. Pass --strict to propagate the failure instead.
|
|
15
|
+
|
|
16
|
+
set -u
|
|
17
|
+
|
|
18
|
+
PROGRAM_NAME="cmate-agent-event.sh"
|
|
19
|
+
|
|
20
|
+
usage() {
|
|
21
|
+
cat <<'USAGE'
|
|
22
|
+
Usage: cmate-agent-event.sh [options] [JSON]
|
|
23
|
+
|
|
24
|
+
Options:
|
|
25
|
+
--tool ID Agent CLI id (default: $CM_AGENT_TOOL, else "claude")
|
|
26
|
+
--event EVENT stop | notification | session_start (default: "stop")
|
|
27
|
+
--cwd PATH Agent working directory (default: $CLAUDE_PROJECT_DIR, else $PWD)
|
|
28
|
+
--session-id ID Opaque agent session id
|
|
29
|
+
--json JSON Hook payload to read cwd/session/event from
|
|
30
|
+
--stdin-json Read that payload from stdin instead
|
|
31
|
+
--url URL Endpoint (default: http://$CM_HOST:$CM_PORT/api/hooks/agent-event)
|
|
32
|
+
--strict Exit non-zero when the POST fails
|
|
33
|
+
-h, --help Show this help
|
|
34
|
+
|
|
35
|
+
Environment:
|
|
36
|
+
CM_HOST Server host (default: 127.0.0.1)
|
|
37
|
+
CM_PORT Server port (default: 3000)
|
|
38
|
+
CM_HOOK_URL Full endpoint URL; overrides CM_HOST/CM_PORT
|
|
39
|
+
CM_AUTH_TOKEN Sent as "Authorization: Bearer <token>" when set
|
|
40
|
+
USAGE
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
die() {
|
|
44
|
+
printf '%s: %s\n' "$PROGRAM_NAME" "$1" >&2
|
|
45
|
+
exit 2
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
# Extract a flat JSON string field. Good enough for the small, machine-generated
|
|
49
|
+
# payloads agent CLIs pass; anything richer belongs in the --cwd flag.
|
|
50
|
+
json_string_field() {
|
|
51
|
+
printf '%s' "$1" | tr -d '\n' |
|
|
52
|
+
sed -n 's/.*"'"$2"'"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p'
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
# Escape a value for embedding in a JSON string literal.
|
|
56
|
+
json_escape() {
|
|
57
|
+
printf '%s' "$1" | sed -e 's/\\/\\\\/g' -e 's/"/\\"/g'
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
# Map an agent's own event name onto the API vocabulary.
|
|
61
|
+
map_event_name() {
|
|
62
|
+
case "$1" in
|
|
63
|
+
Stop|SubagentStop|agent-turn-complete) printf 'stop' ;;
|
|
64
|
+
Notification) printf 'notification' ;;
|
|
65
|
+
SessionStart) printf 'session_start' ;;
|
|
66
|
+
*) printf '' ;;
|
|
67
|
+
esac
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
TOOL="${CM_AGENT_TOOL:-claude}"
|
|
71
|
+
EVENT=""
|
|
72
|
+
CWD=""
|
|
73
|
+
SESSION_ID=""
|
|
74
|
+
HOOK_JSON=""
|
|
75
|
+
READ_STDIN=0
|
|
76
|
+
URL="${CM_HOOK_URL:-}"
|
|
77
|
+
STRICT=0
|
|
78
|
+
|
|
79
|
+
while [ $# -gt 0 ]; do
|
|
80
|
+
case "$1" in
|
|
81
|
+
--tool) [ $# -ge 2 ] || die "--tool requires a value"; TOOL="$2"; shift 2 ;;
|
|
82
|
+
--event) [ $# -ge 2 ] || die "--event requires a value"; EVENT="$2"; shift 2 ;;
|
|
83
|
+
--cwd) [ $# -ge 2 ] || die "--cwd requires a value"; CWD="$2"; shift 2 ;;
|
|
84
|
+
--session-id) [ $# -ge 2 ] || die "--session-id requires a value"; SESSION_ID="$2"; shift 2 ;;
|
|
85
|
+
--json) [ $# -ge 2 ] || die "--json requires a value"; HOOK_JSON="$2"; shift 2 ;;
|
|
86
|
+
--url) [ $# -ge 2 ] || die "--url requires a value"; URL="$2"; shift 2 ;;
|
|
87
|
+
--stdin-json) READ_STDIN=1; shift ;;
|
|
88
|
+
--strict) STRICT=1; shift ;;
|
|
89
|
+
-h|--help) usage; exit 0 ;;
|
|
90
|
+
--) shift; break ;;
|
|
91
|
+
-*) die "unknown option: $1" ;;
|
|
92
|
+
# Codex passes its notify payload as a bare positional argument.
|
|
93
|
+
*) HOOK_JSON="$1"; shift ;;
|
|
94
|
+
esac
|
|
95
|
+
done
|
|
96
|
+
|
|
97
|
+
if [ "$READ_STDIN" -eq 1 ]; then
|
|
98
|
+
HOOK_JSON="$(cat)"
|
|
99
|
+
fi
|
|
100
|
+
|
|
101
|
+
if [ -n "$HOOK_JSON" ]; then
|
|
102
|
+
if [ -z "$EVENT" ]; then
|
|
103
|
+
JSON_EVENT="$(json_string_field "$HOOK_JSON" 'hook_event_name')"
|
|
104
|
+
if [ -z "$JSON_EVENT" ]; then
|
|
105
|
+
JSON_EVENT="$(json_string_field "$HOOK_JSON" 'type')"
|
|
106
|
+
fi
|
|
107
|
+
if [ -n "$JSON_EVENT" ]; then
|
|
108
|
+
EVENT="$(map_event_name "$JSON_EVENT")"
|
|
109
|
+
[ -n "$EVENT" ] || die "unrecognized hook event name: $JSON_EVENT"
|
|
110
|
+
fi
|
|
111
|
+
fi
|
|
112
|
+
if [ -z "$SESSION_ID" ]; then
|
|
113
|
+
SESSION_ID="$(json_string_field "$HOOK_JSON" 'session_id')"
|
|
114
|
+
fi
|
|
115
|
+
if [ -z "$SESSION_ID" ]; then
|
|
116
|
+
SESSION_ID="$(json_string_field "$HOOK_JSON" 'turn-id')"
|
|
117
|
+
fi
|
|
118
|
+
fi
|
|
119
|
+
|
|
120
|
+
[ -n "$EVENT" ] || EVENT="stop"
|
|
121
|
+
|
|
122
|
+
case "$EVENT" in
|
|
123
|
+
stop|notification|session_start) ;;
|
|
124
|
+
*) die "--event must be one of: stop, notification, session_start (got \"$EVENT\")" ;;
|
|
125
|
+
esac
|
|
126
|
+
|
|
127
|
+
[ -n "$TOOL" ] || die "--tool must not be empty"
|
|
128
|
+
|
|
129
|
+
if [ -z "$CWD" ]; then
|
|
130
|
+
CWD="${CM_AGENT_CWD:-}"
|
|
131
|
+
fi
|
|
132
|
+
if [ -z "$CWD" ]; then
|
|
133
|
+
CWD="${CLAUDE_PROJECT_DIR:-}"
|
|
134
|
+
fi
|
|
135
|
+
if [ -z "$CWD" ] && [ -n "$HOOK_JSON" ]; then
|
|
136
|
+
CWD="$(json_string_field "$HOOK_JSON" 'cwd')"
|
|
137
|
+
fi
|
|
138
|
+
if [ -z "$CWD" ]; then
|
|
139
|
+
CWD="$PWD"
|
|
140
|
+
fi
|
|
141
|
+
|
|
142
|
+
case "$CWD" in
|
|
143
|
+
/*) ;;
|
|
144
|
+
*) die "--cwd must be an absolute path (got \"$CWD\")" ;;
|
|
145
|
+
esac
|
|
146
|
+
|
|
147
|
+
if [ -z "$URL" ]; then
|
|
148
|
+
URL="http://${CM_HOST:-127.0.0.1}:${CM_PORT:-3000}/api/hooks/agent-event"
|
|
149
|
+
fi
|
|
150
|
+
|
|
151
|
+
BODY="{\"tool\":\"$(json_escape "$TOOL")\""
|
|
152
|
+
BODY="$BODY,\"event\":\"$(json_escape "$EVENT")\""
|
|
153
|
+
BODY="$BODY,\"cwd\":\"$(json_escape "$CWD")\""
|
|
154
|
+
if [ -n "$SESSION_ID" ]; then
|
|
155
|
+
BODY="$BODY,\"sessionId\":\"$(json_escape "$SESSION_ID")\""
|
|
156
|
+
fi
|
|
157
|
+
BODY="$BODY}"
|
|
158
|
+
|
|
159
|
+
# Token via --header rather than the command line of a subprocess: argv is world
|
|
160
|
+
# readable in `ps` on most systems.
|
|
161
|
+
set -- -fsS -X POST -H 'Content-Type: application/json' --max-time "${CM_HOOK_TIMEOUT:-5}"
|
|
162
|
+
if [ -n "${CM_AUTH_TOKEN:-}" ]; then
|
|
163
|
+
set -- "$@" -H "Authorization: Bearer ${CM_AUTH_TOKEN}"
|
|
164
|
+
fi
|
|
165
|
+
set -- "$@" --data-binary "$BODY" "$URL"
|
|
166
|
+
|
|
167
|
+
if curl "$@" >/dev/null; then
|
|
168
|
+
exit 0
|
|
169
|
+
fi
|
|
170
|
+
|
|
171
|
+
printf '%s: failed to POST %s to %s\n' "$PROGRAM_NAME" "$EVENT" "$URL" >&2
|
|
172
|
+
if [ "$STRICT" -eq 1 ]; then
|
|
173
|
+
exit 1
|
|
174
|
+
fi
|
|
175
|
+
exit 0
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=1808,exports.ids=[1808],exports.modules={3805:(a,b,c)=>{c.d(b,{u:()=>k});var d=c(21124);c(38301);var e=c(71117),f=c(16945),g=c(93983),h=c(35595);let i={info:"bg-info-subtle border-info-border text-info-foreground",warning:"bg-warning-subtle border-warning-border text-warning-foreground",danger:"bg-danger-subtle border-danger-border text-danger-foreground",neutral:"bg-muted border-border text-muted-foreground"},j={info:e.A,warning:f.A,danger:g.A,neutral:e.A};function k({tone:a="neutral",children:b,className:c,"data-testid":e}){let f=j[a];return(0,d.jsxs)("div",{"data-testid":e,className:(0,h.cn)("flex items-start gap-2 rounded-md border px-3 py-2 text-xs leading-relaxed",i[a],c),children:[(0,d.jsx)(f,{size:14,"aria-hidden":"true",className:"mt-0.5 shrink-0"}),(0,d.jsx)("div",{className:"min-w-0",children:b})]})}},27884:(a,b,c)=>{c.d(b,{$d:()=>C,AJ:()=>D,AS:()=>k,Et:()=>h,FW:()=>s,H$:()=>d,IV:()=>z,KL:()=>l,Mj:()=>o,OV:()=>e,RG:()=>y,RO:()=>q,TE:()=>i,e5:()=>v,eK:()=>f,gh:()=>A,hJ:()=>p,kF:()=>n,pP:()=>g,pk:()=>u,r0:()=>B,tC:()=>j,z2:()=>m});let d={compatible:"success",incompatible:"error",unknown:"warning"},e={compatible:"compatibility.status.compatible",incompatible:"compatibility.status.incompatible",unknown:"compatibility.status.unknown"},f={low:"gray",moderate:"warning",high:"error"},g={low:"risk.level.low",moderate:"risk.level.moderate",high:"risk.level.high"},h={native:"success",commandmate_runtime:"info",unsupported:"error",unknown:"warning"},i={SKILL_RECOMMEND_HIGHEST_COMPATIBLE:"detail.recommendation.highestCompatible",SKILL_RECOMMEND_LATEST_UNVERIFIED:"detail.recommendation.latestUnverified",SKILL_RECOMMEND_NONE_COMPATIBLE:"detail.recommendation.noneCompatible",SKILL_RECOMMEND_NO_VERSIONS:"detail.recommendation.noVersions"},j={add:"info",modify:"warning",unchanged:"gray",conflict:"error",unmanaged:"error"},k={add:"plan.change.add",modify:"plan.change.modify",unchanged:"plan.change.unchanged",conflict:"plan.change.conflict",unmanaged:"plan.change.unmanaged"},l={SKILL_DIFF_NEW_FILE:"plan.diffReason.newFile",SKILL_DIFF_CONTENT_IDENTICAL:"plan.diffReason.contentIdentical",SKILL_DIFF_MANAGED_UPDATE:"plan.diffReason.managedUpdate",SKILL_DIFF_LOCAL_MODIFICATION:"plan.diffReason.localModification",SKILL_DIFF_UNMANAGED_SKILL:"plan.diffReason.unmanagedSkill",SKILL_DIFF_RECEIPT_ORPHAN:"plan.diffReason.receiptOrphan",SKILL_DIFF_NOT_A_REGULAR_FILE:"plan.diffReason.notARegularFile"},m={filesystem_read:"plan.permission.filesystemRead",filesystem_write:"plan.permission.filesystemWrite",network_access:"plan.permission.networkAccess",process_execution:"plan.permission.processExecution",environment_read:"plan.permission.environmentRead",credential_access:"plan.permission.credentialAccess"},n={attached:"plan.headState.attached",detached:"plan.headState.detached",unborn:"plan.headState.unborn",unknown:"plan.headState.unknown"},o={remove:"uninstall.disposition.remove",modified:"uninstall.disposition.modified",missing:"uninstall.disposition.missing",unknown:"uninstall.disposition.unknown",irregular:"uninstall.disposition.irregular"},p={SKILL_UNINSTALL_MANAGED_UNCHANGED:"uninstall.reason.managedUnchanged",SKILL_UNINSTALL_LOCAL_MODIFICATION:"uninstall.reason.localModification",SKILL_UNINSTALL_RECEIPT_ORPHAN:"uninstall.reason.receiptOrphan",SKILL_UNINSTALL_UNMANAGED_FILE:"uninstall.reason.unmanagedFile",SKILL_UNINSTALL_NOT_A_REGULAR_FILE:"uninstall.reason.notARegularFile",SKILL_UNINSTALL_NOT_INSTALLED:"uninstall.reason.notInstalled",SKILL_UNINSTALL_RECEIPT_MISSING:"uninstall.reason.receiptMissing",SKILL_UNINSTALL_RECEIPT_UNREADABLE:"uninstall.reason.receiptUnreadable",SKILL_UNINSTALL_RECEIPT_FOREIGN:"uninstall.reason.receiptForeign",SKILL_UNINSTALL_TREE_SCAN_TRUNCATED:"uninstall.reason.treeScanTruncated"},q={SKILL_PREVIEW_DETACHED_HEAD:"plan.warning.detachedHead",SKILL_PREVIEW_UNBORN_HEAD:"plan.warning.unbornHead",SKILL_PREVIEW_HEAD_UNRESOLVED:"plan.warning.headUnresolved",SKILL_PREVIEW_WORKING_TREE_DIRTY:"plan.warning.workingTreeDirty",SKILL_PREVIEW_PATH_GIT_IGNORED:"plan.warning.pathGitIgnored",SKILL_PREVIEW_DIFF_TRUNCATED:"plan.warning.diffTruncated",SKILL_PREVIEW_BINARY_CONTENT:"plan.warning.binaryContent",SKILL_PREVIEW_LINE_ENDING_CRLF:"plan.warning.lineEndingCrlf",SKILL_PREVIEW_TREE_SCAN_TRUNCATED:"plan.warning.treeScanTruncated"},r={SKILL_PLAN_STALE:"operation.error.planStale",SKILL_PLAN_EXPIRED:"operation.error.planExpired",SKILL_PLAN_CONSUMED:"operation.error.planConsumed",SKILL_PLAN_NOT_FOUND:"operation.error.planNotFound",SKILL_PLAN_BINDING_MISMATCH:"operation.error.planBindingMismatch",SKILL_PLAN_NOT_INSTALLABLE:"operation.error.planNotInstallable",SKILL_PLAN_RISK_NOT_ACKNOWLEDGED:"operation.error.planRiskNotAcknowledged",SKILL_INSTALL_LOCKED:"operation.error.installLocked",SKILL_INSTALL_IN_PROGRESS:"operation.error.installInProgress",SKILL_INSTALL_DESTINATION_EXISTS:"operation.error.installDestinationExists",SKILL_INSTALL_DESTINATION_UNMANAGED:"operation.error.installDestinationUnmanaged",SKILL_INSTALL_IDEMPOTENCY_CONFLICT:"operation.error.installIdempotencyConflict",SKILL_INSTALL_FAILED:"operation.error.installFailed",SKILL_UNINSTALL_LOCKED:"operation.error.uninstallLocked",SKILL_UNINSTALL_IN_PROGRESS:"operation.error.uninstallInProgress",SKILL_UNINSTALL_IDEMPOTENCY_CONFLICT:"operation.error.uninstallIdempotencyConflict",SKILL_UNINSTALL_NOT_INSTALLED:"operation.error.uninstallNotInstalled",SKILL_UNINSTALL_BLOCKED:"operation.error.uninstallBlocked",SKILL_UNINSTALL_DRIFT:"operation.error.uninstallDrift",SKILL_UNINSTALL_FILE_CHANGED:"operation.error.uninstallFileChanged",SKILL_UNINSTALL_FAILED:"operation.error.uninstallFailed",SKILL_REQUEST_FAILED:"operation.error.requestFailed"};function s(a){return r[a]??"operation.error.unexpected"}let t={SKILL_CATALOG_FETCH_FAILED:"catalog.reason.fetchFailed",SKILL_CATALOG_RATE_LIMITED:"catalog.reason.rateLimited",SKILL_CATALOG_OVERSIZED:"catalog.reason.oversized",SKILL_CATALOG_MALFORMED:"catalog.reason.malformed",SKILL_CATALOG_INVALID_SCHEMA:"catalog.reason.invalidSchema"};function u(a){return a&&t[a]||"catalog.reason.unknown"}function v(a){return a.startsWith("skills.")?a.slice(7):a}let w=/!\[([^\]]*)\]\([^)]*\)/g,x=/<\/?(?:img|picture|source|video|audio|iframe|embed|object|track)\b[^>]*>/gi;function y(a){return a.replace(w,"$1").replace(x,"")}let z={query:"",compatibility:"all",risk:"all",agent:"all"};function A(a){let b=a.versions.find(b=>b.version===a.recommendedVersion);return(b??a.versions[0])?.declaredRisk??null}function B(a){let b=new Set;for(let c of a.versions)for(let a of c.compatibility.agents)("native"===a.support||"commandmate_runtime"===a.support)&&b.add(a.agent);return[...b].sort()}function C(a,b){return a.filter(a=>!!function(a,b){let c=b.trim().toLowerCase();return 0===c.length||[a.name,a.summary,a.id,a.provider.name,...a.keywords].some(a=>a.toLowerCase().includes(c))}(a,b.query)&&("all"===b.compatibility||a.compatibility?.status===b.compatibility)&&("all"===b.risk||A(a)===b.risk)&&("all"===b.agent||!!B(a).includes(b.agent)))}function D(a){let b=new Set;for(let c of a)for(let a of c.versions)for(let c of a.compatibility.agents)b.add(c.agent);return[...b].sort()}},28593:(a,b,c)=>{c.d(b,{Xz:()=>j,qW:()=>k,uE:()=>l});var d=c(21124);c(38301);var e=c(20481),f=c(93983),g=c(73451),h=c(17252),i=c(27884);function j({status:a,className:b}){let c=(0,e.c)("skills");return(0,d.jsx)(g.Ex,{variant:i.H$[a],className:b,"data-testid":`skill-compatibility-${a}`,children:c(i.OV[a])})}function k({risk:a,className:b}){let c=(0,e.c)("skills");return(0,d.jsxs)(g.Ex,{variant:i.eK[a],className:b,"data-testid":`skill-declared-risk-${a}`,children:["high"===a&&(0,d.jsx)(f.A,{size:12,"aria-hidden":"true",className:"mr-1 shrink-0"}),c("risk.declaredLabel",{level:c(i.pP[a])})]})}function l({agent:a}){let b=(0,e.c)("skills");return(0,d.jsxs)(g.Ex,{variant:i.Et[a.support],"data-testid":`skill-agent-${a.agent}-${a.support}`,children:[(0,h.f_)(a.agent),": ",b((0,i.e5)(a.labelKey))]})}},30156:(a,b,c)=>{c.d(b,{Db:()=>k,E:()=>q,Gj:()=>l,Q6:()=>n,Xi:()=>o,hN:()=>p,s5:()=>j});let d="SKILL_CATALOG_UNREACHABLE",e="SKILL_REQUEST_FAILED";function f(a,b,c){let d=a&&"object"==typeof a?a:{},e={code:!function(a){if(!a||"object"!=typeof a)return!1;let{error:b,code:c}=a;return"string"==typeof b&&"string"==typeof c}(a)?c:a.code,message:"string"==typeof d.error?d.error:"",status:b};return Array.isArray(d.blockers)&&(e.blockers=d.blockers),"string"==typeof d.nextActionKey&&(e.nextActionKey=d.nextActionKey),e}async function g(a,b){let c=await fetch(a,{signal:b,headers:{Accept:"application/json"}}),e=await c.json().catch(()=>null);return c.ok?{ok:!0,data:e}:{ok:!1,failure:f(e,c.status,d)}}async function h(a,b,c){let d=await fetch(a,{method:"POST",signal:c,headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(b)}),g=await d.json().catch(()=>null);return d.ok?{ok:!0,data:g}:{ok:!1,failure:f(g,d.status,e)}}async function i(a,b,c){try{return await a()}catch(a){if(c?.aborted)throw a;return{ok:!1,failure:{code:b,message:a instanceof Error?a.message:"",status:null}}}}function j(a){return i(()=>g("/api/skills",a),d,a)}function k(a,b){return i(()=>g(`/api/skills/${encodeURIComponent(a)}`,b),d,b)}function l(a,b){return i(()=>g(`/api/worktrees/${encodeURIComponent(a)}/skills`,b),e,b)}function m(a,b,c){return`/api/worktrees/${encodeURIComponent(a)}/skills/${encodeURIComponent(b)}/${c}`}function n(a,b,c={},d){let f={};return c.version&&(f.version=c.version),c.acknowledgeRisk&&(f.acknowledgeRisk=!0),i(()=>h(m(a,b,"plan"),f,d),e,d)}function o(a,b,c,d){let f={planToken:c.planToken,version:c.version};return c.acknowledgeRisk&&(f.acknowledgeRisk=!0),c.idempotencyKey&&(f.idempotencyKey=c.idempotencyKey),i(()=>h(m(a,b,"install"),f,d),e,d)}function p(a,b,c){return i(()=>h(m(a,b,"uninstall-plan"),{},c),e,c)}function q(a,b,c,d){let f={planToken:c.planToken};return c.idempotencyKey&&(f.idempotencyKey=c.idempotencyKey),i(()=>h(m(a,b,"uninstall"),f,d),e,d)}}};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=2064,exports.ids=[2064],exports.modules={2400:(a,b,c)=>{let{tokenChars:d}=c(11998);function e(a,b,c){void 0===a[b]?a[b]=[c]:a[b].push(c)}a.exports={format:function(a){return Object.keys(a).map(b=>{let c=a[b];return Array.isArray(c)||(c=[c]),c.map(a=>[b].concat(Object.keys(a).map(b=>{let c=a[b];return Array.isArray(c)||(c=[c]),c.map(a=>!0===a?b:`${b}=${a}`).join("; ")})).join("; ")).join(", ")}).join(", ")},parse:function(a){let b,c,f=Object.create(null),g=Object.create(null),h=!1,i=!1,j=!1,k=-1,l=-1,m=-1,n=0;for(;n<a.length;n++)if(l=a.charCodeAt(n),void 0===b)if(-1===m&&1===d[l])-1===k&&(k=n);else if(0!==n&&(32===l||9===l))-1===m&&-1!==k&&(m=n);else if(59===l||44===l){if(-1===k)throw SyntaxError(`Unexpected character at index ${n}`);-1===m&&(m=n);let c=a.slice(k,m);44===l?(e(f,c,g),g=Object.create(null)):b=c,k=m=-1}else throw SyntaxError(`Unexpected character at index ${n}`);else if(void 0===c)if(-1===m&&1===d[l])-1===k&&(k=n);else if(32===l||9===l)-1===m&&-1!==k&&(m=n);else if(59===l||44===l){if(-1===k)throw SyntaxError(`Unexpected character at index ${n}`);-1===m&&(m=n),e(g,a.slice(k,m),!0),44===l&&(e(f,b,g),g=Object.create(null),b=void 0),k=m=-1}else if(61===l&&-1!==k&&-1===m)c=a.slice(k,n),k=m=-1;else throw SyntaxError(`Unexpected character at index ${n}`);else if(i){if(1!==d[l])throw SyntaxError(`Unexpected character at index ${n}`);-1===k?k=n:h||(h=!0),i=!1}else if(j)if(1===d[l])-1===k&&(k=n);else if(34===l&&-1!==k)j=!1,m=n;else if(92===l)i=!0;else throw SyntaxError(`Unexpected character at index ${n}`);else if(34===l&&61===a.charCodeAt(n-1))j=!0;else if(-1===m&&1===d[l])-1===k&&(k=n);else if(-1!==k&&(32===l||9===l))-1===m&&(m=n);else if(59===l||44===l){if(-1===k)throw SyntaxError(`Unexpected character at index ${n}`);-1===m&&(m=n);let d=a.slice(k,m);h&&(d=d.replace(/\\/g,""),h=!1),e(g,c,d),44===l&&(e(f,b,g),g=Object.create(null),b=void 0),c=void 0,k=m=-1}else throw SyntaxError(`Unexpected character at index ${n}`);if(-1===k||j||32===l||9===l)throw SyntaxError("Unexpected end of input");-1===m&&(m=n);let o=a.slice(k,m);return void 0===b?e(f,o,g):(void 0===c?e(g,o,!0):h?e(g,c,o.replace(/\\/g,"")):e(g,c,o),e(f,b,g)),f}}},3266:(a,b,c)=>{let d=c(94735),e=c(55591),f=c(81630),g=c(91645),h=c(34631),{randomBytes:i,createHash:j}=c(55511),{Duplex:k,Readable:l}=c(27910),{URL:m}=c(79551),n=c(6597),o=c(94740),p=c(64188),{isBlob:q}=c(11998),{BINARY_TYPES:r,CLOSE_TIMEOUT:s,EMPTY_BUFFER:t,GUID:u,kForOnEventAttribute:v,kListener:w,kStatusCode:x,kWebSocket:y,NOOP:z}=c(27768),{EventTarget:{addEventListener:A,removeEventListener:B}}=c(92095),{format:C,parse:D}=c(2400),{toBuffer:E}=c(94100),F=Symbol("kAborted"),G=[8,13],H=["CONNECTING","OPEN","CLOSING","CLOSED"],I=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;class J extends d{constructor(a,b,c){super(),this._binaryType=r[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=t,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=J.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,null!==a?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,void 0===b?b=[]:Array.isArray(b)||("object"==typeof b&&null!==b?(c=b,b=[]):b=[b]),function a(b,c,d,g){let h,k,l,o,p={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:s,protocolVersion:G[1],maxPayload:0x6400000,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...g,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(b._autoPong=p.autoPong,b._closeTimeout=p.closeTimeout,!G.includes(p.protocolVersion))throw RangeError(`Unsupported protocol version: ${p.protocolVersion} (supported versions: ${G.join(", ")})`);if(c instanceof m)h=c;else try{h=new m(c)}catch(a){throw SyntaxError(`Invalid URL: ${c}`)}"http:"===h.protocol?h.protocol="ws:":"https:"===h.protocol&&(h.protocol="wss:"),b._url=h.href;let q="wss:"===h.protocol,r="ws+unix:"===h.protocol;if("ws:"===h.protocol||q||r?r&&!h.pathname?k="The URL's pathname is empty":h.hash&&(k="The URL contains a fragment identifier"):k='The URL\'s protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"',k){let a=SyntaxError(k);if(0!==b._redirects)return void K(b,a);throw a}let t=q?443:80,v=i(16).toString("base64"),w=q?e.request:f.request,x=new Set;if(p.createConnection=p.createConnection||(q?M:L),p.defaultPort=p.defaultPort||t,p.port=h.port||t,p.host=h.hostname.startsWith("[")?h.hostname.slice(1,-1):h.hostname,p.headers={...p.headers,"Sec-WebSocket-Version":p.protocolVersion,"Sec-WebSocket-Key":v,Connection:"Upgrade",Upgrade:"websocket"},p.path=h.pathname+h.search,p.timeout=p.handshakeTimeout,p.perMessageDeflate&&(l=new n(!0!==p.perMessageDeflate?p.perMessageDeflate:{},!1,p.maxPayload),p.headers["Sec-WebSocket-Extensions"]=C({[n.extensionName]:l.offer()})),d.length){for(let a of d){if("string"!=typeof a||!I.test(a)||x.has(a))throw SyntaxError("An invalid or duplicated subprotocol was specified");x.add(a)}p.headers["Sec-WebSocket-Protocol"]=d.join(",")}if(p.origin&&(p.protocolVersion<13?p.headers["Sec-WebSocket-Origin"]=p.origin:p.headers.Origin=p.origin),(h.username||h.password)&&(p.auth=`${h.username}:${h.password}`),r){let a=p.path.split(":");p.socketPath=a[0],p.path=a[1]}if(p.followRedirects){if(0===b._redirects){b._originalIpc=r,b._originalSecure=q,b._originalHostOrSocketPath=r?p.socketPath:h.host;let a=g&&g.headers;if(g={...g,headers:{}},a)for(let[b,c]of Object.entries(a))g.headers[b.toLowerCase()]=c}else if(0===b.listenerCount("redirect")){let a=r?!!b._originalIpc&&p.socketPath===b._originalHostOrSocketPath:!b._originalIpc&&h.host===b._originalHostOrSocketPath;a&&(!b._originalSecure||q)||(delete p.headers.authorization,delete p.headers.cookie,a||delete p.headers.host,p.auth=void 0)}p.auth&&!g.headers.authorization&&(g.headers.authorization="Basic "+Buffer.from(p.auth).toString("base64")),o=b._req=w(p),b._redirects&&b.emit("redirect",b.url,o)}else o=b._req=w(p);p.timeout&&o.on("timeout",()=>{N(b,o,"Opening handshake has timed out")}),o.on("error",a=>{null===o||o[F]||(o=b._req=null,K(b,a))}),o.on("response",e=>{let f=e.headers.location,h=e.statusCode;if(f&&p.followRedirects&&h>=300&&h<400){let e;if(++b._redirects>p.maxRedirects)return void N(b,o,"Maximum redirects exceeded");o.abort();try{e=new m(f,c)}catch(a){K(b,SyntaxError(`Invalid URL: ${f}`));return}a(b,e,d,g)}else b.emit("unexpected-response",o,e)||N(b,o,`Unexpected server response: ${e.statusCode}`)}),o.on("upgrade",(a,c,d)=>{let e;if(b.emit("upgrade",a),b.readyState!==J.CONNECTING)return;o=b._req=null;let f=a.headers.upgrade;if(void 0===f||"websocket"!==f.toLowerCase())return void N(b,c,"Invalid Upgrade header");let g=j("sha1").update(v+u).digest("base64");if(a.headers["sec-websocket-accept"]!==g)return void N(b,c,"Invalid Sec-WebSocket-Accept header");let h=a.headers["sec-websocket-protocol"];if(void 0!==h?x.size?x.has(h)||(e="Server sent an invalid subprotocol"):e="Server sent a subprotocol but none was requested":x.size&&(e="Server sent no subprotocol"),e)return void N(b,c,e);h&&(b._protocol=h);let i=a.headers["sec-websocket-extensions"];if(void 0!==i){let a;if(!l)return void N(b,c,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");try{a=D(i)}catch(a){N(b,c,"Invalid Sec-WebSocket-Extensions header");return}let d=Object.keys(a);if(1!==d.length||d[0]!==n.extensionName)return void N(b,c,"Server indicated an extension that was not requested");try{l.accept(a[n.extensionName])}catch(a){N(b,c,"Invalid Sec-WebSocket-Extensions header");return}b._extensions[n.extensionName]=l}b.setSocket(c,d,{allowSynchronousEvents:p.allowSynchronousEvents,generateMask:p.generateMask,maxPayload:p.maxPayload,skipUTF8Validation:p.skipUTF8Validation})}),p.finishRequest?p.finishRequest(o,b):o.end()}(this,a,b,c)):(this._autoPong=c.autoPong,this._closeTimeout=c.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(a){r.includes(a)&&(this._binaryType=a,this._receiver&&(this._receiver._binaryType=a))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(a,b,c){let d=new o({allowSynchronousEvents:c.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:c.maxPayload,skipUTF8Validation:c.skipUTF8Validation}),e=new p(a,this._extensions,c.generateMask);this._receiver=d,this._sender=e,this._socket=a,d[y]=this,e[y]=this,a[y]=this,d.on("conclude",P),d.on("drain",Q),d.on("error",R),d.on("message",T),d.on("ping",U),d.on("pong",V),e.onerror=X,a.setTimeout&&a.setTimeout(0),a.setNoDelay&&a.setNoDelay(),b.length>0&&a.unshift(b),a.on("close",Z),a.on("data",$),a.on("end",_),a.on("error",aa),this._readyState=J.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=J.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[n.extensionName]&&this._extensions[n.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=J.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(a,b){if(this.readyState!==J.CLOSED){if(this.readyState===J.CONNECTING)return void N(this,this._req,"WebSocket was closed before the connection was established");if(this.readyState===J.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=J.CLOSING,this._sender.close(a,b,!this._isServer,a=>{!a&&(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),Y(this)}}pause(){this.readyState!==J.CONNECTING&&this.readyState!==J.CLOSED&&(this._paused=!0,this._socket.pause())}ping(a,b,c){if(this.readyState===J.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if("function"==typeof a?(c=a,a=b=void 0):"function"==typeof b&&(c=b,b=void 0),"number"==typeof a&&(a=a.toString()),this.readyState!==J.OPEN)return void O(this,a,c);void 0===b&&(b=!this._isServer),this._sender.ping(a||t,b,c)}pong(a,b,c){if(this.readyState===J.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if("function"==typeof a?(c=a,a=b=void 0):"function"==typeof b&&(c=b,b=void 0),"number"==typeof a&&(a=a.toString()),this.readyState!==J.OPEN)return void O(this,a,c);void 0===b&&(b=!this._isServer),this._sender.pong(a||t,b,c)}resume(){this.readyState!==J.CONNECTING&&this.readyState!==J.CLOSED&&(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(a,b,c){if(this.readyState===J.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if("function"==typeof b&&(c=b,b={}),"number"==typeof a&&(a=a.toString()),this.readyState!==J.OPEN)return void O(this,a,c);let d={binary:"string"!=typeof a,mask:!this._isServer,compress:!0,fin:!0,...b};this._extensions[n.extensionName]||(d.compress=!1),this._sender.send(a||t,d,c)}terminate(){if(this.readyState!==J.CLOSED){if(this.readyState===J.CONNECTING)return void N(this,this._req,"WebSocket was closed before the connection was established");this._socket&&(this._readyState=J.CLOSING,this._socket.destroy())}}}function K(a,b){a._readyState=J.CLOSING,a._errorEmitted=!0,a.emit("error",b),a.emitClose()}function L(a){return a.path=a.socketPath,g.connect(a)}function M(a){return a.path=void 0,a.servername||""===a.servername||(a.servername=g.isIP(a.host)?"":a.host),h.connect(a)}function N(a,b,c){a._readyState=J.CLOSING;let d=Error(c);Error.captureStackTrace(d,N),b.setHeader?(b[F]=!0,b.abort(),b.socket&&!b.socket.destroyed&&b.socket.destroy(),process.nextTick(K,a,d)):(b.destroy(d),b.once("error",a.emit.bind(a,"error")),b.once("close",a.emitClose.bind(a)))}function O(a,b,c){if(b){let c=q(b)?b.size:E(b).length;a._socket?a._sender._bufferedBytes+=c:a._bufferedAmount+=c}if(c){let b=Error(`WebSocket is not open: readyState ${a.readyState} (${H[a.readyState]})`);process.nextTick(c,b)}}function P(a,b){let c=this[y];c._closeFrameReceived=!0,c._closeMessage=b,c._closeCode=a,void 0!==c._socket[y]&&(c._socket.removeListener("data",$),process.nextTick(W,c._socket),1005===a?c.close():c.close(a,b))}function Q(){let a=this[y];a.isPaused||a._socket.resume()}function R(a){let b=this[y];void 0!==b._socket[y]&&(b._socket.removeListener("data",$),process.nextTick(W,b._socket),b.close(a[x])),b._errorEmitted||(b._errorEmitted=!0,b.emit("error",a))}function S(){this[y].emitClose()}function T(a,b){this[y].emit("message",a,b)}function U(a){let b=this[y];b._autoPong&&b.pong(a,!this._isServer,z),b.emit("ping",a)}function V(a){this[y].emit("pong",a)}function W(a){a.resume()}function X(a){let b=this[y];b.readyState!==J.CLOSED&&(b.readyState===J.OPEN&&(b._readyState=J.CLOSING,Y(b)),this._socket.end(),b._errorEmitted||(b._errorEmitted=!0,b.emit("error",a)))}function Y(a){a._closeTimer=setTimeout(a._socket.destroy.bind(a._socket),a._closeTimeout)}function Z(){let a=this[y];if(this.removeListener("close",Z),this.removeListener("data",$),this.removeListener("end",_),a._readyState=J.CLOSING,!this._readableState.endEmitted&&!a._closeFrameReceived&&!a._receiver._writableState.errorEmitted&&0!==this._readableState.length){let b=this.read(this._readableState.length);a._receiver.write(b)}a._receiver.end(),this[y]=void 0,clearTimeout(a._closeTimer),a._receiver._writableState.finished||a._receiver._writableState.errorEmitted?a.emitClose():(a._receiver.on("error",S),a._receiver.on("finish",S))}function $(a){this[y]._receiver.write(a)||this.pause()}function _(){let a=this[y];a._readyState=J.CLOSING,a._receiver.end(),this.end()}function aa(){let a=this[y];this.removeListener("error",aa),this.on("error",z),a&&(a._readyState=J.CLOSING,this.destroy())}Object.defineProperty(J,"CONNECTING",{enumerable:!0,value:H.indexOf("CONNECTING")}),Object.defineProperty(J.prototype,"CONNECTING",{enumerable:!0,value:H.indexOf("CONNECTING")}),Object.defineProperty(J,"OPEN",{enumerable:!0,value:H.indexOf("OPEN")}),Object.defineProperty(J.prototype,"OPEN",{enumerable:!0,value:H.indexOf("OPEN")}),Object.defineProperty(J,"CLOSING",{enumerable:!0,value:H.indexOf("CLOSING")}),Object.defineProperty(J.prototype,"CLOSING",{enumerable:!0,value:H.indexOf("CLOSING")}),Object.defineProperty(J,"CLOSED",{enumerable:!0,value:H.indexOf("CLOSED")}),Object.defineProperty(J.prototype,"CLOSED",{enumerable:!0,value:H.indexOf("CLOSED")}),["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(a=>{Object.defineProperty(J.prototype,a,{enumerable:!0})}),["open","error","close","message"].forEach(a=>{Object.defineProperty(J.prototype,`on${a}`,{enumerable:!0,get(){for(let b of this.listeners(a))if(b[v])return b[w];return null},set(b){for(let b of this.listeners(a))if(b[v]){this.removeListener(a,b);break}"function"==typeof b&&this.addEventListener(a,b,{[v]:!0})}})}),J.prototype.addEventListener=A,J.prototype.removeEventListener=B,a.exports=J},3979:function(a,b,c){var d=this&&this.__createBinding||(Object.create?function(a,b,c,d){void 0===d&&(d=c),Object.defineProperty(a,d,{enumerable:!0,get:function(){return b[c]}})}:function(a,b,c,d){void 0===d&&(d=c),a[d]=b[c]}),e=this&&this.__setModuleDefault||(Object.create?function(a,b){Object.defineProperty(a,"default",{enumerable:!0,value:b})}:function(a,b){a.default=b}),f=this&&this.__importStar||function(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)"default"!==c&&Object.prototype.hasOwnProperty.call(a,c)&&d(b,a,c);return e(b,a),b};Object.defineProperty(b,"__esModule",{value:!0}),b.tokenizeClass=b.strToChars=void 0;let g=c(8765),h=f(c(80738));b.strToChars=a=>a.replace(/(\[\\b\])|(\\)?\\(?:u([A-F0-9]{4})|x([A-F0-9]{2})|c([@A-Z[\\\]^?])|([0tnvfr]))/g,(a,b,c,d,e,f,g)=>{if(c)return a;let h=String.fromCharCode(b?8:d?parseInt(d,16):e?parseInt(e,16):f?"@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^ ?".indexOf(f):({0:0,t:9,n:10,v:11,f:12,r:13})[g]);return/[[\]{}^$.|?*+()]/.test(h)?`\\${h}`:h}),b.tokenizeClass=(a,b)=>{var c,d,e,f,i,j,k;let l=[],m,n,o=/\\(?:(w)|(d)|(s)|(W)|(D)|(S))|((?:(?:\\)(.)|([^\]\\]))-(((?:\\)])|(((?:\\)?([^\]])))))|(\])|(?:\\)?([^])/g;for(;null!==(m=o.exec(a));){let a=null!=(k=null!=(j=null!=(i=null!=(f=null!=(e=null!=(d=null!=(c=m[1]&&h.words())?c:m[2]&&h.ints())?d:m[3]&&h.whitespace())?e:m[4]&&h.notWords())?f:m[5]&&h.notInts())?i:m[6]&&h.notWhitespace())?j:m[7]&&{type:g.types.RANGE,from:(m[8]||m[9]).charCodeAt(0),to:(n=m[10]).charCodeAt(n.length-1)})?k:(n=m[16])&&{type:g.types.CHAR,value:n.charCodeAt(0)};if(!a)return[l,o.lastIndex];l.push(a)}throw SyntaxError(`Invalid regular expression: /${b}/: Unterminated character class`)}},6597:(a,b,c)=>{let d,e=c(74075),f=c(94100),g=c(47109),{kStatusCode:h}=c(27768),i=Buffer[Symbol.species],j=Buffer.from([0,0,255,255]),k=Symbol("permessage-deflate"),l=Symbol("total-length"),m=Symbol("callback"),n=Symbol("buffers"),o=Symbol("error");class p{constructor(a,b,c){this._maxPayload=0|c,this._options=a||{},this._threshold=void 0!==this._options.threshold?this._options.threshold:1024,this._isServer=!!b,this._deflate=null,this._inflate=null,this.params=null,d||(d=new g(void 0!==this._options.concurrencyLimit?this._options.concurrencyLimit:10))}static get extensionName(){return"permessage-deflate"}offer(){let a={};return this._options.serverNoContextTakeover&&(a.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(a.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(a.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?a.client_max_window_bits=this._options.clientMaxWindowBits:null==this._options.clientMaxWindowBits&&(a.client_max_window_bits=!0),a}accept(a){return a=this.normalizeParams(a),this.params=this._isServer?this.acceptAsServer(a):this.acceptAsClient(a),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let a=this._deflate[m];this._deflate.close(),this._deflate=null,a&&a(Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(a){let b=this._options,c=a.find(a=>(!1!==b.serverNoContextTakeover||!a.server_no_context_takeover)&&(!a.server_max_window_bits||!1!==b.serverMaxWindowBits&&("number"!=typeof b.serverMaxWindowBits||!(b.serverMaxWindowBits>a.server_max_window_bits)))&&("number"!=typeof b.clientMaxWindowBits||!!a.client_max_window_bits));if(!c)throw Error("None of the extension offers can be accepted");return b.serverNoContextTakeover&&(c.server_no_context_takeover=!0),b.clientNoContextTakeover&&(c.client_no_context_takeover=!0),"number"==typeof b.serverMaxWindowBits&&(c.server_max_window_bits=b.serverMaxWindowBits),"number"==typeof b.clientMaxWindowBits?c.client_max_window_bits=b.clientMaxWindowBits:(!0===c.client_max_window_bits||!1===b.clientMaxWindowBits)&&delete c.client_max_window_bits,c}acceptAsClient(a){let b=a[0];if(!1===this._options.clientNoContextTakeover&&b.client_no_context_takeover)throw Error('Unexpected parameter "client_no_context_takeover"');if(b.client_max_window_bits){if(!1===this._options.clientMaxWindowBits||"number"==typeof this._options.clientMaxWindowBits&&b.client_max_window_bits>this._options.clientMaxWindowBits)throw Error('Unexpected or invalid parameter "client_max_window_bits"')}else"number"==typeof this._options.clientMaxWindowBits&&(b.client_max_window_bits=this._options.clientMaxWindowBits);return b}normalizeParams(a){return a.forEach(a=>{Object.keys(a).forEach(b=>{let c=a[b];if(c.length>1)throw Error(`Parameter "${b}" must have only a single value`);if(c=c[0],"client_max_window_bits"===b){if(!0!==c){let a=+c;if(!Number.isInteger(a)||a<8||a>15)throw TypeError(`Invalid value for parameter "${b}": ${c}`);c=a}else if(!this._isServer)throw TypeError(`Invalid value for parameter "${b}": ${c}`)}else if("server_max_window_bits"===b){let a=+c;if(!Number.isInteger(a)||a<8||a>15)throw TypeError(`Invalid value for parameter "${b}": ${c}`);c=a}else if("client_no_context_takeover"===b||"server_no_context_takeover"===b){if(!0!==c)throw TypeError(`Invalid value for parameter "${b}": ${c}`)}else throw Error(`Unknown parameter "${b}"`);a[b]=c})}),a}decompress(a,b,c){d.add(d=>{this._decompress(a,b,(a,b)=>{d(),c(a,b)})})}compress(a,b,c){d.add(d=>{this._compress(a,b,(a,b)=>{d(),c(a,b)})})}_decompress(a,b,c){let d=this._isServer?"client":"server";if(!this._inflate){let a=`${d}_max_window_bits`,b="number"!=typeof this.params[a]?e.Z_DEFAULT_WINDOWBITS:this.params[a];this._inflate=e.createInflateRaw({...this._options.zlibInflateOptions,windowBits:b}),this._inflate[k]=this,this._inflate[l]=0,this._inflate[n]=[],this._inflate.on("error",s),this._inflate.on("data",r)}this._inflate[m]=c,this._inflate.write(a),b&&this._inflate.write(j),this._inflate.flush(()=>{let a=this._inflate[o];if(a){this._inflate.close(),this._inflate=null,c(a);return}let e=f.concat(this._inflate[n],this._inflate[l]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[l]=0,this._inflate[n]=[],b&&this.params[`${d}_no_context_takeover`]&&this._inflate.reset()),c(null,e)})}_compress(a,b,c){let d=this._isServer?"server":"client";if(!this._deflate){let a=`${d}_max_window_bits`,b="number"!=typeof this.params[a]?e.Z_DEFAULT_WINDOWBITS:this.params[a];this._deflate=e.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:b}),this._deflate[l]=0,this._deflate[n]=[],this._deflate.on("data",q)}this._deflate[m]=c,this._deflate.write(a),this._deflate.flush(e.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let a=f.concat(this._deflate[n],this._deflate[l]);b&&(a=new i(a.buffer,a.byteOffset,a.length-4)),this._deflate[m]=null,this._deflate[l]=0,this._deflate[n]=[],b&&this.params[`${d}_no_context_takeover`]&&this._deflate.reset(),c(null,a)})}}function q(a){this[n].push(a),this[l]+=a.length}function r(a){if(this[l]+=a.length,this[k]._maxPayload<1||this[l]<=this[k]._maxPayload)return void this[n].push(a);this[o]=RangeError("Max payload size exceeded"),this[o].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[o][h]=1009,this.removeListener("data",r),this.reset()}function s(a){if(this[k]._inflate=null,this[o])return void this[m](this[o]);a[h]=1007,this[m](a)}a.exports=p},8765:function(a,b,c){var d=this&&this.__createBinding||(Object.create?function(a,b,c,d){void 0===d&&(d=c),Object.defineProperty(a,d,{enumerable:!0,get:function(){return b[c]}})}:function(a,b,c,d){void 0===d&&(d=c),a[d]=b[c]}),e=this&&this.__exportStar||function(a,b){for(var c in a)"default"===c||Object.prototype.hasOwnProperty.call(b,c)||d(b,a,c)};Object.defineProperty(b,"__esModule",{value:!0}),e(c(54803),b),e(c(59756),b),e(c(33004),b)},11998:(a,b,c)=>{let{isUtf8:d}=c(79428),{hasBlob:e}=c(27768);function f(a){let b=a.length,c=0;for(;c<b;)if((128&a[c])==0)c++;else if((224&a[c])==192){if(c+1===b||(192&a[c+1])!=128||(254&a[c])==192)return!1;c+=2}else if((240&a[c])==224){if(c+2>=b||(192&a[c+1])!=128||(192&a[c+2])!=128||224===a[c]&&(224&a[c+1])==128||237===a[c]&&(224&a[c+1])==160)return!1;c+=3}else{if((248&a[c])!=240||c+3>=b||(192&a[c+1])!=128||(192&a[c+2])!=128||(192&a[c+3])!=128||240===a[c]&&(240&a[c+1])==128||244===a[c]&&a[c+1]>143||a[c]>244)return!1;c+=4}return!0}if(a.exports={isBlob:function(a){return e&&"object"==typeof a&&"function"==typeof a.arrayBuffer&&"string"==typeof a.type&&"function"==typeof a.stream&&("Blob"===a[Symbol.toStringTag]||"File"===a[Symbol.toStringTag])},isValidStatusCode:function(a){return a>=1e3&&a<=1014&&1004!==a&&1005!==a&&1006!==a||a>=3e3&&a<=4999},isValidUTF8:f,tokenChars:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0]},d)a.exports.isValidUTF8=function(a){return a.length<24?f(a):d(a)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let b=c(47990);a.exports.isValidUTF8=function(a){return a.length<32?f(a):b(a)}}catch(a){}},25967:(a,b,c)=>{let{tokenChars:d}=c(11998);a.exports={parse:function(a){let b=new Set,c=-1,e=-1,f=0;for(;f<a.length;f++){let g=a.charCodeAt(f);if(-1===e&&1===d[g])-1===c&&(c=f);else if(0!==f&&(32===g||9===g))-1===e&&-1!==c&&(e=f);else if(44===g){if(-1===c)throw SyntaxError(`Unexpected character at index ${f}`);-1===e&&(e=f);let d=a.slice(c,e);if(b.has(d))throw SyntaxError(`The "${d}" subprotocol is duplicated`);b.add(d),c=e=-1}else throw SyntaxError(`Unexpected character at index ${f}`)}if(-1===c||-1!==e)throw SyntaxError("Unexpected end of input");let g=a.slice(c,f);if(b.has(g))throw SyntaxError(`The "${g}" subprotocol is duplicated`);return b.add(g),b}}},27768:a=>{let b=["nodebuffer","arraybuffer","fragments"],c="undefined"!=typeof Blob;c&&b.push("blob"),a.exports={BINARY_TYPES:b,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:c,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}},33004:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0})},47109:a=>{let b=Symbol("kDone"),c=Symbol("kRun");class d{constructor(a){this[b]=()=>{this.pending--,this[c]()},this.concurrency=a||1/0,this.jobs=[],this.pending=0}add(a){this.jobs.push(a),this[c]()}[c](){if(this.pending!==this.concurrency&&this.jobs.length){let a=this.jobs.shift();this.pending++,a(this[b])}}}a.exports=d},49320:function(a,b,c){var d=this&&this.__createBinding||(Object.create?function(a,b,c,d){void 0===d&&(d=c),Object.defineProperty(a,d,{enumerable:!0,get:function(){return b[c]}})}:function(a,b,c,d){void 0===d&&(d=c),a[d]=b[c]}),e=this&&this.__setModuleDefault||(Object.create?function(a,b){Object.defineProperty(a,"default",{enumerable:!0,value:b})}:function(a,b){a.default=b}),f=this&&this.__importStar||function(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)"default"!==c&&Object.prototype.hasOwnProperty.call(a,c)&&d(b,a,c);return e(b,a),b};Object.defineProperty(b,"__esModule",{value:!0}),b.writeSetTokens=b.setChar=void 0;let g=c(8765),h=f(c(97537));function i(a){return 94===a?"\\^":92===a?"\\\\":93===a?"\\]":45===a?"\\-":String.fromCharCode(a)}function j(a,{lookup:b,len:c}){if(c!==a.length)return!1;let d=b();for(let b of a){if(b.type===g.types.SET)return!1;let a=b.type===g.types.CHAR?b.value:`${b.from}-${b.to}`;if(!d[a])return!1;d[a]=!1}return!0}b.setChar=i,b.writeSetTokens=function a(b,c=!1){if(j(b.set,h.INTS))return b.not?"\\D":"\\d";if(j(b.set,h.WORDS))return b.not?"\\W":"\\w";if(b.not&&j(b.set,h.NOTANYCHAR))return".";if(j(b.set,h.WHITESPACE))return b.not?"\\S":"\\s";let d="";for(let c=0;c<b.set.length;c++){var e;d+=(e=b.set[c]).type===g.types.CHAR?i(e.value):e.type===g.types.RANGE?`${i(e.from)}-${i(e.to)}`:a(e,!0)}let f=`${b.not?"^":""}${d}`;return c?f:`[${f}]`}},54803:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0})},59756:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.types=void 0,function(a){a[a.ROOT=0]="ROOT",a[a.GROUP=1]="GROUP",a[a.POSITION=2]="POSITION",a[a.SET=3]="SET",a[a.RANGE=4]="RANGE",a[a.REPETITION=5]="REPETITION",a[a.REFERENCE=6]="REFERENCE",a[a.CHAR=7]="CHAR"}(b.types||(b.types={}))},63989:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.reconstruct=void 0;let d=c(8765),e=c(49320),f=a=>a.map(b.reconstruct).join(""),g=a=>{if("options"in a)return a.options.map(f).join("|");if("stack"in a)return f(a.stack);throw Error("options or stack must be Root or Group token")};b.reconstruct=a=>{switch(a.type){case d.types.ROOT:return g(a);case d.types.CHAR:{let b=String.fromCharCode(a.value);return(/[[\\{}$^.|?*+()]/.test(b)?"\\":"")+b}case d.types.POSITION:if("^"===a.value||"$"===a.value)return a.value;return`\\${a.value}`;case d.types.REFERENCE:return`\\${a.value}`;case d.types.SET:return e.writeSetTokens(a);case d.types.GROUP:{let b=a.name?`?<${a.name}>`:a.remember?"":a.followedBy?"?=":a.notFollowedBy?"?!":"?:";return`(${b}${g(a)})`}case d.types.REPETITION:{let c,{min:d,max:e}=a;return c=0===d&&1===e?"?":1===d&&e===1/0?"+":0===d&&e===1/0?"*":e===1/0?`{${d},}`:d===e?`{${d}}`:`{${d},${e}}`,`${b.reconstruct(a.value)}${c}`}case d.types.RANGE:return`${e.setChar(a.from)}-${e.setChar(a.to)}`;default:throw Error(`Invalid token type ${a}`)}}},64188:(a,b,c)=>{let d,{Duplex:e}=c(27910),{randomFillSync:f}=c(55511),g=c(6597),{EMPTY_BUFFER:h,kWebSocket:i,NOOP:j}=c(27768),{isBlob:k,isValidStatusCode:l}=c(11998),{mask:m,toBuffer:n}=c(94100),o=Symbol("kByteLength"),p=Buffer.alloc(4),q=8192;class r{constructor(a,b,c){this._extensions=b||{},c&&(this._generateMask=c,this._maskBuffer=Buffer.alloc(4)),this._socket=a,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=0,this.onerror=j,this[i]=void 0}static frame(a,b){let c,e,g=!1,h=2,i=!1;b.mask&&(c=b.maskBuffer||p,b.generateMask?b.generateMask(c):(8192===q&&(void 0===d&&(d=Buffer.alloc(8192)),f(d,0,8192),q=0),c[0]=d[q++],c[1]=d[q++],c[2]=d[q++],c[3]=d[q++]),i=(c[0]|c[1]|c[2]|c[3])==0,h=6),"string"==typeof a?e=(!b.mask||i)&&void 0!==b[o]?b[o]:(a=Buffer.from(a)).length:(e=a.length,g=b.mask&&b.readOnly&&!i);let j=e;e>=65536?(h+=8,j=127):e>125&&(h+=2,j=126);let k=Buffer.allocUnsafe(g?e+h:h);return(k[0]=b.fin?128|b.opcode:b.opcode,b.rsv1&&(k[0]|=64),k[1]=j,126===j?k.writeUInt16BE(e,2):127===j&&(k[2]=k[3]=0,k.writeUIntBE(e,4,6)),b.mask)?(k[1]|=128,k[h-4]=c[0],k[h-3]=c[1],k[h-2]=c[2],k[h-1]=c[3],i)?[k,a]:g?(m(a,c,k,h,e),[k]):(m(a,c,a,0,e),[k,a]):[k,a]}close(a,b,c,d){let e;if(void 0===a)e=h;else if("number"==typeof a&&l(a))if(void 0!==b&&b.length){let c=Buffer.byteLength(b);if(c>123)throw RangeError("The message must not be greater than 123 bytes");(e=Buffer.allocUnsafe(2+c)).writeUInt16BE(a,0),"string"==typeof b?e.write(b,2):e.set(b,2)}else(e=Buffer.allocUnsafe(2)).writeUInt16BE(a,0);else throw TypeError("First argument must be a valid error code number");let f={[o]:e.length,fin:!0,generateMask:this._generateMask,mask:c,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};0!==this._state?this.enqueue([this.dispatch,e,!1,f,d]):this.sendFrame(r.frame(e,f),d)}ping(a,b,c){let d,e;if("string"==typeof a?(d=Buffer.byteLength(a),e=!1):k(a)?(d=a.size,e=!1):(d=(a=n(a)).length,e=n.readOnly),d>125)throw RangeError("The data size must not be greater than 125 bytes");let f={[o]:d,fin:!0,generateMask:this._generateMask,mask:b,maskBuffer:this._maskBuffer,opcode:9,readOnly:e,rsv1:!1};k(a)?0!==this._state?this.enqueue([this.getBlobData,a,!1,f,c]):this.getBlobData(a,!1,f,c):0!==this._state?this.enqueue([this.dispatch,a,!1,f,c]):this.sendFrame(r.frame(a,f),c)}pong(a,b,c){let d,e;if("string"==typeof a?(d=Buffer.byteLength(a),e=!1):k(a)?(d=a.size,e=!1):(d=(a=n(a)).length,e=n.readOnly),d>125)throw RangeError("The data size must not be greater than 125 bytes");let f={[o]:d,fin:!0,generateMask:this._generateMask,mask:b,maskBuffer:this._maskBuffer,opcode:10,readOnly:e,rsv1:!1};k(a)?0!==this._state?this.enqueue([this.getBlobData,a,!1,f,c]):this.getBlobData(a,!1,f,c):0!==this._state?this.enqueue([this.dispatch,a,!1,f,c]):this.sendFrame(r.frame(a,f),c)}send(a,b,c){let d,e,f=this._extensions[g.extensionName],h=b.binary?2:1,i=b.compress;"string"==typeof a?(d=Buffer.byteLength(a),e=!1):k(a)?(d=a.size,e=!1):(d=(a=n(a)).length,e=n.readOnly),this._firstFragment?(this._firstFragment=!1,i&&f&&f.params[f._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(i=d>=f._threshold),this._compress=i):(i=!1,h=0),b.fin&&(this._firstFragment=!0);let j={[o]:d,fin:b.fin,generateMask:this._generateMask,mask:b.mask,maskBuffer:this._maskBuffer,opcode:h,readOnly:e,rsv1:i};k(a)?0!==this._state?this.enqueue([this.getBlobData,a,this._compress,j,c]):this.getBlobData(a,this._compress,j,c):0!==this._state?this.enqueue([this.dispatch,a,this._compress,j,c]):this.dispatch(a,this._compress,j,c)}getBlobData(a,b,c,d){this._bufferedBytes+=c[o],this._state=2,a.arrayBuffer().then(a=>{if(this._socket.destroyed){let a=Error("The socket was closed while the blob was being read");process.nextTick(s,this,a,d);return}this._bufferedBytes-=c[o];let e=n(a);b?this.dispatch(e,b,c,d):(this._state=0,this.sendFrame(r.frame(e,c),d),this.dequeue())}).catch(a=>{process.nextTick(t,this,a,d)})}dispatch(a,b,c,d){if(!b)return void this.sendFrame(r.frame(a,c),d);let e=this._extensions[g.extensionName];this._bufferedBytes+=c[o],this._state=1,e.compress(a,c.fin,(a,b)=>{if(this._socket.destroyed)return void s(this,Error("The socket was closed while data was being compressed"),d);this._bufferedBytes-=c[o],this._state=0,c.readOnly=!1,this.sendFrame(r.frame(b,c),d),this.dequeue()})}dequeue(){for(;0===this._state&&this._queue.length;){let a=this._queue.shift();this._bufferedBytes-=a[3][o],Reflect.apply(a[0],this,a.slice(1))}}enqueue(a){this._bufferedBytes+=a[3][o],this._queue.push(a)}sendFrame(a,b){2===a.length?(this._socket.cork(),this._socket.write(a[0]),this._socket.write(a[1],b),this._socket.uncork()):this._socket.write(a[0],b)}}function s(a,b,c){"function"==typeof c&&c(b);for(let c=0;c<a._queue.length;c++){let d=a._queue[c],e=d[d.length-1];"function"==typeof e&&e(b)}}function t(a,b,c){s(a,b,c),a.onerror(b)}a.exports=r},67851:function(a,b,c){var d=this&&this.__createBinding||(Object.create?function(a,b,c,d){void 0===d&&(d=c),Object.defineProperty(a,d,{enumerable:!0,get:function(){return b[c]}})}:function(a,b,c,d){void 0===d&&(d=c),a[d]=b[c]}),e=this&&this.__exportStar||function(a,b){for(var c in a)"default"===c||Object.prototype.hasOwnProperty.call(b,c)||d(b,a,c)};Object.defineProperty(b,"__esModule",{value:!0}),b.types=void 0;let f=c(8765);Object.defineProperty(b,"types",{enumerable:!0,get:function(){return f.types}}),e(c(91446),b),e(c(63989),b);let g=c(91446),h=c(63989);e(c(8765),b),b.default=g.tokenizer,a.exports=g.tokenizer,a.exports.types=f.types,a.exports.reconstruct=h.reconstruct},77536:(a,b,c)=>{let d=c(94735),e=c(81630),{Duplex:f}=c(27910),{createHash:g}=c(55511),h=c(2400),i=c(6597),j=c(25967),k=c(3266),{CLOSE_TIMEOUT:l,GUID:m,kWebSocket:n}=c(27768),o=/^[+/0-9A-Za-z]{22}==$/;class p extends d{constructor(a,b){if(super(),null==(a={allowSynchronousEvents:!0,autoPong:!0,maxPayload:0x6400000,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:l,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:k,...a}).port&&!a.server&&!a.noServer||null!=a.port&&(a.server||a.noServer)||a.server&&a.noServer)throw TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(null!=a.port?(this._server=e.createServer((a,b)=>{let c=e.STATUS_CODES[426];b.writeHead(426,{"Content-Length":c.length,"Content-Type":"text/plain"}),b.end(c)}),this._server.listen(a.port,a.host,a.backlog,b)):a.server&&(this._server=a.server),this._server){let a=this.emit.bind(this,"connection");this._removeListeners=function(a,b){for(let c of Object.keys(b))a.on(c,b[c]);return function(){for(let c of Object.keys(b))a.removeListener(c,b[c])}}(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(b,c,d)=>{this.handleUpgrade(b,c,d,a)}})}!0===a.perMessageDeflate&&(a.perMessageDeflate={}),a.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=a,this._state=0}address(){if(this.options.noServer)throw Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(a){if(2===this._state){a&&this.once("close",()=>{a(Error("The server is not running"))}),process.nextTick(q,this);return}if(a&&this.once("close",a),1!==this._state)if(this._state=1,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients&&this.clients.size?this._shouldEmitClose=!0:process.nextTick(q,this);else{let a=this._server;this._removeListeners(),this._removeListeners=this._server=null,a.close(()=>{q(this)})}}shouldHandle(a){if(this.options.path){let b=a.url.indexOf("?");if((-1!==b?a.url.slice(0,b):a.url)!==this.options.path)return!1}return!0}handleUpgrade(a,b,c,d){b.on("error",r);let e=a.headers["sec-websocket-key"],f=a.headers.upgrade,g=+a.headers["sec-websocket-version"];if("GET"!==a.method)return void t(this,a,b,405,"Invalid HTTP method");if(void 0===f||"websocket"!==f.toLowerCase())return void t(this,a,b,400,"Invalid Upgrade header");if(void 0===e||!o.test(e))return void t(this,a,b,400,"Missing or invalid Sec-WebSocket-Key header");if(13!==g&&8!==g)return void t(this,a,b,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});if(!this.shouldHandle(a))return void s(b,400);let k=a.headers["sec-websocket-protocol"],l=new Set;if(void 0!==k)try{l=j.parse(k)}catch(c){t(this,a,b,400,"Invalid Sec-WebSocket-Protocol header");return}let m=a.headers["sec-websocket-extensions"],n={};if(this.options.perMessageDeflate&&void 0!==m){let c=new i(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let a=h.parse(m);a[i.extensionName]&&(c.accept(a[i.extensionName]),n[i.extensionName]=c)}catch(c){t(this,a,b,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let f={origin:a.headers[`${8===g?"sec-websocket-origin":"origin"}`],secure:!!(a.socket.authorized||a.socket.encrypted),req:a};if(2===this.options.verifyClient.length)return void this.options.verifyClient(f,(f,g,h,i)=>{if(!f)return s(b,g||401,h,i);this.completeUpgrade(n,e,l,a,b,c,d)});if(!this.options.verifyClient(f))return s(b,401)}this.completeUpgrade(n,e,l,a,b,c,d)}completeUpgrade(a,b,c,d,e,f,j){if(!e.readable||!e.writable)return e.destroy();if(e[n])throw Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>0)return s(e,503);let k=g("sha1").update(b+m).digest("base64"),l=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${k}`],o=new this.options.WebSocket(null,void 0,this.options);if(c.size){let a=this.options.handleProtocols?this.options.handleProtocols(c,d):c.values().next().value;a&&(l.push(`Sec-WebSocket-Protocol: ${a}`),o._protocol=a)}if(a[i.extensionName]){let b=a[i.extensionName].params,c=h.format({[i.extensionName]:[b]});l.push(`Sec-WebSocket-Extensions: ${c}`),o._extensions=a}this.emit("headers",l,d),e.write(l.concat("\r\n").join("\r\n")),e.removeListener("error",r),o.setSocket(e,f,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(o),o.on("close",()=>{this.clients.delete(o),this._shouldEmitClose&&!this.clients.size&&process.nextTick(q,this)})),j(o,d)}}function q(a){a._state=2,a.emit("close")}function r(){this.destroy()}function s(a,b,c,d){c=c||e.STATUS_CODES[b],d={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(c),...d},a.once("finish",a.destroy),a.end(`HTTP/1.1 ${b} ${e.STATUS_CODES[b]}\r
|
|
2
|
-
`+Object.keys(d).map(a=>`${a}: ${d[a]}`).join("\r\n")+"\r\n\r\n"+c)}function t(a,b,c,d,e,f){if(a.listenerCount("wsClientError")){let d=Error(e);Error.captureStackTrace(d,t),a.emit("wsClientError",d,c,b)}else s(c,d,e,f)}a.exports=p},80738:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.anyChar=b.notWhitespace=b.whitespace=b.notInts=b.ints=b.notWords=b.words=void 0;let d=c(8765),e=()=>[{type:d.types.RANGE,from:48,to:57}],f=()=>[{type:d.types.CHAR,value:95},{type:d.types.RANGE,from:97,to:122},{type:d.types.RANGE,from:65,to:90},{type:d.types.RANGE,from:48,to:57}],g=()=>[{type:d.types.CHAR,value:9},{type:d.types.CHAR,value:10},{type:d.types.CHAR,value:11},{type:d.types.CHAR,value:12},{type:d.types.CHAR,value:13},{type:d.types.CHAR,value:32},{type:d.types.CHAR,value:160},{type:d.types.CHAR,value:5760},{type:d.types.RANGE,from:8192,to:8202},{type:d.types.CHAR,value:8232},{type:d.types.CHAR,value:8233},{type:d.types.CHAR,value:8239},{type:d.types.CHAR,value:8287},{type:d.types.CHAR,value:12288},{type:d.types.CHAR,value:65279}];b.words=()=>({type:d.types.SET,set:f(),not:!1}),b.notWords=()=>({type:d.types.SET,set:f(),not:!0}),b.ints=()=>({type:d.types.SET,set:e(),not:!1}),b.notInts=()=>({type:d.types.SET,set:e(),not:!0}),b.whitespace=()=>({type:d.types.SET,set:g(),not:!1}),b.notWhitespace=()=>({type:d.types.SET,set:g(),not:!0}),b.anyChar=()=>({type:d.types.SET,set:[{type:d.types.CHAR,value:10},{type:d.types.CHAR,value:13},{type:d.types.CHAR,value:8232},{type:d.types.CHAR,value:8233}],not:!0})},81503:(a,b,c)=>{c.d(b,{kb:()=>d}),c(91909),c(94740),c(64188);var d=c(3266);c(77536)},82366:(a,b,c)=>{let d=c(67851),{types:e}=c(67851);function f(a,b){var c;let f={reps:0,limit:b?.limit??25};(c=a,"[object RegExp]"===Object.prototype.toString.call(c))?a=a.source:"string"!=typeof a&&(a=String(a));try{return function a(b,c,d){let f,g;if(b.type===e.REPETITION&&(d++,c.reps++,d>1||c.reps>c.limit))return!1;if(b.options){for(f=0,g=b.options.length;f<g;f++)if(!a({stack:b.options[f]},c,d))return!1}let h=b.stack||b.value?.stack;if(!h)return!0;for(f=0,g=h.length;f<g;f++)if(!a(h[f],c,d))return!1;return!0}(d(a),f,0)}catch{return!1}}a.exports=f,a.exports.default=f,a.exports.safeRegex=f},91446:function(a,b,c){var d=this&&this.__createBinding||(Object.create?function(a,b,c,d){void 0===d&&(d=c),Object.defineProperty(a,d,{enumerable:!0,get:function(){return b[c]}})}:function(a,b,c,d){void 0===d&&(d=c),a[d]=b[c]}),e=this&&this.__setModuleDefault||(Object.create?function(a,b){Object.defineProperty(a,"default",{enumerable:!0,value:b})}:function(a,b){a.default=b}),f=this&&this.__importStar||function(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)"default"!==c&&Object.prototype.hasOwnProperty.call(a,c)&&d(b,a,c);return e(b,a),b};Object.defineProperty(b,"__esModule",{value:!0}),b.tokenizer=void 0;let g=f(c(3979)),h=c(8765),i=f(c(80738)),j=/^[a-zA-Z_$]$/i,k=/^[a-zA-Z0-9_$]$/i,l=/\d/;b.tokenizer=a=>{let b=0,c,d={type:h.types.ROOT,stack:[]},e=d,f=d.stack,m=[],n=[],o=0,p=b=>{throw SyntaxError(`Invalid regular expression: /${a}/: Nothing to repeat at column ${b-1}`)},q=g.strToChars(a);for(;b<q.length;)switch(c=q[b++]){case"\\":if(b===q.length)throw SyntaxError(`Invalid regular expression: /${a}/: \\ at end of pattern`);switch(c=q[b++]){case"b":f.push({type:h.types.POSITION,value:"b"});break;case"B":f.push({type:h.types.POSITION,value:"B"});break;case"w":f.push(i.words());break;case"W":f.push(i.notWords());break;case"d":f.push(i.ints());break;case"D":f.push(i.notInts());break;case"s":f.push(i.whitespace());break;case"S":f.push(i.notWhitespace());break;default:if(l.test(c)){let a=c;for(;b<q.length&&l.test(q[b]);)a+=q[b++];let d=parseInt(a,10),e={type:h.types.REFERENCE,value:d};f.push(e),n.push({reference:e,stack:f,index:f.length-1})}else f.push({type:h.types.CHAR,value:c.charCodeAt(0)})}break;case"^":f.push({type:h.types.POSITION,value:"^"});break;case"$":f.push({type:h.types.POSITION,value:"$"});break;case"[":{let c;"^"===q[b]?(c=!0,b++):c=!1;let d=g.tokenizeClass(q.slice(b),a);b+=d[1],f.push({type:h.types.SET,set:d[0],not:c});break}case".":f.push(i.anyChar());break;case"(":{let d={type:h.types.GROUP,stack:[],remember:!0};if("?"===q[b])if(c=q[b+1],b+=2,"="===c)d.followedBy=!0,d.remember=!1;else if("!"===c)d.notFollowedBy=!0,d.remember=!1;else if("<"===c){let c="";if(j.test(q[b]))c+=q[b],b++;else throw SyntaxError(`Invalid regular expression: /${a}/: Invalid capture group name, character '${q[b]}' after '<' at column ${b+1}`);for(;b<q.length&&k.test(q[b]);)c+=q[b],b++;if(!c)throw SyntaxError(`Invalid regular expression: /${a}/: Invalid capture group name, character '${q[b]}' after '<' at column ${b+1}`);if(">"!==q[b])throw SyntaxError(`Invalid regular expression: /${a}/: Unclosed capture group name, expected '>', found '${q[b]}' at column ${b+1}`);d.name=c,b++}else if(":"===c)d.remember=!1;else throw SyntaxError(`Invalid regular expression: /${a}/: Invalid group, character '${c}' after '?' at column ${b-1}`);else o+=1;f.push(d),m.push(e),e=d,f=d.stack;break}case")":if(0===m.length)throw SyntaxError(`Invalid regular expression: /${a}/: Unmatched ) at column ${b-1}`);f=(e=m.pop()).options?e.options[e.options.length-1]:e.stack;break;case"|":{e.options||(e.options=[e.stack],delete e.stack);let a=[];e.options.push(a),f=a;break}case"{":{let a=/^(\d+)(,(\d+)?)?\}/.exec(q.slice(b)),c,d;null!==a?(0===f.length&&p(b),c=parseInt(a[1],10),d=a[2]?a[3]?parseInt(a[3],10):1/0:c,b+=a[0].length,f.push({type:h.types.REPETITION,min:c,max:d,value:f.pop()})):f.push({type:h.types.CHAR,value:123});break}case"?":0===f.length&&p(b),f.push({type:h.types.REPETITION,min:0,max:1,value:f.pop()});break;case"+":0===f.length&&p(b),f.push({type:h.types.REPETITION,min:1,max:1/0,value:f.pop()});break;case"*":0===f.length&&p(b),f.push({type:h.types.REPETITION,min:0,max:1/0,value:f.pop()});break;default:f.push({type:h.types.CHAR,value:c.charCodeAt(0)})}if(0!==m.length)throw SyntaxError(`Invalid regular expression: /${a}/: Unterminated group`);return function(a,b){for(let c of a.reverse())if(b<c.reference.value){c.reference.type=h.types.CHAR;let a=c.reference.value.toString();if(c.reference.value=parseInt(a,8),!/^[0-7]+$/.test(a)){let b=0;for(;"8"!==a[b]&&"9"!==a[b];)b+=1;if(0===b?(c.reference.value=a.charCodeAt(0),b+=1):c.reference.value=parseInt(a.slice(0,b),8),a.length>b){let d=c.stack.splice(c.index+1);for(let d of a.slice(b))c.stack.push({type:h.types.CHAR,value:d.charCodeAt(0)});c.stack.push(...d)}}}}(n,o),d}},91909:(a,b,c)=>{c(3266);let{Duplex:d}=c(27910);function e(a){a.emit("close")}function f(){!this.destroyed&&this._writableState.finished&&this.destroy()}function g(a){this.removeListener("error",g),this.destroy(),0===this.listenerCount("error")&&this.emit("error",a)}a.exports=function(a,b){let c=!0,h=new d({...b,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return a.on("message",function(b,c){let d=!c&&h._readableState.objectMode?b.toString():b;h.push(d)||a.pause()}),a.once("error",function(a){h.destroyed||(c=!1,h.destroy(a))}),a.once("close",function(){h.destroyed||h.push(null)}),h._destroy=function(b,d){if(a.readyState===a.CLOSED){d(b),process.nextTick(e,h);return}let f=!1;a.once("error",function(a){f=!0,d(a)}),a.once("close",function(){f||d(b),process.nextTick(e,h)}),c&&a.terminate()},h._final=function(b){if(a.readyState===a.CONNECTING)return void a.once("open",function(){h._final(b)});null!==a._socket&&(a._socket._writableState.finished?(b(),h._readableState.endEmitted&&h.destroy()):(a._socket.once("finish",function(){b()}),a.close()))},h._read=function(){a.isPaused&&a.resume()},h._write=function(b,c,d){if(a.readyState===a.CONNECTING)return void a.once("open",function(){h._write(b,c,d)});a.send(b,d)},h.on("end",f),h.on("error",g),h}},92095:(a,b,c)=>{let{kForOnEventAttribute:d,kListener:e}=c(27768),f=Symbol("kCode"),g=Symbol("kData"),h=Symbol("kError"),i=Symbol("kMessage"),j=Symbol("kReason"),k=Symbol("kTarget"),l=Symbol("kType"),m=Symbol("kWasClean");class n{constructor(a){this[k]=null,this[l]=a}get target(){return this[k]}get type(){return this[l]}}Object.defineProperty(n.prototype,"target",{enumerable:!0}),Object.defineProperty(n.prototype,"type",{enumerable:!0});class o extends n{constructor(a,b={}){super(a),this[f]=void 0===b.code?0:b.code,this[j]=void 0===b.reason?"":b.reason,this[m]=void 0!==b.wasClean&&b.wasClean}get code(){return this[f]}get reason(){return this[j]}get wasClean(){return this[m]}}Object.defineProperty(o.prototype,"code",{enumerable:!0}),Object.defineProperty(o.prototype,"reason",{enumerable:!0}),Object.defineProperty(o.prototype,"wasClean",{enumerable:!0});class p extends n{constructor(a,b={}){super(a),this[h]=void 0===b.error?null:b.error,this[i]=void 0===b.message?"":b.message}get error(){return this[h]}get message(){return this[i]}}Object.defineProperty(p.prototype,"error",{enumerable:!0}),Object.defineProperty(p.prototype,"message",{enumerable:!0});class q extends n{constructor(a,b={}){super(a),this[g]=void 0===b.data?null:b.data}get data(){return this[g]}}function r(a,b,c){"object"==typeof a&&a.handleEvent?a.handleEvent.call(a,c):a.call(b,c)}Object.defineProperty(q.prototype,"data",{enumerable:!0}),a.exports={CloseEvent:o,ErrorEvent:p,Event:n,EventTarget:{addEventListener(a,b,c={}){let f;for(let f of this.listeners(a))if(!c[d]&&f[e]===b&&!f[d])return;if("message"===a)f=function(a,c){let d=new q("message",{data:c?a:a.toString()});d[k]=this,r(b,this,d)};else if("close"===a)f=function(a,c){let d=new o("close",{code:a,reason:c.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});d[k]=this,r(b,this,d)};else if("error"===a)f=function(a){let c=new p("error",{error:a,message:a.message});c[k]=this,r(b,this,c)};else{if("open"!==a)return;f=function(){let a=new n("open");a[k]=this,r(b,this,a)}}f[d]=!!c[d],f[e]=b,c.once?this.once(a,f):this.on(a,f)},removeEventListener(a,b){for(let c of this.listeners(a))if(c[e]===b&&!c[d]){this.removeListener(a,c);break}}},MessageEvent:q}},94100:(a,b,c)=>{let{EMPTY_BUFFER:d}=c(27768),e=Buffer[Symbol.species];function f(a,b,c,d,e){for(let f=0;f<e;f++)c[d+f]=a[f]^b[3&f]}function g(a,b){for(let c=0;c<a.length;c++)a[c]^=b[3&c]}function h(a){let b;return(h.readOnly=!0,Buffer.isBuffer(a))?a:(a instanceof ArrayBuffer?b=new e(a):ArrayBuffer.isView(a)?b=new e(a.buffer,a.byteOffset,a.byteLength):(b=Buffer.from(a),h.readOnly=!1),b)}if(a.exports={concat:function(a,b){if(0===a.length)return d;if(1===a.length)return a[0];let c=Buffer.allocUnsafe(b),f=0;for(let b=0;b<a.length;b++){let d=a[b];c.set(d,f),f+=d.length}return f<b?new e(c.buffer,c.byteOffset,f):c},mask:f,toArrayBuffer:function(a){return a.length===a.buffer.byteLength?a.buffer:a.buffer.slice(a.byteOffset,a.byteOffset+a.length)},toBuffer:h,unmask:g},!process.env.WS_NO_BUFFER_UTIL)try{let b=c(39727);a.exports.mask=function(a,c,d,e,g){g<48?f(a,c,d,e,g):b.mask(a,c,d,e,g)},a.exports.unmask=function(a,c){a.length<32?g(a,c):b.unmask(a,c)}}catch(a){}},94740:(a,b,c)=>{let{Writable:d}=c(27910),e=c(6597),{BINARY_TYPES:f,EMPTY_BUFFER:g,kStatusCode:h,kWebSocket:i}=c(27768),{concat:j,toArrayBuffer:k,unmask:l}=c(94100),{isValidStatusCode:m,isValidUTF8:n}=c(11998),o=Buffer[Symbol.species];class p extends d{constructor(a={}){super(),this._allowSynchronousEvents=void 0===a.allowSynchronousEvents||a.allowSynchronousEvents,this._binaryType=a.binaryType||f[0],this._extensions=a.extensions||{},this._isServer=!!a.isServer,this._maxPayload=0|a.maxPayload,this._skipUTF8Validation=!!a.skipUTF8Validation,this[i]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=0}_write(a,b,c){if(8===this._opcode&&0==this._state)return c();this._bufferedBytes+=a.length,this._buffers.push(a),this.startLoop(c)}consume(a){if(this._bufferedBytes-=a,a===this._buffers[0].length)return this._buffers.shift();if(a<this._buffers[0].length){let b=this._buffers[0];return this._buffers[0]=new o(b.buffer,b.byteOffset+a,b.length-a),new o(b.buffer,b.byteOffset,a)}let b=Buffer.allocUnsafe(a);do{let c=this._buffers[0],d=b.length-a;a>=c.length?b.set(this._buffers.shift(),d):(b.set(new Uint8Array(c.buffer,c.byteOffset,a),d),this._buffers[0]=new o(c.buffer,c.byteOffset+a,c.length-a)),a-=c.length}while(a>0);return b}startLoop(a){this._loop=!0;do switch(this._state){case 0:this.getInfo(a);break;case 1:this.getPayloadLength16(a);break;case 2:this.getPayloadLength64(a);break;case 3:this.getMask();break;case 4:this.getData(a);break;case 5:case 6:this._loop=!1;return}while(this._loop);this._errored||a()}getInfo(a){if(this._bufferedBytes<2){this._loop=!1;return}let b=this.consume(2);if((48&b[0])!=0)return void a(this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3"));let c=(64&b[0])==64;if(c&&!this._extensions[e.extensionName])return void a(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"));if(this._fin=(128&b[0])==128,this._opcode=15&b[0],this._payloadLength=127&b[1],0===this._opcode){if(c)return void a(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"));if(!this._fragmented)return void a(this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE"));this._opcode=this._fragmented}else if(1===this._opcode||2===this._opcode){if(this._fragmented)return void a(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE"));this._compressed=c}else{if(!(this._opcode>7)||!(this._opcode<11))return void a(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE"));if(!this._fin)return void a(this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN"));if(c)return void a(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"));if(this._payloadLength>125||8===this._opcode&&1===this._payloadLength)return void a(this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH"))}if(this._fin||this._fragmented||(this._fragmented=this._opcode),this._masked=(128&b[1])==128,this._isServer){if(!this._masked)return void a(this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK"))}else if(this._masked)return void a(this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK"));126===this._payloadLength?this._state=1:127===this._payloadLength?this._state=2:this.haveLength(a)}getPayloadLength16(a){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(a)}getPayloadLength64(a){if(this._bufferedBytes<8){this._loop=!1;return}let b=this.consume(8),c=b.readUInt32BE(0);if(c>2097151)return void a(this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH"));this._payloadLength=0x100000000*c+b.readUInt32BE(4),this.haveLength(a)}haveLength(a){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0))return void a(this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"));this._masked?this._state=3:this._state=4}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=4}getData(a){let b=g;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}b=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!=0&&l(b,this._mask)}if(this._opcode>7)return void this.controlMessage(b,a);if(this._compressed){this._state=5,this.decompress(b,a);return}b.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(b)),this.dataMessage(a)}decompress(a,b){this._extensions[e.extensionName].decompress(a,this._fin,(a,c)=>{if(a)return b(a);if(c.length){if(this._messageLength+=c.length,this._messageLength>this._maxPayload&&this._maxPayload>0)return void b(this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"));this._fragments.push(c)}this.dataMessage(b),0===this._state&&this.startLoop(b)})}dataMessage(a){if(!this._fin){this._state=0;return}let b=this._messageLength,c=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],2===this._opcode){let d;d="nodebuffer"===this._binaryType?j(c,b):"arraybuffer"===this._binaryType?k(j(c,b)):"blob"===this._binaryType?new Blob(c):c,this._allowSynchronousEvents?(this.emit("message",d,!0),this._state=0):(this._state=6,setImmediate(()=>{this.emit("message",d,!0),this._state=0,this.startLoop(a)}))}else{let d=j(c,b);if(!this._skipUTF8Validation&&!n(d))return void a(this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8"));5===this._state||this._allowSynchronousEvents?(this.emit("message",d,!1),this._state=0):(this._state=6,setImmediate(()=>{this.emit("message",d,!1),this._state=0,this.startLoop(a)}))}}controlMessage(a,b){if(8===this._opcode){if(0===a.length)this._loop=!1,this.emit("conclude",1005,g),this.end();else{let c=a.readUInt16BE(0);if(!m(c))return void b(this.createError(RangeError,`invalid status code ${c}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE"));let d=new o(a.buffer,a.byteOffset+2,a.length-2);if(!this._skipUTF8Validation&&!n(d))return void b(this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8"));this._loop=!1,this.emit("conclude",c,d),this.end()}this._state=0;return}this._allowSynchronousEvents?(this.emit(9===this._opcode?"ping":"pong",a),this._state=0):(this._state=6,setImmediate(()=>{this.emit(9===this._opcode?"ping":"pong",a),this._state=0,this.startLoop(b)}))}createError(a,b,c,d,e){this._loop=!1,this._errored=!0;let f=new a(c?`Invalid WebSocket frame: ${b}`:b);return Error.captureStackTrace(f,this.createError),f.code=e,f[h]=d,f}}a.exports=p},97537:function(a,b,c){var d=this&&this.__createBinding||(Object.create?function(a,b,c,d){void 0===d&&(d=c),Object.defineProperty(a,d,{enumerable:!0,get:function(){return b[c]}})}:function(a,b,c,d){void 0===d&&(d=c),a[d]=b[c]}),e=this&&this.__setModuleDefault||(Object.create?function(a,b){Object.defineProperty(a,"default",{enumerable:!0,value:b})}:function(a,b){a.default=b}),f=this&&this.__importStar||function(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)"default"!==c&&Object.prototype.hasOwnProperty.call(a,c)&&d(b,a,c);return e(b,a),b};Object.defineProperty(b,"__esModule",{value:!0}),b.NOTANYCHAR=b.WHITESPACE=b.WORDS=b.INTS=void 0;let g=f(c(80738)),h=c(8765);function i(a){let b={},c=0;for(let d of a)d.type===h.types.CHAR&&(b[d.value]=!0),d.type===h.types.RANGE&&(b[`${d.from}-${d.to}`]=!0),c+=1;return{lookup:()=>Object.assign({},b),len:c}}b.INTS=i(g.ints().set),b.WORDS=i(g.words().set),b.WHITESPACE=i(g.whitespace().set),b.NOTANYCHAR=i(g.anyChar().set)}};
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=5226,exports.ids=[5226],exports.modules={50300:(a,b,c)=>{c.d(b,{IF:()=>p,Pg:()=>o,Y9:()=>q,iZ:()=>r,mZ:()=>m});var d=c(29021),e=c(33873),f=c(55511),g=c(55926);let h=["PREPARING","FS_COMMITTED","INDEXED","SUCCEEDED","FAILED_RECONCILABLE"],i={PREPARING:["FS_COMMITTED","FAILED_RECONCILABLE"],FS_COMMITTED:["INDEXED","FAILED_RECONCILABLE"],INDEXED:["SUCCEEDED","FAILED_RECONCILABLE"],FAILED_RECONCILABLE:["INDEXED","SUCCEEDED","FAILED_RECONCILABLE"],SUCCEEDED:[]};class j extends Error{constructor(a,b,c){super(`Illegal Skill operation transition ${a} -> ${b}: ${c}`),this.from=a,this.to=b,this.name="SkillOperationTransitionError"}}function k(a){return(0,f.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(",")}}`}({actor:a.actor,operation:a.operation,target:a.target,planHash:a.planHash})).digest("hex")}function l(a,b){let c=(0,f.createHash)("sha256").update(a).digest("hex");return(0,e.join)((0,g.m_)(g.V8,b),`${c}.json`)}function m(a,b={}){let c=(0,g.dI)(l(a,b));return"object"==typeof c&&null!==c&&"string"==typeof c.operationId&&"string"==typeof c.idempotencyKey&&"string"==typeof c.bindingHash&&"string"==typeof c.state&&h.includes(c.state)?c:null}function n(a,b={}){(0,g.of)(l(a.idempotencyKey,b),a)}function o(a,b={}){try{(0,d.unlinkSync)(l(a,b))}catch{}}function p(a,b={}){let c=k(a.binding),d=a.idempotencyKey??k(a.binding),e=m(d,b);if(null!==e)return e.bindingHash!==c?{ok:!1,reason:"IDEMPOTENCY_KEY_CONFLICT",entry:e}:{ok:!0,entry:e,replayed:!0};let g=b.now??Date.now(),h={schemaVersion:1,operationId:(0,f.randomUUID)(),idempotencyKey:d,bindingHash:c,operation:a.binding.operation,state:"PREPARING",actor:a.binding.actor,target:a.binding.target,source:a.source??null,lockKey:a.lockKey,createdAt:g,updatedAt:g,fsCommittedAt:null,receiptDigest:null,error:null,history:[{state:"PREPARING",at:g}]};return n(h,b),{ok:!0,entry:h,replayed:!1}}function q(a,b,c={},d={}){if(!i[a.state].includes(b))throw new j(a.state,b,"edge is not defined");let e=d.now??Date.now(),f="FS_COMMITTED"===b?a.fsCommittedAt??e:a.fsCommittedAt;if(("INDEXED"===b||"SUCCEEDED"===b)&&null===f)throw new j(a.state,b,"no filesystem commit point was recorded");let h={...a,state:b,updatedAt:e,fsCommittedAt:f,source:void 0!==c.source?c.source:a.source,receiptDigest:void 0!==c.receiptDigest?c.receiptDigest:a.receiptDigest,error:void 0!==c.error?null===c.error?null:{code:c.error.code,message:(0,g.f$)(c.error.message)}:a.error,history:[...a.history,{state:b,at:e}]};return n(h,d),h}function r(a){return null!==a.fsCommittedAt}},55317:(a,b,c)=>{c.d(b,{Bv:()=>i,Tk:()=>g,c7:()=>h,fk:()=>j});var d=c(55511);let e=`
|
|
2
|
-
id, worktree_id, skill_id, version, install_root, install_roots, receipt_sha256,
|
|
3
|
-
source_repository, source_ref, source_commit, artifact_sha256,
|
|
4
|
-
effective_risk, operation_id, installed_at, updated_at
|
|
5
|
-
`;function f(a){return{id:a.id,worktreeId:a.worktree_id,skillId:a.skill_id,version:a.version,installRoot:a.install_root,installRoots:function(a,b){if(null===a)return[b];try{let b=JSON.parse(a);if(Array.isArray(b)&&b.length>0&&b.every(a=>"string"==typeof a))return b}catch{}return[b]}(a.install_roots,a.install_root),receiptSha256:a.receipt_sha256,sourceRepository:a.source_repository,sourceRef:a.source_ref,sourceCommit:a.source_commit,artifactSha256:a.artifact_sha256,effectiveRisk:a.effective_risk,operationId:a.operation_id,installedAt:a.installed_at,updatedAt:a.updated_at}}function g(a,b){let{receipt:c}=b,e=c.install_roots&&c.install_roots.length>0?c.install_roots:[c.install_root];a.prepare(`INSERT INTO skill_installations (
|
|
6
|
-
id, worktree_id, skill_id, version, install_root, install_roots, receipt_sha256,
|
|
7
|
-
source_repository, source_ref, source_commit, artifact_sha256,
|
|
8
|
-
effective_risk, operation_id, installed_at, updated_at
|
|
9
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
10
|
-
ON CONFLICT (worktree_id, skill_id) DO UPDATE SET
|
|
11
|
-
version = excluded.version,
|
|
12
|
-
install_root = excluded.install_root,
|
|
13
|
-
install_roots = excluded.install_roots,
|
|
14
|
-
receipt_sha256 = excluded.receipt_sha256,
|
|
15
|
-
source_repository = excluded.source_repository,
|
|
16
|
-
source_ref = excluded.source_ref,
|
|
17
|
-
source_commit = excluded.source_commit,
|
|
18
|
-
artifact_sha256 = excluded.artifact_sha256,
|
|
19
|
-
effective_risk = excluded.effective_risk,
|
|
20
|
-
operation_id = excluded.operation_id,
|
|
21
|
-
updated_at = excluded.updated_at`).run((0,d.randomUUID)(),b.worktreeId,c.skill_id,c.version,c.install_root,JSON.stringify(e),b.receiptSha256,c.source.repository,c.source.ref,c.source.commit,c.artifact.sha256,c.effective_risk,b.operationId,b.installedAt,b.installedAt);let f=h(a,b.worktreeId,c.skill_id);if(null===f)throw Error("Skill installation row disappeared immediately after being written");return f}function h(a,b,c){let d=a.prepare(`SELECT ${e} FROM skill_installations
|
|
22
|
-
WHERE worktree_id = ? AND skill_id = ?`).get(b,c);return d?f(d):null}function i(a,b){return a.prepare(`SELECT ${e} FROM skill_installations
|
|
23
|
-
WHERE worktree_id = ? ORDER BY skill_id ASC`).all(b).map(f)}function j(a,b,c){return a.prepare("DELETE FROM skill_installations WHERE worktree_id = ? AND skill_id = ?").run(b,c).changes>0}},74516:(a,b,c)=>{c.d(b,{JM:()=>g,ek:()=>f});var d=c(55511),e=c(55926);function f(a,b,c){return{operationId:a.operationId,idempotencyKey:a.idempotencyKey,bindingHash:a.bindingHash,operation:a.operation,state:a.state,result:b,actorType:a.actor.type,actorId:a.actor.id,worktreeId:a.target.worktreeId,skillId:a.target.skillId,skillVersion:a.target.version,sourceOrigin:a.source?.origin??null,sourceRepository:a.source?.repository??null,sourceRef:a.source?.ref??null,sourceCommit:a.source?.commit??null,artifactSha256:a.source?.artifactSha256??null,errorCode:a.error?.code??null,errorMessage:a.error?.message??null,recordedAt:c}}function g(a,b){let c={...b,id:(0,d.randomUUID)(),errorMessage:null===b.errorMessage?null:(0,e.f$)(b.errorMessage),recordedAt:b.recordedAt??Date.now()};return a.prepare(`INSERT INTO skill_operations (
|
|
24
|
-
id, operation_id, idempotency_key, binding_hash, operation, state, result,
|
|
25
|
-
actor_type, actor_id, worktree_id, skill_id, skill_version,
|
|
26
|
-
source_origin, source_repository, source_ref, source_commit, artifact_sha256,
|
|
27
|
-
error_code, error_message, recorded_at
|
|
28
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(c.id,c.operationId,c.idempotencyKey,c.bindingHash,c.operation,c.state,c.result,c.actorType,c.actorId,c.worktreeId,c.skillId,c.skillVersion,c.sourceOrigin,c.sourceRepository,c.sourceRef,c.sourceCommit,c.artifactSha256,c.errorCode,c.errorMessage,c.recordedAt),c}},89476:(a,b,c)=>{c.d(b,{k8:()=>q,p8:()=>k,x3:()=>r});var d=c(29021),e=c(21820),f=c(33873),g=c(55511),h=c(55926);let i=(0,g.randomUUID)();function j(a){if(!Number.isInteger(a)||a<=0)return!1;try{return process.kill(a,0),!0}catch(a){return"EPERM"===a.code}}function k(a,b){return(0,g.createHash)("sha256").update(`${a}\0${b}`).digest("hex")}function l(a,b){return(0,f.join)((0,h.m_)(h.vg,b),`${a}.lock`)}function m(a){if("object"!=typeof a||null===a)return!1;let b=a.owner;return"string"==typeof a.key&&"string"==typeof a.operationId&&"number"==typeof a.leaseExpiresAt&&Number.isFinite(a.leaseExpiresAt)&&"object"==typeof b&&null!==b&&"string"==typeof b.nonce&&"number"==typeof b.pid&&"string"==typeof b.host}function n(a,b={}){let c=(0,h.dI)(l(a,b));return m(c)?c:null}function o(a,b={}){if(null===a)return"FREE";let c=b.now??Date.now();if(c<a.leaseExpiresAt)return"HELD";let d=b.isProcessAlive??j;return a.owner.host!==(0,e.hostname)()?c-a.leaseExpiresAt>6e5?"RECLAIMABLE":"HELD_UNVERIFIABLE_OWNER":d(a.owner.pid)?"HELD_BY_LIVE_OWNER":"RECLAIMABLE"}function p(a,b){let c;try{c=(0,d.openSync)(a,d.constants.O_CREAT|d.constants.O_EXCL|d.constants.O_WRONLY,h.Pq)}catch{return!1}try{return(0,d.writeSync)(c,JSON.stringify(b)),!0}finally{(0,d.closeSync)(c)}}function q(a,b={}){var c,f;let j=b.now??Date.now(),k=a.leaseMs??3e4,r=l(a.key,b),s=(c=a.key,f=a.operationId,{schemaVersion:1,key:c,operationId:f,owner:{nonce:(0,g.randomBytes)(24).toString("hex"),pid:process.pid,host:(0,e.hostname)(),processGeneration:i},acquiredAt:j,renewedAt:j,leaseExpiresAt:j+k});if(p(r,s))return{ok:!0,lock:s,reclaimed:!1};let t=n(a.key,b),u=null===t?(0,d.existsSync)(r)?"RECLAIMABLE":"FREE":o(t,b),v=t?{operationId:t.operationId,acquiredAt:t.acquiredAt,leaseExpiresAt:t.leaseExpiresAt}:null;if("HELD"===u||"HELD_BY_LIVE_OWNER"===u)return{ok:!1,reason:u,heldBy:v};if("HELD_UNVERIFIABLE_OWNER"===u)return{ok:!1,reason:"HELD_UNVERIFIABLE_OWNER",heldBy:v};if("FREE"===u)return p(r,s)?{ok:!0,lock:s,reclaimed:!1}:{ok:!1,reason:"RACE_LOST",heldBy:null};let w=function(a,b,c){let e=`${a}.reclaim-${(0,g.randomBytes)(8).toString("hex")}`;try{(0,d.renameSync)(a,e)}catch{return{ok:!1,reason:"RACE_LOST"}}let f=(0,h.dI)(e),i=m(f)?f:null;if(!(null===b?null===i:null===i||i.owner.nonce===b.owner.nonce&&"RECLAIMABLE"===o(i,c))){try{(0,d.renameSync)(e,a)}catch{}return{ok:!1,reason:"RACE_LOST"}}try{(0,d.unlinkSync)(e)}catch{}return{ok:!0}}(r,t,b);return w.ok?p(r,s)?{ok:!0,lock:s,reclaimed:!0}:{ok:!1,reason:"RACE_LOST",heldBy:null}:{ok:!1,reason:w.reason,heldBy:v}}function r(a,b={}){let c=n(a.key,b);if(null===c||c.owner.nonce!==a.owner.nonce)return!1;try{return(0,d.unlinkSync)(l(a.key,b)),!0}catch{return!1}}}};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=5306,exports.ids=[5306],exports.modules={55306:(a,b,c)=>{c.d(b,{uu:()=>v}),c(55511);var d=c(29021);c(33873),c(7956);var e=c(75359),f=c(93356),g=c(55927);let h={BYTES_LIMIT:"SKILL_YAML_BYTES_LIMIT",DEPTH_LIMIT:"SKILL_YAML_DEPTH_LIMIT",NODE_LIMIT:"SKILL_YAML_NODE_LIMIT",SCALAR_LIMIT:"SKILL_YAML_SCALAR_LIMIT",ALIAS_FORBIDDEN:"SKILL_YAML_ALIAS_FORBIDDEN",MERGE_KEY_FORBIDDEN:"SKILL_YAML_MERGE_KEY_FORBIDDEN",TAG_FORBIDDEN:"SKILL_YAML_TAG_FORBIDDEN",DUPLICATE_KEY:"SKILL_YAML_DUPLICATE_KEY",FORBIDDEN_KEY:"SKILL_YAML_FORBIDDEN_KEY",MULTIPLE_DOCUMENTS:"SKILL_YAML_MULTIPLE_DOCUMENTS",ENCODING:"SKILL_YAML_ENCODING",UNSUPPORTED:"SKILL_YAML_UNSUPPORTED",SYNTAX:"SKILL_YAML_SYNTAX"},i={[h.BYTES_LIMIT]:"YAML document exceeds the size limit",[h.DEPTH_LIMIT]:"YAML document is nested too deeply",[h.NODE_LIMIT]:"YAML document has too many nodes",[h.SCALAR_LIMIT]:"YAML scalar exceeds the length limit",[h.ALIAS_FORBIDDEN]:"YAML anchors and aliases are not accepted",[h.MERGE_KEY_FORBIDDEN]:"YAML merge keys are not accepted",[h.TAG_FORBIDDEN]:"YAML tags are not accepted",[h.DUPLICATE_KEY]:"YAML mapping declares the same key twice",[h.FORBIDDEN_KEY]:"YAML mapping uses a forbidden key",[h.MULTIPLE_DOCUMENTS]:"YAML stream carries more than one document",[h.ENCODING]:"YAML document is not valid UTF-8 text",[h.UNSUPPORTED]:"YAML document uses an unsupported construct",[h.SYNTAX]:"YAML document could not be parsed"};class j extends Error{constructor(a,b){super(i[a]),this.name="SkillYamlError",this.code=a,void 0!==b&&(this.line=b)}}function k(a){return a instanceof j}let l=/^(?:"(?:[^"\\]|\\.)*"|'(?:[^']|'')*'|[A-Za-z_][A-Za-z0-9_.-]*)[ \t]*:(?:[ \t]|$)/;function m(a){let b=null;for(let c=0;c<a.length;c++){let d=a[c];if('"'===b)"\\"===d?c++:'"'===d&&(b=null);else if("'"===b)"'"===d&&(b=null);else if('"'===d||"'"===d)b=d;else if("#"===d&&(0===c||" "===a[c-1]||" "===a[c-1]))return a.slice(0,c)}return a}class n{constructor(a,b){this.cursor=0,this.nodes=0,this.documentEnded=!1,this.documentStarted=!1,this.lines=a,this.profile=b}parseDocument(){let a=this.peek();if(!a)return null;if(0!==a.indent)throw new j(h.SYNTAX,a.number);let b=this.parseNode(0,1);this.skipToSignificant();let c=this.peek();if(c)throw new j(h.SYNTAX,c.number);return b}skipToSignificant(){for(;this.cursor<this.lines.length;){let a=this.lines[this.cursor];if(!a.significant){this.cursor++;continue}let b=a.content.trim();if("..."===b){this.documentEnded=!0,this.cursor++;continue}if("---"===b){if(this.documentStarted)throw new j(h.MULTIPLE_DOCUMENTS,a.number);this.documentStarted=!0,this.cursor++;continue}if(this.documentEnded)throw new j(h.MULTIPLE_DOCUMENTS,a.number);this.documentStarted=!0;return}}peek(){return this.skipToSignificant(),this.cursor<this.lines.length?this.lines[this.cursor]:null}countNode(a){if(this.nodes++,this.nodes>this.profile.maxNodes)throw new j(h.NODE_LIMIT,a.number)}checkDepth(a,b){if(a>this.profile.maxDepth)throw new j(h.DEPTH_LIMIT,b.number)}parseNode(a,b){let c=this.peek();return c?(this.checkDepth(b,c),this.isSequenceEntry(c.content)?this.parseSequence(a,b):this.parseMapping(a,b)):null}isSequenceEntry(a){return"-"===a||a.startsWith("- ")}parseMapping(a,b){let c=Object.create(null),d=new Set;for(;;){let e=this.peek();if(!e||e.indent<a)break;if(e.indent>a||this.isSequenceEntry(e.content))throw new j(h.SYNTAX,e.number);this.countNode(e);let f=this.readKey(e);if(d.has(f)&&!this.profile.allowDuplicateKeys)throw new j(h.DUPLICATE_KEY,e.number);d.add(f);let g=e.content.indexOf(":",this.keyTokenLength(e.content)),i=m(e.content.slice(g+1)).trim();this.cursor++,c[f]=this.parseValue(i,a,b,e)}return c}parseSequence(a,b){let c=[];for(;;){let d=this.peek();if(!d||d.indent<a)break;if(d.indent>a)throw new j(h.SYNTAX,d.number);if(!this.isSequenceEntry(d.content))break;this.countNode(d);let e="-"===d.content?"":d.content.slice(2),f=d.content.length-e.length,g=m(e).trim();if(""===g){this.cursor++,c.push(this.parseIndentedValue(a,b+1,d));continue}if(this.isSequenceEntry(g))throw new j(h.UNSUPPORTED,d.number);if(l.test(e.trimStart())){let g=a+f+(e.length-e.trimStart().length);d.indent=g,d.content=e.trimStart(),this.checkDepth(b+1,d),c.push(this.parseMapping(g,b+1));continue}this.cursor++,this.countNode(d),c.push(this.parseScalar(g,d))}return c}keyTokenLength(a){if(a.startsWith('"')||a.startsWith("'")){let b=a[0];for(let c=1;c<a.length;c++){if('"'===b&&"\\"===a[c]){c++;continue}if(a[c]===b)return c+1}}return 0}readKey(a){let b=a.content;if(b.startsWith("<<"))throw new j(h.MERGE_KEY_FORBIDDEN,a.number);if(b.startsWith("&")||b.startsWith("*"))throw new j(h.ALIAS_FORBIDDEN,a.number);if(b.startsWith("!"))throw new j(h.TAG_FORBIDDEN,a.number);if(b.startsWith("?")||b.startsWith("[")||b.startsWith("{"))throw new j(h.UNSUPPORTED,a.number);if(!l.test(b))throw new j(h.SYNTAX,a.number);let c=this.keyTokenLength(b),d=b.indexOf(":",c),e=b.slice(0,d).trim(),f=e.startsWith('"')||e.startsWith("'")?this.parseQuoted(e,a):e;if(f.length>this.profile.maxScalarLength)throw new j(h.SCALAR_LIMIT,a.number);if(this.profile.forbiddenKeys.includes(f))throw new j(h.FORBIDDEN_KEY,a.number);return f}parseValue(a,b,c,d){if(""===a){let a=this.peek();return a&&a.indent===b&&this.isSequenceEntry(a.content)?(this.checkDepth(c+1,a),this.parseSequence(b,c+1)):this.parseIndentedValue(b,c+1,d)}return"|"===a[0]||">"===a[0]?this.parseBlockScalar(a,b,d):(this.countNode(d),this.parseScalar(a,d))}parseIndentedValue(a,b,c){let d=this.peek();return!d||d.indent<=a?(this.countNode(c),null):(this.checkDepth(b,d),this.parseNode(d.indent,b))}parseScalar(a,b){if(a.startsWith("&")||a.startsWith("*"))throw new j(h.ALIAS_FORBIDDEN,b.number);if(a.startsWith("!"))throw new j(h.TAG_FORBIDDEN,b.number);if("[]"===a)return this.countNode(b),[];if("{}"===a)return this.countNode(b),Object.create(null);if(a.startsWith("[")||a.startsWith("{")||a.startsWith("%")||a.startsWith("`"))throw new j(h.UNSUPPORTED,b.number);if(a.startsWith('"')||a.startsWith("'")){let c=this.parseQuoted(a,b);return this.checkScalarLength(c,b),c}return this.checkScalarLength(a,b),this.resolvePlain(a)}checkScalarLength(a,b){if(a.length>this.profile.maxScalarLength)throw new j(h.SCALAR_LIMIT,b.number)}resolvePlain(a){if("~"===a||"null"===a||"Null"===a||"NULL"===a)return null;if("true"===a||"True"===a||"TRUE"===a)return!0;if("false"===a||"False"===a||"FALSE"===a)return!1;if(/^-?(?:0|[1-9][0-9]*)$/.test(a)){let b=Number(a);return Number.isSafeInteger(b)?b:a}return/^-?(?:0|[1-9][0-9]*)\.[0-9]+$/.test(a)?Number(a):a}parseQuoted(a,b){let c=a[0];if(a.length<2||!a.endsWith(c))throw new j(h.SYNTAX,b.number);let d=a.slice(1,-1);if("'"===c){let a="";for(let c=0;c<d.length;c++){if("'"===d[c]){if("'"!==d[c+1])throw new j(h.SYNTAX,b.number);c++}a+=d[c]}return a}let e="";for(let a=0;a<d.length;a++){let c=d[a];if("\\"!==c){if('"'===c)throw new j(h.SYNTAX,b.number);e+=c;continue}let f=d[++a];switch(f){case'"':case"\\":case"/":e+=f;break;case"n":e+="\n";break;case"t":e+=" ";break;case"r":e+="\r";break;case"u":{let c=d.slice(a+1,a+5);if(!/^[0-9a-fA-F]{4}$/.test(c))throw new j(h.SYNTAX,b.number);e+=String.fromCharCode(parseInt(c,16)),a+=4;break}default:throw new j(h.UNSUPPORTED,b.number)}}return e}parseBlockScalar(a,b,c){let d,e=/^([|>])([-+]?)$/.exec(a.trim());if(!e)throw new j(h.UNSUPPORTED,c.number);let[,f,g]=e,i=[],k=-1;for(;this.cursor<this.lines.length;){let a=this.lines[this.cursor],c=""===a.raw.trim();if(!c&&a.indent<=b)break;c||-1!==k||(k=a.indent),i.push(c?"":a.raw.slice(k)),this.cursor++}for(;i.length>0&&""===i[i.length-1];)i.pop();return this.countNode(c),d="|"===f?i.join("\n"):i.reduce((a,b,c)=>{if(0===c)return b;let d=i[c-1];return""===b||""===d?`${a}
|
|
2
|
-
${b}`:`${a} ${b}`},""),"-"!==g&&i.length>0&&(d+="\n"),this.checkScalarLength(d,c),d}}function o(a,b=e.WL){if(b.allowAliases||b.allowCustomTags)throw new j(h.UNSUPPORTED);return new n(function(a){if(a.includes("\uFEFF"))throw new j(h.ENCODING);let b=a.replace(/\r\n/g,"\n");if(b.includes("\r"))throw new j(h.ENCODING);let c=[],d=b.split("\n");for(let a=0;a<d.length;a++){let b=d[a],e=a+1;for(let a=0;a<b.length;a++){let c=b.charCodeAt(a);if(c<32&&9!==c||127===c)throw new j(h.ENCODING,e)}let f=0;for(;f<b.length&&" "===b[f];)f++;if(" "===b[f])throw new j(h.SYNTAX,e);let g=b.slice(f);c.push({number:e,raw:b,indent:f,content:g,significant:g.length>0&&!g.startsWith("#")})}return c}(function(a,b){if(("string"==typeof a?Buffer.byteLength(a,"utf8"):a.byteLength)>b)throw new j(h.BYTES_LIMIT);if("string"==typeof a)return a;try{return new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!1}).decode(a)}catch{throw new j(h.ENCODING)}}(a,b.maxBytes)),b).parseDocument()}d.constants.O_NOFOLLOW;let p=[".bash",".bat",".cjs",".cmd",".fish",".js",".lua",".mjs",".php",".pl",".ps1",".py",".rb",".sh",".ts",".zsh"],q=[".md",".markdown",".rst",".txt"];function r(a){let b=a.slice(a.lastIndexOf("/")+1),c=b.lastIndexOf(".");return c<=0?"":b.slice(c).toLowerCase()}function s(a,b){return!!p.includes(r(a))||b.length>=2&&35===b[0]&&33===b[1]}function t(a,b){throw new g.Om(a,b)}function u(a,b){return a.files.find(a=>a.path===b)}function v(a,b){return function(a,b){let c;for(let b of e.wD)u(a,b)||t(g.xC.LAYOUT_INVALID,{reason:"missing-required-entry",entry:b});let d=function(a){let b,c=u(a,e.KH);for(let b of(c||t(g.xC.MANIFEST_MISSING,{reason:"absent"}),a.files))b.path!==e.KH&&b.path.endsWith(`/${e.KH}`)&&t(g.xC.LAYOUT_INVALID,{reason:"nested-manifest",entry:(0,g.FC)(b.path)});try{b=o(c.bytes)}catch(a){throw k(a)&&t(g.xC.MANIFEST_INVALID,{reason:a.code}),a}let d=(0,e.bX)(b);if(!d.ok){let a=d.errors[0];t(g.xC.MANIFEST_INVALID,{reason:a.code,field:a.path})}return d.value}(a);d.id!==b.skillId&&t(g.xC.MANIFEST_MISMATCH,{reason:"id"}),d.version!==b.version&&t(g.xC.MANIFEST_MISMATCH,{reason:"version"});let h=u(a,e.Wr);h||t(g.xC.SKILL_MD_INVALID,{reason:"absent"});try{c=function(a,b=e.WL){let c=a.replace(/\r\n/g,"\n");if(!c.startsWith("---\n"))return null;let d=c.indexOf("\n---",3);return -1===d?null:o(c.slice(4,d+1),b)}(Buffer.from(h.bytes).toString("utf8"))}catch(a){throw k(a)&&t(g.xC.SKILL_MD_INVALID,{reason:a.code}),a}(null===c||"object"!=typeof c||Array.isArray(c))&&t(g.xC.SKILL_MD_INVALID,{reason:"frontmatter-missing"});let i=c.name;"string"!=typeof i&&t(g.xC.SKILL_MD_INVALID,{reason:"frontmatter-name-missing"});let j=(0,e.EU)({directoryName:d.id,skillMdName:i,manifestId:d.id,manifestName:d.name});j.ok||t(g.xC.SKILL_MD_INVALID,{reason:j.errors[0].code});let l=(0,e.Yz)(d,a.files.map(a=>a.path));if(!l.ok){let a=l.errors[0];t(g.xC.MANIFEST_MISMATCH,{reason:a.message,entry:(0,g.FC)(String(a.detail?.path??""))})}for(let b of a.files)b.path!==e.KH&&function(a,b){var c,d;let h=b.files.find(b=>b.path===a.path);h||t(g.xC.MANIFEST_MISMATCH,{reason:"undeclared-file",entry:(0,g.FC)(a.path)});let i={entry:(0,g.FC)(a.path)};h.size!==a.size&&t(g.xC.SIZE_MISMATCH,i),(0,f.U2)(h.sha256,a.sha256)||t(g.xC.DIGEST_MISMATCH,i);let j=(c=a.path,d=a.bytes,c===e.Wr?"skill_md":s(c,d)?"script":q.includes(r(c))?"instruction":"asset");s(a.path,a.bytes)&&(!h.script||"script"!==h.kind)&&t(g.xC.UNDECLARED_SCRIPT,i),"script"!==h.kind||h.script||t(g.xC.MANIFEST_MISMATCH,{...i,reason:"kind-script-not-declared"}),"skill_md"===j!=("skill_md"===h.kind)&&t(g.xC.MANIFEST_MISMATCH,{...i,reason:"kind-mismatch"}),a.executable&&!h.executable&&t(g.xC.UNDECLARED_EXECUTABLE,i),!a.executable&&h.executable&&t(g.xC.MANIFEST_MISMATCH,{...i,reason:"executable-not-present"})}(b,d);let m={executable_paths:d.files.filter(a=>a.executable).map(a=>a.path).sort(),script_paths:d.files.filter(a=>a.script).map(a=>a.path).sort(),network_hosts:[...d.requirements.network_hosts],declared_permissions:[...d.declared_permissions]},n=(0,e.MD)(m),p=new Map(a.files.map(a=>[a.path,a.bytes])),v=a.files.map(a=>({path:a.path,sha256:a.sha256,size:a.size,executable:a.executable})).sort((a,b)=>a.path<b.path?-1:+(a.path>b.path));return Object.freeze({skillId:b.skillId,version:b.version,manifest:d,files:Object.freeze(v),directories:Object.freeze([...a.directories].sort()),inspection:Object.freeze(m),declaredRisk:d.declared_risk,computedRisk:n,effectiveRisk:(0,e.qZ)(d.declared_risk,n),readFile(a){let b=p.get(a);return b||t(g.xC.MANIFEST_MISMATCH,{reason:"unknown-file",entry:(0,g.FC)(a)}),new Uint8Array(b)}})}((0,g.qt)(a,b),b)}},55927:(a,b,c)=>{c.d(b,{FC:()=>l,Om:()=>j,qt:()=>q,uI:()=>k,xC:()=>g});var d=c(74075),e=c(75359),f=c(93356);let g={ARCHIVE_FORMAT:"SKILL_PACKAGE_ARCHIVE_FORMAT",ARCHIVE_TRUNCATED:"SKILL_PACKAGE_ARCHIVE_TRUNCATED",ENTRY_TYPE_FORBIDDEN:"SKILL_PACKAGE_ENTRY_TYPE_FORBIDDEN",ENTRY_PATH_UNSAFE:"SKILL_PACKAGE_ENTRY_PATH_UNSAFE",ENTRY_DUPLICATE:"SKILL_PACKAGE_ENTRY_DUPLICATE",ENTRY_COLLISION:"SKILL_PACKAGE_ENTRY_COLLISION",ENTRY_MODE_FORBIDDEN:"SKILL_PACKAGE_ENTRY_MODE_FORBIDDEN",ENTRY_LIMIT_EXCEEDED:"SKILL_PACKAGE_ENTRY_LIMIT_EXCEEDED",SIZE_LIMIT_EXCEEDED:"SKILL_PACKAGE_SIZE_LIMIT_EXCEEDED",COMPRESSION_RATIO_EXCEEDED:"SKILL_PACKAGE_COMPRESSION_RATIO_EXCEEDED",LAYOUT_INVALID:"SKILL_PACKAGE_LAYOUT_INVALID",MANIFEST_MISSING:"SKILL_PACKAGE_MANIFEST_MISSING",MANIFEST_INVALID:"SKILL_PACKAGE_MANIFEST_INVALID",MANIFEST_MISMATCH:"SKILL_PACKAGE_MANIFEST_MISMATCH",UNDECLARED_EXECUTABLE:"SKILL_PACKAGE_UNDECLARED_EXECUTABLE",UNDECLARED_SCRIPT:"SKILL_PACKAGE_UNDECLARED_SCRIPT",DIGEST_MISMATCH:"SKILL_PACKAGE_DIGEST_MISMATCH",SIZE_MISMATCH:"SKILL_PACKAGE_SIZE_MISMATCH",SKILL_MD_INVALID:"SKILL_PACKAGE_SKILL_MD_INVALID",STAGING_IO:"SKILL_PACKAGE_STAGING_IO",ABORTED:"SKILL_PACKAGE_ABORTED"},h={[g.ARCHIVE_FORMAT]:"archive",[g.ARCHIVE_TRUNCATED]:"archive",[g.ENTRY_TYPE_FORBIDDEN]:"path",[g.ENTRY_PATH_UNSAFE]:"path",[g.ENTRY_DUPLICATE]:"path",[g.ENTRY_COLLISION]:"path",[g.ENTRY_MODE_FORBIDDEN]:"path",[g.ENTRY_LIMIT_EXCEEDED]:"limit",[g.SIZE_LIMIT_EXCEEDED]:"limit",[g.COMPRESSION_RATIO_EXCEEDED]:"limit",[g.LAYOUT_INVALID]:"manifest",[g.MANIFEST_MISSING]:"manifest",[g.MANIFEST_INVALID]:"manifest",[g.MANIFEST_MISMATCH]:"manifest",[g.UNDECLARED_EXECUTABLE]:"manifest",[g.UNDECLARED_SCRIPT]:"manifest",[g.DIGEST_MISMATCH]:"integrity",[g.SIZE_MISMATCH]:"integrity",[g.SKILL_MD_INVALID]:"manifest",[g.STAGING_IO]:"staging",[g.ABORTED]:"staging"},i={[g.ARCHIVE_FORMAT]:"Skill package is not a readable tar.gz archive",[g.ARCHIVE_TRUNCATED]:"Skill package archive is truncated",[g.ENTRY_TYPE_FORBIDDEN]:"Skill package contains a forbidden entry type",[g.ENTRY_PATH_UNSAFE]:"Skill package contains an unsafe entry path",[g.ENTRY_DUPLICATE]:"Skill package declares the same entry twice",[g.ENTRY_COLLISION]:"Skill package contains colliding entry paths",[g.ENTRY_MODE_FORBIDDEN]:"Skill package entry carries forbidden mode bits",[g.ENTRY_LIMIT_EXCEEDED]:"Skill package contains too many entries",[g.SIZE_LIMIT_EXCEEDED]:"Skill package exceeds a size limit",[g.COMPRESSION_RATIO_EXCEEDED]:"Skill package decompression ratio exceeds the limit",[g.LAYOUT_INVALID]:"Skill package layout does not match the contract",[g.MANIFEST_MISSING]:"Skill package manifest is missing or misplaced",[g.MANIFEST_INVALID]:"Skill package manifest is not valid",[g.MANIFEST_MISMATCH]:"Skill package manifest does not match the package",[g.UNDECLARED_EXECUTABLE]:"Skill package contains an undeclared executable",[g.UNDECLARED_SCRIPT]:"Skill package contains an undeclared script",[g.DIGEST_MISMATCH]:"Skill package file digest does not match the manifest",[g.SIZE_MISMATCH]:"Skill package file size does not match the manifest",[g.SKILL_MD_INVALID]:"Skill package SKILL.md is missing or inconsistent",[g.STAGING_IO]:"Skill package staging could not be prepared",[g.ABORTED]:"Skill package processing was aborted"};class j extends Error{constructor(a,b){super(i[a]),this.name="SkillPackageError",this.code=a,this.category=h[a],b&&(this.detail=b)}}function k(a){return a instanceof j}function l(a){let b=a.replace(/[^A-Za-z0-9._/-]/g,a=>[...a].map(a=>`%${a.charCodeAt(0).toString(16).toUpperCase().padStart(2,"0")}`).join(""));return b.length>120?`${b.slice(0,120)}…`:b}function m(a,b){throw new j(a,b)}let n=new Set(["0","\0"]);function o(a,b,c){let d=a.subarray(b,b+c),e=d.indexOf(0);-1===e&&(e=d.length);for(let a=e;a<d.length;a++)0!==d[a]&&m(g.ARCHIVE_FORMAT,{field:"padding"});let f=Buffer.from(d.subarray(0,e)),h=f.toString("utf8");return Buffer.from(h,"utf8").equals(f)||m(g.ARCHIVE_FORMAT,{field:"encoding"}),h}function p(a,b,c){(128&a[b])!=0&&m(g.ARCHIVE_FORMAT,{field:"numeric-encoding"});let d="";for(let e=b;e<b+c;e++){let b=a[e];0!==b&&32!==b&&((b<48||b>55)&&m(g.ARCHIVE_FORMAT,{field:"numeric"}),d+=String.fromCharCode(b))}if(""===d)return 0;let e=parseInt(d,8);return Number.isSafeInteger(e)||m(g.ARCHIVE_FORMAT,{field:"numeric-range"}),e}function q(a,b){let c;(a.byteLength<2||31!==a[0]||139!==a[1])&&m(g.ARCHIVE_FORMAT,{field:"gzip-magic"});try{c=(0,d.gunzipSync)(a,{maxOutputLength:0x4000000})}catch(a){"ERR_BUFFER_TOO_LARGE"===a?.code&&m(g.SIZE_LIMIT_EXCEEDED,{limit:0x4000000}),m(g.ARCHIVE_FORMAT,{field:"gzip"})}c.byteLength>1048576&&c.byteLength/a.byteLength>200&&m(g.COMPRESSION_RATIO_EXCEEDED,{limit:200});let h=(function(a){(0===a.byteLength||a.byteLength%512!=0)&&m(g.ARCHIVE_TRUNCATED,{field:"alignment"});let b=[],c=0;for(;c+512<=a.byteLength;){let d=a.subarray(c,c+512);if(function(a){for(let b=0;b<a.length;b++)if(0!==a[b])return!1;return!0}(d)){for(let b=c;b<a.byteLength;b++)0!==a[b]&&m(g.ARCHIVE_FORMAT,{field:"trailer"});return b}!function(a,b){let c=0,d=0;for(let b=0;b<512;b++){let e=b>=148&&b<156?32:a[b];c+=e,d+=e>127?e-256:e}b!==c&&b!==d&&m(g.ARCHIVE_FORMAT,{field:"checksum"})}(d,p(d,148,8)),"ustar"!==o(d,257,6).trim()&&m(g.ARCHIVE_FORMAT,{field:"magic"});let f=o(d,156,1)||"\0",h="5"===f;h||n.has(f)||m(g.ENTRY_TYPE_FORBIDDEN,{typeflag:l(f)}),""!==o(d,157,100)&&m(g.ENTRY_TYPE_FORBIDDEN,{typeflag:"link"});let i=p(d,100,8);(3584&i)!=0&&m(g.ENTRY_MODE_FORBIDDEN,{bits:(3584&i).toString(8)});let j=o(d,345,155),k=o(d,0,100),q=""===j?k:`${j}/${k}`,r=p(d,124,12);h&&0!==r&&m(g.ARCHIVE_FORMAT,{field:"directory-size"}),r>e.em&&m(g.SIZE_LIMIT_EXCEEDED,{limit:e.em});let s=c+512,t=s+r;t>a.byteLength&&m(g.ARCHIVE_TRUNCATED),b.push({name:q,isDirectory:h,mode:i,size:r,bytes:h?new Uint8Array(0):a.subarray(s,t)}),b.length>1e3&&m(g.ENTRY_LIMIT_EXCEEDED,{limit:1e3}),c=s+512*Math.ceil(r/512)}return m(g.ARCHIVE_TRUNCATED,{field:"trailer"})})(c).map(a=>({entry:a,...function(a){let b=a;b.startsWith("./")&&(b=b.slice(2));let c=b.endsWith("/");return c&&(b=b.slice(0,-1)),""===b&&m(g.ENTRY_PATH_UNSAFE,{reason:"empty"}),{path:b,trailingSlash:c}}(a.name)})),i=function(a,b){let c=[b.skillId,`${b.skillId}-${b.version}`],d=new Set(a.map(a=>a.split("/")[0]));if(1!==d.size)return null;let e=[...d][0];return a.some(a=>a.startsWith(`${e}/`))?(c.includes(e)||m(g.LAYOUT_INVALID,{reason:"root-directory",entry:l(e)}),e):null}(h.map(a=>a.path),b),j=[],k=[],q=new Map,r=new Map,s=0;for(let a of h){let b=a.path;if(null!==i){if(b===i)continue;b=b.slice(i.length+1)}let c=a.entry.isDirectory||a.trailingSlash,d=(0,e.r5)(b,"/entry");d.ok||m(g.ENTRY_PATH_UNSAFE,{entry:l(b),reason:d.errors[0].message}),q.has(b)&&m(g.ENTRY_DUPLICATE,{entry:l(b)});let h=b.split("/").map(a=>(0,e.vy)(a)).join("/");if(void 0!==r.get(h)&&m(g.ENTRY_COLLISION,{entry:l(b)}),q.set(b,c),r.set(h,b),c){k.push(b);continue}(s+=a.entry.size)>0x4000000&&m(g.SIZE_LIMIT_EXCEEDED,{limit:0x4000000});let n=new Uint8Array(a.entry.bytes);j.push({path:b,size:a.entry.size,sha256:(0,f.Q_)(n),executable:(73&a.entry.mode)!=0,bytes:n})}for(let a of(j.filter(a=>a.path!==e.KH).length>e.xP&&m(g.ENTRY_LIMIT_EXCEEDED,{limit:e.xP}),k))j.some(b=>b.path===a)&&m(g.ENTRY_DUPLICATE,{entry:l(a)});for(let a of j){let b=a.path.split("/").slice(0,-1),c="";for(let d of b)c=""===c?d:`${c}/${d}`,j.some(a=>a.path===c)&&m(g.ENTRY_PATH_UNSAFE,{entry:l(a.path),reason:"parent-is-file"})}return{rootName:i,files:j,directories:k,compressedSize:a.byteLength,decompressedSize:c.byteLength}}}};
|