kibi-cli 2.0.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli-protocol.d.ts.map +1 -1
- package/dist/cli-protocol.js +3 -2
- package/dist/cli-register-proof.d.ts.map +1 -1
- package/dist/cli-register-proof.js +25 -1
- package/dist/cli-register-reporting.d.ts.map +1 -1
- package/dist/cli-register-reporting.js +6 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2 -0
- package/dist/commands/aggregated-checks.d.ts +7 -0
- package/dist/commands/aggregated-checks.d.ts.map +1 -1
- package/dist/commands/aggregated-checks.js +25 -1
- package/dist/commands/check-generated.d.ts +7 -0
- package/dist/commands/check-generated.d.ts.map +1 -0
- package/dist/commands/check-generated.js +192 -0
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +24 -15
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +227 -25
- package/dist/commands/engine.d.ts.map +1 -1
- package/dist/commands/engine.js +3 -1
- package/dist/commands/github-init.d.ts +1 -1
- package/dist/commands/github-init.d.ts.map +1 -1
- package/dist/commands/github-init.js +1 -1
- package/dist/commands/init-helpers.d.ts +17 -2
- package/dist/commands/init-helpers.d.ts.map +1 -1
- package/dist/commands/init-helpers.js +136 -30
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +110 -15
- package/dist/commands/proof-explain.d.ts +10 -0
- package/dist/commands/proof-explain.d.ts.map +1 -0
- package/dist/commands/proof-explain.js +45 -0
- package/dist/commands/proof-impact.d.ts +7 -0
- package/dist/commands/proof-impact.d.ts.map +1 -0
- package/dist/commands/proof-impact.js +39 -0
- package/dist/commands/proof-migrate-legacy.js +1 -1
- package/dist/commands/proof-prune.js +1 -1
- package/dist/commands/prove.d.ts.map +1 -1
- package/dist/commands/prove.js +14 -22
- package/dist/commands/report.d.ts.map +1 -1
- package/dist/commands/report.js +17 -2
- package/dist/commands/sync/cache.d.ts +20 -1
- package/dist/commands/sync/cache.d.ts.map +1 -1
- package/dist/commands/sync/cache.js +51 -2
- package/dist/commands/sync/discovery.d.ts.map +1 -1
- package/dist/commands/sync/discovery.js +1 -1
- package/dist/commands/sync/manifest.d.ts +1 -0
- package/dist/commands/sync/manifest.d.ts.map +1 -1
- package/dist/commands/sync/manifest.js +18 -16
- package/dist/commands/sync/persistence.d.ts.map +1 -1
- package/dist/commands/sync/persistence.js +14 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +11 -3
- package/dist/engine.d.ts +29 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +259 -89
- package/dist/env/bootstrap.d.ts +84 -0
- package/dist/env/bootstrap.d.ts.map +1 -0
- package/dist/env/bootstrap.js +310 -0
- package/dist/extractors/manifest.d.ts.map +1 -1
- package/dist/extractors/manifest.js +67 -29
- package/dist/extractors/markdown.d.ts +4 -0
- package/dist/extractors/markdown.d.ts.map +1 -1
- package/dist/extractors/markdown.js +33 -3
- package/dist/extractors/relationships.d.ts.map +1 -1
- package/dist/extractors/relationships.js +1 -0
- package/dist/extractors/symbols-coordinator.d.ts +8 -0
- package/dist/extractors/symbols-coordinator.d.ts.map +1 -1
- package/dist/extractors/symbols-coordinator.js +40 -0
- package/dist/extractors/symbols-ts.d.ts +8 -19
- package/dist/extractors/symbols-ts.d.ts.map +1 -1
- package/dist/extractors/symbols-ts.js +33 -503
- package/dist/intent-search.d.ts.map +1 -1
- package/dist/intent-search.js +68 -30
- package/dist/operations/bootstrap/generate.d.ts.map +1 -1
- package/dist/operations/bootstrap/generate.js +4 -3
- package/dist/operations/modeling/model-requirement.d.ts +1 -1
- package/dist/operations/modeling/model-requirement.d.ts.map +1 -1
- package/dist/operations/modeling/model-requirement.js +179 -9
- package/dist/operations/modeling/predicate-applyplan.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-applyplan.js +14 -2
- package/dist/operations/modeling/predicate-loader.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-loader.js +24 -0
- package/dist/operations/modeling/predicate-types.d.ts +4 -0
- package/dist/operations/modeling/predicate-types.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-vocabulary.d.ts +54 -0
- package/dist/operations/modeling/predicate-vocabulary.d.ts.map +1 -0
- package/dist/operations/modeling/predicate-vocabulary.js +169 -0
- package/dist/operations/modeling/requirement-types.d.ts +5 -0
- package/dist/operations/modeling/requirement-types.d.ts.map +1 -1
- package/dist/operations/modeling/suggest-predicates.d.ts +1 -1
- package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
- package/dist/operations/modeling/suggest-predicates.js +30 -3
- package/dist/operations/modeling/vocabulary-alignment.d.ts +60 -0
- package/dist/operations/modeling/vocabulary-alignment.d.ts.map +1 -0
- package/dist/operations/modeling/vocabulary-alignment.js +178 -0
- package/dist/operations/mutation/contradictions.d.ts +3 -0
- package/dist/operations/mutation/contradictions.d.ts.map +1 -1
- package/dist/operations/mutation/contradictions.js +29 -0
- package/dist/operations/mutation/delete.d.ts.map +1 -1
- package/dist/operations/mutation/delete.js +33 -1
- package/dist/operations/mutation/predicate-vocabulary-guard.d.ts +8 -0
- package/dist/operations/mutation/predicate-vocabulary-guard.d.ts.map +1 -0
- package/dist/operations/mutation/predicate-vocabulary-guard.js +64 -0
- package/dist/operations/mutation/relationships.d.ts +1 -1
- package/dist/operations/mutation/relationships.d.ts.map +1 -1
- package/dist/operations/mutation/relationships.js +1 -0
- package/dist/operations/mutation/saga.d.ts +5 -0
- package/dist/operations/mutation/saga.d.ts.map +1 -1
- package/dist/operations/mutation/saga.js +10 -0
- package/dist/operations/mutation/serialization.d.ts.map +1 -1
- package/dist/operations/mutation/serialization.js +2 -0
- package/dist/operations/mutation/source-authoring.d.ts +6 -0
- package/dist/operations/mutation/source-authoring.d.ts.map +1 -1
- package/dist/operations/mutation/source-authoring.js +65 -26
- package/dist/operations/mutation/strict-fact.d.ts.map +1 -1
- package/dist/operations/mutation/strict-fact.js +5 -0
- package/dist/operations/mutation/symbol-granularity.d.ts.map +1 -1
- package/dist/operations/mutation/symbol-granularity.js +9 -87
- package/dist/operations/mutation/types.d.ts +17 -0
- package/dist/operations/mutation/types.d.ts.map +1 -1
- package/dist/operations/mutation/upsert.d.ts +6 -0
- package/dist/operations/mutation/upsert.d.ts.map +1 -1
- package/dist/operations/mutation/upsert.js +72 -4
- package/dist/operations/mutation/validate-upsert.d.ts.map +1 -1
- package/dist/operations/mutation/validate-upsert.js +24 -1
- package/dist/operations/mutation/validation.d.ts.map +1 -1
- package/dist/operations/mutation/validation.js +16 -3
- package/dist/operations/planning/apply-plan.d.ts.map +1 -1
- package/dist/operations/planning/apply-plan.js +61 -17
- package/dist/operations/planning/compile-intent.d.ts +49 -0
- package/dist/operations/planning/compile-intent.d.ts.map +1 -1
- package/dist/operations/planning/compile-intent.js +66 -4
- package/dist/operations/proof/baseline-diff.d.ts +41 -0
- package/dist/operations/proof/baseline-diff.d.ts.map +1 -0
- package/dist/operations/proof/baseline-diff.js +153 -0
- package/dist/operations/proof/code-scope.d.ts +17 -0
- package/dist/operations/proof/code-scope.d.ts.map +1 -0
- package/dist/operations/proof/code-scope.js +60 -0
- package/dist/operations/proof/explain.d.ts +75 -0
- package/dist/operations/proof/explain.d.ts.map +1 -0
- package/dist/operations/proof/explain.js +294 -0
- package/dist/operations/proof/impact.d.ts +45 -0
- package/dist/operations/proof/impact.d.ts.map +1 -0
- package/dist/operations/proof/impact.js +118 -0
- package/dist/operations/proof/ingest-proof.d.ts +4 -2
- package/dist/operations/proof/ingest-proof.d.ts.map +1 -1
- package/dist/operations/proof/ingest-proof.js +251 -77
- package/dist/operations/proof/migrate-legacy-receipts.d.ts.map +1 -1
- package/dist/operations/proof/migrate-legacy-receipts.js +28 -22
- package/dist/operations/proof/prune-receipts.d.ts.map +1 -1
- package/dist/operations/proof/prune-receipts.js +8 -6
- package/dist/operations/proof/receipt-document.js +2 -2
- package/dist/operations/semantic-advisor/analysis-receipt.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/analysis-receipt.js +3 -9
- package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/analyze-prose.js +18 -67
- package/dist/operations/semantic-advisor/plugin-orchestration.d.ts +63 -0
- package/dist/operations/semantic-advisor/plugin-orchestration.d.ts.map +1 -0
- package/dist/operations/semantic-advisor/plugin-orchestration.js +489 -0
- package/dist/operations/semantic-advisor/predicate-rules-core.d.ts +15 -2
- package/dist/operations/semantic-advisor/predicate-rules-core.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/predicate-rules-core.js +7 -140
- package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts +11 -12
- package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/predicate-rules-launcher.js +6 -94
- package/dist/operations/semantic-advisor/predicate-rules-policy.d.ts +16 -0
- package/dist/operations/semantic-advisor/predicate-rules-policy.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/predicate-rules-policy.js +7 -150
- package/dist/operations/semantic-advisor/predicate-rules-product-tail.d.ts +9 -0
- package/dist/operations/semantic-advisor/predicate-rules-product-tail.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/predicate-rules-product-tail.js +7 -102
- package/dist/operations/semantic-advisor/predicate-rules-product.d.ts +13 -0
- package/dist/operations/semantic-advisor/predicate-rules-product.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/predicate-rules-product.js +7 -133
- package/dist/operations/semantic-advisor/types.d.ts +1 -0
- package/dist/operations/semantic-advisor/types.d.ts.map +1 -1
- package/dist/plugins/compose-ontology-packs.d.ts +51 -0
- package/dist/plugins/compose-ontology-packs.d.ts.map +1 -0
- package/dist/plugins/compose-ontology-packs.js +257 -0
- package/dist/plugins/compose-semantic-classifier.d.ts +47 -0
- package/dist/plugins/compose-semantic-classifier.d.ts.map +1 -0
- package/dist/plugins/compose-semantic-classifier.js +216 -0
- package/dist/plugins/compose-vocabulary-alignment.d.ts +23 -0
- package/dist/plugins/compose-vocabulary-alignment.d.ts.map +1 -0
- package/dist/plugins/compose-vocabulary-alignment.js +141 -0
- package/dist/plugins/external-allowlist.d.ts +17 -0
- package/dist/plugins/external-allowlist.d.ts.map +1 -0
- package/dist/plugins/external-allowlist.js +29 -0
- package/dist/plugins/index.d.ts +11 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +37 -0
- package/dist/plugins/load-plugin.d.ts +19 -0
- package/dist/plugins/load-plugin.d.ts.map +1 -0
- package/dist/plugins/load-plugin.js +59 -0
- package/dist/plugins/project-config.d.ts +28 -0
- package/dist/plugins/project-config.d.ts.map +1 -0
- package/dist/plugins/project-config.js +90 -0
- package/dist/plugins/registry.d.ts +94 -0
- package/dist/plugins/registry.d.ts.map +1 -0
- package/dist/plugins/registry.js +359 -0
- package/dist/plugins/resolve-package.d.ts +47 -0
- package/dist/plugins/resolve-package.d.ts.map +1 -0
- package/dist/plugins/resolve-package.js +262 -0
- package/dist/plugins/source-analysis-service.d.ts +44 -0
- package/dist/plugins/source-analysis-service.d.ts.map +1 -0
- package/dist/plugins/source-analysis-service.js +232 -0
- package/dist/prolog/codec.d.ts.map +1 -1
- package/dist/prolog/codec.js +2 -0
- package/dist/prolog/janitor.d.ts.map +1 -1
- package/dist/prolog/janitor.js +1 -1
- package/dist/prolog/store-lock.d.ts +1 -1
- package/dist/prolog/store-lock.d.ts.map +1 -1
- package/dist/prolog.d.ts +36 -0
- package/dist/prolog.d.ts.map +1 -1
- package/dist/prolog.js +78 -9
- package/dist/proof/inspect.js +1 -1
- package/dist/proof/producers/playwright-case-id.js +2 -2
- package/dist/proof/producers/playwright-reporter.js +4 -4
- package/dist/public/diagnostic-usage.d.ts.map +1 -1
- package/dist/public/diagnostic-usage.js +7 -25
- package/dist/public/extractors/symbols-coordinator.d.ts +1 -1
- package/dist/public/extractors/symbols-coordinator.d.ts.map +1 -1
- package/dist/public/extractors/symbols-coordinator.js +1 -1
- package/dist/public/impact/analyzer.d.ts +1 -1
- package/dist/public/impact/analyzer.d.ts.map +1 -1
- package/dist/public/impact/analyzer.js +6 -4
- package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
- package/dist/public/impact/full-kb-quality.js +4 -12
- package/dist/public/operations/catalog.d.ts +39 -7
- package/dist/public/operations/catalog.d.ts.map +1 -1
- package/dist/public/operations/check-executor.d.ts.map +1 -1
- package/dist/public/operations/check-executor.js +11 -3
- package/dist/public/operations/check-helpers.d.ts +7 -1
- package/dist/public/operations/check-helpers.d.ts.map +1 -1
- package/dist/public/operations/check-helpers.js +22 -2
- package/dist/public/operations/contracts.d.ts.map +1 -1
- package/dist/public/operations/contracts.js +51 -12
- package/dist/public/operations/discovery-entities.d.ts +53 -1
- package/dist/public/operations/discovery-entities.d.ts.map +1 -1
- package/dist/public/operations/discovery-entities.js +219 -12
- package/dist/public/operations/discovery-executors.d.ts +1 -0
- package/dist/public/operations/discovery-executors.d.ts.map +1 -1
- package/dist/public/operations/discovery-executors.js +93 -59
- package/dist/public/operations/migration-plan.d.ts +2 -0
- package/dist/public/operations/migration-plan.d.ts.map +1 -1
- package/dist/public/operations/migration-plan.js +50 -0
- package/dist/public/operations/predicate-schema-conformance.d.ts +41 -0
- package/dist/public/operations/predicate-schema-conformance.d.ts.map +1 -0
- package/dist/public/operations/predicate-schema-conformance.js +242 -0
- package/dist/public/operations/prolog-json.d.ts +1 -1
- package/dist/public/operations/prolog-json.d.ts.map +1 -1
- package/dist/public/operations/prolog-json.js +16 -10
- package/dist/public/operations/result-envelope.d.ts +34 -1
- package/dist/public/operations/result-envelope.d.ts.map +1 -1
- package/dist/public/operations/result-envelope.js +78 -2
- package/dist/public/operations/runtime-types.d.ts +17 -2
- package/dist/public/operations/runtime-types.d.ts.map +1 -1
- package/dist/public/operations/specs/check-rules.generated.d.ts +1 -1
- package/dist/public/operations/specs/check-rules.generated.d.ts.map +1 -1
- package/dist/public/operations/specs/check-rules.generated.js +9 -1
- package/dist/public/operations/specs/check.d.ts +1 -1
- package/dist/public/operations/specs/discovery.d.ts +10 -1
- package/dist/public/operations/specs/discovery.d.ts.map +1 -1
- package/dist/public/operations/specs/discovery.js +10 -1
- package/dist/public/operations/specs/mutation-schemas.d.ts +27 -4
- package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
- package/dist/public/operations/specs/mutation-schemas.js +21 -3
- package/dist/public/operations/specs/proof.js +1 -1
- package/dist/public/operations/specs/reporting.d.ts +9 -0
- package/dist/public/operations/specs/reporting.d.ts.map +1 -1
- package/dist/public/operations/specs/reporting.js +48 -17
- package/dist/public/operations/specs/semantic.d.ts +1 -1
- package/dist/public/operations/specs/semantic.d.ts.map +1 -1
- package/dist/public/operations/specs/semantic.js +54 -4
- package/dist/public/operations/specs/upsert.d.ts +28 -5
- package/dist/public/operations/specs/upsert.d.ts.map +1 -1
- package/dist/public/operations/specs/upsert.js +1 -1
- package/dist/public/operations/symbol-repair-plan.d.ts.map +1 -1
- package/dist/public/operations/symbol-repair-plan.js +11 -4
- package/dist/public/operations/types.d.ts +5 -0
- package/dist/public/operations/types.d.ts.map +1 -1
- package/dist/public/proof-protocol.js +4 -4
- package/dist/public/schemas/entity.d.ts.map +1 -1
- package/dist/public/schemas/entity.js +22 -0
- package/dist/public/schemas/relationship.d.ts.map +1 -1
- package/dist/public/schemas/relationship.js +1 -0
- package/dist/public/skills/kibi-usage/SKILL.md +10 -3
- package/dist/public/skills/kibi-usage/resources/fact-lanes.md +4 -0
- package/dist/public/skills/kibi-usage/resources/proof.md +45 -0
- package/dist/public/skills/kibi-usage/resources/relationship-directions.md +35 -17
- package/dist/public/skills/kibi-usage/resources/source-authoring.md +36 -0
- package/dist/public/skills/kibi-usage/resources/workflows.md +52 -1
- package/dist/public/symbol-granularity.d.ts +1 -1
- package/dist/public/symbol-granularity.d.ts.map +1 -1
- package/dist/public/symbol-granularity.generated.d.ts.map +1 -1
- package/dist/public/symbol-granularity.generated.js +38 -5
- package/dist/public/telemetry-acceptance.d.ts.map +1 -1
- package/dist/public/telemetry-acceptance.js +21 -5
- package/dist/relationships/shards.d.ts +6 -0
- package/dist/relationships/shards.d.ts.map +1 -1
- package/dist/relationships/shards.js +26 -19
- package/dist/report/html-report.css +1239 -281
- package/dist/runtime/cli-runtime.d.ts.map +1 -1
- package/dist/runtime/cli-runtime.js +18 -0
- package/dist/schemas/entity.schema.json +32 -0
- package/dist/traceability/staged-diagnostics.d.ts +1 -1
- package/dist/traceability/staged-diagnostics.d.ts.map +1 -1
- package/dist/traceability/staged-entity-id-style.d.ts +12 -0
- package/dist/traceability/staged-entity-id-style.d.ts.map +1 -0
- package/dist/traceability/staged-entity-id-style.js +68 -0
- package/dist/traceability/symbol-extract.d.ts +24 -7
- package/dist/traceability/symbol-extract.d.ts.map +1 -1
- package/dist/traceability/symbol-extract.js +64 -208
- package/dist/traceability/temp-kb.d.ts.map +1 -1
- package/dist/traceability/temp-kb.js +8 -0
- package/dist/traceability/validate.js +1 -1
- package/dist/types/entities.d.ts +2 -0
- package/dist/types/entities.d.ts.map +1 -1
- package/dist/types/relationships.d.ts +1 -1
- package/dist/types/relationships.d.ts.map +1 -1
- package/dist/utils/entity-id-style.d.ts +27 -0
- package/dist/utils/entity-id-style.d.ts.map +1 -0
- package/dist/utils/entity-id-style.js +81 -0
- package/dist/utils/git-repository-context.d.ts +50 -0
- package/dist/utils/git-repository-context.d.ts.map +1 -0
- package/dist/utils/git-repository-context.js +259 -0
- package/dist/utils/rule-registry.d.ts +5 -0
- package/dist/utils/rule-registry.d.ts.map +1 -1
- package/dist/utils/rule-registry.generated.d.ts +42 -0
- package/dist/utils/rule-registry.generated.d.ts.map +1 -1
- package/dist/utils/rule-registry.generated.js +50 -0
- package/dist/utils/strict-modeling.d.ts +7 -0
- package/dist/utils/strict-modeling.d.ts.map +1 -1
- package/dist/utils/strict-modeling.js +11 -0
- package/package.json +14 -11
- package/schema/entities.pl +60 -1
- package/schema/relationships.pl +17 -4
- package/schema/validation.pl +118 -20
- package/src/public/diagnostic-usage.ts +16 -24
- package/src/public/extractors/symbols-coordinator.ts +1 -0
- package/src/public/impact/analyzer.ts +15 -12
- package/src/public/impact/full-kb-quality.ts +4 -16
- package/src/public/operations/check-executor.ts +13 -2
- package/src/public/operations/check-helpers.ts +29 -3
- package/src/public/operations/contracts.ts +59 -12
- package/src/public/operations/discovery-entities.ts +327 -12
- package/src/public/operations/discovery-executors.ts +110 -61
- package/src/public/operations/migration-plan.ts +57 -0
- package/src/public/operations/predicate-schema-conformance.ts +362 -0
- package/src/public/operations/prolog-json.ts +22 -8
- package/src/public/operations/result-envelope.ts +114 -2
- package/src/public/operations/runtime-types.ts +22 -3
- package/src/public/operations/specs/check-rules.generated.ts +9 -1
- package/src/public/operations/specs/discovery.ts +11 -1
- package/src/public/operations/specs/mutation-schemas.ts +23 -3
- package/src/public/operations/specs/proof.ts +1 -1
- package/src/public/operations/specs/reporting.ts +71 -24
- package/src/public/operations/specs/semantic.ts +79 -17
- package/src/public/operations/specs/upsert.ts +1 -1
- package/src/public/operations/symbol-repair-plan.ts +16 -7
- package/src/public/operations/types.ts +5 -0
- package/src/public/proof-fingerprint.ts +1 -1
- package/src/public/proof-protocol-types.d.ts +1 -1
- package/src/public/proof-protocol.ts +4 -4
- package/src/public/schemas/entity.ts +22 -0
- package/src/public/schemas/relationship.ts +1 -0
- package/src/public/skills/kibi-usage/SKILL.md +10 -3
- package/src/public/skills/kibi-usage/resources/fact-lanes.md +4 -0
- package/src/public/skills/kibi-usage/resources/proof.md +45 -0
- package/src/public/skills/kibi-usage/resources/relationship-directions.md +35 -17
- package/src/public/skills/kibi-usage/resources/source-authoring.md +36 -0
- package/src/public/skills/kibi-usage/resources/workflows.md +52 -1
- package/src/public/symbol-granularity.generated.ts +45 -12
- package/src/public/symbol-granularity.ts +3 -3
- package/src/public/telemetry-acceptance.ts +37 -6
- package/src/schemas/entity.schema.json +32 -0
- package/src/schemas/relationship.schema.json +1 -0
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Kibi — repo-local, per-branch, queryable long-term memory for software projects
|
|
3
|
+
Copyright (C) 2026 Piotr Franczyk
|
|
4
|
+
|
|
5
|
+
This program is free software: you can redistribute it and/or modify
|
|
6
|
+
it under the terms of the GNU Affero General Public License as published by
|
|
7
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
8
|
+
(at your option) any later version.
|
|
9
|
+
|
|
10
|
+
This program is distributed in the hope that it will be useful,
|
|
11
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
GNU Affero General Public License for more details.
|
|
14
|
+
|
|
15
|
+
You should have received a copy of the GNU Affero General Public License
|
|
16
|
+
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
+
*/
|
|
18
|
+
import fs from "node:fs";
|
|
19
|
+
import os from "node:os";
|
|
20
|
+
import path from "node:path";
|
|
21
|
+
const WORKSPACE_ENV_KEYS = [
|
|
22
|
+
"KIBI_WORKSPACE",
|
|
23
|
+
"KIBI_PROJECT_ROOT",
|
|
24
|
+
"KIBI_ROOT",
|
|
25
|
+
];
|
|
26
|
+
/** Preferred project-local Kibi env file (harness-independent). */
|
|
27
|
+
// implements REQ-kibi-env-bootstrap
|
|
28
|
+
export const KIBI_PROJECT_ENV_FILE = ".env.kibi";
|
|
29
|
+
/** Legacy generic dotenv still loaded for compatibility only. */
|
|
30
|
+
// implements REQ-kibi-env-bootstrap
|
|
31
|
+
export const KIBI_LEGACY_ENV_FILE = ".env";
|
|
32
|
+
/** Remembered pre-bootstrap non-empty process keys for default `process.env`. */
|
|
33
|
+
let rememberedInitialNonEmptyKeys = null;
|
|
34
|
+
/** Last bootstrap result for default `process.env` (doctor attribution). */
|
|
35
|
+
let lastDefaultBootstrap = null;
|
|
36
|
+
/**
|
|
37
|
+
* Test-only: clear remembered process-key snapshot and last bootstrap result.
|
|
38
|
+
*/
|
|
39
|
+
// implements REQ-kibi-env-bootstrap
|
|
40
|
+
export function resetKibiEnvironmentBootstrapStateForTests() {
|
|
41
|
+
rememberedInitialNonEmptyKeys = null;
|
|
42
|
+
lastDefaultBootstrap = null;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Last bootstrap against the real `process.env`, if any.
|
|
46
|
+
*/
|
|
47
|
+
// implements REQ-kibi-env-bootstrap
|
|
48
|
+
export function getLastBootstrapResult() {
|
|
49
|
+
return lastDefaultBootstrap;
|
|
50
|
+
}
|
|
51
|
+
function readFirstEnv(env, keys) {
|
|
52
|
+
for (const key of keys) {
|
|
53
|
+
const value = env[key]?.trim();
|
|
54
|
+
if (value)
|
|
55
|
+
return value;
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
function nextAncestorDirectory(current) {
|
|
60
|
+
const parent = path.dirname(current);
|
|
61
|
+
return parent === current ? undefined : parent;
|
|
62
|
+
}
|
|
63
|
+
function findUpwards(startDir, marker) {
|
|
64
|
+
let current = path.resolve(startDir);
|
|
65
|
+
while (current !== undefined) {
|
|
66
|
+
if (fs.existsSync(path.join(current, marker))) {
|
|
67
|
+
return current;
|
|
68
|
+
}
|
|
69
|
+
current = nextAncestorDirectory(current);
|
|
70
|
+
}
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Canonical workspace root for Kibi env files and KB attachment.
|
|
75
|
+
* Uses KIBI_WORKSPACE / KIBI_PROJECT_ROOT / KIBI_ROOT, then .kb / .git discovery.
|
|
76
|
+
*/
|
|
77
|
+
// implements REQ-kibi-env-bootstrap
|
|
78
|
+
export function resolveKibiWorkspaceRoot(startDir = process.cwd(), env = process.env) {
|
|
79
|
+
const envRoot = readFirstEnv(env, WORKSPACE_ENV_KEYS);
|
|
80
|
+
if (envRoot)
|
|
81
|
+
return path.resolve(envRoot);
|
|
82
|
+
const kbRoot = findUpwards(startDir, ".kb");
|
|
83
|
+
if (kbRoot)
|
|
84
|
+
return kbRoot;
|
|
85
|
+
const gitRoot = findUpwards(startDir, ".git");
|
|
86
|
+
if (gitRoot)
|
|
87
|
+
return gitRoot;
|
|
88
|
+
return path.resolve(startDir);
|
|
89
|
+
}
|
|
90
|
+
// implements REQ-kibi-env-bootstrap
|
|
91
|
+
export function resolveEnvFilePath(envFileName, workspaceRoot) {
|
|
92
|
+
if (path.isAbsolute(envFileName))
|
|
93
|
+
return envFileName;
|
|
94
|
+
return path.resolve(workspaceRoot, envFileName);
|
|
95
|
+
}
|
|
96
|
+
/** User-wide Kibi env file: $XDG_CONFIG_HOME/kibi/env or ~/.config/kibi/env. */
|
|
97
|
+
// implements REQ-kibi-env-bootstrap
|
|
98
|
+
export function resolveKibiUserEnvPath(options = {}) {
|
|
99
|
+
const env = options.env ?? process.env;
|
|
100
|
+
const xdg = options.xdgConfigHome?.trim() ||
|
|
101
|
+
env.XDG_CONFIG_HOME?.trim() ||
|
|
102
|
+
path.join(options.homedir ?? os.homedir(), ".config");
|
|
103
|
+
return path.join(xdg, "kibi", "env");
|
|
104
|
+
}
|
|
105
|
+
// implements REQ-kibi-env-bootstrap
|
|
106
|
+
export function resolveKibiProjectEnvPath(workspaceRoot, env = process.env) {
|
|
107
|
+
const override = env.KIBI_ENV_FILE?.trim();
|
|
108
|
+
if (override)
|
|
109
|
+
return resolveEnvFilePath(override, workspaceRoot);
|
|
110
|
+
return resolveEnvFilePath(KIBI_PROJECT_ENV_FILE, workspaceRoot);
|
|
111
|
+
}
|
|
112
|
+
// implements REQ-kibi-env-bootstrap
|
|
113
|
+
export function parseEnvContent(content) {
|
|
114
|
+
const entries = [];
|
|
115
|
+
for (const rawLine of content.split(/\r?\n/)) {
|
|
116
|
+
const line = rawLine.trim();
|
|
117
|
+
if (!line || line.startsWith("#"))
|
|
118
|
+
continue;
|
|
119
|
+
const eqIndex = line.indexOf("=");
|
|
120
|
+
if (eqIndex <= 0)
|
|
121
|
+
continue;
|
|
122
|
+
const key = line.slice(0, eqIndex).trim();
|
|
123
|
+
let value = line.slice(eqIndex + 1).trim();
|
|
124
|
+
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
125
|
+
(value.startsWith("'") && value.endsWith("'"))) {
|
|
126
|
+
value = value.slice(1, -1);
|
|
127
|
+
}
|
|
128
|
+
if (!key)
|
|
129
|
+
continue;
|
|
130
|
+
entries.push({ key, value });
|
|
131
|
+
}
|
|
132
|
+
return entries;
|
|
133
|
+
}
|
|
134
|
+
function readEnvFileEntries(filePath) {
|
|
135
|
+
const map = new Map();
|
|
136
|
+
if (!fs.existsSync(filePath))
|
|
137
|
+
return map;
|
|
138
|
+
try {
|
|
139
|
+
for (const { key, value } of parseEnvContent(fs.readFileSync(filePath, "utf8"))) {
|
|
140
|
+
map.set(key, value);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
// Unreadable files are treated as absent for bootstrap/inspect.
|
|
145
|
+
}
|
|
146
|
+
return map;
|
|
147
|
+
}
|
|
148
|
+
function nonEmpty(value) {
|
|
149
|
+
return typeof value === "string" && value.trim() !== "";
|
|
150
|
+
}
|
|
151
|
+
function snapshotNonEmptyKeys(env) {
|
|
152
|
+
return new Set(Object.keys(env).filter((key) => nonEmpty(env[key])));
|
|
153
|
+
}
|
|
154
|
+
function resolveInitialNonEmptyKeys(env, options, isDefaultEnv) {
|
|
155
|
+
if (options.initialNonEmptyProcessKeys) {
|
|
156
|
+
return new Set([...options.initialNonEmptyProcessKeys].filter((key) => nonEmpty(env[key])));
|
|
157
|
+
}
|
|
158
|
+
if (isDefaultEnv && rememberedInitialNonEmptyKeys) {
|
|
159
|
+
// Only keys that remain non-empty stay process-owned across re-entry.
|
|
160
|
+
return new Set([...rememberedInitialNonEmptyKeys].filter((key) => nonEmpty(env[key])));
|
|
161
|
+
}
|
|
162
|
+
const snapshot = snapshotNonEmptyKeys(env);
|
|
163
|
+
if (isDefaultEnv) {
|
|
164
|
+
rememberedInitialNonEmptyKeys = new Set(snapshot);
|
|
165
|
+
}
|
|
166
|
+
return snapshot;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Load Kibi-owned env files into `process.env` (or an injectable env object).
|
|
170
|
+
* Blank values are treated as unset (never applied, never overwrite).
|
|
171
|
+
* Existing non-empty process keys are never overwritten. Project overrides user.
|
|
172
|
+
* Legacy `.env` only gap-fills and is attributed as `legacy_env`.
|
|
173
|
+
* Call only from CLI/MCP entrypoints — not on library import.
|
|
174
|
+
*/
|
|
175
|
+
// implements REQ-kibi-env-bootstrap
|
|
176
|
+
export function bootstrapKibiEnvironment(options = {}) {
|
|
177
|
+
const env = options.env ?? process.env;
|
|
178
|
+
const isDefaultEnv = options.env === undefined;
|
|
179
|
+
const workspaceRoot = resolveKibiWorkspaceRoot(options.startDir, env);
|
|
180
|
+
if (isDefaultEnv &&
|
|
181
|
+
lastDefaultBootstrap &&
|
|
182
|
+
lastDefaultBootstrap.workspaceRoot !== workspaceRoot) {
|
|
183
|
+
// New workspace (e.g. doctor under KIBI_WORKSPACE): re-snapshot process keys.
|
|
184
|
+
rememberedInitialNonEmptyKeys = null;
|
|
185
|
+
}
|
|
186
|
+
const userEnvPath = resolveKibiUserEnvPath({
|
|
187
|
+
...(options.homedir !== undefined ? { homedir: options.homedir } : {}),
|
|
188
|
+
...(options.xdgConfigHome !== undefined
|
|
189
|
+
? { xdgConfigHome: options.xdgConfigHome }
|
|
190
|
+
: {}),
|
|
191
|
+
env,
|
|
192
|
+
});
|
|
193
|
+
const projectEnvPath = resolveKibiProjectEnvPath(workspaceRoot, env);
|
|
194
|
+
const legacyEnvPath = resolveEnvFilePath(KIBI_LEGACY_ENV_FILE, workspaceRoot);
|
|
195
|
+
const initialNonEmpty = resolveInitialNonEmptyKeys(env, options, isDefaultEnv);
|
|
196
|
+
const sources = {};
|
|
197
|
+
for (const key of initialNonEmpty) {
|
|
198
|
+
sources[key] = "process";
|
|
199
|
+
}
|
|
200
|
+
const keysLoadedFromUser = [];
|
|
201
|
+
const keysLoadedFromProject = [];
|
|
202
|
+
const keysLoadedFromLegacy = [];
|
|
203
|
+
const userEntries = readEnvFileEntries(userEnvPath);
|
|
204
|
+
const projectEntries = readEnvFileEntries(projectEnvPath);
|
|
205
|
+
const legacyEntries = readEnvFileEntries(legacyEnvPath);
|
|
206
|
+
// User first, then project (project may overwrite user-sourced keys).
|
|
207
|
+
// Blank file values are unset — never applied, never overwrite.
|
|
208
|
+
for (const [key, value] of userEntries) {
|
|
209
|
+
if (!nonEmpty(value))
|
|
210
|
+
continue;
|
|
211
|
+
if (initialNonEmpty.has(key))
|
|
212
|
+
continue;
|
|
213
|
+
if (!nonEmpty(env[key])) {
|
|
214
|
+
env[key] = value;
|
|
215
|
+
keysLoadedFromUser.push(key);
|
|
216
|
+
}
|
|
217
|
+
sources[key] = "user_env";
|
|
218
|
+
}
|
|
219
|
+
for (const [key, value] of projectEntries) {
|
|
220
|
+
if (!nonEmpty(value))
|
|
221
|
+
continue;
|
|
222
|
+
if (initialNonEmpty.has(key))
|
|
223
|
+
continue;
|
|
224
|
+
const previousSource = sources[key];
|
|
225
|
+
env[key] = value;
|
|
226
|
+
if (previousSource !== "project_env" &&
|
|
227
|
+
!keysLoadedFromProject.includes(key)) {
|
|
228
|
+
keysLoadedFromProject.push(key);
|
|
229
|
+
}
|
|
230
|
+
sources[key] = "project_env";
|
|
231
|
+
}
|
|
232
|
+
// Legacy .env fills only keys still unset (compatibility; not preferred).
|
|
233
|
+
for (const [key, value] of legacyEntries) {
|
|
234
|
+
if (!nonEmpty(value))
|
|
235
|
+
continue;
|
|
236
|
+
if (initialNonEmpty.has(key))
|
|
237
|
+
continue;
|
|
238
|
+
if (sources[key] === "user_env" || sources[key] === "project_env") {
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
if (!nonEmpty(env[key])) {
|
|
242
|
+
env[key] = value;
|
|
243
|
+
keysLoadedFromLegacy.push(key);
|
|
244
|
+
}
|
|
245
|
+
sources[key] = "legacy_env";
|
|
246
|
+
}
|
|
247
|
+
const result = {
|
|
248
|
+
workspaceRoot,
|
|
249
|
+
userEnvPath,
|
|
250
|
+
projectEnvPath,
|
|
251
|
+
legacyEnvPath,
|
|
252
|
+
sources,
|
|
253
|
+
keysLoadedFromUser,
|
|
254
|
+
keysLoadedFromProject,
|
|
255
|
+
keysLoadedFromLegacy,
|
|
256
|
+
};
|
|
257
|
+
if (isDefaultEnv) {
|
|
258
|
+
lastDefaultBootstrap = result;
|
|
259
|
+
}
|
|
260
|
+
return result;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Resolve a secret source label from an actual bootstrap result.
|
|
264
|
+
* Never reconstructs attribution by re-reading files alone.
|
|
265
|
+
*/
|
|
266
|
+
// implements REQ-kibi-env-bootstrap
|
|
267
|
+
export function secretSourceFromBootstrap(key, bootstrap, env = process.env) {
|
|
268
|
+
const attributed = bootstrap.sources[key];
|
|
269
|
+
if (attributed) {
|
|
270
|
+
return nonEmpty(env[key]) ? attributed : "missing";
|
|
271
|
+
}
|
|
272
|
+
return nonEmpty(env[key]) ? "process" : "missing";
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Read-only secret attribution via a dry bootstrap on an env snapshot.
|
|
276
|
+
* Prefer `secretSourceFromBootstrap` with the real entrypoint bootstrap result.
|
|
277
|
+
* Never returns secret values.
|
|
278
|
+
*/
|
|
279
|
+
// implements REQ-kibi-env-bootstrap
|
|
280
|
+
export function inspectSecretSource(key, options = {}) {
|
|
281
|
+
if (options.env === undefined &&
|
|
282
|
+
lastDefaultBootstrap &&
|
|
283
|
+
!options.startDir &&
|
|
284
|
+
!options.xdgConfigHome &&
|
|
285
|
+
!options.homedir &&
|
|
286
|
+
!options.initialNonEmptyProcessKeys &&
|
|
287
|
+
!options.initialProcessKeys) {
|
|
288
|
+
return secretSourceFromBootstrap(key, lastDefaultBootstrap);
|
|
289
|
+
}
|
|
290
|
+
const envCopy = { ...(options.env ?? process.env) };
|
|
291
|
+
const initial = options.initialNonEmptyProcessKeys ??
|
|
292
|
+
options.initialProcessKeys ??
|
|
293
|
+
(options.env === undefined && rememberedInitialNonEmptyKeys
|
|
294
|
+
? new Set([...rememberedInitialNonEmptyKeys].filter((key) => nonEmpty(envCopy[key])))
|
|
295
|
+
: snapshotNonEmptyKeys(envCopy));
|
|
296
|
+
const result = bootstrapKibiEnvironment({
|
|
297
|
+
...options,
|
|
298
|
+
env: envCopy,
|
|
299
|
+
initialNonEmptyProcessKeys: initial,
|
|
300
|
+
});
|
|
301
|
+
return secretSourceFromBootstrap(key, result, envCopy);
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Whether a secret is available for provider use (non-empty after resolution).
|
|
305
|
+
* Blank values are unset.
|
|
306
|
+
*/
|
|
307
|
+
// implements REQ-kibi-env-bootstrap
|
|
308
|
+
export function isSecretAvailable(key, options = {}) {
|
|
309
|
+
return inspectSecretSource(key, options) !== "missing";
|
|
310
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/extractors/manifest.ts"],"names":[],"mappings":"AA6BA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,eAAe,CAAC;IACxB,aAAa,EAAE,qBAAqB,EAAE,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/extractors/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,6 +37,7 @@ const VALID_RELATIONSHIP_TYPES = new Set([
|
|
|
37
37
|
"publishes",
|
|
38
38
|
"consumes",
|
|
39
39
|
"supersedes",
|
|
40
|
+
"restates",
|
|
40
41
|
"relates_to",
|
|
41
42
|
]);
|
|
42
43
|
const VALID_RELATIONSHIP_DIRECTIONS = [
|
|
@@ -60,6 +61,7 @@ const VALID_RELATIONSHIP_DIRECTIONS = [
|
|
|
60
61
|
{ type: "consumes", from: "symbol", to: "event" },
|
|
61
62
|
{ type: "supersedes", from: "adr", to: "adr" },
|
|
62
63
|
{ type: "supersedes", from: "req", to: "req" },
|
|
64
|
+
{ type: "restates", from: "req", to: "req" },
|
|
63
65
|
];
|
|
64
66
|
const RELATIONSHIP_TYPE_DISPLAY_LIST = Array.from(VALID_RELATIONSHIP_TYPES)
|
|
65
67
|
.sort()
|
|
@@ -325,46 +327,82 @@ export function readManifestWithCoordinateOverlay(manifestPath, coordinatesPath)
|
|
|
325
327
|
});
|
|
326
328
|
}
|
|
327
329
|
/**
|
|
328
|
-
* Resolve the code scope of a receipt binding: for each
|
|
329
|
-
* its
|
|
330
|
-
* editing
|
|
331
|
-
* (per-contract binding mode).
|
|
330
|
+
* Resolve the code scope of a receipt binding: for each scoped symbol, the
|
|
331
|
+
* content hash of its current source file. A receipt's binding covers these,
|
|
332
|
+
* so editing code a test depends on stales only that test's receipts
|
|
333
|
+
* (per-contract binding mode). Hashes come from the live file, not the
|
|
334
|
+
* coordinate artifact: an edit must stale the receipt whether or not
|
|
335
|
+
* coordinates were refreshed. A scoped symbol whose file is gone hashes as
|
|
336
|
+
* "missing", so deleting it stales the receipt too; symbols without a
|
|
337
|
+
* source file cannot be hashed and are left out.
|
|
332
338
|
*/
|
|
333
|
-
// implements REQ-kibi-
|
|
334
|
-
//
|
|
335
|
-
//
|
|
336
|
-
// manifest state
|
|
337
|
-
const
|
|
338
|
-
|
|
339
|
-
|
|
339
|
+
// implements REQ-kibi-verification-evidence-contract
|
|
340
|
+
// Scope reads run once per proof-bearing test and a campaign touches
|
|
341
|
+
// dozens-to-hundreds of tests, so the manifest's symbol -> source mapping is
|
|
342
|
+
// memoized per manifest state and file hashes per file state (mtime + size).
|
|
343
|
+
const scopeSourceFileCache = new Map();
|
|
344
|
+
const scopeFileHashCache = new Map();
|
|
345
|
+
function fileStamp(filePath) {
|
|
340
346
|
try {
|
|
341
|
-
const stats = statSync(
|
|
342
|
-
|
|
347
|
+
const stats = statSync(filePath);
|
|
348
|
+
return `${stats.mtimeMs}:${stats.size}`;
|
|
343
349
|
}
|
|
344
350
|
catch {
|
|
345
|
-
|
|
351
|
+
return null;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
function scopeSourceFiles(manifestPath) {
|
|
355
|
+
const stamp = fileStamp(manifestPath) ?? "missing";
|
|
356
|
+
const hit = scopeSourceFileCache.get(manifestPath);
|
|
357
|
+
if (hit && hit.stamp === stamp)
|
|
358
|
+
return hit.sourceFiles;
|
|
359
|
+
const sourceFiles = new Map();
|
|
360
|
+
if (stamp !== "missing") {
|
|
361
|
+
const records = extractManifestSymbolRecordsString(readFileSync(manifestPath, "utf8"), manifestPath);
|
|
362
|
+
for (const record of records) {
|
|
363
|
+
const sourceFile = typeof record.sourceFile === "string" && record.sourceFile !== ""
|
|
364
|
+
? record.sourceFile
|
|
365
|
+
: typeof record.source === "string" && record.source !== ""
|
|
366
|
+
? record.source
|
|
367
|
+
: undefined;
|
|
368
|
+
if (typeof record.id === "string" && sourceFile !== undefined) {
|
|
369
|
+
sourceFiles.set(record.id, sourceFile);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
346
372
|
}
|
|
347
|
-
|
|
373
|
+
scopeSourceFileCache.set(manifestPath, { stamp, sourceFiles });
|
|
374
|
+
return sourceFiles;
|
|
375
|
+
}
|
|
376
|
+
function scopeFileHash(absolutePath) {
|
|
377
|
+
const stamp = fileStamp(absolutePath);
|
|
378
|
+
if (stamp === null)
|
|
379
|
+
return "missing";
|
|
380
|
+
const hit = scopeFileHashCache.get(absolutePath);
|
|
348
381
|
if (hit && hit.stamp === stamp)
|
|
349
|
-
return hit.
|
|
350
|
-
const
|
|
351
|
-
|
|
352
|
-
|
|
382
|
+
return hit.hash;
|
|
383
|
+
const hash = createHash("sha256")
|
|
384
|
+
.update(readFileSync(absolutePath))
|
|
385
|
+
.digest("hex");
|
|
386
|
+
scopeFileHashCache.set(absolutePath, { stamp, hash });
|
|
387
|
+
return hash;
|
|
353
388
|
}
|
|
354
389
|
export function resolveBoundSymbolScope(manifestPath, symbolIds) {
|
|
355
|
-
const wanted = new Set(symbolIds);
|
|
356
|
-
if (wanted.
|
|
390
|
+
const wanted = [...new Set(symbolIds)];
|
|
391
|
+
if (wanted.length === 0)
|
|
357
392
|
return [];
|
|
358
|
-
const
|
|
393
|
+
const sourceFiles = scopeSourceFiles(manifestPath);
|
|
394
|
+
// The manifest lives at <workspace>/.kb/symbols.yaml; source files are
|
|
395
|
+
// workspace-relative.
|
|
396
|
+
const workspaceRoot = path.dirname(path.dirname(path.resolve(manifestPath)));
|
|
359
397
|
const scope = [];
|
|
360
|
-
for (const
|
|
361
|
-
const
|
|
362
|
-
if (
|
|
398
|
+
for (const symbolId of wanted) {
|
|
399
|
+
const sourceFile = sourceFiles.get(symbolId);
|
|
400
|
+
if (sourceFile === undefined)
|
|
363
401
|
continue;
|
|
364
|
-
const
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
}
|
|
402
|
+
const absolute = path.isAbsolute(sourceFile)
|
|
403
|
+
? sourceFile
|
|
404
|
+
: path.resolve(workspaceRoot, sourceFile);
|
|
405
|
+
scope.push({ symbolId, sourceHash: scopeFileHash(absolute) });
|
|
368
406
|
}
|
|
369
407
|
scope.sort((left, right) => left.symbolId.localeCompare(right.symbolId));
|
|
370
408
|
return scope;
|
|
@@ -28,6 +28,8 @@ export interface ExtractedEntity {
|
|
|
28
28
|
sourceEndColumn?: number;
|
|
29
29
|
verification_scope?: "unit" | "integration" | "end_to_end";
|
|
30
30
|
verification_perspective?: "internal" | "consumer";
|
|
31
|
+
proof_exempt?: boolean;
|
|
32
|
+
proof_exempt_reason?: string;
|
|
31
33
|
proof_contract?: ProofContract;
|
|
32
34
|
proof_bindings?: readonly ProofBinding[];
|
|
33
35
|
proof_receipts?: readonly ProofReceipt[];
|
|
@@ -59,6 +61,8 @@ export interface ExtractedEntity {
|
|
|
59
61
|
examples?: string[];
|
|
60
62
|
predicate_args?: string[];
|
|
61
63
|
rule_ir?: Record<string, unknown>;
|
|
64
|
+
argument_constants?: Record<string, string[]>;
|
|
65
|
+
argument_aliases?: Record<string, Record<string, string>>;
|
|
62
66
|
rule_hash?: string;
|
|
63
67
|
rule_schema_id?: string;
|
|
64
68
|
rule_name?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/extractors/markdown.ts"],"names":[],"mappings":"AAuBA,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,KAAK,YAAY,EAElB,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/extractors/markdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,8 @@ const FACT_STRING_FIELDS = [
|
|
|
42
42
|
"predicate_name",
|
|
43
43
|
"predicate_namespace",
|
|
44
44
|
"rule_ir",
|
|
45
|
+
"argument_constants",
|
|
46
|
+
"argument_aliases",
|
|
45
47
|
"rule_hash",
|
|
46
48
|
"rule_schema_id",
|
|
47
49
|
"rule_name",
|
|
@@ -77,7 +79,13 @@ const TEST_ENUM_FIELDS = [
|
|
|
77
79
|
"proof_receipts",
|
|
78
80
|
];
|
|
79
81
|
const ajv = new Ajv({ strict: false, allErrors: true });
|
|
80
|
-
|
|
82
|
+
// Compiled on first extraction: every CLI command imports this module, and
|
|
83
|
+
// most never extract Markdown entities.
|
|
84
|
+
let extractedEntityValidator;
|
|
85
|
+
function validateExtractedEntity() {
|
|
86
|
+
extractedEntityValidator ??= ajv.compile(entitySchema);
|
|
87
|
+
return extractedEntityValidator;
|
|
88
|
+
}
|
|
81
89
|
const DEFAULT_STATUS_BY_TYPE = {
|
|
82
90
|
req: "open",
|
|
83
91
|
scenario: "draft",
|
|
@@ -105,6 +113,7 @@ const VALID_RELATIONSHIP_TYPES = new Set([
|
|
|
105
113
|
"publishes",
|
|
106
114
|
"consumes",
|
|
107
115
|
"supersedes",
|
|
116
|
+
"restates",
|
|
108
117
|
"relates_to",
|
|
109
118
|
]);
|
|
110
119
|
const VALID_RELATIONSHIP_DIRECTIONS = [
|
|
@@ -129,6 +138,7 @@ const VALID_RELATIONSHIP_DIRECTIONS = [
|
|
|
129
138
|
{ type: "consumes", from: "symbol", to: "event" },
|
|
130
139
|
{ type: "supersedes", from: "adr", to: "adr" },
|
|
131
140
|
{ type: "supersedes", from: "req", to: "req" },
|
|
141
|
+
{ type: "restates", from: "req", to: "req" },
|
|
132
142
|
];
|
|
133
143
|
const RELATIONSHIP_TYPE_DISPLAY_LIST = Array.from(VALID_RELATIONSHIP_TYPES)
|
|
134
144
|
.sort()
|
|
@@ -411,6 +421,25 @@ function extractFromMarkdownContent(content, filePath) {
|
|
|
411
421
|
if (type === "req" && data.semantic_source_hash !== undefined) {
|
|
412
422
|
entity.semantic_source_hash = data.semantic_source_hash;
|
|
413
423
|
}
|
|
424
|
+
if (type === "req" && data.proof_exempt !== undefined) {
|
|
425
|
+
if (typeof data.proof_exempt !== "boolean") {
|
|
426
|
+
throw new FrontmatterError("Invalid proof_exempt; expected true or false", filePath, {
|
|
427
|
+
classification: "Invalid Proof Exemption Flag",
|
|
428
|
+
hint: "Set proof_exempt: true with a non-empty proof_exempt_reason.",
|
|
429
|
+
});
|
|
430
|
+
}
|
|
431
|
+
entity.proof_exempt = data.proof_exempt;
|
|
432
|
+
}
|
|
433
|
+
if (type === "req" && data.proof_exempt_reason !== undefined) {
|
|
434
|
+
if (typeof data.proof_exempt_reason !== "string" ||
|
|
435
|
+
data.proof_exempt_reason.trim() === "") {
|
|
436
|
+
throw new FrontmatterError("Invalid proof_exempt_reason; expected a non-empty string", filePath, {
|
|
437
|
+
classification: "Invalid Proof Exemption Reason",
|
|
438
|
+
hint: "proof_exempt requires a non-empty proof_exempt_reason explaining why the requirement is outside E2E-proof scope.",
|
|
439
|
+
});
|
|
440
|
+
}
|
|
441
|
+
entity.proof_exempt_reason = data.proof_exempt_reason;
|
|
442
|
+
}
|
|
414
443
|
if (type !== "fact") {
|
|
415
444
|
const invalidFactField = FACT_ONLY_FIELDS.find((field) => data[field] !== undefined);
|
|
416
445
|
if (invalidFactField) {
|
|
@@ -558,8 +587,9 @@ function extractFromMarkdownContent(content, filePath) {
|
|
|
558
587
|
if (type === "req" && Array.isArray(data.semantic_inventory)) {
|
|
559
588
|
entity.semantic_inventory = data.semantic_inventory.filter((value) => isObjectRecord(value));
|
|
560
589
|
}
|
|
561
|
-
|
|
562
|
-
|
|
590
|
+
const validateEntity = validateExtractedEntity();
|
|
591
|
+
if (!validateEntity(entity)) {
|
|
592
|
+
const messages = (validateEntity.errors || [])
|
|
563
593
|
.map((e) => `${e.instancePath || "root"}: ${e.message}`)
|
|
564
594
|
.join("; ");
|
|
565
595
|
throw new FrontmatterError(`Entity validation failed: ${messages}`, filePath, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relationships.d.ts","sourceRoot":"","sources":["../../src/extractors/relationships.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,KAAK,kBAAkB,EAAa,MAAM,4BAA4B,CAAC;AAEhF,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE;QACT,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,qBAAqB,EAAE,CAAC;CACxC;
|
|
1
|
+
{"version":3,"file":"relationships.d.ts","sourceRoot":"","sources":["../../src/extractors/relationships.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,KAAK,kBAAkB,EAAa,MAAM,4BAA4B,CAAC;AAEhF,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE;QACT,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,qBAAqB,EAAE,CAAC;CACxC;AA0BD;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,gBAAgB,EAAE,MAAM,GACvB,qBAAqB,EAAE,CAmBzB;AAED,gFAAgF;AAChF,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,GAChB,qBAAqB,CAiBvB;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,kBAAkB,GACzB,qBAAqB,GAAG,IAAI,CAyC9B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,qBAAqB,EAAE,GAC/B,qBAAqB,EAAE,CAEzB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,qBAAqB,EAAE,EACtC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,GAC1B,KAAK,CAAC;IACP,YAAY,EAAE,qBAAqB,CAAC;IACpC,KAAK,EAAE,cAAc,GAAG,YAAY,CAAC;CACtC,CAAC,CAgBD"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { CapabilityRegistry } from "../plugins/registry.js";
|
|
1
2
|
import { type ManifestSymbolEntry, enrichSymbolCoordinatesWithTsMorph } from "./symbols-ts.js";
|
|
2
3
|
export type { ManifestSymbolEntry };
|
|
3
4
|
export type SourceAnalysisMode = "parser" | "fallback";
|
|
@@ -31,11 +32,18 @@ export interface SourceAnalysisProvider {
|
|
|
31
32
|
}
|
|
32
33
|
export interface AnalyzeSourceTextOptions {
|
|
33
34
|
providers?: SourceAnalysisProvider[];
|
|
35
|
+
/** When set, prefer the host SourceAnalysisService over sync providers. */
|
|
36
|
+
registry?: CapabilityRegistry;
|
|
34
37
|
}
|
|
35
38
|
interface EnrichSymbolCoordinatesDeps {
|
|
36
39
|
enrichTsCoordinates: typeof enrichSymbolCoordinatesWithTsMorph;
|
|
37
40
|
}
|
|
38
41
|
export declare function analyzeSourceText(entries: ManifestSymbolEntry[], workspaceRoot: string, deps?: Partial<EnrichSymbolCoordinatesDeps>): Promise<ManifestSymbolEntry[]>;
|
|
39
42
|
export declare function analyzeSourceText(filePath: string, content: string, options?: AnalyzeSourceTextOptions): SourceAnalysisResult;
|
|
43
|
+
/**
|
|
44
|
+
* Prefer the capability registry / SourceAnalysisService when available.
|
|
45
|
+
* Falls back to the sync builtin ts-morph provider path on registry failure.
|
|
46
|
+
*/
|
|
47
|
+
export declare function analyzeSourceTextWithRegistry(filePath: string, content: string, registry: CapabilityRegistry): Promise<SourceAnalysisResult>;
|
|
40
48
|
export declare function enrichSymbolCoordinates(entries: ManifestSymbolEntry[], workspaceRoot: string, deps?: Partial<EnrichSymbolCoordinatesDeps>): Promise<ManifestSymbolEntry[]>;
|
|
41
49
|
//# sourceMappingURL=symbols-coordinator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbols-coordinator.d.ts","sourceRoot":"","sources":["../../src/extractors/symbols-coordinator.ts"],"names":[],"mappings":"AAoBA,OAAO,EACL,KAAK,mBAAmB,EAExB,kCAAkC,EACnC,MAAM,iBAAiB,CAAC;AAazB,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAEpC,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEvD,MAAM,MAAM,gBAAgB,GACxB,UAAU,GACV,OAAO,GACP,QAAQ,GACR,UAAU,GACV,UAAU,GACV,WAAW,GACX,MAAM,GACN,MAAM,GACN,UAAU,GACV,SAAS,CAAC;AAEd,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,kBAAkB,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,OAAO,EAAE,oBAAoB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IACxC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAAC;CACtE;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,sBAAsB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"symbols-coordinator.d.ts","sourceRoot":"","sources":["../../src/extractors/symbols-coordinator.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAKjE,OAAO,EACL,KAAK,mBAAmB,EAExB,kCAAkC,EACnC,MAAM,iBAAiB,CAAC;AAazB,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAEpC,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEvD,MAAM,MAAM,gBAAgB,GACxB,UAAU,GACV,OAAO,GACP,QAAQ,GACR,UAAU,GACV,UAAU,GACV,WAAW,GACX,MAAM,GACN,MAAM,GACN,UAAU,GACV,SAAS,CAAC;AAEd,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,kBAAkB,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,OAAO,EAAE,oBAAoB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IACxC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAAC;CACtE;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACrC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED,UAAU,2BAA2B;IACnC,mBAAmB,EAAE,OAAO,kCAAkC,CAAC;CAChE;AA+BD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,EAAE,EAC9B,aAAa,EAAE,MAAM,EACrB,IAAI,CAAC,EAAE,OAAO,CAAC,2BAA2B,CAAC,GAC1C,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAClC,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,wBAAwB,GACjC,oBAAoB,CAAC;AA8DxB;;;GAGG;AAEH,wBAAsB,6BAA6B,CACjD,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,kBAAkB,GAC3B,OAAO,CAAC,oBAAoB,CAAC,CAO/B;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,mBAAmB,EAAE,EAC9B,aAAa,EAAE,MAAM,EACrB,IAAI,CAAC,EAAE,OAAO,CAAC,2BAA2B,CAAC,GAC1C,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAqChC"}
|