create-agdf 0.20.1 → 0.30.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/README.md +154 -192
- package/generated/.agdf/control/README.md +31 -110
- package/generated/.agdf/control/planned-urs.md +95 -0
- package/generated/.agdf/control/templates/RUN_STATE.md +15 -64
- package/generated/.agdf/control/templates/artefacts/SD.md +7 -1
- package/generated/.agdf/control/templates/artefacts/TP.md +4 -0
- package/generated/.agdf/control/templates/artefacts/UR.md +1 -1
- package/generated/.agents/plugins/marketplace.json +12 -0
- package/generated/.opencode/agdf-agent-router.md +3 -3
- package/generated/.opencode/agdf-interaction-locales.json +2668 -2682
- package/generated/.opencode/contracts/closeout.md +1 -1
- package/generated/.opencode/contracts/control-scaffold.md +63 -46
- package/generated/.opencode/contracts/gate-artifact-preparation.md +58 -48
- package/generated/.opencode/contracts/gate-transition.md +5 -6
- package/generated/.opencode/contracts/interaction.md +43 -126
- package/generated/.opencode/contracts/modes.md +4 -3
- package/generated/.opencode/contracts/prd-definition.md +6 -6
- package/generated/.opencode/contracts/quality.md +81 -6
- package/generated/.opencode/contracts/request-activation.md +9 -8
- package/generated/.opencode/contracts/sd-definition.md +19 -3
- package/generated/.opencode/contracts/task-target-resolution.md +24 -0
- package/generated/.opencode/contracts/tp-definition.md +7 -1
- package/generated/.opencode/contracts/ur-definition.md +41 -7
- package/generated/.opencode/skills/agdf-brownfield-analysis/SKILL.md +8 -5
- package/generated/.opencode/skills/agdf-clean-implementation-review/SKILL.md +5 -2
- package/generated/.opencode/skills/agdf-code-review/SKILL.md +7 -3
- package/generated/.opencode/skills/agdf-delivery-closeout/SKILL.md +3 -2
- package/generated/.opencode/skills/agdf-delivery-path-search/SKILL.md +3 -2
- package/generated/.opencode/skills/agdf-gate-check/SKILL.md +35 -31
- package/generated/.opencode/skills/agdf-prd-definition/SKILL.md +3 -2
- package/generated/.opencode/skills/agdf-qa-gate/SKILL.md +13 -11
- package/generated/.opencode/skills/agdf-release-or/SKILL.md +8 -5
- package/generated/.opencode/skills/agdf-sd-definition/SKILL.md +5 -3
- package/generated/.opencode/skills/agdf-task-plan-review/SKILL.md +5 -2
- package/generated/.opencode/skills/agdf-tp-definition/SKILL.md +5 -3
- package/generated/.opencode/skills/agdf-ur-definition/SKILL.md +12 -4
- package/generated/.opencode/skills/agdf-ux-intent-definition/SKILL.md +5 -4
- package/generated/plugins/agdf/.claude-plugin/plugin.json +3 -2
- package/generated/plugins/agdf/.codex-plugin/plugin.json +1 -1
- package/generated/plugins/agdf/companion/assignment.mjs +65 -0
- package/generated/plugins/agdf/companion/companion.json +4 -0
- package/generated/plugins/agdf/companion/core.mjs +16 -0
- package/generated/plugins/agdf/companion/figure.mjs +137 -0
- package/generated/plugins/agdf/companion/gate-bar.mjs +54 -0
- package/generated/plugins/agdf/companion/hooks.json +3 -0
- package/generated/plugins/agdf/companion/locales.json +200 -0
- package/generated/plugins/agdf/companion/localization.mjs +89 -0
- package/generated/plugins/agdf/companion/notice.mjs +90 -0
- package/generated/plugins/agdf/companion/persistence.mjs +36 -0
- package/generated/plugins/agdf/companion/register.mjs +444 -0
- package/generated/plugins/agdf/companion/run-state.mjs +110 -0
- package/generated/plugins/agdf/companion/state.mjs +48 -0
- package/generated/plugins/agdf/companion/view.mjs +84 -0
- package/generated/plugins/agdf/control/README.md +31 -110
- package/generated/plugins/agdf/control/planned-urs.md +95 -0
- package/generated/plugins/agdf/control/templates/RUN_STATE.md +15 -64
- package/generated/plugins/agdf/control/templates/artefacts/SD.md +7 -1
- package/generated/plugins/agdf/control/templates/artefacts/TP.md +4 -0
- package/generated/plugins/agdf/control/templates/artefacts/UR.md +1 -1
- package/generated/plugins/agdf/mcp/server/README.md +124 -12
- package/generated/plugins/agdf/mcp/server/package.json +12 -7
- package/generated/plugins/agdf/mcp/server/src/generation-entry.js +3 -85
- package/generated/plugins/agdf/mcp/server/src/generation-protocol.js +2 -44
- package/generated/plugins/agdf/mcp/server/src/generation-runtime.js +94 -0
- package/generated/plugins/agdf/mcp/server/src/generation-thread-entry.js +8 -0
- package/generated/plugins/agdf/mcp/server/src/generation.js +64 -20
- package/generated/plugins/agdf/mcp/server/src/main.js +42 -10
- package/generated/plugins/agdf/mcp/server/src/server.js +44 -22
- package/generated/plugins/agdf/mcp/server/src/stdio-output.js +42 -0
- package/generated/plugins/agdf/mcp/server/src/ui-capability.js +49 -1
- package/generated/plugins/agdf/mcp/server/src/worker-entry.js +2 -2
- package/generated/plugins/agdf/mcp/server/src/worker.js +53 -7
- package/generated/plugins/agdf/mcp/server/ui/cockpit.html +31 -31
- package/generated/plugins/agdf/mcp/server/ui/decision-manifest.json +3 -3
- package/generated/plugins/agdf/mcp/server/ui/decision.html +36 -36
- package/generated/plugins/agdf/mcp/server/ui/manifest.json +4 -4
- package/generated/plugins/agdf/meta/agdf-agent-router.md +3 -3
- package/generated/plugins/agdf/meta/agdf-defaults.json +9 -0
- package/generated/plugins/agdf/meta/agdf-defaults.schema.json +20 -0
- package/generated/plugins/agdf/meta/agdf-interaction-locales.json +2668 -2682
- package/generated/plugins/agdf/meta/agdf-mcp-capability.json +2 -2
- package/generated/plugins/agdf/meta/agdf-plugin.definition.json +12 -5
- package/generated/plugins/agdf/meta/contracts/closeout.md +1 -1
- package/generated/plugins/agdf/meta/contracts/control-scaffold.md +63 -46
- package/generated/plugins/agdf/meta/contracts/gate-artifact-preparation.md +58 -48
- package/generated/plugins/agdf/meta/contracts/gate-transition.md +5 -6
- package/generated/plugins/agdf/meta/contracts/interaction.md +43 -126
- package/generated/plugins/agdf/meta/contracts/modes.md +4 -3
- package/generated/plugins/agdf/meta/contracts/prd-definition.md +6 -6
- package/generated/plugins/agdf/meta/contracts/quality.md +81 -6
- package/generated/plugins/agdf/meta/contracts/request-activation.md +9 -8
- package/generated/plugins/agdf/meta/contracts/sd-definition.md +19 -3
- package/generated/plugins/agdf/meta/contracts/task-target-resolution.md +24 -0
- package/generated/plugins/agdf/meta/contracts/tp-definition.md +7 -1
- package/generated/plugins/agdf/meta/contracts/ur-definition.md +41 -7
- package/generated/plugins/agdf/meta/copilot-payload-baseline.json +3 -3
- package/generated/plugins/agdf/meta/distribution-profile-history.json +14 -0
- package/generated/plugins/agdf/runtime/agdf-session-check.js +25 -21
- package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-defaults.json +9 -0
- package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-defaults.schema.json +20 -0
- package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-interaction-locales.json +2668 -2682
- package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-plugin.definition.json +12 -5
- package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/closeout.md +1 -1
- package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/control-scaffold.md +63 -46
- package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/gate-artifact-preparation.md +58 -48
- package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/gate-transition.md +5 -6
- package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/interaction.md +43 -126
- package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/modes.md +4 -3
- package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/prd-definition.md +6 -6
- package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/quality.md +81 -6
- package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/request-activation.md +9 -8
- package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/sd-definition.md +19 -3
- package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/task-target-resolution.md +24 -0
- package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/tp-definition.md +7 -1
- package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/ur-definition.md +41 -7
- package/generated/plugins/agdf/runtime/create-agdf/lib/cli/codex-document-command.js +195 -0
- package/generated/plugins/agdf/runtime/create-agdf/lib/cli/command-registry.js +82 -148
- package/generated/plugins/agdf/runtime/create-agdf/lib/cli/control-maintenance-command.js +8 -37
- package/generated/plugins/agdf/runtime/create-agdf/lib/cli/parse-args.js +98 -16
- package/generated/plugins/agdf/runtime/create-agdf/lib/cli/planned-command.js +55 -0
- package/generated/plugins/agdf/runtime/create-agdf/lib/cli/project-read-command.js +35 -0
- package/generated/plugins/agdf/runtime/create-agdf/lib/cli/run-command-aliases.js +116 -0
- package/generated/plugins/agdf/runtime/create-agdf/lib/cli/runtime-context.js +1 -59
- package/generated/plugins/agdf/runtime/create-agdf/lib/cli/validation-handlers.js +33 -103
- package/generated/plugins/agdf/runtime/create-agdf/lib/control-evaluation/git-observation.js +7 -5
- package/generated/plugins/agdf/runtime/create-agdf/lib/control-maintenance/startup.js +2 -2
- package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-decision-protocol.js +40 -0
- package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-dispatch-runtime.js +71 -298
- package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-entry.js +3 -24
- package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-owner-entry.js +31 -15
- package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-runtime.js +29 -0
- package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-thread-entry.js +11 -0
- package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/owner-client.js +79 -0
- package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/package.js +14 -80
- package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/plugin-runtime.js +29 -9
- package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/thread-owner.js +164 -0
- package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-owner-protocol.js +1 -0
- package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-protocol-runtime.js +308 -0
- package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-worker-runtime.js +152 -0
- package/generated/plugins/agdf/runtime/create-agdf/lib/runtime/control-command-service.js +22 -7
- package/generated/plugins/agdf/runtime/create-agdf/lib/runtime/control-context.js +8 -1
- package/generated/plugins/agdf/runtime/create-agdf/lib/runtime/validator-application.js +2 -2
- package/generated/plugins/agdf/runtime/create-agdf/package.json +5 -1
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/closeout-readiness.js +10 -2
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/decision-content-placeholder.js +9 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/decision-content-readiness.js +2 -7
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/definition-sources.js +3 -2
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/delivery-map.js +2 -12
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/doctor.js +162 -172
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-check.js +10 -9
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-policy-inputs.js +11 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-policy-pure.js +446 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-policy.js +3 -434
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/next-action.js +2 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/parent-reconciliation.js +2 -1
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/qa-follow-up.js +2 -1
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/required-files.js +9 -7
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-state-policy.js +1 -1
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-state.js +15 -9
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-step-policy.js +2 -1
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-work-summary.js +6 -4
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/shared-value.js +7 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/shared.js +5 -254
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/tp-planning.js +3 -2
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/ur-readiness.js +7 -2
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/verified-change.js +11 -9
- package/{runtime/core/lib/control-evaluation/backlog-vocabulary.js → generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/work-vocabulary.js} +2 -2
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/artifact-readiness.js +5 -3
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/authoring-inputs.js +110 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-archive.js +53 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-context.js +2 -1
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-contract.js +11 -4
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-list.d.ts +10 -6
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-list.js +32 -41
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-session.js +8 -8
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-work.js +33 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit.js +75 -44
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/contract.js +142 -58
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/decision-session.js +53 -11
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/doctor-observation.js +91 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/project-operation-call.js +5 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/project-state.js +48 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/result.js +61 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/selection.js +9 -3
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/service.js +142 -72
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/compatibility.js +42 -132
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/contract.js +5 -5
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/presentation.js +27 -119
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/service.js +9 -37
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-read/cockpit-pool.js +25 -9
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-read/cockpit-worker.js +4 -3
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-read/doctor-reader.js +92 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-read/doctor-worker.js +11 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-read/fs.js +18 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-read/snapshot.js +68 -17
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/aggregate.js +3 -1
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/approval-command.js +13 -10
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/approval-operations.js +10 -7
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/artefact-binding-proof.js +12 -20
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/artefact-bindings.js +10 -7
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/canonical-initialization.js +761 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/control-layout.js +183 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/decision-action-contract.js +10 -1
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/decision-action-service.js +24 -3
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/decision-material-contract.js +2 -1
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/evidence-bindings.js +7 -7
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/git-identity.js +86 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/index.js +0 -1
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/input-resolution.js +99 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-entry.js +273 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-handoff.js +174 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-inventory.js +90 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-origin-reader.js +48 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-origin.js +40 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/presentation-decision.js +12 -7
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/presentation-delivery.js +90 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/preview-render.js +5 -2
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/preview-review.js +3 -2
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/preview-snapshot.js +9 -6
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/recording-formats.js +12 -16
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-artefact-recording.js +54 -66
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-closure.js +343 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-command-contract.js +33 -119
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-command-schema.js +508 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-command-service.js +198 -34
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-create-command.js +60 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-identity.d.ts +14 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-identity.js +40 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-input-resolution.js +72 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-inventory-reader.js +31 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-inventory.js +179 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-material.js +211 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-mutation.js +51 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operation-identity.js +2 -1
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operation-proof.js +7 -4
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operation-status.js +20 -4
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operations.js +70 -13
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-owned-outputs.js +21 -9
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-presentation-envelope.js +25 -33
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-presentation-render.js +9 -8
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-presentation.js +45 -21
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-recording.js +10 -179
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-revision-boundary.js +7 -21
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-revision-history.js +23 -16
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-revision.js +84 -161
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-seal-compute.js +19 -44
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-seal.js +6 -1
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-source-revisions.js +19 -18
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-document.js +110 -42
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-edits.js +13 -5
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-parser.js +14 -6
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-reader.js +27 -18
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-repository.js +112 -48
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-resolver.js +12 -15
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-writer.js +21 -377
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-step-pending.js +2 -1
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-step-transaction.js +125 -114
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-steps.js +136 -248
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-store-inspection.js +14 -2
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-verified-change.js +81 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-work-summary-shape.d.ts +1 -0
- package/{runtime/core/lib/control-state/backlog-summary-shape.js → generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-work-summary-shape.js} +7 -19
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/delivery-continuation/service.js +5 -66
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/delivery-path-search/persistence.js +26 -8
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/delivery-path-search/state-adapter.js +1 -1
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/index.js +14 -6
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/interaction-catalog.js +3 -3
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/interaction-presentation.js +30 -12
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/mcp-input-hints.js +46 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/mcp-input-resolution.js +98 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/mcp-input-schema.js +15 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/mcp-resource-contract.js +1 -1
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/mcp-tool-errors.js +31 -15
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/owned-file-lock.js +266 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/owner-placement.js +50 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/resources/canonical-init-plan.js +34 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/resources/configuration.js +92 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/resources/context.js +7 -11
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/resources/language-preference.js +59 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/runtime/mcp-owner-protocol.js +102 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/runtime/plugin-provenance.js +173 -18
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/compact-continuation.js +3 -3
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/contract.js +28 -9
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/delivery-intake.js +11 -5
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/delivery-run-assignment.js +6 -10
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/mcp-continuation.js +64 -0
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/prd-definition.js +14 -5
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/sd-definition.js +2 -1
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/service.js +49 -14
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/tp-definition.js +2 -1
- package/generated/plugins/agdf/runtime/runtime-manifest.json +2 -2
- package/generated/plugins/agdf/scripts/check-runtime-integrity.mjs +60 -42
- package/generated/plugins/agdf/scripts/instruction-footprint.mjs +5 -5
- package/generated/plugins/agdf/skills/brownfield-analysis/SKILL.md +8 -5
- package/generated/plugins/agdf/skills/clean-implementation-review/SKILL.md +5 -2
- package/generated/plugins/agdf/skills/code-review/SKILL.md +7 -3
- package/generated/plugins/agdf/skills/delivery-closeout/SKILL.md +3 -2
- package/generated/plugins/agdf/skills/delivery-path-search/SKILL.md +3 -2
- package/generated/plugins/agdf/skills/gate-check/SKILL.md +35 -31
- package/generated/plugins/agdf/skills/prd-definition/SKILL.md +3 -2
- package/generated/plugins/agdf/skills/qa-gate/SKILL.md +13 -11
- package/generated/plugins/agdf/skills/release-or/SKILL.md +8 -5
- package/generated/plugins/agdf/skills/sd-definition/SKILL.md +5 -3
- package/generated/plugins/agdf/skills/task-plan-review/SKILL.md +5 -2
- package/generated/plugins/agdf/skills/tp-definition/SKILL.md +5 -3
- package/generated/plugins/agdf/skills/ur-definition/SKILL.md +12 -4
- package/generated/plugins/agdf/skills/ux-intent-definition/SKILL.md +5 -4
- package/generated/plugins/agdf/submission/openai/availability.md +1 -1
- package/generated/plugins/agdf/submission/openai/capability-matrix.json +1 -1
- package/generated/plugins/agdf/submission/openai/release-notes.md +9 -1
- package/generated/plugins/agdf/submission/openai/reviewer-cases.json +1 -1
- package/generated/plugins/agdf-planning/.codex-plugin/plugin.json +40 -0
- package/generated/plugins/agdf-planning/README.md +21 -0
- package/generated/plugins/agdf-planning/assets/agdf-icon.svg +16 -0
- package/generated/plugins/agdf-planning/assets/agdf-logo.svg +16 -0
- package/generated/plugins/agdf-planning/meta/agdf-planning.definition.json +9 -0
- package/generated/plugins/agdf-planning/plugin.json +45 -0
- package/generated/plugins/agdf-planning/skills/planning/SKILL.md +56 -0
- package/generated/plugins/copilot/agdf/.agdf-payload-inventory.json +886 -483
- package/generated/plugins/copilot/agdf/control/README.md +31 -110
- package/generated/plugins/copilot/agdf/control/planned-urs.md +95 -0
- package/generated/plugins/copilot/agdf/control/templates/RUN_STATE.md +15 -64
- package/generated/plugins/copilot/agdf/control/templates/artefacts/SD.md +7 -1
- package/generated/plugins/copilot/agdf/control/templates/artefacts/TP.md +4 -0
- package/generated/plugins/copilot/agdf/control/templates/artefacts/UR.md +1 -1
- package/generated/plugins/copilot/agdf/mcp/server/README.md +124 -12
- package/generated/plugins/copilot/agdf/mcp/server/package.json +12 -7
- package/generated/plugins/copilot/agdf/mcp/server/src/generation-entry.js +3 -85
- package/generated/plugins/copilot/agdf/mcp/server/src/generation-protocol.js +2 -44
- package/generated/plugins/copilot/agdf/mcp/server/src/generation-runtime.js +94 -0
- package/generated/plugins/copilot/agdf/mcp/server/src/generation-thread-entry.js +8 -0
- package/generated/plugins/copilot/agdf/mcp/server/src/generation.js +64 -20
- package/generated/plugins/copilot/agdf/mcp/server/src/main.js +42 -10
- package/generated/plugins/copilot/agdf/mcp/server/src/server.js +44 -22
- package/generated/plugins/copilot/agdf/mcp/server/src/stdio-output.js +42 -0
- package/generated/plugins/copilot/agdf/mcp/server/src/ui-capability.js +49 -1
- package/generated/plugins/copilot/agdf/mcp/server/src/worker-entry.js +2 -2
- package/generated/plugins/copilot/agdf/mcp/server/src/worker.js +53 -7
- package/generated/plugins/copilot/agdf/meta/agdf-agent-router.md +3 -3
- package/generated/plugins/copilot/agdf/meta/agdf-plugin.definition.json +12 -5
- package/generated/plugins/copilot/agdf/meta/distribution-profile-history.json +14 -0
- package/generated/plugins/copilot/agdf/plugin.json +1 -1
- package/generated/plugins/copilot/agdf/runtime/agdf-session-check.js +25 -21
- package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-defaults.json +9 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-defaults.schema.json +20 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-interaction-locales.json +2668 -2682
- package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-plugin.definition.json +12 -5
- package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/closeout.md +1 -1
- package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/control-scaffold.md +63 -46
- package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/gate-artifact-preparation.md +58 -48
- package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/gate-transition.md +5 -6
- package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/interaction.md +43 -126
- package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/modes.md +4 -3
- package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/prd-definition.md +6 -6
- package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/quality.md +81 -6
- package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/request-activation.md +9 -8
- package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/sd-definition.md +19 -3
- package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/task-target-resolution.md +24 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/tp-definition.md +7 -1
- package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/ur-definition.md +41 -7
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/codex-document-command.js +195 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/command-registry.js +82 -148
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/control-maintenance-command.js +8 -37
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/parse-args.js +98 -16
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/planned-command.js +55 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/project-read-command.js +35 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/run-command-aliases.js +116 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/runtime-context.js +1 -59
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/validation-handlers.js +33 -103
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/control-evaluation/git-observation.js +7 -5
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/control-maintenance/startup.js +2 -2
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-decision-protocol.js +40 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-dispatch-runtime.js +71 -298
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-entry.js +3 -24
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-owner-entry.js +31 -15
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-runtime.js +29 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-thread-entry.js +11 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/owner-client.js +79 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/package.js +14 -80
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/plugin-runtime.js +29 -9
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/thread-owner.js +164 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-owner-protocol.js +1 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-protocol-runtime.js +308 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-worker-runtime.js +152 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/runtime/control-command-service.js +22 -7
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/runtime/control-context.js +8 -1
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/runtime/validator-application.js +2 -2
- package/generated/plugins/copilot/agdf/runtime/create-agdf/package.json +5 -1
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/closeout-readiness.js +10 -2
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/decision-content-placeholder.js +9 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/decision-content-readiness.js +2 -7
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/definition-sources.js +3 -2
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/delivery-map.js +2 -12
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/doctor.js +162 -172
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-check.js +10 -9
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-policy-inputs.js +11 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-policy-pure.js +446 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-policy.js +3 -434
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/next-action.js +2 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/parent-reconciliation.js +2 -1
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/qa-follow-up.js +2 -1
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/required-files.js +9 -7
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-state-policy.js +1 -1
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-state.js +15 -9
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-step-policy.js +2 -1
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-work-summary.js +6 -4
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/shared-value.js +7 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/shared.js +5 -254
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/tp-planning.js +3 -2
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/ur-readiness.js +7 -2
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/verified-change.js +11 -9
- package/generated/plugins/{agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/backlog-vocabulary.js → copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/work-vocabulary.js} +2 -2
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/artifact-readiness.js +5 -3
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/authoring-inputs.js +110 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-archive.js +53 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/contract.js +142 -58
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/doctor-observation.js +91 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/project-operation-call.js +5 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/project-state.js +48 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/result.js +61 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/selection.js +9 -3
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/service.js +142 -72
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/compatibility.js +42 -132
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/contract.js +5 -5
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/presentation.js +27 -119
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/service.js +9 -37
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-read/cockpit-pool.js +121 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-read/doctor-reader.js +92 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-read/doctor-worker.js +11 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-read/fs.js +18 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-read/snapshot.js +68 -17
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/aggregate.js +3 -1
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/approval-command.js +13 -10
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/approval-operations.js +10 -7
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/artefact-binding-proof.js +12 -20
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/artefact-bindings.js +10 -7
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/canonical-initialization.js +761 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/control-layout.js +183 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/decision-material-contract.js +2 -1
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/evidence-bindings.js +7 -7
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/git-identity.js +86 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/index.js +0 -1
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/input-resolution.js +99 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-entry.js +273 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-handoff.js +174 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-inventory.js +90 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-origin-reader.js +48 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-origin.js +40 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/presentation-decision.js +12 -7
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/presentation-delivery.js +90 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/preview-render.js +5 -2
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/preview-review.js +3 -2
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/preview-snapshot.js +9 -6
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/recording-formats.js +12 -16
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-artefact-recording.js +54 -66
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-closure.js +343 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-command-contract.js +33 -119
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-command-schema.js +508 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-command-service.js +198 -34
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-create-command.js +60 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-identity.d.ts +14 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-identity.js +40 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-input-resolution.js +72 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-inventory-reader.js +31 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-inventory.js +179 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-material.js +211 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-mutation.js +51 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operation-identity.js +2 -1
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operation-proof.js +7 -4
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operation-status.js +20 -4
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operations.js +70 -13
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-owned-outputs.js +21 -9
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-presentation-envelope.js +25 -33
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-presentation-render.js +9 -8
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-presentation.js +45 -21
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-recording.js +10 -179
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-revision-boundary.js +7 -21
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-revision-history.js +23 -16
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-revision.js +84 -161
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-seal-compute.js +19 -44
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-seal.js +6 -1
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-source-revisions.js +19 -18
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-document.js +110 -42
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-edits.js +13 -5
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-parser.js +14 -6
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-reader.js +27 -18
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-repository.js +112 -48
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-resolver.js +12 -15
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-writer.js +21 -377
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-step-pending.js +2 -1
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-step-transaction.js +125 -114
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-steps.js +136 -248
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-store-inspection.js +14 -2
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-verified-change.js +81 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-work-summary-shape.d.ts +1 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/{backlog-summary-shape.js → run-work-summary-shape.js} +7 -19
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/delivery-continuation/service.js +5 -66
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/delivery-path-search/persistence.js +26 -8
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/delivery-path-search/state-adapter.js +1 -1
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/index.js +14 -6
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/interaction-catalog.js +3 -3
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/interaction-presentation.js +30 -12
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/mcp-input-hints.js +46 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/mcp-input-resolution.js +98 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/mcp-input-schema.js +15 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/mcp-resource-contract.js +1 -1
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/mcp-tool-errors.js +31 -15
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/owned-file-lock.js +266 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/owner-placement.js +50 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/resources/canonical-init-plan.js +34 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/resources/configuration.js +92 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/resources/context.js +7 -11
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/resources/language-preference.js +59 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/runtime/mcp-owner-protocol.js +102 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/runtime/plugin-provenance.js +173 -18
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/compact-continuation.js +3 -3
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/contract.js +28 -9
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/delivery-intake.js +11 -5
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/delivery-run-assignment.js +6 -10
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/mcp-continuation.js +64 -0
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/prd-definition.js +14 -5
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/sd-definition.js +2 -1
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/service.js +49 -14
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/tp-definition.js +2 -1
- package/generated/plugins/copilot/agdf/runtime/runtime-manifest.json +2 -2
- package/generated/plugins/copilot/agdf/skills/agdf-brownfield-analysis/SKILL.md +8 -5
- package/generated/plugins/copilot/agdf/skills/agdf-clean-implementation-review/SKILL.md +5 -2
- package/generated/plugins/copilot/agdf/skills/agdf-code-review/SKILL.md +7 -3
- package/generated/plugins/copilot/agdf/skills/agdf-delivery-closeout/SKILL.md +3 -2
- package/generated/plugins/copilot/agdf/skills/agdf-delivery-path-search/SKILL.md +3 -2
- package/generated/plugins/copilot/agdf/skills/agdf-gate-check/SKILL.md +35 -31
- package/generated/plugins/copilot/agdf/skills/agdf-interaction-locales.json +1 -1
- package/generated/plugins/copilot/agdf/skills/agdf-prd-definition/SKILL.md +3 -2
- package/generated/plugins/copilot/agdf/skills/agdf-qa-gate/SKILL.md +13 -11
- package/generated/plugins/copilot/agdf/skills/agdf-release-or/SKILL.md +8 -5
- package/generated/plugins/copilot/agdf/skills/agdf-sd-definition/SKILL.md +5 -3
- package/generated/plugins/copilot/agdf/skills/agdf-task-plan-review/SKILL.md +5 -2
- package/generated/plugins/copilot/agdf/skills/agdf-tp-definition/SKILL.md +5 -3
- package/generated/plugins/copilot/agdf/skills/agdf-ur-definition/SKILL.md +12 -4
- package/generated/plugins/copilot/agdf/skills/agdf-ux-intent-definition/SKILL.md +5 -4
- package/generated/plugins/copilot/agdf/skills/contracts/closeout.md +1 -1
- package/generated/plugins/copilot/agdf/skills/contracts/control-scaffold.md +63 -46
- package/generated/plugins/copilot/agdf/skills/contracts/gate-artifact-preparation.md +58 -48
- package/generated/plugins/copilot/agdf/skills/contracts/gate-transition.md +5 -6
- package/generated/plugins/copilot/agdf/skills/contracts/interaction.md +43 -126
- package/generated/plugins/copilot/agdf/skills/contracts/modes.md +4 -3
- package/generated/plugins/copilot/agdf/skills/contracts/prd-definition.md +6 -6
- package/generated/plugins/copilot/agdf/skills/contracts/quality.md +81 -6
- package/generated/plugins/copilot/agdf/skills/contracts/request-activation.md +9 -8
- package/generated/plugins/copilot/agdf/skills/contracts/sd-definition.md +19 -3
- package/generated/plugins/copilot/agdf/skills/contracts/task-target-resolution.md +24 -0
- package/generated/plugins/copilot/agdf/skills/contracts/tp-definition.md +7 -1
- package/generated/plugins/copilot/agdf/skills/contracts/ur-definition.md +41 -7
- package/generated/submissions/openai/agdf/.codex-plugin/plugin.json +1 -1
- package/generated/submissions/openai/agdf/meta/agdf-agent-router.md +3 -3
- package/generated/submissions/openai/agdf/meta/agdf-defaults.json +9 -0
- package/generated/submissions/openai/agdf/meta/agdf-defaults.schema.json +20 -0
- package/generated/submissions/openai/agdf/meta/agdf-interaction-locales.json +2668 -2682
- package/generated/submissions/openai/agdf/meta/agdf-plugin.definition.json +12 -5
- package/generated/submissions/openai/agdf/meta/contracts/closeout.md +1 -1
- package/generated/submissions/openai/agdf/meta/contracts/control-scaffold.md +63 -46
- package/generated/submissions/openai/agdf/meta/contracts/gate-artifact-preparation.md +58 -48
- package/generated/submissions/openai/agdf/meta/contracts/gate-transition.md +5 -6
- package/generated/submissions/openai/agdf/meta/contracts/interaction.md +43 -126
- package/generated/submissions/openai/agdf/meta/contracts/modes.md +4 -3
- package/generated/submissions/openai/agdf/meta/contracts/prd-definition.md +6 -6
- package/generated/submissions/openai/agdf/meta/contracts/quality.md +81 -6
- package/generated/submissions/openai/agdf/meta/contracts/request-activation.md +9 -8
- package/generated/submissions/openai/agdf/meta/contracts/sd-definition.md +19 -3
- package/generated/submissions/openai/agdf/meta/contracts/task-target-resolution.md +24 -0
- package/generated/submissions/openai/agdf/meta/contracts/tp-definition.md +7 -1
- package/generated/submissions/openai/agdf/meta/contracts/ur-definition.md +41 -7
- package/generated/submissions/openai/agdf/meta/copilot-payload-baseline.json +3 -3
- package/generated/submissions/openai/agdf/meta/distribution-profile-history.json +14 -0
- package/generated/submissions/openai/agdf/plugin.json +1 -1
- package/generated/submissions/openai/agdf/skills/brownfield-analysis/SKILL.md +8 -5
- package/generated/submissions/openai/agdf/skills/clean-implementation-review/SKILL.md +5 -2
- package/generated/submissions/openai/agdf/skills/code-review/SKILL.md +7 -3
- package/generated/submissions/openai/agdf/skills/delivery-closeout/SKILL.md +3 -2
- package/generated/submissions/openai/agdf/skills/delivery-path-search/SKILL.md +3 -2
- package/generated/submissions/openai/agdf/skills/gate-check/SKILL.md +35 -31
- package/generated/submissions/openai/agdf/skills/prd-definition/SKILL.md +3 -2
- package/generated/submissions/openai/agdf/skills/qa-gate/SKILL.md +13 -11
- package/generated/submissions/openai/agdf/skills/release-or/SKILL.md +8 -5
- package/generated/submissions/openai/agdf/skills/sd-definition/SKILL.md +5 -3
- package/generated/submissions/openai/agdf/skills/task-plan-review/SKILL.md +5 -2
- package/generated/submissions/openai/agdf/skills/tp-definition/SKILL.md +5 -3
- package/generated/submissions/openai/agdf/skills/ur-definition/SKILL.md +12 -4
- package/generated/submissions/openai/agdf/skills/ux-intent-definition/SKILL.md +5 -4
- package/generated/submissions/openai/agdf/submission/openai/availability.md +1 -1
- package/generated/submissions/openai/agdf/submission/openai/capability-matrix.json +1 -1
- package/generated/submissions/openai/agdf/submission/openai/inventory.json +49 -41
- package/generated/submissions/openai/agdf/submission/openai/listing.json +1 -1
- package/generated/submissions/openai/agdf/submission/openai/readiness.json +2 -2
- package/generated/submissions/openai/agdf/submission/openai/readiness.md +2 -2
- package/generated/submissions/openai/agdf/submission/openai/release-notes.md +9 -1
- package/generated/submissions/openai/agdf/submission/openai/reviewer-cases.json +1 -1
- package/lib/cli/application.js +31 -43
- package/lib/cli/codex-document-command.js +195 -0
- package/lib/cli/command-registry.js +82 -148
- package/lib/cli/control-maintenance-command.js +8 -37
- package/lib/cli/parse-args.js +98 -16
- package/lib/cli/planned-command.js +55 -0
- package/lib/cli/project-init-command.js +21 -0
- package/lib/cli/project-read-command.js +35 -0
- package/lib/cli/run-command-aliases.js +116 -0
- package/lib/cli/runtime-context.js +1 -59
- package/lib/cli/validation-handlers.js +33 -103
- package/lib/control-evaluation/git-observation.js +7 -5
- package/lib/control-maintenance/startup.js +2 -2
- package/lib/host-adapters/codex/plugin.js +48 -1
- package/lib/install-setup/contract.js +4 -4
- package/lib/install-setup/{control-migration.js → control-compatibility.js} +1 -2
- package/lib/install-setup/interaction.js +0 -1
- package/lib/install-setup/presentation.js +3 -4
- package/lib/install-setup/service.js +5 -18
- package/lib/installers/local-marketplace.js +262 -8
- package/lib/lifecycle/codex-startup-status.js +29 -0
- package/lib/lifecycle/presentation.js +6 -0
- package/lib/mcp-decision-protocol.js +40 -0
- package/lib/mcp-dispatch-runtime.js +71 -298
- package/lib/mcp-lifecycle/adapters/codex-origin-probe.js +28 -4
- package/lib/mcp-lifecycle/adapters/copilot.js +13 -7
- package/lib/mcp-lifecycle/adapters/opencode.js +97 -8
- package/lib/mcp-lifecycle/evidence.js +2 -1
- package/lib/mcp-lifecycle/facade-entry.js +3 -24
- package/lib/mcp-lifecycle/facade-owner-entry.js +31 -15
- package/lib/mcp-lifecycle/facade-runtime.js +29 -0
- package/lib/mcp-lifecycle/facade-thread-entry.js +11 -0
- package/lib/mcp-lifecycle/owner-client.js +79 -0
- package/lib/mcp-lifecycle/package.js +14 -80
- package/lib/mcp-lifecycle/plugin-runtime.js +29 -9
- package/lib/mcp-lifecycle/profile.js +2 -1
- package/lib/mcp-lifecycle/service.js +5 -4
- package/lib/mcp-lifecycle/thread-owner.js +164 -0
- package/lib/mcp-owner-protocol.js +1 -0
- package/lib/mcp-protocol-runtime.js +308 -0
- package/lib/mcp-worker-runtime.js +152 -0
- package/lib/runtime/control-command-service.js +22 -7
- package/lib/runtime/control-context.js +8 -1
- package/lib/runtime/validator-application.js +2 -2
- package/lib/scaffold/canonical-init.js +2 -691
- package/lib/scaffold/plan.js +9 -32
- package/lib/scaffold/presentation.js +2 -2
- package/lib/scaffold/write.js +6 -1
- package/package.json +6 -2
- package/runtime/core/lib/control-evaluation/closeout-readiness.js +10 -2
- package/runtime/core/lib/control-evaluation/decision-content-placeholder.js +9 -0
- package/runtime/core/lib/control-evaluation/decision-content-readiness.js +2 -7
- package/runtime/core/lib/control-evaluation/definition-sources.js +3 -2
- package/runtime/core/lib/control-evaluation/delivery-map.js +2 -12
- package/runtime/core/lib/control-evaluation/doctor.js +162 -172
- package/runtime/core/lib/control-evaluation/gate-check.js +10 -9
- package/runtime/core/lib/control-evaluation/gate-policy-inputs.js +11 -0
- package/runtime/core/lib/control-evaluation/gate-policy-pure.js +446 -0
- package/runtime/core/lib/control-evaluation/gate-policy.js +3 -434
- package/runtime/core/lib/control-evaluation/next-action.js +2 -0
- package/runtime/core/lib/control-evaluation/parent-reconciliation.js +2 -1
- package/runtime/core/lib/control-evaluation/qa-follow-up.js +2 -1
- package/runtime/core/lib/control-evaluation/required-files.js +9 -7
- package/runtime/core/lib/control-evaluation/run-state-policy.js +1 -1
- package/runtime/core/lib/control-evaluation/run-state.js +15 -9
- package/runtime/core/lib/control-evaluation/run-step-policy.js +2 -1
- package/runtime/core/lib/control-evaluation/run-work-summary.js +6 -4
- package/runtime/core/lib/control-evaluation/shared-value.js +7 -0
- package/runtime/core/lib/control-evaluation/shared.js +5 -254
- package/runtime/core/lib/control-evaluation/tp-planning.js +3 -2
- package/runtime/core/lib/control-evaluation/ur-readiness.js +7 -2
- package/runtime/core/lib/control-evaluation/verified-change.js +11 -9
- package/{generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/backlog-vocabulary.js → runtime/core/lib/control-evaluation/work-vocabulary.js} +2 -2
- package/runtime/core/lib/control-inspect/artifact-readiness.js +5 -3
- package/runtime/core/lib/control-inspect/authoring-inputs.js +110 -0
- package/runtime/core/lib/control-inspect/cockpit-archive.js +53 -0
- package/runtime/core/lib/control-inspect/cockpit-context.js +2 -1
- package/runtime/core/lib/control-inspect/cockpit-contract.js +11 -4
- package/runtime/core/lib/control-inspect/cockpit-list.d.ts +10 -6
- package/runtime/core/lib/control-inspect/cockpit-list.js +32 -41
- package/runtime/core/lib/control-inspect/cockpit-session.js +8 -8
- package/runtime/core/lib/control-inspect/cockpit-work.js +33 -0
- package/runtime/core/lib/control-inspect/cockpit.js +75 -44
- package/runtime/core/lib/control-inspect/contract.js +142 -58
- package/runtime/core/lib/control-inspect/decision-session.js +53 -11
- package/runtime/core/lib/control-inspect/doctor-observation.js +91 -0
- package/runtime/core/lib/control-inspect/project-operation-call.js +5 -0
- package/runtime/core/lib/control-inspect/project-state.js +48 -0
- package/runtime/core/lib/control-inspect/result.js +61 -0
- package/runtime/core/lib/control-inspect/selection.js +9 -3
- package/runtime/core/lib/control-inspect/service.js +142 -72
- package/runtime/core/lib/control-maintenance/compatibility.js +42 -132
- package/runtime/core/lib/control-maintenance/contract.js +5 -5
- package/runtime/core/lib/control-maintenance/presentation.js +27 -119
- package/runtime/core/lib/control-maintenance/service.js +9 -37
- package/runtime/core/lib/control-read/cockpit-pool.js +25 -9
- package/runtime/core/lib/control-read/cockpit-worker.js +4 -3
- package/runtime/core/lib/control-read/doctor-reader.js +92 -0
- package/runtime/core/lib/control-read/doctor-worker.js +11 -0
- package/runtime/core/lib/control-read/fs.js +18 -0
- package/runtime/core/lib/control-read/snapshot.js +68 -17
- package/runtime/core/lib/control-state/aggregate.js +3 -1
- package/runtime/core/lib/control-state/approval-command.js +13 -10
- package/runtime/core/lib/control-state/approval-operations.js +10 -7
- package/runtime/core/lib/control-state/artefact-binding-proof.js +12 -20
- package/runtime/core/lib/control-state/artefact-bindings.js +10 -7
- package/runtime/core/lib/control-state/canonical-initialization.js +761 -0
- package/runtime/core/lib/control-state/control-layout.js +183 -0
- package/runtime/core/lib/control-state/decision-action-contract.js +10 -1
- package/runtime/core/lib/control-state/decision-action-service.js +24 -3
- package/runtime/core/lib/control-state/decision-material-contract.js +2 -1
- package/runtime/core/lib/control-state/evidence-bindings.js +7 -7
- package/runtime/core/lib/control-state/git-identity.js +86 -0
- package/runtime/core/lib/control-state/index.js +0 -1
- package/runtime/core/lib/control-state/input-resolution.js +99 -0
- package/runtime/core/lib/control-state/planned-entry.js +273 -0
- package/runtime/core/lib/control-state/planned-handoff.js +174 -0
- package/runtime/core/lib/control-state/planned-inventory.js +90 -0
- package/runtime/core/lib/control-state/planned-origin-reader.js +48 -0
- package/runtime/core/lib/control-state/planned-origin.js +40 -0
- package/runtime/core/lib/control-state/presentation-decision.js +12 -7
- package/runtime/core/lib/control-state/presentation-delivery.js +90 -0
- package/runtime/core/lib/control-state/preview-render.js +5 -2
- package/runtime/core/lib/control-state/preview-review.js +3 -2
- package/runtime/core/lib/control-state/preview-snapshot.js +9 -6
- package/runtime/core/lib/control-state/recording-formats.js +12 -16
- package/runtime/core/lib/control-state/run-artefact-recording.js +54 -66
- package/runtime/core/lib/control-state/run-closure.js +343 -0
- package/runtime/core/lib/control-state/run-command-contract.js +33 -119
- package/runtime/core/lib/control-state/run-command-schema.js +508 -0
- package/runtime/core/lib/control-state/run-command-service.js +198 -34
- package/runtime/core/lib/control-state/run-create-command.js +60 -0
- package/runtime/core/lib/control-state/run-identity.d.ts +14 -0
- package/runtime/core/lib/control-state/run-identity.js +40 -0
- package/runtime/core/lib/control-state/run-input-resolution.js +72 -0
- package/runtime/core/lib/control-state/run-inventory-reader.js +31 -0
- package/runtime/core/lib/control-state/run-inventory.js +179 -0
- package/runtime/core/lib/control-state/run-material.js +211 -0
- package/runtime/core/lib/control-state/run-mutation.js +51 -0
- package/runtime/core/lib/control-state/run-operation-identity.js +2 -1
- package/runtime/core/lib/control-state/run-operation-proof.js +7 -4
- package/runtime/core/lib/control-state/run-operation-status.js +20 -4
- package/runtime/core/lib/control-state/run-operations.js +70 -13
- package/runtime/core/lib/control-state/run-owned-outputs.js +21 -9
- package/runtime/core/lib/control-state/run-presentation-envelope.js +25 -33
- package/runtime/core/lib/control-state/run-presentation-render.js +9 -8
- package/runtime/core/lib/control-state/run-presentation.js +45 -21
- package/runtime/core/lib/control-state/run-recording.js +10 -179
- package/runtime/core/lib/control-state/run-revision-boundary.js +7 -21
- package/runtime/core/lib/control-state/run-revision-history.js +23 -16
- package/runtime/core/lib/control-state/run-revision.js +84 -161
- package/runtime/core/lib/control-state/run-seal-compute.js +19 -44
- package/runtime/core/lib/control-state/run-seal.js +6 -1
- package/runtime/core/lib/control-state/run-source-revisions.js +19 -18
- package/runtime/core/lib/control-state/run-state-document.js +110 -42
- package/runtime/core/lib/control-state/run-state-edits.js +13 -5
- package/runtime/core/lib/control-state/run-state-parser.js +14 -6
- package/runtime/core/lib/control-state/run-state-reader.js +27 -18
- package/runtime/core/lib/control-state/run-state-repository.js +112 -48
- package/runtime/core/lib/control-state/run-state-resolver.js +12 -15
- package/runtime/core/lib/control-state/run-state-writer.js +21 -377
- package/runtime/core/lib/control-state/run-step-pending.js +2 -1
- package/runtime/core/lib/control-state/run-step-transaction.js +125 -114
- package/runtime/core/lib/control-state/run-steps.js +136 -248
- package/runtime/core/lib/control-state/run-store-inspection.js +14 -2
- package/runtime/core/lib/control-state/run-verified-change.js +81 -0
- package/runtime/core/lib/control-state/run-work-summary-shape.d.ts +1 -0
- package/{generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/backlog-summary-shape.js → runtime/core/lib/control-state/run-work-summary-shape.js} +7 -19
- package/runtime/core/lib/delivery-continuation/service.js +5 -66
- package/runtime/core/lib/delivery-path-search/persistence.js +26 -8
- package/runtime/core/lib/delivery-path-search/state-adapter.js +1 -1
- package/runtime/core/lib/index.js +14 -6
- package/runtime/core/lib/interaction-catalog.js +3 -3
- package/runtime/core/lib/interaction-presentation.js +30 -12
- package/runtime/core/lib/mcp-input-hints.js +46 -0
- package/runtime/core/lib/mcp-input-resolution.js +98 -0
- package/runtime/core/lib/mcp-input-schema.js +15 -0
- package/runtime/core/lib/mcp-resource-contract.js +1 -1
- package/runtime/core/lib/mcp-tool-errors.js +31 -15
- package/runtime/core/lib/owned-file-lock.js +266 -0
- package/runtime/core/lib/owner-placement.js +50 -0
- package/runtime/core/lib/resources/canonical-init-plan.js +34 -0
- package/runtime/core/lib/resources/configuration.js +92 -0
- package/runtime/core/lib/resources/context.js +7 -11
- package/runtime/core/lib/resources/language-preference.js +59 -0
- package/runtime/core/lib/runtime/mcp-owner-protocol.js +102 -0
- package/runtime/core/lib/runtime/plugin-provenance.js +173 -18
- package/runtime/core/lib/skill-dispatch/compact-continuation.js +3 -3
- package/runtime/core/lib/skill-dispatch/contract.js +28 -9
- package/runtime/core/lib/skill-dispatch/delivery-intake.js +11 -5
- package/runtime/core/lib/skill-dispatch/delivery-run-assignment.js +6 -10
- package/runtime/core/lib/skill-dispatch/mcp-continuation.js +64 -0
- package/runtime/core/lib/skill-dispatch/prd-definition.js +14 -5
- package/runtime/core/lib/skill-dispatch/sd-definition.js +2 -1
- package/runtime/core/lib/skill-dispatch/service.js +49 -14
- package/runtime/core/lib/skill-dispatch/tp-definition.js +2 -1
- package/generated/.agdf/control/templates/AGDF_RUN.md +0 -139
- package/generated/.agdf/control/templates/MASTER_BACKLOG.md +0 -39
- package/generated/plugins/agdf/control/templates/AGDF_RUN.md +0 -139
- package/generated/plugins/agdf/control/templates/MASTER_BACKLOG.md +0 -39
- package/generated/plugins/agdf/runtime/create-agdf/lib/control-maintenance/interaction.js +0 -28
- package/generated/plugins/agdf/runtime/create-agdf/lib/control-maintenance/repair.js +0 -4
- package/generated/plugins/agdf/runtime/create-agdf/lib/control-maintenance/service.js +0 -3
- package/generated/plugins/agdf/runtime/create-agdf/lib/control-state/run-recovery.js +0 -5
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-backlog.js +0 -135
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/interaction.js +0 -57
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/migration.js +0 -85
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/repair.js +0 -226
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/backlog-summary-shape.d.ts +0 -4
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/backlog-summary.js +0 -67
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/legacy-migration.js +0 -69
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/legacy-projection-reader.js +0 -38
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-backlog-writer.js +0 -80
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-backlog.js +0 -90
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-recovery.js +0 -296
- package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-relationship-correction.js +0 -74
- package/generated/plugins/copilot/agdf/control/templates/AGDF_RUN.md +0 -139
- package/generated/plugins/copilot/agdf/control/templates/MASTER_BACKLOG.md +0 -39
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/control-maintenance/interaction.js +0 -28
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/control-maintenance/repair.js +0 -4
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/control-maintenance/service.js +0 -3
- package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/control-state/run-recovery.js +0 -5
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/interaction.js +0 -57
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/migration.js +0 -85
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/repair.js +0 -226
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/backlog-summary-shape.d.ts +0 -4
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/backlog-summary.js +0 -67
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/legacy-migration.js +0 -69
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/legacy-projection-reader.js +0 -38
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-backlog-writer.js +0 -80
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-backlog.js +0 -90
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-recovery.js +0 -296
- package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-relationship-correction.js +0 -74
- package/lib/control-maintenance/interaction.js +0 -28
- package/lib/control-maintenance/repair.js +0 -4
- package/lib/control-maintenance/service.js +0 -3
- package/lib/control-state/run-recovery.js +0 -5
- package/lib/install-setup/control-repair.js +0 -1
- package/runtime/core/lib/control-inspect/cockpit-backlog.js +0 -135
- package/runtime/core/lib/control-maintenance/interaction.js +0 -57
- package/runtime/core/lib/control-maintenance/migration.js +0 -85
- package/runtime/core/lib/control-maintenance/repair.js +0 -226
- package/runtime/core/lib/control-state/backlog-summary-shape.d.ts +0 -4
- package/runtime/core/lib/control-state/backlog-summary.js +0 -67
- package/runtime/core/lib/control-state/legacy-migration.js +0 -69
- package/runtime/core/lib/control-state/legacy-projection-reader.js +0 -38
- package/runtime/core/lib/control-state/run-backlog-writer.js +0 -80
- package/runtime/core/lib/control-state/run-backlog.js +0 -90
- package/runtime/core/lib/control-state/run-recovery.js +0 -296
- package/runtime/core/lib/control-state/run-relationship-correction.js +0 -74
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { existsSync, rmSync } from "node:fs";
|
|
1
|
+
import { existsSync, readFileSync, rmSync } from "node:fs";
|
|
2
2
|
import { homedir } from "node:os";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import {
|
|
@@ -6,7 +6,6 @@ import {
|
|
|
6
6
|
atomicWrite,
|
|
7
7
|
fileSnapshot,
|
|
8
8
|
inheritedPermissionEffect,
|
|
9
|
-
readJsonObject,
|
|
10
9
|
referenceIdentityForSurface,
|
|
11
10
|
restoreSnapshot,
|
|
12
11
|
} from "./file-utils.js";
|
|
@@ -15,8 +14,75 @@ const OWNER = "create-agdf:mcp-runtime";
|
|
|
15
14
|
const CREATED_CONFIG = "AGDF_MCP_CREATED_CONFIG";
|
|
16
15
|
const SCHEMA = "https://opencode.ai/config.json";
|
|
17
16
|
|
|
17
|
+
// Preserve offsets: comments and trailing commas are syntax, never string data.
|
|
18
|
+
function jsonc(content) {
|
|
19
|
+
const tokens = [], clean = content.split('');
|
|
20
|
+
for (const match of content.matchAll(/"(?:\\[\s\S]|[^"\\])*"|\/\/[^\r\n]*|\/\*[\s\S]*?\*\/|[{}\[\]:,]|[^\s{}\[\]:,/"']+|[^\s]/gu)) {
|
|
21
|
+
const text = match[0], start = match.index, end = start + text.length;
|
|
22
|
+
if (text.startsWith('//') || text.startsWith('/*')) {
|
|
23
|
+
for (let i = start; i < end; ++i) if (!/[\r\n]/u.test(clean[i])) clean[i] = ' ';
|
|
24
|
+
} else tokens.push({ text, start, end });
|
|
25
|
+
}
|
|
26
|
+
for (let i = 0; i < tokens.length - 1; ++i) {
|
|
27
|
+
if (i > 0 && tokens[i].text === ',' && ['}', ']'].includes(tokens[i + 1].text)
|
|
28
|
+
&& !['{', '[', ':', ','].includes(tokens[i - 1].text)) clean[tokens[i].start] = ' ';
|
|
29
|
+
}
|
|
30
|
+
const sanitized = clean.join(''), config = JSON.parse(sanitized);
|
|
31
|
+
let cursor = 0;
|
|
32
|
+
function node() {
|
|
33
|
+
const first = tokens[cursor++], properties = [];
|
|
34
|
+
if (!['{', '['].includes(first.text)) return { ...first };
|
|
35
|
+
const object = first.text === '{', close = object ? '}' : ']';
|
|
36
|
+
while (tokens[cursor].text !== close) {
|
|
37
|
+
const key = object ? tokens[cursor++] : null;
|
|
38
|
+
if (object) ++cursor; // colon; JSON.parse already validated the grammar
|
|
39
|
+
const value = node(), comma = tokens[cursor].text === ',' ? tokens[cursor++] : null;
|
|
40
|
+
if (object) {
|
|
41
|
+
const name = JSON.parse(key.text);
|
|
42
|
+
if (properties.some(row => row.name === name)) throw Error('duplicate_key');
|
|
43
|
+
properties.push({ name, start: key.start, value, comma });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return { start: first.start, end: tokens[cursor++].end, ...(object ? { properties } : {}) };
|
|
47
|
+
}
|
|
48
|
+
return { config, tree: node(), preserveSyntax: sanitized !== content };
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function editJsonc(content, path, value) {
|
|
52
|
+
let { tree } = jsonc(content);
|
|
53
|
+
for (let i = 0; i < path.length; ++i) {
|
|
54
|
+
if (!tree.properties) throw Error('invalid_object');
|
|
55
|
+
const index = tree.properties.findIndex(row => row.name === path[i]), property = tree.properties[index];
|
|
56
|
+
if (property && i < path.length - 1) { tree = property.value; continue; }
|
|
57
|
+
const edits = [];
|
|
58
|
+
if (property) {
|
|
59
|
+
if (value !== undefined) edits.push([property.value.start, property.value.end, JSON.stringify(value, null, 2)]);
|
|
60
|
+
else {
|
|
61
|
+
edits.push([property.start, property.comma?.end ?? property.value.end, '']);
|
|
62
|
+
const previous = tree.properties[index - 1]?.comma;
|
|
63
|
+
if (!property.comma && previous) edits.push([previous.start, previous.end, '']);
|
|
64
|
+
}
|
|
65
|
+
} else {
|
|
66
|
+
if (value === undefined) return content;
|
|
67
|
+
for (const key of path.slice(i + 1).reverse()) value = { [key]: value };
|
|
68
|
+
const last = tree.properties.at(-1);
|
|
69
|
+
if (last && !last.comma) edits.push([last.value.end, last.value.end, ',']);
|
|
70
|
+
edits.push([tree.end - 1, tree.end - 1, `\n${' '.repeat(i + 1)}${JSON.stringify(path[i])}: ${JSON.stringify(value, null, 2)}\n${' '.repeat(i)}`]);
|
|
71
|
+
}
|
|
72
|
+
for (const [start, end, text] of edits.sort((a, b) => b[0] - a[0])) content = content.slice(0, start) + text + content.slice(end);
|
|
73
|
+
return content;
|
|
74
|
+
}
|
|
75
|
+
throw Error('invalid_path');
|
|
76
|
+
}
|
|
77
|
+
|
|
18
78
|
function readConfig(path) {
|
|
19
|
-
|
|
79
|
+
let value;
|
|
80
|
+
try {
|
|
81
|
+
const content = existsSync(path) ? readFileSync(path, 'utf8') : '{}';
|
|
82
|
+
const parsed = jsonc(content);
|
|
83
|
+
value = { content, config: parsed.config, preserveSyntax: path.endsWith('.jsonc') || parsed.preserveSyntax };
|
|
84
|
+
if (!value.config || typeof value.config !== 'object' || Array.isArray(value.config)) throw Error('invalid');
|
|
85
|
+
} catch { throw Error('AGDF_MCP_OPENCODE_CONFIG_INVALID'); }
|
|
20
86
|
if (value.config.mcp !== undefined && (!value.config.mcp || typeof value.config.mcp !== "object" || Array.isArray(value.config.mcp))) {
|
|
21
87
|
throw new Error("AGDF_MCP_OPENCODE_CONFIG_INVALID");
|
|
22
88
|
}
|
|
@@ -64,13 +130,26 @@ function inspectPath(path, expected) {
|
|
|
64
130
|
}
|
|
65
131
|
|
|
66
132
|
function sources({ scope, target, env }) {
|
|
133
|
+
const user = env.OPENCODE_CONFIG_DIR || join(homedir(), '.config', 'opencode');
|
|
134
|
+
const files = (id, directory, priority) => {
|
|
135
|
+
const paths = ['opencode.jsonc', 'opencode.json'].map(name => join(directory, name)).filter(existsSync);
|
|
136
|
+
if (!paths.length) paths.push(join(directory, 'opencode.json'));
|
|
137
|
+
// JSONC wins conflicting keys. Otherwise update the file owning the entry,
|
|
138
|
+
// rather than silently shadowing it by creating a second registration.
|
|
139
|
+
const selected = paths.find(path => {
|
|
140
|
+
const { config } = readConfig(path);
|
|
141
|
+
return config.mcp?.agdf !== undefined || config.mcp?.servers?.agdf !== undefined;
|
|
142
|
+
}) ?? paths[0];
|
|
143
|
+
return paths.map((path, index) => ({ id: path === selected ? id : `${id}_${path.endsWith('.jsonc') ? 'jsonc' : 'json'}`,
|
|
144
|
+
path, priority: priority + index, selected: scope === id && path === selected }));
|
|
145
|
+
};
|
|
67
146
|
return [
|
|
68
147
|
...(typeof env.OPENCODE_CONFIG_CONTENT === "string" && env.OPENCODE_CONFIG_CONTENT.trim()
|
|
69
148
|
? [{ id: "inline", path: "env:OPENCODE_CONFIG_CONTENT", priority: 0, selected: false, inline: env.OPENCODE_CONFIG_CONTENT }] : []),
|
|
70
149
|
...(typeof env.OPENCODE_CONFIG === "string" && env.OPENCODE_CONFIG.trim()
|
|
71
150
|
? [{ id: "custom", path: env.OPENCODE_CONFIG, priority: 5, selected: false }] : []),
|
|
72
|
-
|
|
73
|
-
|
|
151
|
+
...files('project', target, 10),
|
|
152
|
+
...files('user', user, 20),
|
|
74
153
|
];
|
|
75
154
|
}
|
|
76
155
|
|
|
@@ -80,7 +159,7 @@ function inspect(input) {
|
|
|
80
159
|
const states = new Map(list.map((source) => {
|
|
81
160
|
if (!source.inline) return [source.id, inspectPath(source.path, input.spec)];
|
|
82
161
|
try {
|
|
83
|
-
const config =
|
|
162
|
+
const config = jsonc(source.inline).config;
|
|
84
163
|
if (!config || typeof config !== "object" || Array.isArray(config)) throw new Error("invalid");
|
|
85
164
|
return [source.id, inspectConfig(config, source.path, input.spec)];
|
|
86
165
|
} catch { return [source.id, { status: "invalid", path: source.path, identity: null }]; }
|
|
@@ -96,7 +175,7 @@ function transaction({ action, scope, target, spec, previousSpec, env }) {
|
|
|
96
175
|
return { status: "unchanged", path: current.path, apply() {}, rollback() {} };
|
|
97
176
|
}
|
|
98
177
|
const snapshot = fileSnapshot(current.path);
|
|
99
|
-
const { config } = readConfig(current.path);
|
|
178
|
+
const { config, content, preserveSyntax } = readConfig(current.path);
|
|
100
179
|
const mcp = { ...(config.mcp ?? {}) };
|
|
101
180
|
const nested = spec.host?.config_variant === "nested_v2";
|
|
102
181
|
const createdConfig = !snapshot.existed || current.created_config === true;
|
|
@@ -117,7 +196,17 @@ function transaction({ action, scope, target, spec, previousSpec, env }) {
|
|
|
117
196
|
const remaining = Object.keys(next);
|
|
118
197
|
const removable = current.created_config === true
|
|
119
198
|
&& (remaining.length === 0 || (remaining.length === 1 && remaining[0] === "$schema" && next.$schema === SCHEMA));
|
|
120
|
-
|
|
199
|
+
let after = `${JSON.stringify(next, null, 2)}\n`;
|
|
200
|
+
if (snapshot.existed && preserveSyntax) {
|
|
201
|
+
after = content;
|
|
202
|
+
for (const keys of [['mcp', 'agdf'], ['mcp', 'servers', 'agdf'], ['mcp', 'servers'], ['mcp']]) {
|
|
203
|
+
const beforeValue = keys.reduce((row, key) => row?.[key], config), nextValue = keys.reduce((row, key) => row?.[key], next);
|
|
204
|
+
if ((keys.length > 2 || keys.at(-1) === 'agdf' || nextValue === undefined) && JSON.stringify(beforeValue) !== JSON.stringify(nextValue)) {
|
|
205
|
+
after = editJsonc(after, keys, nextValue);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
if (action === 'disable' && removable) after = null;
|
|
121
210
|
return { status: "changed", path: current.path,
|
|
122
211
|
apply() { if (after === null) rmSync(current.path, { force: true }); else atomicWrite(current.path, after); },
|
|
123
212
|
rollback() { restoreSnapshot(snapshot); },
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isRunOwnedDataPath } from '#agdf-core/control-state/run-identity.js';
|
|
1
2
|
const SURFACES = new Set(["codex", "claude", "opencode", "copilot"]);
|
|
2
3
|
const SCOPES = new Set(["project", "user"]);
|
|
3
4
|
const QUALIFICATION_FIELDS = Object.freeze([
|
|
@@ -28,7 +29,7 @@ function plainObject(value) {
|
|
|
28
29
|
}
|
|
29
30
|
|
|
30
31
|
function evidenceRef(value) {
|
|
31
|
-
return
|
|
32
|
+
return isRunOwnedDataPath(value);
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
export function validateMcpQualificationRecord(record) {
|
|
@@ -1,26 +1,5 @@
|
|
|
1
|
-
//
|
|
1
|
+
// Explicit process adapter retained for historical owned packages.
|
|
2
2
|
import process from 'node:process';
|
|
3
|
-
import {
|
|
4
|
-
import { pathToFileURL } from 'node:url';
|
|
5
|
-
import { inspectMcpServerPackage, createMcpGenerationPublisher } from './package.js';
|
|
6
|
-
|
|
3
|
+
import { startFacadeRuntime } from './facade-runtime.js';
|
|
7
4
|
if (!process.send || !process.argv[2] || process.argv[2].length > 65536) throw Error('AGDF_MCP_FACADE_INPUT_INVALID');
|
|
8
|
-
|
|
9
|
-
let handle, stopRequested = false;
|
|
10
|
-
const stop = () => { stopRequested = true; if (handle) void handle.close(); };
|
|
11
|
-
process.on('message', message => { if (message?.kind === 'facade_stop' && message.token === token) stop(); });
|
|
12
|
-
process.on('disconnect', stop); process.on('SIGINT', stop); process.on('SIGTERM', stop);
|
|
13
|
-
const actual = inspectMcpServerPackage({ dataRoot: dirname(expected.root), expectedVersion: expected.version });
|
|
14
|
-
if (actual.status !== 'matched' || actual.root !== expected.root || actual.digest !== expected.digest
|
|
15
|
-
|| actual.dispatcherDigest !== expected.dispatcherDigest || actual.sdkDigest !== expected.sdkDigest) throw Error('AGDF_MCP_FACADE_IDENTITY_INVALID');
|
|
16
|
-
const runtime = { ...actual, immutable: true, publication_id: expected.publication_id, publisher_root: expected.publisher_root };
|
|
17
|
-
process.env.AGDF_DISPATCH_PLUGIN_ROOT = pluginRoot;
|
|
18
|
-
const { runMcpServer } = await import(pathToFileURL(join(runtime.packageRoot, 'src/main.js')));
|
|
19
|
-
handle = await runMcpServer({ surface, cockpitDir, cockpitMode, ownedPublication: runtime,
|
|
20
|
-
ownedPublisher: createMcpGenerationPublisher(runtime, {
|
|
21
|
-
publicationDeadline: performance.now() + Math.max(0, Number(BigInt(deadline_ns) - process.hrtime.bigint()) / 1e6),
|
|
22
|
-
}), onClosed(result) {
|
|
23
|
-
process.send?.({ kind: 'facade_closed', token, confirmed: result?.confirmed === true }, () => process.disconnect());
|
|
24
|
-
} });
|
|
25
|
-
if (!handle) throw Error('AGDF_MCP_FACADE_START_UNCONFIRMED');
|
|
26
|
-
if (stopRequested) await handle.close();
|
|
5
|
+
await startFacadeRuntime({ input: JSON.parse(process.argv[2]), channel: { on: (...args) => process.on(...args), send: (...args) => process.send(...args), close: () => process.disconnect() } });
|
|
@@ -1,29 +1,45 @@
|
|
|
1
1
|
// Stable launcher-side owner; it loads no immutable SDK code itself. Loss of
|
|
2
2
|
// its host parent requests orderly shutdown, never deletion of active bytes.
|
|
3
3
|
import process from 'node:process';
|
|
4
|
-
import { dirname } from 'node:path';
|
|
5
4
|
import { EventEmitter } from 'node:events';
|
|
6
|
-
import {
|
|
5
|
+
import { acquireMcpExecutableClaim } from './package.js';
|
|
7
6
|
import { supervisePluginMcpFacade } from './plugin-runtime.js';
|
|
7
|
+
import { superviseThreadMcpFacade } from './thread-owner.js';
|
|
8
8
|
|
|
9
9
|
if (!process.send || !process.connected || !process.argv[2] || process.argv[2].length > 65536) throw Error('AGDF_MCP_FACADE_INPUT_INVALID');
|
|
10
|
-
const input = JSON.parse(process.argv[2])
|
|
10
|
+
const input = JSON.parse(process.argv[2]);
|
|
11
11
|
const signals = new EventEmitter();
|
|
12
|
-
let stopRequested = false, supervising = false;
|
|
13
|
-
const stop = () => { stopRequested = true; if (supervising) signals.emit('SIGTERM'); };
|
|
12
|
+
let stopRequested = false, supervising = false, releaseWaiting;
|
|
13
|
+
const stop = () => { stopRequested = true; releaseWaiting?.(null); if (supervising) signals.emit('SIGTERM'); };
|
|
14
14
|
process.on('disconnect', stop); process.on('SIGINT', stop); process.on('SIGTERM', stop);
|
|
15
15
|
process.on('message', message => { if (message?.kind === 'owner_stop' && message.token === input.token) stop(); });
|
|
16
16
|
try {
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
17
|
+
const expected = input.await_runtime === true ? await new Promise((resolve, reject) => {
|
|
18
|
+
const remaining = Math.max(0, Number(BigInt(input.deadline_ns) - process.hrtime.bigint()) / 1e6);
|
|
19
|
+
const timer = setTimeout(() => finish(null, Error('AGDF_MCP_PUBLICATION_DEADLINE_EXCEEDED')), remaining);
|
|
20
|
+
const start = message => { if (message?.kind === 'owner_start' && message.token === input.token) finish(message.runtime); };
|
|
21
|
+
const finish = (runtime, error) => {
|
|
22
|
+
clearTimeout(timer); process.off('message', start); releaseWaiting = undefined;
|
|
23
|
+
if (error) reject(error); else resolve(runtime);
|
|
24
|
+
};
|
|
25
|
+
releaseWaiting = finish; process.on('message', start);
|
|
26
|
+
if (stopRequested) finish(null);
|
|
27
|
+
else process.send({ kind: 'owner_ready', token: input.token });
|
|
28
|
+
}) : input.runtime;
|
|
29
|
+
if (expected) {
|
|
30
|
+
const publicationDeadline = performance.now() + Math.max(0, Number(BigInt(input.deadline_ns) - process.hrtime.bigint()) / 1e6);
|
|
31
|
+
// Claim acquisition performs the full current server/dispatcher/SDK inspection
|
|
32
|
+
// under the publication lock. Continue with its canonical observed paths.
|
|
33
|
+
const claim = acquireMcpExecutableClaim(expected, { publicationDeadline });
|
|
34
|
+
const runtime = { ...claim.verifiedRuntime, immutable: true, publication_id: expected.publication_id, publisher_root: expected.publisher_root };
|
|
35
|
+
// Both SDK-free adapters load during owner bootstrap. There is no await
|
|
36
|
+
// between the fresh lock-bound claim and actual executable Worker creation.
|
|
37
|
+
const supervise = runtime.executionModel === 'owner_threads_v1' ? superviseThreadMcpFacade : supervisePluginMcpFacade;
|
|
38
|
+
const ended = supervise({ ...input, runtime, env: process.env, claim, signals, deadlineNs: input.deadline_ns });
|
|
39
|
+
supervising = true;
|
|
40
|
+
if (stopRequested) signals.emit('SIGTERM');
|
|
41
|
+
await ended;
|
|
42
|
+
}
|
|
27
43
|
if (process.connected) process.send({ kind: 'owner_closed', token: input.token, confirmed: true }, () => process.disconnect());
|
|
28
44
|
} catch (error) {
|
|
29
45
|
process.exitCode = 1;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Private child of the installed launcher. Public input remains MCP STDIO only.
|
|
2
|
+
import process from 'node:process';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { pathToFileURL } from 'node:url';
|
|
5
|
+
import { createMcpGenerationPublisher } from './package.js';
|
|
6
|
+
|
|
7
|
+
export async function startFacadeRuntime({ input, channel, generationTransport, signals = process }) {
|
|
8
|
+
const { runtime: expected, surface, cockpitDir, cockpitMode, pluginRoot, token, deadline_ns } = input;
|
|
9
|
+
let handle, stopRequested = false;
|
|
10
|
+
const stop = () => { stopRequested = true; if (handle) void handle.close(); };
|
|
11
|
+
channel.on('message', message => { if (message?.kind === 'facade_stop' && message.token === token) stop(); });
|
|
12
|
+
channel.on('disconnect', stop); signals.on('SIGINT', stop); signals.on('SIGTERM', stop);
|
|
13
|
+
// The parent freshly claims the complete immutable image immediately before
|
|
14
|
+
// creating this actual executable. These are expected identities, not a reused
|
|
15
|
+
// observation. The SDK-free main/protocol load performs its own full fresh
|
|
16
|
+
// inspection and binds that producer below, before any SDK import/service.
|
|
17
|
+
const runtime = { ...expected, immutable: true };
|
|
18
|
+
process.env.AGDF_DISPATCH_PLUGIN_ROOT = pluginRoot;
|
|
19
|
+
const { runMcpServer } = await import(pathToFileURL(join(runtime.packageRoot, 'src/main.js')));
|
|
20
|
+
handle = await runMcpServer({ surface, cockpitDir, cockpitMode, ownedPublication: runtime,
|
|
21
|
+
generationTransport, ownedPublisher: createMcpGenerationPublisher(runtime, {
|
|
22
|
+
publicationDeadline: performance.now() + Math.max(0, Number(BigInt(deadline_ns) - process.hrtime.bigint()) / 1e6),
|
|
23
|
+
}), onClosed(result) {
|
|
24
|
+
channel.send({ kind: 'facade_closed', token, confirmed: result?.confirmed === true }, () => channel.close());
|
|
25
|
+
} });
|
|
26
|
+
if (!handle) throw Error('AGDF_MCP_FACADE_START_UNCONFIRMED');
|
|
27
|
+
if (stopRequested) await handle.close();
|
|
28
|
+
|
|
29
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { parentPort, workerData } from 'node:worker_threads';
|
|
2
|
+
import { createOwnerClient } from './owner-client.js';
|
|
3
|
+
import { startFacadeRuntime } from './facade-runtime.js';
|
|
4
|
+
if (!parentPort) throw Error('AGDF_MCP_FACADE_INPUT_INVALID');
|
|
5
|
+
const client = createOwnerClient(parentPort, workerData.binding);
|
|
6
|
+
await startFacadeRuntime({ input: workerData.input, generationTransport: client,
|
|
7
|
+
channel: { ...client.lifecycle, close() {
|
|
8
|
+
// Node's Worker stdin retains its internal port until readable EOF. The SDK
|
|
9
|
+
// has stopped reading after close; drain the owner's final EOF naturally.
|
|
10
|
+
process.stdin.resume(); client.lifecycle.close();
|
|
11
|
+
} } });
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
|
+
import { randomUUID } from 'node:crypto';
|
|
3
|
+
import { GENERATION_LIMITS as L, OWNER_LIMITS, ownerFrame, encodeOwnerFrame, decodeOwnerFrame,
|
|
4
|
+
validGenerationMessage, generationMessage, publicationSelector } from '../mcp-owner-protocol.js';
|
|
5
|
+
|
|
6
|
+
// Logical connections only. The remote owner holds the genuine Worker objects.
|
|
7
|
+
export function createOwnerClient(port, binding) {
|
|
8
|
+
const rows = new Map(), pending = new Map(), lifecycle = new EventEmitter();
|
|
9
|
+
let bytes = 0, disconnected = false;
|
|
10
|
+
function send(kind, payload, requestId, row) {
|
|
11
|
+
if (disconnected) throw Error('generation_connection_lost');
|
|
12
|
+
const frame = ownerFrame(binding, kind, payload, requestId, row);
|
|
13
|
+
const wire = encodeOwnerFrame(frame, binding);
|
|
14
|
+
if (pending.size >= OWNER_LIMITS.frames || bytes + Buffer.byteLength(wire) > OWNER_LIMITS.bytes) throw Error('generation_request_capacity');
|
|
15
|
+
return wire;
|
|
16
|
+
}
|
|
17
|
+
const generationFailure = (frame, p) => generationMessage(p.row.epoch, p.row.generation, 'failure', { reason: frame.payload.reason }, {}, p.original, frame.request_id);
|
|
18
|
+
function release(id) { const p = pending.get(id); if (p) { pending.delete(id); bytes -= p.bytes; clearTimeout(p.timer); } return p; }
|
|
19
|
+
port.on('message', wire => {
|
|
20
|
+
let frame; try { frame = decodeOwnerFrame(wire, binding, { reply: true }); } catch { return; }
|
|
21
|
+
if (frame.kind === 'stop' && frame.generation_id === null && frame.publication_id === binding.publication_id) {
|
|
22
|
+
lifecycle.emit('message', { kind: 'facade_stop', token: binding.token }); return;
|
|
23
|
+
}
|
|
24
|
+
const row = rows.get(frame.generation_id);
|
|
25
|
+
if (!row || row.epoch !== frame.generation_epoch || row.publication_id !== frame.publication_id) return;
|
|
26
|
+
const p = pending.get(frame.request_id);
|
|
27
|
+
if (frame.kind === 'exit' && Object.keys(frame.payload).sort().join() === 'code' && Number.isInteger(frame.payload.code)) {
|
|
28
|
+
row.connected = false; if (frame.payload.code === 0) rows.delete(row.generation); row.emit('exit', frame.payload.code, null); return;
|
|
29
|
+
}
|
|
30
|
+
if (!p || p.row !== row) return;
|
|
31
|
+
if (frame.kind === 'failure' && typeof frame.payload?.reason === 'string') {
|
|
32
|
+
release(frame.request_id); p.reject?.(Error(frame.payload.reason)); if (p.kind === 'send') row.emit('message', generationFailure(frame, p));
|
|
33
|
+
} else if (frame.kind === 'opened' && p.kind === 'open' && frame.payload?.opened === true) {
|
|
34
|
+
release(frame.request_id); p.resolve(row);
|
|
35
|
+
} else if (frame.kind === 'message' && p.kind === 'send'
|
|
36
|
+
&& validGenerationMessage(frame.payload, { epoch: row.epoch, generation: row.generation, reply: true })
|
|
37
|
+
&& frame.payload.request_id === frame.request_id && frame.payload.original_operation_id === p.original) {
|
|
38
|
+
release(frame.request_id); row.emit('message', frame.payload);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
port.on('close', () => {
|
|
42
|
+
disconnected = true;
|
|
43
|
+
for (const [id] of pending) { const p = release(id); p.reject?.(Error('generation_connection_lost')); }
|
|
44
|
+
for (const row of rows.values()) if (row.connected) { row.connected = false; row.emit('disconnect'); }
|
|
45
|
+
lifecycle.emit('disconnect');
|
|
46
|
+
});
|
|
47
|
+
return Object.freeze({
|
|
48
|
+
lifecycle: {
|
|
49
|
+
on: (...args) => lifecycle.on(...args),
|
|
50
|
+
send(value, callback) {
|
|
51
|
+
if (value?.kind !== 'facade_closed' || value.token !== binding.token || typeof value.confirmed !== 'boolean') throw Error('generation_input_limit');
|
|
52
|
+
port.postMessage(encodeOwnerFrame(ownerFrame(binding, 'closed', { confirmed: value.confirmed }, randomUUID()), binding)); callback?.();
|
|
53
|
+
},
|
|
54
|
+
close: () => port.close(),
|
|
55
|
+
},
|
|
56
|
+
async open({ packageInfo, epoch, generation }) {
|
|
57
|
+
if (rows.size >= L.slots || rows.has(generation)) throw Error('generation_capacity_protected');
|
|
58
|
+
const row = new EventEmitter(); Object.assign(row, { epoch, generation, publication_id: packageInfo.publication_id, connected: true });
|
|
59
|
+
rows.set(generation, row);
|
|
60
|
+
row.send = (message, callback) => {
|
|
61
|
+
try {
|
|
62
|
+
if (!row.connected || !validGenerationMessage(message, { epoch, generation }) || pending.has(message.request_id)) throw Error('generation_input_limit');
|
|
63
|
+
const wire = send('send', message, message.request_id, row);
|
|
64
|
+
const entry = { kind: 'send', row, original: message.original_operation_id, bytes: Buffer.byteLength(wire) };
|
|
65
|
+
// Expiry retains the row; uncertainty is handled by the generation router.
|
|
66
|
+
entry.timer = setTimeout(() => { release(message.request_id); row.emit('message', generationFailure({ payload: { reason: 'generation_response_unknown' }, request_id: message.request_id }, entry)); }, L.qualify);
|
|
67
|
+
pending.set(message.request_id, entry); bytes += entry.bytes; port.postMessage(wire); callback?.();
|
|
68
|
+
} catch (error) { callback?.(error); }
|
|
69
|
+
};
|
|
70
|
+
const id = randomUUID(), wire = send('open', publicationSelector(packageInfo), id, row);
|
|
71
|
+
return new Promise((resolve, reject) => {
|
|
72
|
+
const entry = { kind: 'open', row, resolve, reject, bytes: Buffer.byteLength(wire) };
|
|
73
|
+
entry.timer = setTimeout(() => { release(id); row.connected = false; reject(Error('generation_response_unknown')); }, L.qualify);
|
|
74
|
+
pending.set(id, entry); bytes += entry.bytes;
|
|
75
|
+
try { port.postMessage(wire); } catch (error) { release(id); reject(error); }
|
|
76
|
+
});
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Worker } from 'node:worker_threads';
|
|
1
2
|
import { ChildProcess, execFileSync } from "node:child_process";
|
|
2
3
|
import { createHash, randomUUID } from "node:crypto";
|
|
3
4
|
import {
|
|
@@ -16,16 +17,17 @@ import {
|
|
|
16
17
|
import { dirname, isAbsolute, join, resolve } from "node:path";
|
|
17
18
|
import process from "node:process";
|
|
18
19
|
import {
|
|
20
|
+
MCP_RUNTIME_OWNER as OWNER,
|
|
21
|
+
MCP_RUNTIME_MARKER as MARKER,
|
|
22
|
+
inspectOwnedMcpRuntimeRoot as inspectPackageRoot,
|
|
19
23
|
digestDirectory,
|
|
20
24
|
digestMcpDispatcherPackage,
|
|
21
25
|
digestMcpSdkRuntime,
|
|
22
26
|
} from "#agdf-core/runtime/plugin-provenance.js";
|
|
23
27
|
import { defaultNpmInstallRoot, npmInvocation } from "../npm-invocation.js";
|
|
24
28
|
import { renameSyncWithRetry } from "#agdf-core/fs-swap.js";
|
|
25
|
-
import { fsyncDirectory, withOwnedFileLock } from '#agdf-core/
|
|
29
|
+
import { fsyncDirectory, withOwnedFileLock } from '#agdf-core/owned-file-lock.js';
|
|
26
30
|
|
|
27
|
-
const OWNER = "create-agdf:mcp-runtime";
|
|
28
|
-
const MARKER = ".agdf-mcp-owned.json";
|
|
29
31
|
const CLAIMS = '.agdf-executable-claims';
|
|
30
32
|
|
|
31
33
|
// Claims are package-local retention evidence, never a PID liveness ledger.
|
|
@@ -62,7 +64,7 @@ export function acquireMcpExecutableClaim(runtime, { ownerEpoch = randomUUID(),
|
|
|
62
64
|
if (realpathSync(root) !== root || lstatSync(root).isSymbolicLink()) throw Error('AGDF_MCP_EXECUTABLE_CLAIM_INVALID');
|
|
63
65
|
const fresh = inspectMcpServerPackage({ dataRoot: dirname(root), expectedVersion: runtime.version });
|
|
64
66
|
if (fresh.status !== 'matched' || fresh.digest !== runtime.digest || fresh.dispatcherDigest !== runtime.dispatcherDigest
|
|
65
|
-
|| fresh.sdkDigest !== runtime.sdkDigest) throw Error('AGDF_MCP_EXECUTABLE_CLAIM_INVALID');
|
|
67
|
+
|| fresh.sdkDigest !== runtime.sdkDigest || fresh.markerPath !== runtime.markerPath) throw Error('AGDF_MCP_EXECUTABLE_CLAIM_INVALID');
|
|
66
68
|
const marker = readJson(runtime.markerPath, 'AGDF_MCP_RUNTIME_MARKER_INVALID');
|
|
67
69
|
if (marker.owner !== OWNER || marker.executable_retention !== 'claimed_immutable'
|
|
68
70
|
|| marker.server_digest !== runtime.digest || marker.dispatcher_digest !== runtime.dispatcherDigest
|
|
@@ -96,7 +98,14 @@ export function acquireMcpExecutableClaim(runtime, { ownerEpoch = randomUUID(),
|
|
|
96
98
|
}
|
|
97
99
|
}
|
|
98
100
|
};
|
|
99
|
-
|
|
101
|
+
// Reuse this actual, lock-bound inspection in the supervising owner. It
|
|
102
|
+
// is an observation from this acquisition, never caller-supplied trust.
|
|
103
|
+
return Object.freeze({ token, owner_epoch: ownerEpoch, generation, verifiedRuntime: fresh,
|
|
104
|
+
bindOwnedWorker(worker, { confirmedEnd = () => false } = {}) {
|
|
105
|
+
if (bound || !(worker instanceof Worker) || worker.threadId <= 0) throw Error('AGDF_MCP_EXECUTABLE_CLAIM_INVALID');
|
|
106
|
+
bound = true;
|
|
107
|
+
worker.once('exit', code => { try { if (code === 0 && confirmedEnd() === true) releaseConfirmed(); } catch {} });
|
|
108
|
+
},
|
|
100
109
|
bindOwnedChild(child, { confirmedEnd = () => true } = {}) {
|
|
101
110
|
if (bound || !(child instanceof ChildProcess)) throw Error('AGDF_MCP_EXECUTABLE_CLAIM_INVALID');
|
|
102
111
|
bound = true;
|
|
@@ -166,81 +175,6 @@ export function inspectMcpExecutableRoot({ root, expectedVersion } = {}) {
|
|
|
166
175
|
|
|
167
176
|
// Retirement checks the same verified package after its owned atomic rename.
|
|
168
177
|
// It must not accidentally inspect a new package at the former version path.
|
|
169
|
-
function inspectPackageRoot(root, expectedVersion) {
|
|
170
|
-
const markerPath = join(root, MARKER);
|
|
171
|
-
if (!existsSync(root)) return Object.freeze({ status: "absent", root, entrypoint: null, digest: null });
|
|
172
|
-
if (!lstatSync(root).isDirectory() || lstatSync(root).isSymbolicLink() || !existsSync(markerPath)) {
|
|
173
|
-
return Object.freeze({ status: "foreign", root, entrypoint: null, digest: null });
|
|
174
|
-
}
|
|
175
|
-
try {
|
|
176
|
-
const marker = readJson(markerPath, "AGDF_MCP_RUNTIME_MARKER_INVALID");
|
|
177
|
-
const packageRoot = join(root, "node_modules", "@agdf", "mcp-server");
|
|
178
|
-
const dispatcherRoot = join(root, "node_modules", "create-agdf");
|
|
179
|
-
const sdkServerRoot = join(root, "node_modules", "@modelcontextprotocol", "server");
|
|
180
|
-
const sdkCoreRoot = join(root, "node_modules", "@modelcontextprotocol", "core");
|
|
181
|
-
const sdkClientRoot = join(root, "node_modules", "@modelcontextprotocol", "client");
|
|
182
|
-
const sdkV1Root = join(root, "node_modules", "@modelcontextprotocol", "sdk");
|
|
183
|
-
const manifestPath = join(packageRoot, "package.json");
|
|
184
|
-
const dispatcherManifestPath = join(dispatcherRoot, "package.json");
|
|
185
|
-
if (marker.owner !== OWNER || marker.version !== expectedVersion
|
|
186
|
-
|| !existsSync(manifestPath) || !existsSync(dispatcherManifestPath)) {
|
|
187
|
-
return Object.freeze({ status: "mismatch", root, entrypoint: null, digest: null });
|
|
188
|
-
}
|
|
189
|
-
for (const ownedRoot of [packageRoot, dispatcherRoot, sdkServerRoot, sdkCoreRoot]) {
|
|
190
|
-
if (!existsSync(ownedRoot) || !lstatSync(ownedRoot).isDirectory() || lstatSync(ownedRoot).isSymbolicLink()) {
|
|
191
|
-
return Object.freeze({ status: "mismatch", root, entrypoint: null, digest: null });
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
const manifest = readJson(manifestPath, "AGDF_MCP_SERVER_MANIFEST_INVALID");
|
|
195
|
-
const dispatcherManifest = readJson(dispatcherManifestPath, "AGDF_MCP_DISPATCHER_MANIFEST_INVALID");
|
|
196
|
-
const sdkServerManifest = readJson(join(sdkServerRoot, "package.json"), "AGDF_MCP_SDK_MANIFEST_INVALID");
|
|
197
|
-
const sdkCoreManifest = readJson(join(sdkCoreRoot, "package.json"), "AGDF_MCP_SDK_MANIFEST_INVALID");
|
|
198
|
-
const entrypoint = join(packageRoot, "bin", "agdf-mcp.js");
|
|
199
|
-
const serverDigest = digestDirectory(packageRoot);
|
|
200
|
-
const dispatcherDigest = digestMcpDispatcherPackage(dispatcherRoot);
|
|
201
|
-
const sdkDigest = digestMcpSdkRuntime(root);
|
|
202
|
-
const valid = [1, 2].includes(marker.schema_version)
|
|
203
|
-
&& typeof marker.node_executable === "string"
|
|
204
|
-
&& isAbsolute(marker.node_executable)
|
|
205
|
-
&& manifest.name === "@agdf/mcp-server"
|
|
206
|
-
&& manifest.version === expectedVersion
|
|
207
|
-
&& manifest.dependencies?.["create-agdf"] === expectedVersion
|
|
208
|
-
&& manifest.dependencies?.["@modelcontextprotocol/server"] === "2.0.0"
|
|
209
|
-
&& manifest.engines?.node === ">=22"
|
|
210
|
-
&& dispatcherManifest.name === "create-agdf"
|
|
211
|
-
&& dispatcherManifest.version === expectedVersion
|
|
212
|
-
&& sdkServerManifest.name === "@modelcontextprotocol/server"
|
|
213
|
-
&& sdkServerManifest.version === "2.0.0"
|
|
214
|
-
&& sdkCoreManifest.name === "@modelcontextprotocol/core"
|
|
215
|
-
&& sdkCoreManifest.version === "2.0.0"
|
|
216
|
-
&& !existsSync(sdkClientRoot)
|
|
217
|
-
&& !existsSync(sdkV1Root)
|
|
218
|
-
&& existsSync(entrypoint)
|
|
219
|
-
&& lstatSync(entrypoint).isFile()
|
|
220
|
-
&& !lstatSync(entrypoint).isSymbolicLink()
|
|
221
|
-
&& marker.server_digest === serverDigest
|
|
222
|
-
&& marker.dispatcher_digest === dispatcherDigest
|
|
223
|
-
&& marker.sdk_digest === sdkDigest;
|
|
224
|
-
return Object.freeze({
|
|
225
|
-
status: valid ? "matched" : "mismatch",
|
|
226
|
-
version: expectedVersion,
|
|
227
|
-
root,
|
|
228
|
-
packageRoot,
|
|
229
|
-
dispatcherRoot,
|
|
230
|
-
markerPath,
|
|
231
|
-
entrypoint: valid ? entrypoint : null,
|
|
232
|
-
digest: serverDigest,
|
|
233
|
-
dispatcherDigest,
|
|
234
|
-
sdkDigest,
|
|
235
|
-
nodeExecutable: typeof marker.node_executable === "string" ? marker.node_executable : null,
|
|
236
|
-
references: Object.freeze(Array.isArray(marker.references) ? marker.references : []),
|
|
237
|
-
markerSchemaVersion: marker.schema_version,
|
|
238
|
-
sdkVerification: typeof marker.sdk_verification === "string" ? marker.sdk_verification : null,
|
|
239
|
-
});
|
|
240
|
-
} catch {
|
|
241
|
-
return Object.freeze({ status: "mismatch", root, entrypoint: null, digest: null });
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
178
|
|
|
245
179
|
// Names of all packages installed under root/node_modules, scoped included; npm's dot entries
|
|
246
180
|
// (.bin, .package-lock.json) are bookkeeping, not packages.
|
|
@@ -3,7 +3,7 @@ import { cpSync, existsSync, lstatSync, mkdirSync, readFileSync, readdirSync, re
|
|
|
3
3
|
import { dirname, isAbsolute, join, resolve } from "node:path";
|
|
4
4
|
import process from "node:process";
|
|
5
5
|
import { createHash, randomUUID } from 'node:crypto';
|
|
6
|
-
import { digestDirectory, digestPluginMcpDispatcherSource,
|
|
6
|
+
import { digestDirectory, digestPluginMcpDispatcherSource, mcpDispatcherRuntimeEntries, mcpDispatcherPackageExports } from "#agdf-core/runtime/plugin-provenance.js";
|
|
7
7
|
import { acquireMcpExecutableClaim, inspectMcpServerPackage, mcpPackageConstants, mcpRuntimeRetirementState, prepareMcpServerPackage, createMcpRuntimeRetirementTransaction } from "./package.js";
|
|
8
8
|
|
|
9
9
|
// Plugin-local AGDF MCP runtime shared by the hosts whose runtime plugin declares the server itself:
|
|
@@ -39,7 +39,7 @@ function copyPluginPackages({ pluginRoot, stage, version }) {
|
|
|
39
39
|
}
|
|
40
40
|
cpSync(serverSource, join(stage, "node_modules", "@agdf", "mcp-server"), { recursive: true });
|
|
41
41
|
const dispatcherRoot = join(stage, "node_modules", "create-agdf");
|
|
42
|
-
for (const entry of
|
|
42
|
+
for (const entry of mcpDispatcherRuntimeEntries(runtimePackage).filter((item) => item !== "package.json")) {
|
|
43
43
|
cpSync(join(runtimePackage, entry), join(dispatcherRoot, entry), { recursive: true });
|
|
44
44
|
}
|
|
45
45
|
writeFileSync(join(dispatcherRoot, "package.json"), `${JSON.stringify({
|
|
@@ -47,7 +47,7 @@ function copyPluginPackages({ pluginRoot, stage, version }) {
|
|
|
47
47
|
version,
|
|
48
48
|
private: true,
|
|
49
49
|
type: "module",
|
|
50
|
-
exports:
|
|
50
|
+
exports: mcpDispatcherPackageExports(runtimePackage),
|
|
51
51
|
imports: { "#agdf-core": "./runtime/core/lib/index.js", "#agdf-core/*": "./runtime/core/lib/*" },
|
|
52
52
|
}, null, 2)}\n`, "utf8");
|
|
53
53
|
}
|
|
@@ -250,8 +250,13 @@ export async function launchPluginMcpServer({
|
|
|
250
250
|
}
|
|
251
251
|
const { surface, dataRoot, cockpitDir, cockpitMode, prepareOnly } = invocation;
|
|
252
252
|
const publicationDeadline = performance.now() + CONCURRENT_PUBLICATION_WAIT_MS;
|
|
253
|
-
let runtime;
|
|
253
|
+
let runtime, waitingOwner;
|
|
254
254
|
try {
|
|
255
|
+
// Bootstrap only the existing SDK-free owner while this process performs
|
|
256
|
+
// preparation. It cannot claim or start a facade until the private message
|
|
257
|
+
// carries the successfully verified publication.
|
|
258
|
+
if (!prepareOnly && !startFacade && acquireClaim === acquireMcpExecutableClaim && ensure === ensurePluginMcpRuntime)
|
|
259
|
+
waitingOwner = startFacadeOwner({ surface, cockpitDir, cockpitMode, pluginRoot, env, publicationDeadline });
|
|
255
260
|
// Reject a damaged installed dispatcher before publication, claim acquisition
|
|
256
261
|
// or SDK execution. Its downstream resource context cannot qualify a facade;
|
|
257
262
|
// starting one first would correctly retain its unconfirmed executable use.
|
|
@@ -262,6 +267,7 @@ export async function launchPluginMcpServer({
|
|
|
262
267
|
}
|
|
263
268
|
runtime = ensure({ pluginRoot, dataRoot, env, publicationDeadline });
|
|
264
269
|
} catch (error) {
|
|
270
|
+
if (waitingOwner) { waitingOwner.stop(); await waitingOwner.settled.catch(() => {}); }
|
|
265
271
|
const code = /^AGDF_[A-Z_]+/.exec(error?.message ?? "")?.[0] ?? 'AGDF_MCP_PLUGIN_RUNTIME_FAILED';
|
|
266
272
|
stderr.write(`${launcherFailureLine(code, code === 'AGDF_MCP_PLUGIN_RUNTIME_FAILED' ? 'preparation' : undefined)}\n`);
|
|
267
273
|
process.exitCode = 1;
|
|
@@ -278,7 +284,11 @@ export async function launchPluginMcpServer({
|
|
|
278
284
|
// The stable launcher directly owns the facade process. It retains its exact
|
|
279
285
|
// executable before fork and releases only after orderly teardown AND exit.
|
|
280
286
|
if (!startFacade && acquireClaim === acquireMcpExecutableClaim) {
|
|
281
|
-
try {
|
|
287
|
+
try {
|
|
288
|
+
const owner = waitingOwner ?? startFacadeOwner({ runtime, surface, cockpitDir, cockpitMode, pluginRoot, env, publicationDeadline });
|
|
289
|
+
waitingOwner?.activate(runtime);
|
|
290
|
+
return await owner.settled;
|
|
291
|
+
}
|
|
282
292
|
catch (error) { const code = Object.hasOwn(LAUNCHER_FAILURES, error?.message) ? error.message : 'AGDF_MCP_PLUGIN_RUNTIME_FAILED';
|
|
283
293
|
stderr.write(`${launcherFailureLine(code, code === 'AGDF_MCP_PLUGIN_RUNTIME_FAILED' ? 'facade' : undefined)}\n`); process.exitCode = 1; return null; }
|
|
284
294
|
}
|
|
@@ -326,15 +336,21 @@ export function supervisePluginMcpFacade({ runtime, surface, cockpitDir, cockpit
|
|
|
326
336
|
function startFacadeOwner({ runtime, surface, cockpitDir, cockpitMode, pluginRoot, env, publicationDeadline }) {
|
|
327
337
|
const token = randomUUID();
|
|
328
338
|
const deadline = (process.hrtime.bigint() + BigInt(Math.floor(Math.max(0, publicationDeadline - performance.now()) * 1e6))).toString();
|
|
329
|
-
|
|
339
|
+
let activate, stop;
|
|
340
|
+
const settled = new Promise((resolve, reject) => {
|
|
330
341
|
const child = fork(join(pluginRoot, 'runtime/create-agdf/lib/mcp-lifecycle/facade-owner-entry.js'),
|
|
331
|
-
[JSON.stringify({ runtime, surface, cockpitDir, cockpitMode, pluginRoot, token, deadline_ns: deadline })],
|
|
342
|
+
[JSON.stringify({ runtime, await_runtime: runtime === undefined, surface, cockpitDir, cockpitMode, pluginRoot, token, deadline_ns: deadline })],
|
|
332
343
|
{ env, detached: true, windowsHide: true, stdio: ['inherit', 'inherit', 'inherit', 'ipc'], execArgv: [] });
|
|
333
|
-
let confirmed = false, failure;
|
|
334
|
-
const
|
|
344
|
+
let confirmed = false, failure, ready = runtime !== undefined, pending, stopped = false;
|
|
345
|
+
const send = message => { if (child.connected) child.send(message, error => { if (error) reject(error); }); };
|
|
346
|
+
stop = () => { stopped = true; if (ready && child.connected) child.send({ kind: 'owner_stop', token }, () => {}); };
|
|
347
|
+
activate = publication => { pending = publication; if (ready && !stopped) send({ kind: 'owner_start', token, runtime: pending }); };
|
|
335
348
|
process.once('SIGTERM', stop); process.once('SIGINT', stop);
|
|
336
349
|
const detach = () => { process.off('SIGTERM', stop); process.off('SIGINT', stop); };
|
|
337
350
|
child.on('message', message => {
|
|
351
|
+
if (message?.kind === 'owner_ready' && message.token === token && !ready) {
|
|
352
|
+
ready = true; if (stopped) stop(); else if (pending) activate(pending);
|
|
353
|
+
}
|
|
338
354
|
if (message?.kind === 'owner_closed' && message.token === token && message.confirmed === true) confirmed = true;
|
|
339
355
|
if (message?.kind === 'owner_failed' && message.token === token && Object.hasOwn(LAUNCHER_FAILURES, message.code)) failure = message.code;
|
|
340
356
|
});
|
|
@@ -344,6 +360,10 @@ function startFacadeOwner({ runtime, surface, cockpitDir, cockpitMode, pluginRoo
|
|
|
344
360
|
else reject(Error(failure ?? 'AGDF_MCP_FACADE_CLOSE_UNCONFIRMED'));
|
|
345
361
|
});
|
|
346
362
|
});
|
|
363
|
+
// Preparation is synchronous; the owner can fail first while its promise is
|
|
364
|
+
// intentionally not awaited yet. Keep that rejection observed in both phases.
|
|
365
|
+
settled.catch(() => {});
|
|
366
|
+
return Object.freeze({ settled, activate: publication => activate(publication), stop: () => stop() });
|
|
347
367
|
}
|
|
348
368
|
|
|
349
369
|
export function claudePluginDataRoot({ claudeConfigDir, pluginId = "agdf@agdf" }) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { mcpQualificationFields, validateMcpQualificationRecord } from "./evidence.js";
|
|
2
|
+
import { SKILL_DISPATCH_FUNCTION_DEFINITION } from '#agdf-core/skill-dispatch/contract.js';
|
|
2
3
|
|
|
3
4
|
const CAPABILITY_STATES = new Set(["supported", "manual_compatible", "unavailable", "unsupported", "unverified"]);
|
|
4
5
|
const REGISTRATION_STATES = new Set(["absent", "matched", "foreign", "owned_mismatch", "precedence_conflict", "invalid"]);
|
|
@@ -26,7 +27,7 @@ export function validateMcpCapabilityProfile(profile, { expectedVersion } = {})
|
|
|
26
27
|
if (profile?.tool?.semantic_owner !== "packages/core/lib/skill-dispatch/contract.js") errors.push("semantic_owner");
|
|
27
28
|
if (Object.hasOwn(profile?.tool ?? {}, "description") || Object.hasOwn(profile?.tool ?? {}, "input_schema")
|
|
28
29
|
|| Object.hasOwn(profile?.tool ?? {}, "output_schema")) errors.push("duplicated_tool_semantics");
|
|
29
|
-
if (profile?.tool?.authorizes !== false || profile?.tool?.read_only !==
|
|
30
|
+
if (profile?.tool?.authorizes !== false || profile?.tool?.read_only !== SKILL_DISPATCH_FUNCTION_DEFINITION.annotations.readOnlyHint) errors.push("tool_boundary");
|
|
30
31
|
if (profile?.package?.name !== "@agdf/mcp-server" || profile?.package?.sdk_server !== "2.0.0") errors.push("package");
|
|
31
32
|
if (profile?.lifecycle?.owner !== "create-agdf" || profile?.lifecycle?.default_scope !== "project") errors.push("lifecycle");
|
|
32
33
|
if (profile?.lifecycle?.result_contract_version !== 2) errors.push("result_contract_version");
|