@opengsd/gsd-pi 1.2.0-dev.fbdca60b → 1.3.0-dev.65546769
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 +13 -7
- package/dist/cli.js +28 -1
- package/dist/headless-context.js +0 -1
- package/dist/headless-events.d.ts +16 -1
- package/dist/headless-events.js +19 -2
- package/dist/headless.js +8 -1
- package/dist/help-text.js +29 -0
- package/dist/hermes-integration-install.d.ts +17 -0
- package/dist/hermes-integration-install.js +199 -0
- package/dist/jiti-workspace-aliases.d.ts +11 -2
- package/dist/jiti-workspace-aliases.js +19 -3
- package/dist/onboarding.js +9 -4
- package/dist/provider-migrations.d.ts +23 -0
- package/dist/provider-migrations.js +41 -0
- package/dist/read-cli.d.ts +23 -0
- package/dist/read-cli.js +90 -0
- package/dist/resource-loader.d.ts +3 -3
- package/dist/resource-loader.js +4 -13
- package/dist/resources/.managed-resources-content-hash +1 -1
- package/dist/resources/GSD-WORKFLOW.md +22 -22
- package/dist/resources/extensions/claude-code-cli/index.js +7 -1
- package/dist/resources/extensions/claude-code-cli/stream-adapter.js +73 -20
- package/dist/resources/extensions/google-cli/stream-adapter.js +16 -1
- package/dist/resources/extensions/gsd/auto/dispatch-history.js +6 -1
- package/dist/resources/extensions/gsd/auto/loop.js +67 -2
- package/dist/resources/extensions/gsd/auto/orchestrator.js +50 -10
- package/dist/resources/extensions/gsd/auto/pre-dispatch.js +8 -0
- package/dist/resources/extensions/gsd/auto/workflow-kernel.js +15 -1
- package/dist/resources/extensions/gsd/auto-artifact-paths.js +81 -19
- 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 +47 -8
- package/dist/resources/extensions/gsd/auto-model-selection.js +14 -8
- package/dist/resources/extensions/gsd/auto-post-unit.js +39 -29
- package/dist/resources/extensions/gsd/auto-prompts.js +44 -30
- package/dist/resources/extensions/gsd/auto-recovery.js +118 -40
- package/dist/resources/extensions/gsd/auto-runtime-state.js +13 -0
- package/dist/resources/extensions/gsd/auto-start.js +58 -31
- package/dist/resources/extensions/gsd/auto-verification.js +5 -2
- package/dist/resources/extensions/gsd/auto-worktree.js +149 -91
- package/dist/resources/extensions/gsd/auto.js +97 -31
- package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +42 -54
- package/dist/resources/extensions/gsd/bootstrap/fallback-continuation.js +25 -0
- package/dist/resources/extensions/gsd/bootstrap/register-extension.js +24 -2
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +108 -9
- package/dist/resources/extensions/gsd/bootstrap/system-context.js +164 -44
- package/dist/resources/extensions/gsd/bootstrap/tool-search-shim.js +22 -3
- package/dist/resources/extensions/gsd/bootstrap/write-gate.js +113 -27
- package/dist/resources/extensions/gsd/closeout-consistency-gate.js +92 -4
- package/dist/resources/extensions/gsd/closeout-wizard.js +8 -3
- package/dist/resources/extensions/gsd/codebase-generator.js +5 -8
- package/dist/resources/extensions/gsd/commands/catalog.js +6 -0
- package/dist/resources/extensions/gsd/commands/dispatcher.js +3 -0
- package/dist/resources/extensions/gsd/commands/gsd-core-aliases-handler.js +39 -0
- package/dist/resources/extensions/gsd/commands/gsd-core-aliases.js +44 -0
- package/dist/resources/extensions/gsd/commands/handlers/core.js +52 -8
- package/dist/resources/extensions/gsd/commands/handlers/ops.js +227 -3
- package/dist/resources/extensions/gsd/commands-cmux.js +3 -1
- package/dist/resources/extensions/gsd/commands-gsd-core.js +868 -0
- package/dist/resources/extensions/gsd/commands-handlers.js +67 -1
- package/dist/resources/extensions/gsd/commands-maintenance.js +79 -2
- package/dist/resources/extensions/gsd/commands-prefs-wizard.js +14 -1
- package/dist/resources/extensions/gsd/commands-verdict.js +17 -11
- package/dist/resources/extensions/gsd/compat/compat-marker.js +172 -0
- package/dist/resources/extensions/gsd/compat/index.js +3 -0
- package/dist/resources/extensions/gsd/compat/planning-compat.js +142 -0
- package/dist/resources/extensions/gsd/config-overlay.js +11 -8
- package/dist/resources/extensions/gsd/consent-question.js +12 -0
- package/dist/resources/extensions/gsd/consent-verdict.js +10 -0
- package/dist/resources/extensions/gsd/dashboard-overlay.js +39 -3
- package/dist/resources/extensions/gsd/db/engine.js +27 -0
- package/dist/resources/extensions/gsd/db/queries.js +54 -0
- package/dist/resources/extensions/gsd/db/unit-dispatches.js +22 -1
- package/dist/resources/extensions/gsd/db/writers/reconcile.js +19 -1
- package/dist/resources/extensions/gsd/db-workspace.js +13 -1
- package/dist/resources/extensions/gsd/discussion-handoff.js +9 -5
- package/dist/resources/extensions/gsd/doctor-git-checks.js +30 -4
- package/dist/resources/extensions/gsd/doctor-providers.js +1 -1
- package/dist/resources/extensions/gsd/doctor-runtime-checks.js +13 -24
- package/dist/resources/extensions/gsd/doctor.js +28 -7
- package/dist/resources/extensions/gsd/error-classifier.js +13 -1
- package/dist/resources/extensions/gsd/escalation.js +11 -4
- package/dist/resources/extensions/gsd/export-html.js +10 -3
- package/dist/resources/extensions/gsd/export.js +73 -0
- package/dist/resources/extensions/gsd/file-lock.js +1 -1
- package/dist/resources/extensions/gsd/flat-phase-migration.js +176 -0
- package/dist/resources/extensions/gsd/forensics.js +2 -1
- package/dist/resources/extensions/gsd/git-service.js +7 -4
- package/dist/resources/extensions/gsd/gitignore.js +6 -2
- package/dist/resources/extensions/gsd/guidance.js +7 -7
- package/dist/resources/extensions/gsd/guided-flow.js +11 -6
- package/dist/resources/extensions/gsd/layout-policy.js +75 -0
- package/dist/resources/extensions/gsd/markdown-renderer.js +391 -116
- package/dist/resources/extensions/gsd/mcp-filter.js +44 -10
- package/dist/resources/extensions/gsd/md-importer.js +153 -51
- package/dist/resources/extensions/gsd/metrics.js +19 -11
- package/dist/resources/extensions/gsd/migrate/layout-detect.js +32 -0
- package/dist/resources/extensions/gsd/migrate/planning-writer.js +203 -0
- package/dist/resources/extensions/gsd/migrate-external.js +51 -6
- package/dist/resources/extensions/gsd/migration-auto-check.js +5 -14
- package/dist/resources/extensions/gsd/milestone-actions.js +5 -3
- package/dist/resources/extensions/gsd/milestone-closeout.js +12 -2
- package/dist/resources/extensions/gsd/milestone-ids.js +50 -19
- package/dist/resources/extensions/gsd/milestone-planning-persistence.js +8 -0
- package/dist/resources/extensions/gsd/milestone-validation-verdict.js +7 -4
- package/dist/resources/extensions/gsd/model-router.js +79 -20
- package/dist/resources/extensions/gsd/notification-store.js +22 -29
- package/dist/resources/extensions/gsd/notifications.js +36 -7
- package/dist/resources/extensions/gsd/observability-validator.js +12 -4
- package/dist/resources/extensions/gsd/parallel-monitor-overlay.js +133 -35
- package/dist/resources/extensions/gsd/parsers-legacy.js +40 -14
- package/dist/resources/extensions/gsd/paths.js +356 -44
- package/dist/resources/extensions/gsd/planning-depth.js +2 -1
- package/dist/resources/extensions/gsd/post-execution-checks.js +26 -3
- package/dist/resources/extensions/gsd/preferences-models.js +34 -14
- package/dist/resources/extensions/gsd/preferences.js +148 -13
- package/dist/resources/extensions/gsd/prompts/ai-integration-phase.md +28 -0
- package/dist/resources/extensions/gsd/prompts/audit-fix.md +39 -0
- package/dist/resources/extensions/gsd/prompts/audit-milestone.md +26 -0
- package/dist/resources/extensions/gsd/prompts/audit-uat.md +24 -0
- package/dist/resources/extensions/gsd/prompts/autonomous.md +31 -0
- package/dist/resources/extensions/gsd/prompts/code-review.md +37 -0
- package/dist/resources/extensions/gsd/prompts/complete-milestone.md +8 -2
- package/dist/resources/extensions/gsd/prompts/complete-slice.md +24 -15
- package/dist/resources/extensions/gsd/prompts/discuss-phase.md +31 -0
- package/dist/resources/extensions/gsd/prompts/docs-update.md +13 -0
- package/dist/resources/extensions/gsd/prompts/execute-phase.md +33 -0
- package/dist/resources/extensions/gsd/prompts/execute-task.md +5 -1
- package/dist/resources/extensions/gsd/prompts/explore.md +58 -0
- package/dist/resources/extensions/gsd/prompts/graphify.md +27 -0
- package/dist/resources/extensions/gsd/prompts/health.md +37 -0
- package/dist/resources/extensions/gsd/prompts/import.md +30 -0
- package/dist/resources/extensions/gsd/prompts/inbox.md +27 -0
- package/dist/resources/extensions/gsd/prompts/ingest-docs.md +30 -0
- package/dist/resources/extensions/gsd/prompts/manager.md +21 -0
- package/dist/resources/extensions/gsd/prompts/map-codebase.md +42 -0
- package/dist/resources/extensions/gsd/prompts/milestone-summary.md +27 -0
- package/dist/resources/extensions/gsd/prompts/mvp-phase.md +23 -0
- package/dist/resources/extensions/gsd/prompts/pause-work.md +24 -0
- package/dist/resources/extensions/gsd/prompts/phase.md +22 -0
- package/dist/resources/extensions/gsd/prompts/plan-phase.md +34 -0
- package/dist/resources/extensions/gsd/prompts/plan-review-convergence.md +34 -0
- package/dist/resources/extensions/gsd/prompts/profile-user.md +28 -0
- package/dist/resources/extensions/gsd/prompts/progress.md +30 -0
- 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/resume-work.md +20 -0
- package/dist/resources/extensions/gsd/prompts/review-backlog.md +21 -0
- package/dist/resources/extensions/gsd/prompts/review.md +27 -0
- package/dist/resources/extensions/gsd/prompts/run-uat.md +5 -1
- package/dist/resources/extensions/gsd/prompts/secure-phase.md +24 -0
- package/dist/resources/extensions/gsd/prompts/settings.md +24 -0
- package/dist/resources/extensions/gsd/prompts/sketch.md +59 -0
- package/dist/resources/extensions/gsd/prompts/spec-phase.md +29 -0
- package/dist/resources/extensions/gsd/prompts/spike.md +59 -0
- package/dist/resources/extensions/gsd/prompts/stats.md +43 -0
- package/dist/resources/extensions/gsd/prompts/surface.md +25 -0
- package/dist/resources/extensions/gsd/prompts/thread.md +24 -0
- package/dist/resources/extensions/gsd/prompts/triage-captures.md +1 -1
- package/dist/resources/extensions/gsd/prompts/ui-phase.md +29 -0
- package/dist/resources/extensions/gsd/prompts/ui-review.md +29 -0
- package/dist/resources/extensions/gsd/prompts/ultraplan-phase.md +24 -0
- package/dist/resources/extensions/gsd/prompts/validate-phase.md +26 -0
- package/dist/resources/extensions/gsd/prompts/verify-work.md +24 -0
- package/dist/resources/extensions/gsd/prompts/workspace.md +22 -0
- package/dist/resources/extensions/gsd/prompts/workstreams.md +24 -0
- package/dist/resources/extensions/gsd/provider-error-guidance.js +24 -0
- package/dist/resources/extensions/gsd/queue-order.js +3 -2
- package/dist/resources/extensions/gsd/recovery-classification.js +8 -0
- package/dist/resources/extensions/gsd/roadmap-slices.js +1 -1
- package/dist/resources/extensions/gsd/safety/content-validator.js +2 -1
- package/dist/resources/extensions/gsd/safety/evidence-cross-ref.js +43 -1
- package/dist/resources/extensions/gsd/service-tier.js +2 -1
- package/dist/resources/extensions/gsd/session-lock.js +11 -9
- package/dist/resources/extensions/gsd/skills/gsd-headless/SKILL.md +3 -0
- package/dist/resources/extensions/gsd/skills/gsd-headless/references/commands.md +51 -0
- package/dist/resources/extensions/gsd/state-reconciliation/drift/artifact-db.js +51 -10
- package/dist/resources/extensions/gsd/state-reconciliation/drift/completion.js +24 -3
- package/dist/resources/extensions/gsd/state-reconciliation/drift/external-markdown-edit.js +82 -0
- package/dist/resources/extensions/gsd/state-reconciliation/drift/external-planning-edit.js +142 -0
- package/dist/resources/extensions/gsd/state-reconciliation/drift/project-md.js +19 -6
- package/dist/resources/extensions/gsd/state-reconciliation/drift/roadmap.js +2 -2
- package/dist/resources/extensions/gsd/state-reconciliation/drift/stale-render.js +95 -19
- package/dist/resources/extensions/gsd/state-reconciliation/index.js +36 -3
- package/dist/resources/extensions/gsd/state-reconciliation/registry.js +12 -0
- package/dist/resources/extensions/gsd/state.js +48 -17
- package/dist/resources/extensions/gsd/sync-lock.js +11 -18
- package/dist/resources/extensions/gsd/tool-surface-readiness.js +205 -16
- package/dist/resources/extensions/gsd/tools/complete-milestone.js +4 -2
- package/dist/resources/extensions/gsd/tools/complete-slice.js +12 -2
- package/dist/resources/extensions/gsd/tools/complete-task.js +15 -1
- package/dist/resources/extensions/gsd/tools/exec-tool.js +2 -109
- package/dist/resources/extensions/gsd/tools/plan-slice.js +1 -3
- package/dist/resources/extensions/gsd/tools/plan-task.js +16 -1
- package/dist/resources/extensions/gsd/tools/reassess-roadmap.js +9 -3
- package/dist/resources/extensions/gsd/tools/validate-milestone.js +8 -3
- package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +44 -5
- package/dist/resources/extensions/gsd/triage-resolution.js +14 -7
- package/dist/resources/extensions/gsd/tui/render-kit.js +38 -13
- package/dist/resources/extensions/gsd/undo.js +8 -9
- package/dist/resources/extensions/gsd/unit-registry.js +27 -3
- package/dist/resources/extensions/gsd/unmerged-milestone-guard.js +58 -2
- package/dist/resources/extensions/gsd/validation-block-guard.js +45 -0
- package/dist/resources/extensions/gsd/visualizer-data.js +35 -0
- package/dist/resources/extensions/gsd/visualizer-views.js +21 -2
- package/dist/resources/extensions/gsd/workflow-logger.js +4 -0
- package/dist/resources/extensions/gsd/workflow-mcp.js +9 -1
- package/dist/resources/extensions/gsd/workflow-projections.js +25 -4
- package/dist/resources/extensions/gsd/worktree-command.js +6 -6
- package/dist/resources/extensions/gsd/worktree-health.js +6 -3
- package/dist/resources/extensions/gsd/worktree-manager.js +109 -16
- package/dist/resources/extensions/gsd/worktree-safety.js +20 -11
- package/dist/resources/extensions/gsd/worktree-shell-guard.js +113 -0
- package/dist/resources/extensions/mcp-client/manager.js +3 -3
- 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/tsconfig.extensions.tsbuildinfo +1 -1
- package/dist/update-check.js +15 -4
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +8 -8
- 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 +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/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 +8 -8
- package/dist/web/standalone/.next/server/chunks/1128.js +1 -1
- package/dist/web/standalone/.next/server/chunks/5124.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/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/{4283.e4873b058df143a1.js → 4283.8e446784528ed9dc.js} +2 -2
- package/dist/web/standalone/.next/static/chunks/8785.481aa5869991b760.js +1 -0
- package/dist/web/standalone/.next/static/chunks/{webpack-f0285ce91d4ec9ef.js → webpack-f46ea08200a0227e.js} +1 -1
- 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/web-mode.d.ts +3 -1
- package/dist/web-mode.js +7 -5
- package/integrations/hermes/README.md +48 -0
- package/integrations/hermes/docs/setup.md +272 -0
- package/integrations/hermes/docs/upstream-hermes-pr.md +40 -0
- package/integrations/hermes/open_gsd_hermes/__init__.py +105 -0
- package/integrations/hermes/open_gsd_hermes/binding.py +107 -0
- package/integrations/hermes/open_gsd_hermes/commands.py +186 -0
- package/integrations/hermes/open_gsd_hermes/config.py +59 -0
- package/integrations/hermes/open_gsd_hermes/credentials.py +51 -0
- package/integrations/hermes/open_gsd_hermes/cron.py +85 -0
- package/integrations/hermes/open_gsd_hermes/formatting.py +13 -0
- package/integrations/hermes/open_gsd_hermes/gsd_client.py +269 -0
- package/integrations/hermes/open_gsd_hermes/inject.py +31 -0
- package/integrations/hermes/open_gsd_hermes/memory.py +66 -0
- package/integrations/hermes/open_gsd_hermes/notifications.py +71 -0
- package/integrations/hermes/open_gsd_hermes/snapshot.py +42 -0
- package/integrations/hermes/open_gsd_hermes/supervisor.py +180 -0
- package/integrations/hermes/open_gsd_hermes/types.py +100 -0
- package/integrations/hermes/plugin.yaml +38 -0
- package/integrations/hermes/pyproject.toml +32 -0
- package/integrations/hermes/scripts/preflight.sh +92 -0
- package/integrations/hermes/tests/fixtures/minimal-project/.gsd/STATE.md +17 -0
- package/integrations/hermes/tests/golden/memory_prefetch.txt +5 -0
- package/integrations/hermes/tests/golden/snapshot.txt +8 -0
- package/integrations/hermes/tests/test_binding.py +103 -0
- package/integrations/hermes/tests/test_config.py +36 -0
- package/integrations/hermes/tests/test_cron.py +34 -0
- package/integrations/hermes/tests/test_gsd_client_cache.py +120 -0
- package/integrations/hermes/tests/test_memory.py +59 -0
- package/integrations/hermes/tests/test_read_cli_contract.py +50 -0
- package/integrations/hermes/tests/test_register.py +56 -0
- package/integrations/hermes/tests/test_snapshot.py +53 -0
- package/integrations/hermes/tests/test_supervisor_fsm.py +581 -0
- package/package.json +8 -7
- package/packages/cloud-mcp-gateway/dist/runtime-registry.d.ts +8 -0
- package/packages/cloud-mcp-gateway/dist/runtime-registry.d.ts.map +1 -1
- package/packages/cloud-mcp-gateway/dist/runtime-registry.js +19 -2
- package/packages/cloud-mcp-gateway/dist/runtime-registry.js.map +1 -1
- package/packages/cloud-mcp-gateway/dist/runtime-registry.test.js +71 -2
- package/packages/cloud-mcp-gateway/dist/runtime-registry.test.js.map +1 -1
- 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 +6 -2
- 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/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 +3 -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 +37 -15
- 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 +69 -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 +223 -32
- 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 +9 -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 +31 -6
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.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 +10 -0
- package/packages/mcp-server/dist/cli-errors.d.ts +11 -0
- package/packages/mcp-server/dist/cli-errors.d.ts.map +1 -1
- package/packages/mcp-server/dist/cli-errors.js +12 -0
- package/packages/mcp-server/dist/cli-errors.js.map +1 -1
- package/packages/mcp-server/dist/cli-runner.d.ts.map +1 -1
- package/packages/mcp-server/dist/cli-runner.js +33 -0
- package/packages/mcp-server/dist/cli-runner.js.map +1 -1
- package/packages/mcp-server/dist/cli.d.ts +1 -0
- package/packages/mcp-server/dist/cli.d.ts.map +1 -1
- package/packages/mcp-server/dist/cli.js +1 -0
- package/packages/mcp-server/dist/cli.js.map +1 -1
- package/packages/mcp-server/dist/server.d.ts +29 -0
- package/packages/mcp-server/dist/server.d.ts.map +1 -1
- package/packages/mcp-server/dist/server.js +82 -3
- package/packages/mcp-server/dist/server.js.map +1 -1
- package/packages/mcp-server/package.json +21 -5
- package/packages/native/package.json +1 -1
- package/packages/pi-agent-core/dist/agent-loop.js +9 -0
- 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/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/package.json +8 -8
- 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/package.json +2 -2
- package/packages/rpc-client/package.json +2 -2
- package/pkg/package.json +1 -1
- package/src/resources/GSD-WORKFLOW.md +22 -22
- package/src/resources/extensions/browser-tools/tests/gsd-browser-launch-config.test.mjs +80 -0
- package/src/resources/extensions/claude-code-cli/index.ts +8 -1
- package/src/resources/extensions/claude-code-cli/stream-adapter.ts +83 -20
- package/src/resources/extensions/claude-code-cli/tests/index.test.ts +47 -0
- package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +182 -10
- package/src/resources/extensions/google-cli/stream-adapter.ts +22 -1
- package/src/resources/extensions/gsd/auto/dispatch-history.ts +19 -1
- package/src/resources/extensions/gsd/auto/loop.ts +69 -2
- package/src/resources/extensions/gsd/auto/orchestrator.ts +63 -10
- package/src/resources/extensions/gsd/auto/pre-dispatch.ts +13 -1
- package/src/resources/extensions/gsd/auto/workflow-kernel.ts +25 -3
- package/src/resources/extensions/gsd/auto-artifact-paths.ts +83 -20
- 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 +57 -12
- package/src/resources/extensions/gsd/auto-model-selection.ts +27 -5
- package/src/resources/extensions/gsd/auto-post-unit.ts +52 -31
- package/src/resources/extensions/gsd/auto-prompts.ts +45 -30
- package/src/resources/extensions/gsd/auto-recovery.ts +126 -37
- package/src/resources/extensions/gsd/auto-runtime-state.ts +13 -0
- package/src/resources/extensions/gsd/auto-start.ts +82 -36
- package/src/resources/extensions/gsd/auto-verification.ts +5 -7
- package/src/resources/extensions/gsd/auto-worktree.ts +83 -15
- package/src/resources/extensions/gsd/auto.ts +133 -32
- package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +45 -61
- package/src/resources/extensions/gsd/bootstrap/fallback-continuation.ts +31 -0
- package/src/resources/extensions/gsd/bootstrap/register-extension.ts +23 -2
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +123 -9
- package/src/resources/extensions/gsd/bootstrap/system-context.ts +185 -46
- package/src/resources/extensions/gsd/bootstrap/tool-search-shim.ts +21 -3
- package/src/resources/extensions/gsd/bootstrap/write-gate.ts +138 -29
- package/src/resources/extensions/gsd/closeout-consistency-gate.ts +107 -3
- package/src/resources/extensions/gsd/closeout-wizard.ts +11 -2
- package/src/resources/extensions/gsd/codebase-generator.ts +6 -9
- package/src/resources/extensions/gsd/commands/catalog.ts +6 -0
- package/src/resources/extensions/gsd/commands/dispatcher.ts +3 -0
- package/src/resources/extensions/gsd/commands/gsd-core-aliases-handler.ts +48 -0
- package/src/resources/extensions/gsd/commands/gsd-core-aliases.ts +63 -0
- package/src/resources/extensions/gsd/commands/handlers/core.ts +58 -8
- package/src/resources/extensions/gsd/commands/handlers/ops.ts +230 -3
- package/src/resources/extensions/gsd/commands-cmux.ts +3 -0
- package/src/resources/extensions/gsd/commands-gsd-core.ts +1142 -0
- package/src/resources/extensions/gsd/commands-handlers.ts +76 -1
- package/src/resources/extensions/gsd/commands-maintenance.ts +98 -2
- package/src/resources/extensions/gsd/commands-prefs-wizard.ts +13 -0
- package/src/resources/extensions/gsd/commands-verdict.ts +16 -15
- package/src/resources/extensions/gsd/compat/compat-marker.ts +210 -0
- package/src/resources/extensions/gsd/compat/index.ts +12 -0
- package/src/resources/extensions/gsd/compat/planning-compat.ts +168 -0
- package/src/resources/extensions/gsd/config-overlay.ts +24 -9
- package/src/resources/extensions/gsd/consent-question.ts +11 -1
- package/src/resources/extensions/gsd/consent-verdict.ts +30 -1
- package/src/resources/extensions/gsd/dashboard-overlay.ts +41 -4
- package/src/resources/extensions/gsd/db/engine.ts +26 -0
- package/src/resources/extensions/gsd/db/queries.ts +78 -0
- package/src/resources/extensions/gsd/db/unit-dispatches.ts +24 -0
- package/src/resources/extensions/gsd/db/writers/reconcile.ts +24 -1
- package/src/resources/extensions/gsd/db-workspace.ts +15 -0
- package/src/resources/extensions/gsd/discussion-handoff.ts +9 -5
- package/src/resources/extensions/gsd/doctor-git-checks.ts +28 -3
- package/src/resources/extensions/gsd/doctor-providers.ts +1 -1
- package/src/resources/extensions/gsd/doctor-runtime-checks.ts +12 -25
- package/src/resources/extensions/gsd/doctor-types.ts +1 -0
- package/src/resources/extensions/gsd/doctor.ts +30 -7
- package/src/resources/extensions/gsd/error-classifier.ts +14 -1
- package/src/resources/extensions/gsd/escalation.ts +9 -4
- package/src/resources/extensions/gsd/export-html.ts +11 -4
- package/src/resources/extensions/gsd/export.ts +88 -1
- package/src/resources/extensions/gsd/file-lock.ts +1 -1
- package/src/resources/extensions/gsd/flat-phase-migration.ts +205 -0
- package/src/resources/extensions/gsd/forensics.ts +2 -1
- package/src/resources/extensions/gsd/git-constants.ts +1 -1
- package/src/resources/extensions/gsd/git-service.ts +7 -2
- package/src/resources/extensions/gsd/gitignore.ts +7 -3
- package/src/resources/extensions/gsd/guidance.ts +7 -7
- package/src/resources/extensions/gsd/guided-flow.ts +11 -6
- package/src/resources/extensions/gsd/layout-policy.ts +85 -0
- package/src/resources/extensions/gsd/markdown-renderer.ts +404 -104
- package/src/resources/extensions/gsd/mcp-filter.ts +59 -10
- package/src/resources/extensions/gsd/md-importer.ts +215 -65
- package/src/resources/extensions/gsd/metrics.ts +23 -10
- package/src/resources/extensions/gsd/migrate/layout-detect.ts +38 -0
- package/src/resources/extensions/gsd/migrate/planning-writer.ts +259 -0
- package/src/resources/extensions/gsd/migrate-external.ts +49 -6
- package/src/resources/extensions/gsd/migration-auto-check.ts +4 -13
- package/src/resources/extensions/gsd/milestone-actions.ts +5 -2
- package/src/resources/extensions/gsd/milestone-closeout.ts +13 -2
- package/src/resources/extensions/gsd/milestone-ids.ts +49 -19
- package/src/resources/extensions/gsd/milestone-planning-persistence.ts +8 -0
- package/src/resources/extensions/gsd/milestone-validation-verdict.ts +7 -9
- package/src/resources/extensions/gsd/model-router.ts +98 -18
- package/src/resources/extensions/gsd/notification-store.ts +17 -28
- package/src/resources/extensions/gsd/notifications.ts +37 -6
- package/src/resources/extensions/gsd/observability-validator.ts +12 -4
- package/src/resources/extensions/gsd/parallel-monitor-overlay.ts +151 -31
- package/src/resources/extensions/gsd/parsers-legacy.ts +42 -15
- package/src/resources/extensions/gsd/paths.ts +348 -39
- package/src/resources/extensions/gsd/planning-depth.ts +2 -1
- package/src/resources/extensions/gsd/post-execution-checks.ts +43 -3
- package/src/resources/extensions/gsd/preferences-models.ts +47 -13
- package/src/resources/extensions/gsd/preferences.ts +188 -14
- package/src/resources/extensions/gsd/prompts/ai-integration-phase.md +28 -0
- package/src/resources/extensions/gsd/prompts/audit-fix.md +39 -0
- package/src/resources/extensions/gsd/prompts/audit-milestone.md +26 -0
- package/src/resources/extensions/gsd/prompts/audit-uat.md +24 -0
- package/src/resources/extensions/gsd/prompts/autonomous.md +31 -0
- package/src/resources/extensions/gsd/prompts/code-review.md +37 -0
- package/src/resources/extensions/gsd/prompts/complete-milestone.md +8 -2
- package/src/resources/extensions/gsd/prompts/complete-slice.md +24 -15
- package/src/resources/extensions/gsd/prompts/discuss-phase.md +31 -0
- package/src/resources/extensions/gsd/prompts/docs-update.md +13 -0
- package/src/resources/extensions/gsd/prompts/execute-phase.md +33 -0
- package/src/resources/extensions/gsd/prompts/execute-task.md +5 -1
- package/src/resources/extensions/gsd/prompts/explore.md +58 -0
- package/src/resources/extensions/gsd/prompts/graphify.md +27 -0
- package/src/resources/extensions/gsd/prompts/health.md +37 -0
- package/src/resources/extensions/gsd/prompts/import.md +30 -0
- package/src/resources/extensions/gsd/prompts/inbox.md +27 -0
- package/src/resources/extensions/gsd/prompts/ingest-docs.md +30 -0
- package/src/resources/extensions/gsd/prompts/manager.md +21 -0
- package/src/resources/extensions/gsd/prompts/map-codebase.md +42 -0
- package/src/resources/extensions/gsd/prompts/milestone-summary.md +27 -0
- package/src/resources/extensions/gsd/prompts/mvp-phase.md +23 -0
- package/src/resources/extensions/gsd/prompts/pause-work.md +24 -0
- package/src/resources/extensions/gsd/prompts/phase.md +22 -0
- package/src/resources/extensions/gsd/prompts/plan-phase.md +34 -0
- package/src/resources/extensions/gsd/prompts/plan-review-convergence.md +34 -0
- package/src/resources/extensions/gsd/prompts/profile-user.md +28 -0
- package/src/resources/extensions/gsd/prompts/progress.md +30 -0
- 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/resume-work.md +20 -0
- package/src/resources/extensions/gsd/prompts/review-backlog.md +21 -0
- package/src/resources/extensions/gsd/prompts/review.md +27 -0
- package/src/resources/extensions/gsd/prompts/run-uat.md +5 -1
- package/src/resources/extensions/gsd/prompts/secure-phase.md +24 -0
- package/src/resources/extensions/gsd/prompts/settings.md +24 -0
- package/src/resources/extensions/gsd/prompts/sketch.md +59 -0
- package/src/resources/extensions/gsd/prompts/spec-phase.md +29 -0
- package/src/resources/extensions/gsd/prompts/spike.md +59 -0
- package/src/resources/extensions/gsd/prompts/stats.md +43 -0
- package/src/resources/extensions/gsd/prompts/surface.md +25 -0
- package/src/resources/extensions/gsd/prompts/thread.md +24 -0
- package/src/resources/extensions/gsd/prompts/triage-captures.md +1 -1
- package/src/resources/extensions/gsd/prompts/ui-phase.md +29 -0
- package/src/resources/extensions/gsd/prompts/ui-review.md +29 -0
- package/src/resources/extensions/gsd/prompts/ultraplan-phase.md +24 -0
- package/src/resources/extensions/gsd/prompts/validate-phase.md +26 -0
- package/src/resources/extensions/gsd/prompts/verify-work.md +24 -0
- package/src/resources/extensions/gsd/prompts/workspace.md +22 -0
- package/src/resources/extensions/gsd/prompts/workstreams.md +24 -0
- package/src/resources/extensions/gsd/provider-error-guidance.ts +32 -0
- package/src/resources/extensions/gsd/queue-order.ts +3 -2
- package/src/resources/extensions/gsd/recovery-classification.ts +7 -0
- package/src/resources/extensions/gsd/roadmap-slices.ts +1 -1
- package/src/resources/extensions/gsd/safety/content-validator.ts +2 -1
- package/src/resources/extensions/gsd/safety/evidence-cross-ref.ts +45 -1
- package/src/resources/extensions/gsd/service-tier.ts +2 -0
- package/src/resources/extensions/gsd/session-lock.ts +15 -13
- package/src/resources/extensions/gsd/skills/gsd-headless/SKILL.md +3 -0
- package/src/resources/extensions/gsd/skills/gsd-headless/references/commands.md +51 -0
- package/src/resources/extensions/gsd/state-reconciliation/drift/artifact-db.ts +58 -14
- package/src/resources/extensions/gsd/state-reconciliation/drift/completion.ts +22 -2
- package/src/resources/extensions/gsd/state-reconciliation/drift/external-markdown-edit.ts +105 -0
- package/src/resources/extensions/gsd/state-reconciliation/drift/external-planning-edit.ts +180 -0
- package/src/resources/extensions/gsd/state-reconciliation/drift/project-md.ts +19 -6
- package/src/resources/extensions/gsd/state-reconciliation/drift/roadmap.ts +2 -2
- package/src/resources/extensions/gsd/state-reconciliation/drift/stale-render.ts +98 -26
- package/src/resources/extensions/gsd/state-reconciliation/index.ts +36 -3
- package/src/resources/extensions/gsd/state-reconciliation/registry.ts +12 -0
- package/src/resources/extensions/gsd/state-reconciliation/types.ts +19 -0
- package/src/resources/extensions/gsd/state.ts +57 -15
- package/src/resources/extensions/gsd/sync-lock.ts +11 -20
- package/src/resources/extensions/gsd/tests/__fixtures__/flat-phase/.gsd/phases/01-foundation/01-01-PLAN.md +13 -0
- package/src/resources/extensions/gsd/tests/__fixtures__/flat-phase/.gsd/phases/01-foundation/01-ROADMAP.md +8 -0
- package/src/resources/extensions/gsd/tests/__fixtures__/round-trip/m001-basic/.gsd/milestones/M001/M001-ROADMAP.md +13 -0
- package/src/resources/extensions/gsd/tests/__fixtures__/round-trip/m001-basic/.gsd/milestones/M001/slices/S01/S01-PLAN.md +5 -0
- package/src/resources/extensions/gsd/tests/__fixtures__/round-trip/planning-flat-phases/.planning/PROJECT.md +1 -0
- package/src/resources/extensions/gsd/tests/__fixtures__/round-trip/planning-flat-phases/.planning/ROADMAP.md +5 -0
- package/src/resources/extensions/gsd/tests/__fixtures__/round-trip/planning-flat-phases/.planning/STATE.md +10 -0
- package/src/resources/extensions/gsd/tests/__fixtures__/round-trip/planning-flat-phases/.planning/phases/01-foundation/01-01-PLAN.md +13 -0
- package/src/resources/extensions/gsd/tests/auto-artifact-paths.test.ts +322 -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 +104 -0
- package/src/resources/extensions/gsd/tests/auto-migrating-recovery.test.ts +32 -1
- 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 +10 -0
- package/src/resources/extensions/gsd/tests/auto-orchestrator.test.ts +28 -22
- package/src/resources/extensions/gsd/tests/auto-paused-session-validation.test.ts +11 -2
- package/src/resources/extensions/gsd/tests/auto-paused-ui-cleanup.test.ts +19 -2
- package/src/resources/extensions/gsd/tests/auto-verification.test.ts +36 -0
- package/src/resources/extensions/gsd/tests/auto-worktree-auto-resolve.test.ts +17 -0
- package/src/resources/extensions/gsd/tests/blocker-placeholder-logs.test.ts +218 -0
- package/src/resources/extensions/gsd/tests/codebase-generator.test.ts +15 -11
- package/src/resources/extensions/gsd/tests/commands-dispatcher-unmerged-milestone.test.ts +89 -0
- package/src/resources/extensions/gsd/tests/commands-dispatcher-validation-block.test.ts +37 -1
- package/src/resources/extensions/gsd/tests/commands-eval-review.test.ts +31 -30
- package/src/resources/extensions/gsd/tests/commands-gsd-core.test.ts +862 -0
- package/src/resources/extensions/gsd/tests/commands-verdict.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/compat-health-line.test.ts +102 -0
- package/src/resources/extensions/gsd/tests/compat-marker-invalidation.test.ts +51 -0
- package/src/resources/extensions/gsd/tests/compat-marker.test.ts +105 -0
- package/src/resources/extensions/gsd/tests/complete-milestone-prompt-rendering.test.ts +6 -2
- package/src/resources/extensions/gsd/tests/complete-slice-reopen-handoff.test.ts +82 -0
- package/src/resources/extensions/gsd/tests/complete-slice.test.ts +7 -7
- package/src/resources/extensions/gsd/tests/complete-task.test.ts +7 -7
- package/src/resources/extensions/gsd/tests/consent-question.test.ts +45 -0
- package/src/resources/extensions/gsd/tests/core-overlay-fallback.test.ts +1 -0
- package/src/resources/extensions/gsd/tests/dashboard-overlay.test.ts +37 -0
- package/src/resources/extensions/gsd/tests/db-authority-regression.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/db-engine-logs.test.ts +207 -0
- package/src/resources/extensions/gsd/tests/derive-state-db.test.ts +63 -1
- package/src/resources/extensions/gsd/tests/derive-state-helpers.test.ts +49 -5
- package/src/resources/extensions/gsd/tests/discuss-cold-start-db-open.test.ts +10 -27
- package/src/resources/extensions/gsd/tests/dispatch-complete-milestone-guard.test.ts +20 -1
- package/src/resources/extensions/gsd/tests/dispatch-db-degradation-logs.test.ts +98 -0
- package/src/resources/extensions/gsd/tests/dispatch-history.test.ts +102 -0
- package/src/resources/extensions/gsd/tests/dispatch-logs.test.ts +103 -0
- package/src/resources/extensions/gsd/tests/dispatch-missing-task-plans.test.ts +38 -49
- package/src/resources/extensions/gsd/tests/dispatch-reactive-logs.test.ts +98 -0
- package/src/resources/extensions/gsd/tests/dist-redirect.mjs +7 -0
- package/src/resources/extensions/gsd/tests/doctor-git-checks-autoresolve.test.ts +149 -0
- package/src/resources/extensions/gsd/tests/doctor-providers.test.ts +6 -4
- package/src/resources/extensions/gsd/tests/ensure-preconditions-guard-4996.test.ts +17 -10
- package/src/resources/extensions/gsd/tests/evidence-cross-ref.test.ts +95 -0
- package/src/resources/extensions/gsd/tests/export-html-enhancements.test.ts +25 -0
- package/src/resources/extensions/gsd/tests/export-memory.test.ts +179 -0
- package/src/resources/extensions/gsd/tests/extension-bootstrap-isolation.test.ts +53 -0
- package/src/resources/extensions/gsd/tests/external-markdown-edit.test.ts +137 -0
- package/src/resources/extensions/gsd/tests/external-planning-edit.test.ts +199 -0
- package/src/resources/extensions/gsd/tests/fallback-continuation.test.ts +36 -0
- package/src/resources/extensions/gsd/tests/file-lock.test.ts +43 -0
- package/src/resources/extensions/gsd/tests/flat-phase-migration.test.ts +114 -0
- package/src/resources/extensions/gsd/tests/flat-phase-renderer.test.ts +83 -0
- package/src/resources/extensions/gsd/tests/flat-phase-round-trip.test.ts +72 -0
- package/src/resources/extensions/gsd/tests/flat-phase-validation-integration.test.ts +120 -0
- package/src/resources/extensions/gsd/tests/flat-phase-validation-path.test.ts +74 -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-core-parity-routing.test.ts +183 -0
- package/src/resources/extensions/gsd/tests/guidance.test.ts +25 -0
- package/src/resources/extensions/gsd/tests/integration/auto-recovery.test.ts +19 -11
- package/src/resources/extensions/gsd/tests/integration/auto-worktree-milestone-merge.test.ts +75 -0
- package/src/resources/extensions/gsd/tests/integration/commands-eval-review.integration.test.ts +6 -2
- package/src/resources/extensions/gsd/tests/integration/gitignore-tracked-gsd.test.ts +55 -0
- package/src/resources/extensions/gsd/tests/integration/idle-recovery.test.ts +4 -3
- package/src/resources/extensions/gsd/tests/integration/integration-proof.test.ts +11 -7
- package/src/resources/extensions/gsd/tests/interactive-routing-bypass.test.ts +1 -0
- package/src/resources/extensions/gsd/tests/knowledge-cold-start.test.ts +372 -0
- package/src/resources/extensions/gsd/tests/layout-policy.test.ts +59 -0
- package/src/resources/extensions/gsd/tests/loop.test.ts +60 -0
- package/src/resources/extensions/gsd/tests/markdown-renderer-parse-cache.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/markdown-renderer.test.ts +214 -82
- package/src/resources/extensions/gsd/tests/mcp-filter.test.ts +74 -1
- package/src/resources/extensions/gsd/tests/metrics-ledger-cap.test.ts +239 -0
- package/src/resources/extensions/gsd/tests/milestone-closeout.test.ts +7 -2
- package/src/resources/extensions/gsd/tests/milestone-settlement.test.ts +6 -1
- package/src/resources/extensions/gsd/tests/model-router.test.ts +343 -7
- package/src/resources/extensions/gsd/tests/notification-store.test.ts +23 -0
- package/src/resources/extensions/gsd/tests/notifications.test.ts +33 -0
- package/src/resources/extensions/gsd/tests/oauth-api-model-routing.test.ts +13 -1
- package/src/resources/extensions/gsd/tests/observability-validator-boundary.test.ts +194 -0
- package/src/resources/extensions/gsd/tests/orchestrator-legacy-parity.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/orchestrator-logs.test.ts +339 -0
- package/src/resources/extensions/gsd/tests/orphaned-worktree-audit.test.ts +52 -1
- package/src/resources/extensions/gsd/tests/parallel-monitor-overlay.test.ts +91 -0
- package/src/resources/extensions/gsd/tests/plan-milestone-boundary-map-preservation.test.ts +7 -2
- package/src/resources/extensions/gsd/tests/plan-milestone-sketch-render.test.ts +7 -2
- package/src/resources/extensions/gsd/tests/plan-milestone.test.ts +9 -6
- package/src/resources/extensions/gsd/tests/plan-slice.test.ts +58 -23
- package/src/resources/extensions/gsd/tests/plan-task.test.ts +4 -4
- package/src/resources/extensions/gsd/tests/planning-crossval.test.ts +19 -0
- package/src/resources/extensions/gsd/tests/planning-layout-detect.test.ts +84 -0
- package/src/resources/extensions/gsd/tests/planning-marker.test.ts +107 -0
- package/src/resources/extensions/gsd/tests/planning-projection-hook.test.ts +123 -0
- package/src/resources/extensions/gsd/tests/planning-round-trip-property.test.ts +164 -0
- package/src/resources/extensions/gsd/tests/planning-writer.test.ts +82 -0
- package/src/resources/extensions/gsd/tests/post-execution-checks.test.ts +48 -1
- package/src/resources/extensions/gsd/tests/preferences.test.ts +47 -1
- 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 +16 -0
- package/src/resources/extensions/gsd/tests/provider-error-guidance.test.ts +15 -0
- package/src/resources/extensions/gsd/tests/provider-errors.test.ts +107 -0
- package/src/resources/extensions/gsd/tests/ready-phrase-no-files-4573.test.ts +22 -13
- package/src/resources/extensions/gsd/tests/reassess-handler.test.ts +9 -8
- 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/register-hooks-depth-verification.test.ts +79 -4
- package/src/resources/extensions/gsd/tests/replan-handler.test.ts +4 -4
- package/src/resources/extensions/gsd/tests/resume-missing-worktree-warning.test.ts +5 -5
- package/src/resources/extensions/gsd/tests/round-trip-property.test.ts +137 -0
- package/src/resources/extensions/gsd/tests/session-lock-transient-read.test.ts +28 -2
- 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 +1 -0
- package/src/resources/extensions/gsd/tests/stale-dirlistcache-4648.test.ts +7 -1
- package/src/resources/extensions/gsd/tests/state-reconciliation-drift.test.ts +155 -58
- package/src/resources/extensions/gsd/tests/stop-backtrack.test.ts +6 -2
- package/src/resources/extensions/gsd/tests/stuck-state-via-db.test.ts +85 -0
- package/src/resources/extensions/gsd/tests/sync-lock.test.ts +23 -0
- package/src/resources/extensions/gsd/tests/system-context-message-routing.test.ts +29 -1
- package/src/resources/extensions/gsd/tests/terminal-tool-surface-classification.test.ts +80 -0
- package/src/resources/extensions/gsd/tests/thinking-level-resolution.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/tool-schema-model-fallback.test.ts +64 -0
- package/src/resources/extensions/gsd/tests/tool-search-shim.test.ts +71 -0
- package/src/resources/extensions/gsd/tests/tool-surface-readiness.test.ts +26 -7
- package/src/resources/extensions/gsd/tests/tool-unavailable-retry.test.ts +23 -0
- 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/undo.test.ts +39 -37
- package/src/resources/extensions/gsd/tests/unit-context-composer.test.ts +22 -0
- package/src/resources/extensions/gsd/tests/unmerged-milestone-guard.test.ts +62 -0
- package/src/resources/extensions/gsd/tests/uok-audit.test.ts +194 -0
- package/src/resources/extensions/gsd/tests/uok-gitops-turn-action.test.ts +72 -1
- package/src/resources/extensions/gsd/tests/validate-milestone-write-order.test.ts +9 -1
- package/src/resources/extensions/gsd/tests/validation-block-guard.test.ts +51 -0
- package/src/resources/extensions/gsd/tests/validation-gate-patterns.test.ts +34 -6
- package/src/resources/extensions/gsd/tests/verify-artifact-tightened.test.ts +90 -0
- package/src/resources/extensions/gsd/tests/visualizer-data.test.ts +87 -0
- package/src/resources/extensions/gsd/tests/visualizer-views.test.ts +27 -0
- package/src/resources/extensions/gsd/tests/workflow-kernel.test.ts +51 -0
- package/src/resources/extensions/gsd/tests/workflow-mcp-preflight.test.ts +133 -0
- package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +34 -8
- package/src/resources/extensions/gsd/tests/workflow-projections.test.ts +3 -4
- package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +64 -8
- package/src/resources/extensions/gsd/tests/worktree-health.test.ts +43 -3
- package/src/resources/extensions/gsd/tests/worktree-manager.test.ts +62 -0
- package/src/resources/extensions/gsd/tests/worktree-safety.test.ts +39 -18
- package/src/resources/extensions/gsd/tests/worktree-write-gate.test.ts +75 -3
- package/src/resources/extensions/gsd/tests/write-gate-planning-unit.test.ts +4 -1
- package/src/resources/extensions/gsd/tests/write-gate.test.ts +103 -0
- package/src/resources/extensions/gsd/tool-surface-readiness.ts +226 -16
- package/src/resources/extensions/gsd/tools/complete-milestone.ts +4 -7
- package/src/resources/extensions/gsd/tools/complete-slice.ts +12 -9
- package/src/resources/extensions/gsd/tools/complete-task.ts +15 -1
- package/src/resources/extensions/gsd/tools/exec-tool.ts +2 -118
- package/src/resources/extensions/gsd/tools/plan-slice.ts +1 -3
- package/src/resources/extensions/gsd/tools/plan-task.ts +17 -1
- package/src/resources/extensions/gsd/tools/reassess-roadmap.ts +9 -10
- package/src/resources/extensions/gsd/tools/validate-milestone.ts +8 -13
- package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +43 -4
- package/src/resources/extensions/gsd/triage-resolution.ts +14 -7
- package/src/resources/extensions/gsd/tui/render-kit.ts +56 -13
- package/src/resources/extensions/gsd/undo.ts +8 -9
- package/src/resources/extensions/gsd/unit-registry.ts +27 -3
- package/src/resources/extensions/gsd/unmerged-milestone-guard.ts +60 -1
- package/src/resources/extensions/gsd/validation-block-guard.ts +46 -0
- package/src/resources/extensions/gsd/visualizer-data.ts +55 -0
- package/src/resources/extensions/gsd/visualizer-views.ts +27 -2
- package/src/resources/extensions/gsd/workflow-logger.ts +5 -0
- package/src/resources/extensions/gsd/workflow-mcp.ts +12 -1
- package/src/resources/extensions/gsd/workflow-projections.ts +24 -4
- package/src/resources/extensions/gsd/worktree-command.ts +6 -6
- package/src/resources/extensions/gsd/worktree-health.ts +6 -3
- package/src/resources/extensions/gsd/worktree-manager.ts +122 -16
- package/src/resources/extensions/gsd/worktree-safety.ts +31 -11
- package/src/resources/extensions/gsd/worktree-shell-guard.ts +123 -0
- package/src/resources/extensions/mcp-client/manager.ts +3 -3
- 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/dist/web/standalone/.next/static/chunks/8785.2e5a118797fb2dd2.js +0 -1
- /package/dist/web/standalone/.next/static/{2T9IOdiiM3o3gZ4UbPi8E → BTKtGFF1Y-hvVJEGhBRo9}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{2T9IOdiiM3o3gZ4UbPi8E → BTKtGFF1Y-hvVJEGhBRo9}/_ssgManifest.js +0 -0
package/README.md
CHANGED
|
@@ -27,13 +27,19 @@ See [CHANGELOG.md](./CHANGELOG.md) for release-by-release fixes and [Legacy Rele
|
|
|
27
27
|
|
|
28
28
|
## Latest Release Highlights
|
|
29
29
|
|
|
30
|
-
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
- **
|
|
34
|
-
- **
|
|
35
|
-
- **
|
|
36
|
-
- **
|
|
30
|
+
<!-- release-highlights:start -->
|
|
31
|
+
Latest release: **v1.3.0**
|
|
32
|
+
|
|
33
|
+
- **update:** Reconcile stale PATH gsd-browser binary after install.
|
|
34
|
+
- **gsd:** Route UAT sign-off and worktree-degradation blockers through the guidance catalog.
|
|
35
|
+
- **gsd:** Fix shell-tool selection — uncapped sync bash, interruptible await, graceful kills.
|
|
36
|
+
- **browser-tools:** Proven engine resolution — gsd-browser primary for web apps (ADR-037).
|
|
37
|
+
- **gsd:** Add the Unit Closeout module with the Interactive Closeout adapter (ADR-032).
|
|
38
|
+
- **gsd:** Tool Surface Readiness gate — verify live tool surface at SDK init before the first model turn.
|
|
39
|
+
- **claude-code-cli:** Expose Claude Fable 5 as an Opus-tier model.
|
|
40
|
+
- **pi-ai:** Add Claude Fable 5 with Opus-tier thinking.
|
|
41
|
+
|
|
42
|
+
<!-- release-highlights:end -->
|
|
37
43
|
|
|
38
44
|
## Status
|
|
39
45
|
|
package/dist/cli.js
CHANGED
|
@@ -13,7 +13,7 @@ import { shouldRedirectAutoToHeadless } from './cli-auto-routing.js';
|
|
|
13
13
|
import { printHelp, printSubcommandHelp } from './help-text.js';
|
|
14
14
|
import { applySecurityOverrides } from './security-overrides.js';
|
|
15
15
|
import { validateConfiguredModel } from './startup-model-validation.js';
|
|
16
|
-
import { migrateAnthropicDefaultToClaudeCode } from './provider-migrations.js';
|
|
16
|
+
import { migrateAnthropicDefaultToClaudeCode, migrateGeminiCliDefaultToAntigravity } from './provider-migrations.js';
|
|
17
17
|
import { applyModelOverride } from './cli-model-override.js';
|
|
18
18
|
import { buildHeadlessAutoArgs, parseCliArgs, runWebCliBranch, migrateLegacyFlatSessions, } from './cli-web-branch.js';
|
|
19
19
|
import { stopWebMode } from './web-mode.js';
|
|
@@ -194,6 +194,14 @@ if (shouldBypassManagedResourceMismatchGate(cliFlags.messages[0])) {
|
|
|
194
194
|
process.exit(0);
|
|
195
195
|
}
|
|
196
196
|
// ---------------------------------------------------------------------------
|
|
197
|
+
// Hermes integration subcommand — `gsd hermes install`
|
|
198
|
+
// ---------------------------------------------------------------------------
|
|
199
|
+
if (cliFlags.messages[0] === 'hermes') {
|
|
200
|
+
const { runHermesIntegrationCommand } = await import('./hermes-integration-install.js');
|
|
201
|
+
const exitCode = await runHermesIntegrationCommand(process.argv);
|
|
202
|
+
process.exit(exitCode);
|
|
203
|
+
}
|
|
204
|
+
// ---------------------------------------------------------------------------
|
|
197
205
|
// Graph subcommand — `gsd graph build|status|query|diff`
|
|
198
206
|
// ---------------------------------------------------------------------------
|
|
199
207
|
if (cliFlags.messages[0] === 'graph') {
|
|
@@ -291,6 +299,8 @@ const subcommandsExemptFromEarlyTtyCheck = new Set([
|
|
|
291
299
|
'config',
|
|
292
300
|
'graph',
|
|
293
301
|
'headless',
|
|
302
|
+
'hermes',
|
|
303
|
+
'read',
|
|
294
304
|
'install',
|
|
295
305
|
'list',
|
|
296
306
|
'remove',
|
|
@@ -409,6 +419,11 @@ if (cliFlags.messages[0] === 'sessions') {
|
|
|
409
419
|
cliFlags.continue = true;
|
|
410
420
|
cliFlags._selectedSessionPath = selected.path;
|
|
411
421
|
}
|
|
422
|
+
// `gsd read` — JSON read seam for integrations (Hermes 6c)
|
|
423
|
+
if (cliFlags.messages[0] === 'read') {
|
|
424
|
+
const { runReadCli } = await import('./read-cli.js');
|
|
425
|
+
process.exit(await runReadCli(process.argv));
|
|
426
|
+
}
|
|
412
427
|
// `gsd headless` — run auto-mode without TUI
|
|
413
428
|
if (cliFlags.messages[0] === 'headless') {
|
|
414
429
|
await ensureRtkBootstrap();
|
|
@@ -612,6 +627,12 @@ if (isPrintMode) {
|
|
|
612
627
|
settingsManager,
|
|
613
628
|
modelRegistry,
|
|
614
629
|
});
|
|
630
|
+
migrateGeminiCliDefaultToAntigravity({
|
|
631
|
+
authStorage,
|
|
632
|
+
isAntigravityReady: () => modelRegistry.isProviderRequestReady('google-antigravity'),
|
|
633
|
+
settingsManager,
|
|
634
|
+
modelRegistry,
|
|
635
|
+
});
|
|
615
636
|
const { session, extensionsResult, modelFallbackMessage } = await createAgentSession({
|
|
616
637
|
authStorage,
|
|
617
638
|
modelRegistry,
|
|
@@ -716,6 +737,12 @@ migrateAnthropicDefaultToClaudeCode({
|
|
|
716
737
|
settingsManager,
|
|
717
738
|
modelRegistry,
|
|
718
739
|
});
|
|
740
|
+
migrateGeminiCliDefaultToAntigravity({
|
|
741
|
+
authStorage,
|
|
742
|
+
isAntigravityReady: () => modelRegistry.isProviderRequestReady('google-antigravity'),
|
|
743
|
+
settingsManager,
|
|
744
|
+
modelRegistry,
|
|
745
|
+
});
|
|
719
746
|
markStartup('providerMigrations');
|
|
720
747
|
const { session, extensionsResult, modelFallbackMessage: interactiveFallbackMsg } = await createAgentSession({
|
|
721
748
|
authStorage,
|
package/dist/headless-context.js
CHANGED
|
@@ -39,6 +39,5 @@ export async function loadContext(options) {
|
|
|
39
39
|
*/
|
|
40
40
|
export function bootstrapGsdProject(basePath) {
|
|
41
41
|
const gsdDir = join(basePath, '.gsd');
|
|
42
|
-
mkdirSync(join(gsdDir, 'milestones'), { recursive: true });
|
|
43
42
|
mkdirSync(join(gsdDir, 'runtime'), { recursive: true });
|
|
44
43
|
}
|
|
@@ -53,7 +53,22 @@ export declare function isTerminalNotification(event: Record<string, unknown>):
|
|
|
53
53
|
export declare function isBlockedNotification(event: Record<string, unknown>): boolean;
|
|
54
54
|
export declare function isMilestoneReadyNotification(event: Record<string, unknown>): boolean;
|
|
55
55
|
export declare function isInteractiveHeadlessTool(toolName: string | undefined): boolean;
|
|
56
|
-
|
|
56
|
+
/**
|
|
57
|
+
* Decide whether to arm the headless idle-completion timer.
|
|
58
|
+
*
|
|
59
|
+
* Arms once at least one tool call has started (and no interactive tool —
|
|
60
|
+
* ask_user_questions / secure_env_collect — is still awaiting a human answer),
|
|
61
|
+
* so a multi-step command that pauses between tool calls still resolves.
|
|
62
|
+
*
|
|
63
|
+
* Also arms for *quick commands* that are handled entirely in the extension
|
|
64
|
+
* layer (e.g. `/gsd status`, `/gsd history`, `/gsd help`). These never enter
|
|
65
|
+
* the LLM agent loop, so they emit no `agent_end` / `execution_complete` and
|
|
66
|
+
* make zero tool calls. Without this branch the idle timer never arms, the
|
|
67
|
+
* completion promise never resolves, and the process exits with a spurious
|
|
68
|
+
* "cancelled" (11) code once the event loop drains. See live-regression
|
|
69
|
+
* scenario `headless status exits 0 on a seeded project`.
|
|
70
|
+
*/
|
|
71
|
+
export declare function shouldArmHeadlessIdleTimeout(toolCallCount: number, interactiveToolCount: number, isQuickCommand?: boolean): boolean;
|
|
57
72
|
export interface HeadlessTrackedEventLike {
|
|
58
73
|
type: string;
|
|
59
74
|
detail?: string;
|
package/dist/headless-events.js
CHANGED
|
@@ -125,8 +125,25 @@ export function isMilestoneReadyNotification(event) {
|
|
|
125
125
|
export function isInteractiveHeadlessTool(toolName) {
|
|
126
126
|
return INTERACTIVE_HEADLESS_TOOLS.has(canonicalHeadlessToolName(toolName));
|
|
127
127
|
}
|
|
128
|
-
|
|
129
|
-
|
|
128
|
+
/**
|
|
129
|
+
* Decide whether to arm the headless idle-completion timer.
|
|
130
|
+
*
|
|
131
|
+
* Arms once at least one tool call has started (and no interactive tool —
|
|
132
|
+
* ask_user_questions / secure_env_collect — is still awaiting a human answer),
|
|
133
|
+
* so a multi-step command that pauses between tool calls still resolves.
|
|
134
|
+
*
|
|
135
|
+
* Also arms for *quick commands* that are handled entirely in the extension
|
|
136
|
+
* layer (e.g. `/gsd status`, `/gsd history`, `/gsd help`). These never enter
|
|
137
|
+
* the LLM agent loop, so they emit no `agent_end` / `execution_complete` and
|
|
138
|
+
* make zero tool calls. Without this branch the idle timer never arms, the
|
|
139
|
+
* completion promise never resolves, and the process exits with a spurious
|
|
140
|
+
* "cancelled" (11) code once the event loop drains. See live-regression
|
|
141
|
+
* scenario `headless status exits 0 on a seeded project`.
|
|
142
|
+
*/
|
|
143
|
+
export function shouldArmHeadlessIdleTimeout(toolCallCount, interactiveToolCount, isQuickCommand = false) {
|
|
144
|
+
if (interactiveToolCount > 0)
|
|
145
|
+
return false;
|
|
146
|
+
return toolCallCount > 0 || isQuickCommand;
|
|
130
147
|
}
|
|
131
148
|
function hasCancelledDetail(detail) {
|
|
132
149
|
return /\bcancelled\b/i.test(String(detail ?? ''));
|
package/dist/headless.js
CHANGED
|
@@ -434,6 +434,13 @@ async function runHeadlessOnce(options, restartCount) {
|
|
|
434
434
|
});
|
|
435
435
|
// Idle timeout — fallback completion detection
|
|
436
436
|
let idleTimer = null;
|
|
437
|
+
// Quick commands (status, history, help, …) are short extension-layer
|
|
438
|
+
// operations that never enter the LLM agent loop, so they emit no
|
|
439
|
+
// execution_complete and make no tool calls. The idle timer is what
|
|
440
|
+
// resolves them; without arming it for zero-tool quick commands the run
|
|
441
|
+
// hangs and exits with a spurious "cancelled" (11). See
|
|
442
|
+
// shouldArmHeadlessIdleTimeout.
|
|
443
|
+
const isQuickCmd = isQuickCommand(options.command, options.commandArgs);
|
|
437
444
|
let effectiveIdleTimeout = isNewMilestone
|
|
438
445
|
? NEW_MILESTONE_IDLE_TIMEOUT_MS
|
|
439
446
|
: isAutoMode
|
|
@@ -443,7 +450,7 @@ async function runHeadlessOnce(options, restartCount) {
|
|
|
443
450
|
if (idleTimer)
|
|
444
451
|
clearTimeout(idleTimer);
|
|
445
452
|
if (effectiveIdleTimeout > 0 &&
|
|
446
|
-
shouldArmHeadlessIdleTimeout(toolCallCount, interactiveToolCallIds.size)) {
|
|
453
|
+
shouldArmHeadlessIdleTimeout(toolCallCount, interactiveToolCallIds.size, isQuickCmd)) {
|
|
447
454
|
idleTimer = setTimeout(() => {
|
|
448
455
|
completed = true;
|
|
449
456
|
resolveCompletion();
|
package/dist/help-text.js
CHANGED
|
@@ -122,6 +122,34 @@ const SUBCOMMAND_HELP = {
|
|
|
122
122
|
' gsd graph query auth Find nodes related to "auth"',
|
|
123
123
|
' gsd graph diff Show changes since last snapshot',
|
|
124
124
|
].join('\n'),
|
|
125
|
+
hermes: [
|
|
126
|
+
'Usage: gsd hermes install [options]',
|
|
127
|
+
'',
|
|
128
|
+
'Install the bundled open-gsd-hermes plugin into Hermes Agent.',
|
|
129
|
+
'',
|
|
130
|
+
'Options:',
|
|
131
|
+
' --hermes-home <path> Hermes home (default: $HERMES_HOME or ~/.hermes)',
|
|
132
|
+
' --project <path> Default GSD project to write into gsd.yaml',
|
|
133
|
+
' --plugin-source <path> Override bundled integrations/hermes source',
|
|
134
|
+
' --skip-pip Copy plugin only; do not pip install editable package',
|
|
135
|
+
' --skip-enable Do not run hermes plugins enable',
|
|
136
|
+
' --dry-run Print intended actions without writing',
|
|
137
|
+
'',
|
|
138
|
+
'Examples:',
|
|
139
|
+
' gsd hermes install --project ~/code/myapp',
|
|
140
|
+
' HERMES_HOME=~/.hermes gsd hermes install --skip-enable',
|
|
141
|
+
].join('\n'),
|
|
142
|
+
read: [
|
|
143
|
+
'Usage: gsd read <progress|roadmap|memory> --json --project <path>',
|
|
144
|
+
'',
|
|
145
|
+
'JSON read seam for external integrations (e.g. open-gsd-hermes).',
|
|
146
|
+
'Emits envelope: { integration_version, kind, projectDir, data }.',
|
|
147
|
+
'',
|
|
148
|
+
'Examples:',
|
|
149
|
+
' gsd read progress --json --project ~/code/myapp',
|
|
150
|
+
' gsd read roadmap --json --project ~/code/myapp --milestone M001',
|
|
151
|
+
' gsd read memory --json --project ~/code/myapp --query auth',
|
|
152
|
+
].join('\n'),
|
|
125
153
|
headless: [
|
|
126
154
|
'Usage: gsd headless [flags] [command] [args...]',
|
|
127
155
|
'',
|
|
@@ -211,6 +239,7 @@ export function printHelp(version) {
|
|
|
211
239
|
process.stdout.write(' auto [args] Run auto-mode without TUI (pipeable)\n');
|
|
212
240
|
process.stdout.write(' headless [cmd] [args] Run /gsd commands without TUI (default: auto)\n');
|
|
213
241
|
process.stdout.write(' graph <subcommand> Manage knowledge graph (build, query, status, diff)\n');
|
|
242
|
+
process.stdout.write(' hermes install Install the Hermes Agent plugin\n');
|
|
214
243
|
process.stdout.write('\nRun gsd <subcommand> --help for subcommand-specific help.\n');
|
|
215
244
|
}
|
|
216
245
|
export function printSubcommandHelp(subcommand, version) {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface HermesInstallOptions {
|
|
2
|
+
hermesHome: string;
|
|
3
|
+
pluginSource: string;
|
|
4
|
+
project?: string;
|
|
5
|
+
dryRun: boolean;
|
|
6
|
+
skipPip: boolean;
|
|
7
|
+
skipEnable: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface HermesInstallResult {
|
|
10
|
+
pluginTarget: string;
|
|
11
|
+
configPath: string;
|
|
12
|
+
actions: string[];
|
|
13
|
+
warnings: string[];
|
|
14
|
+
}
|
|
15
|
+
export declare function runHermesIntegrationCommand(argv: string[]): Promise<number>;
|
|
16
|
+
export declare function parseHermesInstallArgs(args: string[]): HermesInstallOptions;
|
|
17
|
+
export declare function installHermesPlugin(options: HermesInstallOptions): HermesInstallResult;
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, rmSync, cpSync, writeFileSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { dirname, resolve, join, isAbsolute } from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { homedir } from 'node:os';
|
|
5
|
+
import { spawnSync } from 'node:child_process';
|
|
6
|
+
const PLUGIN_NAME = 'open-gsd-hermes';
|
|
7
|
+
export async function runHermesIntegrationCommand(argv) {
|
|
8
|
+
const hermesIndex = argv.indexOf('hermes', 2);
|
|
9
|
+
if (hermesIndex === -1) {
|
|
10
|
+
printHermesHelp();
|
|
11
|
+
return 0;
|
|
12
|
+
}
|
|
13
|
+
const sub = argv[hermesIndex + 1];
|
|
14
|
+
if (!sub || sub === 'help' || sub === '--help' || sub === '-h') {
|
|
15
|
+
printHermesHelp();
|
|
16
|
+
return 0;
|
|
17
|
+
}
|
|
18
|
+
if (sub !== 'install') {
|
|
19
|
+
process.stderr.write(`[gsd] Unknown hermes command: ${sub}\n`);
|
|
20
|
+
printHermesHelp(process.stderr);
|
|
21
|
+
return 1;
|
|
22
|
+
}
|
|
23
|
+
let options;
|
|
24
|
+
try {
|
|
25
|
+
options = parseHermesInstallArgs(argv.slice(hermesIndex + 2));
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
process.stderr.write(`[gsd] hermes install: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
29
|
+
return 1;
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
const result = installHermesPlugin(options);
|
|
33
|
+
for (const action of result.actions)
|
|
34
|
+
process.stdout.write(`✓ ${action}\n`);
|
|
35
|
+
for (const warning of result.warnings)
|
|
36
|
+
process.stderr.write(`[gsd] Warning: ${warning}\n`);
|
|
37
|
+
process.stdout.write(`\nHermes plugin installed at: ${result.pluginTarget}\n`);
|
|
38
|
+
process.stdout.write(`Config path: ${result.configPath}\n`);
|
|
39
|
+
process.stdout.write('Next: restart Hermes/gateway, then run `hermes plugins list` and `/gsd status`.\n');
|
|
40
|
+
return 0;
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
process.stderr.write(`[gsd] hermes install failed: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
44
|
+
return 1;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export function parseHermesInstallArgs(args) {
|
|
48
|
+
let hermesHome = process.env.HERMES_HOME || join(homedir(), '.hermes');
|
|
49
|
+
let pluginSource = process.env.GSD_HERMES_PLUGIN_SOURCE || findBundledHermesPluginSource();
|
|
50
|
+
let project;
|
|
51
|
+
let dryRun = false;
|
|
52
|
+
let skipPip = false;
|
|
53
|
+
let skipEnable = false;
|
|
54
|
+
for (let i = 0; i < args.length; i++) {
|
|
55
|
+
const arg = args[i];
|
|
56
|
+
const next = () => {
|
|
57
|
+
const value = args[++i];
|
|
58
|
+
if (!value)
|
|
59
|
+
throw new Error(`${arg} requires a value`);
|
|
60
|
+
return value;
|
|
61
|
+
};
|
|
62
|
+
if (arg === '--hermes-home')
|
|
63
|
+
hermesHome = next();
|
|
64
|
+
else if (arg === '--plugin-source')
|
|
65
|
+
pluginSource = next();
|
|
66
|
+
else if (arg === '--project')
|
|
67
|
+
project = next();
|
|
68
|
+
else if (arg === '--dry-run')
|
|
69
|
+
dryRun = true;
|
|
70
|
+
else if (arg === '--skip-pip')
|
|
71
|
+
skipPip = true;
|
|
72
|
+
else if (arg === '--skip-enable')
|
|
73
|
+
skipEnable = true;
|
|
74
|
+
else
|
|
75
|
+
throw new Error(`unknown option: ${arg}`);
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
hermesHome: expandHome(hermesHome),
|
|
79
|
+
pluginSource: expandHome(pluginSource),
|
|
80
|
+
project: project ? resolve(expandHome(project)) : undefined,
|
|
81
|
+
dryRun,
|
|
82
|
+
skipPip,
|
|
83
|
+
skipEnable,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
export function installHermesPlugin(options) {
|
|
87
|
+
const source = resolve(options.pluginSource);
|
|
88
|
+
if (!existsSync(join(source, 'plugin.yaml'))) {
|
|
89
|
+
throw new Error(`plugin source does not contain plugin.yaml: ${source}`);
|
|
90
|
+
}
|
|
91
|
+
const hermesHome = resolve(options.hermesHome);
|
|
92
|
+
const pluginRoot = join(hermesHome, 'plugins');
|
|
93
|
+
const pluginTarget = join(pluginRoot, PLUGIN_NAME);
|
|
94
|
+
const configPath = join(hermesHome, 'gsd.yaml');
|
|
95
|
+
const actions = [];
|
|
96
|
+
const warnings = [];
|
|
97
|
+
if (!options.dryRun) {
|
|
98
|
+
mkdirSync(pluginRoot, { recursive: true });
|
|
99
|
+
if (existsSync(pluginTarget)) {
|
|
100
|
+
rmSync(pluginTarget, { recursive: true, force: true });
|
|
101
|
+
}
|
|
102
|
+
cpSync(source, pluginTarget, {
|
|
103
|
+
recursive: true,
|
|
104
|
+
filter: (src) => !src.includes('__pycache__') && !src.includes('.pytest_cache'),
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
actions.push(`${options.dryRun ? 'Would copy' : 'Copied'} ${PLUGIN_NAME} into Hermes plugin directory`);
|
|
108
|
+
const config = renderGsdYaml(options.project);
|
|
109
|
+
if (!existsSync(configPath)) {
|
|
110
|
+
if (!options.dryRun)
|
|
111
|
+
writeFileSync(configPath, config, 'utf8');
|
|
112
|
+
actions.push(`${options.dryRun ? 'Would create' : 'Created'} ${configPath}`);
|
|
113
|
+
}
|
|
114
|
+
else if (!readFileSync(configPath, 'utf8').includes('gsd:')) {
|
|
115
|
+
warnings.push(`${configPath} exists but does not contain a gsd: section; merge the sample config from ${pluginTarget}/docs/setup.md`);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
actions.push(`Left existing ${configPath} unchanged`);
|
|
119
|
+
}
|
|
120
|
+
if (!options.skipPip) {
|
|
121
|
+
const python = findHermesPython(hermesHome);
|
|
122
|
+
const pipArgs = ['-m', 'pip', 'install', '-e', pluginTarget];
|
|
123
|
+
if (options.dryRun) {
|
|
124
|
+
actions.push(`Would run ${python} ${pipArgs.join(' ')}`);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
const pip = spawnSync(python, pipArgs, { stdio: 'pipe', encoding: 'utf8' });
|
|
128
|
+
if (pip.status !== 0) {
|
|
129
|
+
warnings.push(`Python package install failed with ${python}; Hermes may not import the plugin until you run: ${python} ${pipArgs.join(' ')}`);
|
|
130
|
+
if (pip.stderr.trim())
|
|
131
|
+
warnings.push(pip.stderr.trim().split('\n').slice(-3).join(' | '));
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
actions.push('Installed Python package into Hermes environment');
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
if (!options.skipEnable) {
|
|
139
|
+
if (options.dryRun) {
|
|
140
|
+
actions.push(`Would run HERMES_HOME=${hermesHome} hermes plugins enable ${PLUGIN_NAME}`);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
const enable = spawnSync('hermes', ['plugins', 'enable', PLUGIN_NAME], {
|
|
144
|
+
stdio: 'pipe',
|
|
145
|
+
encoding: 'utf8',
|
|
146
|
+
env: { ...process.env, HERMES_HOME: hermesHome },
|
|
147
|
+
});
|
|
148
|
+
if (enable.status !== 0) {
|
|
149
|
+
warnings.push(`Could not auto-enable plugin; run manually: HERMES_HOME=${hermesHome} hermes plugins enable ${PLUGIN_NAME}`);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
actions.push('Enabled plugin in Hermes');
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return { pluginTarget, configPath, actions, warnings };
|
|
157
|
+
}
|
|
158
|
+
function quoteYamlScalar(value) {
|
|
159
|
+
return `'${value.replace(/'/g, "''")}'`;
|
|
160
|
+
}
|
|
161
|
+
function renderGsdYaml(project) {
|
|
162
|
+
const defaultProject = project ?? '~/code/myapp';
|
|
163
|
+
return `# open-gsd-hermes configuration. Edit paths for your machine.\ngsd:\n cli_path: gsd\n mcp_server_path: gsd-mcp-server\n credential_source: gsd\n default_project: ${quoteYamlScalar(defaultProject)}\n poll_interval_seconds: 12\n cache_ttl_seconds: 45\n notification_level: normal\n bindings: {}\n`;
|
|
164
|
+
}
|
|
165
|
+
function findHermesPython(hermesHome) {
|
|
166
|
+
const suffix = process.platform === 'win32' ? join('Scripts', 'python.exe') : join('bin', 'python');
|
|
167
|
+
const bundled = join(hermesHome, 'hermes-agent', 'venv', suffix);
|
|
168
|
+
if (existsSync(bundled))
|
|
169
|
+
return bundled;
|
|
170
|
+
return process.env.PYTHON || 'python3';
|
|
171
|
+
}
|
|
172
|
+
function findBundledHermesPluginSource() {
|
|
173
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
174
|
+
const candidates = [
|
|
175
|
+
resolve(process.cwd(), 'integrations/hermes'),
|
|
176
|
+
resolve(here, '../integrations/hermes'),
|
|
177
|
+
resolve(here, '../../integrations/hermes'),
|
|
178
|
+
];
|
|
179
|
+
const found = candidates.find((candidate) => existsSync(join(candidate, 'plugin.yaml')));
|
|
180
|
+
return found ?? candidates[0];
|
|
181
|
+
}
|
|
182
|
+
function expandHome(value) {
|
|
183
|
+
if (value === '~')
|
|
184
|
+
return homedir();
|
|
185
|
+
if (value.startsWith('~/'))
|
|
186
|
+
return join(homedir(), value.slice(2));
|
|
187
|
+
return isAbsolute(value) ? value : resolve(value);
|
|
188
|
+
}
|
|
189
|
+
function printHermesHelp(stream = process.stdout) {
|
|
190
|
+
stream.write('Usage: gsd hermes install [options]\n');
|
|
191
|
+
stream.write('\nInstall the bundled open-gsd-hermes plugin into a Hermes Agent home.\n\n');
|
|
192
|
+
stream.write('Options:\n');
|
|
193
|
+
stream.write(' --hermes-home <path> Hermes home (default: $HERMES_HOME or ~/.hermes)\n');
|
|
194
|
+
stream.write(' --project <path> Default GSD project to write into gsd.yaml\n');
|
|
195
|
+
stream.write(' --plugin-source <path> Override bundled integrations/hermes source\n');
|
|
196
|
+
stream.write(' --skip-pip Copy plugin only; do not pip install editable package\n');
|
|
197
|
+
stream.write(' --skip-enable Do not run hermes plugins enable\n');
|
|
198
|
+
stream.write(' --dry-run Print intended actions without writing\n');
|
|
199
|
+
}
|
|
@@ -1,2 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
export type FileExists = (path: string) => boolean;
|
|
2
|
+
/**
|
|
3
|
+
* jiti alias map for @gsd/* workspace packages (CJS require cannot load ESM file:// URLs).
|
|
4
|
+
*
|
|
5
|
+
* In the monorepo the canonical entry points are raw TypeScript under `packages/<name>/src/`,
|
|
6
|
+
* which jiti loads directly. The published tarball ships only the compiled `packages/<name>/dist/`
|
|
7
|
+
* (see each package's `files` field) — `src/` is absent. Resolve each alias to the `src/*.ts`
|
|
8
|
+
* entry when present, otherwise fall back to the compiled `dist/*.js`, so the merge CLI loads in
|
|
9
|
+
* both layouts instead of crashing with MODULE_NOT_FOUND on the missing source path.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getJitiWorkspaceAliases(importUrl: string, fileExists?: FileExists): Record<string, string>;
|
|
@@ -1,9 +1,25 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
1
2
|
import { join } from "node:path";
|
|
2
3
|
import { resolvePackageRoot } from "./bundled-resource-path.js";
|
|
3
|
-
/**
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* jiti alias map for @gsd/* workspace packages (CJS require cannot load ESM file:// URLs).
|
|
6
|
+
*
|
|
7
|
+
* In the monorepo the canonical entry points are raw TypeScript under `packages/<name>/src/`,
|
|
8
|
+
* which jiti loads directly. The published tarball ships only the compiled `packages/<name>/dist/`
|
|
9
|
+
* (see each package's `files` field) — `src/` is absent. Resolve each alias to the `src/*.ts`
|
|
10
|
+
* entry when present, otherwise fall back to the compiled `dist/*.js`, so the merge CLI loads in
|
|
11
|
+
* both layouts instead of crashing with MODULE_NOT_FOUND on the missing source path.
|
|
12
|
+
*/
|
|
13
|
+
export function getJitiWorkspaceAliases(importUrl, fileExists = existsSync) {
|
|
5
14
|
const root = resolvePackageRoot(importUrl);
|
|
6
|
-
|
|
15
|
+
// Prefer the source `.ts` entry (monorepo); fall back to the compiled `.js` (published tarball).
|
|
16
|
+
const pkg = (dir, ...segments) => {
|
|
17
|
+
const srcEntry = join(root, "packages", dir, "src", ...segments);
|
|
18
|
+
if (fileExists(srcEntry))
|
|
19
|
+
return srcEntry;
|
|
20
|
+
const distSegments = segments.map((s) => s.replace(/\.ts$/, ".js"));
|
|
21
|
+
return join(root, "packages", dir, "dist", ...distSegments);
|
|
22
|
+
};
|
|
7
23
|
const piAi = pkg("pi-ai", "index.ts");
|
|
8
24
|
const piAiOauth = pkg("pi-ai", "utils", "oauth", "index.ts");
|
|
9
25
|
const piAgentCore = pkg("pi-agent-core", "index.ts");
|
package/dist/onboarding.js
CHANGED
|
@@ -359,11 +359,15 @@ export async function runLlmStep(p, pc, authStorage) {
|
|
|
359
359
|
if (isClaudeCliReady()) {
|
|
360
360
|
authOptions.push({ value: 'claude-cli', label: 'Use Claude Code CLI', hint: 'uses your existing Claude subscription' });
|
|
361
361
|
}
|
|
362
|
-
if (isGeminiCliReady()) {
|
|
363
|
-
authOptions.push({ value: 'gemini-cli', label: 'Use Google Gemini CLI', hint: 'uses your existing Gemini CLI session' });
|
|
364
|
-
}
|
|
365
362
|
if (isAntigravityCliReady()) {
|
|
366
|
-
authOptions.push({ value: 'antigravity-cli', label: 'Use Antigravity CLI', hint: '
|
|
363
|
+
authOptions.push({ value: 'antigravity-cli', label: 'Use Antigravity CLI', hint: 'recommended — replaces Gemini CLI for individuals' });
|
|
364
|
+
}
|
|
365
|
+
else if (isGeminiCliReady()) {
|
|
366
|
+
authOptions.push({
|
|
367
|
+
value: 'gemini-cli',
|
|
368
|
+
label: 'Use Google Gemini CLI (deprecated)',
|
|
369
|
+
hint: 'individual tier no longer supported — install Antigravity from https://antigravity.google',
|
|
370
|
+
});
|
|
367
371
|
}
|
|
368
372
|
authOptions.push({ value: 'browser', label: 'Sign in with your browser', hint: 'GitHub Copilot or ChatGPT/Codex' }, { value: 'api-key', label: 'Paste an API key', hint: 'from your provider dashboard' }, { value: 'skip', label: 'Skip for now', hint: 'use /login inside GSD later' });
|
|
369
373
|
const method = await p.select({
|
|
@@ -385,6 +389,7 @@ export async function runLlmStep(p, pc, authStorage) {
|
|
|
385
389
|
return true;
|
|
386
390
|
}
|
|
387
391
|
if (method === 'gemini-cli') {
|
|
392
|
+
p.log.warn('Google Gemini CLI is deprecated for individual users — install Antigravity: https://antigravity.google');
|
|
388
393
|
p.log.success('Google Gemini CLI detected — routing through local CLI');
|
|
389
394
|
p.log.info('Your Gemini CLI session will be used for inference. No API key needed.');
|
|
390
395
|
authStorage.set('google-gemini-cli', { type: 'api_key', key: 'cli' });
|
|
@@ -25,4 +25,27 @@ type AnthropicDefaultMigrationDeps = {
|
|
|
25
25
|
export declare function hasDirectAnthropicApiKey(authStorage: Pick<AuthStorage, "getCredentialsForProvider">, env?: NodeJS.ProcessEnv): boolean;
|
|
26
26
|
export declare function shouldMigrateAnthropicToClaudeCode({ authStorage, isClaudeCodeReady, defaultProvider, env, }: AnthropicMigrationDeps): boolean;
|
|
27
27
|
export declare function migrateAnthropicDefaultToClaudeCode({ authStorage, isClaudeCodeReady, settingsManager, modelRegistry, env, }: AnthropicDefaultMigrationDeps): boolean;
|
|
28
|
+
type GeminiCliMigrationDeps = {
|
|
29
|
+
authStorage: Pick<AuthStorage, "getCredentialsForProvider">;
|
|
30
|
+
isAntigravityReady: boolean | (() => boolean);
|
|
31
|
+
defaultProvider: string | undefined;
|
|
32
|
+
env?: NodeJS.ProcessEnv;
|
|
33
|
+
};
|
|
34
|
+
type GeminiCliDefaultMigrationDeps = {
|
|
35
|
+
authStorage: Pick<AuthStorage, "getCredentialsForProvider" | "set">;
|
|
36
|
+
isAntigravityReady: boolean | (() => boolean);
|
|
37
|
+
settingsManager: {
|
|
38
|
+
getDefaultProvider(): string | undefined;
|
|
39
|
+
getDefaultModel(): string | undefined;
|
|
40
|
+
setDefaultModelAndProvider(provider: string, modelId: string): void;
|
|
41
|
+
};
|
|
42
|
+
modelRegistry: {
|
|
43
|
+
getAvailable(): MigrationModel[];
|
|
44
|
+
};
|
|
45
|
+
env?: NodeJS.ProcessEnv;
|
|
46
|
+
};
|
|
47
|
+
export declare function hasGeminiCliExternalAuth(authStorage: Pick<AuthStorage, "getCredentialsForProvider">): boolean;
|
|
48
|
+
export declare function hasDirectGoogleApiKey(authStorage: Pick<AuthStorage, "getCredentialsForProvider">, env?: NodeJS.ProcessEnv): boolean;
|
|
49
|
+
export declare function shouldMigrateGeminiCliToAntigravity({ authStorage, isAntigravityReady, defaultProvider, env, }: GeminiCliMigrationDeps): boolean;
|
|
50
|
+
export declare function migrateGeminiCliDefaultToAntigravity({ authStorage, isAntigravityReady, settingsManager, modelRegistry, env, }: GeminiCliDefaultMigrationDeps): boolean;
|
|
28
51
|
export {};
|
|
@@ -27,3 +27,44 @@ export function migrateAnthropicDefaultToClaudeCode({ authStorage, isClaudeCodeR
|
|
|
27
27
|
settingsManager.setDefaultModelAndProvider(target.provider, target.id);
|
|
28
28
|
return true;
|
|
29
29
|
}
|
|
30
|
+
export function hasGeminiCliExternalAuth(authStorage) {
|
|
31
|
+
return authStorage.getCredentialsForProvider("google-gemini-cli").some((credential) => credential?.type === "api_key" && credential?.key === "cli");
|
|
32
|
+
}
|
|
33
|
+
export function hasDirectGoogleApiKey(authStorage, env = process.env) {
|
|
34
|
+
if ((env.GEMINI_API_KEY ?? env.GOOGLE_API_KEY ?? "").trim()) {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
return authStorage.getCredentialsForProvider("google").some((credential) => credential?.type === "api_key" && typeof credential?.key === "string" && credential.key.trim().length > 0);
|
|
38
|
+
}
|
|
39
|
+
export function shouldMigrateGeminiCliToAntigravity({ authStorage, isAntigravityReady, defaultProvider, env = process.env, }) {
|
|
40
|
+
if (defaultProvider !== "google-gemini-cli") {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
if (!hasGeminiCliExternalAuth(authStorage)) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
if (hasDirectGoogleApiKey(authStorage, env)) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
return typeof isAntigravityReady === "function" ? isAntigravityReady() : isAntigravityReady;
|
|
50
|
+
}
|
|
51
|
+
export function migrateGeminiCliDefaultToAntigravity({ authStorage, isAntigravityReady, settingsManager, modelRegistry, env = process.env, }) {
|
|
52
|
+
const defaultProvider = settingsManager.getDefaultProvider();
|
|
53
|
+
if (!shouldMigrateGeminiCliToAntigravity({ authStorage, isAntigravityReady, defaultProvider, env })) {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
const defaultModel = settingsManager.getDefaultModel();
|
|
57
|
+
const antigravityModels = modelRegistry.getAvailable().filter((model) => model.provider === "google-antigravity");
|
|
58
|
+
const target = (defaultModel
|
|
59
|
+
? antigravityModels.find((model) => model.id === defaultModel)
|
|
60
|
+
: undefined) ||
|
|
61
|
+
antigravityModels.find((model) => model.id === "default") ||
|
|
62
|
+
antigravityModels[0];
|
|
63
|
+
if (!target) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
authStorage.set("google-antigravity", { type: "api_key", key: "cli" });
|
|
67
|
+
settingsManager.setDefaultModelAndProvider(target.provider, target.id);
|
|
68
|
+
process.stderr.write("[gsd] Migrated default provider google-gemini-cli → google-antigravity (Gemini CLI no longer supported for individuals)\n");
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `gsd read` — JSON read seam for integrations (Hermes 6c).
|
|
3
|
+
*
|
|
4
|
+
* gsd read progress --json --project /path
|
|
5
|
+
* gsd read roadmap --json --project /path [--milestone M001]
|
|
6
|
+
* gsd read memory --json --project /path --query "auth"
|
|
7
|
+
*/
|
|
8
|
+
export declare const INTEGRATION_VERSION = 1;
|
|
9
|
+
export type ReadKind = 'progress' | 'roadmap' | 'memory';
|
|
10
|
+
export interface ReadEnvelope<T = unknown> {
|
|
11
|
+
integration_version: number;
|
|
12
|
+
kind: ReadKind;
|
|
13
|
+
projectDir: string;
|
|
14
|
+
data: T;
|
|
15
|
+
}
|
|
16
|
+
export interface ReadCliOptions {
|
|
17
|
+
kind: ReadKind;
|
|
18
|
+
project: string;
|
|
19
|
+
milestone?: string;
|
|
20
|
+
query?: string;
|
|
21
|
+
json: boolean;
|
|
22
|
+
}
|
|
23
|
+
export declare function runReadCli(argv: string[]): Promise<number>;
|