create-agdf 0.20.2 → 0.31.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 (903) hide show
  1. package/README.md +148 -191
  2. package/generated/.agdf/control/README.md +35 -109
  3. package/generated/.agdf/control/planned-urs.md +95 -0
  4. package/generated/.agdf/control/templates/BRAND.md +28 -0
  5. package/generated/.agdf/control/templates/RUN_STATE.md +15 -64
  6. package/generated/.agdf/control/templates/artefacts/PRD.md +11 -0
  7. package/generated/.agdf/control/templates/artefacts/SD.md +4 -0
  8. package/generated/.agdf/control/templates/artefacts/UR.md +1 -1
  9. package/generated/.agdf/control/templates/artefacts/UX_INTENT_DEFINITION.md +1 -1
  10. package/generated/.agents/plugins/marketplace.json +12 -0
  11. package/generated/.opencode/agdf-agent-router.md +3 -3
  12. package/generated/.opencode/agdf-interaction-locales.json +2958 -2682
  13. package/generated/.opencode/contracts/closeout.md +1 -1
  14. package/generated/.opencode/contracts/control-scaffold.md +63 -46
  15. package/generated/.opencode/contracts/gate-artifact-preparation.md +64 -48
  16. package/generated/.opencode/contracts/gate-transition.md +5 -6
  17. package/generated/.opencode/contracts/interaction.md +52 -129
  18. package/generated/.opencode/contracts/modes.md +9 -3
  19. package/generated/.opencode/contracts/prd-definition.md +46 -7
  20. package/generated/.opencode/contracts/quality.md +45 -2
  21. package/generated/.opencode/contracts/request-activation.md +14 -10
  22. package/generated/.opencode/contracts/sd-definition.md +49 -3
  23. package/generated/.opencode/contracts/task-target-resolution.md +24 -0
  24. package/generated/.opencode/contracts/tp-definition.md +9 -1
  25. package/generated/.opencode/contracts/ur-definition.md +50 -12
  26. package/generated/.opencode/skills/agdf-brownfield-analysis/SKILL.md +8 -5
  27. package/generated/.opencode/skills/agdf-clean-implementation-review/SKILL.md +3 -2
  28. package/generated/.opencode/skills/agdf-code-review/SKILL.md +5 -3
  29. package/generated/.opencode/skills/agdf-delivery-closeout/SKILL.md +3 -2
  30. package/generated/.opencode/skills/agdf-delivery-path-search/SKILL.md +3 -2
  31. package/generated/.opencode/skills/agdf-gate-check/SKILL.md +35 -31
  32. package/generated/.opencode/skills/agdf-prd-definition/SKILL.md +3 -2
  33. package/generated/.opencode/skills/agdf-qa-gate/SKILL.md +3 -2
  34. package/generated/.opencode/skills/agdf-release-or/SKILL.md +8 -5
  35. package/generated/.opencode/skills/agdf-sd-definition/SKILL.md +3 -2
  36. package/generated/.opencode/skills/agdf-task-plan-review/SKILL.md +3 -2
  37. package/generated/.opencode/skills/agdf-tp-definition/SKILL.md +3 -2
  38. package/generated/.opencode/skills/agdf-ur-definition/SKILL.md +12 -4
  39. package/generated/.opencode/skills/agdf-ux-intent-definition/SKILL.md +36 -6
  40. package/generated/plugins/agdf/.claude-plugin/plugin.json +3 -2
  41. package/generated/plugins/agdf/.codex-plugin/plugin.json +1 -1
  42. package/generated/plugins/agdf/companion/assignment.mjs +65 -0
  43. package/generated/plugins/agdf/companion/companion.json +4 -0
  44. package/generated/plugins/agdf/companion/events.mjs +117 -0
  45. package/generated/plugins/agdf/companion/figure.mjs +137 -0
  46. package/generated/plugins/agdf/companion/gate-bar.mjs +36 -0
  47. package/generated/plugins/agdf/companion/hooks.json +3 -0
  48. package/generated/plugins/agdf/companion/localization.mjs +67 -0
  49. package/generated/plugins/agdf/companion/notice.mjs +92 -0
  50. package/generated/plugins/agdf/companion/persistence.mjs +36 -0
  51. package/generated/plugins/agdf/companion/register.mjs +630 -0
  52. package/generated/plugins/agdf/companion/run-state.mjs +97 -0
  53. package/generated/plugins/agdf/companion/state.mjs +22 -0
  54. package/generated/plugins/agdf/companion/view.mjs +129 -0
  55. package/generated/plugins/agdf/control/README.md +35 -109
  56. package/generated/plugins/agdf/control/planned-urs.md +95 -0
  57. package/generated/plugins/agdf/control/templates/BRAND.md +28 -0
  58. package/generated/plugins/agdf/control/templates/RUN_STATE.md +15 -64
  59. package/generated/plugins/agdf/control/templates/artefacts/PRD.md +11 -0
  60. package/generated/plugins/agdf/control/templates/artefacts/SD.md +4 -0
  61. package/generated/plugins/agdf/control/templates/artefacts/UR.md +1 -1
  62. package/generated/plugins/agdf/control/templates/artefacts/UX_INTENT_DEFINITION.md +1 -1
  63. package/generated/plugins/agdf/mcp/server/README.md +143 -7
  64. package/generated/plugins/agdf/mcp/server/package.json +12 -7
  65. package/generated/plugins/agdf/mcp/server/src/generation-entry.js +3 -85
  66. package/generated/plugins/agdf/mcp/server/src/generation-protocol.js +2 -44
  67. package/generated/plugins/agdf/mcp/server/src/generation-runtime.js +103 -0
  68. package/generated/plugins/agdf/mcp/server/src/generation-thread-entry.js +8 -0
  69. package/generated/plugins/agdf/mcp/server/src/generation.js +64 -20
  70. package/generated/plugins/agdf/mcp/server/src/main.js +43 -10
  71. package/generated/plugins/agdf/mcp/server/src/next-action.js +227 -0
  72. package/generated/plugins/agdf/mcp/server/src/prepared-call-transport.js +306 -0
  73. package/generated/plugins/agdf/mcp/server/src/safe-read-continuation.js +62 -0
  74. package/generated/plugins/agdf/mcp/server/src/server.js +159 -46
  75. package/generated/plugins/agdf/mcp/server/src/stdio-output.js +42 -0
  76. package/generated/plugins/agdf/mcp/server/src/worker-entry.js +2 -2
  77. package/generated/plugins/agdf/mcp/server/src/worker.js +53 -7
  78. package/generated/plugins/agdf/mcp/server/ui/cockpit.html +31 -31
  79. package/generated/plugins/agdf/mcp/server/ui/decision-manifest.json +3 -3
  80. package/generated/plugins/agdf/mcp/server/ui/decision.html +36 -36
  81. package/generated/plugins/agdf/mcp/server/ui/manifest.json +4 -4
  82. package/generated/plugins/agdf/meta/agdf-agent-router.md +3 -3
  83. package/generated/plugins/agdf/meta/agdf-defaults.json +9 -0
  84. package/generated/plugins/agdf/meta/agdf-defaults.schema.json +20 -0
  85. package/generated/plugins/agdf/meta/agdf-interaction-locales.json +2958 -2682
  86. package/generated/plugins/agdf/meta/agdf-mcp-capability.json +1 -1
  87. package/generated/plugins/agdf/meta/agdf-plugin.definition.json +8 -3
  88. package/generated/plugins/agdf/meta/contracts/closeout.md +1 -1
  89. package/generated/plugins/agdf/meta/contracts/control-scaffold.md +63 -46
  90. package/generated/plugins/agdf/meta/contracts/gate-artifact-preparation.md +64 -48
  91. package/generated/plugins/agdf/meta/contracts/gate-transition.md +5 -6
  92. package/generated/plugins/agdf/meta/contracts/interaction.md +52 -129
  93. package/generated/plugins/agdf/meta/contracts/modes.md +9 -3
  94. package/generated/plugins/agdf/meta/contracts/prd-definition.md +46 -7
  95. package/generated/plugins/agdf/meta/contracts/quality.md +45 -2
  96. package/generated/plugins/agdf/meta/contracts/request-activation.md +14 -10
  97. package/generated/plugins/agdf/meta/contracts/sd-definition.md +49 -3
  98. package/generated/plugins/agdf/meta/contracts/task-target-resolution.md +24 -0
  99. package/generated/plugins/agdf/meta/contracts/tp-definition.md +9 -1
  100. package/generated/plugins/agdf/meta/contracts/ur-definition.md +50 -12
  101. package/generated/plugins/agdf/meta/copilot-payload-baseline.json +3 -3
  102. package/generated/plugins/agdf/meta/distribution-profile-history.json +14 -0
  103. package/generated/plugins/agdf/runtime/agdf-session-check.js +25 -21
  104. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-defaults.json +9 -0
  105. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-defaults.schema.json +20 -0
  106. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-interaction-locales.json +2958 -2682
  107. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-plugin.definition.json +8 -3
  108. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/closeout.md +1 -1
  109. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/control-scaffold.md +63 -46
  110. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/gate-artifact-preparation.md +64 -48
  111. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/gate-transition.md +5 -6
  112. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/interaction.md +52 -129
  113. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/modes.md +9 -3
  114. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/prd-definition.md +46 -7
  115. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/quality.md +45 -2
  116. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/request-activation.md +14 -10
  117. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/sd-definition.md +49 -3
  118. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/task-target-resolution.md +24 -0
  119. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/tp-definition.md +9 -1
  120. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/ur-definition.md +50 -12
  121. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/codex-document-command.js +195 -0
  122. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/command-registry.js +83 -148
  123. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/control-maintenance-command.js +8 -37
  124. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/parse-args.js +101 -16
  125. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/planned-command.js +55 -0
  126. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/project-read-command.js +64 -0
  127. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/run-command-aliases.js +116 -0
  128. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/runtime-context.js +1 -59
  129. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/validation-handlers.js +34 -103
  130. package/generated/plugins/agdf/runtime/create-agdf/lib/control-evaluation/git-observation.js +7 -5
  131. package/generated/plugins/agdf/runtime/create-agdf/lib/control-maintenance/startup.js +2 -2
  132. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-decision-protocol.js +40 -0
  133. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-dispatch-runtime.js +95 -304
  134. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-entry.js +3 -24
  135. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-owner-entry.js +31 -15
  136. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-runtime.js +29 -0
  137. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-thread-entry.js +11 -0
  138. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/owner-client.js +79 -0
  139. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/package.js +21 -80
  140. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/plugin-runtime.js +61 -13
  141. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/prepared-call-journal.js +269 -0
  142. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/thread-owner.js +164 -0
  143. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-owner-protocol.js +1 -0
  144. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-protocol-runtime.js +308 -0
  145. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-worker-runtime.js +155 -0
  146. package/generated/plugins/agdf/runtime/create-agdf/lib/runtime/control-command-service.js +22 -7
  147. package/generated/plugins/agdf/runtime/create-agdf/lib/runtime/control-context.js +8 -1
  148. package/generated/plugins/agdf/runtime/create-agdf/lib/runtime/validator-application.js +2 -2
  149. package/generated/plugins/agdf/runtime/create-agdf/package.json +5 -1
  150. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/companion/events.js +154 -0
  151. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/companion/figure-state.js +36 -0
  152. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/companion/journal.js +180 -0
  153. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/companion/run-view.js +184 -0
  154. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/acceptance-criteria.js +2 -0
  155. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/closeout-readiness.js +34 -8
  156. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/decision-content-placeholder.js +9 -0
  157. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/decision-content-readiness.js +2 -7
  158. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/definition-sources.js +3 -2
  159. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/delivery-map.js +2 -12
  160. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/doctor.js +162 -172
  161. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-check.js +54 -15
  162. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-policy-inputs.js +13 -0
  163. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-policy-pure.js +450 -0
  164. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-policy.js +3 -434
  165. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/next-action.js +2 -0
  166. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/parent-reconciliation.js +2 -1
  167. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/prd-readiness.js +7 -2
  168. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/qa-follow-up.js +2 -1
  169. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/report-decision.js +9 -0
  170. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/required-files.js +9 -7
  171. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-state-policy.js +1 -1
  172. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-state.js +15 -9
  173. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-step-policy.js +2 -1
  174. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-work-summary.js +6 -4
  175. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/shared-value.js +7 -0
  176. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/shared.js +5 -254
  177. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/tp-planning.js +3 -2
  178. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/traceability-readiness.js +57 -8
  179. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/ur-readiness.js +22 -4
  180. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/verified-change.js +11 -9
  181. 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
  182. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/artifact-readiness.js +10 -6
  183. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/authoring-inputs.js +195 -0
  184. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-archive.js +53 -0
  185. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-context.js +2 -1
  186. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-contract.js +11 -4
  187. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-list.d.ts +10 -6
  188. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-list.js +32 -41
  189. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-session.js +8 -8
  190. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-work.js +33 -0
  191. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit.js +72 -57
  192. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/contract.js +164 -32
  193. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/decision-session.js +53 -11
  194. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/doctor-observation.js +91 -0
  195. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/material-recording-calls.js +54 -0
  196. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/project-operation-call.js +5 -0
  197. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/project-state.js +49 -0
  198. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/result.js +61 -0
  199. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/run-classification.js +31 -0
  200. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/selection.js +15 -3
  201. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/service.js +148 -69
  202. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/compatibility.js +42 -132
  203. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/contract.js +5 -5
  204. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/presentation.js +27 -119
  205. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/service.js +9 -37
  206. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-read/cockpit-pool.js +25 -9
  207. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-read/cockpit-worker.js +4 -3
  208. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-read/doctor-reader.js +92 -0
  209. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-read/doctor-worker.js +11 -0
  210. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-read/fs.js +18 -0
  211. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-read/snapshot.js +68 -17
  212. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/aggregate.js +3 -1
  213. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/approval-command.js +13 -10
  214. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/approval-operations.js +10 -7
  215. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/artefact-binding-proof.js +12 -20
  216. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/artefact-bindings.js +10 -7
  217. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/authoring-text-handoff.js +3 -0
  218. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/canonical-initialization.js +761 -0
  219. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/control-layout.js +183 -0
  220. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/decision-action-contract.js +10 -1
  221. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/decision-action-service.js +24 -3
  222. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/decision-material-contract.js +2 -1
  223. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/evidence-bindings.js +7 -7
  224. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/git-identity.js +86 -0
  225. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/index.js +0 -1
  226. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/input-resolution.js +101 -0
  227. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/material-limits.js +4 -0
  228. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-entry.js +273 -0
  229. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-handoff.js +174 -0
  230. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-inventory.js +90 -0
  231. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-origin-reader.js +48 -0
  232. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-origin.js +40 -0
  233. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/prepared-control-calls.js +137 -0
  234. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/presentation-decision.js +12 -7
  235. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/presentation-delivery.js +93 -0
  236. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/preview-render.js +5 -2
  237. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/preview-review.js +3 -2
  238. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/preview-snapshot.js +9 -6
  239. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/recording-formats.js +12 -16
  240. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-artefact-recording.js +54 -66
  241. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-closure.js +343 -0
  242. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-command-contract.js +40 -251
  243. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-command-schema.js +514 -0
  244. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-command-service.js +222 -34
  245. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-create-command.js +60 -0
  246. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-identity.d.ts +14 -0
  247. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-identity.js +42 -0
  248. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-input-resolution.js +72 -0
  249. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-inventory-reader.js +33 -0
  250. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-inventory.js +179 -0
  251. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-material.js +229 -0
  252. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-mutation.js +51 -0
  253. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operation-identity.js +2 -1
  254. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operation-proof.js +7 -4
  255. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operation-status.js +20 -4
  256. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operations.js +70 -13
  257. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-owned-outputs.js +21 -9
  258. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-presentation-envelope.js +25 -33
  259. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-presentation-render.js +92 -35
  260. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-presentation.js +45 -21
  261. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-recording.js +10 -179
  262. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-revision-boundary.js +7 -21
  263. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-revision-history.js +23 -16
  264. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-revision.js +120 -179
  265. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-seal-compute.js +19 -44
  266. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-seal.js +6 -1
  267. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-source-revisions.js +56 -35
  268. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-document.js +110 -42
  269. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-edits.js +13 -5
  270. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-parser.js +14 -6
  271. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-reader.js +37 -21
  272. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-repository.js +112 -48
  273. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-resolver.js +12 -15
  274. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-writer.js +21 -377
  275. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-step-pending.js +2 -1
  276. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-step-transaction.js +125 -114
  277. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-steps.js +142 -251
  278. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-store-inspection.js +14 -2
  279. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-verified-change.js +81 -0
  280. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-work-summary-shape.d.ts +1 -0
  281. 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
  282. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/delivery-continuation/service.js +5 -66
  283. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/delivery-path-search/persistence.js +26 -8
  284. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/delivery-path-search/state-adapter.js +1 -1
  285. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/index.js +16 -6
  286. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/interaction-catalog-validation.js +6 -1
  287. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/interaction-catalog.js +11 -3
  288. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/interaction-presentation.js +55 -12
  289. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/mcp-input-hints.js +75 -0
  290. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/mcp-input-resolution.js +98 -0
  291. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/mcp-input-schema.js +15 -0
  292. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/mcp-resource-contract.js +1 -1
  293. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/mcp-tool-errors.js +33 -15
  294. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/owned-file-lock.js +266 -0
  295. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/owner-placement.js +50 -0
  296. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/resources/canonical-init-plan.js +34 -0
  297. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/resources/configuration.js +92 -0
  298. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/resources/context.js +7 -11
  299. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/resources/language-preference.js +59 -0
  300. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/runtime/mcp-owner-protocol.js +102 -0
  301. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/runtime/plugin-provenance.js +180 -18
  302. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/compact-continuation.js +3 -3
  303. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/contract.js +34 -13
  304. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/delivery-intake.js +14 -6
  305. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/delivery-run-assignment.js +6 -10
  306. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/mcp-continuation.js +87 -0
  307. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/prd-definition.js +17 -7
  308. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/readiness-findings.js +7 -0
  309. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/sd-definition.js +6 -3
  310. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/service.js +66 -18
  311. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/tp-definition.js +6 -3
  312. package/generated/plugins/agdf/runtime/runtime-manifest.json +2 -2
  313. package/generated/plugins/agdf/scripts/check-runtime-integrity.mjs +62 -43
  314. package/generated/plugins/agdf/scripts/instruction-footprint.mjs +5 -5
  315. package/generated/plugins/agdf/skills/brownfield-analysis/SKILL.md +8 -5
  316. package/generated/plugins/agdf/skills/clean-implementation-review/SKILL.md +3 -2
  317. package/generated/plugins/agdf/skills/code-review/SKILL.md +5 -3
  318. package/generated/plugins/agdf/skills/delivery-closeout/SKILL.md +3 -2
  319. package/generated/plugins/agdf/skills/delivery-path-search/SKILL.md +3 -2
  320. package/generated/plugins/agdf/skills/gate-check/SKILL.md +35 -31
  321. package/generated/plugins/agdf/skills/prd-definition/SKILL.md +3 -2
  322. package/generated/plugins/agdf/skills/qa-gate/SKILL.md +3 -2
  323. package/generated/plugins/agdf/skills/release-or/SKILL.md +8 -5
  324. package/generated/plugins/agdf/skills/sd-definition/SKILL.md +3 -2
  325. package/generated/plugins/agdf/skills/task-plan-review/SKILL.md +3 -2
  326. package/generated/plugins/agdf/skills/tp-definition/SKILL.md +3 -2
  327. package/generated/plugins/agdf/skills/ur-definition/SKILL.md +12 -4
  328. package/generated/plugins/agdf/skills/ux-intent-definition/SKILL.md +36 -6
  329. package/generated/plugins/agdf/skills/ux-intent-definition/help.md +8 -1
  330. package/generated/plugins/agdf/submission/openai/availability.md +1 -1
  331. package/generated/plugins/agdf/submission/openai/capability-matrix.json +1 -1
  332. package/generated/plugins/agdf/submission/openai/release-notes.md +9 -1
  333. package/generated/plugins/agdf/submission/openai/reviewer-cases.json +1 -1
  334. package/generated/plugins/agdf-planning/.codex-plugin/plugin.json +40 -0
  335. package/generated/plugins/agdf-planning/README.md +21 -0
  336. package/generated/plugins/agdf-planning/assets/agdf-icon.svg +16 -0
  337. package/generated/plugins/agdf-planning/assets/agdf-logo.svg +16 -0
  338. package/generated/plugins/agdf-planning/meta/agdf-planning.definition.json +9 -0
  339. package/generated/plugins/agdf-planning/plugin.json +45 -0
  340. package/generated/plugins/agdf-planning/skills/planning/SKILL.md +56 -0
  341. package/generated/plugins/copilot/agdf/.agdf-payload-inventory.json +1028 -488
  342. package/generated/plugins/copilot/agdf/control/README.md +35 -109
  343. package/generated/plugins/copilot/agdf/control/planned-urs.md +95 -0
  344. package/generated/plugins/copilot/agdf/control/templates/BRAND.md +28 -0
  345. package/generated/plugins/copilot/agdf/control/templates/RUN_STATE.md +15 -64
  346. package/generated/plugins/copilot/agdf/control/templates/artefacts/PRD.md +11 -0
  347. package/generated/plugins/copilot/agdf/control/templates/artefacts/SD.md +4 -0
  348. package/generated/plugins/copilot/agdf/control/templates/artefacts/UR.md +1 -1
  349. package/generated/plugins/copilot/agdf/control/templates/artefacts/UX_INTENT_DEFINITION.md +1 -1
  350. package/generated/plugins/copilot/agdf/mcp/server/README.md +143 -7
  351. package/generated/plugins/copilot/agdf/mcp/server/package.json +12 -7
  352. package/generated/plugins/copilot/agdf/mcp/server/src/generation-entry.js +3 -85
  353. package/generated/plugins/copilot/agdf/mcp/server/src/generation-protocol.js +2 -44
  354. package/generated/plugins/copilot/agdf/mcp/server/src/generation-runtime.js +103 -0
  355. package/generated/plugins/copilot/agdf/mcp/server/src/generation-thread-entry.js +8 -0
  356. package/generated/plugins/copilot/agdf/mcp/server/src/generation.js +64 -20
  357. package/generated/plugins/copilot/agdf/mcp/server/src/main.js +43 -10
  358. package/generated/plugins/copilot/agdf/mcp/server/src/next-action.js +227 -0
  359. package/generated/plugins/copilot/agdf/mcp/server/src/prepared-call-transport.js +306 -0
  360. package/generated/plugins/copilot/agdf/mcp/server/src/safe-read-continuation.js +62 -0
  361. package/generated/plugins/copilot/agdf/mcp/server/src/server.js +159 -46
  362. package/generated/plugins/copilot/agdf/mcp/server/src/stdio-output.js +42 -0
  363. package/generated/plugins/copilot/agdf/mcp/server/src/worker-entry.js +2 -2
  364. package/generated/plugins/copilot/agdf/mcp/server/src/worker.js +53 -7
  365. package/generated/plugins/copilot/agdf/meta/agdf-agent-router.md +3 -3
  366. package/generated/plugins/copilot/agdf/meta/agdf-plugin.definition.json +8 -3
  367. package/generated/plugins/copilot/agdf/meta/distribution-profile-history.json +14 -0
  368. package/generated/plugins/copilot/agdf/plugin.json +1 -1
  369. package/generated/plugins/copilot/agdf/runtime/agdf-session-check.js +25 -21
  370. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-defaults.json +9 -0
  371. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-defaults.schema.json +20 -0
  372. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-interaction-locales.json +2958 -2682
  373. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-plugin.definition.json +8 -3
  374. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/closeout.md +1 -1
  375. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/control-scaffold.md +63 -46
  376. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/gate-artifact-preparation.md +64 -48
  377. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/gate-transition.md +5 -6
  378. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/interaction.md +52 -129
  379. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/modes.md +9 -3
  380. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/prd-definition.md +46 -7
  381. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/quality.md +45 -2
  382. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/request-activation.md +14 -10
  383. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/sd-definition.md +49 -3
  384. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/task-target-resolution.md +24 -0
  385. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/tp-definition.md +9 -1
  386. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/ur-definition.md +50 -12
  387. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/codex-document-command.js +195 -0
  388. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/command-registry.js +83 -148
  389. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/control-maintenance-command.js +8 -37
  390. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/parse-args.js +101 -16
  391. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/planned-command.js +55 -0
  392. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/project-read-command.js +64 -0
  393. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/run-command-aliases.js +116 -0
  394. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/runtime-context.js +1 -59
  395. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/validation-handlers.js +34 -103
  396. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/control-evaluation/git-observation.js +7 -5
  397. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/control-maintenance/startup.js +2 -2
  398. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-decision-protocol.js +40 -0
  399. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-dispatch-runtime.js +95 -304
  400. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-entry.js +3 -24
  401. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-owner-entry.js +31 -15
  402. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-runtime.js +29 -0
  403. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-thread-entry.js +11 -0
  404. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/owner-client.js +79 -0
  405. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/package.js +21 -80
  406. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/plugin-runtime.js +61 -13
  407. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/prepared-call-journal.js +269 -0
  408. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/thread-owner.js +164 -0
  409. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-owner-protocol.js +1 -0
  410. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-protocol-runtime.js +308 -0
  411. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-worker-runtime.js +155 -0
  412. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/runtime/control-command-service.js +22 -7
  413. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/runtime/control-context.js +8 -1
  414. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/runtime/validator-application.js +2 -2
  415. package/generated/plugins/copilot/agdf/runtime/create-agdf/package.json +5 -1
  416. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/companion/events.js +154 -0
  417. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/companion/figure-state.js +36 -0
  418. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/companion/journal.js +180 -0
  419. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/companion/run-view.js +184 -0
  420. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/acceptance-criteria.js +2 -0
  421. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/closeout-readiness.js +34 -8
  422. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/decision-content-placeholder.js +9 -0
  423. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/decision-content-readiness.js +2 -7
  424. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/definition-sources.js +3 -2
  425. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/delivery-map.js +2 -12
  426. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/doctor.js +162 -172
  427. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-check.js +54 -15
  428. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-policy-inputs.js +13 -0
  429. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-policy-pure.js +450 -0
  430. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-policy.js +3 -434
  431. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/next-action.js +2 -0
  432. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/parent-reconciliation.js +2 -1
  433. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/prd-readiness.js +7 -2
  434. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/qa-follow-up.js +2 -1
  435. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/report-decision.js +9 -0
  436. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/required-files.js +9 -7
  437. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-state-policy.js +1 -1
  438. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-state.js +15 -9
  439. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-step-policy.js +2 -1
  440. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-work-summary.js +6 -4
  441. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/shared-value.js +7 -0
  442. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/shared.js +5 -254
  443. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/tp-planning.js +3 -2
  444. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/traceability-readiness.js +57 -8
  445. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/ur-readiness.js +22 -4
  446. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/verified-change.js +11 -9
  447. 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
  448. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/artifact-readiness.js +10 -6
  449. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/authoring-inputs.js +195 -0
  450. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-archive.js +53 -0
  451. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/contract.js +164 -32
  452. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/doctor-observation.js +91 -0
  453. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/material-recording-calls.js +54 -0
  454. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/project-operation-call.js +5 -0
  455. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/project-state.js +49 -0
  456. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/result.js +61 -0
  457. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/run-classification.js +31 -0
  458. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/selection.js +15 -3
  459. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/service.js +148 -69
  460. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/compatibility.js +42 -132
  461. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/contract.js +5 -5
  462. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/presentation.js +27 -119
  463. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/service.js +9 -37
  464. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-read/cockpit-pool.js +121 -0
  465. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-read/doctor-reader.js +92 -0
  466. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-read/doctor-worker.js +11 -0
  467. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-read/fs.js +18 -0
  468. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-read/snapshot.js +68 -17
  469. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/aggregate.js +3 -1
  470. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/approval-command.js +13 -10
  471. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/approval-operations.js +10 -7
  472. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/artefact-binding-proof.js +12 -20
  473. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/artefact-bindings.js +10 -7
  474. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/authoring-text-handoff.js +3 -0
  475. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/canonical-initialization.js +761 -0
  476. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/control-layout.js +183 -0
  477. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/decision-material-contract.js +2 -1
  478. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/evidence-bindings.js +7 -7
  479. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/git-identity.js +86 -0
  480. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/index.js +0 -1
  481. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/input-resolution.js +101 -0
  482. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/material-limits.js +4 -0
  483. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-entry.js +273 -0
  484. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-handoff.js +174 -0
  485. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-inventory.js +90 -0
  486. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-origin-reader.js +48 -0
  487. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-origin.js +40 -0
  488. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/prepared-control-calls.js +137 -0
  489. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/presentation-decision.js +12 -7
  490. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/presentation-delivery.js +93 -0
  491. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/preview-render.js +5 -2
  492. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/preview-review.js +3 -2
  493. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/preview-snapshot.js +9 -6
  494. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/recording-formats.js +12 -16
  495. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-artefact-recording.js +54 -66
  496. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-closure.js +343 -0
  497. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-command-contract.js +40 -251
  498. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-command-schema.js +514 -0
  499. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-command-service.js +222 -34
  500. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-create-command.js +60 -0
  501. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-identity.d.ts +14 -0
  502. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-identity.js +42 -0
  503. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-input-resolution.js +72 -0
  504. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-inventory-reader.js +33 -0
  505. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-inventory.js +179 -0
  506. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-material.js +229 -0
  507. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-mutation.js +51 -0
  508. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operation-identity.js +2 -1
  509. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operation-proof.js +7 -4
  510. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operation-status.js +20 -4
  511. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operations.js +70 -13
  512. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-owned-outputs.js +21 -9
  513. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-presentation-envelope.js +25 -33
  514. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-presentation-render.js +92 -35
  515. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-presentation.js +45 -21
  516. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-recording.js +10 -179
  517. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-revision-boundary.js +7 -21
  518. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-revision-history.js +23 -16
  519. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-revision.js +120 -179
  520. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-seal-compute.js +19 -44
  521. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-seal.js +6 -1
  522. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-source-revisions.js +56 -35
  523. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-document.js +110 -42
  524. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-edits.js +13 -5
  525. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-parser.js +14 -6
  526. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-reader.js +37 -21
  527. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-repository.js +112 -48
  528. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-resolver.js +12 -15
  529. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-writer.js +21 -377
  530. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-step-pending.js +2 -1
  531. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-step-transaction.js +125 -114
  532. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-steps.js +142 -251
  533. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-store-inspection.js +14 -2
  534. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-verified-change.js +81 -0
  535. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-work-summary-shape.d.ts +1 -0
  536. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/{backlog-summary-shape.js → run-work-summary-shape.js} +7 -19
  537. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/delivery-continuation/service.js +5 -66
  538. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/delivery-path-search/persistence.js +26 -8
  539. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/delivery-path-search/state-adapter.js +1 -1
  540. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/index.js +16 -6
  541. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/interaction-catalog-validation.js +6 -1
  542. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/interaction-catalog.js +11 -3
  543. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/interaction-presentation.js +55 -12
  544. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/mcp-input-hints.js +75 -0
  545. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/mcp-input-resolution.js +98 -0
  546. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/mcp-input-schema.js +15 -0
  547. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/mcp-resource-contract.js +1 -1
  548. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/mcp-tool-errors.js +33 -15
  549. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/owned-file-lock.js +266 -0
  550. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/owner-placement.js +50 -0
  551. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/resources/canonical-init-plan.js +34 -0
  552. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/resources/configuration.js +92 -0
  553. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/resources/context.js +7 -11
  554. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/resources/language-preference.js +59 -0
  555. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/runtime/mcp-owner-protocol.js +102 -0
  556. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/runtime/plugin-provenance.js +180 -18
  557. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/compact-continuation.js +3 -3
  558. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/contract.js +34 -13
  559. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/delivery-intake.js +14 -6
  560. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/delivery-run-assignment.js +6 -10
  561. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/mcp-continuation.js +87 -0
  562. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/prd-definition.js +17 -7
  563. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/readiness-findings.js +7 -0
  564. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/sd-definition.js +6 -3
  565. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/service.js +66 -18
  566. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/tp-definition.js +6 -3
  567. package/generated/plugins/copilot/agdf/runtime/runtime-manifest.json +2 -2
  568. package/generated/plugins/copilot/agdf/skills/agdf-brownfield-analysis/SKILL.md +8 -5
  569. package/generated/plugins/copilot/agdf/skills/agdf-clean-implementation-review/SKILL.md +3 -2
  570. package/generated/plugins/copilot/agdf/skills/agdf-code-review/SKILL.md +5 -3
  571. package/generated/plugins/copilot/agdf/skills/agdf-delivery-closeout/SKILL.md +3 -2
  572. package/generated/plugins/copilot/agdf/skills/agdf-delivery-path-search/SKILL.md +3 -2
  573. package/generated/plugins/copilot/agdf/skills/agdf-gate-check/SKILL.md +35 -31
  574. package/generated/plugins/copilot/agdf/skills/agdf-interaction-locales.json +1 -1
  575. package/generated/plugins/copilot/agdf/skills/agdf-prd-definition/SKILL.md +3 -2
  576. package/generated/plugins/copilot/agdf/skills/agdf-qa-gate/SKILL.md +3 -2
  577. package/generated/plugins/copilot/agdf/skills/agdf-release-or/SKILL.md +8 -5
  578. package/generated/plugins/copilot/agdf/skills/agdf-sd-definition/SKILL.md +3 -2
  579. package/generated/plugins/copilot/agdf/skills/agdf-task-plan-review/SKILL.md +3 -2
  580. package/generated/plugins/copilot/agdf/skills/agdf-tp-definition/SKILL.md +3 -2
  581. package/generated/plugins/copilot/agdf/skills/agdf-ur-definition/SKILL.md +12 -4
  582. package/generated/plugins/copilot/agdf/skills/agdf-ux-intent-definition/SKILL.md +36 -6
  583. package/generated/plugins/copilot/agdf/skills/contracts/closeout.md +1 -1
  584. package/generated/plugins/copilot/agdf/skills/contracts/control-scaffold.md +63 -46
  585. package/generated/plugins/copilot/agdf/skills/contracts/gate-artifact-preparation.md +64 -48
  586. package/generated/plugins/copilot/agdf/skills/contracts/gate-transition.md +5 -6
  587. package/generated/plugins/copilot/agdf/skills/contracts/interaction.md +52 -129
  588. package/generated/plugins/copilot/agdf/skills/contracts/modes.md +9 -3
  589. package/generated/plugins/copilot/agdf/skills/contracts/prd-definition.md +46 -7
  590. package/generated/plugins/copilot/agdf/skills/contracts/quality.md +45 -2
  591. package/generated/plugins/copilot/agdf/skills/contracts/request-activation.md +14 -10
  592. package/generated/plugins/copilot/agdf/skills/contracts/sd-definition.md +49 -3
  593. package/generated/plugins/copilot/agdf/skills/contracts/task-target-resolution.md +24 -0
  594. package/generated/plugins/copilot/agdf/skills/contracts/tp-definition.md +9 -1
  595. package/generated/plugins/copilot/agdf/skills/contracts/ur-definition.md +50 -12
  596. package/generated/submissions/openai/agdf/.codex-plugin/plugin.json +1 -1
  597. package/generated/submissions/openai/agdf/meta/agdf-agent-router.md +3 -3
  598. package/generated/submissions/openai/agdf/meta/agdf-defaults.json +9 -0
  599. package/generated/submissions/openai/agdf/meta/agdf-defaults.schema.json +20 -0
  600. package/generated/submissions/openai/agdf/meta/agdf-interaction-locales.json +2958 -2682
  601. package/generated/submissions/openai/agdf/meta/agdf-plugin.definition.json +8 -3
  602. package/generated/submissions/openai/agdf/meta/contracts/closeout.md +1 -1
  603. package/generated/submissions/openai/agdf/meta/contracts/control-scaffold.md +63 -46
  604. package/generated/submissions/openai/agdf/meta/contracts/gate-artifact-preparation.md +64 -48
  605. package/generated/submissions/openai/agdf/meta/contracts/gate-transition.md +5 -6
  606. package/generated/submissions/openai/agdf/meta/contracts/interaction.md +52 -129
  607. package/generated/submissions/openai/agdf/meta/contracts/modes.md +9 -3
  608. package/generated/submissions/openai/agdf/meta/contracts/prd-definition.md +46 -7
  609. package/generated/submissions/openai/agdf/meta/contracts/quality.md +45 -2
  610. package/generated/submissions/openai/agdf/meta/contracts/request-activation.md +14 -10
  611. package/generated/submissions/openai/agdf/meta/contracts/sd-definition.md +49 -3
  612. package/generated/submissions/openai/agdf/meta/contracts/task-target-resolution.md +24 -0
  613. package/generated/submissions/openai/agdf/meta/contracts/tp-definition.md +9 -1
  614. package/generated/submissions/openai/agdf/meta/contracts/ur-definition.md +50 -12
  615. package/generated/submissions/openai/agdf/meta/copilot-payload-baseline.json +3 -3
  616. package/generated/submissions/openai/agdf/meta/distribution-profile-history.json +14 -0
  617. package/generated/submissions/openai/agdf/plugin.json +1 -1
  618. package/generated/submissions/openai/agdf/skills/brownfield-analysis/SKILL.md +8 -5
  619. package/generated/submissions/openai/agdf/skills/clean-implementation-review/SKILL.md +3 -2
  620. package/generated/submissions/openai/agdf/skills/code-review/SKILL.md +5 -3
  621. package/generated/submissions/openai/agdf/skills/delivery-closeout/SKILL.md +3 -2
  622. package/generated/submissions/openai/agdf/skills/delivery-path-search/SKILL.md +3 -2
  623. package/generated/submissions/openai/agdf/skills/gate-check/SKILL.md +35 -31
  624. package/generated/submissions/openai/agdf/skills/prd-definition/SKILL.md +3 -2
  625. package/generated/submissions/openai/agdf/skills/qa-gate/SKILL.md +3 -2
  626. package/generated/submissions/openai/agdf/skills/release-or/SKILL.md +8 -5
  627. package/generated/submissions/openai/agdf/skills/sd-definition/SKILL.md +3 -2
  628. package/generated/submissions/openai/agdf/skills/task-plan-review/SKILL.md +3 -2
  629. package/generated/submissions/openai/agdf/skills/tp-definition/SKILL.md +3 -2
  630. package/generated/submissions/openai/agdf/skills/ur-definition/SKILL.md +12 -4
  631. package/generated/submissions/openai/agdf/skills/ux-intent-definition/SKILL.md +36 -6
  632. package/generated/submissions/openai/agdf/skills/ux-intent-definition/help.md +8 -1
  633. package/generated/submissions/openai/agdf/submission/openai/availability.md +1 -1
  634. package/generated/submissions/openai/agdf/submission/openai/capability-matrix.json +1 -1
  635. package/generated/submissions/openai/agdf/submission/openai/inventory.json +50 -42
  636. package/generated/submissions/openai/agdf/submission/openai/listing.json +1 -1
  637. package/generated/submissions/openai/agdf/submission/openai/readiness.json +2 -2
  638. package/generated/submissions/openai/agdf/submission/openai/readiness.md +2 -2
  639. package/generated/submissions/openai/agdf/submission/openai/release-notes.md +9 -1
  640. package/generated/submissions/openai/agdf/submission/openai/reviewer-cases.json +1 -1
  641. package/lib/cli/application.js +31 -43
  642. package/lib/cli/codex-document-command.js +195 -0
  643. package/lib/cli/command-registry.js +83 -148
  644. package/lib/cli/control-maintenance-command.js +8 -37
  645. package/lib/cli/parse-args.js +101 -16
  646. package/lib/cli/planned-command.js +55 -0
  647. package/lib/cli/project-init-command.js +21 -0
  648. package/lib/cli/project-read-command.js +64 -0
  649. package/lib/cli/run-command-aliases.js +116 -0
  650. package/lib/cli/runtime-context.js +1 -59
  651. package/lib/cli/validation-handlers.js +34 -103
  652. package/lib/control-evaluation/git-observation.js +7 -5
  653. package/lib/control-maintenance/startup.js +2 -2
  654. package/lib/host-adapters/codex/plugin.js +48 -1
  655. package/lib/install-setup/contract.js +4 -4
  656. package/lib/install-setup/{control-migration.js → control-compatibility.js} +1 -2
  657. package/lib/install-setup/interaction.js +0 -1
  658. package/lib/install-setup/presentation.js +3 -4
  659. package/lib/install-setup/service.js +5 -18
  660. package/lib/installers/local-marketplace.js +262 -8
  661. package/lib/lifecycle/codex-startup-status.js +29 -0
  662. package/lib/lifecycle/presentation.js +6 -0
  663. package/lib/mcp-decision-protocol.js +40 -0
  664. package/lib/mcp-dispatch-runtime.js +95 -304
  665. package/lib/mcp-lifecycle/adapters/codex-origin-probe.js +28 -4
  666. package/lib/mcp-lifecycle/evidence.js +2 -1
  667. package/lib/mcp-lifecycle/facade-entry.js +3 -24
  668. package/lib/mcp-lifecycle/facade-owner-entry.js +31 -15
  669. package/lib/mcp-lifecycle/facade-runtime.js +29 -0
  670. package/lib/mcp-lifecycle/facade-thread-entry.js +11 -0
  671. package/lib/mcp-lifecycle/owner-client.js +79 -0
  672. package/lib/mcp-lifecycle/package.js +21 -80
  673. package/lib/mcp-lifecycle/plugin-runtime.js +61 -13
  674. package/lib/mcp-lifecycle/prepared-call-journal.js +269 -0
  675. package/lib/mcp-lifecycle/service.js +5 -4
  676. package/lib/mcp-lifecycle/thread-owner.js +164 -0
  677. package/lib/mcp-owner-protocol.js +1 -0
  678. package/lib/mcp-protocol-runtime.js +308 -0
  679. package/lib/mcp-worker-runtime.js +155 -0
  680. package/lib/runtime/control-command-service.js +22 -7
  681. package/lib/runtime/control-context.js +8 -1
  682. package/lib/runtime/validator-application.js +2 -2
  683. package/lib/scaffold/canonical-init.js +2 -691
  684. package/lib/scaffold/plan.js +11 -32
  685. package/lib/scaffold/presentation.js +2 -2
  686. package/lib/scaffold/write.js +6 -1
  687. package/package.json +6 -2
  688. package/runtime/core/lib/companion/events.js +154 -0
  689. package/runtime/core/lib/companion/figure-state.js +36 -0
  690. package/runtime/core/lib/companion/journal.js +180 -0
  691. package/runtime/core/lib/companion/run-view.js +184 -0
  692. package/runtime/core/lib/control-evaluation/acceptance-criteria.js +2 -0
  693. package/runtime/core/lib/control-evaluation/closeout-readiness.js +34 -8
  694. package/runtime/core/lib/control-evaluation/decision-content-placeholder.js +9 -0
  695. package/runtime/core/lib/control-evaluation/decision-content-readiness.js +2 -7
  696. package/runtime/core/lib/control-evaluation/definition-sources.js +3 -2
  697. package/runtime/core/lib/control-evaluation/delivery-map.js +2 -12
  698. package/runtime/core/lib/control-evaluation/doctor.js +162 -172
  699. package/runtime/core/lib/control-evaluation/gate-check.js +54 -15
  700. package/runtime/core/lib/control-evaluation/gate-policy-inputs.js +13 -0
  701. package/runtime/core/lib/control-evaluation/gate-policy-pure.js +450 -0
  702. package/runtime/core/lib/control-evaluation/gate-policy.js +3 -434
  703. package/runtime/core/lib/control-evaluation/next-action.js +2 -0
  704. package/runtime/core/lib/control-evaluation/parent-reconciliation.js +2 -1
  705. package/runtime/core/lib/control-evaluation/prd-readiness.js +7 -2
  706. package/runtime/core/lib/control-evaluation/qa-follow-up.js +2 -1
  707. package/runtime/core/lib/control-evaluation/report-decision.js +9 -0
  708. package/runtime/core/lib/control-evaluation/required-files.js +9 -7
  709. package/runtime/core/lib/control-evaluation/run-state-policy.js +1 -1
  710. package/runtime/core/lib/control-evaluation/run-state.js +15 -9
  711. package/runtime/core/lib/control-evaluation/run-step-policy.js +2 -1
  712. package/runtime/core/lib/control-evaluation/run-work-summary.js +6 -4
  713. package/runtime/core/lib/control-evaluation/shared-value.js +7 -0
  714. package/runtime/core/lib/control-evaluation/shared.js +5 -254
  715. package/runtime/core/lib/control-evaluation/tp-planning.js +3 -2
  716. package/runtime/core/lib/control-evaluation/traceability-readiness.js +57 -8
  717. package/runtime/core/lib/control-evaluation/ur-readiness.js +22 -4
  718. package/runtime/core/lib/control-evaluation/verified-change.js +11 -9
  719. 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
  720. package/runtime/core/lib/control-inspect/artifact-readiness.js +10 -6
  721. package/runtime/core/lib/control-inspect/authoring-inputs.js +195 -0
  722. package/runtime/core/lib/control-inspect/cockpit-archive.js +53 -0
  723. package/runtime/core/lib/control-inspect/cockpit-context.js +2 -1
  724. package/runtime/core/lib/control-inspect/cockpit-contract.js +11 -4
  725. package/runtime/core/lib/control-inspect/cockpit-list.d.ts +10 -6
  726. package/runtime/core/lib/control-inspect/cockpit-list.js +32 -41
  727. package/runtime/core/lib/control-inspect/cockpit-session.js +8 -8
  728. package/runtime/core/lib/control-inspect/cockpit-work.js +33 -0
  729. package/runtime/core/lib/control-inspect/cockpit.js +72 -57
  730. package/runtime/core/lib/control-inspect/contract.js +164 -32
  731. package/runtime/core/lib/control-inspect/decision-session.js +53 -11
  732. package/runtime/core/lib/control-inspect/doctor-observation.js +91 -0
  733. package/runtime/core/lib/control-inspect/material-recording-calls.js +54 -0
  734. package/runtime/core/lib/control-inspect/project-operation-call.js +5 -0
  735. package/runtime/core/lib/control-inspect/project-state.js +49 -0
  736. package/runtime/core/lib/control-inspect/result.js +61 -0
  737. package/runtime/core/lib/control-inspect/run-classification.js +31 -0
  738. package/runtime/core/lib/control-inspect/selection.js +15 -3
  739. package/runtime/core/lib/control-inspect/service.js +148 -69
  740. package/runtime/core/lib/control-maintenance/compatibility.js +42 -132
  741. package/runtime/core/lib/control-maintenance/contract.js +5 -5
  742. package/runtime/core/lib/control-maintenance/presentation.js +27 -119
  743. package/runtime/core/lib/control-maintenance/service.js +9 -37
  744. package/runtime/core/lib/control-read/cockpit-pool.js +25 -9
  745. package/runtime/core/lib/control-read/cockpit-worker.js +4 -3
  746. package/runtime/core/lib/control-read/doctor-reader.js +92 -0
  747. package/runtime/core/lib/control-read/doctor-worker.js +11 -0
  748. package/runtime/core/lib/control-read/fs.js +18 -0
  749. package/runtime/core/lib/control-read/snapshot.js +68 -17
  750. package/runtime/core/lib/control-state/aggregate.js +3 -1
  751. package/runtime/core/lib/control-state/approval-command.js +13 -10
  752. package/runtime/core/lib/control-state/approval-operations.js +10 -7
  753. package/runtime/core/lib/control-state/artefact-binding-proof.js +12 -20
  754. package/runtime/core/lib/control-state/artefact-bindings.js +10 -7
  755. package/runtime/core/lib/control-state/authoring-text-handoff.js +3 -0
  756. package/runtime/core/lib/control-state/canonical-initialization.js +761 -0
  757. package/runtime/core/lib/control-state/control-layout.js +183 -0
  758. package/runtime/core/lib/control-state/decision-action-contract.js +10 -1
  759. package/runtime/core/lib/control-state/decision-action-service.js +24 -3
  760. package/runtime/core/lib/control-state/decision-material-contract.js +2 -1
  761. package/runtime/core/lib/control-state/evidence-bindings.js +7 -7
  762. package/runtime/core/lib/control-state/git-identity.js +86 -0
  763. package/runtime/core/lib/control-state/index.js +0 -1
  764. package/runtime/core/lib/control-state/input-resolution.js +101 -0
  765. package/runtime/core/lib/control-state/material-limits.js +4 -0
  766. package/runtime/core/lib/control-state/planned-entry.js +273 -0
  767. package/runtime/core/lib/control-state/planned-handoff.js +174 -0
  768. package/runtime/core/lib/control-state/planned-inventory.js +90 -0
  769. package/runtime/core/lib/control-state/planned-origin-reader.js +48 -0
  770. package/runtime/core/lib/control-state/planned-origin.js +40 -0
  771. package/runtime/core/lib/control-state/prepared-control-calls.js +137 -0
  772. package/runtime/core/lib/control-state/presentation-decision.js +12 -7
  773. package/runtime/core/lib/control-state/presentation-delivery.js +93 -0
  774. package/runtime/core/lib/control-state/preview-render.js +5 -2
  775. package/runtime/core/lib/control-state/preview-review.js +3 -2
  776. package/runtime/core/lib/control-state/preview-snapshot.js +9 -6
  777. package/runtime/core/lib/control-state/recording-formats.js +12 -16
  778. package/runtime/core/lib/control-state/run-artefact-recording.js +54 -66
  779. package/runtime/core/lib/control-state/run-closure.js +343 -0
  780. package/runtime/core/lib/control-state/run-command-contract.js +40 -251
  781. package/runtime/core/lib/control-state/run-command-schema.js +514 -0
  782. package/runtime/core/lib/control-state/run-command-service.js +222 -34
  783. package/runtime/core/lib/control-state/run-create-command.js +60 -0
  784. package/runtime/core/lib/control-state/run-identity.d.ts +14 -0
  785. package/runtime/core/lib/control-state/run-identity.js +42 -0
  786. package/runtime/core/lib/control-state/run-input-resolution.js +72 -0
  787. package/runtime/core/lib/control-state/run-inventory-reader.js +33 -0
  788. package/runtime/core/lib/control-state/run-inventory.js +179 -0
  789. package/runtime/core/lib/control-state/run-material.js +229 -0
  790. package/runtime/core/lib/control-state/run-mutation.js +51 -0
  791. package/runtime/core/lib/control-state/run-operation-identity.js +2 -1
  792. package/runtime/core/lib/control-state/run-operation-proof.js +7 -4
  793. package/runtime/core/lib/control-state/run-operation-status.js +20 -4
  794. package/runtime/core/lib/control-state/run-operations.js +70 -13
  795. package/runtime/core/lib/control-state/run-owned-outputs.js +21 -9
  796. package/runtime/core/lib/control-state/run-presentation-envelope.js +25 -33
  797. package/runtime/core/lib/control-state/run-presentation-render.js +92 -35
  798. package/runtime/core/lib/control-state/run-presentation.js +45 -21
  799. package/runtime/core/lib/control-state/run-recording.js +10 -179
  800. package/runtime/core/lib/control-state/run-revision-boundary.js +7 -21
  801. package/runtime/core/lib/control-state/run-revision-history.js +23 -16
  802. package/runtime/core/lib/control-state/run-revision.js +120 -179
  803. package/runtime/core/lib/control-state/run-seal-compute.js +19 -44
  804. package/runtime/core/lib/control-state/run-seal.js +6 -1
  805. package/runtime/core/lib/control-state/run-source-revisions.js +56 -35
  806. package/runtime/core/lib/control-state/run-state-document.js +110 -42
  807. package/runtime/core/lib/control-state/run-state-edits.js +13 -5
  808. package/runtime/core/lib/control-state/run-state-parser.js +14 -6
  809. package/runtime/core/lib/control-state/run-state-reader.js +37 -21
  810. package/runtime/core/lib/control-state/run-state-repository.js +112 -48
  811. package/runtime/core/lib/control-state/run-state-resolver.js +12 -15
  812. package/runtime/core/lib/control-state/run-state-writer.js +21 -377
  813. package/runtime/core/lib/control-state/run-step-pending.js +2 -1
  814. package/runtime/core/lib/control-state/run-step-transaction.js +125 -114
  815. package/runtime/core/lib/control-state/run-steps.js +142 -251
  816. package/runtime/core/lib/control-state/run-store-inspection.js +14 -2
  817. package/runtime/core/lib/control-state/run-verified-change.js +81 -0
  818. package/runtime/core/lib/control-state/run-work-summary-shape.d.ts +1 -0
  819. 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
  820. package/runtime/core/lib/delivery-continuation/service.js +5 -66
  821. package/runtime/core/lib/delivery-path-search/persistence.js +26 -8
  822. package/runtime/core/lib/delivery-path-search/state-adapter.js +1 -1
  823. package/runtime/core/lib/index.js +16 -6
  824. package/runtime/core/lib/interaction-catalog-validation.js +6 -1
  825. package/runtime/core/lib/interaction-catalog.js +11 -3
  826. package/runtime/core/lib/interaction-presentation.js +55 -12
  827. package/runtime/core/lib/mcp-input-hints.js +75 -0
  828. package/runtime/core/lib/mcp-input-resolution.js +98 -0
  829. package/runtime/core/lib/mcp-input-schema.js +15 -0
  830. package/runtime/core/lib/mcp-resource-contract.js +1 -1
  831. package/runtime/core/lib/mcp-tool-errors.js +33 -15
  832. package/runtime/core/lib/owned-file-lock.js +266 -0
  833. package/runtime/core/lib/owner-placement.js +50 -0
  834. package/runtime/core/lib/resources/canonical-init-plan.js +34 -0
  835. package/runtime/core/lib/resources/configuration.js +92 -0
  836. package/runtime/core/lib/resources/context.js +7 -11
  837. package/runtime/core/lib/resources/language-preference.js +59 -0
  838. package/runtime/core/lib/runtime/mcp-owner-protocol.js +102 -0
  839. package/runtime/core/lib/runtime/plugin-provenance.js +180 -18
  840. package/runtime/core/lib/skill-dispatch/compact-continuation.js +3 -3
  841. package/runtime/core/lib/skill-dispatch/contract.js +34 -13
  842. package/runtime/core/lib/skill-dispatch/delivery-intake.js +14 -6
  843. package/runtime/core/lib/skill-dispatch/delivery-run-assignment.js +6 -10
  844. package/runtime/core/lib/skill-dispatch/mcp-continuation.js +87 -0
  845. package/runtime/core/lib/skill-dispatch/prd-definition.js +17 -7
  846. package/runtime/core/lib/skill-dispatch/readiness-findings.js +7 -0
  847. package/runtime/core/lib/skill-dispatch/sd-definition.js +6 -3
  848. package/runtime/core/lib/skill-dispatch/service.js +66 -18
  849. package/runtime/core/lib/skill-dispatch/tp-definition.js +6 -3
  850. package/generated/.agdf/control/templates/AGDF_RUN.md +0 -139
  851. package/generated/.agdf/control/templates/MASTER_BACKLOG.md +0 -39
  852. package/generated/plugins/agdf/control/templates/AGDF_RUN.md +0 -139
  853. package/generated/plugins/agdf/control/templates/MASTER_BACKLOG.md +0 -39
  854. package/generated/plugins/agdf/runtime/create-agdf/lib/control-maintenance/interaction.js +0 -28
  855. package/generated/plugins/agdf/runtime/create-agdf/lib/control-maintenance/repair.js +0 -4
  856. package/generated/plugins/agdf/runtime/create-agdf/lib/control-maintenance/service.js +0 -3
  857. package/generated/plugins/agdf/runtime/create-agdf/lib/control-state/run-recovery.js +0 -5
  858. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-backlog.js +0 -135
  859. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/interaction.js +0 -57
  860. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/migration.js +0 -85
  861. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/repair.js +0 -226
  862. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/backlog-summary-shape.d.ts +0 -4
  863. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/backlog-summary.js +0 -67
  864. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/legacy-migration.js +0 -69
  865. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/legacy-projection-reader.js +0 -38
  866. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-backlog-writer.js +0 -80
  867. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-backlog.js +0 -90
  868. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-recovery.js +0 -296
  869. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-relationship-correction.js +0 -74
  870. package/generated/plugins/copilot/agdf/control/templates/AGDF_RUN.md +0 -139
  871. package/generated/plugins/copilot/agdf/control/templates/MASTER_BACKLOG.md +0 -39
  872. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/control-maintenance/interaction.js +0 -28
  873. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/control-maintenance/repair.js +0 -4
  874. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/control-maintenance/service.js +0 -3
  875. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/control-state/run-recovery.js +0 -5
  876. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/interaction.js +0 -57
  877. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/migration.js +0 -85
  878. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/repair.js +0 -226
  879. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/backlog-summary-shape.d.ts +0 -4
  880. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/backlog-summary.js +0 -67
  881. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/legacy-migration.js +0 -69
  882. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/legacy-projection-reader.js +0 -38
  883. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-backlog-writer.js +0 -80
  884. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-backlog.js +0 -90
  885. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-recovery.js +0 -296
  886. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-relationship-correction.js +0 -74
  887. package/lib/control-maintenance/interaction.js +0 -28
  888. package/lib/control-maintenance/repair.js +0 -4
  889. package/lib/control-maintenance/service.js +0 -3
  890. package/lib/control-state/run-recovery.js +0 -5
  891. package/lib/install-setup/control-repair.js +0 -1
  892. package/runtime/core/lib/control-inspect/cockpit-backlog.js +0 -135
  893. package/runtime/core/lib/control-maintenance/interaction.js +0 -57
  894. package/runtime/core/lib/control-maintenance/migration.js +0 -85
  895. package/runtime/core/lib/control-maintenance/repair.js +0 -226
  896. package/runtime/core/lib/control-state/backlog-summary-shape.d.ts +0 -4
  897. package/runtime/core/lib/control-state/backlog-summary.js +0 -67
  898. package/runtime/core/lib/control-state/legacy-migration.js +0 -69
  899. package/runtime/core/lib/control-state/legacy-projection-reader.js +0 -38
  900. package/runtime/core/lib/control-state/run-backlog-writer.js +0 -80
  901. package/runtime/core/lib/control-state/run-backlog.js +0 -90
  902. package/runtime/core/lib/control-state/run-recovery.js +0 -296
  903. package/runtime/core/lib/control-state/run-relationship-correction.js +0 -74
