@intentius/chant 0.57.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 (504) 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/init-lexicon/templates/codegen.d.ts +1 -0
  37. package/dist/cli/commands/init-lexicon/templates/codegen.d.ts.map +1 -1
  38. package/dist/cli/commands/init-lexicon/templates/project.d.ts +7 -0
  39. package/dist/cli/commands/init-lexicon/templates/project.d.ts.map +1 -1
  40. package/dist/cli/commands/init-lexicon.d.ts.map +1 -1
  41. package/dist/cli/commands/init.d.ts.map +1 -1
  42. package/dist/cli/commands/lint.d.ts.map +1 -1
  43. package/dist/cli/commands/onboard.d.ts +2 -0
  44. package/dist/cli/commands/onboard.d.ts.map +1 -1
  45. package/dist/cli/handlers/build.d.ts.map +1 -1
  46. package/dist/cli/handlers/lifecycle.d.ts.map +1 -1
  47. package/dist/cli/handlers/operator.d.ts +82 -16
  48. package/dist/cli/handlers/operator.d.ts.map +1 -1
  49. package/dist/cli/handlers/run.d.ts +49 -42
  50. package/dist/cli/handlers/run.d.ts.map +1 -1
  51. package/dist/cli/main.d.ts +28 -1
  52. package/dist/cli/main.d.ts.map +1 -1
  53. package/dist/cli/mcp/op-tools.d.ts +16 -1
  54. package/dist/cli/mcp/op-tools.d.ts.map +1 -1
  55. package/dist/cli/mcp/resource-handlers.d.ts.map +1 -1
  56. package/dist/cli/mcp/resources/context.d.ts.map +1 -1
  57. package/dist/cli/registry.d.ts +26 -9
  58. package/dist/cli/registry.d.ts.map +1 -1
  59. package/dist/codegen/generate-post-synth-barrel.d.ts +1 -1
  60. package/dist/components/auto-release.d.ts +10 -20
  61. package/dist/components/auto-release.d.ts.map +1 -1
  62. package/dist/components/capability.d.ts +4 -4
  63. package/dist/components/cli-support.d.ts +20 -21
  64. package/dist/components/cli-support.d.ts.map +1 -1
  65. package/dist/components/component.d.ts +3 -3
  66. package/dist/components/component.d.ts.map +1 -1
  67. package/dist/components/driver-output.d.ts.map +1 -1
  68. package/dist/components/driver.d.ts +66 -36
  69. package/dist/components/driver.d.ts.map +1 -1
  70. package/dist/components/index.d.ts +1 -2
  71. package/dist/components/index.d.ts.map +1 -1
  72. package/dist/components/manifest-persistence.d.ts +1 -9
  73. package/dist/components/manifest-persistence.d.ts.map +1 -1
  74. package/dist/components/run-progress.d.ts +6 -6
  75. package/dist/components/run-progress.d.ts.map +1 -1
  76. package/dist/components/verbs/run-agent.d.ts +9 -15
  77. package/dist/components/verbs/run-agent.d.ts.map +1 -1
  78. package/dist/components/verbs/verify.d.ts +2 -2
  79. package/dist/deep-observation.d.ts +17 -0
  80. package/dist/deep-observation.d.ts.map +1 -1
  81. package/dist/discovery/files.d.ts +4 -4
  82. package/dist/discovery/fold-import.d.ts.map +1 -1
  83. package/dist/discovery/param-deps.d.ts +33 -0
  84. package/dist/discovery/param-deps.d.ts.map +1 -1
  85. package/dist/discovery/sandbox/bundle.d.ts.map +1 -1
  86. package/dist/discovery/sandbox/config-wire.d.ts +2 -2
  87. package/dist/fold/foldable-helpers.d.ts +5 -1
  88. package/dist/fold/foldable-helpers.d.ts.map +1 -1
  89. package/dist/fold-provenance.d.ts +236 -0
  90. package/dist/fold-provenance.d.ts.map +1 -0
  91. package/dist/graph-ops.d.ts +1 -1
  92. package/dist/held-elsewhere.d.ts +85 -0
  93. package/dist/held-elsewhere.d.ts.map +1 -0
  94. package/dist/index.d.ts +3 -0
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/kubectl-context.d.ts +3 -3
  97. package/dist/lexicon-config.d.ts +4 -4
  98. package/dist/lexicon-plugin-helpers.d.ts +1 -1
  99. package/dist/lexicon.d.ts +104 -14
  100. package/dist/lexicon.d.ts.map +1 -1
  101. package/dist/lifecycle/change-set.d.ts +13 -0
  102. package/dist/lifecycle/change-set.d.ts.map +1 -1
  103. package/dist/lifecycle/deep-diff.d.ts +133 -6
  104. package/dist/lifecycle/deep-diff.d.ts.map +1 -1
  105. package/dist/lifecycle/deep-observe.d.ts.map +1 -1
  106. package/dist/lifecycle/gate-ledger.d.ts +71 -3
  107. package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
  108. package/dist/lifecycle/index.d.ts +1 -0
  109. package/dist/lifecycle/index.d.ts.map +1 -1
  110. package/dist/lifecycle/release-ledger.d.ts +2 -2
  111. package/dist/lifecycle/run-ledger.d.ts +53 -0
  112. package/dist/lifecycle/run-ledger.d.ts.map +1 -0
  113. package/dist/lifecycle/symptoms.d.ts +3 -3
  114. package/dist/lifecycle/symptoms.d.ts.map +1 -1
  115. package/dist/lint/config.d.ts +81 -2
  116. package/dist/lint/config.d.ts.map +1 -1
  117. package/dist/lint/post-synth.d.ts +55 -2
  118. package/dist/lint/post-synth.d.ts.map +1 -1
  119. package/dist/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.d.ts +1 -1
  120. package/dist/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.d.ts.map +1 -1
  121. package/dist/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.d.ts +1 -1
  122. package/dist/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.d.ts.map +1 -1
  123. package/dist/lint/rules/comp/comp004-gate-needs-durable-runtime.d.ts +44 -0
  124. package/dist/lint/rules/comp/comp004-gate-needs-durable-runtime.d.ts.map +1 -0
  125. package/dist/lint/rules/comp/index.d.ts +1 -1
  126. package/dist/lint/rules/comp/index.d.ts.map +1 -1
  127. package/dist/lint/rules/op/index.d.ts +16 -0
  128. package/dist/lint/rules/op/index.d.ts.map +1 -0
  129. package/dist/lint/rules/op/ops012-activity-contract.d.ts +27 -0
  130. package/dist/lint/rules/op/ops012-activity-contract.d.ts.map +1 -0
  131. package/dist/lint/rules/op/ops013-step-output-ref.d.ts +61 -0
  132. package/dist/lint/rules/op/ops013-step-output-ref.d.ts.map +1 -0
  133. package/dist/lint/rules/op/ops014-converge-rule-refusals.d.ts +55 -0
  134. package/dist/lint/rules/op/ops014-converge-rule-refusals.d.ts.map +1 -0
  135. package/dist/lint/rules/op/support.d.ts +12 -0
  136. package/dist/lint/rules/op/support.d.ts.map +1 -0
  137. package/dist/lint/suppressions.d.ts +108 -0
  138. package/dist/lint/suppressions.d.ts.map +1 -0
  139. package/dist/live-endpoint.d.ts +1 -1
  140. package/dist/op/activities/activity-contracts.d.ts +54 -0
  141. package/dist/op/activities/activity-contracts.d.ts.map +1 -0
  142. package/dist/op/activities/apply.d.ts +262 -0
  143. package/dist/op/activities/apply.d.ts.map +1 -0
  144. package/dist/op/activities/build.d.ts +13 -0
  145. package/dist/op/activities/build.d.ts.map +1 -0
  146. package/dist/op/activities/converge.d.ts +110 -0
  147. package/dist/op/activities/converge.d.ts.map +1 -0
  148. package/dist/op/activities/env-teardown.d.ts +76 -0
  149. package/dist/op/activities/env-teardown.d.ts.map +1 -0
  150. package/dist/op/activities/guard-validate.d.ts +64 -0
  151. package/dist/op/activities/guard-validate.d.ts.map +1 -0
  152. package/dist/op/activities/http-check.d.ts +34 -0
  153. package/dist/op/activities/http-check.d.ts.map +1 -0
  154. package/dist/op/activities/index.d.ts +31 -0
  155. package/dist/op/activities/index.d.ts.map +1 -0
  156. package/dist/op/activities/lexicon-upgrade.d.ts +182 -0
  157. package/dist/op/activities/lexicon-upgrade.d.ts.map +1 -0
  158. package/dist/op/activities/lifecycle.d.ts +42 -0
  159. package/dist/op/activities/lifecycle.d.ts.map +1 -0
  160. package/dist/op/activities/pipeline-audit.d.ts +84 -0
  161. package/dist/op/activities/pipeline-audit.d.ts.map +1 -0
  162. package/dist/op/activities/policy.d.ts +17 -0
  163. package/dist/op/activities/policy.d.ts.map +1 -0
  164. package/dist/op/activities/reconcile.d.ts +89 -0
  165. package/dist/op/activities/reconcile.d.ts.map +1 -0
  166. package/dist/op/activities/shell.d.ts +13 -0
  167. package/dist/op/activities/shell.d.ts.map +1 -0
  168. package/dist/op/activities/teardown.d.ts +10 -0
  169. package/dist/op/activities/teardown.d.ts.map +1 -0
  170. package/dist/op/activities/util.d.ts +7 -0
  171. package/dist/op/activities/util.d.ts.map +1 -0
  172. package/dist/op/activities/wait.d.ts +28 -0
  173. package/dist/op/activities/wait.d.ts.map +1 -0
  174. package/dist/op/activities/workflow-audit.d.ts +92 -0
  175. package/dist/op/activities/workflow-audit.d.ts.map +1 -0
  176. package/dist/op/activity-contract-registry.d.ts +76 -0
  177. package/dist/op/activity-contract-registry.d.ts.map +1 -0
  178. package/dist/op/activity-contract.d.ts +25 -18
  179. package/dist/op/activity-contract.d.ts.map +1 -1
  180. package/dist/op/activity-failure.d.ts +28 -0
  181. package/dist/op/activity-failure.d.ts.map +1 -0
  182. package/dist/op/activity-profiles.d.ts +118 -0
  183. package/dist/op/activity-profiles.d.ts.map +1 -0
  184. package/dist/op/activity-registry.d.ts +22 -38
  185. package/dist/op/activity-registry.d.ts.map +1 -1
  186. package/dist/op/activity-runtime.d.ts +3 -14
  187. package/dist/op/activity-runtime.d.ts.map +1 -1
  188. package/dist/op/builders.d.ts +84 -29
  189. package/dist/op/builders.d.ts.map +1 -1
  190. package/dist/op/composites/apply-op.d.ts +113 -0
  191. package/dist/op/composites/apply-op.d.ts.map +1 -0
  192. package/dist/op/composites/converge-op.d.ts +120 -0
  193. package/dist/op/composites/converge-op.d.ts.map +1 -0
  194. package/dist/op/composites/index.d.ts +26 -0
  195. package/dist/op/composites/index.d.ts.map +1 -0
  196. package/dist/op/composites/lexicon-upgrade-op.d.ts +78 -0
  197. package/dist/op/composites/lexicon-upgrade-op.d.ts.map +1 -0
  198. package/dist/op/composites/pipeline-audit-op.d.ts +50 -0
  199. package/dist/op/composites/pipeline-audit-op.d.ts.map +1 -0
  200. package/dist/op/composites/reconcile-op.d.ts +57 -0
  201. package/dist/op/composites/reconcile-op.d.ts.map +1 -0
  202. package/dist/op/composites/watch-op.d.ts +60 -0
  203. package/dist/op/composites/watch-op.d.ts.map +1 -0
  204. package/dist/op/composites/workflow-audit-op.d.ts +57 -0
  205. package/dist/op/composites/workflow-audit-op.d.ts.map +1 -0
  206. package/dist/op/converge-rule.d.ts +12 -10
  207. package/dist/op/converge-rule.d.ts.map +1 -1
  208. package/dist/op/cron.d.ts +51 -0
  209. package/dist/op/cron.d.ts.map +1 -0
  210. package/dist/op/discover.d.ts +9 -0
  211. package/dist/op/discover.d.ts.map +1 -1
  212. package/dist/op/duration.d.ts +11 -0
  213. package/dist/op/duration.d.ts.map +1 -0
  214. package/dist/op/emulator-lifecycle.d.ts.map +1 -1
  215. package/dist/op/gate.d.ts +90 -0
  216. package/dist/op/gate.d.ts.map +1 -0
  217. package/dist/op/generate-pipeline.d.ts +9 -0
  218. package/dist/op/generate-pipeline.d.ts.map +1 -1
  219. package/dist/op/index.d.ts +23 -7
  220. package/dist/op/index.d.ts.map +1 -1
  221. package/dist/op/local-executor.d.ts +114 -28
  222. package/dist/op/local-executor.d.ts.map +1 -1
  223. package/dist/op/local-output.d.ts +11 -1
  224. package/dist/op/local-output.d.ts.map +1 -1
  225. package/dist/op/op-ir.d.ts +184 -0
  226. package/dist/op/op-ir.d.ts.map +1 -0
  227. package/dist/op/op-verb-class.d.ts +10 -2
  228. package/dist/op/op-verb-class.d.ts.map +1 -1
  229. package/dist/op/operator.d.ts +30 -5
  230. package/dist/op/operator.d.ts.map +1 -1
  231. package/dist/op/receipt-store.d.ts +1 -1
  232. package/dist/op/receipt-store.d.ts.map +1 -1
  233. package/dist/op/resource.d.ts +15 -1
  234. package/dist/op/resource.d.ts.map +1 -1
  235. package/dist/op/runtime.d.ts +200 -0
  236. package/dist/op/runtime.d.ts.map +1 -0
  237. package/dist/op/runtimes/local.d.ts +29 -0
  238. package/dist/op/runtimes/local.d.ts.map +1 -0
  239. package/dist/op/step-output-ref.d.ts +15 -13
  240. package/dist/op/step-output-ref.d.ts.map +1 -1
  241. package/dist/op/types.d.ts +79 -27
  242. package/dist/op/types.d.ts.map +1 -1
  243. package/dist/ownership.d.ts +1 -1
  244. package/dist/provenance.d.ts +21 -0
  245. package/dist/provenance.d.ts.map +1 -1
  246. package/dist/serializer-walker.d.ts.map +1 -1
  247. package/package.json +6 -1
  248. package/src/audit/catalog.test.ts +79 -3
  249. package/src/audit/catalog.ts +111 -13
  250. package/src/audit/core.test.ts +26 -0
  251. package/src/audit/core.ts +61 -17
  252. package/src/audit/discover.test.ts +39 -0
  253. package/src/audit/discover.ts +91 -15
  254. package/src/audit/lineage.ts +100 -0
  255. package/src/audit/prior-art.ts +153 -0
  256. package/src/audit/proof.test.ts +67 -0
  257. package/src/audit/proof.ts +70 -0
  258. package/src/audit/report-html.ts +9 -4
  259. package/src/audit/report-model.ts +16 -2
  260. package/src/audit/report.test.ts +33 -0
  261. package/src/audit/report.ts +5 -3
  262. package/src/audit/rules-doc.test.ts +34 -2
  263. package/src/audit/rules-doc.ts +82 -9
  264. package/src/audit/secrets.ts +15 -3
  265. package/src/audit/terraform-state.test.ts +144 -0
  266. package/src/audit/terraform-state.ts +131 -0
  267. package/src/build.ts +31 -1
  268. package/src/claimed-fields.test.ts +145 -0
  269. package/src/claimed-fields.ts +208 -0
  270. package/src/cli/build-params-cli.ts +2 -2
  271. package/src/cli/command-group.ts +14 -0
  272. package/src/cli/commands/__fixtures__/audit-terraform/infra/.terraform/providers/lock.txt +1 -0
  273. package/src/cli/commands/__fixtures__/audit-terraform/infra/main.tf +1 -0
  274. package/src/cli/commands/__fixtures__/audit-terraform/infra/modules/foo/main.tf +1 -0
  275. package/src/cli/commands/__fixtures__/audit-terraform/infra/variables.tf +3 -0
  276. package/src/cli/commands/__fixtures__/init-lexicon-output/package.json +13 -4
  277. package/src/cli/commands/__fixtures__/init-lexicon-output/src/codegen/docs-cli.ts +4 -0
  278. package/src/cli/commands/__fixtures__/init-lexicon-output/src/codegen/package.ts +1 -0
  279. package/src/cli/commands/__fixtures__/init-lexicon-output/src/package-cli.ts +21 -0
  280. package/src/cli/commands/__snapshots__/init-lexicon.test.ts.snap +1 -0
  281. package/src/cli/commands/audit.test.ts +189 -11
  282. package/src/cli/commands/audit.ts +73 -27
  283. package/src/cli/commands/build.test.ts +292 -9
  284. package/src/cli/commands/build.ts +156 -24
  285. package/src/cli/commands/check-lexicon-docs.ts +1 -1
  286. package/src/cli/commands/check-lexicon-examples.test.ts +29 -1
  287. package/src/cli/commands/check-lexicon-examples.ts +42 -10
  288. package/src/cli/commands/init-lexicon/templates/codegen.ts +9 -0
  289. package/src/cli/commands/init-lexicon/templates/project.ts +44 -4
  290. package/src/cli/commands/init-lexicon.test.ts +97 -2
  291. package/src/cli/commands/init-lexicon.ts +4 -2
  292. package/src/cli/commands/init.test.ts +35 -1
  293. package/src/cli/commands/init.ts +14 -3
  294. package/src/cli/commands/lint.test.ts +48 -0
  295. package/src/cli/commands/lint.ts +123 -0
  296. package/src/cli/commands/onboard.test.ts +75 -0
  297. package/src/cli/commands/onboard.ts +54 -23
  298. package/src/cli/handlers/build.test.ts +81 -1
  299. package/src/cli/handlers/build.ts +15 -1
  300. package/src/cli/handlers/graph.test.ts +3 -3
  301. package/src/cli/handlers/lifecycle.test.ts +195 -12
  302. package/src/cli/handlers/lifecycle.ts +123 -6
  303. package/src/cli/handlers/misc.ts +1 -1
  304. package/src/cli/handlers/operator.test.ts +183 -11
  305. package/src/cli/handlers/operator.ts +260 -55
  306. package/src/cli/handlers/run.test.ts +431 -1287
  307. package/src/cli/handlers/run.ts +365 -915
  308. package/src/cli/main.test.ts +23 -15
  309. package/src/cli/main.ts +88 -33
  310. package/src/cli/mcp/op-tools.ts +147 -88
  311. package/src/cli/mcp/resource-handlers.ts +10 -37
  312. package/src/cli/mcp/resources/context.ts +11 -12
  313. package/src/cli/mcp/server.test.ts +25 -27
  314. package/src/cli/mcp/server.ts +2 -2
  315. package/src/cli/registry.ts +26 -9
  316. package/src/codegen/docs.ts +1 -1
  317. package/src/codegen/generate-post-synth-barrel.test.ts +1 -1
  318. package/src/codegen/generate-post-synth-barrel.ts +1 -1
  319. package/src/components/README.md +3 -2
  320. package/src/components/auto-release.test.ts +4 -20
  321. package/src/components/auto-release.ts +17 -42
  322. package/src/components/capability.ts +4 -4
  323. package/src/components/cli-support.test.ts +10 -5
  324. package/src/components/cli-support.ts +52 -44
  325. package/src/components/component.schema.json +2 -2
  326. package/src/components/component.ts +3 -3
  327. package/src/components/driver-output.ts +14 -2
  328. package/src/components/driver.test.ts +92 -22
  329. package/src/components/driver.ts +193 -83
  330. package/src/components/index.ts +1 -6
  331. package/src/components/manifest-persistence.test.ts +2 -20
  332. package/src/components/manifest-persistence.ts +4 -24
  333. package/src/components/pilots/pilots-lint-clean.test.ts +11 -10
  334. package/src/components/run-progress.ts +6 -6
  335. package/src/components/verbs/run-agent.ts +11 -17
  336. package/src/components/verbs/verify.ts +2 -2
  337. package/src/deep-observation.test.ts +75 -0
  338. package/src/deep-observation.ts +48 -0
  339. package/src/discovery/collect.test.ts +3 -3
  340. package/src/discovery/files.ts +4 -4
  341. package/src/discovery/fold-import.ts +105 -2
  342. package/src/discovery/param-deps.test.ts +112 -1
  343. package/src/discovery/param-deps.ts +193 -0
  344. package/src/discovery/sandbox/bundle.ts +15 -1
  345. package/src/discovery/sandbox/config-wire.test.ts +2 -2
  346. package/src/discovery/sandbox/config-wire.ts +2 -2
  347. package/src/fold/fold.test.ts +56 -0
  348. package/src/fold/foldable-helpers.ts +81 -1
  349. package/src/fold-provenance-exclusion.test.ts +186 -0
  350. package/src/fold-provenance.test.ts +495 -0
  351. package/src/fold-provenance.ts +441 -0
  352. package/src/graph-ops.test.ts +2 -2
  353. package/src/graph-ops.ts +1 -1
  354. package/src/held-elsewhere.test.ts +102 -0
  355. package/src/held-elsewhere.ts +114 -0
  356. package/src/index.ts +3 -0
  357. package/src/kubectl-context.ts +3 -3
  358. package/src/lexicon-config.test.ts +5 -5
  359. package/src/lexicon-config.ts +4 -4
  360. package/src/lexicon-plugin-helpers.ts +1 -1
  361. package/src/lexicon.ts +120 -14
  362. package/src/lifecycle/change-set.test.ts +49 -0
  363. package/src/lifecycle/change-set.ts +67 -0
  364. package/src/lifecycle/converge-ledger.ts +1 -1
  365. package/src/lifecycle/deep-diff.test.ts +267 -14
  366. package/src/lifecycle/deep-diff.ts +217 -14
  367. package/src/lifecycle/deep-observe.test.ts +3 -1
  368. package/src/lifecycle/deep-observe.ts +16 -6
  369. package/src/lifecycle/gate-ledger.test.ts +74 -2
  370. package/src/lifecycle/gate-ledger.ts +143 -36
  371. package/src/lifecycle/index.ts +1 -0
  372. package/src/lifecycle/release-ledger.ts +2 -2
  373. package/src/lifecycle/run-ledger.test.ts +268 -0
  374. package/src/lifecycle/run-ledger.ts +201 -0
  375. package/src/lifecycle/symptoms.ts +3 -3
  376. package/src/lint/config.test.ts +82 -1
  377. package/src/lint/config.ts +112 -3
  378. package/src/lint/policy.test.ts +1 -1
  379. package/src/lint/post-synth.test.ts +31 -0
  380. package/src/lint/post-synth.ts +54 -1
  381. package/src/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.ts +2 -2
  382. package/src/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.ts +1 -1
  383. package/src/lint/rules/comp/comp.test.ts +1 -1
  384. package/src/lint/rules/comp/comp004-gate-needs-durable-runtime.ts +74 -0
  385. package/src/lint/rules/comp/index.ts +3 -3
  386. package/src/lint/rules/op/index.ts +23 -0
  387. package/src/lint/rules/op/ops012-activity-contract.test.ts +161 -0
  388. package/src/lint/rules/op/ops012-activity-contract.ts +64 -0
  389. package/src/lint/rules/op/ops013-step-output-ref.test.ts +237 -0
  390. package/src/lint/rules/op/ops013-step-output-ref.ts +98 -0
  391. package/src/lint/rules/op/ops014-converge-rule-refusals.test.ts +263 -0
  392. package/src/lint/rules/op/ops014-converge-rule-refusals.ts +179 -0
  393. package/src/lint/rules/op/support.ts +11 -0
  394. package/src/lint/suppressions.test.ts +163 -0
  395. package/src/lint/suppressions.ts +204 -0
  396. package/src/live-endpoint.ts +1 -1
  397. package/src/op/activities/activity-contracts.ts +66 -0
  398. package/src/op/activities/apply.test.ts +567 -0
  399. package/src/op/activities/apply.ts +662 -0
  400. package/src/op/activities/build.ts +26 -0
  401. package/src/op/activities/converge.test.ts +330 -0
  402. package/src/op/activities/converge.ts +449 -0
  403. package/src/op/activities/env-teardown.test.ts +187 -0
  404. package/src/op/activities/env-teardown.ts +171 -0
  405. package/src/op/activities/guard-validate.test.ts +139 -0
  406. package/src/op/activities/guard-validate.ts +223 -0
  407. package/src/op/activities/http-check.test.ts +48 -0
  408. package/src/op/activities/http-check.ts +55 -0
  409. package/src/op/activities/index.ts +119 -0
  410. package/src/op/activities/lexicon-upgrade.test.ts +492 -0
  411. package/src/op/activities/lexicon-upgrade.ts +673 -0
  412. package/src/op/activities/lifecycle.ts +85 -0
  413. package/src/op/activities/pipeline-audit.test.ts +67 -0
  414. package/src/op/activities/pipeline-audit.ts +201 -0
  415. package/src/op/activities/policy.test.ts +19 -0
  416. package/src/op/activities/policy.ts +37 -0
  417. package/src/op/activities/reconcile.test.ts +81 -0
  418. package/src/op/activities/reconcile.ts +187 -0
  419. package/src/op/activities/shell.ts +26 -0
  420. package/src/op/activities/teardown.ts +22 -0
  421. package/src/op/activities/util.ts +6 -0
  422. package/src/op/activities/wait.ts +69 -0
  423. package/src/op/activities/workflow-audit.test.ts +90 -0
  424. package/src/op/activities/workflow-audit.ts +203 -0
  425. package/src/op/activity-contract-registry.test.ts +98 -0
  426. package/src/op/activity-contract-registry.ts +114 -0
  427. package/src/op/activity-contract.test.ts +1 -1
  428. package/src/op/activity-contract.ts +37 -33
  429. package/src/op/activity-failure.ts +34 -0
  430. package/src/op/activity-profiles.test.ts +56 -0
  431. package/src/op/activity-profiles.ts +116 -0
  432. package/src/op/activity-registry.test.ts +37 -28
  433. package/src/op/activity-registry.ts +27 -56
  434. package/src/op/activity-runtime.ts +3 -47
  435. package/src/op/builders-exports.test.ts +0 -49
  436. package/src/op/builders-typed.test.ts +164 -0
  437. package/src/op/builders.ts +123 -39
  438. package/src/op/composites/apply-op.ts +208 -0
  439. package/src/op/composites/composites.test.ts +366 -0
  440. package/src/op/composites/converge-op.test.ts +168 -0
  441. package/src/op/composites/converge-op.ts +214 -0
  442. package/src/op/composites/index.ts +26 -0
  443. package/src/op/composites/lexicon-upgrade-op.test.ts +68 -0
  444. package/src/op/composites/lexicon-upgrade-op.ts +134 -0
  445. package/src/op/composites/pipeline-audit-op.test.ts +25 -0
  446. package/src/op/composites/pipeline-audit-op.ts +78 -0
  447. package/src/op/composites/reconcile-op.test.ts +51 -0
  448. package/src/op/composites/reconcile-op.ts +107 -0
  449. package/src/op/composites/watch-op.ts +108 -0
  450. package/src/op/composites/workflow-audit-op.test.ts +25 -0
  451. package/src/op/composites/workflow-audit-op.ts +88 -0
  452. package/src/op/converge-rule.ts +12 -10
  453. package/src/op/cron.test.ts +128 -0
  454. package/src/op/cron.ts +149 -0
  455. package/src/op/discover-root.test.ts +105 -1
  456. package/src/op/discover.test.ts +6 -2
  457. package/src/op/discover.ts +84 -16
  458. package/src/op/duration.ts +21 -0
  459. package/src/op/effect-step.test.ts +26 -11
  460. package/src/op/emulator-lifecycle.ts +1 -2
  461. package/src/op/gate.ts +155 -0
  462. package/src/op/generate-pipeline.test.ts +65 -3
  463. package/src/op/generate-pipeline.ts +19 -2
  464. package/src/op/index.ts +39 -6
  465. package/src/op/local-executor.test.ts +163 -34
  466. package/src/op/local-executor.ts +370 -102
  467. package/src/op/local-output.test.ts +95 -11
  468. package/src/op/local-output.ts +33 -4
  469. package/src/op/op-ir.test.ts +281 -0
  470. package/src/op/op-ir.ts +417 -0
  471. package/src/op/op-verb-class.ts +19 -5
  472. package/src/op/op.test.ts +26 -5
  473. package/src/op/operator.test.ts +175 -6
  474. package/src/op/operator.ts +63 -16
  475. package/src/op/receipt-store.ts +1 -1
  476. package/src/op/resource.ts +20 -2
  477. package/src/op/runtime.ts +203 -0
  478. package/src/op/runtimes/local.test.ts +181 -0
  479. package/src/op/runtimes/local.ts +212 -0
  480. package/src/op/step-output-ref.ts +15 -13
  481. package/src/op/types.ts +84 -24
  482. package/src/ownership.ts +1 -1
  483. package/src/provenance.test.ts +6 -0
  484. package/src/provenance.ts +21 -1
  485. package/src/serializer-walker.test.ts +42 -0
  486. package/src/serializer-walker.ts +21 -2
  487. package/dist/cli/handlers/op-progress.d.ts +0 -90
  488. package/dist/cli/handlers/op-progress.d.ts.map +0 -1
  489. package/dist/cli/handlers/run-client.d.ts +0 -127
  490. package/dist/cli/handlers/run-client.d.ts.map +0 -1
  491. package/dist/cli/handlers/run-report.d.ts +0 -5
  492. package/dist/cli/handlers/run-report.d.ts.map +0 -1
  493. package/dist/components/temporal-codegen-loader.d.ts +0 -27
  494. package/dist/components/temporal-codegen-loader.d.ts.map +0 -1
  495. package/dist/lint/rules/comp/comp004-gate-needs-temporal.d.ts +0 -37
  496. package/dist/lint/rules/comp/comp004-gate-needs-temporal.d.ts.map +0 -1
  497. package/src/cli/handlers/op-progress.test.ts +0 -268
  498. package/src/cli/handlers/op-progress.ts +0 -248
  499. package/src/cli/handlers/run-client.test.ts +0 -82
  500. package/src/cli/handlers/run-client.ts +0 -219
  501. package/src/cli/handlers/run-report.test.ts +0 -62
  502. package/src/cli/handlers/run-report.ts +0 -122
  503. package/src/components/temporal-codegen-loader.ts +0 -41
  504. package/src/lint/rules/comp/comp004-gate-needs-temporal.ts +0 -66
