@intentius/chant 0.57.0 → 0.59.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 (558) 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 +36 -1
  4. package/dist/audit/core.d.ts.map +1 -1
  5. package/dist/audit/discover.d.ts +26 -9
  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/carve-bridge.d.ts.map +1 -1
  34. package/dist/cli/commands/check-lexicon-docs.d.ts +1 -1
  35. package/dist/cli/commands/check-lexicon-examples.d.ts +16 -6
  36. package/dist/cli/commands/check-lexicon-examples.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 +13 -0
  44. package/dist/cli/commands/lint.d.ts.map +1 -1
  45. package/dist/cli/commands/onboard.d.ts +2 -0
  46. package/dist/cli/commands/onboard.d.ts.map +1 -1
  47. package/dist/cli/handlers/build.d.ts.map +1 -1
  48. package/dist/cli/handlers/lifecycle.d.ts.map +1 -1
  49. package/dist/cli/handlers/operator.d.ts +82 -16
  50. package/dist/cli/handlers/operator.d.ts.map +1 -1
  51. package/dist/cli/handlers/run.d.ts +49 -42
  52. package/dist/cli/handlers/run.d.ts.map +1 -1
  53. package/dist/cli/main.d.ts +12 -1
  54. package/dist/cli/main.d.ts.map +1 -1
  55. package/dist/cli/mcp/op-tools.d.ts +16 -1
  56. package/dist/cli/mcp/op-tools.d.ts.map +1 -1
  57. package/dist/cli/mcp/resource-handlers.d.ts.map +1 -1
  58. package/dist/cli/mcp/resources/context.d.ts.map +1 -1
  59. package/dist/cli/plugins.d.ts +22 -0
  60. package/dist/cli/plugins.d.ts.map +1 -1
  61. package/dist/cli/registry.d.ts +40 -9
  62. package/dist/cli/registry.d.ts.map +1 -1
  63. package/dist/codegen/generate-post-synth-barrel.d.ts +1 -1
  64. package/dist/components/auto-release.d.ts +10 -20
  65. package/dist/components/auto-release.d.ts.map +1 -1
  66. package/dist/components/capability.d.ts +4 -4
  67. package/dist/components/cli-support.d.ts +24 -22
  68. package/dist/components/cli-support.d.ts.map +1 -1
  69. package/dist/components/component.d.ts +21 -6
  70. package/dist/components/component.d.ts.map +1 -1
  71. package/dist/components/driver-output.d.ts.map +1 -1
  72. package/dist/components/driver.d.ts +73 -37
  73. package/dist/components/driver.d.ts.map +1 -1
  74. package/dist/components/index.d.ts +1 -2
  75. package/dist/components/index.d.ts.map +1 -1
  76. package/dist/components/manifest-persistence.d.ts +1 -9
  77. package/dist/components/manifest-persistence.d.ts.map +1 -1
  78. package/dist/components/run-progress.d.ts +6 -6
  79. package/dist/components/run-progress.d.ts.map +1 -1
  80. package/dist/components/verbs/run-agent.d.ts +10 -22
  81. package/dist/components/verbs/run-agent.d.ts.map +1 -1
  82. package/dist/components/verbs/verify.d.ts +2 -2
  83. package/dist/deep-observation.d.ts +17 -0
  84. package/dist/deep-observation.d.ts.map +1 -1
  85. package/dist/detectLexicon.d.ts +13 -0
  86. package/dist/detectLexicon.d.ts.map +1 -1
  87. package/dist/discovery/files.d.ts +4 -4
  88. package/dist/discovery/fold-import.d.ts.map +1 -1
  89. package/dist/discovery/param-deps.d.ts +33 -0
  90. package/dist/discovery/param-deps.d.ts.map +1 -1
  91. package/dist/discovery/sandbox/bundle.d.ts.map +1 -1
  92. package/dist/discovery/sandbox/config-wire.d.ts +2 -2
  93. package/dist/fold/foldable-helpers.d.ts +5 -1
  94. package/dist/fold/foldable-helpers.d.ts.map +1 -1
  95. package/dist/fold-provenance.d.ts +236 -0
  96. package/dist/fold-provenance.d.ts.map +1 -0
  97. package/dist/graph-ops.d.ts +1 -1
  98. package/dist/held-elsewhere.d.ts +85 -0
  99. package/dist/held-elsewhere.d.ts.map +1 -0
  100. package/dist/index.d.ts +3 -0
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/kubectl-context.d.ts +3 -3
  103. package/dist/lexicon-config.d.ts +4 -4
  104. package/dist/lexicon-plugin-helpers.d.ts +1 -1
  105. package/dist/lexicon.d.ts +273 -16
  106. package/dist/lexicon.d.ts.map +1 -1
  107. package/dist/lifecycle/change-set.d.ts +13 -0
  108. package/dist/lifecycle/change-set.d.ts.map +1 -1
  109. package/dist/lifecycle/deep-diff.d.ts +133 -6
  110. package/dist/lifecycle/deep-diff.d.ts.map +1 -1
  111. package/dist/lifecycle/deep-observe.d.ts.map +1 -1
  112. package/dist/lifecycle/gate-ledger.d.ts +79 -3
  113. package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
  114. package/dist/lifecycle/index.d.ts +1 -0
  115. package/dist/lifecycle/index.d.ts.map +1 -1
  116. package/dist/lifecycle/release-ledger.d.ts +2 -2
  117. package/dist/lifecycle/run-ledger.d.ts +53 -0
  118. package/dist/lifecycle/run-ledger.d.ts.map +1 -0
  119. package/dist/lifecycle/symptoms.d.ts +3 -3
  120. package/dist/lifecycle/symptoms.d.ts.map +1 -1
  121. package/dist/lint/config.d.ts +81 -2
  122. package/dist/lint/config.d.ts.map +1 -1
  123. package/dist/lint/post-synth.d.ts +55 -2
  124. package/dist/lint/post-synth.d.ts.map +1 -1
  125. package/dist/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.d.ts +1 -1
  126. package/dist/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.d.ts.map +1 -1
  127. package/dist/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.d.ts +1 -1
  128. package/dist/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.d.ts.map +1 -1
  129. package/dist/lint/rules/comp/comp004-gate-needs-durable-runtime.d.ts +44 -0
  130. package/dist/lint/rules/comp/comp004-gate-needs-durable-runtime.d.ts.map +1 -0
  131. package/dist/lint/rules/comp/index.d.ts +1 -1
  132. package/dist/lint/rules/comp/index.d.ts.map +1 -1
  133. package/dist/lint/rules/op/index.d.ts +16 -0
  134. package/dist/lint/rules/op/index.d.ts.map +1 -0
  135. package/dist/lint/rules/op/ops012-activity-contract.d.ts +27 -0
  136. package/dist/lint/rules/op/ops012-activity-contract.d.ts.map +1 -0
  137. package/dist/lint/rules/op/ops013-step-output-ref.d.ts +61 -0
  138. package/dist/lint/rules/op/ops013-step-output-ref.d.ts.map +1 -0
  139. package/dist/lint/rules/op/ops014-converge-rule-refusals.d.ts +55 -0
  140. package/dist/lint/rules/op/ops014-converge-rule-refusals.d.ts.map +1 -0
  141. package/dist/lint/rules/op/support.d.ts +12 -0
  142. package/dist/lint/rules/op/support.d.ts.map +1 -0
  143. package/dist/lint/suppressions.d.ts +108 -0
  144. package/dist/lint/suppressions.d.ts.map +1 -0
  145. package/dist/live-endpoint.d.ts +1 -1
  146. package/dist/op/activities/activity-contracts.d.ts +54 -0
  147. package/dist/op/activities/activity-contracts.d.ts.map +1 -0
  148. package/dist/op/activities/apply.d.ts +262 -0
  149. package/dist/op/activities/apply.d.ts.map +1 -0
  150. package/dist/op/activities/build.d.ts +13 -0
  151. package/dist/op/activities/build.d.ts.map +1 -0
  152. package/dist/op/activities/converge.d.ts +110 -0
  153. package/dist/op/activities/converge.d.ts.map +1 -0
  154. package/dist/op/activities/env-teardown.d.ts +76 -0
  155. package/dist/op/activities/env-teardown.d.ts.map +1 -0
  156. package/dist/op/activities/guard-validate.d.ts +64 -0
  157. package/dist/op/activities/guard-validate.d.ts.map +1 -0
  158. package/dist/op/activities/http-check.d.ts +34 -0
  159. package/dist/op/activities/http-check.d.ts.map +1 -0
  160. package/dist/op/activities/index.d.ts +31 -0
  161. package/dist/op/activities/index.d.ts.map +1 -0
  162. package/dist/op/activities/lexicon-upgrade.d.ts +182 -0
  163. package/dist/op/activities/lexicon-upgrade.d.ts.map +1 -0
  164. package/dist/op/activities/lifecycle.d.ts +42 -0
  165. package/dist/op/activities/lifecycle.d.ts.map +1 -0
  166. package/dist/op/activities/pipeline-audit.d.ts +84 -0
  167. package/dist/op/activities/pipeline-audit.d.ts.map +1 -0
  168. package/dist/op/activities/policy.d.ts +17 -0
  169. package/dist/op/activities/policy.d.ts.map +1 -0
  170. package/dist/op/activities/reconcile.d.ts +149 -0
  171. package/dist/op/activities/reconcile.d.ts.map +1 -0
  172. package/dist/op/activities/shell.d.ts +13 -0
  173. package/dist/op/activities/shell.d.ts.map +1 -0
  174. package/dist/op/activities/teardown.d.ts +10 -0
  175. package/dist/op/activities/teardown.d.ts.map +1 -0
  176. package/dist/op/activities/util.d.ts +7 -0
  177. package/dist/op/activities/util.d.ts.map +1 -0
  178. package/dist/op/activities/wait.d.ts +28 -0
  179. package/dist/op/activities/wait.d.ts.map +1 -0
  180. package/dist/op/activities/workflow-audit.d.ts +92 -0
  181. package/dist/op/activities/workflow-audit.d.ts.map +1 -0
  182. package/dist/op/activity-contract-registry.d.ts +76 -0
  183. package/dist/op/activity-contract-registry.d.ts.map +1 -0
  184. package/dist/op/activity-contract.d.ts +25 -18
  185. package/dist/op/activity-contract.d.ts.map +1 -1
  186. package/dist/op/activity-failure.d.ts +28 -0
  187. package/dist/op/activity-failure.d.ts.map +1 -0
  188. package/dist/op/activity-profiles.d.ts +118 -0
  189. package/dist/op/activity-profiles.d.ts.map +1 -0
  190. package/dist/op/activity-registry.d.ts +22 -38
  191. package/dist/op/activity-registry.d.ts.map +1 -1
  192. package/dist/op/activity-runtime.d.ts +3 -14
  193. package/dist/op/activity-runtime.d.ts.map +1 -1
  194. package/dist/op/builders.d.ts +85 -30
  195. package/dist/op/builders.d.ts.map +1 -1
  196. package/dist/op/change-signal.d.ts +91 -0
  197. package/dist/op/change-signal.d.ts.map +1 -0
  198. package/dist/op/composites/apply-op.d.ts +118 -0
  199. package/dist/op/composites/apply-op.d.ts.map +1 -0
  200. package/dist/op/composites/converge-op.d.ts +120 -0
  201. package/dist/op/composites/converge-op.d.ts.map +1 -0
  202. package/dist/op/composites/index.d.ts +26 -0
  203. package/dist/op/composites/index.d.ts.map +1 -0
  204. package/dist/op/composites/lexicon-upgrade-op.d.ts +78 -0
  205. package/dist/op/composites/lexicon-upgrade-op.d.ts.map +1 -0
  206. package/dist/op/composites/pipeline-audit-op.d.ts +50 -0
  207. package/dist/op/composites/pipeline-audit-op.d.ts.map +1 -0
  208. package/dist/op/composites/reconcile-op.d.ts +57 -0
  209. package/dist/op/composites/reconcile-op.d.ts.map +1 -0
  210. package/dist/op/composites/watch-op.d.ts +60 -0
  211. package/dist/op/composites/watch-op.d.ts.map +1 -0
  212. package/dist/op/composites/workflow-audit-op.d.ts +57 -0
  213. package/dist/op/composites/workflow-audit-op.d.ts.map +1 -0
  214. package/dist/op/converge-rule.d.ts +12 -10
  215. package/dist/op/converge-rule.d.ts.map +1 -1
  216. package/dist/op/cron.d.ts +51 -0
  217. package/dist/op/cron.d.ts.map +1 -0
  218. package/dist/op/discover.d.ts +9 -0
  219. package/dist/op/discover.d.ts.map +1 -1
  220. package/dist/op/duration.d.ts +11 -0
  221. package/dist/op/duration.d.ts.map +1 -0
  222. package/dist/op/emulator-lifecycle.d.ts.map +1 -1
  223. package/dist/op/gate-name.d.ts +40 -0
  224. package/dist/op/gate-name.d.ts.map +1 -0
  225. package/dist/op/gate-summary.d.ts +43 -0
  226. package/dist/op/gate-summary.d.ts.map +1 -0
  227. package/dist/op/gate.d.ts +90 -0
  228. package/dist/op/gate.d.ts.map +1 -0
  229. package/dist/op/generate-pipeline.d.ts +9 -0
  230. package/dist/op/generate-pipeline.d.ts.map +1 -1
  231. package/dist/op/index.d.ts +29 -9
  232. package/dist/op/index.d.ts.map +1 -1
  233. package/dist/op/local-executor.d.ts +114 -28
  234. package/dist/op/local-executor.d.ts.map +1 -1
  235. package/dist/op/local-output.d.ts +11 -1
  236. package/dist/op/local-output.d.ts.map +1 -1
  237. package/dist/op/op-ir.d.ts +185 -0
  238. package/dist/op/op-ir.d.ts.map +1 -0
  239. package/dist/op/op-verb-class.d.ts +10 -2
  240. package/dist/op/op-verb-class.d.ts.map +1 -1
  241. package/dist/op/operator.d.ts +93 -5
  242. package/dist/op/operator.d.ts.map +1 -1
  243. package/dist/op/receipt-store.d.ts +1 -1
  244. package/dist/op/receipt-store.d.ts.map +1 -1
  245. package/dist/op/resource.d.ts +15 -1
  246. package/dist/op/resource.d.ts.map +1 -1
  247. package/dist/op/runtime.d.ts +200 -0
  248. package/dist/op/runtime.d.ts.map +1 -0
  249. package/dist/op/runtimes/local.d.ts +29 -0
  250. package/dist/op/runtimes/local.d.ts.map +1 -0
  251. package/dist/op/step-output-ref.d.ts +15 -13
  252. package/dist/op/step-output-ref.d.ts.map +1 -1
  253. package/dist/op/types.d.ts +96 -29
  254. package/dist/op/types.d.ts.map +1 -1
  255. package/dist/ownership.d.ts +1 -1
  256. package/dist/provenance.d.ts +21 -0
  257. package/dist/provenance.d.ts.map +1 -1
  258. package/dist/serializer-walker.d.ts.map +1 -1
  259. package/dist/terraform/bridge.d.ts +26 -7
  260. package/dist/terraform/bridge.d.ts.map +1 -1
  261. package/dist/terraform/carve-provider.d.ts +28 -2
  262. package/dist/terraform/carve-provider.d.ts.map +1 -1
  263. package/dist/terraform/data-source-shape.d.ts +77 -0
  264. package/dist/terraform/data-source-shape.d.ts.map +1 -0
  265. package/dist/terraform/graph.d.ts.map +1 -1
  266. package/dist/terraform/providers/kubernetes.d.ts +5 -0
  267. package/dist/terraform/providers/kubernetes.d.ts.map +1 -1
  268. package/dist/terraform/tier-map.d.ts +16 -4
  269. package/dist/terraform/tier-map.d.ts.map +1 -1
  270. package/dist/terraform/types.d.ts +8 -0
  271. package/dist/terraform/types.d.ts.map +1 -1
  272. package/package.json +6 -1
  273. package/src/audit/catalog.test.ts +79 -3
  274. package/src/audit/catalog.ts +111 -13
  275. package/src/audit/core.test.ts +26 -0
  276. package/src/audit/core.ts +84 -18
  277. package/src/audit/discover.test.ts +39 -0
  278. package/src/audit/discover.ts +202 -18
  279. package/src/audit/lineage.ts +100 -0
  280. package/src/audit/prior-art.ts +153 -0
  281. package/src/audit/proof.test.ts +67 -0
  282. package/src/audit/proof.ts +70 -0
  283. package/src/audit/report-html.ts +9 -4
  284. package/src/audit/report-model.ts +16 -2
  285. package/src/audit/report.test.ts +33 -0
  286. package/src/audit/report.ts +5 -3
  287. package/src/audit/rules-doc.test.ts +34 -2
  288. package/src/audit/rules-doc.ts +82 -9
  289. package/src/audit/secrets.ts +15 -3
  290. package/src/audit/terraform-state.test.ts +144 -0
  291. package/src/audit/terraform-state.ts +131 -0
  292. package/src/build.ts +31 -1
  293. package/src/claimed-fields.test.ts +145 -0
  294. package/src/claimed-fields.ts +208 -0
  295. package/src/cli/build-params-cli.ts +2 -2
  296. package/src/cli/command-group.ts +14 -0
  297. package/src/cli/commands/__fixtures__/audit-terraform/infra/.terraform/providers/lock.txt +1 -0
  298. package/src/cli/commands/__fixtures__/audit-terraform/infra/main.tf +1 -0
  299. package/src/cli/commands/__fixtures__/audit-terraform/infra/modules/foo/main.tf +1 -0
  300. package/src/cli/commands/__fixtures__/audit-terraform/infra/variables.tf +3 -0
  301. package/src/cli/commands/__fixtures__/init-lexicon-output/package.json +13 -4
  302. package/src/cli/commands/__fixtures__/init-lexicon-output/src/codegen/docs-cli.ts +4 -0
  303. package/src/cli/commands/__fixtures__/init-lexicon-output/src/codegen/package.ts +1 -0
  304. package/src/cli/commands/__fixtures__/init-lexicon-output/src/package-cli.ts +21 -0
  305. package/src/cli/commands/__snapshots__/init-lexicon.test.ts.snap +1 -0
  306. package/src/cli/commands/audit.test.ts +191 -11
  307. package/src/cli/commands/audit.ts +78 -28
  308. package/src/cli/commands/build.test.ts +330 -9
  309. package/src/cli/commands/build.ts +170 -24
  310. package/src/cli/commands/carve-bridge.test.ts +237 -14
  311. package/src/cli/commands/carve-bridge.ts +21 -17
  312. package/src/cli/commands/carve-emit-k8s.test.ts +17 -10
  313. package/src/cli/commands/check-lexicon-docs.ts +1 -1
  314. package/src/cli/commands/check-lexicon-examples.test.ts +29 -1
  315. package/src/cli/commands/check-lexicon-examples.ts +42 -10
  316. package/src/cli/commands/init-lexicon/templates/codegen.ts +9 -0
  317. package/src/cli/commands/init-lexicon/templates/project.ts +44 -4
  318. package/src/cli/commands/init-lexicon.test.ts +97 -2
  319. package/src/cli/commands/init-lexicon.ts +4 -2
  320. package/src/cli/commands/init.test.ts +35 -1
  321. package/src/cli/commands/init.ts +14 -3
  322. package/src/cli/commands/lint.test.ts +194 -1
  323. package/src/cli/commands/lint.ts +205 -7
  324. package/src/cli/commands/onboard.test.ts +75 -0
  325. package/src/cli/commands/onboard.ts +54 -23
  326. package/src/cli/handlers/build.test.ts +81 -1
  327. package/src/cli/handlers/build.ts +15 -1
  328. package/src/cli/handlers/graph.test.ts +3 -3
  329. package/src/cli/handlers/lifecycle.test.ts +195 -12
  330. package/src/cli/handlers/lifecycle.ts +123 -6
  331. package/src/cli/handlers/misc.ts +1 -1
  332. package/src/cli/handlers/operator.test.ts +183 -11
  333. package/src/cli/handlers/operator.ts +341 -55
  334. package/src/cli/handlers/run.test.ts +568 -1295
  335. package/src/cli/handlers/run.ts +446 -912
  336. package/src/cli/main.test.ts +22 -16
  337. package/src/cli/main.ts +66 -33
  338. package/src/cli/mcp/op-tools.ts +147 -88
  339. package/src/cli/mcp/resource-handlers.ts +10 -37
  340. package/src/cli/mcp/resources/context.ts +11 -12
  341. package/src/cli/mcp/server.test.ts +25 -27
  342. package/src/cli/mcp/server.ts +2 -2
  343. package/src/cli/plugins.test.ts +68 -2
  344. package/src/cli/plugins.ts +39 -0
  345. package/src/cli/registry.ts +40 -9
  346. package/src/codegen/docs.ts +1 -1
  347. package/src/codegen/generate-post-synth-barrel.test.ts +1 -1
  348. package/src/codegen/generate-post-synth-barrel.ts +1 -1
  349. package/src/components/README.md +4 -3
  350. package/src/components/__fixtures__/neo4j-fanout.json +1 -1
  351. package/src/components/auto-release.test.ts +4 -20
  352. package/src/components/auto-release.ts +17 -42
  353. package/src/components/capability.ts +4 -4
  354. package/src/components/cli-support.test.ts +28 -12
  355. package/src/components/cli-support.ts +60 -47
  356. package/src/components/component-schema.test.ts +18 -2
  357. package/src/components/component.schema.json +18 -5
  358. package/src/components/component.test.ts +2 -2
  359. package/src/components/component.ts +27 -7
  360. package/src/components/config-defaults.test.ts +2 -2
  361. package/src/components/driver-output.ts +14 -2
  362. package/src/components/driver.test.ts +109 -20
  363. package/src/components/driver.ts +201 -84
  364. package/src/components/index.ts +1 -6
  365. package/src/components/manifest-persistence.test.ts +2 -20
  366. package/src/components/manifest-persistence.ts +4 -24
  367. package/src/components/pilots/neo4j-fanout.pilot.ts +3 -3
  368. package/src/components/pilots/pilots-lint-clean.test.ts +11 -10
  369. package/src/components/run-progress.ts +6 -6
  370. package/src/components/verbs/run-agent.test.ts +19 -0
  371. package/src/components/verbs/run-agent.ts +12 -24
  372. package/src/components/verbs/verify.ts +2 -2
  373. package/src/deep-observation.test.ts +75 -0
  374. package/src/deep-observation.ts +48 -0
  375. package/src/detectLexicon.ts +18 -1
  376. package/src/discovery/collect.test.ts +3 -3
  377. package/src/discovery/files.ts +4 -4
  378. package/src/discovery/fold-import.test.ts +1 -1
  379. package/src/discovery/fold-import.ts +105 -2
  380. package/src/discovery/param-deps.test.ts +112 -1
  381. package/src/discovery/param-deps.ts +193 -0
  382. package/src/discovery/sandbox/bundle.ts +15 -1
  383. package/src/discovery/sandbox/config-wire.test.ts +2 -2
  384. package/src/discovery/sandbox/config-wire.ts +2 -2
  385. package/src/fold/fold.test.ts +56 -0
  386. package/src/fold/foldable-helpers.ts +82 -2
  387. package/src/fold-provenance-exclusion.test.ts +186 -0
  388. package/src/fold-provenance.test.ts +495 -0
  389. package/src/fold-provenance.ts +441 -0
  390. package/src/graph-ops.test.ts +3 -3
  391. package/src/graph-ops.ts +1 -1
  392. package/src/held-elsewhere.test.ts +102 -0
  393. package/src/held-elsewhere.ts +114 -0
  394. package/src/index.ts +3 -0
  395. package/src/kubectl-context.ts +3 -3
  396. package/src/lexicon-config.test.ts +5 -5
  397. package/src/lexicon-config.ts +4 -4
  398. package/src/lexicon-plugin-helpers.ts +1 -1
  399. package/src/lexicon.ts +296 -16
  400. package/src/lifecycle/change-set.test.ts +49 -0
  401. package/src/lifecycle/change-set.ts +67 -0
  402. package/src/lifecycle/converge-ledger.ts +1 -1
  403. package/src/lifecycle/deep-diff.test.ts +267 -14
  404. package/src/lifecycle/deep-diff.ts +217 -14
  405. package/src/lifecycle/deep-observe.test.ts +3 -1
  406. package/src/lifecycle/deep-observe.ts +16 -6
  407. package/src/lifecycle/gate-ledger.test.ts +74 -2
  408. package/src/lifecycle/gate-ledger.ts +154 -36
  409. package/src/lifecycle/index.ts +1 -0
  410. package/src/lifecycle/release-ledger.ts +2 -2
  411. package/src/lifecycle/run-ledger.test.ts +268 -0
  412. package/src/lifecycle/run-ledger.ts +201 -0
  413. package/src/lifecycle/symptoms.ts +3 -3
  414. package/src/lint/config.test.ts +82 -1
  415. package/src/lint/config.ts +112 -3
  416. package/src/lint/pipeline-change-gate.test.ts +2 -2
  417. package/src/lint/policy.test.ts +1 -1
  418. package/src/lint/post-synth.test.ts +31 -0
  419. package/src/lint/post-synth.ts +54 -1
  420. package/src/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.ts +2 -2
  421. package/src/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.ts +1 -1
  422. package/src/lint/rules/comp/comp.test.ts +27 -1
  423. package/src/lint/rules/comp/comp004-gate-needs-durable-runtime.ts +76 -0
  424. package/src/lint/rules/comp/index.ts +3 -3
  425. package/src/lint/rules/op/index.ts +23 -0
  426. package/src/lint/rules/op/ops012-activity-contract.test.ts +161 -0
  427. package/src/lint/rules/op/ops012-activity-contract.ts +64 -0
  428. package/src/lint/rules/op/ops013-step-output-ref.test.ts +237 -0
  429. package/src/lint/rules/op/ops013-step-output-ref.ts +98 -0
  430. package/src/lint/rules/op/ops014-converge-rule-refusals.test.ts +263 -0
  431. package/src/lint/rules/op/ops014-converge-rule-refusals.ts +179 -0
  432. package/src/lint/rules/op/support.ts +11 -0
  433. package/src/lint/suppressions.test.ts +163 -0
  434. package/src/lint/suppressions.ts +204 -0
  435. package/src/live-endpoint.ts +1 -1
  436. package/src/op/activities/activity-contracts.ts +66 -0
  437. package/src/op/activities/apply.test.ts +567 -0
  438. package/src/op/activities/apply.ts +662 -0
  439. package/src/op/activities/build.ts +26 -0
  440. package/src/op/activities/converge.test.ts +330 -0
  441. package/src/op/activities/converge.ts +449 -0
  442. package/src/op/activities/env-teardown.test.ts +187 -0
  443. package/src/op/activities/env-teardown.ts +171 -0
  444. package/src/op/activities/guard-validate.test.ts +139 -0
  445. package/src/op/activities/guard-validate.ts +223 -0
  446. package/src/op/activities/http-check.test.ts +48 -0
  447. package/src/op/activities/http-check.ts +55 -0
  448. package/src/op/activities/index.ts +119 -0
  449. package/src/op/activities/lexicon-upgrade.test.ts +492 -0
  450. package/src/op/activities/lexicon-upgrade.ts +673 -0
  451. package/src/op/activities/lifecycle.ts +85 -0
  452. package/src/op/activities/pipeline-audit.test.ts +67 -0
  453. package/src/op/activities/pipeline-audit.ts +201 -0
  454. package/src/op/activities/policy.test.ts +19 -0
  455. package/src/op/activities/policy.ts +37 -0
  456. package/src/op/activities/reconcile.test.ts +161 -0
  457. package/src/op/activities/reconcile.ts +354 -0
  458. package/src/op/activities/shell.ts +26 -0
  459. package/src/op/activities/teardown.ts +22 -0
  460. package/src/op/activities/util.ts +6 -0
  461. package/src/op/activities/wait.ts +69 -0
  462. package/src/op/activities/workflow-audit.test.ts +90 -0
  463. package/src/op/activities/workflow-audit.ts +203 -0
  464. package/src/op/activity-contract-registry.test.ts +98 -0
  465. package/src/op/activity-contract-registry.ts +114 -0
  466. package/src/op/activity-contract.test.ts +1 -1
  467. package/src/op/activity-contract.ts +37 -33
  468. package/src/op/activity-failure.ts +34 -0
  469. package/src/op/activity-profiles.test.ts +56 -0
  470. package/src/op/activity-profiles.ts +116 -0
  471. package/src/op/activity-registry.test.ts +37 -28
  472. package/src/op/activity-registry.ts +27 -56
  473. package/src/op/activity-runtime.ts +3 -47
  474. package/src/op/builders-exports.test.ts +0 -49
  475. package/src/op/builders-typed.test.ts +164 -0
  476. package/src/op/builders.ts +125 -41
  477. package/src/op/change-signal.test.ts +117 -0
  478. package/src/op/change-signal.ts +169 -0
  479. package/src/op/composites/apply-op.ts +218 -0
  480. package/src/op/composites/composites.test.ts +379 -0
  481. package/src/op/composites/converge-op.test.ts +168 -0
  482. package/src/op/composites/converge-op.ts +214 -0
  483. package/src/op/composites/index.ts +26 -0
  484. package/src/op/composites/lexicon-upgrade-op.test.ts +68 -0
  485. package/src/op/composites/lexicon-upgrade-op.ts +134 -0
  486. package/src/op/composites/pipeline-audit-op.test.ts +25 -0
  487. package/src/op/composites/pipeline-audit-op.ts +78 -0
  488. package/src/op/composites/reconcile-op.test.ts +51 -0
  489. package/src/op/composites/reconcile-op.ts +110 -0
  490. package/src/op/composites/watch-op.ts +108 -0
  491. package/src/op/composites/workflow-audit-op.test.ts +25 -0
  492. package/src/op/composites/workflow-audit-op.ts +88 -0
  493. package/src/op/converge-rule.ts +12 -10
  494. package/src/op/cron.test.ts +128 -0
  495. package/src/op/cron.ts +149 -0
  496. package/src/op/discover-root.test.ts +105 -1
  497. package/src/op/discover.test.ts +6 -2
  498. package/src/op/discover.ts +84 -16
  499. package/src/op/duration.ts +21 -0
  500. package/src/op/effect-step.test.ts +29 -14
  501. package/src/op/emulator-lifecycle.ts +1 -2
  502. package/src/op/gate-name.test.ts +65 -0
  503. package/src/op/gate-name.ts +60 -0
  504. package/src/op/gate-summary.ts +84 -0
  505. package/src/op/gate.ts +155 -0
  506. package/src/op/generate-pipeline.test.ts +65 -3
  507. package/src/op/generate-pipeline.ts +19 -2
  508. package/src/op/index.ts +48 -8
  509. package/src/op/local-executor.test.ts +178 -34
  510. package/src/op/local-executor.ts +371 -102
  511. package/src/op/local-output.test.ts +95 -11
  512. package/src/op/local-output.ts +33 -4
  513. package/src/op/op-ir.test.ts +292 -0
  514. package/src/op/op-ir.ts +419 -0
  515. package/src/op/op-verb-class.test.ts +2 -2
  516. package/src/op/op-verb-class.ts +19 -5
  517. package/src/op/op.test.ts +28 -7
  518. package/src/op/operator.test.ts +543 -6
  519. package/src/op/operator.ts +203 -20
  520. package/src/op/receipt-store.ts +1 -1
  521. package/src/op/resource.ts +20 -2
  522. package/src/op/runtime.ts +203 -0
  523. package/src/op/runtimes/local.test.ts +181 -0
  524. package/src/op/runtimes/local.ts +212 -0
  525. package/src/op/step-output-ref.ts +15 -13
  526. package/src/op/types.ts +106 -26
  527. package/src/ownership.ts +1 -1
  528. package/src/provenance.test.ts +6 -0
  529. package/src/provenance.ts +21 -1
  530. package/src/serializer-walker.test.ts +42 -0
  531. package/src/serializer-walker.ts +21 -2
  532. package/src/terraform/aws-resources.test.ts +13 -4
  533. package/src/terraform/bridge.test.ts +22 -9
  534. package/src/terraform/bridge.ts +89 -28
  535. package/src/terraform/carve-provider.ts +38 -2
  536. package/src/terraform/data-source-shape.ts +95 -0
  537. package/src/terraform/graph.ts +35 -7
  538. package/src/terraform/providers/kubernetes.ts +48 -2
  539. package/src/terraform/tier-map.ts +21 -6
  540. package/src/terraform/types.ts +8 -0
  541. package/dist/cli/handlers/op-progress.d.ts +0 -90
  542. package/dist/cli/handlers/op-progress.d.ts.map +0 -1
  543. package/dist/cli/handlers/run-client.d.ts +0 -127
  544. package/dist/cli/handlers/run-client.d.ts.map +0 -1
  545. package/dist/cli/handlers/run-report.d.ts +0 -5
  546. package/dist/cli/handlers/run-report.d.ts.map +0 -1
  547. package/dist/components/temporal-codegen-loader.d.ts +0 -27
  548. package/dist/components/temporal-codegen-loader.d.ts.map +0 -1
  549. package/dist/lint/rules/comp/comp004-gate-needs-temporal.d.ts +0 -37
  550. package/dist/lint/rules/comp/comp004-gate-needs-temporal.d.ts.map +0 -1
  551. package/src/cli/handlers/op-progress.test.ts +0 -268
  552. package/src/cli/handlers/op-progress.ts +0 -248
  553. package/src/cli/handlers/run-client.test.ts +0 -82
  554. package/src/cli/handlers/run-client.ts +0 -219
  555. package/src/cli/handlers/run-report.test.ts +0 -62
  556. package/src/cli/handlers/run-report.ts +0 -122
  557. package/src/components/temporal-codegen-loader.ts +0 -41
  558. package/src/lint/rules/comp/comp004-gate-needs-temporal.ts +0 -66
