@intentius/chant 0.56.0 → 0.58.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 (515) hide show
  1. package/dist/audit/catalog.d.ts +51 -1
  2. package/dist/audit/catalog.d.ts.map +1 -1
  3. package/dist/audit/core.d.ts +20 -1
  4. package/dist/audit/core.d.ts.map +1 -1
  5. package/dist/audit/discover.d.ts +14 -8
  6. package/dist/audit/discover.d.ts.map +1 -1
  7. package/dist/audit/lineage.d.ts +10 -0
  8. package/dist/audit/lineage.d.ts.map +1 -0
  9. package/dist/audit/prior-art.d.ts +385 -0
  10. package/dist/audit/prior-art.d.ts.map +1 -0
  11. package/dist/audit/proof.d.ts +16 -0
  12. package/dist/audit/proof.d.ts.map +1 -1
  13. package/dist/audit/report-html.d.ts.map +1 -1
  14. package/dist/audit/report-model.d.ts +8 -1
  15. package/dist/audit/report-model.d.ts.map +1 -1
  16. package/dist/audit/report.d.ts.map +1 -1
  17. package/dist/audit/rules-doc.d.ts +3 -0
  18. package/dist/audit/rules-doc.d.ts.map +1 -1
  19. package/dist/audit/secrets.d.ts +15 -0
  20. package/dist/audit/secrets.d.ts.map +1 -1
  21. package/dist/audit/terraform-state.d.ts +46 -0
  22. package/dist/audit/terraform-state.d.ts.map +1 -0
  23. package/dist/build.d.ts +17 -1
  24. package/dist/build.d.ts.map +1 -1
  25. package/dist/claimed-fields.d.ts +161 -0
  26. package/dist/claimed-fields.d.ts.map +1 -0
  27. package/dist/cli/build-params-cli.d.ts +2 -2
  28. package/dist/cli/command-group.d.ts +14 -0
  29. package/dist/cli/command-group.d.ts.map +1 -1
  30. package/dist/cli/commands/audit.d.ts +17 -1
  31. package/dist/cli/commands/audit.d.ts.map +1 -1
  32. package/dist/cli/commands/build.d.ts.map +1 -1
  33. package/dist/cli/commands/check-lexicon-docs.d.ts +1 -1
  34. package/dist/cli/commands/check-lexicon-examples.d.ts +16 -6
  35. package/dist/cli/commands/check-lexicon-examples.d.ts.map +1 -1
  36. package/dist/cli/commands/import.d.ts.map +1 -1
  37. package/dist/cli/commands/init-lexicon/templates/codegen.d.ts +1 -0
  38. package/dist/cli/commands/init-lexicon/templates/codegen.d.ts.map +1 -1
  39. package/dist/cli/commands/init-lexicon/templates/project.d.ts +7 -0
  40. package/dist/cli/commands/init-lexicon/templates/project.d.ts.map +1 -1
  41. package/dist/cli/commands/init-lexicon.d.ts.map +1 -1
  42. package/dist/cli/commands/init.d.ts.map +1 -1
  43. package/dist/cli/commands/lint.d.ts.map +1 -1
  44. package/dist/cli/commands/onboard.d.ts +2 -0
  45. package/dist/cli/commands/onboard.d.ts.map +1 -1
  46. package/dist/cli/handlers/build.d.ts.map +1 -1
  47. package/dist/cli/handlers/lifecycle.d.ts.map +1 -1
  48. package/dist/cli/handlers/operator.d.ts +82 -16
  49. package/dist/cli/handlers/operator.d.ts.map +1 -1
  50. package/dist/cli/handlers/run.d.ts +49 -42
  51. package/dist/cli/handlers/run.d.ts.map +1 -1
  52. package/dist/cli/main.d.ts +28 -1
  53. package/dist/cli/main.d.ts.map +1 -1
  54. package/dist/cli/mcp/op-tools.d.ts +16 -1
  55. package/dist/cli/mcp/op-tools.d.ts.map +1 -1
  56. package/dist/cli/mcp/resource-handlers.d.ts.map +1 -1
  57. package/dist/cli/mcp/resources/context.d.ts.map +1 -1
  58. package/dist/cli/registry.d.ts +26 -9
  59. package/dist/cli/registry.d.ts.map +1 -1
  60. package/dist/codegen/generate-post-synth-barrel.d.ts +1 -1
  61. package/dist/components/auto-release.d.ts +10 -20
  62. package/dist/components/auto-release.d.ts.map +1 -1
  63. package/dist/components/capability.d.ts +4 -4
  64. package/dist/components/cli-support.d.ts +20 -21
  65. package/dist/components/cli-support.d.ts.map +1 -1
  66. package/dist/components/component.d.ts +3 -3
  67. package/dist/components/component.d.ts.map +1 -1
  68. package/dist/components/driver-output.d.ts.map +1 -1
  69. package/dist/components/driver.d.ts +66 -36
  70. package/dist/components/driver.d.ts.map +1 -1
  71. package/dist/components/index.d.ts +1 -2
  72. package/dist/components/index.d.ts.map +1 -1
  73. package/dist/components/manifest-persistence.d.ts +1 -9
  74. package/dist/components/manifest-persistence.d.ts.map +1 -1
  75. package/dist/components/run-progress.d.ts +6 -6
  76. package/dist/components/run-progress.d.ts.map +1 -1
  77. package/dist/components/verbs/run-agent.d.ts +9 -15
  78. package/dist/components/verbs/run-agent.d.ts.map +1 -1
  79. package/dist/components/verbs/verify.d.ts +2 -2
  80. package/dist/deep-observation.d.ts +17 -0
  81. package/dist/deep-observation.d.ts.map +1 -1
  82. package/dist/discovery/files.d.ts +4 -4
  83. package/dist/discovery/fold-import.d.ts.map +1 -1
  84. package/dist/discovery/param-deps.d.ts +33 -0
  85. package/dist/discovery/param-deps.d.ts.map +1 -1
  86. package/dist/discovery/sandbox/bundle.d.ts.map +1 -1
  87. package/dist/discovery/sandbox/config-wire.d.ts +2 -2
  88. package/dist/fold/foldable-helpers.d.ts +5 -1
  89. package/dist/fold/foldable-helpers.d.ts.map +1 -1
  90. package/dist/fold-provenance.d.ts +236 -0
  91. package/dist/fold-provenance.d.ts.map +1 -0
  92. package/dist/graph-ops.d.ts +1 -1
  93. package/dist/held-elsewhere.d.ts +85 -0
  94. package/dist/held-elsewhere.d.ts.map +1 -0
  95. package/dist/import/ir-utils.d.ts +1 -1
  96. package/dist/import/ir-utils.d.ts.map +1 -1
  97. package/dist/import/parser.d.ts +33 -0
  98. package/dist/import/parser.d.ts.map +1 -1
  99. package/dist/index.d.ts +3 -0
  100. package/dist/index.d.ts.map +1 -1
  101. package/dist/kubectl-context.d.ts +3 -3
  102. package/dist/lexicon-config.d.ts +4 -4
  103. package/dist/lexicon-plugin-helpers.d.ts +1 -1
  104. package/dist/lexicon.d.ts +104 -14
  105. package/dist/lexicon.d.ts.map +1 -1
  106. package/dist/lifecycle/change-set.d.ts +13 -0
  107. package/dist/lifecycle/change-set.d.ts.map +1 -1
  108. package/dist/lifecycle/deep-diff.d.ts +133 -6
  109. package/dist/lifecycle/deep-diff.d.ts.map +1 -1
  110. package/dist/lifecycle/deep-observe.d.ts.map +1 -1
  111. package/dist/lifecycle/gate-ledger.d.ts +71 -3
  112. package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
  113. package/dist/lifecycle/index.d.ts +1 -0
  114. package/dist/lifecycle/index.d.ts.map +1 -1
  115. package/dist/lifecycle/release-ledger.d.ts +2 -2
  116. package/dist/lifecycle/run-ledger.d.ts +53 -0
  117. package/dist/lifecycle/run-ledger.d.ts.map +1 -0
  118. package/dist/lifecycle/symptoms.d.ts +3 -3
  119. package/dist/lifecycle/symptoms.d.ts.map +1 -1
  120. package/dist/lint/config.d.ts +81 -2
  121. package/dist/lint/config.d.ts.map +1 -1
  122. package/dist/lint/post-synth.d.ts +55 -2
  123. package/dist/lint/post-synth.d.ts.map +1 -1
  124. package/dist/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.d.ts +1 -1
  125. package/dist/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.d.ts.map +1 -1
  126. package/dist/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.d.ts +1 -1
  127. package/dist/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.d.ts.map +1 -1
  128. package/dist/lint/rules/comp/comp004-gate-needs-durable-runtime.d.ts +44 -0
  129. package/dist/lint/rules/comp/comp004-gate-needs-durable-runtime.d.ts.map +1 -0
  130. package/dist/lint/rules/comp/index.d.ts +1 -1
  131. package/dist/lint/rules/comp/index.d.ts.map +1 -1
  132. package/dist/lint/rules/op/index.d.ts +16 -0
  133. package/dist/lint/rules/op/index.d.ts.map +1 -0
  134. package/dist/lint/rules/op/ops012-activity-contract.d.ts +27 -0
  135. package/dist/lint/rules/op/ops012-activity-contract.d.ts.map +1 -0
  136. package/dist/lint/rules/op/ops013-step-output-ref.d.ts +61 -0
  137. package/dist/lint/rules/op/ops013-step-output-ref.d.ts.map +1 -0
  138. package/dist/lint/rules/op/ops014-converge-rule-refusals.d.ts +55 -0
  139. package/dist/lint/rules/op/ops014-converge-rule-refusals.d.ts.map +1 -0
  140. package/dist/lint/rules/op/support.d.ts +12 -0
  141. package/dist/lint/rules/op/support.d.ts.map +1 -0
  142. package/dist/lint/suppressions.d.ts +108 -0
  143. package/dist/lint/suppressions.d.ts.map +1 -0
  144. package/dist/live-endpoint.d.ts +1 -1
  145. package/dist/op/activities/activity-contracts.d.ts +54 -0
  146. package/dist/op/activities/activity-contracts.d.ts.map +1 -0
  147. package/dist/op/activities/apply.d.ts +262 -0
  148. package/dist/op/activities/apply.d.ts.map +1 -0
  149. package/dist/op/activities/build.d.ts +13 -0
  150. package/dist/op/activities/build.d.ts.map +1 -0
  151. package/dist/op/activities/converge.d.ts +110 -0
  152. package/dist/op/activities/converge.d.ts.map +1 -0
  153. package/dist/op/activities/env-teardown.d.ts +76 -0
  154. package/dist/op/activities/env-teardown.d.ts.map +1 -0
  155. package/dist/op/activities/guard-validate.d.ts +64 -0
  156. package/dist/op/activities/guard-validate.d.ts.map +1 -0
  157. package/dist/op/activities/http-check.d.ts +34 -0
  158. package/dist/op/activities/http-check.d.ts.map +1 -0
  159. package/dist/op/activities/index.d.ts +31 -0
  160. package/dist/op/activities/index.d.ts.map +1 -0
  161. package/dist/op/activities/lexicon-upgrade.d.ts +182 -0
  162. package/dist/op/activities/lexicon-upgrade.d.ts.map +1 -0
  163. package/dist/op/activities/lifecycle.d.ts +42 -0
  164. package/dist/op/activities/lifecycle.d.ts.map +1 -0
  165. package/dist/op/activities/pipeline-audit.d.ts +84 -0
  166. package/dist/op/activities/pipeline-audit.d.ts.map +1 -0
  167. package/dist/op/activities/policy.d.ts +17 -0
  168. package/dist/op/activities/policy.d.ts.map +1 -0
  169. package/dist/op/activities/reconcile.d.ts +89 -0
  170. package/dist/op/activities/reconcile.d.ts.map +1 -0
  171. package/dist/op/activities/shell.d.ts +13 -0
  172. package/dist/op/activities/shell.d.ts.map +1 -0
  173. package/dist/op/activities/teardown.d.ts +10 -0
  174. package/dist/op/activities/teardown.d.ts.map +1 -0
  175. package/dist/op/activities/util.d.ts +7 -0
  176. package/dist/op/activities/util.d.ts.map +1 -0
  177. package/dist/op/activities/wait.d.ts +28 -0
  178. package/dist/op/activities/wait.d.ts.map +1 -0
  179. package/dist/op/activities/workflow-audit.d.ts +92 -0
  180. package/dist/op/activities/workflow-audit.d.ts.map +1 -0
  181. package/dist/op/activity-contract-registry.d.ts +76 -0
  182. package/dist/op/activity-contract-registry.d.ts.map +1 -0
  183. package/dist/op/activity-contract.d.ts +25 -18
  184. package/dist/op/activity-contract.d.ts.map +1 -1
  185. package/dist/op/activity-failure.d.ts +28 -0
  186. package/dist/op/activity-failure.d.ts.map +1 -0
  187. package/dist/op/activity-profiles.d.ts +118 -0
  188. package/dist/op/activity-profiles.d.ts.map +1 -0
  189. package/dist/op/activity-registry.d.ts +22 -38
  190. package/dist/op/activity-registry.d.ts.map +1 -1
  191. package/dist/op/activity-runtime.d.ts +3 -14
  192. package/dist/op/activity-runtime.d.ts.map +1 -1
  193. package/dist/op/builders.d.ts +84 -29
  194. package/dist/op/builders.d.ts.map +1 -1
  195. package/dist/op/composites/apply-op.d.ts +113 -0
  196. package/dist/op/composites/apply-op.d.ts.map +1 -0
  197. package/dist/op/composites/converge-op.d.ts +120 -0
  198. package/dist/op/composites/converge-op.d.ts.map +1 -0
  199. package/dist/op/composites/index.d.ts +26 -0
  200. package/dist/op/composites/index.d.ts.map +1 -0
  201. package/dist/op/composites/lexicon-upgrade-op.d.ts +78 -0
  202. package/dist/op/composites/lexicon-upgrade-op.d.ts.map +1 -0
  203. package/dist/op/composites/pipeline-audit-op.d.ts +50 -0
  204. package/dist/op/composites/pipeline-audit-op.d.ts.map +1 -0
  205. package/dist/op/composites/reconcile-op.d.ts +57 -0
  206. package/dist/op/composites/reconcile-op.d.ts.map +1 -0
  207. package/dist/op/composites/watch-op.d.ts +60 -0
  208. package/dist/op/composites/watch-op.d.ts.map +1 -0
  209. package/dist/op/composites/workflow-audit-op.d.ts +57 -0
  210. package/dist/op/composites/workflow-audit-op.d.ts.map +1 -0
  211. package/dist/op/converge-rule.d.ts +12 -10
  212. package/dist/op/converge-rule.d.ts.map +1 -1
  213. package/dist/op/cron.d.ts +51 -0
  214. package/dist/op/cron.d.ts.map +1 -0
  215. package/dist/op/discover.d.ts +9 -0
  216. package/dist/op/discover.d.ts.map +1 -1
  217. package/dist/op/duration.d.ts +11 -0
  218. package/dist/op/duration.d.ts.map +1 -0
  219. package/dist/op/emulator-lifecycle.d.ts.map +1 -1
  220. package/dist/op/gate.d.ts +90 -0
  221. package/dist/op/gate.d.ts.map +1 -0
  222. package/dist/op/generate-pipeline.d.ts +9 -0
  223. package/dist/op/generate-pipeline.d.ts.map +1 -1
  224. package/dist/op/index.d.ts +23 -7
  225. package/dist/op/index.d.ts.map +1 -1
  226. package/dist/op/local-executor.d.ts +114 -28
  227. package/dist/op/local-executor.d.ts.map +1 -1
  228. package/dist/op/local-output.d.ts +11 -1
  229. package/dist/op/local-output.d.ts.map +1 -1
  230. package/dist/op/op-ir.d.ts +184 -0
  231. package/dist/op/op-ir.d.ts.map +1 -0
  232. package/dist/op/op-verb-class.d.ts +10 -2
  233. package/dist/op/op-verb-class.d.ts.map +1 -1
  234. package/dist/op/operator.d.ts +30 -5
  235. package/dist/op/operator.d.ts.map +1 -1
  236. package/dist/op/receipt-store.d.ts +1 -1
  237. package/dist/op/receipt-store.d.ts.map +1 -1
  238. package/dist/op/resource.d.ts +15 -1
  239. package/dist/op/resource.d.ts.map +1 -1
  240. package/dist/op/runtime.d.ts +200 -0
  241. package/dist/op/runtime.d.ts.map +1 -0
  242. package/dist/op/runtimes/local.d.ts +29 -0
  243. package/dist/op/runtimes/local.d.ts.map +1 -0
  244. package/dist/op/step-output-ref.d.ts +15 -13
  245. package/dist/op/step-output-ref.d.ts.map +1 -1
  246. package/dist/op/types.d.ts +79 -27
  247. package/dist/op/types.d.ts.map +1 -1
  248. package/dist/ownership.d.ts +1 -1
  249. package/dist/provenance.d.ts +21 -0
  250. package/dist/provenance.d.ts.map +1 -1
  251. package/dist/serializer-walker.d.ts.map +1 -1
  252. package/dist/stack-output.d.ts +5 -0
  253. package/dist/stack-output.d.ts.map +1 -1
  254. package/package.json +6 -1
  255. package/src/audit/catalog.test.ts +79 -3
  256. package/src/audit/catalog.ts +111 -13
  257. package/src/audit/core.test.ts +26 -0
  258. package/src/audit/core.ts +61 -17
  259. package/src/audit/discover.test.ts +39 -0
  260. package/src/audit/discover.ts +91 -15
  261. package/src/audit/lineage.ts +100 -0
  262. package/src/audit/prior-art.ts +153 -0
  263. package/src/audit/proof.test.ts +67 -0
  264. package/src/audit/proof.ts +70 -0
  265. package/src/audit/report-html.ts +9 -4
  266. package/src/audit/report-model.ts +16 -2
  267. package/src/audit/report.test.ts +33 -0
  268. package/src/audit/report.ts +5 -3
  269. package/src/audit/rules-doc.test.ts +34 -2
  270. package/src/audit/rules-doc.ts +82 -9
  271. package/src/audit/secrets.ts +15 -3
  272. package/src/audit/terraform-state.test.ts +144 -0
  273. package/src/audit/terraform-state.ts +131 -0
  274. package/src/build.ts +31 -1
  275. package/src/claimed-fields.test.ts +145 -0
  276. package/src/claimed-fields.ts +208 -0
  277. package/src/cli/build-params-cli.ts +2 -2
  278. package/src/cli/command-group.ts +14 -0
  279. package/src/cli/commands/__fixtures__/audit-terraform/infra/.terraform/providers/lock.txt +1 -0
  280. package/src/cli/commands/__fixtures__/audit-terraform/infra/main.tf +1 -0
  281. package/src/cli/commands/__fixtures__/audit-terraform/infra/modules/foo/main.tf +1 -0
  282. package/src/cli/commands/__fixtures__/audit-terraform/infra/variables.tf +3 -0
  283. package/src/cli/commands/__fixtures__/init-lexicon-output/package.json +13 -4
  284. package/src/cli/commands/__fixtures__/init-lexicon-output/src/codegen/docs-cli.ts +4 -0
  285. package/src/cli/commands/__fixtures__/init-lexicon-output/src/codegen/package.ts +1 -0
  286. package/src/cli/commands/__fixtures__/init-lexicon-output/src/package-cli.ts +21 -0
  287. package/src/cli/commands/__snapshots__/init-lexicon.test.ts.snap +1 -0
  288. package/src/cli/commands/audit.test.ts +189 -11
  289. package/src/cli/commands/audit.ts +73 -27
  290. package/src/cli/commands/build.test.ts +292 -9
  291. package/src/cli/commands/build.ts +156 -24
  292. package/src/cli/commands/check-lexicon-docs.ts +1 -1
  293. package/src/cli/commands/check-lexicon-examples.test.ts +29 -1
  294. package/src/cli/commands/check-lexicon-examples.ts +42 -10
  295. package/src/cli/commands/import.ts +6 -0
  296. package/src/cli/commands/init-lexicon/templates/codegen.ts +9 -0
  297. package/src/cli/commands/init-lexicon/templates/project.ts +44 -4
  298. package/src/cli/commands/init-lexicon.test.ts +97 -2
  299. package/src/cli/commands/init-lexicon.ts +4 -2
  300. package/src/cli/commands/init.test.ts +35 -1
  301. package/src/cli/commands/init.ts +14 -3
  302. package/src/cli/commands/lint.test.ts +48 -0
  303. package/src/cli/commands/lint.ts +123 -0
  304. package/src/cli/commands/onboard.test.ts +75 -0
  305. package/src/cli/commands/onboard.ts +54 -23
  306. package/src/cli/handlers/build.test.ts +81 -1
  307. package/src/cli/handlers/build.ts +15 -1
  308. package/src/cli/handlers/graph.test.ts +3 -3
  309. package/src/cli/handlers/lifecycle.test.ts +195 -12
  310. package/src/cli/handlers/lifecycle.ts +123 -6
  311. package/src/cli/handlers/misc.ts +1 -1
  312. package/src/cli/handlers/operator.test.ts +183 -11
  313. package/src/cli/handlers/operator.ts +260 -55
  314. package/src/cli/handlers/run.test.ts +431 -1287
  315. package/src/cli/handlers/run.ts +365 -915
  316. package/src/cli/main.test.ts +23 -15
  317. package/src/cli/main.ts +88 -33
  318. package/src/cli/mcp/op-tools.ts +147 -88
  319. package/src/cli/mcp/resource-handlers.ts +10 -37
  320. package/src/cli/mcp/resources/context.ts +11 -12
  321. package/src/cli/mcp/server.test.ts +25 -27
  322. package/src/cli/mcp/server.ts +2 -2
  323. package/src/cli/registry.ts +26 -9
  324. package/src/codegen/docs.ts +1 -1
  325. package/src/codegen/generate-post-synth-barrel.test.ts +1 -1
  326. package/src/codegen/generate-post-synth-barrel.ts +1 -1
  327. package/src/components/README.md +3 -2
  328. package/src/components/auto-release.test.ts +4 -20
  329. package/src/components/auto-release.ts +17 -42
  330. package/src/components/capability.ts +4 -4
  331. package/src/components/cli-support.test.ts +10 -5
  332. package/src/components/cli-support.ts +52 -44
  333. package/src/components/component.schema.json +2 -2
  334. package/src/components/component.ts +3 -3
  335. package/src/components/driver-output.ts +14 -2
  336. package/src/components/driver.test.ts +92 -22
  337. package/src/components/driver.ts +193 -83
  338. package/src/components/index.ts +1 -6
  339. package/src/components/manifest-persistence.test.ts +2 -20
  340. package/src/components/manifest-persistence.ts +4 -24
  341. package/src/components/pilots/pilots-lint-clean.test.ts +11 -10
  342. package/src/components/run-progress.ts +6 -6
  343. package/src/components/verbs/run-agent.ts +11 -17
  344. package/src/components/verbs/verify.ts +2 -2
  345. package/src/deep-observation.test.ts +75 -0
  346. package/src/deep-observation.ts +48 -0
  347. package/src/discovery/collect.test.ts +3 -3
  348. package/src/discovery/files.ts +4 -4
  349. package/src/discovery/fold-import.ts +105 -2
  350. package/src/discovery/param-deps.test.ts +112 -1
  351. package/src/discovery/param-deps.ts +193 -0
  352. package/src/discovery/sandbox/bundle.ts +15 -1
  353. package/src/discovery/sandbox/config-wire.test.ts +2 -2
  354. package/src/discovery/sandbox/config-wire.ts +2 -2
  355. package/src/fold/fold.test.ts +56 -0
  356. package/src/fold/foldable-helpers.ts +81 -1
  357. package/src/fold-provenance-exclusion.test.ts +186 -0
  358. package/src/fold-provenance.test.ts +495 -0
  359. package/src/fold-provenance.ts +441 -0
  360. package/src/graph-ops.test.ts +2 -2
  361. package/src/graph-ops.ts +1 -1
  362. package/src/held-elsewhere.test.ts +102 -0
  363. package/src/held-elsewhere.ts +114 -0
  364. package/src/import/ir-utils.ts +11 -1
  365. package/src/import/parser.ts +35 -0
  366. package/src/index.ts +3 -0
  367. package/src/kubectl-context.ts +3 -3
  368. package/src/lexicon-config.test.ts +5 -5
  369. package/src/lexicon-config.ts +4 -4
  370. package/src/lexicon-plugin-helpers.ts +1 -1
  371. package/src/lexicon.ts +120 -14
  372. package/src/lifecycle/change-set.test.ts +49 -0
  373. package/src/lifecycle/change-set.ts +67 -0
  374. package/src/lifecycle/converge-ledger.ts +1 -1
  375. package/src/lifecycle/deep-diff.test.ts +267 -14
  376. package/src/lifecycle/deep-diff.ts +217 -14
  377. package/src/lifecycle/deep-observe.test.ts +3 -1
  378. package/src/lifecycle/deep-observe.ts +16 -6
  379. package/src/lifecycle/gate-ledger.test.ts +74 -2
  380. package/src/lifecycle/gate-ledger.ts +143 -36
  381. package/src/lifecycle/index.ts +1 -0
  382. package/src/lifecycle/release-ledger.ts +2 -2
  383. package/src/lifecycle/run-ledger.test.ts +268 -0
  384. package/src/lifecycle/run-ledger.ts +201 -0
  385. package/src/lifecycle/symptoms.ts +3 -3
  386. package/src/lint/config.test.ts +82 -1
  387. package/src/lint/config.ts +112 -3
  388. package/src/lint/policy.test.ts +1 -1
  389. package/src/lint/post-synth.test.ts +31 -0
  390. package/src/lint/post-synth.ts +54 -1
  391. package/src/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.ts +2 -2
  392. package/src/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.ts +1 -1
  393. package/src/lint/rules/comp/comp.test.ts +1 -1
  394. package/src/lint/rules/comp/comp004-gate-needs-durable-runtime.ts +74 -0
  395. package/src/lint/rules/comp/index.ts +3 -3
  396. package/src/lint/rules/op/index.ts +23 -0
  397. package/src/lint/rules/op/ops012-activity-contract.test.ts +161 -0
  398. package/src/lint/rules/op/ops012-activity-contract.ts +64 -0
  399. package/src/lint/rules/op/ops013-step-output-ref.test.ts +237 -0
  400. package/src/lint/rules/op/ops013-step-output-ref.ts +98 -0
  401. package/src/lint/rules/op/ops014-converge-rule-refusals.test.ts +263 -0
  402. package/src/lint/rules/op/ops014-converge-rule-refusals.ts +179 -0
  403. package/src/lint/rules/op/support.ts +11 -0
  404. package/src/lint/suppressions.test.ts +163 -0
  405. package/src/lint/suppressions.ts +204 -0
  406. package/src/live-endpoint.ts +1 -1
  407. package/src/op/activities/activity-contracts.ts +66 -0
  408. package/src/op/activities/apply.test.ts +567 -0
  409. package/src/op/activities/apply.ts +662 -0
  410. package/src/op/activities/build.ts +26 -0
  411. package/src/op/activities/converge.test.ts +330 -0
  412. package/src/op/activities/converge.ts +449 -0
  413. package/src/op/activities/env-teardown.test.ts +187 -0
  414. package/src/op/activities/env-teardown.ts +171 -0
  415. package/src/op/activities/guard-validate.test.ts +139 -0
  416. package/src/op/activities/guard-validate.ts +223 -0
  417. package/src/op/activities/http-check.test.ts +48 -0
  418. package/src/op/activities/http-check.ts +55 -0
  419. package/src/op/activities/index.ts +119 -0
  420. package/src/op/activities/lexicon-upgrade.test.ts +492 -0
  421. package/src/op/activities/lexicon-upgrade.ts +673 -0
  422. package/src/op/activities/lifecycle.ts +85 -0
  423. package/src/op/activities/pipeline-audit.test.ts +67 -0
  424. package/src/op/activities/pipeline-audit.ts +201 -0
  425. package/src/op/activities/policy.test.ts +19 -0
  426. package/src/op/activities/policy.ts +37 -0
  427. package/src/op/activities/reconcile.test.ts +81 -0
  428. package/src/op/activities/reconcile.ts +187 -0
  429. package/src/op/activities/shell.ts +26 -0
  430. package/src/op/activities/teardown.ts +22 -0
  431. package/src/op/activities/util.ts +6 -0
  432. package/src/op/activities/wait.ts +69 -0
  433. package/src/op/activities/workflow-audit.test.ts +90 -0
  434. package/src/op/activities/workflow-audit.ts +203 -0
  435. package/src/op/activity-contract-registry.test.ts +98 -0
  436. package/src/op/activity-contract-registry.ts +114 -0
  437. package/src/op/activity-contract.test.ts +1 -1
  438. package/src/op/activity-contract.ts +37 -33
  439. package/src/op/activity-failure.ts +34 -0
  440. package/src/op/activity-profiles.test.ts +56 -0
  441. package/src/op/activity-profiles.ts +116 -0
  442. package/src/op/activity-registry.test.ts +37 -28
  443. package/src/op/activity-registry.ts +27 -56
  444. package/src/op/activity-runtime.ts +3 -47
  445. package/src/op/builders-exports.test.ts +0 -49
  446. package/src/op/builders-typed.test.ts +164 -0
  447. package/src/op/builders.ts +123 -39
  448. package/src/op/composites/apply-op.ts +208 -0
  449. package/src/op/composites/composites.test.ts +366 -0
  450. package/src/op/composites/converge-op.test.ts +168 -0
  451. package/src/op/composites/converge-op.ts +214 -0
  452. package/src/op/composites/index.ts +26 -0
  453. package/src/op/composites/lexicon-upgrade-op.test.ts +68 -0
  454. package/src/op/composites/lexicon-upgrade-op.ts +134 -0
  455. package/src/op/composites/pipeline-audit-op.test.ts +25 -0
  456. package/src/op/composites/pipeline-audit-op.ts +78 -0
  457. package/src/op/composites/reconcile-op.test.ts +51 -0
  458. package/src/op/composites/reconcile-op.ts +107 -0
  459. package/src/op/composites/watch-op.ts +108 -0
  460. package/src/op/composites/workflow-audit-op.test.ts +25 -0
  461. package/src/op/composites/workflow-audit-op.ts +88 -0
  462. package/src/op/converge-rule.ts +12 -10
  463. package/src/op/cron.test.ts +128 -0
  464. package/src/op/cron.ts +149 -0
  465. package/src/op/discover-root.test.ts +105 -1
  466. package/src/op/discover.test.ts +6 -2
  467. package/src/op/discover.ts +84 -16
  468. package/src/op/duration.ts +21 -0
  469. package/src/op/effect-step.test.ts +26 -11
  470. package/src/op/emulator-lifecycle.ts +1 -2
  471. package/src/op/gate.ts +155 -0
  472. package/src/op/generate-pipeline.test.ts +65 -3
  473. package/src/op/generate-pipeline.ts +19 -2
  474. package/src/op/index.ts +39 -6
  475. package/src/op/local-executor.test.ts +163 -34
  476. package/src/op/local-executor.ts +370 -102
  477. package/src/op/local-output.test.ts +95 -11
  478. package/src/op/local-output.ts +33 -4
  479. package/src/op/op-ir.test.ts +281 -0
  480. package/src/op/op-ir.ts +417 -0
  481. package/src/op/op-verb-class.ts +19 -5
  482. package/src/op/op.test.ts +26 -5
  483. package/src/op/operator.test.ts +175 -6
  484. package/src/op/operator.ts +63 -16
  485. package/src/op/receipt-store.ts +1 -1
  486. package/src/op/resource.ts +20 -2
  487. package/src/op/runtime.ts +203 -0
  488. package/src/op/runtimes/local.test.ts +181 -0
  489. package/src/op/runtimes/local.ts +212 -0
  490. package/src/op/step-output-ref.ts +15 -13
  491. package/src/op/types.ts +84 -24
  492. package/src/ownership.ts +1 -1
  493. package/src/provenance.test.ts +6 -0
  494. package/src/provenance.ts +21 -1
  495. package/src/serializer-walker.test.ts +42 -0
  496. package/src/serializer-walker.ts +21 -2
  497. package/src/stack-output.ts +6 -1
  498. package/dist/cli/handlers/op-progress.d.ts +0 -90
  499. package/dist/cli/handlers/op-progress.d.ts.map +0 -1
  500. package/dist/cli/handlers/run-client.d.ts +0 -127
  501. package/dist/cli/handlers/run-client.d.ts.map +0 -1
  502. package/dist/cli/handlers/run-report.d.ts +0 -5
  503. package/dist/cli/handlers/run-report.d.ts.map +0 -1
  504. package/dist/components/temporal-codegen-loader.d.ts +0 -27
  505. package/dist/components/temporal-codegen-loader.d.ts.map +0 -1
  506. package/dist/lint/rules/comp/comp004-gate-needs-temporal.d.ts +0 -37
  507. package/dist/lint/rules/comp/comp004-gate-needs-temporal.d.ts.map +0 -1
  508. package/src/cli/handlers/op-progress.test.ts +0 -268
  509. package/src/cli/handlers/op-progress.ts +0 -248
  510. package/src/cli/handlers/run-client.test.ts +0 -82
  511. package/src/cli/handlers/run-client.ts +0 -219
  512. package/src/cli/handlers/run-report.test.ts +0 -62
  513. package/src/cli/handlers/run-report.ts +0 -122
  514. package/src/components/temporal-codegen-loader.ts +0 -41
  515. package/src/lint/rules/comp/comp004-gate-needs-temporal.ts +0 -66
