@opengsd/gsd-pi 1.3.0-dev.65546769 → 1.3.0-dev.738160b9
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 +1 -1
- package/dist/cli.js +17 -4
- package/dist/headless-answers.js +1 -1
- package/dist/headless-ui.d.ts +1 -1
- package/dist/headless-ui.js +1 -1
- package/dist/headless.js +1 -1
- package/dist/resources/.managed-resources-content-hash +1 -1
- package/dist/resources/extensions/claude-code-cli/models.js +9 -0
- package/dist/resources/extensions/claude-code-cli/stream-adapter.js +11 -2
- package/dist/resources/extensions/google-cli/stream-adapter.js +82 -15
- package/dist/resources/extensions/gsd/artifact-verification.js +427 -0
- package/dist/resources/extensions/gsd/auto/orchestrator.js +12 -3
- package/dist/resources/extensions/gsd/auto/session.js +11 -0
- package/dist/resources/extensions/gsd/auto/verification-retry-policy.js +1 -1
- package/dist/resources/extensions/gsd/auto-artifact-paths.js +28 -1
- package/dist/resources/extensions/gsd/auto-budget.js +5 -1
- package/dist/resources/extensions/gsd/auto-dispatch.js +34 -20
- package/dist/resources/extensions/gsd/auto-post-unit.js +1 -1
- package/dist/resources/extensions/gsd/auto-prompts.js +29 -14
- package/dist/resources/extensions/gsd/auto-recovery.js +9 -510
- package/dist/resources/extensions/gsd/auto-runtime-state.js +4 -5
- package/dist/resources/extensions/gsd/auto-timeout-recovery.js +3 -3
- package/dist/resources/extensions/gsd/auto-verification.js +5 -2
- package/dist/resources/extensions/gsd/auto.js +19 -10
- package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +103 -13
- package/dist/resources/extensions/gsd/bootstrap/core-session-tools.js +39 -0
- package/dist/resources/extensions/gsd/bootstrap/db-tools.js +11 -5
- package/dist/resources/extensions/gsd/bootstrap/exec-tools.js +2 -0
- package/dist/resources/extensions/gsd/bootstrap/register-extension.js +2 -0
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +41 -21
- package/dist/resources/extensions/gsd/bootstrap/system-context.js +46 -19
- package/dist/resources/extensions/gsd/bootstrap/tool-call-loop-guard.js +96 -10
- package/dist/resources/extensions/gsd/bootstrap/write-gate.js +1 -1
- package/dist/resources/extensions/gsd/closeout-consistency-gate.js +3 -1
- package/dist/resources/extensions/gsd/commands/handlers/auto.js +1 -1
- package/dist/resources/extensions/gsd/commands-context.js +19 -1
- package/dist/resources/extensions/gsd/commands-prefs-wizard.js +17 -11
- package/dist/resources/extensions/gsd/commands-usage.js +1 -1
- package/dist/resources/extensions/gsd/commands-worktree.js +12 -10
- package/dist/resources/extensions/gsd/dashboard-overlay.js +32 -3
- package/dist/resources/extensions/gsd/db/engine.js +4 -1
- package/dist/resources/extensions/gsd/db/queries.js +60 -0
- package/dist/resources/extensions/gsd/db-memory-fts-schema.js +34 -0
- package/dist/resources/extensions/gsd/db-workspace.js +55 -3
- package/dist/resources/extensions/gsd/delegation-policy.js +1 -1
- package/dist/resources/extensions/gsd/docs/preferences-reference.md +2 -2
- package/dist/resources/extensions/gsd/doctor-engine-checks.js +192 -4
- package/dist/resources/extensions/gsd/doctor-providers.js +92 -8
- package/dist/resources/extensions/gsd/doctor-runtime-checks.js +3 -0
- package/dist/resources/extensions/gsd/exec-sandbox.js +53 -11
- package/dist/resources/extensions/gsd/flat-phase-migration.js +45 -0
- package/dist/resources/extensions/gsd/forensics.js +2 -32
- package/dist/resources/extensions/gsd/git-service.js +61 -4
- package/dist/resources/extensions/gsd/gitignore.js +4 -1
- package/dist/resources/extensions/gsd/guided-flow-queue.js +66 -5
- package/dist/resources/extensions/gsd/health-widget.js +55 -29
- package/dist/resources/extensions/gsd/json-persistence.js +20 -0
- package/dist/resources/extensions/gsd/knowledge-backfill.js +18 -11
- package/dist/resources/extensions/gsd/layout-policy.js +3 -1
- package/dist/resources/extensions/gsd/markdown-renderer.js +8 -9
- package/dist/resources/extensions/gsd/memory-backfill.js +28 -21
- package/dist/resources/extensions/gsd/memory-consolidation-scanner.js +44 -21
- package/dist/resources/extensions/gsd/metrics.js +4 -4
- package/dist/resources/extensions/gsd/migrate-external.js +11 -2
- package/dist/resources/extensions/gsd/migration-auto-check.js +22 -0
- package/dist/resources/extensions/gsd/milestone-ids.js +32 -2
- package/dist/resources/extensions/gsd/milestone-implementation-evidence.js +26 -20
- package/dist/resources/extensions/gsd/orphan-stash-audit.js +92 -16
- package/dist/resources/extensions/gsd/prompts/code-review.md +6 -4
- package/dist/resources/extensions/gsd/prompts/plan-milestone.md +2 -2
- package/dist/resources/extensions/gsd/prompts/plan-slice.md +3 -3
- package/dist/resources/extensions/gsd/quick.js +45 -2
- package/dist/resources/extensions/gsd/root-write-leak-guard.js +7 -1
- package/dist/resources/extensions/gsd/safety/destructive-guard.js +8 -1
- package/dist/resources/extensions/gsd/safety/evidence-collector.js +16 -1
- package/dist/resources/extensions/gsd/safety/file-change-validator.js +5 -2
- package/dist/resources/extensions/gsd/session-forensics.js +11 -1
- package/dist/resources/extensions/gsd/skills/gsd-headless/references/commands.md +1 -1
- package/dist/resources/extensions/gsd/state/derive/cache.js +28 -0
- package/dist/resources/extensions/gsd/state/derive/db-open.js +39 -0
- package/dist/resources/extensions/gsd/state/derive/from-db.js +452 -0
- package/dist/resources/extensions/gsd/state/derive/index.js +75 -0
- package/dist/resources/extensions/gsd/state/derive/interrupted-work.js +21 -0
- package/dist/resources/extensions/gsd/state-reconciliation/drift/stale-render.js +45 -2
- package/dist/resources/extensions/gsd/state-reconciliation/index.js +48 -23
- package/dist/resources/extensions/gsd/state-reconciliation/registry.js +32 -28
- package/dist/resources/extensions/gsd/state.js +12 -611
- package/dist/resources/extensions/gsd/tools/complete-milestone.js +4 -2
- package/dist/resources/extensions/gsd/tools/complete-slice.js +2 -2
- package/dist/resources/extensions/gsd/tools/complete-task.js +43 -14
- package/dist/resources/extensions/gsd/tools/exec-tool.js +7 -2
- package/dist/resources/extensions/gsd/tools/plan-slice.js +59 -44
- package/dist/resources/extensions/gsd/tools/plan-task.js +28 -5
- package/dist/resources/extensions/gsd/undo.js +43 -6
- package/dist/resources/extensions/gsd/unit-context-composer.js +23 -7
- package/dist/resources/extensions/gsd/unit-registry.js +36 -6
- package/dist/resources/extensions/gsd/unmerged-milestone-guard.js +33 -3
- package/dist/resources/extensions/gsd/validation-block-guard.js +9 -4
- package/dist/resources/extensions/gsd/verification-gate.js +7 -0
- package/dist/resources/extensions/gsd/workflow-manifest.js +126 -13
- package/dist/resources/extensions/gsd/workflow-projections.js +19 -14
- package/dist/resources/extensions/gsd/workspace-git-preflight.js +30 -1
- package/dist/resources/extensions/gsd/worktree-manager.js +44 -2
- package/dist/tsconfig.extensions.tsbuildinfo +1 -1
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +10 -10
- package/dist/web/standalone/.next/build-manifest.json +3 -3
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/react-loadable-manifest.json +9 -9
- package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +2 -2
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +10 -10
- 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/{2659.b7b129ee6a769448.js → 2659.58e950899a9bb82f.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/2772.a7c1fcc69a4685ef.js +1 -0
- package/dist/web/standalone/.next/static/chunks/{3616.3c60753b8ffcbd2e.js → 3616.61a2af74bb8833c8.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/{4283.8e446784528ed9dc.js → 4283.d0d9e0a955e441cb.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/{5826.a46ecdd1cfe8dabc.js → 5826.5421d66c72b9f34e.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/{8785.481aa5869991b760.js → 8785.e29b3134cab1d153.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/8937.640dc9c2aaa1dfad.js +10 -0
- package/dist/web/standalone/.next/static/chunks/app/{page-6644fc6ee8ca1247.js → page-72a856634ad14c10.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/webpack-9c401904f87ded16.js +1 -0
- package/dist/web/standalone/node_modules/node-pty/build/Makefile +1 -1
- package/package.json +1 -1
- package/packages/cloud-mcp-gateway/package.json +2 -2
- package/packages/contracts/dist/workflow.d.ts +1 -0
- package/packages/contracts/dist/workflow.d.ts.map +1 -1
- package/packages/contracts/dist/workflow.js +2 -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 +1 -0
- package/packages/gsd-agent-core/dist/agent-session.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/agent-session.js +3 -0
- package/packages/gsd-agent-core/dist/agent-session.js.map +1 -1
- package/packages/gsd-agent-core/dist/extension-ui-snapshot.d.ts +41 -0
- package/packages/gsd-agent-core/dist/extension-ui-snapshot.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/extension-ui-snapshot.js +62 -0
- package/packages/gsd-agent-core/dist/extension-ui-snapshot.js.map +1 -0
- package/packages/gsd-agent-core/dist/index.d.ts +2 -0
- package/packages/gsd-agent-core/dist/index.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/index.js +2 -0
- package/packages/gsd-agent-core/dist/index.js.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-events.js +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-events.js.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-host.d.ts +1 -0
- package/packages/gsd-agent-core/dist/session/agent-session-host.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-host.js.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-prompt.d.ts +5 -0
- package/packages/gsd-agent-core/dist/session/agent-session-prompt.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-prompt.js +60 -3
- package/packages/gsd-agent-core/dist/session/agent-session-prompt.js.map +1 -1
- package/packages/gsd-agent-core/dist/transcript-store.d.ts +58 -0
- package/packages/gsd-agent-core/dist/transcript-store.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/transcript-store.js +132 -0
- package/packages/gsd-agent-core/dist/transcript-store.js.map +1 -0
- package/packages/gsd-agent-core/package.json +5 -5
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts +2 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js +25 -11
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller-latency.d.ts +4 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller-latency.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller-latency.js +7 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller-latency.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts +3 -24
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js +26 -829
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-handoff-filter.d.ts +58 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-handoff-filter.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-handoff-filter.js +312 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-handoff-filter.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-pinned-zone.d.ts +31 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-pinned-zone.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-pinned-zone.js +130 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-pinned-zone.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-segment-walker.d.ts +15 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-segment-walker.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-segment-walker.js +258 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-segment-walker.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-tool-rollup.d.ts +13 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-tool-rollup.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-tool-rollup.js +118 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-tool-rollup.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.d.ts +9 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.js +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-ui-state.d.ts +54 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-ui-state.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-ui-state.js +20 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-ui-state.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts +4 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js +9 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/streaming-render-state.d.ts +56 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/streaming-render-state.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/streaming-render-state.js +44 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/streaming-render-state.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/tui-transcript-tracker.d.ts +5 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/tui-transcript-tracker.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/tui-transcript-tracker.js +77 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/tui-transcript-tracker.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.d.ts +2 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.js +23 -5
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js +18 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/packages/gsd-agent-modes/package.json +7 -7
- package/packages/mcp-server/README.md +1 -1
- package/packages/mcp-server/dist/server.d.ts +1 -1
- package/packages/mcp-server/dist/server.d.ts.map +1 -1
- package/packages/mcp-server/dist/server.js +3 -3
- package/packages/mcp-server/dist/server.js.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.d.ts +13 -1
- package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.js +35 -21
- package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
- package/packages/mcp-server/package.json +4 -4
- package/packages/native/package.json +1 -1
- package/packages/pi-agent-core/dist/agent-loop.js +3 -2
- package/packages/pi-agent-core/dist/agent-loop.js.map +1 -1
- package/packages/pi-agent-core/package.json +1 -1
- package/packages/pi-ai/dist/models.generated.d.ts +46 -0
- package/packages/pi-ai/dist/models.generated.d.ts.map +1 -1
- package/packages/pi-ai/dist/models.generated.js +38 -0
- package/packages/pi-ai/dist/models.generated.js.map +1 -1
- package/packages/pi-ai/package.json +1 -1
- package/packages/pi-coding-agent/README.md +3 -2
- package/packages/pi-coding-agent/dist/core/session-manager-context.d.ts +9 -0
- package/packages/pi-coding-agent/dist/core/session-manager-context.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/session-manager-context.js +94 -0
- package/packages/pi-coding-agent/dist/core/session-manager-context.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/session-manager-list.d.ts +8 -0
- package/packages/pi-coding-agent/dist/core/session-manager-list.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/session-manager-list.js +244 -0
- package/packages/pi-coding-agent/dist/core/session-manager-list.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/session-manager-migration.d.ts +12 -0
- package/packages/pi-coding-agent/dist/core/session-manager-migration.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/session-manager-migration.js +84 -0
- package/packages/pi-coding-agent/dist/core/session-manager-migration.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/session-manager-types.d.ts +135 -0
- package/packages/pi-coding-agent/dist/core/session-manager-types.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/session-manager-types.js +2 -0
- package/packages/pi-coding-agent/dist/core/session-manager-types.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/session-manager.d.ts +6 -154
- package/packages/pi-coding-agent/dist/core/session-manager.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/session-manager.js +22 -459
- package/packages/pi-coding-agent/dist/core/session-manager.js.map +1 -1
- package/packages/pi-coding-agent/dist/theme/theme-schema.d.ts +75 -75
- package/packages/pi-coding-agent/dist/theme/theme-schema.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/theme/theme-schema.js +1 -1
- package/packages/pi-coding-agent/dist/theme/theme-schema.js.map +1 -1
- package/packages/pi-coding-agent/dist/theme/theme.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/theme/theme.js +11 -7
- package/packages/pi-coding-agent/dist/theme/theme.js.map +1 -1
- package/packages/pi-coding-agent/package.json +7 -7
- package/packages/pi-tui/package.json +2 -2
- package/packages/rpc-client/package.json +2 -2
- package/pkg/dist/theme/theme-schema.d.ts +75 -75
- package/pkg/dist/theme/theme-schema.d.ts.map +1 -1
- package/pkg/dist/theme/theme-schema.js +1 -1
- package/pkg/dist/theme/theme-schema.js.map +1 -1
- package/pkg/dist/theme/theme.d.ts.map +1 -1
- package/pkg/dist/theme/theme.js +11 -7
- package/pkg/dist/theme/theme.js.map +1 -1
- package/pkg/package.json +1 -1
- package/src/resources/extensions/claude-code-cli/models.ts +9 -0
- package/src/resources/extensions/claude-code-cli/stream-adapter.ts +20 -2
- package/src/resources/extensions/claude-code-cli/tests/index.test.ts +14 -0
- package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +80 -0
- package/src/resources/extensions/google-cli/stream-adapter.ts +106 -19
- package/src/resources/extensions/gsd/artifact-verification.ts +464 -0
- package/src/resources/extensions/gsd/auto/loop-deps.ts +1 -0
- package/src/resources/extensions/gsd/auto/orchestrator.ts +25 -11
- package/src/resources/extensions/gsd/auto/session.ts +14 -0
- package/src/resources/extensions/gsd/auto/verification-retry-policy.ts +3 -1
- package/src/resources/extensions/gsd/auto-artifact-paths.ts +47 -1
- package/src/resources/extensions/gsd/auto-budget.ts +12 -1
- package/src/resources/extensions/gsd/auto-dispatch.ts +35 -24
- package/src/resources/extensions/gsd/auto-post-unit.ts +1 -1
- package/src/resources/extensions/gsd/auto-prompts.ts +41 -15
- package/src/resources/extensions/gsd/auto-recovery.ts +13 -511
- package/src/resources/extensions/gsd/auto-runtime-state.ts +4 -5
- package/src/resources/extensions/gsd/auto-timeout-recovery.ts +3 -2
- package/src/resources/extensions/gsd/auto-verification.ts +5 -1
- package/src/resources/extensions/gsd/auto.ts +23 -8
- package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +125 -12
- package/src/resources/extensions/gsd/bootstrap/core-session-tools.ts +44 -0
- package/src/resources/extensions/gsd/bootstrap/db-tools.ts +11 -5
- package/src/resources/extensions/gsd/bootstrap/exec-tools.ts +2 -0
- package/src/resources/extensions/gsd/bootstrap/register-extension.ts +2 -0
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +52 -21
- package/src/resources/extensions/gsd/bootstrap/system-context.ts +52 -18
- package/src/resources/extensions/gsd/bootstrap/tool-call-loop-guard.ts +104 -10
- package/src/resources/extensions/gsd/bootstrap/write-gate.ts +1 -1
- package/src/resources/extensions/gsd/closeout-consistency-gate.ts +2 -1
- package/src/resources/extensions/gsd/commands/handlers/auto.ts +1 -1
- package/src/resources/extensions/gsd/commands-context.ts +18 -1
- package/src/resources/extensions/gsd/commands-prefs-wizard.ts +15 -10
- package/src/resources/extensions/gsd/commands-usage.ts +1 -1
- package/src/resources/extensions/gsd/commands-worktree.ts +12 -10
- package/src/resources/extensions/gsd/dashboard-overlay.ts +32 -3
- package/src/resources/extensions/gsd/db/engine.ts +8 -1
- package/src/resources/extensions/gsd/db/queries.ts +79 -0
- package/src/resources/extensions/gsd/db-memory-fts-schema.ts +45 -0
- package/src/resources/extensions/gsd/db-workspace.ts +61 -3
- package/src/resources/extensions/gsd/delegation-policy.ts +1 -1
- package/src/resources/extensions/gsd/docs/preferences-reference.md +2 -2
- package/src/resources/extensions/gsd/doctor-engine-checks.ts +233 -5
- package/src/resources/extensions/gsd/doctor-providers.ts +103 -9
- package/src/resources/extensions/gsd/doctor-runtime-checks.ts +3 -0
- package/src/resources/extensions/gsd/doctor-types.ts +3 -0
- package/src/resources/extensions/gsd/exec-sandbox.ts +56 -11
- package/src/resources/extensions/gsd/flat-phase-migration.ts +44 -0
- package/src/resources/extensions/gsd/forensics.ts +2 -33
- package/src/resources/extensions/gsd/git-service.ts +69 -5
- package/src/resources/extensions/gsd/gitignore.ts +4 -1
- package/src/resources/extensions/gsd/guided-flow-queue.ts +89 -4
- package/src/resources/extensions/gsd/health-widget.ts +69 -32
- package/src/resources/extensions/gsd/json-persistence.ts +20 -0
- package/src/resources/extensions/gsd/knowledge-backfill.ts +16 -10
- package/src/resources/extensions/gsd/layout-policy.ts +2 -1
- package/src/resources/extensions/gsd/markdown-renderer.ts +8 -11
- package/src/resources/extensions/gsd/memory-backfill.ts +26 -20
- package/src/resources/extensions/gsd/memory-consolidation-scanner.ts +51 -19
- package/src/resources/extensions/gsd/metrics.ts +4 -4
- package/src/resources/extensions/gsd/migrate-external.ts +8 -2
- package/src/resources/extensions/gsd/migration-auto-check.ts +23 -0
- package/src/resources/extensions/gsd/milestone-ids.ts +31 -2
- package/src/resources/extensions/gsd/milestone-implementation-evidence.ts +35 -21
- package/src/resources/extensions/gsd/orphan-stash-audit.ts +108 -20
- package/src/resources/extensions/gsd/prompts/code-review.md +6 -4
- package/src/resources/extensions/gsd/prompts/plan-milestone.md +2 -2
- package/src/resources/extensions/gsd/prompts/plan-slice.md +3 -3
- package/src/resources/extensions/gsd/quick.ts +43 -2
- package/src/resources/extensions/gsd/root-write-leak-guard.ts +13 -1
- package/src/resources/extensions/gsd/safety/destructive-guard.ts +9 -1
- package/src/resources/extensions/gsd/safety/evidence-collector.ts +16 -1
- package/src/resources/extensions/gsd/safety/file-change-validator.ts +8 -2
- package/src/resources/extensions/gsd/session-forensics.ts +11 -1
- package/src/resources/extensions/gsd/skills/gsd-headless/references/commands.md +1 -1
- package/src/resources/extensions/gsd/state/derive/cache.ts +46 -0
- package/src/resources/extensions/gsd/state/derive/db-open.ts +45 -0
- package/src/resources/extensions/gsd/state/derive/from-db.ts +561 -0
- package/src/resources/extensions/gsd/state/derive/index.ts +104 -0
- package/src/resources/extensions/gsd/state/derive/interrupted-work.ts +31 -0
- package/src/resources/extensions/gsd/state-reconciliation/drift/stale-render.ts +81 -7
- package/src/resources/extensions/gsd/state-reconciliation/index.ts +50 -24
- package/src/resources/extensions/gsd/state-reconciliation/registry.ts +43 -28
- package/src/resources/extensions/gsd/state.ts +32 -732
- package/src/resources/extensions/gsd/tests/artifact-retry-cap.test.ts +4 -3
- package/src/resources/extensions/gsd/tests/auto-artifact-paths.test.ts +98 -1
- package/src/resources/extensions/gsd/tests/auto-budget-alerts.test.ts +14 -5
- package/src/resources/extensions/gsd/tests/auto-pause-double-entry-guard.test.ts +36 -0
- package/src/resources/extensions/gsd/tests/auto-paused-ui-cleanup.test.ts +182 -4
- package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +146 -1
- package/src/resources/extensions/gsd/tests/auto-retry-mcp-churn-fixes.test.ts +30 -0
- package/src/resources/extensions/gsd/tests/commands-context.test.ts +26 -0
- package/src/resources/extensions/gsd/tests/commands-gsd-core.test.ts +1 -0
- package/src/resources/extensions/gsd/tests/commands-worktree-clean.test.ts +80 -0
- package/src/resources/extensions/gsd/tests/complete-milestone.test.ts +28 -0
- package/src/resources/extensions/gsd/tests/complete-slice-reopen-handoff.test.ts +69 -0
- package/src/resources/extensions/gsd/tests/complete-slice.test.ts +11 -0
- package/src/resources/extensions/gsd/tests/complete-task-rollback-evidence.test.ts +48 -8
- package/src/resources/extensions/gsd/tests/complete-task.test.ts +75 -0
- package/src/resources/extensions/gsd/tests/dashboard-overlay.test.ts +55 -2
- package/src/resources/extensions/gsd/tests/db-memory-fts-schema.test.ts +58 -3
- package/src/resources/extensions/gsd/tests/decisions-projection-from-memories.test.ts +51 -0
- package/src/resources/extensions/gsd/tests/destructive-guard.test.ts +44 -0
- package/src/resources/extensions/gsd/tests/dispatch-missing-task-plans.test.ts +143 -0
- package/src/resources/extensions/gsd/tests/dispatch-rule-coverage.test.ts +26 -1
- package/src/resources/extensions/gsd/tests/doctor-forensics-db-open-regression.test.ts +70 -2
- package/src/resources/extensions/gsd/tests/doctor-providers.test.ts +107 -0
- package/src/resources/extensions/gsd/tests/doctor-scope-db-unavailable.test.ts +239 -2
- package/src/resources/extensions/gsd/tests/exec-graceful-kill.test.ts +38 -0
- package/src/resources/extensions/gsd/tests/exec-sandbox.test.ts +16 -0
- package/src/resources/extensions/gsd/tests/exec-tool.test.ts +45 -1
- package/src/resources/extensions/gsd/tests/file-change-validator.test.ts +40 -0
- package/src/resources/extensions/gsd/tests/flat-phase-migration.test.ts +37 -2
- package/src/resources/extensions/gsd/tests/forensics-error-filter.test.ts +88 -0
- package/src/resources/extensions/gsd/tests/gitignore-bg-shell-runtime.test.ts +4 -0
- package/src/resources/extensions/gsd/tests/guided-discuss-milestone-prompt-rendering.test.ts +42 -0
- package/src/resources/extensions/gsd/tests/health-widget.test.ts +268 -3
- package/src/resources/extensions/gsd/tests/integration/git-service.test.ts +130 -3
- package/src/resources/extensions/gsd/tests/integration/queue-active-milestone-context-budget.test.ts +93 -0
- package/src/resources/extensions/gsd/tests/integration/quick-branch-lifecycle.test.ts +56 -9
- package/src/resources/extensions/gsd/tests/json-persistence-atomic.test.ts +47 -0
- package/src/resources/extensions/gsd/tests/knowledge-backfill-projection.test.ts +35 -0
- package/src/resources/extensions/gsd/tests/knowledge-cold-start.test.ts +14 -0
- package/src/resources/extensions/gsd/tests/memory-consolidation-scanner.test.ts +78 -0
- package/src/resources/extensions/gsd/tests/memory-store.test.ts +48 -0
- package/src/resources/extensions/gsd/tests/merge-closeout-consistency-gate.test.ts +31 -1
- package/src/resources/extensions/gsd/tests/metrics-prune-cache-invalidation.test.ts +6 -0
- package/src/resources/extensions/gsd/tests/metrics.test.ts +1 -0
- package/src/resources/extensions/gsd/tests/migrate-external-worktree.test.ts +57 -0
- package/src/resources/extensions/gsd/tests/migration-auto-check.test.ts +70 -0
- package/src/resources/extensions/gsd/tests/orchestrator-logs.test.ts +43 -1
- package/src/resources/extensions/gsd/tests/orphan-stash-audit.test.ts +91 -7
- package/src/resources/extensions/gsd/tests/parallel-research-dispatch.test.ts +26 -0
- package/src/resources/extensions/gsd/tests/parsers-legacy-importers.test.ts +4 -1
- package/src/resources/extensions/gsd/tests/pipeline-variant-dispatch.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +10 -0
- package/src/resources/extensions/gsd/tests/plan-slice.test.ts +103 -4
- package/src/resources/extensions/gsd/tests/plan-task.test.ts +44 -1
- package/src/resources/extensions/gsd/tests/post-mutation-hook.test.ts +4 -2
- package/src/resources/extensions/gsd/tests/prefs-wizard-coverage.test.ts +54 -1
- package/src/resources/extensions/gsd/tests/progressive-planning.test.ts +50 -14
- package/src/resources/extensions/gsd/tests/prompt-budget-enforcement.test.ts +58 -0
- package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +8 -6
- package/src/resources/extensions/gsd/tests/provider-errors.test.ts +195 -1
- package/src/resources/extensions/gsd/tests/read-uat-gate-verdict.test.ts +185 -0
- package/src/resources/extensions/gsd/tests/register-hooks-depth-verification.test.ts +87 -0
- package/src/resources/extensions/gsd/tests/register-hooks-loop-guard-auto.test.ts +103 -0
- package/src/resources/extensions/gsd/tests/root-write-leak-guard.test.ts +20 -1
- package/src/resources/extensions/gsd/tests/runtime-invariant-modules.test.ts +15 -3
- package/src/resources/extensions/gsd/tests/stalled-tool-recovery.test.ts +56 -0
- package/src/resources/extensions/gsd/tests/state-reconciliation-drift.test.ts +191 -0
- package/src/resources/extensions/gsd/tests/tool-call-loop-guard.test.ts +208 -0
- package/src/resources/extensions/gsd/tests/tool-param-optionality.test.ts +32 -3
- package/src/resources/extensions/gsd/tests/undo.test.ts +74 -0
- package/src/resources/extensions/gsd/tests/unit-context-composer.test.ts +193 -14
- package/src/resources/extensions/gsd/tests/unmerged-milestone-guard.test.ts +25 -0
- package/src/resources/extensions/gsd/tests/uok-gitops-turn-action.test.ts +38 -0
- package/src/resources/extensions/gsd/tests/validation-block-guard.test.ts +79 -0
- package/src/resources/extensions/gsd/tests/verification-retry-policy.test.ts +69 -4
- package/src/resources/extensions/gsd/tests/verify-artifact-tightened.test.ts +66 -0
- package/src/resources/extensions/gsd/tests/workflow-manifest.test.ts +96 -15
- package/src/resources/extensions/gsd/tests/workflow-mcp-preflight.test.ts +1 -0
- package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +8 -4
- package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +6 -5
- package/src/resources/extensions/gsd/tests/workspace-git-preflight.test.ts +151 -2
- package/src/resources/extensions/gsd/tests/worktree-manager.test.ts +39 -0
- package/src/resources/extensions/gsd/tools/complete-milestone.ts +3 -2
- package/src/resources/extensions/gsd/tools/complete-slice.ts +2 -2
- package/src/resources/extensions/gsd/tools/complete-task.ts +53 -15
- package/src/resources/extensions/gsd/tools/exec-tool.ts +7 -3
- package/src/resources/extensions/gsd/tools/plan-slice.ts +60 -47
- package/src/resources/extensions/gsd/tools/plan-task.ts +30 -5
- package/src/resources/extensions/gsd/undo.ts +47 -6
- package/src/resources/extensions/gsd/unit-context-composer.ts +33 -7
- package/src/resources/extensions/gsd/unit-registry.ts +36 -6
- package/src/resources/extensions/gsd/unmerged-milestone-guard.ts +41 -5
- package/src/resources/extensions/gsd/validation-block-guard.ts +13 -7
- package/src/resources/extensions/gsd/verification-gate.ts +8 -0
- package/src/resources/extensions/gsd/workflow-manifest.ts +141 -7
- package/src/resources/extensions/gsd/workflow-projections.ts +20 -14
- package/src/resources/extensions/gsd/workspace-git-preflight.ts +31 -0
- package/src/resources/extensions/gsd/worktree-manager.ts +41 -1
- package/dist/web/standalone/.next/static/chunks/2772.bfa657f49f955239.js +0 -1
- package/dist/web/standalone/.next/static/chunks/796.e0bdc932325d7e03.js +0 -10
- package/dist/web/standalone/.next/static/chunks/webpack-f46ea08200a0227e.js +0 -1
- /package/dist/web/standalone/.next/static/{BTKtGFF1Y-hvVJEGhBRo9 → 2A_WqqCS-EoYZxN9_v3d2}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{BTKtGFF1Y-hvVJEGhBRo9 → 2A_WqqCS-EoYZxN9_v3d2}/_ssgManifest.js +0 -0
|
@@ -76,6 +76,8 @@ import { join } from "node:path";
|
|
|
76
76
|
import { evaluateAllCompleteSettlement } from "../milestone-settlement.js";
|
|
77
77
|
import { hasHeldMilestoneLease, reclaimMissingMilestoneLease } from "./milestone-lease-reclaim.js";
|
|
78
78
|
|
|
79
|
+
type UokFlags = ReturnType<typeof resolveUokFlags>;
|
|
80
|
+
|
|
79
81
|
function now(): number {
|
|
80
82
|
return Date.now();
|
|
81
83
|
}
|
|
@@ -517,15 +519,7 @@ export class AutoOrchestrator implements AutoOrchestrationModule {
|
|
|
517
519
|
|
|
518
520
|
// ── UokGateAdapter (folded) ──────────────────────────────────────────────
|
|
519
521
|
|
|
520
|
-
private
|
|
521
|
-
gateId: string;
|
|
522
|
-
gateType: "policy" | "execution";
|
|
523
|
-
outcome: "pass" | "fail" | "manual-attention";
|
|
524
|
-
failureClass: "none" | "policy" | "manual-attention";
|
|
525
|
-
rationale: string;
|
|
526
|
-
findings?: string;
|
|
527
|
-
milestoneId?: string;
|
|
528
|
-
}): Promise<void> {
|
|
522
|
+
private resolveUokGateContext(): { activeBasePath: string; uokFlags: UokFlags } {
|
|
529
523
|
const activeBasePath = this.getLiveDispatchBasePath();
|
|
530
524
|
const prefs = loadEffectiveGSDPreferencesWithRegistry(
|
|
531
525
|
this.ctx.modelRegistry,
|
|
@@ -535,8 +529,22 @@ export class AutoOrchestrator implements AutoOrchestrationModule {
|
|
|
535
529
|
? `${this.s.autoModeStartModel.provider}/${this.s.autoModeStartModel.id}`
|
|
536
530
|
: undefined,
|
|
537
531
|
)?.preferences;
|
|
538
|
-
|
|
539
|
-
|
|
532
|
+
return { activeBasePath, uokFlags: resolveUokFlags(prefs) };
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
private async emitUokGate(input: {
|
|
536
|
+
gateId: string;
|
|
537
|
+
gateType: "policy" | "execution";
|
|
538
|
+
outcome: "pass" | "fail" | "manual-attention";
|
|
539
|
+
failureClass: "none" | "policy" | "manual-attention";
|
|
540
|
+
rationale: string;
|
|
541
|
+
findings?: string;
|
|
542
|
+
milestoneId?: string;
|
|
543
|
+
activeBasePath: string;
|
|
544
|
+
uokFlags: UokFlags;
|
|
545
|
+
}): Promise<void> {
|
|
546
|
+
if (!input.uokFlags.gates) return;
|
|
547
|
+
const activeBasePath = input.activeBasePath;
|
|
540
548
|
const milestoneId = input.milestoneId ?? this.s.currentMilestoneId ?? undefined;
|
|
541
549
|
try {
|
|
542
550
|
const { UokGateRunner } = await import("../uok/gate-runner.js");
|
|
@@ -943,10 +951,12 @@ export class AutoOrchestrator implements AutoOrchestrationModule {
|
|
|
943
951
|
const stopAdvanceTimer = debugTime("orchestrator-advance");
|
|
944
952
|
try {
|
|
945
953
|
this.ensureLockOwnership();
|
|
954
|
+
const uokGateContext = this.resolveUokGateContext();
|
|
946
955
|
|
|
947
956
|
const staleMsg = this.checkResourcesStale();
|
|
948
957
|
if (staleMsg) {
|
|
949
958
|
await this.emitUokGate({
|
|
959
|
+
...uokGateContext,
|
|
950
960
|
gateId: "resource-version-guard",
|
|
951
961
|
gateType: "policy",
|
|
952
962
|
outcome: "fail",
|
|
@@ -960,6 +970,7 @@ export class AutoOrchestrator implements AutoOrchestrationModule {
|
|
|
960
970
|
return blocked;
|
|
961
971
|
}
|
|
962
972
|
await this.emitUokGate({
|
|
973
|
+
...uokGateContext,
|
|
963
974
|
gateId: "resource-version-guard",
|
|
964
975
|
gateType: "policy",
|
|
965
976
|
outcome: "pass",
|
|
@@ -970,6 +981,7 @@ export class AutoOrchestrator implements AutoOrchestrationModule {
|
|
|
970
981
|
const gate = await this.preAdvanceGate();
|
|
971
982
|
if (gate.kind === "fail") {
|
|
972
983
|
await this.emitUokGate({
|
|
984
|
+
...uokGateContext,
|
|
973
985
|
gateId: "pre-dispatch-health-gate",
|
|
974
986
|
gateType: "execution",
|
|
975
987
|
outcome: "manual-attention",
|
|
@@ -988,6 +1000,7 @@ export class AutoOrchestrator implements AutoOrchestrationModule {
|
|
|
988
1000
|
}
|
|
989
1001
|
if (gate.kind === "threw") {
|
|
990
1002
|
await this.emitUokGate({
|
|
1003
|
+
...uokGateContext,
|
|
991
1004
|
gateId: "pre-dispatch-health-gate",
|
|
992
1005
|
gateType: "execution",
|
|
993
1006
|
outcome: "manual-attention",
|
|
@@ -998,6 +1011,7 @@ export class AutoOrchestrator implements AutoOrchestrationModule {
|
|
|
998
1011
|
// intentional fall-through: matches runPreDispatch behaviour
|
|
999
1012
|
} else {
|
|
1000
1013
|
await this.emitUokGate({
|
|
1014
|
+
...uokGateContext,
|
|
1001
1015
|
gateId: "pre-dispatch-health-gate",
|
|
1002
1016
|
gateType: "execution",
|
|
1003
1017
|
outcome: "pass",
|
|
@@ -30,6 +30,7 @@ import { normalizeRealPath } from "../paths.js";
|
|
|
30
30
|
import type { MilestoneScope } from "../workspace.js";
|
|
31
31
|
import type { RootDirtySnapshot } from "../root-write-leak-guard.js";
|
|
32
32
|
import type { MilestoneSettlementOutcome } from "../milestone-settlement.js";
|
|
33
|
+
import type { ToolSurfaceSnapshot } from "../tool-surface-snapshot.js";
|
|
33
34
|
|
|
34
35
|
// ─── Exported Types ──────────────────────────────────────────────────────────
|
|
35
36
|
|
|
@@ -55,6 +56,7 @@ export type ThinkingLevelSnapshot = ReturnType<ExtensionAPI["getThinkingLevel"]>
|
|
|
55
56
|
export interface PendingVerificationRetry {
|
|
56
57
|
unitId: string;
|
|
57
58
|
failureContext: string;
|
|
59
|
+
signature?: string;
|
|
58
60
|
attempt: number;
|
|
59
61
|
}
|
|
60
62
|
|
|
@@ -160,6 +162,9 @@ export class AutoSession {
|
|
|
160
162
|
currentMilestoneId: string | null = null;
|
|
161
163
|
readonly sourceObservations = new SourceObservationStore();
|
|
162
164
|
|
|
165
|
+
/** Live tool-surface snapshot for dashboard / runtime telemetry while auto is active. */
|
|
166
|
+
toolSurfaceSnapshot: ToolSurfaceSnapshot | null = null;
|
|
167
|
+
|
|
163
168
|
// ── Model state ──────────────────────────────────────────────────────────
|
|
164
169
|
autoModeStartModel: StartModel | null = null;
|
|
165
170
|
/** Explicit /gsd model pin captured at bootstrap (session-scoped policy override). */
|
|
@@ -207,6 +212,13 @@ export class AutoSession {
|
|
|
207
212
|
* the issues after MAX_PRE_EXEC_RETRIES re-attempts.
|
|
208
213
|
*/
|
|
209
214
|
readonly preExecRetryCount: Map<string, number> = new Map();
|
|
215
|
+
/**
|
|
216
|
+
* Tracks how many times each slice unit has been re-dispatched to plan-slice
|
|
217
|
+
* because task plan files were missing. Keyed by unitId (e.g. "M001/S01").
|
|
218
|
+
* Separate from preExecRetryCount so pre-exec gate failures do not block or
|
|
219
|
+
* conflate with missing-task-plan recovery.
|
|
220
|
+
*/
|
|
221
|
+
readonly missingTaskPlanRetryCount: Map<string, number> = new Map();
|
|
210
222
|
|
|
211
223
|
// ── Tool invocation errors (#2883) ──────────────────────────────────
|
|
212
224
|
/** Set when a GSD tool execution ends with isError due to malformed/truncated
|
|
@@ -367,6 +379,7 @@ export class AutoSession {
|
|
|
367
379
|
|
|
368
380
|
// Unit
|
|
369
381
|
this.clearCurrentUnit();
|
|
382
|
+
this.toolSurfaceSnapshot = null;
|
|
370
383
|
this.currentTraceId = null;
|
|
371
384
|
this.currentTurnId = null;
|
|
372
385
|
this.currentUnitRouting = null;
|
|
@@ -407,6 +420,7 @@ export class AutoSession {
|
|
|
407
420
|
this.consecutiveCompleteBootstraps = 0;
|
|
408
421
|
this.lastPreExecFailure = null;
|
|
409
422
|
this.preExecRetryCount.clear();
|
|
423
|
+
this.missingTaskPlanRetryCount.clear();
|
|
410
424
|
this.lastToolInvocationError = null;
|
|
411
425
|
this.toolUnavailableRetries = 0;
|
|
412
426
|
this.lastUnitAgentEndMessages = null;
|
|
@@ -63,7 +63,9 @@ export function decideVerificationRetry(input: {
|
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
const key = verificationRetryKey(unitType, retryInfo.unitId);
|
|
66
|
-
const failureHash = hashVerificationFailureContext(
|
|
66
|
+
const failureHash = hashVerificationFailureContext(
|
|
67
|
+
retryInfo.signature ?? retryInfo.failureContext,
|
|
68
|
+
);
|
|
67
69
|
if (input.previousFailureHash === failureHash) {
|
|
68
70
|
return {
|
|
69
71
|
action: "pause",
|
|
@@ -22,7 +22,8 @@ import {
|
|
|
22
22
|
} from "./paths.js";
|
|
23
23
|
import { milestoneIdToPhaseNum } from "./layout-policy.js";
|
|
24
24
|
import { parseUnitId } from "./unit-id.js";
|
|
25
|
-
import { dirname, join } from "node:path";
|
|
25
|
+
import { dirname, join, relative } from "node:path";
|
|
26
|
+
import { existsSync } from "node:fs";
|
|
26
27
|
|
|
27
28
|
function resolveMilestoneArtifactPath(
|
|
28
29
|
base: string,
|
|
@@ -314,3 +315,48 @@ export function diagnoseExpectedArtifact(
|
|
|
314
315
|
return null;
|
|
315
316
|
}
|
|
316
317
|
}
|
|
318
|
+
|
|
319
|
+
export interface SliceResearchLocation {
|
|
320
|
+
/** Absolute path when research exists; null when missing. */
|
|
321
|
+
absolutePath: string | null;
|
|
322
|
+
/** Prompt-friendly relative path when research exists. */
|
|
323
|
+
relativePath: string | null;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
/**
|
|
327
|
+
* Resolve slice RESEARCH with worktree projection first, then canonical
|
|
328
|
+
* project-root path. Shared by dispatch rules, execute-task prompts, and
|
|
329
|
+
* artifact verification.
|
|
330
|
+
*/
|
|
331
|
+
export function resolveSliceResearchLocation(
|
|
332
|
+
basePath: string,
|
|
333
|
+
mid: string,
|
|
334
|
+
sid: string,
|
|
335
|
+
): SliceResearchLocation {
|
|
336
|
+
const projectedFile = resolveSliceFile(basePath, mid, sid, "RESEARCH");
|
|
337
|
+
if (projectedFile) {
|
|
338
|
+
return {
|
|
339
|
+
absolutePath: projectedFile,
|
|
340
|
+
relativePath: relSliceFile(basePath, mid, sid, "RESEARCH"),
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
const canonicalPath = resolveExpectedArtifactPath("research-slice", `${mid}/${sid}`, basePath);
|
|
345
|
+
if (canonicalPath && existsSync(canonicalPath)) {
|
|
346
|
+
return {
|
|
347
|
+
absolutePath: canonicalPath,
|
|
348
|
+
relativePath: relative(basePath, canonicalPath),
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
return { absolutePath: null, relativePath: null };
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
/** Returns the absolute RESEARCH path when it exists, otherwise null. */
|
|
356
|
+
export function resolveExistingSliceResearchPath(
|
|
357
|
+
basePath: string,
|
|
358
|
+
mid: string,
|
|
359
|
+
sid: string,
|
|
360
|
+
): string | null {
|
|
361
|
+
return resolveSliceResearchLocation(basePath, mid, sid).absolutePath;
|
|
362
|
+
}
|
|
@@ -79,7 +79,9 @@ export function resolveCompactionThresholdPercent(raw: number | undefined): numb
|
|
|
79
79
|
return value <= 1 ? value * 100 : value;
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
export
|
|
82
|
+
export const HARD_CONTEXT_REROOT_THRESHOLD_PERCENT = 90;
|
|
83
|
+
|
|
84
|
+
export function shouldWarnStepSessionForContext(
|
|
83
85
|
contextPercent: number | null | undefined,
|
|
84
86
|
compactionThresholdPercent?: number,
|
|
85
87
|
): boolean {
|
|
@@ -88,3 +90,12 @@ export function shouldRerootStepSessionForContext(
|
|
|
88
90
|
resolveCompactionThresholdPercent(compactionThresholdPercent),
|
|
89
91
|
) === "pause";
|
|
90
92
|
}
|
|
93
|
+
|
|
94
|
+
export function shouldRerootStepSessionForContext(
|
|
95
|
+
contextPercent: number | null | undefined,
|
|
96
|
+
): boolean {
|
|
97
|
+
return getContextPauseAction(
|
|
98
|
+
contextPercent,
|
|
99
|
+
HARD_CONTEXT_REROOT_THRESHOLD_PERCENT,
|
|
100
|
+
) === "pause";
|
|
101
|
+
}
|
|
@@ -30,6 +30,7 @@ import {
|
|
|
30
30
|
setSliceSketchFlag,
|
|
31
31
|
transaction,
|
|
32
32
|
getAssessment,
|
|
33
|
+
getSliceRunUatAssessment,
|
|
33
34
|
} from "./gsd-db.js";
|
|
34
35
|
import { isClosedStatus } from "./status-guards.js";
|
|
35
36
|
import { extractVerdict, isAcceptableUatVerdict } from "./verdict-parser.js";
|
|
@@ -113,7 +114,7 @@ import { detectWorktreeName } from "./worktree.js";
|
|
|
113
114
|
import { probeGitConflictState } from "./git-conflict-state.js";
|
|
114
115
|
import { runTurnGitAction } from "./git-service.js";
|
|
115
116
|
import { parseUnitId } from "./unit-id.js";
|
|
116
|
-
import { resolveExpectedArtifactPath } from "./auto-artifact-paths.js";
|
|
117
|
+
import { resolveExpectedArtifactPath, resolveExistingSliceResearchPath } from "./auto-artifact-paths.js";
|
|
117
118
|
import {
|
|
118
119
|
formatCloseoutProofBlock,
|
|
119
120
|
proveMilestoneCloseout,
|
|
@@ -322,6 +323,19 @@ export async function readUatGateVerdict(
|
|
|
322
323
|
}
|
|
323
324
|
}
|
|
324
325
|
|
|
326
|
+
// ADR-017 DB fallback: when the ASSESSMENT markdown is missing or orphaned
|
|
327
|
+
// from its canonical path (e.g. after a milestone artifact-layout migration
|
|
328
|
+
// moves slice artifacts from `phases/…` to `milestones/…`), consult the
|
|
329
|
+
// authoritative assessments table by (mid, slice) identity instead of path.
|
|
330
|
+
// `gsd_uat_result_save` always writes this row, so it is the source of truth.
|
|
331
|
+
const runUatAssessment = getSliceRunUatAssessment(mid, sliceId);
|
|
332
|
+
if (runUatAssessment?.status) {
|
|
333
|
+
return {
|
|
334
|
+
verdict: runUatAssessment.status,
|
|
335
|
+
uatType: uatType ?? extractUatType(runUatAssessment.fullContent),
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
|
|
325
339
|
return null;
|
|
326
340
|
}
|
|
327
341
|
|
|
@@ -1142,18 +1156,15 @@ export const DISPATCH_RULES: DispatchRule[] = [
|
|
|
1142
1156
|
const dbSlices = getMilestoneSliceSummaries(mid);
|
|
1143
1157
|
if (dbSlices.length === 0) return null;
|
|
1144
1158
|
|
|
1145
|
-
// Find slices that need research (no RESEARCH file, dependencies done)
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
resolveMilestoneFile(basePath, mid, "RESEARCH");
|
|
1159
|
+
// Find slices that need research (no RESEARCH file, dependencies done).
|
|
1160
|
+
// Milestone research informs slice research; it does not satisfy the
|
|
1161
|
+
// per-slice RESEARCH artifact contract.
|
|
1149
1162
|
const researchReadySlices: Array<{ id: string; title: string }> = [];
|
|
1150
1163
|
|
|
1151
1164
|
for (const slice of dbSlices) {
|
|
1152
1165
|
if (slice.done) continue;
|
|
1153
|
-
// Skip S01 when milestone research exists
|
|
1154
|
-
if (milestoneResearchFile && slice.id === "S01") continue;
|
|
1155
1166
|
// Skip if already has research
|
|
1156
|
-
if (
|
|
1167
|
+
if (resolveExistingSliceResearchPath(basePath, mid, slice.id)) continue;
|
|
1157
1168
|
// Skip if dependencies aren't done (check for SUMMARY files)
|
|
1158
1169
|
const depsComplete = slice.depends.every((depId) =>
|
|
1159
1170
|
!!resolveExistingExpectedArtifact("complete-slice", `${mid}/${depId}`, basePath),
|
|
@@ -1190,7 +1201,7 @@ export const DISPATCH_RULES: DispatchRule[] = [
|
|
|
1190
1201
|
},
|
|
1191
1202
|
},
|
|
1192
1203
|
{
|
|
1193
|
-
name: "planning (no research
|
|
1204
|
+
name: "planning (no research) → research-slice",
|
|
1194
1205
|
match: async ({ state, mid, midTitle, basePath, prefs }) => {
|
|
1195
1206
|
if (state.phase !== "planning") return null;
|
|
1196
1207
|
// Phase skip: skip research when preference or profile says so
|
|
@@ -1201,20 +1212,7 @@ export const DISPATCH_RULES: DispatchRule[] = [
|
|
|
1201
1212
|
if (!state.activeSlice) return missingSliceStop(mid, state.phase);
|
|
1202
1213
|
const sid = state.activeSlice!.id;
|
|
1203
1214
|
const sTitle = state.activeSlice!.title;
|
|
1204
|
-
|
|
1205
|
-
resolveExistingExpectedArtifact("research-slice", `${mid}/${sid}`, basePath) ??
|
|
1206
|
-
resolveSliceFile(basePath, mid, sid, "RESEARCH");
|
|
1207
|
-
if (researchFile) return null; // has research, fall through
|
|
1208
|
-
// Skip slice research for S01 when milestone research already exists —
|
|
1209
|
-
// the milestone research already covers the same ground for the first slice.
|
|
1210
|
-
const milestoneResearchFile =
|
|
1211
|
-
resolveExistingExpectedArtifact("research-milestone", mid, basePath) ??
|
|
1212
|
-
resolveMilestoneFile(
|
|
1213
|
-
basePath,
|
|
1214
|
-
mid,
|
|
1215
|
-
"RESEARCH",
|
|
1216
|
-
);
|
|
1217
|
-
if (milestoneResearchFile && sid === "S01") return null; // fall through to plan-slice
|
|
1215
|
+
if (resolveExistingSliceResearchPath(basePath, mid, sid)) return null; // has research, fall through
|
|
1218
1216
|
return {
|
|
1219
1217
|
action: "dispatch",
|
|
1220
1218
|
unitType: "research-slice",
|
|
@@ -1525,6 +1523,7 @@ export const DISPATCH_RULES: DispatchRule[] = [
|
|
|
1525
1523
|
const sid = state.activeSlice!.id;
|
|
1526
1524
|
const sTitle = state.activeSlice!.title;
|
|
1527
1525
|
const tid = state.activeTask.id;
|
|
1526
|
+
const unitId = `${mid}/${sid}`;
|
|
1528
1527
|
const artifactBasePath = resolveArtifactBasePath(basePath, mid, session);
|
|
1529
1528
|
|
|
1530
1529
|
// Guard: if the slice plan exists but the individual task plan files are
|
|
@@ -1564,6 +1563,17 @@ export const DISPATCH_RULES: DispatchRule[] = [
|
|
|
1564
1563
|
!existsSync(projectionTaskPlanPath) &&
|
|
1565
1564
|
!tasksEmbeddedInSlicePlan
|
|
1566
1565
|
) {
|
|
1566
|
+
const MAX_MISSING_TASK_PLAN_RETRIES = 2;
|
|
1567
|
+
const retryCount = session?.missingTaskPlanRetryCount?.get(unitId) ?? 0;
|
|
1568
|
+
if (retryCount >= MAX_MISSING_TASK_PLAN_RETRIES) {
|
|
1569
|
+
session?.missingTaskPlanRetryCount?.delete(unitId);
|
|
1570
|
+
return {
|
|
1571
|
+
action: "stop",
|
|
1572
|
+
reason: `Missing task-plan recovery failed ${retryCount} times for ${unitId} - manual intervention required. Task plan ${tid} is still missing after regenerating the slice plan. Fix the task-plan files manually, then run /gsd auto to resume.`,
|
|
1573
|
+
level: "error",
|
|
1574
|
+
};
|
|
1575
|
+
}
|
|
1576
|
+
session?.missingTaskPlanRetryCount?.set(unitId, retryCount + 1);
|
|
1567
1577
|
if (isDebugEnabled()) {
|
|
1568
1578
|
const expectedTaskPlanPath = join(artifactBasePath, relTaskFile(artifactBasePath, mid, sid, tid, "PLAN"));
|
|
1569
1579
|
const originalProjectRoot = session?.originalBasePath || basePath;
|
|
@@ -1587,7 +1597,7 @@ export const DISPATCH_RULES: DispatchRule[] = [
|
|
|
1587
1597
|
return {
|
|
1588
1598
|
action: "dispatch",
|
|
1589
1599
|
unitType: "plan-slice",
|
|
1590
|
-
unitId
|
|
1600
|
+
unitId,
|
|
1591
1601
|
prompt: await buildPlanSlicePrompt(
|
|
1592
1602
|
mid,
|
|
1593
1603
|
midTitle,
|
|
@@ -1600,6 +1610,7 @@ export const DISPATCH_RULES: DispatchRule[] = [
|
|
|
1600
1610
|
};
|
|
1601
1611
|
}
|
|
1602
1612
|
|
|
1613
|
+
session?.missingTaskPlanRetryCount?.delete(unitId);
|
|
1603
1614
|
return null;
|
|
1604
1615
|
},
|
|
1605
1616
|
},
|
|
@@ -2212,7 +2212,7 @@ export async function postUnitPreVerification(pctx: PostUnitContext, opts?: PreV
|
|
|
2212
2212
|
saveCustomVerifyRetryCounts(s, { logFailure: err => debugLog("postUnit", { phase: "save-verify-retries-failed", error: err instanceof Error ? err.message : String(err) }) });
|
|
2213
2213
|
s.pendingVerificationRetry = {
|
|
2214
2214
|
unitId: s.currentUnit.id,
|
|
2215
|
-
failureContext:
|
|
2215
|
+
failureContext: failureDetails,
|
|
2216
2216
|
attempt,
|
|
2217
2217
|
};
|
|
2218
2218
|
debugLog("postUnit", { phase: "artifact-verify-retry", unitType: s.currentUnit.type, unitId: s.currentUnit.id, attempt });
|
|
@@ -17,14 +17,14 @@ import {
|
|
|
17
17
|
resolveMilestoneFile, resolveSliceFile, resolveSlicePath,
|
|
18
18
|
resolveTasksDir, resolveTaskFiles, resolveTaskFile,
|
|
19
19
|
relMilestoneFile, relSliceFile, relSlicePath, relMilestonePath,
|
|
20
|
-
resolveGsdRootFile, relGsdRootFile, resolveRuntimeFile,
|
|
20
|
+
relTaskFile, resolveGsdRootFile, relGsdRootFile, resolveRuntimeFile,
|
|
21
21
|
} from "./paths.js";
|
|
22
22
|
import { resolveInlineLevel, loadEffectiveGSDPreferences } from "./preferences.js";
|
|
23
23
|
import { isContextModeEnabled } from "./preferences-types.js";
|
|
24
24
|
import { parseRoadmap } from "./parsers-legacy.js";
|
|
25
25
|
import type { GSDState, InlineLevel } from "./types.js";
|
|
26
26
|
import type { GSDPreferences } from "./preferences.js";
|
|
27
|
-
import { join, basename } from "node:path";
|
|
27
|
+
import { join, basename, relative } from "node:path";
|
|
28
28
|
import { existsSync } from "node:fs";
|
|
29
29
|
import { computeBudgets, resolveExecutorContextWindow, truncateAtSectionBoundary, type MinimalModelRegistry } from "./context-budget.js";
|
|
30
30
|
import { getPendingGates, getPendingGatesForTurn } from "./gsd-db.js";
|
|
@@ -48,6 +48,7 @@ import {
|
|
|
48
48
|
type ExcerptResolver,
|
|
49
49
|
} from "./unit-context-composer.js";
|
|
50
50
|
import { resolveManifest, type ArtifactKey } from "./unit-context-manifest.js";
|
|
51
|
+
import { resolveSliceResearchLocation } from "./auto-artifact-paths.js";
|
|
51
52
|
import { compileUnitContextContract, type UnitPromptContextContract } from "./tool-contract.js";
|
|
52
53
|
import { readCompactionSnapshot } from "./compaction-snapshot.js";
|
|
53
54
|
import { logWarning } from "./workflow-logger.js";
|
|
@@ -323,19 +324,37 @@ function requireComposedArtifactBlock(
|
|
|
323
324
|
return block.body;
|
|
324
325
|
}
|
|
325
326
|
|
|
327
|
+
interface ExecuteTaskOnDemandResult {
|
|
328
|
+
/** Rendered block for the prompt; empty string when not shown. */
|
|
329
|
+
text: string;
|
|
330
|
+
/**
|
|
331
|
+
* Telemetry skip reason when the block was suppressed; null when the block
|
|
332
|
+
* is included. Callers pass this directly to `trackPromptContext`.
|
|
333
|
+
*/
|
|
334
|
+
skipReason: string | null;
|
|
335
|
+
}
|
|
336
|
+
|
|
326
337
|
function renderExecuteTaskOnDemandContext(
|
|
327
338
|
base: string,
|
|
328
339
|
mid: string,
|
|
329
340
|
sid: string,
|
|
330
341
|
artifacts: readonly ArtifactKey[],
|
|
331
|
-
):
|
|
332
|
-
if (!artifacts.includes("slice-research"))
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
342
|
+
): ExecuteTaskOnDemandResult {
|
|
343
|
+
if (!artifacts.includes("slice-research")) {
|
|
344
|
+
return { text: "", skipReason: "not declared by contract" };
|
|
345
|
+
}
|
|
346
|
+
const research = resolveSliceResearchLocation(base, mid, sid);
|
|
347
|
+
if (!research.absolutePath || !research.relativePath) {
|
|
348
|
+
return { text: "", skipReason: "missing" };
|
|
349
|
+
}
|
|
350
|
+
return {
|
|
351
|
+
text: [
|
|
352
|
+
"## On-demand Context",
|
|
353
|
+
"",
|
|
354
|
+
`Slice research is available at \`${research.relativePath}\`. Read it only if the inlined task plan, slice plan excerpt, and carry-forward context do not explain a required implementation detail.`,
|
|
355
|
+
].join("\n"),
|
|
356
|
+
skipReason: null,
|
|
357
|
+
};
|
|
339
358
|
}
|
|
340
359
|
|
|
341
360
|
// ─── Executor Constraints ─────────────────────────────────────────────────────
|
|
@@ -1691,7 +1710,13 @@ export async function buildDiscussMilestonePrompt(
|
|
|
1691
1710
|
const draftContent = draftPath ? await loadFile(draftPath) : null;
|
|
1692
1711
|
|
|
1693
1712
|
if (includeDraftSeed && draftContent) {
|
|
1694
|
-
|
|
1713
|
+
const draftRelPath = relMilestoneFile(base, mid, "CONTEXT-DRAFT");
|
|
1714
|
+
const draftSeed = `### Prior Discussion Draft\nSource: \`${draftRelPath}\`\n\n${draftContent.trim()}`;
|
|
1715
|
+
const cappedDraftSeed = capPreamble(draftSeed);
|
|
1716
|
+
const truncationNote = cappedDraftSeed !== draftSeed
|
|
1717
|
+
? `\n\n_(Draft seed truncated; read the full draft at \`${draftRelPath}\` if needed.)_`
|
|
1718
|
+
: "";
|
|
1719
|
+
return `${promptWithContextMode}\n\n## Prior Discussion (Draft Seed)\n\nThe following draft was captured from a prior multi-milestone discussion. Use it as seed material — the user has already provided this context. Start with a brief reflection on what the draft covers, then probe for any gaps or open questions before writing the full CONTEXT.md.\n\n${cappedDraftSeed}${truncationNote}`;
|
|
1695
1720
|
}
|
|
1696
1721
|
|
|
1697
1722
|
return promptWithContextMode;
|
|
@@ -2637,7 +2662,7 @@ export async function buildExecuteTaskPrompt(
|
|
|
2637
2662
|
|
|
2638
2663
|
const taskPlanPath = resolveTaskFile(base, mid, sid, tid, "PLAN");
|
|
2639
2664
|
const taskPlanContent = taskPlanPath ? await loadFile(taskPlanPath) : null;
|
|
2640
|
-
const taskPlanRelPath =
|
|
2665
|
+
const taskPlanRelPath = relTaskFile(base, mid, sid, tid, "PLAN");
|
|
2641
2666
|
const taskPlanContext = taskPlanContent
|
|
2642
2667
|
? [
|
|
2643
2668
|
"## Inlined Task Plan (authoritative local execution contract)",
|
|
@@ -2807,13 +2832,14 @@ export async function buildExecuteTaskPrompt(
|
|
|
2807
2832
|
const slicePlanExcerpt = requireComposedArtifactBlock(contractedContext.blocks, "execute-task", "slice-plan");
|
|
2808
2833
|
const contractedCarryForward = requireComposedArtifactBlock(contractedContext.blocks, "execute-task", "prior-task-summaries");
|
|
2809
2834
|
const contractedTemplates = requireComposedArtifactBlock(contractedContext.blocks, "execute-task", "templates");
|
|
2810
|
-
const
|
|
2835
|
+
const onDemandResult = renderExecuteTaskOnDemandContext(base, mid, sid, contractedContext.onDemand);
|
|
2836
|
+
const onDemandContext = onDemandResult.text;
|
|
2811
2837
|
trackPromptContext(
|
|
2812
2838
|
contextTelemetry,
|
|
2813
2839
|
"slice-research",
|
|
2814
2840
|
onDemandContext ? "on-demand" : "skipped",
|
|
2815
2841
|
onDemandContext,
|
|
2816
|
-
onDemandContext ? undefined :
|
|
2842
|
+
onDemandContext ? undefined : onDemandResult.skipReason ?? undefined,
|
|
2817
2843
|
);
|
|
2818
2844
|
|
|
2819
2845
|
const prompt = loadPrompt("execute-task", {
|
|
@@ -3875,7 +3901,7 @@ export async function buildReactiveExecutePrompt(
|
|
|
3875
3901
|
|
|
3876
3902
|
const taskPlanPath = resolveTaskFile(base, mid, sid, tid, "PLAN");
|
|
3877
3903
|
const taskPlanContent = taskPlanPath ? await loadFile(taskPlanPath) : null;
|
|
3878
|
-
const taskPlanRelPath =
|
|
3904
|
+
const taskPlanRelPath = relTaskFile(base, mid, sid, tid, "PLAN");
|
|
3879
3905
|
const taskPlanInline = taskPlanContent
|
|
3880
3906
|
? [
|
|
3881
3907
|
"## Inlined Task Plan (authoritative local execution contract)",
|