@@ -11,7 +11,8 @@
11
11
  * graph building stays unit-testable on hand-written fixtures.
12
12
  */
13
13
 
14
- import { identityAttrOf } from "./tier-map";
14
+ import { shapeSourcePaths } from "./data-source-shape";
15
+ import { dataSourceShapeOf, identityAttrOf } from "./tier-map";
15
16
  import type { Hcl2JsonTree, TfEdge, TfGraph, TfNode } from "./types";
16
17
 
17
18
  /**
@@ -142,16 +143,14 @@ function blockHasMeta(block: unknown, key: string): boolean {
142
143
  }
143
144
 
144
145
  /**
145
- * The resource's physical name, if its identity attribute is a plain literal
146
- * (not interpolated). A dotted identity attribute walks nested blocks —
146
+ * The literal string at a dotted path into a block, or undefined when the path
147
+ * misses or lands on an interpolation. A dotted path walks nested blocks —
147
148
  * hcl2json renders a nested block as a one-element array, so arrays step
148
149
  * through their first element (`manifest.metadata.name`).
149
150
  */
150
- function literalIdentity(block: unknown, type: string): string | undefined {
151
- const attr = identityAttrOf(type);
152
- if (!attr || !block || typeof block !== "object") return undefined;
151
+ function literalAt(block: unknown, path: string): string | undefined {
153
152
  let value: unknown = block;
154
- for (const segment of attr.split(".")) {
153
+ for (const segment of path.split(".")) {
155
154
  if (Array.isArray(value)) value = value[0];
156
155
  if (!value || typeof value !== "object") return undefined;
157
156
  value = (value as Record<string, unknown>)[segment];
@@ -160,6 +159,34 @@ function literalIdentity(block: unknown, type: string): string | undefined {
160
159
  return value;
161
160
  }
162
161
 
162
+ /**
163
+ * The resource's physical name, if its identity attribute is a plain literal
164
+ * (not interpolated).
165
+ */
166
+ function literalIdentity(block: unknown, type: string): string | undefined {
167
+ const attr = identityAttrOf(type);
168
+ if (!attr || !block || typeof block !== "object") return undefined;
169
+ return literalAt(block, attr);
170
+ }
171
+
172
+ /**
173
+ * The literals the type's data-source shape reads out of the carved block
174
+ * (#2034), keyed by the shape field's source path. `carve bridge` renders the
175
+ * data-source body from these; a required field missing here is what makes it
176
+ * write a TODO instead of a block Terraform would reject.
177
+ */
178
+ function dataSourceValues(block: unknown, type: string): Record<string, string> | undefined {
179
+ if (!block || typeof block !== "object") return undefined;
180
+ const shape = dataSourceShapeOf(type);
181
+ if (!shape) return undefined;
182
+ const values: Record<string, string> = {};
183
+ for (const path of shapeSourcePaths(shape)) {
184
+ const value = literalAt(block, path);
185
+ if (value !== undefined) values[path] = value;
186
+ }
187
+ return Object.keys(values).length ? values : undefined;
188
+ }
189
+
163
190
  /**
164
191
  * Build the dependency graph from a merged hcl2json tree.
165
192
  *
@@ -202,6 +229,7 @@ export function buildGraph(tree: Hcl2JsonTree, exprRefs: ExpressionRefs): TfGrap
202
229
  instances: 1,
203
230
  hasDynamic: dynamic || touchesData,
204
231
  identity: literalIdentity(block, type),
232
+ dataSourceValues: dataSourceValues(block, type),
205
233
  });
206
234
  }
207
235
  }
@@ -18,6 +18,11 @@
18
18
  * can only name the family, and `adopt` reads the body to learn the rest —
19
19
  * which is also why one rule here covers every CRD.
20
20
  *
21
+ * It has no `kubernetes_manifest` data source either, so it does not read back
22
+ * as its own type. `MANIFEST_READ_BACK` below is the shape `carve bridge` uses
23
+ * instead: `data "kubernetes_resource"`, built from the manifest's own
24
+ * apiVersion/kind/metadata (#2034).
25
+ *
21
26
  * It has no live adoption path. `carve emit --env` filters a live export by a
22
27
  * native type, and there is no type to filter by until the body is read; state
23
28
  * is where the body is. `liveSelectorType` therefore returns undefined and
@@ -26,6 +31,7 @@
26
31
  */
27
32
 
28
33
  import type { AdoptedSource, CarveProvider, DeferredParam, TierInfo } from "../carve-provider";
34
+ import type { DataSourceShape } from "../data-source-shape";
29
35
  import type { StateResource } from "../state";
30
36
 
31
37
  /** The chant lexicon the emitted source imports from. */
@@ -208,14 +214,54 @@ function adoptManifestFromState(resource: StateResource, params: DeferredParam[]
208
214
  };
209
215
  }
210
216
 
217
+ /**
218
+ * How `carve bridge` reads a carved `kubernetes_manifest` back (#2034).
219
+ *
220
+ * The provider ships no `kubernetes_manifest` data source — checked against
221
+ * hashicorp/kubernetes v3.2.1, whose 27 data sources include no manifest. The
222
+ * generic read is `data "kubernetes_resource"`, which asks for the GVK and the
223
+ * name rather than taking them from a body: `api_version`, `kind`, and a
224
+ * nested `metadata` block with `name` and an optional `namespace`. All three
225
+ * come out of the manifest the resource declared.
226
+ *
227
+ * Survivors read the object back through `object`, and only through `object`:
228
+ * the resource exposes both `manifest` (the declared body) and `object` (the
229
+ * API server's read-back), the data source exposes just the latter. So both
230
+ * map to `object`, and a reference to `.manifest.data.log_level` lands on
231
+ * `.object.data.log_level` rather than an attribute that does not exist.
232
+ *
233
+ * A namespace-less manifest (a ClusterRole, a CRD) simply omits `namespace`,
234
+ * which the data source allows. A manifest whose name is interpolated resolves
235
+ * no literal and falls back to the bridge's TODO body, as an AWS type with an
236
+ * interpolated bucket name does.
237
+ */
238
+ const MANIFEST_READ_BACK: DataSourceShape = {
239
+ type: "kubernetes_resource",
240
+ args: [
241
+ { name: "api_version", from: "manifest.apiVersion", required: true },
242
+ { name: "kind", from: "manifest.kind", required: true },
243
+ ],
244
+ blocks: [
245
+ {
246
+ name: "metadata",
247
+ fields: [
248
+ { name: "name", from: "manifest.metadata.name", required: true },
249
+ { name: "namespace", from: "manifest.metadata.namespace" },
250
+ ],
251
+ },
252
+ ],
253
+ readAttrs: { manifest: "object", object: "object" },
254
+ };
255
+
211
256
  export const kubernetesCarveProvider: CarveProvider = {
212
257
  name: "kubernetes",
213
258
  tfTypePrefixes: ["kubernetes_"],
214
259
  lexicon: "k8s",
215
260
  tiers: TIERS,
216
- // A dotted path into nested blocks: the graph walks it for identity, and
217
- // `carve bridge` refuses the type because a data-source body cannot express it.
261
+ // A dotted path into the manifest body: the graph walks it for identity. It
262
+ // cannot be a data-source argument on its own, so the read-back is a shape.
218
263
  identityAttrs: { kubernetes_manifest: "manifest.metadata.name" },
264
+ dataSourceShapes: { kubernetes_manifest: MANIFEST_READ_BACK },
219
265
  emitTypes: ["kubernetes_manifest"],
220
266
  adopt: (resource, params) => adoptManifestFromState(resource, params),
221
267
  // State only — the kind is in the body, so a live export has nothing to
@@ -18,14 +18,17 @@
18
18
  */
19
19
 
20
20
  import {
21
+ carveDataSourceShape,
21
22
  carveFoldParent,
22
23
  carveIdentityAttr,
23
24
  carveTierMap,
24
25
  resolveEmitProvider,
25
26
  type TierInfo,
26
27
  } from "./carve-provider";
28
+ import type { DataSourceShape } from "./data-source-shape";
27
29
 
28
30
  export { carveEmitTypes, type TierInfo } from "./carve-provider";
31
+ export type { DataSourceShape } from "./data-source-shape";
29
32
 
30
33
  /** TF resource type → native tier, over every registered provider. Absent = unsupported (score 0). */
31
34
  export function tierMap(): Readonly<Record<string, TierInfo>> {
@@ -66,12 +69,24 @@ export function canCarveEmit(tfType: string): boolean {
66
69
  }
67
70
 
68
71
  /**
69
- * Can `chant carve bridge` render a Terraform `data` source for this type? A
70
- * dotted identity attribute is a path into nested blocks, and a data source
71
- * body is flat `attr = value` — `manifest.metadata.name = "x"` is not valid
72
- * HCL. An absent entry is fine: the bridge writes a TODO comment instead.
72
+ * How `chant carve bridge` reads this type back as a `data` source: the
73
+ * data-source type, where each argument comes from in the carved body, and how
74
+ * a survivor's attribute path translates (#2034). Undefined when the type
75
+ * cannot be read back at all.
76
+ */
77
+ export function dataSourceShapeOf(tfType: string): DataSourceShape | undefined {
78
+ return carveDataSourceShape(tfType);
79
+ }
80
+
81
+ /**
82
+ * Can `chant carve bridge` render a Terraform `data` source for this type?
83
+ * True whenever its provider contributes a shape — declared, or implied by a
84
+ * plain identity attribute. False for a dotted identity attribute with no
85
+ * declared shape: that is a path into nested values, and a flat `attr = value`
86
+ * body cannot express it (`manifest.metadata.name = "x"` is not valid HCL). A
87
+ * type with no identity attribute at all still bridges; the bridge writes a
88
+ * TODO comment for the body.
73
89
  */
74
90
  export function canBridge(tfType: string): boolean {
75
- const attr = carveIdentityAttr(tfType);
76
- return attr === undefined || !attr.includes(".");
91
+ return carveDataSourceShape(tfType) !== undefined;
77
92
  }
@@ -34,6 +34,14 @@ export interface TfNode {
34
34
  * emit. Undefined when the identity attribute is absent or interpolated.
35
35
  */
36
36
  identity?: string;
37
+ /**
38
+ * The literals the type's data-source shape reads out of the block (#2034),
39
+ * keyed by the shape field's source path (`manifest.metadata.name`). This is
40
+ * what `carve bridge` renders the `data` body from — a superset of
41
+ * `identity`, since a shape can need more than one value (`api_version`,
42
+ * `kind` and `metadata.name` for a `kubernetes_manifest`).
43
+ */
44
+ dataSourceValues?: Record<string, string>;
37
45
  }
38
46
 
39
47
  /**
@@ -1,90 +0,0 @@
1
- /**
2
- * Per-phase progress reconstructed from a Temporal Op workflow's history
3
- * (chant #1676) — the durable-path counterpart to the local executor's
4
- * `StepRecord[]` (op/local-executor.ts), so `chant run <name> --temporal
5
- * --progress-json` and `op-status` can report the same shape `chant run
6
- * <name> --json` already does for the local path, instead of the two raw
7
- * `ActivityTaskScheduled`/`ActivityTaskCompleted` counts.
8
- *
9
- * A step is joined to its declared (phase, fn) by position, not by name: the
10
- * declared step list (`declaredStepOrder`, mirroring the serializer's own
11
- * `collectActivitySteps` traversal — main phases, then `onFailure` phases
12
- * *reversed*, matching how the generated workflow actually runs them) is
13
- * walked in order, and each step consumes the next not-yet-consumed
14
- * `ActivityTaskScheduled` event whose activity type matches its `fn` — a
15
- * per-fn FIFO queue, not a global "does this name appear anywhere" scan.
16
- * Two steps calling the same activity therefore each get their own
17
- * scheduled event instead of the later one overwriting the earlier
18
- * (the collision the prior `run-report.ts` join had). A step whose queue is
19
- * empty never ran this execution — an untaken effect branch, or an
20
- * `onFailure` phase on a run that succeeded.
21
- */
22
- import type { OpConfig } from "../../op/types.js";
23
- import type { StepRecord } from "../../op/local-executor.js";
24
- import type { WorkflowHistoryRaw, WorkflowHandleRaw } from "./run-client.js";
25
- /**
26
- * A step record paired with the position of the declared step it came from.
27
- *
28
- * `index` is an offset into `declaredStepOrder(config)`, which depends only
29
- * on the Op config — not on the history — so it is the record's identity
30
- * and is stable across polls. The record *list* is not: a mid-run poll omits
31
- * every step that hasn't settled yet, and the terminal `final: true` pass
32
- * inserts a `"skipped"` record at each such step's declared position, which
33
- * shifts every later record's list offset (chant #2032). Anything tracking
34
- * what it has already seen must key on `index`, never on how many records
35
- * the previous call returned.
36
- */
37
- export interface IndexedStepRecord {
38
- index: number;
39
- record: StepRecord;
40
- }
41
- /**
42
- * Reconstruct per-step progress records from a workflow's history, in
43
- * declared order, each tagged with its declared-step `index`. Only settled
44
- * steps (matched to a scheduled event that has since completed or failed)
45
- * produce a record — a step that hasn't been scheduled yet simply isn't in
46
- * the result. Pass `final: true` once the workflow has reached a terminal
47
- * status to also emit a `"skipped"` record for every declared step that
48
- * never got a matching scheduled event (an untaken effect branch, or an
49
- * `onFailure` phase on a run that succeeded) — never before, or a
50
- * still-running Op would show its not-yet-reached steps as skipped.
51
- */
52
- export declare function extractIndexedStepRecords(config: OpConfig, history: WorkflowHistoryRaw, opts?: {
53
- final?: boolean;
54
- }): IndexedStepRecord[];
55
- /** `extractIndexedStepRecords` without the indices — the plain declared-order record list. */
56
- export declare function extractStepRecords(config: OpConfig, history: WorkflowHistoryRaw, opts?: {
57
- final?: boolean;
58
- }): StepRecord[];
59
- /**
60
- * A sink that forwards each declared step's record exactly once, however many
61
- * times the poll loop re-derives the list.
62
- *
63
- * `--progress-json` calls this per poll with the whole list so far, plus once
64
- * more with the terminal `final: true` list. Deduplicating by declared-step
65
- * `index` is what makes that safe: an emitted-count watermark assumed the list
66
- * was append-only, and the `final` pass's inserted `"skipped"` records break
67
- * that assumption — with an unreached phase declared before an `onFailure`
68
- * phase that ran, the insertion shifted the tail, so the last record shipped
69
- * twice and the skipped one never shipped at all (chant #2032).
70
- */
71
- export declare function stepRecordEmitter(emit: (record: StepRecord) => void): (records: IndexedStepRecord[]) => void;
72
- /** `{completed, scheduled}` activity counts for the summary line `chant run status`/`op-status` show alongside the full record list. */
73
- export declare function countActivities(history: WorkflowHistoryRaw): {
74
- completed: number;
75
- scheduled: number;
76
- };
77
- /** The `gateState` workflow query's result (op/serializer.ts's `emitGate`) — the gate currently blocking the workflow, or `null` when none is pending. */
78
- export interface GateQueryResult {
79
- signalName: string;
80
- description?: string;
81
- since: string;
82
- }
83
- /**
84
- * Best-effort `gateState` query. `undefined` (as opposed to `null`) means
85
- * the query itself failed — an Op with no gate steps never registers a
86
- * `gateState` handler, so querying it is expected to fail, not an error
87
- * worth surfacing.
88
- */
89
- export declare function queryGateState(handle: WorkflowHandleRaw): Promise<GateQueryResult | null | undefined>;
90
- //# sourceMappingURL=op-progress.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"op-progress.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/op-progress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAmB,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAgB,iBAAiB,EAAE,MAAM,cAAc,CAAC;AA2FxF;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,kBAAkB,EAC3B,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7B,iBAAiB,EAAE,CAsCrB;AAED,8FAA8F;AAC9F,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,kBAAkB,EAC3B,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7B,UAAU,EAAE,CAEd;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,GAAG,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAS5G;AAED,wIAAwI;AACxI,wBAAgB,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAMrG;AAED,0JAA0J;AAC1J,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,GAAG,SAAS,CAAC,CAM3G"}
@@ -1,127 +0,0 @@
1
- /** Subset of WorkerProfile fields used by `chant run`. */
2
- export interface WorkerProfile {
3
- address: string;
4
- namespace: string;
5
- taskQueue: string;
6
- tls?: boolean | {
7
- serverNameOverride?: string;
8
- };
9
- apiKey?: string | {
10
- env: string;
11
- };
12
- autoStart?: boolean;
13
- }
14
- export interface TemporalClientModule {
15
- Connection: {
16
- connect(opts: Record<string, unknown>): Promise<unknown>;
17
- };
18
- Client: new (opts: Record<string, unknown>) => TemporalClientHandle;
19
- }
20
- export interface TemporalClientHandle {
21
- workflow: {
22
- start(workflowFn: unknown, opts: Record<string, unknown>): Promise<WorkflowHandleRaw>;
23
- getHandle(workflowId: string): WorkflowHandleRaw;
24
- list(opts?: Record<string, unknown>): AsyncIterable<WorkflowExecutionInfo>;
25
- };
26
- }
27
- export interface WorkflowHandleRaw {
28
- workflowId: string;
29
- firstExecutionRunId?: string;
30
- result(): Promise<unknown>;
31
- describe(): Promise<WorkflowExecutionDescription>;
32
- fetchHistory(): Promise<WorkflowHistoryRaw>;
33
- signal(signalName: string, ...args: unknown[]): Promise<void>;
34
- query<T = unknown>(queryName: string, ...args: unknown[]): Promise<T>;
35
- cancel(): Promise<void>;
36
- }
37
- export interface WorkflowExecutionDescription {
38
- workflowId: string;
39
- runId: string;
40
- status: {
41
- name: string;
42
- };
43
- startTime: Date;
44
- closeTime?: Date;
45
- taskQueue: string;
46
- type: {
47
- name: string;
48
- };
49
- }
50
- export interface WorkflowExecutionInfo {
51
- workflowId: string;
52
- runId: string;
53
- type: {
54
- name: string;
55
- };
56
- status: {
57
- name: string;
58
- };
59
- startTime: Date;
60
- closeTime?: Date;
61
- }
62
- export interface WorkflowHistoryRaw {
63
- events?: HistoryEvent[];
64
- }
65
- /**
66
- * `eventType` is the short PascalCase form (`"ActivityTaskScheduled"`, not
67
- * the wire enum's `"EVENT_TYPE_ACTIVITY_TASK_SCHEDULED"`) and `eventId`/
68
- * `scheduledEventId` are decimal strings — the shape {@link fetchNormalizedHistory}
69
- * produces, not `WorkflowHandleRaw.fetchHistory()`'s own raw return value.
70
- */
71
- export interface HistoryEvent {
72
- eventId?: string;
73
- eventType?: string;
74
- eventTime?: Date;
75
- activityTaskCompletedEventAttributes?: {
76
- scheduledEventId?: string;
77
- };
78
- activityTaskScheduledEventAttributes?: {
79
- activityId?: string;
80
- activityType?: {
81
- name?: string;
82
- };
83
- };
84
- activityTaskFailedEventAttributes?: {
85
- scheduledEventId?: string;
86
- failure?: {
87
- message?: string;
88
- };
89
- };
90
- workflowExecutionCompletedEventAttributes?: unknown;
91
- workflowExecutionFailedEventAttributes?: {
92
- failure?: {
93
- message?: string;
94
- };
95
- };
96
- }
97
- /**
98
- * `WorkflowHandleRaw.fetchHistory()` returns the Temporal wire proto
99
- * untouched: `eventType` is the numeric enum, `eventId`/`scheduledEventId`
100
- * are `Long` instances, `eventTime` is a `{seconds, nanos}` protobuf
101
- * Timestamp — none of them comparable or constructible the way the rest of
102
- * this file (and run-report.ts, op-progress.ts) needs. The proto message's
103
- * own `toJSON()` is what turns enums into their string name and `Long`s into
104
- * decimal strings, so a JSON round-trip is the normalization step; only
105
- * `eventTime` then needs a further Timestamp-to-Date conversion.
106
- */
107
- export declare function fetchNormalizedHistory(handle: WorkflowHandleRaw): Promise<WorkflowHistoryRaw>;
108
- /**
109
- * Dynamically import @temporalio/client from the user's project node_modules.
110
- * Fails with a helpful message if not installed.
111
- */
112
- export declare function loadTemporalClient(): Promise<TemporalClientModule>;
113
- /**
114
- * Build a Temporal Connection.connect() options object from a worker profile.
115
- */
116
- export declare function connectionOptions(profile: WorkerProfile): Record<string, unknown>;
117
- /**
118
- * Deterministic workflow ID for an Op — allows status/signal/cancel/log
119
- * without storing run IDs locally.
120
- */
121
- export declare function resolveWorkflowId(opName: string): string;
122
- /**
123
- * Resolve a named profile from the chant config.
124
- * Falls back to defaultProfile then "local".
125
- */
126
- export declare function resolveProfile(config: Record<string, unknown>, profileName?: string): WorkerProfile;
127
- //# sourceMappingURL=run-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-client.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/run-client.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import type { OpConfig } from "../../op/types.js";
2
- import type { WorkflowExecutionDescription, WorkflowHistoryRaw } from "./run-client.js";
3
- export declare function generateReport(opName: string, config: OpConfig, description: WorkflowExecutionDescription, history: WorkflowHistoryRaw): string;
4
- export declare function writeReport(opName: string, markdown: string): string;
5
- //# sourceMappingURL=run-report.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-report.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/run-report.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,4BAA4B,EAAE,kBAAkB,EAAgB,MAAM,cAAc,CAAC;AA2CnG,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,QAAQ,EAChB,WAAW,EAAE,4BAA4B,EACzC,OAAO,EAAE,kBAAkB,GAC1B,MAAM,CA+DR;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKpE"}
@@ -1,27 +0,0 @@
1
- /**
2
- * Dynamic loader for the durable component → Temporal codegen (#589, epic
3
- * #551 §5/§8). The actual `serializeComponent` generator lives in
4
- * `@intentius/chant-lexicon-temporal` (`src/component-op/serializer.ts`),
5
- * mirroring `Temporal::Op` codegen — core never statically depends on the
6
- * Temporal lexicon, the same boundary `../op/activity-registry.ts`'s
7
- * `loadActivities`/`loadProfiles` already keep for Op activities.
8
- */
9
- import type { DriverComponent } from "./driver.js";
10
- /** Target environment (and env-config) baked into the generated workflow at compile time — see `serializeComponent`'s docstring in the Temporal lexicon for why this can't be resolved at workflow-run time instead. */
11
- export interface ComponentTemporalCodegenOptions {
12
- env?: string;
13
- vars?: Record<string, unknown>;
14
- }
15
- export interface ComponentTemporalCodegen {
16
- /** Serialize one component into `{ "components/<name>/workflow.ts": "...", ... }`. */
17
- serializeComponent(component: DriverComponent, options?: ComponentTemporalCodegenOptions): Record<string, string>;
18
- /** Deterministic workflow function name for a component (mirrors the generated `export async function <fn>()`). */
19
- componentWorkflowFnName(componentName: string): string;
20
- }
21
- /**
22
- * Dynamically import the Temporal lexicon's component codegen. Throws a
23
- * friendly error if the lexicon is not installed — the durable component
24
- * path needs the generator even though discovery/local execution never do.
25
- */
26
- export declare function loadComponentTemporalCodegen(): Promise<ComponentTemporalCodegen>;
27
- //# sourceMappingURL=temporal-codegen-loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"temporal-codegen-loader.d.ts","sourceRoot":"","sources":["../../src/components/temporal-codegen-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,wNAAwN;AACxN,MAAM,WAAW,+BAA+B;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,wBAAwB;IACvC,sFAAsF;IACtF,kBAAkB,CAAC,SAAS,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,+BAA+B,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClH,mHAAmH;IACnH,uBAAuB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC;CACxD;AAED;;;;GAIG;AACH,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAWtF"}
@@ -1,37 +0,0 @@
1
- /**
2
- * COMP004: gate-needs-temporal
3
- *
4
- * Flags a `gate` step anywhere in a component's composition — a durable,
5
- * human-approval wait that cannot run on the local in-process executor (see
6
- * ../../../components/driver.ts's `DriverGateUnsupportedError` and
7
- * docs/components/orchestration.mdx's "Temporal is optional" aside: "gates ...
8
- * require the durable (Temporal) execution backend").
9
- *
10
- * The component contract has no per-component backend/executor field (the
11
- * backend is chosen per *run*, via `chant run --temporal`, per epic #551 §8 —
12
- * intentionally not part of the declaration, so the same component graduates
13
- * to Temporal without changing its definition). That means lint cannot tell,
14
- * from the declaration alone, whether a given `gate` will actually run under
15
- * Temporal when this component is deployed — every `gate` is a standing
16
- * "this component needs the durable backend" fact worth surfacing, not a
17
- * mistake to silently allow. Acknowledge it explicitly with a **file-level**
18
- * disable directive once the durable backend is genuinely intended (see
19
- * lint-rules/disable-directives.mdx) — a COMP* diagnostic carries no real
20
- * line/column (it is reported for the whole component; see
21
- * ../../component-checks.ts), so only the file-level `chant-disable` form is
22
- * honored for these rules — `-line`/`-next-line` do not suppress a COMP*
23
- * diagnostic (see ../../../cli/commands/lint.ts's
24
- * `runComponentCheckDiagnostics`):
25
- *
26
- * ```ts
27
- * // chant-disable COMP004 -- graduates to --temporal for the human approval wait
28
- * ```
29
- *
30
- * Triggers on: any `gate` step in `deploy`/`rollback` with no matching
31
- * file-level disable directive.
32
- * OK: a component with no `gate` steps at all, or a `gate` whose file-level
33
- * disable directive documents the Temporal graduation.
34
- */
35
- import type { ComponentCheck } from "../../component-checks.js";
36
- export declare const comp004GateNeedsTemporalRule: ComponentCheck;
37
- //# sourceMappingURL=comp004-gate-needs-temporal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"comp004-gate-needs-temporal.d.ts","sourceRoot":"","sources":["../../../../src/lint/rules/comp/comp004-gate-needs-temporal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAmD,MAAM,wBAAwB,CAAC;AAG9G,eAAO,MAAM,4BAA4B,EAAE,cA2B1C,CAAC"}