@@ -0,0 +1,120 @@
1
+ /**
2
+ * ConvergeOp composite (#1484, epic #1487 feature 1) — the executable
3
+ * runbook. Observe, classify against a typed rule table, dispatch to
4
+ * declared ops within a per-tick budget, record, rest. Peer to `WatchOp` /
5
+ * `ReconcileOp` / `ApplyOp` — same `{ op }` shape, with the cadence on the
6
+ * Op itself (#2120).
7
+ *
8
+ * Phases: `Observe` (snapshot + a quick live diff, exactly `WatchOp`'s own
9
+ * shape, for the `Drift` outcome and per-phase visibility) ->
10
+ * `Converge` (one `convergeTick` activity call —
11
+ * ../activities/converge.ts — that does classify + dispatch + record;
12
+ * see that module's doc for why this can't be split into further static
13
+ * phases). `Observe`'s drift signal threads into `Converge`'s args via a
14
+ * step-output reference (#1290), not a search-attribute round-trip.
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * import { ConvergeOp, eq, gt, run, report, when } from "@intentius/chant/op";
19
+ * import type { ConvergeSymptom } from "@intentius/chant/lifecycle/symptoms";
20
+ *
21
+ * export const { op } = ConvergeOp({
22
+ * name: "fountain-converge",
23
+ * env: "staging",
24
+ * dial: "apply",
25
+ * schedule: "*\/10 * * * *",
26
+ * rules: [
27
+ * when<ConvergeSymptom>(eq("status", "drifted"), run("fountain-apply"), {
28
+ * id: "drift-apply",
29
+ * why: "Live config drifted from declared source; re-apply converges it back.",
30
+ * }),
31
+ * when<ConvergeSymptom>(gt("adoptCount", 0), report("unowned resources present"), {
32
+ * id: "adopt-report",
33
+ * why: "An unowned resource is reported for a human to review — never auto-claimed.",
34
+ * }),
35
+ * when<ConvergeSymptom>(eq("status", "unknown"), report("environment could not be fully observed"), {
36
+ * id: "unknown-report",
37
+ * why: "unknown never remediates — a partial read is a hole to report, not a guess to act on.",
38
+ * }),
39
+ * ],
40
+ * });
41
+ * ```
42
+ *
43
+ * @see #1484, #1487
44
+ */
45
+ import type { OpResource } from "../resource.js";
46
+ import { type ConvergeRule } from "../converge-rule.js";
47
+ import type { ConvergeSymptom } from "../../lifecycle/symptoms.js";
48
+ /**
49
+ * Authority level for this ConvergeOp's environment — issue #1484's own
50
+ * Autonomy table (dial × verb class):
51
+ *
52
+ * | verb class | observe | reconcile | apply |
53
+ * |-------------|-------------|------------------|------------------------|
54
+ * | read-only | free-run | free-run | free-run |
55
+ * | mutating | report only | open PR | run, gated per op |
56
+ * | destructive | refused | refused | always gated |
57
+ *
58
+ * `ConvergeOp` adds no authority an environment did not already grant.
59
+ * Default `"observe"` — not autonomous by default (issue: "a ConvergeOp in
60
+ * an observe environment is a report generator").
61
+ *
62
+ * **v1 implements a conservative subset of this table**, not the whole
63
+ * thing (pre-merge review of #1954 caught the gap between what the code did
64
+ * and what this table says — this doc now matches the issue, and the code
65
+ * matches this doc):
66
+ *
67
+ * | verb class | observe | reconcile | apply |
68
+ * |-------------|-------------|-------------------------------------|--------------------------------------|
69
+ * | read-only | free-run | free-run | free-run |
70
+ * | mutating | report only | **refused at build (OPS014)** | run |
71
+ * | destructive | refused | refused | **refused at build (OPS014), v1** |
72
+ *
73
+ * - **`reconcile` × mutating is "open PR" in the issue's table — not yet
74
+ * implemented.** Building that channel (reusing `ReconcileOp`'s
75
+ * `onDrift: "pull-request" | "issue" | "report"`) is out of v1 scope — see
76
+ * `../converge-rule.ts`'s `ReportAction` doc and epic #1487's
77
+ * onDrift-channel open question. Until it exists, a rule that would
78
+ * dispatch a mutating op under `reconcile` is refused at build
79
+ * (`OPS014`), not silently escalated to "run directly" the way `apply`
80
+ * would. A runtime backstop in `convergeTick`
81
+ * (`../activities/converge.ts`) re-checks the same thing at dispatch
82
+ * time, for a rule table that reached the tick without going through that
83
+ * build.
84
+ * - **`apply` × destructive is refused outright in v1, gate or not.** The
85
+ * issue's table says "always gated", but the dispatch executor can't
86
+ * honor a gate: `dispatchOp` shells `chant run <op>`, and a gated run ends
87
+ * pending approval (#2119) rather than continuing — so
88
+ * "destructive + apply + gated" reads as a path to dispatch but was a
89
+ * dead cell: it could never actually succeed. `OPS014` refuses the rule
90
+ * instead of shipping a path guaranteed to fail every time it's exercised.
91
+ * Gated dispatch that waits for the approval is #1485's design to own.
92
+ */
93
+ export type ConvergeDial = "observe" | "reconcile" | "apply";
94
+ export interface ConvergeOpConfig {
95
+ /** Op name (kebab-case). Names the Op's output directory and is what `chant run` takes. */
96
+ name: string;
97
+ /** Environment to converge (e.g. "staging"). */
98
+ env: string;
99
+ /** @default "observe" */
100
+ dial?: ConvergeDial;
101
+ /** Max number of `run` dispatches per tick — the issue's "the worst tick is bounded" (Accessible Ops factor VI). Rules matched beyond the budget are recorded, not run. @default 3 */
102
+ budget?: number;
103
+ /** The rule table — build with `when()`/`eq()`/`run()`/`report()` from `@intentius/chant/op`. Non-empty; every rule id must be unique. */
104
+ rules: ConvergeRule<ConvergeSymptom>[];
105
+ /**
106
+ * Cron expression. When set, it lands on the Op as `schedule` — the cadence
107
+ * `chant operator` ticks this Op on and the CI generators render; omit for
108
+ * one-shot `chant run` on the local executor, also the test story (issue:
109
+ * "one-shot runnable locally for a single tick").
110
+ */
111
+ schedule?: string;
112
+ /** Run `chant lifecycle diff --live` in the Observe phase (queries live state). @default true */
113
+ live?: boolean;
114
+ }
115
+ export interface ConvergeOpResources {
116
+ /** Op resource — the observe-then-converge Op. */
117
+ op: InstanceType<typeof OpResource>;
118
+ }
119
+ export declare function ConvergeOp(config: ConvergeOpConfig): ConvergeOpResources;
120
+ //# sourceMappingURL=converge-op.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"converge-op.d.ts","sourceRoot":"","sources":["../../../src/op/composites/converge-op.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAA2C,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;AAE7D,MAAM,WAAW,gBAAgB;IAC/B,2FAA2F;IAC3F,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,yBAAyB;IACzB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,sLAAsL;IACtL,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0IAA0I;IAC1I,KAAK,EAAE,YAAY,CAAC,eAAe,CAAC,EAAE,CAAC;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iGAAiG;IACjG,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,kDAAkD;IAClD,EAAE,EAAE,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;CACrC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,mBAAmB,CAwFxE"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * The Op composites (#2120) — the named verbs an operator authors instead of
3
+ * hand-writing phases: watch, reconcile, apply, converge, and the three audit
4
+ * runners.
5
+ *
6
+ * They lived in a hosting lexicon while a cadence meant a scheduler resource;
7
+ * now that the cadence is `OpConfig.schedule` they are runtime-neutral, each
8
+ * returns `{ op }`, and nothing here imports a hosting lexicon. A project that
9
+ * wants a real scheduler resource pairs one with the Op by hand (the pattern
10
+ * `lexicons/cedar/src/dogwood/replay-op.ts` documents).
11
+ */
12
+ export { WatchOp } from "./watch-op.js";
13
+ export type { WatchOpConfig, WatchOpResources } from "./watch-op.js";
14
+ export { ReconcileOp } from "./reconcile-op.js";
15
+ export type { ReconcileOpConfig, ReconcileOpResources } from "./reconcile-op.js";
16
+ export { ApplyOp } from "./apply-op.js";
17
+ export type { ApplyOpConfig, ApplyOpResources } from "./apply-op.js";
18
+ export { ConvergeOp } from "./converge-op.js";
19
+ export type { ConvergeOpConfig, ConvergeOpResources, ConvergeDial } from "./converge-op.js";
20
+ export { WorkflowAuditOp } from "./workflow-audit-op.js";
21
+ export type { WorkflowAuditOpConfig, WorkflowAuditOpResources } from "./workflow-audit-op.js";
22
+ export { PipelineAuditOp } from "./pipeline-audit-op.js";
23
+ export type { PipelineAuditOpConfig, PipelineAuditOpResources } from "./pipeline-audit-op.js";
24
+ export { LexiconUpgradeOp, IN_SCOPE_LEXICONS } from "./lexicon-upgrade-op.js";
25
+ export type { LexiconUpgradeOpConfig, LexiconUpgradeOpResources } from "./lexicon-upgrade-op.js";
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/op/composites/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,YAAY,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * LexiconUpgradeOp composite — the runner that dogfoods chant to keep each
3
+ * in-scope lexicon current with its upstream spec (#527, epic #523).
4
+ *
5
+ * The shared tooling (#524) does the regen + surface-diff; the pinned (#525)
6
+ * and rolling (#526) pipelines do the detection. This Op wires them into an
7
+ * audit-style operational layer, modeled on `WorkflowAuditOp` / `PipelineAuditOp`:
8
+ * phases detect → run the right check for the lexicon → surface-diff → finding.
9
+ *
10
+ * It runs one-shot on the **local Op executor** via `chant run` — nothing
11
+ * durable is required for an upgrade check (the scheduled CI runner is the
12
+ * trigger). A `schedule` may still be supplied for continuous re-check; it
13
+ * lands on the Op itself (#2120).
14
+ *
15
+ * Lexicon classification (which check the activity dispatches to):
16
+ * PINNED {k8s, gcp, docker, gitlab} → checkPinnedUpgrade
17
+ * ROLLING {aws, azure, github} → checkRollingUpgrade
18
+ * helm / forgejo are excluded — no upstream spec.
19
+ *
20
+ * Finding-modes mirror ReconcileOp: `report` (default, no external services)
21
+ * | `issue` | `pull-request`. For the epic goal, `pull-request` opens/updates a
22
+ * long-lived branch per lexicon.
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * // one-shot, local executor, report only
27
+ * export const { op } = LexiconUpgradeOp({ lexicon: "aws" });
28
+ *
29
+ * // weekly, opening a PR when an upgrade is ready
30
+ * export const { op } = LexiconUpgradeOp({
31
+ * lexicon: "k8s",
32
+ * schedule: "0 6 * * 1",
33
+ * onFinding: "pull-request",
34
+ * });
35
+ * ```
36
+ *
37
+ * @see #524 — shared regen-validate + surface-diff tooling.
38
+ * @see #525 — pinned-version bump pipeline.
39
+ * @see #526 — rolling-spec drift pipeline.
40
+ */
41
+ import type { OpResource } from "../resource.js";
42
+ import type { LexiconUpgradeMode, SupportedLexicon } from "../activities/lexicon-upgrade.js";
43
+ /** The in-scope lexicons. helm / forgejo are excluded (no upstream spec). */
44
+ export declare const IN_SCOPE_LEXICONS: readonly SupportedLexicon[];
45
+ export interface LexiconUpgradeOpConfig {
46
+ /** Which in-scope lexicon to check. */
47
+ lexicon: SupportedLexicon;
48
+ /**
49
+ * Op name (kebab-case). Names the Op's output directory and is what `chant
50
+ * run` takes. Defaults to `<lexicon>-upgrade`.
51
+ */
52
+ name?: string;
53
+ /**
54
+ * Cron expression. When set, it lands on the Op as `schedule` for
55
+ * continuous re-check; omit for one-shot `chant run` on the local executor.
56
+ */
57
+ schedule?: string;
58
+ /**
59
+ * Absolute path to the lexicon root, forwarded to the activity. Defaults to
60
+ * `<cwd>/lexicons/<lexicon>` at run time.
61
+ */
62
+ lexiconDir?: string;
63
+ /**
64
+ * What to produce on findings. Default: "report".
65
+ * @default "report"
66
+ */
67
+ onFinding?: LexiconUpgradeMode;
68
+ }
69
+ export interface LexiconUpgradeOpResources {
70
+ /** Op resource — the upgrade Op, emitted on `chant build`. */
71
+ op: InstanceType<typeof OpResource>;
72
+ }
73
+ /**
74
+ * Build a LexiconUpgradeOp for one lexicon. Rejects out-of-scope lexicons at
75
+ * construction time so a typo never silently produces a no-op Op.
76
+ */
77
+ export declare function LexiconUpgradeOp(config: LexiconUpgradeOpConfig): LexiconUpgradeOpResources;
78
+ //# sourceMappingURL=lexicon-upgrade-op.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lexicon-upgrade-op.d.ts","sourceRoot":"","sources":["../../../src/op/composites/lexicon-upgrade-op.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAE1F,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,EAAE,SAAS,gBAAgB,EAU/C,CAAC;AAEX,MAAM,WAAW,sBAAsB;IACrC,uCAAuC;IACvC,OAAO,EAAE,gBAAgB,CAAC;IAC1B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC;AAED,MAAM,WAAW,yBAAyB;IACxC,8DAA8D;IAC9D,EAAE,EAAE,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;CACrC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,GAAG,yBAAyB,CAyC1F"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * PipelineAuditOp composite — the live include/component audit of GitLab
3
+ * pipelines as a chant Op with an optional schedule (#303).
4
+ *
5
+ * The gitlab post-synth checks (#297) own everything answerable from the
6
+ * deterministic build. This Op owns *only* the checks that require live
7
+ * resolution against a moving upstream truth — a pinned component/include ref
8
+ * that no longer resolves, an archived or moved upstream project, or a new
9
+ * advisory covering a component/image in use. It sits at **observe** on the
10
+ * lifecycle dial, with a finding-mode (`report | issue | merge-request`) as the
11
+ * **reconcile** step — for GitLab the PR mode is a merge request.
12
+ *
13
+ * Runs one-shot on the local Op executor via `chant run`; a `schedule` puts
14
+ * the cadence on the Op itself (#2120).
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * export const { op } = PipelineAuditOp({
19
+ * name: "pipeline-audit",
20
+ * schedule: "0 6 * * *",
21
+ * onFinding: "merge-request",
22
+ * });
23
+ * ```
24
+ *
25
+ * @see #297 — the deterministic counterpart this freshens.
26
+ */
27
+ import type { OpResource } from "../resource.js";
28
+ import type { PipelineAuditMode } from "../activities/pipeline-audit.js";
29
+ export interface PipelineAuditOpConfig {
30
+ /** Op name (kebab-case). Names the Op's output directory and is what `chant run` takes. */
31
+ name: string;
32
+ /** Cron expression. When set, it lands on the Op as `schedule`; omit for one-shot. */
33
+ schedule?: string;
34
+ /**
35
+ * Path to the emitted `.gitlab-ci.yml` to audit at run time.
36
+ * @default ".gitlab-ci.yml"
37
+ */
38
+ pipelineFile?: string;
39
+ /**
40
+ * What to produce on findings. Default: "report".
41
+ * @default "report"
42
+ */
43
+ onFinding?: PipelineAuditMode;
44
+ }
45
+ export interface PipelineAuditOpResources {
46
+ /** Op resource — the audit Op, emitted on `chant build`. */
47
+ op: InstanceType<typeof OpResource>;
48
+ }
49
+ export declare function PipelineAuditOp(config: PipelineAuditOpConfig): PipelineAuditOpResources;
50
+ //# sourceMappingURL=pipeline-audit-op.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline-audit-op.d.ts","sourceRoot":"","sources":["../../../src/op/composites/pipeline-audit-op.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,MAAM,WAAW,qBAAqB;IACpC,2FAA2F;IAC3F,IAAI,EAAE,MAAM,CAAC;IACb,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,4DAA4D;IAC5D,EAAE,EAAE,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;CACrC;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,wBAAwB,CAwBvF"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * ReconcileOp composite — the cloud → code workflow as an Op.
3
+ *
4
+ * Keeps source tracking reality: when live drifts from declarations, open a PR
5
+ * that regenerates the affected TypeScript. Mirrors the {@link WatchOp} shape.
6
+ *
7
+ * Phases: snapshot → plan → regenerate (live import) → open PR. The
8
+ * regenerate-and-PR step is the `reconcilePr` activity (#122), which derives
9
+ * the change set from `chant lifecycle plan` and opens a reviewable PR.
10
+ *
11
+ * Runs one-shot on the local Op executor for a `chant run`; with a `schedule`
12
+ * the cadence rides on the Op itself (#2120) for whichever runtime honours it.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * // one-shot, local executor
17
+ * export const { op } = ReconcileOp({ name: "prod-reconcile", env: "prod" });
18
+ *
19
+ * // hourly
20
+ * export const { op } = ReconcileOp({
21
+ * name: "prod-reconcile",
22
+ * env: "prod",
23
+ * schedule: "0 * * * *",
24
+ * scope: { owned: true },
25
+ * });
26
+ * ```
27
+ *
28
+ * @see #112 — stateless-authoritative state model + live import
29
+ */
30
+ import type { OpResource } from "../resource.js";
31
+ import type { ReconcileMode } from "../activities/reconcile.js";
32
+ export interface ReconcileOpConfig {
33
+ /** Op name (kebab-case). Names the Op's output directory and is what `chant run` takes. */
34
+ name: string;
35
+ /** Environment to reconcile (e.g. "prod"). */
36
+ env: string;
37
+ /**
38
+ * Cron expression. When set, it lands on the Op as `schedule`; omit for
39
+ * one-shot `chant run` on the local executor.
40
+ */
41
+ schedule?: string;
42
+ /**
43
+ * What to produce on drift. Default: "pull-request".
44
+ * @default "pull-request"
45
+ */
46
+ onDrift?: ReconcileMode;
47
+ /** Restrict reconciliation to chant-owned resources. */
48
+ scope?: {
49
+ owned?: boolean;
50
+ };
51
+ }
52
+ export interface ReconcileOpResources {
53
+ /** Op resource — the snapshot→plan→regenerate→PR Op. */
54
+ op: InstanceType<typeof OpResource>;
55
+ }
56
+ export declare function ReconcileOp(config: ReconcileOpConfig): ReconcileOpResources;
57
+ //# sourceMappingURL=reconcile-op.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reconcile-op.d.ts","sourceRoot":"","sources":["../../../src/op/composites/reconcile-op.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAChC,2FAA2F;IAC3F,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,wDAAwD;IACxD,KAAK,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,EAAE,EAAE,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;CACrC;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,oBAAoB,CAgD3E"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * WatchOp composite — periodic state observation as an Op.
3
+ *
4
+ * Composes existing pieces:
5
+ * - The local executor (`../local-executor.ts`) runs the phases in order and
6
+ * files each step's record under the phase it belongs to
7
+ * - The pre-built lifecycleSnapshot + lifecycleDiff activities
8
+ * - `schedule` puts the cadence on the Op itself (#2120)
9
+ *
10
+ * The cron is Op data, not a resource: `chant operator` ticks on it, the
11
+ * github/gitlab/forgejo generators render it as a CI cron, and a hosting
12
+ * lexicon hands it to its own scheduler.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * export const { op } = WatchOp({
17
+ * name: "prod-watch",
18
+ * env: "prod",
19
+ * schedule: "0,15,30,45 * * * *", // every 15 minutes
20
+ * });
21
+ * ```
22
+ *
23
+ * @see #31 — Continuous observation (the issue this composite addresses)
24
+ */
25
+ import type { OpResource } from "../resource.js";
26
+ import type { EffectReceiptDeclaration } from "../../effect-receipt.js";
27
+ export interface WatchOpConfig {
28
+ /** Op name (kebab-case). Names the Op's output directory and is what `chant run` takes. */
29
+ name: string;
30
+ /** Environment to snapshot + diff (e.g. "prod"). */
31
+ env: string;
32
+ /**
33
+ * Cron expression controlling how often the watch runs. Omit for a
34
+ * one-shot `chant run` on the local executor.
35
+ * @example "0,15,30,45 * * * *" — every 15 minutes
36
+ * @example "0 * * * *" — hourly
37
+ */
38
+ schedule?: string;
39
+ /**
40
+ * Run `chant lifecycle diff --live` (queries cloud APIs) instead of the
41
+ * default digest-only diff. Recommended for real drift detection.
42
+ * @default true
43
+ */
44
+ live?: boolean;
45
+ /**
46
+ * Effect receipts to check for staleness between change windows (#1834,
47
+ * epic #1703). Typed references only — import each EffectReceipt const.
48
+ * Read-only: the watch reads each receipt through the receipt store
49
+ * (provided by the receipt row's lexicon, #1835) and reports absent or
50
+ * differing values as findings. It never runs an effect and never writes
51
+ * a receipt — the `effect()` step is the sole writer.
52
+ */
53
+ receipts?: EffectReceiptDeclaration[];
54
+ }
55
+ export interface WatchOpResources {
56
+ /** Op resource — the snapshot+diff Op, emitted on `chant build`. */
57
+ op: InstanceType<typeof OpResource>;
58
+ }
59
+ export declare function WatchOp(config: WatchOpConfig): WatchOpResources;
60
+ //# sourceMappingURL=watch-op.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch-op.d.ts","sourceRoot":"","sources":["../../../src/op/composites/watch-op.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAErE,MAAM,WAAW,aAAa;IAC5B,2FAA2F;IAC3F,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,wBAAwB,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,gBAAgB;IAC/B,oEAAoE;IACpE,EAAE,EAAE,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;CACrC;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,gBAAgB,CA2C/D"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * WorkflowAuditOp composite — the live supply-chain audit of GitHub workflows
3
+ * as a chant Op with an optional schedule (#292).
4
+ *
5
+ * The github post-synth checks (#286-#291) own everything answerable from the
6
+ * deterministic build. This Op owns *only* the checks that require live
7
+ * resolution against a moving upstream truth — stale SHA pins, impostor refs,
8
+ * symbolic-ref confusion, pin/comment mismatch, advisories, archived upstreams.
9
+ * It sits at **observe** on the lifecycle dial, with a finding-mode (mirroring
10
+ * `ReconcileOp`: `report | issue | pull-request`) as the **reconcile** step.
11
+ *
12
+ * Runs one-shot on the local Op executor via `chant run`; a `schedule` puts
13
+ * the cadence on the Op itself (#2120), for continuous re-audit between
14
+ * change windows.
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * // one-shot, local executor
19
+ * export const { op } = WorkflowAuditOp({ name: "actions-audit" });
20
+ *
21
+ * // daily, opening a PR that bumps a stale pin
22
+ * export const { op } = WorkflowAuditOp({
23
+ * name: "actions-audit",
24
+ * schedule: "0 6 * * *",
25
+ * onFinding: "pull-request",
26
+ * });
27
+ * ```
28
+ *
29
+ * @see #286 — the deterministic counterpart this freshens.
30
+ */
31
+ import type { OpResource } from "../resource.js";
32
+ import type { WorkflowAuditMode } from "../activities/workflow-audit.js";
33
+ export interface WorkflowAuditOpConfig {
34
+ /** Op name (kebab-case). Names the Op's output directory and is what `chant run` takes. */
35
+ name: string;
36
+ /**
37
+ * Cron expression. When set, it lands on the Op as `schedule` for
38
+ * continuous re-audit; omit for one-shot `chant run` on the local executor.
39
+ */
40
+ schedule?: string;
41
+ /**
42
+ * Directory of emitted workflow files to audit at run time.
43
+ * @default ".github/workflows"
44
+ */
45
+ workflowsDir?: string;
46
+ /**
47
+ * What to produce on findings. Default: "report".
48
+ * @default "report"
49
+ */
50
+ onFinding?: WorkflowAuditMode;
51
+ }
52
+ export interface WorkflowAuditOpResources {
53
+ /** Op resource — generates the audit workflow on `chant build`. */
54
+ op: InstanceType<typeof OpResource>;
55
+ }
56
+ export declare function WorkflowAuditOp(config: WorkflowAuditOpConfig): WorkflowAuditOpResources;
57
+ //# sourceMappingURL=workflow-audit-op.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-audit-op.d.ts","sourceRoot":"","sources":["../../../src/op/composites/workflow-audit-op.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,MAAM,WAAW,qBAAqB;IACpC,2FAA2F;IAC3F,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,mEAAmE;IACnE,EAAE,EAAE,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;CACrC;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,wBAAwB,CA2BvF"}
@@ -5,10 +5,10 @@
5
5
  * The issue's illustrative sketch writes a rule's condition as a JS arrow
6
6
  * function (`s => s.status === "drifted"`). That reads well but can't
7
7
  * actually ship: a rule is evaluated per-tick against live, freshly-observed
8
- * data inside a Temporal activity, and an activity's arguments — including
9
- * whatever a `ConvergeOp` composite bakes into its generated workflow — must
10
- * be plain JSON (see `step-output-ref.ts`'s module doc on why a value
11
- * crossing the workflow/activity boundary can't carry a closure). A rule
8
+ * data inside an activity, and an activity's arguments — including whatever a
9
+ * `ConvergeOp` composite bakes into the Op it builds — must be plain JSON (see
10
+ * `step-output-ref.ts`'s module doc on why a value crossing an activity
11
+ * boundary can't carry a closure). A rule
12
12
  * "outside the evaluable subset" is one of the build-time refusals #1484
13
13
  * names explicitly, which only makes sense if there IS an evaluable subset
14
14
  * to be outside of — so rules here are data: a small comparison language
@@ -25,7 +25,8 @@
25
25
  * produces" refusal, satisfied for free. {@link isWellFormedPredicate} is the
26
26
  * runtime backstop for a rule assembled by hand (bypassing `when()`/the
27
27
  * comparison builders) rather than authored through them, and is what a
28
- * build-time check (TMP014) re-validates the serialized rule table against.
28
+ * build-time check (OPS014, ../lint/rules/op/ops014-converge-rule-refusals.ts)
29
+ * re-validates the serialized rule table against.
29
30
  */
30
31
  /** Comparison operators over a single symptom field. */
31
32
  export type FieldComparisonOp = "eq" | "neq" | "gt" | "gte" | "lt" | "lte";
@@ -59,8 +60,9 @@ export interface AnyOfPredicate<S> {
59
60
  export type SymptomPredicate<S> = FieldComparisonPredicate<S> | FieldTruthinessPredicate<S> | AllOfPredicate<S> | AnyOfPredicate<S>;
60
61
  /**
61
62
  * Structural validator for a value claiming to be a {@link SymptomPredicate}
62
- * — the runtime backstop `TMP014` (lexicons/temporal's post-synth check)
63
- * re-checks a serialized rule table against, since nothing forces a rule
63
+ * — the runtime backstop OPS014
64
+ * (../lint/rules/op/ops014-converge-rule-refusals.ts) re-checks a serialized
65
+ * rule table against, since nothing forces a rule
64
66
  * assembled by hand (rather than through the builders below) to match this
65
67
  * shape. Recurses through `allOf`/`anyOf`; `fieldWhitelist`, when given,
66
68
  * additionally refuses a field name the symptom record doesn't actually
@@ -75,9 +77,9 @@ export declare function evaluatePredicate<S>(predicate: SymptomPredicate<S>, sym
75
77
  * Does a predicate reference the given symptom field anywhere in it,
76
78
  * recursing through `allOf`/`anyOf`? The build-time backstop for a claim
77
79
  * about a *category* of rule (e.g. "a rule reading `adoptCount`") rather
78
- * than a single comparison — `TMP014`'s adopt-safety check
79
- * (../../../lexicons/temporal/src/lint/post-synth/tmp014-converge-rule-refusals.ts)
80
- * uses this to refuse a rule that both reads `adoptCount` and dispatches a
80
+ * than a single comparison — OPS014's adopt-safety check
81
+ * (../lint/rules/op/ops014-converge-rule-refusals.ts) uses this to refuse a
82
+ * rule that both reads `adoptCount` and dispatches a
81
83
  * mutating op, rather than merely documenting that authors shouldn't write
82
84
  * one.
83
85
  */
@@ -1 +1 @@
1
- {"version":3,"file":"converge-rule.d.ts","sourceRoot":"","sources":["../../src/op/converge-rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAIH,wDAAwD;AACxD,MAAM,MAAM,iBAAiB,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;AAE3E,4EAA4E;AAC5E,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEnD,MAAM,WAAW,wBAAwB,CAAC,CAAC;IACzC,IAAI,EAAE,kBAAkB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;IACxB,EAAE,EAAE,iBAAiB,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,wBAAwB,CAAC,CAAC;IACzC,IAAI,EAAE,kBAAkB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;IACxB,EAAE,EAAE,iBAAiB,CAAC;CACvB;AAED,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;CACnC;AAED;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAC1B,wBAAwB,CAAC,CAAC,CAAC,GAC3B,wBAAwB,CAAC,CAAC,CAAC,GAC3B,cAAc,CAAC,CAAC,CAAC,GACjB,cAAc,CAAC,CAAC,CAAC,CAAC;AAKtB;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAyBnG;AAED,qGAAqG;AACrG,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAiCxF;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CASlG;AAID,wBAAgB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAE5G;AACD,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAE7G;AACD,wBAAgB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAEzF;AACD,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAE1F;AACD,wBAAgB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAEzF;AACD,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAE1F;AACD,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAE9E;AACD,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAE7E;AACD,wBAAgB,KAAK,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAEhF;AACD,wBAAgB,KAAK,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAEhF;AAID;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,KAAK,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC;AAElD,wBAAgB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,CAEzC;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAEnD;AAID,+EAA+E;AAC/E,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC;;;;;;GAMG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,+IAA+I;IAC/I,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,EAAE,UAAU,CAAC;IACjB,wDAAwD;IACxD,GAAG,EAAE,MAAM,CAAC;IACZ,oIAAoI;IACpI,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,IAAI,CAAC,CAAC,EACpB,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC9B,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GACxD,YAAY,CAAC,CAAC,CAAC,CAiBjB;AAED,sHAAsH;AACtH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,CAQtE"}
1
+ {"version":3,"file":"converge-rule.d.ts","sourceRoot":"","sources":["../../src/op/converge-rule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Cron for an Op's own schedule (#2120) — validation at `Op()` construction
3
+ * and minute-granularity matching for `chant operator`'s per-op cadence.
4
+ *
5
+ * `OpConfig.schedule.cron` is runtime-neutral data: the github lexicon turns
6
+ * it into `on.schedule`, a hosting lexicon hands it to its own scheduler,
7
+ * `chant operator` reads it as that Op's tick cadence, and the local one-shot
8
+ * executor ignores it entirely. Nothing here talks to a scheduler.
9
+ *
10
+ * The validator a lexicon's own post-synth cron check imports rather than
11
+ * keeping its own copy:
12
+ * deliberately permissive, a pre-submission guard rather than a full parser,
13
+ * since the final word belongs to whichever scheduler runs the cron.
14
+ *
15
+ * {@link cronMatches} is stricter about what it can *evaluate* than
16
+ * {@link isValidCronExpression} is about what it accepts, so a field carrying
17
+ * a Quartz extension the evaluator does not implement (`L`, `W`, `#`, `?`)
18
+ * matches everything rather than nothing — an operator that ticks too often
19
+ * is a wasted converge, one that never ticks is a silent outage.
20
+ */
21
+ /**
22
+ * True when `expr` looks like 5- or 6-field cron. Field-shape only: it does
23
+ * not check that a number is in range for its position, and it accepts the
24
+ * Quartz extensions (`L`, `W`, `#`, `?`) some schedulers take.
25
+ */
26
+ export declare function isValidCronExpression(expr: string): boolean;
27
+ /**
28
+ * The message `Op()` throws with and a lexicon's post-synth cron check
29
+ * reports, so one wording covers both the build-time refusal and the
30
+ * post-synth diagnostic.
31
+ */
32
+ export declare function cronSyntaxMessage(expr: string): string;
33
+ /**
34
+ * True when `date` falls on a minute `expr` fires at, in the host's local
35
+ * time zone (the only clock the operator daemon has).
36
+ *
37
+ * A 6-field expression is read as Quartz's `second minute hour dom month dow`
38
+ * and the seconds field is dropped — nothing in chant ticks sub-minute.
39
+ * Day-of-month and day-of-week follow the usual cron rule: when both are
40
+ * restricted, either one matching is enough.
41
+ */
42
+ export declare function cronMatches(expr: string, date: Date): boolean;
43
+ /**
44
+ * True when `expr` fires at some minute in `(after, upTo]` — what a round
45
+ * asks for an Op it last ticked at `after`. Level-triggered on purpose: a
46
+ * round that arrives late still ticks the Op it owes rather than waiting for
47
+ * the next exact match, and several missed fires collapse into the one tick a
48
+ * convergent verb needs.
49
+ */
50
+ export declare function cronDueBetween(expr: string, after: Date, upTo: Date): boolean;
51
+ //# sourceMappingURL=cron.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../src/op/cron.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAI3D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AA+CD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAoB7D;AAUD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAa7E"}
@@ -2,6 +2,12 @@ import type { OpConfig } from "./types.js";
2
2
  export interface DiscoveredOp {
3
3
  config: OpConfig;
4
4
  filePath: string;
5
+ /**
6
+ * The export this Op arrived on: `"default"`, or the named export's own
7
+ * name (#2171). Diagnostic only, and the reason a file may carry more than
8
+ * one Op without either becoming ambiguous.
9
+ */
10
+ exportName: string;
5
11
  }
6
12
  export interface OpDiscoveryResult {
7
13
  ops: Map<string, DiscoveredOp>;
@@ -12,6 +18,9 @@ export interface OpDiscoveryResult {
12
18
  * project root (the directory holding `chant.config.ts`/`.json`, walking up
13
19
  * from `cwd`), or under the git root when no config exists — see
14
20
  * {@link findDiscoveryRoot} (#2058).
21
+ *
22
+ * An Op may be the file's default export or a named one, and a file may hold
23
+ * several. See {@link opsExportedBy} (#2171).
15
24
  */
16
25
  export declare function discoverOps(opts?: {
17
26
  cwd?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/op/discover.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,QAAQ,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AA0DD;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAuCrF"}
1
+ {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/op/discover.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,QAAQ,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAmHD;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAyCrF"}