@opengsd/gsd-pi 1.1.1-dev.3ea310e → 1.1.1-dev.595401e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/resources/.managed-resources-content-hash +1 -1
- package/dist/resources/extensions/gsd/auto/orchestrator.js +0 -1
- package/dist/resources/extensions/gsd/auto/phases.js +4 -3
- package/dist/resources/extensions/gsd/auto-dashboard.js +92 -17
- package/dist/resources/extensions/gsd/auto-dispatch.js +5 -0
- package/dist/resources/extensions/gsd/auto-post-unit.js +132 -8
- package/dist/resources/extensions/gsd/auto-prompts.js +68 -22
- package/dist/resources/extensions/gsd/auto-start.js +41 -12
- package/dist/resources/extensions/gsd/auto-unit-tool-scope.js +2 -1
- package/dist/resources/extensions/gsd/auto.js +12 -5
- package/dist/resources/extensions/gsd/bootstrap/db-tools.js +82 -3
- package/dist/resources/extensions/gsd/bootstrap/exec-tools.js +43 -0
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +30 -9
- package/dist/resources/extensions/gsd/bootstrap/write-gate.js +16 -10
- package/dist/resources/extensions/gsd/browser-evidence.js +29 -2
- package/dist/resources/extensions/gsd/commands/handlers/core.js +1 -1
- package/dist/resources/extensions/gsd/commands-prefs-wizard.js +3 -1
- package/dist/resources/extensions/gsd/commands-verdict.js +1 -1
- package/dist/resources/extensions/gsd/config-overlay.js +2 -1
- package/dist/resources/extensions/gsd/dashboard-overlay.js +21 -7
- package/dist/resources/extensions/gsd/docs/preferences-reference.md +8 -0
- package/dist/resources/extensions/gsd/doctor-runtime-checks.js +2 -2
- package/dist/resources/extensions/gsd/error-classifier.js +2 -1
- package/dist/resources/extensions/gsd/escalation.js +4 -4
- package/dist/resources/extensions/gsd/exec-sandbox.js +2 -0
- package/dist/resources/extensions/gsd/forensics.js +74 -2
- package/dist/resources/extensions/gsd/gsd-db.js +5 -2
- package/dist/resources/extensions/gsd/guided-flow.js +29 -68
- package/dist/resources/extensions/gsd/memory-store.js +4 -1
- package/dist/resources/extensions/gsd/post-unit-hooks.js +9 -0
- package/dist/resources/extensions/gsd/preferences-validation.js +39 -0
- package/dist/resources/extensions/gsd/prompt-loader.js +7 -0
- package/dist/resources/extensions/gsd/prompts/forensics.md +61 -1
- package/dist/resources/extensions/gsd/prompts/gate-evaluate.md +3 -1
- package/dist/resources/extensions/gsd/prompts/parallel-research-slices.md +3 -1
- package/dist/resources/extensions/gsd/prompts/plan-slice.md +1 -1
- package/dist/resources/extensions/gsd/prompts/reactive-execute.md +3 -1
- package/dist/resources/extensions/gsd/prompts/run-uat.md +48 -24
- package/dist/resources/extensions/gsd/prompts/system.md +3 -1
- package/dist/resources/extensions/gsd/prompts/validate-milestone.md +3 -3
- package/dist/resources/extensions/gsd/rule-registry.js +428 -52
- package/dist/resources/extensions/gsd/safety/destructive-guard.js +3 -0
- package/dist/resources/extensions/gsd/skill-activation.js +20 -3
- package/dist/resources/extensions/gsd/state-reconciliation/drift/roadmap.js +18 -1
- package/dist/resources/extensions/gsd/state-reconciliation/index.js +6 -0
- package/dist/resources/extensions/gsd/state.js +3 -3
- package/dist/resources/extensions/gsd/templates/plan.md +3 -1
- package/dist/resources/extensions/gsd/tools/complete-task.js +11 -1
- package/dist/resources/extensions/gsd/tools/exec-tool.js +109 -0
- package/dist/resources/extensions/gsd/tools/validate-milestone.js +46 -16
- package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +403 -3
- package/dist/resources/extensions/gsd/unit-context-manifest.js +8 -3
- package/dist/resources/extensions/gsd/validation-block-guard.js +2 -0
- package/dist/resources/extensions/gsd/verdict-parser.js +59 -15
- package/dist/resources/extensions/gsd/verification-gate.js +72 -1
- package/dist/resources/extensions/gsd/workflow-mcp-auto-prep.js +1 -1
- package/dist/resources/extensions/gsd/workflow-mcp.js +5 -1
- package/dist/rtk.d.ts +7 -1
- package/dist/rtk.js +27 -11
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +7 -7
- package/dist/web/standalone/.next/build-manifest.json +2 -2
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/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 +7 -7
- package/dist/web/standalone/.next/server/chunks/8357.js +1 -1
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/pages/404.html +1 -1
- package/dist/web/standalone/.next/server/pages/500.html +1 -1
- package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
- package/package.json +3 -2
- package/packages/cloud-mcp-gateway/package.json +2 -2
- package/packages/contracts/dist/workflow.d.ts +14 -0
- package/packages/contracts/dist/workflow.d.ts.map +1 -1
- package/packages/contracts/dist/workflow.js +16 -0
- package/packages/contracts/dist/workflow.js.map +1 -1
- package/packages/contracts/package.json +1 -1
- package/packages/daemon/package.json +4 -4
- package/packages/gsd-agent-core/dist/agent-session.d.ts +9 -0
- package/packages/gsd-agent-core/dist/agent-session.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/agent-session.js +32 -0
- package/packages/gsd-agent-core/dist/agent-session.js.map +1 -1
- package/packages/gsd-agent-core/dist/index.d.ts +1 -0
- package/packages/gsd-agent-core/dist/index.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/index.js +1 -0
- package/packages/gsd-agent-core/dist/index.js.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-compaction.d.ts +2 -0
- package/packages/gsd-agent-core/dist/session/agent-session-compaction.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-compaction.js +8 -2
- package/packages/gsd-agent-core/dist/session/agent-session-compaction.js.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-host.d.ts +7 -0
- package/packages/gsd-agent-core/dist/session/agent-session-host.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-host.js.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-prompt.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-prompt.js +69 -1
- package/packages/gsd-agent-core/dist/session/agent-session-prompt.js.map +1 -1
- package/packages/gsd-agent-core/dist/turn-latency.d.ts +47 -0
- package/packages/gsd-agent-core/dist/turn-latency.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/turn-latency.js +123 -0
- package/packages/gsd-agent-core/dist/turn-latency.js.map +1 -0
- package/packages/gsd-agent-core/package.json +6 -6
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/gsd-widget-prototype.d.ts +21 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/gsd-widget-prototype.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/gsd-widget-prototype.js +213 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/gsd-widget-prototype.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.d.ts +2 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.js +10 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts +1 -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 +89 -31
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-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 +7 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-command-handlers.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-command-handlers.js +6 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-command-handlers.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-class-constants.d.ts +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-class-constants.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-class-constants.js +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-class-constants.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-settings.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-settings.js +5 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-settings.js.map +1 -1
- package/packages/gsd-agent-modes/package.json +7 -7
- package/packages/mcp-server/dist/remote-questions.d.ts.map +1 -1
- package/packages/mcp-server/dist/remote-questions.js +23 -9
- package/packages/mcp-server/dist/remote-questions.js.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.js +84 -2
- package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
- package/packages/mcp-server/package.json +3 -3
- package/packages/native/package.json +1 -1
- package/packages/pi-agent-core/dist/agent-loop.js +38 -0
- package/packages/pi-agent-core/dist/agent-loop.js.map +1 -1
- package/packages/pi-agent-core/dist/agent.d.ts +5 -1
- package/packages/pi-agent-core/dist/agent.d.ts.map +1 -1
- package/packages/pi-agent-core/dist/agent.js +2 -0
- package/packages/pi-agent-core/dist/agent.js.map +1 -1
- package/packages/pi-agent-core/dist/types.d.ts +3 -0
- package/packages/pi-agent-core/dist/types.d.ts.map +1 -1
- package/packages/pi-agent-core/dist/types.js.map +1 -1
- package/packages/pi-agent-core/package.json +1 -1
- package/packages/pi-ai/dist/api-registry.d.ts +2 -0
- package/packages/pi-ai/dist/api-registry.d.ts.map +1 -1
- package/packages/pi-ai/dist/api-registry.js +23 -0
- package/packages/pi-ai/dist/api-registry.js.map +1 -1
- package/packages/pi-ai/dist/image-models.generated.d.ts +15 -0
- package/packages/pi-ai/dist/image-models.generated.d.ts.map +1 -1
- package/packages/pi-ai/dist/image-models.generated.js +15 -0
- package/packages/pi-ai/dist/image-models.generated.js.map +1 -1
- package/packages/pi-ai/dist/models.generated.d.ts +86 -18
- package/packages/pi-ai/dist/models.generated.d.ts.map +1 -1
- package/packages/pi-ai/dist/models.generated.js +108 -40
- package/packages/pi-ai/dist/models.generated.js.map +1 -1
- package/packages/pi-ai/dist/stream.js +6 -6
- package/packages/pi-ai/dist/stream.js.map +1 -1
- package/packages/pi-ai/package.json +1 -1
- package/packages/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/model-registry.js +2 -2
- package/packages/pi-coding-agent/dist/core/model-registry.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +3 -0
- package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/settings-manager.js +11 -0
- package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
- package/packages/pi-coding-agent/package.json +7 -7
- package/packages/pi-tui/dist/terminal.d.ts +1 -0
- package/packages/pi-tui/dist/terminal.d.ts.map +1 -1
- package/packages/pi-tui/dist/terminal.js +8 -4
- package/packages/pi-tui/dist/terminal.js.map +1 -1
- package/packages/pi-tui/package.json +1 -1
- package/packages/rpc-client/package.json +2 -2
- package/pkg/package.json +1 -1
- package/src/resources/extensions/gsd/auto/orchestrator.ts +0 -1
- package/src/resources/extensions/gsd/auto/phases.ts +5 -3
- package/src/resources/extensions/gsd/auto-dashboard.ts +98 -18
- package/src/resources/extensions/gsd/auto-dispatch.ts +5 -0
- package/src/resources/extensions/gsd/auto-post-unit.ts +164 -7
- package/src/resources/extensions/gsd/auto-prompts.ts +102 -15
- package/src/resources/extensions/gsd/auto-start.ts +54 -14
- package/src/resources/extensions/gsd/auto-unit-tool-scope.ts +2 -1
- package/src/resources/extensions/gsd/auto.ts +15 -4
- package/src/resources/extensions/gsd/bootstrap/db-tools.ts +89 -3
- package/src/resources/extensions/gsd/bootstrap/exec-tools.ts +51 -0
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +51 -14
- package/src/resources/extensions/gsd/bootstrap/write-gate.ts +21 -10
- package/src/resources/extensions/gsd/browser-evidence.ts +26 -2
- package/src/resources/extensions/gsd/commands/handlers/core.ts +1 -1
- package/src/resources/extensions/gsd/commands-prefs-wizard.ts +4 -1
- package/src/resources/extensions/gsd/commands-verdict.ts +1 -1
- package/src/resources/extensions/gsd/config-overlay.ts +3 -1
- package/src/resources/extensions/gsd/dashboard-overlay.ts +28 -7
- package/src/resources/extensions/gsd/docs/preferences-reference.md +8 -0
- package/src/resources/extensions/gsd/doctor-runtime-checks.ts +2 -2
- package/src/resources/extensions/gsd/error-classifier.ts +2 -1
- package/src/resources/extensions/gsd/escalation.ts +4 -4
- package/src/resources/extensions/gsd/exec-sandbox.ts +4 -0
- package/src/resources/extensions/gsd/forensics.ts +99 -5
- package/src/resources/extensions/gsd/gsd-db.ts +5 -2
- package/src/resources/extensions/gsd/guided-flow.ts +90 -82
- package/src/resources/extensions/gsd/memory-store.ts +4 -1
- package/src/resources/extensions/gsd/post-unit-hooks.ts +14 -1
- package/src/resources/extensions/gsd/preferences-types.ts +1 -1
- package/src/resources/extensions/gsd/preferences-validation.ts +36 -0
- package/src/resources/extensions/gsd/prompt-loader.ts +8 -0
- package/src/resources/extensions/gsd/prompts/forensics.md +61 -1
- package/src/resources/extensions/gsd/prompts/gate-evaluate.md +3 -1
- package/src/resources/extensions/gsd/prompts/parallel-research-slices.md +3 -1
- package/src/resources/extensions/gsd/prompts/plan-slice.md +1 -1
- package/src/resources/extensions/gsd/prompts/reactive-execute.md +3 -1
- package/src/resources/extensions/gsd/prompts/run-uat.md +48 -24
- package/src/resources/extensions/gsd/prompts/system.md +3 -1
- package/src/resources/extensions/gsd/prompts/validate-milestone.md +3 -3
- package/src/resources/extensions/gsd/rule-registry.ts +558 -58
- package/src/resources/extensions/gsd/rule-types.ts +2 -0
- package/src/resources/extensions/gsd/safety/destructive-guard.ts +3 -0
- package/src/resources/extensions/gsd/skill-activation.ts +20 -2
- package/src/resources/extensions/gsd/state-reconciliation/drift/roadmap.ts +20 -0
- package/src/resources/extensions/gsd/state-reconciliation/index.ts +6 -0
- package/src/resources/extensions/gsd/state-reconciliation/types.ts +1 -0
- package/src/resources/extensions/gsd/state.ts +3 -3
- package/src/resources/extensions/gsd/templates/plan.md +3 -1
- package/src/resources/extensions/gsd/tests/auto-dashboard.test.ts +156 -4
- package/src/resources/extensions/gsd/tests/auto-orchestrator.test.ts +37 -0
- package/src/resources/extensions/gsd/tests/auto-start-orphan-bootstrap.test.ts +16 -3
- package/src/resources/extensions/gsd/tests/browser-evidence.test.ts +142 -0
- package/src/resources/extensions/gsd/tests/commands-dispatcher-validation-block.test.ts +38 -3
- package/src/resources/extensions/gsd/tests/commands-verdict.test.ts +6 -2
- package/src/resources/extensions/gsd/tests/complete-milestone-excerpt.test.ts +30 -0
- package/src/resources/extensions/gsd/tests/dashboard-overlay.test.ts +45 -0
- package/src/resources/extensions/gsd/tests/deep-planning-mode-dispatch.test.ts +53 -0
- package/src/resources/extensions/gsd/tests/derive-state-db.test.ts +8 -0
- package/src/resources/extensions/gsd/tests/derive-state-helpers.test.ts +8 -0
- package/src/resources/extensions/gsd/tests/discuss-milestone-structured-questions.test.ts +31 -0
- package/src/resources/extensions/gsd/tests/doctor-runtime-checks.test.ts +27 -0
- package/src/resources/extensions/gsd/tests/escalation.test.ts +16 -27
- package/src/resources/extensions/gsd/tests/exec-sandbox.test.ts +18 -0
- package/src/resources/extensions/gsd/tests/exec-tool.test.ts +69 -0
- package/src/resources/extensions/gsd/tests/forensics-issue-routing.test.ts +20 -0
- package/src/resources/extensions/gsd/tests/forensics-prompt-rendering.test.ts +3 -0
- package/src/resources/extensions/gsd/tests/forensics-tool-scope.test.ts +69 -0
- package/src/resources/extensions/gsd/tests/guided-discuss-milestone-prompt-rendering.test.ts +40 -1
- package/src/resources/extensions/gsd/tests/guided-dispatch-root.test.ts +86 -0
- package/src/resources/extensions/gsd/tests/guided-flow.test.ts +12 -9
- package/src/resources/extensions/gsd/tests/integration/auto-recovery.test.ts +4 -4
- package/src/resources/extensions/gsd/tests/integration/run-uat.test.ts +66 -10
- package/src/resources/extensions/gsd/tests/memory-maintenance.test.ts +39 -8
- package/src/resources/extensions/gsd/tests/new-milestone-discuss-routing.test.ts +3 -3
- package/src/resources/extensions/gsd/tests/parallel-skill-prompt-integration.test.ts +54 -7
- package/src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +9 -0
- package/src/resources/extensions/gsd/tests/post-unit-hooks.test.ts +157 -0
- package/src/resources/extensions/gsd/tests/post-unit-retry-on-orchestrator-bridge.test.ts +179 -0
- package/src/resources/extensions/gsd/tests/preferences.test.ts +29 -0
- package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +53 -1
- package/src/resources/extensions/gsd/tests/prompt-loader-extension-dir.test.ts +14 -0
- package/src/resources/extensions/gsd/tests/provider-errors.test.ts +18 -1
- package/src/resources/extensions/gsd/tests/queued-discuss-fast-path.test.ts +7 -8
- package/src/resources/extensions/gsd/tests/reactive-executor.test.ts +36 -0
- package/src/resources/extensions/gsd/tests/register-hooks-depth-verification.test.ts +35 -0
- package/src/resources/extensions/gsd/tests/restore-tools-after-discuss.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/rule-registry.test.ts +75 -0
- package/src/resources/extensions/gsd/tests/skill-activation.test.ts +55 -0
- package/src/resources/extensions/gsd/tests/state-reconciliation-drift.test.ts +191 -0
- package/src/resources/extensions/gsd/tests/token-tool-gating.test.ts +84 -10
- package/src/resources/extensions/gsd/tests/tool-naming.test.ts +12 -2
- package/src/resources/extensions/gsd/tests/tui-header-lifecycle.test.ts +29 -6
- package/src/resources/extensions/gsd/tests/unit-context-manifest.test.ts +29 -6
- package/src/resources/extensions/gsd/tests/validate-milestone-prompt-verification-classes.test.ts +6 -3
- package/src/resources/extensions/gsd/tests/validate-milestone-write-order.test.ts +133 -0
- package/src/resources/extensions/gsd/tests/validation-block-guard.test.ts +21 -0
- package/src/resources/extensions/gsd/tests/verification-gate.test.ts +51 -0
- package/src/resources/extensions/gsd/tests/workflow-mcp-auto-prep.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +213 -0
- package/src/resources/extensions/gsd/tests/write-gate-planning-unit.test.ts +25 -0
- package/src/resources/extensions/gsd/tools/complete-task.ts +20 -2
- package/src/resources/extensions/gsd/tools/exec-tool.ts +130 -0
- package/src/resources/extensions/gsd/tools/validate-milestone.ts +46 -15
- package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +489 -3
- package/src/resources/extensions/gsd/types.ts +67 -4
- package/src/resources/extensions/gsd/unit-context-manifest.ts +14 -5
- package/src/resources/extensions/gsd/validation-block-guard.ts +2 -0
- package/src/resources/extensions/gsd/verdict-parser.ts +54 -13
- package/src/resources/extensions/gsd/verification-gate.ts +87 -1
- package/src/resources/extensions/gsd/workflow-mcp-auto-prep.ts +1 -1
- package/src/resources/extensions/gsd/workflow-mcp.ts +5 -1
- /package/dist/web/standalone/.next/static/{xACmObbrDjwLriepRgaa9 → IDKjyRHLIaumjgonPcYiX}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{xACmObbrDjwLriepRgaa9 → IDKjyRHLIaumjgonPcYiX}/_ssgManifest.js +0 -0
|
@@ -20,6 +20,9 @@ let orphanedSegments = [];
|
|
|
20
20
|
// Invocation matching only reconciles IDs reported by different event streams.
|
|
21
21
|
// Same-source identical invocations are separate concurrent tool calls.
|
|
22
22
|
const toolRegistrationSources = new WeakMap();
|
|
23
|
+
const PROVISIONAL_PRE_TOOL_ACTIONS = "check|inspect|look(?:\\s+into)?|read|open|search|grep|scan|run|verify|test|trace|review|investigate|reproduce|use|gather|find|pull|query|take a look|update|patch|edit|change|modify|write|create|add|remove|apply";
|
|
24
|
+
const FIRST_PERSON_PROVISIONAL_PRE_TOOL_RE = new RegExp(`^(?:i(?:'ll| will)|i(?:'m| am) going to|let me|i need to)\\s+(?:${PROVISIONAL_PRE_TOOL_ACTIONS})\\b`, "i");
|
|
25
|
+
const GERUND_PROVISIONAL_PRE_TOOL_RE = /^(?:checking|inspecting|reading|searching|running|verifying|testing|tracing|reviewing|investigating|scanning|updating|patching|editing|writing|creating|applying)\b/i;
|
|
23
26
|
function findPendingToolByInvocation(pendingTools, toolName, args, source) {
|
|
24
27
|
let fallback;
|
|
25
28
|
for (const component of pendingTools.values()) {
|
|
@@ -50,6 +53,7 @@ function registerPendingToolComponent(host, toolCallId, toolName, args, source,
|
|
|
50
53
|
const component = createComponent();
|
|
51
54
|
component.setExpanded(host.toolOutputExpanded);
|
|
52
55
|
host.chatContainer.addChild(component);
|
|
56
|
+
markFirstVisibleAssistantOutput(host, "tool", { toolName, source });
|
|
53
57
|
host.pendingTools.set(toolCallId, component);
|
|
54
58
|
toolRegistrationSources.set(component, new Set([source]));
|
|
55
59
|
return { component, created: true };
|
|
@@ -69,6 +73,12 @@ function startLoadingAnimation(host) {
|
|
|
69
73
|
host.pendingWorkingMessage = undefined;
|
|
70
74
|
}
|
|
71
75
|
}
|
|
76
|
+
function markTuiLatency(host, phase, data) {
|
|
77
|
+
host.session?.markTurnLatency?.(phase, data);
|
|
78
|
+
}
|
|
79
|
+
function markFirstVisibleAssistantOutput(host, kind, data) {
|
|
80
|
+
host.session?.markFirstVisibleTurnLatency?.(kind, data);
|
|
81
|
+
}
|
|
72
82
|
function getVisibleTextLikeBlockType(block) {
|
|
73
83
|
if (block?.type === "text" && typeof block.text === "string" && block.text.trim().length > 0)
|
|
74
84
|
return "text";
|
|
@@ -244,6 +254,64 @@ function buildDesiredSegments(blocks, options = {}) {
|
|
|
244
254
|
closeRun();
|
|
245
255
|
return desired;
|
|
246
256
|
}
|
|
257
|
+
function isToolUseBlock(block) {
|
|
258
|
+
return block?.type === "toolCall" || block?.type === "serverToolUse";
|
|
259
|
+
}
|
|
260
|
+
function isMcpToolBlock(block) {
|
|
261
|
+
if (!isToolUseBlock(block))
|
|
262
|
+
return false;
|
|
263
|
+
const toolName = typeof block?.name === "string" ? block.name : "";
|
|
264
|
+
return typeof block?.mcpServer === "string" || toolName.startsWith("mcp__");
|
|
265
|
+
}
|
|
266
|
+
function hasPostToolText(blocks, firstToolIdx) {
|
|
267
|
+
if (firstToolIdx < 0)
|
|
268
|
+
return false;
|
|
269
|
+
return blocks.some((b, idx) => (idx > firstToolIdx
|
|
270
|
+
&& b?.type === "text"
|
|
271
|
+
&& typeof b?.text === "string"
|
|
272
|
+
&& b.text.trim().length > 0));
|
|
273
|
+
}
|
|
274
|
+
function normalizeProvisionalText(text) {
|
|
275
|
+
return text
|
|
276
|
+
.trim()
|
|
277
|
+
.replace(/[’`]/g, "'")
|
|
278
|
+
.replace(/\s+/g, " ");
|
|
279
|
+
}
|
|
280
|
+
export function isProvisionalPreToolProse(text) {
|
|
281
|
+
const normalized = normalizeProvisionalText(text);
|
|
282
|
+
if (!normalized)
|
|
283
|
+
return false;
|
|
284
|
+
if (textInvitesUserReply(normalized))
|
|
285
|
+
return false;
|
|
286
|
+
if (/\?\s*$/.test(normalized))
|
|
287
|
+
return false;
|
|
288
|
+
return FIRST_PERSON_PROVISIONAL_PRE_TOOL_RE.test(normalized)
|
|
289
|
+
|| GERUND_PROVISIONAL_PRE_TOOL_RE.test(normalized);
|
|
290
|
+
}
|
|
291
|
+
function getProvisionalPreToolPrunePlan(message) {
|
|
292
|
+
const blocks = message.content;
|
|
293
|
+
const firstToolIdx = blocks.findIndex(isToolUseBlock);
|
|
294
|
+
return {
|
|
295
|
+
firstToolIdx,
|
|
296
|
+
shouldPrune: message.provider === "claude-code"
|
|
297
|
+
&& firstToolIdx >= 0
|
|
298
|
+
&& blocks.some(isMcpToolBlock)
|
|
299
|
+
&& hasPostToolText(blocks, firstToolIdx),
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
function buildDesiredSegmentsForMessage(message) {
|
|
303
|
+
const { shouldPrune, firstToolIdx } = getProvisionalPreToolPrunePlan(message);
|
|
304
|
+
return buildDesiredSegments(message.content, {
|
|
305
|
+
shouldSkipTextBlock: (block, index) => {
|
|
306
|
+
if (!shouldPrune || firstToolIdx < 0 || index >= firstToolIdx)
|
|
307
|
+
return false;
|
|
308
|
+
if (getVisibleTextLikeBlockType(block) !== "text")
|
|
309
|
+
return false;
|
|
310
|
+
const textValue = typeof block?.text === "string" ? block.text : "";
|
|
311
|
+
return isProvisionalPreToolProse(textValue);
|
|
312
|
+
},
|
|
313
|
+
});
|
|
314
|
+
}
|
|
247
315
|
function hasVisibleAssistantContent(message) {
|
|
248
316
|
return message.content.some((c) => getVisibleTextLikeBlockType(c) !== undefined);
|
|
249
317
|
}
|
|
@@ -456,6 +524,7 @@ export async function handleAgentEvent(host, event) {
|
|
|
456
524
|
}
|
|
457
525
|
host.statusContainer.clear();
|
|
458
526
|
startLoadingAnimation(host);
|
|
527
|
+
markTuiLatency(host, "tui.loader_visible");
|
|
459
528
|
host.ui.requestRender();
|
|
460
529
|
break;
|
|
461
530
|
case "message_start":
|
|
@@ -473,6 +542,10 @@ export async function handleAgentEvent(host, event) {
|
|
|
473
542
|
// External-tool providers can stream multiple assistant turns through
|
|
474
543
|
// one response. Delay component creation until visible assistant text
|
|
475
544
|
// arrives so tool outputs keep chronological ordering.
|
|
545
|
+
markTuiLatency(host, "tui.assistant_message_start", {
|
|
546
|
+
provider: event.message.provider,
|
|
547
|
+
model: event.message.model,
|
|
548
|
+
});
|
|
476
549
|
host.ui.requestRender();
|
|
477
550
|
}
|
|
478
551
|
break;
|
|
@@ -576,44 +649,21 @@ export async function handleAgentEvent(host, event) {
|
|
|
576
649
|
// Build desired segment plan from content[].
|
|
577
650
|
{
|
|
578
651
|
const blocks = host.streamingMessage.content;
|
|
579
|
-
const isClaudeCodeProvider = host.streamingMessage.provider === "claude-code";
|
|
580
|
-
const hasMcpToolBlock = blocks.some((b) => {
|
|
581
|
-
if (b?.type === "toolCall") {
|
|
582
|
-
return typeof b?.mcpServer === "string" || String(b?.name ?? "").startsWith("mcp__");
|
|
583
|
-
}
|
|
584
|
-
if (b?.type === "serverToolUse") {
|
|
585
|
-
return typeof b?.mcpServer === "string" || String(b?.name ?? "").startsWith("mcp__");
|
|
586
|
-
}
|
|
587
|
-
return false;
|
|
588
|
-
});
|
|
589
|
-
const firstToolIdx = blocks.findIndex((b) => b.type === "toolCall" || b.type === "serverToolUse");
|
|
590
|
-
const hasPostToolText = firstToolIdx >= 0
|
|
591
|
-
&& blocks.some((b, idx) => (idx > firstToolIdx
|
|
592
|
-
&& b?.type === "text"
|
|
593
|
-
&& typeof b?.text === "string"
|
|
594
|
-
&& b.text.trim().length > 0));
|
|
595
652
|
// Only prune provisional pre-tool prose after post-tool prose exists,
|
|
596
653
|
// so MCP tool-only windows do not blank the assistant content.
|
|
597
|
-
const
|
|
598
|
-
let desired =
|
|
599
|
-
shouldSkipTextBlock: (block, index) => {
|
|
600
|
-
if (!shouldDropPreToolProse || firstToolIdx < 0 || index >= firstToolIdx)
|
|
601
|
-
return false;
|
|
602
|
-
if (getVisibleTextLikeBlockType(block) !== "text")
|
|
603
|
-
return false;
|
|
604
|
-
const textValue = typeof block?.text === "string" ? block.text : "";
|
|
605
|
-
return !/\?\s*$/.test(textValue.trim());
|
|
606
|
-
},
|
|
607
|
-
});
|
|
654
|
+
const { shouldPrune: shouldPruneProvisionalPreToolProse } = getProvisionalPreToolPrunePlan(host.streamingMessage);
|
|
655
|
+
let desired = buildDesiredSegmentsForMessage(host.streamingMessage);
|
|
608
656
|
desired = filterRedundantDiscussTextRuns(desired, blocks);
|
|
609
657
|
// Claude Code MCP can emit provisional pre-tool prose that gets
|
|
610
658
|
// superseded by post-tool output. Prune stale text-run segments so
|
|
611
659
|
// the final assistant output remains below tool output.
|
|
612
|
-
if (
|
|
660
|
+
if (shouldPruneProvisionalPreToolProse) {
|
|
613
661
|
if (orphanedSegments.length > 0) {
|
|
614
662
|
const remainingOrphans = [];
|
|
615
663
|
for (const orphan of orphanedSegments) {
|
|
616
|
-
if (orphan.kind === "text-run"
|
|
664
|
+
if (orphan.kind === "text-run"
|
|
665
|
+
&& orphan.contentType === "text"
|
|
666
|
+
&& isProvisionalPreToolProse(orphan.cachedText ?? "")) {
|
|
617
667
|
host.chatContainer.removeChild(orphan.component);
|
|
618
668
|
if (host.streamingComponent === orphan.component) {
|
|
619
669
|
host.streamingComponent = undefined;
|
|
@@ -674,6 +724,9 @@ export async function handleAgentEvent(host, event) {
|
|
|
674
724
|
chatTurnFollowsUser(host.chatContainer.children);
|
|
675
725
|
const comp = new AssistantMessageComponent(undefined, host.hideThinkingBlock, host.getMarkdownThemeWithSettings(), timestampFormat, { startIndex: seg.startIndex, endIndex: seg.endIndex }, connectedToUser);
|
|
676
726
|
host.chatContainer.addChild(comp);
|
|
727
|
+
markFirstVisibleAssistantOutput(host, seg.contentType, {
|
|
728
|
+
contentIndex: seg.startIndex,
|
|
729
|
+
});
|
|
677
730
|
renderedSegments.push({
|
|
678
731
|
kind: "text-run",
|
|
679
732
|
startIndex: seg.startIndex,
|
|
@@ -799,14 +852,14 @@ export async function handleAgentEvent(host, event) {
|
|
|
799
852
|
const shouldRenderAssistant = hasVisibleAssistantContent(host.streamingMessage)
|
|
800
853
|
|| ((host.streamingMessage.stopReason === "aborted" || host.streamingMessage.stopReason === "error")
|
|
801
854
|
&& !hasAssistantToolBlocks(host.streamingMessage));
|
|
802
|
-
const suppressRedundantHandoff = shouldSuppressRedundantHandoffText(host.session.messages, extractAssistantText(host.streamingMessage), orphanedSegments,
|
|
855
|
+
const suppressRedundantHandoff = shouldSuppressRedundantHandoffText(host.session.messages, extractAssistantText(host.streamingMessage), orphanedSegments, []);
|
|
803
856
|
// The final message_end payload can contain additional text/thinking
|
|
804
857
|
// blocks that never arrived via message_update (e.g. SDK result
|
|
805
858
|
// aggregation). Rebuild this in-flight turn from final content so
|
|
806
859
|
// ranges/components don't keep stale partial indices.
|
|
807
860
|
if (renderedSegments.length > 0) {
|
|
808
861
|
const finalBlocks = host.streamingMessage.content;
|
|
809
|
-
const desired = filterRedundantDiscussTextRuns(
|
|
862
|
+
const desired = filterRedundantDiscussTextRuns(buildDesiredSegmentsForMessage(host.streamingMessage), finalBlocks);
|
|
810
863
|
const toolComponentsById = new Map();
|
|
811
864
|
for (const [toolId, component] of host.pendingTools.entries()) {
|
|
812
865
|
toolComponentsById.set(toolId, component);
|
|
@@ -858,6 +911,10 @@ export async function handleAgentEvent(host, event) {
|
|
|
858
911
|
continue;
|
|
859
912
|
}
|
|
860
913
|
host.chatContainer.addChild(comp);
|
|
914
|
+
markFirstVisibleAssistantOutput(host, seg.contentType, {
|
|
915
|
+
contentIndex: seg.startIndex,
|
|
916
|
+
source: "message_end_rebuild",
|
|
917
|
+
});
|
|
861
918
|
renderedSegments.push({
|
|
862
919
|
kind: "text-run",
|
|
863
920
|
startIndex: seg.startIndex,
|
|
@@ -874,6 +931,7 @@ export async function handleAgentEvent(host, event) {
|
|
|
874
931
|
const connectedToUser = chatTurnFollowsUser(host.chatContainer.children);
|
|
875
932
|
host.streamingComponent = new AssistantMessageComponent(undefined, host.hideThinkingBlock, host.getMarkdownThemeWithSettings(), timestampFormat, undefined, connectedToUser);
|
|
876
933
|
host.chatContainer.addChild(host.streamingComponent);
|
|
934
|
+
markFirstVisibleAssistantOutput(host, "message_end_only");
|
|
877
935
|
reconcileChatTurnConnections(host.chatContainer.children);
|
|
878
936
|
}
|
|
879
937
|
if (host.streamingComponent) {
|