gsd-pi 2.77.0-dev.538325aea → 2.77.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -17
- package/dist/cli.js +21 -13
- package/dist/extension-registry.js +1 -1
- package/dist/headless-ui.d.ts +1 -1
- package/dist/headless.js +4 -2
- package/dist/loader.js +1 -0
- package/dist/onboarding.js +5 -5
- package/dist/provider-migrations.d.ts +2 -2
- package/dist/provider-migrations.js +1 -2
- package/dist/remote-questions-config.js +1 -1
- package/dist/resources/extensions/async-jobs/async-bash-tool.js +1 -1
- package/dist/resources/extensions/aws-auth/index.js +1 -2
- package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.js +9 -6
- package/dist/resources/extensions/bg-shell/process-manager.js +1 -2
- package/dist/resources/extensions/browser-tools/index.js +1 -0
- package/dist/resources/extensions/claude-code-cli/index.js +1 -1
- package/dist/resources/extensions/claude-code-cli/partial-builder.js +17 -106
- package/dist/resources/extensions/claude-code-cli/stream-adapter.js +10 -17
- package/dist/resources/extensions/gsd/auto-dispatch.js +14 -40
- package/dist/resources/extensions/gsd/auto-post-unit.js +0 -34
- package/dist/resources/extensions/gsd/auto-recovery.js +1 -38
- package/dist/resources/extensions/gsd/auto-start.js +2 -16
- package/dist/resources/extensions/gsd/dispatch-guard.js +3 -44
- package/dist/resources/extensions/gsd/guided-flow.js +1 -1
- package/dist/resources/extensions/gsd/prompts/system.md +0 -1
- package/dist/resources/extensions/mcp-client/index.js +1 -1
- package/dist/resources/extensions/ollama/index.js +2 -1
- package/dist/resources/extensions/ollama/ollama-chat-provider.js +15 -5
- package/dist/resources/extensions/remote-questions/config.js +1 -12
- package/dist/resources/extensions/universal-config/index.js +1 -1
- package/dist/security-overrides.d.ts +1 -4
- package/dist/security-overrides.js +3 -16
- package/dist/tsconfig.extensions.tsbuildinfo +1 -1
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +10 -10
- package/dist/web/standalone/.next/build-manifest.json +4 -4
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/react-loadable-manifest.json +1 -1
- package/dist/web/standalone/.next/required-server-files.json +3 -3
- package/dist/web/standalone/.next/server/app/_global-error/page.js +3 -3
- package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found/page.js +2 -2
- package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +3 -3
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- 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 +3 -3
- 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 +1 -1
- 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.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.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.js +2 -2
- 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.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.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.js +2 -2
- 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.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.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.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.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.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/notifications/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/preferences/route.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.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.js +2 -2
- 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.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.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.js +2 -2
- 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.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.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.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.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.js +2 -2
- 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.js +2 -2
- 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.js +2 -2
- 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.js +4 -4
- 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.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 +4 -4
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +4 -4
- 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 +3 -3
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/page.js +2 -2
- package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +10 -10
- package/dist/web/standalone/.next/server/chunks/63.js +3 -3
- package/dist/web/standalone/.next/server/chunks/6897.js +3 -3
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/middleware-manifest.json +5 -5
- package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/dist/web/standalone/.next/server/middleware.js +2 -2
- package/dist/web/standalone/.next/server/next-font-manifest.js +1 -1
- package/dist/web/standalone/.next/server/next-font-manifest.json +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/2826.e59e8578e2e28639.js +9 -0
- package/dist/web/standalone/.next/static/chunks/app/_not-found/{page-f2a7482d42a5614b.js → page-2f24283c162b6ab3.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/app/{layout-a16c7a7ecdf0c2cf.js → layout-9ecfd95f343793f0.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/app/page-151349214571e2b6.js +1 -0
- package/dist/web/standalone/.next/static/chunks/main-app-d3d4c336195465f9.js +1 -0
- package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-ab5a8926e07ec673.js +1 -0
- package/dist/web/standalone/.next/static/chunks/{webpack-1832629448831fdc.js → webpack-5fc74f13a25fa1bb.js} +1 -1
- package/dist/web/standalone/node_modules/node-pty/build/Makefile +2 -2
- package/dist/web/standalone/node_modules/node-pty/build/Release/pty.node +0 -0
- package/dist/web/standalone/node_modules/node-pty/build/pty.target.mk +14 -14
- package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api.target.mk +14 -14
- package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_except.target.mk +14 -14
- package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_maybe.target.mk +14 -14
- package/dist/web/standalone/server.js +1 -1
- package/dist/web-mode.js +1 -1
- package/dist/welcome-screen.js +20 -19
- package/dist/wizard.js +5 -2
- package/package.json +7 -25
- package/packages/mcp-server/dist/server.d.ts.map +1 -1
- package/packages/mcp-server/dist/server.js +11 -15
- package/packages/mcp-server/dist/server.js.map +1 -1
- package/packages/mcp-server/src/server.ts +16 -17
- package/packages/mcp-server/tsconfig.tsbuildinfo +1 -1
- package/packages/native/tsconfig.json +1 -2
- package/packages/native/tsconfig.tsbuildinfo +1 -0
- package/pkg/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
- package/pkg/dist/core/export-html/ansi-to-html.js +0 -1
- package/pkg/dist/core/export-html/ansi-to-html.js.map +1 -1
- package/pkg/dist/core/export-html/index.d.ts +1 -1
- package/pkg/dist/core/export-html/index.d.ts.map +1 -1
- package/pkg/dist/core/export-html/index.js +5 -39
- package/pkg/dist/core/export-html/index.js.map +1 -1
- package/pkg/dist/core/export-html/tool-renderer.d.ts +2 -2
- package/pkg/dist/core/export-html/tool-renderer.d.ts.map +1 -1
- package/pkg/dist/core/export-html/tool-renderer.js.map +1 -1
- package/scripts/ensure-workspace-builds.cjs +0 -2
- package/scripts/link-workspace-packages.cjs +0 -2
- package/scripts/postinstall.js +178 -9
- package/src/resources/extensions/async-jobs/async-bash-tool.ts +1 -1
- package/src/resources/extensions/aws-auth/index.ts +1 -2
- package/src/resources/extensions/bg-shell/bg-shell-lifecycle.ts +7 -4
- package/src/resources/extensions/bg-shell/index.ts +1 -2
- package/src/resources/extensions/bg-shell/process-manager.ts +1 -2
- package/src/resources/extensions/browser-tools/index.ts +1 -2
- package/src/resources/extensions/claude-code-cli/index.ts +1 -1
- package/src/resources/extensions/claude-code-cli/partial-builder.ts +23 -115
- package/src/resources/extensions/claude-code-cli/stream-adapter.ts +9 -19
- package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +3 -27
- package/src/resources/extensions/gsd/auto-dispatch.ts +13 -43
- package/src/resources/extensions/gsd/auto-post-unit.ts +0 -33
- package/src/resources/extensions/gsd/auto-recovery.ts +1 -37
- package/src/resources/extensions/gsd/auto-start.ts +6 -20
- package/src/resources/extensions/gsd/dispatch-guard.ts +2 -44
- package/src/resources/extensions/gsd/guided-flow.ts +1 -1
- package/src/resources/extensions/gsd/prompts/system.md +0 -1
- package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +0 -73
- package/src/resources/extensions/gsd/tests/complete-milestone-false-merge.test.ts +0 -15
- package/src/resources/extensions/gsd/tests/dispatch-complete-milestone-guard.test.ts +9 -9
- package/src/resources/extensions/gsd/tests/integration/worktree-e2e.test.ts +0 -11
- package/src/resources/extensions/gsd/tests/milestone-status-authoritative.test.ts +3 -3
- package/src/resources/extensions/gsd/tests/validate-milestone.test.ts +5 -127
- package/src/resources/extensions/mcp-client/index.ts +1 -1
- package/src/resources/extensions/ollama/index.ts +3 -3
- package/src/resources/extensions/ollama/ollama-chat-provider.ts +18 -6
- package/src/resources/extensions/remote-questions/config.ts +4 -15
- package/src/resources/extensions/search-the-web/index.ts +1 -2
- package/src/resources/extensions/shared/tests/format-utils.test.ts +3 -5
- package/src/resources/extensions/universal-config/index.ts +1 -1
- package/dist/web/standalone/.next/static/chunks/2826.d445fb428ef41fa1.js +0 -9
- package/dist/web/standalone/.next/static/chunks/app/page-5b113fd32bc2a1c3.js +0 -1
- package/dist/web/standalone/.next/static/chunks/main-app-fdab67f7802d7832.js +0 -1
- package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-459824ffb8c323dd.js +0 -1
- package/packages/gsd-agent-core/dist/agent-session.d.ts +0 -716
- package/packages/gsd-agent-core/dist/agent-session.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/agent-session.js +0 -2595
- package/packages/gsd-agent-core/dist/agent-session.js.map +0 -1
- package/packages/gsd-agent-core/dist/artifact-manager.d.ts +0 -52
- package/packages/gsd-agent-core/dist/artifact-manager.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/artifact-manager.js +0 -118
- package/packages/gsd-agent-core/dist/artifact-manager.js.map +0 -1
- package/packages/gsd-agent-core/dist/bash-executor.d.ts +0 -57
- package/packages/gsd-agent-core/dist/bash-executor.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/bash-executor.js +0 -282
- package/packages/gsd-agent-core/dist/bash-executor.js.map +0 -1
- package/packages/gsd-agent-core/dist/blob-store.d.ts +0 -39
- package/packages/gsd-agent-core/dist/blob-store.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/blob-store.js +0 -151
- package/packages/gsd-agent-core/dist/blob-store.js.map +0 -1
- package/packages/gsd-agent-core/dist/compaction/branch-summarization.d.ts +0 -90
- package/packages/gsd-agent-core/dist/compaction/branch-summarization.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/compaction/branch-summarization.js +0 -207
- package/packages/gsd-agent-core/dist/compaction/branch-summarization.js.map +0 -1
- package/packages/gsd-agent-core/dist/compaction/compaction.d.ts +0 -137
- package/packages/gsd-agent-core/dist/compaction/compaction.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/compaction/compaction.js +0 -621
- package/packages/gsd-agent-core/dist/compaction/compaction.js.map +0 -1
- package/packages/gsd-agent-core/dist/compaction/index.d.ts +0 -7
- package/packages/gsd-agent-core/dist/compaction/index.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/compaction/index.js +0 -7
- package/packages/gsd-agent-core/dist/compaction/index.js.map +0 -1
- package/packages/gsd-agent-core/dist/compaction/utils.d.ts +0 -78
- package/packages/gsd-agent-core/dist/compaction/utils.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/compaction/utils.js +0 -263
- package/packages/gsd-agent-core/dist/compaction/utils.js.map +0 -1
- package/packages/gsd-agent-core/dist/compaction-orchestrator.d.ts +0 -90
- package/packages/gsd-agent-core/dist/compaction-orchestrator.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/compaction-orchestrator.js +0 -338
- package/packages/gsd-agent-core/dist/compaction-orchestrator.js.map +0 -1
- package/packages/gsd-agent-core/dist/contextual-tips.d.ts +0 -43
- package/packages/gsd-agent-core/dist/contextual-tips.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/contextual-tips.js +0 -208
- package/packages/gsd-agent-core/dist/contextual-tips.js.map +0 -1
- package/packages/gsd-agent-core/dist/export-html/ansi-to-html.d.ts +0 -18
- package/packages/gsd-agent-core/dist/export-html/ansi-to-html.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/export-html/ansi-to-html.js +0 -250
- package/packages/gsd-agent-core/dist/export-html/ansi-to-html.js.map +0 -1
- package/packages/gsd-agent-core/dist/export-html/index.d.ts +0 -37
- package/packages/gsd-agent-core/dist/export-html/index.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/export-html/index.js +0 -257
- package/packages/gsd-agent-core/dist/export-html/index.js.map +0 -1
- package/packages/gsd-agent-core/dist/export-html/template.css +0 -971
- package/packages/gsd-agent-core/dist/export-html/template.html +0 -54
- package/packages/gsd-agent-core/dist/export-html/template.js +0 -1583
- package/packages/gsd-agent-core/dist/export-html/tool-renderer.d.ts +0 -38
- package/packages/gsd-agent-core/dist/export-html/tool-renderer.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/export-html/tool-renderer.js +0 -70
- package/packages/gsd-agent-core/dist/export-html/tool-renderer.js.map +0 -1
- package/packages/gsd-agent-core/dist/export-html/vendor/highlight.min.js +0 -1213
- package/packages/gsd-agent-core/dist/export-html/vendor/marked.min.js +0 -6
- package/packages/gsd-agent-core/dist/fallback-resolver.d.ts +0 -75
- package/packages/gsd-agent-core/dist/fallback-resolver.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/fallback-resolver.js +0 -118
- package/packages/gsd-agent-core/dist/fallback-resolver.js.map +0 -1
- package/packages/gsd-agent-core/dist/image-overflow-recovery.d.ts +0 -44
- package/packages/gsd-agent-core/dist/image-overflow-recovery.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/image-overflow-recovery.js +0 -99
- package/packages/gsd-agent-core/dist/image-overflow-recovery.js.map +0 -1
- package/packages/gsd-agent-core/dist/index.d.ts +0 -14
- package/packages/gsd-agent-core/dist/index.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/index.js +0 -19
- package/packages/gsd-agent-core/dist/index.js.map +0 -1
- package/packages/gsd-agent-core/dist/keybindings.d.ts +0 -47
- package/packages/gsd-agent-core/dist/keybindings.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/keybindings.js +0 -156
- package/packages/gsd-agent-core/dist/keybindings.js.map +0 -1
- package/packages/gsd-agent-core/dist/lifecycle-hooks.d.ts +0 -42
- package/packages/gsd-agent-core/dist/lifecycle-hooks.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/lifecycle-hooks.js +0 -204
- package/packages/gsd-agent-core/dist/lifecycle-hooks.js.map +0 -1
- package/packages/gsd-agent-core/dist/retry-handler.d.ts +0 -128
- package/packages/gsd-agent-core/dist/retry-handler.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/retry-handler.js +0 -518
- package/packages/gsd-agent-core/dist/retry-handler.js.map +0 -1
- package/packages/gsd-agent-core/dist/sdk.d.ts +0 -159
- package/packages/gsd-agent-core/dist/sdk.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/sdk.js +0 -375
- package/packages/gsd-agent-core/dist/sdk.js.map +0 -1
- package/packages/gsd-agent-core/dist/system-prompt.d.ts +0 -28
- package/packages/gsd-agent-core/dist/system-prompt.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/system-prompt.js +0 -201
- package/packages/gsd-agent-core/dist/system-prompt.js.map +0 -1
- package/packages/gsd-agent-core/package.json +0 -25
- package/packages/gsd-agent-core/scripts/copy-assets.cjs +0 -43
- package/packages/gsd-agent-core/src/agent-session.test.ts +0 -169
- package/packages/gsd-agent-core/src/agent-session.ts +0 -3358
- package/packages/gsd-agent-core/src/artifact-manager.ts +0 -126
- package/packages/gsd-agent-core/src/bash-executor.ts +0 -352
- package/packages/gsd-agent-core/src/blob-store.ts +0 -154
- package/packages/gsd-agent-core/src/compaction/branch-summarization.ts +0 -317
- package/packages/gsd-agent-core/src/compaction/compaction.ts +0 -855
- package/packages/gsd-agent-core/src/compaction/index.ts +0 -7
- package/packages/gsd-agent-core/src/compaction/utils.ts +0 -312
- package/packages/gsd-agent-core/src/compaction-orchestrator.ts +0 -449
- package/packages/gsd-agent-core/src/contextual-tips.ts +0 -232
- package/packages/gsd-agent-core/src/export-html/ansi-to-html.ts +0 -259
- package/packages/gsd-agent-core/src/export-html/index.ts +0 -345
- package/packages/gsd-agent-core/src/export-html/template.css +0 -971
- package/packages/gsd-agent-core/src/export-html/template.html +0 -54
- package/packages/gsd-agent-core/src/export-html/template.js +0 -1583
- package/packages/gsd-agent-core/src/export-html/tool-renderer.ts +0 -114
- package/packages/gsd-agent-core/src/export-html/vendor/highlight.min.js +0 -1213
- package/packages/gsd-agent-core/src/export-html/vendor/marked.min.js +0 -6
- package/packages/gsd-agent-core/src/fallback-resolver.ts +0 -193
- package/packages/gsd-agent-core/src/image-overflow-recovery.ts +0 -120
- package/packages/gsd-agent-core/src/index.ts +0 -68
- package/packages/gsd-agent-core/src/keybindings.ts +0 -220
- package/packages/gsd-agent-core/src/lifecycle-hooks.ts +0 -284
- package/packages/gsd-agent-core/src/retry-handler.ts +0 -620
- package/packages/gsd-agent-core/src/sdk.ts +0 -550
- package/packages/gsd-agent-core/src/system-prompt.ts +0 -270
- package/packages/gsd-agent-core/tsconfig.json +0 -28
- package/packages/gsd-agent-core/tsconfig.tsbuildinfo +0 -1
- package/packages/gsd-agent-modes/dist/cli/args.d.ts +0 -58
- package/packages/gsd-agent-modes/dist/cli/args.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/cli/args.js +0 -324
- package/packages/gsd-agent-modes/dist/cli/args.js.map +0 -1
- package/packages/gsd-agent-modes/dist/cli/config-selector.d.ts +0 -13
- package/packages/gsd-agent-modes/dist/cli/config-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/cli/config-selector.js +0 -32
- package/packages/gsd-agent-modes/dist/cli/config-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/cli/file-processor.d.ts +0 -15
- package/packages/gsd-agent-modes/dist/cli/file-processor.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/cli/file-processor.js +0 -86
- package/packages/gsd-agent-modes/dist/cli/file-processor.js.map +0 -1
- package/packages/gsd-agent-modes/dist/cli/list-models.d.ts +0 -21
- package/packages/gsd-agent-modes/dist/cli/list-models.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/cli/list-models.js +0 -114
- package/packages/gsd-agent-modes/dist/cli/list-models.js.map +0 -1
- package/packages/gsd-agent-modes/dist/cli/session-picker.d.ts +0 -10
- package/packages/gsd-agent-modes/dist/cli/session-picker.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/cli/session-picker.js +0 -37
- package/packages/gsd-agent-modes/dist/cli/session-picker.js.map +0 -1
- package/packages/gsd-agent-modes/dist/index.d.ts +0 -7
- package/packages/gsd-agent-modes/dist/index.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/index.js +0 -7
- package/packages/gsd-agent-modes/dist/index.js.map +0 -1
- package/packages/gsd-agent-modes/dist/main.d.ts +0 -8
- package/packages/gsd-agent-modes/dist/main.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/main.js +0 -491
- package/packages/gsd-agent-modes/dist/main.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/armin.d.ts +0 -34
- package/packages/gsd-agent-modes/dist/modes/interactive/components/armin.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/armin.js +0 -330
- package/packages/gsd-agent-modes/dist/modes/interactive/components/armin.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.d.ts +0 -29
- package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.js +0 -141
- package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.d.ts +0 -36
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.js +0 -157
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bordered-loader.d.ts +0 -16
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bordered-loader.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bordered-loader.js +0 -48
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bordered-loader.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.d.ts +0 -16
- package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.js +0 -43
- package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-frame.d.ts +0 -11
- package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-frame.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-frame.js +0 -47
- package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-frame.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.d.ts +0 -16
- package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.js +0 -44
- package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/config-selector.d.ts +0 -71
- package/packages/gsd-agent-modes/dist/modes/interactive/components/config-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/config-selector.js +0 -474
- package/packages/gsd-agent-modes/dist/modes/interactive/components/config-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/countdown-timer.d.ts +0 -15
- package/packages/gsd-agent-modes/dist/modes/interactive/components/countdown-timer.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/countdown-timer.js +0 -32
- package/packages/gsd-agent-modes/dist/modes/interactive/components/countdown-timer.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.d.ts +0 -22
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.js +0 -70
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-message.d.ts +0 -20
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-message.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-message.js +0 -75
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-message.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/daxnuts.d.ts +0 -23
- package/packages/gsd-agent-modes/dist/modes/interactive/components/daxnuts.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/daxnuts.js +0 -140
- package/packages/gsd-agent-modes/dist/modes/interactive/components/daxnuts.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/diff.d.ts +0 -12
- package/packages/gsd-agent-modes/dist/modes/interactive/components/diff.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/diff.js +0 -133
- package/packages/gsd-agent-modes/dist/modes/interactive/components/diff.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/dynamic-border.d.ts +0 -33
- package/packages/gsd-agent-modes/dist/modes/interactive/components/dynamic-border.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/dynamic-border.js +0 -82
- package/packages/gsd-agent-modes/dist/modes/interactive/components/dynamic-border.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.d.ts +0 -20
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.js +0 -111
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.d.ts +0 -24
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.js +0 -63
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.d.ts +0 -33
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.js +0 -118
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.d.ts +0 -32
- package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.js +0 -230
- package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/index.d.ts +0 -34
- package/packages/gsd-agent-modes/dist/modes/interactive/components/index.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/index.js +0 -36
- package/packages/gsd-agent-modes/dist/modes/interactive/components/index.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/keybinding-hints.d.ts +0 -48
- package/packages/gsd-agent-modes/dist/modes/interactive/components/keybinding-hints.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/keybinding-hints.js +0 -72
- package/packages/gsd-agent-modes/dist/modes/interactive/components/keybinding-hints.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.d.ts +0 -63
- package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.js +0 -213
- package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/model-selector.d.ts +0 -86
- package/packages/gsd-agent-modes/dist/modes/interactive/components/model-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/model-selector.js +0 -536
- package/packages/gsd-agent-modes/dist/modes/interactive/components/model-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.d.ts +0 -19
- package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.js +0 -93
- package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/provider-manager.d.ts +0 -30
- package/packages/gsd-agent-modes/dist/modes/interactive/components/provider-manager.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/provider-manager.js +0 -169
- package/packages/gsd-agent-modes/dist/modes/interactive/components/provider-manager.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/scoped-models-selector.d.ts +0 -49
- package/packages/gsd-agent-modes/dist/modes/interactive/components/scoped-models-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/scoped-models-selector.js +0 -267
- package/packages/gsd-agent-modes/dist/modes/interactive/components/scoped-models-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector-search.d.ts +0 -21
- package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector-search.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector-search.js +0 -155
- package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector-search.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector.d.ts +0 -97
- package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector.js +0 -810
- package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.d.ts +0 -71
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.js +0 -320
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/show-images-selector.d.ts +0 -10
- package/packages/gsd-agent-modes/dist/modes/interactive/components/show-images-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/show-images-selector.js +0 -34
- package/packages/gsd-agent-modes/dist/modes/interactive/components/show-images-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.d.ts +0 -17
- package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.js +0 -46
- package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/theme-selector.d.ts +0 -11
- package/packages/gsd-agent-modes/dist/modes/interactive/components/theme-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/theme-selector.js +0 -45
- package/packages/gsd-agent-modes/dist/modes/interactive/components/theme-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/thinking-selector.d.ts +0 -11
- package/packages/gsd-agent-modes/dist/modes/interactive/components/thinking-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/thinking-selector.js +0 -46
- package/packages/gsd-agent-modes/dist/modes/interactive/components/thinking-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/timestamp.d.ts +0 -15
- package/packages/gsd-agent-modes/dist/modes/interactive/components/timestamp.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/timestamp.js +0 -40
- package/packages/gsd-agent-modes/dist/modes/interactive/components/timestamp.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts +0 -111
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js +0 -984
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-render-utils.d.ts +0 -44
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-render-utils.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-render-utils.js +0 -61
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-render-utils.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-selector.d.ts +0 -109
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-selector.js +0 -1035
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message-selector.d.ts +0 -30
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message-selector.js +0 -112
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.d.ts +0 -12
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.js +0 -38
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/visual-truncate.d.ts +0 -24
- package/packages/gsd-agent-modes/dist/modes/interactive/components/visual-truncate.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/visual-truncate.js +0 -33
- package/packages/gsd-agent-modes/dist/modes/interactive/components/visual-truncate.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts +0 -27
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js +0 -793
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.d.ts +0 -4
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.js +0 -62
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.d.ts +0 -22
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.js +0 -118
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/model-controller.d.ts +0 -7
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/model-controller.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/model-controller.js +0 -68
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/model-controller.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.d.ts +0 -50
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.js +0 -2
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts +0 -358
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js +0 -3409
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/slash-command-handlers.d.ts +0 -77
- package/packages/gsd-agent-modes/dist/modes/interactive/slash-command-handlers.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/slash-command-handlers.js +0 -529
- package/packages/gsd-agent-modes/dist/modes/interactive/slash-command-handlers.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/utils/shorten-path.d.ts +0 -6
- package/packages/gsd-agent-modes/dist/modes/interactive/utils/shorten-path.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/utils/shorten-path.js +0 -15
- package/packages/gsd-agent-modes/dist/modes/interactive/utils/shorten-path.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/print-mode.d.ts +0 -28
- package/packages/gsd-agent-modes/dist/modes/print-mode.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/print-mode.js +0 -84
- package/packages/gsd-agent-modes/dist/modes/print-mode.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/jsonl.d.ts +0 -17
- package/packages/gsd-agent-modes/dist/modes/rpc/jsonl.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/jsonl.js +0 -49
- package/packages/gsd-agent-modes/dist/modes/rpc/jsonl.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/remote-terminal.d.ts +0 -37
- package/packages/gsd-agent-modes/dist/modes/rpc/remote-terminal.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/remote-terminal.js +0 -84
- package/packages/gsd-agent-modes/dist/modes/rpc/remote-terminal.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.d.ts +0 -243
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.js +0 -464
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.d.ts +0 -25
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js +0 -750
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-types.d.ts +0 -511
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-types.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-types.js +0 -8
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-types.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/shared/command-context-actions.d.ts +0 -19
- package/packages/gsd-agent-modes/dist/modes/shared/command-context-actions.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/shared/command-context-actions.js +0 -45
- package/packages/gsd-agent-modes/dist/modes/shared/command-context-actions.js.map +0 -1
- package/packages/gsd-agent-modes/dist/pi-coding-agent-compat.d.ts +0 -22
- package/packages/gsd-agent-modes/dist/pi-coding-agent-compat.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/pi-coding-agent-compat.js +0 -21
- package/packages/gsd-agent-modes/dist/pi-coding-agent-compat.js.map +0 -1
- package/packages/gsd-agent-modes/dist/pi-tui-compat.d.ts +0 -4
- package/packages/gsd-agent-modes/dist/pi-tui-compat.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/pi-tui-compat.js +0 -3
- package/packages/gsd-agent-modes/dist/pi-tui-compat.js.map +0 -1
- package/packages/gsd-agent-modes/dist/theme.d.ts +0 -15
- package/packages/gsd-agent-modes/dist/theme.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/theme.js +0 -23
- package/packages/gsd-agent-modes/dist/theme.js.map +0 -1
- package/packages/gsd-agent-modes/dist/utils/theme.d.ts +0 -16
- package/packages/gsd-agent-modes/dist/utils/theme.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/utils/theme.js +0 -11
- package/packages/gsd-agent-modes/dist/utils/theme.js.map +0 -1
- package/packages/gsd-agent-modes/package.json +0 -23
- package/packages/gsd-agent-modes/src/cli/args.ts +0 -350
- package/packages/gsd-agent-modes/src/cli/config-selector.ts +0 -54
- package/packages/gsd-agent-modes/src/cli/file-processor.ts +0 -107
- package/packages/gsd-agent-modes/src/cli/list-models.ts +0 -141
- package/packages/gsd-agent-modes/src/cli/session-picker.ts +0 -59
- package/packages/gsd-agent-modes/src/index.ts +0 -6
- package/packages/gsd-agent-modes/src/main.ts +0 -614
- package/packages/gsd-agent-modes/src/modes/interactive/components/__tests__/login-dialog.test.ts +0 -24
- package/packages/gsd-agent-modes/src/modes/interactive/components/__tests__/provider-display-name.test.ts +0 -18
- package/packages/gsd-agent-modes/src/modes/interactive/components/__tests__/timestamp.test.ts +0 -38
- package/packages/gsd-agent-modes/src/modes/interactive/components/__tests__/tool-execution.test.ts +0 -171
- package/packages/gsd-agent-modes/src/modes/interactive/components/armin.ts +0 -382
- package/packages/gsd-agent-modes/src/modes/interactive/components/assistant-message.ts +0 -178
- package/packages/gsd-agent-modes/src/modes/interactive/components/bash-execution.ts +0 -212
- package/packages/gsd-agent-modes/src/modes/interactive/components/bordered-loader.ts +0 -66
- package/packages/gsd-agent-modes/src/modes/interactive/components/branch-summary-message.ts +0 -59
- package/packages/gsd-agent-modes/src/modes/interactive/components/chat-frame.ts +0 -67
- package/packages/gsd-agent-modes/src/modes/interactive/components/compaction-summary-message.ts +0 -60
- package/packages/gsd-agent-modes/src/modes/interactive/components/config-selector.ts +0 -597
- package/packages/gsd-agent-modes/src/modes/interactive/components/countdown-timer.ts +0 -41
- package/packages/gsd-agent-modes/src/modes/interactive/components/custom-editor.ts +0 -88
- package/packages/gsd-agent-modes/src/modes/interactive/components/custom-message.ts +0 -100
- package/packages/gsd-agent-modes/src/modes/interactive/components/daxnuts.ts +0 -165
- package/packages/gsd-agent-modes/src/modes/interactive/components/diff.ts +0 -147
- package/packages/gsd-agent-modes/src/modes/interactive/components/dynamic-border.test.ts +0 -73
- package/packages/gsd-agent-modes/src/modes/interactive/components/dynamic-border.ts +0 -89
- package/packages/gsd-agent-modes/src/modes/interactive/components/extension-editor.ts +0 -151
- package/packages/gsd-agent-modes/src/modes/interactive/components/extension-input.ts +0 -100
- package/packages/gsd-agent-modes/src/modes/interactive/components/extension-selector.ts +0 -156
- package/packages/gsd-agent-modes/src/modes/interactive/components/footer.ts +0 -257
- package/packages/gsd-agent-modes/src/modes/interactive/components/index.ts +0 -35
- package/packages/gsd-agent-modes/src/modes/interactive/components/keybinding-hints.ts +0 -84
- package/packages/gsd-agent-modes/src/modes/interactive/components/login-dialog.ts +0 -257
- package/packages/gsd-agent-modes/src/modes/interactive/components/model-selector.ts +0 -656
- package/packages/gsd-agent-modes/src/modes/interactive/components/oauth-selector.ts +0 -122
- package/packages/gsd-agent-modes/src/modes/interactive/components/provider-manager.ts +0 -210
- package/packages/gsd-agent-modes/src/modes/interactive/components/scoped-models-selector.ts +0 -342
- package/packages/gsd-agent-modes/src/modes/interactive/components/session-selector-search.ts +0 -194
- package/packages/gsd-agent-modes/src/modes/interactive/components/session-selector.ts +0 -1011
- package/packages/gsd-agent-modes/src/modes/interactive/components/settings-selector.ts +0 -452
- package/packages/gsd-agent-modes/src/modes/interactive/components/show-images-selector.ts +0 -45
- package/packages/gsd-agent-modes/src/modes/interactive/components/skill-invocation-message.ts +0 -56
- package/packages/gsd-agent-modes/src/modes/interactive/components/theme-selector.ts +0 -63
- package/packages/gsd-agent-modes/src/modes/interactive/components/thinking-selector.ts +0 -64
- package/packages/gsd-agent-modes/src/modes/interactive/components/timestamp.ts +0 -48
- package/packages/gsd-agent-modes/src/modes/interactive/components/tool-execution.ts +0 -1157
- package/packages/gsd-agent-modes/src/modes/interactive/components/tree-render-utils.ts +0 -81
- package/packages/gsd-agent-modes/src/modes/interactive/components/tree-selector.ts +0 -1208
- package/packages/gsd-agent-modes/src/modes/interactive/components/user-message-selector.ts +0 -145
- package/packages/gsd-agent-modes/src/modes/interactive/components/user-message.ts +0 -44
- package/packages/gsd-agent-modes/src/modes/interactive/components/visual-truncate.ts +0 -50
- package/packages/gsd-agent-modes/src/modes/interactive/controllers/chat-controller-ordering.test.ts +0 -1430
- package/packages/gsd-agent-modes/src/modes/interactive/controllers/chat-controller.test.ts +0 -71
- package/packages/gsd-agent-modes/src/modes/interactive/controllers/chat-controller.ts +0 -957
- package/packages/gsd-agent-modes/src/modes/interactive/controllers/extension-ui-controller.ts +0 -63
- package/packages/gsd-agent-modes/src/modes/interactive/controllers/input-controller.test.ts +0 -183
- package/packages/gsd-agent-modes/src/modes/interactive/controllers/input-controller.ts +0 -140
- package/packages/gsd-agent-modes/src/modes/interactive/controllers/model-controller.ts +0 -77
- package/packages/gsd-agent-modes/src/modes/interactive/interactive-mode-ordering.test.ts +0 -44
- package/packages/gsd-agent-modes/src/modes/interactive/interactive-mode-state.ts +0 -49
- package/packages/gsd-agent-modes/src/modes/interactive/interactive-mode.ts +0 -4195
- package/packages/gsd-agent-modes/src/modes/interactive/slash-command-handlers.ts +0 -670
- package/packages/gsd-agent-modes/src/modes/interactive/utils/shorten-path.ts +0 -14
- package/packages/gsd-agent-modes/src/modes/print-mode.ts +0 -106
- package/packages/gsd-agent-modes/src/modes/rpc/jsonl.ts +0 -58
- package/packages/gsd-agent-modes/src/modes/rpc/remote-terminal.ts +0 -109
- package/packages/gsd-agent-modes/src/modes/rpc/rpc-client.ts +0 -572
- package/packages/gsd-agent-modes/src/modes/rpc/rpc-mode.ts +0 -902
- package/packages/gsd-agent-modes/src/modes/rpc/rpc-protocol-v2.test.ts +0 -971
- package/packages/gsd-agent-modes/src/modes/rpc/rpc-types.ts +0 -335
- package/packages/gsd-agent-modes/src/modes/shared/command-context-actions.ts +0 -53
- package/packages/gsd-agent-modes/src/pi-coding-agent-compat.ts +0 -42
- package/packages/gsd-agent-modes/src/pi-tui-compat.ts +0 -4
- package/packages/gsd-agent-modes/src/theme.ts +0 -25
- package/packages/gsd-agent-modes/src/utils/theme.ts +0 -24
- package/packages/gsd-agent-modes/tsconfig.json +0 -28
- package/packages/gsd-agent-modes/tsconfig.tsbuildinfo +0 -1
- package/packages/gsd-agent-types/dist/index.d.ts +0 -176
- package/packages/gsd-agent-types/dist/index.d.ts.map +0 -1
- package/packages/gsd-agent-types/dist/index.js +0 -24
- package/packages/gsd-agent-types/dist/index.js.map +0 -1
- package/packages/gsd-agent-types/package.json +0 -24
- package/packages/gsd-agent-types/src/index.ts +0 -206
- package/packages/gsd-agent-types/tsconfig.json +0 -25
- package/packages/gsd-agent-types/tsconfig.tsbuildinfo +0 -1
- package/packages/native/dist/tsconfig.tsbuildinfo +0 -1
- package/scripts/install.js +0 -512
- package/src/resources/extensions/claude-code-cli/tests/provider-registration.test.ts +0 -27
- package/src/resources/extensions/gsd/tests/auto-start-clean-runtime-db-gated.test.ts +0 -63
- package/src/resources/extensions/gsd/tests/dispatch-guard-summary-db-mismatch.test.ts +0 -77
- /package/dist/web/standalone/.next/static/{gy6_foLMsEzdGBT19c3hr → pV-mPo7rYGb5JBC09C8GG}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{gy6_foLMsEzdGBT19c3hr → pV-mPo7rYGb5JBC09C8GG}/_ssgManifest.js +0 -0
|
@@ -8,116 +8,17 @@
|
|
|
8
8
|
import type {
|
|
9
9
|
AssistantMessage,
|
|
10
10
|
AssistantMessageEvent,
|
|
11
|
+
ServerToolUseContent,
|
|
11
12
|
StopReason,
|
|
12
13
|
TextContent,
|
|
13
14
|
ThinkingContent,
|
|
14
15
|
ToolCall,
|
|
15
16
|
Usage,
|
|
17
|
+
WebSearchResultContent,
|
|
16
18
|
} from "@gsd/pi-ai";
|
|
19
|
+
import { hasXmlParameterTags, repairToolJson } from "@gsd/pi-ai";
|
|
17
20
|
import type { BetaContentBlock, BetaRawMessageStreamEvent, NonNullableUsage } from "./sdk-types.js";
|
|
18
21
|
|
|
19
|
-
// ---------------------------------------------------------------------------
|
|
20
|
-
// XML parameter tag utilities (inline replacements for removed pi-ai symbols)
|
|
21
|
-
// ---------------------------------------------------------------------------
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Detects XML parameter tags (inline <parameter name="...">...</parameter> form)
|
|
25
|
-
* or XML wrapper (<parameters>...</parameters>) in streaming tool call JSON.
|
|
26
|
-
* Replaces removed pi-ai utility (removed in pi 0.67.2).
|
|
27
|
-
* T-10-05: regex only detects tag presence; does not evaluate content.
|
|
28
|
-
*/
|
|
29
|
-
function hasXmlParameterTags(s: string): boolean {
|
|
30
|
-
return /<parameter[s\s>]/i.test(s);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Repairs malformed LLM-generated tool JSON using three strategies:
|
|
35
|
-
*
|
|
36
|
-
* 1. XML parameter extraction: When inline <parameter name="key">value</parameter>
|
|
37
|
-
* tags appear inside a JSON string value, extract each as a top-level key and
|
|
38
|
-
* clean the containing string value by truncating at the closing tag boundary.
|
|
39
|
-
*
|
|
40
|
-
* 2. YAML bullet repair: When bare "- item" patterns appear as JSON values (not
|
|
41
|
-
* quoted), convert each bullet sequence into a JSON array.
|
|
42
|
-
*
|
|
43
|
-
* 3. XML wrapper extraction: Extract content from <parameters>...</parameters> wrapper.
|
|
44
|
-
*
|
|
45
|
-
* Replaces removed pi-ai utility (removed in pi 0.67.2).
|
|
46
|
-
* T-10-05: extracts text content only, no evaluation.
|
|
47
|
-
*/
|
|
48
|
-
function repairToolJson(s: string): string {
|
|
49
|
-
// Strategy 1: XML parameter tags inside JSON string values (#3751)
|
|
50
|
-
// The raw JSON string may have escaped quotes: <parameter name=\"key\">val</parameter>
|
|
51
|
-
// or unescaped: <parameter name="key">val</parameter>
|
|
52
|
-
// We match both forms.
|
|
53
|
-
if (/<parameter\s+name=/i.test(s)) {
|
|
54
|
-
try {
|
|
55
|
-
// Match <parameter name="key"> or <parameter name=\"key\"> in raw JSON text
|
|
56
|
-
const paramPattern = /<parameter\s+name=(?:\\"|")([^"\\]+)(?:\\"|")>([\s\S]*?)<\/parameter>/gi;
|
|
57
|
-
const extracted: Record<string, unknown> = {};
|
|
58
|
-
let match: RegExpExecArray | null;
|
|
59
|
-
while ((match = paramPattern.exec(s)) !== null) {
|
|
60
|
-
const key = match[1];
|
|
61
|
-
// rawVal may contain JSON-escaped characters; unescape for parsing
|
|
62
|
-
const rawVal = match[2].trim().replace(/\\"/g, '"').replace(/\\n/g, "\n");
|
|
63
|
-
// Attempt to parse value as JSON; fall back to string
|
|
64
|
-
try {
|
|
65
|
-
extracted[key] = JSON.parse(rawVal);
|
|
66
|
-
} catch {
|
|
67
|
-
extracted[key] = rawVal;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
if (Object.keys(extracted).length > 0) {
|
|
72
|
-
// Remove the XML parameter block and preceding closing tag from the raw string.
|
|
73
|
-
// The block looks like: </tagName>\n<parameter ...>...</parameter>...\n (with escaped chars)
|
|
74
|
-
// We remove from the first </...> closing tag through the last </parameter> tag.
|
|
75
|
-
const cleaned = s
|
|
76
|
-
.replace(/<\/[^>]+>(?:\\n|\n)*(?:<parameter[\s\S]*?<\/parameter>(?:\\n|\n)*)+/gi, "")
|
|
77
|
-
.trim();
|
|
78
|
-
|
|
79
|
-
// Parse cleaned base JSON and merge extracted params
|
|
80
|
-
const base = JSON.parse(cleaned) as Record<string, unknown>;
|
|
81
|
-
return JSON.stringify({ ...base, ...extracted });
|
|
82
|
-
}
|
|
83
|
-
} catch {
|
|
84
|
-
// Fall through to next strategy
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
// Strategy 2: YAML bullet lists as unquoted JSON values (#2660)
|
|
89
|
-
// Pattern: "key": - item1, "key2": - item2
|
|
90
|
-
if (/:\s*-\s+/.test(s)) {
|
|
91
|
-
try {
|
|
92
|
-
// Replace bare YAML bullet sequences with JSON arrays.
|
|
93
|
-
// Match: "key": - val1, - val2, "nextKey" or end
|
|
94
|
-
// We need to handle: "key": - item, "nextKey" where - item is the unquoted value
|
|
95
|
-
const repaired = s.replace(
|
|
96
|
-
// Match a quoted key followed by colon, then one or more "- item" bullets
|
|
97
|
-
// terminated by either a comma+quote (next key) or closing brace
|
|
98
|
-
/"([^"]+)":\s*((?:-\s+[^,\n\-"{}[\]]+(?:,\s*(?![-"\s*{]))?)+)/g,
|
|
99
|
-
(fullMatch: string, key: string, bulletBlock: string) => {
|
|
100
|
-
// Extract individual bullet items
|
|
101
|
-
const items = bulletBlock
|
|
102
|
-
.split(/,?\s*-\s+/)
|
|
103
|
-
.map((item: string) => item.trim().replace(/,\s*$/, "").trim())
|
|
104
|
-
.filter((item: string) => item.length > 0);
|
|
105
|
-
if (items.length === 0) return fullMatch;
|
|
106
|
-
return `"${key}": ${JSON.stringify(items)}`;
|
|
107
|
-
},
|
|
108
|
-
);
|
|
109
|
-
const parsed = JSON.parse(repaired);
|
|
110
|
-
return JSON.stringify(parsed);
|
|
111
|
-
} catch {
|
|
112
|
-
// Fall through to next strategy
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
// Strategy 3: XML wrapper extraction (<parameters>...</parameters>)
|
|
117
|
-
const m = /<parameters[^>]*>([\s\S]*?)<\/parameters>/i.exec(s);
|
|
118
|
-
return m ? m[1].trim() : s;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
22
|
// ---------------------------------------------------------------------------
|
|
122
23
|
// MCP tool name parsing
|
|
123
24
|
// ---------------------------------------------------------------------------
|
|
@@ -170,7 +71,7 @@ function toolCallFromBlock(
|
|
|
170
71
|
*/
|
|
171
72
|
export function mapContentBlock(
|
|
172
73
|
block: BetaContentBlock,
|
|
173
|
-
): TextContent | ThinkingContent | ToolCall {
|
|
74
|
+
): TextContent | ThinkingContent | ToolCall | ServerToolUseContent | WebSearchResultContent {
|
|
174
75
|
switch (block.type) {
|
|
175
76
|
case "text":
|
|
176
77
|
return { type: "text", text: block.text } satisfies TextContent;
|
|
@@ -186,18 +87,19 @@ export function mapContentBlock(
|
|
|
186
87
|
return toolCallFromBlock(block.id, block.name, block.input);
|
|
187
88
|
|
|
188
89
|
case "server_tool_use":
|
|
189
|
-
// ServerToolUseContent removed from pi-ai in pi 0.67.2 — represent as text
|
|
190
90
|
return {
|
|
191
|
-
type: "
|
|
192
|
-
|
|
193
|
-
|
|
91
|
+
type: "serverToolUse",
|
|
92
|
+
id: block.id,
|
|
93
|
+
name: block.name,
|
|
94
|
+
input: block.input,
|
|
95
|
+
} satisfies ServerToolUseContent;
|
|
194
96
|
|
|
195
97
|
case "web_search_tool_result":
|
|
196
|
-
// WebSearchResultContent removed from pi-ai in pi 0.67.2 — represent as text
|
|
197
98
|
return {
|
|
198
|
-
type: "
|
|
199
|
-
|
|
200
|
-
|
|
99
|
+
type: "webSearchResult",
|
|
100
|
+
toolUseId: block.tool_use_id,
|
|
101
|
+
content: block.content,
|
|
102
|
+
} satisfies WebSearchResultContent;
|
|
201
103
|
|
|
202
104
|
default: {
|
|
203
105
|
const unknown = block as Record<string, unknown>;
|
|
@@ -322,7 +224,15 @@ export class PartialMessageBuilder {
|
|
|
322
224
|
this.partial.content.push(toolCallFromBlock(block.id, block.name, {}));
|
|
323
225
|
return { type: "toolcall_start", contentIndex, partial: this.partial };
|
|
324
226
|
}
|
|
325
|
-
|
|
227
|
+
if (block.type === "server_tool_use") {
|
|
228
|
+
this.partial.content.push({
|
|
229
|
+
type: "serverToolUse",
|
|
230
|
+
id: block.id,
|
|
231
|
+
name: block.name,
|
|
232
|
+
input: block.input,
|
|
233
|
+
});
|
|
234
|
+
return { type: "server_tool_use", contentIndex, partial: this.partial };
|
|
235
|
+
}
|
|
326
236
|
return null;
|
|
327
237
|
}
|
|
328
238
|
|
|
@@ -379,9 +289,7 @@ export class PartialMessageBuilder {
|
|
|
379
289
|
// malformation explicitly so downstream consumers can
|
|
380
290
|
// distinguish this from a healthy tool completion (#2574).
|
|
381
291
|
block.arguments = { _raw: jsonStr };
|
|
382
|
-
|
|
383
|
-
// cast to any to preserve the runtime signal for downstream consumers (#2574)
|
|
384
|
-
return { type: "toolcall_end", contentIndex, toolCall: block, partial: this.partial, malformedArguments: true } as any;
|
|
292
|
+
return { type: "toolcall_end", contentIndex, toolCall: block, partial: this.partial, malformedArguments: true };
|
|
385
293
|
}
|
|
386
294
|
}
|
|
387
295
|
return { type: "toolcall_end", contentIndex, toolCall: block, partial: this.partial };
|
|
@@ -548,9 +548,8 @@ async function promptElicitationWithDialogs(
|
|
|
548
548
|
const title = buildElicitationPromptTitle(request, question);
|
|
549
549
|
|
|
550
550
|
if (question.allowMultiple) {
|
|
551
|
-
// allowMultiple removed from ExtensionUIDialogOptions in pi 0.67.2;
|
|
552
|
-
// fall back to single-select (result is wrapped in array below)
|
|
553
551
|
const selected = await ui.select(title, question.options.map((option) => option.label), {
|
|
552
|
+
allowMultiple: true,
|
|
554
553
|
signal,
|
|
555
554
|
});
|
|
556
555
|
if (Array.isArray(selected)) {
|
|
@@ -703,12 +702,6 @@ export function makeAbortedMessage(model: string, lastTextContent: string): Assi
|
|
|
703
702
|
* Set `GSD_CLAUDE_CODE_PERMISSION_MODE` to `bypassPermissions` to restore
|
|
704
703
|
* the old always-approve behaviour, or to `default` / `plan` for stricter
|
|
705
704
|
* modes.
|
|
706
|
-
*
|
|
707
|
-
* When `GSD_HEADLESS=1` is set (auto-mode / non-interactive runs), the
|
|
708
|
-
* default flips to `bypassPermissions` because there is no UI to approve
|
|
709
|
-
* permission dialogs — `acceptEdits` would hang verification commands like
|
|
710
|
-
* `npx tsc --noEmit` or `npx vitest run` indefinitely (#4657). Explicit
|
|
711
|
-
* overrides still win, so users can opt back into `acceptEdits` in headless.
|
|
712
705
|
*/
|
|
713
706
|
export async function resolveClaudePermissionMode(
|
|
714
707
|
env: NodeJS.ProcessEnv = process.env,
|
|
@@ -717,12 +710,6 @@ export async function resolveClaudePermissionMode(
|
|
|
717
710
|
if (override === "bypassPermissions" || override === "acceptEdits" || override === "default" || override === "plan") {
|
|
718
711
|
return override;
|
|
719
712
|
}
|
|
720
|
-
if (env.GSD_HEADLESS === "1") {
|
|
721
|
-
console.warn(
|
|
722
|
-
"[claude-code-cli] Headless mode detected (GSD_HEADLESS=1): defaulting permissionMode to 'bypassPermissions' so verification Bash commands can run. Set GSD_CLAUDE_CODE_PERMISSION_MODE=acceptEdits to opt out.",
|
|
723
|
-
);
|
|
724
|
-
return "bypassPermissions";
|
|
725
|
-
}
|
|
726
713
|
return "acceptEdits";
|
|
727
714
|
}
|
|
728
715
|
|
|
@@ -998,8 +985,7 @@ function attachExternalResultsToToolBlocks(
|
|
|
998
985
|
toolResultsById: ReadonlyMap<string, ExternalToolResultPayload>,
|
|
999
986
|
): void {
|
|
1000
987
|
for (const block of toolBlocks) {
|
|
1001
|
-
|
|
1002
|
-
if (block.type !== "toolCall") continue;
|
|
988
|
+
if (block.type !== "toolCall" && block.type !== "serverToolUse") continue;
|
|
1003
989
|
const externalResult = toolResultsById.get(block.id);
|
|
1004
990
|
if (!externalResult) continue;
|
|
1005
991
|
(block as ToolCallWithExternalResult & { id: string }).externalResult = externalResult;
|
|
@@ -1190,9 +1176,8 @@ async function pumpSdkMessages(
|
|
|
1190
1176
|
lastTextContent = block.text;
|
|
1191
1177
|
} else if (block.type === "thinking" && block.thinking) {
|
|
1192
1178
|
lastThinkingContent = block.thinking;
|
|
1193
|
-
} else if (block.type === "toolCall") {
|
|
1179
|
+
} else if (block.type === "toolCall" || block.type === "serverToolUse") {
|
|
1194
1180
|
// Collect tool blocks for externalToolExecution rendering
|
|
1195
|
-
// (serverToolUse removed from pi-ai content types in pi 0.67.2)
|
|
1196
1181
|
intermediateToolBlocks.push(block);
|
|
1197
1182
|
}
|
|
1198
1183
|
}
|
|
@@ -1223,8 +1208,13 @@ async function pumpSdkMessages(
|
|
|
1223
1208
|
toolCall: block,
|
|
1224
1209
|
partial: builder.message,
|
|
1225
1210
|
});
|
|
1211
|
+
} else if (block.type === "serverToolUse") {
|
|
1212
|
+
stream.push({
|
|
1213
|
+
type: "server_tool_use",
|
|
1214
|
+
contentIndex,
|
|
1215
|
+
partial: builder.message,
|
|
1216
|
+
});
|
|
1226
1217
|
}
|
|
1227
|
-
// serverToolUse/server_tool_use removed from pi-ai in pi 0.67.2
|
|
1228
1218
|
}
|
|
1229
1219
|
}
|
|
1230
1220
|
|
|
@@ -988,12 +988,10 @@ describe("stream-adapter — MCP elicitation bridge", () => {
|
|
|
988
988
|
});
|
|
989
989
|
|
|
990
990
|
test("createClaudeCodeElicitationHandler falls back to dialog prompts when custom UI is unavailable", async () => {
|
|
991
|
-
// pi 0.67.2: allowMultiple removed from ExtensionUIDialogOptions.
|
|
992
|
-
// Multi-select falls back to single-select; result is wrapped in an array.
|
|
993
|
-
// The select mock no longer receives opts.allowMultiple=true, so it returns options[0].
|
|
994
991
|
const ui = {
|
|
995
992
|
custom: async () => undefined,
|
|
996
|
-
select: async (_title: string, options: string[],
|
|
993
|
+
select: async (_title: string, options: string[], opts?: { allowMultiple?: boolean }) => {
|
|
994
|
+
if (opts?.allowMultiple) return ["Desktop", "Mobile"];
|
|
997
995
|
return options.includes("None of the above") ? "None of the above" : options[0];
|
|
998
996
|
},
|
|
999
997
|
input: async () => "CLI-only deployment target",
|
|
@@ -1007,8 +1005,7 @@ describe("stream-adapter — MCP elicitation bridge", () => {
|
|
|
1007
1005
|
content: {
|
|
1008
1006
|
storage_scope: "None of the above",
|
|
1009
1007
|
storage_scope__note: "CLI-only deployment target",
|
|
1010
|
-
|
|
1011
|
-
platform: ["Web"],
|
|
1008
|
+
platform: ["Desktop", "Mobile"],
|
|
1012
1009
|
},
|
|
1013
1010
|
});
|
|
1014
1011
|
});
|
|
@@ -1261,27 +1258,6 @@ describe("stream-adapter — permission mode (F10)", () => {
|
|
|
1261
1258
|
`expected bypass or acceptEdits, got ${mode}`,
|
|
1262
1259
|
);
|
|
1263
1260
|
});
|
|
1264
|
-
|
|
1265
|
-
test("resolveClaudePermissionMode flips to bypassPermissions when GSD_HEADLESS=1 (#4657)", async () => {
|
|
1266
|
-
const originalWarn = console.warn;
|
|
1267
|
-
console.warn = () => {};
|
|
1268
|
-
try {
|
|
1269
|
-
const env = { GSD_HEADLESS: "1" } as NodeJS.ProcessEnv;
|
|
1270
|
-
const mode = await resolveClaudePermissionMode(env);
|
|
1271
|
-
assert.equal(mode, "bypassPermissions");
|
|
1272
|
-
} finally {
|
|
1273
|
-
console.warn = originalWarn;
|
|
1274
|
-
}
|
|
1275
|
-
});
|
|
1276
|
-
|
|
1277
|
-
test("resolveClaudePermissionMode: explicit override wins over GSD_HEADLESS=1", async () => {
|
|
1278
|
-
const env = {
|
|
1279
|
-
GSD_HEADLESS: "1",
|
|
1280
|
-
GSD_CLAUDE_CODE_PERMISSION_MODE: "acceptEdits",
|
|
1281
|
-
} as NodeJS.ProcessEnv;
|
|
1282
|
-
const mode = await resolveClaudePermissionMode(env);
|
|
1283
|
-
assert.equal(mode, "acceptEdits");
|
|
1284
|
-
});
|
|
1285
1261
|
});
|
|
1286
1262
|
|
|
1287
1263
|
describe("stream-adapter — Windows Claude path lookup (#3770)", () => {
|
|
@@ -33,7 +33,7 @@ import { parseRoadmap } from "./parsers-legacy.js";
|
|
|
33
33
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
34
34
|
import { logWarning, logError } from "./workflow-logger.js";
|
|
35
35
|
import { join } from "node:path";
|
|
36
|
-
import { hasImplementationArtifacts
|
|
36
|
+
import { hasImplementationArtifacts } from "./auto-recovery.js";
|
|
37
37
|
import {
|
|
38
38
|
buildDiscussMilestonePrompt,
|
|
39
39
|
buildResearchMilestonePrompt,
|
|
@@ -883,13 +883,21 @@ export const DISPATCH_RULES: DispatchRule[] = [
|
|
|
883
883
|
}
|
|
884
884
|
}
|
|
885
885
|
|
|
886
|
+
// Reconciliation guard (#4324): when the SUMMARY file already exists
|
|
887
|
+
// on disk but the DB says the milestone is not complete, the DB is
|
|
888
|
+
// out of sync (e.g. journal reset, partial merge, crash recovery).
|
|
889
|
+
// Reconcile the DB status directly instead of re-dispatching the
|
|
890
|
+
// tool, which would overwrite the richer on-disk SUMMARY with a
|
|
891
|
+
// thinner regenerated version — causing silent data loss.
|
|
886
892
|
const existingSummary = resolveMilestoneFile(basePath, mid, "SUMMARY");
|
|
887
|
-
let summaryOutcome: "success" | "failure" | "unknown" = "unknown";
|
|
888
893
|
if (existingSummary && isDbAvailable()) {
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
894
|
+
try {
|
|
895
|
+
updateMilestoneStatus(mid, "complete", new Date().toISOString());
|
|
896
|
+
logWarning("dispatch", `Milestone ${mid} has SUMMARY on disk but DB status was not complete — reconciled DB to complete (#4324)`);
|
|
897
|
+
} catch (err) {
|
|
898
|
+
logWarning("dispatch", `Failed to reconcile milestone ${mid} status: ${err instanceof Error ? err.message : String(err)}`);
|
|
892
899
|
}
|
|
900
|
+
return { action: "skip" };
|
|
893
901
|
}
|
|
894
902
|
|
|
895
903
|
// Safety guard (#2675): block completion when VALIDATION verdict is
|
|
@@ -974,44 +982,6 @@ export const DISPATCH_RULES: DispatchRule[] = [
|
|
|
974
982
|
logWarning("dispatch", `verification class check failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
975
983
|
}
|
|
976
984
|
|
|
977
|
-
// Disk/DB mismatch handling (#4658): SUMMARY presence alone is not enough.
|
|
978
|
-
// Apply post-gate policy:
|
|
979
|
-
// - success summary: reconcile DB and skip re-dispatch
|
|
980
|
-
// - failure summary: pause/fail-closed
|
|
981
|
-
// - unknown summary: pause/fail-closed
|
|
982
|
-
if (existingSummary && isDbAvailable()) {
|
|
983
|
-
const milestone = getMilestone(mid);
|
|
984
|
-
const status = milestone?.status ?? "missing";
|
|
985
|
-
|
|
986
|
-
if (summaryOutcome === "success") {
|
|
987
|
-
try {
|
|
988
|
-
updateMilestoneStatus(mid, "complete", new Date().toISOString());
|
|
989
|
-
logWarning("dispatch", `Milestone ${mid} SUMMARY indicates completion while DB status was "${status}" — reconciled DB to complete (#4658)`);
|
|
990
|
-
return { action: "skip" };
|
|
991
|
-
} catch (err) {
|
|
992
|
-
return {
|
|
993
|
-
action: "stop",
|
|
994
|
-
level: "warning",
|
|
995
|
-
reason: `Milestone ${mid} SUMMARY indicates completion but DB reconciliation failed (${err instanceof Error ? err.message : String(err)}). Auto-mode paused for manual review.`,
|
|
996
|
-
};
|
|
997
|
-
}
|
|
998
|
-
}
|
|
999
|
-
|
|
1000
|
-
if (summaryOutcome === "failure") {
|
|
1001
|
-
return {
|
|
1002
|
-
action: "stop",
|
|
1003
|
-
level: "warning",
|
|
1004
|
-
reason: `Milestone ${mid} has a failure-path SUMMARY while DB status is "${status}". Auto-mode will not promote completion from failure artifacts. Re-run complete-milestone only after blockers are resolved and verification passes.`,
|
|
1005
|
-
};
|
|
1006
|
-
}
|
|
1007
|
-
|
|
1008
|
-
return {
|
|
1009
|
-
action: "stop",
|
|
1010
|
-
level: "warning",
|
|
1011
|
-
reason: `Milestone ${mid} has an ambiguous SUMMARY while DB status is "${status}". Auto-mode paused instead of promoting completion from file presence alone.`,
|
|
1012
|
-
};
|
|
1013
|
-
}
|
|
1014
|
-
|
|
1015
985
|
return {
|
|
1016
986
|
action: "dispatch",
|
|
1017
987
|
unitType: "complete-milestone",
|
|
@@ -70,23 +70,9 @@ import { ensureCodebaseMapFresh } from "./codebase-generator.js";
|
|
|
70
70
|
import { resolveUokFlags } from "./uok/flags.js";
|
|
71
71
|
import { UokGateRunner } from "./uok/gate-runner.js";
|
|
72
72
|
import { writeTurnGitTransaction } from "./uok/gitops.js";
|
|
73
|
-
import { isClosedStatus } from "./status-guards.js";
|
|
74
73
|
|
|
75
74
|
/** Maximum verification retry attempts before escalating to blocker placeholder (#2653). */
|
|
76
75
|
const MAX_VERIFICATION_RETRIES = 3;
|
|
77
|
-
const COMPLETE_MILESTONE_DB_SETTLE_MS = 1500;
|
|
78
|
-
const COMPLETE_MILESTONE_DB_SETTLE_POLL_MS = 100;
|
|
79
|
-
|
|
80
|
-
async function waitForMilestoneDbClose(mid: string): Promise<boolean> {
|
|
81
|
-
const deadline = Date.now() + COMPLETE_MILESTONE_DB_SETTLE_MS;
|
|
82
|
-
while (Date.now() < deadline) {
|
|
83
|
-
if (!isDbAvailable()) return false;
|
|
84
|
-
const milestone = getMilestone(mid);
|
|
85
|
-
if (milestone && isClosedStatus(milestone.status)) return true;
|
|
86
|
-
await new Promise((resolve) => setTimeout(resolve, COMPLETE_MILESTONE_DB_SETTLE_POLL_MS));
|
|
87
|
-
}
|
|
88
|
-
return false;
|
|
89
|
-
}
|
|
90
76
|
|
|
91
77
|
|
|
92
78
|
/** Enqueue a sidecar item (hook, triage, or quick-task) for the main loop to
|
|
@@ -754,25 +740,6 @@ export async function postUnitPreVerification(pctx: PostUnitContext, opts?: PreV
|
|
|
754
740
|
|
|
755
741
|
// If verification failed, attempt to regenerate missing projection files
|
|
756
742
|
// from DB data before giving up (e.g. research-slice produces PLAN from engine).
|
|
757
|
-
if (!triggerArtifactVerified) {
|
|
758
|
-
if (s.currentUnit.type === "complete-milestone") {
|
|
759
|
-
try {
|
|
760
|
-
const { milestone: mid } = parseUnitId(s.currentUnit.id);
|
|
761
|
-
if (mid) {
|
|
762
|
-
const settled = await waitForMilestoneDbClose(mid);
|
|
763
|
-
if (settled) {
|
|
764
|
-
triggerArtifactVerified = verifyExpectedArtifact(s.currentUnit.type, s.currentUnit.id, s.basePath);
|
|
765
|
-
if (triggerArtifactVerified) {
|
|
766
|
-
invalidateAllCaches();
|
|
767
|
-
}
|
|
768
|
-
}
|
|
769
|
-
}
|
|
770
|
-
} catch (e) {
|
|
771
|
-
debugLog("postUnit", { phase: "artifact-verify-settle-db", error: String(e) });
|
|
772
|
-
}
|
|
773
|
-
}
|
|
774
|
-
}
|
|
775
|
-
|
|
776
743
|
if (!triggerArtifactVerified) {
|
|
777
744
|
try {
|
|
778
745
|
const { milestone: mid, slice: sid } = parseUnitId(s.currentUnit.id);
|
|
@@ -13,12 +13,10 @@ import { appendEvent } from "./workflow-events.js";
|
|
|
13
13
|
import { atomicWriteSync } from "./atomic-write.js";
|
|
14
14
|
import { clearParseCache } from "./files.js";
|
|
15
15
|
import { parseRoadmap as parseLegacyRoadmap, parsePlan as parseLegacyPlan } from "./parsers-legacy.js";
|
|
16
|
-
import { isDbAvailable, getTask, getSlice, getSliceTasks, getPendingGates, updateTaskStatus, updateSliceStatus, insertSlice
|
|
16
|
+
import { isDbAvailable, getTask, getSlice, getSliceTasks, getPendingGates, updateTaskStatus, updateSliceStatus, insertSlice } from "./gsd-db.js";
|
|
17
17
|
import { isValidationTerminal } from "./state.js";
|
|
18
18
|
import { getErrorMessage } from "./error-utils.js";
|
|
19
19
|
import { logWarning, logError } from "./workflow-logger.js";
|
|
20
|
-
import { splitFrontmatter, parseFrontmatterMap } from "./files.js";
|
|
21
|
-
import { isClosedStatus } from "./status-guards.js";
|
|
22
20
|
import {
|
|
23
21
|
nativeConflictFiles,
|
|
24
22
|
nativeCommit,
|
|
@@ -56,32 +54,6 @@ import {
|
|
|
56
54
|
// Re-export so existing consumers of auto-recovery.ts keep working.
|
|
57
55
|
export { resolveExpectedArtifactPath, diagnoseExpectedArtifact };
|
|
58
56
|
|
|
59
|
-
export type MilestoneSummaryOutcome = "success" | "failure" | "unknown";
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Classify milestone summary content for recovery/dispatch decisions.
|
|
63
|
-
* - success: canonical completion summary (frontmatter status is closed)
|
|
64
|
-
* - failure: explicit blocker/failure markers
|
|
65
|
-
* - unknown: ambiguous content
|
|
66
|
-
*/
|
|
67
|
-
export function classifyMilestoneSummaryContent(content: string): MilestoneSummaryOutcome {
|
|
68
|
-
const [fmLines] = splitFrontmatter(content);
|
|
69
|
-
const fm = fmLines ? parseFrontmatterMap(fmLines) : null;
|
|
70
|
-
const rawStatus = typeof fm?.status === "string" ? fm.status.trim().toLowerCase() : "";
|
|
71
|
-
if (rawStatus) {
|
|
72
|
-
if (isClosedStatus(rawStatus)) return "success";
|
|
73
|
-
if (["active", "pending", "blocked", "failed", "incomplete"].includes(rawStatus)) return "failure";
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
const failureSignal =
|
|
77
|
-
/(?:^|\n)\s*#\s*BLOCKER\b/i.test(content)
|
|
78
|
-
|| /auto-mode recovery failed/i.test(content)
|
|
79
|
-
|| /verification\s+failed/i.test(content)
|
|
80
|
-
|| /\bnot complete\b/i.test(content);
|
|
81
|
-
if (failureSignal) return "failure";
|
|
82
|
-
return "unknown";
|
|
83
|
-
}
|
|
84
|
-
|
|
85
57
|
// ─── Artifact Resolution & Verification ───────────────────────────────────────
|
|
86
58
|
|
|
87
59
|
/**
|
|
@@ -505,14 +477,6 @@ export function verifyExpectedArtifact(
|
|
|
505
477
|
// A milestone with only .gsd/ plan files and zero implementation code is
|
|
506
478
|
// not genuinely complete — the LLM wrote plan files but skipped actual work.
|
|
507
479
|
if (unitType === "complete-milestone") {
|
|
508
|
-
const summaryOutcome = classifyMilestoneSummaryContent(readFileSync(absPath, "utf-8"));
|
|
509
|
-
if (summaryOutcome === "failure") return false;
|
|
510
|
-
const { milestone: mid } = parseUnitId(unitId);
|
|
511
|
-
if (mid && isDbAvailable()) {
|
|
512
|
-
const dbMilestone = getMilestone(mid);
|
|
513
|
-
if (!dbMilestone) return false;
|
|
514
|
-
if (!isClosedStatus(dbMilestone.status) && summaryOutcome !== "success") return false;
|
|
515
|
-
}
|
|
516
480
|
if (hasImplementationArtifacts(base) === "absent") return false;
|
|
517
481
|
}
|
|
518
482
|
|
|
@@ -61,7 +61,6 @@ import { restoreHookState, resetHookState } from "./post-unit-hooks.js";
|
|
|
61
61
|
import { resetProactiveHealing, setLevelChangeCallback } from "./doctor-proactive.js";
|
|
62
62
|
import { snapshotSkills } from "./skill-discovery.js";
|
|
63
63
|
import { isDbAvailable, getMilestone, openDatabase, getDbStatus } from "./gsd-db.js";
|
|
64
|
-
import { isClosedStatus } from "./status-guards.js";
|
|
65
64
|
|
|
66
65
|
import {
|
|
67
66
|
debugLog,
|
|
@@ -420,29 +419,16 @@ export async function bootstrapAutoSession(
|
|
|
420
419
|
// Invalidate caches before initial state derivation
|
|
421
420
|
invalidateAllCaches();
|
|
422
421
|
|
|
423
|
-
//
|
|
424
|
-
// derivation (queue-order, task status) works on a cold start (#2841).
|
|
425
|
-
// Must happen before cleanStaleRuntimeUnits so the cleanup predicate can
|
|
426
|
-
// consult DB status and avoid clearing runtime units for milestones that
|
|
427
|
-
// only have a failure-path SUMMARY on disk (#4663).
|
|
428
|
-
await openProjectDbIfPresent(base);
|
|
429
|
-
|
|
430
|
-
// Clean stale runtime unit files for completed milestones (#887).
|
|
431
|
-
// DB-authoritative: when DB is available, require DB status to be closed
|
|
432
|
-
// before clearing runtime units. A SUMMARY file alone is no longer
|
|
433
|
-
// trusted as proof of completion (#4663). Fall back to SUMMARY-file
|
|
434
|
-
// presence only when DB is unavailable (legacy/pre-migration).
|
|
422
|
+
// Clean stale runtime unit files for completed milestones (#887)
|
|
435
423
|
cleanStaleRuntimeUnits(
|
|
436
424
|
gsdRoot(base),
|
|
437
|
-
(mid) =>
|
|
438
|
-
if (isDbAvailable()) {
|
|
439
|
-
const row = getMilestone(mid);
|
|
440
|
-
return !!row && isClosedStatus(row.status);
|
|
441
|
-
}
|
|
442
|
-
return !!resolveMilestoneFile(base, mid, "SUMMARY");
|
|
443
|
-
},
|
|
425
|
+
(mid) => !!resolveMilestoneFile(base, mid, "SUMMARY"),
|
|
444
426
|
);
|
|
445
427
|
|
|
428
|
+
// Open the project-root DB before deriveState so DB-backed state
|
|
429
|
+
// derivation (queue-order, task status) works on a cold start (#2841).
|
|
430
|
+
await openProjectDbIfPresent(base);
|
|
431
|
+
|
|
446
432
|
// ── Orphaned milestone branch audit ──
|
|
447
433
|
// Catches completed milestones whose teardown (merge + branch delete)
|
|
448
434
|
// was lost due to session ending between completion and teardown.
|
|
@@ -3,30 +3,11 @@
|
|
|
3
3
|
import { resolveMilestoneFile } from "./paths.js";
|
|
4
4
|
import { findMilestoneIds } from "./guided-flow.js";
|
|
5
5
|
import { parseUnitId } from "./unit-id.js";
|
|
6
|
-
import { isDbAvailable, getMilestoneSlices
|
|
6
|
+
import { isDbAvailable, getMilestoneSlices } from "./gsd-db.js";
|
|
7
7
|
import { parseRoadmap } from "./parsers-legacy.js";
|
|
8
8
|
import { isClosedStatus } from "./status-guards.js";
|
|
9
9
|
import { readFileSync } from "node:fs";
|
|
10
10
|
|
|
11
|
-
/**
|
|
12
|
-
* Detect failure-path milestone SUMMARY content (#4663 sibling to #4658).
|
|
13
|
-
* A failure SUMMARY must not let the dispatch guard treat an active
|
|
14
|
-
* milestone as complete. The markers mirror those produced by
|
|
15
|
-
* writeBlockerPlaceholder and the "verification FAILED" retry path.
|
|
16
|
-
*
|
|
17
|
-
* This is intentionally a minimal local detector so this fix does not
|
|
18
|
-
* depend on PR #4660's `classifyMilestoneSummaryContent`. It can migrate
|
|
19
|
-
* to the shared classifier once that lands.
|
|
20
|
-
*/
|
|
21
|
-
function isFailureMilestoneSummary(content: string): boolean {
|
|
22
|
-
return (
|
|
23
|
-
/(?:^|\n)\s*#\s*BLOCKER\b/i.test(content) ||
|
|
24
|
-
/auto-mode recovery failed/i.test(content) ||
|
|
25
|
-
/verification\s+failed/i.test(content) ||
|
|
26
|
-
/\bnot complete\b/i.test(content)
|
|
27
|
-
);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
11
|
const SLICE_DISPATCH_TYPES = new Set([
|
|
31
12
|
"research-slice",
|
|
32
13
|
"plan-slice",
|
|
@@ -66,30 +47,7 @@ export function getPriorSliceCompletionBlocker(
|
|
|
66
47
|
|
|
67
48
|
for (const mid of milestoneIds) {
|
|
68
49
|
if (resolveMilestoneFile(base, mid, "PARKED")) continue;
|
|
69
|
-
|
|
70
|
-
// DB/SUMMARY completion check (#4663 sibling to #4658).
|
|
71
|
-
// Prior behavior treated any SUMMARY file on disk as proof of milestone
|
|
72
|
-
// completion, which is wrong when the SUMMARY is a failure-path report
|
|
73
|
-
// (verification FAILED, blocker placeholder, etc.). Resolve as follows:
|
|
74
|
-
// 1. When DB is available and status is closed → skip (authoritative).
|
|
75
|
-
// 2. When SUMMARY exists but looks like a failure/blocker report →
|
|
76
|
-
// do not short-circuit; fall through to the slice-level check so
|
|
77
|
-
// the guard can still block dependents of an active milestone.
|
|
78
|
-
// 3. Otherwise (SUMMARY without failure markers) → skip. Preserves
|
|
79
|
-
// the #1716 contract where a completed milestone with unchecked
|
|
80
|
-
// remediation slices is still treated as done.
|
|
81
|
-
const summaryPath = resolveMilestoneFile(base, mid, "SUMMARY");
|
|
82
|
-
if (isDbAvailable()) {
|
|
83
|
-
const milestoneRow = getMilestone(mid);
|
|
84
|
-
if (milestoneRow && isClosedStatus(milestoneRow.status)) continue;
|
|
85
|
-
}
|
|
86
|
-
if (summaryPath) {
|
|
87
|
-
let summaryContent: string | null = null;
|
|
88
|
-
try { summaryContent = readFileSync(summaryPath, "utf-8"); } catch { /* ignore */ }
|
|
89
|
-
if (!summaryContent || !isFailureMilestoneSummary(summaryContent)) {
|
|
90
|
-
continue;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
50
|
+
if (resolveMilestoneFile(base, mid, "SUMMARY")) continue;
|
|
93
51
|
|
|
94
52
|
// Normalised slice list from DB or file fallback
|
|
95
53
|
type NormSlice = { id: string; done: boolean; depends: string[] };
|
|
@@ -286,7 +286,7 @@ export function checkAutoStartAfterDiscuss(): boolean {
|
|
|
286
286
|
}
|
|
287
287
|
|
|
288
288
|
pendingAutoStartMap.delete(basePath);
|
|
289
|
-
ctx.ui.notify(`Milestone ${milestoneId} ready.`, "
|
|
289
|
+
ctx.ui.notify(`Milestone ${milestoneId} ready.`, "success");
|
|
290
290
|
startAutoDetached(ctx, pi, basePath, false, { step });
|
|
291
291
|
return true;
|
|
292
292
|
}
|
|
@@ -213,7 +213,6 @@ Fix the root cause, not symptoms. When applying a temporary mitigation, label it
|
|
|
213
213
|
- State uncertainty plainly: "Not sure this handles X - testing it." No performed confidence, no hedging paragraphs.
|
|
214
214
|
- All user-visible narration must be grammatical English. Do not emit compressed planner notes like "Need inspect X" or "Maybe read Y first". If it would look acceptable in a commit comment or standup note, it's acceptable here.
|
|
215
215
|
- When debugging, stay curious. Problems are puzzles. Say what's interesting about the failure before reaching for fixes.
|
|
216
|
-
- After completing a task, give a brief completion summary and present 2-4 contextual next-step options as a numbered list (the last option is always "Other"). This reduces cognitive load by letting the user pick rather than formulate what's next. Omit the numbered list when the response must follow a strict output format (JSON, patches, commit messages, structured data).
|
|
217
216
|
|
|
218
217
|
Good narration: "Three existing handlers follow a middleware pattern - using that instead of a custom wrapper."
|
|
219
218
|
Good narration: "Tests pass. Running slice-level verification."
|