@intentius/chant 0.124.12 → 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.
- 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.js +668 -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.js +312 -0
- package/dist/child-project.js +21 -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.js +134 -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.js +305 -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.js +208 -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 +4178 -0
- package/dist/discovery/fold-rank.js +292 -0
- package/dist/discovery/graph.js +115 -0
- package/dist/discovery/import.d.ts.map +1 -1
- package/dist/discovery/import.js +65 -0
- 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 +36 -4
- package/dist/gate-decision.d.ts.map +1 -1
- package/dist/gate-decision.js +260 -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.js +341 -0
- package/dist/lifecycle/gate-ledger-select.js +89 -0
- package/dist/lifecycle/gate-ledger.d.ts +8 -0
- package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
- package/dist/lifecycle/gate-ledger.js +193 -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.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.js +64 -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.js +997 -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.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.js +103 -0
- package/dist/workspace/__fixtures__/decide-workspace.js +112 -0
- 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 +460 -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.js +199 -0
- package/dist/workspace/ci-green.js +325 -0
- package/dist/workspace/ci-last-green.schema.json +158 -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.d.ts +65 -0
- package/dist/workspace/identity-gate-rule.d.ts.map +1 -0
- package/dist/workspace/identity-gate-rule.js +75 -0
- package/dist/workspace/identity.d.ts +4 -2
- package/dist/workspace/identity.d.ts.map +1 -1
- 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.js +587 -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 +3 -14
- package/dist/workspace/principal-classes.d.ts.map +1 -1
- package/dist/workspace/principal-classes.js +245 -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/cli/commands/check-lexicon-plugin.ts +2 -0
- package/src/cli/commands/lint.ts +36 -6
- 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/sandbox/driver.ts +3 -1
- package/src/config-import.ts +3 -0
- package/src/discovery/fold-import.ts +23 -14
- package/src/discovery/import.ts +2 -0
- package/src/discovery/sandbox/driver.ts +3 -1
- package/src/gate-decision-bundle.test.ts +3 -2
- package/src/gate-decision-identity.test.ts +176 -0
- package/src/gate-decision.ts +100 -22
- package/src/lexicon-module.ts +3 -0
- package/src/lifecycle/gate-ledger.ts +8 -0
- 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/discover.ts +3 -0
- package/src/op/op-waves-point.test.ts +1 -0
- package/src/op/op-waves-run.ts +5 -4
- package/src/op/op-waves.test.ts +14 -0
- package/src/ts-loader.test.ts +23 -0
- package/src/ts-loader.ts +122 -0
- package/src/workspace/chant-migrations/chud-lexicon-exit.ts +1 -1
- package/src/workspace/declaration.ts +1 -1
- package/src/workspace/identity-gate-rule.ts +109 -0
- package/src/workspace/identity.ts +8 -18
- package/src/workspace/kinds.ts +1 -1
- package/src/workspace/lineage-migrations.ts +2 -0
- package/src/workspace/points.ts +1 -1
- package/src/workspace/principal-classes.ts +5 -30
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { lexiconModulePath, lexiconNames } from "../../lexicon-module.js";
|
|
2
|
+
import { existsSync, mkdirSync, writeFileSync, cpSync, readdirSync, statSync, readFileSync } from "fs";
|
|
3
|
+
import { dirname, join, resolve } from "path";
|
|
4
|
+
import { createRequire } from "module";
|
|
5
|
+
import { formatSuccess, formatWarning, formatError } from "../format.js";
|
|
6
|
+
import { loadChantConfig } from "../../config.js";
|
|
7
|
+
import { loadPlugins } from "../plugins.js";
|
|
8
|
+
import { writeProjectMcpConfig } from "../mcp-config.js";
|
|
9
|
+
/**
|
|
10
|
+
* Where `chant update` writes a lexicon skill, relative to the project. The
|
|
11
|
+
* workspace drift check (#2541) compares these files with what the skills
|
|
12
|
+
* render to, so both read the path from here.
|
|
13
|
+
*/
|
|
14
|
+
export function skillFilePath(skillName) {
|
|
15
|
+
return `skills/${skillName}/SKILL.md`;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Copy directory contents recursively, filtering to .ts and .d.ts files
|
|
19
|
+
*/
|
|
20
|
+
function copyTypeFiles(src, dest) {
|
|
21
|
+
if (!existsSync(src))
|
|
22
|
+
return 0;
|
|
23
|
+
mkdirSync(dest, { recursive: true });
|
|
24
|
+
let count = 0;
|
|
25
|
+
const entries = readdirSync(src);
|
|
26
|
+
for (const entry of entries) {
|
|
27
|
+
const srcPath = join(src, entry);
|
|
28
|
+
const destPath = join(dest, entry);
|
|
29
|
+
const stat = statSync(srcPath);
|
|
30
|
+
if (stat.isDirectory()) {
|
|
31
|
+
// Skip node_modules, tests, examples
|
|
32
|
+
if (entry === "node_modules" || entry === "__test__")
|
|
33
|
+
continue;
|
|
34
|
+
count += copyTypeFiles(srcPath, destPath);
|
|
35
|
+
}
|
|
36
|
+
else if (entry.endsWith(".d.ts") ||
|
|
37
|
+
entry.endsWith(".json")) {
|
|
38
|
+
cpSync(srcPath, destPath);
|
|
39
|
+
count++;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return count;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Resolve the path to a package in node_modules
|
|
46
|
+
*/
|
|
47
|
+
function resolvePackagePath(packageName, projectDir) {
|
|
48
|
+
// Try resolve from project dir
|
|
49
|
+
try {
|
|
50
|
+
const _require = createRequire(join(projectDir, "package.json"));
|
|
51
|
+
const entryPoint = _require.resolve(packageName);
|
|
52
|
+
// Walk up from entry point to find package root
|
|
53
|
+
let dir = entryPoint;
|
|
54
|
+
while (dir !== "/") {
|
|
55
|
+
dir = join(dir, "..");
|
|
56
|
+
if (existsSync(join(dir, "package.json"))) {
|
|
57
|
+
const pkg = JSON.parse(readFileSync(join(dir, "package.json"), "utf-8"));
|
|
58
|
+
if (pkg.name === packageName)
|
|
59
|
+
return dir;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// Package not installed
|
|
65
|
+
}
|
|
66
|
+
// Fallback: check common node_modules locations
|
|
67
|
+
const candidates = [
|
|
68
|
+
join(projectDir, "node_modules", ...packageName.split("/")),
|
|
69
|
+
join(projectDir, "..", "node_modules", ...packageName.split("/")),
|
|
70
|
+
];
|
|
71
|
+
for (const candidate of candidates) {
|
|
72
|
+
if (existsSync(join(candidate, "package.json"))) {
|
|
73
|
+
return candidate;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Execute the update command — sync lexicon types into .chant/
|
|
80
|
+
*/
|
|
81
|
+
export async function updateCommand(options) {
|
|
82
|
+
const projectDir = resolve(options.path);
|
|
83
|
+
const synced = [];
|
|
84
|
+
const warnings = [];
|
|
85
|
+
// Load config to get lexicons
|
|
86
|
+
const { config } = await loadChantConfig(projectDir);
|
|
87
|
+
const lexicons = lexiconNames(config.lexicons ?? []);
|
|
88
|
+
if (lexicons.length === 0) {
|
|
89
|
+
return {
|
|
90
|
+
success: false,
|
|
91
|
+
synced: [],
|
|
92
|
+
warnings: [],
|
|
93
|
+
error: "No lexicons configured. Add lexicons to chant.config.ts.",
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
const typesDir = join(projectDir, ".chant", "types");
|
|
97
|
+
// Sync core types
|
|
98
|
+
const corePkgPath = resolvePackagePath("@intentius/chant", projectDir);
|
|
99
|
+
if (corePkgPath) {
|
|
100
|
+
const coreDestDir = join(typesDir, "core");
|
|
101
|
+
const srcDir = join(corePkgPath, "src");
|
|
102
|
+
if (existsSync(srcDir)) {
|
|
103
|
+
const count = copyTypeFiles(srcDir, coreDestDir);
|
|
104
|
+
// Also copy package.json
|
|
105
|
+
if (existsSync(join(corePkgPath, "package.json"))) {
|
|
106
|
+
cpSync(join(corePkgPath, "package.json"), join(coreDestDir, "package.json"));
|
|
107
|
+
}
|
|
108
|
+
synced.push(`@intentius/chant (${count} files)`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
warnings.push("@intentius/chant not found in node_modules");
|
|
113
|
+
}
|
|
114
|
+
// Sync each lexicon
|
|
115
|
+
for (const lexicon of lexicons) {
|
|
116
|
+
// chant #2520 — a lexicon declared by module path is project source, with
|
|
117
|
+
// no package to copy types from.
|
|
118
|
+
if (lexiconModulePath(lexicon) !== undefined)
|
|
119
|
+
continue;
|
|
120
|
+
const pkgName = `@intentius/chant-lexicon-${lexicon}`;
|
|
121
|
+
const pkgPath = resolvePackagePath(pkgName, projectDir);
|
|
122
|
+
if (!pkgPath) {
|
|
123
|
+
warnings.push(`${pkgName} not found in node_modules. Run "npm install" first.`);
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
const lexiconDestDir = join(typesDir, `lexicon-${lexicon}`);
|
|
127
|
+
const srcDir = join(pkgPath, "src");
|
|
128
|
+
if (existsSync(srcDir)) {
|
|
129
|
+
const count = copyTypeFiles(srcDir, lexiconDestDir);
|
|
130
|
+
if (existsSync(join(pkgPath, "package.json"))) {
|
|
131
|
+
cpSync(join(pkgPath, "package.json"), join(lexiconDestDir, "package.json"));
|
|
132
|
+
}
|
|
133
|
+
synced.push(`${pkgName} (${count} files)`);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
warnings.push(`${pkgName} has no src/ directory`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// Install skills from plugins
|
|
140
|
+
try {
|
|
141
|
+
const plugins = await loadPlugins(lexicons);
|
|
142
|
+
for (const plugin of plugins) {
|
|
143
|
+
if (plugin.skills) {
|
|
144
|
+
const skills = plugin.skills();
|
|
145
|
+
if (skills.length > 0) {
|
|
146
|
+
for (const skill of skills) {
|
|
147
|
+
const file = join(projectDir, skillFilePath(skill.name));
|
|
148
|
+
mkdirSync(dirname(file), { recursive: true });
|
|
149
|
+
writeFileSync(file, skill.content);
|
|
150
|
+
}
|
|
151
|
+
synced.push(`${plugin.name} skills (${skills.length})`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
// Skills are optional — don't fail the update if plugin loading fails
|
|
158
|
+
warnings.push("Could not load plugins for skill installation");
|
|
159
|
+
}
|
|
160
|
+
// Restore the project's MCP registration if it went missing. This is what
|
|
161
|
+
// makes the doctor's `mcp-config` remediation runnable: `chant init`
|
|
162
|
+
// refuses a non-empty directory without --force, so an already scaffolded
|
|
163
|
+
// project needs some other command to put the file back, and this is the
|
|
164
|
+
// same command the doctor's skills check already points at (chant #2383).
|
|
165
|
+
const writtenMcp = writeProjectMcpConfig(projectDir);
|
|
166
|
+
if (writtenMcp)
|
|
167
|
+
synced.push(writtenMcp);
|
|
168
|
+
return {
|
|
169
|
+
success: true,
|
|
170
|
+
synced,
|
|
171
|
+
warnings,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Print update result
|
|
176
|
+
*/
|
|
177
|
+
export function printUpdateResult(result) {
|
|
178
|
+
if (!result.success) {
|
|
179
|
+
console.error(formatError({ message: result.error ?? "Update failed" }));
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
for (const warning of result.warnings) {
|
|
183
|
+
console.error(formatWarning({ message: warning }));
|
|
184
|
+
}
|
|
185
|
+
if (result.synced.length > 0) {
|
|
186
|
+
console.log(formatSuccess("Synced types:"));
|
|
187
|
+
for (const item of result.synced) {
|
|
188
|
+
console.log(` ${item}`);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
console.log("No types synced.");
|
|
193
|
+
}
|
|
194
|
+
}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `chant vendor` — pull reusable patterns (composites as source, Ops, init
|
|
3
|
+
* templates, example skeletons) from a remote source into your own repo, pinned
|
|
4
|
+
* and auditable.
|
|
5
|
+
*
|
|
6
|
+
* This is for patterns you copy in and **own/adapt**, recorded in a manifest
|
|
7
|
+
* (`vendor.json`) with a checksum so provenance is verifiable. It is NOT a
|
|
8
|
+
* package manager: lexicons stay npm dependencies (the typed API you import,
|
|
9
|
+
* never edit). Vendoring exists for the source npm handles badly — code you want
|
|
10
|
+
* in-repo, reviewable in diffs, and adaptable.
|
|
11
|
+
*
|
|
12
|
+
* Reuses the existing fetch/extract infra (`codegen/fetch.ts`); the only new
|
|
13
|
+
* machinery is the manifest + copy-to-repo + checksum.
|
|
14
|
+
*/
|
|
15
|
+
import { createHash } from "node:crypto";
|
|
16
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync, } from "node:fs";
|
|
17
|
+
import { dirname, join, relative, resolve, sep } from "node:path";
|
|
18
|
+
import { z } from "zod";
|
|
19
|
+
import { fetchWithRetry, extractFromTar, extractFromZip } from "../../codegen/fetch.js";
|
|
20
|
+
// ── Manifest schema ─────────────────────────────────────────────────────────
|
|
21
|
+
const SourceSchema = z.discriminatedUnion("type", [
|
|
22
|
+
z.object({ type: z.literal("local"), path: z.string().min(1) }),
|
|
23
|
+
z.object({ type: z.literal("archive"), url: z.string().url(), subpath: z.string().optional() }),
|
|
24
|
+
]);
|
|
25
|
+
const EntrySchema = z.object({
|
|
26
|
+
/** Stable identity for the vendored artifact (used by `pull <name>`). */
|
|
27
|
+
name: z.string().min(1),
|
|
28
|
+
source: SourceSchema,
|
|
29
|
+
/** Path in your repo to write the pulled content. */
|
|
30
|
+
target: z.string().min(1),
|
|
31
|
+
/** The pin — a git tag / version label, for provenance (informational). */
|
|
32
|
+
ref: z.string().optional(),
|
|
33
|
+
/** sha256 of the pulled content. Written by `pull`, verified by `check`. */
|
|
34
|
+
checksum: z.string().optional(),
|
|
35
|
+
/** Only "pin" (explicit-bump) is supported; floating refs are out of scope. */
|
|
36
|
+
updatePolicy: z.literal("pin").optional(),
|
|
37
|
+
});
|
|
38
|
+
export const VendorManifestSchema = z.object({
|
|
39
|
+
vendored: z.array(EntrySchema),
|
|
40
|
+
});
|
|
41
|
+
export const MANIFEST_FILE = "vendor.json";
|
|
42
|
+
// ── Content hashing ───────────────────────────────────────────────────────��─
|
|
43
|
+
/**
|
|
44
|
+
* Deterministic sha256 over a file set — independent of fetch/extract order.
|
|
45
|
+
* Hashes each `path\0content\0` in sorted-path order.
|
|
46
|
+
*/
|
|
47
|
+
export function contentHash(files) {
|
|
48
|
+
const h = createHash("sha256");
|
|
49
|
+
for (const path of [...files.keys()].sort()) {
|
|
50
|
+
h.update(path);
|
|
51
|
+
h.update("\0");
|
|
52
|
+
h.update(files.get(path));
|
|
53
|
+
h.update("\0");
|
|
54
|
+
}
|
|
55
|
+
return `sha256:${h.digest("hex")}`;
|
|
56
|
+
}
|
|
57
|
+
// ── Source resolution → a { relpath → bytes } file set ──────────────────────
|
|
58
|
+
/** Walk a local directory into a relpath→bytes map (or a single file). */
|
|
59
|
+
export function readLocal(absPath) {
|
|
60
|
+
const files = new Map();
|
|
61
|
+
const stat = statSync(absPath);
|
|
62
|
+
if (stat.isFile()) {
|
|
63
|
+
files.set(absPath.split(sep).pop(), readFileSync(absPath));
|
|
64
|
+
return files;
|
|
65
|
+
}
|
|
66
|
+
const walk = (dir) => {
|
|
67
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
68
|
+
const full = join(dir, entry.name);
|
|
69
|
+
if (entry.isDirectory())
|
|
70
|
+
walk(full);
|
|
71
|
+
else if (entry.isFile()) {
|
|
72
|
+
files.set(relative(absPath, full).split(sep).join("/"), readFileSync(full));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
walk(absPath);
|
|
77
|
+
return files;
|
|
78
|
+
}
|
|
79
|
+
/** Fetch + extract an archive (tar.gz/tgz/zip), scoped to an optional subpath. */
|
|
80
|
+
async function readArchive(url, subpath) {
|
|
81
|
+
const resp = await fetchWithRetry(url);
|
|
82
|
+
const bytes = new Uint8Array(await resp.arrayBuffer());
|
|
83
|
+
let raw;
|
|
84
|
+
if (url.endsWith(".zip")) {
|
|
85
|
+
raw = await extractFromZip(Buffer.from(bytes));
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
// .tar.gz / .tgz — gunzip then untar (matches fetchAndExtractTar).
|
|
89
|
+
const { gunzipSync } = await import("fflate");
|
|
90
|
+
raw = extractFromTar(gunzipSync(bytes));
|
|
91
|
+
}
|
|
92
|
+
return scopeArchiveFiles(raw, subpath);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Normalize an extracted archive: strip the single top-level wrapper directory
|
|
96
|
+
* (e.g. "repo-main/") that archives commonly add, then scope to `subpath`.
|
|
97
|
+
* Pure — separated from the network fetch so the scoping is unit-testable.
|
|
98
|
+
*/
|
|
99
|
+
export function scopeArchiveFiles(raw, subpath) {
|
|
100
|
+
const prefix = subpath ? subpath.replace(/^\/+|\/+$/g, "") + "/" : "";
|
|
101
|
+
const files = new Map();
|
|
102
|
+
for (const [name, data] of raw) {
|
|
103
|
+
const slash = name.indexOf("/");
|
|
104
|
+
const rel = slash >= 0 ? name.slice(slash + 1) : name;
|
|
105
|
+
if (!rel || !rel.startsWith(prefix))
|
|
106
|
+
continue;
|
|
107
|
+
const local = rel.slice(prefix.length);
|
|
108
|
+
if (local)
|
|
109
|
+
files.set(local, data);
|
|
110
|
+
}
|
|
111
|
+
return files;
|
|
112
|
+
}
|
|
113
|
+
async function resolveSource(entry, manifestDir) {
|
|
114
|
+
return resolveVendorSource(entry.source, manifestDir);
|
|
115
|
+
}
|
|
116
|
+
/** Resolve a vendor source (a local path, or an archive URL) to its file set. */
|
|
117
|
+
export async function resolveVendorSource(source, manifestDir) {
|
|
118
|
+
if (source.type === "local") {
|
|
119
|
+
const abs = resolve(manifestDir, source.path);
|
|
120
|
+
if (!existsSync(abs))
|
|
121
|
+
throw new Error(`local source not found: ${source.path}`);
|
|
122
|
+
return readLocal(abs);
|
|
123
|
+
}
|
|
124
|
+
return readArchive(source.url, source.subpath);
|
|
125
|
+
}
|
|
126
|
+
// ── File I/O ────────────────────────────────────────────────────────────────
|
|
127
|
+
function writeFiles(targetDir, files) {
|
|
128
|
+
if (existsSync(targetDir))
|
|
129
|
+
rmSync(targetDir, { recursive: true });
|
|
130
|
+
for (const [rel, data] of files) {
|
|
131
|
+
const full = join(targetDir, rel);
|
|
132
|
+
mkdirSync(dirname(full), { recursive: true });
|
|
133
|
+
writeFileSync(full, data);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
export function readTarget(targetDir) {
|
|
137
|
+
if (!existsSync(targetDir))
|
|
138
|
+
return new Map();
|
|
139
|
+
return readLocal(targetDir);
|
|
140
|
+
}
|
|
141
|
+
// ── Manifest load/save ────────────────────────────────────────────────────��─
|
|
142
|
+
export function loadManifest(manifestDir) {
|
|
143
|
+
const path = join(manifestDir, MANIFEST_FILE);
|
|
144
|
+
if (!existsSync(path)) {
|
|
145
|
+
throw new Error(`no ${MANIFEST_FILE} found in ${manifestDir}`);
|
|
146
|
+
}
|
|
147
|
+
const parsed = VendorManifestSchema.safeParse(JSON.parse(readFileSync(path, "utf-8")));
|
|
148
|
+
if (!parsed.success) {
|
|
149
|
+
throw new Error(`invalid ${MANIFEST_FILE}: ${parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; ")}`);
|
|
150
|
+
}
|
|
151
|
+
return { manifest: parsed.data, path };
|
|
152
|
+
}
|
|
153
|
+
function saveManifest(path, manifest) {
|
|
154
|
+
writeFileSync(path, JSON.stringify(manifest, null, 2) + "\n");
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Pull each vendored entry (or just `only`): resolve the source, write it into
|
|
158
|
+
* `target`, and record the content checksum back into the manifest.
|
|
159
|
+
*/
|
|
160
|
+
export async function vendorPull(manifestDir, only) {
|
|
161
|
+
const { manifest, path } = loadManifest(manifestDir);
|
|
162
|
+
const entries = only ? manifest.vendored.filter((e) => e.name === only) : manifest.vendored;
|
|
163
|
+
if (only && entries.length === 0) {
|
|
164
|
+
return { success: false, pulled: [], output: `no vendored entry named "${only}"` };
|
|
165
|
+
}
|
|
166
|
+
const pulled = [];
|
|
167
|
+
for (const entry of entries) {
|
|
168
|
+
const files = await resolveSource(entry, manifestDir);
|
|
169
|
+
const checksum = contentHash(files);
|
|
170
|
+
writeFiles(resolve(manifestDir, entry.target), files);
|
|
171
|
+
entry.checksum = checksum;
|
|
172
|
+
pulled.push({ name: entry.name, target: entry.target, checksum, fileCount: files.size });
|
|
173
|
+
}
|
|
174
|
+
saveManifest(path, manifest);
|
|
175
|
+
const output = pulled
|
|
176
|
+
.map((p) => ` ${p.name} → ${p.target} (${p.fileCount} file(s), ${p.checksum.slice(0, 19)}…)`)
|
|
177
|
+
.join("\n");
|
|
178
|
+
return { success: true, pulled, output };
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Verify each target's working copy against its recorded checksum. Editing
|
|
182
|
+
* vendored files is allowed — `check` only reports that they diverged from the
|
|
183
|
+
* pin. The caller decides whether drift is fatal (CI) or a warning (local).
|
|
184
|
+
*/
|
|
185
|
+
export function vendorCheck(manifestDir) {
|
|
186
|
+
const { manifest } = loadManifest(manifestDir);
|
|
187
|
+
const entries = [];
|
|
188
|
+
let drift = false;
|
|
189
|
+
for (const entry of manifest.vendored) {
|
|
190
|
+
const targetAbs = resolve(manifestDir, entry.target);
|
|
191
|
+
if (!entry.checksum) {
|
|
192
|
+
entries.push({ name: entry.name, status: "unpinned" });
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
if (!existsSync(targetAbs)) {
|
|
196
|
+
entries.push({ name: entry.name, status: "missing" });
|
|
197
|
+
drift = true;
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
const actual = contentHash(readTarget(targetAbs));
|
|
201
|
+
if (actual === entry.checksum) {
|
|
202
|
+
entries.push({ name: entry.name, status: "ok" });
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
entries.push({ name: entry.name, status: "drifted" });
|
|
206
|
+
drift = true;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
const label = {
|
|
210
|
+
ok: "ok",
|
|
211
|
+
drifted: "DRIFTED (working copy differs from the pin)",
|
|
212
|
+
unpinned: "unpinned — run `chant vendor pull` to record a checksum",
|
|
213
|
+
missing: "MISSING — target not found; run `chant vendor pull`",
|
|
214
|
+
};
|
|
215
|
+
const output = entries.map((e) => ` ${e.name}: ${label[e.status]}`).join("\n");
|
|
216
|
+
return { success: !drift, drift, entries, output };
|
|
217
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { RESERVED_COMMAND_NAMES } from "./command-group.js";
|
|
2
|
+
/**
|
|
3
|
+
* Check loaded lexicon plugins for cross-lexicon conflicts.
|
|
4
|
+
*
|
|
5
|
+
* - Duplicate rule IDs are hard conflicts (should cause a throw at load time).
|
|
6
|
+
* - Duplicate skill, MCP tool, or MCP resource names are soft conflicts (warnings).
|
|
7
|
+
*/
|
|
8
|
+
export function checkConflicts(plugins) {
|
|
9
|
+
const conflicts = [];
|
|
10
|
+
const warnings = [];
|
|
11
|
+
// Check rule ID conflicts (hard conflict)
|
|
12
|
+
const ruleIds = new Map();
|
|
13
|
+
for (const plugin of plugins) {
|
|
14
|
+
const rules = plugin.lintRules?.() ?? [];
|
|
15
|
+
for (const rule of rules) {
|
|
16
|
+
const existing = ruleIds.get(rule.id) ?? [];
|
|
17
|
+
existing.push(plugin.name);
|
|
18
|
+
ruleIds.set(rule.id, existing);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
for (const [id, owners] of ruleIds) {
|
|
22
|
+
if (owners.length > 1) {
|
|
23
|
+
conflicts.push({ type: "rule-id", key: id, plugins: owners });
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
// Check skill name conflicts (warning)
|
|
27
|
+
const skillNames = new Map();
|
|
28
|
+
for (const plugin of plugins) {
|
|
29
|
+
const skills = plugin.skills?.() ?? [];
|
|
30
|
+
for (const skill of skills) {
|
|
31
|
+
const existing = skillNames.get(skill.name) ?? [];
|
|
32
|
+
existing.push(plugin.name);
|
|
33
|
+
skillNames.set(skill.name, existing);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
for (const [name, owners] of skillNames) {
|
|
37
|
+
if (owners.length > 1) {
|
|
38
|
+
warnings.push({ type: "skill-name", key: name, plugins: owners });
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Check MCP tool name conflicts (warning)
|
|
42
|
+
const mcpToolNames = new Map();
|
|
43
|
+
for (const plugin of plugins) {
|
|
44
|
+
const tools = plugin.mcpTools?.() ?? [];
|
|
45
|
+
for (const tool of tools) {
|
|
46
|
+
const existing = mcpToolNames.get(tool.name) ?? [];
|
|
47
|
+
existing.push(plugin.name);
|
|
48
|
+
mcpToolNames.set(tool.name, existing);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
for (const [name, owners] of mcpToolNames) {
|
|
52
|
+
if (owners.length > 1) {
|
|
53
|
+
warnings.push({ type: "mcp-tool", key: name, plugins: owners });
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Check MCP resource URI conflicts (warning)
|
|
57
|
+
const mcpResourceUris = new Map();
|
|
58
|
+
for (const plugin of plugins) {
|
|
59
|
+
const resources = plugin.mcpResources?.() ?? [];
|
|
60
|
+
for (const resource of resources) {
|
|
61
|
+
const existing = mcpResourceUris.get(resource.uri) ?? [];
|
|
62
|
+
existing.push(plugin.name);
|
|
63
|
+
mcpResourceUris.set(resource.uri, existing);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
for (const [uri, owners] of mcpResourceUris) {
|
|
67
|
+
if (owners.length > 1) {
|
|
68
|
+
warnings.push({ type: "mcp-resource", key: uri, plugins: owners });
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Check command-group name conflicts (hard, chant #1078). Two shapes:
|
|
72
|
+
// two lexicons claiming the same group name (only one would ever be
|
|
73
|
+
// reachable, silently), or one lexicon claiming a name core's own static
|
|
74
|
+
// registry already owns (permanently unreachable — core resolves its own
|
|
75
|
+
// registry first, unconditionally). Either is a silent-shadowing bug
|
|
76
|
+
// class, so both are hard conflicts rather than warnings.
|
|
77
|
+
const commandGroupNames = new Map();
|
|
78
|
+
for (const plugin of plugins) {
|
|
79
|
+
const group = plugin.commands?.();
|
|
80
|
+
if (!group)
|
|
81
|
+
continue;
|
|
82
|
+
const existing = commandGroupNames.get(group.name) ?? [];
|
|
83
|
+
existing.push(plugin.name);
|
|
84
|
+
commandGroupNames.set(group.name, existing);
|
|
85
|
+
}
|
|
86
|
+
for (const [name, owners] of commandGroupNames) {
|
|
87
|
+
if (owners.length > 1 || RESERVED_COMMAND_NAMES.has(name)) {
|
|
88
|
+
conflicts.push({ type: "command-group-name", key: name, plugins: owners });
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return { conflicts, warnings };
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* One line of the load-time error for a conflict. A command-group name that
|
|
95
|
+
* core reserves says so and says what to do, since the lexicon author reading
|
|
96
|
+
* it may not know the word is core's (#2529).
|
|
97
|
+
*/
|
|
98
|
+
export function describeConflict(c) {
|
|
99
|
+
const line = ` ${c.type} "${c.key}" from: ${c.plugins.join(", ")}`;
|
|
100
|
+
if (c.type === "command-group-name" && RESERVED_COMMAND_NAMES.has(c.key)) {
|
|
101
|
+
return `${line} — "${c.key}" is a reserved chant command name, so no lexicon can register a command group with it. Rename the group.`;
|
|
102
|
+
}
|
|
103
|
+
return line;
|
|
104
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Debug logger — outputs to stderr when CHANT_DEBUG env var or --verbose/-v flag is set.
|
|
3
|
+
*/
|
|
4
|
+
export function debug(...args) {
|
|
5
|
+
if (process.env.CHANT_DEBUG || process.argv.includes("--verbose") || process.argv.includes("-v")) {
|
|
6
|
+
console.error("[chant:debug]", ...args);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ANSI color codes for terminal output
|
|
3
|
+
*/
|
|
4
|
+
const colors = {
|
|
5
|
+
red: "\x1b[31m",
|
|
6
|
+
yellow: "\x1b[33m",
|
|
7
|
+
green: "\x1b[32m",
|
|
8
|
+
cyan: "\x1b[36m",
|
|
9
|
+
gray: "\x1b[90m",
|
|
10
|
+
reset: "\x1b[0m",
|
|
11
|
+
bold: "\x1b[1m",
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Check if colors should be used (respects NO_COLOR env var)
|
|
15
|
+
*/
|
|
16
|
+
function useColors() {
|
|
17
|
+
return !process.env.NO_COLOR && process.stdout.isTTY !== false;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Apply color if colors are enabled
|
|
21
|
+
*/
|
|
22
|
+
function color(text, colorCode) {
|
|
23
|
+
if (!useColors())
|
|
24
|
+
return text;
|
|
25
|
+
return `${colorCode}${text}${colors.reset}`;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Format an error with ANSI colors
|
|
29
|
+
* Shows file:line:column in cyan, error in red
|
|
30
|
+
*/
|
|
31
|
+
export function formatError(error) {
|
|
32
|
+
const parts = [];
|
|
33
|
+
// Location prefix
|
|
34
|
+
if (error.file) {
|
|
35
|
+
let location = error.file;
|
|
36
|
+
if (error.line !== undefined) {
|
|
37
|
+
location += `:${error.line}`;
|
|
38
|
+
if (error.column !== undefined) {
|
|
39
|
+
location += `:${error.column}`;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
parts.push(color(location, colors.cyan));
|
|
43
|
+
parts.push(" - ");
|
|
44
|
+
}
|
|
45
|
+
// Error type
|
|
46
|
+
parts.push(color("error", colors.red));
|
|
47
|
+
parts.push(": ");
|
|
48
|
+
// Message
|
|
49
|
+
parts.push(error.message);
|
|
50
|
+
// Hint
|
|
51
|
+
if (error.hint) {
|
|
52
|
+
parts.push("\n ");
|
|
53
|
+
parts.push(color(error.hint, colors.gray));
|
|
54
|
+
}
|
|
55
|
+
return parts.join("");
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Format a warning with ANSI colors
|
|
59
|
+
* Shows file:line:column in cyan, warning in yellow
|
|
60
|
+
*/
|
|
61
|
+
export function formatWarning(warning) {
|
|
62
|
+
const parts = [];
|
|
63
|
+
// Location prefix
|
|
64
|
+
if (warning.file) {
|
|
65
|
+
let location = warning.file;
|
|
66
|
+
if (warning.line !== undefined) {
|
|
67
|
+
location += `:${warning.line}`;
|
|
68
|
+
if (warning.column !== undefined) {
|
|
69
|
+
location += `:${warning.column}`;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
parts.push(color(location, colors.cyan));
|
|
73
|
+
parts.push(" - ");
|
|
74
|
+
}
|
|
75
|
+
// Warning type
|
|
76
|
+
parts.push(color("warning", colors.yellow));
|
|
77
|
+
parts.push(": ");
|
|
78
|
+
// Message
|
|
79
|
+
parts.push(warning.message);
|
|
80
|
+
// Hint
|
|
81
|
+
if (warning.hint) {
|
|
82
|
+
parts.push("\n ");
|
|
83
|
+
parts.push(color(warning.hint, colors.gray));
|
|
84
|
+
}
|
|
85
|
+
return parts.join("");
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Format a success message in green
|
|
89
|
+
*/
|
|
90
|
+
export function formatSuccess(message) {
|
|
91
|
+
return color(message, colors.green);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Format an info message in gray
|
|
95
|
+
*/
|
|
96
|
+
export function formatInfo(message) {
|
|
97
|
+
return color(message, colors.gray);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Format a count/stat in bold
|
|
101
|
+
*/
|
|
102
|
+
export function formatBold(text) {
|
|
103
|
+
return color(text, colors.bold);
|
|
104
|
+
}
|