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
@@ -0,0 +1,343 @@
1
+ import { pendingRunStepConflictIds } from './run-step-transaction.js';
2
+ import { createHash, randomBytes } from 'node:crypto';
3
+ import { existsSync, mkdirSync, readFileSync, statSync } from 'node:fs';
4
+ import { join } from 'node:path';
5
+ import { atomicWrite, withOwnedFileLock } from './run-state-writer.js';
6
+ import { withControlMutation, markControlMutationEffect, readControlLayout, CURRENT_LAYOUT } from './control-layout.js';
7
+ import { readPendingRunStepJournal } from './run-step-transaction.js';
8
+ import { resolutionRecordVersion } from './input-resolution.js';
9
+ import { canonicalJson, digest, DIGEST_PATTERN, exactObject, resolveControlCommandTarget } from './approval-command-contract.js';
10
+ import { containedRegularFile, hasSymlinkComponent } from './contained-file.js';
11
+ import { RUN_ID_PATTERN, REVISION_ID_PATTERN, APPROVAL_GATES } from './run-identity.js';
12
+ import { parseRunState } from './run-state-parser.js';
13
+ import { runSealState, listedArtefactPaths } from './run-seal.js';
14
+ import { readRunOperations, closureLine, ENDED_LIFECYCLES } from './run-operations.js';
15
+ import { readApprovalOperations } from './approval-operations.js';
16
+ import { pendingRunStepIds } from './run-step-pending.js';
17
+ import { recordRunStep } from './run-steps.js';
18
+ import { policyForRunContent } from '../control-evaluation/run-step-policy.js';
19
+ import { readArtefactHeading, prepareRunContentState } from '../control-evaluation/run-state.js';
20
+ import { resolveHumanRunTitle } from '../interaction-presentation.js';
21
+ import { readGitIdentity } from './git-identity.js';
22
+ import { bindInputResolution, currentInputResolution, recordedInputResolution, resolutionRecord } from './input-resolution.js';
23
+ import { inspectRunOperation } from './run-operation-status.js';
24
+ import { assertInputConfigurationCurrent } from '../resources/configuration.js';
25
+
26
+ // Closure of active Runs as superseded or abandoned. A preview is a stored, immutable and
27
+ // non-authorizing working file; only the owner's exact phrase applies it, one Run at a time,
28
+ // each through the existing run-step journal with its own sealed receipt.
29
+ export const CLOSURE_OUTCOMES = Object.freeze(['superseded', 'abandoned']);
30
+ export const CLOSURE_LIMITS = Object.freeze({ entries: 64, reason: 1024, reference: 512, preview_bytes: 1048576 });
31
+ export const CLOSURE_PREVIEW_DIRECTORY = '.agdf/control/closure-previews';
32
+ export const CLOSURE_PREVIEW_ID_PATTERN = /^[0-9a-f]{8}$/u;
33
+ export const closurePhrase = previewId => `Close runs: ${previewId}`;
34
+ export function closureOperationId(previewId, runId) {
35
+ const hex = createHash('sha256').update(`agdf-run-close/1\0${previewId}\0${runId}`, 'utf8').digest('hex');
36
+ return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20, 32)}`;
37
+ }
38
+ const previewDigest = body => digest(canonicalJson(body));
39
+ const singleLine = value => typeof value === 'string' ? value.replace(/[\u0000-\u001f\u007f\s]+/gu, ' ').replaceAll('|', '/').trim() : '';
40
+ const language = value => String(value ?? '').toLowerCase().startsWith('de') ? 'de' : 'en';
41
+ const ENTRY_FIELDS = ['run_id', 'outcome', 'reason', 'successor_run', 'successor_reference'];
42
+ const NEXT = Object.freeze({
43
+ run_missing: 'Check the run id, then create a new preview.', run_unreadable: 'Repair the run file, then create a new preview.',
44
+ run_completed: 'none', run_already_ended: 'none', seal_invalid: 'Inspect the original operation and exact source bytes; resolve unconfirmed state before creating a new preview.',
45
+ changed_since_preview: 'Create a new preview.', not_active: 'none', successor_run_unknown: 'Create a new preview with an existing successor run or a free reference.',
46
+ run_write_locked: 'Retry the apply with the same preview while the run is unchanged.',
47
+ run_step_recovery_required: 'Recover the pending run step, then repeat the same apply.',
48
+ closure_write_failed: 'Repeat the same apply; if it fails again, inspect the run.',
49
+ closed_recovery_pending: 'Recover the pending Run step, then repeat the same apply.',
50
+ closure_recovery_pending: 'Recover the pending run step first, then create a new preview.',
51
+ });
52
+ const nextAction = reason => NEXT[reason] ?? 'Inspect the run, then create a new preview.';
53
+ const NEXT_DE = Object.freeze({
54
+ run_missing: 'Run-ID prüfen, dann eine neue Vorschau erstellen.', run_unreadable: 'Run-Datei reparieren, dann eine neue Vorschau erstellen.',
55
+ run_completed: 'keiner', run_already_ended: 'keiner', seal_invalid: 'Ursprüngliche Operation und genaue Quellbytes prüfen; den ungeklärten Stand vor einer neuen Vorschau auflösen.',
56
+ changed_since_preview: 'Eine neue Vorschau erstellen.', not_active: 'keiner', successor_run_unknown: 'Eine neue Vorschau mit vorhandenem Nachfolge-Run oder freiem Verweis erstellen.',
57
+ run_write_locked: 'Mit derselben Vorschau erneut anwenden, solange der Run unverändert ist.',
58
+ run_step_recovery_required: 'Den offenen Run-Step wiederherstellen, dann dieselbe Anwendung wiederholen.',
59
+ closure_write_failed: 'Dieselbe Anwendung wiederholen; scheitert sie erneut, den Run prüfen.',
60
+ closed_recovery_pending: 'Den ursprünglichen offenen Run-Schritt wiederaufnehmen, dann dieselbe Anwendung wiederholen.',
61
+ closure_recovery_pending: 'Erst den offenen Run-Step wiederherstellen, dann eine neue Vorschau erstellen.',
62
+ preview_unknown: 'Eine neue Vorschau erstellen.', preview_invalid: 'Eine neue Vorschau erstellen.', preview_blocked: 'Eine neue Vorschau erstellen.',
63
+ });
64
+ const actionDe = (reason, text) => NEXT_DE[reason] ?? (String(reason).startsWith('confirmation_')
65
+ ? text.replace(/^Repeat with the exact phrase (.+)\.$/u, 'Mit dem genauen Satz $1 wiederholen.') : text);
66
+
67
+ function readRunFile(root, runId) {
68
+ const relative = `.agdf/control/runs/${runId}/RUN_STATE.md`;
69
+ if (!RUN_ID_PATTERN.test(runId ?? '')) return { reason: 'run_missing' };
70
+ if (!existsSync(join(root, relative))) return { reason: 'run_missing' };
71
+ const file = hasSymlinkComponent(root, relative) ? { status: 'invalid' } : containedRegularFile(root, relative);
72
+ if (file.status !== 'valid') return { reason: 'run_unreadable' };
73
+ try {
74
+ const content = readFileSync(file.path, 'utf8'), parsed = parseRunState(content, runId);
75
+ return parsed.valid ? { content, meta: parsed.meta, path: file.path } : { reason: 'run_unreadable' };
76
+ } catch { return { reason: 'run_unreadable' }; }
77
+ }
78
+
79
+ // Refusals name each affected entry before anything is stored.
80
+ function entryProblems(root, entries) {
81
+ if (!Array.isArray(entries) || !entries.length || entries.length > CLOSURE_LIMITS.entries) return [{ index: null, run_id: null, problem: 'entries_invalid' }];
82
+ const problems = [], seen = new Set();
83
+ entries.forEach((entry, index) => {
84
+ const add = problem => problems.push({ index, run_id: typeof entry?.run_id === 'string' ? entry.run_id : null, problem });
85
+ if (entry === null || typeof entry !== 'object' || Array.isArray(entry) || Object.keys(entry).some(key => !ENTRY_FIELDS.includes(key))) return add('entry_fields_invalid');
86
+ if (typeof entry.run_id !== 'string' || !RUN_ID_PATTERN.test(entry.run_id)) add('run_id_invalid');
87
+ else if (seen.has(entry.run_id)) add('run_id_duplicate');
88
+ seen.add(entry.run_id);
89
+ if (!CLOSURE_OUTCOMES.includes(entry.outcome)) add('outcome_invalid');
90
+ const reason = singleLine(entry.reason);
91
+ if (!reason) add('reason_missing'); else if (reason.length > CLOSURE_LIMITS.reason) add('reason_too_long');
92
+ const run = entry.successor_run !== undefined, reference = entry.successor_reference !== undefined;
93
+ if (entry.outcome === 'abandoned' && (run || reference)) add('successor_not_allowed');
94
+ if (entry.outcome === 'superseded') {
95
+ if (run && reference) add('successor_ambiguous');
96
+ else if (!run && !reference) add('successor_missing');
97
+ else if (run && entry.successor_run === entry.run_id) add('successor_run_self');
98
+ else if (run && (typeof entry.successor_run !== 'string' || readRunFile(root, entry.successor_run).reason)) add('successor_run_unknown');
99
+ else if (reference && !singleLine(entry.successor_reference)) add('successor_missing');
100
+ else if (reference && singleLine(entry.successor_reference).length > CLOSURE_LIMITS.reference) add('successor_reference_too_long');
101
+ }
102
+ });
103
+ return problems;
104
+ }
105
+
106
+ function lastActivity(content, meta) {
107
+ const stamps = [...readRunOperations(content).receipts.map(row => row.created_at),
108
+ ...readApprovalOperations(content).receipts.map(row => row.created_at)].filter(Boolean).sort();
109
+ return stamps.at(-1) ?? meta.updated_at ?? null;
110
+ }
111
+
112
+ // Per-run facts the owner needs to decide, read only from the sealed Run and its UR heading.
113
+ function previewEntry(root, entry) {
114
+ const successor = entry.outcome !== 'superseded' ? null : entry.successor_run !== undefined
115
+ ? { kind: 'run', value: entry.successor_run, verified: true } : { kind: 'reference', value: singleLine(entry.successor_reference), verified: false };
116
+ const row = { run_id: entry.run_id, outcome: entry.outcome, reason: singleLine(entry.reason), successor, revision_id: null,
117
+ closable: false, not_closable: null, facts: null, warnings: [] };
118
+ const run = readRunFile(root, entry.run_id);
119
+ const refuse = reason => ({ ...row, not_closable: { reason, next_action: nextAction(reason) } });
120
+ if (run.reason) return refuse(run.reason);
121
+ const control = prepareRunContentState(root, run.content, run.path);
122
+ const approved = APPROVAL_GATES.filter(gate => control.approvals.get(gate)?.status === 'approved');
123
+ const gate = control.current_gate;
124
+ row.revision_id = run.meta.revision_id;
125
+ row.facts = { title: resolveHumanRunTitle({ urHeading: readArtefactHeading(root, control.artefacts.get('UR')).replace(/^UR:\s*/iu, ''), runContent: run.content, runId: entry.run_id }),
126
+ lifecycle: run.meta.lifecycle, current_gate: gate, approved_gates: approved,
127
+ open_approvals: APPROVAL_GATES.filter(name => !approved.includes(name) && control.approvals.get(name)?.status !== 'not_applicable'),
128
+ last_activity: lastActivity(run.content, run.meta), artefact_count: listedArtefactPaths(run.content).length };
129
+ if (approved.length) row.warnings.push('approved_gates_exist');
130
+ if (['CD+Tests', 'CR', 'QA', 'UAT', 'OR'].includes(gate) || ['CD+Tests', 'CR'].some(type => ['done', 'revise', 'block'].includes(control.artefacts.get(type)?.status))) row.warnings.push('implementation_started');
131
+ if (successor?.verified === false) row.warnings.push('successor_unverified');
132
+ if (run.meta.lifecycle === 'completed') return refuse('run_completed');
133
+ if (ENDED_LIFECYCLES.includes(run.meta.lifecycle)) return refuse('run_already_ended');
134
+ if (runSealState(root, run.content).status !== 'valid') return refuse('seal_invalid');
135
+ return { ...row, closable: true };
136
+ }
137
+
138
+ // Exclusive creation of one immutable preview file per random 8-hex id, written atomically.
139
+ function storePreview(root, body) {
140
+ return withControlMutation(root, { resource: 'closure-preview', operation_id: currentInputResolution()?.operation_id ?? null },
141
+ () => storePreviewAdmitted(root, body));
142
+ }
143
+
144
+ function storePreviewAdmitted(root, body) {
145
+ assertInputConfigurationCurrent(root);
146
+ if (hasSymlinkComponent(root, CLOSURE_PREVIEW_DIRECTORY)) throw Error('AGDF_RUN_PATH_INVALID');
147
+ const directory = join(root, CLOSURE_PREVIEW_DIRECTORY);
148
+ try { mkdirSync(directory); } catch (error) { if (error.code !== 'EEXIST') throw error; }
149
+ if (!statSync(directory).isDirectory()) throw Error('AGDF_RUN_PATH_INVALID');
150
+ for (let attempt = 0; attempt < 16; attempt++) {
151
+ const resolution = currentInputResolution();
152
+ const id = resolution?.operation_id?.slice(0, 8) ?? randomBytes(4).toString('hex'), path = join(directory, `${id}.json`);
153
+ if (resolution && existsSync(path)) {
154
+ const loaded = readPreview(root, id);
155
+ if (loaded.reason || recordedInputResolution(loaded.preview)?.logical_digest !== resolution.logical_digest) throw Error('operation_payload_conflict');
156
+ return loaded.preview;
157
+ }
158
+ const preview = bindInputResolution({ ...body, preview_id: id });
159
+ const stored = { ...preview, preview_digest: previewDigest(preview) };
160
+ if (withOwnedFileLock(path, () => withControlMutation(root, { resource: `closure-preview:${id}`, operation_id: resolution?.operation_id ?? null },
161
+ () => existsSync(path) ? false : (markControlMutationEffect(), atomicWrite(path, `${JSON.stringify(stored, null, 2)}\n`), true)))) return stored;
162
+ }
163
+ throw Error('AGDF_CLOSURE_PREVIEW_UNAVAILABLE');
164
+ }
165
+
166
+ const validStoredEntry = row => exactObject(row, ['run_id', 'outcome', 'reason', 'successor', 'revision_id', 'closable', 'not_closable', 'facts', 'warnings'])
167
+ && RUN_ID_PATTERN.test(row.run_id) && CLOSURE_OUTCOMES.includes(row.outcome) && closureLine(row.reason, CLOSURE_LIMITS.reason)
168
+ && typeof row.closable === 'boolean' && (!row.closable || REVISION_ID_PATTERN.test(row.revision_id ?? '') && row.not_closable === null)
169
+ && (row.closable || exactObject(row.not_closable, ['reason', 'next_action'])) && Array.isArray(row.warnings);
170
+ function readPreview(root, previewId) {
171
+ if (typeof previewId !== 'string' || !CLOSURE_PREVIEW_ID_PATTERN.test(previewId)) return { reason: 'preview_unknown' };
172
+ const relative = `${CLOSURE_PREVIEW_DIRECTORY}/${previewId}.json`;
173
+ if (!existsSync(join(root, relative))) return { reason: 'preview_unknown' };
174
+ const file = hasSymlinkComponent(root, relative) ? { status: 'invalid' } : containedRegularFile(root, relative);
175
+ if (file.status !== 'valid' || statSync(file.path).size > CLOSURE_LIMITS.preview_bytes) return { reason: 'preview_invalid' };
176
+ try {
177
+ const raw = JSON.parse(readFileSync(file.path, 'utf8')), { preview_digest: recorded, ...body } = raw;
178
+ const stored = resolutionRecord(raw);
179
+ if (!stored) return { reason: 'preview_invalid' };
180
+ if (!exactObject(stored, ['schema_version', 'preview_id', 'created_at', 'target_id', 'blocked', 'entries', 'preview_digest'])
181
+ || stored.schema_version !== '1' || stored.preview_id !== previewId || !DIGEST_PATTERN.test(recorded ?? '') || recorded !== previewDigest(body)
182
+ || stored.target_id !== resolveControlCommandTarget(root).target_id || !Array.isArray(stored.entries)
183
+ || !stored.entries.length || stored.entries.length > CLOSURE_LIMITS.entries || !stored.entries.every(validStoredEntry)) return { reason: 'preview_invalid' };
184
+ return { preview: raw };
185
+ } catch { return { reason: 'preview_invalid' }; }
186
+ }
187
+
188
+ // Existing preview/per-Run records remain the only closure persistence owners.
189
+ export function inspectClosureInputResolution(root, input) {
190
+ if (input.command.kind === 'closure.preview') {
191
+ const loaded = readPreview(root, input.operation_id.slice(0, 8));
192
+ if (loaded.reason === 'preview_unknown') return null;
193
+ if (loaded.reason) throw Error('original_operation_unconfirmed');
194
+ return { known: true, resolution: recordedInputResolution(loaded.preview) };
195
+ }
196
+ const loaded = readPreview(root, input.command.payload.preview_id);
197
+ if (loaded.reason) return null; // The existing apply owner reports selector errors.
198
+ for (const entry of loaded.preview.entries) {
199
+ const id = closureOperationId(loaded.preview.preview_id, entry.run_id);
200
+ const observed = inspectRunOperation(root, { runId: entry.run_id, operationId: id, targetId: input.target_id });
201
+ let resolution = recordedInputResolution(observed.receipt);
202
+ if (observed.status === 'pending') resolution = recordedInputResolution(readPendingRunStepJournal(root, entry.run_id));
203
+ if (resolution?.operation_id === input.operation_id && resolution.kind === 'closure.apply') return { known: true, resolution };
204
+ }
205
+ return null;
206
+ }
207
+
208
+ function safePreviewEntry(root, entry, beforeFacts) {
209
+ try { beforeFacts?.(entry.run_id); return previewEntry(root, entry); }
210
+ catch {
211
+ return { run_id: entry.run_id, outcome: entry.outcome, reason: singleLine(entry.reason), successor: null, revision_id: null, closable: false,
212
+ not_closable: { reason: 'run_unreadable', next_action: nextAction('run_unreadable') }, facts: null, warnings: [] };
213
+ }
214
+ }
215
+
216
+ // `beforeFacts` is a package-owned test seam for a failing per-run observation.
217
+ export function previewRunClosure(root, { entries, language: requested } = {}, { beforeFacts } = {}) {
218
+ const lang = language(requested);
219
+ const problems = entryProblems(root, entries);
220
+ if (problems.length) return finish({ schema_version: '1', outcome: 'rejected', reason: 'closure_entries_invalid', problems,
221
+ next_action: 'Add the reason, add or correct the successor, give a free reference, or choose abandoned; then request a new preview.', authorizes: false }, lang);
222
+ const sharedPending = new Set(pendingRunStepConflictIds(root, null));
223
+ const selectedIds = new Set(entries.map(entry => entry.run_id));
224
+ const pending = pendingRunStepIds(root).filter(id => selectedIds.has(id) || sharedPending.has(id));
225
+ let stored;
226
+ try {
227
+ stored = storePreview(root, { schema_version: '1', created_at: new Date().toISOString(), target_id: resolveControlCommandTarget(root).target_id,
228
+ blocked: pending.length ? { reason: 'closure_recovery_pending', pending_run_ids: pending, next_action: nextAction('closure_recovery_pending') } : null,
229
+ entries: entries.map(entry => safePreviewEntry(root, entry, beforeFacts)) });
230
+ } catch { return finish({ schema_version: '1', outcome: 'rejected', reason: 'closure_preview_unavailable', authorizes: false }, lang); }
231
+ return finish({ schema_version: '1', outcome: 'preview', preview_id: stored.preview_id, preview_digest: stored.preview_digest,
232
+ preview_path: `${CLOSURE_PREVIEW_DIRECTORY}/${stored.preview_id}.json`, confirmation_phrase: stored.blocked ? null : closurePhrase(stored.preview_id),
233
+ run_count: stored.entries.length, closable_count: stored.entries.filter(row => row.closable).length, blocked: stored.blocked,
234
+ entries: stored.entries, authorizes: false }, lang);
235
+ }
236
+
237
+ function closeEntry(root, preview, entry, confirmedBy, { packageVersion, afterWrite }) {
238
+ const base = { run_id: entry.run_id, outcome: entry.outcome, successor: entry.successor };
239
+ const notClosed = (reason, extra = {}) => ({ ...base, result: 'not_closed', reason, next_action: nextAction(reason), ...extra });
240
+ if (!entry.closable) return { ...base, result: 'not_closed', ...entry.not_closable };
241
+ if (entry.successor?.kind === 'run' && readRunFile(root, entry.successor.value).reason) return notClosed('successor_run_unknown');
242
+ const record = { lifecycle: entry.outcome, reason: entry.reason, successor: entry.successor, confirmed_by: confirmedBy,
243
+ preview: { id: preview.preview_id, digest: preview.preview_digest } };
244
+ const context = { kind: 'lifecycle_close.record', operation_id: closureOperationId(preview.preview_id, entry.run_id), target_id: preview.target_id,
245
+ request_digest: digest(canonicalJson({ contract: 'agdf-run-close/1', preview_id: preview.preview_id, preview_digest: preview.preview_digest,
246
+ run_id: entry.run_id, revision_id: entry.revision_id, lifecycle: entry.outcome, reason: entry.reason, successor: entry.successor })) };
247
+ let result;
248
+ try {
249
+ result = recordRunStep(root, { runId: entry.run_id, revisionId: entry.revision_id, step: 'lifecycle_close', closure: record },
250
+ { policy: policyForRunContent, packageVersion, operationContext: context, afterWrite });
251
+ } catch (error) { return notClosed('closure_write_failed', { detail: String(error?.message ?? error).slice(0, 256) }); }
252
+ if (result.outcome === 'recorded') return { ...base, result: 'closed', operation_id: context.operation_id, revision_id: result.revision_id };
253
+ if (result.outcome === 'already_applied') return { ...base, result: 'already_closed', operation_id: context.operation_id };
254
+ const reason = { stale_revision: 'changed_since_preview', lifecycle_ended: 'not_active' }[result.reason] ?? result.reason;
255
+ if (result.committed) return { ...base, result: 'closed_recovery_pending', reason, operation_id: context.operation_id, revision_id: result.revision_id,
256
+ next_action: nextAction('closed_recovery_pending') };
257
+ return notClosed(reason);
258
+ }
259
+
260
+ export function applyRunClosure(root, { previewId, confirmation, language: requested } = {}, { packageVersion = '0.14.5', afterWrite, readIdentity = readGitIdentity } = {}) {
261
+ const lang = language(requested);
262
+ const refuse = (reason, extra = {}) => finish({ schema_version: '1', outcome: 'rejected', reason, preview_id: typeof previewId === 'string' ? previewId : null,
263
+ applied: false, next_action: extra.next_action ?? { preview_unknown: 'Create a new preview.', preview_invalid: 'Create a new preview.', preview_blocked: 'Create a new preview.' }[reason]
264
+ ?? `Repeat with the exact phrase ${CLOSURE_PREVIEW_ID_PATTERN.test(previewId ?? '') ? closurePhrase(previewId) : 'of the preview'}.`, ...extra, authorizes: false }, lang);
265
+ const loaded = readPreview(root, previewId);
266
+ if (loaded.reason) return refuse(loaded.reason);
267
+ const preview = loaded.preview, phrase = closurePhrase(preview.preview_id), reply = typeof confirmation === 'string' ? confirmation.trim() : '';
268
+ if (!reply) return refuse('confirmation_missing');
269
+ if (reply !== phrase) return refuse(/^Close runs: [0-9a-f]{8}$/u.test(reply) ? 'confirmation_other_preview' : 'confirmation_mismatch');
270
+ const sharedPending = new Set(pendingRunStepConflictIds(root, null));
271
+ const selectedIds = new Set(preview.entries.map(entry => entry.run_id));
272
+ const pending = pendingRunStepIds(root).filter(id => selectedIds.has(id) || sharedPending.has(id));
273
+ if (pending.length) return refuse('closure_recovery_pending', { pending_run_ids: pending, next_action: nextAction('closure_recovery_pending') });
274
+ if (preview.blocked) return refuse('preview_blocked');
275
+ const confirmedBy = readIdentity(root);
276
+ const results = preview.entries.map(entry => closeEntry(root, preview, entry, confirmedBy, { packageVersion, afterWrite }));
277
+ return finish({ schema_version: '1', outcome: 'applied', preview_id: preview.preview_id, preview_digest: preview.preview_digest, applied: true,
278
+ confirmed_by: confirmedBy, closed_count: results.filter(row => row.result === 'closed').length,
279
+ recovery_pending_count: results.filter(row => row.result === 'closed_recovery_pending').length, run_count: results.length, results, authorizes: false }, lang);
280
+ }
281
+
282
+ // Rendering in German or English; the confirmation phrase is always the fixed English text.
283
+ const COPY = {
284
+ en: { previewHeading: (id, n, d) => `Closure preview ${id} · ${n} run${n === 1 ? '' : 's'} · digest ${d}`,
285
+ finality: 'A closed run is final: it cannot be reopened, and continuing the work needs a new run.',
286
+ phrase: phrase => `To close the closable runs below, reply exactly: ${phrase}`,
287
+ blocked: ids => `Blocked: pending run-step recovery in ${ids.join(', ')}. ${NEXT.closure_recovery_pending}`, action: (reason, text) => text,
288
+ gate: 'Gate', open: 'Open approvals', activity: 'Last activity', artefacts: 'Artefacts', none: 'none', unknown: 'unknown',
289
+ outcome: row => row.outcome === 'superseded' ? `superseded by ${row.successor.value}${row.successor.verified ? '' : ' (unverified reference)'}` : 'abandoned',
290
+ outcomeLabel: 'Outcome', reasonLabel: 'Reason', warningsLabel: 'Warnings', next: 'Next',
291
+ warnings: { approved_gates_exist: 'approved gates exist', implementation_started: 'implementation has started', successor_unverified: 'the successor is an unverified free reference' },
292
+ notClosable: 'Not closable', resultHeading: (id, closed, n, d) => `Closure result ${id} · ${closed} of ${n} closed · digest ${d}`,
293
+ recoveryPending: row => `closed as ${row.outcome}; Run recovery pending (${row.reason})`,
294
+ confirmedBy: 'Confirmed by', cooperative: 'cooperative local Git statement', unknownPerson: 'unknown (no local Git identity found)',
295
+ closed: row => `closed as ${row.outcome === 'superseded' ? `superseded by ${row.successor.value}${row.successor.verified ? '' : ' (unverified reference)'}` : 'abandoned'}`,
296
+ already: 'already closed by this preview', notClosed: 'not closed',
297
+ rejected: 'Nothing was applied.', refusal: 'Refused; no preview was stored.' },
298
+ de: { previewHeading: (id, n, d) => `Abschlussvorschau ${id} · ${n} ${n === 1 ? 'Run' : 'Runs'} · Digest ${d}`,
299
+ finality: 'Ein geschlossener Run ist endgültig: Er kann nicht wieder geöffnet werden; für weitere Arbeit braucht es einen neuen Run.',
300
+ phrase: phrase => `Zum Schließen der schließbaren Runs genau antworten: ${phrase}`,
301
+ blocked: ids => `Blockiert: offene Run-Step-Wiederherstellung in ${ids.join(', ')}. ${NEXT_DE.closure_recovery_pending}`, action: actionDe,
302
+ gate: 'Gate', open: 'Offene Freigaben', activity: 'Letzte Aktivität', artefacts: 'Artefakte', none: 'keine', unknown: 'unbekannt',
303
+ outcome: row => row.outcome === 'superseded' ? `ersetzt durch ${row.successor.value}${row.successor.verified ? '' : ' (ungeprüfter Verweis)'}` : 'aufgegeben',
304
+ outcomeLabel: 'Ergebnis', reasonLabel: 'Grund', warningsLabel: 'Warnungen', next: 'Nächster Schritt',
305
+ warnings: { approved_gates_exist: 'es gibt freigegebene Gates', implementation_started: 'die Umsetzung hat begonnen', successor_unverified: 'der Nachfolger ist ein ungeprüfter freier Verweis' },
306
+ notClosable: 'Nicht schließbar', resultHeading: (id, closed, n, d) => `Abschlussergebnis ${id} · ${closed} von ${n} geschlossen · Digest ${d}`,
307
+ recoveryPending: row => `geschlossen als ${row.outcome === 'superseded' ? 'ersetzt' : 'aufgegeben'}; Run-Wiederherstellung offen (${row.reason})`,
308
+ confirmedBy: 'Bestätigt durch', cooperative: 'kooperative Angabe aus der lokalen Git-Identität', unknownPerson: 'unbekannt (keine lokale Git-Identität gefunden)',
309
+ closed: row => `geschlossen als ${row.outcome === 'superseded' ? `ersetzt durch ${row.successor.value}${row.successor.verified ? '' : ' (ungeprüfter Verweis)'}` : 'aufgegeben'}`,
310
+ already: 'bereits durch diese Vorschau geschlossen', notClosed: 'nicht geschlossen',
311
+ rejected: 'Es wurde nichts angewendet.', refusal: 'Abgelehnt; es wurde keine Vorschau gespeichert.' },
312
+ };
313
+ const shortDigest = value => String(value ?? '').replace(/^sha256:/u, '').slice(0, 12);
314
+ export function renderRunClosure(result, requested) {
315
+ const c = COPY[language(requested)], lines = [];
316
+ if (result.outcome === 'preview') {
317
+ lines.push(c.previewHeading(result.preview_id, result.run_count, shortDigest(result.preview_digest)), c.finality);
318
+ lines.push(result.blocked ? c.blocked(result.blocked.pending_run_ids) : c.phrase(result.confirmation_phrase), '');
319
+ result.entries.forEach((row, i) => {
320
+ lines.push(`${i + 1}. ${row.facts?.title ?? row.run_id} · \`${row.run_id}\``);
321
+ if (row.facts) lines.push(` ${c.gate}: ${row.facts.current_gate} · ${c.open}: ${row.facts.open_approvals.join(', ') || c.none} · ${c.activity}: ${row.facts.last_activity ?? c.unknown} · ${c.artefacts}: ${row.facts.artefact_count}`);
322
+ lines.push(` ${c.outcomeLabel}: ${c.outcome(row)}`, ` ${c.reasonLabel}: ${row.reason}`);
323
+ if (row.warnings.length) lines.push(` ${c.warningsLabel}: ${row.warnings.map(key => c.warnings[key] ?? key).join('; ')}`);
324
+ if (!row.closable) lines.push(` ${c.notClosable}: ${row.not_closable.reason} · ${c.next}: ${c.action(row.not_closable.reason, row.not_closable.next_action)}`);
325
+ });
326
+ } else if (result.outcome === 'applied') {
327
+ const person = result.confirmed_by.statement === 'unknown' ? c.unknownPerson
328
+ : `${[result.confirmed_by.name, result.confirmed_by.email && `<${result.confirmed_by.email}>`].filter(Boolean).join(' ')} (${c.cooperative})`;
329
+ lines.push(c.resultHeading(result.preview_id, result.closed_count, result.run_count, shortDigest(result.preview_digest)), `${c.confirmedBy}: ${person}`, '');
330
+ result.results.forEach((row, i) => {
331
+ lines.push(`${i + 1}. \`${row.run_id}\`: ${row.result === 'closed' ? c.closed(row) : row.result === 'already_closed' ? c.already
332
+ : row.result === 'closed_recovery_pending' ? `${c.recoveryPending(row)} · ${c.next}: ${c.action(row.result, row.next_action)}`
333
+ : `${c.notClosed}: ${row.reason} · ${c.next}: ${c.action(row.reason, row.next_action)}`}`);
334
+ });
335
+ } else {
336
+ lines.push(`${result.problems ? c.refusal : c.rejected} ${result.reason}`);
337
+ for (const problem of result.problems ?? []) lines.push(`- ${problem.run_id ?? `#${problem.index ?? '-'}`}: ${problem.problem}`);
338
+ if (result.pending_run_ids) lines.push(`- ${result.pending_run_ids.join(', ')}`);
339
+ if (result.next_action) lines.push(`${c.next}: ${c.action(result.reason, result.next_action)}`);
340
+ }
341
+ return lines.join('\n');
342
+ }
343
+ const finish = (result, lang) => Object.freeze({ ...result, presentation_language: lang, text: renderRunClosure(result, lang) });
@@ -1,141 +1,55 @@
1
+ import { projectMcpInputSchema } from '../mcp-input-schema.js';
2
+ // Compatibility facade: existing exports retain the same schema/validator objects.
3
+ export { RUN_COMMAND_VERSION, RUN_COMMAND_LIMITS, TARGET_SCOPED_COMMAND_KINDS, PLANNING_COMMAND_KINDS, PLANNING_SCOPE_SCHEMA, strictObject, MATERIAL_REFERENCE_SCHEMA, RUN_COMMAND_DESCRIPTORS, RUN_COMMAND_GROUPS, commandGroupSchema, compactCommandSchema, RUN_COMMAND_RESULT_SCHEMA, commandResultSchema, validateRunCommandResult, commandGroupDefinition, schemaDiagnostics, validateRunCommand, runCommandRequestDigest } from './run-command-schema.js';
4
+ import { RUN_COMMAND_GROUPS, RUN_COMMAND_VERSION, RUN_COMMAND_DESCRIPTORS, payloadSchema, describeFields, strictObject, commandEnvelope, RUN_COMMAND_RESULT_SCHEMA, RUN_COMMAND_LIMITS } from './run-command-schema.js';
1
5
  import { UR_AUTHORING_FORMAT } from '../control-evaluation/ur-readiness.js';
