@intentius/chant 0.124.13 → 0.124.14

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 (907) hide show
  1. package/bin/chant +11 -0
  2. package/dist/agents/checks.js +326 -0
  3. package/dist/agents/discover.js +885 -0
  4. package/dist/agents/importer.js +17 -0
  5. package/dist/agents/index.js +12 -0
  6. package/dist/agents/types.js +19 -0
  7. package/dist/apply.js +151 -0
  8. package/dist/attrref.js +70 -0
  9. package/dist/audit/catalog.js +350 -0
  10. package/dist/audit/core.js +252 -0
  11. package/dist/audit/discover.js +633 -0
  12. package/dist/audit/fetch.js +666 -0
  13. package/dist/audit/lineage.js +91 -0
  14. package/dist/audit/nginx.js +366 -0
  15. package/dist/audit/prior-art.js +132 -0
  16. package/dist/audit/proof.js +321 -0
  17. package/dist/audit/report-html.js +194 -0
  18. package/dist/audit/report-model.js +198 -0
  19. package/dist/audit/report.js +102 -0
  20. package/dist/audit/rules-doc.js +144 -0
  21. package/dist/audit/secrets.js +405 -0
  22. package/dist/audit/terraform-state.js +140 -0
  23. package/dist/audit/wrangler.js +262 -0
  24. package/dist/behaviour-delta.js +401 -0
  25. package/dist/behaviour-engine.js +357 -0
  26. package/dist/behaviour-graph.js +83 -0
  27. package/dist/behaviour-http.js +188 -0
  28. package/dist/behaviour-kinds.js +172 -0
  29. package/dist/behaviour-overlay.js +50 -0
  30. package/dist/behaviour-predict.js +188 -0
  31. package/dist/behaviour-request.js +194 -0
  32. package/dist/behaviour.js +1325 -0
  33. package/dist/build-params.js +108 -0
  34. package/dist/build.js +668 -0
  35. package/dist/builder.js +44 -0
  36. package/dist/cdk/advise.js +30 -0
  37. package/dist/cdk/assembly.js +122 -0
  38. package/dist/cdk/graph.js +444 -0
  39. package/dist/cdk/tier-map.js +64 -0
  40. package/dist/cdk/types.js +24 -0
  41. package/dist/change-set.js +312 -0
  42. package/dist/child-project.js +21 -0
  43. package/dist/claimed-fields.js +135 -0
  44. package/dist/cli/build-options.js +70 -0
  45. package/dist/cli/build-params-cli.js +139 -0
  46. package/dist/cli/command-group.js +123 -0
  47. package/dist/cli/commands/audit-agents.js +326 -0
  48. package/dist/cli/commands/audit.js +571 -0
  49. package/dist/cli/commands/build.js +920 -0
  50. package/dist/cli/commands/carve-apply.js +153 -0
  51. package/dist/cli/commands/carve-bridge.js +201 -0
  52. package/dist/cli/commands/carve-emit.js +332 -0
  53. package/dist/cli/commands/carve-status.js +119 -0
  54. package/dist/cli/commands/carve.js +204 -0
  55. package/dist/cli/commands/check-lexicon-docs.js +79 -0
  56. package/dist/cli/commands/check-lexicon-examples.js +177 -0
  57. package/dist/cli/commands/check-lexicon-intrinsics.js +291 -0
  58. package/dist/cli/commands/check-lexicon-mcp.js +82 -0
  59. package/dist/cli/commands/check-lexicon-plugin.d.ts.map +1 -1
  60. package/dist/cli/commands/check-lexicon-plugin.js +104 -0
  61. package/dist/cli/commands/check-lexicon.js +766 -0
  62. package/dist/cli/commands/describe.js +85 -0
  63. package/dist/cli/commands/diff.js +175 -0
  64. package/dist/cli/commands/doctor.js +350 -0
  65. package/dist/cli/commands/import-agents.js +155 -0
  66. package/dist/cli/commands/import.js +670 -0
  67. package/dist/cli/commands/init-lexicon/templates/codegen.js +194 -0
  68. package/dist/cli/commands/init-lexicon/templates/docs.js +100 -0
  69. package/dist/cli/commands/init-lexicon/templates/examples.js +29 -0
  70. package/dist/cli/commands/init-lexicon/templates/lint.js +34 -0
  71. package/dist/cli/commands/init-lexicon/templates/lsp.js +37 -0
  72. package/dist/cli/commands/init-lexicon/templates/plugin.js +108 -0
  73. package/dist/cli/commands/init-lexicon/templates/project.js +240 -0
  74. package/dist/cli/commands/init-lexicon/templates/spec.js +56 -0
  75. package/dist/cli/commands/init-lexicon/templates/tests.js +66 -0
  76. package/dist/cli/commands/init-lexicon.js +172 -0
  77. package/dist/cli/commands/init.js +381 -0
  78. package/dist/cli/commands/lexicon-rolling-upgrade.js +145 -0
  79. package/dist/cli/commands/lexicon-surface-diff.js +145 -0
  80. package/dist/cli/commands/licenses.js +125 -0
  81. package/dist/cli/commands/lint.d.ts.map +1 -1
  82. package/dist/cli/commands/lint.js +948 -0
  83. package/dist/cli/commands/list.js +63 -0
  84. package/dist/cli/commands/migrate.d.ts.map +1 -1
  85. package/dist/cli/commands/migrate.js +423 -0
  86. package/dist/cli/commands/onboard.js +403 -0
  87. package/dist/cli/commands/pinned-upgrade.js +191 -0
  88. package/dist/cli/commands/update.js +194 -0
  89. package/dist/cli/commands/vendor.js +217 -0
  90. package/dist/cli/conflict-check.js +104 -0
  91. package/dist/cli/debug.js +8 -0
  92. package/dist/cli/format.js +104 -0
  93. package/dist/cli/handlers/build.js +267 -0
  94. package/dist/cli/handlers/carve-apply.js +30 -0
  95. package/dist/cli/handlers/carve-bridge.js +28 -0
  96. package/dist/cli/handlers/carve-emit.js +50 -0
  97. package/dist/cli/handlers/carve-status.js +26 -0
  98. package/dist/cli/handlers/carve.js +40 -0
  99. package/dist/cli/handlers/change-set.js +46 -0
  100. package/dist/cli/handlers/components.js +730 -0
  101. package/dist/cli/handlers/dev.js +113 -0
  102. package/dist/cli/handlers/emulator.js +233 -0
  103. package/dist/cli/handlers/explain.js +54 -0
  104. package/dist/cli/handlers/fan-out.js +422 -0
  105. package/dist/cli/handlers/gate-resume.js +275 -0
  106. package/dist/cli/handlers/generate.js +84 -0
  107. package/dist/cli/handlers/graph.js +969 -0
  108. package/dist/cli/handlers/init.js +102 -0
  109. package/dist/cli/handlers/lifecycle.js +1727 -0
  110. package/dist/cli/handlers/lint.js +62 -0
  111. package/dist/cli/handlers/migrate.js +48 -0
  112. package/dist/cli/handlers/misc.js +391 -0
  113. package/dist/cli/handlers/operator.js +1162 -0
  114. package/dist/cli/handlers/override-approve.js +102 -0
  115. package/dist/cli/handlers/pr.js +503 -0
  116. package/dist/cli/handlers/promote.js +342 -0
  117. package/dist/cli/handlers/run-generate.js +206 -0
  118. package/dist/cli/handlers/run-wave.js +66 -0
  119. package/dist/cli/handlers/run.js +1191 -0
  120. package/dist/cli/handlers/scenario.js +325 -0
  121. package/dist/cli/handlers/search.js +924 -0
  122. package/dist/cli/handlers/serve.js +32 -0
  123. package/dist/cli/handlers/vendor.js +154 -0
  124. package/dist/cli/index.js +3 -0
  125. package/dist/cli/is-entry-point.js +23 -0
  126. package/dist/cli/lsp/capabilities.js +28 -0
  127. package/dist/cli/lsp/diagnostics.js +34 -0
  128. package/dist/cli/lsp/server.js +329 -0
  129. package/dist/cli/main.d.ts.map +1 -1
  130. package/dist/cli/main.js +2540 -0
  131. package/dist/cli/mcp/lifecycle-tools.js +80 -0
  132. package/dist/cli/mcp/op-tools.js +306 -0
  133. package/dist/cli/mcp/resource-handlers.js +258 -0
  134. package/dist/cli/mcp/resources/context.js +85 -0
  135. package/dist/cli/mcp/server.js +353 -0
  136. package/dist/cli/mcp/tools/build.js +111 -0
  137. package/dist/cli/mcp/tools/composites.js +95 -0
  138. package/dist/cli/mcp/tools/explain.js +166 -0
  139. package/dist/cli/mcp/tools/import.js +49 -0
  140. package/dist/cli/mcp/tools/lint.js +41 -0
  141. package/dist/cli/mcp/tools/scaffold.js +111 -0
  142. package/dist/cli/mcp/tools/search.js +112 -0
  143. package/dist/cli/mcp/types.js +1 -0
  144. package/dist/cli/mcp/workspace-plugins.js +91 -0
  145. package/dist/cli/mcp/workspace-tools.d.ts +1 -1
  146. package/dist/cli/mcp/workspace-tools.js +564 -0
  147. package/dist/cli/mcp-config.js +70 -0
  148. package/dist/cli/plugins.js +313 -0
  149. package/dist/cli/registry.js +23 -0
  150. package/dist/cli/reporters/stylish.js +329 -0
  151. package/dist/cli/version.js +15 -0
  152. package/dist/cli/watch.js +79 -0
  153. package/dist/codegen/bound-property-types.js +82 -0
  154. package/dist/codegen/coverage.js +119 -0
  155. package/dist/codegen/docs-file-markers.js +60 -0
  156. package/dist/codegen/docs-pages.js +115 -0
  157. package/dist/codegen/docs-rule-scanning.js +164 -0
  158. package/dist/codegen/docs-rules.js +76 -0
  159. package/dist/codegen/docs-sections.js +117 -0
  160. package/dist/codegen/docs-sidebar.js +65 -0
  161. package/dist/codegen/docs-types.js +4 -0
  162. package/dist/codegen/docs.js +356 -0
  163. package/dist/codegen/fetch.js +340 -0
  164. package/dist/codegen/generate-post-synth-barrel.js +63 -0
  165. package/dist/codegen/generate-registry.js +71 -0
  166. package/dist/codegen/generate-runtime-index.js +56 -0
  167. package/dist/codegen/generate-typescript.js +119 -0
  168. package/dist/codegen/generate.js +115 -0
  169. package/dist/codegen/json-patch.js +141 -0
  170. package/dist/codegen/json-schema-to-ts.js +344 -0
  171. package/dist/codegen/json-schema.js +246 -0
  172. package/dist/codegen/lexicon-regen.js +412 -0
  173. package/dist/codegen/naming.js +217 -0
  174. package/dist/codegen/okf-lexicon.js +245 -0
  175. package/dist/codegen/package.js +150 -0
  176. package/dist/codegen/pinned-upgrade.d.ts.map +1 -1
  177. package/dist/codegen/pinned-upgrade.js +494 -0
  178. package/dist/codegen/registry.js +60 -0
  179. package/dist/codegen/rehype-base-url.mjs +68 -0
  180. package/dist/codegen/rolling-upgrade.js +217 -0
  181. package/dist/codegen/surface-snapshot.js +537 -0
  182. package/dist/codegen/testdata/postgres-tags.json +242 -0
  183. package/dist/codegen/topo-sort.js +36 -0
  184. package/dist/codegen/typecheck.js +115 -0
  185. package/dist/codegen/validate.js +200 -0
  186. package/dist/codegen/version-bump.js +35 -0
  187. package/dist/components/auto-release.js +143 -0
  188. package/dist/components/builders.js +47 -0
  189. package/dist/components/capability-plugin-loader.js +175 -0
  190. package/dist/components/capability-plugin-schema.js +46 -0
  191. package/dist/components/capability-plugin.js +99 -0
  192. package/dist/components/capability.js +60 -0
  193. package/dist/components/changed-files.js +72 -0
  194. package/dist/components/cli-support.js +427 -0
  195. package/dist/components/component.js +120 -0
  196. package/dist/components/component.schema.json +271 -0
  197. package/dist/components/config-defaults.js +130 -0
  198. package/dist/components/deploy-units.js +60 -0
  199. package/dist/components/discover.d.ts.map +1 -1
  200. package/dist/components/discover.js +189 -0
  201. package/dist/components/driver-output.js +86 -0
  202. package/dist/components/driver.js +728 -0
  203. package/dist/components/fan-out-output.js +165 -0
  204. package/dist/components/fan-out-record.js +94 -0
  205. package/dist/components/fan-out-run.js +373 -0
  206. package/dist/components/fan-out-support.js +60 -0
  207. package/dist/components/fan-out.js +273 -0
  208. package/dist/components/gate-plan.js +41 -0
  209. package/dist/components/gated-wave-pipeline.js +46 -0
  210. package/dist/components/index.js +24 -0
  211. package/dist/components/layers.js +28 -0
  212. package/dist/components/manifest-persistence.js +108 -0
  213. package/dist/components/pilots/alb-ecs.pilot.js +59 -0
  214. package/dist/components/pilots/dynamodb.pilot.js +51 -0
  215. package/dist/components/pilots/jar-emr.pilot.js +65 -0
  216. package/dist/components/pilots/lambda.pilot.js +52 -0
  217. package/dist/components/pilots/neo4j-fanout.pilot.js +68 -0
  218. package/dist/components/pilots/project.js +12 -0
  219. package/dist/components/pr-pipeline.js +134 -0
  220. package/dist/components/pr-run.js +363 -0
  221. package/dist/components/presets/ecs-fargate.js +72 -0
  222. package/dist/components/presets/index.js +28 -0
  223. package/dist/components/presets/lambda.js +34 -0
  224. package/dist/components/presets/single-host-compose.js +41 -0
  225. package/dist/components/promote.js +549 -0
  226. package/dist/components/registry.js +34 -0
  227. package/dist/components/run-progress.js +33 -0
  228. package/dist/components/sandbox/driver.d.ts.map +1 -1
  229. package/dist/components/sandbox/driver.js +93 -0
  230. package/dist/components/sandbox/run.js +115 -0
  231. package/dist/components/starter-plugin.js +104 -0
  232. package/dist/components/verbs/__tests__/mock-cloud-executor.js +68 -0
  233. package/dist/components/verbs/__tests__/mock-process-runner.js +45 -0
  234. package/dist/components/verbs/__tests__/mock-sbom-generator.js +56 -0
  235. package/dist/components/verbs/bom-writer.js +287 -0
  236. package/dist/components/verbs/build-archive.js +188 -0
  237. package/dist/components/verbs/build.js +142 -0
  238. package/dist/components/verbs/cloud-executor.js +110 -0
  239. package/dist/components/verbs/component-bom.js +125 -0
  240. package/dist/components/verbs/ensure-secret.js +50 -0
  241. package/dist/components/verbs/index.js +61 -0
  242. package/dist/components/verbs/license-policy.js +75 -0
  243. package/dist/components/verbs/lockfile-sbom-generator.js +191 -0
  244. package/dist/components/verbs/process-runner.js +78 -0
  245. package/dist/components/verbs/r2-sync.js +93 -0
  246. package/dist/components/verbs/reproducibility.js +62 -0
  247. package/dist/components/verbs/run-agent.js +577 -0
  248. package/dist/components/verbs/sbom-generator.js +119 -0
  249. package/dist/components/verbs/sbom.js +97 -0
  250. package/dist/components/verbs/shell.js +32 -0
  251. package/dist/components/verbs/sign.js +221 -0
  252. package/dist/components/verbs/stub.js +28 -0
  253. package/dist/components/verbs/tool-sbom-generator.js +154 -0
  254. package/dist/components/verbs/verify.js +112 -0
  255. package/dist/components/verbs/vex.js +131 -0
  256. package/dist/components/verbs/vuln-gate.js +152 -0
  257. package/dist/components/verbs/vuln-scan.js +288 -0
  258. package/dist/components/verbs/wait-verify.js +106 -0
  259. package/dist/components/verbs/wrangler.js +179 -0
  260. package/dist/components/wave-plan.js +102 -0
  261. package/dist/composite.js +305 -0
  262. package/dist/config-import.d.ts.map +1 -1
  263. package/dist/config-import.js +22 -0
  264. package/dist/config-sandbox.js +122 -0
  265. package/dist/config-static.js +206 -0
  266. package/dist/config.js +605 -0
  267. package/dist/content-digest.js +23 -0
  268. package/dist/declarable.js +114 -0
  269. package/dist/deep-observation.js +437 -0
  270. package/dist/detectLexicon.js +54 -0
  271. package/dist/discovery/cache.js +70 -0
  272. package/dist/discovery/collect.js +208 -0
  273. package/dist/discovery/cycles.js +95 -0
  274. package/dist/discovery/entity-wire-codec.js +391 -0
  275. package/dist/discovery/entity-wire.js +42 -0
  276. package/dist/discovery/files.js +121 -0
  277. package/dist/discovery/fold-import.d.ts.map +1 -1
  278. package/dist/discovery/fold-import.js +4178 -0
  279. package/dist/discovery/fold-rank.js +292 -0
  280. package/dist/discovery/graph.js +115 -0
  281. package/dist/discovery/import.d.ts.map +1 -1
  282. package/dist/discovery/import.js +65 -0
  283. package/dist/discovery/index.js +333 -0
  284. package/dist/discovery/param-deps.js +487 -0
  285. package/dist/discovery/resolve.js +39 -0
  286. package/dist/discovery/sandbox/bundle.js +214 -0
  287. package/dist/discovery/sandbox/child-errors.js +26 -0
  288. package/dist/discovery/sandbox/config-run.js +100 -0
  289. package/dist/discovery/sandbox/config-wire.js +183 -0
  290. package/dist/discovery/sandbox/driver.d.ts.map +1 -1
  291. package/dist/discovery/sandbox/driver.js +333 -0
  292. package/dist/discovery/sandbox/fork.js +229 -0
  293. package/dist/discovery/sandbox/policy-run.js +142 -0
  294. package/dist/discovery/sandbox/policy-wire.js +152 -0
  295. package/dist/discovery/sandbox/run.js +77 -0
  296. package/dist/discovery/specifier-resolve.js +320 -0
  297. package/dist/discovery/walk.js +284 -0
  298. package/dist/effect-receipt.js +340 -0
  299. package/dist/env.js +55 -0
  300. package/dist/errors.js +62 -0
  301. package/dist/fold/fold.js +1434 -0
  302. package/dist/fold/foldable-helpers.js +229 -0
  303. package/dist/fold/subset.js +696 -0
  304. package/dist/fold-provenance.js +414 -0
  305. package/dist/gate-decision.js +260 -0
  306. package/dist/gate-resume-run.js +154 -0
  307. package/dist/gated-waves.js +165 -0
  308. package/dist/governance.js +43 -0
  309. package/dist/graph-declared.js +45 -0
  310. package/dist/graph-detail.js +207 -0
  311. package/dist/graph-dot.js +54 -0
  312. package/dist/graph-effective.js +107 -0
  313. package/dist/graph-ir.js +623 -0
  314. package/dist/graph-layout.js +184 -0
  315. package/dist/graph-lens.js +105 -0
  316. package/dist/graph-mermaid.js +83 -0
  317. package/dist/graph-ops.js +39 -0
  318. package/dist/graph-refs.js +156 -0
  319. package/dist/held-elsewhere.js +87 -0
  320. package/dist/identity.js +251 -0
  321. package/dist/import/base-parser.js +34 -0
  322. package/dist/import/embedded.js +255 -0
  323. package/dist/import/generator.js +1 -0
  324. package/dist/import/ir-utils.js +85 -0
  325. package/dist/import/parser-options.js +45 -0
  326. package/dist/import/parser.js +1 -0
  327. package/dist/index.js +118 -0
  328. package/dist/intrinsic-interpolation.js +73 -0
  329. package/dist/intrinsic.js +31 -0
  330. package/dist/join-key.js +35 -0
  331. package/dist/kubectl-context.js +150 -0
  332. package/dist/lexicon-config.js +58 -0
  333. package/dist/lexicon-integrity.js +47 -0
  334. package/dist/lexicon-manifest.js +70 -0
  335. package/dist/lexicon-module.d.ts.map +1 -1
  336. package/dist/lexicon-module.js +241 -0
  337. package/dist/lexicon-output.js +218 -0
  338. package/dist/lexicon-plugin-helpers.js +104 -0
  339. package/dist/lexicon-schema.js +136 -0
  340. package/dist/lexicon.js +130 -0
  341. package/dist/lifecycle/affected.js +224 -0
  342. package/dist/lifecycle/assert-live.js +110 -0
  343. package/dist/lifecycle/build-ledger-store.js +160 -0
  344. package/dist/lifecycle/build-ledger.js +155 -0
  345. package/dist/lifecycle/change-set.js +356 -0
  346. package/dist/lifecycle/converge-ledger.js +161 -0
  347. package/dist/lifecycle/deep-diff.js +233 -0
  348. package/dist/lifecycle/deep-observe.js +147 -0
  349. package/dist/lifecycle/digest.js +143 -0
  350. package/dist/lifecycle/disruption.js +135 -0
  351. package/dist/lifecycle/gate-applied.js +113 -0
  352. package/dist/lifecycle/gate-audit.js +341 -0
  353. package/dist/lifecycle/gate-ledger-select.js +89 -0
  354. package/dist/lifecycle/gate-ledger.js +193 -0
  355. package/dist/lifecycle/gate-origin.js +117 -0
  356. package/dist/lifecycle/gate-pending.js +58 -0
  357. package/dist/lifecycle/git.js +1182 -0
  358. package/dist/lifecycle/identity.js +58 -0
  359. package/dist/lifecycle/index.js +26 -0
  360. package/dist/lifecycle/lease.js +283 -0
  361. package/dist/lifecycle/ledger-port.js +1 -0
  362. package/dist/lifecycle/legacy-digest.js +91 -0
  363. package/dist/lifecycle/live-diff.js +274 -0
  364. package/dist/lifecycle/local-note.js +15 -0
  365. package/dist/lifecycle/member-ledger.js +122 -0
  366. package/dist/lifecycle/observation-baseline.js +155 -0
  367. package/dist/lifecycle/observe.js +375 -0
  368. package/dist/lifecycle/oras-referrer-lookup.js +82 -0
  369. package/dist/lifecycle/override-ledger.js +54 -0
  370. package/dist/lifecycle/plan-digest.js +110 -0
  371. package/dist/lifecycle/plan-ledger.js +129 -0
  372. package/dist/lifecycle/receipt-plan.js +192 -0
  373. package/dist/lifecycle/release-ledger.js +155 -0
  374. package/dist/lifecycle/release-read.js +64 -0
  375. package/dist/lifecycle/replay.js +193 -0
  376. package/dist/lifecycle/rollback.js +102 -0
  377. package/dist/lifecycle/run-ledger.js +183 -0
  378. package/dist/lifecycle/scenario-eval.js +204 -0
  379. package/dist/lifecycle/scenario.js +214 -0
  380. package/dist/lifecycle/snapshot.js +239 -0
  381. package/dist/lifecycle/status.js +447 -0
  382. package/dist/lifecycle/symptoms.js +117 -0
  383. package/dist/lifecycle/teardown.js +255 -0
  384. package/dist/lifecycle/types.js +1 -0
  385. package/dist/lifecycle/unobserved-gate.js +33 -0
  386. package/dist/lifecycle/wave-plans.js +68 -0
  387. package/dist/lifecycle/work-item-id.js +36 -0
  388. package/dist/lifecycle/work-lease.js +393 -0
  389. package/dist/lint/component-checks.js +87 -0
  390. package/dist/lint/config.js +483 -0
  391. package/dist/lint/declarative.js +122 -0
  392. package/dist/lint/discover.d.ts.map +1 -1
  393. package/dist/lint/discover.js +138 -0
  394. package/dist/lint/engine.js +246 -0
  395. package/dist/lint/knowledge-checks.js +64 -0
  396. package/dist/lint/named-checks.js +22 -0
  397. package/dist/lint/output-checks.js +87 -0
  398. package/dist/lint/output-docs.js +163 -0
  399. package/dist/lint/parser.js +33 -0
  400. package/dist/lint/pipeline-change-gate.js +70 -0
  401. package/dist/lint/policy-import.d.ts +1 -1
  402. package/dist/lint/policy-import.d.ts.map +1 -1
  403. package/dist/lint/policy-import.js +62 -0
  404. package/dist/lint/policy-sandbox.js +86 -0
  405. package/dist/lint/policy.js +122 -0
  406. package/dist/lint/post-synth.js +87 -0
  407. package/dist/lint/presets/relaxed.json +26 -0
  408. package/dist/lint/presets/strict.json +24 -24
  409. package/dist/lint/receipt-checks.js +83 -0
  410. package/dist/lint/rule-loader.d.ts.map +1 -1
  411. package/dist/lint/rule-loader.js +89 -0
  412. package/dist/lint/rule-registry.js +86 -0
  413. package/dist/lint/rule.js +1 -0
  414. package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-a.component.js +7 -0
  415. package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-b.component.js +7 -0
  416. package/dist/lint/rules/__fixtures__/comp/comp001/fail/orphan-lib.component.js +9 -0
  417. package/dist/lint/rules/__fixtures__/comp/comp001/pass/emr-job.component.js +11 -0
  418. package/dist/lint/rules/__fixtures__/comp/comp001/pass/jar-lib.component.js +9 -0
  419. package/dist/lint/rules/__fixtures__/comp/comp002/fail/search-service.component.js +25 -0
  420. package/dist/lint/rules/__fixtures__/comp/comp002/pass/jar-lib.component.js +8 -0
  421. package/dist/lint/rules/__fixtures__/comp/comp002/pass/search-service.component.js +21 -0
  422. package/dist/lint/rules/__fixtures__/comp/comp003/fail/migrator.component.js +8 -0
  423. package/dist/lint/rules/__fixtures__/comp/comp003/pass/agent-turn.component.js +24 -0
  424. package/dist/lint/rules/__fixtures__/comp/comp003/pass/migrator.component.js +17 -0
  425. package/dist/lint/rules/__fixtures__/comp/comp003/pass/orders-table.component.js +8 -0
  426. package/dist/lint/rules/__fixtures__/comp/comp004/fail/neo4j-cluster.component.js +18 -0
  427. package/dist/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.js +20 -0
  428. package/dist/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.js +8 -0
  429. package/dist/lint/rules/__fixtures__/comp/comp005/fail/search-service.component.js +12 -0
  430. package/dist/lint/rules/__fixtures__/comp/comp005/pass/search-service.component.js +16 -0
  431. package/dist/lint/rules/__fixtures__/comp/comp006/fail/legacy-tool.component.js +8 -0
  432. package/dist/lint/rules/__fixtures__/comp/comp006/pass/legacy-tool.component.js +12 -0
  433. package/dist/lint/rules/__fixtures__/comp/comp007/fail/inventory-table.component.js +11 -0
  434. package/dist/lint/rules/__fixtures__/comp/comp007/fail/orders-table.component.js +11 -0
  435. package/dist/lint/rules/__fixtures__/comp/comp007/pass/orders-table.component.js +10 -0
  436. package/dist/lint/rules/__fixtures__/comp/comp007/pass/search-service.component.js +16 -0
  437. package/dist/lint/rules/comp/comp001-publishes-never-applies.js +69 -0
  438. package/dist/lint/rules/comp/comp002-dangling-wiring-ref.js +84 -0
  439. package/dist/lint/rules/comp/comp003-mutating-no-rollback.js +103 -0
  440. package/dist/lint/rules/comp/comp004-gate-needs-durable-runtime.js +70 -0
  441. package/dist/lint/rules/comp/comp005-capability-kind-is-noun.js +109 -0
  442. package/dist/lint/rules/comp/comp006-shell-needs-reason.js +49 -0
  443. package/dist/lint/rules/comp/comp007-composition-sprawl.js +64 -0
  444. package/dist/lint/rules/comp/index.js +33 -0
  445. package/dist/lint/rules/comp/support.js +129 -0
  446. package/dist/lint/rules/composite-scope.js +51 -0
  447. package/dist/lint/rules/cor017-composite-name-match.js +93 -0
  448. package/dist/lint/rules/cor018-composite-prefer-lexicon-type.js +136 -0
  449. package/dist/lint/rules/cor021-env-literal-name.js +100 -0
  450. package/dist/lint/rules/cor022-receipt-leaf.js +118 -0
  451. package/dist/lint/rules/cor024-receipt-secret-pointer.js +199 -0
  452. package/dist/lint/rules/declarable-naming-convention.js +62 -0
  453. package/dist/lint/rules/evl001-non-literal-expression.js +66 -0
  454. package/dist/lint/rules/evl002-control-flow-resource.js +69 -0
  455. package/dist/lint/rules/evl003-dynamic-property-access.js +44 -0
  456. package/dist/lint/rules/evl004-spread-non-const.js +94 -0
  457. package/dist/lint/rules/evl005-resource-block-body.js +41 -0
  458. package/dist/lint/rules/evl007-invalid-siblings.js +105 -0
  459. package/dist/lint/rules/evl009-composite-no-constant.js +158 -0
  460. package/dist/lint/rules/evl010-composite-no-transform.js +59 -0
  461. package/dist/lint/rules/evl011-symbolic-in-template.js +106 -0
  462. package/dist/lint/rules/export-required.js +115 -0
  463. package/dist/lint/rules/file-declarable-limit.js +88 -0
  464. package/dist/lint/rules/flat-declarations.js +62 -0
  465. package/dist/lint/rules/index.js +90 -0
  466. package/dist/lint/rules/no-cyclic-declarable-ref.js +138 -0
  467. package/dist/lint/rules/no-redundant-type-import.js +76 -0
  468. package/dist/lint/rules/no-redundant-value-cast.js +41 -0
  469. package/dist/lint/rules/no-string-ref.js +59 -0
  470. package/dist/lint/rules/no-unused-declarable-import.js +75 -0
  471. package/dist/lint/rules/no-unused-declarable.js +142 -0
  472. package/dist/lint/rules/op/index.js +28 -0
  473. package/dist/lint/rules/op/ops012-activity-contract.js +54 -0
  474. package/dist/lint/rules/op/ops013-step-output-ref.js +88 -0
  475. package/dist/lint/rules/op/ops014-converge-rule-refusals.js +114 -0
  476. package/dist/lint/rules/op/ops015-gate-approval.js +45 -0
  477. package/dist/lint/rules/op/support.js +11 -0
  478. package/dist/lint/rules/op/sys010-key-over-plain-http.js +100 -0
  479. package/dist/lint/rules/property-kind.js +56 -0
  480. package/dist/lint/rules/single-concern-file.js +71 -0
  481. package/dist/lint/rules/sys001-no-literal-key.js +60 -0
  482. package/dist/lint/selectors.js +168 -0
  483. package/dist/lint/suppressions.js +129 -0
  484. package/dist/lint/typescript.js +17 -0
  485. package/dist/live-endpoint.js +113 -0
  486. package/dist/live-read-session.js +76 -0
  487. package/dist/lsp/lexicon-providers.js +163 -0
  488. package/dist/lsp/types.js +5 -0
  489. package/dist/managed-fields.js +293 -0
  490. package/dist/mcp/types.js +4 -0
  491. package/dist/notify-verify.js +0 -1
  492. package/dist/notify.js +0 -1
  493. package/dist/notify.schema.json +72 -0
  494. package/dist/observation.js +266 -0
  495. package/dist/okf-read.js +134 -0
  496. package/dist/okf.js +275 -0
  497. package/dist/op/__fixtures__/decide-stub-backend.js +125 -0
  498. package/dist/op/activities/activity-contracts.js +313 -0
  499. package/dist/op/activities/apply.js +582 -0
  500. package/dist/op/activities/build.js +18 -0
  501. package/dist/op/activities/change-coverage.js +40 -0
  502. package/dist/op/activities/change-set.js +64 -0
  503. package/dist/op/activities/converge.js +492 -0
  504. package/dist/op/activities/decide.js +211 -0
  505. package/dist/op/activities/env-teardown.js +110 -0
  506. package/dist/op/activities/factory.js +591 -0
  507. package/dist/op/activities/forge-pull-request.js +82 -0
  508. package/dist/op/activities/gh-host.js +78 -0
  509. package/dist/op/activities/guard-validate.js +165 -0
  510. package/dist/op/activities/http-check.js +40 -0
  511. package/dist/op/activities/index.js +59 -0
  512. package/dist/op/activities/lexicon-upgrade.js +629 -0
  513. package/dist/op/activities/lifecycle.js +109 -0
  514. package/dist/op/activities/pipeline-audit.js +147 -0
  515. package/dist/op/activities/policy.js +26 -0
  516. package/dist/op/activities/predict-behaviour.js +341 -0
  517. package/dist/op/activities/propose-upgrade.js +165 -0
  518. package/dist/op/activities/reconcile.js +997 -0
  519. package/dist/op/activities/shell.js +118 -0
  520. package/dist/op/activities/source-release.js +97 -0
  521. package/dist/op/activities/source-rollback.js +165 -0
  522. package/dist/op/activities/teardown.js +17 -0
  523. package/dist/op/activities/util.js +6 -0
  524. package/dist/op/activities/wait.js +51 -0
  525. package/dist/op/activities/work-evidence.js +35 -0
  526. package/dist/op/activities/workflow-audit.js +133 -0
  527. package/dist/op/activity-contract-registry.js +106 -0
  528. package/dist/op/activity-contract.js +232 -0
  529. package/dist/op/activity-failure.js +31 -0
  530. package/dist/op/activity-profiles.js +129 -0
  531. package/dist/op/activity-registry.js +105 -0
  532. package/dist/op/activity-runtime.js +28 -0
  533. package/dist/op/builders.js +801 -0
  534. package/dist/op/change-signal.js +118 -0
  535. package/dist/op/composites/apply-op.js +151 -0
  536. package/dist/op/composites/behaviour-op.js +65 -0
  537. package/dist/op/composites/converge-op.js +141 -0
  538. package/dist/op/composites/index.js +19 -0
  539. package/dist/op/composites/lexicon-upgrade-op.js +107 -0
  540. package/dist/op/composites/pipeline-audit-op.js +50 -0
  541. package/dist/op/composites/reconcile-op.js +84 -0
  542. package/dist/op/composites/watch-op.js +69 -0
  543. package/dist/op/composites/workflow-audit-op.js +57 -0
  544. package/dist/op/converge-rule.js +205 -0
  545. package/dist/op/cron.js +146 -0
  546. package/dist/op/decide-backend.js +181 -0
  547. package/dist/op/decide-config.js +68 -0
  548. package/dist/op/decide-read-inputs.js +141 -0
  549. package/dist/op/discover.d.ts.map +1 -1
  550. package/dist/op/discover.js +213 -0
  551. package/dist/op/duration.js +21 -0
  552. package/dist/op/emulator-freshness.js +80 -0
  553. package/dist/op/emulator-lifecycle.js +269 -0
  554. package/dist/op/factory.js +83 -0
  555. package/dist/op/gate-approval.js +172 -0
  556. package/dist/op/gate-name.js +86 -0
  557. package/dist/op/gate-plan-context.js +167 -0
  558. package/dist/op/gate-point-run.js +67 -0
  559. package/dist/op/gate-point.js +111 -0
  560. package/dist/op/gate-resume-plan.js +155 -0
  561. package/dist/op/gate-resume.js +31 -0
  562. package/dist/op/gate-review.js +290 -0
  563. package/dist/op/gate-run-locator.js +85 -0
  564. package/dist/op/gate-summary.js +100 -0
  565. package/dist/op/gate-wait.js +56 -0
  566. package/dist/op/gate.js +449 -0
  567. package/dist/op/generate-pipeline.js +124 -0
  568. package/dist/op/index.js +51 -0
  569. package/dist/op/lifecycle-receipt-store.js +45 -0
  570. package/dist/op/local-executor.js +1164 -0
  571. package/dist/op/local-output.js +140 -0
  572. package/dist/op/op-ir.js +317 -0
  573. package/dist/op/op-verb-class.js +131 -0
  574. package/dist/op/op-waves-notify.js +136 -0
  575. package/dist/op/op-waves-run.js +1657 -0
  576. package/dist/op/op-waves.js +409 -0
  577. package/dist/op/operator.js +743 -0
  578. package/dist/op/receipt-store.js +94 -0
  579. package/dist/op/resource.js +23 -0
  580. package/dist/op/run-context.js +28 -0
  581. package/dist/op/run-live.js +256 -0
  582. package/dist/op/runtime.js +21 -0
  583. package/dist/op/runtimes/local.js +195 -0
  584. package/dist/op/source-archive.js +131 -0
  585. package/dist/op/step-output-ref.js +397 -0
  586. package/dist/op/steward-beside.js +169 -0
  587. package/dist/op/steward-points.js +138 -0
  588. package/dist/op/steward-turn.js +59 -0
  589. package/dist/op/steward.js +317 -0
  590. package/dist/op/types.js +25 -0
  591. package/dist/op/work-lease-decl.js +81 -0
  592. package/dist/op/work-lease-run.js +393 -0
  593. package/dist/override-gate.js +284 -0
  594. package/dist/owner-chain.js +74 -0
  595. package/dist/ownership.js +92 -0
  596. package/dist/params.js +61 -0
  597. package/dist/plan-summary.js +711 -0
  598. package/dist/point-decision.js +211 -0
  599. package/dist/pr-forge.js +810 -0
  600. package/dist/pr-loop.js +203 -0
  601. package/dist/project-codegen.js +191 -0
  602. package/dist/project-root.js +74 -0
  603. package/dist/project-validation.js +50 -0
  604. package/dist/provenance.js +157 -0
  605. package/dist/pseudo-parameter.js +40 -0
  606. package/dist/reconcile.js +450 -0
  607. package/dist/resource-attributes.js +33 -0
  608. package/dist/runtime-adapter.js +77 -0
  609. package/dist/runtime.js +66 -0
  610. package/dist/secret-materialization.js +153 -0
  611. package/dist/secret-provenance.js +250 -0
  612. package/dist/serializer-walker.js +112 -0
  613. package/dist/serializer.js +1 -0
  614. package/dist/sort.js +45 -0
  615. package/dist/stack-output.js +115 -0
  616. package/dist/telemetry-attribution.js +149 -0
  617. package/dist/terraform/__fixtures__/build-graph.js +63 -0
  618. package/dist/terraform/adopt-state.js +40 -0
  619. package/dist/terraform/aws-resources.js +384 -0
  620. package/dist/terraform/bridge.js +204 -0
  621. package/dist/terraform/carve-provider.js +155 -0
  622. package/dist/terraform/carve.js +138 -0
  623. package/dist/terraform/data-source-shape.js +57 -0
  624. package/dist/terraform/emit-source.js +36 -0
  625. package/dist/terraform/excise.js +123 -0
  626. package/dist/terraform/graduate.js +128 -0
  627. package/dist/terraform/graph.js +435 -0
  628. package/dist/terraform/hcl2json.js +60 -0
  629. package/dist/terraform/manifest.js +149 -0
  630. package/dist/terraform/parse.js +81 -0
  631. package/dist/terraform/providers/aws.js +146 -0
  632. package/dist/terraform/providers/gcp.js +294 -0
  633. package/dist/terraform/providers/index.js +17 -0
  634. package/dist/terraform/providers/kubernetes.js +253 -0
  635. package/dist/terraform/score.js +151 -0
  636. package/dist/terraform/state.js +67 -0
  637. package/dist/terraform/tier-map.js +74 -0
  638. package/dist/terraform/types.js +13 -0
  639. package/dist/terraform/unified-diff.js +132 -0
  640. package/dist/testing.js +295 -0
  641. package/dist/toml-emit.js +153 -0
  642. package/dist/toml-parse.js +355 -0
  643. package/dist/toml-utils.js +60 -0
  644. package/dist/toml.js +428 -0
  645. package/dist/ts-loader.d.ts +46 -0
  646. package/dist/ts-loader.d.ts.map +1 -0
  647. package/dist/ts-loader.js +103 -0
  648. package/dist/types.js +1 -0
  649. package/dist/utils.js +61 -0
  650. package/dist/validation.js +20 -0
  651. package/dist/vendor/js-yaml-load.js +1662 -0
  652. package/dist/workspace/__fixtures__/contract-repo.js +103 -0
  653. package/dist/workspace/__fixtures__/decide-workspace.js +112 -0
  654. package/dist/workspace/__fixtures__/sessions.js +91 -0
  655. package/dist/workspace/__fixtures__/two-member-workspace.js +34 -0
  656. package/dist/workspace/agent-cli.js +99 -0
  657. package/dist/workspace/agent.schema.json +390 -0
  658. package/dist/workspace/answers-ledger.js +89 -0
  659. package/dist/workspace/box-cli.js +142 -0
  660. package/dist/workspace/box-factory-write.js +196 -0
  661. package/dist/workspace/box-factory-write.schema.json +342 -0
  662. package/dist/workspace/box-factory.js +88 -0
  663. package/dist/workspace/box-intent.js +126 -0
  664. package/dist/workspace/box-isolation.js +169 -0
  665. package/dist/workspace/box-listing-write.schema.json +204 -0
  666. package/dist/workspace/box-listing.js +298 -0
  667. package/dist/workspace/box-publish.js +352 -0
  668. package/dist/workspace/box-publish.schema.json +498 -0
  669. package/dist/workspace/box-services.js +39 -0
  670. package/dist/workspace/broker-protocol.js +359 -0
  671. package/dist/workspace/broker-protocol.schema.json +228 -0
  672. package/dist/workspace/change-set.schema.json +460 -0
  673. package/dist/workspace/changes-cli.js +56 -0
  674. package/dist/workspace/changes.js +446 -0
  675. package/dist/workspace/changes.schema.json +642 -0
  676. package/dist/workspace/chant-migrations/chud-lexicon-exit-fly-site.js +198 -0
  677. package/dist/workspace/chant-migrations/chud-lexicon-exit-live-names.js +155 -0
  678. package/dist/workspace/chant-migrations/chud-lexicon-exit-rollback.js +214 -0
  679. package/dist/workspace/chant-migrations/chud-lexicon-exit-ship-inputs.js +180 -0
  680. package/dist/workspace/chant-migrations/chud-lexicon-exit-ship-policy.js +99 -0
  681. package/dist/workspace/chant-migrations/chud-lexicon-exit.js +847 -0
  682. package/dist/workspace/chant-migrations.js +113 -0
  683. package/dist/workspace/check.schema.json +433 -0
  684. package/dist/workspace/checks/box-isolation.js +62 -0
  685. package/dist/workspace/checks/boxes.js +491 -0
  686. package/dist/workspace/checks/diagrams.js +104 -0
  687. package/dist/workspace/checks/generated.js +419 -0
  688. package/dist/workspace/checks/ledgers.js +212 -0
  689. package/dist/workspace/checks/links.js +191 -0
  690. package/dist/workspace/checks/live.js +100 -0
  691. package/dist/workspace/checks/pipelines.js +188 -0
  692. package/dist/workspace/checks/records.js +169 -0
  693. package/dist/workspace/checks.js +426 -0
  694. package/dist/workspace/ci-green-cli.js +125 -0
  695. package/dist/workspace/ci-green-forge.js +83 -0
  696. package/dist/workspace/ci-green-workflow.js +199 -0
  697. package/dist/workspace/ci-green.js +325 -0
  698. package/dist/workspace/ci-last-green.schema.json +158 -0
  699. package/dist/workspace/compose-graph.js +235 -0
  700. package/dist/workspace/compose-reports.js +146 -0
  701. package/dist/workspace/composites.js +264 -0
  702. package/dist/workspace/composites.schema.json +617 -0
  703. package/dist/workspace/conformance/__fixture__/app/package.json +7 -0
  704. package/dist/workspace/conformance/__fixture__/app/src/server.mjs +29 -0
  705. package/dist/workspace/conformance/__fixture__/decisions/decision.kind.mjs +54 -0
  706. package/dist/workspace/conformance/__fixture__/decisions/decision.schema.json +512 -0
  707. package/dist/workspace/conformance/__fixture__/decisions/fix-001-how-the-app-is-deployed.md +40 -0
  708. package/dist/workspace/conformance/__fixture__/delivery/chant.config.ts +7 -0
  709. package/dist/workspace/conformance/__fixture__/delivery/lexicon/index.ts +26 -0
  710. package/dist/workspace/conformance/__fixture__/delivery/package.json +7 -0
  711. package/dist/workspace/conformance/__fixture__/delivery/src/app.component.ts +14 -0
  712. package/dist/workspace/conformance/__fixture__/delivery/src/app.ts +4 -0
  713. package/dist/workspace/conformance/__fixtures__/reference-broker.js +205 -0
  714. package/dist/workspace/conformance/__writer_fixture__/answers/answer.kind.mjs +32 -0
  715. package/dist/workspace/conformance/__writer_fixture__/answers/answer.schema.json +135 -0
  716. package/dist/workspace/conformance/__writer_fixture__/contracts/contract.kind.mjs +37 -0
  717. package/dist/workspace/conformance/__writer_fixture__/contracts/contract.schema.json +213 -0
  718. package/dist/workspace/conformance/__writer_fixture__/decisions/points.json +228 -0
  719. package/dist/workspace/conformance/__writer_fixture__/drivers/driver.kind.mjs +15 -0
  720. package/dist/workspace/conformance/__writer_fixture__/drivers/driver.schema.json +38 -0
  721. package/dist/workspace/conformance/__writer_fixture__/sessions/session.kind.mjs +54 -0
  722. package/dist/workspace/conformance/__writer_fixture__/sessions/session.schema.json +289 -0
  723. package/dist/workspace/conformance/__writer_fixture__/work/W-001-the-writer-suite-works-this-item.md +25 -0
  724. package/dist/workspace/conformance/__writer_fixture__/work/work.kind.mjs +60 -0
  725. package/dist/workspace/conformance/__writer_fixture__/work/work.schema.json +603 -0
  726. package/dist/workspace/conformance/broker.js +736 -0
  727. package/dist/workspace/conformance/index.js +673 -0
  728. package/dist/workspace/conformance/vitest.js +108 -0
  729. package/dist/workspace/conformance/writer.js +1080 -0
  730. package/dist/workspace/decide.js +879 -0
  731. package/dist/workspace/decision-points.schema.json +135 -135
  732. package/dist/workspace/declaration-write-cli.js +74 -0
  733. package/dist/workspace/declaration-write.js +238 -0
  734. package/dist/workspace/declaration.js +938 -0
  735. package/dist/workspace/declaration.schema.json +1413 -1413
  736. package/dist/workspace/declared-kinds.js +106 -0
  737. package/dist/workspace/environments.js +164 -0
  738. package/dist/workspace/evidence.schema.json +279 -0
  739. package/dist/workspace/export-cli.js +185 -0
  740. package/dist/workspace/export.js +499 -0
  741. package/dist/workspace/factory-rules.js +175 -0
  742. package/dist/workspace/generated-files.js +92 -0
  743. package/dist/workspace/glob.js +45 -0
  744. package/dist/workspace/graph-cache.js +352 -0
  745. package/dist/workspace/graph-cli.js +348 -0
  746. package/dist/workspace/graph.schema.json +1338 -0
  747. package/dist/workspace/identity-gate-rule.js +75 -0
  748. package/dist/workspace/identity.js +126 -0
  749. package/dist/workspace/import.js +283 -0
  750. package/dist/workspace/init.js +620 -0
  751. package/dist/workspace/intent-cli.js +263 -0
  752. package/dist/workspace/intent-joins.js +201 -0
  753. package/dist/workspace/intent-record.js +352 -0
  754. package/dist/workspace/intent-record.schema.json +864 -0
  755. package/dist/workspace/intent.js +1582 -0
  756. package/dist/workspace/intent.schema.json +2420 -0
  757. package/dist/workspace/json-edit.js +221 -0
  758. package/dist/workspace/jsonc.js +235 -0
  759. package/dist/workspace/kind-readers.js +103 -0
  760. package/dist/workspace/kinds.js +587 -0
  761. package/dist/workspace/lexicon-symbols.js +112 -0
  762. package/dist/workspace/lineage-adopt-cli.js +102 -0
  763. package/dist/workspace/lineage-adopt.js +360 -0
  764. package/dist/workspace/lineage-check.js +282 -0
  765. package/dist/workspace/lineage-cli.js +121 -0
  766. package/dist/workspace/lineage-hash-index.js +284 -0
  767. package/dist/workspace/lineage-init.js +507 -0
  768. package/dist/workspace/lineage-lock.js +387 -0
  769. package/dist/workspace/lineage-merge.js +45 -0
  770. package/dist/workspace/lineage-migrations.d.ts.map +1 -1
  771. package/dist/workspace/lineage-migrations.js +329 -0
  772. package/dist/workspace/lineage-provenance.js +36 -0
  773. package/dist/workspace/lineage-update.js +138 -0
  774. package/dist/workspace/lineage-upgrade-cli.js +131 -0
  775. package/dist/workspace/lineage-upgrade.js +889 -0
  776. package/dist/workspace/lineage-vendor.js +171 -0
  777. package/dist/workspace/lineage-version.js +128 -0
  778. package/dist/workspace/lineage-versions.js +275 -0
  779. package/dist/workspace/links.js +330 -0
  780. package/dist/workspace/ls-generated.js +95 -0
  781. package/dist/workspace/ls.js +277 -0
  782. package/dist/workspace/ls.schema.json +333 -0
  783. package/dist/workspace/member-commands.js +508 -0
  784. package/dist/workspace/member-handles.js +216 -0
  785. package/dist/workspace/member-pipeline.js +258 -0
  786. package/dist/workspace/member-run.js +117 -0
  787. package/dist/workspace/member-write.schema.json +193 -0
  788. package/dist/workspace/nested-graph.js +156 -0
  789. package/dist/workspace/nesting.js +38 -0
  790. package/dist/workspace/patch.js +301 -0
  791. package/dist/workspace/patch.schema.json +321 -0
  792. package/dist/workspace/pin-cli.js +55 -0
  793. package/dist/workspace/pin-integrity.js +100 -0
  794. package/dist/workspace/plan-summary.schema.json +155 -0
  795. package/dist/workspace/point-answer.schema.json +129 -129
  796. package/dist/workspace/points-cli.js +291 -0
  797. package/dist/workspace/points-write.schema.json +660 -0
  798. package/dist/workspace/points.js +521 -0
  799. package/dist/workspace/points.schema.json +916 -0
  800. package/dist/workspace/pr-report.schema.json +108 -0
  801. package/dist/workspace/principal-classes.js +245 -0
  802. package/dist/workspace/reason-codes.js +326 -0
  803. package/dist/workspace/record-assets.js +151 -0
  804. package/dist/workspace/record-decided.js +105 -0
  805. package/dist/workspace/record-sessions.js +96 -0
  806. package/dist/workspace/record-source.js +114 -0
  807. package/dist/workspace/records-amend.schema.json +284 -0
  808. package/dist/workspace/records-checkout.js +76 -0
  809. package/dist/workspace/records-cli.js +707 -0
  810. package/dist/workspace/records-close.js +116 -0
  811. package/dist/workspace/records-close.schema.json +278 -0
  812. package/dist/workspace/records-new.schema.json +202 -0
  813. package/dist/workspace/records-review.schema.json +367 -0
  814. package/dist/workspace/records-since.js +317 -0
  815. package/dist/workspace/records-since.schema.json +218 -0
  816. package/dist/workspace/records-write.js +1229 -0
  817. package/dist/workspace/records.js +1345 -0
  818. package/dist/workspace/records.schema.json +604 -0
  819. package/dist/workspace/reference-kinds/app/package.json +10 -0
  820. package/dist/workspace/reference-kinds/app/workspace-kinds.json +45 -0
  821. package/dist/workspace/returns.js +303 -0
  822. package/dist/workspace/root-refusal.js +75 -0
  823. package/dist/workspace/run-statement.schema.json +622 -0
  824. package/dist/workspace/runs-cli.js +584 -0
  825. package/dist/workspace/runs-write.schema.json +994 -0
  826. package/dist/workspace/runs.js +708 -0
  827. package/dist/workspace/runs.schema.json +1257 -0
  828. package/dist/workspace/runtimes.js +76 -0
  829. package/dist/workspace/session-kinds.js +83 -0
  830. package/dist/workspace/signers.schema.json +206 -0
  831. package/dist/workspace/source-block.js +125 -0
  832. package/dist/workspace/squash.js +177 -0
  833. package/dist/workspace/status-gates.js +162 -0
  834. package/dist/workspace/status-stewards.js +330 -0
  835. package/dist/workspace/status.js +514 -0
  836. package/dist/workspace/status.schema.json +998 -0
  837. package/dist/workspace/steward-index.js +191 -0
  838. package/dist/workspace/symbols.js +188 -0
  839. package/dist/workspace/template-manifest.js +227 -0
  840. package/dist/workspace/template-pins.js +115 -0
  841. package/dist/workspace/trailer-joins.js +65 -0
  842. package/dist/workspace/trailers.js +111 -0
  843. package/dist/workspace/tree.js +136 -0
  844. package/dist/workspace/trust/attestor.js +63 -0
  845. package/dist/workspace/trust/dsse.js +108 -0
  846. package/dist/workspace/trust/evidence-cli.js +175 -0
  847. package/dist/workspace/trust/evidence.js +161 -0
  848. package/dist/workspace/trust/gate-seal.js +226 -0
  849. package/dist/workspace/trust/policy.js +190 -0
  850. package/dist/workspace/trust/provenance.js +180 -0
  851. package/dist/workspace/trust/rotation.js +298 -0
  852. package/dist/workspace/trust/run-commits.js +101 -0
  853. package/dist/workspace/trust/run-statement.js +182 -0
  854. package/dist/workspace/trust/seal.js +272 -0
  855. package/dist/workspace/trust/signers-cli.js +152 -0
  856. package/dist/workspace/trust/ssh-commit.js +178 -0
  857. package/dist/workspace/trust/test-repo.js +118 -0
  858. package/dist/workspace/trust/trust-files.js +193 -0
  859. package/dist/workspace/trust/verify-cli.js +63 -0
  860. package/dist/workspace/trust/verify.js +192 -0
  861. package/dist/workspace/which-chant.js +141 -0
  862. package/dist/workspace/wip-cli.js +95 -0
  863. package/dist/workspace/wip-write.schema.json +504 -0
  864. package/dist/workspace/wip.js +631 -0
  865. package/dist/workspace/wip.schema.json +334 -0
  866. package/dist/workspace/work-cli.js +448 -0
  867. package/dist/workspace/work-evidence.js +122 -0
  868. package/dist/workspace/work-evidence.schema.json +222 -0
  869. package/dist/workspace/work-history.schema.json +421 -0
  870. package/dist/workspace/work-lease.schema.json +246 -0
  871. package/dist/workspace/work-size.js +77 -0
  872. package/dist/workspace/work.js +283 -0
  873. package/dist/workspace/workspace-kinds.schema.json +259 -259
  874. package/dist/workspace/workspace-principals.schema.json +53 -53
  875. package/dist/workspace/write-lock-cli.js +105 -0
  876. package/dist/workspace/write-lock.js +424 -0
  877. package/dist/workspace/write-lock.schema.json +172 -0
  878. package/dist/workspace/write-scope.js +484 -0
  879. package/dist/yaml.js +459 -0
  880. package/package.json +2 -2
  881. package/src/cli/commands/check-lexicon-plugin.ts +2 -0
  882. package/src/cli/commands/lint.ts +3 -0
  883. package/src/cli/commands/migrate.ts +2 -0
  884. package/src/cli/compiled-cli.e2e.test.ts +165 -0
  885. package/src/cli/main.ts +121 -27
  886. package/src/cli/mcp/workspace-tools.ts +1 -1
  887. package/src/codegen/pinned-upgrade.ts +2 -0
  888. package/src/components/discover.ts +2 -0
  889. package/src/components/sandbox/driver.ts +3 -1
  890. package/src/config-import.ts +3 -0
  891. package/src/discovery/fold-import.ts +23 -14
  892. package/src/discovery/import.ts +2 -0
  893. package/src/discovery/sandbox/driver.ts +3 -1
  894. package/src/lexicon-module.ts +3 -0
  895. package/src/lint/config.ts +1 -1
  896. package/src/lint/discover.ts +28 -8
  897. package/src/lint/policy-import.ts +4 -1
  898. package/src/lint/rule-loader.ts +2 -0
  899. package/src/op/discover.ts +3 -0
  900. package/src/ts-loader.test.ts +23 -0
  901. package/src/ts-loader.ts +122 -0
  902. package/src/workspace/chant-migrations/chud-lexicon-exit.ts +1 -1
  903. package/src/workspace/declaration.ts +1 -1
  904. package/src/workspace/kinds.ts +1 -1
  905. package/src/workspace/lineage-migrations.ts +2 -0
  906. package/src/workspace/points.ts +1 -1
  907. package/src/workspace/principal-classes.ts +1 -1
