@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
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Terminal presentation helpers for CLI-side notices on stderr — warnings,
|
|
3
|
+
* hints, and names. Pairs with the extension-side glyph set in
|
|
4
|
+
* resources/extensions/shared/ui.ts. Adopt incrementally: banner-shaped CLI
|
|
5
|
+
* surfaces (worktree banners today; update checks et al. as they're touched)
|
|
6
|
+
* should render through these instead of ad-hoc chalk.
|
|
7
|
+
*/
|
|
8
|
+
/** Dim "[gsd] " line tag that prefixes CLI banner lines. */
|
|
9
|
+
export declare function gsdTag(): string;
|
|
10
|
+
/** A yellow warning fragment. */
|
|
11
|
+
export declare function warn(text: string): string;
|
|
12
|
+
/** A dim "what to do next" hint fragment. */
|
|
13
|
+
export declare function hint(text: string): string;
|
|
14
|
+
/** A cyan user-supplied name (worktree, branch, file). */
|
|
15
|
+
export declare function name(text: string): string;
|
|
16
|
+
/** One banner line: tagged warning followed by a tagged hint line. */
|
|
17
|
+
export declare function bannerLines(warning: string, hintText: string): string;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Terminal presentation helpers for CLI-side notices on stderr — warnings,
|
|
3
|
+
* hints, and names. Pairs with the extension-side glyph set in
|
|
4
|
+
* resources/extensions/shared/ui.ts. Adopt incrementally: banner-shaped CLI
|
|
5
|
+
* surfaces (worktree banners today; update checks et al. as they're touched)
|
|
6
|
+
* should render through these instead of ad-hoc chalk.
|
|
7
|
+
*/
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
/** Dim "[gsd] " line tag that prefixes CLI banner lines. */
|
|
10
|
+
export function gsdTag() {
|
|
11
|
+
return chalk.dim('[gsd] ');
|
|
12
|
+
}
|
|
13
|
+
/** A yellow warning fragment. */
|
|
14
|
+
export function warn(text) {
|
|
15
|
+
return chalk.yellow(text);
|
|
16
|
+
}
|
|
17
|
+
/** A dim "what to do next" hint fragment. */
|
|
18
|
+
export function hint(text) {
|
|
19
|
+
return chalk.dim(text);
|
|
20
|
+
}
|
|
21
|
+
/** A cyan user-supplied name (worktree, branch, file). */
|
|
22
|
+
export function name(text) {
|
|
23
|
+
return chalk.cyan(text);
|
|
24
|
+
}
|
|
25
|
+
/** One banner line: tagged warning followed by a tagged hint line. */
|
|
26
|
+
export function bannerLines(warning, hintText) {
|
|
27
|
+
return gsdTag() + warning + '\n' + gsdTag() + hint(hintText) + '\n\n';
|
|
28
|
+
}
|
package/dist/cli-web-branch.d.ts
CHANGED
|
@@ -20,6 +20,8 @@ export interface CliFlags {
|
|
|
20
20
|
webPort?: number;
|
|
21
21
|
/** Additional allowed origins for CORS: `--allowed-origins http://192.168.1.10:8080` */
|
|
22
22
|
webAllowedOrigins?: string[];
|
|
23
|
+
/** Disable the web launcher's bearer token gate: `--no-auth` */
|
|
24
|
+
webNoAuth?: boolean;
|
|
23
25
|
/** Set by `gsd sessions` when the user picks a specific session to resume */
|
|
24
26
|
_selectedSessionPath?: string;
|
|
25
27
|
}
|
package/dist/cli-web-branch.js
CHANGED
|
@@ -52,6 +52,9 @@ export function parseCliArgs(argv) {
|
|
|
52
52
|
const origins = args[++i].split(',').map(o => o.trim()).filter(Boolean);
|
|
53
53
|
flags.webAllowedOrigins = (flags.webAllowedOrigins ?? []).concat(origins);
|
|
54
54
|
}
|
|
55
|
+
else if (arg === '--no-auth') {
|
|
56
|
+
flags.webNoAuth = true;
|
|
57
|
+
}
|
|
55
58
|
else if (arg === '--model' && i + 1 < args.length) {
|
|
56
59
|
flags.model = args[++i];
|
|
57
60
|
}
|
|
@@ -232,14 +235,18 @@ export async function runWebCliBranch(flags, deps = {}) {
|
|
|
232
235
|
const agentDir = deps.agentDir ?? defaultAgentDir;
|
|
233
236
|
const projectSessionsDir = getProjectSessionsDir(currentCwd, baseSessionsDir);
|
|
234
237
|
migrateLegacyFlatSessions(baseSessionsDir, projectSessionsDir);
|
|
235
|
-
const
|
|
238
|
+
const launchOptions = {
|
|
236
239
|
cwd: currentCwd,
|
|
237
240
|
projectSessionsDir,
|
|
238
241
|
agentDir,
|
|
239
242
|
host: flags.webHost,
|
|
240
243
|
port: flags.webPort,
|
|
241
244
|
allowedOrigins: flags.webAllowedOrigins,
|
|
242
|
-
}
|
|
245
|
+
};
|
|
246
|
+
if (flags.webNoAuth !== undefined) {
|
|
247
|
+
launchOptions.noAuth = flags.webNoAuth;
|
|
248
|
+
}
|
|
249
|
+
const status = await (deps.runWebMode ?? launchWebMode)(launchOptions);
|
|
243
250
|
if (!status.ok) {
|
|
244
251
|
emitWebModeFailure(stderr, status);
|
|
245
252
|
}
|
package/dist/cli.js
CHANGED
|
@@ -524,7 +524,7 @@ const authStorage = AuthStorage.create(authFilePath);
|
|
|
524
524
|
markStartup('AuthStorage.create');
|
|
525
525
|
loadStoredEnvKeys(authStorage);
|
|
526
526
|
migratePiCredentials(authStorage);
|
|
527
|
-
// Resolve models.json path
|
|
527
|
+
// Resolve models.json path
|
|
528
528
|
const { resolveModelsJsonPath } = await import('./models-resolver.js');
|
|
529
529
|
const modelsJsonPath = resolveModelsJsonPath();
|
|
530
530
|
const modelRegistry = ModelRegistry.create(authStorage, modelsJsonPath);
|
|
@@ -5,6 +5,10 @@
|
|
|
5
5
|
* and classifies commands as quick (single-turn) vs long-running.
|
|
6
6
|
*
|
|
7
7
|
* Also defines exit code constants and the status→exit-code mapping function.
|
|
8
|
+
*
|
|
9
|
+
* The stop/pause notice vocabulary itself (prefixes + message classifiers)
|
|
10
|
+
* lives in the Stop Notice module — the same module the emitters format with,
|
|
11
|
+
* so wording stays in lockstep with detection.
|
|
8
12
|
*/
|
|
9
13
|
export declare const EXIT_SUCCESS = 0;
|
|
10
14
|
export declare const EXIT_ERROR = 1;
|
|
@@ -42,8 +46,6 @@ export declare function mapStatusToExitCode(status: string): number;
|
|
|
42
46
|
*
|
|
43
47
|
* Blocked detection is separate — checked via isBlockedNotification.
|
|
44
48
|
*/
|
|
45
|
-
export declare const PAUSED_PREFIXES: string[];
|
|
46
|
-
export declare const TERMINAL_PREFIXES: string[];
|
|
47
49
|
export declare const IDLE_TIMEOUT_MS = 15000;
|
|
48
50
|
export declare const NEW_MILESTONE_IDLE_TIMEOUT_MS = 120000;
|
|
49
51
|
export declare function canonicalHeadlessToolName(toolName: string | undefined): string;
|
package/dist/headless-events.js
CHANGED
|
@@ -5,7 +5,12 @@
|
|
|
5
5
|
* and classifies commands as quick (single-turn) vs long-running.
|
|
6
6
|
*
|
|
7
7
|
* Also defines exit code constants and the status→exit-code mapping function.
|
|
8
|
+
*
|
|
9
|
+
* The stop/pause notice vocabulary itself (prefixes + message classifiers)
|
|
10
|
+
* lives in the Stop Notice module — the same module the emitters format with,
|
|
11
|
+
* so wording stays in lockstep with detection.
|
|
8
12
|
*/
|
|
13
|
+
import { isBlockedNoticeMessage, isManualResolutionNotice, isPauseNotice, isTerminalNotice, } from './resources/extensions/gsd/stop-notice.js';
|
|
9
14
|
// ---------------------------------------------------------------------------
|
|
10
15
|
// Exit Code Constants
|
|
11
16
|
// ---------------------------------------------------------------------------
|
|
@@ -65,14 +70,6 @@ export function mapStatusToExitCode(status) {
|
|
|
65
70
|
*
|
|
66
71
|
* Blocked detection is separate — checked via isBlockedNotification.
|
|
67
72
|
*/
|
|
68
|
-
export const PAUSED_PREFIXES = ['auto-mode paused', 'step-mode paused'];
|
|
69
|
-
export const TERMINAL_PREFIXES = [
|
|
70
|
-
'auto-mode stopped',
|
|
71
|
-
'step-mode stopped',
|
|
72
|
-
'auto-mode complete',
|
|
73
|
-
'no active milestone',
|
|
74
|
-
'auto-mode idle',
|
|
75
|
-
];
|
|
76
73
|
export const IDLE_TIMEOUT_MS = 15_000;
|
|
77
74
|
// new-milestone is a long-running creative task where the LLM may pause
|
|
78
75
|
// between tool calls (e.g. after mkdir, before writing files). Use a
|
|
@@ -86,20 +83,6 @@ export function canonicalHeadlessToolName(toolName) {
|
|
|
86
83
|
const toolSeparator = name.indexOf('__', 'mcp__'.length);
|
|
87
84
|
return toolSeparator >= 0 ? name.slice(toolSeparator + 2) : name;
|
|
88
85
|
}
|
|
89
|
-
function isManualResolutionNotification(message) {
|
|
90
|
-
return (message.includes('resolve manually and re-run /gsd auto') ||
|
|
91
|
-
message.includes('resolve conflicts manually and run /gsd auto to resume') ||
|
|
92
|
-
message.includes('resolve and run /gsd auto to resume'));
|
|
93
|
-
}
|
|
94
|
-
function isNonBlockingPauseNotification(message) {
|
|
95
|
-
return message.includes('idempotent advance: unit already active');
|
|
96
|
-
}
|
|
97
|
-
function isPauseNotification(message) {
|
|
98
|
-
return PAUSED_PREFIXES.some((prefix) => message.startsWith(prefix));
|
|
99
|
-
}
|
|
100
|
-
function isPauseNotificationRequiringIntervention(message) {
|
|
101
|
-
return isPauseNotification(message) && !isNonBlockingPauseNotification(message);
|
|
102
|
-
}
|
|
103
86
|
function getCommandBlockContent(event) {
|
|
104
87
|
if (event.type !== 'message_start' && event.type !== 'message_end')
|
|
105
88
|
return null;
|
|
@@ -122,20 +105,15 @@ export function isTerminalNotification(event) {
|
|
|
122
105
|
if (event.type !== 'extension_ui_request' || event.method !== 'notify')
|
|
123
106
|
return false;
|
|
124
107
|
const message = String(event.message ?? '').toLowerCase();
|
|
125
|
-
return (
|
|
126
|
-
isPauseNotification(message) ||
|
|
127
|
-
isManualResolutionNotification(message));
|
|
108
|
+
return isTerminalNotice(message) || isPauseNotice(message) || isManualResolutionNotice(message);
|
|
128
109
|
}
|
|
129
110
|
export function isBlockedNotification(event) {
|
|
130
111
|
if (isBlockingCommandBlock(event))
|
|
131
112
|
return true;
|
|
132
113
|
if (event.type !== 'extension_ui_request' || event.method !== 'notify')
|
|
133
114
|
return false;
|
|
134
|
-
const message = String(event.message ?? '').toLowerCase();
|
|
135
115
|
// Recoverable pauses need operator intervention in headless mode.
|
|
136
|
-
return (message
|
|
137
|
-
isPauseNotificationRequiringIntervention(message) ||
|
|
138
|
-
isManualResolutionNotification(message));
|
|
116
|
+
return isBlockedNoticeMessage(String(event.message ?? '').toLowerCase());
|
|
139
117
|
}
|
|
140
118
|
export function isMilestoneReadyNotification(event) {
|
|
141
119
|
if (event.type !== 'extension_ui_request' || event.method !== 'notify')
|
package/dist/help-text.js
CHANGED
|
@@ -189,6 +189,11 @@ export function printHelp(version) {
|
|
|
189
189
|
process.stdout.write(' --worktree, -w [name] Start in an isolated worktree (auto-named if omitted)\n');
|
|
190
190
|
process.stdout.write(' --model <id> Override model (e.g. provider/model-id)\n');
|
|
191
191
|
process.stdout.write(' --no-session Disable session persistence\n');
|
|
192
|
+
process.stdout.write(' --web [path] Start browser-only web mode\n');
|
|
193
|
+
process.stdout.write(' --host <host> Web mode bind address\n');
|
|
194
|
+
process.stdout.write(' --port <port> Web mode port\n');
|
|
195
|
+
process.stdout.write(' --allowed-origins <csv> Additional allowed web origins\n');
|
|
196
|
+
process.stdout.write(' --no-auth Disable web token auth; requires external access control\n');
|
|
192
197
|
process.stdout.write(' --extension <path> Load additional extension\n');
|
|
193
198
|
process.stdout.write(' --tools <a,b,c> Restrict available tools\n');
|
|
194
199
|
process.stdout.write(' --list-models [search] List available models and exit\n');
|
|
@@ -1,20 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Models.json resolution
|
|
2
|
+
* Models.json resolution for GSD.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* experience, this module provides resolution logic that:
|
|
6
|
-
*
|
|
7
|
-
* 1. Reads ~/.gsd/agent/models.json if it exists
|
|
8
|
-
* 2. Falls back to ~/.pi/agent/models.json if GSD file doesn't exist
|
|
9
|
-
* 3. Merges both files if both exist (GSD takes precedence)
|
|
4
|
+
* Uses ~/.gsd/agent/models.json exclusively.
|
|
10
5
|
*/
|
|
11
6
|
/**
|
|
12
|
-
* Resolve the path to models.json
|
|
13
|
-
*
|
|
14
|
-
* Priority:
|
|
15
|
-
* 1. ~/.gsd/agent/models.json (exists) → return this path
|
|
16
|
-
* 2. ~/.pi/agent/models.json (exists) → return this path (fallback)
|
|
17
|
-
* 3. Neither exists → return GSD path (will be created)
|
|
7
|
+
* Resolve the path to models.json.
|
|
18
8
|
*
|
|
19
9
|
* @returns The path to use for models.json
|
|
20
10
|
*/
|
package/dist/models-resolver.js
CHANGED
|
@@ -1,35 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Models.json resolution
|
|
2
|
+
* Models.json resolution for GSD.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* experience, this module provides resolution logic that:
|
|
6
|
-
*
|
|
7
|
-
* 1. Reads ~/.gsd/agent/models.json if it exists
|
|
8
|
-
* 2. Falls back to ~/.pi/agent/models.json if GSD file doesn't exist
|
|
9
|
-
* 3. Merges both files if both exist (GSD takes precedence)
|
|
4
|
+
* Uses ~/.gsd/agent/models.json exclusively.
|
|
10
5
|
*/
|
|
11
|
-
import { existsSync } from 'node:fs';
|
|
12
|
-
import { homedir } from 'node:os';
|
|
13
6
|
import { join } from 'node:path';
|
|
14
7
|
import { agentDir } from './app-paths.js';
|
|
15
8
|
const GSD_MODELS_PATH = join(agentDir, 'models.json');
|
|
16
|
-
const PI_MODELS_PATH = join(homedir(), '.pi', 'agent', 'models.json');
|
|
17
9
|
/**
|
|
18
|
-
* Resolve the path to models.json
|
|
19
|
-
*
|
|
20
|
-
* Priority:
|
|
21
|
-
* 1. ~/.gsd/agent/models.json (exists) → return this path
|
|
22
|
-
* 2. ~/.pi/agent/models.json (exists) → return this path (fallback)
|
|
23
|
-
* 3. Neither exists → return GSD path (will be created)
|
|
10
|
+
* Resolve the path to models.json.
|
|
24
11
|
*
|
|
25
12
|
* @returns The path to use for models.json
|
|
26
13
|
*/
|
|
27
14
|
export function resolveModelsJsonPath() {
|
|
28
|
-
if (existsSync(GSD_MODELS_PATH)) {
|
|
29
|
-
return GSD_MODELS_PATH;
|
|
30
|
-
}
|
|
31
|
-
if (existsSync(PI_MODELS_PATH)) {
|
|
32
|
-
return PI_MODELS_PATH;
|
|
33
|
-
}
|
|
34
15
|
return GSD_MODELS_PATH;
|
|
35
16
|
}
|
package/dist/resource-loader.js
CHANGED
|
@@ -701,9 +701,8 @@ function collectRelativeFiles(rootDir) {
|
|
|
701
701
|
return files;
|
|
702
702
|
}
|
|
703
703
|
/**
|
|
704
|
-
* Constructs a DefaultResourceLoader that loads extensions from
|
|
705
|
-
* ~/.gsd/agent/extensions/ (GSD's default)
|
|
706
|
-
* This allows users to use extensions from either location.
|
|
704
|
+
* Constructs a DefaultResourceLoader that loads extensions from
|
|
705
|
+
* ~/.gsd/agent/extensions/ (GSD's default) only.
|
|
707
706
|
*/
|
|
708
707
|
// Cache bundled extension keys at module load — avoids re-scanning the extensions
|
|
709
708
|
// directory in buildResourceLoader() (already scanned by loader.ts for env var).
|
|
@@ -718,19 +717,8 @@ export async function buildResourceLoader(agentDir, options = {}) {
|
|
|
718
717
|
const { DefaultResourceLoader } = await loadPiCodingAgentModule();
|
|
719
718
|
const { sortExtensionPaths } = await import('./extension-sort.js');
|
|
720
719
|
const registry = loadRegistry();
|
|
721
|
-
const piAgentDir = join(homedir(), '.pi', 'agent');
|
|
722
|
-
const piExtensionsDir = join(piAgentDir, 'extensions');
|
|
723
720
|
const bundledKeys = getBundledExtensionKeys();
|
|
724
|
-
const piExtensionPaths = discoverExtensionEntryPaths(piExtensionsDir)
|
|
725
|
-
.filter((entryPath) => !bundledKeys.has(getExtensionKey(entryPath, piExtensionsDir)))
|
|
726
|
-
.filter((entryPath) => {
|
|
727
|
-
const manifest = readManifestFromEntryPath(entryPath);
|
|
728
|
-
if (!manifest)
|
|
729
|
-
return true;
|
|
730
|
-
return isExtensionEnabled(registry, manifest.id);
|
|
731
|
-
});
|
|
732
721
|
const additionalExtensionPaths = [
|
|
733
|
-
...piExtensionPaths,
|
|
734
722
|
...(options.additionalExtensionPaths ?? []),
|
|
735
723
|
];
|
|
736
724
|
return new DefaultResourceLoader({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
f9480adda54decba
|
|
@@ -114,6 +114,61 @@ function errorResult(message, questions = [], options) {
|
|
|
114
114
|
details: { questions, response: null, cancelled: true, interrupted: options?.interrupted === true },
|
|
115
115
|
};
|
|
116
116
|
}
|
|
117
|
+
/** Parse the LLM-facing JSON payload back into a RoundResult for TUI rendering. */
|
|
118
|
+
function parseLlmAnswersContent(text) {
|
|
119
|
+
try {
|
|
120
|
+
const parsed = JSON.parse(text);
|
|
121
|
+
if (!parsed?.answers || typeof parsed.answers !== "object")
|
|
122
|
+
return null;
|
|
123
|
+
const answers = {};
|
|
124
|
+
for (const [id, entry] of Object.entries(parsed.answers)) {
|
|
125
|
+
const list = Array.isArray(entry?.answers) ? [...entry.answers] : [];
|
|
126
|
+
let notes = "";
|
|
127
|
+
const noteIdx = list.findIndex((item) => typeof item === "string" && item.startsWith("user_note:"));
|
|
128
|
+
if (noteIdx >= 0) {
|
|
129
|
+
notes = list.splice(noteIdx, 1)[0].replace(/^user_note:\s*/, "");
|
|
130
|
+
}
|
|
131
|
+
if (list.length === 0)
|
|
132
|
+
continue;
|
|
133
|
+
answers[id] = {
|
|
134
|
+
selected: list.length === 1 ? list[0] : list,
|
|
135
|
+
notes,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
if (Object.keys(answers).length === 0)
|
|
139
|
+
return null;
|
|
140
|
+
return { endInterview: false, answers };
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
function isCancelledResultContent(text) {
|
|
147
|
+
return /\bwas cancelled before receiving a response\b/i.test(text)
|
|
148
|
+
|| /\bwas interrupted before receiving a response\b/i.test(text);
|
|
149
|
+
}
|
|
150
|
+
function renderAnswerLines(questions, response, theme) {
|
|
151
|
+
const lines = [];
|
|
152
|
+
for (const q of questions) {
|
|
153
|
+
const answer = response.answers[q.id];
|
|
154
|
+
if (!answer) {
|
|
155
|
+
lines.push(`${theme.fg("accent", q.header)}: ${theme.fg("dim", "(no answer)")}`);
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
const selected = answer.selected;
|
|
159
|
+
const notes = answer.notes;
|
|
160
|
+
const multiSel = !!q.allowMultiple;
|
|
161
|
+
const answerText = multiSel && Array.isArray(selected)
|
|
162
|
+
? selected.join(", ")
|
|
163
|
+
: (Array.isArray(selected) ? selected[0] : selected) ?? "(no answer)";
|
|
164
|
+
let line = `${theme.fg("success", "✓ ")}${theme.fg("accent", q.header)}: ${answerText}`;
|
|
165
|
+
if (notes) {
|
|
166
|
+
line += ` ${theme.fg("muted", `[note: ${notes}]`)}`;
|
|
167
|
+
}
|
|
168
|
+
lines.push(line);
|
|
169
|
+
}
|
|
170
|
+
return new Text(lines.join("\n"), 0, 0);
|
|
171
|
+
}
|
|
117
172
|
/** Convert the shared RoundResult into the JSON the LLM expects. */
|
|
118
173
|
function formatForLLM(result) {
|
|
119
174
|
const answers = {};
|
|
@@ -318,11 +373,17 @@ export default function AskUserQuestions(pi) {
|
|
|
318
373
|
}
|
|
319
374
|
return new Text(text, 0, 0);
|
|
320
375
|
},
|
|
321
|
-
renderResult(result, _options, theme) {
|
|
376
|
+
renderResult(result, _options, theme, context) {
|
|
322
377
|
const details = result.details;
|
|
378
|
+
const contentText = result.content[0]?.type === "text" ? result.content[0].text : "";
|
|
379
|
+
const questionsFromArgs = context?.args?.questions;
|
|
380
|
+
const parsedResponse = contentText ? parseLlmAnswersContent(contentText) : null;
|
|
323
381
|
if (!details) {
|
|
324
|
-
const
|
|
325
|
-
|
|
382
|
+
const questions = questionsFromArgs;
|
|
383
|
+
if (questions?.length && parsedResponse) {
|
|
384
|
+
return renderAnswerLines(questions, parsedResponse, theme);
|
|
385
|
+
}
|
|
386
|
+
return new Text(contentText, 0, 0);
|
|
326
387
|
}
|
|
327
388
|
// Remote channel result (discriminated on details.remote === true)
|
|
328
389
|
if (details.remote) {
|
|
@@ -352,30 +413,24 @@ export default function AskUserQuestions(pi) {
|
|
|
352
413
|
}
|
|
353
414
|
return new Text(lines.join("\n"), 0, 0);
|
|
354
415
|
}
|
|
355
|
-
|
|
416
|
+
const questions = details.questions ?? questionsFromArgs;
|
|
417
|
+
const response = details.response ?? parsedResponse;
|
|
418
|
+
const explicitCancel = details.cancelled === true || isCancelledResultContent(contentText);
|
|
419
|
+
if (explicitCancel && !response) {
|
|
356
420
|
const interrupted = "interrupted" in details && details.interrupted === true;
|
|
357
421
|
return new Text(theme.fg("warning", interrupted ? "Interrupted" : "Cancelled"), 0, 0);
|
|
358
422
|
}
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
const
|
|
367
|
-
|
|
368
|
-
const multiSel = !!q.allowMultiple;
|
|
369
|
-
const answerText = multiSel && Array.isArray(selected)
|
|
370
|
-
? selected.join(", ")
|
|
371
|
-
: (Array.isArray(selected) ? selected[0] : selected) ?? "(no answer)";
|
|
372
|
-
let line = `${theme.fg("success", "✓ ")}${theme.fg("accent", q.header)}: ${answerText}`;
|
|
373
|
-
if (notes) {
|
|
374
|
-
line += ` ${theme.fg("muted", `[note: ${notes}]`)}`;
|
|
375
|
-
}
|
|
376
|
-
lines.push(line);
|
|
423
|
+
if (questions?.length && response) {
|
|
424
|
+
return renderAnswerLines(questions, response, theme);
|
|
425
|
+
}
|
|
426
|
+
if (contentText) {
|
|
427
|
+
return new Text(contentText, 0, 0);
|
|
428
|
+
}
|
|
429
|
+
if (details.cancelled || !details.response) {
|
|
430
|
+
const interrupted = "interrupted" in details && details.interrupted === true;
|
|
431
|
+
return new Text(theme.fg("warning", interrupted ? "Interrupted" : "Cancelled"), 0, 0);
|
|
377
432
|
}
|
|
378
|
-
return new Text(
|
|
433
|
+
return new Text("", 0, 0);
|
|
379
434
|
},
|
|
380
435
|
});
|
|
381
436
|
}
|
|
@@ -37,10 +37,13 @@ export const formatUptime = formatDuration;
|
|
|
37
37
|
export function formatTimeAgo(timestamp) {
|
|
38
38
|
return formatDuration(Date.now() - timestamp) + " ago";
|
|
39
39
|
}
|
|
40
|
+
// NOTE: these worktree-layout regexes mirror findWorktreeSegment in
|
|
41
|
+
// src/resources/extensions/gsd/worktree-root.ts (bg-shell does not import the
|
|
42
|
+
// gsd extension). Keep them synchronized when a layout changes.
|
|
40
43
|
function deriveProjectRootFromAutoWorktree(cachedCwd) {
|
|
41
44
|
if (!cachedCwd)
|
|
42
45
|
return undefined;
|
|
43
|
-
const match = cachedCwd.match(/^(.*?)[\\/]\.gsd[\\/]worktrees[\\/][^\\/]+(?:[\\/].*)?$/);
|
|
46
|
+
const match = cachedCwd.match(/^(.*?)[\\/]\.gsd(?:-worktrees|[\\/]worktrees)[\\/][^\\/]+(?:[\\/].*)?$/);
|
|
44
47
|
return match?.[1];
|
|
45
48
|
}
|
|
46
49
|
export function getBgShellLiveCwd(cachedCwd, pathExists = existsSync, getCwd = () => process.cwd(), chdir = (path) => process.chdir(path)) {
|
|
@@ -67,7 +70,7 @@ export function getBgShellLiveCwd(cachedCwd, pathExists = existsSync, getCwd = (
|
|
|
67
70
|
}
|
|
68
71
|
export function resolveBgShellPersistenceCwd(cachedCwd, liveCwd = undefined, pathExists = existsSync) {
|
|
69
72
|
const resolvedLiveCwd = liveCwd ?? getBgShellLiveCwd(cachedCwd, pathExists);
|
|
70
|
-
const cachedIsAutoWorktree = /(?:^|[\\/])\.gsd[\\/]worktrees[\\/]/.test(cachedCwd);
|
|
73
|
+
const cachedIsAutoWorktree = /(?:^|[\\/])\.gsd(?:-worktrees|[\\/]worktrees)[\\/]/.test(cachedCwd);
|
|
71
74
|
if (!cachedIsAutoWorktree)
|
|
72
75
|
return cachedCwd;
|
|
73
76
|
if (cachedCwd === resolvedLiveCwd && pathExists(cachedCwd))
|