@opengsd/gsd-pi 1.2.0-dev.0b870afa → 1.2.0-dev.23d85b63
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli-model-override.d.ts +15 -0
- package/dist/cli-model-override.js +21 -0
- package/dist/cli.js +14 -19
- package/dist/headless-events.d.ts +16 -1
- package/dist/headless-events.js +19 -2
- package/dist/headless.js +8 -1
- package/dist/loader.js +6 -4
- package/dist/onboarding.js +9 -4
- package/dist/provider-migrations.d.ts +23 -0
- package/dist/provider-migrations.js +41 -0
- package/dist/register-agent-bundles.d.ts +11 -2
- package/dist/register-agent-bundles.js +18 -4
- package/dist/resource-loader.d.ts +10 -5
- package/dist/resource-loader.js +121 -6
- package/dist/resources/.managed-resources-content-hash +1 -1
- package/dist/resources/extensions/ask-user-questions.js +3 -2
- package/dist/resources/extensions/claude-code-cli/stream-adapter.js +447 -215
- package/dist/resources/extensions/claude-code-cli/turn-assembler.js +33 -1
- package/dist/resources/extensions/google-cli/stream-adapter.js +16 -1
- package/dist/resources/extensions/gsd/auto/closeout.js +215 -0
- package/dist/resources/extensions/gsd/auto/dispatch-history.js +21 -6
- package/dist/resources/extensions/gsd/auto/dispatch.js +365 -0
- package/dist/resources/extensions/gsd/auto/finalize.js +347 -0
- package/dist/resources/extensions/gsd/auto/loop.js +4 -1
- package/dist/resources/extensions/gsd/auto/milestone-lease-reclaim.js +56 -0
- package/dist/resources/extensions/gsd/auto/orchestrator.js +119 -18
- package/dist/resources/extensions/gsd/auto/phase-helpers.js +146 -0
- package/dist/resources/extensions/gsd/auto/phases.js +17 -2372
- package/dist/resources/extensions/gsd/auto/pre-dispatch.js +542 -0
- package/dist/resources/extensions/gsd/auto/unit-phase.js +694 -0
- package/dist/resources/extensions/gsd/auto/workflow-unit-dispatch.js +1 -1
- package/dist/resources/extensions/gsd/auto/worktree-safety-phase.js +125 -0
- package/dist/resources/extensions/gsd/auto-closeout-messaging.js +90 -0
- package/dist/resources/extensions/gsd/auto-dashboard.js +255 -431
- package/dist/resources/extensions/gsd/auto-direct-dispatch.js +15 -3
- package/dist/resources/extensions/gsd/auto-dispatch.js +19 -1
- package/dist/resources/extensions/gsd/auto-model-selection.js +9 -6
- package/dist/resources/extensions/gsd/auto-post-unit.js +12 -8
- package/dist/resources/extensions/gsd/auto-prompts.js +5 -1
- package/dist/resources/extensions/gsd/auto-recovery.js +52 -6
- package/dist/resources/extensions/gsd/auto-start.js +28 -7
- package/dist/resources/extensions/gsd/auto-worktree.js +48 -3
- package/dist/resources/extensions/gsd/auto.js +83 -19
- package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +4 -2
- package/dist/resources/extensions/gsd/bootstrap/dynamic-tools.js +37 -7
- package/dist/resources/extensions/gsd/bootstrap/register-extension.js +3 -1
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +32 -3
- package/dist/resources/extensions/gsd/bootstrap/write-gate.js +56 -16
- package/dist/resources/extensions/gsd/closeout-wizard.js +8 -3
- package/dist/resources/extensions/gsd/commands/handlers/core.js +22 -8
- package/dist/resources/extensions/gsd/commands/handlers/ops.js +2 -2
- package/dist/resources/extensions/gsd/commands-mcp-status.js +2 -2
- package/dist/resources/extensions/gsd/commands-prefs-wizard.js +8 -0
- package/dist/resources/extensions/gsd/commands-workflow-templates.js +9 -2
- package/dist/resources/extensions/gsd/config-overlay.js +11 -8
- package/dist/resources/extensions/gsd/db/engine.js +24 -6
- package/dist/resources/extensions/gsd/db/queries.js +30 -0
- package/dist/resources/extensions/gsd/db/writers/reconcile.js +19 -1
- package/dist/resources/extensions/gsd/db-migration-backup.js +51 -8
- package/dist/resources/extensions/gsd/db-transaction.js +27 -23
- package/dist/resources/extensions/gsd/db-writer.js +8 -17
- package/dist/resources/extensions/gsd/doctor-environment.js +256 -125
- package/dist/resources/extensions/gsd/doctor-git-checks.js +5 -1
- package/dist/resources/extensions/gsd/doctor-providers.js +1 -1
- package/dist/resources/extensions/gsd/doctor-runtime-checks.js +11 -9
- package/dist/resources/extensions/gsd/gsd-db.js +15 -20
- package/dist/resources/extensions/gsd/guided-flow.js +88 -2
- package/dist/resources/extensions/gsd/health-widget.js +87 -28
- package/dist/resources/extensions/gsd/mcp-bridge.js +10 -0
- package/dist/resources/extensions/gsd/memory-relations.js +1 -1
- package/dist/resources/extensions/gsd/milestone-settlement.js +2 -2
- package/dist/resources/extensions/gsd/notifications.js +12 -7
- package/dist/resources/extensions/gsd/preferences-models.js +17 -9
- package/dist/resources/extensions/gsd/preferences.js +91 -5
- package/dist/resources/extensions/gsd/prompts/complete-milestone.md +8 -2
- package/dist/resources/extensions/gsd/prompts/complete-slice.md +6 -2
- package/dist/resources/extensions/gsd/prompts/execute-task.md +7 -2
- package/dist/resources/extensions/gsd/prompts/quick-task.md +1 -1
- package/dist/resources/extensions/gsd/prompts/reactive-execute.md +2 -2
- package/dist/resources/extensions/gsd/prompts/run-uat.md +7 -1
- package/dist/resources/extensions/gsd/prompts/triage-captures.md +1 -1
- package/dist/resources/extensions/gsd/prompts/workflow-start.md +2 -1
- package/dist/resources/extensions/gsd/provider-error-guidance.js +24 -0
- package/dist/resources/extensions/gsd/session-lock.js +4 -3
- package/dist/resources/extensions/gsd/skill-activation.js +3 -6
- package/dist/resources/extensions/gsd/state-reconciliation/drift/artifact-db.js +13 -6
- package/dist/resources/extensions/gsd/state.js +6 -2
- package/dist/resources/extensions/gsd/tool-surface-readiness.js +83 -31
- package/dist/resources/extensions/gsd/tools/complete-task.js +62 -0
- package/dist/resources/extensions/gsd/tools/exec-tool.js +2 -109
- package/dist/resources/extensions/gsd/tui/render-kit.js +38 -13
- package/dist/resources/extensions/gsd/unit-context-composer.js +1 -1
- package/dist/resources/extensions/gsd/unit-registry.js +34 -4
- package/dist/resources/extensions/gsd/workflow-logger.js +4 -0
- package/dist/resources/extensions/gsd/workflow-mcp-auto-prep.js +2 -0
- package/dist/resources/extensions/gsd/workflow-mcp-readiness-cache.js +105 -0
- package/dist/resources/extensions/gsd/worktree-manager.js +101 -2
- package/dist/resources/extensions/gsd/worktree-safety.js +28 -26
- package/dist/resources/extensions/gsd/worktree-shell-guard.js +113 -0
- package/dist/resources/extensions/gsd/worktree.js +8 -1
- package/dist/resources/extensions/mcp-client/manager.js +6 -1
- package/dist/resources/extensions/search-the-web/index.js +41 -9
- package/dist/resources/extensions/search-the-web/native-search.js +18 -4
- package/dist/resources/extensions/shared/gsd-browser-cli.js +40 -2
- package/dist/resources/extensions/subagent/index.js +20 -15
- package/dist/resources/extensions/subagent/worktree-cwd.js +31 -0
- package/dist/resources/skills/create-skill/SKILL.md +3 -0
- package/dist/resources/skills/create-skill/references/skill-structure.md +1 -0
- package/dist/runtime-checks.d.ts +10 -0
- package/dist/runtime-checks.js +27 -0
- package/dist/tsconfig.extensions.tsbuildinfo +1 -1
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +10 -10
- package/dist/web/standalone/.next/build-manifest.json +2 -2
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/api/boot/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/captures/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/cleanup/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/doctor/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/export-data/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/forensics/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/history/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/hooks/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/inspect/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/knowledge/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/live-state/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/mcp-connections/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/onboarding/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/recovery/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/session/browser/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/session/command/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/session/events/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/session/manage/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/settings-data/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/shutdown/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/skill-health/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/steer/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/switch-root/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/undo/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +10 -10
- package/dist/web/standalone/.next/server/chunks/{5942.js → 1128.js} +1 -1
- package/dist/web/standalone/.next/server/chunks/8357.js +1 -1
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/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/node_modules/node-pty/build/Makefile +1 -1
- package/package.json +4 -4
- package/packages/cloud-mcp-gateway/package.json +2 -2
- package/packages/contracts/package.json +1 -1
- package/packages/daemon/package.json +4 -4
- package/packages/gsd-agent-core/dist/sdk.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/sdk.js +12 -6
- package/packages/gsd-agent-core/dist/sdk.js.map +1 -1
- package/packages/gsd-agent-core/package.json +5 -5
- package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.d.ts +5 -5
- package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.js +12 -24
- package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.js +5 -5
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.d.ts +3 -3
- package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.js +20 -11
- package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-turn-connect.d.ts +4 -3
- package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-turn-connect.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-turn-connect.js +5 -54
- package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-turn-connect.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.d.ts +2 -4
- package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.js +2 -4
- package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.d.ts +2 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.js +4 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.d.ts +9 -12
- package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.js +100 -166
- package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/gsd-progress-state.d.ts +2 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/gsd-progress-state.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/gsd-progress-state.js +4 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/gsd-progress-state.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/gsd-status-widget.d.ts +23 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/gsd-status-widget.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/gsd-status-widget.js +178 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/gsd-status-widget.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.d.ts +8 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.js +21 -9
- package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.d.ts +2 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.js +10 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.d.ts +2 -3
- package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.js +2 -3
- package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts +11 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js +85 -19
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.d.ts +71 -3
- package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.js +257 -37
- package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.d.ts +3 -3
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.js +19 -19
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts +3 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js +26 -10
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.js +12 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.js +5 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-autocomplete.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-autocomplete.js +3 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-chat-render.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-chat-render.js +3 -5
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-chat-render.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-dialogs.js +2 -2
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-widgets.d.ts +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-widgets.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-widgets.js +25 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-widgets.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-key-handlers.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-key-handlers.js +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-key-handlers.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-init.d.ts +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-init.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-init.js +20 -49
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-init.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.d.ts +4 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts +10 -2
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js +48 -6
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-settings.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-settings.js +4 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-settings.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-ui-messaging.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-ui-messaging.js +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-ui-messaging.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js +3 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/packages/gsd-agent-modes/package.json +7 -7
- package/packages/mcp-server/README.md +12 -3
- package/packages/mcp-server/dist/cli-runner.d.ts +40 -0
- package/packages/mcp-server/dist/cli-runner.d.ts.map +1 -0
- package/packages/mcp-server/dist/cli-runner.js +137 -0
- package/packages/mcp-server/dist/cli-runner.js.map +1 -0
- package/packages/mcp-server/dist/cli.js +2 -58
- package/packages/mcp-server/dist/cli.js.map +1 -1
- package/packages/mcp-server/dist/pid-registry.d.ts +46 -0
- package/packages/mcp-server/dist/pid-registry.d.ts.map +1 -0
- package/packages/mcp-server/dist/pid-registry.js +459 -0
- package/packages/mcp-server/dist/pid-registry.js.map +1 -0
- package/packages/mcp-server/dist/probe-mode.d.ts +4 -0
- package/packages/mcp-server/dist/probe-mode.d.ts.map +1 -0
- package/packages/mcp-server/dist/probe-mode.js +10 -0
- package/packages/mcp-server/dist/probe-mode.js.map +1 -0
- package/packages/mcp-server/dist/stdio-watchdog.d.ts +8 -0
- package/packages/mcp-server/dist/stdio-watchdog.d.ts.map +1 -0
- package/packages/mcp-server/dist/stdio-watchdog.js +40 -0
- package/packages/mcp-server/dist/stdio-watchdog.js.map +1 -0
- package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.js +62 -43
- package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
- package/packages/mcp-server/package.json +5 -5
- package/packages/native/package.json +1 -1
- package/packages/pi-agent-core/dist/agent-loop.js +52 -2
- package/packages/pi-agent-core/dist/agent-loop.js.map +1 -1
- package/packages/pi-agent-core/package.json +1 -1
- package/packages/pi-ai/package.json +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/extension-upstream-types.d.ts +28 -2
- package/packages/pi-coding-agent/dist/core/extensions/extension-upstream-types.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/extension-upstream-types.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.d.ts +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts +5 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.js +3 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +3 -0
- package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/settings-manager.js +11 -0
- package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
- package/packages/pi-coding-agent/dist/index.d.ts +1 -1
- package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/index.js.map +1 -1
- package/packages/pi-coding-agent/dist/theme/theme.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/theme/theme.js +45 -17
- package/packages/pi-coding-agent/dist/theme/theme.js.map +1 -1
- package/packages/pi-coding-agent/package.json +8 -8
- package/packages/pi-tui/README.md +15 -0
- package/packages/pi-tui/dist/autocomplete.d.ts.map +1 -1
- package/packages/pi-tui/dist/autocomplete.js +6 -1
- package/packages/pi-tui/dist/autocomplete.js.map +1 -1
- package/packages/pi-tui/dist/components/input.js +1 -1
- package/packages/pi-tui/dist/components/input.js.map +1 -1
- package/packages/pi-tui/dist/components/loader.d.ts.map +1 -1
- package/packages/pi-tui/dist/components/loader.js +1 -0
- package/packages/pi-tui/dist/components/loader.js.map +1 -1
- package/packages/pi-tui/dist/components/select-list.d.ts.map +1 -1
- package/packages/pi-tui/dist/components/select-list.js +8 -2
- package/packages/pi-tui/dist/components/select-list.js.map +1 -1
- package/packages/pi-tui/dist/index.d.ts +2 -2
- package/packages/pi-tui/dist/index.d.ts.map +1 -1
- package/packages/pi-tui/dist/index.js +2 -2
- package/packages/pi-tui/dist/index.js.map +1 -1
- package/packages/pi-tui/dist/terminal-image.d.ts +33 -0
- package/packages/pi-tui/dist/terminal-image.d.ts.map +1 -1
- package/packages/pi-tui/dist/terminal-image.js +54 -2
- package/packages/pi-tui/dist/terminal-image.js.map +1 -1
- package/packages/pi-tui/dist/terminal.d.ts +12 -0
- package/packages/pi-tui/dist/terminal.d.ts.map +1 -1
- package/packages/pi-tui/dist/terminal.js +70 -25
- package/packages/pi-tui/dist/terminal.js.map +1 -1
- package/packages/pi-tui/dist/tui.d.ts +15 -0
- package/packages/pi-tui/dist/tui.d.ts.map +1 -1
- package/packages/pi-tui/dist/tui.js +106 -21
- package/packages/pi-tui/dist/tui.js.map +1 -1
- package/packages/pi-tui/dist/utils.d.ts.map +1 -1
- package/packages/pi-tui/dist/utils.js +110 -36
- package/packages/pi-tui/dist/utils.js.map +1 -1
- package/packages/pi-tui/package.json +2 -2
- package/packages/rpc-client/package.json +2 -2
- package/pkg/dist/theme/theme.d.ts.map +1 -1
- package/pkg/dist/theme/theme.js +45 -17
- package/pkg/dist/theme/theme.js.map +1 -1
- package/pkg/package.json +1 -1
- package/src/resources/extensions/ask-user-questions.ts +7 -2
- package/src/resources/extensions/browser-tools/tests/gsd-browser-launch-config.test.mjs +80 -0
- package/src/resources/extensions/claude-code-cli/stream-adapter.ts +531 -226
- package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +672 -7
- package/src/resources/extensions/claude-code-cli/turn-assembler.ts +38 -1
- package/src/resources/extensions/google-cli/stream-adapter.ts +22 -1
- package/src/resources/extensions/gsd/auto/closeout.ts +309 -0
- package/src/resources/extensions/gsd/auto/dispatch-history.ts +22 -6
- package/src/resources/extensions/gsd/auto/dispatch.ts +449 -0
- package/src/resources/extensions/gsd/auto/finalize.ts +445 -0
- package/src/resources/extensions/gsd/auto/loop.ts +4 -1
- package/src/resources/extensions/gsd/auto/milestone-lease-reclaim.ts +74 -0
- package/src/resources/extensions/gsd/auto/orchestrator.ts +140 -18
- package/src/resources/extensions/gsd/auto/phase-helpers.ts +199 -0
- package/src/resources/extensions/gsd/auto/phases.ts +58 -3061
- package/src/resources/extensions/gsd/auto/pre-dispatch.ts +716 -0
- package/src/resources/extensions/gsd/auto/unit-phase.ts +910 -0
- package/src/resources/extensions/gsd/auto/workflow-unit-dispatch.ts +1 -1
- package/src/resources/extensions/gsd/auto/worktree-safety-phase.ts +149 -0
- package/src/resources/extensions/gsd/auto-closeout-messaging.ts +90 -0
- package/src/resources/extensions/gsd/auto-dashboard.ts +310 -454
- package/src/resources/extensions/gsd/auto-direct-dispatch.ts +15 -2
- package/src/resources/extensions/gsd/auto-dispatch.ts +24 -2
- package/src/resources/extensions/gsd/auto-model-selection.ts +20 -5
- package/src/resources/extensions/gsd/auto-post-unit.ts +16 -9
- package/src/resources/extensions/gsd/auto-prompts.ts +5 -1
- package/src/resources/extensions/gsd/auto-recovery.ts +62 -8
- package/src/resources/extensions/gsd/auto-start.ts +44 -7
- package/src/resources/extensions/gsd/auto-worktree.ts +51 -3
- package/src/resources/extensions/gsd/auto.ts +118 -18
- package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +6 -2
- package/src/resources/extensions/gsd/bootstrap/dynamic-tools.ts +56 -6
- package/src/resources/extensions/gsd/bootstrap/register-extension.ts +2 -1
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +36 -3
- package/src/resources/extensions/gsd/bootstrap/write-gate.ts +69 -16
- package/src/resources/extensions/gsd/closeout-wizard.ts +11 -2
- package/src/resources/extensions/gsd/commands/handlers/core.ts +27 -8
- package/src/resources/extensions/gsd/commands/handlers/ops.ts +5 -2
- package/src/resources/extensions/gsd/commands-mcp-status.ts +2 -2
- package/src/resources/extensions/gsd/commands-prefs-wizard.ts +7 -0
- package/src/resources/extensions/gsd/commands-workflow-templates.ts +11 -4
- package/src/resources/extensions/gsd/config-overlay.ts +22 -9
- package/src/resources/extensions/gsd/db/engine.ts +26 -6
- package/src/resources/extensions/gsd/db/queries.ts +29 -0
- package/src/resources/extensions/gsd/db/writers/reconcile.ts +24 -1
- package/src/resources/extensions/gsd/db-migration-backup.ts +56 -7
- package/src/resources/extensions/gsd/db-transaction.ts +37 -20
- package/src/resources/extensions/gsd/db-writer.ts +11 -19
- package/src/resources/extensions/gsd/doctor-environment.ts +267 -142
- package/src/resources/extensions/gsd/doctor-git-checks.ts +4 -1
- package/src/resources/extensions/gsd/doctor-providers.ts +1 -1
- package/src/resources/extensions/gsd/doctor-runtime-checks.ts +10 -10
- package/src/resources/extensions/gsd/gsd-db.ts +15 -19
- package/src/resources/extensions/gsd/guided-flow.ts +128 -2
- package/src/resources/extensions/gsd/health-widget.ts +91 -27
- package/src/resources/extensions/gsd/mcp-bridge.ts +39 -0
- package/src/resources/extensions/gsd/memory-relations.ts +1 -1
- package/src/resources/extensions/gsd/milestone-settlement.ts +2 -2
- package/src/resources/extensions/gsd/notifications.ts +13 -6
- package/src/resources/extensions/gsd/preferences-models.ts +26 -8
- package/src/resources/extensions/gsd/preferences.ts +111 -5
- package/src/resources/extensions/gsd/prompts/complete-milestone.md +8 -2
- package/src/resources/extensions/gsd/prompts/complete-slice.md +6 -2
- package/src/resources/extensions/gsd/prompts/execute-task.md +7 -2
- package/src/resources/extensions/gsd/prompts/quick-task.md +1 -1
- package/src/resources/extensions/gsd/prompts/reactive-execute.md +2 -2
- package/src/resources/extensions/gsd/prompts/run-uat.md +7 -1
- package/src/resources/extensions/gsd/prompts/triage-captures.md +1 -1
- package/src/resources/extensions/gsd/prompts/workflow-start.md +2 -1
- package/src/resources/extensions/gsd/provider-error-guidance.ts +32 -0
- package/src/resources/extensions/gsd/session-lock.ts +8 -7
- package/src/resources/extensions/gsd/skill-activation.ts +3 -6
- package/src/resources/extensions/gsd/state-reconciliation/drift/artifact-db.ts +23 -10
- package/src/resources/extensions/gsd/state.ts +7 -1
- package/src/resources/extensions/gsd/tests/auto-abort-pause-regression.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/auto-blocked-remediation-message.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/auto-closeout-messaging.test.ts +71 -0
- package/src/resources/extensions/gsd/tests/auto-dashboard.test.ts +68 -116
- package/src/resources/extensions/gsd/tests/auto-direct-dispatch-parse.test.ts +33 -0
- package/src/resources/extensions/gsd/tests/auto-loop.test.ts +206 -22
- package/src/resources/extensions/gsd/tests/auto-model-selection-tool-poisoning.test.ts +7 -2
- package/src/resources/extensions/gsd/tests/auto-model-selection.test.ts +16 -1
- package/src/resources/extensions/gsd/tests/auto-orchestrator.test.ts +89 -22
- package/src/resources/extensions/gsd/tests/auto-pause-double-entry-guard.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/auto-paused-ui-cleanup.test.ts +97 -4
- package/src/resources/extensions/gsd/tests/auto-phases-lifecycle.test.ts +2 -1
- package/src/resources/extensions/gsd/tests/auto-start-orphan-bootstrap.test.ts +236 -0
- package/src/resources/extensions/gsd/tests/auto-unit-closeout.test.ts +169 -1
- package/src/resources/extensions/gsd/tests/auto-verification.test.ts +36 -0
- package/src/resources/extensions/gsd/tests/blocker-placeholder-logs.test.ts +218 -0
- package/src/resources/extensions/gsd/tests/complete-milestone-prompt-rendering.test.ts +6 -2
- package/src/resources/extensions/gsd/tests/complete-task.test.ts +141 -5
- package/src/resources/extensions/gsd/tests/core-overlay-fallback.test.ts +1 -0
- package/src/resources/extensions/gsd/tests/db-engine-logs.test.ts +207 -0
- package/src/resources/extensions/gsd/tests/db-migration-backup.test.ts +68 -19
- package/src/resources/extensions/gsd/tests/db-transaction.test.ts +59 -0
- package/src/resources/extensions/gsd/tests/db-writer.test.ts +15 -4
- package/src/resources/extensions/gsd/tests/deep-project-auto-loop.test.ts +2 -1
- package/src/resources/extensions/gsd/tests/derive-state-helpers.test.ts +62 -0
- package/src/resources/extensions/gsd/tests/discuss-routing-fixes.test.ts +12 -2
- package/src/resources/extensions/gsd/tests/dispatch-db-degradation-logs.test.ts +98 -0
- package/src/resources/extensions/gsd/tests/dispatch-history.test.ts +55 -0
- package/src/resources/extensions/gsd/tests/dispatch-logs.test.ts +103 -0
- package/src/resources/extensions/gsd/tests/dispatch-reactive-logs.test.ts +98 -0
- package/src/resources/extensions/gsd/tests/dist-redirect.mjs +8 -0
- package/src/resources/extensions/gsd/tests/doctor-providers.test.ts +6 -4
- package/src/resources/extensions/gsd/tests/engine-interfaces-contract.test.ts +117 -91
- package/src/resources/extensions/gsd/tests/ensure-db-open.test.ts +113 -0
- package/src/resources/extensions/gsd/tests/flat-rate-routing-guard.test.ts +2 -1
- package/src/resources/extensions/gsd/tests/gsd-command-home.test.ts +40 -7
- package/src/resources/extensions/gsd/tests/gsd-db.test.ts +19 -0
- package/src/resources/extensions/gsd/tests/guided-dispatch-root.test.ts +16 -0
- package/src/resources/extensions/gsd/tests/integration/auto-worktree-milestone-merge.test.ts +75 -0
- package/src/resources/extensions/gsd/tests/integration/auto-worktree.test.ts +15 -0
- package/src/resources/extensions/gsd/tests/integration/doctor-environment-async.test.ts +104 -0
- package/src/resources/extensions/gsd/tests/integration/run-uat.test.ts +18 -0
- package/src/resources/extensions/gsd/tests/interactive-routing-bypass.test.ts +1 -0
- package/src/resources/extensions/gsd/tests/journal-integration.test.ts +47 -16
- package/src/resources/extensions/gsd/tests/loop.test.ts +60 -0
- package/src/resources/extensions/gsd/tests/mcp-readiness-preflight.test.ts +205 -0
- package/src/resources/extensions/gsd/tests/mcp-status.test.ts +6 -5
- package/src/resources/extensions/gsd/tests/milestone-merge-stash-restore.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/milestone-report-path.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/milestone-settlement.test.ts +92 -0
- package/src/resources/extensions/gsd/tests/milestone-transition-state-rebuild.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/model-router.test.ts +139 -0
- package/src/resources/extensions/gsd/tests/notifications.test.ts +64 -9
- package/src/resources/extensions/gsd/tests/oauth-api-model-routing.test.ts +13 -1
- package/src/resources/extensions/gsd/tests/orchestrator-legacy-parity.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/orchestrator-logs.test.ts +335 -0
- package/src/resources/extensions/gsd/tests/parallel-skill-prompt-integration.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/parsers-legacy-importers.test.ts +5 -0
- package/src/resources/extensions/gsd/tests/phases-merge-error-stops-auto.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/phases-terminal-complete-idempotent.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/plan-gate-failed-doctor-heal-hint.test.ts +3 -3
- package/src/resources/extensions/gsd/tests/prefs-missing-models-crash.test.ts +35 -4
- package/src/resources/extensions/gsd/tests/progress-strip-test-helpers.ts +79 -0
- package/src/resources/extensions/gsd/tests/prompt-budget-enforcement.test.ts +2 -0
- package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +11 -2
- package/src/resources/extensions/gsd/tests/provider-error-guidance.test.ts +15 -0
- package/src/resources/extensions/gsd/tests/provider-errors.test.ts +2 -4
- package/src/resources/extensions/gsd/tests/reconcile-logs.test.ts +244 -0
- package/src/resources/extensions/gsd/tests/recovery-finalize-logs.test.ts +119 -0
- package/src/resources/extensions/gsd/tests/recovery-verify-logs.test.ts +428 -0
- package/src/resources/extensions/gsd/tests/register-extension-guard.test.ts +25 -0
- package/src/resources/extensions/gsd/tests/remote-notification-from-desktop.test.ts +31 -81
- package/src/resources/extensions/gsd/tests/resume-missing-worktree-warning.test.ts +5 -5
- package/src/resources/extensions/gsd/tests/runtime-invariant-modules.test.ts +7 -1
- package/src/resources/extensions/gsd/tests/session-start-footer.test.ts +68 -0
- package/src/resources/extensions/gsd/tests/show-config-command.test.ts +3 -0
- package/src/resources/extensions/gsd/tests/single-writer-invariant.test.ts +170 -48
- package/src/resources/extensions/gsd/tests/skill-activation.test.ts +20 -17
- package/src/resources/extensions/gsd/tests/start-auto-detached.test.ts +7 -3
- package/src/resources/extensions/gsd/tests/state-reconciliation-drift.test.ts +17 -1
- package/src/resources/extensions/gsd/tests/stop-auto-race-null-unit.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/teardown-chdir-failure-clears-registry.test.ts +17 -0
- package/src/resources/extensions/gsd/tests/thinking-level-resolution.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/token-tool-gating.test.ts +4 -2
- package/src/resources/extensions/gsd/tests/tool-surface-readiness.test.ts +184 -10
- package/src/resources/extensions/gsd/tests/tui-header-lifecycle.test.ts +40 -86
- package/src/resources/extensions/gsd/tests/tui-render-kit.test.ts +44 -6
- package/src/resources/extensions/gsd/tests/uok-audit.test.ts +194 -0
- package/src/resources/extensions/gsd/tests/uok-plan-v2-wiring.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/workflow-mcp-readiness-cache.test.ts +119 -0
- package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +65 -2
- package/src/resources/extensions/gsd/tests/workflow-phase-contract-matrix.test.ts +332 -0
- package/src/resources/extensions/gsd/tests/workflow-templates.test.ts +92 -0
- package/src/resources/extensions/gsd/tests/worktree-health-dispatch.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/worktree-manager.test.ts +36 -0
- package/src/resources/extensions/gsd/tests/worktree-project-root-degrade.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/worktree-safety-phase.test.ts +100 -0
- package/src/resources/extensions/gsd/tests/worktree-safety.test.ts +72 -0
- package/src/resources/extensions/gsd/tests/worktree-teardown-safety.test.ts +22 -0
- package/src/resources/extensions/gsd/tests/worktree-write-gate.test.ts +75 -3
- package/src/resources/extensions/gsd/tests/worktree.test.ts +18 -0
- package/src/resources/extensions/gsd/tool-surface-readiness.ts +126 -19
- package/src/resources/extensions/gsd/tools/complete-task.ts +87 -0
- package/src/resources/extensions/gsd/tools/exec-tool.ts +2 -118
- package/src/resources/extensions/gsd/tui/render-kit.ts +56 -13
- package/src/resources/extensions/gsd/unit-context-composer.ts +1 -1
- package/src/resources/extensions/gsd/unit-registry.ts +34 -4
- package/src/resources/extensions/gsd/workflow-logger.ts +5 -0
- package/src/resources/extensions/gsd/workflow-mcp-auto-prep.ts +2 -0
- package/src/resources/extensions/gsd/workflow-mcp-readiness-cache.ts +150 -0
- package/src/resources/extensions/gsd/worktree-manager.ts +97 -2
- package/src/resources/extensions/gsd/worktree-safety.ts +41 -39
- package/src/resources/extensions/gsd/worktree-shell-guard.ts +123 -0
- package/src/resources/extensions/gsd/worktree.ts +7 -1
- package/src/resources/extensions/mcp-client/manager.ts +7 -1
- package/src/resources/extensions/search-the-web/index.ts +45 -9
- package/src/resources/extensions/search-the-web/native-search.ts +16 -4
- package/src/resources/extensions/shared/gsd-browser-cli.ts +41 -2
- package/src/resources/extensions/subagent/index.ts +20 -15
- package/src/resources/extensions/subagent/tests/worktree-cwd.test.ts +57 -0
- package/src/resources/extensions/subagent/worktree-cwd.ts +35 -0
- package/src/resources/skills/create-skill/SKILL.md +3 -0
- package/src/resources/skills/create-skill/references/skill-structure.md +1 -0
- package/dist/resources/skills/gsd-browser/SKILL.md +0 -41
- package/src/resources/skills/gsd-browser/SKILL.md +0 -41
- /package/dist/web/standalone/.next/static/{T-LTxEw5wir5Lm5T3qEVd → Wn9u2NYq0cyUigB_3Z0_N}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{T-LTxEw5wir5Lm5T3qEVd → Wn9u2NYq0cyUigB_3Z0_N}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
// gsd-pi — Dispatch DB-degradation log coverage.
|
|
2
|
+
//
|
|
3
|
+
// `hasMilestonePassedDiscuss` (auto-dispatch.ts:397) queries the slices table to
|
|
4
|
+
// decide whether a milestone has progressed past discuss. When the DB is
|
|
5
|
+
// available but the query throws (corrupt schema, dropped table, locked DB),
|
|
6
|
+
// the catch (auto-dispatch.ts:407) logs a `dispatch` warning and falls back to
|
|
7
|
+
// the filesystem. That warning is the operator's only signal that dispatch
|
|
8
|
+
// silently degraded to filesystem heuristics; no test asserted it. This file
|
|
9
|
+
// triggers it by opening a DB, seeding a milestone, then dropping the slices
|
|
10
|
+
// table so getMilestoneSlices() throws inside the rule's DB branch.
|
|
11
|
+
//
|
|
12
|
+
// Companion to dispatch-logs.test.ts (registry fallback :1834).
|
|
13
|
+
|
|
14
|
+
import { test } from "node:test";
|
|
15
|
+
import assert from "node:assert/strict";
|
|
16
|
+
import { mkdtempSync, mkdirSync, rmSync, writeFileSync } from "node:fs";
|
|
17
|
+
import { join } from "node:path";
|
|
18
|
+
import { tmpdir } from "node:os";
|
|
19
|
+
|
|
20
|
+
import { resolveDispatch, DISPATCH_RULES, type DispatchContext } from "../auto-dispatch.ts";
|
|
21
|
+
import type { GSDState } from "../types.ts";
|
|
22
|
+
import {
|
|
23
|
+
closeDatabase,
|
|
24
|
+
insertMilestone,
|
|
25
|
+
openDatabase,
|
|
26
|
+
_getAdapter,
|
|
27
|
+
} from "../gsd-db.ts";
|
|
28
|
+
import {
|
|
29
|
+
drainLogs,
|
|
30
|
+
setStderrLoggingEnabled,
|
|
31
|
+
_resetLogs,
|
|
32
|
+
type LogEntry,
|
|
33
|
+
} from "../workflow-logger.ts";
|
|
34
|
+
import { convertDispatchRules, initRegistry, getRegistry, resetRegistry } from "../rule-registry.ts";
|
|
35
|
+
|
|
36
|
+
function makeExecutingState(): GSDState {
|
|
37
|
+
return {
|
|
38
|
+
activeMilestone: { id: "M001", title: "Degraded" },
|
|
39
|
+
activeSlice: null,
|
|
40
|
+
activeTask: null,
|
|
41
|
+
phase: "executing",
|
|
42
|
+
recentDecisions: [],
|
|
43
|
+
blockers: [],
|
|
44
|
+
nextAction: "",
|
|
45
|
+
registry: [],
|
|
46
|
+
} as GSDState;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
test("hasMilestonePassedDiscuss logs a dispatch warning when the DB slices query throws", async (t) => {
|
|
50
|
+
const base = mkdtempSync(join(tmpdir(), "gsd-dispatch-db-degrade-"));
|
|
51
|
+
mkdirSync(join(base, ".gsd"), { recursive: true });
|
|
52
|
+
|
|
53
|
+
// Snapshot + (re)initialize the registry so resolveDispatch uses the inline
|
|
54
|
+
// rule set, then restore the prior state afterwards.
|
|
55
|
+
let previousExists = false;
|
|
56
|
+
try { getRegistry(); previousExists = true; } catch { previousExists = false; }
|
|
57
|
+
initRegistry(convertDispatchRules(DISPATCH_RULES));
|
|
58
|
+
|
|
59
|
+
const previousStderr = setStderrLoggingEnabled(false);
|
|
60
|
+
let logs: LogEntry[] = [];
|
|
61
|
+
try {
|
|
62
|
+
openDatabase(join(base, ".gsd", "gsd.db"));
|
|
63
|
+
insertMilestone({ id: "M001", title: "Degraded", status: "active" });
|
|
64
|
+
// Break the slices table so getMilestoneSlices("M001") throws inside the
|
|
65
|
+
// DB branch of hasMilestonePassedDispatch → :407 warning.
|
|
66
|
+
_getAdapter()!.exec("DROP TABLE slices");
|
|
67
|
+
|
|
68
|
+
const ctx: DispatchContext = {
|
|
69
|
+
basePath: base,
|
|
70
|
+
mid: "M001",
|
|
71
|
+
midTitle: "Degraded",
|
|
72
|
+
state: makeExecutingState(),
|
|
73
|
+
prefs: undefined,
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
// resolveDispatch must not throw — the rule catches the DB error and falls
|
|
77
|
+
// back to the filesystem. We assert only that the degradation warning lands.
|
|
78
|
+
await resolveDispatch(ctx);
|
|
79
|
+
logs = drainLogs();
|
|
80
|
+
} finally {
|
|
81
|
+
_resetLogs();
|
|
82
|
+
setStderrLoggingEnabled(previousStderr);
|
|
83
|
+
closeDatabase();
|
|
84
|
+
rmSync(base, { recursive: true, force: true });
|
|
85
|
+
// Restore registry state for subsequent tests.
|
|
86
|
+
initRegistry(convertDispatchRules(DISPATCH_RULES));
|
|
87
|
+
if (!previousExists) resetRegistry();
|
|
88
|
+
void t;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const warn = logs.find((e) => e.component === "dispatch" && e.severity === "warn");
|
|
92
|
+
assert.ok(warn, "a dispatch warning must be logged when the slices query fails");
|
|
93
|
+
assert.match(
|
|
94
|
+
warn!.message,
|
|
95
|
+
/discuss-progress DB check failed for M001, falling back to filesystem/u,
|
|
96
|
+
"warning must name the milestone and the filesystem fallback",
|
|
97
|
+
);
|
|
98
|
+
});
|
|
@@ -23,6 +23,7 @@ import { recordDispatchClaim, markFailed, markCanceled } from "../db/unit-dispat
|
|
|
23
23
|
import {
|
|
24
24
|
buildDispatchKey,
|
|
25
25
|
createDispatchHistory,
|
|
26
|
+
lookupLatestLedgerError,
|
|
26
27
|
normalizeDispatchKey,
|
|
27
28
|
parseDispatchKey,
|
|
28
29
|
STUCK_WINDOW_SIZE,
|
|
@@ -157,6 +158,31 @@ test("recordDispatch attaches the latest ledger error on repeats so repeat-error
|
|
|
157
158
|
assert.match(verdict?.reason ?? "", /Same error repeated/);
|
|
158
159
|
});
|
|
159
160
|
|
|
161
|
+
test("lookupLatestLedgerError matches the bare unit id, not the compound key", (t) => {
|
|
162
|
+
const f = makeLedgerFixture(t);
|
|
163
|
+
const dispatchId = f.claim("execute-task", "M001/S01/T01");
|
|
164
|
+
markFailed(dispatchId, { errorSummary: "boom: deterministic failure" });
|
|
165
|
+
|
|
166
|
+
// The ledger keys rows by the bare unit id with the unit type in its own
|
|
167
|
+
// column. The shared lookup (also used by dispatch.ts's runDispatch path)
|
|
168
|
+
// must use the bare id; a compound `unitType/unitId` value misses entirely,
|
|
169
|
+
// which previously silently dropped repeat-error detection on that path.
|
|
170
|
+
assert.equal(
|
|
171
|
+
lookupLatestLedgerError("execute-task", "M001/S01/T01"),
|
|
172
|
+
"boom: deterministic failure",
|
|
173
|
+
);
|
|
174
|
+
assert.equal(
|
|
175
|
+
lookupLatestLedgerError("execute-task", "execute-task/M001/S01/T01"),
|
|
176
|
+
undefined,
|
|
177
|
+
"a compound key must not match the bare-id ledger row",
|
|
178
|
+
);
|
|
179
|
+
assert.equal(
|
|
180
|
+
lookupLatestLedgerError("plan-slice", "M001/S01/T01"),
|
|
181
|
+
undefined,
|
|
182
|
+
"a different unit type on the same id must not be attached",
|
|
183
|
+
);
|
|
184
|
+
});
|
|
185
|
+
|
|
160
186
|
test("recordDispatch never attaches another unit type's ledger error for the same unit id", (t) => {
|
|
161
187
|
const f = makeLedgerFixture(t);
|
|
162
188
|
const dispatchId = f.claim("plan-slice", "M001/S01");
|
|
@@ -262,6 +288,35 @@ test("#482 regression: a re-dispatch loop spanning a session restart is detected
|
|
|
262
288
|
assert.match(verdict?.reason ?? "", /execute-task:M001\/S01\/T01 derived 3 consecutive times/);
|
|
263
289
|
});
|
|
264
290
|
|
|
291
|
+
test("rehydrate mirrors recordDispatch error attachment so repeat-error detection fires after the next dispatch", (t) => {
|
|
292
|
+
const f = makeLedgerFixture(t);
|
|
293
|
+
// Session 1: two failed dispatches for the same unit, same error summary.
|
|
294
|
+
for (let i = 0; i < 2; i++) {
|
|
295
|
+
const id = f.claim("execute-task", "M001/S01/T01");
|
|
296
|
+
markFailed(id, { errorSummary: "boom: deterministic failure" });
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
// Session 2: fresh history rehydrates from the ledger. Just like the live
|
|
300
|
+
// recordDispatch path, the first occurrence of a unit skips the ledger
|
|
301
|
+
// lookup; only repeats carry the error. So rehydration alone does not trip
|
|
302
|
+
// Rule 1 — keeping the post-restart window no more aggressive than the live
|
|
303
|
+
// one (Rule 1 has no retry-budget suppression).
|
|
304
|
+
const restarted = historyFor(f.base);
|
|
305
|
+
const count = restarted.rehydrate();
|
|
306
|
+
assert.equal(count, 2);
|
|
307
|
+
const window = restarted.getRecentWindow();
|
|
308
|
+
assert.equal(window[0].error, undefined);
|
|
309
|
+
assert.equal(window[1].error, "boom: deterministic failure");
|
|
310
|
+
assert.equal(restarted.detectStuck(), null);
|
|
311
|
+
|
|
312
|
+
// The next dispatch of the same unit attaches the error again, giving two
|
|
313
|
+
// consecutive matching errors → Rule 1 fires, exactly as in the live path.
|
|
314
|
+
restarted.recordDispatch("execute-task", "M001/S01/T01");
|
|
315
|
+
const verdict = restarted.detectStuck();
|
|
316
|
+
assert.equal(verdict?.stuck, true);
|
|
317
|
+
assert.match(verdict?.reason ?? "", /Same error repeated/);
|
|
318
|
+
});
|
|
319
|
+
|
|
265
320
|
test("rehydrate degrades to an empty window without a scope or ledger", () => {
|
|
266
321
|
const noScope = historyFor(null);
|
|
267
322
|
assert.equal(noScope.rehydrate(), 0);
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
// gsd-pi — Dispatch-path log coverage.
|
|
2
|
+
//
|
|
3
|
+
// `resolveDispatch` delegates to the rule registry when one is initialized
|
|
4
|
+
// (auto-dispatch.ts:1818-1835). If `getRegistry()` throws — e.g. the registry
|
|
5
|
+
// was never initialized or was reset — the catch logs a `dispatch` warning
|
|
6
|
+
// ("registry dispatch failed, falling back to inline rules") and falls through
|
|
7
|
+
// to the inline DISPATCH_RULES loop. That warning is the operator's only signal
|
|
8
|
+
// that dispatch silently degraded from registry-driven to inline; no test
|
|
9
|
+
// asserted it. This file pins it.
|
|
10
|
+
//
|
|
11
|
+
// Strategy: resetRegistry() so getRegistry() throws, then call resolveDispatch
|
|
12
|
+
// with a minimal no-DB context. We assert the warning lands and that the
|
|
13
|
+
// function still returns a DispatchAction rather than throwing (resilience).
|
|
14
|
+
|
|
15
|
+
import { test } from "node:test";
|
|
16
|
+
import assert from "node:assert/strict";
|
|
17
|
+
import { mkdtempSync, rmSync } from "node:fs";
|
|
18
|
+
import { join } from "node:path";
|
|
19
|
+
import { tmpdir } from "node:os";
|
|
20
|
+
|
|
21
|
+
import { resolveDispatch, DISPATCH_RULES, type DispatchContext } from "../auto-dispatch.ts";
|
|
22
|
+
import {
|
|
23
|
+
convertDispatchRules,
|
|
24
|
+
getRegistry,
|
|
25
|
+
initRegistry,
|
|
26
|
+
resetRegistry,
|
|
27
|
+
} from "../rule-registry.ts";
|
|
28
|
+
import {
|
|
29
|
+
drainLogs,
|
|
30
|
+
setStderrLoggingEnabled,
|
|
31
|
+
_resetLogs,
|
|
32
|
+
type LogEntry,
|
|
33
|
+
} from "../workflow-logger.ts";
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Build a minimal DispatchContext that passes resolveDispatch's early guards
|
|
37
|
+
* without a database:
|
|
38
|
+
* - isDbAvailable() is false → the closed-milestone guard is skipped.
|
|
39
|
+
* - activeMilestone is null → the activeMid/scope mismatch guards are skipped.
|
|
40
|
+
* So execution reaches the registry delegation block.
|
|
41
|
+
*/
|
|
42
|
+
function makeMinimalCtx(basePath: string): DispatchContext {
|
|
43
|
+
return {
|
|
44
|
+
basePath,
|
|
45
|
+
mid: "M001",
|
|
46
|
+
midTitle: "Test Milestone",
|
|
47
|
+
prefs: undefined,
|
|
48
|
+
state: {
|
|
49
|
+
activeMilestone: null,
|
|
50
|
+
activeSlice: null,
|
|
51
|
+
activeTask: null,
|
|
52
|
+
phase: "unhandled",
|
|
53
|
+
recentDecisions: [],
|
|
54
|
+
blockers: [],
|
|
55
|
+
nextAction: "",
|
|
56
|
+
registry: [],
|
|
57
|
+
} as unknown as DispatchContext["state"],
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
test("resolveDispatch logs a dispatch warning and falls back to inline rules when the registry is uninitialized", async () => {
|
|
62
|
+
// Snapshot and clear the singleton so getRegistry() throws inside resolveDispatch.
|
|
63
|
+
let previousExists = false;
|
|
64
|
+
try {
|
|
65
|
+
getRegistry();
|
|
66
|
+
previousExists = true;
|
|
67
|
+
} catch {
|
|
68
|
+
previousExists = false;
|
|
69
|
+
}
|
|
70
|
+
resetRegistry();
|
|
71
|
+
|
|
72
|
+
const base = mkdtempSync(join(tmpdir(), "gsd-dispatch-logs-"));
|
|
73
|
+
const previousStderr = setStderrLoggingEnabled(false);
|
|
74
|
+
_resetLogs();
|
|
75
|
+
let logs: LogEntry[] = [];
|
|
76
|
+
try {
|
|
77
|
+
// resolveDispatch must NOT throw — it catches the registry failure, logs,
|
|
78
|
+
// and falls through to inline DISPATCH_RULES.
|
|
79
|
+
const action = await resolveDispatch(makeMinimalCtx(base));
|
|
80
|
+
assert.ok(action, "resolveDispatch must still return a DispatchAction after registry failure");
|
|
81
|
+
logs = drainLogs();
|
|
82
|
+
} finally {
|
|
83
|
+
_resetLogs();
|
|
84
|
+
setStderrLoggingEnabled(previousStderr);
|
|
85
|
+
rmSync(base, { recursive: true, force: true });
|
|
86
|
+
// Restore a usable registry for any subsequent test in the process.
|
|
87
|
+
initRegistry(convertDispatchRules(DISPATCH_RULES));
|
|
88
|
+
if (!previousExists) resetRegistry();
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const warn = logs.find((e) => e.component === "dispatch" && e.severity === "warn");
|
|
92
|
+
assert.ok(warn, "a dispatch warning must be logged when the registry is unavailable");
|
|
93
|
+
assert.match(
|
|
94
|
+
warn!.message,
|
|
95
|
+
/registry dispatch failed, falling back to inline rules/u,
|
|
96
|
+
"warning must identify the registry fallback reason",
|
|
97
|
+
);
|
|
98
|
+
assert.match(
|
|
99
|
+
warn!.message,
|
|
100
|
+
/not initialized/u,
|
|
101
|
+
"warning must carry the underlying getRegistry() error detail",
|
|
102
|
+
);
|
|
103
|
+
});
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
// gsd-pi — Dispatch reactive graph derivation log coverage.
|
|
2
|
+
//
|
|
3
|
+
// The "executing → reactive-execute" rule wraps its graph derivation in a
|
|
4
|
+
// best-effort catch (auto-dispatch.ts:1492-1496) that logs a `dispatch` ERROR
|
|
5
|
+
// "reactive graph derivation failed" and falls through to sequential execution.
|
|
6
|
+
// The catch is otherwise unreachable because every operation it wraps
|
|
7
|
+
// (loadSliceTaskIO, deriveTaskGraph, saveReactiveState) is internally
|
|
8
|
+
// defensive — so we inject a throwing derive function via the sanctioned
|
|
9
|
+
// setReactiveGraphDeriveFnForTest seam (mirroring the :1809 / :637 pattern) to
|
|
10
|
+
// deterministically exercise the failure path.
|
|
11
|
+
|
|
12
|
+
import { test } from "node:test";
|
|
13
|
+
import assert from "node:assert/strict";
|
|
14
|
+
import { mkdtempSync, mkdirSync, rmSync, writeFileSync } from "node:fs";
|
|
15
|
+
import { join } from "node:path";
|
|
16
|
+
import { tmpdir } from "node:os";
|
|
17
|
+
|
|
18
|
+
import {
|
|
19
|
+
resolveDispatch,
|
|
20
|
+
DISPATCH_RULES,
|
|
21
|
+
setReactiveGraphDeriveFnForTest,
|
|
22
|
+
type DispatchContext,
|
|
23
|
+
} from "../auto-dispatch.ts";
|
|
24
|
+
import type { GSDState } from "../types.ts";
|
|
25
|
+
import {
|
|
26
|
+
drainLogs,
|
|
27
|
+
setStderrLoggingEnabled,
|
|
28
|
+
_resetLogs,
|
|
29
|
+
type LogEntry,
|
|
30
|
+
} from "../workflow-logger.ts";
|
|
31
|
+
import { convertDispatchRules, initRegistry, getRegistry, resetRegistry } from "../rule-registry.ts";
|
|
32
|
+
|
|
33
|
+
function makeExecutingCtx(base: string): DispatchContext {
|
|
34
|
+
return {
|
|
35
|
+
basePath: base,
|
|
36
|
+
mid: "M001",
|
|
37
|
+
midTitle: "Milestone",
|
|
38
|
+
state: {
|
|
39
|
+
phase: "executing",
|
|
40
|
+
activeMilestone: { id: "M001", title: "Milestone", status: "active" },
|
|
41
|
+
activeSlice: { id: "S01", title: "Slice" },
|
|
42
|
+
activeTask: { id: "T01", title: "Task" },
|
|
43
|
+
registry: [],
|
|
44
|
+
blockers: [],
|
|
45
|
+
} as unknown as GSDState,
|
|
46
|
+
// Explicit opt-in keeps the legacy min-ready threshold (2) and ensures the
|
|
47
|
+
// rule proceeds past the enabled/maxParallel guards into the derivation try.
|
|
48
|
+
prefs: { reactive_execution: { enabled: true, max_parallel: 2 } } as DispatchContext["prefs"],
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
test("reactive rule logs a dispatch error when graph derivation throws (auto-dispatch.ts:1494)", async (t) => {
|
|
53
|
+
const base = mkdtempSync(join(tmpdir(), "gsd-reactive-logs-"));
|
|
54
|
+
// Minimal slice projection so the rule's earlier filesystem guards resolve.
|
|
55
|
+
const sliceDir = join(base, ".gsd", "milestones", "M001", "slices", "S01");
|
|
56
|
+
mkdirSync(sliceDir, { recursive: true });
|
|
57
|
+
writeFileSync(join(sliceDir, "S01-PLAN.md"), "# S01\n\n## Tasks\n\n- [ ] **T01: A**\n", "utf-8");
|
|
58
|
+
|
|
59
|
+
// Snapshot + initialize the registry so resolveDispatch uses the inline rules.
|
|
60
|
+
let previousExists = false;
|
|
61
|
+
try { getRegistry(); previousExists = true; } catch { previousExists = false; }
|
|
62
|
+
initRegistry(convertDispatchRules(DISPATCH_RULES));
|
|
63
|
+
|
|
64
|
+
// Inject a throwing derive fn so the rule's try block (auto-dispatch.ts:1414+)
|
|
65
|
+
// throws before any defensive operation, hitting the :1494 catch.
|
|
66
|
+
const restoreDerive = setReactiveGraphDeriveFnForTest(async () => {
|
|
67
|
+
throw new Error("forced graph derivation failure");
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
const previousStderr = setStderrLoggingEnabled(false);
|
|
71
|
+
_resetLogs();
|
|
72
|
+
let logs: LogEntry[] = [];
|
|
73
|
+
try {
|
|
74
|
+
// resolveDispatch must NOT throw — the rule catches the derivation failure
|
|
75
|
+
// and falls through to sequential execution.
|
|
76
|
+
await resolveDispatch(makeExecutingCtx(base));
|
|
77
|
+
logs = drainLogs();
|
|
78
|
+
} finally {
|
|
79
|
+
_resetLogs();
|
|
80
|
+
setStderrLoggingEnabled(previousStderr);
|
|
81
|
+
restoreDerive();
|
|
82
|
+
initRegistry(convertDispatchRules(DISPATCH_RULES));
|
|
83
|
+
if (!previousExists) resetRegistry();
|
|
84
|
+
rmSync(base, { recursive: true, force: true });
|
|
85
|
+
void t;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const err = logs.find(
|
|
89
|
+
(e) => e.component === "dispatch" && e.severity === "error" && /reactive graph derivation failed/u.test(e.message),
|
|
90
|
+
);
|
|
91
|
+
assert.ok(
|
|
92
|
+
err,
|
|
93
|
+
"a dispatch ERROR must be logged when reactive graph derivation fails (got: " +
|
|
94
|
+
logs.filter((e) => e.component === "dispatch").map((e) => e.message).join(" | ") + ")",
|
|
95
|
+
);
|
|
96
|
+
assert.equal(err!.message, "reactive graph derivation failed");
|
|
97
|
+
assert.match(err!.context?.error ?? "", /forced graph derivation failure/u);
|
|
98
|
+
});
|
|
@@ -7,6 +7,10 @@ const require = createRequire(import.meta.url);
|
|
|
7
7
|
const ROOT = new URL("../../../../../", import.meta.url);
|
|
8
8
|
|
|
9
9
|
export function resolve(specifier, context, nextResolve) {
|
|
10
|
+
if (specifier.startsWith('node:')) {
|
|
11
|
+
return { url: specifier, format: 'builtin', shortCircuit: true };
|
|
12
|
+
}
|
|
13
|
+
|
|
10
14
|
// 1. Redirect all workspace package bare imports to source.
|
|
11
15
|
// CI portability runs don't build any packages/ dist artifacts, so every
|
|
12
16
|
// @gsd/* specifier (including transitive ones pulled in by pi-coding-agent
|
|
@@ -100,6 +104,10 @@ export function resolve(specifier, context, nextResolve) {
|
|
|
100
104
|
}
|
|
101
105
|
|
|
102
106
|
export function load(url, context, nextLoad) {
|
|
107
|
+
if (url.startsWith('node:') || context.format === 'builtin') {
|
|
108
|
+
return { format: 'builtin', source: '', shortCircuit: true };
|
|
109
|
+
}
|
|
110
|
+
|
|
103
111
|
// jiti/CJS may still enter through stale packages/*/dist/index.js — redirect to src.
|
|
104
112
|
if (url.includes('/packages/pi-ai/dist/index.js')) {
|
|
105
113
|
url = url.replace('/dist/index.js', '/src/index.ts');
|
|
@@ -338,6 +338,7 @@ test("runProviderChecks detects custom provider keys from models.json", () => {
|
|
|
338
338
|
join(repo, ".gsd", "PREFERENCES.md"),
|
|
339
339
|
[
|
|
340
340
|
"---",
|
|
341
|
+
"token_profile: burn-max",
|
|
341
342
|
"models:",
|
|
342
343
|
" execution:",
|
|
343
344
|
" model: custom-model",
|
|
@@ -514,6 +515,7 @@ test("runProviderChecks uses provider-qualified anthropic-vertex model IDs", ()
|
|
|
514
515
|
join(repo, ".gsd", "PREFERENCES.md"),
|
|
515
516
|
[
|
|
516
517
|
"---",
|
|
518
|
+
"token_profile: burn-max",
|
|
517
519
|
"models:",
|
|
518
520
|
" execution: anthropic-vertex/claude-sonnet-4-6",
|
|
519
521
|
"---",
|
|
@@ -605,6 +607,7 @@ test("runProviderChecks reports ok for Google via google-gemini-cli auth.json (#
|
|
|
605
607
|
|
|
606
608
|
withEnv({
|
|
607
609
|
HOME: tmpHome,
|
|
610
|
+
PATH: tmpHome,
|
|
608
611
|
GEMINI_API_KEY: undefined,
|
|
609
612
|
GOOGLE_API_KEY: undefined,
|
|
610
613
|
}, () => {
|
|
@@ -904,17 +907,16 @@ test("runProviderChecks detects claude.exe in PATH on Windows (#4548)", { skip:
|
|
|
904
907
|
});
|
|
905
908
|
});
|
|
906
909
|
|
|
907
|
-
test("PROVIDER_ROUTES includes google-gemini-cli as
|
|
910
|
+
test("PROVIDER_ROUTES includes google-antigravity and google-gemini-cli as routes for google (#2922)", async () => {
|
|
908
911
|
const { readFileSync: readFS } = await import("node:fs");
|
|
909
912
|
const { dirname: dirn, join: joinPath } = await import("node:path");
|
|
910
913
|
const { fileURLToPath: fileUrl } = await import("node:url");
|
|
911
914
|
const __dir = dirn(fileUrl(import.meta.url));
|
|
912
915
|
const src = readFS(joinPath(__dir, "..", "doctor-providers.ts"), "utf-8");
|
|
913
916
|
|
|
914
|
-
// PROVIDER_ROUTES must map google -> [..., "google-gemini-cli"]
|
|
915
917
|
assert.ok(
|
|
916
|
-
src.includes('"google-gemini-cli"'),
|
|
917
|
-
'PROVIDER_ROUTES must
|
|
918
|
+
src.includes('google: ["google-antigravity", "google-gemini-cli"]'),
|
|
919
|
+
'PROVIDER_ROUTES must prefer "google-antigravity" over "google-gemini-cli" for google (#2922)',
|
|
918
920
|
);
|
|
919
921
|
});
|
|
920
922
|
|