@@ -1,6 +1,6 @@
1
1
  import { describe, test, expect } from "vitest";
2
2
  import { EventEmitter } from "node:events";
3
- import { parseArgs, waitForStreamDrain } from "./main";
3
+ import { parseArgs, waitForStreamDrain, usesRemovedTemporalFlag, REMOVED_TEMPORAL_FLAG, REMOVED_FLAG_EXIT_CODE } from "./main";
4
4
  import { resolveCommand, type CommandDef, type ParsedArgs } from "./registry";
5
5
 
6
6
  describe("parseArgs", () => {
@@ -10,6 +10,17 @@ describe("parseArgs", () => {
10
10
  expect(parseArgs(["build", "src", "--no-fold"]).fold).toBe(false);
11
11
  });
12
12
 
13
+ // #2192 — #2130 deleted `-p/--profile` with the Temporal runtime, on the
14
+ // belief nothing outside it read the flag. #2124 had already documented it
15
+ // for fountain, so the flag is back and reaches the runtime seam.
16
+ test("-p/--profile carries the runtime's connection profile (#2124)", () => {
17
+ expect(parseArgs(["run", "prod-apply", "--on", "fountain"]).profile).toBeUndefined();
18
+ expect(parseArgs(["run", "prod-apply", "--on", "fountain", "--profile", "staging"]).profile).toBe("staging");
19
+ expect(parseArgs(["run", "prod-apply", "--on", "fountain", "-p", "staging"]).profile).toBe("staging");
20
+ // The joined form `splitJoinedFlags` rewrites into two tokens.
21
+ expect(parseArgs(["run", "prod-apply", "--profile=staging"]).profile).toBe("staging");
22
+ });
23
+
13
24
  test("--namespace carries the live read's namespace default (#1629)", () => {
14
25
  expect(parseArgs(["graph", "--live", "--env", "prod"]).namespace).toBeUndefined();
15
26
  expect(parseArgs(["graph", "--live", "--env", "prod", "--namespace", "app-b"]).namespace).toBe("app-b");
@@ -578,19 +589,21 @@ describe("resolveCommand", () => {
578
589
  });
579
590
  });
580
591
 
581
- describe("parseArgs — run flags", () => {
582
- test("parses --profile flag", () => {
583
- const result = parseArgs(["run", "alb-deploy", "--profile", "local"]);
584
- expect(result.command).toBe("run");
585
- expect(result.path).toBe("alb-deploy");
586
- expect(result.profile).toBe("local");
592
+ describe("--temporal, removed in #2116", () => {
593
+ test("the flag is caught before parseArgs, with the line that says where the runtime went", () => {
594
+ expect(usesRemovedTemporalFlag(["run", "alb-deploy", "--temporal"])).toBe(true);
595
+ expect(usesRemovedTemporalFlag(["run", "alb-deploy", "--temporal=true"])).toBe(true);
596
+ expect(REMOVED_TEMPORAL_FLAG).toBe("--temporal was removed in #2116; use --on fountain");
597
+ expect(REMOVED_FLAG_EXIT_CODE).toBe(2);
587
598
  });
588
599
 
589
- test("parses -p shorthand for --profile", () => {
590
- const result = parseArgs(["run", "alb-deploy", "-p", "cloud"]);
591
- expect(result.profile).toBe("cloud");
600
+ test("an invocation without it is untouched, and the parser has forgotten the flag", () => {
601
+ expect(usesRemovedTemporalFlag(["run", "alb-deploy", "--on", "fountain"])).toBe(false);
602
+ expect(() => parseArgs(["run", "alb-deploy", "--temporal"])).toThrow(/Unknown flag/);
592
603
  });
604
+ });
593
605
 
606
+ describe("parseArgs — run flags", () => {
594
607
  test("parses --report flag", () => {
595
608
  const result = parseArgs(["run", "alb-deploy", "--report"]);
596
609
  expect(result.command).toBe("run");
@@ -603,11 +616,6 @@ describe("parseArgs — run flags", () => {
603
616
  expect(result.report).toBe(undefined);
604
617
  });
605
618
 
606
- test("profile is undefined when not provided", () => {
607
- const result = parseArgs(["run", "alb-deploy"]);
608
- expect(result.profile).toBe(undefined);
609
- });
610
-
611
619
  test("run signal parses op name and signal into positionals", () => {
612
620
  const result = parseArgs(["run", "signal", "alb-deploy", "gate-dns"]);
613
621
  expect(result.command).toBe("run");
package/src/cli/main.ts CHANGED
@@ -30,7 +30,7 @@ import { runScenarioCheck, runScenarioUnknown } from "./handlers/scenario";
30
30
  import { runGraph } from "./handlers/graph";
31
31
  import { runExplain } from "./handlers/explain";
32
32
  import { runSearch } from "./handlers/search";
33
- import { runOp, runOpList, runOpStatus, runOpSignal, runOpCancel, runOpLog } from "./handlers/run";
33
+ import { runOp, runOpList, runOpStatus, runOpApprove, runOpSignalRenamed, runOpCancel, runOpLog } from "./handlers/run";
34
34
  import { runOperator, runOperatorStatus, runOperatorLog, runApprove } from "./handlers/operator";
35
35
  import { runEmulator } from "./handlers/emulator";
36
36
  import { splitJoinedFlags, dispatchCommandGroup, collectCommandGroups, formatCommandGroupsHelp, type CommandGroup } from "./command-group";
@@ -71,7 +71,6 @@ const BOOLEAN_FLAGS = new Set([
71
71
  "--down",
72
72
  "--include-dependents",
73
73
  "--local",
74
- "--temporal",
75
74
  "--json",
76
75
  "--progress-json",
77
76
  "--update-snapshot",
@@ -86,14 +85,37 @@ const BOOLEAN_FLAGS = new Set([
86
85
  "--yes",
87
86
  "--confirm-prod",
88
87
  "--once",
88
+ "--expire",
89
89
  "--check-live",
90
90
  "--check-snapshot",
91
91
  "--fail-on-drift",
92
+ "--durable-requests",
92
93
  ]);
93
94
 
94
95
  /**
95
96
  * Parse command line arguments
96
97
  */
98
+ /**
99
+ * `--temporal` picked the Temporal runtime, which #2116 deleted. It is caught
100
+ * ahead of {@link parseArgs} — which no longer knows the flag at all — for one
101
+ * minor version, so an invocation that still carries it is told where the
102
+ * runtime went instead of getting "Unknown flag: --temporal" and a pointer at
103
+ * `--help`. Delete this, its test and the constants below once that version
104
+ * has shipped.
105
+ */
106
+ export const REMOVED_TEMPORAL_FLAG = "--temporal was removed in #2116; use --on fountain";
107
+
108
+ /**
109
+ * Not 1: a removed flag means the command never started, so a CI job that
110
+ * retries a failed run has nothing to retry here.
111
+ */
112
+ export const REMOVED_FLAG_EXIT_CODE = 2;
113
+
114
+ /** Matches the bare flag and the joined `--temporal=…` form `splitJoinedFlags` would otherwise split. */
115
+ export function usesRemovedTemporalFlag(argv: string[]): boolean {
116
+ return argv.some((arg) => arg === "--temporal" || arg.startsWith("--temporal="));
117
+ }
118
+
97
119
  export function parseArgs(args: string[]): ParsedArgs {
98
120
  // Local mutable copy — chant #1127's joined-`--flag=value` splitting below
99
121
  // rewrites the array in place (one token becomes two), so this must not
@@ -115,12 +137,11 @@ export function parseArgs(args: string[]): ParsedArgs {
115
137
  watch: false,
116
138
  verbose: false,
117
139
  help: false,
118
- profile: undefined,
119
140
  param: undefined,
120
141
  paramsFile: undefined,
121
142
  report: undefined,
122
143
  local: undefined,
123
- temporal: undefined,
144
+ profile: undefined,
124
145
  json: undefined,
125
146
  live: false,
126
147
  migrateFrom: undefined,
@@ -303,12 +324,16 @@ export function parseArgs(args: string[]): ParsedArgs {
303
324
  result.includeDependents = true;
304
325
  } else if (arg === "--local") {
305
326
  result.local = true;
306
- } else if (arg === "--temporal") {
307
- result.temporal = true;
308
327
  } else if (arg === "--json") {
309
328
  result.json = true;
310
329
  } else if (arg === "--progress-json") {
311
330
  result.progressJson = true;
331
+ } else if (arg === "--durable-requests") {
332
+ // `chant run approve ... --on <lexicon> --durable-requests` (#2126) —
333
+ // resolve the gate on the hosting runtime's own request path rather
334
+ // than by posting a follow-up prompt. Core only carries the flag; the
335
+ // runtime decides whether it has such a path.
336
+ result.durableRequests = true;
312
337
  } else if (arg === "--update-snapshot") {
313
338
  result.updateSnapshot = true;
314
339
  } else if (arg === "--update-baseline") {
@@ -345,6 +370,10 @@ export function parseArgs(args: string[]): ParsedArgs {
345
370
  result.actor = args[++i];
346
371
  } else if (arg === "--approver") {
347
372
  result.approver = args[++i];
373
+ } else if (arg === "--on") {
374
+ // `chant run ... --on <lexicon>` (#2121) — which runtime hosts the run.
375
+ result.on = args[++i];
376
+ if (!result.on || result.on.startsWith("-")) throw new Error("--on needs a runtime name: --on <lexicon>");
348
377
  } else if (arg === "--compare-to") {
349
378
  result.compareTo = args[++i];
350
379
  } else if (arg === "--no-release-record") {
@@ -389,6 +418,8 @@ export function parseArgs(args: string[]): ParsedArgs {
389
418
  result.once = true;
390
419
  } else if (arg === "--note") {
391
420
  result.note = args[++i];
421
+ } else if (arg === "--expire") {
422
+ result.expire = true;
392
423
  } else if (arg === "--url") {
393
424
  result.url = args[++i];
394
425
  } else if (arg === "--op") {
@@ -463,7 +494,7 @@ Commands:
463
494
  chant code instead of reading a template file)
464
495
  audit [path|url] Audit a repo's CI YAML for security issues
465
496
  (--format stylish|json|sarif|markdown|html, -o <file>,
466
- --tier merge-worthy|all, --fail-on merge-worthy|warning|none,
497
+ --tier merge-worthy|all, --fail-on merge-worthy|warning|error|none,
467
498
  --template <file> / --theme <file> for the html report)
468
499
  --agents audits this machine's agent configuration —
469
500
  instruction files, MCP servers, skills, plugins,
@@ -505,18 +536,12 @@ Commands:
505
536
  applied) and path. Read-only.
506
537
 
507
538
  Ops:
508
- run <name> Start an Op workflow (spawns worker + submits to Temporal)
509
- run list List all Ops with current run status
510
- --components: list discovered Components instead (--temporal
511
- also annotates each with its latest run status; #599)
512
- run status <name> Show current workflow run state
513
- --components: show a Component's durable run state instead (#599)
514
- run signal <name> <signal> Send a named signal to unblock a gate
515
- --components: signal a Component's workflow instead (#589)
516
- run cancel <name> Cancel the active workflow run (requires --force)
517
- --components: cancel a Component's workflow instead (#589)
539
+ run <name> Run an Op on the resolved runtime (--on; local by default)
540
+ run list List all Ops with the runtime's state for each
541
+ run status <name> Show the runtime's state for one Op's latest run
542
+ run approve <op> <gate> Record a gate's resolution and wake the runtime
543
+ run cancel <name> Cancel the active run (requires --force)
518
544
  run log <name> Show run history for an Op
519
- --components: show a Component's run history instead (#599)
520
545
  run --components <name|all> Run discovered Component(s) through the interpret
521
546
  driver on the local executor (--env <env>; #585).
522
547
  On success, auto-emits a release-ledger record per
@@ -528,7 +553,7 @@ Ops:
528
553
  progress instead of tailing raw logs (additive; run
529
554
  semantics/exit code unchanged)
530
555
  operator Run scheduled ticks for discovered ConvergeOps
531
- locally, no Temporal (#1485): acquire/renew a per-op
556
+ locally (#1485): acquire/renew a per-op
532
557
  lease (git ref CAS), tick on --interval, record every
533
558
  result as a ledger fact. --env <env> scopes to one
534
559
  environment; --interval <dur> (default 60s) and
@@ -548,13 +573,14 @@ Ops:
548
573
  silently short
549
574
  approve <op> <gate> Record a gate's out-of-band resolution fact
550
575
  (--actor <name>, --note <text>, --url <url>) — the
551
- durable counterpart to a converge tick's
552
- gate-as-fact outcome; see the pending-gates list in
553
- operator status. --url is the PR/MR the resolution
576
+ durable counterpart to the pending fact a run records
577
+ when it reaches the gate; see the pending-gates list
578
+ in operator status. --url is the PR/MR the resolution
554
579
  happened at, recorded typed rather than as free text,
555
580
  and defaults to the PR/MR of the surrounding CI job.
556
- Does not itself unblock the gated op's local
557
- dispatch (re-run --temporal, or merge its PR)
581
+ The next "chant run <op>" walks through the gate.
582
+ --expire clears a pending fact without approving it,
583
+ so the gate is re-decided from scratch next run
558
584
 
559
585
  graph Show Op dependency graph (--stacks for cross-stack order,
560
586
  --format ir|mermaid|dot|layout for the lint-gated graph IR,
@@ -663,12 +689,15 @@ Options:
663
689
  resolved build parameter and per-file fold decision
664
690
  instead of the one-line summaries
665
691
  -h, --help Show this help message
666
- -p, --profile <name> Temporal worker profile to use (run command)
692
+ --on <lexicon> Which runtime hosts the run: a configured lexicon with
693
+ an opRuntime, or the built-in local runtime when
694
+ omitted (every run subcommand; #2121)
667
695
  --local Run an Op with the local in-process executor (default)
668
- --temporal Run an Op via a Temporal cluster (gates, schedules, durable resume)
696
+ -p, --profile <name> Named connection profile the hosting runtime targets
697
+ (fountain.profiles in chant.config.ts); each runtime's
698
+ own default when omitted (#2124)
669
699
  --json Emit the structured run result as JSON (run command)
670
- --report Print deployment report instead of running (run command)
671
- OR with a path arg: SARIF report destination (migrate)
700
+ --report With a path arg: SARIF report destination (migrate)
672
701
  OR '--report gitlab-mr': emit the GitLab MR plan-widget
673
702
  JSON (lifecycle plan)
674
703
  OR '--report markdown': emit a reviewer-facing markdown
@@ -794,8 +823,17 @@ async function tryPluginCommand(rawArgv: string[]): Promise<number | undefined>
794
823
  if (!groupName || groupName.startsWith("-")) return undefined;
795
824
 
796
825
  const plugins = await loadPluginsBestEffort();
797
- const rawArgs = rawArgv.slice(2);
798
- const result = await dispatchCommandGroup(plugins, groupName, verbName, rawArgs);
826
+
827
+ // A group declaring a `defaultVerb` (#2125) answers its bare name, so
828
+ // `chant acp` and `chant acp --durable-requests` both reach that verb. The
829
+ // slicing follows: with no verb token consumed, everything after the group
830
+ // name is the default verb's own argument list.
831
+ const group = collectCommandGroups(plugins).find((g) => g.name === groupName);
832
+ const useDefault =
833
+ group?.defaultVerb !== undefined && (verbName === undefined || verbName.startsWith("-"));
834
+ const verb = useDefault ? group?.defaultVerb : verbName;
835
+ const rawArgs = rawArgv.slice(useDefault ? 1 : 2);
836
+ const result = await dispatchCommandGroup(plugins, groupName, verb, rawArgs);
799
837
 
800
838
  if (result.kind === "no-group") return undefined;
801
839
  if (result.kind === "usage-error") {
@@ -852,7 +890,17 @@ async function loadPluginsOrExit(path: string): Promise<import("../lexicon").Lex
852
890
 
853
891
  // ── Command registry ──────────────────────────────────────────────
854
892
 
855
- const registry: CommandDef[] = [
893
+ /**
894
+ * Every command word `chant` answers to, and the handler behind it.
895
+ *
896
+ * Exported because a caller other than `main()` now needs to ask "is this a
897
+ * chant verb, and what runs it?" — the fountain lexicon's ACP server (#2125)
898
+ * treats a prompt as a chant command line, and the only honest answer to
899
+ * whether `chant lifecycle diff` is a verb is this list. A hand-kept copy
900
+ * would be wrong the first time a command is added, and the ACP server would
901
+ * refuse a verb that works at the terminal.
902
+ */
903
+ export const commandRegistry: CommandDef[] = [
856
904
  // Primary commands
857
905
  { name: "build", requiresPlugins: true, handler: runBuild },
858
906
  { name: "lint", handler: runLint },
@@ -897,7 +945,8 @@ const registry: CommandDef[] = [
897
945
  // Op / run subcommands
898
946
  { name: "run list", handler: runOpList },
899
947
  { name: "run status", handler: runOpStatus },
900
- { name: "run signal", handler: runOpSignal },
948
+ { name: "run approve", handler: runOpApprove },
949
+ { name: "run signal", handler: runOpSignalRenamed },
901
950
  { name: "run cancel", handler: runOpCancel },
902
951
  { name: "run log", handler: runOpLog },
903
952
  { name: "run", handler: runOp },
@@ -957,6 +1006,12 @@ const registry: CommandDef[] = [
957
1006
  async function main(): Promise<void> {
958
1007
  const rawArgv = process.argv.slice(2);
959
1008
 
1009
+ if (usesRemovedTemporalFlag(rawArgv)) {
1010
+ console.error(formatError({ message: REMOVED_TEMPORAL_FLAG }));
1011
+ await flushAndExit(REMOVED_FLAG_EXIT_CODE);
1012
+ return;
1013
+ }
1014
+
960
1015
  let args: ParsedArgs;
961
1016
  try {
962
1017
  args = parseArgs(rawArgv);
@@ -1026,7 +1081,7 @@ async function main(): Promise<void> {
1026
1081
  process.exit(1);
1027
1082
  }
1028
1083
 
1029
- const match = resolveCommand(args, registry);
1084
+ const match = resolveCommand(args, commandRegistry);
1030
1085
  if (!match) {
1031
1086
  // chant #1078 — not one of core's own commands; check whether a lexicon
1032
1087
  // mounted a command group under this name before giving up. This is the