@@ -0,0 +1,403 @@
1
+ import { readFileSync, writeFileSync, existsSync } from "fs";
2
+ import { join, dirname } from "path";
3
+ import { fileURLToPath } from "url";
4
+ import { formatSuccess, formatError, formatWarning } from "../format.js";
5
+ import { lexiconModulePath, lexiconSourceLabel } from "../../lexicon-module.js";
6
+ /** Resolve the monorepo root (5 dirs up from packages/core/src/cli/commands/). */
7
+ function findRepoRoot() {
8
+ const here = dirname(fileURLToPath(import.meta.url)); // commands/
9
+ return dirname(dirname(dirname(dirname(dirname(here))))); // -> root
10
+ }
11
+ /**
12
+ * A real prepack invocation line: a Dockerfile `RUN`, a workflow `- run:`,
13
+ * or a bare line inside a `run: |` block. Comments, `echo` messages and
14
+ * `$lex` / `<lex>` placeholders do not match. Matching those placeholder
15
+ * substrings was how onboard appended duplicates to Dockerfile.smoke on
16
+ * every run (#1678).
17
+ */
18
+ const PREPACK_LINE = /^\s*(?:RUN\s+|-\s*run:\s*)?npm run --prefix lexicons\/[a-z0-9-]+ prepack\s*$/i;
19
+ function isPrepackLine(line) {
20
+ return PREPACK_LINE.test(line);
21
+ }
22
+ /** A YAML comment line, e.g. the cedar note sitting mid-list in chant.yml. */
23
+ const COMMENT_LINE = /^\s*#/;
24
+ function isCommentLine(line) {
25
+ return COMMENT_LINE.test(line);
26
+ }
27
+ function hasPrepackLine(lines, name) {
28
+ return lines.some((l) => isPrepackLine(l) && l.includes(`lexicons/${name} prepack`));
29
+ }
30
+ /** Shell loop header over lexicon names: `for lex in aws gcp k8s; do \`. */
31
+ const LEX_LOOP = /^(\s*(?:RUN\s+)?for lex in )([a-z0-9][a-z0-9 -]*?)(\s*;\s*do\b.*)$/i;
32
+ function loopCoversLexicon(lines, name) {
33
+ return lines.some((l) => {
34
+ const m = l.match(LEX_LOOP);
35
+ return m !== null && m[2].split(/\s+/).includes(name);
36
+ });
37
+ }
38
+ /**
39
+ * Append the lexicon to every `for lex in ...` loop list that does not
40
+ * already contain it. Returns true when at least one list changed.
41
+ */
42
+ function addToLexiconLoops(lines, name) {
43
+ let changed = false;
44
+ for (let i = 0; i < lines.length; i++) {
45
+ const m = lines[i].match(LEX_LOOP);
46
+ if (!m)
47
+ continue;
48
+ const names = m[2].split(/\s+/).filter(Boolean);
49
+ if (names.includes(name))
50
+ continue;
51
+ names.push(name);
52
+ lines[i] = `${m[1]}${names.join(" ")}${m[3]}`;
53
+ changed = true;
54
+ }
55
+ return changed;
56
+ }
57
+ /**
58
+ * Patch root package.json to add a workspace dependency for the lexicon.
59
+ */
60
+ function patchRootPackageJson(root, name) {
61
+ const pkgPath = join(root, "package.json");
62
+ if (!existsSync(pkgPath))
63
+ return { patched: false, reason: "root package.json not found" };
64
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
65
+ const depKey = `@intentius/chant-lexicon-${name}`;
66
+ if (pkg.dependencies?.[depKey]) {
67
+ return { patched: false, reason: `${depKey} already in dependencies` };
68
+ }
69
+ pkg.dependencies = pkg.dependencies ?? {};
70
+ pkg.dependencies[depKey] = "workspace:*";
71
+ // Sort dependencies for consistency
72
+ const sorted = {};
73
+ for (const k of Object.keys(pkg.dependencies).sort()) {
74
+ sorted[k] = pkg.dependencies[k];
75
+ }
76
+ pkg.dependencies = sorted;
77
+ writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + "\n");
78
+ return { patched: true };
79
+ }
80
+ /**
81
+ * Patch the root tsconfig.json `paths` map (#1614).
82
+ *
83
+ * The whole-repo typecheck runs with `moduleResolution: node`, which never
84
+ * reads package exports maps, so every lexicon needs a bare + subpath
85
+ * mapping here or an example importing the package fails to resolve.
86
+ *
87
+ * Entries are `./`-prefixed like every other entry (#3227): with no `baseUrl`
88
+ * (removed in #3205) a bare `lexicons/...` path is invalid and tsx's tsconfig
89
+ * loader throws on it for every run in the repo.
90
+ */
91
+ export function patchRootTsconfigPaths(root, name) {
92
+ const tsconfigPath = join(root, "tsconfig.json");
93
+ if (!existsSync(tsconfigPath))
94
+ return { patched: false, reason: "root tsconfig.json not found" };
95
+ const cfg = JSON.parse(readFileSync(tsconfigPath, "utf-8"));
96
+ cfg.compilerOptions = cfg.compilerOptions ?? {};
97
+ const paths = (cfg.compilerOptions.paths = cfg.compilerOptions.paths ?? {});
98
+ const bare = `@intentius/chant-lexicon-${name}`;
99
+ const wanted = {
100
+ [bare]: [`./lexicons/${name}/src/index.ts`],
101
+ [`${bare}/*`]: [`./lexicons/${name}/src/*`],
102
+ };
103
+ let changed = false;
104
+ for (const [key, value] of Object.entries(wanted)) {
105
+ if (Array.isArray(paths[key]) && paths[key].length > 0)
106
+ continue;
107
+ paths[key] = value;
108
+ changed = true;
109
+ }
110
+ if (!changed)
111
+ return { patched: false, reason: `${bare} already in paths` };
112
+ writeFileSync(tsconfigPath, JSON.stringify(cfg, null, 2) + "\n");
113
+ return { patched: true };
114
+ }
115
+ /**
116
+ * Insert a new prepack line after the last prepack line in each contiguous group
117
+ * of 2+ prepack lines. Single standalone lines (like YAML `run:` values) are
118
+ * ignored. Used for multi-line `run: |` blocks in workflows.
119
+ *
120
+ * A comment line between two prepack lines (the cedar note in chant.yml's
121
+ * check and test jobs) does not end the group: it is skipped when scanning,
122
+ * so the block still gets exactly one insertion, anchored after its last
123
+ * real prepack line rather than after the comment (#2098).
124
+ */
125
+ function insertPrepackInContiguousGroups(lines, name) {
126
+ if (hasPrepackLine(lines, name))
127
+ return false;
128
+ // Identify contiguous groups of prepack lines, treating comment lines
129
+ // inside a group as pass-through rather than a boundary.
130
+ const groups = [];
131
+ let groupStart = -1;
132
+ let lastPrepackIdx = -1;
133
+ let count = 0;
134
+ const closeGroup = () => {
135
+ if (groupStart !== -1)
136
+ groups.push({ lastPrepackIdx, count });
137
+ groupStart = -1;
138
+ count = 0;
139
+ };
140
+ for (let i = 0; i < lines.length; i++) {
141
+ if (isPrepackLine(lines[i])) {
142
+ if (groupStart === -1)
143
+ groupStart = i;
144
+ lastPrepackIdx = i;
145
+ count++;
146
+ }
147
+ else if (isCommentLine(lines[i])) {
148
+ // Skip: does not extend a group on its own, and does not close one.
149
+ continue;
150
+ }
151
+ else {
152
+ closeGroup();
153
+ }
154
+ }
155
+ closeGroup();
156
+ // Only insert into groups of 2+ prepack lines (multi-line blocks, not standalone steps)
157
+ const insertAfter = groups.filter((g) => g.count > 1).map((g) => g.lastPrepackIdx);
158
+ if (insertAfter.length === 0)
159
+ return false;
160
+ for (const idx of insertAfter.reverse()) {
161
+ const newLine = lines[idx].replace(/lexicons\/[a-z0-9-]+/i, `lexicons/${name}`);
162
+ lines.splice(idx + 1, 0, newLine);
163
+ }
164
+ return true;
165
+ }
166
+ /**
167
+ * Insert a new prepack line after every last-in-group prepack line (groups of 1+).
168
+ * Used for publish.yml and Dockerfiles that list one RUN per lexicon.
169
+ */
170
+ export function insertPrepackAfterEach(lines, name) {
171
+ if (hasPrepackLine(lines, name))
172
+ return false;
173
+ const insertAfter = [];
174
+ for (let i = 0; i < lines.length; i++) {
175
+ if (!isPrepackLine(lines[i]))
176
+ continue;
177
+ const nextIsAlsoPrepack = i + 1 < lines.length && isPrepackLine(lines[i + 1]);
178
+ if (!nextIsAlsoPrepack) {
179
+ insertAfter.push(i);
180
+ }
181
+ }
182
+ if (insertAfter.length === 0)
183
+ return false;
184
+ for (const idx of insertAfter.reverse()) {
185
+ const newLine = lines[idx].replace(/lexicons\/[a-z0-9-]+/i, `lexicons/${name}`);
186
+ lines.splice(idx + 1, 0, newLine);
187
+ }
188
+ return true;
189
+ }
190
+ /**
191
+ * Patch chant.yml: add prepack lines in check/test multi-line `run: |` blocks,
192
+ * and add a new validate step.
193
+ *
194
+ * The file has two patterns:
195
+ * 1. Multi-line blocks (check + test jobs): `run: |\n npm run --prefix lexicons/aws prepack\n ...`
196
+ * 2. Standalone steps (validate job): `- name: Generate and validate ...\n run: npm run --prefix ...`
197
+ *
198
+ * We only insert into pattern 1 (contiguous groups) and separately add a new pattern 2 step.
199
+ */
200
+ function patchCiWorkflow(root, name) {
201
+ const filePath = join(root, ".github/workflows/chant.yml");
202
+ if (!existsSync(filePath))
203
+ return { patched: false, reason: "chant.yml not found" };
204
+ const content = readFileSync(filePath, "utf-8");
205
+ const lines = content.split("\n");
206
+ if (hasPrepackLine(lines, name)) {
207
+ return { patched: false, reason: `${name} already in chant.yml` };
208
+ }
209
+ // 1. Insert into multi-line `run: |` blocks only (contiguous prepack groups of 2+).
210
+ // The validate job has standalone steps that are NOT contiguous, so they won't match.
211
+ let changed = insertPrepackInContiguousGroups(lines, name);
212
+ // 2. Add a named validate step after the last "Generate and validate" step
213
+ const displayName = name.charAt(0).toUpperCase() + name.slice(1);
214
+ const validateStepName = `Generate and validate ${displayName} lexicon`;
215
+ if (!lines.some((l) => l.includes(validateStepName))) {
216
+ let lastValidateRunIdx = -1;
217
+ for (let i = 0; i < lines.length; i++) {
218
+ if (lines[i].includes("Generate and validate")) {
219
+ if (i + 1 < lines.length && lines[i + 1].trimStart().startsWith("run:")) {
220
+ lastValidateRunIdx = i + 1;
221
+ }
222
+ }
223
+ }
224
+ if (lastValidateRunIdx > 0) {
225
+ const block = [
226
+ "",
227
+ ` - name: ${validateStepName}`,
228
+ ` run: npm run --prefix lexicons/${name} prepack`,
229
+ ];
230
+ lines.splice(lastValidateRunIdx + 1, 0, ...block);
231
+ changed = true;
232
+ }
233
+ }
234
+ if (!changed)
235
+ return { patched: false, reason: "no prepack block found to anchor on" };
236
+ writeFileSync(filePath, lines.join("\n"));
237
+ return { patched: true };
238
+ }
239
+ /**
240
+ * Patch publish.yml: add the prepack line to the test job.
241
+ *
242
+ * No publish step is added. scripts/publish-packages.sh enumerates every
243
+ * non-private workspace package at run time, so a new lexicon is published
244
+ * the moment it exists — that is deliberate. Hand-maintained publish steps
245
+ * were how k8s-client (#1177) and fountain (#1253) each shipped a package
246
+ * the release pipeline could not publish.
247
+ */
248
+ function patchPublishWorkflow(root, name) {
249
+ const filePath = join(root, ".github/workflows/publish.yml");
250
+ if (!existsSync(filePath))
251
+ return { patched: false, reason: "publish.yml not found" };
252
+ const lines = readFileSync(filePath, "utf-8").split("\n");
253
+ if (hasPrepackLine(lines, name)) {
254
+ return { patched: false, reason: `prepack for ${name} already present` };
255
+ }
256
+ if (!insertPrepackAfterEach(lines, name)) {
257
+ // #3227 — not a failure and not "covered by a prepack line": publish.yml
258
+ // carries no per-lexicon lines. The run builds every lexicon through
259
+ // scripts/ci-lexicon-artifacts.sh and publishes through
260
+ // scripts/publish-packages.sh, both of which enumerate the workspace.
261
+ return {
262
+ patched: false,
263
+ reason: "nothing to patch: it has no per-lexicon prepack lines; scripts/ci-lexicon-artifacts.sh and scripts/publish-packages.sh enumerate the workspace",
264
+ };
265
+ }
266
+ writeFileSync(filePath, lines.join("\n"));
267
+ return { patched: true };
268
+ }
269
+ /**
270
+ * Patch a smoke Dockerfile so it covers the lexicon.
271
+ *
272
+ * Two layouts exist. Loop-based files (`for lex in aws gcp ...; do`) get the
273
+ * name appended to every loop list. Per-lexicon files (`RUN npm run --prefix
274
+ * lexicons/<x> prepack` lines) get one more RUN line. A file that already
275
+ * covers the lexicon either way is reported as such and left untouched.
276
+ */
277
+ export function patchDockerfile(filePath, name) {
278
+ if (!existsSync(filePath))
279
+ return { patched: false, reason: `${filePath} not found` };
280
+ const lines = readFileSync(filePath, "utf-8").split("\n");
281
+ if (loopCoversLexicon(lines, name) || hasPrepackLine(lines, name)) {
282
+ return { patched: false, reason: `already covers ${name}` };
283
+ }
284
+ const changed = addToLexiconLoops(lines, name) || insertPrepackAfterEach(lines, name);
285
+ if (!changed) {
286
+ // #3227 — the smoke-npm and smoke-e2e images read their lexicon list from
287
+ // a file. Point at it instead of reporting a missing anchor.
288
+ const listFile = lines.join("\n").match(/test\/(smoke-[\w-]+-lexicons\.txt)/)?.[1];
289
+ if (listFile) {
290
+ return { patched: false, reason: `reads its lexicon list from test/${listFile}, not from the Dockerfile` };
291
+ }
292
+ return { patched: false, reason: "no lexicon loop or prepack line found to anchor on" };
293
+ }
294
+ writeFileSync(filePath, lines.join("\n"));
295
+ return { patched: true };
296
+ }
297
+ /**
298
+ * Append a lexicon to a one-name-per-line list file (test/smoke-npm-lexicons.txt).
299
+ * Idempotent; keeps the file's trailing newline.
300
+ */
301
+ export function patchLexiconList(filePath, name) {
302
+ const rel = filePath.split("/").slice(-2).join("/");
303
+ if (!existsSync(filePath))
304
+ return { patched: false, reason: `${rel} not found` };
305
+ const content = readFileSync(filePath, "utf-8");
306
+ if (content.split("\n").some((l) => l.trim() === name)) {
307
+ return { patched: false, reason: `${name} already in ${rel}` };
308
+ }
309
+ const sep = content === "" || content.endsWith("\n") ? "" : "\n";
310
+ writeFileSync(filePath, `${content}${sep}${name}\n`);
311
+ return { patched: true };
312
+ }
313
+ /**
314
+ * Execute the onboard command — patches monorepo infrastructure for a new lexicon.
315
+ */
316
+ export function onboardCommand(options) {
317
+ // chant#2578 — onboard wires a lexicon package into the chant monorepo. A
318
+ // lexicon declared by path has no package, so there is nothing to wire and
319
+ // no install step to print; say where it loads from instead.
320
+ if (lexiconModulePath(options.name) !== undefined) {
321
+ return {
322
+ success: false,
323
+ patched: [],
324
+ skipped: [],
325
+ error: `lexicon "${options.name}" is declared by path in chant.config.ts and loads from ${lexiconSourceLabel(options.name)}. ` +
326
+ "onboard adds a lexicon package to the chant monorepo, and a lexicon loaded by path has no package to add.",
327
+ };
328
+ }
329
+ const root = options.root ?? findRepoRoot();
330
+ const patched = [];
331
+ const skipped = [];
332
+ const record = (label, summary, result) => {
333
+ if (result.patched)
334
+ patched.push(`${label} (${summary})`);
335
+ else
336
+ skipped.push(`${label}: ${result.reason}`);
337
+ };
338
+ // 1. Root package.json
339
+ record("package.json", "root dependency", patchRootPackageJson(root, options.name));
340
+ // 2. Root tsconfig.json paths (#1614)
341
+ record("tsconfig.json", "paths mapping", patchRootTsconfigPaths(root, options.name));
342
+ // 3. CI workflow
343
+ record("chant.yml", "prepack + validate", patchCiWorkflow(root, options.name));
344
+ // 4. Publish workflow
345
+ record("publish.yml", "prepack", patchPublishWorkflow(root, options.name));
346
+ // 5. Dockerfiles
347
+ record("Dockerfile.smoke", "lexicon list", patchDockerfile(join(root, "test/Dockerfile.smoke"), options.name));
348
+ record("Dockerfile.smoke-npm", "lexicon list", patchDockerfile(join(root, "test/Dockerfile.smoke-npm"), options.name));
349
+ // 6. Smoke image lexicon lists (#3227). The npm smoke packs every lexicon.
350
+ // The e2e list is opt-in: it names the lexicons an example uses plus
351
+ // their dependencies, so onboard leaves it alone and says so.
352
+ record("smoke-npm-lexicons.txt", "lexicon list", patchLexiconList(join(root, "test/smoke-npm-lexicons.txt"), options.name));
353
+ if (existsSync(join(root, "test/smoke-e2e-lexicons.txt"))) {
354
+ skipped.push(`smoke-e2e-lexicons.txt: not patched; it lists only lexicons an e2e example uses (and their dependencies). Add ${options.name} to test/smoke-e2e-lexicons.txt when an example needs it`);
355
+ }
356
+ return { success: true, patched, skipped, verbose: options.verbose };
357
+ }
358
+ /**
359
+ * Print onboard results and remaining manual steps.
360
+ */
361
+ export async function printOnboardResult(result, name) {
362
+ if (!result.success) {
363
+ console.error(formatError({ message: result.error ?? "onboard failed" }));
364
+ return;
365
+ }
366
+ if (result.patched.length > 0) {
367
+ console.log(formatSuccess("Patched:"));
368
+ for (const f of result.patched) {
369
+ console.log(` ${f}`);
370
+ }
371
+ }
372
+ if (result.skipped.length > 0) {
373
+ console.log("");
374
+ console.log("Not patched (already covered, or nothing to patch):");
375
+ for (const s of result.skipped) {
376
+ console.log(` ${s}`);
377
+ }
378
+ }
379
+ console.log("");
380
+ console.log("Remaining manual steps:");
381
+ console.log(` 1. Create an example: lexicons/${name}/examples/<example-name>/`);
382
+ console.log(` (must depend on @intentius/chant-lexicon-${name} for workspace resolution)`);
383
+ console.log(` 2. Add smoke tests to test/integration.sh`);
384
+ console.log(` 3. Run: npm install (to update workspace links)`);
385
+ console.log(` 4. First release: just release-lexicon ${name} patch`);
386
+ console.log(` 5. Run: chant dev check-lexicon lexicons/${name} (to see completeness status)`);
387
+ console.log(formatWarning({
388
+ message: "First-time scoped packages may publish as private despite --access public",
389
+ }));
390
+ console.log(` Check https://www.npmjs.com/org/intentius and toggle visibility if needed`);
391
+ // Under --verbose, run check-lexicon now instead of leaving step 5 to the
392
+ // author, printing the full tier 1/2/3 detail rather than just the summary above.
393
+ if (result.verbose) {
394
+ const lexiconDir = join(findRepoRoot(), "lexicons", name);
395
+ if (existsSync(lexiconDir)) {
396
+ console.log("");
397
+ console.log("Lexicon completeness:");
398
+ const { checkLexicon, printCheckResult } = await import("./check-lexicon.js");
399
+ const checkResult = await checkLexicon(lexiconDir);
400
+ printCheckResult(checkResult, false);
401
+ }
402
+ }
403
+ }
@@ -0,0 +1,191 @@
1
+ /**
2
+ * `chant dev pinned-upgrade <lexicon-dir>` command implementation.
3
+ *
4
+ * Detects whether a lexicon that declares `upstreamPin` has a
5
+ * newer stable upstream release. When it does, it dry-run bumps the pinned
6
+ * version constant, regenerates + surface-diffs (via #524's regenLexicon), then
7
+ * reverts the bump — leaving the working tree unchanged.
8
+ *
9
+ * This command only REPORTS. Branch/PR automation lives in #527.
10
+ */
11
+ import { existsSync } from "fs";
12
+ import { resolve } from "path";
13
+ import { checkPinnedUpgrades, lexiconNameOf, } from "../../codegen/pinned-upgrade.js";
14
+ /**
15
+ * Infer the lexicon id from a directory: its package name
16
+ * (`@intentius/chant-lexicon-<name>`), else the directory name. Whether the
17
+ * lexicon is pinned is the plugin's `upstreamPin`, checked by
18
+ * `checkPinnedUpgrade`, not a list here.
19
+ */
20
+ export function inferLexicon(lexiconDir) {
21
+ return lexiconNameOf(lexiconDir);
22
+ }
23
+ /**
24
+ * Map a regen severity to a semver review label.
25
+ * additive → "minor"; breaking → "major"; none → "none".
26
+ */
27
+ export function semverLabel(result) {
28
+ const sev = result.validation?.severity;
29
+ if (sev === "breaking")
30
+ return "major";
31
+ if (sev === "additive")
32
+ return "minor";
33
+ return "none";
34
+ }
35
+ /**
36
+ * Run the pinned-upgrade check and return the structured result.
37
+ * Never throws — a missing dir or a lexicon with no `upstreamPin` becomes a fetchError.
38
+ */
39
+ export async function runPinnedUpgrade(opts) {
40
+ return (await runPinnedUpgrades(opts))[0];
41
+ }
42
+ /**
43
+ * Run the check for every pin the plugin declares (or the one in `opts.pin`),
44
+ * one result each. A lexicon with one pin gives one result.
45
+ */
46
+ export async function runPinnedUpgrades(opts) {
47
+ const dir = resolve(opts.lexiconDir);
48
+ const lexicon = opts.lexicon ?? inferLexicon(dir);
49
+ if (!existsSync(dir)) {
50
+ return [
51
+ {
52
+ lexicon,
53
+ hasUpgrade: false,
54
+ from: "(unknown)",
55
+ to: null,
56
+ validation: null,
57
+ fetchError: `Lexicon directory not found: ${dir}`,
58
+ },
59
+ ];
60
+ }
61
+ return checkPinnedUpgrades({
62
+ lexiconDir: dir,
63
+ lexicon,
64
+ pin: opts.pin,
65
+ force: opts.force,
66
+ verbose: opts.verbose,
67
+ });
68
+ }
69
+ // ── Human-readable output ─────────────────────────────────────────────
70
+ const COLORS = {
71
+ green: "\x1b[32m",
72
+ yellow: "\x1b[33m",
73
+ red: "\x1b[31m",
74
+ gray: "\x1b[90m",
75
+ bold: "\x1b[1m",
76
+ reset: "\x1b[0m",
77
+ };
78
+ function useColors() {
79
+ return !process.env.NO_COLOR && process.stdout.isTTY !== false;
80
+ }
81
+ function c(text, code) {
82
+ return useColors() ? `${code}${text}${COLORS.reset}` : text;
83
+ }
84
+ /**
85
+ * Print the pinned-upgrade result. `json` emits a machine-readable object.
86
+ */
87
+ export function printPinnedUpgradeResult(result, json) {
88
+ const label = semverLabel(result);
89
+ const name = result.pin ? `${result.lexicon}/${result.pin}` : result.lexicon;
90
+ if (json) {
91
+ console.log(JSON.stringify({
92
+ lexicon: result.lexicon,
93
+ ...(result.pin ? { pin: result.pin } : {}),
94
+ hasUpgrade: result.hasUpgrade,
95
+ from: result.from,
96
+ to: result.to,
97
+ semver: label,
98
+ severity: result.validation?.severity ?? "none",
99
+ changed: result.validation?.changed ?? false,
100
+ delta: result.validation?.delta ?? null,
101
+ validationOk: result.validation?.ok ?? null,
102
+ failures: result.validation?.failures ?? [],
103
+ fetchError: result.fetchError,
104
+ manualPin: result.manualPin ?? null,
105
+ }, null, 2));
106
+ return;
107
+ }
108
+ if (result.fetchError) {
109
+ console.log(c(`[${name}] error: ${result.fetchError}`, COLORS.red));
110
+ return;
111
+ }
112
+ if (!result.hasUpgrade) {
113
+ console.log(c(`[${name}] up to date`, COLORS.green) +
114
+ ` pinned=${result.from}` +
115
+ (result.to ? ` latest=${result.to}` : ""));
116
+ return;
117
+ }
118
+ if (result.manualPin) {
119
+ console.log(c(`[${name}] upgrade available`, COLORS.bold) + ` ${result.from} -> ${result.to}`);
120
+ console.log(` The pin in ${result.manualPin.file} cannot be rewritten generically, so nothing was edited or regenerated.`);
121
+ console.log(` ${result.manualPin.instructions}`);
122
+ return;
123
+ }
124
+ // Upgrade available
125
+ console.log(c(`[${name}] upgrade available`, COLORS.bold) +
126
+ ` ${result.from} -> ${result.to}`);
127
+ const v = result.validation;
128
+ if (v) {
129
+ // Surface delta
130
+ if (v.deltaText) {
131
+ console.log("");
132
+ console.log(v.deltaText);
133
+ }
134
+ else if (v.changed) {
135
+ console.log(" Surface changed (no baseline to diff against).");
136
+ }
137
+ else {
138
+ console.log(" No surface changes.");
139
+ }
140
+ // Failures
141
+ if (v.failures.length > 0) {
142
+ console.log("");
143
+ console.log(c(` ${v.failures.length} validation step(s) failed:`, COLORS.bold));
144
+ for (const f of v.failures) {
145
+ console.log(c(` FAIL [${f.step}]${f.exitCode !== undefined ? ` (exit ${f.exitCode})` : ""}`, COLORS.red));
146
+ if (f.output) {
147
+ const indented = f.output
148
+ .split("\n")
149
+ .map((l) => ` ${l}`)
150
+ .join("\n");
151
+ console.log(c(indented, COLORS.gray));
152
+ }
153
+ }
154
+ }
155
+ }
156
+ console.log("");
157
+ const labelColor = label === "major" ? COLORS.red : label === "minor" ? COLORS.yellow : COLORS.green;
158
+ const validationLabel = v
159
+ ? v.ok
160
+ ? c("ok", COLORS.green)
161
+ : c("FAILED", COLORS.red)
162
+ : c("skipped", COLORS.gray);
163
+ console.log(`Validation: ${validationLabel} Semver: ${c(label, labelColor)} ${result.from} -> ${result.to}`);
164
+ }
165
+ /**
166
+ * Print one result per pin. One result prints exactly as `printPinnedUpgradeResult`;
167
+ * several print in turn, and `json` emits an array of the same objects.
168
+ */
169
+ export function printPinnedUpgradeResults(results, json) {
170
+ if (results.length === 1) {
171
+ printPinnedUpgradeResult(results[0], json);
172
+ return;
173
+ }
174
+ if (json) {
175
+ // Each result prints as its own JSON object; collect them into one array.
176
+ const lines = [];
177
+ const log = console.log;
178
+ console.log = (...a) => void lines.push(a.join(" "));
179
+ try {
180
+ for (const r of results)
181
+ printPinnedUpgradeResult(r, true);
182
+ }
183
+ finally {
184
+ console.log = log;
185
+ }
186
+ console.log(`[${lines.join(",\n")}]`);
187
+ return;
188
+ }
189
+ for (const r of results)
190
+ printPinnedUpgradeResult(r, false);
191
+ }