2
6
  import { PRD_DECISION_FORMAT } from '../control-evaluation/prd-readiness.js';
3
7
  import { SD_DECISION_FORMAT } from '../control-evaluation/sd-readiness.js';
4
- import { DIGEST_PATTERN, canonicalJson, digest } from './approval-command-contract.js';
5
- import { RUN_ID_PATTERN, REVISION_ID_PATTERN, APPROVAL_GATES } from './run-identity.js';
6
- import { TASK_TARGET_SOURCES } from '../task-target-resolution.js';
7
- import { PRESENTATION_LANGUAGE_TAG_PATTERN_SOURCE } from '../interaction-presentation.js';
8
8
  import { ACCEPTANCE_CRITERIA_FORMAT, TP_AUTHORING_FORMAT } from '../control-evaluation/traceability-readiness.js';
9
9
  import { UX_DECISION_FORMAT } from '../control-evaluation/definition-sources.js';
10
- import { REVIEWED_REQUEST_FORMAT, REVISION_PROPOSAL_FORMAT } from './recording-formats.js';
10
+ import { REVIEWED_BINDING_FORMAT, REVISION_PROPOSAL_FORMAT } from './recording-formats.js';
11
11
  import { relationshipForGate } from '../control-evaluation/delivery-relationships.js';
