gsd-pi 2.78.1-dev.0fdacd524 → 2.78.1-dev.2d3fd6e71
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/README.md +15 -7
- package/dist/cli-auto-routing.d.ts +1 -0
- package/dist/cli-auto-routing.js +5 -0
- package/dist/cli.js +5 -14
- package/dist/headless-recover.d.ts +23 -0
- package/dist/headless-recover.js +93 -0
- package/dist/headless.js +9 -0
- package/dist/help-text.js +1 -0
- package/dist/loader.js +15 -3
- package/dist/resource-loader.js +26 -17
- package/dist/resources/.managed-resources-content-hash +1 -1
- package/dist/resources/GSD-WORKFLOW.md +29 -42
- package/dist/resources/extensions/async-jobs/job-manager.js +4 -0
- package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.js +3 -2
- package/dist/resources/extensions/bg-shell/utilities.js +2 -1
- package/dist/resources/extensions/browser-tools/tools/intent.js +8 -1
- package/dist/resources/extensions/claude-code-cli/stream-adapter.js +22 -8
- package/dist/resources/extensions/github-sync/cli.js +3 -0
- package/dist/resources/extensions/github-sync/sync.js +86 -58
- package/dist/resources/extensions/gsd/auto/phases.js +87 -23
- package/dist/resources/extensions/gsd/auto/session.js +6 -0
- package/dist/resources/extensions/gsd/auto-artifact-paths.js +49 -31
- package/dist/resources/extensions/gsd/auto-dashboard.js +13 -2
- package/dist/resources/extensions/gsd/auto-direct-dispatch.js +2 -0
- package/dist/resources/extensions/gsd/auto-dispatch.js +238 -90
- package/dist/resources/extensions/gsd/auto-post-unit.js +108 -46
- package/dist/resources/extensions/gsd/auto-prompts.js +76 -6
- package/dist/resources/extensions/gsd/auto-recovery.js +69 -15
- package/dist/resources/extensions/gsd/auto-start.js +54 -64
- package/dist/resources/extensions/gsd/auto-timeout-recovery.js +18 -0
- package/dist/resources/extensions/gsd/auto-timers.js +24 -4
- package/dist/resources/extensions/gsd/auto-worktree.js +318 -212
- package/dist/resources/extensions/gsd/auto.js +112 -18
- package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +21 -3
- package/dist/resources/extensions/gsd/bootstrap/db-tools.js +40 -7
- package/dist/resources/extensions/gsd/bootstrap/dynamic-tools.js +9 -77
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +94 -17
- package/dist/resources/extensions/gsd/bootstrap/system-context.js +3 -4
- package/dist/resources/extensions/gsd/bootstrap/write-gate.js +142 -63
- package/dist/resources/extensions/gsd/branch-patterns.js +3 -3
- package/dist/resources/extensions/gsd/commands/catalog.js +7 -6
- package/dist/resources/extensions/gsd/commands/context.js +41 -5
- package/dist/resources/extensions/gsd/commands/dispatcher.js +11 -5
- package/dist/resources/extensions/gsd/commands/handlers/auto.js +2 -1
- package/dist/resources/extensions/gsd/commands/handlers/core.js +2 -0
- package/dist/resources/extensions/gsd/commands/handlers/ops.js +5 -0
- package/dist/resources/extensions/gsd/commands/handlers/workflow.js +24 -2
- package/dist/resources/extensions/gsd/commands-bootstrap.js +6 -0
- package/dist/resources/extensions/gsd/commands-codebase.js +2 -1
- package/dist/resources/extensions/gsd/commands-config.js +3 -3
- package/dist/resources/extensions/gsd/commands-debug.js +22 -1
- package/dist/resources/extensions/gsd/commands-eval-review.js +534 -0
- package/dist/resources/extensions/gsd/commands-extensions.js +4 -4
- package/dist/resources/extensions/gsd/commands-handlers.js +8 -8
- package/dist/resources/extensions/gsd/commands-logs.js +2 -1
- package/dist/resources/extensions/gsd/commands-mcp-status.js +2 -2
- package/dist/resources/extensions/gsd/commands-scan.js +2 -1
- package/dist/resources/extensions/gsd/commands-ship.js +67 -1
- package/dist/resources/extensions/gsd/commands-workflow-templates.js +5 -4
- package/dist/resources/extensions/gsd/context-budget.js +11 -3
- package/dist/resources/extensions/gsd/db-writer.js +150 -92
- package/dist/resources/extensions/gsd/deep-project-setup-policy.js +212 -0
- package/dist/resources/extensions/gsd/delegation-policy.js +155 -0
- package/dist/resources/extensions/gsd/detection.js +7 -7
- package/dist/resources/extensions/gsd/dispatch-guard.js +6 -10
- package/dist/resources/extensions/gsd/docs/preferences-reference.md +6 -4
- package/dist/resources/extensions/gsd/doctor-engine-checks.js +2 -2
- package/dist/resources/extensions/gsd/doctor-providers.js +2 -2
- package/dist/resources/extensions/gsd/doctor-runtime-checks.js +54 -0
- package/dist/resources/extensions/gsd/eval-review-schema.js +208 -0
- package/dist/resources/extensions/gsd/forensics.js +10 -4
- package/dist/resources/extensions/gsd/git-service.js +74 -4
- package/dist/resources/extensions/gsd/gsd-db.js +271 -10
- package/dist/resources/extensions/gsd/gsd-home.js +29 -0
- package/dist/resources/extensions/gsd/guided-flow-queue.js +1 -1
- package/dist/resources/extensions/gsd/guided-flow.js +390 -121
- package/dist/resources/extensions/gsd/init-wizard.js +16 -23
- package/dist/resources/extensions/gsd/interrupted-session.js +37 -2
- package/dist/resources/extensions/gsd/key-manager.js +2 -2
- package/dist/resources/extensions/gsd/markdown-renderer.js +59 -66
- package/dist/resources/extensions/gsd/metrics.js +287 -1
- package/dist/resources/extensions/gsd/migrate/command.js +3 -3
- package/dist/resources/extensions/gsd/milestone-scope-classifier.js +10 -8
- package/dist/resources/extensions/gsd/native-git-bridge.js +19 -42
- package/dist/resources/extensions/gsd/onboarding-state.js +2 -2
- package/dist/resources/extensions/gsd/parallel-merge.js +14 -13
- package/dist/resources/extensions/gsd/parallel-monitor-overlay.js +5 -2
- package/dist/resources/extensions/gsd/paths.js +151 -9
- package/dist/resources/extensions/gsd/planning-depth.js +114 -0
- package/dist/resources/extensions/gsd/preferences-models.js +18 -1
- package/dist/resources/extensions/gsd/preferences-skills.js +2 -1
- package/dist/resources/extensions/gsd/preferences-types.js +4 -0
- package/dist/resources/extensions/gsd/preferences-validation.js +9 -0
- package/dist/resources/extensions/gsd/preferences.js +20 -4
- package/dist/resources/extensions/gsd/project-research-policy.js +182 -0
- package/dist/resources/extensions/gsd/prompt-loader.js +2 -3
- package/dist/resources/extensions/gsd/prompts/complete-slice.md +5 -5
- package/dist/resources/extensions/gsd/prompts/execute-task.md +3 -3
- package/dist/resources/extensions/gsd/prompts/guided-discuss-milestone.md +8 -1
- package/dist/resources/extensions/gsd/prompts/guided-discuss-project.md +148 -0
- package/dist/resources/extensions/gsd/prompts/guided-discuss-requirements.md +126 -0
- package/dist/resources/extensions/gsd/prompts/guided-discuss-slice.md +8 -1
- package/dist/resources/extensions/gsd/prompts/guided-research-decision.md +70 -0
- package/dist/resources/extensions/gsd/prompts/guided-research-project.md +120 -0
- package/dist/resources/extensions/gsd/prompts/guided-workflow-preferences.md +68 -0
- package/dist/resources/extensions/gsd/prompts/plan-milestone.md +8 -2
- package/dist/resources/extensions/gsd/prompts/plan-slice.md +9 -7
- package/dist/resources/extensions/gsd/prompts/refine-slice.md +1 -1
- package/dist/resources/extensions/gsd/prompts/system.md +4 -4
- package/dist/resources/extensions/gsd/queue-order.js +6 -1
- package/dist/resources/extensions/gsd/repo-identity.js +20 -9
- package/dist/resources/extensions/gsd/rethink.js +2 -1
- package/dist/resources/extensions/gsd/safety/git-checkpoint.js +8 -1
- package/dist/resources/extensions/gsd/schemas/__fixtures__/valid-project.md +26 -0
- package/dist/resources/extensions/gsd/schemas/__fixtures__/valid-requirements.md +57 -0
- package/dist/resources/extensions/gsd/schemas/__fixtures__/valid-roadmap.md +19 -0
- package/dist/resources/extensions/gsd/schemas/parsers.js +276 -0
- package/dist/resources/extensions/gsd/schemas/validate.js +364 -0
- package/dist/resources/extensions/gsd/skill-telemetry.js +3 -2
- package/dist/resources/extensions/gsd/slice-cadence.js +56 -7
- package/dist/resources/extensions/gsd/state.js +91 -372
- package/dist/resources/extensions/gsd/templates/project.md +10 -0
- package/dist/resources/extensions/gsd/token-counter.js +1 -0
- package/dist/resources/extensions/gsd/tools/complete-milestone.js +6 -5
- package/dist/resources/extensions/gsd/tools/complete-slice.js +7 -12
- package/dist/resources/extensions/gsd/tools/complete-task.js +19 -31
- package/dist/resources/extensions/gsd/tools/plan-slice.js +6 -5
- package/dist/resources/extensions/gsd/tools/validate-milestone.js +7 -5
- package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +74 -11
- package/dist/resources/extensions/gsd/unit-context-manifest.js +96 -1
- package/dist/resources/extensions/gsd/unit-runtime.js +88 -24
- package/dist/resources/extensions/gsd/uok/plan-v2.js +14 -1
- package/dist/resources/extensions/gsd/user-input-boundary.js +157 -0
- package/dist/resources/extensions/gsd/watch/header-renderer.js +2 -1
- package/dist/resources/extensions/gsd/workflow-install.js +2 -3
- package/dist/resources/extensions/gsd/workflow-manifest.js +2 -1
- package/dist/resources/extensions/gsd/workflow-mcp-auto-prep.js +3 -21
- package/dist/resources/extensions/gsd/workflow-mcp.js +41 -5
- package/dist/resources/extensions/gsd/workflow-migration.js +4 -3
- package/dist/resources/extensions/gsd/workflow-plugins.js +3 -5
- package/dist/resources/extensions/gsd/workflow-reconcile.js +3 -3
- package/dist/resources/extensions/gsd/workflow-templates.js +2 -3
- package/dist/resources/extensions/gsd/workspace.js +59 -0
- package/dist/resources/extensions/gsd/worktree-command.js +4 -3
- package/dist/resources/extensions/gsd/worktree-manager.js +6 -6
- package/dist/resources/extensions/gsd/worktree-resolver.js +45 -8
- package/dist/resources/extensions/gsd/worktree-root.js +48 -9
- package/dist/resources/extensions/gsd/write-intercept.js +3 -3
- package/dist/resources/extensions/mcp-client/index.js +2 -2
- package/dist/resources/extensions/remote-questions/remote-command.js +2 -1
- package/dist/resources/extensions/remote-questions/status.js +2 -5
- package/dist/resources/extensions/remote-questions/store.js +2 -5
- package/dist/resources/extensions/search-the-web/provider.js +9 -8
- package/dist/resources/extensions/shared/next-action-ui.js +7 -0
- package/dist/resources/extensions/subagent/index.js +22 -17
- package/dist/resources/extensions/subagent/isolation.js +2 -2
- package/dist/resources/extensions/ttsr/rule-loader.js +2 -3
- package/dist/resources/extensions/voice/index.js +3 -2
- package/dist/resources/extensions/voice/linux-ready.js +2 -2
- package/dist/resources/skills/verify-before-complete/SKILL.md +1 -1
- package/dist/tool-bootstrap.js +7 -0
- package/dist/tsconfig.extensions.tsbuildinfo +1 -1
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +16 -16
- package/dist/web/standalone/.next/build-manifest.json +4 -4
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/react-loadable-manifest.json +7 -7
- package/dist/web/standalone/.next/required-server-files.json +1 -1
- package/dist/web/standalone/.next/server/app/_global-error/page.js +3 -3
- package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found/page.js +2 -2
- package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +2 -2
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/boot/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/browse-directories/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/captures/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/cleanup/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/dev-mode/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/doctor/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/experimental/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/export-data/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/forensics/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/history/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/hooks/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/inspect/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/knowledge/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/live-state/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/notifications/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/onboarding/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/preferences/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/recovery/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/remote-questions/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/browser/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/command/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/session/events/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/session/events/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/manage/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/settings-data/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/shutdown/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/skill-health/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/steer/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/switch-root/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +3 -3
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/undo/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +3 -3
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/page.js +2 -2
- package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +16 -16
- package/dist/web/standalone/.next/server/chunks/2331.js +16 -16
- package/dist/web/standalone/.next/server/chunks/4741.js +12 -12
- package/dist/web/standalone/.next/server/chunks/5822.js +2 -2
- package/dist/web/standalone/.next/server/chunks/63.js +8 -8
- package/dist/web/standalone/.next/server/chunks/6336.js +1 -0
- package/dist/web/standalone/.next/server/chunks/6897.js +3 -3
- package/dist/web/standalone/.next/server/functions-config-manifest.json +9 -0
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/middleware-manifest.json +2 -29
- package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/dist/web/standalone/.next/server/middleware.js +12 -4
- package/dist/web/standalone/.next/server/pages/404.html +1 -1
- package/dist/web/standalone/.next/server/pages/500.html +1 -1
- package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
- package/dist/web/standalone/.next/server/webpack-runtime.js +1 -1
- package/dist/web/standalone/.next/static/chunks/{9058.01ef3a463bda88f1.js → 2059.d6f49d697b624f2b.js} +2 -2
- package/dist/web/standalone/.next/static/chunks/2824.461404167557f2cd.js +1 -0
- package/dist/web/standalone/.next/static/chunks/363642f4.c6481b47ee815ba0.js +1 -0
- package/dist/web/standalone/.next/static/chunks/{3794-42fdce068d44fa4f.js → 3794-3fb4e6ee851037bb.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/{4447.5bad7871be61ca73.js → 4447.fe6f304888d5ac71.js} +2 -2
- package/dist/web/standalone/.next/static/chunks/5326.def6842b53fecd26.js +1 -0
- package/dist/web/standalone/.next/static/chunks/{8336.31b019697882acfb.js → 8336.6f6f30e410419aff.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/app/{page-9bf2e0c50fb2ca05.js → page-fab3ebb85b006001.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/{framework-711ef29bc66f648c.js → framework-34a8c4228d7fd161.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/{main-6919d9dd919bd15f.js → main-2b7d1294417bb6bc.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/webpack-d82dbee6356c1733.js +1 -0
- package/dist/web/standalone/.next/static/css/{632cd626b1731d88.css → 54ec2745c1da488b.css} +1 -1
- package/dist/web/standalone/node_modules/@next/env/package.json +1 -1
- package/dist/web/standalone/node_modules/baseline-browser-mapping/dist/index.cjs +1 -1
- package/dist/web/standalone/node_modules/baseline-browser-mapping/package.json +3 -3
- package/dist/web/standalone/node_modules/caniuse-lite/data/agents.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/browserVersions.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/aac.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/abortcontroller.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/ac3-ec3.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/accelerometer.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/addeventlistener.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/alternate-stylesheet.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/ambient-light.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/apng.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/array-find-index.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/array-find.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/array-flat.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/array-includes.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/arrow-functions.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/asmjs.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/async-clipboard.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/async-functions.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/atob-btoa.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/audio-api.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/audio.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/audiotracks.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/autofocus.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/auxclick.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/av1.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/avif.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/background-attachment.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/background-clip-text.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/background-img-opts.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/background-position-x-y.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/background-repeat-round-space.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/background-sync.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/battery-status.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/beacon.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/beforeafterprint.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/bigint.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/blobbuilder.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/bloburls.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/border-image.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/border-radius.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/broadcastchannel.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/brotli.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/calc.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/canvas-blending.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/canvas-text.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/canvas.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/ch-unit.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/chacha20-poly1305.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/channel-messaging.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/childnode-remove.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/classlist.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/clipboard.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/colr-v1.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/colr.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/comparedocumentposition.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/console-basic.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/console-time.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/const.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/constraint-validation.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/contenteditable.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/cookie-store-api.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/cors.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/createimagebitmap.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/credential-management.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/cross-document-view-transitions.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/cryptography.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-all.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-anchor-positioning.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-animation.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-any-link.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-appearance.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-at-counter-style.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-autofill.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-backdrop-filter.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-background-offsets.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-boxshadow.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-canvas.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-caret-color.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-cascade-layers.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-cascade-scope.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-case-insensitive.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-clip-path.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-color-adjust.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-color-function.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-conic-gradients.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-container-queries-style.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-container-queries.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-container-query-units.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-containment.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-content-visibility.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-counters.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-crisp-edges.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-cross-fade.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-default-pseudo.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-deviceadaptation.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-dir-pseudo.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-display-contents.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-element-function.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-env-function.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-exclusions.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-featurequeries.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-file-selector-button.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-filter-function.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-filters.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-first-letter.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-first-line.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-fixed.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-focus-visible.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-focus-within.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-font-palette.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-font-stretch.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-gencontent.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-gradients.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-grid-animation.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-grid-lanes.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-grid.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-has.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-hyphens.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-if.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-image-orientation.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-image-set.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-in-out-of-range.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-initial-letter.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-initial-value.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-lch-lab.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-letter-spacing.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-line-clamp.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-logical-props.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-marker-pseudo.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-masks.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-matches-pseudo.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-math-functions.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-media-interaction.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-media-range-syntax.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-media-resolution.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-media-scripting.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-mediaqueries.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-mixblendmode.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-module-scripts.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-motion-paths.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-namespaces.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-nesting.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-not-sel-list.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-nth-child-of.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-opacity.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-optional-pseudo.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-overflow-anchor.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-overflow-overlay.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-overflow.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-page-break.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-paged-media.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-paint-api.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-placeholder-shown.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-placeholder.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-print-color-adjust.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-read-only-write.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-rebeccapurple.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-reflections.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-regions.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-relative-colors.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-repeating-gradients.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-resize.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-revert-value.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-rrggbbaa.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-scroll-behavior.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-scrollbar.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-sel2.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-sel3.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-selection.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-shapes.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-snappoints.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-sticky.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-subgrid.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-supports-api.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-table.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-text-align-last.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-text-box-trim.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-text-indent.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-text-justify.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-text-orientation.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-text-spacing.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-text-wrap-balance.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-textshadow.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-touch-action.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-transitions.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-unicode-bidi.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-unset-value.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-variables.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-when-else.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-widows-orphans.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-width-stretch.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-writing-mode.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-zoom.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css3-attr.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css3-boxsizing.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css3-colors.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css3-cursors-grab.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css3-cursors-newer.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css3-cursors.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/css3-tabsize.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/currentcolor.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/custom-elements.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/custom-elementsv1.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/customevent.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/customizable-select.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/datalist.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/dataset.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/datauri.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/declarative-shadow-dom.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/decorators.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/details.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/deviceorientation.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/devicepixelratio.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/dialog.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/dispatchevent.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/dnssec.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/do-not-track.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/document-currentscript.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/document-execcommand.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/document-policy.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/document-scrollingelement.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/documenthead.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/dom-manip-convenience.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/dom-range.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/domcontentloaded.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/dommatrix.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/download.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/dragndrop.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/element-closest.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/element-from-point.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/element-scroll-methods.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/eme.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/eot.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/es5.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/es6-class.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/es6-generators.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/es6-module.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/es6-number.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/es6-string-includes.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/es6.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/eventsource.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/extended-system-fonts.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/feature-policy.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/fetch.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/fieldset-disabled.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/fileapi.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/filereader.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/filereadersync.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/filesystem.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/flac.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/flexbox-gap.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/flexbox.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/flow-root.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/focusin-focusout-events.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/font-family-system-ui.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/font-feature.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/font-kerning.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/font-loading.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/font-size-adjust.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/font-smooth.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/font-unicode-range.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/font-variant-alternates.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/font-variant-numeric.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/fontface.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/form-attribute.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/form-submit-attributes.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/form-validation.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/forms.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/fullscreen.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/gamepad.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/geolocation.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/getboundingclientrect.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/getcomputedstyle.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/getelementsbyclassname.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/getrandomvalues.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/gyroscope.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/hardwareconcurrency.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/hashchange.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/heif.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/hevc.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/hidden.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/high-resolution-time.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/history.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/html-media-capture.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/html5semantic.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/http-live-streaming.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/http2.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/http3.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/iframe-sandbox.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/iframe-seamless.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/iframe-srcdoc.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/imagecapture.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/ime.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/import-maps.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/imports.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/indexeddb.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/indexeddb2.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/inline-block.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/innertext.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-color.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-datetime.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-email-tel-url.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-event.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-file-accept.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-file-directory.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-file-multiple.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-inputmode.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-minlength.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-number.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-pattern.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-placeholder.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-range.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-search.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-selection.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/insert-adjacent.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/insertadjacenthtml.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/internationalization.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/intersectionobserver-v2.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/intersectionobserver.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/intl-pluralrules.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/intrinsic-width.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/jpeg2000.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/jpegxl.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/jpegxr.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/json.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/keyboardevent-code.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/keyboardevent-key.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/keyboardevent-location.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/keyboardevent-which.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/lazyload.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/let.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/link-icon-png.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/link-icon-svg.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/link-rel-preconnect.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/link-rel-prefetch.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/link-rel-preload.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/link-rel-prerender.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/loading-lazy-attr.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/loading-lazy-media.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/localecompare.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/magnetometer.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/matchesselector.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/matchmedia.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/mathml.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/maxlength.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/mdn-css-backdrop-pseudo-element.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate-override.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-plaintext.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/mdn-text-decoration-color.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/mdn-text-decoration-line.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/mdn-text-decoration-shorthand.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/mdn-text-decoration-style.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/media-fragments.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/mediarecorder.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/mediasource.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/menu.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/meta-theme-color.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/meter.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/midi.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/minmaxwh.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/mp3.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/mpeg-dash.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/mpeg4.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/multibackgrounds.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/multicolumn.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/mutation-events.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/mutationobserver.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/namevalue-storage.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/native-filesystem-api.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/nav-timing.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/netinfo.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/notifications.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/object-entries.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/object-fit.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/object-observe.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/object-values.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/objectrtc.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/offline-apps.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/offscreencanvas.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/ogg-vorbis.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/ogv.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/ol-reversed.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/once-event-listener.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/online-status.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/opus.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/orientation-sensor.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/outline.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/pad-start-end.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/page-transition-events.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/pagevisibility.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/passive-event-listener.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/passkeys.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/passwordrules.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/path2d.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/payment-request.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/pdf-viewer.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/permissions-api.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/permissions-policy.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/picture-in-picture.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/picture.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/ping.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/png-alpha.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/pointer-events.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/pointer.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/pointerlock.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/portals.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/prefers-color-scheme.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/progress.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/promise-finally.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/promises.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/proximity.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/proxy.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/publickeypinning.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/push-api.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/queryselector.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/readonly-attr.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/referrer-policy.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/registerprotocolhandler.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/rel-noopener.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/rel-noreferrer.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/rellist.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/rem.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/requestanimationframe.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/requestidlecallback.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/resizeobserver.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/resource-timing.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/rest-parameters.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/rtcpeerconnection.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/ruby.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/run-in.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/screen-orientation.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/script-async.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/script-defer.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/scrollintoview.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/sdch.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/selection-api.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/server-timing.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/serviceworkers.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/setimmediate.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/shadowdom.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/shadowdomv1.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/sharedarraybuffer.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/sharedworkers.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/sni.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/spdy.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/speech-recognition.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/speech-synthesis.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/spellcheck-attribute.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/sql-storage.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/srcset.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/stream.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/streams.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/stricttransportsecurity.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/style-scoped.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/subresource-bundling.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/subresource-integrity.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/svg-css.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/svg-filters.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/svg-fonts.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/svg-fragment.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/svg-html.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/svg-html5.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/svg-img.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/svg-smil.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/svg.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/sxg.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/tabindex-attr.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/template-literals.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/template.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/temporal.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/testfeat.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/text-decoration.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/text-emphasis.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/text-overflow.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/text-size-adjust.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/text-stroke.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/textcontent.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/textencoder.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/tls1-1.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/tls1-2.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/tls1-3.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/touch.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/transforms2d.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/transforms3d.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/trusted-types.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/ttf.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/typedarrays.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/u2f.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/unhandledrejection.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/url.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/urlsearchparams.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/use-strict.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/user-select-none.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/user-timing.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/variable-fonts.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/vector-effect.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/vibration.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/video.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/videotracks.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/view-transitions.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/viewport-unit-variants.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/viewport-units.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/wai-aria.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/wake-lock.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-bigint.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-bulk-memory.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-extended-const.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-gc.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-multi-memory.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-multi-value.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-mutable-globals.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-nontrapping-fptoint.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-reference-types.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-relaxed-simd.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-signext.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-simd.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-tail-calls.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-threads.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/wav.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/wbr-element.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/web-animation.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/web-app-manifest.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/web-bluetooth.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/web-serial.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/web-share.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/webauthn.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/webcodecs.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/webgl.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/webgl2.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/webgpu.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/webhid.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/webkit-user-drag.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/webm.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/webnfc.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/webp.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/websockets.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/webtransport.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/webusb.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/webvr.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/webvtt.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/webworkers.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/webxr.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/will-change.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/woff.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/woff2.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/word-break.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/wordwrap.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/x-doc-messaging.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/x-frame-options.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/xhr2.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/xhtml.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/xhtmlsmil.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/xml-serializer.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/data/features/zstd.js +1 -1
- package/dist/web/standalone/node_modules/caniuse-lite/package.json +7 -7
- package/dist/web/standalone/node_modules/next/dist/build/swc/index.js +1 -1
- package/dist/web/standalone/node_modules/next/dist/build/webpack-config.js +3 -3
- package/dist/web/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +7 -7
- package/dist/web/standalone/node_modules/next/dist/compiled/next-server/pages.runtime.prod.js +6 -6
- package/dist/web/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +3 -3
- package/dist/web/standalone/node_modules/next/dist/server/config-schema.js +10 -2
- package/dist/web/standalone/node_modules/next/dist/server/config.js +1 -1
- package/dist/web/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +2 -2
- package/dist/web/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
- package/dist/web/standalone/node_modules/next/dist/server/lib/app-info-log.js +1 -1
- package/dist/web/standalone/node_modules/next/dist/server/lib/start-server.js +1 -1
- package/dist/web/standalone/node_modules/next/dist/server/render.js +27 -20
- package/dist/web/standalone/node_modules/next/dist/shared/lib/errors/canary-only-config-error.js +1 -1
- package/dist/web/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
- package/dist/web/standalone/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
- package/dist/web/standalone/node_modules/next/dist/telemetry/events/version.js +2 -2
- package/dist/web/standalone/node_modules/next/package.json +15 -15
- package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/container.js +26 -18
- package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/css-syntax-error.js +47 -14
- package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/input.js +54 -29
- package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/lazy-result.js +47 -37
- package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/map-generator.js +26 -9
- package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/no-work-result.js +57 -55
- package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/node.js +99 -31
- package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/parser.js +10 -9
- package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/previous-map.js +30 -11
- package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/processor.js +7 -7
- package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/result.js +5 -5
- package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/stringifier.js +69 -28
- package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/tokenize.js +6 -2
- package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/package.json +48 -48
- package/dist/web/standalone/node_modules/react/cjs/react.development.js +1 -1
- package/dist/web/standalone/node_modules/react/cjs/react.production.js +1 -1
- package/dist/web/standalone/node_modules/react/package.json +1 -1
- package/dist/web/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js +1 -1
- package/dist/web/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.node.production.js +1 -1
- package/dist/web/standalone/node_modules/react-dom/cjs/react-dom-server.browser.production.js +3 -3
- package/dist/web/standalone/node_modules/react-dom/cjs/react-dom-server.edge.production.js +3 -3
- package/dist/web/standalone/node_modules/react-dom/cjs/react-dom-server.node.production.js +3 -3
- package/dist/web/standalone/node_modules/react-dom/cjs/react-dom.production.js +1 -1
- package/dist/web/standalone/node_modules/react-dom/package.json +2 -2
- package/dist/web/standalone/package.json +12 -7
- package/dist/web/standalone/server.js +1 -1
- package/dist/worktree-cli.d.ts +5 -4
- package/dist/worktree-cli.js +17 -17
- package/package.json +2 -2
- package/packages/mcp-server/README.md +13 -11
- package/packages/mcp-server/dist/env-writer.d.ts +5 -1
- package/packages/mcp-server/dist/env-writer.d.ts.map +1 -1
- package/packages/mcp-server/dist/env-writer.js +41 -8
- package/packages/mcp-server/dist/env-writer.js.map +1 -1
- package/packages/mcp-server/dist/readers/graph.d.ts.map +1 -1
- package/packages/mcp-server/dist/readers/graph.js +7 -6
- package/packages/mcp-server/dist/readers/graph.js.map +1 -1
- package/packages/mcp-server/dist/readers/paths.d.ts +2 -0
- package/packages/mcp-server/dist/readers/paths.d.ts.map +1 -1
- package/packages/mcp-server/dist/readers/paths.js +163 -59
- package/packages/mcp-server/dist/readers/paths.js.map +1 -1
- package/packages/mcp-server/dist/remote-questions.d.ts +27 -0
- package/packages/mcp-server/dist/remote-questions.d.ts.map +1 -1
- package/packages/mcp-server/dist/remote-questions.js +47 -2
- package/packages/mcp-server/dist/remote-questions.js.map +1 -1
- package/packages/mcp-server/dist/server.d.ts +39 -1
- package/packages/mcp-server/dist/server.d.ts.map +1 -1
- package/packages/mcp-server/dist/server.js +228 -52
- package/packages/mcp-server/dist/server.js.map +1 -1
- package/packages/mcp-server/dist/session-manager.d.ts +6 -1
- package/packages/mcp-server/dist/session-manager.d.ts.map +1 -1
- package/packages/mcp-server/dist/session-manager.js +35 -13
- package/packages/mcp-server/dist/session-manager.js.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.d.ts +7 -1
- package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.js +160 -30
- package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
- package/packages/mcp-server/src/env-writer.test.ts +76 -1
- package/packages/mcp-server/src/env-writer.ts +48 -9
- package/packages/mcp-server/src/import-candidates.test.ts +9 -4
- package/packages/mcp-server/src/mcp-server.test.ts +422 -2
- package/packages/mcp-server/src/parse-workflow-args.test.ts +80 -0
- package/packages/mcp-server/src/readers/graph.test.ts +5 -2
- package/packages/mcp-server/src/readers/graph.ts +14 -6
- package/packages/mcp-server/src/readers/paths.test.ts +67 -0
- package/packages/mcp-server/src/readers/paths.ts +173 -56
- package/packages/mcp-server/src/remote-questions.test.ts +103 -0
- package/packages/mcp-server/src/remote-questions.ts +53 -2
- package/packages/mcp-server/src/server.ts +284 -59
- package/packages/mcp-server/src/session-manager.ts +33 -12
- package/packages/mcp-server/src/workflow-tools.test.ts +230 -136
- package/packages/mcp-server/src/workflow-tools.ts +172 -34
- package/packages/mcp-server/tsconfig.tsbuildinfo +1 -1
- package/packages/native/dist/stream-process/index.js +207 -6
- package/packages/native/src/__tests__/stream-process.test.mjs +51 -18
- package/packages/native/src/stream-process/index.ts +249 -11
- package/packages/native/tsconfig.tsbuildinfo +1 -1
- package/packages/pi-ai/dist/providers/anthropic-bearer-auth.test.js +8 -2
- package/packages/pi-ai/dist/providers/anthropic-bearer-auth.test.js.map +1 -1
- package/packages/pi-ai/dist/providers/minimax-tool-name.test.js +8 -2
- package/packages/pi-ai/dist/providers/minimax-tool-name.test.js.map +1 -1
- package/packages/pi-ai/src/providers/anthropic-bearer-auth.test.ts +8 -2
- package/packages/pi-ai/src/providers/minimax-tool-name.test.ts +9 -2
- package/packages/pi-ai/tsconfig.tsbuildinfo +1 -1
- package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.js +278 -0
- package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/agent-session.d.ts +7 -0
- package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/agent-session.js +125 -55
- package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts +1 -0
- package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.js +43 -2
- package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.test.js +79 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/tools/bash-spawn-windows.test.js +24 -6
- package/packages/pi-coding-agent/dist/core/tools/bash-spawn-windows.test.js.map +1 -1
- package/packages/pi-coding-agent/src/core/agent-session-abort-order.test.ts +319 -0
- package/packages/pi-coding-agent/src/core/agent-session.ts +128 -59
- package/packages/pi-coding-agent/src/core/extensions/runner.test.ts +89 -1
- package/packages/pi-coding-agent/src/core/extensions/runner.ts +46 -2
- package/packages/pi-coding-agent/src/core/tools/bash-spawn-windows.test.ts +26 -6
- package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -1
- package/src/resources/GSD-WORKFLOW.md +29 -42
- package/src/resources/extensions/async-jobs/job-manager.ts +3 -0
- package/src/resources/extensions/bg-shell/bg-shell-lifecycle.ts +3 -2
- package/src/resources/extensions/bg-shell/utilities.ts +2 -1
- package/src/resources/extensions/browser-tools/tools/intent.ts +13 -2
- package/src/resources/extensions/claude-code-cli/stream-adapter.ts +21 -8
- package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +34 -13
- package/src/resources/extensions/github-sync/cli.ts +3 -0
- package/src/resources/extensions/github-sync/sync.ts +88 -58
- package/src/resources/extensions/github-sync/tests/sync-source.test.ts +26 -0
- package/src/resources/extensions/gsd/auto/loop-deps.ts +1 -1
- package/src/resources/extensions/gsd/auto/phases.ts +100 -28
- package/src/resources/extensions/gsd/auto/session.ts +7 -0
- package/src/resources/extensions/gsd/auto-artifact-paths.ts +60 -30
- package/src/resources/extensions/gsd/auto-dashboard.ts +12 -2
- package/src/resources/extensions/gsd/auto-direct-dispatch.ts +2 -0
- package/src/resources/extensions/gsd/auto-dispatch.ts +257 -93
- package/src/resources/extensions/gsd/auto-post-unit.ts +131 -45
- package/src/resources/extensions/gsd/auto-prompts.ts +104 -7
- package/src/resources/extensions/gsd/auto-recovery.ts +75 -13
- package/src/resources/extensions/gsd/auto-start.ts +72 -72
- package/src/resources/extensions/gsd/auto-timeout-recovery.ts +22 -0
- package/src/resources/extensions/gsd/auto-timers.ts +37 -5
- package/src/resources/extensions/gsd/auto-worktree.ts +364 -238
- package/src/resources/extensions/gsd/auto.ts +130 -16
- package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +21 -2
- package/src/resources/extensions/gsd/bootstrap/db-tools.ts +38 -7
- package/src/resources/extensions/gsd/bootstrap/dynamic-tools.ts +9 -84
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +98 -18
- package/src/resources/extensions/gsd/bootstrap/system-context.ts +3 -4
- package/src/resources/extensions/gsd/bootstrap/tests/write-gate-basepath.test.ts +103 -0
- package/src/resources/extensions/gsd/bootstrap/write-gate.ts +165 -63
- package/src/resources/extensions/gsd/branch-patterns.ts +3 -3
- package/src/resources/extensions/gsd/commands/catalog.ts +7 -6
- package/src/resources/extensions/gsd/commands/context.ts +40 -6
- package/src/resources/extensions/gsd/commands/dispatcher.ts +11 -5
- package/src/resources/extensions/gsd/commands/handlers/auto.ts +2 -1
- package/src/resources/extensions/gsd/commands/handlers/core.ts +2 -0
- package/src/resources/extensions/gsd/commands/handlers/ops.ts +5 -0
- package/src/resources/extensions/gsd/commands/handlers/workflow.ts +23 -2
- package/src/resources/extensions/gsd/commands-bootstrap.ts +7 -0
- package/src/resources/extensions/gsd/commands-codebase.ts +2 -1
- package/src/resources/extensions/gsd/commands-config.ts +3 -3
- package/src/resources/extensions/gsd/commands-debug.ts +27 -1
- package/src/resources/extensions/gsd/commands-eval-review.ts +716 -0
- package/src/resources/extensions/gsd/commands-extensions.ts +4 -4
- package/src/resources/extensions/gsd/commands-handlers.ts +8 -8
- package/src/resources/extensions/gsd/commands-logs.ts +2 -1
- package/src/resources/extensions/gsd/commands-mcp-status.ts +2 -2
- package/src/resources/extensions/gsd/commands-scan.ts +2 -1
- package/src/resources/extensions/gsd/commands-ship.ts +101 -1
- package/src/resources/extensions/gsd/commands-workflow-templates.ts +5 -4
- package/src/resources/extensions/gsd/context-budget.ts +13 -2
- package/src/resources/extensions/gsd/db-writer.ts +169 -89
- package/src/resources/extensions/gsd/deep-project-setup-policy.ts +257 -0
- package/src/resources/extensions/gsd/delegation-policy.ts +197 -0
- package/src/resources/extensions/gsd/detection.ts +7 -7
- package/src/resources/extensions/gsd/dispatch-guard.ts +6 -11
- package/src/resources/extensions/gsd/docs/preferences-reference.md +6 -4
- package/src/resources/extensions/gsd/doctor-engine-checks.ts +2 -2
- package/src/resources/extensions/gsd/doctor-providers.ts +2 -2
- package/src/resources/extensions/gsd/doctor-runtime-checks.ts +53 -0
- package/src/resources/extensions/gsd/doctor-types.ts +1 -0
- package/src/resources/extensions/gsd/eval-review-schema.ts +243 -0
- package/src/resources/extensions/gsd/forensics.ts +10 -4
- package/src/resources/extensions/gsd/git-service.ts +81 -3
- package/src/resources/extensions/gsd/gsd-db.ts +272 -10
- package/src/resources/extensions/gsd/gsd-home.ts +30 -0
- package/src/resources/extensions/gsd/guided-flow-queue.ts +1 -1
- package/src/resources/extensions/gsd/guided-flow.ts +499 -122
- package/src/resources/extensions/gsd/init-wizard.ts +17 -20
- package/src/resources/extensions/gsd/interrupted-session.ts +39 -2
- package/src/resources/extensions/gsd/key-manager.ts +2 -2
- package/src/resources/extensions/gsd/markdown-renderer.ts +58 -79
- package/src/resources/extensions/gsd/metrics.ts +321 -1
- package/src/resources/extensions/gsd/migrate/command.ts +3 -3
- package/src/resources/extensions/gsd/milestone-scope-classifier.ts +15 -8
- package/src/resources/extensions/gsd/native-git-bridge.ts +19 -41
- package/src/resources/extensions/gsd/onboarding-state.ts +2 -2
- package/src/resources/extensions/gsd/parallel-merge.ts +14 -13
- package/src/resources/extensions/gsd/parallel-monitor-overlay.ts +5 -2
- package/src/resources/extensions/gsd/paths.ts +158 -9
- package/src/resources/extensions/gsd/planning-depth.ts +137 -0
- package/src/resources/extensions/gsd/preferences-models.ts +18 -1
- package/src/resources/extensions/gsd/preferences-skills.ts +2 -1
- package/src/resources/extensions/gsd/preferences-types.ts +11 -0
- package/src/resources/extensions/gsd/preferences-validation.ts +9 -0
- package/src/resources/extensions/gsd/preferences.ts +26 -5
- package/src/resources/extensions/gsd/project-research-policy.ts +259 -0
- package/src/resources/extensions/gsd/prompt-loader.ts +2 -3
- package/src/resources/extensions/gsd/prompts/complete-slice.md +5 -5
- package/src/resources/extensions/gsd/prompts/execute-task.md +3 -3
- package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +8 -1
- package/src/resources/extensions/gsd/prompts/guided-discuss-project.md +148 -0
- package/src/resources/extensions/gsd/prompts/guided-discuss-requirements.md +126 -0
- package/src/resources/extensions/gsd/prompts/guided-discuss-slice.md +8 -1
- package/src/resources/extensions/gsd/prompts/guided-research-decision.md +70 -0
- package/src/resources/extensions/gsd/prompts/guided-research-project.md +120 -0
- package/src/resources/extensions/gsd/prompts/guided-workflow-preferences.md +68 -0
- package/src/resources/extensions/gsd/prompts/plan-milestone.md +8 -2
- package/src/resources/extensions/gsd/prompts/plan-slice.md +9 -7
- package/src/resources/extensions/gsd/prompts/refine-slice.md +1 -1
- package/src/resources/extensions/gsd/prompts/system.md +4 -4
- package/src/resources/extensions/gsd/queue-order.ts +6 -1
- package/src/resources/extensions/gsd/repo-identity.ts +15 -9
- package/src/resources/extensions/gsd/rethink.ts +2 -1
- package/src/resources/extensions/gsd/safety/git-checkpoint.ts +10 -1
- package/src/resources/extensions/gsd/schemas/__fixtures__/valid-project.md +26 -0
- package/src/resources/extensions/gsd/schemas/__fixtures__/valid-requirements.md +57 -0
- package/src/resources/extensions/gsd/schemas/__fixtures__/valid-roadmap.md +19 -0
- package/src/resources/extensions/gsd/schemas/parsers.ts +346 -0
- package/src/resources/extensions/gsd/schemas/validate.ts +452 -0
- package/src/resources/extensions/gsd/skill-telemetry.ts +3 -2
- package/src/resources/extensions/gsd/slice-cadence.ts +71 -6
- package/src/resources/extensions/gsd/state.ts +91 -389
- package/src/resources/extensions/gsd/templates/project.md +10 -0
- package/src/resources/extensions/gsd/tests/artifact-corruption-2630.test.ts +1 -0
- package/src/resources/extensions/gsd/tests/artifact-validators.test.ts +524 -0
- package/src/resources/extensions/gsd/tests/auto-dashboard.test.ts +20 -0
- package/src/resources/extensions/gsd/tests/auto-discuss-milestone-deadlock-4973.test.ts +42 -17
- package/src/resources/extensions/gsd/tests/auto-loop.test.ts +97 -31
- package/src/resources/extensions/gsd/tests/auto-paused-session-validation.test.ts +6 -0
- package/src/resources/extensions/gsd/tests/auto-remediate-slice-status.test.ts +21 -34
- package/src/resources/extensions/gsd/tests/auto-session-scope.test.ts +331 -0
- package/src/resources/extensions/gsd/tests/auto-start-clean-runtime-db-gated.test.ts +32 -1
- package/src/resources/extensions/gsd/tests/auto-start-index-lock.test.ts +38 -0
- package/src/resources/extensions/gsd/tests/auto-worktree-registry.test.ts +176 -0
- package/src/resources/extensions/gsd/tests/auto-wrapup-inflight-guard.test.ts +56 -0
- package/src/resources/extensions/gsd/tests/commands-eval-review.test.ts +612 -0
- package/src/resources/extensions/gsd/tests/commands-ship-eval-warn.test.ts +155 -0
- package/src/resources/extensions/gsd/tests/complete-task-rollback-evidence.test.ts +6 -7
- package/src/resources/extensions/gsd/tests/complete-task.test.ts +8 -6
- package/src/resources/extensions/gsd/tests/completed-at-reconcile.test.ts +12 -27
- package/src/resources/extensions/gsd/tests/completed-units-metrics-sync.test.ts +18 -5
- package/src/resources/extensions/gsd/tests/context-budget.test.ts +28 -0
- package/src/resources/extensions/gsd/tests/crash-recovery.test.ts +50 -0
- package/src/resources/extensions/gsd/tests/custom-engine-loop-integration.test.ts +2 -1
- package/src/resources/extensions/gsd/tests/db-path-worktree-symlink.test.ts +4 -4
- package/src/resources/extensions/gsd/tests/db-writer-path-containment.test.ts +152 -0
- package/src/resources/extensions/gsd/tests/db-writer-root-artifact.test.ts +221 -0
- package/src/resources/extensions/gsd/tests/db-writer-scope.test.ts +230 -0
- package/src/resources/extensions/gsd/tests/db-writer.test.ts +165 -21
- package/src/resources/extensions/gsd/tests/debug-command-handler.test.ts +37 -0
- package/src/resources/extensions/gsd/tests/deep-mode-integration.test.ts +406 -0
- package/src/resources/extensions/gsd/tests/deep-planning-mode-dispatch.test.ts +881 -0
- package/src/resources/extensions/gsd/tests/deep-project-auto-loop.test.ts +1562 -0
- package/src/resources/extensions/gsd/tests/deep-project-setup-policy.test.ts +193 -0
- package/src/resources/extensions/gsd/tests/delegation-policy.test.ts +151 -0
- package/src/resources/extensions/gsd/tests/derive-state-crossval.test.ts +6 -5
- package/src/resources/extensions/gsd/tests/derive-state-db-disk-reconcile.test.ts +10 -38
- package/src/resources/extensions/gsd/tests/derive-state-db.test.ts +136 -56
- package/src/resources/extensions/gsd/tests/derive-state-draft.test.ts +3 -0
- package/src/resources/extensions/gsd/tests/derive-state-helpers.test.ts +119 -61
- package/src/resources/extensions/gsd/tests/derive-state.test.ts +4 -0
- package/src/resources/extensions/gsd/tests/dispatch-backgroundable-annotation.test.ts +55 -0
- package/src/resources/extensions/gsd/tests/dispatch-complete-milestone-guard.test.ts +6 -20
- package/src/resources/extensions/gsd/tests/dispatch-guard.test.ts +4 -5
- package/src/resources/extensions/gsd/tests/dispatcher-stuck-planning.test.ts +14 -15
- package/src/resources/extensions/gsd/tests/draft-promotion.test.ts +3 -23
- package/src/resources/extensions/gsd/tests/ensure-db-open.test.ts +11 -16
- package/src/resources/extensions/gsd/tests/escalation.test.ts +2 -1
- package/src/resources/extensions/gsd/tests/eval-review-schema.test.ts +282 -0
- package/src/resources/extensions/gsd/tests/gate-1b-orphan-discrimination.test.ts +193 -0
- package/src/resources/extensions/gsd/tests/gate-1b-recovery-bound-corrections.test.ts +246 -0
- package/src/resources/extensions/gsd/tests/gate-1b-recovery-bound.test.ts +218 -0
- package/src/resources/extensions/gsd/tests/git-checkpoint.test.ts +9 -0
- package/src/resources/extensions/gsd/tests/gsd-db-failed-open-restore.test.ts +117 -0
- package/src/resources/extensions/gsd/tests/gsd-db-workspace-scope.test.ts +226 -0
- package/src/resources/extensions/gsd/tests/gsd-db.test.ts +2 -1
- package/src/resources/extensions/gsd/tests/gsd-home.test.ts +43 -0
- package/src/resources/extensions/gsd/tests/gsd-no-project-error-runtime.test.ts +15 -1
- package/src/resources/extensions/gsd/tests/gsd-root-canonical.test.ts +66 -0
- package/src/resources/extensions/gsd/tests/gsd-root-home-guard.test.ts +149 -0
- package/src/resources/extensions/gsd/tests/gsdroot-worktree-detection.test.ts +15 -36
- package/src/resources/extensions/gsd/tests/guided-flow-prompt-consolidation.test.ts +133 -0
- package/src/resources/extensions/gsd/tests/handler-worktree-write-isolation.test.ts +57 -0
- package/src/resources/extensions/gsd/tests/has-pending-deep-stage.test.ts +98 -0
- package/src/resources/extensions/gsd/tests/init-skip-git.test.ts +19 -0
- package/src/resources/extensions/gsd/tests/init-wizard.test.ts +17 -0
- package/src/resources/extensions/gsd/tests/integration/auto-worktree.test.ts +1 -0
- package/src/resources/extensions/gsd/tests/integration/commands-eval-review.integration.test.ts +254 -0
- package/src/resources/extensions/gsd/tests/integration/doctor-runtime.test.ts +40 -0
- package/src/resources/extensions/gsd/tests/integration/git-service.test.ts +42 -0
- package/src/resources/extensions/gsd/tests/integration/parallel-merge.test.ts +15 -15
- package/src/resources/extensions/gsd/tests/integration/state-machine-edge-cases.test.ts +15 -5
- package/src/resources/extensions/gsd/tests/integration/workspace-collapse-integration.test.ts +371 -0
- package/src/resources/extensions/gsd/tests/journal-integration.test.ts +124 -7
- package/src/resources/extensions/gsd/tests/markdown-renderer.test.ts +84 -9
- package/src/resources/extensions/gsd/tests/md-importer.test.ts +2 -1
- package/src/resources/extensions/gsd/tests/memory-store.test.ts +3 -2
- package/src/resources/extensions/gsd/tests/metrics-atomic-merge.test.ts +222 -0
- package/src/resources/extensions/gsd/tests/metrics-lock-hardening.test.ts +400 -0
- package/src/resources/extensions/gsd/tests/metrics-lock-not-acquired.test.ts +141 -0
- package/src/resources/extensions/gsd/tests/metrics-lock-retry-sleep.test.ts +287 -0
- package/src/resources/extensions/gsd/tests/metrics-prune-cache-invalidation.test.ts +149 -0
- package/src/resources/extensions/gsd/tests/metrics-scope.test.ts +378 -0
- package/src/resources/extensions/gsd/tests/milestone-scope-classifier.test.ts +19 -0
- package/src/resources/extensions/gsd/tests/model-unittype-mapping.test.ts +19 -0
- package/src/resources/extensions/gsd/tests/native-git-bridge-exec-fallback.test.ts +22 -2
- package/src/resources/extensions/gsd/tests/none-mode-gates.test.ts +51 -3
- package/src/resources/extensions/gsd/tests/originalbase-path-comparison.test.ts +329 -0
- package/src/resources/extensions/gsd/tests/park-milestone.test.ts +2 -0
- package/src/resources/extensions/gsd/tests/path-cache-decoupled.test.ts +209 -0
- package/src/resources/extensions/gsd/tests/path-normalization-unified.test.ts +175 -0
- package/src/resources/extensions/gsd/tests/paths-cache.test.ts +170 -0
- package/src/resources/extensions/gsd/tests/pending-autostart-scope.test.ts +120 -0
- package/src/resources/extensions/gsd/tests/plan-milestone-artifact-verification.test.ts +40 -0
- package/src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +0 -43
- package/src/resources/extensions/gsd/tests/plan-slice.test.ts +33 -0
- package/src/resources/extensions/gsd/tests/planning-depth-setter.test.ts +172 -0
- package/src/resources/extensions/gsd/tests/post-unit-git-failure.test.ts +18 -0
- package/src/resources/extensions/gsd/tests/preferences.test.ts +72 -0
- package/src/resources/extensions/gsd/tests/prefs-wizard-coverage.test.ts +1 -0
- package/src/resources/extensions/gsd/tests/progressive-planning.test.ts +25 -16
- package/src/resources/extensions/gsd/tests/project-root-cwd-crash.test.ts +4 -4
- package/src/resources/extensions/gsd/tests/projection-regression.test.ts +1 -0
- package/src/resources/extensions/gsd/tests/prompt-budget-enforcement.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +232 -28
- package/src/resources/extensions/gsd/tests/quality-gates.test.ts +7 -16
- package/src/resources/extensions/gsd/tests/ready-phrase-no-files-4573.test.ts +267 -0
- package/src/resources/extensions/gsd/tests/register-hooks-compaction-checkpoint.test.ts +6 -1
- package/src/resources/extensions/gsd/tests/register-hooks-depth-verification.test.ts +286 -8
- package/src/resources/extensions/gsd/tests/replan-slice.test.ts +3 -0
- package/src/resources/extensions/gsd/tests/resolve-ts.mjs +4 -0
- package/src/resources/extensions/gsd/tests/resume-missing-worktree-warning.test.ts +209 -0
- package/src/resources/extensions/gsd/tests/rogue-file-detection.test.ts +3 -4
- package/src/resources/extensions/gsd/tests/slice-cadence.test.ts +36 -0
- package/src/resources/extensions/gsd/tests/slice-disk-reconcile.test.ts +10 -56
- package/src/resources/extensions/gsd/tests/stale-slice-rows.test.ts +15 -16
- package/src/resources/extensions/gsd/tests/start-auto-detached.test.ts +53 -0
- package/src/resources/extensions/gsd/tests/stash-pop-gsd-conflict.test.ts +8 -2
- package/src/resources/extensions/gsd/tests/stash-queued-context-files.test.ts +12 -6
- package/src/resources/extensions/gsd/tests/state-corruption-2945.test.ts +1 -0
- package/src/resources/extensions/gsd/tests/state-machine-full-walkthrough.test.ts +23 -27
- package/src/resources/extensions/gsd/tests/steer-worktree-path.test.ts +13 -14
- package/src/resources/extensions/gsd/tests/stop-auto-remote.test.ts +4 -3
- package/src/resources/extensions/gsd/tests/sync-layer-scope.test.ts +453 -0
- package/src/resources/extensions/gsd/tests/sync-worktree-skip-current.test.ts +10 -33
- package/src/resources/extensions/gsd/tests/teardown-chdir-failure-clears-registry.test.ts +162 -0
- package/src/resources/extensions/gsd/tests/teardown-cleanup-parity.test.ts +102 -0
- package/src/resources/extensions/gsd/tests/teardown-failure-clears-registry.test.ts +186 -0
- package/src/resources/extensions/gsd/tests/token-counter.test.ts +9 -0
- package/src/resources/extensions/gsd/tests/tool-invocation-error-loop-break.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/tool-param-optionality.test.ts +34 -0
- package/src/resources/extensions/gsd/tests/unit-context-manifest.test.ts +10 -0
- package/src/resources/extensions/gsd/tests/unit-runtime.test.ts +41 -0
- package/src/resources/extensions/gsd/tests/uok-plan-v2-wiring.test.ts +48 -0
- package/src/resources/extensions/gsd/tests/validate-milestone-write-order.test.ts +7 -8
- package/src/resources/extensions/gsd/tests/validate-milestone.test.ts +9 -15
- package/src/resources/extensions/gsd/tests/validator-scope-parity.test.ts +239 -0
- package/src/resources/extensions/gsd/tests/verify-artifact-tightened.test.ts +52 -1
- package/src/resources/extensions/gsd/tests/workflow-logger-wiring.test.ts +12 -7
- package/src/resources/extensions/gsd/tests/workflow-mcp-auto-prep.test.ts +4 -4
- package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +83 -4
- package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +241 -4
- package/src/resources/extensions/gsd/tests/workspace.test.ts +196 -0
- package/src/resources/extensions/gsd/tests/worktree-db-same-file.test.ts +13 -0
- package/src/resources/extensions/gsd/tests/worktree-main-branch.test.ts +5 -0
- package/src/resources/extensions/gsd/tests/worktree-path-injection.test.ts +2 -1
- package/src/resources/extensions/gsd/tests/worktree-resolver.test.ts +103 -0
- package/src/resources/extensions/gsd/tests/worktree-root-resolution.test.ts +50 -0
- package/src/resources/extensions/gsd/tests/worktree-root.test.ts +69 -0
- package/src/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +65 -71
- package/src/resources/extensions/gsd/tests/worktree-sync-tasks.test.ts +26 -151
- package/src/resources/extensions/gsd/tests/write-gate-predicates.test.ts +43 -41
- package/src/resources/extensions/gsd/tests/write-gate.test.ts +180 -57
- package/src/resources/extensions/gsd/tests/write-intercept.test.ts +1 -1
- package/src/resources/extensions/gsd/token-counter.ts +2 -1
- package/src/resources/extensions/gsd/tools/complete-milestone.ts +7 -5
- package/src/resources/extensions/gsd/tools/complete-slice.ts +7 -14
- package/src/resources/extensions/gsd/tools/complete-task.ts +19 -34
- package/src/resources/extensions/gsd/tools/plan-slice.ts +10 -9
- package/src/resources/extensions/gsd/tools/validate-milestone.ts +7 -5
- package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +81 -14
- package/src/resources/extensions/gsd/unit-context-manifest.ts +97 -1
- package/src/resources/extensions/gsd/unit-runtime.ts +76 -24
- package/src/resources/extensions/gsd/uok/plan-v2.ts +19 -1
- package/src/resources/extensions/gsd/user-input-boundary.ts +166 -0
- package/src/resources/extensions/gsd/watch/header-renderer.ts +2 -1
- package/src/resources/extensions/gsd/workflow-install.ts +2 -3
- package/src/resources/extensions/gsd/workflow-manifest.ts +4 -1
- package/src/resources/extensions/gsd/workflow-mcp-auto-prep.ts +2 -18
- package/src/resources/extensions/gsd/workflow-mcp.ts +43 -6
- package/src/resources/extensions/gsd/workflow-migration.ts +4 -3
- package/src/resources/extensions/gsd/workflow-plugins.ts +4 -5
- package/src/resources/extensions/gsd/workflow-reconcile.ts +3 -3
- package/src/resources/extensions/gsd/workflow-templates.ts +2 -3
- package/src/resources/extensions/gsd/workspace.ts +95 -0
- package/src/resources/extensions/gsd/worktree-command.ts +4 -3
- package/src/resources/extensions/gsd/worktree-manager.ts +6 -6
- package/src/resources/extensions/gsd/worktree-resolver.ts +47 -9
- package/src/resources/extensions/gsd/worktree-root.ts +47 -9
- package/src/resources/extensions/gsd/write-intercept.ts +3 -3
- package/src/resources/extensions/mcp-client/index.ts +2 -2
- package/src/resources/extensions/remote-questions/remote-command.ts +2 -1
- package/src/resources/extensions/remote-questions/status.ts +2 -6
- package/src/resources/extensions/remote-questions/store.ts +2 -6
- package/src/resources/extensions/search-the-web/provider.ts +9 -8
- package/src/resources/extensions/shared/next-action-ui.ts +8 -0
- package/src/resources/extensions/shared/tests/next-action-ui-hasui.test.ts +112 -0
- package/src/resources/extensions/subagent/index.ts +22 -9
- package/src/resources/extensions/subagent/isolation.ts +2 -2
- package/src/resources/extensions/subagent/tests/model-override.test.ts +55 -0
- package/src/resources/extensions/ttsr/rule-loader.ts +2 -3
- package/src/resources/extensions/voice/index.ts +3 -2
- package/src/resources/extensions/voice/linux-ready.ts +2 -3
- package/src/resources/skills/verify-before-complete/SKILL.md +1 -1
- package/dist/resources/extensions/gsd/auto-loop.js +0 -13
- package/dist/resources/extensions/gsd/home-dir.js +0 -16
- package/dist/resources/extensions/gsd/prompts/guided-complete-slice.md +0 -3
- package/dist/resources/extensions/gsd/prompts/guided-execute-task.md +0 -3
- package/dist/resources/extensions/gsd/prompts/guided-plan-milestone.md +0 -30
- package/dist/resources/extensions/gsd/prompts/guided-plan-slice.md +0 -3
- package/dist/web/standalone/.next/server/chunks/1926.js +0 -1
- package/dist/web/standalone/.next/server/edge-runtime-webpack.js +0 -2
- package/dist/web/standalone/.next/static/chunks/2824.08296bc2f9654698.js +0 -1
- package/dist/web/standalone/.next/static/chunks/363642f4.cf8b455e0d94b478.js +0 -1
- package/dist/web/standalone/.next/static/chunks/5326.adc4bf49a22f4e67.js +0 -1
- package/dist/web/standalone/.next/static/chunks/webpack-f9f0dc45e4f3ac10.js +0 -1
- package/dist/web/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js +0 -1
- package/dist/web/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.17.3 +0 -0
- package/dist/web/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +0 -42
- package/dist/web/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json +0 -30
- package/dist/web/standalone/node_modules/@img/sharp-linuxmusl-x64/LICENSE +0 -191
- package/dist/web/standalone/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64.node +0 -0
- package/dist/web/standalone/node_modules/@img/sharp-linuxmusl-x64/package.json +0 -46
- package/src/resources/extensions/gsd/auto-loop.ts +0 -16
- package/src/resources/extensions/gsd/home-dir.ts +0 -19
- package/src/resources/extensions/gsd/prompts/guided-complete-slice.md +0 -3
- package/src/resources/extensions/gsd/prompts/guided-execute-task.md +0 -3
- package/src/resources/extensions/gsd/prompts/guided-plan-milestone.md +0 -30
- package/src/resources/extensions/gsd/prompts/guided-plan-slice.md +0 -3
- package/src/resources/extensions/gsd/tests/home-dir.test.ts +0 -52
- package/dist/web/standalone/.next/static/{4iu6IYeYfxOq8OidlDqp6 → X7_3k2EBYa-pIRIFXU3sv}/_buildManifest.js +0 -0
- package/dist/web/standalone/.next/static/{4iu6IYeYfxOq8OidlDqp6 → X7_3k2EBYa-pIRIFXU3sv}/_ssgManifest.js +0 -0
- package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/at-rule.js +0 -0
- package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/comment.js +0 -0
- package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/declaration.js +4 -4
- package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/document.js +0 -0
- package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/fromJSON.js +3 -3
- package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/list.js +0 -0
- package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/parse.js +1 -1
- package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/postcss.js +12 -12
- package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/root.js +0 -0
- package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/rule.js +6 -6
- /package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/stringify.js +0 -0
- /package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/symbols.js +0 -0
- /package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/terminal-highlight.js +0 -0
- /package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/warn-once.js +0 -0
- /package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/warning.js +0 -0
- /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/classes/comparator.js +0 -0
- /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/classes/range.js +0 -0
- /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/classes/semver.js +0 -0
- /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/functions/cmp.js +0 -0
- /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/functions/coerce.js +0 -0
- /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/functions/compare.js +0 -0
- /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/functions/eq.js +0 -0
- /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/functions/gt.js +0 -0
- /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/functions/gte.js +0 -0
- /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/functions/lt.js +0 -0
- /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/functions/lte.js +0 -0
- /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/functions/neq.js +0 -0
- /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/functions/parse.js +0 -0
- /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/functions/satisfies.js +0 -0
- /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/internal/constants.js +0 -0
- /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/internal/debug.js +0 -0
- /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/internal/identifiers.js +0 -0
- /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/internal/lrucache.js +0 -0
- /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/internal/parse-options.js +0 -0
- /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/internal/re.js +0 -0
- /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/package.json +0 -0
|
@@ -10,11 +10,18 @@ import type { ExtensionAPI, ExtensionContext, ExtensionCommandContext } from "@g
|
|
|
10
10
|
import type { GSDState } from "./types.js";
|
|
11
11
|
import { showNextAction } from "../shared/tui.js";
|
|
12
12
|
import { loadFile, saveFile } from "./files.js";
|
|
13
|
-
import { isDbAvailable, getMilestoneSlices } from "./gsd-db.js";
|
|
13
|
+
import { isDbAvailable, getMilestone, getMilestoneSlices } from "./gsd-db.js";
|
|
14
14
|
import { parseRoadmapSlices } from "./roadmap-slices.js";
|
|
15
15
|
import { loadPrompt, inlineTemplate } from "./prompt-loader.js";
|
|
16
|
-
import {
|
|
17
|
-
|
|
16
|
+
import {
|
|
17
|
+
buildCompleteSlicePrompt,
|
|
18
|
+
buildDiscussMilestonePrompt,
|
|
19
|
+
buildExecuteTaskPrompt,
|
|
20
|
+
buildPlanMilestonePrompt,
|
|
21
|
+
buildPlanSlicePrompt,
|
|
22
|
+
buildSkillActivationBlock,
|
|
23
|
+
} from "./auto-prompts.js";
|
|
24
|
+
import { deriveState, isGhostMilestone } from "./state.js";
|
|
18
25
|
import { invalidateAllCaches } from "./cache.js";
|
|
19
26
|
import { startAutoDetached } from "./auto.js";
|
|
20
27
|
import { clearLock } from "./crash-recovery.js";
|
|
@@ -25,16 +32,16 @@ import {
|
|
|
25
32
|
} from "./interrupted-session.js";
|
|
26
33
|
import { listUnitRuntimeRecords, clearUnitRuntimeRecord } from "./unit-runtime.js";
|
|
27
34
|
import { resolveExpectedArtifactPath } from "./auto.js";
|
|
28
|
-
import {
|
|
35
|
+
import { gsdHome } from "./gsd-home.js";
|
|
29
36
|
import {
|
|
30
37
|
gsdRoot, milestonesDir, resolveMilestoneFile, resolveMilestonePath,
|
|
31
38
|
resolveSliceFile, resolveSlicePath, resolveGsdRootFile, relGsdRootFile,
|
|
32
|
-
relMilestoneFile, relSliceFile,
|
|
39
|
+
relMilestoneFile, relSliceFile, clearPathCache,
|
|
33
40
|
} from "./paths.js";
|
|
34
41
|
import { join } from "node:path";
|
|
35
42
|
import { readFileSync, existsSync, mkdirSync, readdirSync, rmSync, unlinkSync } from "node:fs";
|
|
36
43
|
import { readSessionLockData, isSessionLockProcessAlive } from "./session-lock.js";
|
|
37
|
-
import { nativeIsRepo, nativeInit } from "./native-git-bridge.js";
|
|
44
|
+
import { nativeAddAll, nativeCommit, nativeHasCommittedHead, nativeIsRepo, nativeInit } from "./native-git-bridge.js";
|
|
38
45
|
import { isInheritedRepo } from "./repo-identity.js";
|
|
39
46
|
import { ensureGitignore, ensurePreferences, untrackRuntimeFiles } from "./gitignore.js";
|
|
40
47
|
import { loadEffectiveGSDPreferences } from "./preferences.js";
|
|
@@ -61,6 +68,8 @@ import {
|
|
|
61
68
|
formatCodebaseBrief,
|
|
62
69
|
formatPriorContextBrief,
|
|
63
70
|
} from "./preparation.js";
|
|
71
|
+
import { verifyExpectedArtifact } from "./auto-recovery.js";
|
|
72
|
+
import { createWorkspace, scopeMilestone, type MilestoneScope } from "./workspace.js";
|
|
64
73
|
|
|
65
74
|
// ─── Re-exports (preserve public API for existing importers) ────────────────
|
|
66
75
|
export {
|
|
@@ -75,6 +84,46 @@ export {
|
|
|
75
84
|
} from "./guided-flow-queue.js";
|
|
76
85
|
import { logWarning } from "./workflow-logger.js";
|
|
77
86
|
|
|
87
|
+
// ─── Scope-based validator wrappers ──────────────────────────────────────────
|
|
88
|
+
// These thin wrappers accept a MilestoneScope so callers that already hold a
|
|
89
|
+
// pinned scope never have to re-derive (basePath, milestoneId) separately.
|
|
90
|
+
// The underlying implementations in auto-recovery.ts / auto-artifact-paths.ts /
|
|
91
|
+
// state.ts are unchanged — only the call surface in guided-flow.ts is migrated.
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Scope-based overload of verifyExpectedArtifact.
|
|
95
|
+
* Uses scope.workspace.projectRoot as the authoritative base path, making
|
|
96
|
+
* the check immune to cwd-drift and worktree-path divergence.
|
|
97
|
+
*/
|
|
98
|
+
export function verifyExpectedArtifactForScope(
|
|
99
|
+
scope: MilestoneScope,
|
|
100
|
+
unitType: string,
|
|
101
|
+
unitId: string,
|
|
102
|
+
): boolean {
|
|
103
|
+
return verifyExpectedArtifact(unitType, unitId, scope.workspace.projectRoot);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Scope-based overload of resolveExpectedArtifactPath.
|
|
108
|
+
* Returns the canonical absolute path (or null) using the scope's projectRoot.
|
|
109
|
+
*/
|
|
110
|
+
export function resolveExpectedArtifactPathForScope(
|
|
111
|
+
scope: MilestoneScope,
|
|
112
|
+
unitType: string,
|
|
113
|
+
unitId: string,
|
|
114
|
+
): string | null {
|
|
115
|
+
return resolveExpectedArtifactPath(unitType, unitId, scope.workspace.projectRoot);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Scope-based overload of isGhostMilestone.
|
|
120
|
+
* Binds basePath and milestoneId from the scope, ensuring path resolution
|
|
121
|
+
* uses the canonical project root regardless of the cwd at call time.
|
|
122
|
+
*/
|
|
123
|
+
export function isGhostMilestoneByScope(scope: MilestoneScope): boolean {
|
|
124
|
+
return isGhostMilestone(scope.workspace.projectRoot, scope.milestoneId);
|
|
125
|
+
}
|
|
126
|
+
|
|
78
127
|
function needsPlanV2Gate(state: GSDState): boolean {
|
|
79
128
|
return state.phase === "executing"
|
|
80
129
|
|| state.phase === "summarizing"
|
|
@@ -89,7 +138,7 @@ function runPlanV2Gate(
|
|
|
89
138
|
basePath: string,
|
|
90
139
|
state: GSDState,
|
|
91
140
|
): PlanV2GateDecision {
|
|
92
|
-
const prefs = loadEffectiveGSDPreferences()?.preferences;
|
|
141
|
+
const prefs = loadEffectiveGSDPreferences(basePath)?.preferences;
|
|
93
142
|
const uokFlags = resolveUokFlags(prefs);
|
|
94
143
|
if (!uokFlags.planV2 || !needsPlanV2Gate(state)) return "pass";
|
|
95
144
|
const compiled = ensurePlanV2Graph(basePath, state);
|
|
@@ -127,36 +176,119 @@ interface PendingAutoStartEntry {
|
|
|
127
176
|
// #4573: counter for how many times the LLM emitted the ready phrase
|
|
128
177
|
// without writing the required artifacts. Cleared on entry delete/recreate.
|
|
129
178
|
readyRejectCount?: number;
|
|
179
|
+
// C1: scope is pinned at reservation time so path resolution is immune to
|
|
180
|
+
// cwd-drift between discuss and checkAutoStartAfterDiscuss.
|
|
181
|
+
// TODO(C3): basePath becomes redundant once all consumers migrate to scope.
|
|
182
|
+
scope: MilestoneScope;
|
|
183
|
+
// H1: retry counter for Gate 1b plan-blocked recovery. Capped at
|
|
184
|
+
// MAX_PLAN_BLOCKED_RECOVERIES to prevent infinite recovery loops (#5012).
|
|
185
|
+
planBlockedRecoveryCount: number;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
interface PendingDeepProjectSetupEntry {
|
|
189
|
+
ctx: ExtensionCommandContext;
|
|
190
|
+
pi: ExtensionAPI;
|
|
191
|
+
basePath: string;
|
|
192
|
+
step?: boolean;
|
|
193
|
+
createdAt: number;
|
|
194
|
+
sessionId?: string;
|
|
195
|
+
currentUnitType?: string;
|
|
196
|
+
currentUnitId?: string;
|
|
130
197
|
}
|
|
131
198
|
|
|
132
199
|
// #4573: cap for how many times we nudge the LLM after a premature ready
|
|
133
200
|
// phrase before giving up and asking the user to re-run /gsd.
|
|
134
201
|
const MAX_READY_REJECTS = 2;
|
|
135
202
|
|
|
203
|
+
// H1 (#5012): cap for Gate 1b plan-blocked recovery hints. After this many
|
|
204
|
+
// consecutive recovery attempts the loop is stopped and the user is directed
|
|
205
|
+
// to investigate manually.
|
|
206
|
+
const MAX_PLAN_BLOCKED_RECOVERIES = 3;
|
|
207
|
+
|
|
136
208
|
// #4573: matches the canonical ready phrase the discuss prompt asks the LLM
|
|
137
209
|
// to emit. Accepts any M-prefixed milestone ID (three digits + optional
|
|
138
210
|
// suffix) with optional trailing punctuation.
|
|
139
211
|
const READY_PHRASE_RE = /\bMilestone\s+M\d{3}[A-Z0-9-]*\s+ready\.?/i;
|
|
140
212
|
|
|
141
213
|
const pendingAutoStartMap = new Map<string, PendingAutoStartEntry>();
|
|
214
|
+
const pendingDeepProjectSetupMap = new Map<string, PendingDeepProjectSetupEntry>();
|
|
215
|
+
const USER_DRIVEN_DEEP_SETUP_UNITS = new Set([
|
|
216
|
+
"discuss-project",
|
|
217
|
+
"discuss-requirements",
|
|
218
|
+
"research-decision",
|
|
219
|
+
]);
|
|
220
|
+
const FOREGROUND_DEEP_SETUP_RULE_NAMES = new Set([
|
|
221
|
+
"deep: pre-planning (no workflow prefs) → workflow-preferences",
|
|
222
|
+
"deep: pre-planning (no PROJECT) → discuss-project",
|
|
223
|
+
"deep: pre-planning (no REQUIREMENTS) → discuss-requirements",
|
|
224
|
+
"deep: pre-planning (no research decision) → research-decision",
|
|
225
|
+
]);
|
|
226
|
+
const LEGACY_DEEP_SETUP_PSEUDO_MILESTONE_DIRS = new Set([
|
|
227
|
+
"PROJECT",
|
|
228
|
+
"REQUIREMENTS",
|
|
229
|
+
"RESEARCH-DECISION",
|
|
230
|
+
"RESEARCH-PROJECT",
|
|
231
|
+
"WORKFLOW-PREFS",
|
|
232
|
+
]);
|
|
233
|
+
const FOREGROUND_DEEP_SETUP_QUESTION_POLICY = `## Foreground Deep Setup Question Policy
|
|
234
|
+
|
|
235
|
+
This stage is running inside the foreground \`/gsd new-project --deep\` interview. Ask user questions in plain chat only.
|
|
236
|
+
|
|
237
|
+
- Do NOT call \`ask_user_questions\`, \`AskUserQuestion\`, or ToolSearch to discover user-input tools.
|
|
238
|
+
- Ask one focused round, then stop and wait for the user's normal chat response.`;
|
|
142
239
|
|
|
143
240
|
/**
|
|
144
241
|
* Backward-compat bridge: returns a mutable reference to the entry matching
|
|
145
242
|
* basePath, or the sole entry when only one session exists.
|
|
146
|
-
*
|
|
243
|
+
* Exported for testing — internal use only in production code.
|
|
147
244
|
*/
|
|
148
|
-
function _getPendingAutoStart(basePath?: string): PendingAutoStartEntry | null {
|
|
245
|
+
export function _getPendingAutoStart(basePath?: string): PendingAutoStartEntry | null {
|
|
149
246
|
if (basePath) return pendingAutoStartMap.get(basePath) ?? null;
|
|
150
247
|
if (pendingAutoStartMap.size === 1) return pendingAutoStartMap.values().next().value!;
|
|
151
248
|
return null;
|
|
152
249
|
}
|
|
153
250
|
|
|
251
|
+
function hasNestedFileOrSymlink(dir: string): boolean {
|
|
252
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
253
|
+
if (entry.isFile() || entry.isSymbolicLink()) return true;
|
|
254
|
+
if (entry.isDirectory() && hasNestedFileOrSymlink(join(dir, entry.name))) return true;
|
|
255
|
+
}
|
|
256
|
+
return false;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
function clearEmptyLegacyDeepSetupPseudoMilestones(basePath: string, entries: string[]): string[] {
|
|
260
|
+
const mDir = milestonesDir(basePath);
|
|
261
|
+
const remaining: string[] = [];
|
|
262
|
+
for (const entry of entries) {
|
|
263
|
+
if (!LEGACY_DEEP_SETUP_PSEUDO_MILESTONE_DIRS.has(entry)) {
|
|
264
|
+
remaining.push(entry);
|
|
265
|
+
continue;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
const entryPath = join(mDir, entry);
|
|
269
|
+
try {
|
|
270
|
+
if (hasNestedFileOrSymlink(entryPath)) {
|
|
271
|
+
remaining.push(entry);
|
|
272
|
+
continue;
|
|
273
|
+
}
|
|
274
|
+
rmSync(entryPath, { recursive: true, force: true });
|
|
275
|
+
logWarning("guided", `Self-heal: removed empty legacy deep setup pseudo-milestone directory ${entry}`);
|
|
276
|
+
} catch (err) {
|
|
277
|
+
remaining.push(entry);
|
|
278
|
+
logWarning("guided", `legacy deep setup pseudo-milestone cleanup failed for ${entry}: ${(err as Error).message}`);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
return remaining;
|
|
282
|
+
}
|
|
283
|
+
|
|
154
284
|
/**
|
|
155
285
|
* Store pending auto-start state for a project.
|
|
156
286
|
* Exported for testing (#2985).
|
|
157
287
|
*/
|
|
158
288
|
export function setPendingAutoStart(basePath: string, entry: { basePath: string; milestoneId: string; ctx?: ExtensionCommandContext; pi?: ExtensionAPI; step?: boolean; createdAt?: number }): void {
|
|
159
|
-
|
|
289
|
+
const ws = createWorkspace(entry.basePath);
|
|
290
|
+
const scope = scopeMilestone(ws, entry.milestoneId);
|
|
291
|
+
pendingAutoStartMap.set(basePath, { createdAt: Date.now(), planBlockedRecoveryCount: 0, ...entry, scope } as PendingAutoStartEntry);
|
|
160
292
|
}
|
|
161
293
|
|
|
162
294
|
/**
|
|
@@ -172,6 +304,14 @@ export function clearPendingAutoStart(basePath?: string): void {
|
|
|
172
304
|
}
|
|
173
305
|
}
|
|
174
306
|
|
|
307
|
+
export function clearPendingDeepProjectSetup(basePath?: string): void {
|
|
308
|
+
if (basePath) {
|
|
309
|
+
pendingDeepProjectSetupMap.delete(basePath);
|
|
310
|
+
} else {
|
|
311
|
+
pendingDeepProjectSetupMap.clear();
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
|
|
175
315
|
/**
|
|
176
316
|
* Returns the milestoneId being discussed for the given project.
|
|
177
317
|
* When basePath is omitted and only one session is active, returns that
|
|
@@ -189,6 +329,153 @@ export function getDiscussionMilestoneId(basePath?: string): string | null {
|
|
|
189
329
|
return null;
|
|
190
330
|
}
|
|
191
331
|
|
|
332
|
+
function _getPendingDeepProjectSetup(basePath?: string): PendingDeepProjectSetupEntry | null {
|
|
333
|
+
if (basePath) return pendingDeepProjectSetupMap.get(basePath) ?? null;
|
|
334
|
+
if (pendingDeepProjectSetupMap.size === 1) return pendingDeepProjectSetupMap.values().next().value!;
|
|
335
|
+
return null;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
function getDeepSetupSessionId(ctx: ExtensionContext | undefined): string | undefined {
|
|
339
|
+
return ctx?.sessionManager?.getSessionId?.();
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
function _getPendingDeepProjectSetupForContext(
|
|
343
|
+
ctx: ExtensionContext | undefined,
|
|
344
|
+
basePath?: string,
|
|
345
|
+
): PendingDeepProjectSetupEntry | null {
|
|
346
|
+
if (basePath) {
|
|
347
|
+
const direct = pendingDeepProjectSetupMap.get(basePath);
|
|
348
|
+
if (direct) return direct;
|
|
349
|
+
}
|
|
350
|
+
if (!ctx) return _getPendingDeepProjectSetup();
|
|
351
|
+
|
|
352
|
+
const sessionId = getDeepSetupSessionId(ctx);
|
|
353
|
+
if (sessionId) {
|
|
354
|
+
const matches = [...pendingDeepProjectSetupMap.values()].filter(entry => entry.sessionId === sessionId);
|
|
355
|
+
if (matches.length === 1) return matches[0]!;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
const matches = [...pendingDeepProjectSetupMap.values()].filter(entry => entry.ctx === ctx);
|
|
359
|
+
return matches.length === 1 ? matches[0]! : null;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
export function getPendingDeepProjectSetupUnitForContext(
|
|
363
|
+
ctx: ExtensionContext | undefined,
|
|
364
|
+
basePath?: string,
|
|
365
|
+
): { unitType: string; unitId: string } | null {
|
|
366
|
+
const entry = _getPendingDeepProjectSetupForContext(ctx, basePath);
|
|
367
|
+
if (!entry?.currentUnitType || !entry.currentUnitId) return null;
|
|
368
|
+
return {
|
|
369
|
+
unitType: entry.currentUnitType,
|
|
370
|
+
unitId: entry.currentUnitId,
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
export async function startDeepProjectSetupForeground(
|
|
375
|
+
ctx: ExtensionCommandContext,
|
|
376
|
+
pi: ExtensionAPI,
|
|
377
|
+
basePath: string,
|
|
378
|
+
step?: boolean,
|
|
379
|
+
): Promise<void> {
|
|
380
|
+
const entry: PendingDeepProjectSetupEntry = {
|
|
381
|
+
ctx,
|
|
382
|
+
pi,
|
|
383
|
+
basePath,
|
|
384
|
+
step,
|
|
385
|
+
createdAt: Date.now(),
|
|
386
|
+
sessionId: getDeepSetupSessionId(ctx),
|
|
387
|
+
};
|
|
388
|
+
pendingDeepProjectSetupMap.set(basePath, entry);
|
|
389
|
+
await dispatchNextDeepProjectSetupStage(entry);
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
export async function checkDeepProjectSetupAfterTurn(
|
|
393
|
+
_event: { messages: any[] },
|
|
394
|
+
ctx?: ExtensionContext,
|
|
395
|
+
basePath?: string,
|
|
396
|
+
): Promise<boolean> {
|
|
397
|
+
const entry = _getPendingDeepProjectSetupForContext(ctx, basePath);
|
|
398
|
+
if (!entry) return false;
|
|
399
|
+
|
|
400
|
+
if (entry.currentUnitType && entry.currentUnitId) {
|
|
401
|
+
// TODO(C-future): PendingDeepProjectSetupEntry does not carry a MilestoneScope
|
|
402
|
+
// because deep-project-setup units span non-milestone unit types (discuss-project,
|
|
403
|
+
// discuss-requirements, etc.). Migrate to verifyExpectedArtifactForScope once
|
|
404
|
+
// PendingDeepProjectSetupEntry is extended with a scope field.
|
|
405
|
+
const artifactReady = verifyExpectedArtifact(entry.currentUnitType, entry.currentUnitId, entry.basePath);
|
|
406
|
+
if (!artifactReady) {
|
|
407
|
+
return false;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
return dispatchNextDeepProjectSetupStage(entry);
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
async function dispatchNextDeepProjectSetupStage(entry: PendingDeepProjectSetupEntry): Promise<boolean> {
|
|
415
|
+
invalidateAllCaches();
|
|
416
|
+
const prefs = loadEffectiveGSDPreferences(entry.basePath)?.preferences;
|
|
417
|
+
const { DISPATCH_RULES, hasPendingDeepStage } = await import("./auto-dispatch.js");
|
|
418
|
+
|
|
419
|
+
if (!hasPendingDeepStage(prefs, entry.basePath)) {
|
|
420
|
+
pendingDeepProjectSetupMap.delete(entry.basePath);
|
|
421
|
+
startAutoDetached(entry.ctx, entry.pi, entry.basePath, false, { step: entry.step });
|
|
422
|
+
return true;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
const state = await deriveState(entry.basePath);
|
|
426
|
+
const dispatchCtx = {
|
|
427
|
+
basePath: entry.basePath,
|
|
428
|
+
mid: "PROJECT",
|
|
429
|
+
midTitle: "Project setup",
|
|
430
|
+
state,
|
|
431
|
+
prefs,
|
|
432
|
+
// Claude Code currently surfaces workflow-MCP question calls as tool-request
|
|
433
|
+
// UI that can be cancelled outside the normal chat flow. During the
|
|
434
|
+
// foreground deep project setup interview, keep user input in plain chat so
|
|
435
|
+
// `/gsd new-project --deep` cannot bounce through cancelled tool requests.
|
|
436
|
+
structuredQuestionsAvailable: "false" as const,
|
|
437
|
+
};
|
|
438
|
+
let result: Awaited<ReturnType<(typeof DISPATCH_RULES)[number]["match"]>> = null;
|
|
439
|
+
for (const rule of DISPATCH_RULES) {
|
|
440
|
+
// Only evaluate foreground setup gates here. Later deep rules such as
|
|
441
|
+
// research-project have dispatch-time side effects (e.g. claiming an
|
|
442
|
+
// inflight marker) and must be left to auto-mode once the interview is
|
|
443
|
+
// complete.
|
|
444
|
+
if (!FOREGROUND_DEEP_SETUP_RULE_NAMES.has(rule.name)) continue;
|
|
445
|
+
result = await rule.match(dispatchCtx);
|
|
446
|
+
if (result) break;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
if (!result || result.action !== "dispatch") {
|
|
450
|
+
if (result?.action === "stop") {
|
|
451
|
+
entry.ctx.ui.notify(result.reason, result.level);
|
|
452
|
+
} else if (hasPendingDeepStage(prefs, entry.basePath)) {
|
|
453
|
+
pendingDeepProjectSetupMap.delete(entry.basePath);
|
|
454
|
+
startAutoDetached(entry.ctx, entry.pi, entry.basePath, false, { step: entry.step });
|
|
455
|
+
return true;
|
|
456
|
+
}
|
|
457
|
+
return false;
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
if (!USER_DRIVEN_DEEP_SETUP_UNITS.has(result.unitType)) {
|
|
461
|
+
pendingDeepProjectSetupMap.delete(entry.basePath);
|
|
462
|
+
startAutoDetached(entry.ctx, entry.pi, entry.basePath, false, { step: entry.step });
|
|
463
|
+
return true;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
entry.currentUnitType = result.unitType;
|
|
467
|
+
entry.currentUnitId = result.unitId;
|
|
468
|
+
entry.createdAt = Date.now();
|
|
469
|
+
await dispatchWorkflow(
|
|
470
|
+
entry.pi,
|
|
471
|
+
`${result.prompt}\n\n${FOREGROUND_DEEP_SETUP_QUESTION_POLICY}`,
|
|
472
|
+
"gsd-run",
|
|
473
|
+
entry.ctx,
|
|
474
|
+
result.unitType,
|
|
475
|
+
);
|
|
476
|
+
return true;
|
|
477
|
+
}
|
|
478
|
+
|
|
192
479
|
/** Called from agent_end to check if auto-mode should start after discuss */
|
|
193
480
|
export function checkAutoStartAfterDiscuss(): boolean {
|
|
194
481
|
const entry = _getPendingAutoStart();
|
|
@@ -198,17 +485,77 @@ export function checkAutoStartAfterDiscuss(): boolean {
|
|
|
198
485
|
|
|
199
486
|
// Gate 1: Primary milestone must have CONTEXT.md or ROADMAP.md
|
|
200
487
|
// The "discuss" path creates CONTEXT.md; the "plan" path creates ROADMAP.md.
|
|
201
|
-
|
|
202
|
-
const
|
|
488
|
+
// Use pinned scope (immune to cwd-drift) for existence checks.
|
|
489
|
+
const contextFilePath = entry.scope.contextFile();
|
|
490
|
+
const roadmapFilePath = entry.scope.roadmapFile();
|
|
491
|
+
const contextFile = existsSync(contextFilePath) ? contextFilePath : null;
|
|
492
|
+
const roadmapFile = existsSync(roadmapFilePath) ? roadmapFilePath : null;
|
|
203
493
|
if (!contextFile && !roadmapFile) return false; // neither artifact yet — keep waiting
|
|
204
494
|
|
|
495
|
+
// Gate 1b: Discriminate plan-blocked from discuss-incomplete when the DB row is queued.
|
|
496
|
+
// If the DB is available and the row is still "queued" but CONTEXT.md already exists on
|
|
497
|
+
// disk, the discuss phase completed but gsd_plan_milestone was hard-blocked by the
|
|
498
|
+
// depth-verification gate. Emit a recovery hint so the next agent turn can retry
|
|
499
|
+
// gsd_plan_milestone, then return false (keep blocking auto-start).
|
|
500
|
+
// If CONTEXT.md does not exist (discuss-incomplete), Gate 1 already blocked above.
|
|
501
|
+
if (isDbAvailable()) {
|
|
502
|
+
const dbRow = getMilestone(milestoneId);
|
|
503
|
+
if (dbRow?.status === "queued" && contextFile) {
|
|
504
|
+
if (entry.planBlockedRecoveryCount >= MAX_PLAN_BLOCKED_RECOVERIES) {
|
|
505
|
+
// H1: recovery loop cap reached — stop triggering new turns, escalate to user.
|
|
506
|
+
logWarning(
|
|
507
|
+
"guided",
|
|
508
|
+
`Gate 1b: milestone ${milestoneId} plan-blocked recovery limit reached ` +
|
|
509
|
+
`(${entry.planBlockedRecoveryCount}/${MAX_PLAN_BLOCKED_RECOVERIES}); escalating to user`,
|
|
510
|
+
);
|
|
511
|
+
ctx.ui.notify(
|
|
512
|
+
`Milestone ${milestoneId} plan_milestone has been blocked ${entry.planBlockedRecoveryCount} times. ` +
|
|
513
|
+
`Re-run /gsd to reset the recovery counter, or run /gsd-debug to diagnose without resetting.`,
|
|
514
|
+
"error",
|
|
515
|
+
);
|
|
516
|
+
return false;
|
|
517
|
+
}
|
|
518
|
+
logWarning(
|
|
519
|
+
"guided",
|
|
520
|
+
`Gate 1b: milestone ${milestoneId} queued with CONTEXT.md present — ` +
|
|
521
|
+
`plan_milestone was blocked; emitting recovery hint ` +
|
|
522
|
+
`(attempt ${entry.planBlockedRecoveryCount + 1}/${MAX_PLAN_BLOCKED_RECOVERIES})`,
|
|
523
|
+
);
|
|
524
|
+
ctx.ui.notify(
|
|
525
|
+
`Milestone ${milestoneId}: context file exists but milestone is still queued. ` +
|
|
526
|
+
`Retrying gsd_plan_milestone to complete the blocked planning step.`,
|
|
527
|
+
"warning",
|
|
528
|
+
);
|
|
529
|
+
try {
|
|
530
|
+
pi.sendMessage(
|
|
531
|
+
{
|
|
532
|
+
customType: "gsd-plan-milestone-blocked-recovery",
|
|
533
|
+
content:
|
|
534
|
+
`Milestone ${milestoneId} has ${contextFile} on disk but its DB row is still ` +
|
|
535
|
+
`"queued". The gsd_plan_milestone tool was previously blocked by the ` +
|
|
536
|
+
`depth-verification gate. Call gsd_plan_milestone now to complete the ` +
|
|
537
|
+
`planning phase.`,
|
|
538
|
+
display: false,
|
|
539
|
+
},
|
|
540
|
+
{ triggerTurn: true },
|
|
541
|
+
);
|
|
542
|
+
// Increment only after a successful dispatch so transient sendMessage
|
|
543
|
+
// failures do not consume recovery budget.
|
|
544
|
+
entry.planBlockedRecoveryCount += 1;
|
|
545
|
+
} catch (e) {
|
|
546
|
+
logWarning("guided", `Gate 1b recovery sendMessage failed: ${(e as Error).message}`);
|
|
547
|
+
}
|
|
548
|
+
return false;
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
|
|
205
552
|
// Gate 2: STATE.md must exist — written as the last step in the discuss
|
|
206
553
|
// output phase. This prevents auto-start from firing during Phase 3
|
|
207
554
|
// (sequential readiness gates for remaining milestones) in multi-milestone
|
|
208
555
|
// discussions, where M001-CONTEXT.md exists but M002/M003 haven't been
|
|
209
556
|
// processed yet.
|
|
210
|
-
const
|
|
211
|
-
if (!
|
|
557
|
+
const stateFilePath = entry.scope.stateFile();
|
|
558
|
+
if (!existsSync(stateFilePath)) return false; // discussion not finalized yet
|
|
212
559
|
|
|
213
560
|
// Gate 3: Multi-milestone completeness warning
|
|
214
561
|
// Parse PROJECT.md for milestone sequence, warn if any are missing context.
|
|
@@ -241,7 +588,7 @@ export function checkAutoStartAfterDiscuss(): boolean {
|
|
|
241
588
|
// The LLM writes DISCUSSION-MANIFEST.json after each Phase 3 gate decision.
|
|
242
589
|
// When it exists, validate it before auto-starting. Project history alone is
|
|
243
590
|
// not a reliable signal for the current discussion mode.
|
|
244
|
-
const manifestPath = join(
|
|
591
|
+
const manifestPath = join(entry.scope.workspace.contract.projectGsd, "DISCUSSION-MANIFEST.json");
|
|
245
592
|
if (existsSync(manifestPath)) {
|
|
246
593
|
try {
|
|
247
594
|
const manifest = JSON.parse(readFileSync(manifestPath, "utf-8"));
|
|
@@ -332,13 +679,15 @@ function hasToolUse(msg: any): boolean {
|
|
|
332
679
|
/**
|
|
333
680
|
* #4573 — Detect and recover from the "ready phrase without files" failure mode.
|
|
334
681
|
*
|
|
335
|
-
* When the LLM emits "Milestone {{id}} ready." but has not written
|
|
336
|
-
*
|
|
337
|
-
* next /gsd invocation loops into the "All milestones
|
|
682
|
+
* When the LLM emits "Milestone {{id}} ready." but has not written the
|
|
683
|
+
* milestone CONTEXT/ROADMAP artifacts, `checkAutoStartAfterDiscuss()` silently
|
|
684
|
+
* returns false and the next /gsd invocation loops into the "All milestones
|
|
685
|
+
* complete" warning.
|
|
338
686
|
*
|
|
339
687
|
* This function, called from `handleAgentEnd` after `checkAutoStartAfterDiscuss`
|
|
340
688
|
* returns false, pattern-matches the ready phrase on the last assistant message.
|
|
341
|
-
* If it fired AND neither CONTEXT.md
|
|
689
|
+
* If it fired AND neither the canonical M###-CONTEXT.md/M###-ROADMAP.md nor
|
|
690
|
+
* legacy CONTEXT.md/ROADMAP.md files exist, it:
|
|
342
691
|
* 1. Notifies the user that the signal was rejected.
|
|
343
692
|
* 2. Injects a system message via `pi.sendMessage(..., {triggerTurn:true})`
|
|
344
693
|
* telling the LLM the signal was premature and to emit the writes now.
|
|
@@ -358,12 +707,39 @@ export function maybeHandleReadyPhraseWithoutFiles(event: { messages: any[] }):
|
|
|
358
707
|
const text = extractAssistantText(lastMsg);
|
|
359
708
|
if (!READY_PHRASE_RE.test(text)) return false;
|
|
360
709
|
|
|
710
|
+
// Bust paths.ts cached dir listings before checking for fresh writes. The
|
|
711
|
+
// LLM's Write tool calls do not invalidate paths.ts caches, so a stale
|
|
712
|
+
// listing taken before the milestone dir or its CONTEXT/ROADMAP files
|
|
713
|
+
// existed would falsely report the artifacts as missing and trigger the
|
|
714
|
+
// 3-strike "ready without files" abort even though the writes succeeded.
|
|
715
|
+
clearPathCache();
|
|
716
|
+
|
|
361
717
|
// Gate: artifacts must still be missing — if they exist, the happy path
|
|
362
718
|
// already fired and we have nothing to do.
|
|
363
719
|
const contextFile = resolveMilestoneFile(basePath, milestoneId, "CONTEXT");
|
|
364
720
|
const roadmapFile = resolveMilestoneFile(basePath, milestoneId, "ROADMAP");
|
|
365
721
|
if (contextFile || roadmapFile) return false;
|
|
366
722
|
|
|
723
|
+
// Diagnostic: when the cached resolver reports both files missing, also probe
|
|
724
|
+
// the canonical paths with uncached existsSync so we can tell whether the
|
|
725
|
+
// recovery is firing on real-missing files or a path-resolution miss
|
|
726
|
+
// (basePath/symlink mismatch, stale cache despite agent-end-recovery flush,
|
|
727
|
+
// legacy descriptor dir not matching, etc.).
|
|
728
|
+
try {
|
|
729
|
+
const mDir = resolveMilestonePath(basePath, milestoneId);
|
|
730
|
+
const canonicalCtx = mDir ? join(mDir, `${milestoneId}-CONTEXT.md`) : null;
|
|
731
|
+
const canonicalRoadmap = mDir ? join(mDir, `${milestoneId}-ROADMAP.md`) : null;
|
|
732
|
+
logWarning(
|
|
733
|
+
"guided",
|
|
734
|
+
`ready-phrase-reject diagnostic mid=${milestoneId} basePath=${basePath} ` +
|
|
735
|
+
`mDir=${mDir ?? "null"} ` +
|
|
736
|
+
`canonical-ctx=${canonicalCtx ?? "null"} ctx-exists=${canonicalCtx ? existsSync(canonicalCtx) : "n/a"} ` +
|
|
737
|
+
`canonical-roadmap=${canonicalRoadmap ?? "null"} roadmap-exists=${canonicalRoadmap ? existsSync(canonicalRoadmap) : "n/a"}`,
|
|
738
|
+
);
|
|
739
|
+
} catch (e) {
|
|
740
|
+
logWarning("guided", `ready-phrase-reject diagnostic failed: ${(e as Error).message}`);
|
|
741
|
+
}
|
|
742
|
+
|
|
367
743
|
entry.readyRejectCount = (entry.readyRejectCount ?? 0) + 1;
|
|
368
744
|
|
|
369
745
|
if (entry.readyRejectCount > MAX_READY_REJECTS) {
|
|
@@ -378,15 +754,16 @@ export function maybeHandleReadyPhraseWithoutFiles(event: { messages: any[] }):
|
|
|
378
754
|
return true;
|
|
379
755
|
}
|
|
380
756
|
|
|
757
|
+
const contextRel = relMilestoneFile(basePath, milestoneId, "CONTEXT");
|
|
758
|
+
const roadmapRel = relMilestoneFile(basePath, milestoneId, "ROADMAP");
|
|
381
759
|
ctx.ui.notify(
|
|
382
|
-
`Milestone ${milestoneId}: "ready" signal rejected —
|
|
760
|
+
`Milestone ${milestoneId}: "ready" signal rejected — ${contextRel} and ${roadmapRel} are missing. Asking the LLM to complete the writes.`,
|
|
383
761
|
"warning",
|
|
384
762
|
);
|
|
385
763
|
|
|
386
764
|
const nudge =
|
|
387
765
|
`You emitted "Milestone ${milestoneId} ready." but neither ` +
|
|
388
|
-
|
|
389
|
-
`.gsd/milestones/${milestoneId}/${milestoneId}-ROADMAP.md exists on disk. ` +
|
|
766
|
+
`${contextRel} nor ${roadmapRel} exists on disk. ` +
|
|
390
767
|
`The ready phrase is a POST-WRITE signal and has been rejected. ` +
|
|
391
768
|
`In this turn: (1) write PROJECT.md, REQUIREMENTS.md, and the milestone ` +
|
|
392
769
|
`CONTEXT.md, (2) call gsd_plan_milestone, then (3) emit the ready phrase. ` +
|
|
@@ -429,8 +806,13 @@ const MAX_EMPTY_TURN_RETRIES = 2;
|
|
|
429
806
|
|
|
430
807
|
// Phrases that indicate the LLM is about to do something but has not yet.
|
|
431
808
|
// Kept tight to avoid flagging legitimate narration like "I'll wait for your answer."
|
|
809
|
+
//
|
|
810
|
+
// "make" was previously in the verb list but matches conversational meta phrases
|
|
811
|
+
// like "Let me make sure I understand…" which are NOT action announcements —
|
|
812
|
+
// removed to prevent the empty-turn nudge from auto-replying to user questions
|
|
813
|
+
// in discuss flows.
|
|
432
814
|
const COMMIT_INTENT_RE =
|
|
433
|
-
/\b(?:I['’]ll|I will|Next,? I['’]ll|Now I['’]ll|Let me|I['’]m going to|I am going to)\s+(?:now\s+)?(?:write|create|call|invoke|update|add|
|
|
815
|
+
/\b(?:I['’]ll|I will|Next,? I['’]ll|Now I['’]ll|Let me|I['’]m going to|I am going to)\s+(?:now\s+)?(?:write|create|call|invoke|update|add|run|execute|generate|produce|emit|compose|implement|save|apply|commit)\b/i;
|
|
434
816
|
|
|
435
817
|
/**
|
|
436
818
|
* Reset the empty-turn counter for a basePath after a successful tool-use turn.
|
|
@@ -460,12 +842,14 @@ export function maybeHandleEmptyIntentTurn(
|
|
|
460
842
|
// path, handled by maybeHandleReadyPhraseWithoutFiles.
|
|
461
843
|
if (READY_PHRASE_RE.test(text)) return false;
|
|
462
844
|
|
|
463
|
-
// Skip if the LLM is clearly handing back to the user.
|
|
464
|
-
//
|
|
465
|
-
//
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
845
|
+
// Skip if the LLM is clearly handing back to the user. Discuss flows
|
|
846
|
+
// often pose a question and follow it with a conditional intent on the
|
|
847
|
+
// same line ("Did I capture that correctly? If so, I'll write the
|
|
848
|
+
// requirements."). A line-trailing `?` check misses these because the
|
|
849
|
+
// line ends in `.`. Match any sentence-terminating `?` (followed by
|
|
850
|
+
// whitespace or end-of-text) — false negatives here auto-reply to the
|
|
851
|
+
// user, which is a much worse failure mode than a missed nudge.
|
|
852
|
+
if (/\?(?:\s|$)/.test(text)) return false;
|
|
469
853
|
|
|
470
854
|
// Must contain a commit-intent phrase — this is the stall we care about.
|
|
471
855
|
if (!COMMIT_INTENT_RE.test(text)) return false;
|
|
@@ -608,7 +992,7 @@ async function dispatchWorkflow(
|
|
|
608
992
|
});
|
|
609
993
|
}
|
|
610
994
|
|
|
611
|
-
const workflowPath = process.env.GSD_WORKFLOW_PATH ?? join(
|
|
995
|
+
const workflowPath = process.env.GSD_WORKFLOW_PATH ?? join(gsdHome(), "agent", "GSD-WORKFLOW.md");
|
|
612
996
|
const workflow = readFileSync(workflowPath, "utf-8");
|
|
613
997
|
|
|
614
998
|
pi.sendMessage(
|
|
@@ -839,7 +1223,7 @@ export async function showHeadlessMilestoneCreation(
|
|
|
839
1223
|
const prompt = buildHeadlessDiscussPrompt(nextId, seedContext, basePath);
|
|
840
1224
|
|
|
841
1225
|
// Set pending auto start (auto-mode triggers on "Milestone X ready." via checkAutoStartAfterDiscuss)
|
|
842
|
-
|
|
1226
|
+
setPendingAutoStart(basePath, { ctx, pi, basePath, milestoneId: nextId });
|
|
843
1227
|
|
|
844
1228
|
// Dispatch as discuss-milestone. The LLM writes PROJECT.md, REQUIREMENTS.md,
|
|
845
1229
|
// and CONTEXT.md, then calls gsd_plan_milestone — this is semantically the
|
|
@@ -1036,12 +1420,12 @@ export async function showDiscuss(
|
|
|
1036
1420
|
const seed = draftContent
|
|
1037
1421
|
? `${basePrompt}\n\n## Prior Discussion (Draft Seed)\n\n${draftContent}`
|
|
1038
1422
|
: basePrompt;
|
|
1039
|
-
|
|
1423
|
+
setPendingAutoStart(basePath, { ctx, pi, basePath, milestoneId: mid, step: false });
|
|
1040
1424
|
await dispatchWorkflow(pi, seed, "gsd-discuss", ctx, "discuss-milestone");
|
|
1041
1425
|
} else if (choice === "discuss_fresh") {
|
|
1042
1426
|
const discussMilestoneTemplates = inlineTemplate("context", "Context");
|
|
1043
1427
|
const structuredQuestionsAvailable = getStructuredQuestionsAvailability(pi, ctx);
|
|
1044
|
-
|
|
1428
|
+
setPendingAutoStart(basePath, { ctx, pi, basePath, milestoneId: mid, step: false });
|
|
1045
1429
|
await dispatchWorkflow(pi, loadPrompt("guided-discuss-milestone", {
|
|
1046
1430
|
milestoneId: mid, milestoneTitle, inlinedTemplates: discussMilestoneTemplates, structuredQuestionsAvailable,
|
|
1047
1431
|
commitInstruction: buildDocsCommitInstruction(`docs(${mid}): milestone context from discuss`),
|
|
@@ -1053,7 +1437,7 @@ export async function showDiscuss(
|
|
|
1053
1437
|
const milestoneIds = findMilestoneIds(basePath);
|
|
1054
1438
|
const uniqueMilestoneIds = !!loadEffectiveGSDPreferences()?.preferences?.unique_milestone_ids;
|
|
1055
1439
|
const nextId = nextMilestoneIdReserved(milestoneIds, uniqueMilestoneIds, basePath);
|
|
1056
|
-
|
|
1440
|
+
setPendingAutoStart(basePath, { ctx, pi, basePath, milestoneId: nextId, step: false });
|
|
1057
1441
|
await dispatchWorkflow(pi, await prepareAndBuildDiscussPrompt(ctx, pi, nextId, `New milestone ${nextId}.`, basePath), "gsd-run", ctx, "discuss-milestone");
|
|
1058
1442
|
}
|
|
1059
1443
|
return;
|
|
@@ -1344,6 +1728,9 @@ function selfHealRuntimeRecords(basePath: string, ctx: ExtensionContext): { clea
|
|
|
1344
1728
|
for (const record of records) {
|
|
1345
1729
|
const { unitType, unitId, phase } = record;
|
|
1346
1730
|
// Clear records whose expected artifact already exists (completed but not cleaned up)
|
|
1731
|
+
// TODO(C-future): selfHealRuntimeRecords iterates across all unit types (not just milestone
|
|
1732
|
+
// units), so it cannot be converted to resolveExpectedArtifactPathForScope without
|
|
1733
|
+
// first establishing a per-record scope. Migrate once unit runtime records carry scope info.
|
|
1347
1734
|
const artifactPath = resolveExpectedArtifactPath(unitType, unitId, basePath);
|
|
1348
1735
|
if (artifactPath && existsSync(artifactPath)) {
|
|
1349
1736
|
clearUnitRuntimeRecord(basePath, unitType, unitId);
|
|
@@ -1458,7 +1845,7 @@ async function handleMilestoneActions(
|
|
|
1458
1845
|
const milestoneIds = findMilestoneIds(basePath);
|
|
1459
1846
|
const uniqueMilestoneIds = !!loadEffectiveGSDPreferences()?.preferences?.unique_milestone_ids;
|
|
1460
1847
|
const nextId = nextMilestoneIdReserved(milestoneIds, uniqueMilestoneIds, basePath);
|
|
1461
|
-
|
|
1848
|
+
setPendingAutoStart(basePath, { ctx, pi, basePath, milestoneId: nextId, step: stepMode });
|
|
1462
1849
|
await dispatchWorkflow(pi, await prepareAndBuildDiscussPrompt(ctx, pi, nextId,
|
|
1463
1850
|
`New milestone ${nextId}.`,
|
|
1464
1851
|
basePath
|
|
@@ -1505,6 +1892,7 @@ export async function showSmartEntry(
|
|
|
1505
1892
|
// milestones/) must trigger the init wizard, not skip it (#2942).
|
|
1506
1893
|
const gsdPath = gsdRoot(basePath);
|
|
1507
1894
|
const hasBootstrapArtifacts = hasGsdBootstrapArtifacts(gsdPath);
|
|
1895
|
+
let skipGitBootstrap = false;
|
|
1508
1896
|
|
|
1509
1897
|
if (!hasBootstrapArtifacts) {
|
|
1510
1898
|
const detection = detectProjectState(basePath);
|
|
@@ -1524,6 +1912,7 @@ export async function showSmartEntry(
|
|
|
1524
1912
|
// No .gsd/ or zombie .gsd/ — run the project init wizard
|
|
1525
1913
|
const result = await showProjectInit(ctx, pi, basePath, detection);
|
|
1526
1914
|
if (!result.completed) return; // User cancelled
|
|
1915
|
+
skipGitBootstrap = result.gitEnabled === false;
|
|
1527
1916
|
|
|
1528
1917
|
// Init wizard bootstrapped .gsd/ — fall through to the normal flow below
|
|
1529
1918
|
// which will detect "no milestones" and start the discuss prompt
|
|
@@ -1533,14 +1922,29 @@ export async function showSmartEntry(
|
|
|
1533
1922
|
// Also handle inherited repos: if basePath is a subdirectory of another
|
|
1534
1923
|
// git repo that has no .gsd, create a fresh repo to prevent cross-project
|
|
1535
1924
|
// state leaks (#1639).
|
|
1536
|
-
if (!nativeIsRepo(basePath) || isInheritedRepo(basePath)) {
|
|
1925
|
+
if (!skipGitBootstrap && (!nativeIsRepo(basePath) || isInheritedRepo(basePath))) {
|
|
1537
1926
|
const mainBranch = loadEffectiveGSDPreferences()?.preferences?.git?.main_branch || "main";
|
|
1538
1927
|
nativeInit(basePath, mainBranch);
|
|
1539
1928
|
}
|
|
1540
1929
|
|
|
1541
1930
|
// ── Ensure .gitignore has baseline patterns ──────────────────────────
|
|
1542
|
-
|
|
1543
|
-
|
|
1931
|
+
if (!skipGitBootstrap && nativeIsRepo(basePath)) {
|
|
1932
|
+
ensureGitignore(basePath);
|
|
1933
|
+
untrackRuntimeFiles(basePath);
|
|
1934
|
+
}
|
|
1935
|
+
|
|
1936
|
+
// Deep setup can pre-create .gsd/PREFERENCES.md before the normal init
|
|
1937
|
+
// wizard path runs. If that path also initialized git, make HEAD reachable
|
|
1938
|
+
// now so later worktree/git-log operations do not run on an unborn branch.
|
|
1939
|
+
if (!skipGitBootstrap && nativeIsRepo(basePath) && !nativeHasCommittedHead(basePath)) {
|
|
1940
|
+
try {
|
|
1941
|
+
nativeAddAll(basePath);
|
|
1942
|
+
nativeCommit(basePath, "chore: init project");
|
|
1943
|
+
} catch (err) {
|
|
1944
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
1945
|
+
logWarning("guided", `initial git commit failed; worktree isolation will remain disabled until HEAD exists: ${message}`);
|
|
1946
|
+
}
|
|
1947
|
+
}
|
|
1544
1948
|
|
|
1545
1949
|
{
|
|
1546
1950
|
const { ensureDbOpen } = await import("./bootstrap/dynamic-tools.js");
|
|
@@ -1599,6 +2003,23 @@ export async function showSmartEntry(
|
|
|
1599
2003
|
logWarning("guided", `STATE.md rebuild failed: ${(err as Error).message}`);
|
|
1600
2004
|
}
|
|
1601
2005
|
|
|
2006
|
+
// ── Deep planning mode kickoff ────────────────────────────────────────
|
|
2007
|
+
// When `planning_depth: deep` is set (e.g. via `/gsd new-project --deep`)
|
|
2008
|
+
// and any project-level stage gate is still pending, keep the user-question
|
|
2009
|
+
// stages in the foreground conversation. Auto-mode is resumed only after
|
|
2010
|
+
// the project interview artifacts exist, so questions do not look like
|
|
2011
|
+
// cancelled auto-mode runs.
|
|
2012
|
+
// Light mode and fully-completed deep projects fall through to the
|
|
2013
|
+
// standard wizard below.
|
|
2014
|
+
{
|
|
2015
|
+
const prefs = loadEffectiveGSDPreferences(basePath)?.preferences;
|
|
2016
|
+
const { hasPendingDeepStage } = await import("./auto-dispatch.js");
|
|
2017
|
+
if (hasPendingDeepStage(prefs, basePath)) {
|
|
2018
|
+
await startDeepProjectSetupForeground(ctx, pi, basePath, stepMode);
|
|
2019
|
+
return;
|
|
2020
|
+
}
|
|
2021
|
+
}
|
|
2022
|
+
|
|
1602
2023
|
const planV2GateDecision = runPlanV2Gate(ctx, basePath, state);
|
|
1603
2024
|
if (planV2GateDecision === "block") return;
|
|
1604
2025
|
|
|
@@ -1609,14 +2030,12 @@ export async function showSmartEntry(
|
|
|
1609
2030
|
// and fires another dispatchWorkflow, resetting the conversation mid-interview.
|
|
1610
2031
|
if (pendingAutoStartMap.has(basePath)) {
|
|
1611
2032
|
// #3274: If /clear interrupted the discussion, the pending entry is stale.
|
|
1612
|
-
// Detect staleness: no manifest, no CONTEXT
|
|
2033
|
+
// Detect staleness: no manifest, no milestone CONTEXT artifact, AND entry is older than
|
|
1613
2034
|
// 30s (avoids race between .set() and LLM writing first artifact).
|
|
1614
2035
|
const entry = pendingAutoStartMap.get(basePath)!;
|
|
1615
2036
|
const ageMs = Date.now() - (entry.createdAt || 0);
|
|
1616
2037
|
const manifestExists = existsSync(join(gsdRoot(basePath), "DISCUSSION-MANIFEST.json"));
|
|
1617
|
-
const milestoneHasContext =
|
|
1618
|
-
join(gsdRoot(basePath), "milestones", entry.milestoneId, `${entry.milestoneId}-CONTEXT.md`),
|
|
1619
|
-
);
|
|
2038
|
+
const milestoneHasContext = !!resolveMilestoneFile(basePath, entry.milestoneId, "CONTEXT");
|
|
1620
2039
|
if (!manifestExists && !milestoneHasContext && ageMs > 30_000) {
|
|
1621
2040
|
// Stale entry from an interrupted discussion — clear and continue
|
|
1622
2041
|
pendingAutoStartMap.delete(basePath);
|
|
@@ -1635,7 +2054,7 @@ export async function showSmartEntry(
|
|
|
1635
2054
|
const mDir = milestonesDir(basePath);
|
|
1636
2055
|
if (existsSync(mDir)) {
|
|
1637
2056
|
try {
|
|
1638
|
-
const entries = readdirSync(mDir);
|
|
2057
|
+
const entries = clearEmptyLegacyDeepSetupPseudoMilestones(basePath, readdirSync(mDir));
|
|
1639
2058
|
if (entries.length > 0) {
|
|
1640
2059
|
ctx.ui.notify(
|
|
1641
2060
|
`Milestone directory has ${entries.length} entries but none were recognized as milestones. ` +
|
|
@@ -1654,7 +2073,7 @@ export async function showSmartEntry(
|
|
|
1654
2073
|
|
|
1655
2074
|
if (isFirst) {
|
|
1656
2075
|
// First ever — skip wizard, just ask directly
|
|
1657
|
-
|
|
2076
|
+
setPendingAutoStart(basePath, { ctx, pi, basePath, milestoneId: nextId, step: stepMode });
|
|
1658
2077
|
await dispatchWorkflow(pi, await prepareAndBuildDiscussPrompt(ctx, pi, nextId,
|
|
1659
2078
|
`New project, milestone ${nextId}. Do NOT read or explore .gsd/ — it's empty scaffolding.`,
|
|
1660
2079
|
basePath
|
|
@@ -1675,7 +2094,7 @@ export async function showSmartEntry(
|
|
|
1675
2094
|
});
|
|
1676
2095
|
|
|
1677
2096
|
if (choice === "new_milestone") {
|
|
1678
|
-
|
|
2097
|
+
setPendingAutoStart(basePath, { ctx, pi, basePath, milestoneId: nextId, step: stepMode });
|
|
1679
2098
|
await dispatchWorkflow(pi, await prepareAndBuildDiscussPrompt(ctx, pi, nextId,
|
|
1680
2099
|
`New milestone ${nextId}.`,
|
|
1681
2100
|
basePath
|
|
@@ -1689,7 +2108,7 @@ export async function showSmartEntry(
|
|
|
1689
2108
|
const milestoneTitle = state.activeMilestone.title;
|
|
1690
2109
|
|
|
1691
2110
|
if (planV2GateDecision === "recover-missing-context") {
|
|
1692
|
-
|
|
2111
|
+
setPendingAutoStart(basePath, { ctx, pi, basePath, milestoneId, step: stepMode });
|
|
1693
2112
|
await dispatchWorkflow(
|
|
1694
2113
|
pi,
|
|
1695
2114
|
await buildDiscussMilestonePrompt(
|
|
@@ -1731,7 +2150,7 @@ export async function showSmartEntry(
|
|
|
1731
2150
|
const uniqueMilestoneIds = !!loadEffectiveGSDPreferences()?.preferences?.unique_milestone_ids;
|
|
1732
2151
|
const nextId = nextMilestoneIdReserved(milestoneIds, uniqueMilestoneIds, basePath);
|
|
1733
2152
|
|
|
1734
|
-
|
|
2153
|
+
setPendingAutoStart(basePath, { ctx, pi, basePath, milestoneId: nextId, step: stepMode });
|
|
1735
2154
|
await dispatchWorkflow(pi, await prepareAndBuildDiscussPrompt(ctx, pi, nextId,
|
|
1736
2155
|
`New milestone ${nextId}.`,
|
|
1737
2156
|
basePath
|
|
@@ -1783,12 +2202,12 @@ export async function showSmartEntry(
|
|
|
1783
2202
|
const seed = draftContent
|
|
1784
2203
|
? `${basePrompt}\n\n## Prior Discussion (Draft Seed)\n\n${draftContent}`
|
|
1785
2204
|
: basePrompt;
|
|
1786
|
-
|
|
2205
|
+
setPendingAutoStart(basePath, { ctx, pi, basePath, milestoneId, step: stepMode });
|
|
1787
2206
|
await dispatchWorkflow(pi, seed, "gsd-discuss", ctx, "discuss-milestone");
|
|
1788
2207
|
} else if (choice === "discuss_fresh") {
|
|
1789
2208
|
const discussMilestoneTemplates = inlineTemplate("context", "Context");
|
|
1790
2209
|
const structuredQuestionsAvailable = getStructuredQuestionsAvailability(pi, ctx);
|
|
1791
|
-
|
|
2210
|
+
setPendingAutoStart(basePath, { ctx, pi, basePath, milestoneId, step: stepMode });
|
|
1792
2211
|
await dispatchWorkflow(pi, loadPrompt("guided-discuss-milestone", {
|
|
1793
2212
|
milestoneId, milestoneTitle, inlinedTemplates: discussMilestoneTemplates, structuredQuestionsAvailable,
|
|
1794
2213
|
commitInstruction: buildDocsCommitInstruction(`docs(${milestoneId}): milestone context from discuss`),
|
|
@@ -1798,7 +2217,7 @@ export async function showSmartEntry(
|
|
|
1798
2217
|
const milestoneIds = findMilestoneIds(basePath);
|
|
1799
2218
|
const uniqueMilestoneIds = !!loadEffectiveGSDPreferences()?.preferences?.unique_milestone_ids;
|
|
1800
2219
|
const nextId = nextMilestoneIdReserved(milestoneIds, uniqueMilestoneIds, basePath);
|
|
1801
|
-
|
|
2220
|
+
setPendingAutoStart(basePath, { ctx, pi, basePath, milestoneId: nextId, step: stepMode });
|
|
1802
2221
|
await dispatchWorkflow(pi, await prepareAndBuildDiscussPrompt(ctx, pi, nextId,
|
|
1803
2222
|
`New milestone ${nextId}.`,
|
|
1804
2223
|
basePath
|
|
@@ -1863,26 +2282,14 @@ export async function showSmartEntry(
|
|
|
1863
2282
|
});
|
|
1864
2283
|
|
|
1865
2284
|
if (choice === "plan") {
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
await dispatchWorkflow(pi, loadPrompt("guided-plan-milestone", {
|
|
1875
|
-
milestoneId,
|
|
1876
|
-
milestoneTitle,
|
|
1877
|
-
secretsOutputPath,
|
|
1878
|
-
inlinedTemplates: planMilestoneTemplates,
|
|
1879
|
-
skillActivation: buildSkillActivationBlock({
|
|
1880
|
-
base: basePath,
|
|
1881
|
-
milestoneId,
|
|
1882
|
-
milestoneTitle,
|
|
1883
|
-
extraContext: [planMilestoneTemplates],
|
|
1884
|
-
}),
|
|
1885
|
-
}), "gsd-run", ctx, "plan-milestone");
|
|
2285
|
+
setPendingAutoStart(basePath, { ctx, pi, basePath, milestoneId, step: stepMode });
|
|
2286
|
+
await dispatchWorkflow(
|
|
2287
|
+
pi,
|
|
2288
|
+
await buildPlanMilestonePrompt(milestoneId, milestoneTitle, basePath),
|
|
2289
|
+
"gsd-run",
|
|
2290
|
+
ctx,
|
|
2291
|
+
"plan-milestone",
|
|
2292
|
+
);
|
|
1886
2293
|
} else if (choice === "discuss") {
|
|
1887
2294
|
const discussMilestoneTemplates = inlineTemplate("context", "Context");
|
|
1888
2295
|
const structuredQuestionsAvailable = getStructuredQuestionsAvailability(pi, ctx);
|
|
@@ -1895,7 +2302,7 @@ export async function showSmartEntry(
|
|
|
1895
2302
|
const milestoneIds = findMilestoneIds(basePath);
|
|
1896
2303
|
const uniqueMilestoneIds = !!loadEffectiveGSDPreferences()?.preferences?.unique_milestone_ids;
|
|
1897
2304
|
const nextId = nextMilestoneIdReserved(milestoneIds, uniqueMilestoneIds, basePath);
|
|
1898
|
-
|
|
2305
|
+
setPendingAutoStart(basePath, { ctx, pi, basePath, milestoneId: nextId, step: stepMode });
|
|
1899
2306
|
await dispatchWorkflow(pi, await prepareAndBuildDiscussPrompt(ctx, pi, nextId,
|
|
1900
2307
|
`New milestone ${nextId}.`,
|
|
1901
2308
|
basePath
|
|
@@ -2007,23 +2414,13 @@ export async function showSmartEntry(
|
|
|
2007
2414
|
});
|
|
2008
2415
|
|
|
2009
2416
|
if (choice === "plan") {
|
|
2010
|
-
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
sliceTitle,
|
|
2018
|
-
inlinedTemplates: planSliceTemplates,
|
|
2019
|
-
skillActivation: buildSkillActivationBlock({
|
|
2020
|
-
base: basePath,
|
|
2021
|
-
milestoneId,
|
|
2022
|
-
sliceId,
|
|
2023
|
-
sliceTitle,
|
|
2024
|
-
extraContext: [planSliceTemplates],
|
|
2025
|
-
}),
|
|
2026
|
-
}), "gsd-run", ctx, "plan-slice");
|
|
2417
|
+
await dispatchWorkflow(
|
|
2418
|
+
pi,
|
|
2419
|
+
await buildPlanSlicePrompt(milestoneId, milestoneTitle, sliceId, sliceTitle, basePath),
|
|
2420
|
+
"gsd-run",
|
|
2421
|
+
ctx,
|
|
2422
|
+
"plan-slice",
|
|
2423
|
+
);
|
|
2027
2424
|
} else if (choice === "discuss") {
|
|
2028
2425
|
const sqAvail = getStructuredQuestionsAvailability(pi, ctx);
|
|
2029
2426
|
await dispatchWorkflow(pi, await buildDiscussSlicePrompt(milestoneId, sliceId, sliceTitle, basePath, { rediscuss: hasContext, structuredQuestionsAvailable: sqAvail }), "gsd-run", ctx, "discuss-slice");
|
|
@@ -2079,24 +2476,13 @@ export async function showSmartEntry(
|
|
|
2079
2476
|
});
|
|
2080
2477
|
|
|
2081
2478
|
if (choice === "complete") {
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
sliceId,
|
|
2090
|
-
sliceTitle,
|
|
2091
|
-
inlinedTemplates: completeSliceTemplates,
|
|
2092
|
-
skillActivation: buildSkillActivationBlock({
|
|
2093
|
-
base: basePath,
|
|
2094
|
-
milestoneId,
|
|
2095
|
-
sliceId,
|
|
2096
|
-
sliceTitle,
|
|
2097
|
-
extraContext: [completeSliceTemplates],
|
|
2098
|
-
}),
|
|
2099
|
-
}), "gsd-run", ctx, "complete-slice");
|
|
2479
|
+
await dispatchWorkflow(
|
|
2480
|
+
pi,
|
|
2481
|
+
await buildCompleteSlicePrompt(milestoneId, milestoneTitle, sliceId, sliceTitle, basePath),
|
|
2482
|
+
"gsd-run",
|
|
2483
|
+
ctx,
|
|
2484
|
+
"complete-slice",
|
|
2485
|
+
);
|
|
2100
2486
|
} else if (choice === "status") {
|
|
2101
2487
|
const { fireStatusViaCommand } = await import("./commands.js");
|
|
2102
2488
|
await fireStatusViaCommand(ctx);
|
|
@@ -2171,22 +2557,13 @@ export async function showSmartEntry(
|
|
|
2171
2557
|
}),
|
|
2172
2558
|
}), "gsd-run", ctx, "execute-task");
|
|
2173
2559
|
} else {
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
milestoneId,
|
|
2177
|
-
|
|
2178
|
-
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
skillActivation: buildSkillActivationBlock({
|
|
2182
|
-
base: basePath,
|
|
2183
|
-
milestoneId,
|
|
2184
|
-
sliceId,
|
|
2185
|
-
taskId,
|
|
2186
|
-
taskTitle,
|
|
2187
|
-
extraContext: [executeTaskTemplates],
|
|
2188
|
-
}),
|
|
2189
|
-
}), "gsd-run", ctx, "execute-task");
|
|
2560
|
+
await dispatchWorkflow(
|
|
2561
|
+
pi,
|
|
2562
|
+
await buildExecuteTaskPrompt(milestoneId, sliceId, sliceTitle, taskId, taskTitle, basePath),
|
|
2563
|
+
"gsd-run",
|
|
2564
|
+
ctx,
|
|
2565
|
+
"execute-task",
|
|
2566
|
+
);
|
|
2190
2567
|
}
|
|
2191
2568
|
} else if (choice === "status") {
|
|
2192
2569
|
const { fireStatusViaCommand } = await import("./commands.js");
|