@@ -0,0 +1,630 @@
1
+ // AGDF Companion host adapter (SDD-07 to SDD-10; follow-up SDD-05 to SDD-12; companion core SDD-007, SDD-010):
2
+ // the `/agdf-companion` command, the persisted choices, main-loop turn observation, the refresh cadence,
3
+ // the own pane, the status line and toasts. Run state comes only from the plugin runtime's read-only
4
+ // `run-view` command through `$.process`, called on a changed run-file fingerprint, a new journal event
5
+ // of this root or a changed language; the companion imports no Core module. Observation only: no
6
+ // gating hook, every hook passes its event on through a catch path, and nothing is written under
7
+ // .agdf/control. Session state lives in this module and is
8
+ // redrawn through `$.ui.invalidate`. Elements come from the surface table and are built with the
9
+ // host's global `h`.
10
+
11
+ import { assignRun, namedRun, openRuns, stepSelection } from './assignment.mjs';
12
+ import { EVENT_POLL_MS, JOURNAL_FILE, JOURNAL_READ_LIMIT, JOURNAL_ROTATED_FILE, PANE_EVENTS, STICKY_KINDS, TOAST_KINDS, eventText,
13
+ isConfirmed, isStillUncertain, journalDirectory, namedEventText, parseJournal, unseenEvents } from './events.mjs';
14
+ import { figureSvg } from './figure.mjs';
15
+ import { chatLocale, companionLabels, gateTitle, label } from './localization.mjs';
16
+ import { CHIME, chimeClip, noticeText, observeNotice, observedRun, statusText } from './notice.mjs';
17
+ import { STATE_FILE, defaultCompanionState, parseCompanionState, pluginDataDir, serializeCompanionState } from './persistence.mjs';
18
+ import { readSnapshot, settleSnapshot } from './run-state.mjs';
19
+ import { buildPanelView, terminalText } from './view.mjs';
20
+
21
+ export const PANE = 'agdf-companion';
22
+ export const COMMAND = 'agdf-companion';
23
+ export const REFRESH_MS = 30_000;
24
+ export const MENU = 'menu';
25
+ export const ABOUT_URL = 'https://agdf.iself.eu';
26
+ const LISTED_RUNS = 6;
27
+ // The surfaces whose element table has a picker; the mobile app draws none and turns one into an empty
28
+ // box (`claude plugin test` 2.1.302), so its table entry alone does not decide.
29
+ const PICKER_SURFACES = new Set(['terminal', 'desktop', 'vscode']);
30
+ // Body rows the desktop spends around the run list, measured live on 2026-10-28 (a body row is about
31
+ // 28 px): the figure with its state and reason, the framed footer with its picker, the About block,
32
+ // the space between two blocks, and one spare row, since a body taller than the pane scrolls.
33
+ const DESKTOP_ROWS = Object.freeze({ figure: 7, footer: 2, about: 7, gap: 0.6, spare: 1 });
34
+ // Rows the desktop body leaves below the pane's body rows. The T-001 probe of 2026-10-28 showed no
35
+ // scrollbar for a framed footer at 0, 0.25, 0.5 and 1 row in the narrow, widened and taller pane, so
36
+ // the smallest reserve applies (chat-run navigation SDD-08).
37
+ const BODY_RESERVE = 0;
38
+ // Listed runs show their condensed gate bars beside the ids while at least this many characters of an id
39
+ // stay beside the widest bar (owner request of 2026-10-28); a narrower pane lists the ids alone.
40
+ const ID_ROOM = 18;
41
+ const COLOR = Object.freeze({ laeuft: 'suggestion', baut: 'suggestion', wartet: 'warning', blockiert: 'error', fertig: 'success' });
42
+
43
+ function createSession() {
44
+ return { startedAt: 0, root: '', registry: null, labels: null, locale: 'en', statePath: null, dataDir: null, version: null, icon: null,
45
+ choices: defaultCompanionState(), isHidden: false, snapshot: null, isTurnActive: false, isObjectiveExpanded: false,
46
+ isPreviewExpanded: false, isAboutShown: false, isMenuOpen: false, timer: null, eventTimer: null, reads: 0, appliedRead: 0,
47
+ observation: null, chatMention: null, isBrowsing: false, conversation: null,
48
+ // Companion core SDD-007: the run-file fingerprint of the last run-view call, the journal cursor and
49
+ // stamp, this root's events since the last main-loop turn and the drift warnings already announced.
50
+ fingerprint: null, journalCursor: null, journalStamp: null, eventsAvailable: null, events: [], driftSeen: null,
51
+ // Durable events of this root waiting for a fresh run view to confirm them (CR delta review RV-1).
52
+ unconfirmed: [],
53
+ // The start's first read, running beside the host (CR finding B5).
54
+ background: null };
55
+ }
56
+
57
+ // One companion per session: the module is loaded once per session.
58
+ const session = createSession();
59
+ const t = (path, params) => label(session.labels, session.locale, path, params);
60
+ const selection = () => session.choices.selections[session.root] ?? null;
61
+ const redraw = $ => $.ui.invalidate('ui.render');
62
+ // Event toasts name a run only when it is not the run the status line and toasts follow; another run
63
+ // is named by its objective (owner request of 2026-11-06, T-013).
64
+ const eventNaming = () => ({
65
+ shownRunId: observedRun({ snapshot: session.snapshot, sessionStartedAt: session.startedAt, selection: selection(), mention: session.chatMention }).runId ?? null,
66
+ runs: session.snapshot?.status === 'ok' ? session.snapshot.runs : [] });
67
+ // The host loads a hooks module only when every use of `$` is spelled `$.noun.member(...)` at the call
68
+ // site; passing `$.process` itself refuses the whole module (T-013 native check). The run-view reader
69
+ // receives this call-site wrapper instead.
70
+ const processes = $ => ({ run: (argv, init) => $.process.run(argv, init) });
71
+
72
+ // Applies one change to this session's choices and, where the AGDF plugin data directory already
73
+ // exists, to the freshly read state file, so choices another session stored meanwhile survive.
74
+ // Without the directory the choices last for this session (SDD-07). The state file is the module's
75
+ // only write. `change` sets values, never toggles, because it runs on both copies.
76
+ async function persist($, change) {
77
+ change(session.choices);
78
+ if (!session.statePath) return;
79
+ const dir = session.statePath.slice(0, -STATE_FILE.length - 1);
80
+ if (!(await $.fs.exists(dir))) return;
81
+ const stored = (await $.fs.exists(session.statePath)) ? parseCompanionState(await $.fs.read(session.statePath)) : defaultCompanionState();
82
+ change(stored);
83
+ await $.fs.write(session.statePath, serializeCompanionState(stored));
84
+ }
85
+
86
+ // The status line and toasts follow the run-derived state of the run the panel shows without browsing,
87
+ // so browsing never changes them (follow-up SDD-05 to SDD-07; chat-run navigation SDD-06). A stale snapshot keeps the last observation, so a failed read never
88
+ // announces anything. Each host call has its own catch path: a missing channel stays silent (SDD-12).
89
+ function announce($, { quiet = new Set() } = {}) {
90
+ const observed = observedRun({ snapshot: session.snapshot, sessionStartedAt: session.startedAt, selection: selection(),
91
+ mention: session.chatMention });
92
+ // Every applied read sets the line again, unchanged text included: the desktop dropped the one set
93
+ // during session start, before its surface was attached (live finding of 2026-10-27).
94
+ try { $.ui.status(statusText(observed, { labels: session.labels, locale: session.locale })); } catch { /* no status line on this host */ }
95
+ if (session.snapshot?.stale) return;
96
+ const { observation, notice } = observeNotice(session.observation, observed);
97
+ session.observation = observation;
98
+ // A run whose own event raises a toast in the same read gets no second state toast (decision P1).
99
+ if (notice && !quiet.has(observed.runId)) toast($, noticeText(notice, { registry: session.registry, labels: session.labels, locale: session.locale }));
100
+ announceDrift($);
101
+ }
102
+
103
+ // One toast, with the chime only when it was shown; a missing channel stays silent (SDD-12, CR-F01).
104
+ function toast($, text) {
105
+ if (!session.choices.notice) return false;
106
+ try { $.ui.toast(text); } catch { return false; }
107
+ // The chime plays only with a shown toast; a host without a player skips it, a failure stays silent.
108
+ if (session.choices.sound) {
109
+ try { $.audio.play(chimeClip(), { gain: CHIME.gain }).catch(() => {}); } catch { /* no audio on this host */ }
110
+ }
111
+ return true;
112
+ }
113
+
114
+ // A bound document changed after recording raises one toast per change (decision P1, PRD AC-008); the
115
+ // pane keeps the warning while the run view reports it. The first read is a baseline.
116
+ function announceDrift($) {
117
+ if (session.snapshot?.status !== 'ok') return;
118
+ const warnings = session.snapshot.runs.flatMap(run => (run.drift ?? []).map(item => ({ run: run.id, document: item.document,
119
+ key: `${run.id}|${item.path}|${item.current_digest}` })));
120
+ const seen = session.driftSeen;
121
+ session.driftSeen = new Set(warnings.map(item => item.key));
122
+ if (!seen) return;
123
+ const naming = eventNaming();
124
+ for (const item of warnings.filter(warning => !seen.has(warning.key))) toast($, namedEventText(t('events.drift', { document: item.document }), item.run, t, naming));
125
+ }
126
+
127
+ // Switching off clears the status line, forgets the observation and discards reads still running, so
128
+ // switching on starts from a fresh baseline without a toast (CR-F02).
129
+ function silence($) {
130
+ session.observation = null;
131
+ session.appliedRead = session.reads + 1;
132
+ try { $.ui.status(undefined); } catch { /* no status line on this host */ }
133
+ }
134
+
135
+ // Reads the run view of the current project root, which `/cd` or a worktree move can change; a
136
+ // remembered selection is requested by id, so a selected completed run is shown in full.
137
+ // Only the newest of overlapping reads is applied. A snapshot without any runs, as during a branch
138
+ // switch, never drops the remembered selection.
139
+ async function refresh($, { quiet } = {}) {
140
+ const read = ++session.reads;
141
+ try {
142
+ const root = await $.session.root();
143
+ await followConversation($);
144
+ const remembered = session.choices.selections[root];
145
+ // Taken before the call: a change during the call shows up at the next check.
146
+ const ids = fingerprintIds(root);
147
+ const print = await fingerprint($, root, ids);
148
+ const next = await readSnapshot(processes($), { pluginRoot: $.plugin.root, root, language: session.locale,
149
+ runIds: remembered ? [remembered] : [], now: await $.clock.now(), clock: () => $.clock.now() });
150
+ if (read < session.appliedRead) return;
151
+ session.appliedRead = read;
152
+ if (root !== session.root) {
153
+ // Another project root: its drift baseline, pane entries and preview start over (CR finding B3).
154
+ session.driftSeen = null;
155
+ session.events = [];
156
+ session.unconfirmed = [];
157
+ session.isPreviewExpanded = false;
158
+ }
159
+ session.root = root;
160
+ session.snapshot = settleSnapshot(session.snapshot, next);
161
+ if (next.status === 'ok') session.events = session.events.filter(event => !STICKY_KINDS.includes(event.kind) || isStillUncertain(event, next.runs));
162
+ // A changed set of open runs is listed again, so the next check compares like with like. A failed
163
+ // read keeps no fingerprint, so the next check reads again (CR finding B1).
164
+ const after = fingerprintIds(root);
165
+ session.fingerprint = next.status === 'failed' ? null
166
+ : `${session.locale}|${after.join() === ids.join() ? print : await fingerprint($, root, after)}`;
167
+ const chosen = selection();
168
+ if (chosen && next.status === 'ok' && next.runs.length) {
169
+ const { dropSelection } = assignRun({ runs: next.runs, sessionStartedAt: session.startedAt, selection: chosen });
170
+ if (dropSelection && !next.unreadable.some(item => item.id === chosen)) await persist($, choices => { delete choices.selections[root]; });
171
+ }
172
+ } catch (error) {
173
+ if (read < session.appliedRead) return;
174
+ session.appliedRead = read;
175
+ session.fingerprint = null;
176
+ session.snapshot = settleSnapshot(session.snapshot, { status: 'failed', runs: [], unreadable: [], readAt: Date.now(), error: 'unavailable' });
177
+ }
178
+ if (session.choices.enabled) announce($, { quiet });
179
+ redraw($);
180
+ }
181
+
182
+ // The run-file fingerprint (SDD-007): the run folders, `config.json` and, for each open or selected
183
+ // run, its RUN_STATE and documents entries with size and modification time from `$.fs.list`. It reads
184
+ // listings only, never a run file.
185
+ const fingerprintIds = root => [...new Set([...(session.snapshot?.runs ?? []).filter(run => run.lifecycle === 'active').map(run => run.id),
186
+ session.choices.selections[root]].filter(Boolean))].sort();
187
+
188
+ async function fingerprint($, root, ids = fingerprintIds(root)) {
189
+ const list = async path => { try { return await $.fs.list(path); } catch { return null; } };
190
+ const files = entries => (entries ?? []).filter(entry => entry.kind === 'file').map(entry => `${entry.name}:${entry.size}:${entry.mtimeMs}`).sort().join(',');
191
+ const control = `${root}/.agdf/control`;
192
+ const runs = await list(`${control}/runs`);
193
+ const parts = [`config:${files((await list(control))?.filter(entry => entry.name === 'config.json'))}`,
194
+ `runs:${(runs ?? []).map(entry => entry.name).sort().join(',')}`];
195
+ for (const id of ids) parts.push(`${id}:${files(await list(`${control}/runs/${id}`))}|${files(await list(`${control}/runs/${id}/documents`))}`);
196
+ return parts.join(';');
197
+ }
198
+
199
+ // The 30-second check and the check after a main-loop turn (SDD-007): the run view is read again only
200
+ // when the conversation, the root, the language or the run-file fingerprint changed.
201
+ async function check($) {
202
+ try {
203
+ const root = await $.session.root();
204
+ session.locale = await readLocale($, root);
205
+ const conversationChanged = await followConversation($);
206
+ if (!conversationChanged && root === session.root && `${session.locale}|${await fingerprint($, root)}` === session.fingerprint) return false;
207
+ await refresh($);
208
+ return true;
209
+ } catch {
210
+ return false;
211
+ }
212
+ }
213
+
214
+ // Reads the journal (SDD-007): a bounded read of its own file in the plugin data directory, only when
215
+ // its size or time changed. New events of this root are kept for the pane, read the run view once and
216
+ // raise the toasts of decision P1. A missing or unreadable journal shows "events unavailable".
217
+ async function pollEvents($) {
218
+ const available = value => { if (session.eventsAvailable !== value) { session.eventsAvailable = value; redraw($); } };
219
+ try {
220
+ if (!session.dataDir) { available(false); return; }
221
+ // The current root, which `/cd` or a worktree move can change since the last read (CR finding B3).
222
+ const root = await $.session.root();
223
+ if (root !== session.root) await refresh($);
224
+ const directory = journalDirectory(session.dataDir);
225
+ const listing = await $.fs.list(directory);
226
+ const entry = listing.find(item => item.name === JOURNAL_FILE && item.kind === 'file');
227
+ if (!entry || entry.size > JOURNAL_READ_LIMIT) { available(false); return; }
228
+ const stamp = `${entry.size}:${entry.mtimeMs}`;
229
+ let fresh = [];
230
+ if (stamp !== session.journalStamp) {
231
+ let events = parseJournal(await $.fs.read(`${directory}/${JOURNAL_FILE}`));
232
+ // Lines written after the last read but before a rotation sit in the rotation file (CR finding B6).
233
+ const cursorId = session.journalCursor?.id;
234
+ const rotated = listing.find(item => item.name === JOURNAL_ROTATED_FILE && item.kind === 'file');
235
+ if (cursorId && !events.some(event => event.id === cursorId) && rotated && rotated.size <= JOURNAL_READ_LIMIT) {
236
+ events = parseJournal(await $.fs.read(`${directory}/${JOURNAL_ROTATED_FILE}`)).concat(events);
237
+ }
238
+ session.journalStamp = stamp;
239
+ const unseen = unseenEvents(events, { root, cursor: session.journalCursor });
240
+ fresh = unseen.fresh;
241
+ session.journalCursor = unseen.cursor;
242
+ }
243
+ available(true);
244
+ if (!fresh.length && !session.unconfirmed.length) return;
245
+ if (fresh.length) {
246
+ const toasts = fresh.filter(event => TOAST_KINDS.includes(event.kind));
247
+ await refresh($, { quiet: new Set(toasts.map(event => event.run_id)) });
248
+ }
249
+ // A durable fact is shown, in the pane and as a toast, only once the run view confirms it (SD 2,
250
+ // CR finding B4). Without a fresh view it waits for one instead of being dropped (CR delta review
251
+ // RV-1); a fresh view that does not confirm it drops it.
252
+ const current = session.snapshot?.status === 'ok' && !session.snapshot.stale;
253
+ const runs = current ? session.snapshot.runs : [];
254
+ const candidates = session.unconfirmed.concat(fresh);
255
+ const shown = candidates.filter(event => isConfirmed(event, runs));
256
+ session.unconfirmed = current ? [] : candidates.filter(event => !shown.includes(event)).slice(-PANE_EVENTS);
257
+ if (!shown.length) return;
258
+ session.events = [...shown].reverse().concat(session.events).slice(0, PANE_EVENTS);
259
+ if (!session.choices.enabled) { redraw($); return; }
260
+ const gate = value => gateTitle(session.registry, session.locale, value);
261
+ const naming = eventNaming();
262
+ for (const event of shown.filter(item => TOAST_KINDS.includes(item.kind))) toast($, eventText(event, t, { gateTitle: gate, ...naming }));
263
+ redraw($);
264
+ } catch {
265
+ available(false);
266
+ }
267
+ }
268
+
269
+ // Takes the last open run a main-loop text names as the chat's run at host time `at` (chat-run navigation
270
+ // SDD-01, SDD-02). Returns whether a mention was recorded: a repeated name can still move the chat's run
271
+ // back from a later change, so every recorded mention is announced (CR-F02).
272
+ function noteMention(text, at) {
273
+ const runs = session.snapshot?.status === 'ok' ? session.snapshot.runs : [];
274
+ const runId = namedRun(text, openRuns(runs).map(run => run.id));
275
+ if (!runId) return false;
276
+ session.chatMention = { runId, at };
277
+ return true;
278
+ }
279
+
280
+ // A `/clear` or a resumed transcript starts a new conversation without `session.start`: it starts without
281
+ // a chat run and counts changes from its own start (CR-F03). A host without the id keeps the session's.
282
+ async function followConversation($) {
283
+ let conversation = session.conversation;
284
+ try { conversation = await $.session.id(); } catch { /* no conversation id on this host */ }
285
+ const changed = Boolean(session.conversation) && conversation !== session.conversation;
286
+ if (changed) {
287
+ session.chatMention = null;
288
+ session.isBrowsing = false;
289
+ session.observation = null;
290
+ session.startedAt = await $.clock.now();
291
+ }
292
+ session.conversation = conversation;
293
+ return changed;
294
+ }
295
+
296
+ function stopRefreshing() {
297
+ session.timer?.cancel();
298
+ session.eventTimer?.cancel();
299
+ session.timer = null;
300
+ session.eventTimer = null;
301
+ }
302
+
303
+ // The timers are replaced before the first read, so overlapping starts never leave a second one: the
304
+ // journal is read every 2 seconds, the run files are checked every 30 seconds (SDD-007). Events written
305
+ // before the start are history, never announced.
306
+ async function startRefreshing($) {
307
+ stopRefreshing();
308
+ session.journalCursor = { id: null, at: new Date(await $.clock.now()).toISOString() };
309
+ session.journalStamp = null;
310
+ session.eventTimer = $.clock.every(EVENT_POLL_MS, () => { void pollEvents($); });
311
+ session.timer = $.clock.every(REFRESH_MS, () => { void check($); });
312
+ // The first read runs beside the host: session start and the command never wait for the run-view
313
+ // process (CR finding B5); the pane draws "reading" until it lands.
314
+ session.background = (async () => { await refresh($); await pollEvents($); })().catch(() => {});
315
+ return $.ui.open({ id: PANE, title: t('title') });
316
+ }
317
+
318
+ // Settles once the latest background read finished (for the adapter test).
319
+ export const whenIdle = () => session.background ?? Promise.resolve();
320
+
321
+ const openedText = opened => (opened?.isPlaced === false ? t('command.waiting', { reason: opened.reason }) : t('command.enabled'));
322
+
323
+ async function loadSession($) {
324
+ session.startedAt = await $.clock.now();
325
+ session.root = await $.session.root();
326
+ session.registry = JSON.parse(await $.fs.read(`${$.plugin.root}/meta/agdf-interaction-locales.json`));
327
+ session.labels = companionLabels(session.registry);
328
+ session.locale = await readLocale($, session.root);
329
+ // The About entry names the plugin version; a missing or unreadable manifest only leaves it out.
330
+ try {
331
+ const { version } = JSON.parse(await $.fs.read(`${$.plugin.root}/.claude-plugin/plugin.json`));
332
+ session.version = typeof version === 'string' ? version : null;
333
+ } catch { /* no version shown */ }
334
+ // The footer shows the plugin's own AGDF icon; without it the footer starts with the name.
335
+ try {
336
+ const icon = await $.fs.read(`${$.plugin.root}/assets/agdf-icon.svg`);
337
+ session.icon = icon.trimStart().startsWith('<svg') ? icon : null;
338
+ } catch { /* no icon shown */ }
339
+ const dir = pluginDataDir({ configDir: await $.env.get('CLAUDE_CONFIG_DIR'), userProfile: await $.env.get('USERPROFILE'), home: await $.env.get('HOME') });
340
+ session.statePath = dir ? `${dir}/${STATE_FILE}` : null;
341
+ // The MCP server journals below the same plugin data root (companion core SDD-006).
342
+ session.dataDir = dir;
343
+ if (session.statePath && (await $.fs.exists(session.statePath))) session.choices = parseCompanionState(await $.fs.read(session.statePath));
344
+ }
345
+
346
+ // The AGDF chat language of the project; without AGDF control, Claude's own `language` setting
347
+ // (follow-up SDD-11). Read again at every check, so a language change reads the run view again.
348
+ async function readLocale($, root) {
349
+ const config = `${root}/.agdf/control/config.json`;
350
+ const configText = (await $.fs.exists(config)) ? await $.fs.read(config) : null;
351
+ let setting = null;
352
+ if (configText === null) {
353
+ try { setting = await $.settings.read({ key: 'language' }); } catch { /* no setting: the fallback locale */ }
354
+ }
355
+ return chatLocale(session.registry, configText, { setting, labels: session.labels });
356
+ }
357
+
358
+ const wrappedRows = (value, columns) => (value ? Math.ceil(value.length / Math.max(columns, 10)) : 0);
359
+
360
+ // How many open runs the desktop list shows: the body rows left beside the other blocks, never fewer
361
+ // than the terminal's six (the pane then scrolls). One row of them goes to "+ N more" when runs remain.
362
+ export function listCapacity(view, { rows, columns, isAboutShown = false }) {
363
+ const blocks = [view.message, view.hint, view.unreadableHint !== view.message ? view.unreadableHint : null, view.stale,
364
+ ...(view.drift ?? []), ...(view.events ? [view.events.join(' '), ...view.events.map(() => ' ')] : []),
365
+ ...(view.review ? [view.review.summary, view.review.match, ' ', ' '] : []), view.eventsHint].filter(Boolean);
366
+ const fixed = DESKTOP_ROWS.figure + DESKTOP_ROWS.footer + DESKTOP_ROWS.spare + (isAboutShown ? DESKTOP_ROWS.about : 0) + 1
367
+ + blocks.reduce((sum, value) => sum + wrappedRows(value, columns), 0) + DESKTOP_ROWS.gap * (blocks.length + 3);
368
+ return Math.max(LISTED_RUNS, Math.floor(rows - fixed));
369
+ }
370
+
371
+ // A run id shortened in the middle to `room` characters, so its date and sequence stay readable.
372
+ export function fitRunId(id, room) {
373
+ if (id.length <= room) return id;
374
+ const tail = Math.min(12, Math.floor((room - 1) / 2));
375
+ return `${id.slice(0, room - 1 - tail)}…${id.slice(id.length - tail)}`;
376
+ }
377
+
378
+ const press = ($, action) => async () => {
379
+ try { await action(); } catch { /* a failed action leaves the last drawing */ }
380
+ redraw($);
381
+ };
382
+
383
+ function body($, e, view) {
384
+ const { Box, Text, Button, Svg, Link, Select } = $.ui.resolve(e);
385
+ const isTerminal = e.surface === 'terminal' || !Svg;
386
+ const rows = e.props?.scroll?.bodyRows;
387
+ const fits = Number.isInteger(rows) && rows > 0;
388
+ const columns = Number.isInteger(e.props?.bodyColumns) ? e.props.bodyColumns : 40;
389
+ const select = runId => press($, async () => {
390
+ const root = session.root;
391
+ // A pick of another run than the chat's browses until the next main-loop turn (SDD-04, CR-F07).
392
+ if (view.chatRunId) session.isBrowsing = runId !== view.chatRunId;
393
+ await persist($, choices => { choices.selections[root] = runId; });
394
+ await refresh($);
395
+ });
396
+ const step = offset => press($, async () => {
397
+ const next = stepSelection(view.openRuns, view.runId ?? selection(), offset);
398
+ if (next) await select(next)();
399
+ });
400
+ const toggle = key => async () => { const value = !session.choices[key]; await persist($, choices => { choices[key] = value; }); };
401
+ // While another run than the chat's run is shown, the menu offers the way back first (SDD-05).
402
+ const canReturn = Boolean(view.chatRunId) && view.runId !== view.chatRunId;
403
+ const back = async () => { session.isBrowsing = false; };
404
+ const commands = [
405
+ ...(canReturn ? [['chat', t('actions.backToChat'), back]] : []),
406
+ ['still', session.choices.still ? t('actions.stillOff') : t('actions.stillOn'), toggle('still')],
407
+ ['retry', t('actions.retry'), async () => { session.journalStamp = null; await refresh($); await pollEvents($); }],
408
+ ['notice', session.choices.notice ? t('actions.noticeOff') : t('actions.noticeOn'), toggle('notice')],
409
+ ['sound', session.choices.sound ? t('actions.soundOff') : t('actions.soundOn'), toggle('sound')],
410
+ ['about', t('actions.about'), async () => { session.isAboutShown = true; }],
411
+ ];
412
+ // The actions open from the panel's foot (owner requests of 2026-10-28): the AGDF icon, the menu and
413
+ // the read time at the right edge, set off by a dim frame (a dim line on the terminal). Where the
414
+ // surface has a picker, the app draws the open menu itself as a popover above the footer; the picker
415
+ // always shows its neutral entry, the name, so every pick runs its action. The mobile app draws no
416
+ // picker and gets the name as a plain button that opens the entries above the footer.
417
+ const hasPicker = Boolean(Select) && PICKER_SURFACES.has(e.surface);
418
+ const run = action => press($, async () => { session.isMenuOpen = false; await action(); });
419
+ const trigger = hasPicker
420
+ ? h(Select, { key: MENU, value: MENU, options: [{ value: MENU, label: t('title') }, ...commands.map(([value, text]) => ({ value, label: text }))],
421
+ onSelect: value => { const command = commands.find(([key]) => key === value); return command ? run(command[2])() : undefined; } })
422
+ : h(Button, { key: MENU, plain: true, label: `${t('title')} ${session.isMenuOpen ? '▴' : '▾'}`,
423
+ onPress: press($, async () => { session.isMenuOpen = !session.isMenuOpen; }) });
424
+ const entries = !hasPicker && session.isMenuOpen
425
+ ? h(Box, { flexDirection: 'column', alignItems: 'flex-start', ...(isTerminal ? {} : { borderStyle: 'single', borderDimColor: true, paddingX: 1 }) },
426
+ ...commands.map(([key, text, action]) => h(Button, { key, plain: true, label: text, onPress: run(action) })))
427
+ : null;
428
+ const footer = h(Box, { flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center', gap: 1,
429
+ ...(isTerminal ? {} : { borderStyle: 'single', borderDimColor: true, paddingX: 1 }) },
430
+ h(Box, { flexDirection: 'row', alignItems: 'center', gap: 1, flexShrink: 1 },
431
+ !isTerminal && session.icon ? h(Svg, { source: session.icon, alt: 'AGDF', width: 20, height: 20 }) : null,
432
+ trigger),
433
+ view.readAt ? h(Box, { flexShrink: 0 }, h(Text, { dimColor: true }, view.readAt)) : null);
434
+ const actions = h(Box, { flexDirection: 'column', gap: isTerminal ? 0 : 1, flexShrink: 0 }, entries,
435
+ isTerminal ? h(Text, { dimColor: true }, '─'.repeat(Math.min(columns, 40))) : null, footer);
436
+ const about = session.isAboutShown ? h(Box, { flexDirection: 'column' },
437
+ h(Text, { weight: 'semibold' }, t('title')),
438
+ h(Text, { dimColor: true }, t('about.text')),
439
+ session.version ? h(Text, { dimColor: true }, t('about.version', { version: session.version })) : null,
440
+ Link ? h(Link, { href: ABOUT_URL, label: ABOUT_URL.slice('https://'.length) }) : h(Text, {}, ABOUT_URL),
441
+ h(Button, { key: 'about-close', plain: true, label: t('actions.closeAbout'), onPress: press($, async () => { session.isAboutShown = false; }) })) : null;
442
+ const capacity = !isTerminal && fits ? listCapacity(view, { rows: rows - BODY_RESERVE, columns, isAboutShown: session.isAboutShown }) : LISTED_RUNS;
443
+ // The terminal keeps its six; the desktop lists as many as fit and gives the last row to "+ N more".
444
+ const listed = isTerminal ? view.openRuns.slice(0, LISTED_RUNS)
445
+ : view.openRuns.length <= capacity ? view.openRuns : view.openRuns.slice(0, capacity - 1);
446
+ // One listed run: the id as a plain button and, where the pane has room for the widest listed bar, its
447
+ // condensed gate bar at the right edge, every id shortened to the same room (the same rule for all rows,
448
+ // live check of 2026-10-28). The bar keeps its width; an id that still runs over is cut by the surface.
449
+ const widest = Math.max(0, ...listed.map(run => run.bar?.length ?? 0));
450
+ const room = columns - widest - 2;
451
+ const withBars = widest > 0 && room >= ID_ROOM;
452
+ const runRow = run => {
453
+ const id = h(Button, { key: `run-${run.id}`, plain: true, label: withBars ? fitRunId(run.id, room) : run.id, onPress: select(run.id) });
454
+ return withBars && run.bar
455
+ ? h(Box, { flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center', gap: 1 },
456
+ h(Box, { flexShrink: 1 }, id), h(Box, { flexShrink: 0 }, h(Text, { dimColor: true, mono: true }, run.bar)))
457
+ : id;
458
+ };
459
+ // The stepping row stands under every shown run, the chat's run included (SDD-04).
460
+ const runList = view.openRuns.length
461
+ ? (view.runId
462
+ // The count has its own line, so the two stepping buttons fit the default width. The desktop
463
+ // draws a Button's label, which also names it, so the label is the visible localized text.
464
+ ? h(Box, { flexDirection: 'column' },
465
+ h(Text, { dimColor: true }, view.openCount),
466
+ h(Box, { flexDirection: 'row', gap: 1, alignItems: 'center' },
467
+ h(Button, { key: 'previous', label: t('actions.previous'), onPress: step(-1) }),
468
+ h(Button, { key: 'next', label: t('actions.next'), onPress: step(1) })),
469
+ canReturn ? h(Button, { key: 'chat-return', plain: true, label: t('actions.backToChat'), onPress: press($, back) }) : null)
470
+ : h(Box, { flexDirection: 'column' },
471
+ h(Text, { dimColor: true }, view.openCount),
472
+ ...listed.map(runRow),
473
+ !isTerminal && view.openRuns.length > listed.length ? h(Text, { dimColor: true }, t('fields.moreRuns', { count: view.openRuns.length - listed.length })) : null))
474
+ : null;
475
+ if (isTerminal) {
476
+ return h(Box, { flexDirection: 'column', gap: 1 },
477
+ h(Text, { color: COLOR[view.mood] }, terminalText(view, { labels: session.labels, locale: session.locale })), runList, about, actions);
478
+ }
479
+ const figure = h(Svg, { source: figureSvg(view.mood, { still: session.choices.still, title: `${view.title}: ${view.stateLabel}` }),
480
+ alt: `${view.title}: ${view.stateLabel}`, width: 200, height: 140, isInteractive: !session.choices.still });
481
+ // The body is as tall as the pane's body rows less the probed reserve and the content grows, so the
482
+ // footer sits at the bottom edge; a taller body scrolls with the footer last (live probes of
483
+ // 2026-10-28: a cell count sizes the body, a percentage does not; SDD-08).
484
+ return h(Box, { flexDirection: 'column', gap: 1, ...(fits ? { minHeight: rows - BODY_RESERVE } : {}) }, h(Box, { flexDirection: 'column', gap: 1, flexGrow: 1 },
485
+ h(Box, { flexDirection: 'column', alignItems: 'center' },
486
+ figure,
487
+ h(Text, { color: COLOR[view.mood], size: 'heading', weight: 'bold' }, view.stateLabel),
488
+ view.reason ? h(Text, { dimColor: true, wrap: 'truncate-end' }, view.reason) : null),
489
+ view.message ? h(Text, {}, view.message) : null,
490
+ view.hint ? h(Text, { dimColor: true }, view.hint) : null,
491
+ view.unreadableHint && view.unreadableHint !== view.message ? h(Text, { color: 'warning' }, view.unreadableHint) : null,
492
+ view.gateBar ? h(Text, { mono: true, wrap: 'truncate-end' }, view.gateBar) : null,
493
+ view.runId ? h(Box, { flexDirection: 'column' },
494
+ h(Text, { weight: 'semibold', wrap: 'truncate-end' }, view.runId),
495
+ view.origin ? h(Text, { dimColor: true }, view.origin) : null) : null,
496
+ view.objective ? h(Box, { flexDirection: 'row', gap: 1, alignItems: 'center' },
497
+ h(Text, { dimColor: true, wrap: view.isObjectiveExpanded ? 'wrap' : 'truncate-end' }, view.objective),
498
+ h(Button, { key: 'objective', plain: true, label: view.isObjectiveExpanded ? t('actions.collapse') : t('actions.expand'),
499
+ onPress: press($, async () => { session.isObjectiveExpanded = !session.isObjectiveExpanded; }) })) : null,
500
+ view.nextStep ? h(Box, { flexDirection: 'column' },
501
+ h(Text, { dimColor: true }, t('fields.nextStep')),
502
+ h(Text, {}, view.nextStep)) : null,
503
+ ...(view.drift ?? []).map(text => h(Text, { color: 'warning' }, text)),
504
+ view.events ? h(Box, { flexDirection: 'column' },
505
+ h(Text, { dimColor: true }, t('fields.events')),
506
+ ...view.events.map(line => h(Text, { wrap: 'truncate-end' }, line))) : null,
507
+ view.review ? h(Box, { flexDirection: 'column' },
508
+ h(Text, { dimColor: true }, t('fields.material')),
509
+ h(Text, {}, `${view.review.summary} · ${view.review.match}`),
510
+ view.review.preview ? h(Text, { mono: true, dimColor: true, wrap: session.isPreviewExpanded ? 'wrap' : 'truncate-end' },
511
+ session.isPreviewExpanded ? view.review.preview : view.review.preview.split('\n')[0]) : null,
512
+ view.review.preview ? h(Button, { key: 'preview', plain: true, label: session.isPreviewExpanded ? t('actions.collapse') : t('actions.expand'),
513
+ onPress: press($, async () => { session.isPreviewExpanded = !session.isPreviewExpanded; }) }) : null,
514
+ view.review.truncated ? h(Text, { dimColor: true }, view.review.truncated) : null) : null,
515
+ view.eventsHint ? h(Text, { dimColor: true }, view.eventsHint) : null,
516
+ runList,
517
+ view.stale ? h(Text, { color: 'warning' }, view.stale) : null,
518
+ about),
519
+ actions);
520
+ }
521
+
522
+ // Each registration carries a `.catch` that passes the event on, so even an overrun or a
523
+ // misreturn leaves the host's own behaviour in place (SDD-10).
524
+ const passOn = ($, e, next) => next(e);
525
+
526
+ export const register = on => {
527
+ on('session.start', async ($, e, next) => {
528
+ try {
529
+ await loadSession($);
530
+ await $.command.register({ name: COMMAND, description: t('command.description'), immediate: true });
531
+ if (session.choices.enabled) await startRefreshing($);
532
+ } catch { /* the companion stays unavailable; AGDF is unaffected (SDD-10) */ }
533
+ return next(e);
534
+ }).catch(passOn);
535
+
536
+ on('command.run', { command: COMMAND }, async $ => {
537
+ try {
538
+ // A pane the person hid for this session comes back; the stored choice stays as it is.
539
+ if (session.choices.enabled && session.isHidden) {
540
+ session.isHidden = false;
541
+ return { text: openedText(await startRefreshing($)) };
542
+ }
543
+ const enabled = !session.choices.enabled;
544
+ if (!enabled) {
545
+ // Reading, the status line and the pane stop before the choice is stored, so a failing write
546
+ // leaves none of them running (CR-F03); the choice is stored even if closing the pane fails.
547
+ stopRefreshing();
548
+ silence($);
549
+ try {
550
+ await $.ui.close({ id: PANE });
551
+ } finally {
552
+ await persist($, choices => { choices.enabled = false; });
553
+ }
554
+ return { text: t('command.disabled') };
555
+ }
556
+ await persist($, choices => { choices.enabled = true; });
557
+ session.isHidden = false;
558
+ return { text: openedText(await startRefreshing($)) };
559
+ } catch (error) {
560
+ return { text: `${COMMAND}: ${String(error?.message ?? error).slice(0, 200)}` };
561
+ }
562
+ }).catch(() => ({ text: `${COMMAND}: unavailable` }));
563
+
564
+ on('turn.start', async ($, e, next) => {
565
+ try {
566
+ if (e.agentId === undefined && session.choices.enabled) {
567
+ // A main-loop turn ends browsing and may name the chat's run (chat-run navigation SDD-02, SDD-04);
568
+ // the host clock is read beside the event, never before it is passed on (SDD-11).
569
+ session.isBrowsing = false;
570
+ // Pane entries of events clear at the next main-loop turn (PRD state transitions); an uncertain
571
+ // outcome stays until its run recorded a later operation (CR finding B7).
572
+ session.events = session.events.filter(event => STICKY_KINDS.includes(event.kind));
573
+ if (!session.isHidden) session.isTurnActive = true;
574
+ redraw($);
575
+ const prompt = e.text;
576
+ void $.clock.now().then(at => { if (noteMention(prompt, at)) { announce($); redraw($); } }).catch(() => {});
577
+ }
578
+ } catch { /* observation only */ }
579
+ return next(e);
580
+ }).catch(passOn);
581
+
582
+ on('turn.complete', async ($, e, next) => {
583
+ const answered = await next(e);
584
+ try {
585
+ if (e.agentId === undefined) {
586
+ // Cleared on every main-loop completion, also while switched off, so no stale overlay remains.
587
+ session.isTurnActive = false;
588
+ // The check runs after the host has its answer, never inside the hook; a hidden pane keeps
589
+ // the status line and toasts current (follow-up SDD-08). It reads the journal and, on a
590
+ // changed run-file fingerprint, the run view (SDD-007); the turn overlay ends with a redraw
591
+ // either way. The turn's final answer (`e.answer`, else the text `next(e)` returned) is matched
592
+ // at the turn's end time, so a run created during the turn counts (CR-F05, CR-F06).
593
+ if (session.choices.enabled) {
594
+ const answer = typeof e.answer === 'string' ? e.answer : answered?.text;
595
+ void (async () => {
596
+ const at = await $.clock.now();
597
+ await pollEvents($);
598
+ if (!(await check($))) redraw($);
599
+ if (session.choices.enabled && noteMention(answer, at)) { announce($); redraw($); }
600
+ })().catch(() => {});
601
+ }
602
+ }
603
+ } catch { /* observation only */ }
604
+ return answered;
605
+ }).catch(passOn);
606
+
607
+ // Closing the pane by its own mark hides only the pane for this session (SDD-07); reading goes on
608
+ // for the status line and toasts until the companion is switched off (follow-up SDD-08). The host
609
+ // stamps `origin` as `{ kind: 'plugin' | 'person' | 'unload' }`.
610
+ on('ui.close', { id: PANE }, async ($, e, next) => {
611
+ try {
612
+ if (e.origin?.kind === 'person') session.isHidden = true;
613
+ } catch { /* observation only */ }
614
+ return next(e);
615
+ }).catch(passOn);
616
+
617
+ // A logic failure draws a neutral line instead of the panel; it never throws into the host.
618
+ on('ui.render', { component: 'Pane', requestId: PANE }, async ($, e) => {
619
+ try {
620
+ return body($, e, buildPanelView({ snapshot: session.snapshot, sessionStartedAt: session.startedAt, selection: selection(),
621
+ mention: session.chatMention, isBrowsing: session.isBrowsing,
622
+ isTurnActive: session.isTurnActive, registry: session.registry, labels: session.labels, locale: session.locale,
623
+ columns: e.props?.bodyColumns ?? Infinity, isObjectiveExpanded: session.isObjectiveExpanded,
624
+ events: session.events, eventsAvailable: session.eventsAvailable ?? undefined }));
625
+ } catch (error) {
626
+ const { Text } = $.ui.resolve(e);
627
+ return h(Text, { dimColor: true }, `AGDF Companion: ${String(error?.message ?? error).slice(0, 200)}`);
628
+ }
629
+ });
630
+ };