12
12
  import { PREVIEW_REVIEW_FORMAT } from './preview-review.js';
13
+ import { closeoutConfirmation, QUICK_CLOSEOUT_AUTHORING_FORMAT } from '../control-evaluation/closeout-readiness.js';
13
14
 
14
- export const RUN_COMMAND_VERSION = '1';
15
- export const RUN_COMMAND_LIMITS = Object.freeze({ input_bytes: 65536, result_bytes: 1048576, definition_bytes: 8192, aggregate_definition_bytes: 24576 });
16
- const string = (maxLength = 4096) => ({ type: 'string', minLength: 1, maxLength });
17
- const identity = { type: 'string', pattern: REVISION_ID_PATTERN.source };
18
- const hash = { type: 'string', pattern: DIGEST_PATTERN.source };
19
- const enumeration = values => ({ enum: [...values] });
20
- export const strictObject = (properties, required = Object.keys(properties)) => ({ type: 'object', additionalProperties: false, properties, required });
21
- const source = strictObject({ path: string(), digest: hash });
22
- const recoveryGroups = Object.freeze({ 'step.record': 'agdf_record', 'artefact.record': 'agdf_record',
23
- 'presentation_decision.record': 'agdf_record', 'prd_revision.reopen': 'agdf_revise', 'closeout.record': 'agdf_closeout' });
24
- const recovery = strictObject({ original_kind: enumeration(Object.keys(recoveryGroups)), pending_digest: hash, recovery_revision_id: identity });
25
- const recordStep = { oneOf: [
26
- strictObject({ step: { const: 'ur' }, source, title: string(1024) }),
27
- strictObject({ step: { const: 'route' }, source, reason: string(8192), route: enumeration(['quick_task', 'structured_slice', 'structured_delivery']) }),
28
- strictObject({ step: { const: 'review' }, source, decision: enumeration(['pass', 'revise', 'block']) }),
29
- strictObject({ step: { const: 'evidence' }, source, reason: string(8192), covers: string(1024) }),
30
- { oneOf: [strictObject({ step: { const: 'internal' }, source,
31
- internal_step: { const: 'UX Intent Definition' }, decision: enumeration(['ready', 'blocked', 'not_applicable']), reason: string(8192), covers: string(1024),
32
- }, ['step', 'source', 'internal_step', 'decision']), strictObject({ step: { const: 'internal' }, source,
33
- internal_step: enumeration(['Brownfield Analysis', 'CD+Tests', 'TP Review', 'Clean Implementation Review', 'CR']),
34
- decision: enumeration(['pass', 'revise', 'block', 'not_applicable']), reason: string(8192), covers: string(1024),
35
- }, ['step', 'source', 'internal_step', 'decision'])] },
36
- ] };
37
15
 
