@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,85 @@
1
+ /**
2
+ * Get the chant context for MCP
3
+ * Returns lexicon-specific instructions and patterns
4
+ */
5
+ export function getContext() {
6
+ return `# chant Development Context
7
+
8
+ chant is a lexicon-agnostic declarative specification system for infrastructure as code.
9
+
10
+ ## Key Concepts
11
+
12
+ ### Declarable
13
+ Base interface for all infrastructure entities. Every resource you create must implement \`Declarable\`.
14
+
15
+ ### Lexicon
16
+ Lexicons define target platforms (e.g. AWS). Each lexicon:
17
+ - Has a unique name and rule prefix
18
+ - Implements \`serialize(entities)\` to generate platform-specific output
19
+
20
+ ### AttrRef
21
+ Deferred references to entity attributes. Use these for cross-resource references:
22
+ \`\`\`typescript
23
+ const bucket = new Bucket({ name: "data" });
24
+ // bucket.arn is an AttrRef that resolves at build time
25
+ \`\`\`
26
+
27
+ ### Intrinsics
28
+ Lexicon-provided functions resolved at build time:
29
+ - \`Sub\` - String interpolation with references
30
+ - \`Ref\` - Reference to another resource
31
+ - \`Json\` - JSON serialization
32
+
33
+ ## CLI Commands
34
+
35
+ ### Build
36
+ \`\`\`bash
37
+ chant build ./infra/ # Build infrastructure
38
+ chant build ./infra/ -o out.json # Output to file
39
+ \`\`\`
40
+
41
+ ### Lint
42
+ \`\`\`bash
43
+ chant lint ./infra/ # Check for issues
44
+ \`\`\`
45
+
46
+ ### Import
47
+ \`\`\`bash
48
+ chant import template.json # Convert external template
49
+ chant import template.json -o ./src/ # Custom output dir
50
+ \`\`\`
51
+
52
+ ## Ops
53
+
54
+ An Op is a convergent verb. Each \`*.op.ts\` file declares one with named phases and activity steps; \`--on <lexicon>\` picks the runtime that hosts the run, and the built-in local runtime runs it in-process otherwise.
55
+
56
+ ### Op MCP Tools
57
+
58
+ | Tool | Description |
59
+ |---|---|
60
+ | \`op-list\` | List all discovered Ops with their current run state. |
61
+ | \`op-run\` | Run an Op and return its result. Requires \`name\`. |
62
+ | \`op-status\` | Get current run state (state, step records, times). Requires \`name\`. |
63
+ | \`op-approve\` | Record a gate's resolution and wake the runtime hosting the run. Requires \`name\` and \`gate\`. |
64
+ | \`op-report\` | Return a markdown report for the latest run. Requires \`name\`. |
65
+
66
+ All Op tools accept an optional \`runtime\` parameter: a lexicon name whose \`opRuntime\` hosts the run, or \`local\` (the default) for the built-in in-process runtime.
67
+
68
+ ### Op MCP Resources
69
+
70
+ | URI | Description |
71
+ |---|---|
72
+ | \`chant://ops\` | JSON array of all Op definitions (name, overview, phase count, labels, depends) |
73
+ | \`chant://ops/{name}/runs\` | Run ledger history for a named Op, newest first |
74
+ | \`chant://ops/{name}/runs/latest\` | Latest run state for a named Op |
75
+
76
+ Both run resources read the built-in local runtime, the one an MCP client can address without naming a lexicon.
77
+
78
+ ## Best Practices
79
+
80
+ 1. **Flat Declarations**: Keep declarations at module level, avoid deep nesting
81
+ 2. **Use AttrRefs**: Reference other resources via AttrRef, not string interpolation
82
+ 3. **Lexicon-specific Rules**: Each lexicon has lint rules (WAW001, etc.)
83
+ 4. **Type Safety**: Leverage TypeScript for infrastructure definitions
84
+ `;
85
+ }
@@ -0,0 +1,353 @@
1
+ import { createInterface } from "readline";
2
+ import { resolve } from "node:path";
3
+ import { buildTool, handleBuild } from "./tools/build.js";
4
+ import { lintTool, handleLint } from "./tools/lint.js";
5
+ import { importTool, handleImport } from "./tools/import.js";
6
+ import { explainTool, handleExplain } from "./tools/explain.js";
7
+ import { scaffoldTool, createScaffoldHandler } from "./tools/scaffold.js";
8
+ import { searchTool, createSearchHandler } from "./tools/search.js";
9
+ import { compositesTool, createCompositesHandler } from "./tools/composites.js";
10
+ import { findWorkspaceRoot } from "../../project-root.js";
11
+ import { createWorkspaceTools } from "./workspace-tools.js";
12
+ import { createSnapshotTool, createDiffTool } from "./lifecycle-tools.js";
13
+ import { setGateOrigin } from "../../lifecycle/gate-origin.js";
14
+ import { createOpListTool, createOpRunTool, createOpStatusTool, createOpApproveTool, createOpReportTool } from "./op-tools.js";
15
+ import { buildResourcesList, handleResourcesRead } from "./resource-handlers.js";
16
+ import { CHANT_VERSION } from "../version.js";
17
+ /**
18
+ * Protocol versions this server understands, newest first. `initialize` and
19
+ * `server/discover` both negotiate against this list rather than assuming
20
+ * the client's revision (#1194).
21
+ *
22
+ * Exported because `docs-parity.test.ts` reads it: `cli/mcp.mdx` states these
23
+ * revisions in prose, and stating them twice is how the page came to claim
24
+ * 2024-11-05 for two releases after this list moved past it (#2385).
25
+ *
26
+ * The 2025 revisions are here because Claude Code 2.1.274 asks for
27
+ * 2025-11-25 and rejects any answer outside 2025-11-25, 2025-06-18,
28
+ * 2025-03-26, 2024-11-05 and 2024-10-07. A 2025 client sends
29
+ * `protocolVersion`/`clientInfo` at the top level of `initialize`, which
30
+ * {@link parseMeta} already falls back to, so it needs no other branch.
31
+ */
32
+ export const SUPPORTED_PROTOCOL_VERSIONS = ["2026-07-28", "2025-11-25", "2025-06-18", "2025-03-26", "2024-11-05"];
33
+ const LATEST_PROTOCOL_VERSION = SUPPORTED_PROTOCOL_VERSIONS[0];
34
+ /**
35
+ * Pick the protocol version to answer with: the client's requested version
36
+ * when we support it, otherwise our latest. A 2024-11-05 or 2025 client that
37
+ * asks for its own version gets it back unchanged; a 2026-07-28 client, or one
38
+ * that never says, gets the latest revision (#1194).
39
+ */
40
+ export function negotiateProtocolVersion(requested) {
41
+ if (requested && SUPPORTED_PROTOCOL_VERSIONS.includes(requested)) {
42
+ return requested;
43
+ }
44
+ return LATEST_PROTOCOL_VERSION;
45
+ }
46
+ /**
47
+ * Parse the `_meta` envelope the 2026-07-28 revision puts on every request
48
+ * (client identity, requested protocol version), falling back to the
49
+ * top-level `protocolVersion`/`clientInfo` fields a prior-revision client
50
+ * sends on `initialize`. Read-side only — the server holds no handshake
51
+ * state to update (#1194).
52
+ */
53
+ export function parseMeta(params) {
54
+ const meta = (params._meta ?? {});
55
+ const protocolVersion = (typeof meta.protocolVersion === "string" ? meta.protocolVersion : undefined) ??
56
+ (typeof params.protocolVersion === "string" ? params.protocolVersion : undefined);
57
+ const clientInfo = meta["io.modelcontextprotocol/clientInfo"] ??
58
+ params.clientInfo;
59
+ return { protocolVersion, clientInfo };
60
+ }
61
+ /**
62
+ * The name a lexicon's MCP tool is registered under: `<lexicon>:<verb>`,
63
+ * whether or not the lexicon already wrote the prefix itself (#1341).
64
+ */
65
+ export function namespacedToolName(lexicon, name) {
66
+ const prefix = `${lexicon}:`;
67
+ return name.startsWith(prefix) ? name : `${prefix}${name}`;
68
+ }
69
+ /**
70
+ * The URI a lexicon's MCP resource is registered under: `chant://<lexicon>/<path>`.
71
+ *
72
+ * Three authored forms reach here (#1341). The bare path is the intended one.
73
+ * `createCatalogResource` emits `<lexicon>:resource-catalog`, and
74
+ * `lexicon-authoring/lsp-mcp.mdx` taught `chant://lexicon/<lexicon>/<path>` —
75
+ * which azure followed, and which produced the unusable
76
+ * `chant://azure/chant://lexicon/azure/catalog`.
77
+ */
78
+ export function namespacedResourceUri(lexicon, uri) {
79
+ const base = `chant://${lexicon}/`;
80
+ if (uri.startsWith(base))
81
+ return uri;
82
+ for (const authored of [`chant://lexicon/${lexicon}/`, `${lexicon}:`]) {
83
+ if (uri.startsWith(authored))
84
+ return `${base}${uri.slice(authored.length)}`;
85
+ }
86
+ return `${base}${uri}`;
87
+ }
88
+ /**
89
+ * MCP Server implementation
90
+ */
91
+ export class McpServer {
92
+ /**
93
+ * `options.instructions` is sent as the `initialize` result's
94
+ * `instructions`, the text a client may give its model about this server.
95
+ * Only a workspace root with no lexicon of its own sets it (#2700), to say
96
+ * which members' lexicons were loaded.
97
+ *
98
+ * `options.workspace` names the directory the server serves (#2707). When
99
+ * it is at or inside a declared workspace, the workspace read-contract and
100
+ * record-write tools are served too.
101
+ */
102
+ constructor(plugins, options = {}) {
103
+ this.tools = new Map();
104
+ this.toolHandlers = new Map();
105
+ this.pluginResources = new Map();
106
+ this.plugins = plugins ?? [];
107
+ this.instructions = options.instructions;
108
+ // Register core tools
109
+ this.registerTool(buildTool, handleBuild);
110
+ this.registerTool(lintTool, handleLint);
111
+ this.registerTool(importTool, handleImport);
112
+ this.registerTool(explainTool, handleExplain);
113
+ this.registerTool(scaffoldTool, createScaffoldHandler(plugins ?? []));
114
+ this.registerTool(searchTool, createSearchHandler(plugins ?? []));
115
+ this.registerTool(compositesTool, createCompositesHandler(plugins ?? []));
116
+ // Register state tools
117
+ const snapshot = createSnapshotTool(plugins ?? []);
118
+ this.registerTool(snapshot.definition, snapshot.handler);
119
+ const diff = createDiffTool(plugins ?? []);
120
+ this.registerTool(diff.definition, diff.handler);
121
+ // Register Op tools
122
+ for (const factory of [createOpListTool, createOpRunTool, createOpStatusTool, createOpApproveTool, createOpReportTool]) {
123
+ const t = factory();
124
+ this.registerTool(t.definition, t.handler);
125
+ }
126
+ // Workspace reads and record writes (#2707), inside a declared workspace only.
127
+ if (options.workspace && findWorkspaceRoot(options.workspace.cwd)) {
128
+ for (const t of createWorkspaceTools(options.workspace))
129
+ this.registerTool(t.definition, t.handler);
130
+ }
131
+ // Register plugin contributions
132
+ if (plugins) {
133
+ for (const plugin of plugins) {
134
+ this.registerPluginTools(plugin);
135
+ this.registerPluginResources(plugin);
136
+ }
137
+ }
138
+ }
139
+ /**
140
+ * Register tools contributed by a plugin, namespaced as `lexicon:toolName`.
141
+ *
142
+ * Namespacing is idempotent (#1341). Core is not the only place that applies
143
+ * a prefix: `createDiffTool` in ../../lexicon-plugin-helpers.ts already emits
144
+ * `${lexiconName}:diff`, and eleven lexicons write the prefix into the name by
145
+ * hand. Applying it unconditionally produced `gitlab:gitlab:diff` and
146
+ * `aws:aws:diff` in every `chant serve mcp` session, while every doc named the
147
+ * single-prefixed form. A tool declared either way now registers under exactly
148
+ * one namespace.
149
+ */
150
+ registerPluginTools(plugin) {
151
+ const tools = plugin.mcpTools?.() ?? [];
152
+ for (const tool of tools) {
153
+ this.registerTool({
154
+ name: namespacedToolName(plugin.name, tool.name),
155
+ description: tool.description,
156
+ inputSchema: tool.inputSchema,
157
+ }, tool.handler);
158
+ }
159
+ }
160
+ /**
161
+ * Register resources contributed by a plugin, namespaced as
162
+ * `chant://lexicon/uri`, idempotently — see {@link registerPluginTools}.
163
+ */
164
+ registerPluginResources(plugin) {
165
+ const resources = plugin.mcpResources?.() ?? [];
166
+ for (const resource of resources) {
167
+ const namespacedUri = namespacedResourceUri(plugin.name, resource.uri);
168
+ this.pluginResources.set(namespacedUri, {
169
+ definition: {
170
+ uri: namespacedUri,
171
+ name: resource.name,
172
+ description: resource.description,
173
+ mimeType: resource.mimeType,
174
+ },
175
+ handler: resource.handler,
176
+ });
177
+ }
178
+ }
179
+ /**
180
+ * Register a tool with its handler
181
+ */
182
+ registerTool(definition, handler) {
183
+ this.tools.set(definition.name, definition);
184
+ this.toolHandlers.set(definition.name, handler);
185
+ }
186
+ async handleRequest(request) {
187
+ if (request.id === undefined) {
188
+ return null;
189
+ }
190
+ try {
191
+ const result = await this.dispatch(request.method, request.params ?? {});
192
+ return {
193
+ jsonrpc: "2.0",
194
+ id: request.id,
195
+ result,
196
+ };
197
+ }
198
+ catch (error) {
199
+ return {
200
+ jsonrpc: "2.0",
201
+ id: request.id,
202
+ error: {
203
+ code: -32603,
204
+ message: error instanceof Error ? error.message : String(error),
205
+ },
206
+ };
207
+ }
208
+ }
209
+ /**
210
+ * The `initialize` result — also the basis of `server/discover` below.
211
+ */
212
+ buildInitializeResult(params) {
213
+ const { protocolVersion } = parseMeta(params);
214
+ return {
215
+ protocolVersion: negotiateProtocolVersion(protocolVersion),
216
+ capabilities: { tools: {}, resources: {} },
217
+ // The installed chant's version, so a client can tell which chant it talks to (#2689).
218
+ serverInfo: { name: "chant", version: CHANT_VERSION },
219
+ ...(this.instructions ? { instructions: this.instructions } : {}),
220
+ };
221
+ }
222
+ /**
223
+ * Dispatch request to appropriate handler
224
+ */
225
+ async dispatch(method, params) {
226
+ switch (method) {
227
+ case "initialize":
228
+ // Kept for a write's source block (#2707): a prior-revision client names itself only here.
229
+ this.clientInfo = parseMeta(params).clientInfo ?? this.clientInfo;
230
+ // Answered for prior-revision clients too — negotiated, not hard-coded (#1194).
231
+ return this.buildInitializeResult(params);
232
+ case "server/discover":
233
+ // On-demand capability discovery (#1194): the initialize result
234
+ // merged with the tools/resources listings, so a 2026-07-28 client
235
+ // never has to call `initialize` at all.
236
+ return {
237
+ ...this.buildInitializeResult(params),
238
+ tools: Array.from(this.tools.values()),
239
+ resources: buildResourcesList(this.pluginResources).resources,
240
+ };
241
+ case "tools/list":
242
+ return { tools: Array.from(this.tools.values()) };
243
+ case "tools/call":
244
+ return this.handleToolsCall(params);
245
+ case "resources/list":
246
+ return buildResourcesList(this.pluginResources);
247
+ case "resources/read":
248
+ return handleResourcesRead(params, this.pluginResources, this.plugins);
249
+ default:
250
+ throw new Error(`Unknown method: ${method}`);
251
+ }
252
+ }
253
+ /**
254
+ * Handle tools/call request
255
+ */
256
+ async handleToolsCall(params) {
257
+ const name = params.name;
258
+ const toolParams = (params.arguments ?? {});
259
+ const handler = this.toolHandlers.get(name);
260
+ if (!handler) {
261
+ return {
262
+ content: [{ type: "text", text: `Error: Unknown tool: ${name}` }],
263
+ isError: true,
264
+ };
265
+ }
266
+ try {
267
+ // The client, from this request's _meta (2026-07-28) or else from initialize.
268
+ const clientInfo = parseMeta(params).clientInfo ?? this.clientInfo;
269
+ const result = await handler(toolParams, clientInfo ? { clientInfo } : {});
270
+ const isStructured = typeof result === "object" && result !== null;
271
+ return {
272
+ content: [
273
+ {
274
+ type: "text",
275
+ text: typeof result === "string" ? result : JSON.stringify(result, null, 2),
276
+ },
277
+ ],
278
+ // Structured output (2025-06-18+): handlers already return plain
279
+ // objects that get stringified above, so agents that want the
280
+ // parsed shape directly get it here too, alongside the text block
281
+ // kept for backward compatibility (#1194).
282
+ ...(isStructured ? { structuredContent: result } : {}),
283
+ };
284
+ }
285
+ catch (error) {
286
+ return {
287
+ content: [
288
+ {
289
+ type: "text",
290
+ text: `Error: ${error instanceof Error ? error.message : String(error)}`,
291
+ },
292
+ ],
293
+ isError: true,
294
+ };
295
+ }
296
+ }
297
+ /**
298
+ * Start the MCP server on stdio
299
+ */
300
+ async start() {
301
+ // chant#2384 — declared here rather than in the constructor, because this
302
+ // is where the PROCESS becomes an MCP server. Constructing the object does
303
+ // not change what the process is, and a test that builds one should not
304
+ // silently make every later gate fact in that worker read as model-authored.
305
+ //
306
+ // From here on a person's only act was launching this; every call is the
307
+ // model's. So every gate fact written records the channel it came through,
308
+ // and a gate reached here cannot also be resolved here.
309
+ setGateOrigin("mcp");
310
+ const rl = createInterface({
311
+ input: process.stdin,
312
+ output: process.stdout,
313
+ terminal: false,
314
+ });
315
+ rl.on("line", async (line) => {
316
+ try {
317
+ const request = JSON.parse(line);
318
+ const response = await this.handleRequest(request);
319
+ // Notifications (#1194) get no response at all — not even an empty one.
320
+ if (response !== null) {
321
+ console.log(JSON.stringify(response));
322
+ }
323
+ }
324
+ catch (error) {
325
+ const errorResponse = {
326
+ jsonrpc: "2.0",
327
+ id: 0,
328
+ error: {
329
+ code: -32700,
330
+ message: "Parse error",
331
+ },
332
+ };
333
+ console.log(JSON.stringify(errorResponse));
334
+ }
335
+ });
336
+ }
337
+ }
338
+ /**
339
+ * Start MCP server, loading plugins from the project
340
+ */
341
+ export async function startMcpServer() {
342
+ let plugins = [];
343
+ try {
344
+ const { resolveProjectLexicons, loadPlugins } = await import("../plugins.js");
345
+ const lexiconNames = await resolveProjectLexicons(resolve("."));
346
+ plugins = await loadPlugins(lexiconNames);
347
+ }
348
+ catch {
349
+ // Start without plugins if resolution fails
350
+ }
351
+ const server = new McpServer(plugins, { workspace: { cwd: process.cwd() } });
352
+ server.start();
353
+ }
@@ -0,0 +1,111 @@
1
+ import { build } from "../../../build.js";
2
+ import { resolve } from "path";
3
+ // Default lexicon serializer for MCP builds (fallback when no lexicon is detected)
4
+ const defaultLexicon = {
5
+ name: "default",
6
+ rulePrefix: "DF",
7
+ serialize(entities) {
8
+ const output = {};
9
+ for (const [name, entity] of entities) {
10
+ output[name] = entity;
11
+ }
12
+ return JSON.stringify(output, null, 2);
13
+ },
14
+ };
15
+ /**
16
+ * Build tool definition for MCP
17
+ */
18
+ export const buildTool = {
19
+ name: "build",
20
+ description: "Build chant infrastructure code and generate output for the target lexicon",
21
+ inputSchema: {
22
+ type: "object",
23
+ properties: {
24
+ path: {
25
+ type: "string",
26
+ description: "Path to the infrastructure directory or file to build",
27
+ },
28
+ output: {
29
+ type: "string",
30
+ description: "Output file path (optional, returns in response if not specified)",
31
+ },
32
+ format: {
33
+ type: "string",
34
+ enum: ["json", "yaml"],
35
+ description: "Output format (default: json)",
36
+ },
37
+ },
38
+ required: ["path"],
39
+ },
40
+ };
41
+ /**
42
+ * Handle build tool invocation
43
+ */
44
+ export async function handleBuild(params) {
45
+ const path = params.path;
46
+ const format = params.format ?? "json";
47
+ const infraPath = resolve(path);
48
+ const result = await build(infraPath, [defaultLexicon]);
49
+ if (result.errors.length > 0) {
50
+ throw new Error(result.errors.map((e) => e.message).join("; "));
51
+ }
52
+ // Combine all lexicon outputs
53
+ const combined = {};
54
+ for (const [lexiconName, lexiconOutput] of result.outputs) {
55
+ const raw = lexiconOutput;
56
+ combined[lexiconName] = JSON.parse(typeof raw === "string" ? raw : raw.primary);
57
+ }
58
+ let output = JSON.stringify(combined, null, 2);
59
+ if (format === "yaml") {
60
+ // Basic YAML conversion
61
+ output = jsonToYaml(JSON.parse(output));
62
+ }
63
+ return {
64
+ success: true,
65
+ resourceCount: result.entities.size,
66
+ output,
67
+ format,
68
+ };
69
+ }
70
+ /**
71
+ * Simple JSON to YAML converter
72
+ */
73
+ function jsonToYaml(obj, indent = 0) {
74
+ const spaces = " ".repeat(indent);
75
+ if (obj === null)
76
+ return "null";
77
+ if (obj === undefined)
78
+ return "~";
79
+ if (typeof obj === "boolean")
80
+ return obj ? "true" : "false";
81
+ if (typeof obj === "number")
82
+ return String(obj);
83
+ if (typeof obj === "string") {
84
+ if (obj.includes("\n") || obj.includes(":") || obj.includes("#")) {
85
+ return `"${obj.replace(/"/g, '\\"')}"`;
86
+ }
87
+ return obj;
88
+ }
89
+ if (Array.isArray(obj)) {
90
+ if (obj.length === 0)
91
+ return "[]";
92
+ return obj
93
+ .map((item) => `${spaces}- ${jsonToYaml(item, indent + 1).trimStart()}`)
94
+ .join("\n");
95
+ }
96
+ if (typeof obj === "object") {
97
+ const entries = Object.entries(obj);
98
+ if (entries.length === 0)
99
+ return "{}";
100
+ return entries
101
+ .map(([key, value]) => {
102
+ const yamlValue = jsonToYaml(value, indent + 1);
103
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) {
104
+ return `${spaces}${key}:\n${yamlValue}`;
105
+ }
106
+ return `${spaces}${key}: ${yamlValue.trimStart()}`;
107
+ })
108
+ .join("\n");
109
+ }
110
+ return String(obj);
111
+ }
@@ -0,0 +1,95 @@
1
+ /**
2
+ * The `composites` tool (#2662): what composites the loaded lexicons export,
3
+ * what each one bundles and what it takes. "What composites do you have for
4
+ * aws?" is `{ lexicon: "aws" }`.
5
+ *
6
+ * Everything here reads `LexiconPlugin.composites()`, which is static catalog
7
+ * data. No composite is loaded or called and no provider is asked anything.
8
+ */
9
+ export const compositesTool = {
10
+ name: "composites",
11
+ description: "List the composites the loaded lexicons export: what each builds, the resource kinds it bundles, and its parameters",
12
+ inputSchema: {
13
+ type: "object",
14
+ properties: {
15
+ lexicon: {
16
+ type: "string",
17
+ description: "Only composites from this lexicon (e.g. 'aws', 'k8s')",
18
+ },
19
+ query: {
20
+ type: "string",
21
+ description: "Keyword matched against the composite's name, description, bundled resource kinds and parameter names",
22
+ },
23
+ limit: {
24
+ type: "number",
25
+ description: "Maximum number of composites to return (default: 50)",
26
+ },
27
+ },
28
+ },
29
+ };
30
+ /**
31
+ * Every composite the plugins contribute, in plugin order. A plugin whose
32
+ * `composites()` throws contributes nothing rather than failing the listing.
33
+ */
34
+ export function collectComposites(plugins) {
35
+ const entries = [];
36
+ for (const plugin of plugins) {
37
+ let contributed = [];
38
+ try {
39
+ contributed = plugin.composites?.() ?? [];
40
+ }
41
+ catch {
42
+ contributed = [];
43
+ }
44
+ for (const entry of contributed)
45
+ entries.push({ ...entry, lexicon: entry.lexicon || plugin.name });
46
+ }
47
+ return entries;
48
+ }
49
+ /**
50
+ * How well an entry matches a lowercased keyword: 0 for no match, higher for
51
+ * better. A name match beats a bundled kind, which beats a word in the
52
+ * description or a parameter name, so `queue` lists `LambdaSqs` ahead of a
53
+ * composite that merely mentions queues.
54
+ */
55
+ export function compositeMatchScore(entry, lowerQuery) {
56
+ const name = entry.name.toLowerCase();
57
+ if (name.startsWith(lowerQuery))
58
+ return 4;
59
+ if (name.includes(lowerQuery))
60
+ return 3;
61
+ if (entry.bundles.some((b) => b.toLowerCase().includes(lowerQuery)))
62
+ return 2;
63
+ if (entry.description.toLowerCase().includes(lowerQuery))
64
+ return 1;
65
+ if (entry.params.some((p) => p.name.toLowerCase().includes(lowerQuery)))
66
+ return 1;
67
+ return 0;
68
+ }
69
+ export function createCompositesHandler(plugins) {
70
+ return async (params) => {
71
+ const lexicon = typeof params.lexicon === "string" && params.lexicon !== "" ? params.lexicon : undefined;
72
+ const query = typeof params.query === "string" && params.query !== "" ? params.query : undefined;
73
+ const limit = typeof params.limit === "number" ? params.limit : 50;
74
+ let entries = collectComposites(plugins);
75
+ if (lexicon)
76
+ entries = entries.filter((e) => e.lexicon === lexicon);
77
+ if (query) {
78
+ const lowerQuery = query.toLowerCase();
79
+ entries = entries
80
+ .map((entry) => ({ entry, score: compositeMatchScore(entry, lowerQuery) }))
81
+ .filter(({ score }) => score > 0)
82
+ .sort((a, b) => b.score - a.score || a.entry.name.localeCompare(b.entry.name))
83
+ .map(({ entry }) => entry);
84
+ }
85
+ return {
86
+ ...(lexicon ? { lexicon } : {}),
87
+ ...(query ? { query } : {}),
88
+ // The loaded lexicons, so an empty answer for `lexicon: "cedar"` reads
89
+ // as "cedar exports none" when cedar is listed, and "not loaded" when not.
90
+ lexicons: plugins.map((p) => p.name),
91
+ total: entries.length,
92
+ composites: entries.slice(0, limit),
93
+ };
94
+ };
95
+ }