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.
Files changed (847) hide show
  1. package/README.md +154 -192
  2. package/generated/.agdf/control/README.md +31 -110
  3. package/generated/.agdf/control/planned-urs.md +95 -0
  4. package/generated/.agdf/control/templates/RUN_STATE.md +15 -64
  5. package/generated/.agdf/control/templates/artefacts/SD.md +7 -1
  6. package/generated/.agdf/control/templates/artefacts/TP.md +4 -0
  7. package/generated/.agdf/control/templates/artefacts/UR.md +1 -1
  8. package/generated/.agents/plugins/marketplace.json +12 -0
  9. package/generated/.opencode/agdf-agent-router.md +3 -3
  10. package/generated/.opencode/agdf-interaction-locales.json +2668 -2682
  11. package/generated/.opencode/contracts/closeout.md +1 -1
  12. package/generated/.opencode/contracts/control-scaffold.md +63 -46
  13. package/generated/.opencode/contracts/gate-artifact-preparation.md +58 -48
  14. package/generated/.opencode/contracts/gate-transition.md +5 -6
  15. package/generated/.opencode/contracts/interaction.md +43 -126
  16. package/generated/.opencode/contracts/modes.md +4 -3
  17. package/generated/.opencode/contracts/prd-definition.md +6 -6
  18. package/generated/.opencode/contracts/quality.md +81 -6
  19. package/generated/.opencode/contracts/request-activation.md +9 -8
  20. package/generated/.opencode/contracts/sd-definition.md +19 -3
  21. package/generated/.opencode/contracts/task-target-resolution.md +24 -0
  22. package/generated/.opencode/contracts/tp-definition.md +7 -1
  23. package/generated/.opencode/contracts/ur-definition.md +41 -7
  24. package/generated/.opencode/skills/agdf-brownfield-analysis/SKILL.md +8 -5
  25. package/generated/.opencode/skills/agdf-clean-implementation-review/SKILL.md +5 -2
  26. package/generated/.opencode/skills/agdf-code-review/SKILL.md +7 -3
  27. package/generated/.opencode/skills/agdf-delivery-closeout/SKILL.md +3 -2
  28. package/generated/.opencode/skills/agdf-delivery-path-search/SKILL.md +3 -2
  29. package/generated/.opencode/skills/agdf-gate-check/SKILL.md +35 -31
  30. package/generated/.opencode/skills/agdf-prd-definition/SKILL.md +3 -2
  31. package/generated/.opencode/skills/agdf-qa-gate/SKILL.md +13 -11
  32. package/generated/.opencode/skills/agdf-release-or/SKILL.md +8 -5
  33. package/generated/.opencode/skills/agdf-sd-definition/SKILL.md +5 -3
  34. package/generated/.opencode/skills/agdf-task-plan-review/SKILL.md +5 -2
  35. package/generated/.opencode/skills/agdf-tp-definition/SKILL.md +5 -3
  36. package/generated/.opencode/skills/agdf-ur-definition/SKILL.md +12 -4
  37. package/generated/.opencode/skills/agdf-ux-intent-definition/SKILL.md +5 -4
  38. package/generated/plugins/agdf/.claude-plugin/plugin.json +3 -2
  39. package/generated/plugins/agdf/.codex-plugin/plugin.json +1 -1
  40. package/generated/plugins/agdf/companion/assignment.mjs +65 -0
  41. package/generated/plugins/agdf/companion/companion.json +4 -0
  42. package/generated/plugins/agdf/companion/core.mjs +16 -0
  43. package/generated/plugins/agdf/companion/figure.mjs +137 -0
  44. package/generated/plugins/agdf/companion/gate-bar.mjs +54 -0
  45. package/generated/plugins/agdf/companion/hooks.json +3 -0
  46. package/generated/plugins/agdf/companion/locales.json +200 -0
  47. package/generated/plugins/agdf/companion/localization.mjs +89 -0
  48. package/generated/plugins/agdf/companion/notice.mjs +90 -0
  49. package/generated/plugins/agdf/companion/persistence.mjs +36 -0
  50. package/generated/plugins/agdf/companion/register.mjs +444 -0
  51. package/generated/plugins/agdf/companion/run-state.mjs +110 -0
  52. package/generated/plugins/agdf/companion/state.mjs +48 -0
  53. package/generated/plugins/agdf/companion/view.mjs +84 -0
  54. package/generated/plugins/agdf/control/README.md +31 -110
  55. package/generated/plugins/agdf/control/planned-urs.md +95 -0
  56. package/generated/plugins/agdf/control/templates/RUN_STATE.md +15 -64
  57. package/generated/plugins/agdf/control/templates/artefacts/SD.md +7 -1
  58. package/generated/plugins/agdf/control/templates/artefacts/TP.md +4 -0
  59. package/generated/plugins/agdf/control/templates/artefacts/UR.md +1 -1
  60. package/generated/plugins/agdf/mcp/server/README.md +124 -12
  61. package/generated/plugins/agdf/mcp/server/package.json +12 -7
  62. package/generated/plugins/agdf/mcp/server/src/generation-entry.js +3 -85
  63. package/generated/plugins/agdf/mcp/server/src/generation-protocol.js +2 -44
  64. package/generated/plugins/agdf/mcp/server/src/generation-runtime.js +94 -0
  65. package/generated/plugins/agdf/mcp/server/src/generation-thread-entry.js +8 -0
  66. package/generated/plugins/agdf/mcp/server/src/generation.js +64 -20
  67. package/generated/plugins/agdf/mcp/server/src/main.js +42 -10
  68. package/generated/plugins/agdf/mcp/server/src/server.js +44 -22
  69. package/generated/plugins/agdf/mcp/server/src/stdio-output.js +42 -0
  70. package/generated/plugins/agdf/mcp/server/src/ui-capability.js +49 -1
  71. package/generated/plugins/agdf/mcp/server/src/worker-entry.js +2 -2
  72. package/generated/plugins/agdf/mcp/server/src/worker.js +53 -7
  73. package/generated/plugins/agdf/mcp/server/ui/cockpit.html +31 -31
  74. package/generated/plugins/agdf/mcp/server/ui/decision-manifest.json +3 -3
  75. package/generated/plugins/agdf/mcp/server/ui/decision.html +36 -36
  76. package/generated/plugins/agdf/mcp/server/ui/manifest.json +4 -4
  77. package/generated/plugins/agdf/meta/agdf-agent-router.md +3 -3
  78. package/generated/plugins/agdf/meta/agdf-defaults.json +9 -0
  79. package/generated/plugins/agdf/meta/agdf-defaults.schema.json +20 -0
  80. package/generated/plugins/agdf/meta/agdf-interaction-locales.json +2668 -2682
  81. package/generated/plugins/agdf/meta/agdf-mcp-capability.json +2 -2
  82. package/generated/plugins/agdf/meta/agdf-plugin.definition.json +12 -5
  83. package/generated/plugins/agdf/meta/contracts/closeout.md +1 -1
  84. package/generated/plugins/agdf/meta/contracts/control-scaffold.md +63 -46
  85. package/generated/plugins/agdf/meta/contracts/gate-artifact-preparation.md +58 -48
  86. package/generated/plugins/agdf/meta/contracts/gate-transition.md +5 -6
  87. package/generated/plugins/agdf/meta/contracts/interaction.md +43 -126
  88. package/generated/plugins/agdf/meta/contracts/modes.md +4 -3
  89. package/generated/plugins/agdf/meta/contracts/prd-definition.md +6 -6
  90. package/generated/plugins/agdf/meta/contracts/quality.md +81 -6
  91. package/generated/plugins/agdf/meta/contracts/request-activation.md +9 -8
  92. package/generated/plugins/agdf/meta/contracts/sd-definition.md +19 -3
  93. package/generated/plugins/agdf/meta/contracts/task-target-resolution.md +24 -0
  94. package/generated/plugins/agdf/meta/contracts/tp-definition.md +7 -1
  95. package/generated/plugins/agdf/meta/contracts/ur-definition.md +41 -7
  96. package/generated/plugins/agdf/meta/copilot-payload-baseline.json +3 -3
  97. package/generated/plugins/agdf/meta/distribution-profile-history.json +14 -0
  98. package/generated/plugins/agdf/runtime/agdf-session-check.js +25 -21
  99. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-defaults.json +9 -0
  100. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-defaults.schema.json +20 -0
  101. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-interaction-locales.json +2668 -2682
  102. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-plugin.definition.json +12 -5
  103. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/closeout.md +1 -1
  104. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/control-scaffold.md +63 -46
  105. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/gate-artifact-preparation.md +58 -48
  106. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/gate-transition.md +5 -6
  107. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/interaction.md +43 -126
  108. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/modes.md +4 -3
  109. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/prd-definition.md +6 -6
  110. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/quality.md +81 -6
  111. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/request-activation.md +9 -8
  112. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/sd-definition.md +19 -3
  113. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/task-target-resolution.md +24 -0
  114. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/tp-definition.md +7 -1
  115. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/ur-definition.md +41 -7
  116. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/codex-document-command.js +195 -0
  117. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/command-registry.js +82 -148
  118. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/control-maintenance-command.js +8 -37
  119. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/parse-args.js +98 -16
  120. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/planned-command.js +55 -0
  121. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/project-read-command.js +35 -0
  122. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/run-command-aliases.js +116 -0
  123. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/runtime-context.js +1 -59
  124. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/validation-handlers.js +33 -103
  125. package/generated/plugins/agdf/runtime/create-agdf/lib/control-evaluation/git-observation.js +7 -5
  126. package/generated/plugins/agdf/runtime/create-agdf/lib/control-maintenance/startup.js +2 -2
  127. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-decision-protocol.js +40 -0
  128. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-dispatch-runtime.js +71 -298
  129. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-entry.js +3 -24
  130. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-owner-entry.js +31 -15
  131. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-runtime.js +29 -0
  132. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-thread-entry.js +11 -0
  133. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/owner-client.js +79 -0
  134. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/package.js +14 -80
  135. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/plugin-runtime.js +29 -9
  136. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/thread-owner.js +164 -0
  137. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-owner-protocol.js +1 -0
  138. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-protocol-runtime.js +308 -0
  139. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-worker-runtime.js +152 -0
  140. package/generated/plugins/agdf/runtime/create-agdf/lib/runtime/control-command-service.js +22 -7
  141. package/generated/plugins/agdf/runtime/create-agdf/lib/runtime/control-context.js +8 -1
  142. package/generated/plugins/agdf/runtime/create-agdf/lib/runtime/validator-application.js +2 -2
  143. package/generated/plugins/agdf/runtime/create-agdf/package.json +5 -1
  144. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/closeout-readiness.js +10 -2
  145. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/decision-content-placeholder.js +9 -0
  146. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/decision-content-readiness.js +2 -7
  147. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/definition-sources.js +3 -2
  148. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/delivery-map.js +2 -12
  149. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/doctor.js +162 -172
  150. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-check.js +10 -9
  151. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-policy-inputs.js +11 -0
  152. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-policy-pure.js +446 -0
  153. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-policy.js +3 -434
  154. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/next-action.js +2 -0
  155. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/parent-reconciliation.js +2 -1
  156. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/qa-follow-up.js +2 -1
  157. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/required-files.js +9 -7
  158. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-state-policy.js +1 -1
  159. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-state.js +15 -9
  160. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-step-policy.js +2 -1
  161. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-work-summary.js +6 -4
  162. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/shared-value.js +7 -0
  163. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/shared.js +5 -254
  164. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/tp-planning.js +3 -2
  165. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/ur-readiness.js +7 -2
  166. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/verified-change.js +11 -9
  167. 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
  168. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/artifact-readiness.js +5 -3
  169. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/authoring-inputs.js +110 -0
  170. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-archive.js +53 -0
  171. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-context.js +2 -1
  172. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-contract.js +11 -4
  173. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-list.d.ts +10 -6
  174. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-list.js +32 -41
  175. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-session.js +8 -8
  176. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-work.js +33 -0
  177. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit.js +75 -44
  178. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/contract.js +142 -58
  179. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/decision-session.js +53 -11
  180. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/doctor-observation.js +91 -0
  181. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/project-operation-call.js +5 -0
  182. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/project-state.js +48 -0
  183. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/result.js +61 -0
  184. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/selection.js +9 -3
  185. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/service.js +142 -72
  186. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/compatibility.js +42 -132
  187. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/contract.js +5 -5
  188. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/presentation.js +27 -119
  189. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/service.js +9 -37
  190. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-read/cockpit-pool.js +25 -9
  191. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-read/cockpit-worker.js +4 -3
  192. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-read/doctor-reader.js +92 -0
  193. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-read/doctor-worker.js +11 -0
  194. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-read/fs.js +18 -0
  195. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-read/snapshot.js +68 -17
  196. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/aggregate.js +3 -1
  197. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/approval-command.js +13 -10
  198. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/approval-operations.js +10 -7
  199. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/artefact-binding-proof.js +12 -20
  200. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/artefact-bindings.js +10 -7
  201. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/canonical-initialization.js +761 -0
  202. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/control-layout.js +183 -0
  203. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/decision-action-contract.js +10 -1
  204. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/decision-action-service.js +24 -3
  205. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/decision-material-contract.js +2 -1
  206. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/evidence-bindings.js +7 -7
  207. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/git-identity.js +86 -0
  208. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/index.js +0 -1
  209. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/input-resolution.js +99 -0
  210. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-entry.js +273 -0
  211. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-handoff.js +174 -0
  212. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-inventory.js +90 -0
  213. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-origin-reader.js +48 -0
  214. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-origin.js +40 -0
  215. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/presentation-decision.js +12 -7
  216. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/presentation-delivery.js +90 -0
  217. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/preview-render.js +5 -2
  218. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/preview-review.js +3 -2
  219. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/preview-snapshot.js +9 -6
  220. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/recording-formats.js +12 -16
  221. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-artefact-recording.js +54 -66
  222. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-closure.js +343 -0
  223. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-command-contract.js +33 -119
  224. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-command-schema.js +508 -0
  225. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-command-service.js +198 -34
  226. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-create-command.js +60 -0
  227. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-identity.d.ts +14 -0
  228. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-identity.js +40 -0
  229. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-input-resolution.js +72 -0
  230. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-inventory-reader.js +31 -0
  231. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-inventory.js +179 -0
  232. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-material.js +211 -0
  233. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-mutation.js +51 -0
  234. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operation-identity.js +2 -1
  235. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operation-proof.js +7 -4
  236. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operation-status.js +20 -4
  237. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operations.js +70 -13
  238. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-owned-outputs.js +21 -9
  239. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-presentation-envelope.js +25 -33
  240. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-presentation-render.js +9 -8
  241. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-presentation.js +45 -21
  242. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-recording.js +10 -179
  243. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-revision-boundary.js +7 -21
  244. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-revision-history.js +23 -16
  245. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-revision.js +84 -161
  246. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-seal-compute.js +19 -44
  247. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-seal.js +6 -1
  248. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-source-revisions.js +19 -18
  249. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-document.js +110 -42
  250. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-edits.js +13 -5
  251. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-parser.js +14 -6
  252. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-reader.js +27 -18
  253. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-repository.js +112 -48
  254. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-resolver.js +12 -15
  255. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-writer.js +21 -377
  256. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-step-pending.js +2 -1
  257. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-step-transaction.js +125 -114
  258. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-steps.js +136 -248
  259. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-store-inspection.js +14 -2
  260. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-verified-change.js +81 -0
  261. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-work-summary-shape.d.ts +1 -0
  262. 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
  263. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/delivery-continuation/service.js +5 -66
  264. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/delivery-path-search/persistence.js +26 -8
  265. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/delivery-path-search/state-adapter.js +1 -1
  266. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/index.js +14 -6
  267. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/interaction-catalog.js +3 -3
  268. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/interaction-presentation.js +30 -12
  269. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/mcp-input-hints.js +46 -0
  270. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/mcp-input-resolution.js +98 -0
  271. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/mcp-input-schema.js +15 -0
  272. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/mcp-resource-contract.js +1 -1
  273. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/mcp-tool-errors.js +31 -15
  274. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/owned-file-lock.js +266 -0
  275. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/owner-placement.js +50 -0
  276. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/resources/canonical-init-plan.js +34 -0
  277. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/resources/configuration.js +92 -0
  278. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/resources/context.js +7 -11
  279. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/resources/language-preference.js +59 -0
  280. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/runtime/mcp-owner-protocol.js +102 -0
  281. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/runtime/plugin-provenance.js +173 -18
  282. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/compact-continuation.js +3 -3
  283. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/contract.js +28 -9
  284. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/delivery-intake.js +11 -5
  285. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/delivery-run-assignment.js +6 -10
  286. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/mcp-continuation.js +64 -0
  287. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/prd-definition.js +14 -5
  288. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/sd-definition.js +2 -1
  289. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/service.js +49 -14
  290. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/tp-definition.js +2 -1
  291. package/generated/plugins/agdf/runtime/runtime-manifest.json +2 -2
  292. package/generated/plugins/agdf/scripts/check-runtime-integrity.mjs +60 -42
  293. package/generated/plugins/agdf/scripts/instruction-footprint.mjs +5 -5
  294. package/generated/plugins/agdf/skills/brownfield-analysis/SKILL.md +8 -5
  295. package/generated/plugins/agdf/skills/clean-implementation-review/SKILL.md +5 -2
  296. package/generated/plugins/agdf/skills/code-review/SKILL.md +7 -3
  297. package/generated/plugins/agdf/skills/delivery-closeout/SKILL.md +3 -2
  298. package/generated/plugins/agdf/skills/delivery-path-search/SKILL.md +3 -2
  299. package/generated/plugins/agdf/skills/gate-check/SKILL.md +35 -31
  300. package/generated/plugins/agdf/skills/prd-definition/SKILL.md +3 -2
  301. package/generated/plugins/agdf/skills/qa-gate/SKILL.md +13 -11
  302. package/generated/plugins/agdf/skills/release-or/SKILL.md +8 -5
  303. package/generated/plugins/agdf/skills/sd-definition/SKILL.md +5 -3
  304. package/generated/plugins/agdf/skills/task-plan-review/SKILL.md +5 -2
  305. package/generated/plugins/agdf/skills/tp-definition/SKILL.md +5 -3
  306. package/generated/plugins/agdf/skills/ur-definition/SKILL.md +12 -4
  307. package/generated/plugins/agdf/skills/ux-intent-definition/SKILL.md +5 -4
  308. package/generated/plugins/agdf/submission/openai/availability.md +1 -1
  309. package/generated/plugins/agdf/submission/openai/capability-matrix.json +1 -1
  310. package/generated/plugins/agdf/submission/openai/release-notes.md +9 -1
  311. package/generated/plugins/agdf/submission/openai/reviewer-cases.json +1 -1
  312. package/generated/plugins/agdf-planning/.codex-plugin/plugin.json +40 -0
  313. package/generated/plugins/agdf-planning/README.md +21 -0
  314. package/generated/plugins/agdf-planning/assets/agdf-icon.svg +16 -0
  315. package/generated/plugins/agdf-planning/assets/agdf-logo.svg +16 -0
  316. package/generated/plugins/agdf-planning/meta/agdf-planning.definition.json +9 -0
  317. package/generated/plugins/agdf-planning/plugin.json +45 -0
  318. package/generated/plugins/agdf-planning/skills/planning/SKILL.md +56 -0
  319. package/generated/plugins/copilot/agdf/.agdf-payload-inventory.json +886 -483
  320. package/generated/plugins/copilot/agdf/control/README.md +31 -110
  321. package/generated/plugins/copilot/agdf/control/planned-urs.md +95 -0
  322. package/generated/plugins/copilot/agdf/control/templates/RUN_STATE.md +15 -64
  323. package/generated/plugins/copilot/agdf/control/templates/artefacts/SD.md +7 -1
  324. package/generated/plugins/copilot/agdf/control/templates/artefacts/TP.md +4 -0
  325. package/generated/plugins/copilot/agdf/control/templates/artefacts/UR.md +1 -1
  326. package/generated/plugins/copilot/agdf/mcp/server/README.md +124 -12
  327. package/generated/plugins/copilot/agdf/mcp/server/package.json +12 -7
  328. package/generated/plugins/copilot/agdf/mcp/server/src/generation-entry.js +3 -85
  329. package/generated/plugins/copilot/agdf/mcp/server/src/generation-protocol.js +2 -44
  330. package/generated/plugins/copilot/agdf/mcp/server/src/generation-runtime.js +94 -0
  331. package/generated/plugins/copilot/agdf/mcp/server/src/generation-thread-entry.js +8 -0
  332. package/generated/plugins/copilot/agdf/mcp/server/src/generation.js +64 -20
  333. package/generated/plugins/copilot/agdf/mcp/server/src/main.js +42 -10
  334. package/generated/plugins/copilot/agdf/mcp/server/src/server.js +44 -22
  335. package/generated/plugins/copilot/agdf/mcp/server/src/stdio-output.js +42 -0
  336. package/generated/plugins/copilot/agdf/mcp/server/src/ui-capability.js +49 -1
  337. package/generated/plugins/copilot/agdf/mcp/server/src/worker-entry.js +2 -2
  338. package/generated/plugins/copilot/agdf/mcp/server/src/worker.js +53 -7
  339. package/generated/plugins/copilot/agdf/meta/agdf-agent-router.md +3 -3
  340. package/generated/plugins/copilot/agdf/meta/agdf-plugin.definition.json +12 -5
  341. package/generated/plugins/copilot/agdf/meta/distribution-profile-history.json +14 -0
  342. package/generated/plugins/copilot/agdf/plugin.json +1 -1
  343. package/generated/plugins/copilot/agdf/runtime/agdf-session-check.js +25 -21
  344. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-defaults.json +9 -0
  345. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-defaults.schema.json +20 -0
  346. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-interaction-locales.json +2668 -2682
  347. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-plugin.definition.json +12 -5
  348. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/closeout.md +1 -1
  349. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/control-scaffold.md +63 -46
  350. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/gate-artifact-preparation.md +58 -48
  351. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/gate-transition.md +5 -6
  352. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/interaction.md +43 -126
  353. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/modes.md +4 -3
  354. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/prd-definition.md +6 -6
  355. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/quality.md +81 -6
  356. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/request-activation.md +9 -8
  357. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/sd-definition.md +19 -3
  358. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/task-target-resolution.md +24 -0
  359. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/tp-definition.md +7 -1
  360. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/ur-definition.md +41 -7
  361. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/codex-document-command.js +195 -0
  362. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/command-registry.js +82 -148
  363. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/control-maintenance-command.js +8 -37
  364. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/parse-args.js +98 -16
  365. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/planned-command.js +55 -0
  366. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/project-read-command.js +35 -0
  367. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/run-command-aliases.js +116 -0
  368. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/runtime-context.js +1 -59
  369. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/validation-handlers.js +33 -103
  370. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/control-evaluation/git-observation.js +7 -5
  371. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/control-maintenance/startup.js +2 -2
  372. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-decision-protocol.js +40 -0
  373. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-dispatch-runtime.js +71 -298
  374. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-entry.js +3 -24
  375. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-owner-entry.js +31 -15
  376. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-runtime.js +29 -0
  377. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-thread-entry.js +11 -0
  378. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/owner-client.js +79 -0
  379. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/package.js +14 -80
  380. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/plugin-runtime.js +29 -9
  381. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/thread-owner.js +164 -0
  382. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-owner-protocol.js +1 -0
  383. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-protocol-runtime.js +308 -0
  384. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-worker-runtime.js +152 -0
  385. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/runtime/control-command-service.js +22 -7
  386. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/runtime/control-context.js +8 -1
  387. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/runtime/validator-application.js +2 -2
  388. package/generated/plugins/copilot/agdf/runtime/create-agdf/package.json +5 -1
  389. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/closeout-readiness.js +10 -2
  390. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/decision-content-placeholder.js +9 -0
  391. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/decision-content-readiness.js +2 -7
  392. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/definition-sources.js +3 -2
  393. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/delivery-map.js +2 -12
  394. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/doctor.js +162 -172
  395. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-check.js +10 -9
  396. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-policy-inputs.js +11 -0
  397. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-policy-pure.js +446 -0
  398. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-policy.js +3 -434
  399. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/next-action.js +2 -0
  400. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/parent-reconciliation.js +2 -1
  401. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/qa-follow-up.js +2 -1
  402. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/required-files.js +9 -7
  403. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-state-policy.js +1 -1
  404. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-state.js +15 -9
  405. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-step-policy.js +2 -1
  406. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-work-summary.js +6 -4
  407. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/shared-value.js +7 -0
  408. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/shared.js +5 -254
  409. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/tp-planning.js +3 -2
  410. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/ur-readiness.js +7 -2
  411. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/verified-change.js +11 -9
  412. 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
  413. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/artifact-readiness.js +5 -3
  414. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/authoring-inputs.js +110 -0
  415. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-archive.js +53 -0
  416. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/contract.js +142 -58
  417. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/doctor-observation.js +91 -0
  418. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/project-operation-call.js +5 -0
  419. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/project-state.js +48 -0
  420. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/result.js +61 -0
  421. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/selection.js +9 -3
  422. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/service.js +142 -72
  423. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/compatibility.js +42 -132
  424. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/contract.js +5 -5
  425. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/presentation.js +27 -119
  426. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/service.js +9 -37
  427. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-read/cockpit-pool.js +121 -0
  428. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-read/doctor-reader.js +92 -0
  429. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-read/doctor-worker.js +11 -0
  430. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-read/fs.js +18 -0
  431. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-read/snapshot.js +68 -17
  432. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/aggregate.js +3 -1
  433. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/approval-command.js +13 -10
  434. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/approval-operations.js +10 -7
  435. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/artefact-binding-proof.js +12 -20
  436. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/artefact-bindings.js +10 -7
  437. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/canonical-initialization.js +761 -0
  438. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/control-layout.js +183 -0
  439. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/decision-material-contract.js +2 -1
  440. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/evidence-bindings.js +7 -7
  441. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/git-identity.js +86 -0
  442. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/index.js +0 -1
  443. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/input-resolution.js +99 -0
  444. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-entry.js +273 -0
  445. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-handoff.js +174 -0
  446. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-inventory.js +90 -0
  447. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-origin-reader.js +48 -0
  448. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-origin.js +40 -0
  449. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/presentation-decision.js +12 -7
  450. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/presentation-delivery.js +90 -0
  451. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/preview-render.js +5 -2
  452. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/preview-review.js +3 -2
  453. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/preview-snapshot.js +9 -6
  454. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/recording-formats.js +12 -16
  455. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-artefact-recording.js +54 -66
  456. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-closure.js +343 -0
  457. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-command-contract.js +33 -119
  458. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-command-schema.js +508 -0
  459. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-command-service.js +198 -34
  460. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-create-command.js +60 -0
  461. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-identity.d.ts +14 -0
  462. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-identity.js +40 -0
  463. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-input-resolution.js +72 -0
  464. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-inventory-reader.js +31 -0
  465. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-inventory.js +179 -0
  466. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-material.js +211 -0
  467. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-mutation.js +51 -0
  468. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operation-identity.js +2 -1
  469. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operation-proof.js +7 -4
  470. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operation-status.js +20 -4
  471. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operations.js +70 -13
  472. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-owned-outputs.js +21 -9
  473. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-presentation-envelope.js +25 -33
  474. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-presentation-render.js +9 -8
  475. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-presentation.js +45 -21
  476. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-recording.js +10 -179
  477. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-revision-boundary.js +7 -21
  478. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-revision-history.js +23 -16
  479. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-revision.js +84 -161
  480. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-seal-compute.js +19 -44
  481. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-seal.js +6 -1
  482. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-source-revisions.js +19 -18
  483. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-document.js +110 -42
  484. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-edits.js +13 -5
  485. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-parser.js +14 -6
  486. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-reader.js +27 -18
  487. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-repository.js +112 -48
  488. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-resolver.js +12 -15
  489. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-writer.js +21 -377
  490. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-step-pending.js +2 -1
  491. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-step-transaction.js +125 -114
  492. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-steps.js +136 -248
  493. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-store-inspection.js +14 -2
  494. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-verified-change.js +81 -0
  495. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-work-summary-shape.d.ts +1 -0
  496. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/{backlog-summary-shape.js → run-work-summary-shape.js} +7 -19
  497. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/delivery-continuation/service.js +5 -66
  498. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/delivery-path-search/persistence.js +26 -8
  499. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/delivery-path-search/state-adapter.js +1 -1
  500. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/index.js +14 -6
  501. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/interaction-catalog.js +3 -3
  502. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/interaction-presentation.js +30 -12
  503. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/mcp-input-hints.js +46 -0
  504. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/mcp-input-resolution.js +98 -0
  505. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/mcp-input-schema.js +15 -0
  506. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/mcp-resource-contract.js +1 -1
  507. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/mcp-tool-errors.js +31 -15
  508. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/owned-file-lock.js +266 -0
  509. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/owner-placement.js +50 -0
  510. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/resources/canonical-init-plan.js +34 -0
  511. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/resources/configuration.js +92 -0
  512. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/resources/context.js +7 -11
  513. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/resources/language-preference.js +59 -0
  514. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/runtime/mcp-owner-protocol.js +102 -0
  515. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/runtime/plugin-provenance.js +173 -18
  516. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/compact-continuation.js +3 -3
  517. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/contract.js +28 -9
  518. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/delivery-intake.js +11 -5
  519. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/delivery-run-assignment.js +6 -10
  520. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/mcp-continuation.js +64 -0
  521. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/prd-definition.js +14 -5
  522. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/sd-definition.js +2 -1
  523. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/service.js +49 -14
  524. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/tp-definition.js +2 -1
  525. package/generated/plugins/copilot/agdf/runtime/runtime-manifest.json +2 -2
  526. package/generated/plugins/copilot/agdf/skills/agdf-brownfield-analysis/SKILL.md +8 -5
  527. package/generated/plugins/copilot/agdf/skills/agdf-clean-implementation-review/SKILL.md +5 -2
  528. package/generated/plugins/copilot/agdf/skills/agdf-code-review/SKILL.md +7 -3
  529. package/generated/plugins/copilot/agdf/skills/agdf-delivery-closeout/SKILL.md +3 -2
  530. package/generated/plugins/copilot/agdf/skills/agdf-delivery-path-search/SKILL.md +3 -2
  531. package/generated/plugins/copilot/agdf/skills/agdf-gate-check/SKILL.md +35 -31
  532. package/generated/plugins/copilot/agdf/skills/agdf-interaction-locales.json +1 -1
  533. package/generated/plugins/copilot/agdf/skills/agdf-prd-definition/SKILL.md +3 -2
  534. package/generated/plugins/copilot/agdf/skills/agdf-qa-gate/SKILL.md +13 -11
  535. package/generated/plugins/copilot/agdf/skills/agdf-release-or/SKILL.md +8 -5
  536. package/generated/plugins/copilot/agdf/skills/agdf-sd-definition/SKILL.md +5 -3
  537. package/generated/plugins/copilot/agdf/skills/agdf-task-plan-review/SKILL.md +5 -2
  538. package/generated/plugins/copilot/agdf/skills/agdf-tp-definition/SKILL.md +5 -3
  539. package/generated/plugins/copilot/agdf/skills/agdf-ur-definition/SKILL.md +12 -4
  540. package/generated/plugins/copilot/agdf/skills/agdf-ux-intent-definition/SKILL.md +5 -4
  541. package/generated/plugins/copilot/agdf/skills/contracts/closeout.md +1 -1
  542. package/generated/plugins/copilot/agdf/skills/contracts/control-scaffold.md +63 -46
  543. package/generated/plugins/copilot/agdf/skills/contracts/gate-artifact-preparation.md +58 -48
  544. package/generated/plugins/copilot/agdf/skills/contracts/gate-transition.md +5 -6
  545. package/generated/plugins/copilot/agdf/skills/contracts/interaction.md +43 -126
  546. package/generated/plugins/copilot/agdf/skills/contracts/modes.md +4 -3
  547. package/generated/plugins/copilot/agdf/skills/contracts/prd-definition.md +6 -6
  548. package/generated/plugins/copilot/agdf/skills/contracts/quality.md +81 -6
  549. package/generated/plugins/copilot/agdf/skills/contracts/request-activation.md +9 -8
  550. package/generated/plugins/copilot/agdf/skills/contracts/sd-definition.md +19 -3
  551. package/generated/plugins/copilot/agdf/skills/contracts/task-target-resolution.md +24 -0
  552. package/generated/plugins/copilot/agdf/skills/contracts/tp-definition.md +7 -1
  553. package/generated/plugins/copilot/agdf/skills/contracts/ur-definition.md +41 -7
  554. package/generated/submissions/openai/agdf/.codex-plugin/plugin.json +1 -1
  555. package/generated/submissions/openai/agdf/meta/agdf-agent-router.md +3 -3
  556. package/generated/submissions/openai/agdf/meta/agdf-defaults.json +9 -0
  557. package/generated/submissions/openai/agdf/meta/agdf-defaults.schema.json +20 -0
  558. package/generated/submissions/openai/agdf/meta/agdf-interaction-locales.json +2668 -2682
  559. package/generated/submissions/openai/agdf/meta/agdf-plugin.definition.json +12 -5
  560. package/generated/submissions/openai/agdf/meta/contracts/closeout.md +1 -1
  561. package/generated/submissions/openai/agdf/meta/contracts/control-scaffold.md +63 -46
  562. package/generated/submissions/openai/agdf/meta/contracts/gate-artifact-preparation.md +58 -48
  563. package/generated/submissions/openai/agdf/meta/contracts/gate-transition.md +5 -6
  564. package/generated/submissions/openai/agdf/meta/contracts/interaction.md +43 -126
  565. package/generated/submissions/openai/agdf/meta/contracts/modes.md +4 -3
  566. package/generated/submissions/openai/agdf/meta/contracts/prd-definition.md +6 -6
  567. package/generated/submissions/openai/agdf/meta/contracts/quality.md +81 -6
  568. package/generated/submissions/openai/agdf/meta/contracts/request-activation.md +9 -8
  569. package/generated/submissions/openai/agdf/meta/contracts/sd-definition.md +19 -3
  570. package/generated/submissions/openai/agdf/meta/contracts/task-target-resolution.md +24 -0
  571. package/generated/submissions/openai/agdf/meta/contracts/tp-definition.md +7 -1
  572. package/generated/submissions/openai/agdf/meta/contracts/ur-definition.md +41 -7
  573. package/generated/submissions/openai/agdf/meta/copilot-payload-baseline.json +3 -3
  574. package/generated/submissions/openai/agdf/meta/distribution-profile-history.json +14 -0
  575. package/generated/submissions/openai/agdf/plugin.json +1 -1
  576. package/generated/submissions/openai/agdf/skills/brownfield-analysis/SKILL.md +8 -5
  577. package/generated/submissions/openai/agdf/skills/clean-implementation-review/SKILL.md +5 -2
  578. package/generated/submissions/openai/agdf/skills/code-review/SKILL.md +7 -3
  579. package/generated/submissions/openai/agdf/skills/delivery-closeout/SKILL.md +3 -2
  580. package/generated/submissions/openai/agdf/skills/delivery-path-search/SKILL.md +3 -2
  581. package/generated/submissions/openai/agdf/skills/gate-check/SKILL.md +35 -31
  582. package/generated/submissions/openai/agdf/skills/prd-definition/SKILL.md +3 -2
  583. package/generated/submissions/openai/agdf/skills/qa-gate/SKILL.md +13 -11
  584. package/generated/submissions/openai/agdf/skills/release-or/SKILL.md +8 -5
  585. package/generated/submissions/openai/agdf/skills/sd-definition/SKILL.md +5 -3
  586. package/generated/submissions/openai/agdf/skills/task-plan-review/SKILL.md +5 -2
  587. package/generated/submissions/openai/agdf/skills/tp-definition/SKILL.md +5 -3
  588. package/generated/submissions/openai/agdf/skills/ur-definition/SKILL.md +12 -4
  589. package/generated/submissions/openai/agdf/skills/ux-intent-definition/SKILL.md +5 -4
  590. package/generated/submissions/openai/agdf/submission/openai/availability.md +1 -1
  591. package/generated/submissions/openai/agdf/submission/openai/capability-matrix.json +1 -1
  592. package/generated/submissions/openai/agdf/submission/openai/inventory.json +49 -41
  593. package/generated/submissions/openai/agdf/submission/openai/listing.json +1 -1
  594. package/generated/submissions/openai/agdf/submission/openai/readiness.json +2 -2
  595. package/generated/submissions/openai/agdf/submission/openai/readiness.md +2 -2
  596. package/generated/submissions/openai/agdf/submission/openai/release-notes.md +9 -1
  597. package/generated/submissions/openai/agdf/submission/openai/reviewer-cases.json +1 -1
  598. package/lib/cli/application.js +31 -43
  599. package/lib/cli/codex-document-command.js +195 -0
  600. package/lib/cli/command-registry.js +82 -148
  601. package/lib/cli/control-maintenance-command.js +8 -37
  602. package/lib/cli/parse-args.js +98 -16
  603. package/lib/cli/planned-command.js +55 -0
  604. package/lib/cli/project-init-command.js +21 -0
  605. package/lib/cli/project-read-command.js +35 -0
  606. package/lib/cli/run-command-aliases.js +116 -0
  607. package/lib/cli/runtime-context.js +1 -59
  608. package/lib/cli/validation-handlers.js +33 -103
  609. package/lib/control-evaluation/git-observation.js +7 -5
  610. package/lib/control-maintenance/startup.js +2 -2
  611. package/lib/host-adapters/codex/plugin.js +48 -1
  612. package/lib/install-setup/contract.js +4 -4
  613. package/lib/install-setup/{control-migration.js → control-compatibility.js} +1 -2
  614. package/lib/install-setup/interaction.js +0 -1
  615. package/lib/install-setup/presentation.js +3 -4
  616. package/lib/install-setup/service.js +5 -18
  617. package/lib/installers/local-marketplace.js +262 -8
  618. package/lib/lifecycle/codex-startup-status.js +29 -0
  619. package/lib/lifecycle/presentation.js +6 -0
  620. package/lib/mcp-decision-protocol.js +40 -0
  621. package/lib/mcp-dispatch-runtime.js +71 -298
  622. package/lib/mcp-lifecycle/adapters/codex-origin-probe.js +28 -4
  623. package/lib/mcp-lifecycle/adapters/copilot.js +13 -7
  624. package/lib/mcp-lifecycle/adapters/opencode.js +97 -8
  625. package/lib/mcp-lifecycle/evidence.js +2 -1
  626. package/lib/mcp-lifecycle/facade-entry.js +3 -24
  627. package/lib/mcp-lifecycle/facade-owner-entry.js +31 -15
  628. package/lib/mcp-lifecycle/facade-runtime.js +29 -0
  629. package/lib/mcp-lifecycle/facade-thread-entry.js +11 -0
  630. package/lib/mcp-lifecycle/owner-client.js +79 -0
  631. package/lib/mcp-lifecycle/package.js +14 -80
  632. package/lib/mcp-lifecycle/plugin-runtime.js +29 -9
  633. package/lib/mcp-lifecycle/profile.js +2 -1
  634. package/lib/mcp-lifecycle/service.js +5 -4
  635. package/lib/mcp-lifecycle/thread-owner.js +164 -0
  636. package/lib/mcp-owner-protocol.js +1 -0
  637. package/lib/mcp-protocol-runtime.js +308 -0
  638. package/lib/mcp-worker-runtime.js +152 -0
  639. package/lib/runtime/control-command-service.js +22 -7
  640. package/lib/runtime/control-context.js +8 -1
  641. package/lib/runtime/validator-application.js +2 -2
  642. package/lib/scaffold/canonical-init.js +2 -691
  643. package/lib/scaffold/plan.js +9 -32
  644. package/lib/scaffold/presentation.js +2 -2
  645. package/lib/scaffold/write.js +6 -1
  646. package/package.json +6 -2
  647. package/runtime/core/lib/control-evaluation/closeout-readiness.js +10 -2
  648. package/runtime/core/lib/control-evaluation/decision-content-placeholder.js +9 -0
  649. package/runtime/core/lib/control-evaluation/decision-content-readiness.js +2 -7
  650. package/runtime/core/lib/control-evaluation/definition-sources.js +3 -2
  651. package/runtime/core/lib/control-evaluation/delivery-map.js +2 -12
  652. package/runtime/core/lib/control-evaluation/doctor.js +162 -172
  653. package/runtime/core/lib/control-evaluation/gate-check.js +10 -9
  654. package/runtime/core/lib/control-evaluation/gate-policy-inputs.js +11 -0
  655. package/runtime/core/lib/control-evaluation/gate-policy-pure.js +446 -0
  656. package/runtime/core/lib/control-evaluation/gate-policy.js +3 -434
  657. package/runtime/core/lib/control-evaluation/next-action.js +2 -0
  658. package/runtime/core/lib/control-evaluation/parent-reconciliation.js +2 -1
  659. package/runtime/core/lib/control-evaluation/qa-follow-up.js +2 -1
  660. package/runtime/core/lib/control-evaluation/required-files.js +9 -7
  661. package/runtime/core/lib/control-evaluation/run-state-policy.js +1 -1
  662. package/runtime/core/lib/control-evaluation/run-state.js +15 -9
  663. package/runtime/core/lib/control-evaluation/run-step-policy.js +2 -1
  664. package/runtime/core/lib/control-evaluation/run-work-summary.js +6 -4
  665. package/runtime/core/lib/control-evaluation/shared-value.js +7 -0
  666. package/runtime/core/lib/control-evaluation/shared.js +5 -254
  667. package/runtime/core/lib/control-evaluation/tp-planning.js +3 -2
  668. package/runtime/core/lib/control-evaluation/ur-readiness.js +7 -2
  669. package/runtime/core/lib/control-evaluation/verified-change.js +11 -9
  670. 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
  671. package/runtime/core/lib/control-inspect/artifact-readiness.js +5 -3
  672. package/runtime/core/lib/control-inspect/authoring-inputs.js +110 -0
  673. package/runtime/core/lib/control-inspect/cockpit-archive.js +53 -0
  674. package/runtime/core/lib/control-inspect/cockpit-context.js +2 -1
  675. package/runtime/core/lib/control-inspect/cockpit-contract.js +11 -4
  676. package/runtime/core/lib/control-inspect/cockpit-list.d.ts +10 -6
  677. package/runtime/core/lib/control-inspect/cockpit-list.js +32 -41
  678. package/runtime/core/lib/control-inspect/cockpit-session.js +8 -8
  679. package/runtime/core/lib/control-inspect/cockpit-work.js +33 -0
  680. package/runtime/core/lib/control-inspect/cockpit.js +75 -44
  681. package/runtime/core/lib/control-inspect/contract.js +142 -58
  682. package/runtime/core/lib/control-inspect/decision-session.js +53 -11
  683. package/runtime/core/lib/control-inspect/doctor-observation.js +91 -0
  684. package/runtime/core/lib/control-inspect/project-operation-call.js +5 -0
  685. package/runtime/core/lib/control-inspect/project-state.js +48 -0
  686. package/runtime/core/lib/control-inspect/result.js +61 -0
  687. package/runtime/core/lib/control-inspect/selection.js +9 -3
  688. package/runtime/core/lib/control-inspect/service.js +142 -72
  689. package/runtime/core/lib/control-maintenance/compatibility.js +42 -132
  690. package/runtime/core/lib/control-maintenance/contract.js +5 -5
  691. package/runtime/core/lib/control-maintenance/presentation.js +27 -119
  692. package/runtime/core/lib/control-maintenance/service.js +9 -37
  693. package/runtime/core/lib/control-read/cockpit-pool.js +25 -9
  694. package/runtime/core/lib/control-read/cockpit-worker.js +4 -3
  695. package/runtime/core/lib/control-read/doctor-reader.js +92 -0
  696. package/runtime/core/lib/control-read/doctor-worker.js +11 -0
  697. package/runtime/core/lib/control-read/fs.js +18 -0
  698. package/runtime/core/lib/control-read/snapshot.js +68 -17
  699. package/runtime/core/lib/control-state/aggregate.js +3 -1
  700. package/runtime/core/lib/control-state/approval-command.js +13 -10
  701. package/runtime/core/lib/control-state/approval-operations.js +10 -7
  702. package/runtime/core/lib/control-state/artefact-binding-proof.js +12 -20
  703. package/runtime/core/lib/control-state/artefact-bindings.js +10 -7
  704. package/runtime/core/lib/control-state/canonical-initialization.js +761 -0
  705. package/runtime/core/lib/control-state/control-layout.js +183 -0
  706. package/runtime/core/lib/control-state/decision-action-contract.js +10 -1
  707. package/runtime/core/lib/control-state/decision-action-service.js +24 -3
  708. package/runtime/core/lib/control-state/decision-material-contract.js +2 -1
  709. package/runtime/core/lib/control-state/evidence-bindings.js +7 -7
  710. package/runtime/core/lib/control-state/git-identity.js +86 -0
  711. package/runtime/core/lib/control-state/index.js +0 -1
  712. package/runtime/core/lib/control-state/input-resolution.js +99 -0
  713. package/runtime/core/lib/control-state/planned-entry.js +273 -0
  714. package/runtime/core/lib/control-state/planned-handoff.js +174 -0
  715. package/runtime/core/lib/control-state/planned-inventory.js +90 -0
  716. package/runtime/core/lib/control-state/planned-origin-reader.js +48 -0
  717. package/runtime/core/lib/control-state/planned-origin.js +40 -0
  718. package/runtime/core/lib/control-state/presentation-decision.js +12 -7
  719. package/runtime/core/lib/control-state/presentation-delivery.js +90 -0
  720. package/runtime/core/lib/control-state/preview-render.js +5 -2
  721. package/runtime/core/lib/control-state/preview-review.js +3 -2
  722. package/runtime/core/lib/control-state/preview-snapshot.js +9 -6
  723. package/runtime/core/lib/control-state/recording-formats.js +12 -16
  724. package/runtime/core/lib/control-state/run-artefact-recording.js +54 -66
  725. package/runtime/core/lib/control-state/run-closure.js +343 -0
  726. package/runtime/core/lib/control-state/run-command-contract.js +33 -119
  727. package/runtime/core/lib/control-state/run-command-schema.js +508 -0
  728. package/runtime/core/lib/control-state/run-command-service.js +198 -34
  729. package/runtime/core/lib/control-state/run-create-command.js +60 -0
  730. package/runtime/core/lib/control-state/run-identity.d.ts +14 -0
  731. package/runtime/core/lib/control-state/run-identity.js +40 -0
  732. package/runtime/core/lib/control-state/run-input-resolution.js +72 -0
  733. package/runtime/core/lib/control-state/run-inventory-reader.js +31 -0
  734. package/runtime/core/lib/control-state/run-inventory.js +179 -0
  735. package/runtime/core/lib/control-state/run-material.js +211 -0
  736. package/runtime/core/lib/control-state/run-mutation.js +51 -0
  737. package/runtime/core/lib/control-state/run-operation-identity.js +2 -1
  738. package/runtime/core/lib/control-state/run-operation-proof.js +7 -4
  739. package/runtime/core/lib/control-state/run-operation-status.js +20 -4
  740. package/runtime/core/lib/control-state/run-operations.js +70 -13
  741. package/runtime/core/lib/control-state/run-owned-outputs.js +21 -9
  742. package/runtime/core/lib/control-state/run-presentation-envelope.js +25 -33
  743. package/runtime/core/lib/control-state/run-presentation-render.js +9 -8
  744. package/runtime/core/lib/control-state/run-presentation.js +45 -21
  745. package/runtime/core/lib/control-state/run-recording.js +10 -179
  746. package/runtime/core/lib/control-state/run-revision-boundary.js +7 -21
  747. package/runtime/core/lib/control-state/run-revision-history.js +23 -16
  748. package/runtime/core/lib/control-state/run-revision.js +84 -161
  749. package/runtime/core/lib/control-state/run-seal-compute.js +19 -44
  750. package/runtime/core/lib/control-state/run-seal.js +6 -1
  751. package/runtime/core/lib/control-state/run-source-revisions.js +19 -18
  752. package/runtime/core/lib/control-state/run-state-document.js +110 -42
  753. package/runtime/core/lib/control-state/run-state-edits.js +13 -5
  754. package/runtime/core/lib/control-state/run-state-parser.js +14 -6
  755. package/runtime/core/lib/control-state/run-state-reader.js +27 -18
  756. package/runtime/core/lib/control-state/run-state-repository.js +112 -48
  757. package/runtime/core/lib/control-state/run-state-resolver.js +12 -15
  758. package/runtime/core/lib/control-state/run-state-writer.js +21 -377
  759. package/runtime/core/lib/control-state/run-step-pending.js +2 -1
  760. package/runtime/core/lib/control-state/run-step-transaction.js +125 -114
  761. package/runtime/core/lib/control-state/run-steps.js +136 -248
  762. package/runtime/core/lib/control-state/run-store-inspection.js +14 -2
  763. package/runtime/core/lib/control-state/run-verified-change.js +81 -0
  764. package/runtime/core/lib/control-state/run-work-summary-shape.d.ts +1 -0
  765. 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
  766. package/runtime/core/lib/delivery-continuation/service.js +5 -66
  767. package/runtime/core/lib/delivery-path-search/persistence.js +26 -8
  768. package/runtime/core/lib/delivery-path-search/state-adapter.js +1 -1
  769. package/runtime/core/lib/index.js +14 -6
  770. package/runtime/core/lib/interaction-catalog.js +3 -3
  771. package/runtime/core/lib/interaction-presentation.js +30 -12
  772. package/runtime/core/lib/mcp-input-hints.js +46 -0
  773. package/runtime/core/lib/mcp-input-resolution.js +98 -0
  774. package/runtime/core/lib/mcp-input-schema.js +15 -0
  775. package/runtime/core/lib/mcp-resource-contract.js +1 -1
  776. package/runtime/core/lib/mcp-tool-errors.js +31 -15
  777. package/runtime/core/lib/owned-file-lock.js +266 -0
  778. package/runtime/core/lib/owner-placement.js +50 -0
  779. package/runtime/core/lib/resources/canonical-init-plan.js +34 -0
  780. package/runtime/core/lib/resources/configuration.js +92 -0
  781. package/runtime/core/lib/resources/context.js +7 -11
  782. package/runtime/core/lib/resources/language-preference.js +59 -0
  783. package/runtime/core/lib/runtime/mcp-owner-protocol.js +102 -0
  784. package/runtime/core/lib/runtime/plugin-provenance.js +173 -18
  785. package/runtime/core/lib/skill-dispatch/compact-continuation.js +3 -3
  786. package/runtime/core/lib/skill-dispatch/contract.js +28 -9
  787. package/runtime/core/lib/skill-dispatch/delivery-intake.js +11 -5
  788. package/runtime/core/lib/skill-dispatch/delivery-run-assignment.js +6 -10
  789. package/runtime/core/lib/skill-dispatch/mcp-continuation.js +64 -0
  790. package/runtime/core/lib/skill-dispatch/prd-definition.js +14 -5
  791. package/runtime/core/lib/skill-dispatch/sd-definition.js +2 -1
  792. package/runtime/core/lib/skill-dispatch/service.js +49 -14
  793. package/runtime/core/lib/skill-dispatch/tp-definition.js +2 -1
  794. package/generated/.agdf/control/templates/AGDF_RUN.md +0 -139
  795. package/generated/.agdf/control/templates/MASTER_BACKLOG.md +0 -39
  796. package/generated/plugins/agdf/control/templates/AGDF_RUN.md +0 -139
  797. package/generated/plugins/agdf/control/templates/MASTER_BACKLOG.md +0 -39
  798. package/generated/plugins/agdf/runtime/create-agdf/lib/control-maintenance/interaction.js +0 -28
  799. package/generated/plugins/agdf/runtime/create-agdf/lib/control-maintenance/repair.js +0 -4
  800. package/generated/plugins/agdf/runtime/create-agdf/lib/control-maintenance/service.js +0 -3
  801. package/generated/plugins/agdf/runtime/create-agdf/lib/control-state/run-recovery.js +0 -5
  802. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-backlog.js +0 -135
  803. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/interaction.js +0 -57
  804. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/migration.js +0 -85
  805. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/repair.js +0 -226
  806. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/backlog-summary-shape.d.ts +0 -4
  807. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/backlog-summary.js +0 -67
  808. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/legacy-migration.js +0 -69
  809. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/legacy-projection-reader.js +0 -38
  810. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-backlog-writer.js +0 -80
  811. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-backlog.js +0 -90
  812. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-recovery.js +0 -296
  813. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-relationship-correction.js +0 -74
  814. package/generated/plugins/copilot/agdf/control/templates/AGDF_RUN.md +0 -139
  815. package/generated/plugins/copilot/agdf/control/templates/MASTER_BACKLOG.md +0 -39
  816. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/control-maintenance/interaction.js +0 -28
  817. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/control-maintenance/repair.js +0 -4
  818. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/control-maintenance/service.js +0 -3
  819. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/control-state/run-recovery.js +0 -5
  820. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/interaction.js +0 -57
  821. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/migration.js +0 -85
  822. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/repair.js +0 -226
  823. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/backlog-summary-shape.d.ts +0 -4
  824. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/backlog-summary.js +0 -67
  825. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/legacy-migration.js +0 -69
  826. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/legacy-projection-reader.js +0 -38
  827. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-backlog-writer.js +0 -80
  828. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-backlog.js +0 -90
  829. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-recovery.js +0 -296
  830. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-relationship-correction.js +0 -74
  831. package/lib/control-maintenance/interaction.js +0 -28
  832. package/lib/control-maintenance/repair.js +0 -4
  833. package/lib/control-maintenance/service.js +0 -3
  834. package/lib/control-state/run-recovery.js +0 -5
  835. package/lib/install-setup/control-repair.js +0 -1
  836. package/runtime/core/lib/control-inspect/cockpit-backlog.js +0 -135
  837. package/runtime/core/lib/control-maintenance/interaction.js +0 -57
  838. package/runtime/core/lib/control-maintenance/migration.js +0 -85
  839. package/runtime/core/lib/control-maintenance/repair.js +0 -226
  840. package/runtime/core/lib/control-state/backlog-summary-shape.d.ts +0 -4
  841. package/runtime/core/lib/control-state/backlog-summary.js +0 -67
  842. package/runtime/core/lib/control-state/legacy-migration.js +0 -69
  843. package/runtime/core/lib/control-state/legacy-projection-reader.js +0 -38
  844. package/runtime/core/lib/control-state/run-backlog-writer.js +0 -80
  845. package/runtime/core/lib/control-state/run-backlog.js +0 -90
  846. package/runtime/core/lib/control-state/run-recovery.js +0 -296
  847. 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
