@opengsd/gsd-pi 1.2.0-dev.844675c9 → 1.2.0-dev.84c56d87
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/dist/cli-style.d.ts +17 -0
- package/dist/cli-style.js +28 -0
- package/dist/cli-web-branch.d.ts +2 -0
- package/dist/cli-web-branch.js +9 -2
- package/dist/cli.js +1 -1
- package/dist/headless-events.d.ts +4 -2
- package/dist/headless-events.js +7 -29
- package/dist/help-text.js +5 -0
- package/dist/models-resolver.d.ts +3 -13
- package/dist/models-resolver.js +3 -22
- package/dist/resource-loader.js +2 -14
- package/dist/resources/.managed-resources-content-hash +1 -1
- package/dist/resources/extensions/ask-user-questions.js +78 -23
- package/dist/resources/extensions/bg-shell/utilities.js +5 -2
- package/dist/resources/extensions/browser-tools/engine/managed-gsd-browser.js +209 -88
- package/dist/resources/extensions/browser-tools/engine/selection.js +73 -5
- package/dist/resources/extensions/browser-tools/index.js +69 -12
- package/dist/resources/extensions/claude-code-cli/models.js +9 -0
- package/dist/resources/extensions/claude-code-cli/stream-adapter.js +122 -234
- package/dist/resources/extensions/claude-code-cli/turn-assembler.js +224 -0
- package/dist/resources/extensions/github-sync/templates.js +3 -3
- package/dist/resources/extensions/gsd/artifact-projection.js +14 -0
- package/dist/resources/extensions/gsd/auto/loop.js +74 -56
- package/dist/resources/extensions/gsd/auto/orchestrator.js +142 -15
- package/dist/resources/extensions/gsd/auto/phases.js +34 -4
- package/dist/resources/extensions/gsd/auto/run-unit.js +2 -1
- package/dist/resources/extensions/gsd/auto/session.js +3 -0
- package/dist/resources/extensions/gsd/auto-dashboard.js +16 -4
- package/dist/resources/extensions/gsd/auto-dispatch.js +6 -5
- package/dist/resources/extensions/gsd/auto-model-selection.js +8 -0
- package/dist/resources/extensions/gsd/auto-post-unit.js +23 -11
- package/dist/resources/extensions/gsd/auto-prompts.js +84 -8
- package/dist/resources/extensions/gsd/auto-recovery.js +48 -49
- package/dist/resources/extensions/gsd/auto-runtime-state.js +14 -0
- package/dist/resources/extensions/gsd/auto-start.js +24 -37
- package/dist/resources/extensions/gsd/auto-timers.js +16 -2
- package/dist/resources/extensions/gsd/auto-tool-tracking.js +50 -0
- package/dist/resources/extensions/gsd/auto-unit-tool-scope.js +11 -45
- package/dist/resources/extensions/gsd/auto-verification.js +7 -7
- package/dist/resources/extensions/gsd/auto-worktree-repair.js +10 -2
- package/dist/resources/extensions/gsd/auto-worktree.js +53 -368
- package/dist/resources/extensions/gsd/auto.js +19 -27
- package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +3 -2
- package/dist/resources/extensions/gsd/bootstrap/db-tools.js +28 -37
- package/dist/resources/extensions/gsd/bootstrap/dynamic-tools.js +20 -43
- package/dist/resources/extensions/gsd/bootstrap/query-tools.js +2 -2
- package/dist/resources/extensions/gsd/bootstrap/register-extension.js +19 -0
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +209 -149
- package/dist/resources/extensions/gsd/bootstrap/write-gate.js +93 -8
- package/dist/resources/extensions/gsd/branch-patterns.js +2 -0
- package/dist/resources/extensions/gsd/browser-evidence.js +8 -2
- package/dist/resources/extensions/gsd/captures.js +5 -15
- package/dist/resources/extensions/gsd/closeout-consistency-gate.js +21 -4
- package/dist/resources/extensions/gsd/closeout-recovery.js +3 -2
- package/dist/resources/extensions/gsd/codebase-generator.js +8 -4
- package/dist/resources/extensions/gsd/commands/catalog.js +6 -62
- package/dist/resources/extensions/gsd/commands/handlers/auto.js +3 -0
- package/dist/resources/extensions/gsd/commands-handlers.js +20 -0
- package/dist/resources/extensions/gsd/commands-inspect.js +4 -8
- package/dist/resources/extensions/gsd/commands-maintenance.js +61 -41
- package/dist/resources/extensions/gsd/commands-ship.js +2 -2
- package/dist/resources/extensions/gsd/commands-verdict.js +12 -2
- package/dist/resources/extensions/gsd/crash-recovery.js +4 -12
- package/dist/resources/extensions/gsd/db/engine.js +755 -0
- package/dist/resources/extensions/gsd/db/queries.js +372 -0
- package/dist/resources/extensions/gsd/db/sql-constants.js +11 -0
- package/dist/resources/extensions/gsd/db/writers/cascades.js +194 -0
- package/dist/resources/extensions/gsd/db/writers/import-restore.js +182 -0
- package/dist/resources/extensions/gsd/db/writers/memory.js +149 -0
- package/dist/resources/extensions/gsd/db/writers/reconcile.js +458 -0
- package/dist/resources/extensions/gsd/db/writers/status.js +70 -0
- package/dist/resources/extensions/gsd/db-workspace.js +103 -0
- package/dist/resources/extensions/gsd/delegation-policy.js +2 -10
- package/dist/resources/extensions/gsd/discussion-handoff.js +218 -0
- package/dist/resources/extensions/gsd/docs/preferences-reference.md +9 -0
- package/dist/resources/extensions/gsd/doctor-environment.js +5 -11
- package/dist/resources/extensions/gsd/doctor-format.js +9 -6
- package/dist/resources/extensions/gsd/doctor-git-checks.js +4 -3
- package/dist/resources/extensions/gsd/doctor-runtime-checks.js +21 -16
- package/dist/resources/extensions/gsd/doctor.js +16 -9
- package/dist/resources/extensions/gsd/error-classifier.js +10 -1
- package/dist/resources/extensions/gsd/git-conflict-state.js +16 -1
- package/dist/resources/extensions/gsd/git-service.js +1 -0
- package/dist/resources/extensions/gsd/gitignore.js +3 -0
- package/dist/resources/extensions/gsd/gsd-db.js +183 -2048
- package/dist/resources/extensions/gsd/guidance.js +98 -0
- package/dist/resources/extensions/gsd/guided-flow.js +83 -471
- package/dist/resources/extensions/gsd/guided-unit-completion.js +225 -0
- package/dist/resources/extensions/gsd/markdown-renderer.js +2 -1
- package/dist/resources/extensions/gsd/mcp-filter.js +4 -20
- package/dist/resources/extensions/gsd/mcp-tool-name.js +18 -0
- package/dist/resources/extensions/gsd/md-importer.js +4 -3
- package/dist/resources/extensions/gsd/memory-consolidation-scanner.js +1 -1
- package/dist/resources/extensions/gsd/migrate/safety.js +22 -11
- package/dist/resources/extensions/gsd/migration-auto-check.js +27 -5
- package/dist/resources/extensions/gsd/milestone-closeout-proof.js +72 -0
- package/dist/resources/extensions/gsd/milestone-closeout.js +12 -4
- package/dist/resources/extensions/gsd/milestone-merge-transaction.js +10 -0
- package/dist/resources/extensions/gsd/milestone-planning-persistence.js +156 -0
- package/dist/resources/extensions/gsd/milestone-readiness.js +77 -0
- package/dist/resources/extensions/gsd/milestone-settlement.js +50 -0
- package/dist/resources/extensions/gsd/milestone-validation-evidence.js +73 -0
- package/dist/resources/extensions/gsd/milestone-validation-verdict.js +57 -0
- package/dist/resources/extensions/gsd/model-cost-table.js +1 -0
- package/dist/resources/extensions/gsd/model-router.js +3 -0
- package/dist/resources/extensions/gsd/notification-store.js +11 -4
- package/dist/resources/extensions/gsd/parallel-eligibility.js +3 -6
- package/dist/resources/extensions/gsd/parallel-merge.js +14 -11
- package/dist/resources/extensions/gsd/parallel-monitor-overlay.js +11 -7
- package/dist/resources/extensions/gsd/parallel-orchestrator.js +3 -2
- package/dist/resources/extensions/gsd/paths.js +37 -24
- package/dist/resources/extensions/gsd/pre-execution-checks.js +91 -3
- package/dist/resources/extensions/gsd/preferences-diagnostics.js +67 -0
- package/dist/resources/extensions/gsd/preferences-models.js +12 -46
- package/dist/resources/extensions/gsd/preferences.js +161 -29
- package/dist/resources/extensions/gsd/prompts/complete-slice.md +1 -0
- package/dist/resources/extensions/gsd/prompts/execute-task.md +2 -0
- package/dist/resources/extensions/gsd/prompts/guided-discuss-project.md +3 -1
- package/dist/resources/extensions/gsd/prompts/plan-milestone.md +2 -0
- package/dist/resources/extensions/gsd/prompts/plan-slice.md +2 -1
- package/dist/resources/extensions/gsd/prompts/refine-slice.md +2 -1
- package/dist/resources/extensions/gsd/prompts/replan-slice.md +1 -1
- package/dist/resources/extensions/gsd/prompts/system.md +1 -1
- package/dist/resources/extensions/gsd/provider-error-guidance.js +1 -5
- package/dist/resources/extensions/gsd/provider-payload-policy.js +83 -0
- package/dist/resources/extensions/gsd/provider-switch-observer.js +1 -1
- package/dist/resources/extensions/gsd/publication.js +87 -0
- package/dist/resources/extensions/gsd/pull-request-process.js +13 -0
- package/dist/resources/extensions/gsd/quality-gate-closure.js +109 -0
- package/dist/resources/extensions/gsd/question-transport.js +86 -0
- package/dist/resources/extensions/gsd/recovery-classification.js +41 -87
- package/dist/resources/extensions/gsd/roadmap-slices.js +8 -2
- package/dist/resources/extensions/gsd/safety/evidence-collector.js +37 -4
- package/dist/resources/extensions/gsd/safety/evidence-cross-ref.js +7 -2
- package/dist/resources/extensions/gsd/safety/file-change-validator.js +10 -0
- package/dist/resources/extensions/gsd/slice-parallel-orchestrator.js +3 -2
- package/dist/resources/extensions/gsd/state-transition-matrix.js +38 -0
- package/dist/resources/extensions/gsd/state.js +14 -25
- package/dist/resources/extensions/gsd/status-guards.js +56 -8
- package/dist/resources/extensions/gsd/stop-notice.js +57 -0
- package/dist/resources/extensions/gsd/templates/plan.md +7 -0
- package/dist/resources/extensions/gsd/templates/project.md +1 -0
- package/dist/resources/extensions/gsd/templates/roadmap.md +1 -1
- package/dist/resources/extensions/gsd/templates/uat.md +5 -1
- package/dist/resources/extensions/gsd/tool-contract.js +52 -8
- package/dist/resources/extensions/gsd/tool-presentation-plan.js +15 -34
- package/dist/resources/extensions/gsd/tool-surface-readiness.js +56 -0
- package/dist/resources/extensions/gsd/tool-surface-snapshot.js +17 -0
- package/dist/resources/extensions/gsd/tools/complete-slice.js +24 -43
- package/dist/resources/extensions/gsd/tools/exec-tool.js +5 -8
- package/dist/resources/extensions/gsd/tools/plan-milestone.js +15 -143
- package/dist/resources/extensions/gsd/tools/plan-slice.js +12 -6
- package/dist/resources/extensions/gsd/tools/reassess-roadmap.js +39 -0
- package/dist/resources/extensions/gsd/tools/reopen-milestone.js +11 -29
- package/dist/resources/extensions/gsd/tools/reopen-slice.js +14 -33
- package/dist/resources/extensions/gsd/tools/skip-slice.js +18 -36
- package/dist/resources/extensions/gsd/tools/validate-milestone.js +15 -78
- package/dist/resources/extensions/gsd/uat-policy.js +17 -10
- package/dist/resources/extensions/gsd/uat-run.js +9 -14
- package/dist/resources/extensions/gsd/undo.js +8 -7
- package/dist/resources/extensions/gsd/unit-closeout.js +138 -0
- package/dist/resources/extensions/gsd/unit-context-composer.js +49 -21
- package/dist/resources/extensions/gsd/unit-context-manifest.js +4 -27
- package/dist/resources/extensions/gsd/unit-registry.js +337 -0
- package/dist/resources/extensions/gsd/unit-runtime.js +3 -2
- package/dist/resources/extensions/gsd/unit-tool-contracts.js +9 -181
- package/dist/resources/extensions/gsd/user-input-boundary.js +23 -0
- package/dist/resources/extensions/gsd/validation-block-guard.js +2 -0
- package/dist/resources/extensions/gsd/web-app-uat.js +117 -0
- package/dist/resources/extensions/gsd/workflow-mcp.js +15 -102
- package/dist/resources/extensions/gsd/workflow-reconcile.js +4 -3
- package/dist/resources/extensions/gsd/workflow-tool-surface.js +46 -0
- package/dist/resources/extensions/gsd/workspace-git-guard.js +2 -0
- package/dist/resources/extensions/gsd/worktree-git-recovery.js +293 -0
- package/dist/resources/extensions/gsd/worktree-lifecycle.js +9 -1
- package/dist/resources/extensions/gsd/worktree-manager.js +45 -28
- package/dist/resources/extensions/gsd/worktree-placement.js +59 -0
- package/dist/resources/extensions/gsd/worktree-reentry.js +12 -8
- package/dist/resources/extensions/gsd/worktree-root.js +28 -6
- package/dist/resources/extensions/gsd/worktree-safety.js +8 -5
- package/dist/resources/extensions/gsd/worktree-session-state.js +12 -11
- package/dist/resources/extensions/gsd/worktree-state-projection.js +33 -4
- package/dist/resources/extensions/gsd/worktree-telemetry.js +12 -0
- package/dist/resources/extensions/search-the-web/native-search.js +5 -3
- package/dist/resources/extensions/shared/browser-contract.js +59 -0
- package/dist/resources/extensions/shared/gsd-browser-cli.js +72 -4
- package/dist/resources/extensions/shared/interview-ui.js +2 -2
- package/dist/resources/shared/claude-runtime-floor.js +182 -0
- package/dist/resources/skills/create-skill/references/executable-code.md +1 -1
- package/dist/resources/skills/create-skill/workflows/add-reference.md +8 -3
- package/dist/resources/skills/create-skill/workflows/add-script.md +4 -2
- package/dist/resources/skills/create-skill/workflows/add-template.md +3 -1
- package/dist/resources/skills/create-skill/workflows/add-workflow.md +8 -3
- package/dist/resources/skills/create-skill/workflows/upgrade-to-router.md +10 -5
- package/dist/resources/skills/create-skill/workflows/verify-skill.md +9 -4
- package/dist/resources/skills/gsd-browser/SKILL.md +1 -1
- package/dist/resources/skills/spike-wrap-up/SKILL.md +9 -9
- package/dist/tsconfig.extensions.tsbuildinfo +1 -1
- package/dist/update-cmd.js +20 -0
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +6 -6
- package/dist/web/standalone/.next/build-manifest.json +3 -3
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/react-loadable-manifest.json +8 -8
- 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.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- 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 +1 -1
- 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 +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.nft.json +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.nft.json +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.nft.json +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/export-data/route.js.nft.json +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.nft.json +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.nft.json +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.nft.json +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.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/mcp-connections/route.js.nft.json +1 -1
- 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.nft.json +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.nft.json +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.nft.json +1 -1
- 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.nft.json +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.nft.json +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.nft.json +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/sessions/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js.nft.json +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/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 +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
- 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 +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +6 -6
- package/dist/web/standalone/.next/server/chunks/5124.js +1 -1
- package/dist/web/standalone/.next/server/chunks/{5047.js → 5942.js} +2 -2
- package/dist/web/standalone/.next/server/chunks/8357.js +1 -1
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
- 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/static/chunks/2659.b7b129ee6a769448.js +1 -0
- package/dist/web/standalone/.next/static/chunks/2772.bfa657f49f955239.js +1 -0
- package/dist/web/standalone/.next/static/chunks/{3616.4113d484a994e411.js → 3616.3c60753b8ffcbd2e.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/4283.e4873b058df143a1.js +2 -0
- package/dist/web/standalone/.next/static/chunks/5826.a46ecdd1cfe8dabc.js +1 -0
- package/dist/web/standalone/.next/static/chunks/796.cf859a427a2cb2ac.js +10 -0
- package/dist/web/standalone/.next/static/chunks/8785.2e5a118797fb2dd2.js +1 -0
- package/dist/web/standalone/.next/static/chunks/{webpack-dda80a1ef5587410.js → webpack-fbea77b5f9953368.js} +1 -1
- package/dist/web/standalone/node_modules/node-pty/build/Makefile +1 -1
- package/dist/web/standalone/node_modules/postcss/lib/container.js +18 -26
- package/dist/web/standalone/node_modules/postcss/lib/css-syntax-error.js +14 -47
- package/dist/web/standalone/node_modules/postcss/lib/declaration.js +4 -4
- package/dist/web/standalone/node_modules/postcss/lib/fromJSON.js +3 -3
- package/dist/web/standalone/node_modules/postcss/lib/input.js +29 -54
- package/dist/web/standalone/node_modules/postcss/lib/lazy-result.js +37 -47
- package/dist/web/standalone/node_modules/postcss/lib/map-generator.js +9 -26
- package/dist/web/standalone/node_modules/postcss/lib/no-work-result.js +55 -57
- package/dist/web/standalone/node_modules/postcss/lib/node.js +31 -99
- package/dist/web/standalone/node_modules/postcss/lib/parse.js +1 -1
- package/dist/web/standalone/node_modules/postcss/lib/parser.js +9 -10
- package/dist/web/standalone/node_modules/postcss/lib/postcss.js +12 -12
- package/dist/web/standalone/node_modules/postcss/lib/previous-map.js +11 -30
- package/dist/web/standalone/node_modules/postcss/lib/processor.js +7 -7
- package/dist/web/standalone/node_modules/postcss/lib/result.js +5 -5
- package/dist/web/standalone/node_modules/postcss/lib/rule.js +6 -6
- package/dist/web/standalone/node_modules/postcss/lib/stringifier.js +28 -69
- package/dist/web/standalone/node_modules/postcss/lib/tokenize.js +2 -6
- package/dist/web/standalone/node_modules/postcss/package.json +48 -48
- package/dist/web/standalone/package.json +1 -1
- package/dist/web-mode.d.ts +2 -0
- package/dist/web-mode.js +20 -8
- package/dist/worktree-cli.js +3 -6
- package/dist/worktree-status-banner.js +7 -11
- package/package.json +2 -1
- package/packages/cloud-mcp-gateway/package.json +2 -2
- package/packages/contracts/dist/workflow.d.ts +4 -0
- package/packages/contracts/dist/workflow.d.ts.map +1 -1
- package/packages/contracts/dist/workflow.js.map +1 -1
- package/packages/contracts/package.json +1 -1
- package/packages/daemon/package.json +4 -4
- package/packages/gsd-agent-core/dist/session/agent-session-extensions.d.ts +2 -0
- package/packages/gsd-agent-core/dist/session/agent-session-extensions.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-extensions.js +14 -0
- package/packages/gsd-agent-core/dist/session/agent-session-extensions.js.map +1 -1
- package/packages/gsd-agent-core/package.json +5 -5
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js +3 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js +106 -40
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-widgets.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-widgets.js +6 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-widgets.js.map +1 -1
- package/packages/gsd-agent-modes/package.json +7 -7
- package/packages/mcp-server/dist/cli.js +6 -3
- package/packages/mcp-server/dist/cli.js.map +1 -1
- package/packages/mcp-server/dist/server.d.ts +10 -0
- package/packages/mcp-server/dist/server.d.ts.map +1 -1
- package/packages/mcp-server/dist/server.js +8 -0
- package/packages/mcp-server/dist/server.js.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.d.ts +49 -0
- package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.js +48 -22
- package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
- package/packages/mcp-server/package.json +3 -3
- package/packages/native/package.json +1 -1
- package/packages/pi-agent-core/package.json +1 -1
- package/packages/pi-ai/dist/image-models.generated.d.ts +2 -2
- package/packages/pi-ai/dist/image-models.generated.js +6 -6
- package/packages/pi-ai/dist/image-models.generated.js.map +1 -1
- package/packages/pi-ai/dist/models.generated.d.ts +455 -546
- package/packages/pi-ai/dist/models.generated.d.ts.map +1 -1
- package/packages/pi-ai/dist/models.generated.js +481 -599
- package/packages/pi-ai/dist/models.generated.js.map +1 -1
- package/packages/pi-ai/package.json +1 -1
- package/packages/pi-coding-agent/dist/core/capability-patches.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/capability-patches.js +3 -1
- package/packages/pi-coding-agent/dist/core/capability-patches.js.map +1 -1
- package/packages/pi-coding-agent/package.json +7 -7
- package/packages/pi-tui/dist/components/input.js +1 -1
- package/packages/pi-tui/dist/components/input.js.map +1 -1
- package/packages/pi-tui/dist/keys.d.ts.map +1 -1
- package/packages/pi-tui/dist/keys.js +39 -30
- package/packages/pi-tui/dist/keys.js.map +1 -1
- package/packages/pi-tui/dist/stdin-buffer.d.ts.map +1 -1
- package/packages/pi-tui/dist/stdin-buffer.js +22 -0
- package/packages/pi-tui/dist/stdin-buffer.js.map +1 -1
- package/packages/pi-tui/dist/tui.d.ts.map +1 -1
- package/packages/pi-tui/dist/tui.js +9 -0
- package/packages/pi-tui/dist/tui.js.map +1 -1
- package/packages/pi-tui/package.json +2 -2
- package/packages/rpc-client/package.json +2 -2
- package/pkg/package.json +1 -1
- package/src/resources/extensions/ask-user-questions.ts +87 -24
- package/src/resources/extensions/bg-shell/utilities.ts +5 -2
- package/src/resources/extensions/browser-tools/engine/managed-gsd-browser.ts +265 -98
- package/src/resources/extensions/browser-tools/engine/selection.ts +90 -4
- package/src/resources/extensions/browser-tools/index.ts +71 -13
- package/src/resources/extensions/browser-tools/tests/browser-engine-selection.test.mjs +83 -13
- package/src/resources/extensions/browser-tools/tests/managed-gsd-browser-tools.test.mjs +136 -0
- package/src/resources/extensions/claude-code-cli/models.ts +9 -0
- package/src/resources/extensions/claude-code-cli/stream-adapter.ts +148 -285
- package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +268 -0
- package/src/resources/extensions/claude-code-cli/turn-assembler.ts +287 -0
- package/src/resources/extensions/github-sync/templates.ts +3 -3
- package/src/resources/extensions/github-sync/tests/templates.test.ts +2 -2
- package/src/resources/extensions/gsd/artifact-projection.ts +31 -0
- package/src/resources/extensions/gsd/auto/contracts.ts +32 -2
- package/src/resources/extensions/gsd/auto/loop-deps.ts +3 -1
- package/src/resources/extensions/gsd/auto/loop.ts +83 -61
- package/src/resources/extensions/gsd/auto/orchestrator.ts +164 -17
- package/src/resources/extensions/gsd/auto/phases.ts +45 -4
- package/src/resources/extensions/gsd/auto/run-unit.ts +2 -1
- package/src/resources/extensions/gsd/auto/session.ts +4 -0
- package/src/resources/extensions/gsd/auto-dashboard.ts +18 -4
- package/src/resources/extensions/gsd/auto-dispatch.ts +20 -7
- package/src/resources/extensions/gsd/auto-model-selection.ts +8 -0
- package/src/resources/extensions/gsd/auto-post-unit.ts +29 -10
- package/src/resources/extensions/gsd/auto-prompts.ts +110 -9
- package/src/resources/extensions/gsd/auto-recovery.ts +50 -50
- package/src/resources/extensions/gsd/auto-runtime-state.ts +26 -0
- package/src/resources/extensions/gsd/auto-start.ts +29 -35
- package/src/resources/extensions/gsd/auto-timers.ts +16 -2
- package/src/resources/extensions/gsd/auto-tool-tracking.ts +54 -0
- package/src/resources/extensions/gsd/auto-unit-tool-scope.ts +19 -47
- package/src/resources/extensions/gsd/auto-verification.ts +7 -8
- package/src/resources/extensions/gsd/auto-worktree-repair.ts +13 -2
- package/src/resources/extensions/gsd/auto-worktree.ts +68 -384
- package/src/resources/extensions/gsd/auto.ts +35 -32
- package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +3 -5
- package/src/resources/extensions/gsd/bootstrap/db-tools.ts +29 -37
- package/src/resources/extensions/gsd/bootstrap/dynamic-tools.ts +20 -43
- package/src/resources/extensions/gsd/bootstrap/query-tools.ts +2 -2
- package/src/resources/extensions/gsd/bootstrap/register-extension.ts +24 -0
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +251 -161
- package/src/resources/extensions/gsd/bootstrap/write-gate.ts +136 -6
- package/src/resources/extensions/gsd/branch-patterns.ts +3 -0
- package/src/resources/extensions/gsd/browser-evidence.ts +18 -2
- package/src/resources/extensions/gsd/captures.ts +5 -16
- package/src/resources/extensions/gsd/closeout-consistency-gate.ts +27 -5
- package/src/resources/extensions/gsd/closeout-recovery.ts +2 -1
- package/src/resources/extensions/gsd/codebase-generator.ts +9 -5
- package/src/resources/extensions/gsd/commands/catalog.ts +6 -68
- package/src/resources/extensions/gsd/commands/handlers/auto.ts +3 -0
- package/src/resources/extensions/gsd/commands-handlers.ts +18 -0
- package/src/resources/extensions/gsd/commands-inspect.ts +7 -8
- package/src/resources/extensions/gsd/commands-maintenance.ts +74 -40
- package/src/resources/extensions/gsd/commands-ship.ts +2 -2
- package/src/resources/extensions/gsd/commands-verdict.ts +19 -2
- package/src/resources/extensions/gsd/crash-recovery.ts +3 -9
- package/src/resources/extensions/gsd/db/engine.ts +809 -0
- package/src/resources/extensions/gsd/db/queries.ts +453 -0
- package/src/resources/extensions/gsd/db/sql-constants.ts +12 -0
- package/src/resources/extensions/gsd/db/writers/cascades.ts +237 -0
- package/src/resources/extensions/gsd/db/writers/import-restore.ts +310 -0
- package/src/resources/extensions/gsd/db/writers/memory.ts +220 -0
- package/src/resources/extensions/gsd/db/writers/reconcile.ts +500 -0
- package/src/resources/extensions/gsd/db/writers/status.ts +88 -0
- package/src/resources/extensions/gsd/db-workspace.ts +170 -0
- package/src/resources/extensions/gsd/delegation-policy.ts +3 -11
- package/src/resources/extensions/gsd/discussion-handoff.ts +276 -0
- package/src/resources/extensions/gsd/docs/preferences-reference.md +9 -0
- package/src/resources/extensions/gsd/doctor-environment.ts +5 -13
- package/src/resources/extensions/gsd/doctor-format.ts +12 -7
- package/src/resources/extensions/gsd/doctor-git-checks.ts +3 -3
- package/src/resources/extensions/gsd/doctor-runtime-checks.ts +22 -17
- package/src/resources/extensions/gsd/doctor.ts +15 -5
- package/src/resources/extensions/gsd/error-classifier.ts +12 -1
- package/src/resources/extensions/gsd/git-conflict-state.ts +17 -1
- package/src/resources/extensions/gsd/git-service.ts +1 -0
- package/src/resources/extensions/gsd/gitignore.ts +3 -0
- package/src/resources/extensions/gsd/gsd-db.ts +185 -2373
- package/src/resources/extensions/gsd/guidance.ts +139 -0
- package/src/resources/extensions/gsd/guided-flow.ts +95 -561
- package/src/resources/extensions/gsd/guided-unit-completion.ts +275 -0
- package/src/resources/extensions/gsd/markdown-renderer.ts +2 -1
- package/src/resources/extensions/gsd/mcp-filter.ts +4 -24
- package/src/resources/extensions/gsd/mcp-tool-name.ts +30 -0
- package/src/resources/extensions/gsd/md-importer.ts +3 -3
- package/src/resources/extensions/gsd/memory-consolidation-scanner.ts +1 -1
- package/src/resources/extensions/gsd/migrate/safety.ts +20 -9
- package/src/resources/extensions/gsd/migration-auto-check.ts +30 -5
- package/src/resources/extensions/gsd/milestone-closeout-proof.ts +131 -0
- package/src/resources/extensions/gsd/milestone-closeout.ts +12 -4
- package/src/resources/extensions/gsd/milestone-merge-transaction.ts +47 -0
- package/src/resources/extensions/gsd/milestone-planning-persistence.ts +224 -0
- package/src/resources/extensions/gsd/milestone-readiness.ts +125 -0
- package/src/resources/extensions/gsd/milestone-settlement.ts +81 -0
- package/src/resources/extensions/gsd/milestone-validation-evidence.ts +95 -0
- package/src/resources/extensions/gsd/milestone-validation-verdict.ts +80 -0
- package/src/resources/extensions/gsd/model-cost-table.ts +1 -0
- package/src/resources/extensions/gsd/model-router.ts +3 -0
- package/src/resources/extensions/gsd/notification-store.ts +26 -3
- package/src/resources/extensions/gsd/parallel-eligibility.ts +4 -5
- package/src/resources/extensions/gsd/parallel-merge.ts +12 -9
- package/src/resources/extensions/gsd/parallel-monitor-overlay.ts +10 -7
- package/src/resources/extensions/gsd/parallel-orchestrator.ts +6 -2
- package/src/resources/extensions/gsd/paths.ts +42 -22
- package/src/resources/extensions/gsd/pre-execution-checks.ts +109 -3
- package/src/resources/extensions/gsd/preferences-diagnostics.ts +98 -0
- package/src/resources/extensions/gsd/preferences-models.ts +10 -46
- package/src/resources/extensions/gsd/preferences-types.ts +16 -0
- package/src/resources/extensions/gsd/preferences.ts +191 -28
- package/src/resources/extensions/gsd/prompts/complete-slice.md +1 -0
- package/src/resources/extensions/gsd/prompts/execute-task.md +2 -0
- package/src/resources/extensions/gsd/prompts/guided-discuss-project.md +3 -1
- package/src/resources/extensions/gsd/prompts/plan-milestone.md +2 -0
- package/src/resources/extensions/gsd/prompts/plan-slice.md +2 -1
- package/src/resources/extensions/gsd/prompts/refine-slice.md +2 -1
- package/src/resources/extensions/gsd/prompts/replan-slice.md +1 -1
- package/src/resources/extensions/gsd/prompts/system.md +1 -1
- package/src/resources/extensions/gsd/provider-error-guidance.ts +4 -9
- package/src/resources/extensions/gsd/provider-payload-policy.ts +140 -0
- package/src/resources/extensions/gsd/provider-switch-observer.ts +1 -1
- package/src/resources/extensions/gsd/publication.ts +122 -0
- package/src/resources/extensions/gsd/pull-request-process.ts +41 -0
- package/src/resources/extensions/gsd/quality-gate-closure.ts +140 -0
- package/src/resources/extensions/gsd/question-transport.ts +138 -0
- package/src/resources/extensions/gsd/recovery-classification.ts +47 -88
- package/src/resources/extensions/gsd/roadmap-slices.ts +8 -2
- package/src/resources/extensions/gsd/safety/evidence-collector.ts +36 -4
- package/src/resources/extensions/gsd/safety/evidence-cross-ref.ts +7 -2
- package/src/resources/extensions/gsd/safety/file-change-validator.ts +14 -0
- package/src/resources/extensions/gsd/slice-parallel-orchestrator.ts +6 -2
- package/src/resources/extensions/gsd/state-transition-matrix.ts +42 -0
- package/src/resources/extensions/gsd/state.ts +19 -26
- package/src/resources/extensions/gsd/status-guards.ts +59 -8
- package/src/resources/extensions/gsd/stop-notice.ts +75 -0
- package/src/resources/extensions/gsd/templates/plan.md +7 -0
- package/src/resources/extensions/gsd/templates/project.md +1 -0
- package/src/resources/extensions/gsd/templates/roadmap.md +1 -1
- package/src/resources/extensions/gsd/templates/uat.md +5 -1
- package/src/resources/extensions/gsd/tests/ask-user-questions-render.test.ts +92 -0
- package/src/resources/extensions/gsd/tests/auto-dashboard.test.ts +29 -1
- package/src/resources/extensions/gsd/tests/auto-loop.test.ts +444 -5
- package/src/resources/extensions/gsd/tests/auto-milestone-target.test.ts +23 -0
- package/src/resources/extensions/gsd/tests/auto-model-selection-tool-poisoning.test.ts +18 -0
- package/src/resources/extensions/gsd/tests/auto-orchestrator.test.ts +133 -4
- package/src/resources/extensions/gsd/tests/auto-paused-ui-cleanup.test.ts +3 -1
- package/src/resources/extensions/gsd/tests/auto-post-unit-evidence-crossref-4909.test.ts +46 -0
- package/src/resources/extensions/gsd/tests/auto-runtime-state.test.ts +34 -0
- package/src/resources/extensions/gsd/tests/auto-worktree-registry.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/auto-worktree-repair.test.ts +4 -2
- package/src/resources/extensions/gsd/tests/browser-automation-contract-fixture.ts +39 -0
- package/src/resources/extensions/gsd/tests/browser-contract.test.ts +44 -0
- package/src/resources/extensions/gsd/tests/canonical-milestone-root.test.ts +20 -0
- package/src/resources/extensions/gsd/tests/checkout-branch-stash-guard.test.ts +66 -1
- package/src/resources/extensions/gsd/tests/clear-stale-autostart.test.ts +44 -0
- package/src/resources/extensions/gsd/tests/codebase-generator.test.ts +22 -0
- package/src/resources/extensions/gsd/tests/commands-dispatcher-workspace-git.test.ts +11 -0
- package/src/resources/extensions/gsd/tests/commands-verdict.test.ts +46 -8
- package/src/resources/extensions/gsd/tests/dispatch-complete-milestone-guard.test.ts +34 -3
- package/src/resources/extensions/gsd/tests/dispatch-run-uat-browser-tools.test.ts +89 -0
- package/src/resources/extensions/gsd/tests/doctor-scope-db-unavailable.test.ts +18 -0
- package/src/resources/extensions/gsd/tests/evidence-xref-gsd-exec.test.ts +157 -0
- package/src/resources/extensions/gsd/tests/execute-task-rendering.test.ts +1 -0
- package/src/resources/extensions/gsd/tests/extension-bootstrap-isolation.test.ts +35 -1
- package/src/resources/extensions/gsd/tests/file-change-validator.test.ts +33 -1
- package/src/resources/extensions/gsd/tests/fixtures/pr-body/swarm-lane-no-blockers.md +1 -5
- package/src/resources/extensions/gsd/tests/fixtures/pr-body/swarm-lane-with-blockers.md +1 -5
- package/src/resources/extensions/gsd/tests/gate-state-canonicalization.test.ts +48 -1
- package/src/resources/extensions/gsd/tests/guidance.test.ts +125 -0
- package/src/resources/extensions/gsd/tests/integration/auto-worktree-milestone-merge.test.ts +58 -15
- package/src/resources/extensions/gsd/tests/integration/auto-worktree.test.ts +74 -59
- package/src/resources/extensions/gsd/tests/integration/git-service.test.ts +3 -2
- package/src/resources/extensions/gsd/tests/integration/gsd-integration-fixture.ts +80 -0
- package/src/resources/extensions/gsd/tests/mcp-tool-name.test.ts +34 -0
- package/src/resources/extensions/gsd/tests/migration-auto-check.test.ts +143 -1
- package/src/resources/extensions/gsd/tests/milestone-closeout-proof.test.ts +99 -0
- package/src/resources/extensions/gsd/tests/milestone-closeout.test.ts +25 -0
- package/src/resources/extensions/gsd/tests/milestone-merge-transaction.test.ts +46 -0
- package/src/resources/extensions/gsd/tests/milestone-readiness.test.ts +65 -0
- package/src/resources/extensions/gsd/tests/milestone-validation-evidence.test.ts +41 -0
- package/src/resources/extensions/gsd/tests/milestone-validation-verdict.test.ts +55 -0
- package/src/resources/extensions/gsd/tests/notification-store.test.ts +32 -0
- package/src/resources/extensions/gsd/tests/plan-milestone.test.ts +45 -0
- package/src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +2 -0
- package/src/resources/extensions/gsd/tests/planning-crossval.test.ts +45 -0
- package/src/resources/extensions/gsd/tests/pre-execution-checks.test.ts +193 -1
- package/src/resources/extensions/gsd/tests/preferences-diagnostics.test.ts +67 -0
- package/src/resources/extensions/gsd/tests/preferences.test.ts +183 -0
- package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +46 -0
- package/src/resources/extensions/gsd/tests/provider-error-guidance.test.ts +3 -3
- package/src/resources/extensions/gsd/tests/provider-errors.test.ts +9 -0
- package/src/resources/extensions/gsd/tests/provider-payload-policy.test.ts +165 -0
- package/src/resources/extensions/gsd/tests/publication.test.ts +120 -0
- package/src/resources/extensions/gsd/tests/pull-request-process.test.ts +47 -0
- package/src/resources/extensions/gsd/tests/recovery-classification-illegal-transition.test.ts +30 -0
- package/src/resources/extensions/gsd/tests/register-hooks-depth-verification.test.ts +342 -1
- package/src/resources/extensions/gsd/tests/roadmap-parse-regression.test.ts +40 -0
- package/src/resources/extensions/gsd/tests/runtime-invariant-modules.test.ts +26 -1
- package/src/resources/extensions/gsd/tests/safety-harness-false-positives.test.ts +38 -0
- package/src/resources/extensions/gsd/tests/session-start-footer.test.ts +80 -0
- package/src/resources/extensions/gsd/tests/session-switch-clears-pending-autostart.test.ts +108 -0
- package/src/resources/extensions/gsd/tests/single-writer-invariant.test.ts +144 -7
- package/src/resources/extensions/gsd/tests/stale-queued-milestone.test.ts +27 -0
- package/src/resources/extensions/gsd/tests/start-auto-detached.test.ts +2 -1
- package/src/resources/extensions/gsd/tests/state-transition-matrix.test.ts +36 -0
- package/src/resources/extensions/gsd/tests/status-guards.test.ts +38 -0
- package/src/resources/extensions/gsd/tests/stop-notice.test.ts +70 -0
- package/src/resources/extensions/gsd/tests/token-tool-gating.test.ts +35 -0
- package/src/resources/extensions/gsd/tests/tool-availability-audit.test.ts +35 -0
- package/src/resources/extensions/gsd/tests/tool-invocation-error-loop-break.test.ts +8 -0
- package/src/resources/extensions/gsd/tests/tool-naming.test.ts +35 -42
- package/src/resources/extensions/gsd/tests/tool-surface-readiness.test.ts +155 -0
- package/src/resources/extensions/gsd/tests/uat-policy.test.ts +24 -6
- package/src/resources/extensions/gsd/tests/unit-closeout.test.ts +209 -0
- package/src/resources/extensions/gsd/tests/unit-context-composer.test.ts +70 -2
- package/src/resources/extensions/gsd/tests/unit-registry.test.ts +163 -0
- package/src/resources/extensions/gsd/tests/user-input-boundary.test.ts +86 -1
- package/src/resources/extensions/gsd/tests/validate-milestone-stuck-guard.test.ts +39 -0
- package/src/resources/extensions/gsd/tests/web-app-uat.test.ts +193 -0
- package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +128 -11
- package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/workspace-git-preflight.test.ts +15 -0
- package/src/resources/extensions/gsd/tests/worktree-lifecycle.test.ts +41 -4
- package/src/resources/extensions/gsd/tests/worktree-manager.test.ts +43 -1
- package/src/resources/extensions/gsd/tests/worktree-placement.test.ts +113 -0
- package/src/resources/extensions/gsd/tests/worktree-projection-writers.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/worktree-reentry.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/worktree-safety.test.ts +3 -1
- package/src/resources/extensions/gsd/tests/worktree-symlink-removal.test.ts +12 -6
- package/src/resources/extensions/gsd/tests/worktree-teardown-safety.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/worktree-telemetry.test.ts +22 -0
- package/src/resources/extensions/gsd/tests/write-gate.test.ts +121 -0
- package/src/resources/extensions/gsd/tool-contract.ts +86 -8
- package/src/resources/extensions/gsd/tool-presentation-plan.ts +16 -33
- package/src/resources/extensions/gsd/tool-surface-readiness.ts +76 -0
- package/src/resources/extensions/gsd/tool-surface-snapshot.ts +47 -0
- package/src/resources/extensions/gsd/tools/complete-slice.ts +23 -58
- package/src/resources/extensions/gsd/tools/exec-tool.ts +5 -8
- package/src/resources/extensions/gsd/tools/plan-milestone.ts +19 -160
- package/src/resources/extensions/gsd/tools/plan-slice.ts +12 -6
- package/src/resources/extensions/gsd/tools/reassess-roadmap.ts +43 -0
- package/src/resources/extensions/gsd/tools/reopen-milestone.ts +11 -38
- package/src/resources/extensions/gsd/tools/reopen-slice.ts +14 -42
- package/src/resources/extensions/gsd/tools/skip-slice.ts +18 -44
- package/src/resources/extensions/gsd/tools/validate-milestone.ts +25 -84
- package/src/resources/extensions/gsd/uat-policy.ts +20 -10
- package/src/resources/extensions/gsd/uat-run.ts +10 -14
- package/src/resources/extensions/gsd/undo.ts +9 -8
- package/src/resources/extensions/gsd/unit-closeout.ts +201 -0
- package/src/resources/extensions/gsd/unit-context-composer.ts +97 -21
- package/src/resources/extensions/gsd/unit-context-manifest.ts +4 -28
- package/src/resources/extensions/gsd/unit-registry.ts +412 -0
- package/src/resources/extensions/gsd/unit-runtime.ts +3 -2
- package/src/resources/extensions/gsd/unit-tool-contracts.ts +27 -191
- package/src/resources/extensions/gsd/user-input-boundary.ts +18 -0
- package/src/resources/extensions/gsd/validation-block-guard.ts +2 -0
- package/src/resources/extensions/gsd/web-app-uat.ts +144 -0
- package/src/resources/extensions/gsd/workflow-mcp.ts +22 -110
- package/src/resources/extensions/gsd/workflow-reconcile.ts +3 -3
- package/src/resources/extensions/gsd/workflow-tool-surface.ts +76 -0
- package/src/resources/extensions/gsd/workspace-git-guard.ts +1 -0
- package/src/resources/extensions/gsd/worktree-git-recovery.ts +314 -0
- package/src/resources/extensions/gsd/worktree-lifecycle.ts +17 -17
- package/src/resources/extensions/gsd/worktree-manager.ts +47 -28
- package/src/resources/extensions/gsd/worktree-placement.ts +63 -0
- package/src/resources/extensions/gsd/worktree-reentry.ts +10 -7
- package/src/resources/extensions/gsd/worktree-root.ts +29 -6
- package/src/resources/extensions/gsd/worktree-safety.ts +8 -5
- package/src/resources/extensions/gsd/worktree-session-state.ts +11 -11
- package/src/resources/extensions/gsd/worktree-state-projection.ts +55 -7
- package/src/resources/extensions/gsd/worktree-telemetry.ts +16 -0
- package/src/resources/extensions/search-the-web/native-search.ts +5 -3
- package/src/resources/extensions/shared/browser-contract.ts +66 -0
- package/src/resources/extensions/shared/gsd-browser-cli.ts +88 -4
- package/src/resources/extensions/shared/interview-ui.ts +15 -2
- package/src/resources/shared/claude-runtime-floor.ts +248 -0
- package/src/resources/skills/create-skill/references/executable-code.md +1 -1
- package/src/resources/skills/create-skill/workflows/add-reference.md +8 -3
- package/src/resources/skills/create-skill/workflows/add-script.md +4 -2
- package/src/resources/skills/create-skill/workflows/add-template.md +3 -1
- package/src/resources/skills/create-skill/workflows/add-workflow.md +8 -3
- package/src/resources/skills/create-skill/workflows/upgrade-to-router.md +10 -5
- package/src/resources/skills/create-skill/workflows/verify-skill.md +9 -4
- package/src/resources/skills/gsd-browser/SKILL.md +1 -1
- package/src/resources/skills/spike-wrap-up/SKILL.md +9 -9
- package/dist/web/standalone/.next/static/chunks/2659.feb6499ca863ebfc.js +0 -1
- package/dist/web/standalone/.next/static/chunks/2772.151789db0edea835.js +0 -1
- package/dist/web/standalone/.next/static/chunks/4283.10a065467b5340d8.js +0 -2
- package/dist/web/standalone/.next/static/chunks/5826.960dc4634cc9b0d3.js +0 -1
- package/dist/web/standalone/.next/static/chunks/796.46f811c0fac23aab.js +0 -10
- package/dist/web/standalone/.next/static/chunks/8785.d32f7a61f55c1600.js +0 -1
- /package/dist/web/standalone/.next/static/{Qbr81pQ-pbQXP4bq2VXLv → AOpDeK_gJHU8OZjRo31gQ}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{Qbr81pQ-pbQXP4bq2VXLv → AOpDeK_gJHU8OZjRo31gQ}/_ssgManifest.js +0 -0
|
@@ -81,6 +81,7 @@ import {
|
|
|
81
81
|
resolveAutoSupervisorConfig,
|
|
82
82
|
loadEffectiveGSDPreferences,
|
|
83
83
|
getIsolationMode,
|
|
84
|
+
resolveEffectiveUnitIsolationMode,
|
|
84
85
|
} from "./preferences.js";
|
|
85
86
|
import { playNotificationBell, sendDesktopNotification } from "./notifications.js";
|
|
86
87
|
import type { GSDPreferences } from "./preferences.js";
|
|
@@ -185,6 +186,7 @@ import {
|
|
|
185
186
|
} from "./auto-worktree.js";
|
|
186
187
|
import { pruneQueueOrder } from "./queue-order.js";
|
|
187
188
|
import { startCommandPolling as _startCommandPolling, isRemoteConfigured } from "../remote-questions/manager.js";
|
|
189
|
+
import { createMilestoneMergeTransaction } from "./milestone-merge-transaction.js";
|
|
188
190
|
|
|
189
191
|
import { debugLog, isDebugEnabled, writeDebugSummary } from "./debug-logger.js";
|
|
190
192
|
import {
|
|
@@ -225,8 +227,8 @@ import {
|
|
|
225
227
|
getMilestoneSlices,
|
|
226
228
|
getSlice,
|
|
227
229
|
getTask,
|
|
228
|
-
refreshOpenDatabaseFromDisk,
|
|
229
230
|
} from "./gsd-db.js";
|
|
231
|
+
import { closeWorkflowDatabase } from "./db-workspace.js";
|
|
230
232
|
import { markLatestActiveForWorkerCanceled } from "./db/unit-dispatches.js";
|
|
231
233
|
import { writeUnitRuntimeRecord } from "./unit-runtime.js";
|
|
232
234
|
import { countPendingCaptures } from "./captures.js";
|
|
@@ -320,7 +322,7 @@ export type {
|
|
|
320
322
|
UnitRouting,
|
|
321
323
|
StartModel,
|
|
322
324
|
} from "./auto/session.js";
|
|
323
|
-
import { autoSession as s } from "./auto-runtime-state.js";
|
|
325
|
+
import { autoSession as s, getAutoRuntimeSnapshot } from "./auto-runtime-state.js";
|
|
324
326
|
import { gsdHome } from "./gsd-home.js";
|
|
325
327
|
import { createWorkspace, scopeMilestone } from "./workspace.js";
|
|
326
328
|
import {
|
|
@@ -329,6 +331,11 @@ import {
|
|
|
329
331
|
} from "./db/auto-workers.js";
|
|
330
332
|
import { releaseMilestoneLease } from "./db/milestone-leases.js";
|
|
331
333
|
import { normalizeRealPath } from "./paths.js";
|
|
334
|
+
import {
|
|
335
|
+
formatStopNoticePrefix,
|
|
336
|
+
isBlockedStopReason,
|
|
337
|
+
stopNoticeDisplayReason,
|
|
338
|
+
} from "./stop-notice.js";
|
|
332
339
|
|
|
333
340
|
// ── ENCAPSULATION INVARIANT ─────────────────────────────────────────────────
|
|
334
341
|
// ALL mutable auto-mode state lives in the AutoSession class (auto/session.ts).
|
|
@@ -353,19 +360,7 @@ export function formatAutoStopNotification(prefix: string, totals: { cost: numbe
|
|
|
353
360
|
].join("\n");
|
|
354
361
|
}
|
|
355
362
|
|
|
356
|
-
|
|
357
|
-
return /^Blocked:\s*/i.test(reason ?? "");
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
function formatAutoStopDisplayReason(reason?: string | null): string {
|
|
361
|
-
return (reason ?? "").replace(/^Blocked:\s*/i, "").trim();
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
export function formatAutoStopNotificationPrefix(reason?: string | null): string {
|
|
365
|
-
const displayReason = formatAutoStopDisplayReason(reason);
|
|
366
|
-
const prefix = isBlockedStopReason(reason) ? "Auto-mode blocked" : "Auto-mode stopped";
|
|
367
|
-
return displayReason ? `${prefix} — ${displayReason}` : prefix;
|
|
368
|
-
}
|
|
363
|
+
export { formatStopNoticePrefix as formatAutoStopNotificationPrefix } from "./stop-notice.js";
|
|
369
364
|
|
|
370
365
|
function clearSessionModelOverrideForCommandSession(ctx?: ExtensionContext | null): void {
|
|
371
366
|
const sessionId =
|
|
@@ -633,22 +628,24 @@ export function shouldUseWorktreeIsolation(basePath?: string): boolean {
|
|
|
633
628
|
|
|
634
629
|
type AutoIsolationMode = ReturnType<typeof getIsolationMode>;
|
|
635
630
|
|
|
636
|
-
function resolveEffectiveUnitIsolationMode(
|
|
637
|
-
configuredMode: AutoIsolationMode,
|
|
638
|
-
isolationDegraded: boolean,
|
|
639
|
-
): AutoIsolationMode {
|
|
640
|
-
return configuredMode === "worktree" && isolationDegraded ? "branch" : configuredMode;
|
|
641
|
-
}
|
|
642
|
-
|
|
643
631
|
export function _resolveEffectiveUnitIsolationModeForTest(
|
|
644
632
|
configuredMode: AutoIsolationMode,
|
|
645
633
|
isolationDegraded: boolean,
|
|
634
|
+
strandedRecoveryIsolationMode: "worktree" | "branch" | null = null,
|
|
646
635
|
): AutoIsolationMode {
|
|
647
|
-
return resolveEffectiveUnitIsolationMode(
|
|
636
|
+
return resolveEffectiveUnitIsolationMode(
|
|
637
|
+
configuredMode,
|
|
638
|
+
isolationDegraded,
|
|
639
|
+
strandedRecoveryIsolationMode,
|
|
640
|
+
);
|
|
648
641
|
}
|
|
649
642
|
|
|
650
643
|
function getEffectiveUnitIsolationMode(basePath: string): AutoIsolationMode {
|
|
651
|
-
return resolveEffectiveUnitIsolationMode(
|
|
644
|
+
return resolveEffectiveUnitIsolationMode(
|
|
645
|
+
getIsolationMode(basePath),
|
|
646
|
+
s.isolationDegraded,
|
|
647
|
+
s.strandedRecoveryIsolationMode,
|
|
648
|
+
);
|
|
652
649
|
}
|
|
653
650
|
|
|
654
651
|
/** Crash recovery prompt — set by startAuto, consumed by the main loop */
|
|
@@ -791,6 +788,7 @@ export { type AutoDashboardData } from "./auto-dashboard.js";
|
|
|
791
788
|
|
|
792
789
|
export function getAutoDashboardData(): AutoDashboardData {
|
|
793
790
|
const ledger = getLedger();
|
|
791
|
+
const runtimeSnapshot = getAutoRuntimeSnapshot();
|
|
794
792
|
const totals = ledger ? getProjectTotals(ledger.units) : null;
|
|
795
793
|
const sessionId = s.cmdCtx?.sessionManager?.getSessionId?.() ?? null;
|
|
796
794
|
const rtkSavings = sessionId && s.basePath
|
|
@@ -822,6 +820,7 @@ export function getAutoDashboardData(): AutoDashboardData {
|
|
|
822
820
|
pendingCaptureCount,
|
|
823
821
|
rtkSavings,
|
|
824
822
|
rtkEnabled,
|
|
823
|
+
toolSurface: runtimeSnapshot.toolSurface,
|
|
825
824
|
};
|
|
826
825
|
}
|
|
827
826
|
|
|
@@ -1459,8 +1458,8 @@ export async function stopAuto(
|
|
|
1459
1458
|
): Promise<void> {
|
|
1460
1459
|
if (!s.active && !s.paused) return;
|
|
1461
1460
|
const loadedPreferences = loadEffectiveGSDPreferences(s.basePath || undefined)?.preferences;
|
|
1462
|
-
const stopNotificationPrefix =
|
|
1463
|
-
const displayReason =
|
|
1461
|
+
const stopNotificationPrefix = formatStopNoticePrefix(reason);
|
|
1462
|
+
const displayReason = stopNoticeDisplayReason(reason);
|
|
1464
1463
|
const isHeadlessStop = process.env.GSD_HEADLESS === "1";
|
|
1465
1464
|
const completionStopRequested = Boolean(options.completionWidget);
|
|
1466
1465
|
const preserveCloseoutTranscript = !isHeadlessStop && (
|
|
@@ -1476,12 +1475,17 @@ export async function stopAuto(
|
|
|
1476
1475
|
// worktree was active, and whether the current milestone was merged before
|
|
1477
1476
|
// stopAuto. The unmerged-work warning is only meaningful for real worktrees.
|
|
1478
1477
|
try {
|
|
1479
|
-
const {
|
|
1478
|
+
const {
|
|
1479
|
+
autoExitReasonForTerminalOutcome,
|
|
1480
|
+
emitAutoExit,
|
|
1481
|
+
normalizeAutoExitReason,
|
|
1482
|
+
} = await import("./worktree-telemetry.js");
|
|
1480
1483
|
// Normalize the free-form reason to a closed set so the telemetry
|
|
1481
1484
|
// aggregator buckets stably. Raw detail is preserved in the phases.ts
|
|
1482
1485
|
// notification and the notify'd error string.
|
|
1483
1486
|
const rawReason = reason ?? "stop";
|
|
1484
|
-
const normalizedReason =
|
|
1487
|
+
const normalizedReason = autoExitReasonForTerminalOutcome(options.terminalOutcome)
|
|
1488
|
+
?? normalizeAutoExitReason(rawReason);
|
|
1485
1489
|
const telemetryBase = s.originalBasePath || s.basePath;
|
|
1486
1490
|
emitAutoExit(telemetryBase, {
|
|
1487
1491
|
reason: normalizedReason,
|
|
@@ -1674,8 +1678,7 @@ export async function stopAuto(
|
|
|
1674
1678
|
// ── Step 6: DB cleanup ──
|
|
1675
1679
|
if (isDbAvailable()) {
|
|
1676
1680
|
try {
|
|
1677
|
-
|
|
1678
|
-
closeDatabase();
|
|
1681
|
+
closeWorkflowDatabase();
|
|
1679
1682
|
} catch (e) {
|
|
1680
1683
|
debugLog("db-close-failed", {
|
|
1681
1684
|
error: e instanceof Error ? e.message : String(e),
|
|
@@ -2143,7 +2146,7 @@ export function buildWorktreeLifecycleDeps(): WorktreeLifecycleDeps {
|
|
|
2143
2146
|
// C4 (#5627) — GitServiceImpl constructor → gitServiceFactory
|
|
2144
2147
|
//
|
|
2145
2148
|
// Final WorktreeLifecycleDeps shape: 3 fields (gitServiceFactory,
|
|
2146
|
-
// worktreeProjection, mergeMilestoneToMain). Down from 18 at slice-7
|
|
2149
|
+
// worktreeProjection, mergeMilestoneToMain transaction runner). Down from 18 at slice-7
|
|
2147
2150
|
// closure.
|
|
2148
2151
|
return {
|
|
2149
2152
|
gitServiceFactory: (basePath: string) => {
|
|
@@ -2152,7 +2155,7 @@ export function buildWorktreeLifecycleDeps(): WorktreeLifecycleDeps {
|
|
|
2152
2155
|
return new GitServiceImpl(basePath, gitConfig);
|
|
2153
2156
|
},
|
|
2154
2157
|
worktreeProjection: new WorktreeStateProjection(),
|
|
2155
|
-
mergeMilestoneToMain,
|
|
2158
|
+
mergeMilestoneToMain: createMilestoneMergeTransaction(mergeMilestoneToMain),
|
|
2156
2159
|
};
|
|
2157
2160
|
}
|
|
2158
2161
|
|
|
@@ -43,10 +43,8 @@ import {
|
|
|
43
43
|
} from "../error-classifier.js";
|
|
44
44
|
import { blockModel, isModelBlocked } from "../blocked-models.js";
|
|
45
45
|
import { getProjectGSDPreferencesPath } from "../preferences.js";
|
|
46
|
-
import {
|
|
47
|
-
|
|
48
|
-
resolveProviderErrorGuidance,
|
|
49
|
-
} from "../provider-error-guidance.js";
|
|
46
|
+
import { resolveProviderErrorGuidance } from "../provider-error-guidance.js";
|
|
47
|
+
import { formatGuidance } from "../guidance.js";
|
|
50
48
|
|
|
51
49
|
const retryState = createRetryState();
|
|
52
50
|
const MAX_NETWORK_RETRIES = 2;
|
|
@@ -627,7 +625,7 @@ export async function handleAgentEnd(
|
|
|
627
625
|
preferencesPath: dash.basePath ? getProjectGSDPreferencesPath(dash.basePath) : undefined,
|
|
628
626
|
hasConfiguredFallbacks: (modelConfig?.fallbacks.length ?? 0) > 0,
|
|
629
627
|
});
|
|
630
|
-
const guidanceText =
|
|
628
|
+
const guidanceText = formatGuidance(guidance);
|
|
631
629
|
|
|
632
630
|
await pauseForProviderModelRejection(ctx, pi, {
|
|
633
631
|
errorDetail,
|
|
@@ -12,6 +12,7 @@ import { logError } from "../workflow-logger.js";
|
|
|
12
12
|
import { getErrorMessage } from "../error-utils.js";
|
|
13
13
|
import { incrementLegacyTelemetry } from "../legacy-telemetry.js";
|
|
14
14
|
import { prepareSaveGateResultArguments } from "../tools/save-gate-result-args.js";
|
|
15
|
+
import { aliasesForWorkflowTool } from "../workflow-tool-surface.js";
|
|
15
16
|
|
|
16
17
|
async function loadWorkflowExecutors(): Promise<typeof import("../tools/workflow-tool-executors.js")> {
|
|
17
18
|
return importWorkflowExecutorsModule();
|
|
@@ -53,6 +54,14 @@ function registerAlias(pi: ExtensionAPI, toolDef: any, aliasName: string, canoni
|
|
|
53
54
|
});
|
|
54
55
|
}
|
|
55
56
|
|
|
57
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- toolDef shape matches ToolDefinition but varies by schema
|
|
58
|
+
function registerWorkflowTool(pi: ExtensionAPI, toolDef: any): void {
|
|
59
|
+
pi.registerTool(toolDef);
|
|
60
|
+
for (const alias of aliasesForWorkflowTool(toolDef.name)) {
|
|
61
|
+
registerAlias(pi, toolDef, alias, toolDef.name);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
56
65
|
function requirementRootWriteGuard(operation: string, basePath: string): { content: Array<{ type: "text"; text: string }>; details: Record<string, unknown>; isError: true } | null {
|
|
57
66
|
const guard = shouldBlockRootArtifactSaveInSnapshot(loadWriteGateSnapshot(basePath), "REQUIREMENTS");
|
|
58
67
|
if (!guard.block) return null;
|
|
@@ -171,8 +180,7 @@ export function registerDbTools(pi: ExtensionAPI): void {
|
|
|
171
180
|
},
|
|
172
181
|
};
|
|
173
182
|
|
|
174
|
-
pi
|
|
175
|
-
registerAlias(pi, decisionSaveTool, "gsd_save_decision", "gsd_decision_save");
|
|
183
|
+
registerWorkflowTool(pi, decisionSaveTool);
|
|
176
184
|
|
|
177
185
|
// ─── gsd_requirement_update (formerly gsd_update_requirement) ───────────
|
|
178
186
|
|
|
@@ -252,8 +260,7 @@ export function registerDbTools(pi: ExtensionAPI): void {
|
|
|
252
260
|
},
|
|
253
261
|
};
|
|
254
262
|
|
|
255
|
-
pi
|
|
256
|
-
registerAlias(pi, requirementUpdateTool, "gsd_update_requirement", "gsd_requirement_update");
|
|
263
|
+
registerWorkflowTool(pi, requirementUpdateTool);
|
|
257
264
|
|
|
258
265
|
// ─── gsd_requirement_save ─────────────────────────────────────────────
|
|
259
266
|
|
|
@@ -355,8 +362,7 @@ export function registerDbTools(pi: ExtensionAPI): void {
|
|
|
355
362
|
},
|
|
356
363
|
};
|
|
357
364
|
|
|
358
|
-
pi
|
|
359
|
-
registerAlias(pi, requirementSaveTool, "gsd_save_requirement", "gsd_requirement_save");
|
|
365
|
+
registerWorkflowTool(pi, requirementSaveTool);
|
|
360
366
|
|
|
361
367
|
// ─── gsd_summary_save (formerly gsd_save_summary) ──────────────────────
|
|
362
368
|
|
|
@@ -413,8 +419,7 @@ export function registerDbTools(pi: ExtensionAPI): void {
|
|
|
413
419
|
},
|
|
414
420
|
};
|
|
415
421
|
|
|
416
|
-
pi
|
|
417
|
-
registerAlias(pi, summarySaveTool, "gsd_save_summary", "gsd_summary_save");
|
|
422
|
+
registerWorkflowTool(pi, summarySaveTool);
|
|
418
423
|
|
|
419
424
|
// ─── gsd_uat_result_save ─────────────────────────────────────────────────
|
|
420
425
|
|
|
@@ -503,7 +508,7 @@ export function registerDbTools(pi: ExtensionAPI): void {
|
|
|
503
508
|
},
|
|
504
509
|
};
|
|
505
510
|
|
|
506
|
-
pi
|
|
511
|
+
registerWorkflowTool(pi, uatResultSaveTool);
|
|
507
512
|
|
|
508
513
|
// ─── gsd_milestone_generate_id (formerly gsd_generate_milestone_id) ────
|
|
509
514
|
|
|
@@ -592,8 +597,7 @@ export function registerDbTools(pi: ExtensionAPI): void {
|
|
|
592
597
|
},
|
|
593
598
|
};
|
|
594
599
|
|
|
595
|
-
pi
|
|
596
|
-
registerAlias(pi, milestoneGenerateIdTool, "gsd_generate_milestone_id", "gsd_milestone_generate_id");
|
|
600
|
+
registerWorkflowTool(pi, milestoneGenerateIdTool);
|
|
597
601
|
|
|
598
602
|
// ─── gsd_plan_milestone (gsd_milestone_plan alias) ─────────────────────
|
|
599
603
|
|
|
@@ -664,8 +668,7 @@ export function registerDbTools(pi: ExtensionAPI): void {
|
|
|
664
668
|
execute: planMilestoneExecute,
|
|
665
669
|
};
|
|
666
670
|
|
|
667
|
-
pi
|
|
668
|
-
registerAlias(pi, planMilestoneTool, "gsd_milestone_plan", "gsd_plan_milestone");
|
|
671
|
+
registerWorkflowTool(pi, planMilestoneTool);
|
|
669
672
|
|
|
670
673
|
// ─── gsd_plan_slice (gsd_slice_plan alias) ─────────────────────────────
|
|
671
674
|
|
|
@@ -714,8 +717,7 @@ export function registerDbTools(pi: ExtensionAPI): void {
|
|
|
714
717
|
execute: planSliceExecute,
|
|
715
718
|
};
|
|
716
719
|
|
|
717
|
-
pi
|
|
718
|
-
registerAlias(pi, planSliceTool, "gsd_slice_plan", "gsd_plan_slice");
|
|
720
|
+
registerWorkflowTool(pi, planSliceTool);
|
|
719
721
|
|
|
720
722
|
// ─── gsd_plan_task (gsd_task_plan alias) ───────────────────────────────
|
|
721
723
|
|
|
@@ -788,8 +790,7 @@ export function registerDbTools(pi: ExtensionAPI): void {
|
|
|
788
790
|
execute: planTaskExecute,
|
|
789
791
|
};
|
|
790
792
|
|
|
791
|
-
pi
|
|
792
|
-
registerAlias(pi, planTaskTool, "gsd_task_plan", "gsd_plan_task");
|
|
793
|
+
registerWorkflowTool(pi, planTaskTool);
|
|
793
794
|
|
|
794
795
|
// ─── gsd_task_complete (gsd_complete_task alias) ────────────────────────
|
|
795
796
|
|
|
@@ -857,8 +858,7 @@ export function registerDbTools(pi: ExtensionAPI): void {
|
|
|
857
858
|
execute: taskCompleteExecute,
|
|
858
859
|
};
|
|
859
860
|
|
|
860
|
-
pi
|
|
861
|
-
registerAlias(pi, taskCompleteTool, "gsd_complete_task", "gsd_task_complete");
|
|
861
|
+
registerWorkflowTool(pi, taskCompleteTool);
|
|
862
862
|
|
|
863
863
|
// ─── gsd_slice_complete (gsd_complete_slice alias) ─────────────────────
|
|
864
864
|
|
|
@@ -943,8 +943,7 @@ export function registerDbTools(pi: ExtensionAPI): void {
|
|
|
943
943
|
execute: sliceCompleteExecute,
|
|
944
944
|
};
|
|
945
945
|
|
|
946
|
-
pi
|
|
947
|
-
registerAlias(pi, sliceCompleteTool, "gsd_complete_slice", "gsd_slice_complete");
|
|
946
|
+
registerWorkflowTool(pi, sliceCompleteTool);
|
|
948
947
|
|
|
949
948
|
// ─── gsd_skip_slice (#3477 / #3487) ───────────────────────────────────
|
|
950
949
|
|
|
@@ -1016,7 +1015,7 @@ export function registerDbTools(pi: ExtensionAPI): void {
|
|
|
1016
1015
|
}
|
|
1017
1016
|
};
|
|
1018
1017
|
|
|
1019
|
-
pi
|
|
1018
|
+
registerWorkflowTool(pi, {
|
|
1020
1019
|
name: "gsd_skip_slice",
|
|
1021
1020
|
label: "Skip Slice",
|
|
1022
1021
|
description:
|
|
@@ -1081,8 +1080,7 @@ export function registerDbTools(pi: ExtensionAPI): void {
|
|
|
1081
1080
|
execute: milestoneCompleteExecute,
|
|
1082
1081
|
};
|
|
1083
1082
|
|
|
1084
|
-
pi
|
|
1085
|
-
registerAlias(pi, milestoneCompleteTool, "gsd_milestone_complete", "gsd_complete_milestone");
|
|
1083
|
+
registerWorkflowTool(pi, milestoneCompleteTool);
|
|
1086
1084
|
|
|
1087
1085
|
// ─── gsd_validate_milestone (gsd_milestone_validate alias) ─────────────
|
|
1088
1086
|
|
|
@@ -1121,8 +1119,7 @@ export function registerDbTools(pi: ExtensionAPI): void {
|
|
|
1121
1119
|
execute: milestoneValidateExecute,
|
|
1122
1120
|
};
|
|
1123
1121
|
|
|
1124
|
-
pi
|
|
1125
|
-
registerAlias(pi, milestoneValidateTool, "gsd_milestone_validate", "gsd_validate_milestone");
|
|
1122
|
+
registerWorkflowTool(pi, milestoneValidateTool);
|
|
1126
1123
|
|
|
1127
1124
|
// ─── gsd_replan_slice (gsd_slice_replan alias) ─────────────────────────
|
|
1128
1125
|
|
|
@@ -1172,8 +1169,7 @@ export function registerDbTools(pi: ExtensionAPI): void {
|
|
|
1172
1169
|
execute: replanSliceExecute,
|
|
1173
1170
|
};
|
|
1174
1171
|
|
|
1175
|
-
pi
|
|
1176
|
-
registerAlias(pi, replanSliceTool, "gsd_slice_replan", "gsd_replan_slice");
|
|
1172
|
+
registerWorkflowTool(pi, replanSliceTool);
|
|
1177
1173
|
|
|
1178
1174
|
// ─── gsd_reassess_roadmap (gsd_roadmap_reassess alias) ─────────────────
|
|
1179
1175
|
|
|
@@ -1231,8 +1227,7 @@ export function registerDbTools(pi: ExtensionAPI): void {
|
|
|
1231
1227
|
execute: reassessRoadmapExecute,
|
|
1232
1228
|
};
|
|
1233
1229
|
|
|
1234
|
-
pi
|
|
1235
|
-
registerAlias(pi, reassessRoadmapTool, "gsd_roadmap_reassess", "gsd_reassess_roadmap");
|
|
1230
|
+
registerWorkflowTool(pi, reassessRoadmapTool);
|
|
1236
1231
|
|
|
1237
1232
|
// ─── gsd_task_reopen (gsd_reopen_task alias) ───────────────────────────
|
|
1238
1233
|
// Single-writer v3, Stream 3: reversibility tools for closed units.
|
|
@@ -1299,8 +1294,7 @@ export function registerDbTools(pi: ExtensionAPI): void {
|
|
|
1299
1294
|
execute: reopenTaskExecute,
|
|
1300
1295
|
};
|
|
1301
1296
|
|
|
1302
|
-
pi
|
|
1303
|
-
registerAlias(pi, reopenTaskTool, "gsd_reopen_task", "gsd_task_reopen");
|
|
1297
|
+
registerWorkflowTool(pi, reopenTaskTool);
|
|
1304
1298
|
|
|
1305
1299
|
// ─── gsd_slice_reopen (gsd_reopen_slice alias) ─────────────────────────
|
|
1306
1300
|
|
|
@@ -1366,8 +1360,7 @@ export function registerDbTools(pi: ExtensionAPI): void {
|
|
|
1366
1360
|
execute: reopenSliceExecute,
|
|
1367
1361
|
};
|
|
1368
1362
|
|
|
1369
|
-
pi
|
|
1370
|
-
registerAlias(pi, reopenSliceTool, "gsd_reopen_slice", "gsd_slice_reopen");
|
|
1363
|
+
registerWorkflowTool(pi, reopenSliceTool);
|
|
1371
1364
|
|
|
1372
1365
|
// ─── gsd_milestone_reopen (gsd_reopen_milestone alias) ─────────────────
|
|
1373
1366
|
|
|
@@ -1431,8 +1424,7 @@ export function registerDbTools(pi: ExtensionAPI): void {
|
|
|
1431
1424
|
execute: reopenMilestoneExecute,
|
|
1432
1425
|
};
|
|
1433
1426
|
|
|
1434
|
-
pi
|
|
1435
|
-
registerAlias(pi, reopenMilestoneTool, "gsd_reopen_milestone", "gsd_milestone_reopen");
|
|
1427
|
+
registerWorkflowTool(pi, reopenMilestoneTool);
|
|
1436
1428
|
|
|
1437
1429
|
// ─── gsd_save_gate_result ──────────────────────────────────────────────
|
|
1438
1430
|
|
|
@@ -1500,5 +1492,5 @@ export function registerDbTools(pi: ExtensionAPI): void {
|
|
|
1500
1492
|
},
|
|
1501
1493
|
};
|
|
1502
1494
|
|
|
1503
|
-
pi
|
|
1495
|
+
registerWorkflowTool(pi, saveGateResultTool);
|
|
1504
1496
|
}
|
|
@@ -2,16 +2,17 @@
|
|
|
2
2
|
// File Purpose: Registers workspace-aware dynamic filesystem and shell tools.
|
|
3
3
|
import { existsSync, readdirSync } from "node:fs";
|
|
4
4
|
import { homedir } from "node:os";
|
|
5
|
-
import {
|
|
5
|
+
import { join } from "node:path";
|
|
6
6
|
|
|
7
7
|
import type { ExtensionAPI } from "@gsd/pi-coding-agent";
|
|
8
8
|
import { createBashTool, createEditTool, createReadTool, createWriteTool } from "@gsd/pi-coding-agent";
|
|
9
9
|
|
|
10
10
|
import { DEFAULT_BASH_TIMEOUT_SECS } from "../constants.js";
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
11
|
+
import { logWarning } from "../workflow-logger.js";
|
|
12
|
+
import { openWorkflowDatabase } from "../db-workspace.js";
|
|
13
13
|
import { getAutoWorktreePath } from "../auto-worktree.js";
|
|
14
14
|
import { resolveWorktreeProjectRoot } from "../worktree-root.js";
|
|
15
|
+
import { worktreesDirs } from "../worktree-placement.js";
|
|
15
16
|
|
|
16
17
|
export function safeWorkspaceCwd(): string {
|
|
17
18
|
try {
|
|
@@ -46,13 +47,15 @@ export function resolveWorkflowToolBasePath(
|
|
|
46
47
|
const worktree = getAutoWorktreePath(projectRoot, milestoneId);
|
|
47
48
|
if (worktree) return worktree;
|
|
48
49
|
} else {
|
|
49
|
-
const
|
|
50
|
-
|
|
50
|
+
const live: string[] = [];
|
|
51
|
+
for (const worktreesDir of worktreesDirs(projectRoot)) {
|
|
52
|
+
if (!existsSync(worktreesDir)) continue;
|
|
51
53
|
try {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
live.push(
|
|
55
|
+
...readdirSync(worktreesDir)
|
|
56
|
+
.map((name) => join(worktreesDir, name))
|
|
57
|
+
.filter((p) => existsSync(join(p, ".git"))),
|
|
58
|
+
);
|
|
56
59
|
} catch (err) {
|
|
57
60
|
logWarning(
|
|
58
61
|
"bootstrap",
|
|
@@ -60,49 +63,23 @@ export function resolveWorkflowToolBasePath(
|
|
|
60
63
|
);
|
|
61
64
|
}
|
|
62
65
|
}
|
|
66
|
+
if (live.length === 1) return live[0]!;
|
|
63
67
|
}
|
|
64
68
|
return cwd;
|
|
65
69
|
}
|
|
66
70
|
|
|
67
|
-
|
|
68
|
-
* Resolve the correct DB path for the current working directory.
|
|
69
|
-
* If `basePath` is inside a `.gsd/worktrees/<MID>/` directory, returns
|
|
70
|
-
* the project root's `.gsd/gsd.db` (shared WAL — R012). Otherwise
|
|
71
|
-
* returns `<basePath>/.gsd/gsd.db`.
|
|
72
|
-
*/
|
|
73
|
-
export function resolveProjectRootDbPath(basePath: string): string {
|
|
74
|
-
return resolveGsdPathContract(basePath).projectDb;
|
|
75
|
-
}
|
|
71
|
+
export { resolveProjectRootDbPath } from "../db-workspace.js";
|
|
76
72
|
|
|
77
73
|
export async function ensureDbOpen(basePath: string = safeWorkspaceCwd()): Promise<boolean> {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
const contract = resolveGsdPathContract(basePath);
|
|
81
|
-
const dbPath = contract.projectDb;
|
|
82
|
-
const gsdDir = contract.projectGsd;
|
|
83
|
-
const projectRoot = dirname(dirname(dbPath));
|
|
84
|
-
|
|
85
|
-
// Open existing DB file (may be at project root for worktrees)
|
|
86
|
-
if (existsSync(dbPath)) {
|
|
87
|
-
const opened = db.openDatabase(dbPath);
|
|
88
|
-
if (opened) setLogBasePath(projectRoot);
|
|
89
|
-
return opened;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
// No DB file — create an empty authoritative DB. Markdown migration is
|
|
93
|
-
// explicit-only; runtime startup must not import projections into state.
|
|
94
|
-
if (existsSync(gsdDir)) {
|
|
95
|
-
const opened = db.openDatabase(dbPath);
|
|
96
|
-
if (opened) setLogBasePath(projectRoot);
|
|
97
|
-
return opened;
|
|
98
|
-
}
|
|
74
|
+
const result = openWorkflowDatabase(basePath);
|
|
75
|
+
if (result.ok) return true;
|
|
99
76
|
|
|
77
|
+
if (result.reason === "missing-gsd-dir") {
|
|
100
78
|
logWarning("bootstrap", "ensureDbOpen failed — no .gsd directory found");
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
logWarning("bootstrap", `ensureDbOpen failed: ${(err as Error).message ?? String(err)}`);
|
|
104
|
-
return false;
|
|
79
|
+
} else {
|
|
80
|
+
logWarning("bootstrap", `ensureDbOpen failed: ${result.error?.message ?? "open failed"}`);
|
|
105
81
|
}
|
|
82
|
+
return false;
|
|
106
83
|
}
|
|
107
84
|
|
|
108
85
|
export function registerDynamicTools(pi: ExtensionAPI): void {
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import { Type } from "@sinclair/typebox";
|
|
6
6
|
import type { ExtensionAPI } from "@gsd/pi-coding-agent";
|
|
7
7
|
import { ensureDbOpen, resolveCtxCwd } from "./dynamic-tools.js";
|
|
8
|
+
import { checkpointWorkflowDatabase } from "../db-workspace.js";
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
export function registerQueryTools(pi: ExtensionAPI): void {
|
|
@@ -57,8 +58,7 @@ export function registerQueryTools(pi: ExtensionAPI): void {
|
|
|
57
58
|
details: { operation: "checkpoint_db", error: "db_unavailable" },
|
|
58
59
|
};
|
|
59
60
|
}
|
|
60
|
-
|
|
61
|
-
checkpointDatabase();
|
|
61
|
+
checkpointWorkflowDatabase();
|
|
62
62
|
return {
|
|
63
63
|
content: [{ type: "text", text: "WAL checkpoint complete. gsd.db is now up to date and safe to stage with git add." }],
|
|
64
64
|
details: { operation: "checkpoint_db", status: "ok" },
|
|
@@ -17,6 +17,7 @@ import { registerHooks } from "./register-hooks.js";
|
|
|
17
17
|
import { registerShortcuts } from "./register-shortcuts.js";
|
|
18
18
|
import { writeCrashLog } from "./crash-log.js";
|
|
19
19
|
import { logWarning } from "../workflow-logger.js";
|
|
20
|
+
import { UNIT_TOOL_CONTRACTS } from "../unit-tool-contracts.js";
|
|
20
21
|
// Static import so cmux event listeners are registered synchronously during
|
|
21
22
|
// extension bootstrap. Prior implementation used `void import().then()` which
|
|
22
23
|
// queued listener registration as a microtask — any CMUX_CHANNELS emit fired
|
|
@@ -37,6 +38,12 @@ const EPIPE_STORM_WINDOW_MS = 10_000;
|
|
|
37
38
|
let epipeCount = 0;
|
|
38
39
|
let epipeWindowStart = 0;
|
|
39
40
|
|
|
41
|
+
export const CRITICAL_GSD_WORKFLOW_TOOL_NAMES = [...new Set(
|
|
42
|
+
Object.values(UNIT_TOOL_CONTRACTS)
|
|
43
|
+
.flatMap((contract) => contract.requiredWorkflowTools)
|
|
44
|
+
.filter((toolName) => toolName.startsWith("gsd_")),
|
|
45
|
+
)].sort();
|
|
46
|
+
|
|
40
47
|
/** Write to stderr without ever re-throwing — stderr can EPIPE too, which would
|
|
41
48
|
* re-enter this handler and re-loop. */
|
|
42
49
|
function safeStderr(msg: string): void {
|
|
@@ -133,6 +140,21 @@ export function installEpipeGuard(): void {
|
|
|
133
140
|
}
|
|
134
141
|
}
|
|
135
142
|
|
|
143
|
+
function assertCriticalGsdWorkflowToolsRegistered(pi: ExtensionAPI): void {
|
|
144
|
+
if (typeof pi.getAllTools !== "function") return;
|
|
145
|
+
|
|
146
|
+
const registered = new Set(pi.getAllTools().map((tool) => tool.name));
|
|
147
|
+
const missing = CRITICAL_GSD_WORKFLOW_TOOL_NAMES.filter((toolName) => !registered.has(toolName));
|
|
148
|
+
if (missing.length === 0) return;
|
|
149
|
+
|
|
150
|
+
const message = [
|
|
151
|
+
`Critical GSD workflow tool registration failed; missing required tool(s): ${missing.join(", ")}.`,
|
|
152
|
+
"Check earlier bootstrap warnings for the registration slot that failed.",
|
|
153
|
+
].join(" ");
|
|
154
|
+
logWarning("bootstrap", message);
|
|
155
|
+
throw new Error(message);
|
|
156
|
+
}
|
|
157
|
+
|
|
136
158
|
export function registerGsdExtension(pi: ExtensionAPI): void {
|
|
137
159
|
// Note: registerGSDCommand is called by index.ts before this function,
|
|
138
160
|
// so we intentionally skip it here to avoid double-registration.
|
|
@@ -214,4 +236,6 @@ export function registerGsdExtension(pi: ExtensionAPI): void {
|
|
|
214
236
|
);
|
|
215
237
|
}
|
|
216
238
|
}
|
|
239
|
+
|
|
240
|
+
assertCriticalGsdWorkflowToolsRegistered(pi);
|
|
217
241
|
}
|