gsd-pi 2.58.0-dev.778d6ac → 2.58.0-dev.d63175c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cli.js +35 -49
- package/dist/headless-ui.d.ts +0 -17
- package/dist/headless-ui.js +3 -97
- package/dist/headless.js +6 -67
- package/dist/help-text.js +0 -1
- package/dist/onboarding.js +0 -44
- package/dist/resource-loader.js +1 -16
- package/dist/resources/agents/researcher.md +1 -1
- package/dist/resources/extensions/ask-user-questions.js +3 -16
- package/dist/resources/extensions/async-jobs/extension-manifest.json +1 -1
- package/dist/resources/extensions/bg-shell/extension-manifest.json +1 -1
- package/dist/resources/extensions/browser-tools/extension-manifest.json +1 -1
- package/dist/resources/extensions/claude-code-cli/partial-builder.js +6 -14
- package/dist/resources/extensions/claude-code-cli/stream-adapter.js +36 -59
- package/dist/resources/extensions/context7/extension-manifest.json +1 -1
- package/dist/resources/extensions/get-secrets-from-user.js +5 -8
- package/dist/resources/extensions/google-search/extension-manifest.json +1 -1
- package/dist/resources/extensions/google-search/index.js +1 -2
- package/dist/resources/extensions/gsd/auto/phases.js +21 -25
- package/dist/resources/extensions/gsd/auto-artifact-paths.js +2 -2
- package/dist/resources/extensions/gsd/auto-dashboard.js +20 -37
- package/dist/resources/extensions/gsd/auto-dispatch.js +2 -17
- package/dist/resources/extensions/gsd/auto-model-selection.js +3 -26
- package/dist/resources/extensions/gsd/auto-post-unit.js +4 -16
- package/dist/resources/extensions/gsd/auto-prompts.js +1 -1
- package/dist/resources/extensions/gsd/auto-recovery.js +5 -13
- package/dist/resources/extensions/gsd/auto-start.js +22 -35
- package/dist/resources/extensions/gsd/auto-worktree.js +12 -196
- package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +0 -32
- package/dist/resources/extensions/gsd/bootstrap/db-tools.js +8 -80
- package/dist/resources/extensions/gsd/bootstrap/dynamic-tools.js +1 -32
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +18 -33
- package/dist/resources/extensions/gsd/bootstrap/system-context.js +11 -44
- package/dist/resources/extensions/gsd/bootstrap/write-gate.js +0 -67
- package/dist/resources/extensions/gsd/captures.js +4 -56
- package/dist/resources/extensions/gsd/db-writer.js +8 -116
- package/dist/resources/extensions/gsd/doctor-git-checks.js +0 -28
- package/dist/resources/extensions/gsd/doctor-providers.js +1 -2
- package/dist/resources/extensions/gsd/doctor-runtime-checks.js +4 -5
- package/dist/resources/extensions/gsd/doctor.js +1 -3
- package/dist/resources/extensions/gsd/error-classifier.js +10 -13
- package/dist/resources/extensions/gsd/extension-manifest.json +1 -16
- package/dist/resources/extensions/gsd/forensics.js +20 -123
- package/dist/resources/extensions/gsd/git-service.js +1 -23
- package/dist/resources/extensions/gsd/gitignore.js +0 -33
- package/dist/resources/extensions/gsd/gsd-db.js +9 -36
- package/dist/resources/extensions/gsd/guided-flow.js +44 -106
- package/dist/resources/extensions/gsd/health-widget-core.js +0 -31
- package/dist/resources/extensions/gsd/health-widget.js +0 -17
- package/dist/resources/extensions/gsd/index.js +1 -1
- package/dist/resources/extensions/gsd/memory-extractor.js +0 -7
- package/dist/resources/extensions/gsd/migrate-external.js +1 -8
- package/dist/resources/extensions/gsd/model-cost-table.js +0 -18
- package/dist/resources/extensions/gsd/model-router.js +1 -35
- package/dist/resources/extensions/gsd/native-git-bridge.js +0 -17
- package/dist/resources/extensions/gsd/notifications.js +1 -16
- package/dist/resources/extensions/gsd/parallel-eligibility.js +2 -13
- package/dist/resources/extensions/gsd/parallel-merge.js +5 -78
- package/dist/resources/extensions/gsd/parsers-legacy.js +3 -20
- package/dist/resources/extensions/gsd/paths.js +0 -43
- package/dist/resources/extensions/gsd/preferences-models.js +1 -14
- package/dist/resources/extensions/gsd/preferences-types.js +1 -2
- package/dist/resources/extensions/gsd/preferences.js +16 -13
- package/dist/resources/extensions/gsd/prompt-loader.js +1 -4
- package/dist/resources/extensions/gsd/prompts/complete-milestone.md +1 -1
- package/dist/resources/extensions/gsd/prompts/complete-slice.md +2 -4
- package/dist/resources/extensions/gsd/prompts/discuss-headless.md +1 -1
- package/dist/resources/extensions/gsd/prompts/discuss.md +1 -1
- package/dist/resources/extensions/gsd/prompts/execute-task.md +1 -3
- package/dist/resources/extensions/gsd/prompts/forensics.md +2 -2
- package/dist/resources/extensions/gsd/prompts/guided-discuss-milestone.md +1 -1
- package/dist/resources/extensions/gsd/prompts/guided-discuss-slice.md +1 -1
- package/dist/resources/extensions/gsd/prompts/plan-slice.md +0 -2
- package/dist/resources/extensions/gsd/prompts/rethink.md +1 -1
- package/dist/resources/extensions/gsd/prompts/triage-captures.md +0 -1
- package/dist/resources/extensions/gsd/repo-identity.js +11 -205
- package/dist/resources/extensions/gsd/rethink.js +0 -5
- package/dist/resources/extensions/gsd/roadmap-slices.js +4 -5
- package/dist/resources/extensions/gsd/state.js +27 -85
- package/dist/resources/extensions/gsd/tests/dist-redirect.mjs +1 -20
- package/dist/resources/extensions/gsd/tools/complete-task.js +71 -34
- package/dist/resources/extensions/gsd/tools/plan-milestone.js +2 -12
- package/dist/resources/extensions/gsd/tools/reassess-roadmap.js +1 -29
- package/dist/resources/extensions/gsd/tools/validate-milestone.js +3 -14
- package/dist/resources/extensions/gsd/triage-resolution.js +7 -22
- package/dist/resources/extensions/gsd/undo.js +2 -2
- package/dist/resources/extensions/gsd/unit-ownership.js +33 -164
- package/dist/resources/extensions/gsd/verdict-parser.js +8 -20
- package/dist/resources/extensions/gsd/workflow-manifest.js +5 -24
- package/dist/resources/extensions/gsd/workflow-projections.js +63 -95
- package/dist/resources/extensions/gsd/workflow-reconcile.js +5 -35
- package/dist/resources/extensions/gsd/workspace-index.js +0 -24
- package/dist/resources/extensions/gsd/worktree-manager.js +1 -105
- package/dist/resources/extensions/gsd/worktree-resolver.js +3 -20
- package/dist/resources/extensions/mcp-client/index.js +7 -11
- package/dist/resources/extensions/search-the-web/extension-manifest.json +1 -1
- package/dist/resources/extensions/shared/interview-ui.js +1 -11
- package/dist/resources/skills/create-gsd-extension/SKILL.md +3 -5
- package/dist/resources/skills/create-gsd-extension/references/key-rules-gotchas.md +4 -5
- package/dist/resources/skills/create-gsd-extension/workflows/add-capability.md +2 -2
- package/dist/resources/skills/create-gsd-extension/workflows/create-extension.md +4 -4
- package/dist/resources/skills/create-gsd-extension/workflows/debug-extension.md +3 -5
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +17 -17
- 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 +1 -1
- package/dist/web/standalone/.next/required-server-files.json +1 -1
- package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.html +2 -2
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +2 -2
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/api/boot/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/browse-directories/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/captures/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/cleanup/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/dev-mode/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/doctor/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/experimental/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/export-data/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/forensics/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/history/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/hooks/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/inspect/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/knowledge/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/live-state/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/recovery/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/remote-questions/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/browser/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/command/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/events/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/manage/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/settings-data/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/skill-health/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/steer/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/switch-root/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/input/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/resize/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/sessions/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/upload/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/undo/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +2 -2
- 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 +2 -2
- package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +17 -17
- package/dist/web/standalone/.next/server/chunks/2229.js +2 -2
- 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 +2 -2
- package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
- package/dist/web/standalone/.next/static/chunks/6502.8b732f67a11b11b4.js +9 -0
- package/dist/web/standalone/.next/static/chunks/{webpack-a1c1e452c6b32d04.js → webpack-61d3afac6d0f0ce7.js} +1 -1
- package/dist/web/standalone/.next/static/css/a58ef8a151aa0493.css +1 -0
- package/dist/web/standalone/server.js +1 -1
- package/dist/web-mode.js +1 -2
- package/package.json +2 -2
- package/packages/native/dist/ast/index.js +5 -9
- package/packages/native/dist/ast/types.js +1 -2
- package/packages/native/dist/clipboard/index.js +7 -12
- package/packages/native/dist/clipboard/types.js +1 -2
- package/packages/native/dist/diff/index.js +7 -12
- package/packages/native/dist/diff/types.js +1 -2
- package/packages/native/dist/fd/index.js +3 -6
- package/packages/native/dist/fd/types.js +1 -2
- package/packages/native/dist/glob/index.js +5 -9
- package/packages/native/dist/glob/types.js +1 -2
- package/packages/native/dist/grep/index.js +5 -9
- package/packages/native/dist/grep/types.js +1 -2
- package/packages/native/dist/gsd-parser/index.js +11 -18
- package/packages/native/dist/gsd-parser/types.js +1 -2
- package/packages/native/dist/highlight/index.js +7 -12
- package/packages/native/dist/highlight/types.js +1 -2
- package/packages/native/dist/html/index.js +3 -6
- package/packages/native/dist/html/types.js +1 -2
- package/packages/native/dist/image/index.js +5 -10
- package/packages/native/dist/image/types.js +4 -7
- package/packages/native/dist/index.js +17 -70
- package/packages/native/dist/json-parse/index.js +8 -13
- package/packages/native/dist/native.js +10 -47
- package/packages/native/dist/ps/index.js +9 -15
- package/packages/native/dist/ps/types.js +1 -2
- package/packages/native/dist/stream-process/index.js +7 -12
- package/packages/native/dist/text/index.js +14 -24
- package/packages/native/dist/text/types.js +2 -5
- package/packages/native/dist/truncate/index.js +7 -12
- package/packages/native/dist/ttsr/index.js +7 -12
- package/packages/native/dist/ttsr/types.js +1 -2
- package/packages/native/dist/xxhash/index.js +5 -9
- package/packages/native/package.json +19 -19
- package/packages/native/src/native.ts +8 -9
- package/packages/pi-agent-core/dist/agent-loop.js +2 -3
- package/packages/pi-agent-core/dist/agent-loop.js.map +1 -1
- package/packages/pi-agent-core/dist/proxy.d.ts +1 -1
- package/packages/pi-agent-core/dist/proxy.d.ts.map +1 -1
- package/packages/pi-agent-core/dist/proxy.js.map +1 -1
- package/packages/pi-agent-core/src/agent-loop.ts +2 -3
- package/packages/pi-agent-core/src/proxy.ts +1 -1
- package/packages/pi-ai/dist/env-api-keys.js +0 -1
- package/packages/pi-ai/dist/env-api-keys.js.map +1 -1
- package/packages/pi-ai/dist/index.d.ts +0 -1
- package/packages/pi-ai/dist/index.d.ts.map +1 -1
- package/packages/pi-ai/dist/index.js +0 -1
- package/packages/pi-ai/dist/index.js.map +1 -1
- package/packages/pi-ai/dist/providers/anthropic-shared.d.ts.map +1 -1
- package/packages/pi-ai/dist/providers/anthropic-shared.js +2 -19
- package/packages/pi-ai/dist/providers/anthropic-shared.js.map +1 -1
- package/packages/pi-ai/dist/types.d.ts +3 -3
- package/packages/pi-ai/dist/types.d.ts.map +1 -1
- package/packages/pi-ai/dist/types.js.map +1 -1
- package/packages/pi-ai/dist/utils/json-parse.d.ts +0 -3
- package/packages/pi-ai/dist/utils/json-parse.d.ts.map +1 -1
- package/packages/pi-ai/dist/utils/json-parse.js +1 -24
- package/packages/pi-ai/dist/utils/json-parse.js.map +1 -1
- package/packages/pi-ai/src/env-api-keys.ts +0 -1
- package/packages/pi-ai/src/index.ts +0 -1
- package/packages/pi-ai/src/providers/anthropic-shared.ts +2 -17
- package/packages/pi-ai/src/types.ts +2 -3
- package/packages/pi-ai/src/utils/json-parse.ts +1 -28
- package/packages/pi-coding-agent/dist/core/agent-session.d.ts +0 -4
- package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/agent-session.js +0 -31
- package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/compaction/compaction.d.ts +1 -17
- package/packages/pi-coding-agent/dist/core/compaction/compaction.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/compaction/compaction.js +2 -62
- package/packages/pi-coding-agent/dist/core/compaction/compaction.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/exec.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/exec.js +1 -3
- package/packages/pi-coding-agent/dist/core/exec.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.d.ts +0 -4
- package/packages/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.js +0 -2
- package/packages/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts +0 -5
- package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/loader.js +0 -5
- package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/index.d.ts +1 -1
- package/packages/pi-coding-agent/dist/core/index.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/index.js +1 -1
- package/packages/pi-coding-agent/dist/core/index.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/lsp/index.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/lsp/index.js +0 -3
- package/packages/pi-coding-agent/dist/core/lsp/index.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/lsp/lspmux.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/lsp/lspmux.js +0 -3
- package/packages/pi-coding-agent/dist/core/lsp/lspmux.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/messages.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/messages.js +2 -31
- package/packages/pi-coding-agent/dist/core/messages.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/model-resolver.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/model-resolver.js +0 -1
- package/packages/pi-coding-agent/dist/core/model-resolver.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/resource-loader.d.ts +0 -10
- package/packages/pi-coding-agent/dist/core/resource-loader.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/resource-loader.js +1 -12
- package/packages/pi-coding-agent/dist/core/resource-loader.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/retry-handler.d.ts +0 -6
- package/packages/pi-coding-agent/dist/core/retry-handler.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/retry-handler.js +1 -48
- package/packages/pi-coding-agent/dist/core/retry-handler.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/tools/hashline-read.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/tools/hashline-read.js +3 -10
- package/packages/pi-coding-agent/dist/core/tools/hashline-read.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/tools/read.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/tools/read.js +4 -13
- package/packages/pi-coding-agent/dist/core/tools/read.js.map +1 -1
- package/packages/pi-coding-agent/dist/index.d.ts +2 -2
- package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/index.js +1 -1
- package/packages/pi-coding-agent/dist/index.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +0 -4
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/rpc/remote-terminal.d.ts +0 -1
- package/packages/pi-coding-agent/dist/modes/rpc/remote-terminal.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/rpc/remote-terminal.js +0 -5
- package/packages/pi-coding-agent/dist/modes/rpc/remote-terminal.js.map +1 -1
- package/packages/pi-coding-agent/src/core/agent-session.ts +1 -38
- package/packages/pi-coding-agent/src/core/compaction/compaction.ts +1 -94
- package/packages/pi-coding-agent/src/core/exec.ts +1 -3
- package/packages/pi-coding-agent/src/core/extensions/index.ts +0 -4
- package/packages/pi-coding-agent/src/core/extensions/loader.ts +0 -5
- package/packages/pi-coding-agent/src/core/index.ts +0 -6
- package/packages/pi-coding-agent/src/core/lsp/index.ts +0 -3
- package/packages/pi-coding-agent/src/core/lsp/lspmux.ts +0 -3
- package/packages/pi-coding-agent/src/core/messages.ts +2 -29
- package/packages/pi-coding-agent/src/core/model-resolver.ts +0 -1
- package/packages/pi-coding-agent/src/core/resource-loader.ts +1 -20
- package/packages/pi-coding-agent/src/core/retry-handler.ts +1 -52
- package/packages/pi-coding-agent/src/core/tools/hashline-read.ts +3 -11
- package/packages/pi-coding-agent/src/core/tools/read.ts +4 -14
- package/packages/pi-coding-agent/src/index.ts +0 -6
- package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +0 -7
- package/packages/pi-coding-agent/src/modes/rpc/remote-terminal.ts +0 -6
- package/packages/pi-tui/dist/terminal.d.ts +0 -2
- package/packages/pi-tui/dist/terminal.d.ts.map +1 -1
- package/packages/pi-tui/dist/terminal.js +0 -9
- package/packages/pi-tui/dist/terminal.js.map +1 -1
- package/packages/pi-tui/dist/tui.d.ts.map +1 -1
- package/packages/pi-tui/dist/tui.js +0 -9
- package/packages/pi-tui/dist/tui.js.map +1 -1
- package/packages/pi-tui/src/terminal.ts +0 -14
- package/packages/pi-tui/src/tui.ts +0 -8
- package/scripts/ensure-workspace-builds.cjs +14 -45
- package/src/resources/agents/researcher.md +1 -1
- package/src/resources/extensions/ask-user-questions.ts +3 -21
- package/src/resources/extensions/async-jobs/extension-manifest.json +1 -1
- package/src/resources/extensions/bg-shell/extension-manifest.json +1 -1
- package/src/resources/extensions/browser-tools/extension-manifest.json +1 -1
- package/src/resources/extensions/claude-code-cli/partial-builder.ts +6 -13
- package/src/resources/extensions/claude-code-cli/stream-adapter.ts +35 -63
- package/src/resources/extensions/claude-code-cli/tests/partial-builder.test.ts +0 -28
- package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +1 -108
- package/src/resources/extensions/context7/extension-manifest.json +1 -1
- package/src/resources/extensions/get-secrets-from-user.ts +5 -8
- package/src/resources/extensions/google-search/extension-manifest.json +1 -1
- package/src/resources/extensions/google-search/index.ts +1 -2
- package/src/resources/extensions/gsd/auto/loop-deps.ts +0 -1
- package/src/resources/extensions/gsd/auto/phases.ts +34 -43
- package/src/resources/extensions/gsd/auto-artifact-paths.ts +2 -2
- package/src/resources/extensions/gsd/auto-dashboard.ts +19 -37
- package/src/resources/extensions/gsd/auto-dispatch.ts +2 -18
- package/src/resources/extensions/gsd/auto-model-selection.ts +5 -26
- package/src/resources/extensions/gsd/auto-post-unit.ts +4 -18
- package/src/resources/extensions/gsd/auto-prompts.ts +1 -1
- package/src/resources/extensions/gsd/auto-recovery.ts +5 -12
- package/src/resources/extensions/gsd/auto-start.ts +26 -35
- package/src/resources/extensions/gsd/auto-worktree.ts +9 -190
- package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +0 -31
- package/src/resources/extensions/gsd/bootstrap/db-tools.ts +8 -85
- package/src/resources/extensions/gsd/bootstrap/dynamic-tools.ts +1 -38
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +19 -31
- package/src/resources/extensions/gsd/bootstrap/system-context.ts +11 -50
- package/src/resources/extensions/gsd/bootstrap/write-gate.ts +0 -75
- package/src/resources/extensions/gsd/captures.ts +3 -63
- package/src/resources/extensions/gsd/db-writer.ts +7 -140
- package/src/resources/extensions/gsd/doctor-git-checks.ts +0 -26
- package/src/resources/extensions/gsd/doctor-providers.ts +1 -2
- package/src/resources/extensions/gsd/doctor-runtime-checks.ts +4 -5
- package/src/resources/extensions/gsd/doctor.ts +1 -3
- package/src/resources/extensions/gsd/error-classifier.ts +11 -14
- package/src/resources/extensions/gsd/extension-manifest.json +1 -16
- package/src/resources/extensions/gsd/forensics.ts +20 -144
- package/src/resources/extensions/gsd/git-service.ts +3 -26
- package/src/resources/extensions/gsd/gitignore.ts +0 -33
- package/src/resources/extensions/gsd/gsd-db.ts +7 -43
- package/src/resources/extensions/gsd/guided-flow.ts +45 -114
- package/src/resources/extensions/gsd/health-widget-core.ts +0 -34
- package/src/resources/extensions/gsd/health-widget.ts +0 -17
- package/src/resources/extensions/gsd/index.ts +0 -1
- package/src/resources/extensions/gsd/memory-extractor.ts +0 -8
- package/src/resources/extensions/gsd/migrate-external.ts +1 -9
- package/src/resources/extensions/gsd/model-cost-table.ts +0 -19
- package/src/resources/extensions/gsd/model-router.ts +1 -35
- package/src/resources/extensions/gsd/native-git-bridge.ts +0 -17
- package/src/resources/extensions/gsd/notifications.ts +0 -16
- package/src/resources/extensions/gsd/parallel-eligibility.ts +2 -15
- package/src/resources/extensions/gsd/parallel-merge.ts +4 -87
- package/src/resources/extensions/gsd/parsers-legacy.ts +3 -22
- package/src/resources/extensions/gsd/paths.ts +0 -42
- package/src/resources/extensions/gsd/preferences-models.ts +1 -14
- package/src/resources/extensions/gsd/preferences-types.ts +1 -2
- package/src/resources/extensions/gsd/preferences.ts +15 -13
- package/src/resources/extensions/gsd/prompt-loader.ts +1 -4
- package/src/resources/extensions/gsd/prompts/complete-milestone.md +1 -1
- package/src/resources/extensions/gsd/prompts/complete-slice.md +2 -4
- package/src/resources/extensions/gsd/prompts/discuss-headless.md +1 -1
- package/src/resources/extensions/gsd/prompts/discuss.md +1 -1
- package/src/resources/extensions/gsd/prompts/execute-task.md +1 -3
- package/src/resources/extensions/gsd/prompts/forensics.md +2 -2
- package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +1 -1
- package/src/resources/extensions/gsd/prompts/guided-discuss-slice.md +1 -1
- package/src/resources/extensions/gsd/prompts/plan-slice.md +0 -2
- package/src/resources/extensions/gsd/prompts/rethink.md +1 -1
- package/src/resources/extensions/gsd/prompts/triage-captures.md +0 -1
- package/src/resources/extensions/gsd/repo-identity.ts +11 -186
- package/src/resources/extensions/gsd/rethink.ts +0 -6
- package/src/resources/extensions/gsd/roadmap-slices.ts +4 -5
- package/src/resources/extensions/gsd/state.ts +32 -84
- package/src/resources/extensions/gsd/tests/auto-loop.test.ts +0 -29
- package/src/resources/extensions/gsd/tests/auto-model-selection.test.ts +1 -71
- package/src/resources/extensions/gsd/tests/captures.test.ts +0 -103
- package/src/resources/extensions/gsd/tests/complete-milestone.test.ts +0 -27
- package/src/resources/extensions/gsd/tests/complete-slice.test.ts +0 -21
- package/src/resources/extensions/gsd/tests/db-writer.test.ts +12 -7
- package/src/resources/extensions/gsd/tests/derive-state-db.test.ts +5 -78
- package/src/resources/extensions/gsd/tests/derive-state.test.ts +0 -29
- package/src/resources/extensions/gsd/tests/discuss-queued-milestones.test.ts +0 -40
- package/src/resources/extensions/gsd/tests/dist-redirect.mjs +1 -20
- package/src/resources/extensions/gsd/tests/doctor-providers.test.ts +0 -117
- package/src/resources/extensions/gsd/tests/empty-db-reconciliation.test.ts +79 -0
- package/src/resources/extensions/gsd/tests/forensics-dedup.test.ts +0 -31
- package/src/resources/extensions/gsd/tests/gsd-tools.test.ts +12 -125
- package/src/resources/extensions/gsd/tests/health-widget.test.ts +0 -67
- package/src/resources/extensions/gsd/tests/integration/auto-recovery.test.ts +1 -111
- package/src/resources/extensions/gsd/tests/integration/auto-worktree-milestone-merge.test.ts +0 -101
- package/src/resources/extensions/gsd/tests/integration/auto-worktree.test.ts +0 -59
- package/src/resources/extensions/gsd/tests/integration/parallel-merge.test.ts +0 -110
- package/src/resources/extensions/gsd/tests/integration/run-uat.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/memory-extractor.test.ts +2 -85
- package/src/resources/extensions/gsd/tests/model-cost-table.test.ts +0 -34
- package/src/resources/extensions/gsd/tests/model-router.test.ts +3 -68
- package/src/resources/extensions/gsd/tests/model-unittype-mapping.test.ts +0 -28
- package/src/resources/extensions/gsd/tests/notifications.test.ts +0 -45
- package/src/resources/extensions/gsd/tests/plan-milestone.test.ts +1 -33
- package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +0 -29
- package/src/resources/extensions/gsd/tests/provider-errors.test.ts +0 -38
- package/src/resources/extensions/gsd/tests/reassess-handler.test.ts +0 -117
- package/src/resources/extensions/gsd/tests/roadmap-slices.test.ts +0 -97
- package/src/resources/extensions/gsd/tests/secure-env-collect.test.ts +0 -134
- package/src/resources/extensions/gsd/tests/tool-naming.test.ts +1 -2
- package/src/resources/extensions/gsd/tests/triage-resolution.test.ts +0 -8
- package/src/resources/extensions/gsd/tests/unit-ownership.test.ts +17 -100
- package/src/resources/extensions/gsd/tests/validate-milestone-write-order.test.ts +1 -4
- package/src/resources/extensions/gsd/tests/workflow-logger.test.ts +0 -48
- package/src/resources/extensions/gsd/tests/workflow-manifest.test.ts +0 -92
- package/src/resources/extensions/gsd/tests/workflow-projections.test.ts +2 -4
- package/src/resources/extensions/gsd/tests/worktree-resolver.test.ts +1 -48
- package/src/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +5 -29
- package/src/resources/extensions/gsd/tools/complete-task.ts +74 -36
- package/src/resources/extensions/gsd/tools/plan-milestone.ts +1 -13
- package/src/resources/extensions/gsd/tools/reassess-roadmap.ts +0 -36
- package/src/resources/extensions/gsd/tools/validate-milestone.ts +2 -20
- package/src/resources/extensions/gsd/triage-resolution.ts +6 -23
- package/src/resources/extensions/gsd/types.ts +2 -4
- package/src/resources/extensions/gsd/undo.ts +2 -2
- package/src/resources/extensions/gsd/unit-ownership.ts +35 -206
- package/src/resources/extensions/gsd/verdict-parser.ts +6 -21
- package/src/resources/extensions/gsd/workflow-logger.ts +1 -3
- package/src/resources/extensions/gsd/workflow-manifest.ts +5 -22
- package/src/resources/extensions/gsd/workflow-projections.ts +64 -97
- package/src/resources/extensions/gsd/workflow-reconcile.ts +10 -39
- package/src/resources/extensions/gsd/workspace-index.ts +0 -30
- package/src/resources/extensions/gsd/worktree-manager.ts +1 -120
- package/src/resources/extensions/gsd/worktree-resolver.ts +3 -22
- package/src/resources/extensions/mcp-client/index.ts +7 -13
- package/src/resources/extensions/search-the-web/extension-manifest.json +1 -1
- package/src/resources/extensions/shared/interview-ui.ts +1 -12
- package/src/resources/skills/create-gsd-extension/SKILL.md +3 -5
- package/src/resources/skills/create-gsd-extension/references/key-rules-gotchas.md +4 -5
- package/src/resources/skills/create-gsd-extension/workflows/add-capability.md +2 -2
- package/src/resources/skills/create-gsd-extension/workflows/create-extension.md +4 -4
- package/src/resources/skills/create-gsd-extension/workflows/debug-extension.md +3 -5
- package/dist/resources/extensions/gsd/milestone-validation-gates.js +0 -45
- package/dist/resources/extensions/ollama/index.js +0 -112
- package/dist/resources/extensions/ollama/model-capabilities.js +0 -115
- package/dist/resources/extensions/ollama/ollama-client.js +0 -168
- package/dist/resources/extensions/ollama/ollama-commands.js +0 -194
- package/dist/resources/extensions/ollama/ollama-discovery.js +0 -69
- package/dist/resources/extensions/ollama/ollama-tool.js +0 -184
- package/dist/resources/extensions/ollama/types.js +0 -2
- package/dist/startup-model-validation.d.ts +0 -39
- package/dist/startup-model-validation.js +0 -50
- package/dist/web/standalone/.next/static/chunks/6502.7593d7797a4b3999.js +0 -9
- package/dist/web/standalone/.next/static/css/f6e8833d46e738d8.css +0 -1
- package/packages/native/src/__tests__/module-compat.test.mjs +0 -91
- package/packages/pi-agent-core/src/agent-loop.test.ts +0 -45
- package/packages/pi-ai/dist/providers/anthropic-shared.test.d.ts +0 -2
- package/packages/pi-ai/dist/providers/anthropic-shared.test.d.ts.map +0 -1
- package/packages/pi-ai/dist/providers/anthropic-shared.test.js +0 -25
- package/packages/pi-ai/dist/providers/anthropic-shared.test.js.map +0 -1
- package/packages/pi-ai/dist/utils/repair-tool-json.d.ts +0 -37
- package/packages/pi-ai/dist/utils/repair-tool-json.d.ts.map +0 -1
- package/packages/pi-ai/dist/utils/repair-tool-json.js +0 -75
- package/packages/pi-ai/dist/utils/repair-tool-json.js.map +0 -1
- package/packages/pi-ai/dist/utils/tests/repair-tool-json.test.d.ts +0 -2
- package/packages/pi-ai/dist/utils/tests/repair-tool-json.test.d.ts.map +0 -1
- package/packages/pi-ai/dist/utils/tests/repair-tool-json.test.js +0 -73
- package/packages/pi-ai/dist/utils/tests/repair-tool-json.test.js.map +0 -1
- package/packages/pi-ai/src/providers/anthropic-shared.test.ts +0 -29
- package/packages/pi-ai/src/utils/repair-tool-json.ts +0 -88
- package/packages/pi-ai/src/utils/tests/repair-tool-json.test.ts +0 -102
- package/packages/pi-coding-agent/dist/core/compaction/compaction.test.d.ts +0 -6
- package/packages/pi-coding-agent/dist/core/compaction/compaction.test.d.ts.map +0 -1
- package/packages/pi-coding-agent/dist/core/compaction/compaction.test.js +0 -176
- package/packages/pi-coding-agent/dist/core/compaction/compaction.test.js.map +0 -1
- package/packages/pi-coding-agent/dist/core/extensions/extension-manifest.d.ts +0 -28
- package/packages/pi-coding-agent/dist/core/extensions/extension-manifest.d.ts.map +0 -1
- package/packages/pi-coding-agent/dist/core/extensions/extension-manifest.js +0 -37
- package/packages/pi-coding-agent/dist/core/extensions/extension-manifest.js.map +0 -1
- package/packages/pi-coding-agent/dist/core/extensions/extension-manifest.test.d.ts +0 -2
- package/packages/pi-coding-agent/dist/core/extensions/extension-manifest.test.d.ts.map +0 -1
- package/packages/pi-coding-agent/dist/core/extensions/extension-manifest.test.js +0 -63
- package/packages/pi-coding-agent/dist/core/extensions/extension-manifest.test.js.map +0 -1
- package/packages/pi-coding-agent/dist/core/extensions/extension-sort.d.ts +0 -19
- package/packages/pi-coding-agent/dist/core/extensions/extension-sort.d.ts.map +0 -1
- package/packages/pi-coding-agent/dist/core/extensions/extension-sort.js +0 -115
- package/packages/pi-coding-agent/dist/core/extensions/extension-sort.js.map +0 -1
- package/packages/pi-coding-agent/dist/core/extensions/extension-sort.test.d.ts +0 -2
- package/packages/pi-coding-agent/dist/core/extensions/extension-sort.test.d.ts.map +0 -1
- package/packages/pi-coding-agent/dist/core/extensions/extension-sort.test.js +0 -109
- package/packages/pi-coding-agent/dist/core/extensions/extension-sort.test.js.map +0 -1
- package/packages/pi-coding-agent/dist/core/image-overflow-recovery.d.ts +0 -44
- package/packages/pi-coding-agent/dist/core/image-overflow-recovery.d.ts.map +0 -1
- package/packages/pi-coding-agent/dist/core/image-overflow-recovery.js +0 -97
- package/packages/pi-coding-agent/dist/core/image-overflow-recovery.js.map +0 -1
- package/packages/pi-coding-agent/dist/core/image-overflow-recovery.test.d.ts +0 -2
- package/packages/pi-coding-agent/dist/core/image-overflow-recovery.test.d.ts.map +0 -1
- package/packages/pi-coding-agent/dist/core/image-overflow-recovery.test.js +0 -181
- package/packages/pi-coding-agent/dist/core/image-overflow-recovery.test.js.map +0 -1
- package/packages/pi-coding-agent/dist/core/messages.test.d.ts +0 -9
- package/packages/pi-coding-agent/dist/core/messages.test.d.ts.map +0 -1
- package/packages/pi-coding-agent/dist/core/messages.test.js +0 -86
- package/packages/pi-coding-agent/dist/core/messages.test.js.map +0 -1
- package/packages/pi-coding-agent/dist/core/retry-handler.test.d.ts +0 -9
- package/packages/pi-coding-agent/dist/core/retry-handler.test.d.ts.map +0 -1
- package/packages/pi-coding-agent/dist/core/retry-handler.test.js +0 -193
- package/packages/pi-coding-agent/dist/core/retry-handler.test.js.map +0 -1
- package/packages/pi-coding-agent/dist/core/tools/spawn-shell-windows.test.d.ts +0 -16
- package/packages/pi-coding-agent/dist/core/tools/spawn-shell-windows.test.d.ts.map +0 -1
- package/packages/pi-coding-agent/dist/core/tools/spawn-shell-windows.test.js +0 -80
- package/packages/pi-coding-agent/dist/core/tools/spawn-shell-windows.test.js.map +0 -1
- package/packages/pi-coding-agent/src/core/compaction/compaction.test.ts +0 -236
- package/packages/pi-coding-agent/src/core/extensions/extension-manifest.test.ts +0 -77
- package/packages/pi-coding-agent/src/core/extensions/extension-manifest.ts +0 -62
- package/packages/pi-coding-agent/src/core/extensions/extension-sort.test.ts +0 -134
- package/packages/pi-coding-agent/src/core/extensions/extension-sort.ts +0 -137
- package/packages/pi-coding-agent/src/core/image-overflow-recovery.test.ts +0 -228
- package/packages/pi-coding-agent/src/core/image-overflow-recovery.ts +0 -118
- package/packages/pi-coding-agent/src/core/messages.test.ts +0 -114
- package/packages/pi-coding-agent/src/core/retry-handler.test.ts +0 -255
- package/packages/pi-coding-agent/src/core/tools/spawn-shell-windows.test.ts +0 -92
- package/src/resources/extensions/gsd/milestone-validation-gates.ts +0 -56
- package/src/resources/extensions/gsd/tests/auto-mode-interactive-guard.test.ts +0 -71
- package/src/resources/extensions/gsd/tests/cli-provider-rate-limit.test.ts +0 -47
- package/src/resources/extensions/gsd/tests/completion-hierarchy-guards.test.ts +0 -192
- package/src/resources/extensions/gsd/tests/db-path-worktree-symlink.test.ts +0 -131
- package/src/resources/extensions/gsd/tests/discord-invite-links.test.ts +0 -47
- package/src/resources/extensions/gsd/tests/discuss-empty-db-fallback.test.ts +0 -127
- package/src/resources/extensions/gsd/tests/dynamic-routing-default.test.ts +0 -20
- package/src/resources/extensions/gsd/tests/empty-content-abort-loop.test.ts +0 -74
- package/src/resources/extensions/gsd/tests/event-replay-idempotency.test.ts +0 -140
- package/src/resources/extensions/gsd/tests/forensics-context-persist.test.ts +0 -129
- package/src/resources/extensions/gsd/tests/forensics-db-completion.test.ts +0 -96
- package/src/resources/extensions/gsd/tests/gsdroot-worktree-detection.test.ts +0 -164
- package/src/resources/extensions/gsd/tests/guided-flow-dynamic-routing.test.ts +0 -135
- package/src/resources/extensions/gsd/tests/guided-flow-session-isolation.test.ts +0 -97
- package/src/resources/extensions/gsd/tests/hook-key-parsing.test.ts +0 -107
- package/src/resources/extensions/gsd/tests/integration/doctor-false-positives.test.ts +0 -243
- package/src/resources/extensions/gsd/tests/integration/gitignore-staging-2570.test.ts +0 -150
- package/src/resources/extensions/gsd/tests/integration/state-machine-live-validation.test.ts +0 -959
- package/src/resources/extensions/gsd/tests/migrate-external-worktree.test.ts +0 -105
- package/src/resources/extensions/gsd/tests/milestone-status-authoritative.test.ts +0 -116
- package/src/resources/extensions/gsd/tests/parallel-commit-scope.test.ts +0 -159
- package/src/resources/extensions/gsd/tests/parallel-eligibility-ghost.test.ts +0 -150
- package/src/resources/extensions/gsd/tests/plan-milestone-title.test.ts +0 -70
- package/src/resources/extensions/gsd/tests/project-relocation-recovery.test.ts +0 -297
- package/src/resources/extensions/gsd/tests/prompt-loader-replacement.test.ts +0 -178
- package/src/resources/extensions/gsd/tests/prompt-tool-names.test.ts +0 -69
- package/src/resources/extensions/gsd/tests/queue-execution-guard.test.ts +0 -157
- package/src/resources/extensions/gsd/tests/quick-turn-end-cleanup.test.ts +0 -90
- package/src/resources/extensions/gsd/tests/reconciliation-edge-cases.test.ts +0 -162
- package/src/resources/extensions/gsd/tests/slice-disk-reconcile.test.ts +0 -233
- package/src/resources/extensions/gsd/tests/stash-queued-context-files.test.ts +0 -305
- package/src/resources/extensions/gsd/tests/state-corruption-2945.test.ts +0 -405
- package/src/resources/extensions/gsd/tests/state-derivation-parity.test.ts +0 -257
- package/src/resources/extensions/gsd/tests/state-machine-full-walkthrough.test.ts +0 -1628
- package/src/resources/extensions/gsd/tests/stop-auto-race-null-unit.test.ts +0 -106
- package/src/resources/extensions/gsd/tests/stuck-detection-coverage.test.ts +0 -174
- package/src/resources/extensions/gsd/tests/summary-render-parity.test.ts +0 -221
- package/src/resources/extensions/gsd/tests/uat-stuck-loop-orphaned-worktree.test.ts +0 -289
- package/src/resources/extensions/gsd/tests/vacuum-recovery.test.ts +0 -154
- package/src/resources/extensions/gsd/tests/verdict-parser.test.ts +0 -156
- package/src/resources/extensions/gsd/tests/verification-operational-gate.test.ts +0 -82
- package/src/resources/extensions/gsd/tests/worktree-db-respawn-truncation.test.ts +0 -140
- package/src/resources/extensions/gsd/tests/worktree-nested-git-safety.test.ts +0 -101
- package/src/resources/extensions/gsd/tests/zombie-gsd-state.test.ts +0 -95
- package/src/resources/extensions/mcp-client/tests/server-name-spaces.test.ts +0 -55
- package/src/resources/extensions/ollama/index.ts +0 -130
- package/src/resources/extensions/ollama/model-capabilities.ts +0 -145
- package/src/resources/extensions/ollama/ollama-client.ts +0 -196
- package/src/resources/extensions/ollama/ollama-commands.ts +0 -248
- package/src/resources/extensions/ollama/ollama-discovery.ts +0 -106
- package/src/resources/extensions/ollama/ollama-tool.ts +0 -218
- package/src/resources/extensions/ollama/tests/model-capabilities.test.ts +0 -162
- package/src/resources/extensions/ollama/tests/ollama-client.test.ts +0 -38
- package/src/resources/extensions/ollama/tests/ollama-discovery.test.ts +0 -28
- package/src/resources/extensions/ollama/types.ts +0 -130
- package/src/resources/extensions/shared/tests/ask-user-freetext.test.ts +0 -156
- /package/dist/web/standalone/.next/static/{R0D4xaIPl5kg93edN7Oo0 → 5DLsjFHdSB6_a1EDQVjr7}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{R0D4xaIPl5kg93edN7Oo0 → 5DLsjFHdSB6_a1EDQVjr7}/_ssgManifest.js +0 -0
|
@@ -26,7 +26,7 @@ import { runUnit } from "./run-unit.js";
|
|
|
26
26
|
import { debugLog } from "../debug-logger.js";
|
|
27
27
|
import { PROJECT_FILES } from "../detection.js";
|
|
28
28
|
import { MergeConflictError } from "../git-service.js";
|
|
29
|
-
import { join
|
|
29
|
+
import { join } from "node:path";
|
|
30
30
|
import { existsSync, cpSync } from "node:fs";
|
|
31
31
|
import { logWarning, logError } from "../workflow-logger.js";
|
|
32
32
|
import { gsdRoot } from "../paths.js";
|
|
@@ -230,7 +230,6 @@ export async function runPreDispatch(
|
|
|
230
230
|
`Milestone ${s.currentMilestoneId} complete!`,
|
|
231
231
|
"success",
|
|
232
232
|
"milestone",
|
|
233
|
-
basename(s.originalBasePath || s.basePath),
|
|
234
233
|
);
|
|
235
234
|
deps.logCmuxEvent(
|
|
236
235
|
prefs,
|
|
@@ -389,7 +388,6 @@ export async function runPreDispatch(
|
|
|
389
388
|
"All milestones complete!",
|
|
390
389
|
"success",
|
|
391
390
|
"milestone",
|
|
392
|
-
basename(s.originalBasePath || s.basePath),
|
|
393
391
|
);
|
|
394
392
|
deps.logCmuxEvent(
|
|
395
393
|
prefs,
|
|
@@ -413,7 +411,7 @@ export async function runPreDispatch(
|
|
|
413
411
|
const blockerMsg = `Blocked: ${state.blockers.join(", ")}`;
|
|
414
412
|
await deps.stopAuto(ctx, pi, blockerMsg);
|
|
415
413
|
ctx.ui.notify(`${blockerMsg}. Fix and run /gsd auto.`, "warning");
|
|
416
|
-
deps.sendDesktopNotification("GSD", blockerMsg, "error", "attention"
|
|
414
|
+
deps.sendDesktopNotification("GSD", blockerMsg, "error", "attention");
|
|
417
415
|
deps.logCmuxEvent(prefs, blockerMsg, "error");
|
|
418
416
|
} else {
|
|
419
417
|
const ids = incomplete.map((m: { id: string }) => m.id).join(", ");
|
|
@@ -494,7 +492,6 @@ export async function runPreDispatch(
|
|
|
494
492
|
`Milestone ${mid} complete!`,
|
|
495
493
|
"success",
|
|
496
494
|
"milestone",
|
|
497
|
-
basename(s.originalBasePath || s.basePath),
|
|
498
495
|
);
|
|
499
496
|
deps.logCmuxEvent(
|
|
500
497
|
prefs,
|
|
@@ -512,7 +509,7 @@ export async function runPreDispatch(
|
|
|
512
509
|
const blockerMsg = `Blocked: ${state.blockers.join(", ")}`;
|
|
513
510
|
await closeoutAndStop(ctx, pi, s, deps, blockerMsg);
|
|
514
511
|
ctx.ui.notify(`${blockerMsg}. Fix and run /gsd auto.`, "warning");
|
|
515
|
-
deps.sendDesktopNotification("GSD", blockerMsg, "error", "attention"
|
|
512
|
+
deps.sendDesktopNotification("GSD", blockerMsg, "error", "attention");
|
|
516
513
|
deps.logCmuxEvent(prefs, blockerMsg, "error");
|
|
517
514
|
debugLog("autoLoop", { phase: "exit", reason: "blocked" });
|
|
518
515
|
deps.emitJournalEvent({ ts: new Date().toISOString(), flowId: ic.flowId, seq: ic.nextSeq(), eventType: "terminal", data: { reason: "blocked", blockers: state.blockers } });
|
|
@@ -758,7 +755,7 @@ export async function runGuards(
|
|
|
758
755
|
// 100% — special enforcement logic (halt/pause/warn)
|
|
759
756
|
const msg = `Budget ceiling ${deps.formatCost(budgetCeiling)} reached (spent ${deps.formatCost(totalCost)}).`;
|
|
760
757
|
if (budgetEnforcementAction === "halt") {
|
|
761
|
-
deps.sendDesktopNotification("GSD", msg, "error", "budget"
|
|
758
|
+
deps.sendDesktopNotification("GSD", msg, "error", "budget");
|
|
762
759
|
await deps.stopAuto(ctx, pi, "Budget ceiling reached");
|
|
763
760
|
debugLog("autoLoop", { phase: "exit", reason: "budget-halt" });
|
|
764
761
|
return { action: "break", reason: "budget-halt" };
|
|
@@ -768,14 +765,14 @@ export async function runGuards(
|
|
|
768
765
|
`${msg} Pausing auto-mode — /gsd auto to override and continue.`,
|
|
769
766
|
"warning",
|
|
770
767
|
);
|
|
771
|
-
deps.sendDesktopNotification("GSD", msg, "warning", "budget"
|
|
768
|
+
deps.sendDesktopNotification("GSD", msg, "warning", "budget");
|
|
772
769
|
deps.logCmuxEvent(prefs, msg, "warning");
|
|
773
770
|
await deps.pauseAuto(ctx, pi);
|
|
774
771
|
debugLog("autoLoop", { phase: "exit", reason: "budget-pause" });
|
|
775
772
|
return { action: "break", reason: "budget-pause" };
|
|
776
773
|
}
|
|
777
774
|
ctx.ui.notify(`${msg} Continuing (enforcement: warn).`, "warning");
|
|
778
|
-
deps.sendDesktopNotification("GSD", msg, "warning", "budget"
|
|
775
|
+
deps.sendDesktopNotification("GSD", msg, "warning", "budget");
|
|
779
776
|
deps.logCmuxEvent(prefs, msg, "warning");
|
|
780
777
|
} else if (threshold.pct < 100) {
|
|
781
778
|
// Sub-100% — simple notification
|
|
@@ -786,7 +783,6 @@ export async function runGuards(
|
|
|
786
783
|
msg,
|
|
787
784
|
threshold.notifyLevel,
|
|
788
785
|
"budget",
|
|
789
|
-
basename(s.originalBasePath || s.basePath),
|
|
790
786
|
);
|
|
791
787
|
deps.logCmuxEvent(prefs, msg, threshold.cmuxLevel);
|
|
792
788
|
}
|
|
@@ -816,7 +812,6 @@ export async function runGuards(
|
|
|
816
812
|
`Context ${contextUsage.percent}% — paused`,
|
|
817
813
|
"warning",
|
|
818
814
|
"attention",
|
|
819
|
-
basename(s.originalBasePath || s.basePath),
|
|
820
815
|
);
|
|
821
816
|
await deps.pauseAuto(ctx, pi);
|
|
822
817
|
debugLog("autoLoop", { phase: "exit", reason: "context-window" });
|
|
@@ -934,23 +929,6 @@ export async function runUnitPhase(
|
|
|
934
929
|
},
|
|
935
930
|
);
|
|
936
931
|
|
|
937
|
-
// Select and apply model (with tier escalation on retry — normal units only)
|
|
938
|
-
const modelResult = await deps.selectAndApplyModel(
|
|
939
|
-
ctx,
|
|
940
|
-
pi,
|
|
941
|
-
unitType,
|
|
942
|
-
unitId,
|
|
943
|
-
s.basePath,
|
|
944
|
-
prefs,
|
|
945
|
-
s.verbose,
|
|
946
|
-
s.autoModeStartModel,
|
|
947
|
-
sidecarItem ? undefined : { isRetry, previousTier },
|
|
948
|
-
);
|
|
949
|
-
s.currentUnitRouting =
|
|
950
|
-
modelResult.routing as AutoSession["currentUnitRouting"];
|
|
951
|
-
s.currentUnitModel =
|
|
952
|
-
modelResult.appliedModel as AutoSession["currentUnitModel"];
|
|
953
|
-
|
|
954
932
|
// Status bar + progress widget
|
|
955
933
|
ctx.ui.setStatus("gsd-auto", "auto");
|
|
956
934
|
if (mid)
|
|
@@ -1023,6 +1001,23 @@ export async function runUnitPhase(
|
|
|
1023
1001
|
logWarning("engine", "Prompt reorder failed", { error: msg });
|
|
1024
1002
|
}
|
|
1025
1003
|
|
|
1004
|
+
// Select and apply model (with tier escalation on retry — normal units only)
|
|
1005
|
+
const modelResult = await deps.selectAndApplyModel(
|
|
1006
|
+
ctx,
|
|
1007
|
+
pi,
|
|
1008
|
+
unitType,
|
|
1009
|
+
unitId,
|
|
1010
|
+
s.basePath,
|
|
1011
|
+
prefs,
|
|
1012
|
+
s.verbose,
|
|
1013
|
+
s.autoModeStartModel,
|
|
1014
|
+
sidecarItem ? undefined : { isRetry, previousTier },
|
|
1015
|
+
);
|
|
1016
|
+
s.currentUnitRouting =
|
|
1017
|
+
modelResult.routing as AutoSession["currentUnitRouting"];
|
|
1018
|
+
s.currentUnitModel =
|
|
1019
|
+
modelResult.appliedModel as AutoSession["currentUnitModel"];
|
|
1020
|
+
|
|
1026
1021
|
// Apply sidecar/pre-dispatch hook model override (takes priority over standard model selection)
|
|
1027
1022
|
const hookModelOverride = sidecarItem?.model ?? iterData.hookModelOverride;
|
|
1028
1023
|
if (hookModelOverride) {
|
|
@@ -1147,18 +1142,14 @@ export async function runUnitPhase(
|
|
|
1147
1142
|
// ── Immediate unit closeout (metrics, activity log, memory) ────────
|
|
1148
1143
|
// Run right after runUnit() returns so telemetry is never lost to a
|
|
1149
1144
|
// crash between iterations.
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
s.currentUnit.startedAt,
|
|
1159
|
-
deps.buildSnapshotOpts(unitType, unitId),
|
|
1160
|
-
);
|
|
1161
|
-
}
|
|
1145
|
+
await deps.closeoutUnit(
|
|
1146
|
+
ctx,
|
|
1147
|
+
s.basePath,
|
|
1148
|
+
unitType,
|
|
1149
|
+
unitId,
|
|
1150
|
+
s.currentUnit.startedAt,
|
|
1151
|
+
deps.buildSnapshotOpts(unitType, unitId),
|
|
1152
|
+
);
|
|
1162
1153
|
|
|
1163
1154
|
// ── Zero tool-call guard (#1833) ──────────────────────────────────
|
|
1164
1155
|
// An execute-task agent that completes with 0 tool calls made no
|
|
@@ -1168,7 +1159,7 @@ export async function runUnitPhase(
|
|
|
1168
1159
|
const currentLedger = deps.getLedger() as { units: Array<{ type: string; id: string; startedAt: number; toolCalls: number }> } | null;
|
|
1169
1160
|
if (currentLedger?.units) {
|
|
1170
1161
|
const lastUnit = [...currentLedger.units].reverse().find(
|
|
1171
|
-
(u: { type: string; id: string; startedAt: number; toolCalls: number }) => u.type === unitType && u.id === unitId && u.startedAt === s.currentUnit
|
|
1162
|
+
(u: { type: string; id: string; startedAt: number; toolCalls: number }) => u.type === unitType && u.id === unitId && u.startedAt === s.currentUnit!.startedAt,
|
|
1172
1163
|
);
|
|
1173
1164
|
if (lastUnit && lastUnit.toolCalls === 0) {
|
|
1174
1165
|
debugLog("runUnitPhase", {
|
|
@@ -1183,7 +1174,7 @@ export async function runUnitPhase(
|
|
|
1183
1174
|
);
|
|
1184
1175
|
// Fall through to next iteration where dispatch will re-derive
|
|
1185
1176
|
// and re-dispatch this task.
|
|
1186
|
-
return { action: "next", data: { unitStartedAt: s.currentUnit
|
|
1177
|
+
return { action: "next", data: { unitStartedAt: s.currentUnit.startedAt } };
|
|
1187
1178
|
}
|
|
1188
1179
|
}
|
|
1189
1180
|
}
|
|
@@ -1207,7 +1198,7 @@ export async function runUnitPhase(
|
|
|
1207
1198
|
|
|
1208
1199
|
deps.emitJournalEvent({ ts: new Date().toISOString(), flowId: ic.flowId, seq: ic.nextSeq(), eventType: "unit-end", data: { unitType, unitId, status: unitResult.status, artifactVerified, ...(unitResult.errorContext ? { errorContext: unitResult.errorContext } : {}) }, causedBy: { flowId: ic.flowId, seq: unitStartSeq } });
|
|
1209
1200
|
|
|
1210
|
-
return { action: "next", data: { unitStartedAt: s.currentUnit
|
|
1201
|
+
return { action: "next", data: { unitStartedAt: s.currentUnit.startedAt } };
|
|
1211
1202
|
}
|
|
1212
1203
|
|
|
1213
1204
|
// ─── runFinalize ──────────────────────────────────────────────────────────────
|
|
@@ -56,7 +56,7 @@ export function resolveExpectedArtifactPath(
|
|
|
56
56
|
}
|
|
57
57
|
case "run-uat": {
|
|
58
58
|
const dir = resolveSlicePath(base, mid, sid!);
|
|
59
|
-
return dir ? join(dir, buildSliceFileName(sid!, "
|
|
59
|
+
return dir ? join(dir, buildSliceFileName(sid!, "UAT")) : null;
|
|
60
60
|
}
|
|
61
61
|
case "execute-task": {
|
|
62
62
|
const dir = resolveSlicePath(base, mid, sid!);
|
|
@@ -124,7 +124,7 @@ export function diagnoseExpectedArtifact(
|
|
|
124
124
|
case "reassess-roadmap":
|
|
125
125
|
return `${relSliceFile(base, mid, sid!, "ASSESSMENT")} (roadmap reassessment)`;
|
|
126
126
|
case "run-uat":
|
|
127
|
-
return `${relSliceFile(base, mid, sid!, "
|
|
127
|
+
return `${relSliceFile(base, mid, sid!, "UAT")} (UAT result)`;
|
|
128
128
|
case "validate-milestone":
|
|
129
129
|
return `${relMilestoneFile(base, mid, "VALIDATION")} (milestone validation report)`;
|
|
130
130
|
case "complete-milestone":
|
|
@@ -569,13 +569,6 @@ export function updateProgressWidget(
|
|
|
569
569
|
: "";
|
|
570
570
|
lines.push(rightAlign(headerLeft, headerRight, width));
|
|
571
571
|
|
|
572
|
-
// Worktree/branch right-aligned below header
|
|
573
|
-
if (worktreeName && cachedBranch) {
|
|
574
|
-
lines.push(rightAlign("", theme.fg("dim", `${worktreeName} (${cachedBranch})`), width));
|
|
575
|
-
} else if (cachedBranch) {
|
|
576
|
-
lines.push(rightAlign("", theme.fg("dim", cachedBranch), width));
|
|
577
|
-
}
|
|
578
|
-
|
|
579
572
|
// Show health signal details when degraded (yellow/red)
|
|
580
573
|
if (score.level !== "green" && score.signals.length > 0 && widgetMode !== "min") {
|
|
581
574
|
// Show up to 3 most relevant signals in compact form
|
|
@@ -689,12 +682,12 @@ export function updateProgressWidget(
|
|
|
689
682
|
const hasContext = !!(mid || (slice && unitType !== "research-milestone" && unitType !== "plan-milestone"));
|
|
690
683
|
if (mid) {
|
|
691
684
|
const modelTag = modelDisplay ? theme.fg("muted", ` ${modelDisplay}`) : "";
|
|
692
|
-
lines.push(truncateToWidth(`${pad}${theme.fg("dim", mid.title)}${modelTag}`, width
|
|
685
|
+
lines.push(truncateToWidth(`${pad}${theme.fg("dim", mid.title)}${modelTag}`, width));
|
|
693
686
|
}
|
|
694
687
|
if (slice && unitType !== "research-milestone" && unitType !== "plan-milestone") {
|
|
695
688
|
lines.push(truncateToWidth(
|
|
696
689
|
`${pad}${theme.fg("text", theme.bold(`${slice.id}: ${slice.title}`))}`,
|
|
697
|
-
width,
|
|
690
|
+
width,
|
|
698
691
|
));
|
|
699
692
|
}
|
|
700
693
|
if (hasContext) lines.push("");
|
|
@@ -740,12 +733,6 @@ export function updateProgressWidget(
|
|
|
740
733
|
const rightLines: string[] = [];
|
|
741
734
|
const maxVisibleTasks = 8;
|
|
742
735
|
|
|
743
|
-
// Max visible chars for task title text (before ANSI theming)
|
|
744
|
-
const maxTaskTitleLen = 45;
|
|
745
|
-
function truncTitle(s: string): string {
|
|
746
|
-
return s.length > maxTaskTitleLen ? s.slice(0, maxTaskTitleLen - 1) + "…" : s;
|
|
747
|
-
}
|
|
748
|
-
|
|
749
736
|
function formatTaskLine(t: { id: string; title: string; done: boolean }, isCurrent: boolean): string {
|
|
750
737
|
const glyph = t.done
|
|
751
738
|
? theme.fg("success", "*")
|
|
@@ -757,12 +744,11 @@ export function updateProgressWidget(
|
|
|
757
744
|
: t.done
|
|
758
745
|
? theme.fg("muted", t.id)
|
|
759
746
|
: theme.fg("dim", t.id);
|
|
760
|
-
const short = truncTitle(t.title);
|
|
761
747
|
const title = isCurrent
|
|
762
|
-
? theme.fg("text",
|
|
748
|
+
? theme.fg("text", t.title)
|
|
763
749
|
: t.done
|
|
764
|
-
? theme.fg("muted",
|
|
765
|
-
: theme.fg("text",
|
|
750
|
+
? theme.fg("muted", t.title)
|
|
751
|
+
: theme.fg("text", t.title);
|
|
766
752
|
return `${glyph} ${id}: ${title}`;
|
|
767
753
|
}
|
|
768
754
|
|
|
@@ -785,7 +771,7 @@ export function updateProgressWidget(
|
|
|
785
771
|
if (maxRows > 0) {
|
|
786
772
|
lines.push("");
|
|
787
773
|
for (let i = 0; i < maxRows; i++) {
|
|
788
|
-
const left = padToWidth(truncateToWidth(leftLines[i] ?? "", leftColWidth
|
|
774
|
+
const left = padToWidth(truncateToWidth(leftLines[i] ?? "", leftColWidth), leftColWidth);
|
|
789
775
|
const right = rightLines[i] ?? "";
|
|
790
776
|
lines.push(`${left}${right}`);
|
|
791
777
|
}
|
|
@@ -793,7 +779,7 @@ export function updateProgressWidget(
|
|
|
793
779
|
} else {
|
|
794
780
|
if (leftLines.length > 0) {
|
|
795
781
|
lines.push("");
|
|
796
|
-
for (const l of leftLines) lines.push(truncateToWidth(l, width
|
|
782
|
+
for (const l of leftLines) lines.push(truncateToWidth(l, width));
|
|
797
783
|
}
|
|
798
784
|
}
|
|
799
785
|
|
|
@@ -822,27 +808,23 @@ export function updateProgressWidget(
|
|
|
822
808
|
lines.push(rightAlign("", theme.fg("dim", cachedRtkLabel), width));
|
|
823
809
|
}
|
|
824
810
|
}
|
|
825
|
-
//
|
|
811
|
+
// PWD line with last commit info right-aligned
|
|
826
812
|
const lastCommit = getLastCommit(accessors.getBasePath());
|
|
827
|
-
const
|
|
828
|
-
|
|
829
|
-
? lastCommit.message.length > maxCommitLen
|
|
830
|
-
? lastCommit.message.slice(0, maxCommitLen - 1) + "…"
|
|
831
|
-
: lastCommit.message
|
|
813
|
+
const commitStr = lastCommit
|
|
814
|
+
? theme.fg("dim", `${lastCommit.timeAgo} ago: ${lastCommit.message}`)
|
|
832
815
|
: "";
|
|
816
|
+
const pwdStr = theme.fg("dim", widgetPwd);
|
|
817
|
+
if (commitStr) {
|
|
818
|
+
lines.push(rightAlign(`${pad}${pwdStr}`, truncateToWidth(commitStr, Math.floor(width * 0.45)), width));
|
|
819
|
+
} else {
|
|
820
|
+
lines.push(`${pad}${pwdStr}`);
|
|
821
|
+
}
|
|
833
822
|
// Hints line
|
|
834
823
|
const hintParts: string[] = [];
|
|
835
824
|
hintParts.push("esc pause");
|
|
836
825
|
hintParts.push(process.platform === "darwin" ? "⌃⌥G dashboard" : "Ctrl+Alt+G dashboard");
|
|
837
826
|
const hintStr = theme.fg("dim", hintParts.join(" | "));
|
|
838
|
-
|
|
839
|
-
? theme.fg("dim", `${lastCommit.timeAgo} ago: ${commitMsg}`)
|
|
840
|
-
: "";
|
|
841
|
-
if (commitStr) {
|
|
842
|
-
lines.push(rightAlign(`${pad}${commitStr}`, hintStr, width));
|
|
843
|
-
} else {
|
|
844
|
-
lines.push(rightAlign("", hintStr, width));
|
|
845
|
-
}
|
|
827
|
+
lines.push(rightAlign("", hintStr, width));
|
|
846
828
|
|
|
847
829
|
lines.push(...ui.bar());
|
|
848
830
|
|
|
@@ -869,12 +851,12 @@ function rightAlign(left: string, right: string, width: number): string {
|
|
|
869
851
|
const leftVis = visibleWidth(left);
|
|
870
852
|
const rightVis = visibleWidth(right);
|
|
871
853
|
const gap = Math.max(1, width - leftVis - rightVis);
|
|
872
|
-
return truncateToWidth(left + " ".repeat(gap) + right, width
|
|
854
|
+
return truncateToWidth(left + " ".repeat(gap) + right, width);
|
|
873
855
|
}
|
|
874
856
|
|
|
875
857
|
/** Pad a string with trailing spaces to fill exactly `colWidth` (ANSI-aware). */
|
|
876
858
|
function padToWidth(s: string, colWidth: number): string {
|
|
877
859
|
const vis = visibleWidth(s);
|
|
878
|
-
if (vis >= colWidth) return truncateToWidth(s, colWidth
|
|
860
|
+
if (vis >= colWidth) return truncateToWidth(s, colWidth);
|
|
879
861
|
return s + " ".repeat(colWidth - vis);
|
|
880
862
|
}
|
|
@@ -28,7 +28,6 @@ import {
|
|
|
28
28
|
buildSliceFileName,
|
|
29
29
|
} from "./paths.js";
|
|
30
30
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
31
|
-
import { logError } from "./workflow-logger.js";
|
|
32
31
|
import { join } from "node:path";
|
|
33
32
|
import { hasImplementationArtifacts } from "./auto-recovery.js";
|
|
34
33
|
import {
|
|
@@ -130,21 +129,6 @@ export function setRewriteCount(basePath: string, count: number): void {
|
|
|
130
129
|
writeFileSync(filePath, JSON.stringify({ count, updatedAt: new Date().toISOString() }) + "\n");
|
|
131
130
|
}
|
|
132
131
|
|
|
133
|
-
// ─── Helpers ─────────────────────────────────────────────────────────────
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Returns true when the verification_operational value indicates that no
|
|
137
|
-
* operational verification is needed. Covers common phrasings the planning
|
|
138
|
-
* agent may use: "None", "None required", "N/A", "Not applicable", etc.
|
|
139
|
-
*
|
|
140
|
-
* @see https://github.com/gsd-build/gsd-2/issues/2931
|
|
141
|
-
*/
|
|
142
|
-
export function isVerificationNotApplicable(value: string): boolean {
|
|
143
|
-
const v = (value ?? "").toLowerCase().trim();
|
|
144
|
-
if (!v || v === "none") return true;
|
|
145
|
-
return /^(?:none[\s._-]*(?:required|needed|planned)?|n\/?a|not[\s._-]+(?:applicable|required|needed)|no[\s._-]+operational[\s\S]*)$/i.test(v);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
132
|
// ─── Rules ────────────────────────────────────────────────────────────────
|
|
149
133
|
|
|
150
134
|
export const DISPATCH_RULES: DispatchRule[] = [
|
|
@@ -527,7 +511,7 @@ export const DISPATCH_RULES: DispatchRule[] = [
|
|
|
527
511
|
};
|
|
528
512
|
} catch (err) {
|
|
529
513
|
// Non-fatal — fall through to sequential execution
|
|
530
|
-
|
|
514
|
+
process.stderr.write(`gsd-reactive: graph derivation failed: ${(err as Error).message}\n`);
|
|
531
515
|
return null;
|
|
532
516
|
}
|
|
533
517
|
},
|
|
@@ -688,7 +672,7 @@ export const DISPATCH_RULES: DispatchRule[] = [
|
|
|
688
672
|
if (isDbAvailable()) {
|
|
689
673
|
const milestone = getMilestone(mid);
|
|
690
674
|
if (milestone?.verification_operational &&
|
|
691
|
-
|
|
675
|
+
milestone.verification_operational.toLowerCase() !== "none") {
|
|
692
676
|
const validationPath = resolveMilestoneFile(basePath, mid, "VALIDATION");
|
|
693
677
|
if (validationPath) {
|
|
694
678
|
const validationContent = await loadFile(validationPath);
|
|
@@ -222,30 +222,9 @@ export function resolveModelId<T extends { id: string; provider: string }>(
|
|
|
222
222
|
);
|
|
223
223
|
}
|
|
224
224
|
|
|
225
|
-
// Bare ID —
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
// extension wrapper that happens to be the current session provider.
|
|
231
|
-
const candidates = availableModels.filter(m => m.id === modelId);
|
|
232
|
-
if (candidates.length === 0) return undefined;
|
|
233
|
-
if (candidates.length === 1) return candidates[0];
|
|
234
|
-
|
|
235
|
-
// Extension / CLI-wrapper providers that should never win bare-ID resolution
|
|
236
|
-
// when a first-class API provider also offers the same model.
|
|
237
|
-
const EXTENSION_PROVIDERS = new Set(["claude-code"]);
|
|
238
|
-
|
|
239
|
-
// Prefer currentProvider only when it is a first-class API provider
|
|
240
|
-
if (currentProvider && !EXTENSION_PROVIDERS.has(currentProvider)) {
|
|
241
|
-
const providerMatch = candidates.find(m => m.provider === currentProvider);
|
|
242
|
-
if (providerMatch) return providerMatch;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
// Prefer "anthropic" as the canonical provider for Anthropic models
|
|
246
|
-
const anthropicMatch = candidates.find(m => m.provider === "anthropic");
|
|
247
|
-
if (anthropicMatch) return anthropicMatch;
|
|
248
|
-
|
|
249
|
-
// Fall back to first non-extension candidate, or any candidate
|
|
250
|
-
return candidates.find(m => !EXTENSION_PROVIDERS.has(m.provider)) ?? candidates[0];
|
|
225
|
+
// Bare ID — prefer current provider, then first available
|
|
226
|
+
const exactProviderMatch = availableModels.find(
|
|
227
|
+
m => m.id === modelId && m.provider === currentProvider,
|
|
228
|
+
);
|
|
229
|
+
return exactProviderMatch ?? availableModels.find(m => m.id === modelId);
|
|
251
230
|
}
|
|
@@ -13,7 +13,6 @@
|
|
|
13
13
|
|
|
14
14
|
import type { ExtensionContext, ExtensionAPI } from "@gsd/pi-coding-agent";
|
|
15
15
|
import { deriveState } from "./state.js";
|
|
16
|
-
import { logWarning, logError } from "./workflow-logger.js";
|
|
17
16
|
import { loadFile, parseSummary, resolveAllOverrides } from "./files.js";
|
|
18
17
|
import { loadPrompt } from "./prompt-loader.js";
|
|
19
18
|
import {
|
|
@@ -413,10 +412,10 @@ export async function postUnitPreVerification(pctx: PostUnitContext, opts?: PreV
|
|
|
413
412
|
);
|
|
414
413
|
}
|
|
415
414
|
for (const action of triageResult.actions) {
|
|
416
|
-
|
|
415
|
+
process.stderr.write(`gsd-triage: ${action}\n`);
|
|
417
416
|
}
|
|
418
417
|
} catch (err) {
|
|
419
|
-
|
|
418
|
+
process.stderr.write(`gsd-triage: resolution execution failed: ${(err as Error).message}\n`);
|
|
420
419
|
}
|
|
421
420
|
}
|
|
422
421
|
|
|
@@ -424,7 +423,7 @@ export async function postUnitPreVerification(pctx: PostUnitContext, opts?: PreV
|
|
|
424
423
|
try {
|
|
425
424
|
const rogueFiles = detectRogueFileWrites(s.currentUnit.type, s.currentUnit.id, s.basePath);
|
|
426
425
|
for (const rogue of rogueFiles) {
|
|
427
|
-
|
|
426
|
+
process.stderr.write(`gsd-rogue: detected rogue file write: ${rogue.path} (unit: ${rogue.unitId})\n`);
|
|
428
427
|
ctx.ui.notify(`Rogue file write detected: ${rogue.path}`, "warning");
|
|
429
428
|
}
|
|
430
429
|
} catch (e) {
|
|
@@ -466,20 +465,7 @@ export async function postUnitPreVerification(pctx: PostUnitContext, opts?: PreV
|
|
|
466
465
|
// When artifact verification fails for a unit type that has a known expected
|
|
467
466
|
// artifact, return "retry" so the caller re-dispatches with failure context
|
|
468
467
|
// instead of blindly re-dispatching the same unit (#1571).
|
|
469
|
-
|
|
470
|
-
// HOWEVER, if the DB is unavailable (db_unavailable), the artifact was never
|
|
471
|
-
// written because the completion tool failed at the infra level. Retrying
|
|
472
|
-
// can never succeed and produces a costly re-dispatch loop (#2517).
|
|
473
|
-
if (!triggerArtifactVerified && !isDbAvailable()) {
|
|
474
|
-
// DB infra failure — do NOT retry; the completion tool returned
|
|
475
|
-
// db_unavailable so the artifact was never written. Retrying would
|
|
476
|
-
// produce an infinite re-dispatch loop (#2517).
|
|
477
|
-
debugLog("postUnit", { phase: "artifact-verify-skip-db-unavailable", unitType: s.currentUnit.type, unitId: s.currentUnit.id });
|
|
478
|
-
ctx.ui.notify(
|
|
479
|
-
`Artifact missing for ${s.currentUnit.type} ${s.currentUnit.id} but DB is unavailable — skipping retry to avoid loop (#2517)`,
|
|
480
|
-
"error",
|
|
481
|
-
);
|
|
482
|
-
} else if (!triggerArtifactVerified) {
|
|
468
|
+
if (!triggerArtifactVerified) {
|
|
483
469
|
const hasExpectedArtifact = resolveExpectedArtifactPath(s.currentUnit.type, s.currentUnit.id, s.basePath) !== null;
|
|
484
470
|
if (hasExpectedArtifact) {
|
|
485
471
|
const retryKey = `${s.currentUnit.type}:${s.currentUnit.id}`;
|
|
@@ -1568,7 +1568,7 @@ export async function buildRunUatPrompt(
|
|
|
1568
1568
|
|
|
1569
1569
|
const inlinedContext = capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${inlined.join("\n\n---\n\n")}`);
|
|
1570
1570
|
|
|
1571
|
-
const uatResultPath = join(base, relSliceFile(base, mid, sliceId, "
|
|
1571
|
+
const uatResultPath = join(base, relSliceFile(base, mid, sliceId, "UAT"));
|
|
1572
1572
|
const uatType = getUatType(uatContent);
|
|
1573
1573
|
|
|
1574
1574
|
return loadPrompt("run-uat", {
|
|
@@ -14,7 +14,6 @@ import { clearParseCache } from "./files.js";
|
|
|
14
14
|
import { parseRoadmap as parseLegacyRoadmap, parsePlan as parseLegacyPlan } from "./parsers-legacy.js";
|
|
15
15
|
import { isDbAvailable, getTask, getSlice, getSliceTasks, updateTaskStatus } from "./gsd-db.js";
|
|
16
16
|
import { isValidationTerminal } from "./state.js";
|
|
17
|
-
import { getErrorMessage } from "./error-utils.js";
|
|
18
17
|
import {
|
|
19
18
|
nativeConflictFiles,
|
|
20
19
|
nativeCommit,
|
|
@@ -477,17 +476,11 @@ export function reconcileMergeState(
|
|
|
477
476
|
if (conflictedFiles.length === 0) {
|
|
478
477
|
// All conflicts resolved — finalize the merge/squash commit
|
|
479
478
|
try {
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
ctx.ui.notify("No new commit needed for leftover merge/squash state — already committed.", "info");
|
|
486
|
-
}
|
|
487
|
-
} catch (err) {
|
|
488
|
-
const errorMessage = getErrorMessage(err);
|
|
489
|
-
ctx.ui.notify(`Failed to finalize leftover merge/squash commit: ${errorMessage}`, "error");
|
|
490
|
-
return false;
|
|
479
|
+
nativeCommit(basePath, ""); // --no-edit equivalent: use empty message placeholder
|
|
480
|
+
const mode = hasMergeHead ? "merge" : "squash commit";
|
|
481
|
+
ctx.ui.notify(`Finalized leftover ${mode} from prior session.`, "info");
|
|
482
|
+
} catch {
|
|
483
|
+
// Commit may already exist; non-fatal
|
|
491
484
|
}
|
|
492
485
|
} else {
|
|
493
486
|
// Still conflicted — try auto-resolving .gsd/ state file conflicts (#530)
|