- const value = readJsonObject(path, "AGDF_MCP_OPENCODE_CONFIG_INVALID");
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
- { id: "project", path: join(target, "opencode.json"), priority: 10, selected: scope === "project" },
73
- { id: "user", path: join(env.OPENCODE_CONFIG_DIR || join(homedir(), ".config", "opencode"), "opencode.json"), priority: 20, selected: scope === "user" },
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 = JSON.parse(source.inline);
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
- const after = action === "disable" && removable ? null : `${JSON.stringify(next, null, 2)}\n`;
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 typeof value === "string" && value.startsWith(".agdf/control/artefacts/") && !value.includes("..");
32
+ return isRunOwnedDataPath(value);
32
33
  }
33
34
 
34
35
  export function validateMcpQualificationRecord(record) {
@@ -1,26 +1,5 @@
1
- // Private child of the installed launcher. Public input remains MCP STDIO only.
1
+ // Explicit process adapter retained for historical owned packages.
2
2
  import process from 'node:process';
3
- import { dirname, join } from 'node:path';
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
- const { runtime: expected, surface, cockpitDir, cockpitMode, pluginRoot, token, deadline_ns } = JSON.parse(process.argv[2]);
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 { inspectMcpServerPackage, acquireMcpExecutableClaim } from './package.js';
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]), expected = input.runtime;
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 actual = inspectMcpServerPackage({ dataRoot: dirname(expected.root), expectedVersion: expected.version });
18
- if (actual.status !== 'matched' || actual.root !== expected.root || actual.digest !== expected.digest
19
- || actual.dispatcherDigest !== expected.dispatcherDigest || actual.sdkDigest !== expected.sdkDigest) throw Error('AGDF_MCP_FACADE_IDENTITY_INVALID');
20
- const runtime = { ...actual, immutable: true, publication_id: expected.publication_id, publisher_root: expected.publisher_root };
21
- const publicationDeadline = performance.now() + Math.max(0, Number(BigInt(input.deadline_ns) - process.hrtime.bigint()) / 1e6);
22
- const claim = acquireMcpExecutableClaim(runtime, { publicationDeadline });
23
- const ended = supervisePluginMcpFacade({ ...input, runtime, env: process.env, claim, signals, deadlineNs: input.deadline_ns });
24
- supervising = true;
25
- if (stopRequested) signals.emit('SIGTERM');
26
- await ended;
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/control-state/run-state-writer.js';
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
- return Object.freeze({ token, owner_epoch: ownerEpoch, generation,
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, MCP_DISPATCHER_RUNTIME_ENTRIES } from "#agdf-core/runtime/plugin-provenance.js";
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 MCP_DISPATCHER_RUNTIME_ENTRIES.filter((item) => item !== "package.json")) {
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: { "./mcp-dispatch-runtime": "./lib/mcp-dispatch-runtime.js" },
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 { return await startFacadeOwner({ runtime, surface, cockpitDir, cockpitMode, pluginRoot, env, publicationDeadline }); }
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
- return new Promise((resolve, reject) => {
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 stop = () => { if (child.connected) child.send({ kind: 'owner_stop', token }, () => {}); };
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 !== true) errors.push("tool_boundary");
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");