kibi-cli 0.19.0 → 2.0.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-errors.d.ts +3 -1
- package/dist/cli-errors.d.ts.map +1 -1
- package/dist/cli-errors.js +4 -1
- package/dist/cli-json-command.d.ts +1 -0
- package/dist/cli-json-command.d.ts.map +1 -1
- package/dist/cli-json-command.js +13 -4
- package/dist/cli-operation-loader.d.ts.map +1 -1
- package/dist/cli-operation-loader.js +53 -20
- package/dist/cli-operation-metadata.d.ts +21 -8
- package/dist/cli-operation-metadata.d.ts.map +1 -1
- package/dist/cli-operation-metadata.js +27 -10
- package/dist/cli-protocol.d.ts.map +1 -1
- package/dist/cli-protocol.js +38 -8
- package/dist/cli-register-foundation.d.ts.map +1 -1
- package/dist/cli-register-foundation.js +14 -2
- package/dist/cli-register-maintenance.d.ts.map +1 -1
- package/dist/cli-register-maintenance.js +33 -4
- package/dist/cli-register-proof.d.ts +3 -0
- package/dist/cli-register-proof.d.ts.map +1 -0
- package/dist/cli-register-proof.js +103 -0
- package/dist/cli-register-reporting.d.ts.map +1 -1
- package/dist/cli-register-reporting.js +11 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +17 -8
- package/dist/commands/aggregated-checks.d.ts +1 -2
- package/dist/commands/aggregated-checks.d.ts.map +1 -1
- package/dist/commands/aggregated-checks.js +14 -9
- package/dist/commands/branch.d.ts +37 -0
- package/dist/commands/branch.d.ts.map +1 -1
- package/dist/commands/branch.js +375 -40
- package/dist/commands/check.d.ts +14 -0
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +209 -110
- package/dist/commands/coverage.d.ts +1 -0
- package/dist/commands/coverage.d.ts.map +1 -1
- package/dist/commands/coverage.js +6 -0
- package/dist/commands/discovery-shared.d.ts.map +1 -1
- package/dist/commands/discovery-shared.js +10 -19
- package/dist/commands/doctor.d.ts +26 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +291 -30
- package/dist/commands/engine.d.ts +12 -0
- package/dist/commands/engine.d.ts.map +1 -1
- package/dist/commands/engine.js +50 -7
- package/dist/commands/gc.d.ts +5 -2
- package/dist/commands/gc.d.ts.map +1 -1
- package/dist/commands/gc.js +140 -71
- package/dist/commands/github-init.d.ts +57 -0
- package/dist/commands/github-init.d.ts.map +1 -0
- package/dist/commands/github-init.js +314 -0
- package/dist/commands/init-helpers.d.ts +1 -1
- package/dist/commands/init-helpers.d.ts.map +1 -1
- package/dist/commands/init-helpers.js +109 -28
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +79 -24
- package/dist/commands/legacy-storage-migration.d.ts +54 -0
- package/dist/commands/legacy-storage-migration.d.ts.map +1 -0
- package/dist/commands/legacy-storage-migration.js +277 -0
- package/dist/commands/migrate.d.ts +11 -0
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +249 -96
- package/dist/commands/proof-migrate-legacy.d.ts +7 -0
- package/dist/commands/proof-migrate-legacy.d.ts.map +1 -0
- package/dist/commands/proof-migrate-legacy.js +45 -0
- package/dist/commands/proof-prune.d.ts +8 -0
- package/dist/commands/proof-prune.d.ts.map +1 -0
- package/dist/commands/proof-prune.js +53 -0
- package/dist/commands/prove.d.ts +37 -0
- package/dist/commands/prove.d.ts.map +1 -0
- package/dist/commands/prove.js +470 -0
- package/dist/commands/report.d.ts +24 -0
- package/dist/commands/report.d.ts.map +1 -0
- package/dist/commands/report.js +191 -0
- package/dist/commands/sync/cache.d.ts +16 -3
- package/dist/commands/sync/cache.d.ts.map +1 -1
- package/dist/commands/sync/cache.js +111 -4
- package/dist/commands/sync/discovery.d.ts +26 -2
- package/dist/commands/sync/discovery.d.ts.map +1 -1
- package/dist/commands/sync/discovery.js +204 -15
- package/dist/commands/sync/extraction.d.ts +8 -1
- package/dist/commands/sync/extraction.d.ts.map +1 -1
- package/dist/commands/sync/extraction.js +38 -4
- package/dist/commands/sync/manifest.d.ts +9 -6
- package/dist/commands/sync/manifest.d.ts.map +1 -1
- package/dist/commands/sync/manifest.js +195 -60
- package/dist/commands/sync/persistence.d.ts +4 -1
- package/dist/commands/sync/persistence.d.ts.map +1 -1
- package/dist/commands/sync/persistence.js +26 -12
- package/dist/commands/sync/staging.d.ts +1 -0
- package/dist/commands/sync/staging.d.ts.map +1 -1
- package/dist/commands/sync/staging.js +5 -2
- package/dist/commands/sync/untracked-targets.d.ts +24 -0
- package/dist/commands/sync/untracked-targets.d.ts.map +1 -0
- package/dist/commands/sync/untracked-targets.js +108 -0
- package/dist/commands/sync.d.ts +17 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +375 -106
- package/dist/diagnostics.d.ts +1 -1
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/engine-daemon.d.ts +3 -1
- package/dist/engine-daemon.d.ts.map +1 -1
- package/dist/engine-daemon.js +49 -20
- package/dist/engine.d.ts +34 -3
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +578 -42
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +5 -6
- package/dist/extractors/manifest.d.ts +13 -1
- package/dist/extractors/manifest.d.ts.map +1 -1
- package/dist/extractors/manifest.js +97 -10
- package/dist/extractors/markdown.d.ts +5 -2
- package/dist/extractors/markdown.d.ts.map +1 -1
- package/dist/extractors/markdown.js +47 -12
- package/dist/extractors/playwright-cases.d.ts +24 -0
- package/dist/extractors/playwright-cases.d.ts.map +1 -0
- package/dist/extractors/playwright-cases.js +126 -0
- package/dist/extractors/relationships.d.ts +6 -0
- package/dist/extractors/relationships.d.ts.map +1 -1
- package/dist/extractors/relationships.js +2 -1
- package/dist/extractors/symbol-coordinates.d.ts +81 -3
- package/dist/extractors/symbol-coordinates.d.ts.map +1 -1
- package/dist/extractors/symbol-coordinates.js +389 -51
- package/dist/extractors/symbols-coordinator.js +11 -1
- package/dist/extractors/symbols-ts.d.ts +1 -0
- package/dist/extractors/symbols-ts.d.ts.map +1 -1
- package/dist/extractors/symbols-ts.js +142 -67
- package/dist/intent-search.d.ts +61 -0
- package/dist/intent-search.d.ts.map +1 -0
- package/dist/intent-search.js +437 -0
- package/dist/logic/ir.d.ts +1 -0
- package/dist/logic/ir.d.ts.map +1 -1
- package/dist/logic/ir.js +1 -1
- package/dist/operations/bootstrap/activation.d.ts +5 -0
- package/dist/operations/bootstrap/activation.d.ts.map +1 -0
- package/dist/operations/{autopilot → bootstrap}/activation.js +58 -33
- package/dist/operations/{autopilot → bootstrap}/candidate-helpers.d.ts.map +1 -1
- package/dist/operations/bootstrap/candidates.d.ts +4 -0
- package/dist/operations/{autopilot → bootstrap}/candidates.d.ts.map +1 -1
- package/dist/operations/{autopilot → bootstrap}/candidates.js +22 -8
- package/dist/operations/{autopilot → bootstrap}/discovery-evidence.d.ts +2 -2
- package/dist/operations/{autopilot → bootstrap}/discovery-evidence.d.ts.map +1 -1
- package/dist/operations/{autopilot → bootstrap}/discovery-evidence.js +46 -6
- package/dist/operations/{autopilot → bootstrap}/discovery.d.ts +1 -1
- package/dist/operations/bootstrap/discovery.d.ts.map +1 -0
- package/dist/operations/{autopilot → bootstrap}/discovery.js +21 -14
- package/dist/operations/bootstrap/generate.d.ts +9 -0
- package/dist/operations/bootstrap/generate.d.ts.map +1 -0
- package/dist/operations/bootstrap/generate.js +207 -0
- package/dist/operations/{autopilot → bootstrap}/guidance-actions.d.ts +2 -2
- package/dist/operations/{autopilot → bootstrap}/guidance-actions.d.ts.map +1 -1
- package/dist/operations/{autopilot → bootstrap}/guidance-actions.js +4 -4
- package/dist/operations/{autopilot → bootstrap}/guidance.d.ts +3 -2
- package/dist/operations/bootstrap/guidance.d.ts.map +1 -0
- package/dist/operations/{autopilot → bootstrap}/guidance.js +3 -1
- package/dist/operations/{autopilot → bootstrap}/markdown-candidates.d.ts +2 -2
- package/dist/operations/{autopilot → bootstrap}/markdown-candidates.d.ts.map +1 -1
- package/dist/operations/{autopilot → bootstrap}/markdown-candidates.js +4 -3
- package/dist/operations/bootstrap/presentation.d.ts +15 -0
- package/dist/operations/bootstrap/presentation.d.ts.map +1 -0
- package/dist/operations/bootstrap/presentation.js +177 -0
- package/dist/operations/{autopilot → bootstrap}/requirement-claims.d.ts.map +1 -1
- package/dist/operations/{autopilot → bootstrap}/types.d.ts +63 -21
- package/dist/operations/bootstrap/types.d.ts.map +1 -0
- package/dist/operations/bootstrap/types.js +25 -0
- package/dist/operations/modeling/model-requirement.d.ts +5 -0
- package/dist/operations/modeling/model-requirement.d.ts.map +1 -1
- package/dist/operations/modeling/model-requirement.js +57 -63
- package/dist/operations/modeling/predicate-applicability.d.ts +16 -0
- package/dist/operations/modeling/predicate-applicability.d.ts.map +1 -0
- package/dist/operations/modeling/predicate-applicability.js +375 -0
- package/dist/operations/modeling/predicate-applyplan.d.ts +13 -2
- package/dist/operations/modeling/predicate-applyplan.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-applyplan.js +100 -3
- package/dist/operations/modeling/predicate-bindings.d.ts +6 -0
- package/dist/operations/modeling/predicate-bindings.d.ts.map +1 -0
- package/dist/operations/modeling/predicate-bindings.js +122 -0
- package/dist/operations/modeling/predicate-catalog-2.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-catalog-2.js +18 -2
- package/dist/operations/modeling/predicate-catalog-3.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-catalog-3.js +17 -1
- package/dist/operations/modeling/predicate-catalog-4.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-catalog-4.js +155 -0
- package/dist/operations/modeling/predicate-catalog-5.d.ts +10 -0
- package/dist/operations/modeling/predicate-catalog-5.d.ts.map +1 -0
- package/dist/operations/modeling/predicate-catalog-5.js +291 -0
- package/dist/operations/modeling/predicate-catalog.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-catalog.js +4 -0
- package/dist/operations/modeling/predicate-inference-1.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-inference-1.js +8 -0
- package/dist/operations/modeling/predicate-inference-launcher.d.ts +10 -0
- package/dist/operations/modeling/predicate-inference-launcher.d.ts.map +1 -0
- package/dist/operations/modeling/predicate-inference-launcher.js +13 -0
- package/dist/operations/modeling/predicate-inference.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-inference.js +4 -0
- package/dist/operations/modeling/predicate-loader.d.ts +1 -0
- package/dist/operations/modeling/predicate-loader.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-loader.js +11 -3
- package/dist/operations/modeling/predicate-ranker.d.ts +8 -1
- package/dist/operations/modeling/predicate-ranker.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-ranker.js +159 -24
- package/dist/operations/modeling/predicate-score-3.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-score-3.js +6 -0
- package/dist/operations/modeling/predicate-types.d.ts +35 -1
- package/dist/operations/modeling/predicate-types.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-usage-hints-3.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-usage-hints-3.js +40 -0
- package/dist/operations/modeling/predicate-usage-hints-4.d.ts +3 -0
- package/dist/operations/modeling/predicate-usage-hints-4.d.ts.map +1 -0
- package/dist/operations/modeling/predicate-usage-hints-4.js +84 -0
- package/dist/operations/modeling/predicate-utils.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-utils.js +2 -0
- package/dist/operations/modeling/suggest-predicates.d.ts +4 -2
- package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
- package/dist/operations/modeling/suggest-predicates.js +203 -32
- package/dist/operations/mutation/contradictions.d.ts +2 -1
- package/dist/operations/mutation/contradictions.d.ts.map +1 -1
- package/dist/operations/mutation/contradictions.js +26 -5
- package/dist/operations/mutation/delete.d.ts +3 -0
- package/dist/operations/mutation/delete.d.ts.map +1 -1
- package/dist/operations/mutation/delete.js +483 -19
- package/dist/operations/mutation/entity-projection.d.ts +11 -0
- package/dist/operations/mutation/entity-projection.d.ts.map +1 -0
- package/dist/operations/mutation/entity-projection.js +14 -0
- package/dist/operations/mutation/relationships.d.ts +11 -0
- package/dist/operations/mutation/relationships.d.ts.map +1 -1
- package/dist/operations/mutation/relationships.js +77 -5
- package/dist/operations/mutation/saga.d.ts +51 -0
- package/dist/operations/mutation/saga.d.ts.map +1 -0
- package/dist/operations/mutation/saga.js +67 -0
- package/dist/operations/mutation/serialization.d.ts.map +1 -1
- package/dist/operations/mutation/serialization.js +3 -1
- package/dist/operations/mutation/source-authoring.d.ts +65 -0
- package/dist/operations/mutation/source-authoring.d.ts.map +1 -0
- package/dist/operations/mutation/source-authoring.js +576 -0
- package/dist/operations/mutation/strict-fact.d.ts +1 -0
- package/dist/operations/mutation/strict-fact.d.ts.map +1 -1
- package/dist/operations/mutation/strict-fact.js +8 -5
- package/dist/operations/mutation/symbol-compiler-lock.d.ts +54 -0
- package/dist/operations/mutation/symbol-compiler-lock.d.ts.map +1 -0
- package/dist/operations/mutation/symbol-compiler-lock.js +337 -0
- package/dist/operations/mutation/symbol-granularity.d.ts.map +1 -1
- package/dist/operations/mutation/symbol-granularity.js +35 -4
- package/dist/operations/mutation/symbol-refresh.d.ts +19 -1
- package/dist/operations/mutation/symbol-refresh.d.ts.map +1 -1
- package/dist/operations/mutation/symbol-refresh.js +227 -63
- package/dist/operations/mutation/types.d.ts +57 -1
- package/dist/operations/mutation/types.d.ts.map +1 -1
- package/dist/operations/mutation/upsert.d.ts +18 -2
- package/dist/operations/mutation/upsert.d.ts.map +1 -1
- package/dist/operations/mutation/upsert.js +403 -32
- package/dist/operations/mutation/validate-upsert.js +2 -2
- package/dist/operations/mutation/validation.d.ts.map +1 -1
- package/dist/operations/mutation/validation.js +47 -4
- package/dist/operations/mutation/warnings.d.ts +1 -0
- package/dist/operations/mutation/warnings.d.ts.map +1 -1
- package/dist/operations/mutation/warnings.js +7 -5
- package/dist/operations/mutation/workspace-mutation-lock.d.ts +60 -0
- package/dist/operations/mutation/workspace-mutation-lock.d.ts.map +1 -0
- package/dist/operations/mutation/workspace-mutation-lock.js +362 -0
- package/dist/operations/planning/apply-plan.d.ts +19 -0
- package/dist/operations/planning/apply-plan.d.ts.map +1 -0
- package/dist/operations/planning/apply-plan.js +1514 -0
- package/dist/operations/planning/compile-intent.d.ts +108 -0
- package/dist/operations/planning/compile-intent.d.ts.map +1 -0
- package/dist/operations/planning/compile-intent.js +618 -0
- package/dist/operations/proof/ingest-proof.d.ts +34 -0
- package/dist/operations/proof/ingest-proof.d.ts.map +1 -0
- package/dist/operations/proof/ingest-proof.js +307 -0
- package/dist/operations/proof/migrate-legacy-receipts.d.ts +30 -0
- package/dist/operations/proof/migrate-legacy-receipts.d.ts.map +1 -0
- package/dist/operations/proof/migrate-legacy-receipts.js +88 -0
- package/dist/operations/proof/prune-receipts.d.ts +35 -0
- package/dist/operations/proof/prune-receipts.d.ts.map +1 -0
- package/dist/operations/proof/prune-receipts.js +91 -0
- package/dist/operations/proof/receipt-document.d.ts +29 -0
- package/dist/operations/proof/receipt-document.d.ts.map +1 -0
- package/dist/operations/proof/receipt-document.js +117 -0
- package/dist/operations/semantic-advisor/analyze-prose.d.ts +1 -0
- package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/analyze-prose.js +52 -28
- package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/clauses.js +35 -9
- package/dist/operations/semantic-advisor/ingestion-boundary.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/ingestion-boundary.js +7 -3
- package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts +51 -0
- package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts.map +1 -0
- package/dist/operations/semantic-advisor/predicate-rules-launcher.js +96 -0
- package/dist/operations/semantic-advisor/strict-count-rules.d.ts +2 -0
- package/dist/operations/semantic-advisor/strict-count-rules.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/strict-count-rules.js +40 -25
- package/dist/operations/semantic-advisor/types.d.ts +13 -5
- package/dist/operations/semantic-advisor/types.d.ts.map +1 -1
- package/dist/prolog/codec.d.ts +13 -1
- package/dist/prolog/codec.d.ts.map +1 -1
- package/dist/prolog/codec.js +269 -153
- package/dist/prolog/error-terms.d.ts +47 -0
- package/dist/prolog/error-terms.d.ts.map +1 -0
- package/dist/prolog/error-terms.js +334 -0
- package/dist/prolog/janitor.d.ts +50 -0
- package/dist/prolog/janitor.d.ts.map +1 -0
- package/dist/prolog/janitor.js +154 -0
- package/dist/prolog/store-lock.d.ts +45 -0
- package/dist/prolog/store-lock.d.ts.map +1 -0
- package/dist/prolog/store-lock.js +195 -0
- package/dist/prolog.d.ts +7 -0
- package/dist/prolog.d.ts.map +1 -1
- package/dist/prolog.js +82 -25
- package/dist/proof/evaluate.d.ts +27 -0
- package/dist/proof/evaluate.d.ts.map +1 -0
- package/dist/proof/evaluate.js +151 -0
- package/dist/proof/inspect.d.ts +12 -0
- package/dist/proof/inspect.d.ts.map +1 -0
- package/dist/proof/inspect.js +236 -0
- package/dist/proof/integrations.d.ts +35 -0
- package/dist/proof/integrations.d.ts.map +1 -0
- package/dist/proof/integrations.js +123 -0
- package/dist/proof/producers/junit-adapter.d.ts +26 -0
- package/dist/proof/producers/junit-adapter.d.ts.map +1 -0
- package/dist/proof/producers/junit-adapter.js +186 -0
- package/dist/proof/producers/playwright-case-id.d.ts +8 -0
- package/dist/proof/producers/playwright-case-id.d.ts.map +1 -0
- package/dist/proof/producers/playwright-case-id.js +25 -0
- package/dist/proof/producers/playwright-reporter.d.ts +27 -0
- package/dist/proof/producers/playwright-reporter.d.ts.map +1 -0
- package/dist/proof/producers/playwright-reporter.js +138 -0
- package/dist/proof/producers/tap-adapter.d.ts +10 -0
- package/dist/proof/producers/tap-adapter.d.ts.map +1 -0
- package/dist/proof/producers/tap-adapter.js +200 -0
- package/dist/proof/receipt-outcome.d.ts +2 -0
- package/dist/proof/receipt-outcome.d.ts.map +1 -0
- package/dist/proof/receipt-outcome.js +1 -0
- package/dist/public/branch-resolver.d.ts +1 -0
- package/dist/public/branch-resolver.d.ts.map +1 -1
- package/dist/public/branch-resolver.js +1 -0
- package/dist/public/check-types.d.ts +2 -2
- package/dist/public/check-types.d.ts.map +1 -1
- package/dist/public/check-types.js +16 -16
- package/dist/public/diagnostic-usage.d.ts.map +1 -1
- package/dist/public/diagnostic-usage.js +74 -6
- package/dist/public/distribution-parity.d.ts +7 -1
- package/dist/public/distribution-parity.d.ts.map +1 -1
- package/dist/public/distribution-parity.js +15 -9
- package/dist/public/ignore-policy.d.ts.map +1 -1
- package/dist/public/ignore-policy.js +16 -4
- package/dist/public/impact/coverage-depth-quality.d.ts +7 -1
- package/dist/public/impact/coverage-depth-quality.d.ts.map +1 -1
- package/dist/public/impact/coverage-depth-quality.js +22 -4
- package/dist/public/impact/diagnostics.d.ts.map +1 -1
- package/dist/public/impact/diagnostics.js +2 -2
- package/dist/public/impact/diff-meaning.d.ts +1 -0
- package/dist/public/impact/diff-meaning.d.ts.map +1 -1
- package/dist/public/impact/diff-meaning.js +5 -2
- package/dist/public/impact/full-kb-quality.d.ts +7 -2
- package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
- package/dist/public/impact/full-kb-quality.js +364 -39
- package/dist/public/impact/manifest.d.ts.map +1 -1
- package/dist/public/impact/manifest.js +2 -5
- package/dist/public/operational-artifacts.d.ts.map +1 -1
- package/dist/public/operational-artifacts.js +7 -1
- package/dist/public/operations/catalog.d.ts +900 -34
- package/dist/public/operations/catalog.d.ts.map +1 -1
- package/dist/public/operations/catalog.js +130 -6
- package/dist/public/operations/check-executor.d.ts +2 -2
- package/dist/public/operations/check-executor.d.ts.map +1 -1
- package/dist/public/operations/check-executor.js +68 -13
- package/dist/public/operations/check-format-shared.d.ts +3 -0
- package/dist/public/operations/check-format-shared.d.ts.map +1 -1
- package/dist/public/operations/check-format-shared.js +3 -0
- package/dist/public/operations/check-helpers.d.ts +27 -2
- package/dist/public/operations/check-helpers.d.ts.map +1 -1
- package/dist/public/operations/check-helpers.js +62 -26
- package/dist/public/operations/contracts.d.ts +18 -0
- package/dist/public/operations/contracts.d.ts.map +1 -0
- package/dist/public/operations/contracts.js +334 -0
- package/dist/public/operations/discovery-entities.d.ts +3 -0
- package/dist/public/operations/discovery-entities.d.ts.map +1 -1
- package/dist/public/operations/discovery-entities.js +4 -0
- package/dist/public/operations/discovery-executors.d.ts +43 -7
- package/dist/public/operations/discovery-executors.d.ts.map +1 -1
- package/dist/public/operations/discovery-executors.js +216 -13
- package/dist/public/operations/index.d.ts +9 -4
- package/dist/public/operations/index.d.ts.map +1 -1
- package/dist/public/operations/index.js +8 -3
- package/dist/public/operations/migration-plan.d.ts +102 -0
- package/dist/public/operations/migration-plan.d.ts.map +1 -0
- package/dist/public/operations/migration-plan.js +539 -0
- package/dist/public/operations/node-ports.d.ts.map +1 -1
- package/dist/public/operations/node-ports.js +71 -11
- package/dist/public/operations/prolog-json.d.ts +14 -0
- package/dist/public/operations/prolog-json.d.ts.map +1 -1
- package/dist/public/operations/prolog-json.js +44 -5
- package/dist/public/operations/repair-plan.d.ts +3 -3
- package/dist/public/operations/repair-plan.d.ts.map +1 -1
- package/dist/public/operations/repair-plan.js +49 -18
- package/dist/public/operations/result-envelope.d.ts +14 -0
- package/dist/public/operations/result-envelope.d.ts.map +1 -0
- package/dist/public/operations/result-envelope.js +106 -0
- package/dist/public/operations/runtime-types.d.ts +102 -7
- package/dist/public/operations/runtime-types.d.ts.map +1 -1
- package/dist/public/operations/source-relationship-parity.d.ts +13 -0
- package/dist/public/operations/source-relationship-parity.d.ts.map +1 -0
- package/dist/public/operations/source-relationship-parity.js +162 -0
- package/dist/public/operations/specs/{autopilot.d.ts → bootstrap.d.ts} +9 -9
- package/dist/public/operations/specs/bootstrap.d.ts.map +1 -0
- package/dist/public/operations/specs/{autopilot.js → bootstrap.js} +8 -7
- package/dist/public/operations/specs/check-rules.generated.d.ts +5 -0
- package/dist/public/operations/specs/check-rules.generated.d.ts.map +1 -0
- package/dist/public/operations/specs/check-rules.generated.js +34 -0
- package/dist/public/operations/specs/check.d.ts +9 -4
- package/dist/public/operations/specs/check.d.ts.map +1 -1
- package/dist/public/operations/specs/check.js +10 -21
- package/dist/public/operations/specs/discovery.d.ts +87 -3
- package/dist/public/operations/specs/discovery.d.ts.map +1 -1
- package/dist/public/operations/specs/discovery.js +53 -3
- package/dist/public/operations/specs/modeling.d.ts +3 -3
- package/dist/public/operations/specs/modeling.js +3 -3
- package/dist/public/operations/specs/mutation-schemas.d.ts +251 -14
- package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
- package/dist/public/operations/specs/mutation-schemas.js +16 -6
- package/dist/public/operations/specs/mutation.d.ts +42 -2
- package/dist/public/operations/specs/mutation.d.ts.map +1 -1
- package/dist/public/operations/specs/mutation.js +26 -2
- package/dist/public/operations/specs/planning.d.ts +279 -0
- package/dist/public/operations/specs/planning.d.ts.map +1 -0
- package/dist/public/operations/specs/planning.js +197 -0
- package/dist/public/operations/specs/proof.d.ts +212 -0
- package/dist/public/operations/specs/proof.d.ts.map +1 -0
- package/dist/public/operations/specs/proof.js +30 -0
- package/dist/public/operations/specs/reporting.d.ts +23 -1
- package/dist/public/operations/specs/reporting.d.ts.map +1 -1
- package/dist/public/operations/specs/reporting.js +156 -11
- package/dist/public/operations/specs/upsert.d.ts +265 -14
- package/dist/public/operations/specs/upsert.d.ts.map +1 -1
- package/dist/public/operations/specs/upsert.js +9 -0
- package/dist/public/operations/symbol-repair-plan.d.ts +22 -0
- package/dist/public/operations/symbol-repair-plan.d.ts.map +1 -0
- package/dist/public/operations/symbol-repair-plan.js +238 -0
- package/dist/public/operations/types.d.ts +52 -1
- package/dist/public/operations/types.d.ts.map +1 -1
- package/dist/public/proof-fingerprint.d.ts +54 -0
- package/dist/public/proof-fingerprint.d.ts.map +1 -0
- package/dist/public/proof-fingerprint.js +141 -0
- package/dist/public/proof-protocol.d.ts +354 -0
- package/dist/public/proof-protocol.d.ts.map +1 -0
- package/dist/public/proof-protocol.js +454 -0
- package/dist/public/proof-receipt.d.ts +279 -0
- package/dist/public/proof-receipt.d.ts.map +1 -0
- package/dist/public/proof-receipt.js +377 -0
- package/dist/public/schemas/entity.d.ts.map +1 -1
- package/dist/public/schemas/entity.js +22 -6
- package/dist/public/skills/kibi-bootstrap/SKILL.md +58 -0
- package/dist/public/skills/kibi-bootstrap/resources/bootstrap.md +11 -0
- package/dist/public/skills/kibi-bootstrap/resources/branch-lifecycle.md +7 -0
- package/dist/public/skills/kibi-bootstrap/resources/operation-access.md +5 -0
- package/dist/public/skills/kibi-bootstrap/resources/source-authoring.md +8 -0
- package/dist/public/skills/kibi-freshness/SKILL.md +39 -9
- package/dist/public/skills/kibi-freshness/resources/branch-lifecycle.md +7 -0
- package/dist/public/skills/kibi-freshness/resources/operation-access.md +6 -0
- package/dist/public/skills/kibi-freshness/resources/source-authoring.md +7 -0
- package/dist/public/skills/kibi-traceability/SKILL.md +47 -47
- package/dist/public/skills/kibi-traceability/resources/branch-lifecycle.md +7 -0
- package/dist/public/skills/kibi-traceability/resources/operation-access.md +5 -0
- package/dist/public/skills/kibi-traceability/resources/source-authoring.md +6 -0
- package/dist/public/skills/kibi-traceability/resources/traceability.md +8 -0
- package/dist/public/skills/kibi-usage/SKILL.md +136 -231
- package/dist/public/skills/kibi-usage/resources/branch-lifecycle.md +31 -0
- package/dist/public/skills/kibi-usage/resources/kb-improvement.md +38 -0
- package/dist/public/skills/kibi-usage/resources/operation-access.md +36 -38
- package/dist/public/skills/kibi-usage/resources/proof.md +105 -0
- package/dist/public/skills/kibi-usage/resources/relationship-directions.md +3 -3
- package/dist/public/skills/kibi-usage/resources/source-authoring.md +31 -0
- package/dist/public/skills/kibi-usage/resources/workflows.md +57 -4
- package/dist/public/symbol-granularity.d.ts +3 -14
- package/dist/public/symbol-granularity.d.ts.map +1 -1
- package/dist/public/symbol-granularity.generated.d.ts +16 -0
- package/dist/public/symbol-granularity.generated.d.ts.map +1 -0
- package/dist/public/symbol-granularity.generated.js +20 -0
- package/dist/public/symbol-granularity.js +6 -46
- package/dist/public/telemetry-acceptance.d.ts +3 -70
- package/dist/public/telemetry-acceptance.d.ts.map +1 -1
- package/dist/public/telemetry-acceptance.js +11 -2
- package/dist/public/telemetry-remediation.js +1 -1
- package/dist/relationships/shards.d.ts +16 -0
- package/dist/relationships/shards.d.ts.map +1 -1
- package/dist/relationships/shards.js +87 -2
- package/dist/report/brand.d.ts +19 -0
- package/dist/report/brand.d.ts.map +1 -0
- package/dist/report/brand.js +112 -0
- package/dist/report/html-report.css +282 -0
- package/dist/report/html-report.d.ts +21 -0
- package/dist/report/html-report.d.ts.map +1 -0
- package/dist/report/html-report.js +700 -0
- package/dist/report/relative-time.d.ts +4 -0
- package/dist/report/relative-time.d.ts.map +1 -0
- package/dist/report/relative-time.js +46 -0
- package/dist/report/report-view.d.ts +17 -0
- package/dist/report/report-view.d.ts.map +1 -0
- package/dist/report/report-view.js +33 -0
- package/dist/report/repository.d.ts +35 -0
- package/dist/report/repository.d.ts.map +1 -0
- package/dist/report/repository.js +151 -0
- package/dist/runtime/cli-runtime.d.ts +2 -0
- package/dist/runtime/cli-runtime.d.ts.map +1 -1
- package/dist/runtime/cli-runtime.js +90 -23
- package/dist/schemas/entity.schema.json +1254 -239
- package/dist/search-ranking.d.ts +1 -0
- package/dist/search-ranking.d.ts.map +1 -1
- package/dist/search-ranking.js +3 -0
- package/dist/traceability/evidence-model.d.ts +30 -2
- package/dist/traceability/evidence-model.d.ts.map +1 -1
- package/dist/traceability/evidence-model.js +2 -2
- package/dist/traceability/git-staged.d.ts +20 -0
- package/dist/traceability/git-staged.d.ts.map +1 -1
- package/dist/traceability/git-staged.js +156 -37
- package/dist/traceability/markdown-validate.d.ts.map +1 -1
- package/dist/traceability/markdown-validate.js +12 -7
- package/dist/traceability/staged-diagnostics.d.ts +7 -0
- package/dist/traceability/staged-diagnostics.d.ts.map +1 -1
- package/dist/traceability/staged-diagnostics.js +78 -7
- package/dist/traceability/staged-file-coverage.d.ts +33 -0
- package/dist/traceability/staged-file-coverage.d.ts.map +1 -0
- package/dist/traceability/staged-file-coverage.js +284 -0
- package/dist/traceability/staged-impact-contract.d.ts +3 -3
- package/dist/traceability/staged-impact-contract.d.ts.map +1 -1
- package/dist/traceability/staged-impact-contract.js +12 -40
- package/dist/traceability/staged-symbols-manifest.d.ts +13 -0
- package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
- package/dist/traceability/staged-symbols-manifest.js +142 -26
- package/dist/traceability/symbol-extract.d.ts +5 -0
- package/dist/traceability/symbol-extract.d.ts.map +1 -1
- package/dist/traceability/symbol-extract.js +1 -1
- package/dist/traceability/temp-kb.d.ts +2 -0
- package/dist/traceability/temp-kb.d.ts.map +1 -1
- package/dist/traceability/temp-kb.js +14 -2
- package/dist/types/entities.d.ts +5 -0
- package/dist/types/entities.d.ts.map +1 -1
- package/dist/utils/branch-resolver.d.ts +25 -10
- package/dist/utils/branch-resolver.d.ts.map +1 -1
- package/dist/utils/branch-resolver.js +124 -38
- package/dist/utils/branch-store-locator.d.ts +23 -0
- package/dist/utils/branch-store-locator.d.ts.map +1 -0
- package/dist/utils/branch-store-locator.js +90 -0
- package/dist/utils/branch-store.d.ts +21 -0
- package/dist/utils/branch-store.d.ts.map +1 -0
- package/dist/utils/branch-store.js +157 -0
- package/dist/utils/config.d.ts +39 -37
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +107 -119
- package/dist/utils/kb-manifest.d.ts +35 -0
- package/dist/utils/kb-manifest.d.ts.map +1 -0
- package/dist/utils/kb-manifest.js +154 -0
- package/dist/utils/kb-paths.d.ts +54 -0
- package/dist/utils/kb-paths.d.ts.map +1 -0
- package/dist/utils/kb-paths.js +125 -0
- package/dist/utils/manifest-paths.d.ts +4 -4
- package/dist/utils/manifest-paths.d.ts.map +1 -1
- package/dist/utils/manifest-paths.js +8 -56
- package/dist/utils/rule-registry.d.ts +42 -24
- package/dist/utils/rule-registry.d.ts.map +1 -1
- package/dist/utils/rule-registry.generated.d.ts +97 -0
- package/dist/utils/rule-registry.generated.d.ts.map +1 -0
- package/dist/utils/rule-registry.generated.js +125 -0
- package/dist/utils/rule-registry.js +52 -148
- package/dist/utils/schema-version.d.ts +5 -5
- package/dist/utils/schema-version.d.ts.map +1 -1
- package/dist/utils/schema-version.js +26 -6
- package/dist/utils/strict-modeling.d.ts +1 -4
- package/dist/utils/strict-modeling.d.ts.map +1 -1
- package/dist/utils/strict-modeling.js +8 -9
- package/package.json +47 -11
- package/schema/config.json +2 -2
- package/schema/manifest.json +26 -0
- package/src/public/branch-resolver.ts +1 -0
- package/src/public/check-types.ts +22 -19
- package/src/public/diagnostic-usage.ts +84 -6
- package/src/public/distribution-parity.ts +17 -9
- package/src/public/ignore-policy.ts +16 -10
- package/src/public/impact/coverage-depth-quality.ts +37 -1
- package/src/public/impact/diagnostics.ts +2 -1
- package/src/public/impact/diff-meaning.ts +11 -4
- package/src/public/impact/full-kb-quality.ts +545 -41
- package/src/public/impact/manifest.ts +2 -4
- package/src/public/operational-artifacts.ts +9 -1
- package/src/public/operations/catalog.ts +153 -10
- package/src/public/operations/check-executor.ts +98 -15
- package/src/public/operations/check-format-shared.ts +6 -0
- package/src/public/operations/check-helpers.ts +74 -35
- package/src/public/operations/contracts.ts +382 -0
- package/src/public/operations/discovery-entities.ts +7 -0
- package/src/public/operations/discovery-executors.ts +315 -25
- package/src/public/operations/index.ts +9 -4
- package/src/public/operations/migration-plan.ts +747 -0
- package/src/public/operations/node-ports.ts +87 -13
- package/src/public/operations/prolog-json.ts +60 -5
- package/src/public/operations/repair-plan.ts +60 -22
- package/src/public/operations/result-envelope.ts +141 -0
- package/src/public/operations/runtime-types.ts +96 -5
- package/src/public/operations/source-relationship-parity.ts +226 -0
- package/src/public/operations/specs/{autopilot.ts → bootstrap.ts} +17 -16
- package/src/public/operations/specs/check-rules.generated.ts +37 -0
- package/src/public/operations/specs/check.ts +14 -22
- package/src/public/operations/specs/discovery.ts +57 -3
- package/src/public/operations/specs/modeling.ts +3 -3
- package/src/public/operations/specs/mutation-schemas.ts +24 -6
- package/src/public/operations/specs/mutation.ts +27 -2
- package/src/public/operations/specs/planning.ts +241 -0
- package/src/public/operations/specs/proof.ts +43 -0
- package/src/public/operations/specs/reporting.ts +193 -12
- package/src/public/operations/specs/upsert.ts +10 -0
- package/src/public/operations/symbol-repair-plan.ts +324 -0
- package/src/public/operations/types.ts +62 -1
- package/src/public/proof-fingerprint.ts +216 -0
- package/src/public/proof-protocol-types.d.ts +96 -0
- package/src/public/proof-protocol.ts +589 -0
- package/src/public/proof-receipt.ts +499 -0
- package/src/public/schemas/entity.ts +27 -6
- package/src/public/skills/kibi-bootstrap/SKILL.md +58 -0
- package/src/public/skills/kibi-bootstrap/resources/bootstrap.md +11 -0
- package/src/public/skills/kibi-bootstrap/resources/branch-lifecycle.md +7 -0
- package/src/public/skills/kibi-bootstrap/resources/operation-access.md +5 -0
- package/src/public/skills/kibi-bootstrap/resources/source-authoring.md +8 -0
- package/src/public/skills/kibi-freshness/SKILL.md +39 -9
- package/src/public/skills/kibi-freshness/resources/branch-lifecycle.md +7 -0
- package/src/public/skills/kibi-freshness/resources/operation-access.md +6 -0
- package/src/public/skills/kibi-freshness/resources/source-authoring.md +7 -0
- package/src/public/skills/kibi-traceability/SKILL.md +47 -47
- package/src/public/skills/kibi-traceability/resources/branch-lifecycle.md +7 -0
- package/src/public/skills/kibi-traceability/resources/operation-access.md +5 -0
- package/src/public/skills/kibi-traceability/resources/source-authoring.md +6 -0
- package/src/public/skills/kibi-traceability/resources/traceability.md +8 -0
- package/src/public/skills/kibi-usage/SKILL.md +136 -231
- package/src/public/skills/kibi-usage/resources/branch-lifecycle.md +31 -0
- package/src/public/skills/kibi-usage/resources/kb-improvement.md +38 -0
- package/src/public/skills/kibi-usage/resources/operation-access.md +36 -38
- package/src/public/skills/kibi-usage/resources/proof.md +105 -0
- package/src/public/skills/kibi-usage/resources/relationship-directions.md +3 -3
- package/src/public/skills/kibi-usage/resources/source-authoring.md +31 -0
- package/src/public/skills/kibi-usage/resources/workflows.md +57 -4
- package/src/public/symbol-granularity.generated.ts +41 -0
- package/src/public/symbol-granularity.ts +35 -59
- package/src/public/telemetry-acceptance-types.d.ts +98 -0
- package/src/public/telemetry-acceptance.ts +30 -93
- package/src/public/telemetry-remediation.ts +1 -1
- package/src/schemas/entity.schema.json +1254 -239
- package/templates/github/kibi-badge.yml +86 -0
- package/templates/github/kibi-report.yml +84 -0
- package/dist/operations/autopilot/activation.d.ts +0 -4
- package/dist/operations/autopilot/activation.d.ts.map +0 -1
- package/dist/operations/autopilot/candidates.d.ts +0 -4
- package/dist/operations/autopilot/discovery.d.ts.map +0 -1
- package/dist/operations/autopilot/generate.d.ts +0 -8
- package/dist/operations/autopilot/generate.d.ts.map +0 -1
- package/dist/operations/autopilot/generate.js +0 -112
- package/dist/operations/autopilot/guidance.d.ts.map +0 -1
- package/dist/operations/autopilot/presentation.d.ts +0 -13
- package/dist/operations/autopilot/presentation.d.ts.map +0 -1
- package/dist/operations/autopilot/presentation.js +0 -91
- package/dist/operations/autopilot/types.d.ts.map +0 -1
- package/dist/operations/autopilot/types.js +0 -8
- package/dist/public/operations/specs/autopilot.d.ts.map +0 -1
- package/dist/public/skills/init-kibi/SKILL.md +0 -62
- package/dist/public/verification-receipt.d.ts +0 -75
- package/dist/public/verification-receipt.d.ts.map +0 -1
- package/dist/public/verification-receipt.js +0 -129
- package/src/public/skills/init-kibi/SKILL.md +0 -62
- package/src/public/verification-receipt.ts +0 -170
- /package/dist/operations/{autopilot → bootstrap}/candidate-helpers.d.ts +0 -0
- /package/dist/operations/{autopilot → bootstrap}/candidate-helpers.js +0 -0
- /package/dist/operations/{autopilot → bootstrap}/requirement-claims.d.ts +0 -0
- /package/dist/operations/{autopilot → bootstrap}/requirement-claims.js +0 -0
package/dist/search-ranking.d.ts
CHANGED
|
@@ -6,4 +6,5 @@ export interface SearchMatch {
|
|
|
6
6
|
}
|
|
7
7
|
export declare function rankEntities(entities: Record<string, unknown>[], query: string, workspaceRoot: string): Promise<SearchMatch[]>;
|
|
8
8
|
export declare function loadMarkdownBody(source: string, workspaceRoot: string): Promise<string | null>;
|
|
9
|
+
export declare function snippetFromMatchedLine(matchedLine: string | undefined): string | undefined;
|
|
9
10
|
//# sourceMappingURL=search-ranking.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-ranking.d.ts","sourceRoot":"","sources":["../src/search-ranking.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAgDD,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACnC,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,WAAW,EAAE,CAAC,CA8BxB;AAsGD,wBAAsB,gBAAgB,CAEpC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA6BxB"}
|
|
1
|
+
{"version":3,"file":"search-ranking.d.ts","sourceRoot":"","sources":["../src/search-ranking.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAgDD,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACnC,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,WAAW,EAAE,CAAC,CA8BxB;AAsGD,wBAAsB,gBAAgB,CAEpC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA6BxB;AAuJD,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,MAAM,GAAG,SAAS,CAQpB"}
|
package/dist/search-ranking.js
CHANGED
|
@@ -263,6 +263,9 @@ function buildSnippet(bodyText, queryForms) {
|
|
|
263
263
|
.map((line) => line.trim())
|
|
264
264
|
.filter(Boolean);
|
|
265
265
|
const matchedLine = lines.find((line) => isPhraseSearchMatch(buildSearchTextForms(line), queryForms)) ?? lines[0];
|
|
266
|
+
return snippetFromMatchedLine(matchedLine);
|
|
267
|
+
}
|
|
268
|
+
export function snippetFromMatchedLine(matchedLine) {
|
|
266
269
|
if (!matchedLine) {
|
|
267
270
|
return undefined;
|
|
268
271
|
}
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
export declare const KIBI_STAGED_IMPACT_EVIDENCE_DOC = "docs/cli-reference.md#staged-impact-evidence";
|
|
9
9
|
export declare const KIBI_ENTITY_SCHEMA_DOC = "docs/entity-schema.md";
|
|
10
10
|
/** Canonical symbols manifest path used by staged traceability enforcement. */
|
|
11
|
-
export declare const KIBI_SYMBOLS_MANIFEST_PATH = "
|
|
11
|
+
export declare const KIBI_SYMBOLS_MANIFEST_PATH = ".kb/symbols.yaml";
|
|
12
12
|
/** Canonical symbol coordinates artifact used by staged traceability enforcement. */
|
|
13
|
-
export declare const KIBI_SYMBOL_COORDINATES_PATH = "
|
|
13
|
+
export declare const KIBI_SYMBOL_COORDINATES_PATH = ".kb/symbol-coordinates.yaml";
|
|
14
14
|
/** Explicit declaration string for audited no-impact overrides. */
|
|
15
15
|
export declare const KIBI_NO_IMPACT_DECLARATION = "Kibi-Impact: none";
|
|
16
16
|
/** Canonical Kibi entity types that can provide staged evidence. */
|
|
@@ -49,6 +49,28 @@ export interface KibiImpactKbArtifact {
|
|
|
49
49
|
/** Repo-relative source paths explicitly covered by this artifact. */
|
|
50
50
|
sourcePaths: string[];
|
|
51
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Per-file explanation of why symbol evidence does not match extraction.
|
|
54
|
+
*
|
|
55
|
+
* Titles come from comparing the extractor's view of the staged source content
|
|
56
|
+
* against the staged manifest+coordinates records for the same path, so the
|
|
57
|
+
* diagnostic can name the exact symbols a commit's evidence is missing.
|
|
58
|
+
*/
|
|
59
|
+
export interface KibiImpactSymbolsManifestFileDetail {
|
|
60
|
+
/** Repo-relative staged source path the diff describes. */
|
|
61
|
+
path: string;
|
|
62
|
+
/** Symbol count extraction finds in the staged source content. */
|
|
63
|
+
expectedCount: number;
|
|
64
|
+
/** Symbol count the staged manifest+coordinates evidence covers. */
|
|
65
|
+
coveredCount: number;
|
|
66
|
+
/** Extracted symbols with no evidence entry (title + definition line). */
|
|
67
|
+
missing: Array<{
|
|
68
|
+
title: string;
|
|
69
|
+
line: number;
|
|
70
|
+
}>;
|
|
71
|
+
/** Evidence entries the extractor no longer finds at the recorded shape. */
|
|
72
|
+
extra: string[];
|
|
73
|
+
}
|
|
52
74
|
/**
|
|
53
75
|
* Deterministic symbol coordinates artifact state for the staged change-set.
|
|
54
76
|
*
|
|
@@ -66,6 +88,12 @@ export interface KibiImpactSymbolsManifest {
|
|
|
66
88
|
state: "not_required" | "fresh" | "stale" | "missing";
|
|
67
89
|
/** Repo-relative staged source paths whose symbol output this state describes. */
|
|
68
90
|
sourcePaths: string[];
|
|
91
|
+
/**
|
|
92
|
+
* Per-file extraction-vs-evidence diffs for the paths this state describes.
|
|
93
|
+
* Present only when extraction output changed; lets diagnostics name the
|
|
94
|
+
* uncovered symbols instead of reporting a bare "stale" verdict.
|
|
95
|
+
*/
|
|
96
|
+
fileDetails?: readonly KibiImpactSymbolsManifestFileDetail[];
|
|
69
97
|
}
|
|
70
98
|
/** Supported audited reasons for a no-impact override. */
|
|
71
99
|
export type KibiNoImpactReason = "false_positive" | "non_behavioral_source_edit";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence-model.d.ts","sourceRoot":"","sources":["../../src/traceability/evidence-model.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,+BAA+B,iDACI,CAAC;AAEjD,eAAO,MAAM,sBAAsB,0BAA0B,CAAC;AAE9D,+EAA+E;AAC/E,eAAO,MAAM,0BAA0B
|
|
1
|
+
{"version":3,"file":"evidence-model.d.ts","sourceRoot":"","sources":["../../src/traceability/evidence-model.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,+BAA+B,iDACI,CAAC;AAEjD,eAAO,MAAM,sBAAsB,0BAA0B,CAAC;AAE9D,+EAA+E;AAC/E,eAAO,MAAM,0BAA0B,qBAAqB,CAAC;AAE7D,qFAAqF;AACrF,eAAO,MAAM,4BAA4B,gCAAgC,CAAC;AAE1E,mEAAmE;AACnE,eAAO,MAAM,0BAA0B,sBAAsB,CAAC;AAE9D,oEAAoE;AACpE,MAAM,MAAM,cAAc,GACtB,KAAK,GACL,UAAU,GACV,MAAM,GACN,KAAK,GACL,MAAM,GACN,OAAO,GACP,QAAQ,GACR,MAAM,CAAC;AAEX;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GACxB,sBAAsB,GACtB,0BAA0B,CAAC;AAE/B,sEAAsE;AACtE,MAAM,WAAW,sBAAsB;IACrC,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,IAAI,EAAE,gBAAgB,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,wEAAwE;IACxE,IAAI,EAAE,iBAAiB,GAAG,kBAAkB,CAAC;IAC7C,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,2DAA2D;IAC3D,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,sEAAsE;IACtE,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mCAAmC;IAClD,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,YAAY,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,4EAA4E;IAC5E,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,yBAAyB;IACxC,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,KAAK,EAAE,cAAc,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;IACtD,kFAAkF;IAClF,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,SAAS,mCAAmC,EAAE,CAAC;CAC9D;AAED,0DAA0D;AAC1D,MAAM,MAAM,kBAAkB,GAC1B,gBAAgB,GAChB,4BAA4B,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,oCAAoC;IACpC,WAAW,EAAE,OAAO,0BAA0B,CAAC;IAC/C,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,gDAAgD;IAChD,MAAM,EAAE,kBAAkB,CAAC;IAC3B,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,gEAAgE;AAChE,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,YAAY,CAAC;IACnB,oEAAoE;IACpE,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACrC;AAED,0EAA0E;AAC1E,MAAM,WAAW,8BAA8B;IAC7C,IAAI,EAAE,oBAAoB,CAAC;IAC3B,0EAA0E;IAC1E,QAAQ,EAAE,oBAAoB,CAAC;CAChC;AAED,yEAAyE;AACzE,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,6EAA6E;AAC7E,MAAM,MAAM,cAAc,GACtB,uBAAuB,GACvB,8BAA8B,GAC9B,qBAAqB,CAAC;AAE1B;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,oEAAoE;IACpE,aAAa,EAAE,sBAAsB,EAAE,CAAC;IACxC,2EAA2E;IAC3E,eAAe,EAAE,yBAAyB,CAAC;IAC3C,wDAAwD;IACxD,IAAI,EAAE,cAAc,CAAC;CACtB;AAMD,0DAA0D;AAC1D,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAK7E;AAED,oEAAoE;AACpE,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,kBAAkB,GAC3B,MAAM,EAAE,CAQV;AAED,gFAAgF;AAChF,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,kBAAkB,GAC3B,MAAM,EAAE,CAMV;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAYzE;AAED,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAK1E;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,kBAAkB,GAC3B,MAAM,EAAE,CAQV"}
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
export const KIBI_STAGED_IMPACT_EVIDENCE_DOC = "docs/cli-reference.md#staged-impact-evidence";
|
|
9
9
|
export const KIBI_ENTITY_SCHEMA_DOC = "docs/entity-schema.md";
|
|
10
10
|
/** Canonical symbols manifest path used by staged traceability enforcement. */
|
|
11
|
-
export const KIBI_SYMBOLS_MANIFEST_PATH = "
|
|
11
|
+
export const KIBI_SYMBOLS_MANIFEST_PATH = ".kb/symbols.yaml";
|
|
12
12
|
/** Canonical symbol coordinates artifact used by staged traceability enforcement. */
|
|
13
|
-
export const KIBI_SYMBOL_COORDINATES_PATH = "
|
|
13
|
+
export const KIBI_SYMBOL_COORDINATES_PATH = ".kb/symbol-coordinates.yaml";
|
|
14
14
|
/** Explicit declaration string for audited no-impact overrides. */
|
|
15
15
|
export const KIBI_NO_IMPACT_DECLARATION = "Kibi-Impact: none";
|
|
16
16
|
function uniqueSorted(values) {
|
|
@@ -11,9 +11,21 @@ export interface StagedFile {
|
|
|
11
11
|
diffText?: string;
|
|
12
12
|
content?: string;
|
|
13
13
|
}
|
|
14
|
+
export type StagedAnalysisDepth = "symbol" | "metadata" | "file" | "none";
|
|
15
|
+
export type StagedDisposition = "checked" | "advisory" | "skipped";
|
|
16
|
+
export type StagedSkipReason = "binary" | "unsupported_encoding" | "symlink" | "submodule";
|
|
17
|
+
/** Complete Git-index record used by staged validation before any filtering. */
|
|
18
|
+
export interface StagedPath extends StagedFile {
|
|
19
|
+
analysisDepth: StagedAnalysisDepth;
|
|
20
|
+
disposition: StagedDisposition;
|
|
21
|
+
gitMode?: string;
|
|
22
|
+
previousContent?: string;
|
|
23
|
+
skipReason?: StagedSkipReason;
|
|
24
|
+
}
|
|
14
25
|
type ExecFn = (cmd: string, opts: {
|
|
15
26
|
encoding: "utf8";
|
|
16
27
|
}) => string;
|
|
28
|
+
export type GitArgsExecFn = (args: readonly string[]) => Buffer;
|
|
17
29
|
/**
|
|
18
30
|
* Parse null-separated name-status output from git
|
|
19
31
|
*/
|
|
@@ -21,6 +33,14 @@ export declare function parseNameStatusNull(input: string): Array<{
|
|
|
21
33
|
status: string;
|
|
22
34
|
parts: string[];
|
|
23
35
|
}>;
|
|
36
|
+
/**
|
|
37
|
+
* Read every staged path from the index, preserving records that staged symbol
|
|
38
|
+
* validation cannot inspect deeply. Blob contents always come from Git rather
|
|
39
|
+
* than the working tree.
|
|
40
|
+
*/
|
|
41
|
+
export declare function getStagedInventory(exec?: GitArgsExecFn): StagedPath[];
|
|
42
|
+
/** Convert the complete inventory to the historical supported staged-file set. */
|
|
43
|
+
export declare function supportedStagedFiles(inventory: readonly StagedPath[]): StagedFile[];
|
|
24
44
|
/**
|
|
25
45
|
* Parse unified diff hunks (new-file coordinates) from git diff output
|
|
26
46
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-staged.d.ts","sourceRoot":"","sources":["../../src/traceability/git-staged.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAE3C,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,KAAK,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,KAAK,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"git-staged.d.ts","sourceRoot":"","sources":["../../src/traceability/git-staged.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAE3C,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAC1E,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AACnE,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,sBAAsB,GACtB,SAAS,GACT,WAAW,CAAC;AAEhB,gFAAgF;AAChF,MAAM,WAAW,UAAW,SAAQ,UAAU;IAC5C,aAAa,EAAE,mBAAmB,CAAC;IACnC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAED,KAAK,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,KAAK,MAAM,CAAC;AAClE,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,MAAM,CAAC;AAwChE;;GAEG;AAEH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,GACZ,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAwB5C;AAsFD;;;;GAIG;AAEH,wBAAgB,kBAAkB,CAChC,IAAI,GAAE,aAAkC,GACvC,UAAU,EAAE,CAuFd;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,SAAS,UAAU,EAAE,GAC/B,UAAU,EAAE,CAmBd;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAEhC,QAAQ,EAAE,MAAM,EAChB,SAAS,UAAQ,GAChB,SAAS,EAAE,CAuBb;AAED;;GAEG;AAEH,wBAAgB,cAAc,CAAC,IAAI,GAAE,MAAoB,GAAG,UAAU,EAAE,CAwGvE;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -1,6 +1,30 @@
|
|
|
1
|
-
import { execSync } from "node:child_process";
|
|
1
|
+
import { execFileSync, execSync } from "node:child_process";
|
|
2
2
|
import { isCliTraceOrDebugEnabled } from "../env.js";
|
|
3
|
-
import {
|
|
3
|
+
import { isEntityLanePath, isSymbolsManifestPath } from "../utils/kb-paths.js";
|
|
4
|
+
// Staged manifests (e.g., .kb/symbols.yaml) can exceed Node's default 1 MiB
|
|
5
|
+
// exec buffer; without a larger bound the staged file is silently skipped and
|
|
6
|
+
// freshness checks compare against stale HEAD state.
|
|
7
|
+
const GIT_EXEC_MAX_BUFFER = 64 * 1024 * 1024;
|
|
8
|
+
function defaultExec(cmd, opts) {
|
|
9
|
+
return execSync(cmd, { ...opts, maxBuffer: GIT_EXEC_MAX_BUFFER });
|
|
10
|
+
}
|
|
11
|
+
function defaultGitArgsExec(args) {
|
|
12
|
+
return execFileSync("git", args, {
|
|
13
|
+
encoding: "buffer",
|
|
14
|
+
maxBuffer: GIT_EXEC_MAX_BUFFER,
|
|
15
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
function runGitArgs(args, exec) {
|
|
19
|
+
try {
|
|
20
|
+
return exec(args);
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
const e = err;
|
|
24
|
+
const message = e?.message ? String(e.message) : String(err);
|
|
25
|
+
throw new Error(`git command failed: git ${args.join(" ")} -> ${message}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
4
28
|
function runGit(cmd, exec) {
|
|
5
29
|
try {
|
|
6
30
|
return exec(cmd, { encoding: "utf8" });
|
|
@@ -49,19 +73,10 @@ const SUPPORTED_EXT = new Set([
|
|
|
49
73
|
".cjs",
|
|
50
74
|
]);
|
|
51
75
|
const SUPPORTED_MANIFEST = new Set([
|
|
52
|
-
"symbols.yaml",
|
|
53
|
-
"symbols.yml",
|
|
54
|
-
"symbol-coordinates.yaml",
|
|
76
|
+
".kb/symbols.yaml",
|
|
77
|
+
".kb/symbols.yml",
|
|
78
|
+
".kb/symbol-coordinates.yaml",
|
|
55
79
|
]);
|
|
56
|
-
const ENTITY_MARKDOWN_DIRS = [
|
|
57
|
-
"/requirements/",
|
|
58
|
-
"/scenarios/",
|
|
59
|
-
"/tests/",
|
|
60
|
-
"/facts/",
|
|
61
|
-
"/adr/",
|
|
62
|
-
"/flags/",
|
|
63
|
-
"/events/",
|
|
64
|
-
];
|
|
65
80
|
function shouldLogTraceDebug() {
|
|
66
81
|
return isCliTraceOrDebugEnabled();
|
|
67
82
|
}
|
|
@@ -76,34 +91,138 @@ function hasSupportedExt(p) {
|
|
|
76
91
|
return false;
|
|
77
92
|
}
|
|
78
93
|
function isEntityMarkdown(p) {
|
|
79
|
-
|
|
80
|
-
return false;
|
|
81
|
-
for (const dir of ENTITY_MARKDOWN_DIRS) {
|
|
82
|
-
if (p.includes(dir))
|
|
83
|
-
return true;
|
|
84
|
-
}
|
|
85
|
-
return false;
|
|
94
|
+
return p.endsWith(".md") && isEntityLanePath(p);
|
|
86
95
|
}
|
|
87
96
|
function isManifestFile(p) {
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
97
|
+
const posix = p.replaceAll("\\", "/");
|
|
98
|
+
return SUPPORTED_MANIFEST.has(posix) || isSymbolsManifestPath(posix);
|
|
99
|
+
}
|
|
100
|
+
function isRelationshipShard(p) {
|
|
101
|
+
const posix = p.replaceAll("\\", "/");
|
|
102
|
+
return (posix.startsWith(".kb/relationships/") &&
|
|
103
|
+
(posix.endsWith(".yaml") || posix.endsWith(".yml")));
|
|
104
|
+
}
|
|
105
|
+
function isKibiMetadataPath(p) {
|
|
106
|
+
const posix = p.replaceAll("\\", "/");
|
|
107
|
+
return (isEntityMarkdown(posix) ||
|
|
108
|
+
isManifestFile(posix) ||
|
|
109
|
+
isRelationshipShard(posix) ||
|
|
110
|
+
posix === ".kb/manifest.json");
|
|
111
|
+
}
|
|
112
|
+
function decodeText(buffer) {
|
|
113
|
+
if (buffer.includes(0))
|
|
114
|
+
return { skipReason: "binary" };
|
|
95
115
|
try {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
if (configuredBase && base === configuredBase)
|
|
100
|
-
return true;
|
|
101
|
-
}
|
|
116
|
+
return {
|
|
117
|
+
content: new TextDecoder("utf-8", { fatal: true }).decode(buffer),
|
|
118
|
+
};
|
|
102
119
|
}
|
|
103
120
|
catch {
|
|
104
|
-
|
|
121
|
+
return { skipReason: "unsupported_encoding" };
|
|
105
122
|
}
|
|
106
|
-
|
|
123
|
+
}
|
|
124
|
+
function parseMode(output) {
|
|
125
|
+
const text = output.toString("utf8");
|
|
126
|
+
return text.match(/^(\d{6})\s/)?.[1];
|
|
127
|
+
}
|
|
128
|
+
function normalizeNewFileHunks(ranges, content) {
|
|
129
|
+
const lineCount = Math.max(1, content.split(/\r?\n/).length);
|
|
130
|
+
for (const range of ranges) {
|
|
131
|
+
if (range.end === Number.MAX_SAFE_INTEGER)
|
|
132
|
+
range.end = lineCount;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Read every staged path from the index, preserving records that staged symbol
|
|
137
|
+
* validation cannot inspect deeply. Blob contents always come from Git rather
|
|
138
|
+
* than the working tree.
|
|
139
|
+
*/
|
|
140
|
+
// implements REQ-014
|
|
141
|
+
export function getStagedInventory(exec = defaultGitArgsExec) {
|
|
142
|
+
let parsed;
|
|
143
|
+
try {
|
|
144
|
+
parsed = parseNameStatusNull(runGitArgs(["diff", "--cached", "--name-status", "-z", "--diff-filter=ACMRD"], exec).toString("utf8"));
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
throw new Error(`failed to list staged files: ${String(error)}`);
|
|
148
|
+
}
|
|
149
|
+
return parsed.map((entry) => {
|
|
150
|
+
const status = entry.status[0] || "M";
|
|
151
|
+
const oldPath = status === "R" ? entry.parts[0] : undefined;
|
|
152
|
+
const path = status === "R"
|
|
153
|
+
? (entry.parts[1] ?? entry.parts[0] ?? "")
|
|
154
|
+
: (entry.parts[0] ?? "");
|
|
155
|
+
const lookupPath = status === "D" ? (oldPath ?? path) : path;
|
|
156
|
+
const modeArgs = status === "D"
|
|
157
|
+
? ["ls-tree", "-z", "HEAD", "--", lookupPath]
|
|
158
|
+
: ["ls-files", "--stage", "-z", "--", lookupPath];
|
|
159
|
+
const gitMode = parseMode(runGitArgs(modeArgs, exec));
|
|
160
|
+
if (gitMode === "120000" || gitMode === "160000") {
|
|
161
|
+
return {
|
|
162
|
+
path,
|
|
163
|
+
status,
|
|
164
|
+
...(oldPath ? { oldPath } : {}),
|
|
165
|
+
hunkRanges: [],
|
|
166
|
+
gitMode,
|
|
167
|
+
analysisDepth: "none",
|
|
168
|
+
disposition: "skipped",
|
|
169
|
+
skipReason: gitMode === "120000" ? "symlink" : "submodule",
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
const diffText = runGitArgs(["diff", "--cached", "-U0", "--", path], exec).toString("utf8");
|
|
173
|
+
const isNewFile = status === "A" || /\bdev\/null\b/.test(diffText);
|
|
174
|
+
const hunkRanges = parseHunksFromDiff(diffText, isNewFile);
|
|
175
|
+
const blobArgs = status === "D" ? ["show", `HEAD:${lookupPath}`] : ["show", `:${path}`];
|
|
176
|
+
const decoded = decodeText(runGitArgs(blobArgs, exec));
|
|
177
|
+
if ("skipReason" in decoded) {
|
|
178
|
+
return {
|
|
179
|
+
path,
|
|
180
|
+
status,
|
|
181
|
+
...(oldPath ? { oldPath } : {}),
|
|
182
|
+
hunkRanges,
|
|
183
|
+
diffText,
|
|
184
|
+
...(gitMode ? { gitMode } : {}),
|
|
185
|
+
analysisDepth: "none",
|
|
186
|
+
disposition: "skipped",
|
|
187
|
+
skipReason: decoded.skipReason,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
normalizeNewFileHunks(hunkRanges, decoded.content);
|
|
191
|
+
const deleted = status === "D";
|
|
192
|
+
const analysisDepth = deleted
|
|
193
|
+
? "file"
|
|
194
|
+
: hasSupportedExt(path)
|
|
195
|
+
? "symbol"
|
|
196
|
+
: isKibiMetadataPath(path)
|
|
197
|
+
? "metadata"
|
|
198
|
+
: "file";
|
|
199
|
+
const content = deleted ? undefined : decoded.content;
|
|
200
|
+
const previousContent = deleted ? decoded.content : undefined;
|
|
201
|
+
return {
|
|
202
|
+
path,
|
|
203
|
+
status,
|
|
204
|
+
...(oldPath ? { oldPath } : {}),
|
|
205
|
+
hunkRanges,
|
|
206
|
+
diffText,
|
|
207
|
+
...(content !== undefined ? { content } : {}),
|
|
208
|
+
...(previousContent !== undefined ? { previousContent } : {}),
|
|
209
|
+
...(gitMode ? { gitMode } : {}),
|
|
210
|
+
analysisDepth,
|
|
211
|
+
disposition: analysisDepth === "file" ? "advisory" : "checked",
|
|
212
|
+
};
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
/** Convert the complete inventory to the historical supported staged-file set. */
|
|
216
|
+
export function supportedStagedFiles(inventory) {
|
|
217
|
+
return inventory.flatMap((entry) => {
|
|
218
|
+
if (entry.status === "D" ||
|
|
219
|
+
entry.disposition === "skipped" ||
|
|
220
|
+
(entry.analysisDepth !== "symbol" && entry.analysisDepth !== "metadata")) {
|
|
221
|
+
return [];
|
|
222
|
+
}
|
|
223
|
+
const { analysisDepth: _analysisDepth, disposition: _disposition, gitMode: _gitMode, previousContent: _previousContent, skipReason: _skipReason, ...file } = entry;
|
|
224
|
+
return [file];
|
|
225
|
+
});
|
|
107
226
|
}
|
|
108
227
|
/**
|
|
109
228
|
* Parse unified diff hunks (new-file coordinates) from git diff output
|
|
@@ -140,7 +259,7 @@ diffText, isNewFile = false) {
|
|
|
140
259
|
* Get staged files with statuses, hunks and content.
|
|
141
260
|
*/
|
|
142
261
|
// implements REQ-014
|
|
143
|
-
export function getStagedFiles(exec =
|
|
262
|
+
export function getStagedFiles(exec = defaultExec) {
|
|
144
263
|
// 1. get staged name-status -z
|
|
145
264
|
let nameStatus;
|
|
146
265
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-validate.d.ts","sourceRoot":"","sources":["../../src/traceability/markdown-validate.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAEjB,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"markdown-validate.d.ts","sourceRoot":"","sources":["../../src/traceability/markdown-validate.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAEjB,MAAM,2BAA2B,CAAC;AAGnC,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,wBAAwB,CAgC1B"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import matter from "gray-matter";
|
|
2
2
|
import { FrontmatterError, detectEmbeddedEntities, } from "../extractors/markdown.js";
|
|
3
|
+
import { entityLaneForPath } from "../utils/kb-paths.js";
|
|
3
4
|
export function validateStagedMarkdown(filePath, content) {
|
|
4
5
|
const errors = [];
|
|
5
6
|
try {
|
|
@@ -25,11 +26,15 @@ export function validateStagedMarkdown(filePath, content) {
|
|
|
25
26
|
return { filePath, errors };
|
|
26
27
|
}
|
|
27
28
|
function inferTypeFromPath(filePath) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
const lane = entityLaneForPath(filePath);
|
|
30
|
+
switch (lane) {
|
|
31
|
+
case "requirements":
|
|
32
|
+
return "req";
|
|
33
|
+
case "scenarios":
|
|
34
|
+
return "scenario";
|
|
35
|
+
case "tests":
|
|
36
|
+
return "test";
|
|
37
|
+
default:
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
35
40
|
}
|
|
@@ -13,7 +13,14 @@ export interface KibiImpactDiagnostic extends QualityDiagnostic {
|
|
|
13
13
|
message: string;
|
|
14
14
|
/** Deterministic remediation guidance. */
|
|
15
15
|
suggestion: string;
|
|
16
|
+
/**
|
|
17
|
+
* Cause-level lines (per file: extraction vs evidence symbol counts, the
|
|
18
|
+
* uncovered symbol names) rendered between the Files and Docs lines so the
|
|
19
|
+
* error names what to fix instead of only the verdict.
|
|
20
|
+
*/
|
|
21
|
+
details?: readonly string[];
|
|
16
22
|
}
|
|
23
|
+
export declare function createMissingOverrideRationaleDiagnostic(evidence: KibiImpactEvidence): KibiImpactDiagnostic;
|
|
17
24
|
/**
|
|
18
25
|
* Collects deterministic staged diagnostics for Kibi impact enforcement.
|
|
19
26
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"staged-diagnostics.d.ts","sourceRoot":"","sources":["../../src/traceability/staged-diagnostics.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAGL,KAAK,kBAAkB,
|
|
1
|
+
{"version":3,"file":"staged-diagnostics.d.ts","sourceRoot":"","sources":["../../src/traceability/staged-diagnostics.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAGL,KAAK,kBAAkB,EAKxB,MAAM,qBAAqB,CAAC;AAQ7B,MAAM,MAAM,sBAAsB,GAC9B,8BAA8B,GAC9B,wBAAwB,GACxB,8BAA8B,GAC9B,+BAA+B,GAC/B,iCAAiC,GACjC,oCAAoC,GACpC,gCAAgC,GAChC,0BAA0B,GAC1B,2BAA2B,GAC3B,6BAA6B,GAC7B,yBAAyB,GACzB,wCAAwC,CAAC;AAE7C,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,uDAAuD;IACvD,EAAE,EAAE,sBAAsB,CAAC;IAC3B,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACxC,iEAAiE;IACjE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,gDAAgD;IAChD,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAwID,wBAAgB,wCAAwC,CACtD,QAAQ,EAAE,kBAAkB,GAC3B,oBAAoB,CAoBtB;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,kBAAkB,EAC5B,mBAAmB,GAAE,MAAmC,GACvD,oBAAoB,EAAE,CAiDxB"}
|
|
@@ -8,7 +8,46 @@ function deriveCoordinatesPath(symbolsManifestPath) {
|
|
|
8
8
|
function formatFileList(paths) {
|
|
9
9
|
return paths.join(", ");
|
|
10
10
|
}
|
|
11
|
-
|
|
11
|
+
/** Max symbol names rendered per detail line before "+N more". */
|
|
12
|
+
const MAX_DETAIL_NAMES = 6;
|
|
13
|
+
function formatNameList(names) {
|
|
14
|
+
const shown = names.slice(0, MAX_DETAIL_NAMES);
|
|
15
|
+
const overflow = names.length - shown.length;
|
|
16
|
+
const rendered = shown.join(", ");
|
|
17
|
+
return overflow > 0 ? `${rendered} … and ${overflow} more` : rendered;
|
|
18
|
+
}
|
|
19
|
+
function symbolsManifestFileDetails(evidence, paths) {
|
|
20
|
+
const pathSet = new Set(paths);
|
|
21
|
+
return (evidence.symbolsManifest.fileDetails ?? []).filter((detail) => pathSet.has(detail.path));
|
|
22
|
+
}
|
|
23
|
+
function manifestDetailLines(detail, symbolsManifestPath) {
|
|
24
|
+
const lines = [
|
|
25
|
+
`${detail.path} — extraction finds ${detail.expectedCount} symbol(s), evidence covers ${detail.coveredCount}.`,
|
|
26
|
+
];
|
|
27
|
+
if (detail.missing.length > 0) {
|
|
28
|
+
const names = detail.missing.map((entry) => `${entry.title} (line ${entry.line})`);
|
|
29
|
+
lines.push(` Not in ${symbolsManifestPath}: ${formatNameList(names)}`);
|
|
30
|
+
}
|
|
31
|
+
if (detail.extra.length > 0) {
|
|
32
|
+
lines.push(` Evidence without a matching symbol: ${formatNameList(detail.extra)}`);
|
|
33
|
+
}
|
|
34
|
+
return lines;
|
|
35
|
+
}
|
|
36
|
+
function createMissingEvidenceDiagnostic(paths, symbolsManifestPath, coordinatesPath, fileDetails = []) {
|
|
37
|
+
const uncoveredByPath = new Map(fileDetails
|
|
38
|
+
.filter((detail) => detail.missing.length > 0)
|
|
39
|
+
.map((detail) => [detail.path, detail]));
|
|
40
|
+
const details = paths.flatMap((filePath) => {
|
|
41
|
+
const detail = uncoveredByPath.get(filePath);
|
|
42
|
+
if (!detail)
|
|
43
|
+
return [];
|
|
44
|
+
return [
|
|
45
|
+
`${filePath} — symbols without authored evidence: ${formatNameList(detail.missing.map((entry) => entry.title))}`,
|
|
46
|
+
];
|
|
47
|
+
});
|
|
48
|
+
const suggestionSuffix = details.length > 0
|
|
49
|
+
? ` For symbol-level evidence, author ${symbolsManifestPath} entries (kibi upsert) for the listed uncovered symbols.`
|
|
50
|
+
: "";
|
|
12
51
|
return {
|
|
13
52
|
id: "kibi_impact_evidence_missing",
|
|
14
53
|
severity: "error",
|
|
@@ -17,10 +56,27 @@ function createMissingEvidenceDiagnostic(paths, symbolsManifestPath, coordinates
|
|
|
17
56
|
files: [...paths],
|
|
18
57
|
docs: [KIBI_STAGED_IMPACT_EVIDENCE_DOC],
|
|
19
58
|
message: `Behavior-changing staged files are missing staged Kibi impact evidence (see ${KIBI_STAGED_IMPACT_EVIDENCE_DOC}): ${formatFileList(paths)}`,
|
|
20
|
-
suggestion: `Query Kibi via MCP before deciding. MCP writes update KB state but do not stage tracked evidence; also stage requirement/scenario/test/fact/symbol markdown, authored ${symbolsManifestPath} metadata, or refreshed ${coordinatesPath}. Re-run kibi check --staged after staging tracked evidence
|
|
59
|
+
suggestion: `Query Kibi via MCP before deciding. MCP writes update KB state but do not stage tracked evidence; also stage requirement/scenario/test/fact/symbol markdown, authored ${symbolsManifestPath} metadata, or refreshed ${coordinatesPath}. Re-run kibi check --staged after staging tracked evidence.${suggestionSuffix}`,
|
|
60
|
+
...(details.length > 0
|
|
61
|
+
? {
|
|
62
|
+
details,
|
|
63
|
+
evidence: {
|
|
64
|
+
uncoveredSymbols: fileDetails.map((detail) => ({
|
|
65
|
+
path: detail.path,
|
|
66
|
+
titles: detail.missing.map((entry) => entry.title),
|
|
67
|
+
})),
|
|
68
|
+
},
|
|
69
|
+
}
|
|
70
|
+
: {}),
|
|
21
71
|
};
|
|
22
72
|
}
|
|
23
|
-
function createSymbolsManifestStaleDiagnostic(paths, symbolsManifestPath, coordinatesPath) {
|
|
73
|
+
function createSymbolsManifestStaleDiagnostic(paths, symbolsManifestPath, coordinatesPath, fileDetails = []) {
|
|
74
|
+
const hasMissingSymbols = fileDetails.some((detail) => detail.missing.length > 0);
|
|
75
|
+
const details = fileDetails.flatMap((detail) => manifestDetailLines(detail, symbolsManifestPath));
|
|
76
|
+
const refreshSteps = `kibi sync --refresh-symbol-coordinates && git add ${coordinatesPath} ${symbolsManifestPath}, then re-run kibi check --staged.`;
|
|
77
|
+
const suggestion = hasMissingSymbols
|
|
78
|
+
? `Author ${symbolsManifestPath} entries for the uncovered symbols (kibi upsert, with implements/covered_by links), then run ${refreshSteps}`
|
|
79
|
+
: `Run ${refreshSteps}`;
|
|
24
80
|
return {
|
|
25
81
|
id: "symbols_manifest_stale",
|
|
26
82
|
severity: "error",
|
|
@@ -29,10 +85,24 @@ function createSymbolsManifestStaleDiagnostic(paths, symbolsManifestPath, coordi
|
|
|
29
85
|
files: [coordinatesPath, ...paths],
|
|
30
86
|
docs: [KIBI_STAGED_IMPACT_EVIDENCE_DOC],
|
|
31
87
|
message: `${coordinatesPath} is stale or missing for staged source files: ${formatFileList(paths)}`,
|
|
32
|
-
suggestion
|
|
88
|
+
suggestion,
|
|
89
|
+
...(fileDetails.length > 0
|
|
90
|
+
? {
|
|
91
|
+
details,
|
|
92
|
+
evidence: {
|
|
93
|
+
symbolsManifest: fileDetails.map((detail) => ({
|
|
94
|
+
path: detail.path,
|
|
95
|
+
expectedCount: detail.expectedCount,
|
|
96
|
+
coveredCount: detail.coveredCount,
|
|
97
|
+
missing: detail.missing,
|
|
98
|
+
extra: detail.extra,
|
|
99
|
+
})),
|
|
100
|
+
},
|
|
101
|
+
}
|
|
102
|
+
: {}),
|
|
33
103
|
};
|
|
34
104
|
}
|
|
35
|
-
function createMissingOverrideRationaleDiagnostic(evidence) {
|
|
105
|
+
export function createMissingOverrideRationaleDiagnostic(evidence) {
|
|
36
106
|
if (evidence.mode.kind !== "no_impact_override") {
|
|
37
107
|
throw new Error("Override rationale diagnostic requires a no-impact override");
|
|
38
108
|
}
|
|
@@ -65,11 +135,12 @@ export function collectStagedKibiDiagnostics(evidence, symbolsManifestPath = KIB
|
|
|
65
135
|
if ((evidence.symbolsManifest.state === "stale" ||
|
|
66
136
|
evidence.symbolsManifest.state === "missing") &&
|
|
67
137
|
evidence.symbolsManifest.sourcePaths.length > 0) {
|
|
68
|
-
|
|
138
|
+
const stalePaths = [...evidence.symbolsManifest.sourcePaths].sort();
|
|
139
|
+
diagnostics.push(createSymbolsManifestStaleDiagnostic(stalePaths, symbolsManifestPath, coordinatesPath, symbolsManifestFileDetails(evidence, stalePaths)));
|
|
69
140
|
}
|
|
70
141
|
const missingBehaviorPaths = getMissingBehaviorSourcePaths(evidence);
|
|
71
142
|
if (missingBehaviorPaths.length > 0) {
|
|
72
|
-
diagnostics.push(createMissingEvidenceDiagnostic(missingBehaviorPaths, symbolsManifestPath, coordinatesPath));
|
|
143
|
+
diagnostics.push(createMissingEvidenceDiagnostic(missingBehaviorPaths, symbolsManifestPath, coordinatesPath, symbolsManifestFileDetails(evidence, missingBehaviorPaths)));
|
|
73
144
|
}
|
|
74
145
|
if (evidence.mode.kind === "no_impact_override" &&
|
|
75
146
|
evidence.mode.override.sourcePaths.length === 0 &&
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { StagedPath } from "./git-staged.js";
|
|
2
|
+
export declare const STAGED_FILE_COVERAGE_RESULT_VERSION: "kibi.staged-file-coverage.v1";
|
|
3
|
+
export interface StagedFileCoverageRecord {
|
|
4
|
+
path: string;
|
|
5
|
+
oldPath?: string;
|
|
6
|
+
status: StagedPath["status"];
|
|
7
|
+
analysisDepth: StagedPath["analysisDepth"];
|
|
8
|
+
disposition: StagedPath["disposition"];
|
|
9
|
+
reason?: StagedPath["skipReason"];
|
|
10
|
+
requirementIds: string[];
|
|
11
|
+
evidencePaths: string[];
|
|
12
|
+
providerId: string | null;
|
|
13
|
+
}
|
|
14
|
+
export interface StagedFileCoverageDiagnostic {
|
|
15
|
+
id: "staged_file_ownership_missing" | "staged_file_impact_review_needed";
|
|
16
|
+
severity: "warning";
|
|
17
|
+
blocking: false;
|
|
18
|
+
path: string;
|
|
19
|
+
message: string;
|
|
20
|
+
suggestion: string;
|
|
21
|
+
requirementIds: string[];
|
|
22
|
+
evidencePaths: string[];
|
|
23
|
+
}
|
|
24
|
+
export interface StagedFileCoverageResult {
|
|
25
|
+
version: typeof STAGED_FILE_COVERAGE_RESULT_VERSION;
|
|
26
|
+
files: StagedFileCoverageRecord[];
|
|
27
|
+
diagnostics: StagedFileCoverageDiagnostic[];
|
|
28
|
+
}
|
|
29
|
+
type GitReader = (args: readonly string[]) => Buffer;
|
|
30
|
+
/** Resolve advisory file-level ownership from committed knowledge plus staged evidence. */
|
|
31
|
+
export declare function analyzeStagedFileCoverage(inventory: readonly StagedPath[], reader?: GitReader): StagedFileCoverageResult;
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=staged-file-coverage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staged-file-coverage.d.ts","sourceRoot":"","sources":["../../src/traceability/staged-file-coverage.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,eAAO,MAAM,mCAAmC,EAC9C,8BAAuC,CAAC;AAE1C,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC7B,aAAa,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;IAC3C,WAAW,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;IACvC,MAAM,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;IAClC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,+BAA+B,GAAG,kCAAkC,CAAC;IACzE,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,mCAAmC,CAAC;IACpD,KAAK,EAAE,wBAAwB,EAAE,CAAC;IAClC,WAAW,EAAE,4BAA4B,EAAE,CAAC;CAC7C;AAGD,KAAK,SAAS,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,MAAM,CAAC;AA+OrD,2FAA2F;AAC3F,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,SAAS,UAAU,EAAE,EAChC,MAAM,GAAE,SAA4B,GACnC,wBAAwB,CA0G1B"}
|