gsd-pi 2.79.0-dev.ece5fd8ba → 2.80.0-dev.c5f2443b3
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/github-sync/templates.js +55 -70
- package/dist/resources/extensions/gsd/auto/contracts.js +1 -0
- package/dist/resources/extensions/gsd/auto/custom-verify-retry-store.js +53 -0
- package/dist/resources/extensions/gsd/auto/loop.js +359 -523
- package/dist/resources/extensions/gsd/auto/orchestrator.js +146 -0
- package/dist/resources/extensions/gsd/auto/phases.js +55 -6
- package/dist/resources/extensions/gsd/auto/session.js +8 -0
- package/dist/resources/extensions/gsd/auto/workflow-custom-engine-dispatch-outcome.js +12 -0
- package/dist/resources/extensions/gsd/auto/workflow-custom-engine-iteration.js +24 -0
- package/dist/resources/extensions/gsd/auto/workflow-custom-engine-reconcile-outcome.js +33 -0
- package/dist/resources/extensions/gsd/auto/workflow-custom-engine-reconcile.js +26 -0
- package/dist/resources/extensions/gsd/auto/workflow-custom-engine-retry.js +49 -0
- package/dist/resources/extensions/gsd/auto/workflow-custom-engine-verify-outcome.js +25 -0
- package/dist/resources/extensions/gsd/auto/workflow-dispatch-claim.js +48 -0
- package/dist/resources/extensions/gsd/auto/workflow-dispatch-ledger.js +26 -0
- package/dist/resources/extensions/gsd/auto/workflow-iteration-completion.js +10 -0
- package/dist/resources/extensions/gsd/auto/workflow-journal-reporter.js +16 -0
- package/dist/resources/extensions/gsd/auto/workflow-kernel.js +263 -0
- package/dist/resources/extensions/gsd/auto/workflow-memory-pressure.js +36 -0
- package/dist/resources/extensions/gsd/auto/workflow-phase-reporter.js +9 -0
- package/dist/resources/extensions/gsd/auto/workflow-session-lock.js +35 -0
- package/dist/resources/extensions/gsd/auto/workflow-sidecar-iteration.js +24 -0
- package/dist/resources/extensions/gsd/auto/workflow-sidecar-queue.js +26 -0
- package/dist/resources/extensions/gsd/auto/workflow-turn-reporter.js +36 -0
- package/dist/resources/extensions/gsd/auto/workflow-unit-dispatch.js +44 -0
- package/dist/resources/extensions/gsd/auto/workflow-worker-heartbeat.js +15 -0
- package/dist/resources/extensions/gsd/auto-dashboard.js +3 -0
- package/dist/resources/extensions/gsd/auto-prompts.js +168 -3
- package/dist/resources/extensions/gsd/auto-recovery.js +45 -52
- package/dist/resources/extensions/gsd/auto-runtime-state.js +4 -0
- package/dist/resources/extensions/gsd/auto-verification.js +2 -11
- package/dist/resources/extensions/gsd/auto-worktree.js +87 -38
- package/dist/resources/extensions/gsd/auto.js +159 -2
- package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +9 -1
- package/dist/resources/extensions/gsd/bootstrap/db-tools.js +10 -0
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +11 -5
- package/dist/resources/extensions/gsd/commands-ship.js +23 -46
- package/dist/resources/extensions/gsd/commands-workflow-templates.js +12 -7
- package/dist/resources/extensions/gsd/component-loader.js +5 -11
- package/dist/resources/extensions/gsd/custom-workflow-engine.js +4 -0
- package/dist/resources/extensions/gsd/db-adapter.js +47 -0
- package/dist/resources/extensions/gsd/db-base-schema.js +337 -0
- package/dist/resources/extensions/gsd/db-connection-cache.js +31 -0
- package/dist/resources/extensions/gsd/db-coordination-schema.js +104 -0
- package/dist/resources/extensions/gsd/db-decision-requirement-rows.js +71 -0
- package/dist/resources/extensions/gsd/db-gate-rows.js +16 -0
- package/dist/resources/extensions/gsd/db-lightweight-query-rows.js +29 -0
- package/dist/resources/extensions/gsd/db-memory-fts-schema.js +56 -0
- package/dist/resources/extensions/gsd/db-migration-backup.js +22 -0
- package/dist/resources/extensions/gsd/db-migration-steps.js +394 -0
- package/dist/resources/extensions/gsd/db-milestone-artifact-rows.js +35 -0
- package/dist/resources/extensions/gsd/db-open-state.js +32 -0
- package/dist/resources/extensions/gsd/db-provider.js +108 -0
- package/dist/resources/extensions/gsd/db-runtime-kv-schema.js +27 -0
- package/dist/resources/extensions/gsd/db-schema-metadata.js +23 -0
- package/dist/resources/extensions/gsd/db-task-slice-rows.js +86 -0
- package/dist/resources/extensions/gsd/db-transaction.js +63 -0
- package/dist/resources/extensions/gsd/db-verification-evidence-rows.js +3 -0
- package/dist/resources/extensions/gsd/db-verification-evidence-schema.js +19 -0
- package/dist/resources/extensions/gsd/escalation.js +2 -0
- package/dist/resources/extensions/gsd/gsd-db.js +215 -1519
- package/dist/resources/extensions/gsd/legacy-telemetry.js +70 -0
- package/dist/resources/extensions/gsd/markdown-renderer.js +2 -0
- package/dist/resources/extensions/gsd/model-router.js +9 -6
- package/dist/resources/extensions/gsd/notification-widget.js +21 -3
- package/dist/resources/extensions/gsd/post-execution-checks.js +27 -6
- package/dist/resources/extensions/gsd/pr-evidence.js +76 -0
- package/dist/resources/extensions/gsd/pre-execution-checks.js +2 -0
- package/dist/resources/extensions/gsd/process-task-path.js +61 -0
- package/dist/resources/extensions/gsd/prompt-loader.js +9 -5
- package/dist/resources/extensions/gsd/prompts/complete-milestone.md +32 -30
- package/dist/resources/extensions/gsd/prompts/complete-slice.md +23 -34
- package/dist/resources/extensions/gsd/prompts/discuss-headless.md +50 -96
- package/dist/resources/extensions/gsd/prompts/discuss.md +81 -181
- package/dist/resources/extensions/gsd/prompts/execute-task.md +40 -67
- package/dist/resources/extensions/gsd/prompts/forensics.md +41 -84
- package/dist/resources/extensions/gsd/prompts/guided-discuss-milestone.md +29 -39
- package/dist/resources/extensions/gsd/prompts/guided-discuss-project.md +30 -65
- package/dist/resources/extensions/gsd/prompts/guided-discuss-requirements.md +25 -52
- package/dist/resources/extensions/gsd/prompts/guided-discuss-slice.md +36 -36
- package/dist/resources/extensions/gsd/prompts/guided-research-project.md +20 -38
- package/dist/resources/extensions/gsd/prompts/plan-milestone.md +45 -59
- package/dist/resources/extensions/gsd/prompts/plan-slice.md +25 -87
- package/dist/resources/extensions/gsd/prompts/queue.md +46 -53
- package/dist/resources/extensions/gsd/prompts/refine-slice.md +23 -23
- package/dist/resources/extensions/gsd/prompts/research-slice.md +23 -23
- package/dist/resources/extensions/gsd/prompts/rethink.md +10 -10
- package/dist/resources/extensions/gsd/prompts/system.md +65 -107
- package/dist/resources/extensions/gsd/prompts/triage-captures.md +15 -15
- package/dist/resources/extensions/gsd/prompts/validate-milestone.md +24 -24
- package/dist/resources/extensions/gsd/prompts/worktree-merge.md +35 -35
- package/dist/resources/extensions/gsd/state.js +4 -0
- package/dist/resources/extensions/gsd/tools/complete-milestone.js +14 -9
- package/dist/resources/extensions/gsd/tools/complete-task.js +2 -0
- package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +6 -1
- package/dist/resources/extensions/gsd/unit-context-composer.js +1 -1
- package/dist/resources/extensions/gsd/uok/kernel.js +8 -3
- package/dist/resources/extensions/gsd/uok/plan-v2.js +2 -0
- package/dist/resources/extensions/gsd/workflow-logger.js +13 -13
- package/dist/resources/extensions/gsd/workflow-manifest.js +2 -0
- package/dist/resources/extensions/gsd/workflow-projections.js +2 -0
- package/dist/resources/extensions/gsd/workflow-templates.js +9 -0
- package/dist/resources/extensions/shared/interview-ui.js +15 -4
- 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 +13 -13
- 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/required-server-files.json +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.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/boot/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/captures/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/cleanup/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/doctor/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/export-data/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/forensics/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/history/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/hooks/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/inspect/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/knowledge/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/live-state/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/notifications/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/onboarding/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/recovery/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/browser/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/command/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/session/events/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/events/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/manage/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/settings-data/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/skill-health/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/steer/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/switch-root/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/undo/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +13 -13
- package/dist/web/standalone/.next/server/chunks/167.js +2 -0
- package/dist/web/standalone/.next/server/chunks/6897.js +1 -1
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/pages/404.html +1 -1
- package/dist/web/standalone/.next/server/pages/500.html +1 -1
- package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
- package/dist/web/standalone/package.json +1 -0
- package/dist/web/standalone/server.js +1 -1
- package/package.json +9 -2
- package/packages/contracts/dist/index.d.ts +3 -0
- package/packages/contracts/dist/index.d.ts.map +1 -0
- package/packages/contracts/dist/index.js +5 -0
- package/packages/contracts/dist/index.js.map +1 -0
- package/packages/contracts/dist/rpc.d.ts +549 -0
- package/packages/contracts/dist/rpc.d.ts.map +1 -0
- package/packages/contracts/dist/rpc.js +53 -0
- package/packages/contracts/dist/rpc.js.map +1 -0
- package/packages/contracts/dist/rpc.test.d.ts +2 -0
- package/packages/contracts/dist/rpc.test.d.ts.map +1 -0
- package/packages/contracts/dist/rpc.test.js +47 -0
- package/packages/contracts/dist/rpc.test.js.map +1 -0
- package/packages/contracts/dist/workflow.d.ts +180 -0
- package/packages/contracts/dist/workflow.d.ts.map +1 -0
- package/packages/contracts/dist/workflow.js +201 -0
- package/packages/contracts/dist/workflow.js.map +1 -0
- package/packages/contracts/package.json +39 -0
- package/packages/contracts/src/index.ts +5 -0
- package/packages/contracts/src/rpc.test.ts +72 -0
- package/packages/contracts/src/rpc.ts +286 -0
- package/packages/contracts/src/workflow.ts +213 -0
- package/packages/contracts/tsconfig.json +25 -0
- package/packages/contracts/tsconfig.tsbuildinfo +1 -0
- package/packages/daemon/package.json +3 -2
- package/packages/daemon/src/event-bridge.test.ts +2 -1
- package/packages/daemon/src/event-bridge.ts +1 -1
- package/packages/daemon/src/event-formatter.test.ts +1 -2
- package/packages/daemon/src/event-formatter.ts +1 -2
- package/packages/daemon/src/session-manager.ts +2 -2
- package/packages/daemon/src/types.ts +3 -18
- package/packages/mcp-server/dist/server.d.ts +13 -0
- package/packages/mcp-server/dist/server.d.ts.map +1 -1
- package/packages/mcp-server/dist/server.js +77 -0
- package/packages/mcp-server/dist/server.js.map +1 -1
- package/packages/mcp-server/dist/session-manager.js +1 -1
- package/packages/mcp-server/dist/session-manager.js.map +1 -1
- package/packages/mcp-server/dist/types.d.ts +3 -11
- package/packages/mcp-server/dist/types.d.ts.map +1 -1
- package/packages/mcp-server/dist/types.js.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.d.ts +1 -1
- package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.js +2 -40
- package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
- package/packages/mcp-server/package.json +3 -2
- package/packages/mcp-server/src/mcp-server.test.ts +138 -0
- package/packages/mcp-server/src/server.ts +99 -1
- package/packages/mcp-server/src/session-manager.ts +2 -2
- package/packages/mcp-server/src/types.ts +7 -18
- package/packages/mcp-server/src/workflow-tools.ts +2 -40
- package/packages/mcp-server/tsconfig.tsbuildinfo +1 -1
- package/packages/native/package.json +1 -1
- package/packages/pi-agent-core/package.json +1 -1
- package/packages/pi-ai/package.json +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-execution.test.js +14 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-execution.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-card-cleanup-and-success-runtime.test.js +20 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-card-cleanup-and-success-runtime.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +6 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +9 -1
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +31 -10
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts +1 -512
- package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.js +3 -7
- package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.js.map +1 -1
- package/packages/pi-coding-agent/package.json +2 -1
- package/packages/pi-coding-agent/src/modes/interactive/components/__tests__/tool-execution.test.ts +23 -2
- package/packages/pi-coding-agent/src/modes/interactive/components/tool-card-cleanup-and-success-runtime.test.ts +31 -0
- package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +6 -1
- package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +50 -9
- package/packages/pi-coding-agent/src/modes/rpc/rpc-types.ts +3 -336
- package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -1
- package/packages/pi-tui/dist/tui.d.ts +1 -0
- package/packages/pi-tui/dist/tui.d.ts.map +1 -1
- package/packages/pi-tui/dist/tui.js +8 -2
- package/packages/pi-tui/dist/tui.js.map +1 -1
- package/packages/pi-tui/package.json +1 -1
- package/packages/pi-tui/src/tui.ts +8 -2
- package/packages/pi-tui/tsconfig.tsbuildinfo +1 -1
- package/packages/rpc-client/README.md +3 -3
- package/packages/rpc-client/dist/index.d.ts +1 -1
- package/packages/rpc-client/dist/index.d.ts.map +1 -1
- package/packages/rpc-client/dist/index.js.map +1 -1
- package/packages/rpc-client/dist/rpc-client.d.ts +2 -6
- package/packages/rpc-client/dist/rpc-client.d.ts.map +1 -1
- package/packages/rpc-client/dist/rpc-client.js.map +1 -1
- package/packages/rpc-client/dist/rpc-types.d.ts +1 -565
- package/packages/rpc-client/dist/rpc-types.d.ts.map +1 -1
- package/packages/rpc-client/dist/rpc-types.js +3 -11
- package/packages/rpc-client/dist/rpc-types.js.map +1 -1
- package/packages/rpc-client/package.json +4 -1
- package/packages/rpc-client/src/index.ts +1 -1
- package/packages/rpc-client/src/rpc-client.ts +3 -6
- package/packages/rpc-client/src/rpc-types.ts +3 -398
- package/packages/rpc-client/tsconfig.tsbuildinfo +1 -1
- package/pkg/package.json +1 -1
- package/src/resources/extensions/github-sync/templates.ts +59 -84
- package/src/resources/extensions/github-sync/tests/templates.test.ts +10 -2
- package/src/resources/extensions/gsd/auto/contracts.ts +87 -0
- package/src/resources/extensions/gsd/auto/custom-verify-retry-store.ts +72 -0
- package/src/resources/extensions/gsd/auto/loop-deps.ts +10 -3
- package/src/resources/extensions/gsd/auto/loop.ts +411 -598
- package/src/resources/extensions/gsd/auto/orchestrator.ts +161 -0
- package/src/resources/extensions/gsd/auto/phases.ts +82 -8
- package/src/resources/extensions/gsd/auto/session.ts +11 -0
- package/src/resources/extensions/gsd/auto/workflow-custom-engine-dispatch-outcome.ts +28 -0
- package/src/resources/extensions/gsd/auto/workflow-custom-engine-iteration.ts +52 -0
- package/src/resources/extensions/gsd/auto/workflow-custom-engine-reconcile-outcome.ts +58 -0
- package/src/resources/extensions/gsd/auto/workflow-custom-engine-reconcile.ts +71 -0
- package/src/resources/extensions/gsd/auto/workflow-custom-engine-retry.ts +90 -0
- package/src/resources/extensions/gsd/auto/workflow-custom-engine-verify-outcome.ts +50 -0
- package/src/resources/extensions/gsd/auto/workflow-dispatch-claim.ts +97 -0
- package/src/resources/extensions/gsd/auto/workflow-dispatch-ledger.ts +45 -0
- package/src/resources/extensions/gsd/auto/workflow-iteration-completion.ts +26 -0
- package/src/resources/extensions/gsd/auto/workflow-journal-reporter.ts +33 -0
- package/src/resources/extensions/gsd/auto/workflow-kernel.ts +520 -0
- package/src/resources/extensions/gsd/auto/workflow-memory-pressure.ts +58 -0
- package/src/resources/extensions/gsd/auto/workflow-phase-reporter.ts +22 -0
- package/src/resources/extensions/gsd/auto/workflow-session-lock.ts +68 -0
- package/src/resources/extensions/gsd/auto/workflow-sidecar-iteration.ts +46 -0
- package/src/resources/extensions/gsd/auto/workflow-sidecar-queue.ts +46 -0
- package/src/resources/extensions/gsd/auto/workflow-turn-reporter.ts +68 -0
- package/src/resources/extensions/gsd/auto/workflow-unit-dispatch.ts +89 -0
- package/src/resources/extensions/gsd/auto/workflow-worker-heartbeat.ts +38 -0
- package/src/resources/extensions/gsd/auto-dashboard.ts +4 -0
- package/src/resources/extensions/gsd/auto-prompts.ts +170 -3
- package/src/resources/extensions/gsd/auto-recovery.ts +42 -50
- package/src/resources/extensions/gsd/auto-runtime-state.ts +7 -0
- package/src/resources/extensions/gsd/auto-verification.ts +5 -1
- package/src/resources/extensions/gsd/auto-worktree.ts +85 -36
- package/src/resources/extensions/gsd/auto.ts +167 -1
- package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +14 -1
- package/src/resources/extensions/gsd/bootstrap/db-tools.ts +11 -0
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +13 -5
- package/src/resources/extensions/gsd/commands-ship.ts +24 -51
- package/src/resources/extensions/gsd/commands-workflow-templates.ts +13 -0
- package/src/resources/extensions/gsd/component-loader.ts +5 -11
- package/src/resources/extensions/gsd/custom-workflow-engine.ts +6 -0
- package/src/resources/extensions/gsd/db-adapter.ts +75 -0
- package/src/resources/extensions/gsd/db-base-schema.ts +368 -0
- package/src/resources/extensions/gsd/db-connection-cache.ts +45 -0
- package/src/resources/extensions/gsd/db-coordination-schema.ts +109 -0
- package/src/resources/extensions/gsd/db-decision-requirement-rows.ts +77 -0
- package/src/resources/extensions/gsd/db-gate-rows.ts +19 -0
- package/src/resources/extensions/gsd/db-lightweight-query-rows.ts +50 -0
- package/src/resources/extensions/gsd/db-memory-fts-schema.ts +66 -0
- package/src/resources/extensions/gsd/db-migration-backup.ts +34 -0
- package/src/resources/extensions/gsd/db-migration-steps.ts +434 -0
- package/src/resources/extensions/gsd/db-milestone-artifact-rows.ts +70 -0
- package/src/resources/extensions/gsd/db-open-state.ts +47 -0
- package/src/resources/extensions/gsd/db-provider.ts +148 -0
- package/src/resources/extensions/gsd/db-runtime-kv-schema.ts +30 -0
- package/src/resources/extensions/gsd/db-schema-metadata.ts +33 -0
- package/src/resources/extensions/gsd/db-task-slice-rows.ts +146 -0
- package/src/resources/extensions/gsd/db-transaction.ts +76 -0
- package/src/resources/extensions/gsd/db-verification-evidence-rows.ts +14 -0
- package/src/resources/extensions/gsd/db-verification-evidence-schema.ts +22 -0
- package/src/resources/extensions/gsd/escalation.ts +3 -1
- package/src/resources/extensions/gsd/gsd-db.ts +260 -1659
- package/src/resources/extensions/gsd/interrupted-session.ts +1 -0
- package/src/resources/extensions/gsd/legacy-telemetry.ts +99 -0
- package/src/resources/extensions/gsd/markdown-renderer.ts +4 -1
- package/src/resources/extensions/gsd/model-router.ts +10 -6
- package/src/resources/extensions/gsd/notification-widget.ts +25 -4
- package/src/resources/extensions/gsd/post-execution-checks.ts +35 -7
- package/src/resources/extensions/gsd/pr-evidence.ts +124 -0
- package/src/resources/extensions/gsd/pre-execution-checks.ts +4 -1
- package/src/resources/extensions/gsd/process-task-path.ts +81 -0
- package/src/resources/extensions/gsd/prompt-loader.ts +9 -5
- package/src/resources/extensions/gsd/prompts/complete-milestone.md +32 -30
- package/src/resources/extensions/gsd/prompts/complete-slice.md +23 -34
- package/src/resources/extensions/gsd/prompts/discuss-headless.md +50 -96
- package/src/resources/extensions/gsd/prompts/discuss.md +81 -181
- package/src/resources/extensions/gsd/prompts/execute-task.md +40 -67
- package/src/resources/extensions/gsd/prompts/forensics.md +41 -84
- package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +29 -39
- package/src/resources/extensions/gsd/prompts/guided-discuss-project.md +30 -65
- package/src/resources/extensions/gsd/prompts/guided-discuss-requirements.md +25 -52
- package/src/resources/extensions/gsd/prompts/guided-discuss-slice.md +36 -36
- package/src/resources/extensions/gsd/prompts/guided-research-project.md +20 -38
- package/src/resources/extensions/gsd/prompts/plan-milestone.md +45 -59
- package/src/resources/extensions/gsd/prompts/plan-slice.md +25 -87
- package/src/resources/extensions/gsd/prompts/queue.md +46 -53
- package/src/resources/extensions/gsd/prompts/refine-slice.md +23 -23
- package/src/resources/extensions/gsd/prompts/research-slice.md +23 -23
- package/src/resources/extensions/gsd/prompts/rethink.md +10 -10
- package/src/resources/extensions/gsd/prompts/system.md +65 -107
- package/src/resources/extensions/gsd/prompts/triage-captures.md +15 -15
- package/src/resources/extensions/gsd/prompts/validate-milestone.md +24 -24
- package/src/resources/extensions/gsd/prompts/worktree-merge.md +35 -35
- package/src/resources/extensions/gsd/state.ts +6 -3
- package/src/resources/extensions/gsd/tests/auto-abort-pause-regression.test.ts +32 -0
- package/src/resources/extensions/gsd/tests/auto-dashboard.test.ts +65 -0
- package/src/resources/extensions/gsd/tests/auto-loop.test.ts +38 -0
- package/src/resources/extensions/gsd/tests/auto-orchestrator.test.ts +353 -0
- package/src/resources/extensions/gsd/tests/auto-pr-bugs.test.ts +19 -0
- package/src/resources/extensions/gsd/tests/auto-runtime-state.test.ts +39 -0
- package/src/resources/extensions/gsd/tests/auto-session-encapsulation.test.ts +3 -0
- package/src/resources/extensions/gsd/tests/commands-eval-review.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/commands-ship-eval-warn.test.ts +3 -2
- package/src/resources/extensions/gsd/tests/complete-milestone-prompt-rendering.test.ts +47 -0
- package/src/resources/extensions/gsd/tests/complete-milestone.test.ts +19 -5
- package/src/resources/extensions/gsd/tests/component-loader.test.ts +2 -9
- package/src/resources/extensions/gsd/tests/custom-engine-loop-integration.test.ts +38 -0
- package/src/resources/extensions/gsd/tests/custom-verify-retry-store.test.ts +139 -0
- package/src/resources/extensions/gsd/tests/custom-workflow-engine.test.ts +12 -0
- package/src/resources/extensions/gsd/tests/dashboard-custom-engine.test.ts +3 -3
- package/src/resources/extensions/gsd/tests/db-adapter.test.ts +82 -0
- package/src/resources/extensions/gsd/tests/db-base-schema.test.ts +62 -0
- package/src/resources/extensions/gsd/tests/db-connection-cache.test.ts +60 -0
- package/src/resources/extensions/gsd/tests/db-coordination-schema.test.ts +39 -0
- package/src/resources/extensions/gsd/tests/db-decision-requirement-rows.test.ts +135 -0
- package/src/resources/extensions/gsd/tests/db-gate-rows.test.ts +53 -0
- package/src/resources/extensions/gsd/tests/db-lightweight-query-rows.test.ts +45 -0
- package/src/resources/extensions/gsd/tests/db-memory-fts-schema.test.ts +86 -0
- package/src/resources/extensions/gsd/tests/db-migration-backup.test.ts +105 -0
- package/src/resources/extensions/gsd/tests/db-migration-steps.test.ts +159 -0
- package/src/resources/extensions/gsd/tests/db-milestone-artifact-rows.test.ts +53 -0
- package/src/resources/extensions/gsd/tests/db-open-state.test.ts +56 -0
- package/src/resources/extensions/gsd/tests/db-provider.test.ts +105 -0
- package/src/resources/extensions/gsd/tests/db-runtime-kv-schema.test.ts +37 -0
- package/src/resources/extensions/gsd/tests/db-schema-metadata.test.ts +115 -0
- package/src/resources/extensions/gsd/tests/db-task-slice-rows.test.ts +128 -0
- package/src/resources/extensions/gsd/tests/db-transaction.test.ts +110 -0
- package/src/resources/extensions/gsd/tests/db-verification-evidence-schema.test.ts +76 -0
- package/src/resources/extensions/gsd/tests/discuss-headless-rendering.test.ts +37 -0
- package/src/resources/extensions/gsd/tests/execute-task-rendering.test.ts +59 -0
- package/src/resources/extensions/gsd/tests/forensics-prompt-rendering.test.ts +36 -0
- package/src/resources/extensions/gsd/tests/gsd-db.test.ts +95 -0
- package/src/resources/extensions/gsd/tests/guided-discuss-milestone-prompt-rendering.test.ts +43 -0
- package/src/resources/extensions/gsd/tests/guided-discuss-project-prompt-rendering.test.ts +41 -0
- package/src/resources/extensions/gsd/tests/guided-discuss-requirements-prompt-rendering.test.ts +45 -0
- package/src/resources/extensions/gsd/tests/integration/auto-recovery.test.ts +79 -0
- package/src/resources/extensions/gsd/tests/integration/auto-worktree-milestone-merge.test.ts +37 -0
- package/src/resources/extensions/gsd/tests/integration/state-machine-live-validation.test.ts +5 -3
- package/src/resources/extensions/gsd/tests/journal-integration.test.ts +134 -0
- package/src/resources/extensions/gsd/tests/legacy-component-format-telemetry.test.ts +62 -0
- package/src/resources/extensions/gsd/tests/legacy-telemetry.test.ts +144 -0
- package/src/resources/extensions/gsd/tests/memory-pressure-stuck-state.test.ts +40 -16
- package/src/resources/extensions/gsd/tests/model-router.test.ts +33 -12
- package/src/resources/extensions/gsd/tests/notification-store.test.ts +8 -0
- package/src/resources/extensions/gsd/tests/notification-widget.test.ts +40 -1
- package/src/resources/extensions/gsd/tests/paused-session-via-db.test.ts +2 -0
- package/src/resources/extensions/gsd/tests/plan-milestone-rendering.test.ts +45 -0
- package/src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +65 -16
- package/src/resources/extensions/gsd/tests/plan-slice.test.ts +27 -0
- package/src/resources/extensions/gsd/tests/post-execution-checks.test.ts +46 -0
- package/src/resources/extensions/gsd/tests/pr-evidence.test.ts +79 -0
- package/src/resources/extensions/gsd/tests/process-task-path.test.ts +51 -0
- package/src/resources/extensions/gsd/tests/prompt-step-ordering.test.ts +16 -1
- package/src/resources/extensions/gsd/tests/queue-prompt-rendering.test.ts +37 -0
- package/src/resources/extensions/gsd/tests/tool-naming.test.ts +32 -9
- package/src/resources/extensions/gsd/tests/unit-context-composer.test.ts +6 -6
- package/src/resources/extensions/gsd/tests/uok-kernel-path.test.ts +12 -0
- package/src/resources/extensions/gsd/tests/workflow-custom-engine-dispatch-outcome.test.ts +55 -0
- package/src/resources/extensions/gsd/tests/workflow-custom-engine-iteration.test.ts +93 -0
- package/src/resources/extensions/gsd/tests/workflow-custom-engine-reconcile-outcome.test.ts +108 -0
- package/src/resources/extensions/gsd/tests/workflow-custom-engine-reconcile.test.ts +146 -0
- package/src/resources/extensions/gsd/tests/workflow-custom-engine-retry.test.ts +136 -0
- package/src/resources/extensions/gsd/tests/workflow-custom-engine-verify-outcome.test.ts +95 -0
- package/src/resources/extensions/gsd/tests/workflow-dispatch-claim.test.ts +158 -0
- package/src/resources/extensions/gsd/tests/workflow-dispatch-ledger.test.ts +82 -0
- package/src/resources/extensions/gsd/tests/workflow-iteration-completion.test.ts +44 -0
- package/src/resources/extensions/gsd/tests/workflow-journal-reporter.test.ts +49 -0
- package/src/resources/extensions/gsd/tests/workflow-kernel.test.ts +607 -0
- package/src/resources/extensions/gsd/tests/workflow-logger.test.ts +20 -4
- package/src/resources/extensions/gsd/tests/workflow-memory-pressure.test.ts +71 -0
- package/src/resources/extensions/gsd/tests/workflow-phase-reporter.test.ts +40 -0
- package/src/resources/extensions/gsd/tests/workflow-session-lock.test.ts +135 -0
- package/src/resources/extensions/gsd/tests/workflow-sidecar-iteration.test.ts +110 -0
- package/src/resources/extensions/gsd/tests/workflow-sidecar-queue.test.ts +116 -0
- package/src/resources/extensions/gsd/tests/workflow-templates.test.ts +21 -0
- package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +32 -0
- package/src/resources/extensions/gsd/tests/workflow-turn-reporter.test.ts +87 -0
- package/src/resources/extensions/gsd/tests/workflow-unit-dispatch.test.ts +160 -0
- package/src/resources/extensions/gsd/tests/workflow-worker-heartbeat.test.ts +123 -0
- package/src/resources/extensions/gsd/tests/worktree-submodule-safety.test.ts +17 -33
- package/src/resources/extensions/gsd/tools/complete-milestone.ts +15 -9
- package/src/resources/extensions/gsd/tools/complete-task.ts +4 -1
- package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +6 -1
- package/src/resources/extensions/gsd/unit-context-composer.ts +1 -1
- package/src/resources/extensions/gsd/uok/kernel.ts +10 -3
- package/src/resources/extensions/gsd/uok/plan-v2.ts +5 -1
- package/src/resources/extensions/gsd/workflow-logger.ts +13 -13
- package/src/resources/extensions/gsd/workflow-manifest.ts +6 -15
- package/src/resources/extensions/gsd/workflow-projections.ts +5 -1
- package/src/resources/extensions/gsd/workflow-templates.ts +11 -0
- package/src/resources/extensions/shared/interview-ui.ts +18 -5
- package/src/resources/extensions/shared/tests/interview-notes-loop.test.ts +41 -0
- package/dist/web/standalone/.next/server/chunks/6336.js +0 -1
- /package/dist/web/standalone/.next/static/{TzEVJ1Lh8vbez4n4Q9TqQ → bQDK5_LtkGVS64AirQgQG}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{TzEVJ1Lh8vbez4n4Q9TqQ → bQDK5_LtkGVS64AirQgQG}/_ssgManifest.js +0 -0
|
@@ -219,6 +219,169 @@ export async function inlineFileSmart(absPath, relPath, label, query, threshold
|
|
|
219
219
|
const truncated = truncateAtSectionBoundary(content, threshold).content;
|
|
220
220
|
return `### ${label}\nSource: \`${relPath}\`\n\n${truncated}`;
|
|
221
221
|
}
|
|
222
|
+
function inlineCompactTemplate(name, label) {
|
|
223
|
+
const compact = {
|
|
224
|
+
plan: [
|
|
225
|
+
"# {{sliceId}}: {{sliceTitle}}",
|
|
226
|
+
"",
|
|
227
|
+
"**Goal:** {{goal}}",
|
|
228
|
+
"**Demo:** {{demo}}",
|
|
229
|
+
"",
|
|
230
|
+
"## Must-Haves",
|
|
231
|
+
"- {{mustHave}}",
|
|
232
|
+
"",
|
|
233
|
+
"## Threat Surface",
|
|
234
|
+
"- Abuse: {{abuseScenarios}}",
|
|
235
|
+
"- Data exposure: {{sensitiveDataAccessible}}",
|
|
236
|
+
"- Input trust: {{untrustedInput}}",
|
|
237
|
+
"",
|
|
238
|
+
"## Requirement Impact",
|
|
239
|
+
"- Requirements touched: {{requirementIds}}",
|
|
240
|
+
"- Re-verify: {{whatMustBeRetested}}",
|
|
241
|
+
"- Decisions revisited: {{decisionIds}}",
|
|
242
|
+
"",
|
|
243
|
+
"## Proof Level",
|
|
244
|
+
"- This slice proves: {{contract | integration | operational | final-assembly}}",
|
|
245
|
+
"- Real runtime required: {{yes/no}}",
|
|
246
|
+
"- Human/UAT required: {{yes/no}}",
|
|
247
|
+
"",
|
|
248
|
+
"## Verification",
|
|
249
|
+
"- {{testFileOrCommand}}",
|
|
250
|
+
"",
|
|
251
|
+
"## Observability / Diagnostics",
|
|
252
|
+
"- Runtime signals: {{signalOrNone}}",
|
|
253
|
+
"- Inspection surfaces: {{surfaceOrNone}}",
|
|
254
|
+
"- Failure visibility: {{failureSignalOrNone}}",
|
|
255
|
+
"- Redaction constraints: {{secretOrPiiBoundaryOrNone}}",
|
|
256
|
+
"",
|
|
257
|
+
"## Integration Closure",
|
|
258
|
+
"- Upstream surfaces consumed: {{filesModulesContracts}}",
|
|
259
|
+
"- New wiring introduced: {{entrypointOrNone}}",
|
|
260
|
+
"- Remaining end-to-end work: {{listOrNothing}}",
|
|
261
|
+
"",
|
|
262
|
+
"## Tasks",
|
|
263
|
+
"- [ ] **T01: {{taskTitle}}** `est:{{estimate}}`",
|
|
264
|
+
" - Why: {{whyThisTaskExists}}",
|
|
265
|
+
" - Files: `{{filePath}}`",
|
|
266
|
+
" - Do: {{specificImplementationStepsAndConstraints}}",
|
|
267
|
+
" - Verify: {{testCommandOrRuntimeCheck}}",
|
|
268
|
+
" - Done when: {{measurableAcceptanceCondition}}",
|
|
269
|
+
"",
|
|
270
|
+
"## Files Likely Touched",
|
|
271
|
+
"- `{{filePath}}`",
|
|
272
|
+
].join("\n"),
|
|
273
|
+
"task-summary": [
|
|
274
|
+
"---",
|
|
275
|
+
"id: {{taskId}}",
|
|
276
|
+
"parent: {{sliceId}}",
|
|
277
|
+
"milestone: {{milestoneId}}",
|
|
278
|
+
"provides: [{{whatThisTaskProvides}}]",
|
|
279
|
+
"key_files: [{{filePath}}]",
|
|
280
|
+
"key_decisions: [{{decision}}]",
|
|
281
|
+
"patterns_established: [{{pattern}}]",
|
|
282
|
+
"observability_surfaces: [{{diagnosticOrNone}}]",
|
|
283
|
+
"duration: {{duration}}",
|
|
284
|
+
"verification_result: passed",
|
|
285
|
+
"completed_at: {{date}}",
|
|
286
|
+
"blocker_discovered: false",
|
|
287
|
+
"---",
|
|
288
|
+
"",
|
|
289
|
+
"# {{taskId}}: {{taskTitle}}",
|
|
290
|
+
"**{{oneLiner}}**",
|
|
291
|
+
"",
|
|
292
|
+
"## What Happened",
|
|
293
|
+
"{{narrative}}",
|
|
294
|
+
"",
|
|
295
|
+
"## Verification",
|
|
296
|
+
"{{whatWasVerifiedAndHow}}",
|
|
297
|
+
"",
|
|
298
|
+
"## Verification Evidence",
|
|
299
|
+
"| # | Command | Exit Code | Verdict | Duration |",
|
|
300
|
+
"|---|---------|-----------|---------|----------|",
|
|
301
|
+
"| {{row}} | {{command}} | {{exitCode}} | {{verdict}} | {{duration}} |",
|
|
302
|
+
"",
|
|
303
|
+
"## Diagnostics",
|
|
304
|
+
"{{diagnosticsOrNone}}",
|
|
305
|
+
"",
|
|
306
|
+
"## Deviations",
|
|
307
|
+
"{{deviationsFromPlan_OR_none}}",
|
|
308
|
+
"",
|
|
309
|
+
"## Known Issues",
|
|
310
|
+
"{{issuesDiscoveredButNotFixed_OR_none}}",
|
|
311
|
+
"",
|
|
312
|
+
"## Files Created/Modified",
|
|
313
|
+
"- `{{filePath}}` - {{description}}",
|
|
314
|
+
].join("\n"),
|
|
315
|
+
"slice-summary": [
|
|
316
|
+
"---",
|
|
317
|
+
"id: {{sliceId}}",
|
|
318
|
+
"parent: {{milestoneId}}",
|
|
319
|
+
"milestone: {{milestoneId}}",
|
|
320
|
+
"provides: [{{whatThisSliceProvides}}]",
|
|
321
|
+
"requires: []",
|
|
322
|
+
"affects: []",
|
|
323
|
+
"key_files: [{{filePath}}]",
|
|
324
|
+
"key_decisions: [{{decision}}]",
|
|
325
|
+
"patterns_established: [{{pattern}}]",
|
|
326
|
+
"observability_surfaces: [{{diagnosticOrNone}}]",
|
|
327
|
+
"drill_down_paths: [{{pathToTaskSummary}}]",
|
|
328
|
+
"duration: {{duration}}",
|
|
329
|
+
"verification_result: passed",
|
|
330
|
+
"completed_at: {{date}}",
|
|
331
|
+
"---",
|
|
332
|
+
"",
|
|
333
|
+
"# {{sliceId}}: {{sliceTitle}}",
|
|
334
|
+
"**{{oneLiner}}**",
|
|
335
|
+
"",
|
|
336
|
+
"## What Happened",
|
|
337
|
+
"{{narrative}}",
|
|
338
|
+
"",
|
|
339
|
+
"## Verification",
|
|
340
|
+
"{{whatWasVerifiedAcrossAllTasks}}",
|
|
341
|
+
"",
|
|
342
|
+
"## Requirements Advanced",
|
|
343
|
+
"- {{requirementId}} - {{howThisSliceAdvancedIt}}",
|
|
344
|
+
"",
|
|
345
|
+
"## Requirements Validated",
|
|
346
|
+
"- {{requirementId}} - {{whatProofNowMakesItValidated}}",
|
|
347
|
+
"",
|
|
348
|
+
"## New Requirements Surfaced",
|
|
349
|
+
"- {{newRequirementOr_none}}",
|
|
350
|
+
"",
|
|
351
|
+
"## Requirements Invalidated or Re-scoped",
|
|
352
|
+
"- {{requirementIdOr_none}} - {{whatChanged}}",
|
|
353
|
+
"",
|
|
354
|
+
"## Operational Readiness",
|
|
355
|
+
"- Health signal: {{healthSignalOrNA}}",
|
|
356
|
+
"- Failure signal: {{failureSignalOrNA}}",
|
|
357
|
+
"- Recovery: {{recoveryOrNA}}",
|
|
358
|
+
"- Monitoring gaps: {{gapsOrNone}}",
|
|
359
|
+
"",
|
|
360
|
+
"## Deviations",
|
|
361
|
+
"{{deviationsFromPlan_OR_none}}",
|
|
362
|
+
"",
|
|
363
|
+
"## Known Limitations",
|
|
364
|
+
"{{whatDoesntWorkYet_OR_whatWasDeferredToLaterSlices}}",
|
|
365
|
+
"",
|
|
366
|
+
"## Follow-ups",
|
|
367
|
+
"{{workDeferredOrDiscoveredDuringExecution_OR_none}}",
|
|
368
|
+
"",
|
|
369
|
+
"## Files Created/Modified",
|
|
370
|
+
"- `{{filePath}}` - {{description}}",
|
|
371
|
+
"",
|
|
372
|
+
"## Forward Intelligence",
|
|
373
|
+
"### What the next slice should know",
|
|
374
|
+
"- {{insightThatWouldHelpDownstreamWork}}",
|
|
375
|
+
"### What's fragile",
|
|
376
|
+
"- {{fragileAreaOrThinImplementation}} - {{whyItMatters}}",
|
|
377
|
+
"### Authoritative diagnostics",
|
|
378
|
+
"- {{whereAFutureAgentShouldLookFirst}} - {{whyThisSignalIsTrustworthy}}",
|
|
379
|
+
"### What assumptions changed",
|
|
380
|
+
"- {{originalAssumption}} - {{whatActuallyHappened}}",
|
|
381
|
+
].join("\n"),
|
|
382
|
+
};
|
|
383
|
+
return `${compact[name]}\n\n### Output Template: ${label}\nSource: \`templates/${name}.md\``;
|
|
384
|
+
}
|
|
222
385
|
/**
|
|
223
386
|
* Compact slice-summary excerpt for milestone-level closers (#4780).
|
|
224
387
|
*
|
|
@@ -1493,7 +1656,7 @@ async function renderSlicePrompt(options) {
|
|
|
1493
1656
|
const graphBlock = await inlineGraphSubgraph(base, `${sid} ${sTitle}`, { budget: 3000 });
|
|
1494
1657
|
if (graphBlock)
|
|
1495
1658
|
inlined.push(graphBlock);
|
|
1496
|
-
inlined.push(inlineTemplate("plan", "Slice Plan"));
|
|
1659
|
+
inlined.push(level === "minimal" ? inlineCompactTemplate("plan", "Slice Plan") : inlineTemplate("plan", "Slice Plan"));
|
|
1497
1660
|
if (level === "full") {
|
|
1498
1661
|
inlined.push(inlineTemplate("task-plan", "Task Plan"));
|
|
1499
1662
|
}
|
|
@@ -1648,7 +1811,7 @@ export async function buildExecuteTaskPrompt(mid, sid, sTitle, tid, tTitle, base
|
|
|
1648
1811
|
// Knowledge graph: tight subgraph for this task (graceful — skipped if no graph.json)
|
|
1649
1812
|
const graphBlockET = await inlineGraphSubgraph(base, `${tid} ${tTitle}`, { budget: 2000 });
|
|
1650
1813
|
const inlinedTemplates = inlineLevel === "minimal"
|
|
1651
|
-
?
|
|
1814
|
+
? inlineCompactTemplate("task-summary", "Task Summary")
|
|
1652
1815
|
: [
|
|
1653
1816
|
inlineTemplate("task-summary", "Task Summary"),
|
|
1654
1817
|
inlineTemplate("decisions", "Decisions"),
|
|
@@ -1782,7 +1945,9 @@ export async function buildCompleteSlicePrompt(mid, midTitle, sid, sTitle, base,
|
|
|
1782
1945
|
return blocks.length > 0 ? blocks.join("\n\n---\n\n") : null;
|
|
1783
1946
|
}
|
|
1784
1947
|
case "templates": {
|
|
1785
|
-
const parts = [
|
|
1948
|
+
const parts = [inlineLevel === "minimal"
|
|
1949
|
+
? inlineCompactTemplate("slice-summary", "Slice Summary")
|
|
1950
|
+
: inlineTemplate("slice-summary", "Slice Summary")];
|
|
1786
1951
|
if (inlineLevel !== "minimal") {
|
|
1787
1952
|
parts.push(inlineTemplate("uat", "UAT"));
|
|
1788
1953
|
}
|
|
@@ -12,7 +12,7 @@ import { appendEvent } from "./workflow-events.js";
|
|
|
12
12
|
import { atomicWriteSync } from "./atomic-write.js";
|
|
13
13
|
import { clearParseCache } from "./files.js";
|
|
14
14
|
import { parseRoadmap as parseLegacyRoadmap, parsePlan as parseLegacyPlan } from "./parsers-legacy.js";
|
|
15
|
-
import { isDbAvailable, getTask, getSlice, getSliceTasks, getPendingGates, updateTaskStatus, updateSliceStatus, insertSlice, getMilestone } from "./gsd-db.js";
|
|
15
|
+
import { isDbAvailable, getTask, getSlice, getSliceTasks, getPendingGates, updateTaskStatus, updateSliceStatus, insertSlice, getMilestone, refreshOpenDatabaseFromDisk } from "./gsd-db.js";
|
|
16
16
|
import { isValidationTerminal } from "./state.js";
|
|
17
17
|
import { getErrorMessage } from "./error-utils.js";
|
|
18
18
|
import { logWarning, logError } from "./workflow-logger.js";
|
|
@@ -510,66 +510,32 @@ export function verifyExpectedArtifact(unitType, unitId, base) {
|
|
|
510
510
|
return false;
|
|
511
511
|
}
|
|
512
512
|
}
|
|
513
|
-
// plan-slice
|
|
514
|
-
//
|
|
515
|
-
//
|
|
516
|
-
// unit gets skipped — but deriveState still returns phase:"planning" because the
|
|
517
|
-
// plan has no tasks, creating an infinite skip loop (#699).
|
|
518
|
-
if (unitType === "plan-slice") {
|
|
519
|
-
const planContent = readFileSync(absPath, "utf-8");
|
|
520
|
-
// Accept checkbox-style (- [x] **T01: ...) or heading-style (### T01 -- / ### T01: / ### T01 —)
|
|
521
|
-
const hasCheckboxTask = /^- \[[xX ]\] \*\*T\d+:/m.test(planContent);
|
|
522
|
-
const hasHeadingTask = /^#{2,4}\s+T\d+\s*(?:--|—|:)/m.test(planContent);
|
|
523
|
-
if (!hasCheckboxTask && !hasHeadingTask) {
|
|
524
|
-
logWarning("recovery", `verify-fail ${unitType} ${unitId}: plan has no task checkbox/heading (len=${planContent.length}) at ${absPath}`);
|
|
525
|
-
return false;
|
|
526
|
-
}
|
|
527
|
-
}
|
|
528
|
-
// execute-task: DB status is authoritative. Fall back to checked-checkbox
|
|
529
|
-
// detection when the DB is unavailable (unmigrated projects), or when the
|
|
530
|
-
// disk artifacts already reflect completion but the DB replay is one beat
|
|
531
|
-
// behind the completion write.
|
|
532
|
-
if (unitType === "execute-task") {
|
|
533
|
-
const { milestone: mid, slice: sid, task: tid } = parseUnitId(unitId);
|
|
534
|
-
if (mid && sid && tid) {
|
|
535
|
-
const dbTask = getTask(mid, sid, tid);
|
|
536
|
-
if (dbTask) {
|
|
537
|
-
if (dbTask.status !== "complete" && dbTask.status !== "done" && !hasCheckedTaskCompletionOnDisk(base, mid, sid, tid)) {
|
|
538
|
-
return false;
|
|
539
|
-
}
|
|
540
|
-
}
|
|
541
|
-
else if (!isDbAvailable()) {
|
|
542
|
-
// LEGACY: Pre-migration fallback for projects without DB.
|
|
543
|
-
// Require a CHECKED checkbox — a bare heading or unchecked checkbox
|
|
544
|
-
// does not prove gsd_complete_task ran. Summary file on disk alone
|
|
545
|
-
// is not sufficient evidence (could be a rogue write) (#3607).
|
|
546
|
-
if (!hasCheckedTaskCompletionOnDisk(base, mid, sid, tid))
|
|
547
|
-
return false;
|
|
548
|
-
}
|
|
549
|
-
else {
|
|
550
|
-
// DB available but task row not found — completion tool never ran (#3607)
|
|
551
|
-
return false;
|
|
552
|
-
}
|
|
553
|
-
}
|
|
554
|
-
}
|
|
555
|
-
// plan-slice must also produce individual task plan files for every task listed
|
|
556
|
-
// in the slice plan. Without this check, a plan-slice that wrote S{sid}-PLAN.md
|
|
557
|
-
// but omitted T{tid}-PLAN.md files would be marked complete, causing execute-task
|
|
558
|
-
// to dispatch with a missing task plan (see issue #739).
|
|
513
|
+
// plan-slice verification is DB-primary. The slice plan is a projection, so
|
|
514
|
+
// DB task rows prove the slice was planned even if the rendered markdown no
|
|
515
|
+
// longer uses legacy checkbox/heading syntax.
|
|
559
516
|
if (unitType === "plan-slice") {
|
|
560
517
|
const { milestone: mid, slice: sid } = parseUnitId(unitId);
|
|
561
518
|
if (mid && sid) {
|
|
562
519
|
try {
|
|
563
|
-
// DB primary path — get task IDs to verify task plan files exist
|
|
564
520
|
let taskIds = null;
|
|
565
521
|
if (isDbAvailable()) {
|
|
566
|
-
const
|
|
567
|
-
if (
|
|
568
|
-
|
|
522
|
+
const refreshed = refreshOpenDatabaseFromDisk();
|
|
523
|
+
if (refreshed) {
|
|
524
|
+
const tasks = getSliceTasks(mid, sid);
|
|
525
|
+
if (tasks.length > 0)
|
|
526
|
+
taskIds = tasks.map(t => t.id);
|
|
527
|
+
}
|
|
569
528
|
}
|
|
570
529
|
if (!taskIds) {
|
|
571
|
-
// LEGACY: DB unavailable or no tasks in DB
|
|
530
|
+
// LEGACY: DB unavailable or no tasks in DB. Require actual task
|
|
531
|
+
// entries so an empty scaffold cannot advance the pipeline (#699).
|
|
572
532
|
const planContent = readFileSync(absPath, "utf-8");
|
|
533
|
+
const hasCheckboxTask = /^\s*- \[[xX ]\] \*\*T\d+:/m.test(planContent);
|
|
534
|
+
const hasHeadingTask = /^\s*#{2,4}\s+T\d+\s*(?:--|—|:)/m.test(planContent);
|
|
535
|
+
if (!hasCheckboxTask && !hasHeadingTask) {
|
|
536
|
+
logWarning("recovery", `verify-fail ${unitType} ${unitId}: plan has no task checkbox/heading (len=${planContent.length}) at ${absPath}`);
|
|
537
|
+
return false;
|
|
538
|
+
}
|
|
573
539
|
const plan = parseLegacyPlan(planContent);
|
|
574
540
|
if (plan.tasks.length > 0)
|
|
575
541
|
taskIds = plan.tasks.map((t) => t.id);
|
|
@@ -595,6 +561,33 @@ export function verifyExpectedArtifact(unitType, unitId, base) {
|
|
|
595
561
|
}
|
|
596
562
|
}
|
|
597
563
|
}
|
|
564
|
+
// execute-task: DB status is authoritative. Fall back to checked-checkbox
|
|
565
|
+
// detection when the DB is unavailable (unmigrated projects), or when the
|
|
566
|
+
// disk artifacts already reflect completion but the DB replay is one beat
|
|
567
|
+
// behind the completion write.
|
|
568
|
+
if (unitType === "execute-task") {
|
|
569
|
+
const { milestone: mid, slice: sid, task: tid } = parseUnitId(unitId);
|
|
570
|
+
if (mid && sid && tid) {
|
|
571
|
+
const dbTask = getTask(mid, sid, tid);
|
|
572
|
+
if (dbTask) {
|
|
573
|
+
if (dbTask.status !== "complete" && dbTask.status !== "done" && !hasCheckedTaskCompletionOnDisk(base, mid, sid, tid)) {
|
|
574
|
+
return false;
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
else if (!isDbAvailable()) {
|
|
578
|
+
// LEGACY: Pre-migration fallback for projects without DB.
|
|
579
|
+
// Require a CHECKED checkbox — a bare heading or unchecked checkbox
|
|
580
|
+
// does not prove gsd_complete_task ran. Summary file on disk alone
|
|
581
|
+
// is not sufficient evidence (could be a rogue write) (#3607).
|
|
582
|
+
if (!hasCheckedTaskCompletionOnDisk(base, mid, sid, tid))
|
|
583
|
+
return false;
|
|
584
|
+
}
|
|
585
|
+
else {
|
|
586
|
+
// DB available but task row not found — completion tool never ran (#3607)
|
|
587
|
+
return false;
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
}
|
|
598
591
|
// complete-slice: DB status is authoritative for whether the slice is done.
|
|
599
592
|
// Fall back to file-based check (roadmap [x]) when DB is unavailable.
|
|
600
593
|
if (unitType === "complete-slice") {
|
|
@@ -3,11 +3,15 @@ import { AutoSession } from "./auto/session.js";
|
|
|
3
3
|
import { isDeterministicPolicyError, isQueuedUserMessageSkip, isToolInvocationError, markToolEnd as markTrackedToolEnd, markToolStart as markTrackedToolStart, } from "./auto-tool-tracking.js";
|
|
4
4
|
export const autoSession = new AutoSession();
|
|
5
5
|
export function getAutoRuntimeSnapshot() {
|
|
6
|
+
const orchestrationStatus = autoSession.orchestration?.getStatus();
|
|
6
7
|
return {
|
|
7
8
|
active: autoSession.active,
|
|
8
9
|
paused: autoSession.paused,
|
|
9
10
|
currentUnit: autoSession.currentUnit ? { ...autoSession.currentUnit } : null,
|
|
10
11
|
basePath: autoSession.basePath,
|
|
12
|
+
orchestrationPhase: orchestrationStatus?.phase,
|
|
13
|
+
orchestrationTransitionCount: orchestrationStatus?.transitionCount,
|
|
14
|
+
orchestrationLastTransitionAt: orchestrationStatus?.lastTransitionAt,
|
|
11
15
|
};
|
|
12
16
|
}
|
|
13
17
|
export function isAutoActive() {
|
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* Runs typecheck/lint/test checks, captures runtime errors, performs
|
|
5
|
-
* dependency audits, handles auto-fix retry logic, and writes
|
|
6
|
-
* verification evidence JSON.
|
|
7
|
-
*
|
|
8
|
-
* Extracted from the pre-loop agent_end handler in auto.ts. Returns a
|
|
9
|
-
* sentinel value instead of calling return/pauseAuto directly — the
|
|
10
|
-
* caller checks the result and handles control flow.
|
|
11
|
-
*/
|
|
1
|
+
// Project/App: GSD-2
|
|
2
|
+
// File Purpose: Post-unit verification gate for GSD auto-mode units.
|
|
12
3
|
import { mkdirSync, writeFileSync } from "node:fs";
|
|
13
4
|
import { resolveSlicePath, resolveMilestoneFile } from "./paths.js";
|
|
14
5
|
import { parseUnitId } from "./unit-id.js";
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Project/App: GSD-2
|
|
2
|
+
// File Purpose: Auto-mode worktree lifecycle, merge, and cleanup management.
|
|
1
3
|
/**
|
|
2
4
|
* GSD Auto-Worktree -- lifecycle management for auto-mode worktrees.
|
|
3
5
|
*
|
|
@@ -6,7 +8,7 @@
|
|
|
6
8
|
* manages create, enter, detect, and teardown for auto-mode worktrees.
|
|
7
9
|
*/
|
|
8
10
|
import { existsSync, cpSync, readFileSync, readdirSync, mkdirSync, realpathSync, rmSync, unlinkSync, statSync, lstatSync as lstatSyncFn, } from "node:fs";
|
|
9
|
-
import { isAbsolute, join, sep as pathSep } from "node:path";
|
|
11
|
+
import { isAbsolute, join, relative, sep as pathSep } from "node:path";
|
|
10
12
|
import { GSDError, GSD_IO_ERROR, GSD_GIT_ERROR } from "./errors.js";
|
|
11
13
|
import { reconcileWorktreeDb, isDbAvailable, getMilestone, getMilestoneSlices, closeDatabase, openDatabase, getDbPath, } from "./gsd-db.js";
|
|
12
14
|
import { execFileSync } from "node:child_process";
|
|
@@ -15,7 +17,8 @@ import { gsdRoot, resolveGsdPathContract } from "./paths.js";
|
|
|
15
17
|
import { createWorktree, removeWorktree, resolveGitDir, worktreePath, isInsideWorktreesDir, } from "./worktree-manager.js";
|
|
16
18
|
import { detectWorktreeName, nudgeGitBranchCache, } from "./worktree.js";
|
|
17
19
|
import { isGsdWorktreePath, normalizeWorktreePathForCompare, resolveWorktreeProjectRoot, } from "./worktree-root.js";
|
|
18
|
-
import { MergeConflictError, readIntegrationBranch, RUNTIME_EXCLUSION_PATHS } from "./git-service.js";
|
|
20
|
+
import { MergeConflictError, createDraftPR, readIntegrationBranch, RUNTIME_EXCLUSION_PATHS } from "./git-service.js";
|
|
21
|
+
import { buildPrEvidence } from "./pr-evidence.js";
|
|
19
22
|
import { debugLog } from "./debug-logger.js";
|
|
20
23
|
import { logWarning, logError } from "./workflow-logger.js";
|
|
21
24
|
import { loadEffectiveGSDPreferences } from "./preferences.js";
|
|
@@ -203,6 +206,41 @@ function setActiveWorkspace(ws) {
|
|
|
203
206
|
function getActiveWorkspace() {
|
|
204
207
|
return activeWorkspace;
|
|
205
208
|
}
|
|
209
|
+
function gitPathspecForWorktreePath(basePath, targetPath) {
|
|
210
|
+
let base = basePath;
|
|
211
|
+
let target = targetPath;
|
|
212
|
+
try {
|
|
213
|
+
base = realpathSync.native(basePath);
|
|
214
|
+
}
|
|
215
|
+
catch {
|
|
216
|
+
/* keep original */
|
|
217
|
+
void base;
|
|
218
|
+
}
|
|
219
|
+
try {
|
|
220
|
+
target = realpathSync.native(targetPath);
|
|
221
|
+
}
|
|
222
|
+
catch {
|
|
223
|
+
/* keep original */
|
|
224
|
+
void target;
|
|
225
|
+
}
|
|
226
|
+
const rel = relative(base, target);
|
|
227
|
+
if (rel === "" || rel.startsWith("..") || isAbsolute(rel))
|
|
228
|
+
return null;
|
|
229
|
+
return rel.replaceAll("\\", "/");
|
|
230
|
+
}
|
|
231
|
+
function gitRemoteExists(basePath, remote) {
|
|
232
|
+
try {
|
|
233
|
+
execFileSync("git", ["remote", "get-url", remote], {
|
|
234
|
+
cwd: basePath,
|
|
235
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
236
|
+
encoding: "utf-8",
|
|
237
|
+
});
|
|
238
|
+
return true;
|
|
239
|
+
}
|
|
240
|
+
catch {
|
|
241
|
+
return false;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
206
244
|
function clearProjectRootStateFiles(basePath, milestoneId) {
|
|
207
245
|
const gsdDir = gsdRoot(basePath);
|
|
208
246
|
// Phase C pt 2: auto.lock removed from this list — the file is gone
|
|
@@ -236,9 +274,12 @@ function clearProjectRootStateFiles(basePath, milestoneId) {
|
|
|
236
274
|
for (const dir of syncedDirs) {
|
|
237
275
|
try {
|
|
238
276
|
if (existsSync(dir)) {
|
|
277
|
+
const pathspec = gitPathspecForWorktreePath(basePath, dir);
|
|
278
|
+
if (!pathspec)
|
|
279
|
+
continue;
|
|
239
280
|
// Only remove files that are untracked by git — tracked files are
|
|
240
281
|
// managed by the branch checkout and should not be deleted.
|
|
241
|
-
const untrackedOutput = execFileSync("git", ["ls-files", "--others", "--exclude-standard",
|
|
282
|
+
const untrackedOutput = execFileSync("git", ["ls-files", "--others", "--exclude-standard", pathspec], { cwd: basePath, stdio: ["ignore", "pipe", "pipe"], encoding: "utf-8" }).trim();
|
|
242
283
|
if (untrackedOutput) {
|
|
243
284
|
for (const f of untrackedOutput.split("\n").filter(Boolean)) {
|
|
244
285
|
try {
|
|
@@ -1899,17 +1940,19 @@ export function mergeMilestoneToMain(originalBasePath_, milestoneId, roadmapCont
|
|
|
1899
1940
|
let pushed = false;
|
|
1900
1941
|
if (prefs.auto_push === true && prefs.auto_pr !== true && !nothingToCommit) {
|
|
1901
1942
|
const remote = prefs.remote ?? "origin";
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
|
|
1943
|
+
if (gitRemoteExists(originalBasePath_, remote)) {
|
|
1944
|
+
try {
|
|
1945
|
+
execFileSync("git", ["push", remote, mainBranch], {
|
|
1946
|
+
cwd: originalBasePath_,
|
|
1947
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
1948
|
+
encoding: "utf-8",
|
|
1949
|
+
});
|
|
1950
|
+
pushed = true;
|
|
1951
|
+
}
|
|
1952
|
+
catch (err) {
|
|
1953
|
+
// Push failure is non-fatal
|
|
1954
|
+
logWarning("worktree", `git push failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
1955
|
+
}
|
|
1913
1956
|
}
|
|
1914
1957
|
}
|
|
1915
1958
|
// 9b. Auto-create PR if enabled (#2302: no longer gated on pushed/auto_push)
|
|
@@ -1917,30 +1960,36 @@ export function mergeMilestoneToMain(originalBasePath_, milestoneId, roadmapCont
|
|
|
1917
1960
|
if (prefs.auto_pr === true && !nothingToCommit) {
|
|
1918
1961
|
const remote = prefs.remote ?? "origin";
|
|
1919
1962
|
const prTarget = prefs.pr_target_branch ?? mainBranch;
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1963
|
+
if (gitRemoteExists(originalBasePath_, remote)) {
|
|
1964
|
+
try {
|
|
1965
|
+
// Push the milestone branch to remote first
|
|
1966
|
+
execFileSync("git", ["push", remote, milestoneBranch], {
|
|
1967
|
+
cwd: originalBasePath_,
|
|
1968
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
1969
|
+
encoding: "utf-8",
|
|
1970
|
+
});
|
|
1971
|
+
const prEvidence = buildPrEvidence({
|
|
1972
|
+
milestoneId,
|
|
1973
|
+
milestoneTitle,
|
|
1974
|
+
changeType: "feat",
|
|
1975
|
+
summaries: completedSlices.map((slice) => `### ${slice.id}\n${slice.title}`),
|
|
1976
|
+
testsRun: ["Auto-created after milestone merge. Run `npm run verify:pr` before marking this draft ready."],
|
|
1977
|
+
rollbackNotes: ["Close the draft PR or revert the merge commit if review finds a behavior regression."],
|
|
1978
|
+
how: "Generated by git.auto_pr after the milestone branch was pushed and merged locally.",
|
|
1979
|
+
});
|
|
1980
|
+
const prUrl = createDraftPR(originalBasePath_, milestoneId, prEvidence.title, prEvidence.body, {
|
|
1981
|
+
head: milestoneBranch,
|
|
1982
|
+
base: prTarget,
|
|
1983
|
+
});
|
|
1984
|
+
if (!prUrl) {
|
|
1985
|
+
throw new Error("gh pr create returned no URL");
|
|
1986
|
+
}
|
|
1987
|
+
prCreated = true;
|
|
1988
|
+
}
|
|
1989
|
+
catch (err) {
|
|
1990
|
+
// PR creation failure is non-fatal — gh may not be installed or authenticated
|
|
1991
|
+
logWarning("worktree", `PR creation failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
1992
|
+
}
|
|
1944
1993
|
}
|
|
1945
1994
|
}
|
|
1946
1995
|
// 11. Guard removed — step 9b (#1792) now handles this with a smarter check:
|