38
- const spec = (group, payload, owner, effects, confirmation = 'authorized_recording') => ({ group, payload_schema: payload, owner, effects, confirmation });
39
- const proposal = strictObject({ source_gate: enumeration(['UR', 'PRD', 'SD', 'TP']), proposal: source });
40
- const apply = strictObject({ ...proposal.properties, preview_digest: hash, confirmation: string(8192) });
41
- const closeout = strictObject({ or: source, confirmation: string(8192) });
42
- const descriptors = {
43
- 'runtime_generation.replace': spec('agdf_record', strictObject({ candidate: source, confirmation: string(256) }), 'owned-runtime-generation.replace', ['replace only the serving facade own runtime; no Run or gate write'], 'concrete_candidate_digest'),
44
- 'presentation.prepare': spec('agdf_prepare', strictObject({ gate: enumeration(APPROVAL_GATES) }), 'run-presentation.prepareRunPresentation', ['create immutable exact presentation'], 'no_gate_approval'),
45
- 'step.record': spec('agdf_record', recordStep, 'run-steps.recordRunStep', ['register bounded actual internal/evidence result; update Run/backlog']),
46
- 'artefact.record': spec('agdf_record', strictObject({ gate: enumeration(['PRD', 'SD', 'TP', 'QA']), reviewed_request: source }), 'run-artefact-recording.prepareArtefactRecording', ['register reviewed source mapping; replace only unapproved draft']),
47
- 'approval.record': spec('agdf_approve', strictObject({ gate: enumeration(APPROVAL_GATES), presentation_id: identity, response: string(8192) }), 'approval-command.executeApprovalCommand', ['record one exact deliberate gate reply'], 'new_deliberate_exact_reply'),
48
- 'presentation_decision.record': spec('agdf_record', strictObject({ gate: enumeration(APPROVAL_GATES), presentation_id: identity,
49
- action: enumeration(['request_change', 'reject']), comment: { type: 'string', maxLength: 8192 } }),
50
- 'run-steps.recordRunPresentationDecision', ['record one exact deliberate change request or rejection; no gate approval'], 'new_deliberate_bound_human_reply'),
51
- 'source_revision.preview': spec('agdf_revise', proposal, 'run-revision.previewSourceRevision', ['read exact revision impact'], 'no_mutation'),
52
- 'source_revision.apply': spec('agdf_revise', apply, 'run-revision.applySourceRevision', ['archive selected material; invalidate affected decisions; reopen earliest source'], 'exact_material_confirmation'),
53
- 'source_revision.recover': spec('agdf_revise', strictObject({ proposal: source, source_gate: enumeration(['UR', 'PRD', 'SD', 'TP']), recovery_revision_id: identity, pending_digest: hash }), 'run-revision.recoverSourceRevision', ['recover original bounded source revision'], 'original_confirmed_effect'),
54
- 'prd_revision.reopen': spec('agdf_revise', strictObject({ prd: source, confirmation: string(8192) }), 'run-revision.reopenPrdRevision', ['reopen existing early PRD boundary preserving history'], 'exact_material_confirmation'),
55
- 'closeout.record': spec('agdf_closeout', closeout, 'run-steps.recordRunStep', ['publish exact OR; complete selected Run; synchronize selected backlog'], 'exact_material_confirmation'),
56
- 'operation.recover': { ...spec(null, recovery, 'run-step-transaction.recoverPendingRunStep', ['recover original bounded owned outputs and selected backlog'], 'original_confirmed_effect'), groups: ['agdf_record', 'agdf_revise', 'agdf_closeout'] },
57
- };
58
- function freeze(value) { if (value && typeof value === 'object' && !Object.isFrozen(value)) { Object.values(value).forEach(freeze); Object.freeze(value); } return value; }
59
- export const RUN_COMMAND_DESCRIPTORS = freeze(descriptors);
60
- export const RUN_COMMAND_GROUPS = freeze({
61
- agdf_prepare: ['presentation.prepare'], agdf_record: ['step.record', 'artefact.record', 'presentation_decision.record', 'runtime_generation.replace', 'operation.recover'],
62
- agdf_approve: ['approval.record'], agdf_revise: ['source_revision.preview', 'source_revision.apply', 'source_revision.recover', 'prd_revision.reopen', 'operation.recover'],
63
- agdf_closeout: ['closeout.record', 'operation.recover'],
64
- });
65
- const envelope = {
66
- schema_version: { const: RUN_COMMAND_VERSION }, presentation_language: { type: 'string', maxLength: 64, pattern: PRESENTATION_LANGUAGE_TAG_PATTERN_SOURCE },
67
- working_directory: string(), target_source: enumeration(TASK_TARGET_SOURCES), primary_target: string(), target_id: hash,
68
- run_id: { type: 'string', pattern: RUN_ID_PATTERN.source }, expected_revision_id: identity, operation_id: identity,
69
- assurance: { const: 'cooperative_local' },
70
- };
71
- function payloadSchema(group, kind) {
72
- return kind === 'operation.recover' ? strictObject({ ...recovery.properties,
73
- original_kind: enumeration(Object.keys(recoveryGroups).filter(original => recoveryGroups[original] === group)) })
74
- : RUN_COMMAND_DESCRIPTORS[kind].payload_schema;
75
- }
76
- export function commandGroupSchema(group) {
77
- const kinds = RUN_COMMAND_GROUPS[group]; if (!kinds) throw Error('command_group_unsupported');
78
- return strictObject({ ...envelope, command: { oneOf: kinds.map(kind => strictObject({ kind: { const: kind }, payload: payloadSchema(group, kind) })) } });
79
- }
80
- export function commandGroupDefinition(group) {
81
- const definition = { name: group,
82
- description: `${group}: ${RUN_COMMAND_GROUPS[group]?.join(', ')}. Exact target/Run/revision/UUID required. Cooperative caller intent only; tool permission never approves a gate. Inspect operation-contract before use; retry original UUID via operation-status after uncertainty. No VCS.`,
83
- annotations: { readOnlyHint: false, destructiveHint: group !== 'agdf_prepare', idempotentHint: false, openWorldHint: false }, inputSchema: commandGroupSchema(group) };
84
- if (Buffer.byteLength(JSON.stringify(definition)) > RUN_COMMAND_LIMITS.definition_bytes) throw Error('command_definition_budget_exceeded');
85
- return freeze(definition);
86
- }
87
- // A deliberately small schema interpreter over the same generated JSON Schema subset.
88
- // No caller validator, accessor execution, coercion or default-expanded effect is allowed.
89
- export function schemaDiagnostics(value, schema, path = '$') {
90
- const errors = [];
91
- if (schema.oneOf) return schema.oneOf.filter(choice => schemaDiagnostics(value, choice, path).length === 0).length === 1 ? [] : [{ path, code: 'one_of_invalid' }];
92
- if (Object.hasOwn(schema, 'const') && value !== schema.const) errors.push({ path, code: 'constant_invalid' });
93
- if (schema.enum && !schema.enum.includes(value)) errors.push({ path, code: 'enum_invalid' });
94
- if (schema.type === 'object') {
95
- if (value === null || typeof value !== 'object' || Array.isArray(value) || ![Object.prototype, null].includes(Object.getPrototypeOf(value))) return [{ path, code: 'object_required' }];
96
- const keys = Reflect.ownKeys(value);
97
- for (const key of keys) {
98
- if (typeof key !== 'string' || !Object.hasOwn(schema.properties, key)) { errors.push({ path, code: 'unknown_field' }); continue; }
99
- const property = Object.getOwnPropertyDescriptor(value, key);
100
- if (!Object.hasOwn(property, 'value')) { errors.push({ path: `${path}.${key}`, code: 'accessor_forbidden' }); continue; }
101
- errors.push(...schemaDiagnostics(property.value, schema.properties[key], `${path}.${key}`));
102
- }
103
- for (const key of schema.required ?? []) if (!Object.hasOwn(value, key)) errors.push({ path: `${path}.${key}`, code: 'field_required' });
104
- }
105
- if (schema.type === 'string') {
106
- if (typeof value !== 'string') return [...errors, { path, code: 'string_required' }];
107
- if (schema.minLength !== undefined && value.length < schema.minLength || schema.maxLength !== undefined && value.length > schema.maxLength
108
- || schema.pattern && !(new RegExp(schema.pattern, 'u')).test(value)) errors.push({ path, code: 'string_invalid' });
109
- }
110
- return errors;
111
- }
112
- export function validateRunCommand(group, input) {
113
- if (!RUN_COMMAND_GROUPS[group]) return [{ path: '$', code: 'command_group_unsupported' }];
114
- const errors = schemaDiagnostics(input, commandGroupSchema(group));
115
- if (errors.length) return errors;
116
- if (Buffer.byteLength(canonicalJson(input)) > RUN_COMMAND_LIMITS.input_bytes) return [{ path: '$', code: 'command_input_budget_exceeded' }];
117
- const kind = input.command.kind;
118
- if (kind === 'operation.recover' && group !== recoveryGroups[input.command.payload.original_kind]) return [{ path: '$.command.payload.original_kind', code: 'command_group_effect_mismatch' }];
119
- return [];
120
- }
121
- export const runCommandRequestDigest = input => digest(`agdf-run-command/1\0${canonicalJson(input)}`);
122
16
  export function operationContract(group, kind, { gate } = {}) {
123
17
  if (!RUN_COMMAND_GROUPS[group]?.includes(kind)) return { available: false, reason: 'command_group_unsupported' };
124
- return { schema_version: RUN_COMMAND_VERSION, available: true, group, kind, ...RUN_COMMAND_DESCRIPTORS[kind], payload_schema: payloadSchema(group, kind),
125
- schema: strictObject({ ...envelope, command: strictObject({ kind: { const: kind }, payload: payloadSchema(group, kind) }) }), retry_class: 'inspect_original_operation_after_dispatch', assurance: 'cooperative_local',
18
+ return { schema_version: RUN_COMMAND_VERSION, available: true, group, kind, ...RUN_COMMAND_DESCRIPTORS[kind], payload_schema: projectMcpInputSchema(payloadSchema(group, kind)),
19
+ schema: projectMcpInputSchema(describeFields(strictObject({ ...commandEnvelope(group, kind), command: strictObject({ kind: { const: kind }, payload: { ...payloadSchema(group, kind), description: RUN_COMMAND_DESCRIPTORS[kind].effects.join('; ') } }) }))), input_completion: { precedence: 'explicit > confirmed project config > versioned plugin defaults', constants: ['schema_version', 'assurance'], cwd: 'Explicit unless private trustworthy task context exists; current native adapters require it.', core: 'The adapter validates a complete envelope before dispatch; target/Run/revision/UUID/material/reply bindings remain explicit.' }, result_schema: RUN_COMMAND_RESULT_SCHEMA, retry_class: 'inspect_original_operation_after_dispatch', assurance: 'cooperative_local',
126
20
  reference_limits: { input_bytes: RUN_COMMAND_LIMITS.input_bytes, source_file_bytes: 131072, result_bytes: RUN_COMMAND_LIMITS.result_bytes },
21
+ ...(['planned_material.stage', 'planned_ur.create'].includes(kind) ? { planning_capture: {
22
+ applies_to: 'New planned UR creation only. Replacement retains the existing plan_id and current expected_digest.',
23
+ plan_id: 'plan-<planned_ur.create operation_id>', expected_digest: null,
24
+ instructions: 'For a new planned UR, reserve the future planned_ur.create UUID first. Use plan- followed by that exact UUID as planning.plan_id. Begin, append and seal planned_material.stage with the same plan_id and null expected_digest; each material call has its own operation_id. Create with the reserved UUID. Creation source material is the plain canonical UR: omit Planning schema, Planning id and Planning priority lines; the writer adds them from the request. Replacement instead stages the full selected UR with its existing planning metadata. Never use a title/slug as the creation plan_id.',
25
+ } } : {}),
26
+ ...(['material.stage', 'planned_material.stage'].includes(kind) ? { material_transport: { part_bytes: 16384, file_bytes: 131072, set_bytes: 524288, max_sets: 4,
27
+ total_bytes: 2097152, lifetime_ms: 600000, idle_ms: 120000, effect: 'private transfer only; no canonical files or gate decision',
28
+ encoding: 'append data is canonical standard base64 (no whitespace) of raw UTF-8 bytes; bytes and offsets count decoded bytes, not characters',
29
+ replay: 'begin preserves its original UUID; append uses exact offsets/base64 bytes. Seal returns Core identity/digest. Read transfer status after uncertainty; generation loss requires restaging semantic bytes. Preserve the future canonical write UUID.',
30
+ lifecycle: 'A receipt-confirmed canonical commit retires its consumed set; otherwise discard it explicitly or let it expire.' } } : {}),
127
31
  internal_result_formats: kind === 'step.record' ? { 'UX Intent Definition': UX_DECISION_FORMAT,
128
32
  reviews: { declaration: '- decision: pass | revise | block | not_applicable', result_scope: 'actual current owner report; no generated judgement or approval' } } : undefined,
129
- reviewed_request_format: kind === 'artefact.record' ? { ...REVIEWED_REQUEST_FORMAT, current_relationship: relationshipForGate(gate) ?? null,
33
+ reviewed_binding_format: kind === 'artefact.record' ? { ...REVIEWED_BINDING_FORMAT, current_relationship: relationshipForGate(gate) ?? null,
130
34
  destination_status: gate === 'QA' ? 'pass | revise | block matching the actual QA report' : 'draft' } : undefined,
131
35
  proposal_format: kind.startsWith('source_revision.') ? REVISION_PROPOSAL_FORMAT : undefined,
132
- authorizes: false, authoring_format: kind === 'artefact.record' || kind === 'presentation.prepare' || kind === 'step.record'
36
+ ...(kind === 'closeout.record' ? { confirmation_format: closeoutConfirmation('{run_id}', '{expected_revision_id}', '{operation_id}', '{or.digest}'),
37
+ closeout_modes: { quick_task: 'OR-lite: Result, Evidence, Risk, Next Step', verified_change: 'Verified Change Mini-Closeout; retain the same canonical record',
38
+ structured_slice: 'Existing OR-full closeout and its applicable obligations', structured_delivery: 'Existing OR-full closeout and its applicable obligations' } } : {}),
39
+ ...(kind === 'verified_change.record' ? { canonical_receipt_kind: 'step.record', execution: 'Actual edits/tests/Git actions remain external; this writer records their bounded observed result.' } : {}),
40
+ ...(['planned_ur.create', 'planned_ur.replace', 'run.create_from_planned'].includes(kind) ? { planning_capability: { schema: 'planned-ur-v1', protocol_version: 1,
41
+ owner: 'ur-definition', approval: 'none; explicit handoff starts an unapproved Run', metadata: ['Planning schema', 'Planning id', 'Planning priority'],
42
+ priority: ['high', 'normal', 'low'], default_priority: 'normal only on explicit create', source_identity: 'SHA-256 of the whole canonical UR text',
43
+ fields: kind === 'planned_ur.create' ? 'Stage the canonical UR without any Planning schema/id/priority lines. The create writer inserts all three from the request.' : 'Use the selected canonical UR including exactly one initial scalar of each planning metadata field. Planning id remains unchanged on replacement.' },
44
+ authoring_format: UR_AUTHORING_FORMAT } : {}),
45
+ authorizes: false, ...(!kind.startsWith('planned_ur.') && kind !== 'run.create_from_planned' ? { authoring_format: kind === 'closeout.record' ? { quick_task: QUICK_CLOSEOUT_AUTHORING_FORMAT } : kind === 'artefact.record' || kind === 'presentation.prepare' || kind === 'step.record'
133
46
  ? ({ UR: UR_AUTHORING_FORMAT, PRD: { decisions: PRD_DECISION_FORMAT, criteria: ACCEPTANCE_CRITERIA_FORMAT, preview_review: PREVIEW_REVIEW_FORMAT }, SD: SD_DECISION_FORMAT, TP: TP_AUTHORING_FORMAT }[gate] ?? null) : undefined,
47
+ } : {}),
134
48
  presentation_format: kind === 'presentation.prepare' || kind === 'artefact.record' ? {
135
- owner: 'run-presentation-render', compact_brief_fields: ['Goal/Ziel', 'Proposal/Vorschlag or Scope/Umfang', 'Changes/Änderungen', 'Risks/Risiken'],
49
+ owner: 'run-presentation-render', record_version: 6, primary_document: 'one immutable Markdown with the complete source summary exactly once',
136
50
  source: 'source-authored canonical artefact or validated localized AGDF Approval Summary; no adapter paraphrase',
137
- missing_fields: 'retain absence and the complete validated summary; do not fabricate a legacy brief',
138
- delivery: 'native_plus_chat only with qualified native approval and confirmed display on the current user surface; otherwise full_chat; forward one exact decision request. Mac display never proves iPad visibility.',
51
+ missing_fields: 'retain absence; do not fabricate summary fields',
52
+ delivery: 'prepare opens no UI. Optional agdf_decision_view is a non-primary preview. presentation.deliver selects ui_primary only with live exact current-surface display proof, otherwise full_markdown. UI primary gets only a short Chat pointer. Qualification and intent are separate. Replay adds no question; fallback retires UI first.',
139
53
  remote_document: 'presentation-document; exact binding and every cursor; local file links do not prove iPad access',
140
54
  remote_preview: 'presentation-preview; exact binding and every cursor; render only through isolated supported access; unavailable access leaves the review open',
141
55
  } : undefined,