@intentius/chant 0.124.13 → 0.124.15
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.
- package/bin/chant +11 -0
- package/dist/agents/checks.js +326 -0
- package/dist/agents/discover.js +885 -0
- package/dist/agents/importer.js +17 -0
- package/dist/agents/index.js +12 -0
- package/dist/agents/types.js +19 -0
- package/dist/apply.js +151 -0
- package/dist/attrref.js +70 -0
- package/dist/audit/catalog.js +350 -0
- package/dist/audit/core.js +252 -0
- package/dist/audit/discover.js +633 -0
- package/dist/audit/fetch.js +666 -0
- package/dist/audit/lineage.js +91 -0
- package/dist/audit/nginx.js +366 -0
- package/dist/audit/prior-art.js +132 -0
- package/dist/audit/proof.js +321 -0
- package/dist/audit/report-html.js +194 -0
- package/dist/audit/report-model.js +198 -0
- package/dist/audit/report.js +102 -0
- package/dist/audit/rules-doc.js +144 -0
- package/dist/audit/secrets.js +405 -0
- package/dist/audit/terraform-state.js +140 -0
- package/dist/audit/wrangler.js +262 -0
- package/dist/behaviour-delta.js +401 -0
- package/dist/behaviour-engine.js +357 -0
- package/dist/behaviour-graph.js +83 -0
- package/dist/behaviour-http.js +188 -0
- package/dist/behaviour-kinds.js +172 -0
- package/dist/behaviour-overlay.js +50 -0
- package/dist/behaviour-predict.js +188 -0
- package/dist/behaviour-request.js +194 -0
- package/dist/behaviour.js +1325 -0
- package/dist/build-params.js +108 -0
- package/dist/build.d.ts +6 -0
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +669 -0
- package/dist/builder.js +44 -0
- package/dist/cdk/advise.js +30 -0
- package/dist/cdk/assembly.js +122 -0
- package/dist/cdk/graph.js +444 -0
- package/dist/cdk/tier-map.js +64 -0
- package/dist/cdk/types.js +24 -0
- package/dist/change-set.d.ts +24 -2
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +361 -0
- package/dist/child-project.js +21 -0
- package/dist/ci-jobs.d.ts +227 -0
- package/dist/ci-jobs.d.ts.map +1 -0
- package/dist/ci-jobs.js +448 -0
- package/dist/claimed-fields.js +135 -0
- package/dist/cli/build-options.js +70 -0
- package/dist/cli/build-params-cli.js +139 -0
- package/dist/cli/command-group.js +123 -0
- package/dist/cli/commands/audit-agents.js +326 -0
- package/dist/cli/commands/audit.js +571 -0
- package/dist/cli/commands/build.js +920 -0
- package/dist/cli/commands/carve-apply.js +153 -0
- package/dist/cli/commands/carve-bridge.js +201 -0
- package/dist/cli/commands/carve-emit.js +332 -0
- package/dist/cli/commands/carve-status.js +119 -0
- package/dist/cli/commands/carve.js +204 -0
- package/dist/cli/commands/check-lexicon-docs.js +79 -0
- package/dist/cli/commands/check-lexicon-examples.js +177 -0
- package/dist/cli/commands/check-lexicon-intrinsics.js +291 -0
- package/dist/cli/commands/check-lexicon-mcp.js +82 -0
- package/dist/cli/commands/check-lexicon-plugin.d.ts.map +1 -1
- package/dist/cli/commands/check-lexicon-plugin.js +104 -0
- package/dist/cli/commands/check-lexicon.js +766 -0
- package/dist/cli/commands/describe.js +85 -0
- package/dist/cli/commands/diff.js +175 -0
- package/dist/cli/commands/doctor.js +350 -0
- package/dist/cli/commands/import-agents.js +155 -0
- package/dist/cli/commands/import.js +670 -0
- package/dist/cli/commands/init-lexicon/templates/codegen.js +194 -0
- package/dist/cli/commands/init-lexicon/templates/docs.js +100 -0
- package/dist/cli/commands/init-lexicon/templates/examples.js +29 -0
- package/dist/cli/commands/init-lexicon/templates/lint.js +34 -0
- package/dist/cli/commands/init-lexicon/templates/lsp.js +37 -0
- package/dist/cli/commands/init-lexicon/templates/plugin.js +108 -0
- package/dist/cli/commands/init-lexicon/templates/project.js +240 -0
- package/dist/cli/commands/init-lexicon/templates/spec.js +56 -0
- package/dist/cli/commands/init-lexicon/templates/tests.js +66 -0
- package/dist/cli/commands/init-lexicon.js +172 -0
- package/dist/cli/commands/init.js +381 -0
- package/dist/cli/commands/lexicon-rolling-upgrade.js +145 -0
- package/dist/cli/commands/lexicon-surface-diff.js +145 -0
- package/dist/cli/commands/licenses.js +125 -0
- package/dist/cli/commands/lint.d.ts.map +1 -1
- package/dist/cli/commands/lint.js +948 -0
- package/dist/cli/commands/list.js +63 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -1
- package/dist/cli/commands/migrate.js +423 -0
- package/dist/cli/commands/onboard.js +403 -0
- package/dist/cli/commands/pinned-upgrade.js +191 -0
- package/dist/cli/commands/update.js +194 -0
- package/dist/cli/commands/vendor.js +217 -0
- package/dist/cli/conflict-check.js +104 -0
- package/dist/cli/debug.js +8 -0
- package/dist/cli/format.js +104 -0
- package/dist/cli/handlers/build.js +267 -0
- package/dist/cli/handlers/carve-apply.js +30 -0
- package/dist/cli/handlers/carve-bridge.js +28 -0
- package/dist/cli/handlers/carve-emit.js +50 -0
- package/dist/cli/handlers/carve-status.js +26 -0
- package/dist/cli/handlers/carve.js +40 -0
- package/dist/cli/handlers/change-set.js +46 -0
- package/dist/cli/handlers/components.js +730 -0
- package/dist/cli/handlers/dev.js +113 -0
- package/dist/cli/handlers/emulator.js +233 -0
- package/dist/cli/handlers/explain.js +54 -0
- package/dist/cli/handlers/fan-out.js +422 -0
- package/dist/cli/handlers/gate-resume.js +275 -0
- package/dist/cli/handlers/generate.js +84 -0
- package/dist/cli/handlers/graph.js +969 -0
- package/dist/cli/handlers/init.js +102 -0
- package/dist/cli/handlers/lifecycle.js +1727 -0
- package/dist/cli/handlers/lint.js +62 -0
- package/dist/cli/handlers/migrate.js +48 -0
- package/dist/cli/handlers/misc.js +391 -0
- package/dist/cli/handlers/operator.js +1162 -0
- package/dist/cli/handlers/override-approve.js +102 -0
- package/dist/cli/handlers/pr.js +503 -0
- package/dist/cli/handlers/promote.js +342 -0
- package/dist/cli/handlers/run-generate.js +206 -0
- package/dist/cli/handlers/run-wave.js +66 -0
- package/dist/cli/handlers/run.js +1191 -0
- package/dist/cli/handlers/scenario.js +325 -0
- package/dist/cli/handlers/search.js +924 -0
- package/dist/cli/handlers/serve.js +32 -0
- package/dist/cli/handlers/vendor.js +154 -0
- package/dist/cli/index.js +3 -0
- package/dist/cli/is-entry-point.js +23 -0
- package/dist/cli/lsp/capabilities.js +28 -0
- package/dist/cli/lsp/diagnostics.js +34 -0
- package/dist/cli/lsp/server.js +329 -0
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +2540 -0
- package/dist/cli/mcp/lifecycle-tools.js +80 -0
- package/dist/cli/mcp/op-tools.js +306 -0
- package/dist/cli/mcp/resource-handlers.js +258 -0
- package/dist/cli/mcp/resources/context.js +85 -0
- package/dist/cli/mcp/server.js +353 -0
- package/dist/cli/mcp/tools/build.js +111 -0
- package/dist/cli/mcp/tools/composites.js +95 -0
- package/dist/cli/mcp/tools/explain.js +166 -0
- package/dist/cli/mcp/tools/import.js +49 -0
- package/dist/cli/mcp/tools/lint.js +41 -0
- package/dist/cli/mcp/tools/scaffold.js +111 -0
- package/dist/cli/mcp/tools/search.js +112 -0
- package/dist/cli/mcp/types.js +1 -0
- package/dist/cli/mcp/workspace-plugins.js +91 -0
- package/dist/cli/mcp/workspace-tools.d.ts +1 -1
- package/dist/cli/mcp/workspace-tools.js +564 -0
- package/dist/cli/mcp-config.js +70 -0
- package/dist/cli/plugins.js +313 -0
- package/dist/cli/registry.js +23 -0
- package/dist/cli/reporters/stylish.js +329 -0
- package/dist/cli/version.js +15 -0
- package/dist/cli/watch.js +79 -0
- package/dist/codegen/bound-property-types.js +82 -0
- package/dist/codegen/coverage.js +119 -0
- package/dist/codegen/docs-file-markers.js +60 -0
- package/dist/codegen/docs-pages.js +115 -0
- package/dist/codegen/docs-rule-scanning.js +164 -0
- package/dist/codegen/docs-rules.js +76 -0
- package/dist/codegen/docs-sections.js +117 -0
- package/dist/codegen/docs-sidebar.js +65 -0
- package/dist/codegen/docs-types.js +4 -0
- package/dist/codegen/docs.js +356 -0
- package/dist/codegen/fetch.js +340 -0
- package/dist/codegen/generate-post-synth-barrel.js +63 -0
- package/dist/codegen/generate-registry.js +71 -0
- package/dist/codegen/generate-runtime-index.js +56 -0
- package/dist/codegen/generate-typescript.js +119 -0
- package/dist/codegen/generate.js +115 -0
- package/dist/codegen/json-patch.js +141 -0
- package/dist/codegen/json-schema-to-ts.js +344 -0
- package/dist/codegen/json-schema.js +246 -0
- package/dist/codegen/lexicon-regen.js +412 -0
- package/dist/codegen/naming.js +217 -0
- package/dist/codegen/okf-lexicon.js +245 -0
- package/dist/codegen/package.js +150 -0
- package/dist/codegen/pinned-upgrade.d.ts.map +1 -1
- package/dist/codegen/pinned-upgrade.js +494 -0
- package/dist/codegen/registry.js +60 -0
- package/dist/codegen/rehype-base-url.mjs +68 -0
- package/dist/codegen/rolling-upgrade.js +217 -0
- package/dist/codegen/surface-snapshot.js +537 -0
- package/dist/codegen/testdata/postgres-tags.json +242 -0
- package/dist/codegen/topo-sort.js +36 -0
- package/dist/codegen/typecheck.js +115 -0
- package/dist/codegen/validate.js +200 -0
- package/dist/codegen/version-bump.js +35 -0
- package/dist/components/auto-release.js +143 -0
- package/dist/components/builders.js +47 -0
- package/dist/components/capability-plugin-loader.js +175 -0
- package/dist/components/capability-plugin-schema.js +46 -0
- package/dist/components/capability-plugin.js +99 -0
- package/dist/components/capability.js +60 -0
- package/dist/components/changed-files.js +72 -0
- package/dist/components/cli-support.js +427 -0
- package/dist/components/component.js +120 -0
- package/dist/components/component.schema.json +271 -0
- package/dist/components/config-defaults.js +130 -0
- package/dist/components/deploy-units.js +60 -0
- package/dist/components/discover.d.ts.map +1 -1
- package/dist/components/discover.js +189 -0
- package/dist/components/driver-output.js +86 -0
- package/dist/components/driver.js +728 -0
- package/dist/components/fan-out-output.js +165 -0
- package/dist/components/fan-out-record.js +94 -0
- package/dist/components/fan-out-run.js +373 -0
- package/dist/components/fan-out-support.js +60 -0
- package/dist/components/fan-out.js +273 -0
- package/dist/components/gate-plan.js +41 -0
- package/dist/components/gated-wave-pipeline.js +46 -0
- package/dist/components/index.js +24 -0
- package/dist/components/layers.js +28 -0
- package/dist/components/manifest-persistence.js +108 -0
- package/dist/components/pilots/alb-ecs.pilot.js +59 -0
- package/dist/components/pilots/dynamodb.pilot.js +51 -0
- package/dist/components/pilots/jar-emr.pilot.js +65 -0
- package/dist/components/pilots/lambda.pilot.js +52 -0
- package/dist/components/pilots/neo4j-fanout.pilot.js +68 -0
- package/dist/components/pilots/project.js +12 -0
- package/dist/components/pr-pipeline.d.ts.map +1 -1
- package/dist/components/pr-pipeline.js +135 -0
- package/dist/components/pr-run.js +363 -0
- package/dist/components/presets/ecs-fargate.js +72 -0
- package/dist/components/presets/index.js +28 -0
- package/dist/components/presets/lambda.js +34 -0
- package/dist/components/presets/single-host-compose.js +41 -0
- package/dist/components/promote.js +549 -0
- package/dist/components/registry.js +34 -0
- package/dist/components/run-progress.js +33 -0
- package/dist/components/sandbox/driver.d.ts.map +1 -1
- package/dist/components/sandbox/driver.js +93 -0
- package/dist/components/sandbox/run.js +115 -0
- package/dist/components/starter-plugin.js +104 -0
- package/dist/components/verbs/__tests__/mock-cloud-executor.js +68 -0
- package/dist/components/verbs/__tests__/mock-process-runner.js +45 -0
- package/dist/components/verbs/__tests__/mock-sbom-generator.js +56 -0
- package/dist/components/verbs/bom-writer.js +287 -0
- package/dist/components/verbs/build-archive.js +188 -0
- package/dist/components/verbs/build.js +142 -0
- package/dist/components/verbs/cloud-executor.js +110 -0
- package/dist/components/verbs/component-bom.js +125 -0
- package/dist/components/verbs/ensure-secret.js +50 -0
- package/dist/components/verbs/index.js +61 -0
- package/dist/components/verbs/license-policy.js +75 -0
- package/dist/components/verbs/lockfile-sbom-generator.js +191 -0
- package/dist/components/verbs/process-runner.js +78 -0
- package/dist/components/verbs/r2-sync.js +93 -0
- package/dist/components/verbs/reproducibility.js +62 -0
- package/dist/components/verbs/run-agent.js +577 -0
- package/dist/components/verbs/sbom-generator.js +119 -0
- package/dist/components/verbs/sbom.js +97 -0
- package/dist/components/verbs/shell.js +32 -0
- package/dist/components/verbs/sign.js +221 -0
- package/dist/components/verbs/stub.js +28 -0
- package/dist/components/verbs/tool-sbom-generator.js +154 -0
- package/dist/components/verbs/verify.js +112 -0
- package/dist/components/verbs/vex.js +131 -0
- package/dist/components/verbs/vuln-gate.js +152 -0
- package/dist/components/verbs/vuln-scan.js +288 -0
- package/dist/components/verbs/wait-verify.js +106 -0
- package/dist/components/verbs/wrangler.js +179 -0
- package/dist/components/wave-plan.js +102 -0
- package/dist/composite.d.ts +10 -2
- package/dist/composite.d.ts.map +1 -1
- package/dist/composite.js +313 -0
- package/dist/config-import.d.ts.map +1 -1
- package/dist/config-import.js +22 -0
- package/dist/config-sandbox.js +122 -0
- package/dist/config-static.js +206 -0
- package/dist/config.js +605 -0
- package/dist/content-digest.js +23 -0
- package/dist/declarable.js +114 -0
- package/dist/deep-observation.js +437 -0
- package/dist/detectLexicon.js +54 -0
- package/dist/discovery/cache.js +70 -0
- package/dist/discovery/collect.d.ts +2 -1
- package/dist/discovery/collect.d.ts.map +1 -1
- package/dist/discovery/collect.js +223 -0
- package/dist/discovery/cycles.js +95 -0
- package/dist/discovery/entity-wire-codec.js +391 -0
- package/dist/discovery/entity-wire.js +42 -0
- package/dist/discovery/files.js +121 -0
- package/dist/discovery/fold-import.d.ts.map +1 -1
- package/dist/discovery/fold-import.js +4073 -0
- package/dist/discovery/fold-rank.js +292 -0
- package/dist/discovery/graph.js +115 -0
- package/dist/discovery/host-composite.d.ts +35 -0
- package/dist/discovery/host-composite.d.ts.map +1 -0
- package/dist/discovery/host-composite.js +93 -0
- package/dist/discovery/import.d.ts.map +1 -1
- package/dist/discovery/import.js +65 -0
- package/dist/discovery/index.d.ts +9 -0
- package/dist/discovery/index.d.ts.map +1 -1
- package/dist/discovery/index.js +333 -0
- package/dist/discovery/param-deps.js +487 -0
- package/dist/discovery/resolve.js +39 -0
- package/dist/discovery/sandbox/bundle.js +214 -0
- package/dist/discovery/sandbox/child-errors.js +26 -0
- package/dist/discovery/sandbox/config-run.js +100 -0
- package/dist/discovery/sandbox/config-wire.js +183 -0
- package/dist/discovery/sandbox/driver.d.ts.map +1 -1
- package/dist/discovery/sandbox/driver.js +333 -0
- package/dist/discovery/sandbox/fork.js +229 -0
- package/dist/discovery/sandbox/policy-run.js +142 -0
- package/dist/discovery/sandbox/policy-wire.js +152 -0
- package/dist/discovery/sandbox/run.js +77 -0
- package/dist/discovery/specifier-resolve.js +320 -0
- package/dist/discovery/walk.js +284 -0
- package/dist/effect-receipt.js +340 -0
- package/dist/env.js +55 -0
- package/dist/errors.js +62 -0
- package/dist/fold/fold.js +1434 -0
- package/dist/fold/foldable-helpers.js +229 -0
- package/dist/fold/subset.js +696 -0
- package/dist/fold-provenance.js +414 -0
- package/dist/gate-decision.d.ts +20 -9
- package/dist/gate-decision.d.ts.map +1 -1
- package/dist/gate-decision.js +313 -0
- package/dist/gate-resume-run.js +154 -0
- package/dist/gated-waves.js +165 -0
- package/dist/governance.js +43 -0
- package/dist/graph-declared.js +45 -0
- package/dist/graph-detail.js +207 -0
- package/dist/graph-dot.js +54 -0
- package/dist/graph-effective.js +107 -0
- package/dist/graph-ir.js +623 -0
- package/dist/graph-layout.js +184 -0
- package/dist/graph-lens.js +105 -0
- package/dist/graph-mermaid.js +83 -0
- package/dist/graph-ops.js +39 -0
- package/dist/graph-refs.js +156 -0
- package/dist/held-elsewhere.js +87 -0
- package/dist/identity.js +251 -0
- package/dist/import/base-parser.js +34 -0
- package/dist/import/embedded.js +255 -0
- package/dist/import/generator.js +1 -0
- package/dist/import/ir-utils.js +85 -0
- package/dist/import/parser-options.js +45 -0
- package/dist/import/parser.js +1 -0
- package/dist/index.js +118 -0
- package/dist/intrinsic-interpolation.js +73 -0
- package/dist/intrinsic.js +31 -0
- package/dist/join-key.js +35 -0
- package/dist/kubectl-context.js +150 -0
- package/dist/lexicon-config.js +58 -0
- package/dist/lexicon-integrity.js +47 -0
- package/dist/lexicon-manifest.js +70 -0
- package/dist/lexicon-module.d.ts.map +1 -1
- package/dist/lexicon-module.js +241 -0
- package/dist/lexicon-output.js +218 -0
- package/dist/lexicon-plugin-helpers.js +104 -0
- package/dist/lexicon-schema.js +136 -0
- package/dist/lexicon.js +130 -0
- package/dist/lifecycle/affected.js +224 -0
- package/dist/lifecycle/assert-live.js +110 -0
- package/dist/lifecycle/build-ledger-store.js +160 -0
- package/dist/lifecycle/build-ledger.js +155 -0
- package/dist/lifecycle/change-set.js +356 -0
- package/dist/lifecycle/converge-ledger.js +161 -0
- package/dist/lifecycle/deep-diff.js +233 -0
- package/dist/lifecycle/deep-observe.js +147 -0
- package/dist/lifecycle/digest.js +143 -0
- package/dist/lifecycle/disruption.js +135 -0
- package/dist/lifecycle/gate-applied.js +113 -0
- package/dist/lifecycle/gate-audit.d.ts +69 -2
- package/dist/lifecycle/gate-audit.d.ts.map +1 -1
- package/dist/lifecycle/gate-audit.js +415 -0
- package/dist/lifecycle/gate-ledger-select.js +89 -0
- package/dist/lifecycle/gate-ledger.d.ts +24 -0
- package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
- package/dist/lifecycle/gate-ledger.js +201 -0
- package/dist/lifecycle/gate-origin.js +117 -0
- package/dist/lifecycle/gate-pending.js +58 -0
- package/dist/lifecycle/git.js +1182 -0
- package/dist/lifecycle/identity.js +58 -0
- package/dist/lifecycle/index.js +26 -0
- package/dist/lifecycle/lease.js +283 -0
- package/dist/lifecycle/ledger-port.js +1 -0
- package/dist/lifecycle/legacy-digest.js +91 -0
- package/dist/lifecycle/live-diff.js +274 -0
- package/dist/lifecycle/local-note.js +15 -0
- package/dist/lifecycle/member-ledger.js +122 -0
- package/dist/lifecycle/observation-baseline.js +155 -0
- package/dist/lifecycle/observe.js +375 -0
- package/dist/lifecycle/oras-referrer-lookup.js +82 -0
- package/dist/lifecycle/override-ledger.js +54 -0
- package/dist/lifecycle/plan-digest.js +110 -0
- package/dist/lifecycle/plan-ledger.js +129 -0
- package/dist/lifecycle/receipt-plan.js +192 -0
- package/dist/lifecycle/release-ledger.js +155 -0
- package/dist/lifecycle/release-read.js +64 -0
- package/dist/lifecycle/replay.js +193 -0
- package/dist/lifecycle/rollback.js +102 -0
- package/dist/lifecycle/run-ledger.js +183 -0
- package/dist/lifecycle/scenario-eval.js +204 -0
- package/dist/lifecycle/scenario.js +214 -0
- package/dist/lifecycle/snapshot.js +239 -0
- package/dist/lifecycle/status.js +447 -0
- package/dist/lifecycle/symptoms.js +117 -0
- package/dist/lifecycle/teardown.js +255 -0
- package/dist/lifecycle/types.js +1 -0
- package/dist/lifecycle/unobserved-gate.js +33 -0
- package/dist/lifecycle/wave-plans.js +68 -0
- package/dist/lifecycle/work-item-id.js +36 -0
- package/dist/lifecycle/work-lease.js +393 -0
- package/dist/lint/component-checks.js +87 -0
- package/dist/lint/config.js +483 -0
- package/dist/lint/declarative.js +122 -0
- package/dist/lint/discover.d.ts.map +1 -1
- package/dist/lint/discover.js +138 -0
- package/dist/lint/engine.js +246 -0
- package/dist/lint/knowledge-checks.js +64 -0
- package/dist/lint/named-checks.js +22 -0
- package/dist/lint/output-checks.js +87 -0
- package/dist/lint/output-docs.js +163 -0
- package/dist/lint/parser.js +33 -0
- package/dist/lint/pipeline-change-gate.js +70 -0
- package/dist/lint/policy-import.d.ts +1 -1
- package/dist/lint/policy-import.d.ts.map +1 -1
- package/dist/lint/policy-import.js +62 -0
- package/dist/lint/policy-sandbox.js +86 -0
- package/dist/lint/policy.js +122 -0
- package/dist/lint/post-synth.js +87 -0
- package/dist/lint/presets/relaxed.json +26 -0
- package/dist/lint/presets/strict.json +24 -24
- package/dist/lint/receipt-checks.js +83 -0
- package/dist/lint/rule-loader.d.ts.map +1 -1
- package/dist/lint/rule-loader.js +89 -0
- package/dist/lint/rule-registry.js +86 -0
- package/dist/lint/rule.js +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-a.component.js +7 -0
- package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-b.component.js +7 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/fail/orphan-lib.component.js +9 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/pass/emr-job.component.js +11 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/pass/jar-lib.component.js +9 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/fail/search-service.component.js +25 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/pass/jar-lib.component.js +8 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/pass/search-service.component.js +21 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/fail/migrator.component.js +8 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/pass/agent-turn.component.js +24 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/pass/migrator.component.js +17 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/pass/orders-table.component.js +8 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/fail/neo4j-cluster.component.js +18 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.js +20 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.js +8 -0
- package/dist/lint/rules/__fixtures__/comp/comp005/fail/search-service.component.js +12 -0
- package/dist/lint/rules/__fixtures__/comp/comp005/pass/search-service.component.js +16 -0
- package/dist/lint/rules/__fixtures__/comp/comp006/fail/legacy-tool.component.js +8 -0
- package/dist/lint/rules/__fixtures__/comp/comp006/pass/legacy-tool.component.js +12 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/fail/inventory-table.component.js +11 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/fail/orders-table.component.js +11 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/pass/orders-table.component.js +10 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/pass/search-service.component.js +16 -0
- package/dist/lint/rules/comp/comp001-publishes-never-applies.js +69 -0
- package/dist/lint/rules/comp/comp002-dangling-wiring-ref.js +84 -0
- package/dist/lint/rules/comp/comp003-mutating-no-rollback.js +103 -0
- package/dist/lint/rules/comp/comp004-gate-needs-durable-runtime.js +70 -0
- package/dist/lint/rules/comp/comp005-capability-kind-is-noun.js +109 -0
- package/dist/lint/rules/comp/comp006-shell-needs-reason.js +49 -0
- package/dist/lint/rules/comp/comp007-composition-sprawl.js +64 -0
- package/dist/lint/rules/comp/index.js +33 -0
- package/dist/lint/rules/comp/support.js +129 -0
- package/dist/lint/rules/composite-scope.js +51 -0
- package/dist/lint/rules/cor017-composite-name-match.js +93 -0
- package/dist/lint/rules/cor018-composite-prefer-lexicon-type.js +136 -0
- package/dist/lint/rules/cor021-env-literal-name.js +100 -0
- package/dist/lint/rules/cor022-receipt-leaf.js +118 -0
- package/dist/lint/rules/cor024-receipt-secret-pointer.js +199 -0
- package/dist/lint/rules/declarable-naming-convention.js +62 -0
- package/dist/lint/rules/evl001-non-literal-expression.js +66 -0
- package/dist/lint/rules/evl002-control-flow-resource.js +69 -0
- package/dist/lint/rules/evl003-dynamic-property-access.js +44 -0
- package/dist/lint/rules/evl004-spread-non-const.js +94 -0
- package/dist/lint/rules/evl005-resource-block-body.js +41 -0
- package/dist/lint/rules/evl007-invalid-siblings.js +105 -0
- package/dist/lint/rules/evl009-composite-no-constant.js +158 -0
- package/dist/lint/rules/evl010-composite-no-transform.js +59 -0
- package/dist/lint/rules/evl011-symbolic-in-template.js +106 -0
- package/dist/lint/rules/export-required.js +115 -0
- package/dist/lint/rules/file-declarable-limit.js +88 -0
- package/dist/lint/rules/flat-declarations.js +62 -0
- package/dist/lint/rules/index.js +90 -0
- package/dist/lint/rules/no-cyclic-declarable-ref.js +138 -0
- package/dist/lint/rules/no-redundant-type-import.js +76 -0
- package/dist/lint/rules/no-redundant-value-cast.js +41 -0
- package/dist/lint/rules/no-string-ref.js +59 -0
- package/dist/lint/rules/no-unused-declarable-import.js +75 -0
- package/dist/lint/rules/no-unused-declarable.js +142 -0
- package/dist/lint/rules/op/index.js +28 -0
- package/dist/lint/rules/op/ops012-activity-contract.js +54 -0
- package/dist/lint/rules/op/ops013-step-output-ref.js +88 -0
- package/dist/lint/rules/op/ops014-converge-rule-refusals.js +114 -0
- package/dist/lint/rules/op/ops015-gate-approval.js +45 -0
- package/dist/lint/rules/op/support.js +11 -0
- package/dist/lint/rules/op/sys010-key-over-plain-http.js +100 -0
- package/dist/lint/rules/property-kind.js +56 -0
- package/dist/lint/rules/single-concern-file.js +71 -0
- package/dist/lint/rules/sys001-no-literal-key.js +60 -0
- package/dist/lint/selectors.js +168 -0
- package/dist/lint/suppressions.js +129 -0
- package/dist/lint/typescript.js +17 -0
- package/dist/live-endpoint.js +113 -0
- package/dist/live-read-session.js +76 -0
- package/dist/lsp/lexicon-providers.js +163 -0
- package/dist/lsp/types.js +5 -0
- package/dist/managed-fields.js +293 -0
- package/dist/mcp/types.js +4 -0
- package/dist/notify-verify.js +0 -1
- package/dist/notify.js +0 -1
- package/dist/notify.schema.json +72 -0
- package/dist/observation.js +266 -0
- package/dist/okf-read.js +134 -0
- package/dist/okf.js +275 -0
- package/dist/op/__fixtures__/decide-stub-backend.js +125 -0
- package/dist/op/activities/activity-contracts.d.ts +1 -1
- package/dist/op/activities/activity-contracts.js +313 -0
- package/dist/op/activities/apply.js +582 -0
- package/dist/op/activities/build.js +18 -0
- package/dist/op/activities/change-coverage.js +40 -0
- package/dist/op/activities/change-set.d.ts +8 -3
- package/dist/op/activities/change-set.d.ts.map +1 -1
- package/dist/op/activities/change-set.js +67 -0
- package/dist/op/activities/converge.js +492 -0
- package/dist/op/activities/decide.js +211 -0
- package/dist/op/activities/env-teardown.js +110 -0
- package/dist/op/activities/factory.js +591 -0
- package/dist/op/activities/forge-pull-request.js +82 -0
- package/dist/op/activities/gh-host.js +78 -0
- package/dist/op/activities/guard-validate.js +165 -0
- package/dist/op/activities/http-check.js +40 -0
- package/dist/op/activities/index.js +59 -0
- package/dist/op/activities/lexicon-upgrade.js +629 -0
- package/dist/op/activities/lifecycle.js +109 -0
- package/dist/op/activities/pipeline-audit.js +147 -0
- package/dist/op/activities/policy.js +26 -0
- package/dist/op/activities/predict-behaviour.js +341 -0
- package/dist/op/activities/propose-upgrade.js +165 -0
- package/dist/op/activities/reconcile.d.ts +28 -16
- package/dist/op/activities/reconcile.d.ts.map +1 -1
- package/dist/op/activities/reconcile.js +1011 -0
- package/dist/op/activities/shell.js +118 -0
- package/dist/op/activities/source-release.js +97 -0
- package/dist/op/activities/source-rollback.js +165 -0
- package/dist/op/activities/teardown.js +17 -0
- package/dist/op/activities/util.js +6 -0
- package/dist/op/activities/wait.js +51 -0
- package/dist/op/activities/work-evidence.js +35 -0
- package/dist/op/activities/workflow-audit.js +133 -0
- package/dist/op/activity-contract-registry.js +106 -0
- package/dist/op/activity-contract.js +232 -0
- package/dist/op/activity-failure.js +31 -0
- package/dist/op/activity-profiles.js +129 -0
- package/dist/op/activity-registry.js +105 -0
- package/dist/op/activity-runtime.js +28 -0
- package/dist/op/builders.d.ts +1 -1
- package/dist/op/builders.d.ts.map +1 -1
- package/dist/op/builders.js +801 -0
- package/dist/op/change-signal.js +118 -0
- package/dist/op/composites/apply-op.js +151 -0
- package/dist/op/composites/behaviour-op.js +65 -0
- package/dist/op/composites/converge-op.js +141 -0
- package/dist/op/composites/index.js +19 -0
- package/dist/op/composites/lexicon-upgrade-op.js +107 -0
- package/dist/op/composites/pipeline-audit-op.js +50 -0
- package/dist/op/composites/reconcile-op.js +84 -0
- package/dist/op/composites/watch-op.js +69 -0
- package/dist/op/composites/workflow-audit-op.js +57 -0
- package/dist/op/converge-rule.js +205 -0
- package/dist/op/cron.js +146 -0
- package/dist/op/decide-backend.js +181 -0
- package/dist/op/decide-config.js +68 -0
- package/dist/op/decide-read-inputs.js +141 -0
- package/dist/op/discover.d.ts.map +1 -1
- package/dist/op/discover.js +213 -0
- package/dist/op/duration.js +21 -0
- package/dist/op/emulator-freshness.js +80 -0
- package/dist/op/emulator-lifecycle.js +269 -0
- package/dist/op/factory.js +83 -0
- package/dist/op/gate-approval.js +172 -0
- package/dist/op/gate-name.js +86 -0
- package/dist/op/gate-plan-context.js +167 -0
- package/dist/op/gate-point-run.js +67 -0
- package/dist/op/gate-point.js +111 -0
- package/dist/op/gate-resume-plan.js +155 -0
- package/dist/op/gate-resume.js +31 -0
- package/dist/op/gate-review.js +290 -0
- package/dist/op/gate-run-locator.js +85 -0
- package/dist/op/gate-summary.js +100 -0
- package/dist/op/gate-wait.js +56 -0
- package/dist/op/gate.js +449 -0
- package/dist/op/generate-pipeline.js +124 -0
- package/dist/op/index.js +51 -0
- package/dist/op/lifecycle-receipt-store.js +45 -0
- package/dist/op/local-executor.js +1164 -0
- package/dist/op/local-output.js +140 -0
- package/dist/op/op-ir.js +317 -0
- package/dist/op/op-verb-class.js +131 -0
- package/dist/op/op-waves-notify.js +136 -0
- package/dist/op/op-waves-run.d.ts +1 -1
- package/dist/op/op-waves-run.d.ts.map +1 -1
- package/dist/op/op-waves-run.js +1657 -0
- package/dist/op/op-waves.js +409 -0
- package/dist/op/operator.js +743 -0
- package/dist/op/receipt-store.js +94 -0
- package/dist/op/resource.js +23 -0
- package/dist/op/run-context.js +28 -0
- package/dist/op/run-live.js +256 -0
- package/dist/op/runtime.js +21 -0
- package/dist/op/runtimes/local.js +195 -0
- package/dist/op/source-archive.js +131 -0
- package/dist/op/step-output-ref.js +397 -0
- package/dist/op/steward-beside.js +169 -0
- package/dist/op/steward-points.js +138 -0
- package/dist/op/steward-turn.js +59 -0
- package/dist/op/steward.js +317 -0
- package/dist/op/types.js +25 -0
- package/dist/op/work-lease-decl.js +81 -0
- package/dist/op/work-lease-run.js +393 -0
- package/dist/override-gate.js +284 -0
- package/dist/owner-chain.js +74 -0
- package/dist/ownership.js +92 -0
- package/dist/params.js +61 -0
- package/dist/plan-summary.js +711 -0
- package/dist/point-decision.js +211 -0
- package/dist/pr-forge.js +810 -0
- package/dist/pr-loop.js +203 -0
- package/dist/project-codegen.js +191 -0
- package/dist/project-root.js +74 -0
- package/dist/project-validation.js +50 -0
- package/dist/provenance.js +157 -0
- package/dist/pseudo-parameter.js +40 -0
- package/dist/reconcile.js +450 -0
- package/dist/resource-attributes.js +33 -0
- package/dist/runtime-adapter.js +77 -0
- package/dist/runtime.js +66 -0
- package/dist/secret-materialization.js +153 -0
- package/dist/secret-provenance.js +250 -0
- package/dist/serializer-walker.js +112 -0
- package/dist/serializer.js +1 -0
- package/dist/sort.js +45 -0
- package/dist/stack-output.js +115 -0
- package/dist/telemetry-attribution.js +149 -0
- package/dist/terraform/__fixtures__/build-graph.js +63 -0
- package/dist/terraform/adopt-state.js +40 -0
- package/dist/terraform/aws-resources.js +384 -0
- package/dist/terraform/bridge.js +204 -0
- package/dist/terraform/carve-provider.js +155 -0
- package/dist/terraform/carve.js +138 -0
- package/dist/terraform/data-source-shape.js +57 -0
- package/dist/terraform/emit-source.js +36 -0
- package/dist/terraform/excise.js +123 -0
- package/dist/terraform/graduate.js +128 -0
- package/dist/terraform/graph.js +435 -0
- package/dist/terraform/hcl2json.js +60 -0
- package/dist/terraform/manifest.js +149 -0
- package/dist/terraform/parse.js +81 -0
- package/dist/terraform/providers/aws.js +146 -0
- package/dist/terraform/providers/gcp.js +294 -0
- package/dist/terraform/providers/index.js +17 -0
- package/dist/terraform/providers/kubernetes.js +253 -0
- package/dist/terraform/score.js +151 -0
- package/dist/terraform/state.js +67 -0
- package/dist/terraform/tier-map.js +74 -0
- package/dist/terraform/types.js +13 -0
- package/dist/terraform/unified-diff.js +132 -0
- package/dist/testing.js +295 -0
- package/dist/toml-emit.js +153 -0
- package/dist/toml-parse.js +355 -0
- package/dist/toml-utils.js +60 -0
- package/dist/toml.js +428 -0
- package/dist/ts-loader.d.ts +46 -0
- package/dist/ts-loader.d.ts.map +1 -0
- package/dist/ts-loader.js +103 -0
- package/dist/types.js +1 -0
- package/dist/utils.js +61 -0
- package/dist/validation.js +20 -0
- package/dist/vendor/js-yaml-load.js +1662 -0
- package/dist/workspace/__fixtures__/contract-repo.d.ts +7 -0
- package/dist/workspace/__fixtures__/contract-repo.d.ts.map +1 -1
- package/dist/workspace/__fixtures__/contract-repo.js +119 -0
- package/dist/workspace/__fixtures__/decide-workspace.js +112 -0
- package/dist/workspace/__fixtures__/sessions.d.ts +1 -1
- package/dist/workspace/__fixtures__/sessions.d.ts.map +1 -1
- package/dist/workspace/__fixtures__/sessions.js +91 -0
- package/dist/workspace/__fixtures__/two-member-workspace.js +34 -0
- package/dist/workspace/agent-cli.js +99 -0
- package/dist/workspace/agent.schema.json +390 -0
- package/dist/workspace/answers-ledger.js +89 -0
- package/dist/workspace/box-cli.js +142 -0
- package/dist/workspace/box-factory-write.js +196 -0
- package/dist/workspace/box-factory-write.schema.json +342 -0
- package/dist/workspace/box-factory.js +88 -0
- package/dist/workspace/box-intent.js +126 -0
- package/dist/workspace/box-isolation.js +169 -0
- package/dist/workspace/box-listing-write.schema.json +204 -0
- package/dist/workspace/box-listing.js +298 -0
- package/dist/workspace/box-publish.js +352 -0
- package/dist/workspace/box-publish.schema.json +498 -0
- package/dist/workspace/box-services.js +39 -0
- package/dist/workspace/broker-protocol.js +359 -0
- package/dist/workspace/broker-protocol.schema.json +228 -0
- package/dist/workspace/change-set.schema.json +462 -0
- package/dist/workspace/changes-cli.js +56 -0
- package/dist/workspace/changes.js +446 -0
- package/dist/workspace/changes.schema.json +642 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit-fly-site.js +198 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit-live-names.js +155 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit-rollback.js +214 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit-ship-inputs.js +180 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit-ship-policy.js +99 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit.js +847 -0
- package/dist/workspace/chant-migrations.js +113 -0
- package/dist/workspace/check.schema.json +433 -0
- package/dist/workspace/checks/box-isolation.js +62 -0
- package/dist/workspace/checks/boxes.js +491 -0
- package/dist/workspace/checks/diagrams.js +104 -0
- package/dist/workspace/checks/generated.js +419 -0
- package/dist/workspace/checks/ledgers.js +212 -0
- package/dist/workspace/checks/links.js +191 -0
- package/dist/workspace/checks/live.js +100 -0
- package/dist/workspace/checks/pipelines.js +188 -0
- package/dist/workspace/checks/records.js +169 -0
- package/dist/workspace/checks.js +426 -0
- package/dist/workspace/ci-green-cli.js +125 -0
- package/dist/workspace/ci-green-forge.js +83 -0
- package/dist/workspace/ci-green-workflow.d.ts +3 -1
- package/dist/workspace/ci-green-workflow.d.ts.map +1 -1
- package/dist/workspace/ci-green-workflow.js +202 -0
- package/dist/workspace/ci-green.js +325 -0
- package/dist/workspace/ci-last-green.schema.json +158 -0
- package/dist/workspace/class-data.d.ts +84 -0
- package/dist/workspace/class-data.d.ts.map +1 -0
- package/dist/workspace/class-data.js +238 -0
- package/dist/workspace/compose-graph.js +235 -0
- package/dist/workspace/compose-reports.js +146 -0
- package/dist/workspace/composites.js +264 -0
- package/dist/workspace/composites.schema.json +617 -0
- package/dist/workspace/conformance/__fixture__/app/package.json +7 -0
- package/dist/workspace/conformance/__fixture__/app/src/server.mjs +29 -0
- package/dist/workspace/conformance/__fixture__/decisions/decision.kind.mjs +54 -0
- package/dist/workspace/conformance/__fixture__/decisions/decision.schema.json +512 -0
- package/dist/workspace/conformance/__fixture__/decisions/fix-001-how-the-app-is-deployed.md +40 -0
- package/dist/workspace/conformance/__fixture__/delivery/chant.config.ts +7 -0
- package/dist/workspace/conformance/__fixture__/delivery/lexicon/index.ts +26 -0
- package/dist/workspace/conformance/__fixture__/delivery/package.json +7 -0
- package/dist/workspace/conformance/__fixture__/delivery/src/app.component.ts +14 -0
- package/dist/workspace/conformance/__fixture__/delivery/src/app.ts +4 -0
- package/dist/workspace/conformance/__fixtures__/reference-broker.js +205 -0
- package/dist/workspace/conformance/__writer_fixture__/answers/answer.kind.mjs +32 -0
- package/dist/workspace/conformance/__writer_fixture__/answers/answer.schema.json +135 -0
- package/dist/workspace/conformance/__writer_fixture__/contracts/contract.kind.mjs +37 -0
- package/dist/workspace/conformance/__writer_fixture__/contracts/contract.schema.json +213 -0
- package/dist/workspace/conformance/__writer_fixture__/decisions/points.json +228 -0
- package/dist/workspace/conformance/__writer_fixture__/drivers/driver.kind.mjs +15 -0
- package/dist/workspace/conformance/__writer_fixture__/drivers/driver.schema.json +38 -0
- package/dist/workspace/conformance/__writer_fixture__/sessions/session.kind.mjs +54 -0
- package/dist/workspace/conformance/__writer_fixture__/sessions/session.schema.json +289 -0
- package/dist/workspace/conformance/__writer_fixture__/work/W-001-the-writer-suite-works-this-item.md +25 -0
- package/dist/workspace/conformance/__writer_fixture__/work/work.kind.mjs +60 -0
- package/dist/workspace/conformance/__writer_fixture__/work/work.schema.json +603 -0
- package/dist/workspace/conformance/broker.js +736 -0
- package/dist/workspace/conformance/index.js +673 -0
- package/dist/workspace/conformance/vitest.js +108 -0
- package/dist/workspace/conformance/writer.js +1080 -0
- package/dist/workspace/decide.js +879 -0
- package/dist/workspace/decision-points.schema.json +135 -135
- package/dist/workspace/declaration-write-cli.js +74 -0
- package/dist/workspace/declaration-write.js +238 -0
- package/dist/workspace/declaration.js +938 -0
- package/dist/workspace/declaration.schema.json +1413 -1413
- package/dist/workspace/declared-kinds.js +106 -0
- package/dist/workspace/environments.js +164 -0
- package/dist/workspace/evidence.schema.json +279 -0
- package/dist/workspace/export-cli.js +185 -0
- package/dist/workspace/export.js +499 -0
- package/dist/workspace/factory-rules.js +175 -0
- package/dist/workspace/generated-files.js +92 -0
- package/dist/workspace/glob.js +45 -0
- package/dist/workspace/graph-cache.js +352 -0
- package/dist/workspace/graph-cli.js +348 -0
- package/dist/workspace/graph.schema.json +1338 -0
- package/dist/workspace/identity-gate-rule.js +75 -0
- package/dist/workspace/identity.js +126 -0
- package/dist/workspace/import.js +283 -0
- package/dist/workspace/init.js +620 -0
- package/dist/workspace/intent-cli.js +263 -0
- package/dist/workspace/intent-joins.js +201 -0
- package/dist/workspace/intent-record.js +352 -0
- package/dist/workspace/intent-record.schema.json +864 -0
- package/dist/workspace/intent.js +1582 -0
- package/dist/workspace/intent.schema.json +2420 -0
- package/dist/workspace/json-edit.js +221 -0
- package/dist/workspace/jsonc.js +235 -0
- package/dist/workspace/kind-readers.js +103 -0
- package/dist/workspace/kinds.d.ts +3 -7
- package/dist/workspace/kinds.d.ts.map +1 -1
- package/dist/workspace/kinds.js +553 -0
- package/dist/workspace/lexicon-symbols.js +112 -0
- package/dist/workspace/lineage-adopt-cli.js +102 -0
- package/dist/workspace/lineage-adopt.js +360 -0
- package/dist/workspace/lineage-check.js +282 -0
- package/dist/workspace/lineage-cli.js +121 -0
- package/dist/workspace/lineage-hash-index.js +284 -0
- package/dist/workspace/lineage-init.js +507 -0
- package/dist/workspace/lineage-lock.js +387 -0
- package/dist/workspace/lineage-merge.js +45 -0
- package/dist/workspace/lineage-migrations.d.ts.map +1 -1
- package/dist/workspace/lineage-migrations.js +329 -0
- package/dist/workspace/lineage-provenance.js +36 -0
- package/dist/workspace/lineage-update.js +138 -0
- package/dist/workspace/lineage-upgrade-cli.js +131 -0
- package/dist/workspace/lineage-upgrade.js +889 -0
- package/dist/workspace/lineage-vendor.js +171 -0
- package/dist/workspace/lineage-version.js +128 -0
- package/dist/workspace/lineage-versions.js +275 -0
- package/dist/workspace/links.js +330 -0
- package/dist/workspace/ls-generated.js +95 -0
- package/dist/workspace/ls.js +277 -0
- package/dist/workspace/ls.schema.json +333 -0
- package/dist/workspace/member-commands.js +508 -0
- package/dist/workspace/member-handles.js +216 -0
- package/dist/workspace/member-pipeline.js +258 -0
- package/dist/workspace/member-run.js +117 -0
- package/dist/workspace/member-write.schema.json +193 -0
- package/dist/workspace/nested-graph.js +156 -0
- package/dist/workspace/nesting.js +38 -0
- package/dist/workspace/patch.js +301 -0
- package/dist/workspace/patch.schema.json +321 -0
- package/dist/workspace/pin-cli.js +55 -0
- package/dist/workspace/pin-integrity.js +100 -0
- package/dist/workspace/plan-summary.schema.json +155 -0
- package/dist/workspace/point-answer.schema.json +129 -129
- package/dist/workspace/points-cli.js +291 -0
- package/dist/workspace/points-write.schema.json +660 -0
- package/dist/workspace/points.js +521 -0
- package/dist/workspace/points.schema.json +916 -0
- package/dist/workspace/pr-report.schema.json +108 -0
- package/dist/workspace/principal-classes.d.ts +4 -11
- package/dist/workspace/principal-classes.d.ts.map +1 -1
- package/dist/workspace/principal-classes.js +162 -0
- package/dist/workspace/reason-codes.js +326 -0
- package/dist/workspace/record-assets.js +151 -0
- package/dist/workspace/record-decided.js +105 -0
- package/dist/workspace/record-sessions.js +96 -0
- package/dist/workspace/record-source.js +114 -0
- package/dist/workspace/records-amend.schema.json +284 -0
- package/dist/workspace/records-checkout.js +76 -0
- package/dist/workspace/records-cli.js +707 -0
- package/dist/workspace/records-close.js +116 -0
- package/dist/workspace/records-close.schema.json +278 -0
- package/dist/workspace/records-new.schema.json +202 -0
- package/dist/workspace/records-review.schema.json +367 -0
- package/dist/workspace/records-since.js +317 -0
- package/dist/workspace/records-since.schema.json +218 -0
- package/dist/workspace/records-write.js +1229 -0
- package/dist/workspace/records.js +1345 -0
- package/dist/workspace/records.schema.json +604 -0
- package/dist/workspace/reference-kinds/app/package.json +10 -0
- package/dist/workspace/reference-kinds/app/workspace-kinds.json +45 -0
- package/dist/workspace/returns.js +303 -0
- package/dist/workspace/root-refusal.js +75 -0
- package/dist/workspace/run-statement.schema.json +622 -0
- package/dist/workspace/runs-cli.js +584 -0
- package/dist/workspace/runs-write.schema.json +994 -0
- package/dist/workspace/runs.js +708 -0
- package/dist/workspace/runs.schema.json +1257 -0
- package/dist/workspace/runtimes.js +76 -0
- package/dist/workspace/session-kinds.js +83 -0
- package/dist/workspace/signers.schema.json +206 -0
- package/dist/workspace/source-block.js +125 -0
- package/dist/workspace/squash.js +177 -0
- package/dist/workspace/status-gates.js +162 -0
- package/dist/workspace/status-stewards.js +330 -0
- package/dist/workspace/status.js +514 -0
- package/dist/workspace/status.schema.json +998 -0
- package/dist/workspace/steward-index.js +191 -0
- package/dist/workspace/symbols.js +188 -0
- package/dist/workspace/template-manifest.js +227 -0
- package/dist/workspace/template-pins.js +115 -0
- package/dist/workspace/trailer-joins.js +65 -0
- package/dist/workspace/trailers.js +111 -0
- package/dist/workspace/tree.js +136 -0
- package/dist/workspace/trust/attestor.js +63 -0
- package/dist/workspace/trust/dsse.js +108 -0
- package/dist/workspace/trust/evidence-cli.js +175 -0
- package/dist/workspace/trust/evidence.js +161 -0
- package/dist/workspace/trust/gate-seal.js +226 -0
- package/dist/workspace/trust/policy.js +190 -0
- package/dist/workspace/trust/provenance.js +180 -0
- package/dist/workspace/trust/rotation.js +298 -0
- package/dist/workspace/trust/run-commits.js +101 -0
- package/dist/workspace/trust/run-statement.js +182 -0
- package/dist/workspace/trust/seal.js +272 -0
- package/dist/workspace/trust/signers-cli.js +152 -0
- package/dist/workspace/trust/ssh-commit.js +178 -0
- package/dist/workspace/trust/test-repo.js +118 -0
- package/dist/workspace/trust/trust-files.js +193 -0
- package/dist/workspace/trust/verify-cli.js +63 -0
- package/dist/workspace/trust/verify.js +192 -0
- package/dist/workspace/which-chant.js +141 -0
- package/dist/workspace/wip-cli.js +95 -0
- package/dist/workspace/wip-write.schema.json +504 -0
- package/dist/workspace/wip.js +631 -0
- package/dist/workspace/wip.schema.json +334 -0
- package/dist/workspace/work-cli.js +448 -0
- package/dist/workspace/work-evidence.js +122 -0
- package/dist/workspace/work-evidence.schema.json +222 -0
- package/dist/workspace/work-history.schema.json +421 -0
- package/dist/workspace/work-lease.schema.json +246 -0
- package/dist/workspace/work-size.js +77 -0
- package/dist/workspace/work.js +283 -0
- package/dist/workspace/workspace-kinds.schema.json +259 -259
- package/dist/workspace/workspace-principals.schema.json +53 -53
- package/dist/workspace/write-lock-cli.js +105 -0
- package/dist/workspace/write-lock.js +424 -0
- package/dist/workspace/write-lock.schema.json +172 -0
- package/dist/workspace/write-scope.js +484 -0
- package/dist/yaml.js +459 -0
- package/package.json +2 -2
- package/src/build.ts +8 -0
- package/src/change-set.test.ts +48 -0
- package/src/change-set.ts +52 -2
- package/src/ci-jobs.test.ts +49 -0
- package/src/ci-jobs.ts +515 -0
- package/src/cli/commands/check-lexicon-plugin.ts +2 -0
- package/src/cli/commands/lint.ts +3 -0
- package/src/cli/commands/migrate.ts +2 -0
- package/src/cli/compiled-cli.e2e.test.ts +165 -0
- package/src/cli/main.ts +121 -27
- package/src/cli/mcp/workspace-tools.ts +1 -1
- package/src/codegen/pinned-upgrade.ts +2 -0
- package/src/components/discover.ts +2 -0
- package/src/components/pr-pipeline.ts +3 -2
- package/src/components/sandbox/driver.ts +3 -1
- package/src/composite.ts +15 -3
- package/src/config-import.ts +3 -0
- package/src/discovery/collect.ts +15 -1
- package/src/discovery/fold-build-parity.test.ts +71 -0
- package/src/discovery/fold-import.ts +25 -127
- package/src/discovery/fold-project-provenance.test.ts +21 -4
- package/src/discovery/host-composite.ts +101 -0
- package/src/discovery/import.ts +2 -0
- package/src/discovery/index.ts +11 -1
- package/src/discovery/sandbox/driver.ts +3 -1
- package/src/gate-decision-bundle.test.ts +5 -4
- package/src/gate-decision-identity.test.ts +59 -6
- package/src/gate-decision.ts +81 -21
- package/src/lexicon-module.ts +3 -0
- package/src/lifecycle/gate-audit.test.ts +55 -1
- package/src/lifecycle/gate-audit.ts +116 -3
- package/src/lifecycle/gate-ledger.test.ts +20 -1
- package/src/lifecycle/gate-ledger.ts +33 -1
- package/src/lint/config.ts +1 -1
- package/src/lint/discover.ts +28 -8
- package/src/lint/policy-import.ts +4 -1
- package/src/lint/rule-loader.ts +2 -0
- package/src/op/activities/activity-contracts.ts +1 -1
- package/src/op/activities/change-set.ts +11 -3
- package/src/op/activities/lexicon-upgrade.test.ts +2 -0
- package/src/op/activities/reconcile.test.ts +62 -2
- package/src/op/activities/reconcile.ts +46 -22
- package/src/op/builders.ts +1 -1
- package/src/op/discover.ts +3 -0
- package/src/op/op-waves-run.ts +4 -3
- package/src/op/op-waves.test.ts +2 -0
- package/src/op/work-lease-run.test.ts +12 -4
- package/src/ts-loader.test.ts +23 -0
- package/src/ts-loader.ts +122 -0
- package/src/workspace/__fixtures__/contract-repo.ts +17 -1
- package/src/workspace/__fixtures__/sessions.ts +3 -3
- package/src/workspace/change-set.schema.json +5 -3
- package/src/workspace/chant-migrations/chud-lexicon-exit.ts +1 -1
- package/src/workspace/ci-green-workflow.test.ts +4 -4
- package/src/workspace/ci-green-workflow.ts +5 -2
- package/src/workspace/class-data.test.ts +64 -0
- package/src/workspace/class-data.ts +236 -0
- package/src/workspace/declaration.ts +1 -1
- package/src/workspace/kinds.ts +7 -36
- package/src/workspace/lineage-migrations.ts +2 -0
- package/src/workspace/points.ts +1 -1
- package/src/workspace/principal-classes.ts +12 -95
- package/src/workspace/records-formats.test.ts +7 -2
- package/src/workspace/records-sessions-write.test.ts +3 -3
- package/src/workspace/status-contract.e2e.test.ts +37 -0
- package/src/workspace/status-contract.test.ts +23 -21
|
@@ -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
|
+
}
|