openplanr 3.3.0 → 3.4.0
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/CHANGELOG.md +52 -0
- package/dist/cli/commands/artifact-design-share.d.ts +9 -0
- package/dist/cli/commands/artifact-design-share.d.ts.map +1 -0
- package/dist/cli/commands/artifact-design-share.js +200 -0
- package/dist/cli/commands/artifact-design-share.js.map +1 -0
- package/dist/cli/commands/artifact.d.ts.map +1 -1
- package/dist/cli/commands/artifact.js +5 -18
- package/dist/cli/commands/artifact.js.map +1 -1
- package/dist/cli/commands/ship.d.ts.map +1 -1
- package/dist/cli/commands/ship.js +2 -0
- package/dist/cli/commands/ship.js.map +1 -1
- package/dist/dashboard/.vite/manifest.json +2 -2
- package/dist/dashboard/assets/index-Cv4Vwhuw.css +2 -0
- package/dist/dashboard/assets/index-CvQAlBy3.js +75 -0
- package/dist/dashboard/assets/index-CvQAlBy3.js.map +1 -0
- package/dist/dashboard/dashboard-manifest.json +14 -14
- package/dist/dashboard/index.html +2 -2
- package/dist/services/design-artifact-service.d.ts +20 -1
- package/dist/services/design-artifact-service.d.ts.map +1 -1
- package/dist/services/design-artifact-service.js +137 -18
- package/dist/services/design-artifact-service.js.map +1 -1
- package/dist/services/ship-checks/contract.d.ts +3 -1
- package/dist/services/ship-checks/contract.d.ts.map +1 -1
- package/dist/services/ship-checks/contract.js +1 -1
- package/dist/services/ship-checks/contract.js.map +1 -1
- package/dist/services/ship-checks/discover.d.ts.map +1 -1
- package/dist/services/ship-checks/discover.js +2 -1
- package/dist/services/ship-checks/discover.js.map +1 -1
- package/dist/services/ship-checks/package-contents.d.ts +4 -0
- package/dist/services/ship-checks/package-contents.d.ts.map +1 -0
- package/dist/services/ship-checks/package-contents.js +91 -0
- package/dist/services/ship-checks/package-contents.js.map +1 -0
- package/dist/services/ship-checks/packages.d.ts +2 -0
- package/dist/services/ship-checks/packages.d.ts.map +1 -1
- package/dist/services/ship-checks/packages.js +4 -0
- package/dist/services/ship-checks/packages.js.map +1 -1
- package/dist/services/ship-checks/scope.js +2 -1
- package/dist/services/ship-checks/scope.js.map +1 -1
- package/dist/utils/splice-managed-block.js +1 -1
- package/dist/utils/splice-managed-block.js.map +1 -1
- package/docs/CLI.md +38 -1
- package/lib/host-packages/adapter-registry.json +5 -5
- package/lib/host-packages/capability-map.json +1 -1
- package/lib/host-packages/claude/.claude-plugin/marketplace.json +3 -3
- package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +6 -6
- package/lib/host-packages/claude/openplanr/.openplanr-content.json +67 -123
- package/lib/host-packages/claude/openplanr/README.md +12 -12
- package/lib/host-packages/claude/openplanr/references/agents/shared/modes/shared/task-context-resolution.md +4 -4
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-artifact-shell.mjs +2 -4
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-document.mjs +26 -26
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-handoff.mjs +850 -56
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-review-state-store.mjs +45 -0
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-review.mjs +65 -74
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-runtime-home.mjs +0 -1
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-share-cli-bridge.mjs +321 -0
- package/lib/host-packages/{openai/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-3d9b1a86.mjs → claude/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-d707e49b.mjs} +762 -223
- package/lib/host-packages/{openai/openplanr/runtime/design/scripts/design-shared-artifact-support-protocol-contracts-ea2cd15e.mjs → claude/openplanr/runtime/design/scripts/design-shared-artifact-support-protocol-contracts-9f6918b0.mjs} +537 -5
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-shared-design-support-0bac378d.mjs +137 -0
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design.mjs +107 -37
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +0 -27
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/02-artifact-review-ui.js +138 -133
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +1 -5684
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/04-artifact-review-ui.js +2568 -0
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +10 -74
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/package.json +3 -3
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/share.js +8 -2
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/claude/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +545 -4781
- package/lib/host-packages/claude/openplanr/runtime/plan/scripts/design.mjs +219 -452
- package/lib/host-packages/claude/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/claude/openplanr/skills/delegate/SKILL.md +2 -1
- package/lib/host-packages/claude/openplanr/skills/delegate/references/integration-review.md +26 -20
- package/lib/host-packages/claude/openplanr/skills/delegate/references/operator-guide.md +25 -1
- package/lib/host-packages/claude/openplanr/skills/delegate/references/run-handoff.md +2 -2
- package/lib/host-packages/claude/openplanr/skills/delegate/references/worktree-custody.md +17 -9
- package/lib/host-packages/claude/openplanr/skills/delegate/scripts/adapters/claude.mjs +15 -3
- package/lib/host-packages/claude/openplanr/skills/delegate/scripts/adapters/codex.mjs +38 -2
- package/lib/host-packages/claude/openplanr/skills/delegate/scripts/adapters/native.mjs +5 -0
- package/lib/host-packages/claude/openplanr/skills/delegate/scripts/custody.mjs +217 -10
- package/lib/host-packages/claude/openplanr/skills/delegate/scripts/handoff.mjs +1080 -0
- package/lib/host-packages/claude/openplanr/skills/delegate/scripts/integrate.mjs +96 -201
- package/lib/host-packages/claude/openplanr/skills/delegate/scripts/integration-files.mjs +3 -382
- package/lib/host-packages/claude/openplanr/skills/delegate/scripts/presentation.mjs +29 -12
- package/lib/host-packages/claude/openplanr/skills/delegate/scripts/run-contract.mjs +11 -0
- package/lib/host-packages/claude/openplanr/skills/delegate/scripts/run-execution.mjs +1 -1
- package/lib/host-packages/claude/openplanr/skills/delegate/scripts/run-lifecycle.mjs +14 -10
- package/lib/host-packages/claude/openplanr/skills/delegate/scripts/run-preparation.mjs +4 -0
- package/lib/host-packages/claude/openplanr/skills/delegate/scripts/run-record.mjs +2 -2
- package/lib/host-packages/claude/openplanr/skills/design/references/utilities.md +14 -8
- package/lib/host-packages/claude/openplanr/skills/design-loop/references/utilities.md +14 -8
- package/lib/host-packages/claude/openplanr/skills/design-review/references/utilities.md +14 -8
- package/lib/host-packages/claude/openplanr/skills/investigate/SKILL.md +1 -0
- package/lib/host-packages/claude/openplanr/skills/investigate/references/fail-first.md +40 -0
- package/lib/host-packages/claude/openplanr/skills/ship/SKILL.md +22 -10
- package/lib/host-packages/claude/openplanr/skills/ship/references/fail-first.md +40 -0
- package/lib/host-packages/claude/openplanr/skills/ship/references/result-contract.md +7 -3
- package/lib/host-packages/cursor/openplanr/.openplanr-content.json +65 -121
- package/lib/host-packages/cursor/openplanr/manifest.json +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-delegate/references/integration-review.md +26 -20
- package/lib/host-packages/cursor/openplanr/rules/planr-delegate/references/operator-guide.md +25 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-delegate/references/run-handoff.md +2 -2
- package/lib/host-packages/cursor/openplanr/rules/planr-delegate/references/worktree-custody.md +17 -9
- package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/adapters/claude.mjs +15 -3
- package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/adapters/codex.mjs +38 -2
- package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/adapters/native.mjs +5 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/custody.mjs +217 -10
- package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/handoff.mjs +1080 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/integrate.mjs +96 -201
- package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/integration-files.mjs +3 -382
- package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/presentation.mjs +29 -12
- package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/run-contract.mjs +11 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/run-execution.mjs +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/run-lifecycle.mjs +14 -10
- package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/run-preparation.mjs +4 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/run-record.mjs +2 -2
- package/lib/host-packages/cursor/openplanr/rules/planr-delegate.mdc +2 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design/references/utilities.md +14 -8
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/utilities.md +14 -8
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/utilities.md +14 -8
- package/lib/host-packages/cursor/openplanr/rules/planr-investigate/references/fail-first.md +40 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-investigate.mdc +1 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-ship/references/fail-first.md +40 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-ship/references/result-contract.md +7 -3
- package/lib/host-packages/cursor/openplanr/rules/planr-ship.mdc +22 -10
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-artifact-shell.mjs +2 -4
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-document.mjs +26 -26
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-handoff.mjs +850 -56
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-review-state-store.mjs +45 -0
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-review.mjs +65 -74
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-runtime-home.mjs +0 -1
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-share-cli-bridge.mjs +321 -0
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/{design-shared-artifact-support-dependencies-design-support-protocol-contracts-3d9b1a86.mjs → design-shared-artifact-support-dependencies-design-support-protocol-contracts-d707e49b.mjs} +762 -223
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/{design-shared-artifact-support-protocol-contracts-ea2cd15e.mjs → design-shared-artifact-support-protocol-contracts-9f6918b0.mjs} +537 -5
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-shared-design-support-0bac378d.mjs +137 -0
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design.mjs +107 -37
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +0 -27
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/02-artifact-review-ui.js +138 -133
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +1 -5684
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/04-artifact-review-ui.js +2568 -0
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +10 -74
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/package.json +3 -3
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/share.js +8 -2
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +545 -4781
- package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/design.mjs +219 -452
- package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/openai/.claude-plugin/marketplace.json +3 -3
- package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +2 -2
- package/lib/host-packages/openai/openplanr/.openplanr-content.json +68 -124
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-artifact-shell.mjs +2 -4
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-document.mjs +26 -26
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-handoff.mjs +850 -56
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-review-state-store.mjs +45 -0
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-review.mjs +65 -74
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-runtime-home.mjs +0 -1
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-share-cli-bridge.mjs +321 -0
- package/lib/host-packages/{claude/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-3d9b1a86.mjs → openai/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-d707e49b.mjs} +762 -223
- package/lib/host-packages/{claude/openplanr/runtime/design/scripts/design-shared-artifact-support-protocol-contracts-ea2cd15e.mjs → openai/openplanr/runtime/design/scripts/design-shared-artifact-support-protocol-contracts-9f6918b0.mjs} +537 -5
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-shared-design-support-0bac378d.mjs +137 -0
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design.mjs +107 -37
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +0 -27
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/02-artifact-review-ui.js +138 -133
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +1 -5684
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/04-artifact-review-ui.js +2568 -0
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +10 -74
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/package.json +3 -3
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/share.js +8 -2
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/openai/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +545 -4781
- package/lib/host-packages/openai/openplanr/runtime/plan/scripts/design.mjs +219 -452
- package/lib/host-packages/openai/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +5 -1
- package/lib/host-packages/openai/openplanr/skills/delegate/SKILL.md +2 -1
- package/lib/host-packages/openai/openplanr/skills/delegate/openplanr.skill.json +1 -1
- package/lib/host-packages/openai/openplanr/skills/delegate/references/integration-review.md +26 -20
- package/lib/host-packages/openai/openplanr/skills/delegate/references/operator-guide.md +25 -1
- package/lib/host-packages/openai/openplanr/skills/delegate/references/run-handoff.md +2 -2
- package/lib/host-packages/openai/openplanr/skills/delegate/references/worktree-custody.md +17 -9
- package/lib/host-packages/openai/openplanr/skills/delegate/scripts/adapters/claude.mjs +15 -3
- package/lib/host-packages/openai/openplanr/skills/delegate/scripts/adapters/codex.mjs +38 -2
- package/lib/host-packages/openai/openplanr/skills/delegate/scripts/adapters/native.mjs +5 -0
- package/lib/host-packages/openai/openplanr/skills/delegate/scripts/custody.mjs +217 -10
- package/lib/host-packages/openai/openplanr/skills/delegate/scripts/handoff.mjs +1080 -0
- package/lib/host-packages/openai/openplanr/skills/delegate/scripts/integrate.mjs +96 -201
- package/lib/host-packages/openai/openplanr/skills/delegate/scripts/integration-files.mjs +3 -382
- package/lib/host-packages/openai/openplanr/skills/delegate/scripts/presentation.mjs +29 -12
- package/lib/host-packages/openai/openplanr/skills/delegate/scripts/run-contract.mjs +11 -0
- package/lib/host-packages/openai/openplanr/skills/delegate/scripts/run-execution.mjs +1 -1
- package/lib/host-packages/openai/openplanr/skills/delegate/scripts/run-lifecycle.mjs +14 -10
- package/lib/host-packages/openai/openplanr/skills/delegate/scripts/run-preparation.mjs +4 -0
- package/lib/host-packages/openai/openplanr/skills/delegate/scripts/run-record.mjs +2 -2
- package/lib/host-packages/openai/openplanr/skills/design/references/utilities.md +14 -8
- package/lib/host-packages/openai/openplanr/skills/design-loop/references/utilities.md +14 -8
- package/lib/host-packages/openai/openplanr/skills/design-review/references/utilities.md +14 -8
- package/lib/host-packages/openai/openplanr/skills/investigate/SKILL.md +1 -0
- package/lib/host-packages/openai/openplanr/skills/investigate/openplanr.skill.json +12 -1
- package/lib/host-packages/openai/openplanr/skills/investigate/references/fail-first.md +40 -0
- package/lib/host-packages/openai/openplanr/skills/ship/SKILL.md +22 -10
- package/lib/host-packages/openai/openplanr/skills/ship/openplanr.skill.json +12 -1
- package/lib/host-packages/openai/openplanr/skills/ship/references/fail-first.md +40 -0
- package/lib/host-packages/openai/openplanr/skills/ship/references/result-contract.md +7 -3
- package/package.json +8 -8
- package/dist/dashboard/assets/index-BU5fzjyz.css +0 -1
- package/dist/dashboard/assets/index-B_96uzCl.js +0 -572
- package/dist/dashboard/assets/index-B_96uzCl.js.map +0 -1
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-chunked-workspace-client.mjs +0 -555
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-compression.mjs +0 -4180
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-encrypted-workspace-client.mjs +0 -647
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-owner-custody.mjs +0 -129
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-resource-pack.mjs +0 -698
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-runtime-support-25485dbf1cb2.mjs +0 -24
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-share.mjs +0 -1993
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-shared-protocol-contracts-75a938cc.mjs +0 -222
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-shared-protocol-contracts-b5f28f94.mjs +0 -5907
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-upload-spool.mjs +0 -198
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/04-compression.js +0 -4175
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/05-artifact-sharing.js +0 -65
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/06-artifact-review-ui.js +0 -1755
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/07-artifact-sharing.js +0 -62
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/08-artifact-review-ui.js +0 -2633
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +0 -49
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +0 -108
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +0 -170
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +0 -97
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +0 -56
- package/lib/host-packages/claude/openplanr/skills/delegate/scripts/integration-transaction.mjs +0 -958
- package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/integration-transaction.mjs +0 -958
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-chunked-workspace-client.mjs +0 -555
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-compression.mjs +0 -4180
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-encrypted-workspace-client.mjs +0 -647
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-owner-custody.mjs +0 -129
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-resource-pack.mjs +0 -698
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-runtime-support-25485dbf1cb2.mjs +0 -24
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-share.mjs +0 -1993
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-shared-protocol-contracts-75a938cc.mjs +0 -222
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-shared-protocol-contracts-b5f28f94.mjs +0 -5907
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-upload-spool.mjs +0 -198
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/04-compression.js +0 -4175
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/05-artifact-sharing.js +0 -65
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/06-artifact-review-ui.js +0 -1755
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/07-artifact-sharing.js +0 -62
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/08-artifact-review-ui.js +0 -2633
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +0 -49
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +0 -108
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +0 -170
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +0 -97
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +0 -56
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-chunked-workspace-client.mjs +0 -555
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-compression.mjs +0 -4180
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-encrypted-workspace-client.mjs +0 -647
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-owner-custody.mjs +0 -129
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-resource-pack.mjs +0 -698
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-runtime-support-25485dbf1cb2.mjs +0 -24
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-share.mjs +0 -1993
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-shared-protocol-contracts-75a938cc.mjs +0 -222
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-shared-protocol-contracts-b5f28f94.mjs +0 -5907
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-upload-spool.mjs +0 -198
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/04-compression.js +0 -4175
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/05-artifact-sharing.js +0 -65
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/06-artifact-review-ui.js +0 -1755
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/07-artifact-sharing.js +0 -62
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/08-artifact-review-ui.js +0 -2633
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +0 -49
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +0 -108
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +0 -170
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +0 -97
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +0 -56
- package/lib/host-packages/openai/openplanr/skills/delegate/scripts/integration-transaction.mjs +0 -958
|
@@ -1,30 +1,20 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import { existsSync, realpathSync } from 'node:fs';
|
|
3
3
|
import { lstat, readFile, rename, writeFile } from 'node:fs/promises';
|
|
4
4
|
import { join, resolve, sep } from 'node:path';
|
|
5
5
|
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
6
6
|
import { captureFileState } from './custody.mjs';
|
|
7
|
+
import { integrateBranchDelta, recoverBranchApply, reviewBranchDelta } from './handoff.mjs';
|
|
7
8
|
import { verifiedHelper } from './helper-snapshot.mjs';
|
|
8
9
|
import { resolveSelectedChecks } from './integration-checks.mjs';
|
|
9
|
-
import {
|
|
10
|
-
covers,
|
|
11
|
-
IntegrationError,
|
|
12
|
-
rollbackWritten,
|
|
13
|
-
sameState,
|
|
14
|
-
treeIdentity,
|
|
15
|
-
} from './integration-files.mjs';
|
|
16
|
-
import {
|
|
17
|
-
checkoutLock,
|
|
18
|
-
integrateDelegateDelta,
|
|
19
|
-
patchDigest,
|
|
20
|
-
reviewDelegateDelta,
|
|
21
|
-
} from './integration-transaction.mjs';
|
|
10
|
+
import { covers, git, IntegrationError } from './integration-files.mjs';
|
|
22
11
|
import { implementationReport, reviewPresentation } from './presentation.mjs';
|
|
23
12
|
import { cleanupAcceptedWorktree, recoverOwnedProcesses } from './run-lifecycle.mjs';
|
|
24
13
|
import { readDelegateCustody, validateDelegateCapsule } from './run-preflight.mjs';
|
|
25
14
|
import {
|
|
26
15
|
assertRunRecordFits,
|
|
27
16
|
closeRunRecord,
|
|
17
|
+
compactIntegrationState,
|
|
28
18
|
processIdentity,
|
|
29
19
|
readRunRecord,
|
|
30
20
|
updateRunRecord,
|
|
@@ -33,13 +23,13 @@ import {
|
|
|
33
23
|
|
|
34
24
|
export { discoverDelegateChecks, runDelegateChecks } from './integration-checks.mjs';
|
|
35
25
|
export { IntegrationError } from './integration-files.mjs';
|
|
36
|
-
export { integrateDelegateDelta, reviewDelegateDelta } from './integration-transaction.mjs';
|
|
37
26
|
|
|
38
27
|
function publicReview(review) {
|
|
39
28
|
return {
|
|
40
29
|
ready: review.ready,
|
|
41
30
|
changedPaths: review.changedPaths,
|
|
42
31
|
violations: review.violations,
|
|
32
|
+
warnings: review.warnings ?? [],
|
|
43
33
|
patch: review.patch.map(({ path, before, after }) => ({
|
|
44
34
|
path,
|
|
45
35
|
origin: review.changes?.find((change) => change.path === path)?.origin ?? 'delegate',
|
|
@@ -88,130 +78,79 @@ export async function delegateIntegrationCommand(action, input = {}) {
|
|
|
88
78
|
});
|
|
89
79
|
}
|
|
90
80
|
|
|
91
|
-
async function
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
81
|
+
async function closeIntegrated(record, runDirectory) {
|
|
82
|
+
const closed = await closeRunRecord(record.runId, {
|
|
83
|
+
disposition: 'integrated',
|
|
84
|
+
directory: runDirectory,
|
|
85
|
+
});
|
|
86
|
+
if (!closed.nativeSelection || closed.retainWorktree) return undefined;
|
|
87
|
+
try {
|
|
88
|
+
return await cleanupAcceptedWorktree(closed, runDirectory);
|
|
89
|
+
} catch (error) {
|
|
90
|
+
const cleanup = { status: 'failed', code: error.code ?? 'E_DELEGATE_CLEANUP' };
|
|
91
|
+
await updateRunRecord(record.runId, { cleanup }, { directory: runDirectory });
|
|
92
|
+
return cleanup;
|
|
93
|
+
}
|
|
102
94
|
}
|
|
103
95
|
|
|
104
|
-
async function
|
|
96
|
+
async function recoverBranchIntegration(input, record) {
|
|
105
97
|
const integration = record.integration;
|
|
106
98
|
if (!['applying', 'interrupted'].includes(integration?.status))
|
|
107
99
|
throw new IntegrationError('E_INTEGRATION_RECOVERY', 'This run has no unresolved integration.');
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
throw new IntegrationError('E_INTEGRATION_JOURNAL', 'Integration recovery journal is unsafe.');
|
|
116
|
-
const bytes = await readFile(integration.journalPath);
|
|
117
|
-
if (createHash('sha256').update(bytes).digest('hex') !== integration.journalDigest)
|
|
118
|
-
throw new IntegrationError('E_INTEGRATION_JOURNAL', 'Integration recovery journal changed.');
|
|
119
|
-
const journal = JSON.parse(bytes.toString('utf8'));
|
|
120
|
-
if (journal.runId !== record.runId || journal.repositoryRoot !== record.repositoryRoot)
|
|
121
|
-
throw new IntegrationError(
|
|
122
|
-
'E_INTEGRATION_JOURNAL',
|
|
123
|
-
'Integration recovery journal identity differs.',
|
|
124
|
-
);
|
|
125
|
-
const release = await checkoutLock(record.repositoryRoot);
|
|
126
|
-
try {
|
|
127
|
-
if (input.resolution === 'accept') {
|
|
128
|
-
if (integration.cursor !== journal.changes.length || integration.pendingPath)
|
|
129
|
-
throw new IntegrationError(
|
|
130
|
-
'E_INTEGRATION_RECOVERY_INCOMPLETE',
|
|
131
|
-
'Source writes did not complete; recover with rollback.',
|
|
132
|
-
);
|
|
133
|
-
for (const change of journal.changes) {
|
|
134
|
-
if (!sameState(await captureFileState(record.repositoryRoot, change.path), change.after))
|
|
135
|
-
throw new IntegrationError(
|
|
136
|
-
'E_INTEGRATION_RECOVERY_CONFLICT',
|
|
137
|
-
'Accepted source changed after interruption.',
|
|
138
|
-
{ path: change.path },
|
|
139
|
-
);
|
|
140
|
-
}
|
|
141
|
-
if (
|
|
142
|
-
record.nativeSelection &&
|
|
143
|
-
(!journal.accepted?.candidateIdentity ||
|
|
144
|
-
(await treeIdentity(record.repositoryRoot)) !== journal.accepted.candidateIdentity)
|
|
145
|
-
)
|
|
146
|
-
throw new IntegrationError(
|
|
147
|
-
'E_INTEGRATION_RECOVERY_CONFLICT',
|
|
148
|
-
'The resulting checkout differs from the verified candidate; recover with rollback and review again.',
|
|
149
|
-
);
|
|
150
|
-
await updateRunRecord(
|
|
151
|
-
record.runId,
|
|
152
|
-
{ integration: { status: 'applied', at: new Date().toISOString(), ...journal.accepted } },
|
|
153
|
-
{ directory: input.runDirectory },
|
|
154
|
-
);
|
|
155
|
-
const closed = await closeRunRecord(record.runId, {
|
|
156
|
-
disposition: 'integrated',
|
|
157
|
-
directory: input.runDirectory,
|
|
158
|
-
});
|
|
159
|
-
let cleanup;
|
|
160
|
-
if (closed.nativeSelection && !closed.retainWorktree) {
|
|
161
|
-
try {
|
|
162
|
-
cleanup = await cleanupAcceptedWorktree(closed, input.runDirectory);
|
|
163
|
-
} catch (error) {
|
|
164
|
-
cleanup = { status: 'failed', code: error.code ?? 'E_DELEGATE_CLEANUP' };
|
|
165
|
-
await updateRunRecord(record.runId, { cleanup }, { directory: input.runDirectory });
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
return {
|
|
169
|
-
cleanup,
|
|
170
|
-
runId: record.runId,
|
|
171
|
-
status: 'completed',
|
|
172
|
-
report: implementationReport({ status: 'completed', ...journal.accepted }, record.selector),
|
|
173
|
-
recovered: 'accepted',
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
|
-
if (input.resolution && input.resolution !== 'rollback')
|
|
177
|
-
throw new IntegrationError(
|
|
178
|
-
'E_INTEGRATION_RECOVERY',
|
|
179
|
-
'Recovery resolution must be rollback or accept.',
|
|
180
|
-
);
|
|
181
|
-
const count = integration.cursor + (integration.pendingPath ? 1 : 0);
|
|
182
|
-
const rollbackErrors = await rollbackWritten(
|
|
183
|
-
record.repositoryRoot,
|
|
184
|
-
journal.changes.slice(0, count),
|
|
185
|
-
randomUUID(),
|
|
186
|
-
);
|
|
100
|
+
const result = await recoverBranchApply(record, input.resolution);
|
|
101
|
+
const directory = { directory: input.runDirectory };
|
|
102
|
+
if (result.state === 'applied') {
|
|
103
|
+
const { status: _status, ...accepted } = integration;
|
|
104
|
+
const states = {};
|
|
105
|
+
for (const path of accepted.changedPaths)
|
|
106
|
+
states[path] = compactIntegrationState(await captureFileState(record.repositoryRoot, path));
|
|
187
107
|
await updateRunRecord(
|
|
188
108
|
record.runId,
|
|
189
|
-
{
|
|
190
|
-
|
|
191
|
-
...integration,
|
|
192
|
-
status: rollbackErrors.length ? 'interrupted' : 'rolled-back',
|
|
193
|
-
rollbackErrors,
|
|
194
|
-
},
|
|
195
|
-
},
|
|
196
|
-
{ directory: input.runDirectory },
|
|
109
|
+
{ integration: { ...accepted, status: 'applied', at: new Date().toISOString(), states } },
|
|
110
|
+
directory,
|
|
197
111
|
);
|
|
112
|
+
await removeRestoreRef(record);
|
|
198
113
|
return {
|
|
114
|
+
cleanup: await closeIntegrated(record, input.runDirectory),
|
|
199
115
|
runId: record.runId,
|
|
200
|
-
status:
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
nextAction: rollbackErrors.length
|
|
204
|
-
? 'Preserve conflicting host edits and resolve the listed paths explicitly.'
|
|
205
|
-
: 'Review the retained patch again before retrying apply.',
|
|
116
|
+
status: 'completed',
|
|
117
|
+
report: implementationReport({ status: 'completed', ...accepted }, record.selector),
|
|
118
|
+
recovered: 'accepted',
|
|
206
119
|
};
|
|
207
|
-
} finally {
|
|
208
|
-
await release();
|
|
209
120
|
}
|
|
121
|
+
await updateRunRecord(
|
|
122
|
+
record.runId,
|
|
123
|
+
{
|
|
124
|
+
integration: {
|
|
125
|
+
...integration,
|
|
126
|
+
status: result.state,
|
|
127
|
+
restoredPaths: result.restored,
|
|
128
|
+
rollbackErrors: result.conflicts,
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
directory,
|
|
132
|
+
);
|
|
133
|
+
if (result.state === 'rolled-back') await removeRestoreRef(record);
|
|
134
|
+
return {
|
|
135
|
+
runId: record.runId,
|
|
136
|
+
status: result.conflicts.length ? 'blocked' : 'completed',
|
|
137
|
+
recovered: result.conflicts.length ? 'conflicts' : 'rolled-back',
|
|
138
|
+
rollbackErrors: result.conflicts,
|
|
139
|
+
nextAction: result.conflicts.length
|
|
140
|
+
? 'Preserve conflicting host edits and resolve the listed paths explicitly.'
|
|
141
|
+
: 'Review the retained patch again before retrying apply.',
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
async function removeRestoreRef(record) {
|
|
146
|
+
const ref = record.integration.restoreRef;
|
|
147
|
+
if (ref && (await git(record.repositoryRoot, 'for-each-ref', ref)).length)
|
|
148
|
+
await git(record.repositoryRoot, 'update-ref', '-d', ref);
|
|
210
149
|
}
|
|
211
150
|
|
|
212
151
|
async function integrationCommandLocked(action, input, record) {
|
|
213
152
|
record = await recoverOwnedProcesses(record, input.runDirectory);
|
|
214
|
-
if (action === 'recover') return
|
|
153
|
+
if (action === 'recover') return recoverBranchIntegration(input, record);
|
|
215
154
|
if (['applying', 'interrupted'].includes(record.integration?.status))
|
|
216
155
|
throw new IntegrationError(
|
|
217
156
|
'E_RUN_INTEGRATION_RECOVERY',
|
|
@@ -274,7 +213,7 @@ async function integrationCommandLocked(action, input, record) {
|
|
|
274
213
|
preservePaths: input.preservePaths,
|
|
275
214
|
};
|
|
276
215
|
if (action === 'review') {
|
|
277
|
-
const observed = await
|
|
216
|
+
const observed = await reviewBranchDelta(common);
|
|
278
217
|
if (observed.ready)
|
|
279
218
|
await updateRunRecord(
|
|
280
219
|
input.runId,
|
|
@@ -282,7 +221,7 @@ async function integrationCommandLocked(action, input, record) {
|
|
|
282
221
|
verificationMutations:
|
|
283
222
|
record.verification?.mutatedPaths ?? record.verificationMutations ?? [],
|
|
284
223
|
reviewedPatch: {
|
|
285
|
-
digest:
|
|
224
|
+
digest: observed.tip,
|
|
286
225
|
at: new Date().toISOString(),
|
|
287
226
|
scopePaths,
|
|
288
227
|
},
|
|
@@ -332,9 +271,29 @@ async function integrationCommandLocked(action, input, record) {
|
|
|
332
271
|
const verificationProcess = await processIdentity();
|
|
333
272
|
const evidencePath = join(record.runPath, `verification-${randomUUID()}.json`);
|
|
334
273
|
let verification;
|
|
335
|
-
const result = await
|
|
274
|
+
const result = await integrateBranchDelta({
|
|
336
275
|
...common,
|
|
337
|
-
|
|
276
|
+
patchPath: join(record.runPath, 'patch.diff'),
|
|
277
|
+
onApplying: async (accepted) => {
|
|
278
|
+
const placeholder = { kind: 'file', mode: 0o644, digest: '0'.repeat(64) };
|
|
279
|
+
const current = await readRunRecord(record.runId, { directory: input.runDirectory });
|
|
280
|
+
assertRunRecordFits({
|
|
281
|
+
...current,
|
|
282
|
+
integration: {
|
|
283
|
+
status: 'applied',
|
|
284
|
+
...accepted,
|
|
285
|
+
states: Object.fromEntries(accepted.changedPaths.map((path) => [path, placeholder])),
|
|
286
|
+
},
|
|
287
|
+
status: 'closed',
|
|
288
|
+
disposition: 'integrated',
|
|
289
|
+
closedAt: new Date().toISOString(),
|
|
290
|
+
});
|
|
291
|
+
await updateRunRecord(
|
|
292
|
+
record.runId,
|
|
293
|
+
{ integration: { status: 'applying', phase: 'source-write', ...accepted } },
|
|
294
|
+
{ directory: input.runDirectory },
|
|
295
|
+
);
|
|
296
|
+
},
|
|
338
297
|
checks: input.checks,
|
|
339
298
|
preparation: input.preparation,
|
|
340
299
|
baselineComparison: input.baselineComparison === true,
|
|
@@ -362,53 +321,6 @@ async function integrationCommandLocked(action, input, record) {
|
|
|
362
321
|
generators: input.generators,
|
|
363
322
|
timeoutMs: input.timeoutMs,
|
|
364
323
|
reviewedDigest: record.reviewedPatch.digest,
|
|
365
|
-
beforeApply: async ({ changes, ...accepted }) => {
|
|
366
|
-
const current = await readRunRecord(record.runId, { directory: input.runDirectory });
|
|
367
|
-
assertRunRecordFits({
|
|
368
|
-
...current,
|
|
369
|
-
integration: { status: 'applied', ...accepted },
|
|
370
|
-
status: 'closed',
|
|
371
|
-
disposition: 'integrated',
|
|
372
|
-
closedAt: new Date().toISOString(),
|
|
373
|
-
});
|
|
374
|
-
const journalPath = join(record.runPath, 'integration-journal.json');
|
|
375
|
-
const journalDigest = await writeJournal(journalPath, {
|
|
376
|
-
schemaVersion: '1.0.0',
|
|
377
|
-
runId: record.runId,
|
|
378
|
-
repositoryRoot: record.repositoryRoot,
|
|
379
|
-
changes,
|
|
380
|
-
accepted,
|
|
381
|
-
});
|
|
382
|
-
await updateRunRecord(
|
|
383
|
-
record.runId,
|
|
384
|
-
{
|
|
385
|
-
integration: {
|
|
386
|
-
status: 'applying',
|
|
387
|
-
phase: 'source-write',
|
|
388
|
-
journalPath,
|
|
389
|
-
journalDigest,
|
|
390
|
-
changedPaths: accepted.changedPaths,
|
|
391
|
-
cursor: 0,
|
|
392
|
-
pendingPath: null,
|
|
393
|
-
},
|
|
394
|
-
},
|
|
395
|
-
{ directory: input.runDirectory },
|
|
396
|
-
);
|
|
397
|
-
},
|
|
398
|
-
onProgress: async (path, phase) => {
|
|
399
|
-
const current = await readRunRecord(record.runId, { directory: input.runDirectory });
|
|
400
|
-
await updateRunRecord(
|
|
401
|
-
record.runId,
|
|
402
|
-
{
|
|
403
|
-
integration: {
|
|
404
|
-
...current.integration,
|
|
405
|
-
cursor: current.integration.cursor + (phase === 'after' ? 1 : 0),
|
|
406
|
-
pendingPath: phase === 'before' ? path : null,
|
|
407
|
-
},
|
|
408
|
-
},
|
|
409
|
-
{ directory: input.runDirectory },
|
|
410
|
-
);
|
|
411
|
-
},
|
|
412
324
|
onAccepted: async (integration) =>
|
|
413
325
|
updateRunRecord(
|
|
414
326
|
input.runId,
|
|
@@ -417,18 +329,13 @@ async function integrationCommandLocked(action, input, record) {
|
|
|
417
329
|
},
|
|
418
330
|
{ directory: input.runDirectory },
|
|
419
331
|
),
|
|
420
|
-
onRolledBack: async ({
|
|
332
|
+
onRolledBack: async ({ code }) => {
|
|
421
333
|
const current = await readRunRecord(record.runId, { directory: input.runDirectory });
|
|
422
334
|
if (current.integration?.status !== 'applying') return;
|
|
423
335
|
await updateRunRecord(
|
|
424
336
|
record.runId,
|
|
425
337
|
{
|
|
426
|
-
integration: {
|
|
427
|
-
...current.integration,
|
|
428
|
-
status: rollbackErrors.length ? 'interrupted' : 'rolled-back',
|
|
429
|
-
rollbackErrors,
|
|
430
|
-
code,
|
|
431
|
-
},
|
|
338
|
+
integration: { ...current.integration, status: 'rolled-back', rollbackErrors: [], code },
|
|
432
339
|
},
|
|
433
340
|
{ directory: input.runDirectory },
|
|
434
341
|
);
|
|
@@ -442,32 +349,20 @@ async function integrationCommandLocked(action, input, record) {
|
|
|
442
349
|
checks: result.checks ?? [],
|
|
443
350
|
verification: verification ?? null,
|
|
444
351
|
generatedPaths: result.generatedPaths ?? [],
|
|
352
|
+
unselectedDirtyPaths: result.unselectedDirtyPaths ?? [],
|
|
353
|
+
unselectedDirtyCount: result.unselectedDirtyCount ?? 0,
|
|
445
354
|
generators: result.generators ?? [],
|
|
446
355
|
code: result.code ?? null,
|
|
447
356
|
rollbackErrors: result.rollbackErrors ?? [],
|
|
448
357
|
nextAction: result.nextAction,
|
|
449
358
|
};
|
|
450
359
|
if (result.status === 'completed') {
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
output.cleanup = await cleanupAcceptedWorktree(closed, input.runDirectory);
|
|
458
|
-
} catch (error) {
|
|
459
|
-
output.cleanup = { status: 'failed', code: error.code ?? 'E_DELEGATE_CLEANUP' };
|
|
460
|
-
output.violations.push({
|
|
461
|
-
code: output.cleanup.code,
|
|
462
|
-
message: 'Integration succeeded; owned worktree cleanup needs attention.',
|
|
463
|
-
});
|
|
464
|
-
await updateRunRecord(
|
|
465
|
-
input.runId,
|
|
466
|
-
{ cleanup: output.cleanup },
|
|
467
|
-
{ directory: input.runDirectory },
|
|
468
|
-
);
|
|
469
|
-
}
|
|
470
|
-
}
|
|
360
|
+
output.cleanup = await closeIntegrated(record, input.runDirectory);
|
|
361
|
+
if (output.cleanup?.status === 'failed')
|
|
362
|
+
output.violations.push({
|
|
363
|
+
code: output.cleanup.code,
|
|
364
|
+
message: 'Integration succeeded; owned worktree cleanup needs attention.',
|
|
365
|
+
});
|
|
471
366
|
}
|
|
472
367
|
return {
|
|
473
368
|
...output,
|