@opengsd/gsd-pi 1.3.0-dev.eed73bea → 1.4.0-dev.5fc22c6f
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 +11 -11
- package/dist/cli.js +17 -4
- package/dist/headless-answers.js +1 -1
- package/dist/headless-ui.d.ts +1 -1
- package/dist/headless-ui.js +1 -1
- package/dist/headless.js +1 -1
- package/dist/onboarding.js +11 -0
- package/dist/resources/.managed-resources-content-hash +1 -1
- package/dist/resources/GSD-WORKFLOW.md +20 -25
- package/dist/resources/extensions/claude-code-cli/models.js +9 -0
- package/dist/resources/extensions/claude-code-cli/stream-adapter.js +61 -50
- package/dist/resources/extensions/cursor-cli/index.js +16 -0
- package/dist/resources/extensions/cursor-cli/models.js +63 -0
- package/dist/resources/extensions/cursor-cli/package.json +11 -0
- package/dist/resources/extensions/cursor-cli/readiness.js +128 -0
- package/dist/resources/extensions/cursor-cli/stream-adapter.js +353 -0
- package/dist/resources/extensions/gsd/activity-log.js +4 -1
- package/dist/resources/extensions/gsd/artifact-verification.js +431 -0
- package/dist/resources/extensions/gsd/auto/session.js +11 -0
- package/dist/resources/extensions/gsd/auto/verification-retry-policy.js +1 -1
- package/dist/resources/extensions/gsd/auto-artifact-paths.js +28 -1
- package/dist/resources/extensions/gsd/auto-budget.js +5 -1
- package/dist/resources/extensions/gsd/auto-dispatch.js +32 -11
- package/dist/resources/extensions/gsd/auto-model-selection.js +36 -18
- package/dist/resources/extensions/gsd/auto-post-unit.js +1 -1
- package/dist/resources/extensions/gsd/auto-prompts.js +83 -25
- package/dist/resources/extensions/gsd/auto-recovery.js +9 -517
- package/dist/resources/extensions/gsd/auto-runtime-state.js +4 -5
- package/dist/resources/extensions/gsd/auto-start.js +4 -3
- package/dist/resources/extensions/gsd/auto-timeout-recovery.js +7 -3
- package/dist/resources/extensions/gsd/auto-verification.js +5 -2
- package/dist/resources/extensions/gsd/auto-worktree.js +38 -11
- package/dist/resources/extensions/gsd/auto.js +32 -10
- package/dist/resources/extensions/gsd/bootstrap/core-session-tools.js +39 -0
- package/dist/resources/extensions/gsd/bootstrap/db-tools.js +8 -4
- package/dist/resources/extensions/gsd/bootstrap/register-extension.js +2 -0
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +147 -23
- package/dist/resources/extensions/gsd/bootstrap/tool-call-loop-guard.js +56 -36
- package/dist/resources/extensions/gsd/bootstrap/write-gate.js +29 -5
- package/dist/resources/extensions/gsd/closeout-consistency-gate.js +3 -1
- package/dist/resources/extensions/gsd/codebase-generator.js +157 -19
- package/dist/resources/extensions/gsd/commands/handlers/auto.js +1 -1
- package/dist/resources/extensions/gsd/commands/handlers/core.js +40 -4
- package/dist/resources/extensions/gsd/commands-prefs-wizard.js +154 -2
- package/dist/resources/extensions/gsd/commands-usage.js +1 -1
- package/dist/resources/extensions/gsd/commands-worktree.js +11 -2
- package/dist/resources/extensions/gsd/db/engine.js +4 -1
- package/dist/resources/extensions/gsd/db/queries.js +39 -0
- package/dist/resources/extensions/gsd/db-memory-fts-schema.js +34 -0
- package/dist/resources/extensions/gsd/db-workspace.js +55 -3
- package/dist/resources/extensions/gsd/delegation-policy.js +1 -1
- package/dist/resources/extensions/gsd/discussion-handoff.js +8 -3
- package/dist/resources/extensions/gsd/docs/preferences-reference.md +10 -4
- package/dist/resources/extensions/gsd/doctor-engine-checks.js +227 -5
- package/dist/resources/extensions/gsd/doctor-providers.js +38 -10
- package/dist/resources/extensions/gsd/doctor-runtime-checks.js +3 -0
- package/dist/resources/extensions/gsd/doctor.js +93 -3
- package/dist/resources/extensions/gsd/exec-sandbox.js +14 -4
- package/dist/resources/extensions/gsd/flat-phase-migration.js +119 -23
- package/dist/resources/extensions/gsd/git-service.js +61 -8
- package/dist/resources/extensions/gsd/gitignore.js +4 -1
- package/dist/resources/extensions/gsd/guidance.js +1 -0
- package/dist/resources/extensions/gsd/guided-flow-queue.js +20 -13
- package/dist/resources/extensions/gsd/guided-flow.js +40 -2
- package/dist/resources/extensions/gsd/json-persistence.js +20 -0
- package/dist/resources/extensions/gsd/key-manager.js +1 -0
- package/dist/resources/extensions/gsd/knowledge-backfill.js +18 -11
- package/dist/resources/extensions/gsd/layout-policy.js +3 -1
- package/dist/resources/extensions/gsd/markdown-renderer.js +27 -15
- package/dist/resources/extensions/gsd/memory-backfill.js +28 -21
- package/dist/resources/extensions/gsd/metrics.js +4 -4
- package/dist/resources/extensions/gsd/migrate-external.js +22 -5
- package/dist/resources/extensions/gsd/migration-auto-check.js +22 -0
- package/dist/resources/extensions/gsd/milestone-ids.js +32 -2
- package/dist/resources/extensions/gsd/orphan-stash-audit.js +92 -16
- package/dist/resources/extensions/gsd/preferences-diagnostics.js +24 -1
- package/dist/resources/extensions/gsd/preferences-models.js +6 -4
- package/dist/resources/extensions/gsd/preferences-validation.js +25 -2
- package/dist/resources/extensions/gsd/preferences.js +29 -2
- package/dist/resources/extensions/gsd/prompts/code-review.md +6 -4
- package/dist/resources/extensions/gsd/prompts/plan-milestone.md +2 -2
- package/dist/resources/extensions/gsd/prompts/plan-slice.md +5 -3
- package/dist/resources/extensions/gsd/redact-secrets.js +37 -0
- package/dist/resources/extensions/gsd/repository-registry.js +6 -1
- package/dist/resources/extensions/gsd/root-write-leak-guard.js +7 -1
- package/dist/resources/extensions/gsd/safe-fs.js +23 -2
- package/dist/resources/extensions/gsd/safety/destructive-guard.js +8 -1
- package/dist/resources/extensions/gsd/safety/evidence-collector.js +16 -1
- package/dist/resources/extensions/gsd/safety/file-change-validator.js +5 -2
- package/dist/resources/extensions/gsd/skills/gsd-headless/SKILL.md +7 -9
- package/dist/resources/extensions/gsd/skills/gsd-headless/references/commands.md +2 -1
- package/dist/resources/extensions/gsd/state/derive/cache.js +28 -0
- package/dist/resources/extensions/gsd/state/derive/db-open.js +39 -0
- package/dist/resources/extensions/gsd/state/derive/from-db.js +452 -0
- package/dist/resources/extensions/gsd/state/derive/index.js +75 -0
- package/dist/resources/extensions/gsd/state/derive/interrupted-work.js +21 -0
- package/dist/resources/extensions/gsd/state-reconciliation/drift/stale-render.js +27 -33
- package/dist/resources/extensions/gsd/state-reconciliation/index.js +48 -23
- package/dist/resources/extensions/gsd/state-reconciliation/registry.js +32 -28
- package/dist/resources/extensions/gsd/state.js +12 -611
- package/dist/resources/extensions/gsd/tools/complete-milestone.js +4 -2
- package/dist/resources/extensions/gsd/tools/complete-slice.js +3 -34
- package/dist/resources/extensions/gsd/tools/complete-task.js +8 -41
- package/dist/resources/extensions/gsd/tools/plan-slice.js +59 -44
- package/dist/resources/extensions/gsd/tools/plan-task.js +103 -12
- package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +40 -0
- package/dist/resources/extensions/gsd/undo.js +43 -6
- package/dist/resources/extensions/gsd/unit-context-manifest.js +5 -4
- package/dist/resources/extensions/gsd/unit-registry.js +11 -3
- package/dist/resources/extensions/gsd/unit-runtime.js +21 -0
- package/dist/resources/extensions/gsd/verification-gate.js +7 -0
- package/dist/resources/extensions/gsd/workflow-manifest.js +126 -13
- package/dist/resources/extensions/gsd/workflow-projections.js +19 -14
- package/dist/resources/extensions/gsd/workspace.js +26 -8
- package/dist/resources/extensions/gsd/worktree-manager.js +140 -5
- 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 +12 -12
- package/dist/web/standalone/.next/build-manifest.json +3 -3
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/react-loadable-manifest.json +9 -9
- 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_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 +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/update/route.js +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +2 -2
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +12 -12
- package/dist/web/standalone/.next/server/chunks/8357.js +2 -2
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/dist/web/standalone/.next/server/pages/404.html +1 -1
- package/dist/web/standalone/.next/server/pages/500.html +1 -1
- package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
- package/dist/web/standalone/.next/static/chunks/{2659.b7b129ee6a769448.js → 2659.58e950899a9bb82f.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/2772.a7c1fcc69a4685ef.js +1 -0
- package/dist/web/standalone/.next/static/chunks/{3616.3c60753b8ffcbd2e.js → 3616.61a2af74bb8833c8.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/{4283.8e446784528ed9dc.js → 4283.d0d9e0a955e441cb.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/{5826.a46ecdd1cfe8dabc.js → 5826.5421d66c72b9f34e.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/{8785.481aa5869991b760.js → 8785.e29b3134cab1d153.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/8937.640dc9c2aaa1dfad.js +10 -0
- package/dist/web/standalone/.next/static/chunks/app/{page-6644fc6ee8ca1247.js → page-72a856634ad14c10.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/webpack-9c401904f87ded16.js +1 -0
- package/dist/web/standalone/node_modules/@gsd/native/package.json +1 -1
- package/dist/web/standalone/node_modules/node-pty/build/Makefile +2 -2
- package/dist/web/standalone/node_modules/node-pty/build/pty.target.mk +14 -14
- package/dist/wizard.d.ts +8 -0
- package/dist/wizard.js +8 -1
- package/integrations/hermes/__init__.py +31 -0
- package/integrations/hermes/tests/test_directory_loader.py +37 -0
- package/package.json +8 -8
- package/packages/cloud-mcp-gateway/dist/auth-store.d.ts +1 -0
- package/packages/cloud-mcp-gateway/dist/auth-store.d.ts.map +1 -1
- package/packages/cloud-mcp-gateway/dist/auth-store.js +21 -1
- package/packages/cloud-mcp-gateway/dist/auth-store.js.map +1 -1
- package/packages/cloud-mcp-gateway/dist/auth-store.test.js +34 -0
- package/packages/cloud-mcp-gateway/dist/auth-store.test.js.map +1 -1
- package/packages/cloud-mcp-gateway/package.json +2 -2
- package/packages/contracts/package.json +1 -1
- package/packages/daemon/dist/cloud-runtime.d.ts +2 -0
- package/packages/daemon/dist/cloud-runtime.d.ts.map +1 -1
- package/packages/daemon/dist/cloud-runtime.js +25 -1
- package/packages/daemon/dist/cloud-runtime.js.map +1 -1
- package/packages/daemon/dist/cloud-runtime.test.js +51 -0
- package/packages/daemon/dist/cloud-runtime.test.js.map +1 -1
- package/packages/daemon/dist/message-batcher.d.ts +7 -0
- package/packages/daemon/dist/message-batcher.d.ts.map +1 -1
- package/packages/daemon/dist/message-batcher.js +13 -0
- package/packages/daemon/dist/message-batcher.js.map +1 -1
- package/packages/daemon/dist/message-batcher.test.js +48 -0
- package/packages/daemon/dist/message-batcher.test.js.map +1 -1
- package/packages/daemon/package.json +5 -5
- package/packages/gsd-agent-core/dist/agent-session.d.ts +1 -0
- package/packages/gsd-agent-core/dist/agent-session.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/agent-session.js +3 -0
- package/packages/gsd-agent-core/dist/agent-session.js.map +1 -1
- package/packages/gsd-agent-core/dist/compaction/compaction.d.ts +13 -1
- package/packages/gsd-agent-core/dist/compaction/compaction.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/compaction/compaction.js +15 -1
- package/packages/gsd-agent-core/dist/compaction/compaction.js.map +1 -1
- package/packages/gsd-agent-core/dist/extension-ui-snapshot.d.ts +41 -0
- package/packages/gsd-agent-core/dist/extension-ui-snapshot.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/extension-ui-snapshot.js +62 -0
- package/packages/gsd-agent-core/dist/extension-ui-snapshot.js.map +1 -0
- package/packages/gsd-agent-core/dist/index.d.ts +2 -0
- package/packages/gsd-agent-core/dist/index.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/index.js +2 -0
- package/packages/gsd-agent-core/dist/index.js.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-events.js +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-events.js.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-host.d.ts +1 -0
- package/packages/gsd-agent-core/dist/session/agent-session-host.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-host.js.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-prompt.d.ts +5 -0
- package/packages/gsd-agent-core/dist/session/agent-session-prompt.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-prompt.js +60 -3
- package/packages/gsd-agent-core/dist/session/agent-session-prompt.js.map +1 -1
- package/packages/gsd-agent-core/dist/transcript-store.d.ts +58 -0
- package/packages/gsd-agent-core/dist/transcript-store.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/transcript-store.js +132 -0
- package/packages/gsd-agent-core/dist/transcript-store.js.map +1 -0
- package/packages/gsd-agent-core/package.json +5 -5
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts +2 -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 +25 -11
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller-latency.d.ts +4 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller-latency.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller-latency.js +7 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller-latency.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts +3 -24
- 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 -841
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-handoff-filter.d.ts +58 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-handoff-filter.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-handoff-filter.js +312 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-handoff-filter.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-pinned-zone.d.ts +31 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-pinned-zone.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-pinned-zone.js +130 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-pinned-zone.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-segment-walker.d.ts +15 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-segment-walker.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-segment-walker.js +259 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-segment-walker.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-tool-rollup.d.ts +13 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-tool-rollup.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-tool-rollup.js +118 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-tool-rollup.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.d.ts +9 -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 +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-ui-state.d.ts +54 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-ui-state.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-ui-state.js +20 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-ui-state.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts +4 -1
- 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 +9 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/streaming-render-state.d.ts +56 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/streaming-render-state.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/streaming-render-state.js +44 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/streaming-render-state.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/tui-transcript-tracker.d.ts +5 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/tui-transcript-tracker.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/tui-transcript-tracker.js +77 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/tui-transcript-tracker.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.d.ts +2 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.js +24 -6
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.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 +18 -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/dist/workflow-tools.js +1 -1
- package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
- package/packages/mcp-server/package.json +4 -4
- package/packages/native/package.json +1 -1
- package/packages/pi-agent-core/dist/agent-loop.js +3 -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/dist/env-api-keys.d.ts.map +1 -1
- package/packages/pi-ai/dist/env-api-keys.js +3 -0
- package/packages/pi-ai/dist/env-api-keys.js.map +1 -1
- package/packages/pi-ai/dist/models.generated.d.ts +46 -0
- package/packages/pi-ai/dist/models.generated.d.ts.map +1 -1
- package/packages/pi-ai/dist/models.generated.js +38 -0
- package/packages/pi-ai/dist/models.generated.js.map +1 -1
- package/packages/pi-ai/dist/types.d.ts +2 -2
- package/packages/pi-ai/dist/types.d.ts.map +1 -1
- package/packages/pi-ai/dist/types.js.map +1 -1
- package/packages/pi-ai/package.json +1 -1
- package/packages/pi-coding-agent/README.md +3 -2
- package/packages/pi-coding-agent/dist/core/model-resolver.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/model-resolver.js +1 -0
- package/packages/pi-coding-agent/dist/core/model-resolver.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/session-manager-context.d.ts +9 -0
- package/packages/pi-coding-agent/dist/core/session-manager-context.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/session-manager-context.js +94 -0
- package/packages/pi-coding-agent/dist/core/session-manager-context.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/session-manager-list.d.ts +8 -0
- package/packages/pi-coding-agent/dist/core/session-manager-list.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/session-manager-list.js +244 -0
- package/packages/pi-coding-agent/dist/core/session-manager-list.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/session-manager-migration.d.ts +12 -0
- package/packages/pi-coding-agent/dist/core/session-manager-migration.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/session-manager-migration.js +84 -0
- package/packages/pi-coding-agent/dist/core/session-manager-migration.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/session-manager-types.d.ts +135 -0
- package/packages/pi-coding-agent/dist/core/session-manager-types.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/session-manager-types.js +2 -0
- package/packages/pi-coding-agent/dist/core/session-manager-types.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/session-manager.d.ts +6 -154
- package/packages/pi-coding-agent/dist/core/session-manager.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/session-manager.js +22 -459
- package/packages/pi-coding-agent/dist/core/session-manager.js.map +1 -1
- package/packages/pi-coding-agent/dist/theme/theme-schema.d.ts +75 -75
- package/packages/pi-coding-agent/dist/theme/theme-schema.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/theme/theme-schema.js +1 -1
- package/packages/pi-coding-agent/dist/theme/theme-schema.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 +11 -7
- package/packages/pi-coding-agent/dist/theme/theme.js.map +1 -1
- package/packages/pi-coding-agent/package.json +7 -7
- package/packages/pi-tui/package.json +2 -2
- package/packages/rpc-client/dist/rpc-client.js +1 -1
- package/packages/rpc-client/dist/rpc-client.js.map +1 -1
- package/packages/rpc-client/package.json +2 -2
- package/pkg/dist/theme/theme-schema.d.ts +75 -75
- package/pkg/dist/theme/theme-schema.d.ts.map +1 -1
- package/pkg/dist/theme/theme-schema.js +1 -1
- package/pkg/dist/theme/theme-schema.js.map +1 -1
- package/pkg/dist/theme/theme.d.ts.map +1 -1
- package/pkg/dist/theme/theme.js +11 -7
- package/pkg/dist/theme/theme.js.map +1 -1
- package/pkg/package.json +1 -1
- package/scripts/link-workspace-packages.cjs +14 -4
- package/src/resources/GSD-WORKFLOW.md +20 -25
- package/src/resources/extensions/claude-code-cli/models.ts +9 -0
- package/src/resources/extensions/claude-code-cli/stream-adapter.ts +67 -49
- package/src/resources/extensions/claude-code-cli/tests/index.test.ts +14 -0
- package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +159 -0
- package/src/resources/extensions/cursor-cli/index.ts +18 -0
- package/src/resources/extensions/cursor-cli/models.ts +65 -0
- package/src/resources/extensions/cursor-cli/package.json +11 -0
- package/src/resources/extensions/cursor-cli/readiness.ts +143 -0
- package/src/resources/extensions/cursor-cli/stream-adapter.ts +440 -0
- package/src/resources/extensions/cursor-cli/tests/index.test.ts +54 -0
- package/src/resources/extensions/cursor-cli/tests/readiness.test.ts +29 -0
- package/src/resources/extensions/cursor-cli/tests/stream-adapter.test.ts +166 -0
- package/src/resources/extensions/gsd/activity-log.ts +4 -1
- package/src/resources/extensions/gsd/artifact-verification.ts +468 -0
- package/src/resources/extensions/gsd/auto/loop-deps.ts +1 -0
- package/src/resources/extensions/gsd/auto/session.ts +14 -0
- package/src/resources/extensions/gsd/auto/verification-retry-policy.ts +3 -1
- package/src/resources/extensions/gsd/auto-artifact-paths.ts +47 -1
- package/src/resources/extensions/gsd/auto-budget.ts +12 -1
- package/src/resources/extensions/gsd/auto-dispatch.ts +34 -12
- package/src/resources/extensions/gsd/auto-model-selection.ts +49 -18
- package/src/resources/extensions/gsd/auto-post-unit.ts +1 -1
- package/src/resources/extensions/gsd/auto-prompts.ts +80 -25
- package/src/resources/extensions/gsd/auto-recovery.ts +13 -518
- package/src/resources/extensions/gsd/auto-runtime-state.ts +4 -5
- package/src/resources/extensions/gsd/auto-start.ts +4 -3
- package/src/resources/extensions/gsd/auto-timeout-recovery.ts +7 -2
- package/src/resources/extensions/gsd/auto-verification.ts +5 -1
- package/src/resources/extensions/gsd/auto-worktree.ts +50 -11
- package/src/resources/extensions/gsd/auto.ts +36 -8
- package/src/resources/extensions/gsd/bootstrap/core-session-tools.ts +44 -0
- package/src/resources/extensions/gsd/bootstrap/db-tools.ts +8 -4
- package/src/resources/extensions/gsd/bootstrap/register-extension.ts +2 -0
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +171 -23
- package/src/resources/extensions/gsd/bootstrap/tests/write-gate-basepath.test.ts +49 -1
- package/src/resources/extensions/gsd/bootstrap/tool-call-loop-guard.ts +60 -37
- package/src/resources/extensions/gsd/bootstrap/write-gate.ts +39 -5
- package/src/resources/extensions/gsd/closeout-consistency-gate.ts +2 -1
- package/src/resources/extensions/gsd/codebase-generator.ts +179 -18
- package/src/resources/extensions/gsd/commands/handlers/auto.ts +1 -1
- package/src/resources/extensions/gsd/commands/handlers/core.ts +39 -3
- package/src/resources/extensions/gsd/commands-prefs-wizard.ts +136 -2
- package/src/resources/extensions/gsd/commands-usage.ts +1 -1
- package/src/resources/extensions/gsd/commands-worktree.ts +13 -2
- package/src/resources/extensions/gsd/db/engine.ts +8 -1
- package/src/resources/extensions/gsd/db/queries.ts +40 -0
- package/src/resources/extensions/gsd/db-memory-fts-schema.ts +45 -0
- package/src/resources/extensions/gsd/db-workspace.ts +61 -3
- package/src/resources/extensions/gsd/delegation-policy.ts +1 -1
- package/src/resources/extensions/gsd/discussion-handoff.ts +10 -2
- package/src/resources/extensions/gsd/docs/preferences-reference.md +10 -4
- package/src/resources/extensions/gsd/doctor-engine-checks.ts +275 -5
- package/src/resources/extensions/gsd/doctor-providers.ts +39 -10
- package/src/resources/extensions/gsd/doctor-runtime-checks.ts +3 -0
- package/src/resources/extensions/gsd/doctor-types.ts +8 -1
- package/src/resources/extensions/gsd/doctor.ts +95 -3
- package/src/resources/extensions/gsd/exec-sandbox.ts +13 -4
- package/src/resources/extensions/gsd/flat-phase-migration.ts +142 -22
- package/src/resources/extensions/gsd/git-service.ts +70 -9
- package/src/resources/extensions/gsd/gitignore.ts +4 -1
- package/src/resources/extensions/gsd/guidance.ts +2 -0
- package/src/resources/extensions/gsd/guided-flow-queue.ts +20 -13
- package/src/resources/extensions/gsd/guided-flow.ts +45 -2
- package/src/resources/extensions/gsd/json-persistence.ts +20 -0
- package/src/resources/extensions/gsd/key-manager.ts +1 -0
- package/src/resources/extensions/gsd/knowledge-backfill.ts +16 -10
- package/src/resources/extensions/gsd/layout-policy.ts +2 -1
- package/src/resources/extensions/gsd/markdown-renderer.ts +27 -17
- package/src/resources/extensions/gsd/memory-backfill.ts +26 -20
- package/src/resources/extensions/gsd/metrics.ts +4 -4
- package/src/resources/extensions/gsd/migrate-external.ts +17 -4
- package/src/resources/extensions/gsd/migration-auto-check.ts +23 -0
- package/src/resources/extensions/gsd/milestone-ids.ts +31 -2
- package/src/resources/extensions/gsd/model-router.ts +4 -5
- package/src/resources/extensions/gsd/orphan-stash-audit.ts +108 -20
- package/src/resources/extensions/gsd/preferences-diagnostics.ts +24 -0
- package/src/resources/extensions/gsd/preferences-models.ts +6 -3
- package/src/resources/extensions/gsd/preferences-validation.ts +28 -2
- package/src/resources/extensions/gsd/preferences.ts +38 -4
- package/src/resources/extensions/gsd/prompts/code-review.md +6 -4
- package/src/resources/extensions/gsd/prompts/plan-milestone.md +2 -2
- package/src/resources/extensions/gsd/prompts/plan-slice.md +5 -3
- package/src/resources/extensions/gsd/redact-secrets.ts +40 -0
- package/src/resources/extensions/gsd/repository-registry.ts +7 -1
- package/src/resources/extensions/gsd/root-write-leak-guard.ts +13 -1
- package/src/resources/extensions/gsd/safe-fs.ts +22 -2
- package/src/resources/extensions/gsd/safety/destructive-guard.ts +9 -1
- package/src/resources/extensions/gsd/safety/evidence-collector.ts +16 -1
- package/src/resources/extensions/gsd/safety/file-change-validator.ts +8 -2
- package/src/resources/extensions/gsd/skills/gsd-headless/SKILL.md +7 -9
- package/src/resources/extensions/gsd/skills/gsd-headless/references/commands.md +2 -1
- package/src/resources/extensions/gsd/state/derive/cache.ts +46 -0
- package/src/resources/extensions/gsd/state/derive/db-open.ts +45 -0
- package/src/resources/extensions/gsd/state/derive/from-db.ts +561 -0
- package/src/resources/extensions/gsd/state/derive/index.ts +104 -0
- package/src/resources/extensions/gsd/state/derive/interrupted-work.ts +31 -0
- package/src/resources/extensions/gsd/state-reconciliation/drift/stale-render.ts +36 -30
- package/src/resources/extensions/gsd/state-reconciliation/index.ts +50 -24
- package/src/resources/extensions/gsd/state-reconciliation/registry.ts +43 -28
- package/src/resources/extensions/gsd/state.ts +32 -732
- package/src/resources/extensions/gsd/tests/artifact-retry-cap.test.ts +4 -3
- package/src/resources/extensions/gsd/tests/auto-artifact-paths.test.ts +98 -1
- package/src/resources/extensions/gsd/tests/auto-budget-alerts.test.ts +14 -5
- package/src/resources/extensions/gsd/tests/auto-migrating-recovery.test.ts +18 -0
- package/src/resources/extensions/gsd/tests/auto-model-selection.test.ts +178 -0
- package/src/resources/extensions/gsd/tests/auto-pause-double-entry-guard.test.ts +36 -0
- package/src/resources/extensions/gsd/tests/auto-paused-ui-cleanup.test.ts +182 -4
- package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +35 -0
- package/src/resources/extensions/gsd/tests/auto-remote-session-lock-cleanup.test.ts +41 -0
- package/src/resources/extensions/gsd/tests/auto-retry-mcp-churn-fixes.test.ts +30 -0
- package/src/resources/extensions/gsd/tests/auto-runtime-state.test.ts +41 -0
- package/src/resources/extensions/gsd/tests/auto-session-scope.test.ts +4 -4
- package/src/resources/extensions/gsd/tests/auto-start-bootstrap-await-3420.test.ts +3 -0
- package/src/resources/extensions/gsd/tests/auto-timeout-recovery-harness-abort.test.ts +55 -0
- package/src/resources/extensions/gsd/tests/auto-warning-noise-regression.test.ts +8 -0
- package/src/resources/extensions/gsd/tests/batch-task-query.test.ts +85 -0
- package/src/resources/extensions/gsd/tests/check-auto-start-ready-guard.test.ts +29 -0
- package/src/resources/extensions/gsd/tests/codebase-generator.test.ts +365 -0
- package/src/resources/extensions/gsd/tests/commands-gsd-core.test.ts +1 -0
- package/src/resources/extensions/gsd/tests/complete-milestone-excerpt.test.ts +62 -1
- package/src/resources/extensions/gsd/tests/complete-milestone.test.ts +28 -0
- package/src/resources/extensions/gsd/tests/complete-slice-reopen-handoff.test.ts +69 -0
- package/src/resources/extensions/gsd/tests/db-memory-fts-schema.test.ts +58 -3
- package/src/resources/extensions/gsd/tests/decisions-projection-from-memories.test.ts +51 -0
- package/src/resources/extensions/gsd/tests/destructive-guard.test.ts +44 -0
- package/src/resources/extensions/gsd/tests/dispatch-missing-task-plans.test.ts +143 -0
- package/src/resources/extensions/gsd/tests/doctor-providers.test.ts +138 -1
- package/src/resources/extensions/gsd/tests/doctor-scope-db-unavailable.test.ts +296 -2
- package/src/resources/extensions/gsd/tests/doctor-workspace.test.ts +207 -0
- package/src/resources/extensions/gsd/tests/exec-sandbox.test.ts +16 -0
- package/src/resources/extensions/gsd/tests/file-change-validator.test.ts +40 -0
- package/src/resources/extensions/gsd/tests/flat-phase-migration.test.ts +74 -2
- package/src/resources/extensions/gsd/tests/flat-rate-routing-guard.test.ts +87 -19
- package/src/resources/extensions/gsd/tests/gate-1b-orphan-discrimination.test.ts +89 -0
- package/src/resources/extensions/gsd/tests/gitignore-bg-shell-runtime.test.ts +4 -0
- package/src/resources/extensions/gsd/tests/guided-flow-session-isolation.test.ts +9 -0
- package/src/resources/extensions/gsd/tests/integration/git-service.test.ts +11 -2
- package/src/resources/extensions/gsd/tests/integration/state-machine-edge-cases.test.ts +4 -2
- package/src/resources/extensions/gsd/tests/json-persistence-atomic.test.ts +47 -0
- package/src/resources/extensions/gsd/tests/knowledge-backfill-projection.test.ts +35 -0
- package/src/resources/extensions/gsd/tests/markdown-renderer.test.ts +122 -0
- package/src/resources/extensions/gsd/tests/memory-store.test.ts +48 -0
- package/src/resources/extensions/gsd/tests/merge-closeout-consistency-gate.test.ts +31 -1
- package/src/resources/extensions/gsd/tests/metrics-prune-cache-invalidation.test.ts +6 -0
- package/src/resources/extensions/gsd/tests/metrics.test.ts +1 -0
- package/src/resources/extensions/gsd/tests/migrate-external-worktree.test.ts +57 -0
- package/src/resources/extensions/gsd/tests/migration-auto-check.test.ts +70 -0
- package/src/resources/extensions/gsd/tests/orphan-stash-audit.test.ts +91 -7
- package/src/resources/extensions/gsd/tests/parsers-legacy-importers.test.ts +4 -1
- package/src/resources/extensions/gsd/tests/pending-autostart-scope.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +27 -0
- package/src/resources/extensions/gsd/tests/plan-slice.test.ts +103 -4
- package/src/resources/extensions/gsd/tests/plan-task.test.ts +307 -1
- package/src/resources/extensions/gsd/tests/post-mutation-hook.test.ts +4 -2
- package/src/resources/extensions/gsd/tests/preferences.test.ts +150 -0
- package/src/resources/extensions/gsd/tests/prefs-wizard-coverage.test.ts +142 -0
- package/src/resources/extensions/gsd/tests/progressive-planning.test.ts +50 -14
- package/src/resources/extensions/gsd/tests/prompt-budget-enforcement.test.ts +58 -0
- package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +8 -6
- package/src/resources/extensions/gsd/tests/recovery-verify-logs.test.ts +4 -4
- package/src/resources/extensions/gsd/tests/redact-secrets.test.ts +56 -0
- package/src/resources/extensions/gsd/tests/register-hooks-flat-phase-migration.test.ts +73 -0
- package/src/resources/extensions/gsd/tests/register-hooks-loop-guard-auto.test.ts +378 -0
- package/src/resources/extensions/gsd/tests/repository-registry.test.ts +41 -2
- package/src/resources/extensions/gsd/tests/require-slice-discussion-dispatch.test.ts +55 -0
- package/src/resources/extensions/gsd/tests/root-write-leak-guard.test.ts +20 -1
- package/src/resources/extensions/gsd/tests/runtime-invariant-modules.test.ts +15 -3
- package/src/resources/extensions/gsd/tests/stalled-tool-recovery.test.ts +105 -0
- package/src/resources/extensions/gsd/tests/state-reconciliation-drift.test.ts +115 -0
- package/src/resources/extensions/gsd/tests/status-per-repo.test.ts +94 -0
- package/src/resources/extensions/gsd/tests/token-tool-gating.test.ts +35 -0
- package/src/resources/extensions/gsd/tests/tool-call-loop-guard.test.ts +203 -0
- package/src/resources/extensions/gsd/tests/tool-param-optionality.test.ts +6 -3
- package/src/resources/extensions/gsd/tests/undo.test.ts +74 -0
- package/src/resources/extensions/gsd/tests/unit-context-manifest.test.ts +66 -18
- package/src/resources/extensions/gsd/tests/unit-runtime.test.ts +30 -0
- package/src/resources/extensions/gsd/tests/uok-gitops-turn-action.test.ts +90 -0
- package/src/resources/extensions/gsd/tests/validator-scope-parity.test.ts +53 -1
- package/src/resources/extensions/gsd/tests/verification-retry-policy.test.ts +69 -4
- package/src/resources/extensions/gsd/tests/workflow-manifest.test.ts +96 -15
- package/src/resources/extensions/gsd/tests/workflow-mcp-preflight.test.ts +1 -0
- package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +8 -4
- package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +214 -6
- package/src/resources/extensions/gsd/tests/workspace.test.ts +18 -4
- package/src/resources/extensions/gsd/tests/worktree-manager.test.ts +39 -0
- package/src/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +31 -1
- package/src/resources/extensions/gsd/tests/worktree-teardown-safety.test.ts +32 -0
- package/src/resources/extensions/gsd/tools/complete-milestone.ts +3 -2
- package/src/resources/extensions/gsd/tools/complete-slice.ts +3 -30
- package/src/resources/extensions/gsd/tools/complete-task.ts +7 -39
- package/src/resources/extensions/gsd/tools/plan-slice.ts +60 -47
- package/src/resources/extensions/gsd/tools/plan-task.ts +135 -12
- package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +58 -0
- package/src/resources/extensions/gsd/undo.ts +47 -6
- package/src/resources/extensions/gsd/unit-context-manifest.ts +11 -5
- package/src/resources/extensions/gsd/unit-registry.ts +11 -3
- package/src/resources/extensions/gsd/unit-runtime.ts +42 -0
- package/src/resources/extensions/gsd/verification-gate.ts +8 -0
- package/src/resources/extensions/gsd/workflow-manifest.ts +141 -7
- package/src/resources/extensions/gsd/workflow-projections.ts +20 -14
- package/src/resources/extensions/gsd/workspace.ts +42 -8
- package/src/resources/extensions/gsd/worktree-manager.ts +183 -5
- package/dist/web/standalone/.next/static/chunks/2772.bfa657f49f955239.js +0 -1
- package/dist/web/standalone/.next/static/chunks/796.3976108148518f7d.js +0 -10
- package/dist/web/standalone/.next/static/chunks/webpack-7c1d97e39be2da11.js +0 -1
- /package/dist/web/standalone/.next/static/{SzEuqWX37DR9MEpEuQjP1 → kIEFsCryyGy6RzifULbJl}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{SzEuqWX37DR9MEpEuQjP1 → kIEFsCryyGy6RzifULbJl}/_ssgManifest.js +0 -0
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@ It combines a terminal agent, project workflow tools, worktree-aware Git automat
|
|
|
19
19
|
- **Autonomous project workflow** — Break work into milestones, slices, and tasks, then let auto mode plan, implement, verify, and advance.
|
|
20
20
|
- **Worktree-aware Git automation** — Keep implementation work isolated while preserving a reviewable main checkout.
|
|
21
21
|
- **Local project memory** — Store project requirements, decisions, runtime notes, generated plans, summaries, and validation evidence under `.gsd/`.
|
|
22
|
-
- **Multi-provider model routing** — Use the provider your team already has,
|
|
22
|
+
- **Multi-provider model routing** — Use the provider your team already has, including API keys, OAuth providers, and external CLI providers such as Claude Code and Cursor Agent.
|
|
23
23
|
- **Extension surface** — Add project-specific commands, tools, skills, and UI integrations through bundled or community extensions.
|
|
24
24
|
- **Terminal and web surfaces** — Use the TUI by default, or launch `gsd --web` when a visual control plane fits the work better than a terminal.
|
|
25
25
|
|
|
@@ -28,16 +28,16 @@ See [CHANGELOG.md](./CHANGELOG.md) for release-by-release fixes and [Legacy Rele
|
|
|
28
28
|
## Latest Release Highlights
|
|
29
29
|
|
|
30
30
|
<!-- release-highlights:start -->
|
|
31
|
-
Latest release: **v1.
|
|
31
|
+
Latest release: **v1.4.0**
|
|
32
32
|
|
|
33
|
-
- **
|
|
34
|
-
- **
|
|
35
|
-
- **
|
|
36
|
-
- **
|
|
37
|
-
- **
|
|
38
|
-
- **
|
|
39
|
-
- **
|
|
40
|
-
- **
|
|
33
|
+
- **models:** Add Claude Sonnet 5.
|
|
34
|
+
- **Added:** Add Hermes plugin installer.
|
|
35
|
+
- **compat:** Report .planning/ drift in /gsd sync and doctor.
|
|
36
|
+
- **compat:** Project to .planning/ inside renderAllFromDb.
|
|
37
|
+
- **compat:** Add external-planning-edit drift handler.
|
|
38
|
+
- **compat:** Add DB → .planning/ projection writer.
|
|
39
|
+
- **compat:** Extract .planning/ layout detector.
|
|
40
|
+
- **compat:** Extend marker schema 1→2 with planning field.
|
|
41
41
|
|
|
42
42
|
<!-- release-highlights:end -->
|
|
43
43
|
|
|
@@ -158,7 +158,7 @@ Need help choosing settings? Use the [GSD Pi web configurator](https://pi.opengs
|
|
|
158
158
|
gsd
|
|
159
159
|
```
|
|
160
160
|
|
|
161
|
-
Run the setup flow, choose your preferred model provider, and open a project directory. GSD stores project planning and runtime state in `.gsd
|
|
161
|
+
Run the setup flow, choose your preferred model provider, and open a project directory. Cursor Agent users can choose the `cursor-agent` provider after installing and authenticating the local `cursor-agent` CLI; its default model is `composer-2.5`, and `CURSOR_API_KEY` is supported as an auth signal. GSD stores project planning and runtime state in `.gsd/`, with gitignored sibling runtime directories such as `.gsd-backups/` for migration snapshots. Stale `.gsd-backups/migrate-*` snapshots are pruned after 30 days once the flat-phase `.gsd/phases/` migration is complete.
|
|
162
162
|
|
|
163
163
|
For a full first-run walkthrough, see [Getting Started With gsd-pi](./docs/user-docs/getting-started.md).
|
|
164
164
|
|
package/dist/cli.js
CHANGED
|
@@ -22,15 +22,23 @@ import { markStartup, printStartupTimings } from './startup-timings.js';
|
|
|
22
22
|
import { applyRtkProcessEnv, GSD_RTK_DISABLED_ENV, isTruthy } from './rtk-shared.js';
|
|
23
23
|
let piCodingAgentModulePromise;
|
|
24
24
|
let agentCoreModulePromise;
|
|
25
|
-
let
|
|
25
|
+
let interactiveModeModulePromise;
|
|
26
|
+
let printModeModulePromise;
|
|
27
|
+
let rpcModeModulePromise;
|
|
26
28
|
function loadPiCodingAgentModule() {
|
|
27
29
|
return (piCodingAgentModulePromise ??= import('@gsd/pi-coding-agent'));
|
|
28
30
|
}
|
|
29
31
|
function loadAgentCoreModule() {
|
|
30
32
|
return (agentCoreModulePromise ??= import('@gsd/agent-core'));
|
|
31
33
|
}
|
|
32
|
-
function
|
|
33
|
-
return (
|
|
34
|
+
function loadInteractiveModeModule() {
|
|
35
|
+
return (interactiveModeModulePromise ??= import('@gsd/agent-modes/modes/interactive/interactive-mode.js'));
|
|
36
|
+
}
|
|
37
|
+
function loadPrintModeModule() {
|
|
38
|
+
return (printModeModulePromise ??= import('@gsd/agent-modes/modes/print-mode.js'));
|
|
39
|
+
}
|
|
40
|
+
function loadRpcModeModule() {
|
|
41
|
+
return (rpcModeModulePromise ??= import('@gsd/agent-modes/modes/rpc/rpc-mode.js'));
|
|
34
42
|
}
|
|
35
43
|
// ---------------------------------------------------------------------------
|
|
36
44
|
// V8 compile cache — Node 22+ can cache compiled bytecode across runs,
|
|
@@ -511,7 +519,6 @@ if (!isPrintMode &&
|
|
|
511
519
|
}
|
|
512
520
|
const { AuthStorage, DefaultResourceLoader, ModelRegistry, SettingsManager, SessionManager, } = await loadPiCodingAgentModule();
|
|
513
521
|
const { createAgentSession } = await loadAgentCoreModule();
|
|
514
|
-
const { InteractiveMode, runPrintMode, runRpcMode } = await loadAgentModesModule();
|
|
515
522
|
markStartup('loadPiCodingAgent');
|
|
516
523
|
// Pi's tool bootstrap can mis-detect already-installed fd/rg on some systems
|
|
517
524
|
// because spawnSync(..., ["--version"]) returns EPERM despite a zero exit code.
|
|
@@ -530,6 +537,9 @@ markStartup('ModelRegistry');
|
|
|
530
537
|
const settingsManager = SettingsManager.create(process.cwd(), agentDir);
|
|
531
538
|
applySecurityOverrides(settingsManager);
|
|
532
539
|
markStartup('SettingsManager.create');
|
|
540
|
+
const { configureHttpDispatcher } = await import('@gsd/pi-coding-agent/core/http-dispatcher.js');
|
|
541
|
+
configureHttpDispatcher(settingsManager.getHttpIdleTimeoutMs());
|
|
542
|
+
markStartup('configureHttpDispatcher');
|
|
533
543
|
// Run onboarding wizard on first launch (no LLM provider configured)
|
|
534
544
|
if (!isPrintMode && shouldRunOnboarding(authStorage, settingsManager.getDefaultProvider())) {
|
|
535
545
|
await runOnboarding(authStorage);
|
|
@@ -651,6 +661,7 @@ if (isPrintMode) {
|
|
|
651
661
|
applyModelOverride(session, modelRegistry, cliFlags.model);
|
|
652
662
|
const mode = cliFlags.mode || 'text';
|
|
653
663
|
if (mode === 'rpc') {
|
|
664
|
+
const { runRpcMode } = await loadRpcModeModule();
|
|
654
665
|
printStartupTimings();
|
|
655
666
|
await runRpcMode(session);
|
|
656
667
|
process.exit(0);
|
|
@@ -674,6 +685,7 @@ if (isPrintMode) {
|
|
|
674
685
|
// MCP server runs until the transport closes; keep alive
|
|
675
686
|
await new Promise(() => { });
|
|
676
687
|
}
|
|
688
|
+
const { runPrintMode } = await loadPrintModeModule();
|
|
677
689
|
printStartupTimings();
|
|
678
690
|
await runPrintMode(session, {
|
|
679
691
|
mode: mode,
|
|
@@ -809,6 +821,7 @@ if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
|
|
809
821
|
: 'stdout is';
|
|
810
822
|
printNonTtyErrorAndExit(missing, true);
|
|
811
823
|
}
|
|
824
|
+
const { InteractiveMode } = await loadInteractiveModeModule();
|
|
812
825
|
const interactiveMode = new InteractiveMode(session);
|
|
813
826
|
markStartup('InteractiveMode');
|
|
814
827
|
printStartupTimings();
|
package/dist/headless-answers.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* default auto-responder or supervised mode.
|
|
7
7
|
*/
|
|
8
8
|
import { readFileSync } from 'node:fs';
|
|
9
|
-
import { serializeJsonLine } from '@gsd/agent-modes';
|
|
9
|
+
import { serializeJsonLine } from '@gsd/agent-modes/modes/rpc/jsonl.js';
|
|
10
10
|
import { canonicalHeadlessToolName } from './headless-events.js';
|
|
11
11
|
export function normalizeQuestionId(id) {
|
|
12
12
|
return id.trim().toLowerCase().replace(/[-\s]+/g, '_').replace(/_confirm$/, '');
|
package/dist/headless-ui.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* formats progress events for stderr output, and reads orchestrator
|
|
6
6
|
* commands from stdin in supervised mode.
|
|
7
7
|
*/
|
|
8
|
-
import { RpcClient } from '@gsd/agent-modes';
|
|
8
|
+
import type { RpcClient } from '@gsd/agent-modes/modes/rpc/rpc-client.js';
|
|
9
9
|
interface ExtensionUIRequest {
|
|
10
10
|
type: 'extension_ui_request';
|
|
11
11
|
id: string;
|
package/dist/headless-ui.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* formats progress events for stderr output, and reads orchestrator
|
|
6
6
|
* commands from stdin in supervised mode.
|
|
7
7
|
*/
|
|
8
|
-
import { attachJsonlLineReader } from '@gsd/agent-modes';
|
|
8
|
+
import { attachJsonlLineReader } from '@gsd/agent-modes/modes/rpc/jsonl.js';
|
|
9
9
|
// ---------------------------------------------------------------------------
|
|
10
10
|
// ANSI Color Helpers
|
|
11
11
|
// ---------------------------------------------------------------------------
|
package/dist/headless.js
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
import { existsSync, mkdirSync, writeFileSync, writeSync } from 'node:fs';
|
|
15
15
|
import { join } from 'node:path';
|
|
16
16
|
import { resolve } from 'node:path';
|
|
17
|
-
import { RpcClient } from '@gsd/agent-modes';
|
|
17
|
+
import { RpcClient } from '@gsd/agent-modes/modes/rpc/rpc-client.js';
|
|
18
18
|
import { SessionManager } from '@gsd/pi-coding-agent';
|
|
19
19
|
import { getProjectSessionsDir } from './project-sessions.js';
|
|
20
20
|
import { loadAndValidateAnswerFile, AnswerInjector } from './headless-answers.js';
|
package/dist/onboarding.js
CHANGED
|
@@ -16,6 +16,7 @@ import { renderGsdPiLogo, GSD_PI_BRAND, GSD_WEBSITE } from './logo.js';
|
|
|
16
16
|
import { agentDir } from './app-paths.js';
|
|
17
17
|
import { isClaudeCliReady } from './claude-cli-check.js';
|
|
18
18
|
import { isAntigravityCliReady, isGeminiCliReady } from './resources/extensions/google-cli/readiness.js';
|
|
19
|
+
import { isCursorAgentReady } from './resources/extensions/cursor-cli/readiness.js';
|
|
19
20
|
import { markOnboardingComplete, markStepCompleted, markStepSkipped, isOnboardingComplete, } from './resources/extensions/gsd/onboarding-state.js';
|
|
20
21
|
import { getLlmProviderIds } from './resources/extensions/gsd/setup-catalog.js';
|
|
21
22
|
// ─── Constants ────────────────────────────────────────────────────────────────
|
|
@@ -359,6 +360,9 @@ export async function runLlmStep(p, pc, authStorage) {
|
|
|
359
360
|
if (isClaudeCliReady()) {
|
|
360
361
|
authOptions.push({ value: 'claude-cli', label: 'Use Claude Code CLI', hint: 'uses your existing Claude subscription' });
|
|
361
362
|
}
|
|
363
|
+
if (isCursorAgentReady()) {
|
|
364
|
+
authOptions.push({ value: 'cursor-agent-cli', label: 'Use Cursor Agent', hint: 'uses your existing Cursor subscription' });
|
|
365
|
+
}
|
|
362
366
|
if (isAntigravityCliReady()) {
|
|
363
367
|
authOptions.push({ value: 'antigravity-cli', label: 'Use Antigravity CLI', hint: 'recommended — replaces Gemini CLI for individuals' });
|
|
364
368
|
}
|
|
@@ -388,6 +392,13 @@ export async function runLlmStep(p, pc, authStorage) {
|
|
|
388
392
|
persistDefaultProvider('claude-code');
|
|
389
393
|
return true;
|
|
390
394
|
}
|
|
395
|
+
if (method === 'cursor-agent-cli') {
|
|
396
|
+
p.log.success('Cursor Agent detected — routing through local CLI');
|
|
397
|
+
p.log.info('Your Cursor subscription will be used for inference. No API key needed.');
|
|
398
|
+
authStorage.set('cursor-agent', { type: 'api_key', key: 'cli' });
|
|
399
|
+
persistDefaultProvider('cursor-agent');
|
|
400
|
+
return true;
|
|
401
|
+
}
|
|
391
402
|
if (method === 'gemini-cli') {
|
|
392
403
|
p.log.warn('Google Gemini CLI is deprecated for individual users — install Antigravity: https://antigravity.google');
|
|
393
404
|
p.log.success('Google Gemini CLI detected — routing through local CLI');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
b92be6014924117b
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
> **When to read this:** At the start of any session working on GSD-managed work, or when loaded by `/gsd`.
|
|
6
6
|
>
|
|
7
7
|
> **After reading this, always read `.gsd/STATE.md` to find out what's next.**
|
|
8
|
-
> If the milestone has a `CONTEXT.md`, read that too. If the active slice has an `
|
|
8
|
+
> If the milestone has a `NN-CONTEXT.md`, read that too. If the active slice has an `NN-MM-CONTEXT.md`, read that as well — these files contain project-specific decisions, reference paths, and implementation guidance that this generic methodology doc does not.
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
Read these files in order and act on what they say:
|
|
15
15
|
|
|
16
16
|
1. **`.gsd/STATE.md`** — Where are we? What's the next action?
|
|
17
|
-
2. **`.gsd/phases/<
|
|
18
|
-
3. **`.gsd/phases/<
|
|
19
|
-
4. If a slice is active and has one, read
|
|
20
|
-
5. If a slice is active, read its
|
|
17
|
+
2. **`.gsd/phases/<NN-slug>/<NN>-ROADMAP.md`** — What's the plan? Which slices are done? (`STATE.md` tells you which milestone is active)
|
|
18
|
+
3. **`.gsd/phases/<NN-slug>/<NN>-CONTEXT.md`** — Milestone-level project decisions, reference paths, constraints. Read this before doing implementation work.
|
|
19
|
+
4. If a slice is active and has one, read **`<NN>-<MM>-CONTEXT.md`** — Slice-specific decisions and constraints.
|
|
20
|
+
5. If a slice is active, read its **`<NN>-<MM>-PLAN.md`** — Which tasks exist? Which are done?
|
|
21
21
|
6. If `.gsd/CODEBASE.md` exists, skim it for fast structural orientation before broad code exploration.
|
|
22
22
|
7. If a task was interrupted, check for **`continue.md`** in the active slice directory — Resume from there.
|
|
23
23
|
|
|
@@ -47,22 +47,17 @@ All artifacts live in `.gsd/` at the project root:
|
|
|
47
47
|
DECISIONS.md # Append-only decisions register
|
|
48
48
|
CODEBASE.md # Generated codebase map cache (auto-refreshed by GSD)
|
|
49
49
|
phases/
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
S01-UAT.md # Non-blocking human test script (written on completion)
|
|
62
|
-
continue.md # Ephemeral: resume point if interrupted
|
|
63
|
-
tasks/
|
|
64
|
-
T01-PLAN.md # Individual task plan
|
|
65
|
-
T01-SUMMARY.md # Task summary with frontmatter
|
|
50
|
+
01-foundation/
|
|
51
|
+
01-ROADMAP.md # Milestone plan (checkboxes = state)
|
|
52
|
+
01-CONTEXT.md # Optional: user decisions from discuss phase
|
|
53
|
+
01-RESEARCH.md # Optional: codebase/tech research
|
|
54
|
+
01-SUMMARY.md # Milestone rollup (updated as slices complete)
|
|
55
|
+
01-01-PLAN.md # Task decomposition for the first slice
|
|
56
|
+
01-01-CONTEXT.md # Optional: slice-level user decisions
|
|
57
|
+
01-01-RESEARCH.md # Optional: slice-level research
|
|
58
|
+
01-01-SUMMARY.md # Slice summary (written on completion)
|
|
59
|
+
01-01-UAT.md # Non-blocking human test script (written on completion)
|
|
60
|
+
01-01-CONTINUE.md # Ephemeral: resume point if interrupted
|
|
66
61
|
```
|
|
67
62
|
|
|
68
63
|
---
|
|
@@ -424,7 +419,7 @@ key_decisions:
|
|
|
424
419
|
patterns_established:
|
|
425
420
|
- "Pattern name and where it lives"
|
|
426
421
|
drill_down_paths:
|
|
427
|
-
- .gsd/phases/
|
|
422
|
+
- .gsd/phases/01-foundation/01-01-PLAN.md
|
|
428
423
|
duration: 15min
|
|
429
424
|
verification_result: pass
|
|
430
425
|
completed_at: 2026-03-07T16:00:00Z
|
|
@@ -635,10 +630,10 @@ These are soft caps — exceed them when genuinely needed, but don't let summari
|
|
|
635
630
|
|
|
636
631
|
This methodology doc is generic. Project-specific guidance belongs in the milestone and slice context files:
|
|
637
632
|
|
|
638
|
-
- **`.gsd/phases/<
|
|
639
|
-
- **`.gsd/phases/<
|
|
633
|
+
- **`.gsd/phases/<NN-slug>/<NN>-CONTEXT.md`** — milestone-level architecture decisions, reference file paths, and implementation constraints
|
|
634
|
+
- **`.gsd/phases/<NN-slug>/<NN>-<MM>-CONTEXT.md`** — slice-level decisions, edge cases, and narrow implementation guidance when present
|
|
640
635
|
|
|
641
|
-
**Always read the active milestone's
|
|
636
|
+
**Always read the active milestone's `<NN>-CONTEXT.md` before starting implementation work.** If the active slice also has `<NN>-<MM>-CONTEXT.md`, read that too. These files tell you what decisions are locked, what files to reference, and how to verify your work in this specific project.
|
|
642
637
|
|
|
643
638
|
---
|
|
644
639
|
|
|
@@ -46,6 +46,15 @@ export const CLAUDE_CODE_MODELS = [
|
|
|
46
46
|
contextWindow: 1_000_000,
|
|
47
47
|
maxTokens: 128_000,
|
|
48
48
|
},
|
|
49
|
+
{
|
|
50
|
+
id: "claude-sonnet-5",
|
|
51
|
+
name: "Claude Sonnet 5 (via Claude Code)",
|
|
52
|
+
reasoning: true,
|
|
53
|
+
input: ["text", "image"],
|
|
54
|
+
cost: ZERO_COST,
|
|
55
|
+
contextWindow: 1_000_000,
|
|
56
|
+
maxTokens: 128_000,
|
|
57
|
+
},
|
|
49
58
|
{
|
|
50
59
|
id: "claude-sonnet-4-6",
|
|
51
60
|
name: "Claude Sonnet 4.6 (via Claude Code)",
|
|
@@ -1785,6 +1785,8 @@ function createSdkAttemptMessageState() {
|
|
|
1785
1785
|
builder: null,
|
|
1786
1786
|
intermediateToolBlocks: [],
|
|
1787
1787
|
toolResultsById: new Map(),
|
|
1788
|
+
toolCompletionTargetsById: new Map(),
|
|
1789
|
+
emittedExternalToolResultIds: new Set(),
|
|
1788
1790
|
};
|
|
1789
1791
|
}
|
|
1790
1792
|
/** Async pump that drives the Claude Agent SDK's async-iterable message stream and pushes events into `stream`. */
|
|
@@ -1890,7 +1892,7 @@ async function pumpSdkMessages(model, context, options, stream) {
|
|
|
1890
1892
|
}
|
|
1891
1893
|
}
|
|
1892
1894
|
sdkAttemptLoop: for (let readinessAttempt = 0;; readinessAttempt++) {
|
|
1893
|
-
let { builder, intermediateToolBlocks, toolResultsById } = createSdkAttemptMessageState();
|
|
1895
|
+
let { builder, intermediateToolBlocks, toolResultsById, toolCompletionTargetsById, emittedExternalToolResultIds, } = createSdkAttemptMessageState();
|
|
1894
1896
|
const controller = new AbortController();
|
|
1895
1897
|
const forwardAbort = () => controller.abort();
|
|
1896
1898
|
if (options?.signal) {
|
|
@@ -2009,7 +2011,7 @@ async function pumpSdkMessages(model, context, options, stream) {
|
|
|
2009
2011
|
case "user": {
|
|
2010
2012
|
// Capture content from the completed turn before resetting
|
|
2011
2013
|
if (builder) {
|
|
2012
|
-
for (const block of builder.message.content) {
|
|
2014
|
+
for (const [contentIndex, block] of builder.message.content.entries()) {
|
|
2013
2015
|
if (block.type === "text" && block.text) {
|
|
2014
2016
|
lastTextContent = block.text;
|
|
2015
2017
|
}
|
|
@@ -2019,6 +2021,10 @@ async function pumpSdkMessages(model, context, options, stream) {
|
|
|
2019
2021
|
else if (block.type === "toolCall" || block.type === "serverToolUse") {
|
|
2020
2022
|
// Collect tool blocks for externalToolExecution rendering
|
|
2021
2023
|
intermediateToolBlocks.push(block);
|
|
2024
|
+
toolCompletionTargetsById.set(block.id, {
|
|
2025
|
+
partial: builder.message,
|
|
2026
|
+
contentIndex,
|
|
2027
|
+
});
|
|
2022
2028
|
}
|
|
2023
2029
|
}
|
|
2024
2030
|
}
|
|
@@ -2031,61 +2037,66 @@ async function pumpSdkMessages(model, context, options, stream) {
|
|
|
2031
2037
|
// Push a synthetic toolcall_end for each tool call from this turn
|
|
2032
2038
|
// so the TUI can render tool results in real-time during the SDK
|
|
2033
2039
|
// session instead of waiting until the entire session completes.
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
|
|
2043
|
-
|
|
2044
|
-
|
|
2045
|
-
|
|
2046
|
-
|
|
2047
|
-
|
|
2048
|
-
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
toolCall: block,
|
|
2052
|
-
partial: builder.message,
|
|
2053
|
-
});
|
|
2054
|
-
block.externalResult = extResult;
|
|
2055
|
-
continue;
|
|
2056
|
-
}
|
|
2057
|
-
try {
|
|
2058
|
-
await onExternalToolResult?.({
|
|
2059
|
-
toolCall: block,
|
|
2060
|
-
result: extResult,
|
|
2061
|
-
});
|
|
2062
|
-
}
|
|
2063
|
-
catch (error) {
|
|
2064
|
-
console.warn("[claude-code] onExternalToolResult callback failed:", error);
|
|
2065
|
-
}
|
|
2040
|
+
for (const block of intermediateToolBlocks) {
|
|
2041
|
+
if (block.type !== "toolCall" && block.type !== "serverToolUse")
|
|
2042
|
+
continue;
|
|
2043
|
+
if (emittedExternalToolResultIds.has(block.id))
|
|
2044
|
+
continue;
|
|
2045
|
+
const target = toolCompletionTargetsById.get(block.id);
|
|
2046
|
+
if (!target)
|
|
2047
|
+
continue;
|
|
2048
|
+
const extResult = block.externalResult;
|
|
2049
|
+
if (!extResult)
|
|
2050
|
+
continue;
|
|
2051
|
+
const suppressDuplicateUnavailable = shouldSuppressDuplicateToolUnavailableBlock(block, target.partial.content);
|
|
2052
|
+
// Push synthetic completion events with result attached so the
|
|
2053
|
+
// chat-controller can update pending ToolExecutionComponents.
|
|
2054
|
+
if (block.type === "toolCall") {
|
|
2055
|
+
if (suppressDuplicateUnavailable) {
|
|
2056
|
+
delete block.externalResult;
|
|
2066
2057
|
stream.push({
|
|
2067
2058
|
type: "toolcall_end",
|
|
2068
|
-
contentIndex,
|
|
2059
|
+
contentIndex: target.contentIndex,
|
|
2069
2060
|
toolCall: block,
|
|
2070
|
-
partial:
|
|
2061
|
+
partial: target.partial,
|
|
2071
2062
|
});
|
|
2063
|
+
block.externalResult = extResult;
|
|
2064
|
+
emittedExternalToolResultIds.add(block.id);
|
|
2065
|
+
continue;
|
|
2072
2066
|
}
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
|
|
2077
|
-
result: extResult,
|
|
2078
|
-
});
|
|
2079
|
-
}
|
|
2080
|
-
catch (error) {
|
|
2081
|
-
console.warn("[claude-code] onExternalToolResult callback failed:", error);
|
|
2082
|
-
}
|
|
2083
|
-
stream.push({
|
|
2084
|
-
type: "server_tool_use",
|
|
2085
|
-
contentIndex,
|
|
2086
|
-
partial: builder.message,
|
|
2067
|
+
try {
|
|
2068
|
+
await onExternalToolResult?.({
|
|
2069
|
+
toolCall: block,
|
|
2070
|
+
result: extResult,
|
|
2087
2071
|
});
|
|
2088
2072
|
}
|
|
2073
|
+
catch (error) {
|
|
2074
|
+
console.warn("[claude-code] onExternalToolResult callback failed:", error);
|
|
2075
|
+
}
|
|
2076
|
+
stream.push({
|
|
2077
|
+
type: "toolcall_end",
|
|
2078
|
+
contentIndex: target.contentIndex,
|
|
2079
|
+
toolCall: block,
|
|
2080
|
+
partial: target.partial,
|
|
2081
|
+
});
|
|
2082
|
+
emittedExternalToolResultIds.add(block.id);
|
|
2083
|
+
}
|
|
2084
|
+
else if (block.type === "serverToolUse") {
|
|
2085
|
+
try {
|
|
2086
|
+
await onExternalToolResult?.({
|
|
2087
|
+
toolCall: serverToolUseToToolCallLike(block),
|
|
2088
|
+
result: extResult,
|
|
2089
|
+
});
|
|
2090
|
+
}
|
|
2091
|
+
catch (error) {
|
|
2092
|
+
console.warn("[claude-code] onExternalToolResult callback failed:", error);
|
|
2093
|
+
}
|
|
2094
|
+
stream.push({
|
|
2095
|
+
type: "server_tool_use",
|
|
2096
|
+
contentIndex: target.contentIndex,
|
|
2097
|
+
partial: target.partial,
|
|
2098
|
+
});
|
|
2099
|
+
emittedExternalToolResultIds.add(block.id);
|
|
2089
2100
|
}
|
|
2090
2101
|
}
|
|
2091
2102
|
builder = null;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { CURSOR_AGENT_MODELS } from "./models.js";
|
|
2
|
+
import { isCursorAgentReady } from "./readiness.js";
|
|
3
|
+
import { streamViaCursorAgent } from "./stream-adapter.js";
|
|
4
|
+
export default function cursorCli(pi) {
|
|
5
|
+
if (process.env.GSD_CURSOR_DISABLE === "1")
|
|
6
|
+
return;
|
|
7
|
+
pi.registerProvider("cursor-agent", {
|
|
8
|
+
name: "Cursor Agent",
|
|
9
|
+
authMode: "externalCli",
|
|
10
|
+
api: "cursor-stream-json",
|
|
11
|
+
baseUrl: "local://cursor-agent",
|
|
12
|
+
isReady: isCursorAgentReady,
|
|
13
|
+
streamSimple: streamViaCursorAgent,
|
|
14
|
+
models: CURSOR_AGENT_MODELS,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
const ZERO_COST = {
|
|
2
|
+
input: 0,
|
|
3
|
+
output: 0,
|
|
4
|
+
cacheRead: 0,
|
|
5
|
+
cacheWrite: 0,
|
|
6
|
+
};
|
|
7
|
+
const CURSOR_INPUT = ["text"];
|
|
8
|
+
export const CURSOR_AGENT_MODELS = [
|
|
9
|
+
{
|
|
10
|
+
id: "composer-2.5",
|
|
11
|
+
name: "Composer 2.5 (via Cursor)",
|
|
12
|
+
reasoning: true,
|
|
13
|
+
input: CURSOR_INPUT,
|
|
14
|
+
cost: ZERO_COST,
|
|
15
|
+
contextWindow: 1_000_000,
|
|
16
|
+
maxTokens: 64_000,
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
id: "claude-sonnet-4-6",
|
|
20
|
+
name: "Claude Sonnet 4.6 (via Cursor)",
|
|
21
|
+
reasoning: true,
|
|
22
|
+
input: CURSOR_INPUT,
|
|
23
|
+
cost: ZERO_COST,
|
|
24
|
+
contextWindow: 1_000_000,
|
|
25
|
+
maxTokens: 64_000,
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
id: "claude-opus-4-7",
|
|
29
|
+
name: "Claude Opus 4.7 (via Cursor)",
|
|
30
|
+
reasoning: true,
|
|
31
|
+
input: CURSOR_INPUT,
|
|
32
|
+
cost: ZERO_COST,
|
|
33
|
+
contextWindow: 1_000_000,
|
|
34
|
+
maxTokens: 128_000,
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
id: "gpt-5.5",
|
|
38
|
+
name: "GPT-5.5 (via Cursor)",
|
|
39
|
+
reasoning: true,
|
|
40
|
+
input: CURSOR_INPUT,
|
|
41
|
+
cost: ZERO_COST,
|
|
42
|
+
contextWindow: 1_000_000,
|
|
43
|
+
maxTokens: 128_000,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: "gemini-2.5-pro",
|
|
47
|
+
name: "Gemini 2.5 Pro (via Cursor)",
|
|
48
|
+
reasoning: true,
|
|
49
|
+
input: CURSOR_INPUT,
|
|
50
|
+
cost: ZERO_COST,
|
|
51
|
+
contextWindow: 1_000_000,
|
|
52
|
+
maxTokens: 65_536,
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
id: "grok-4",
|
|
56
|
+
name: "Grok 4 (via Cursor)",
|
|
57
|
+
reasoning: true,
|
|
58
|
+
input: CURSOR_INPUT,
|
|
59
|
+
cost: ZERO_COST,
|
|
60
|
+
contextWindow: 256_000,
|
|
61
|
+
maxTokens: 64_000,
|
|
62
|
+
},
|
|
63
|
+
];
|