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
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import type { ManifestSymbolRecord } from "./manifest.js";
|
|
2
|
+
/**
|
|
3
|
+
* Format version of the generated coordinate artifact. Version 2 binds every
|
|
4
|
+
* record to the extraction identity that produced it so stale coordinates can
|
|
5
|
+
* never silently overlay a changed symbol.
|
|
6
|
+
*/
|
|
7
|
+
export declare const SYMBOL_COORDINATES_FORMAT_VERSION = 2;
|
|
2
8
|
export interface SymbolCoordinatesRecord {
|
|
3
9
|
sourceFile: string;
|
|
4
10
|
sourceLine: number;
|
|
@@ -6,10 +12,82 @@ export interface SymbolCoordinatesRecord {
|
|
|
6
12
|
sourceEndLine: number;
|
|
7
13
|
sourceEndColumn: number;
|
|
8
14
|
}
|
|
15
|
+
/** A generated record bound to the extraction identity that produced it. */
|
|
16
|
+
export interface BoundSymbolCoordinatesRecord extends SymbolCoordinatesRecord {
|
|
17
|
+
readonly identityHash: string;
|
|
18
|
+
readonly sourceHash: string;
|
|
19
|
+
}
|
|
20
|
+
export type CoordinateArtifactRecord = SymbolCoordinatesRecord | BoundSymbolCoordinatesRecord;
|
|
9
21
|
export interface SymbolCoordinatesArtifact {
|
|
10
|
-
coordinates: Record<string,
|
|
22
|
+
coordinates: Record<string, CoordinateArtifactRecord>;
|
|
23
|
+
}
|
|
24
|
+
export interface CoordinateExtractionIdentity {
|
|
25
|
+
readonly id: string;
|
|
26
|
+
readonly title?: string;
|
|
27
|
+
readonly sourceFile?: string;
|
|
28
|
+
readonly granularity_reason?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface SymbolCoordinateWriteEntry extends SymbolCoordinatesRecord {
|
|
31
|
+
readonly identityHash?: string;
|
|
32
|
+
readonly sourceHash?: string;
|
|
33
|
+
}
|
|
34
|
+
export type ParsedCoordinateArtifact = {
|
|
35
|
+
readonly status: "parsed";
|
|
36
|
+
readonly formatVersion: typeof SYMBOL_COORDINATES_FORMAT_VERSION;
|
|
37
|
+
readonly coordinates: Readonly<Record<string, BoundSymbolCoordinatesRecord>>;
|
|
38
|
+
} | {
|
|
39
|
+
readonly status: "legacy";
|
|
40
|
+
readonly coordinates: Readonly<Record<string, SymbolCoordinatesRecord>>;
|
|
41
|
+
} | {
|
|
42
|
+
readonly status: "invalid";
|
|
43
|
+
readonly reason: string;
|
|
44
|
+
};
|
|
45
|
+
export declare class CoordinateArtifactError extends Error {
|
|
46
|
+
readonly name = "CoordinateArtifactError";
|
|
11
47
|
}
|
|
48
|
+
/** Deterministic canonical identity string for a symbol extraction state. */
|
|
49
|
+
export declare function coordinateIdentityKey(identity: CoordinateExtractionIdentity): string;
|
|
50
|
+
/** Stable hash binding a generated coordinate record to its extraction identity. */
|
|
51
|
+
export declare function coordinateIdentityHash(identity: CoordinateExtractionIdentity): string;
|
|
52
|
+
/** Stable hash of the exact source text used to generate a coordinate span. */
|
|
53
|
+
export declare function coordinateSourceHash(sourceText: string): string;
|
|
54
|
+
/** Select a stable coarse anchor, preferring a title match over the whole file. */
|
|
55
|
+
export declare function coarseCoordinateSpan(sourceFile: string, title: string, content: string): SymbolCoordinatesRecord;
|
|
56
|
+
/**
|
|
57
|
+
* Validate a coordinate span against the same rules requirement proof enforces:
|
|
58
|
+
* nonempty source file, sourceLine >= 1, columns >= 0, endLine >= sourceLine.
|
|
59
|
+
*/
|
|
60
|
+
export declare function isValidCoordinateSpan(value: unknown): value is SymbolCoordinatesRecord;
|
|
61
|
+
/**
|
|
62
|
+
* Strictly parse a generated coordinate artifact. Records failing span
|
|
63
|
+
* validation make the whole artifact invalid; consumers must fail closed
|
|
64
|
+
* instead of silently dropping evidence.
|
|
65
|
+
*/
|
|
66
|
+
export declare function parseCoordinateArtifact(content: string): ParsedCoordinateArtifact;
|
|
67
|
+
/**
|
|
68
|
+
* Serialize the generated artifact as a version 2 document. Every record is
|
|
69
|
+
* bound to both its manifest identity and exact source content.
|
|
70
|
+
* Key order is deterministic without relying on YAML sortKeys so the
|
|
71
|
+
* human-readable header stays first.
|
|
72
|
+
*/
|
|
73
|
+
export declare function writeCoordinateArtifact(entries: Record<string, SymbolCoordinateWriteEntry>): string;
|
|
74
|
+
/** Serialize a legacy artifact without introducing v2 bindings or metadata. */
|
|
75
|
+
export declare function writeLegacyCoordinateArtifact(entries: Record<string, SymbolCoordinatesRecord>): string;
|
|
76
|
+
/**
|
|
77
|
+
* Reader kept for diff/traceability surfaces. Legacy records remain available
|
|
78
|
+
* as spans while v2 records retain their bindings.
|
|
79
|
+
*/
|
|
12
80
|
export declare function readCoordinateArtifact(content: string): SymbolCoordinatesArtifact;
|
|
13
|
-
|
|
14
|
-
|
|
81
|
+
/**
|
|
82
|
+
* Overlay generated coordinates onto authored manifest records.
|
|
83
|
+
*
|
|
84
|
+
* Generated fields are always stripped first so stale spans can never reach
|
|
85
|
+
* compiled state. Bound v2 records apply only when both their identity hash
|
|
86
|
+
* and exact source-content hash match the current manifest and source. Legacy
|
|
87
|
+
* records and inline coordinates are accepted only after live declaration
|
|
88
|
+
* validation.
|
|
89
|
+
*/
|
|
90
|
+
export declare function mergeCoordinatesWithManifest(symbolRecords: ManifestSymbolRecord[], coordinateArtifact: ParsedCoordinateArtifact | SymbolCoordinatesArtifact | null, options?: {
|
|
91
|
+
readonly resolveSourceText?: (sourceFile: string) => string | null;
|
|
92
|
+
}): ManifestSymbolRecord[];
|
|
15
93
|
//# sourceMappingURL=symbol-coordinates.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbol-coordinates.d.ts","sourceRoot":"","sources":["../../src/extractors/symbol-coordinates.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"symbol-coordinates.d.ts","sourceRoot":"","sources":["../../src/extractors/symbol-coordinates.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1D;;;;GAIG;AAEH,eAAO,MAAM,iCAAiC,IAAI,CAAC;AAEnD,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,4EAA4E;AAE5E,MAAM,WAAW,4BAA6B,SAAQ,uBAAuB;IAC3E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAGD,MAAM,MAAM,wBAAwB,GAChC,uBAAuB,GACvB,4BAA4B,CAAC;AAEjC,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;CACvD;AAGD,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAGD,MAAM,WAAW,0BAA2B,SAAQ,uBAAuB;IACzE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAGD,MAAM,MAAM,wBAAwB,GAChC;IACE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,OAAO,iCAAiC,CAAC;IACjE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAC5B,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAC7C,CAAC;CACH,GACD;IACE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC;CACzE,GACD;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAG5D,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,SAAkB,IAAI,6BAA6B;CACpD;AAeD,6EAA6E;AAE7E,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,4BAA4B,GACrC,MAAM,CAOR;AAED,oFAAoF;AAEpF,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,4BAA4B,GACrC,MAAM,CAIR;AAED,+EAA+E;AAE/E,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,mFAAmF;AAEnF,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,uBAAuB,CA4BzB;AAMD;;;GAGG;AAEH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,uBAAuB,CAyBlC;AAmCD;;;;GAIG;AAEH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,GACd,wBAAwB,CAiE1B;AAED;;;;;GAKG;AAEH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,GAClD,MAAM,CAkCR;AAED,+EAA+E;AAE/E,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAC/C,MAAM,CAuBR;AAED;;;GAGG;AAEH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,GACd,yBAAyB,CAU3B;AAyDD;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAC1C,aAAa,EAAE,oBAAoB,EAAE,EACrC,kBAAkB,EACd,wBAAwB,GACxB,yBAAyB,GACzB,IAAI,EACR,OAAO,GAAE;IACP,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAC/D,GACL,oBAAoB,EAAE,CAqExB"}
|
|
@@ -1,4 +1,18 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
3
|
+
import * as path from "node:path";
|
|
1
4
|
import { dump as dumpYAML, load as parseYAML } from "js-yaml";
|
|
5
|
+
/**
|
|
6
|
+
* Format version of the generated coordinate artifact. Version 2 binds every
|
|
7
|
+
* record to the extraction identity that produced it so stale coordinates can
|
|
8
|
+
* never silently overlay a changed symbol.
|
|
9
|
+
*/
|
|
10
|
+
// implements REQ-generated-coordinate-persistence
|
|
11
|
+
export const SYMBOL_COORDINATES_FORMAT_VERSION = 2;
|
|
12
|
+
// implements REQ-generated-coordinate-persistence
|
|
13
|
+
export class CoordinateArtifactError extends Error {
|
|
14
|
+
name = "CoordinateArtifactError";
|
|
15
|
+
}
|
|
2
16
|
const SYMBOL_COORDINATES_COMMENT_BLOCK = `# symbol-coordinates.yaml
|
|
3
17
|
# GENERATED coordinate artifact — do not edit manually.
|
|
4
18
|
# Run \`kibi sync --refresh-symbol-coordinates\` to refresh.
|
|
@@ -6,78 +20,402 @@ const SYMBOL_COORDINATES_COMMENT_BLOCK = `# symbol-coordinates.yaml
|
|
|
6
20
|
function isRecord(value) {
|
|
7
21
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
8
22
|
}
|
|
9
|
-
function
|
|
10
|
-
|
|
11
|
-
|
|
23
|
+
function canonicalIdentityValue(value) {
|
|
24
|
+
return typeof value === "string" ? value : "";
|
|
25
|
+
}
|
|
26
|
+
/** Deterministic canonical identity string for a symbol extraction state. */
|
|
27
|
+
// implements REQ-generated-coordinate-persistence
|
|
28
|
+
export function coordinateIdentityKey(identity) {
|
|
29
|
+
return [
|
|
30
|
+
identity.id,
|
|
31
|
+
canonicalIdentityValue(identity.title),
|
|
32
|
+
canonicalIdentityValue(identity.sourceFile),
|
|
33
|
+
canonicalIdentityValue(identity.granularity_reason),
|
|
34
|
+
].join("\u0000");
|
|
35
|
+
}
|
|
36
|
+
/** Stable hash binding a generated coordinate record to its extraction identity. */
|
|
37
|
+
// implements REQ-generated-coordinate-persistence
|
|
38
|
+
export function coordinateIdentityHash(identity) {
|
|
39
|
+
return createHash("sha256")
|
|
40
|
+
.update(coordinateIdentityKey(identity))
|
|
41
|
+
.digest("hex");
|
|
42
|
+
}
|
|
43
|
+
/** Stable hash of the exact source text used to generate a coordinate span. */
|
|
44
|
+
// implements REQ-generated-coordinate-persistence
|
|
45
|
+
export function coordinateSourceHash(sourceText) {
|
|
46
|
+
return createHash("sha256").update(sourceText).digest("hex");
|
|
47
|
+
}
|
|
48
|
+
/** Select a stable coarse anchor, preferring a title match over the whole file. */
|
|
49
|
+
// implements REQ-generated-coordinate-persistence
|
|
50
|
+
export function coarseCoordinateSpan(sourceFile, title, content) {
|
|
51
|
+
if (title.length > 0) {
|
|
52
|
+
const escaped = title.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
53
|
+
const pattern = new RegExp(`\\b${escaped}\\b`);
|
|
54
|
+
const lines = content.split(/\r?\n/);
|
|
55
|
+
for (let index = 0; index < lines.length; index++) {
|
|
56
|
+
const line = lines[index];
|
|
57
|
+
if (line === undefined)
|
|
58
|
+
continue;
|
|
59
|
+
const match = pattern.exec(line);
|
|
60
|
+
if (!match || match.index < 0)
|
|
61
|
+
continue;
|
|
62
|
+
return {
|
|
63
|
+
sourceFile,
|
|
64
|
+
sourceLine: index + 1,
|
|
65
|
+
sourceColumn: match.index,
|
|
66
|
+
sourceEndLine: index + 1,
|
|
67
|
+
sourceEndColumn: match.index + title.length,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
12
70
|
}
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
71
|
+
const lines = content.split(/\r?\n/);
|
|
72
|
+
const lastLine = lines[lines.length - 1] ?? "";
|
|
73
|
+
return {
|
|
74
|
+
sourceFile,
|
|
75
|
+
sourceLine: 1,
|
|
76
|
+
sourceColumn: 0,
|
|
77
|
+
sourceEndLine: Math.max(1, lines.length),
|
|
78
|
+
sourceEndColumn: lastLine.length,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function isSha256Hash(value) {
|
|
82
|
+
return typeof value === "string" && /^[a-f0-9]{64}$/.test(value);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Validate a coordinate span against the same rules requirement proof enforces:
|
|
86
|
+
* nonempty source file, sourceLine >= 1, columns >= 0, endLine >= sourceLine.
|
|
87
|
+
*/
|
|
88
|
+
// implements REQ-generated-coordinate-persistence
|
|
89
|
+
export function isValidCoordinateSpan(value) {
|
|
90
|
+
if (!isRecord(value))
|
|
91
|
+
return false;
|
|
92
|
+
const { sourceFile, sourceLine, sourceColumn, sourceEndLine, sourceEndColumn, } = value;
|
|
93
|
+
return (typeof sourceFile === "string" &&
|
|
94
|
+
sourceFile.length > 0 &&
|
|
95
|
+
typeof sourceLine === "number" &&
|
|
96
|
+
Number.isInteger(sourceLine) &&
|
|
97
|
+
sourceLine >= 1 &&
|
|
98
|
+
typeof sourceColumn === "number" &&
|
|
99
|
+
Number.isInteger(sourceColumn) &&
|
|
100
|
+
sourceColumn >= 0 &&
|
|
101
|
+
typeof sourceEndLine === "number" &&
|
|
102
|
+
Number.isInteger(sourceEndLine) &&
|
|
103
|
+
sourceEndLine >= sourceLine &&
|
|
104
|
+
typeof sourceEndColumn === "number" &&
|
|
105
|
+
Number.isInteger(sourceEndColumn) &&
|
|
106
|
+
sourceEndColumn >= 0);
|
|
107
|
+
}
|
|
108
|
+
function normalizeRawEntry(value) {
|
|
109
|
+
if (!isRecord(value))
|
|
110
|
+
return null;
|
|
111
|
+
const { identityHash, sourceHash, ...rest } = value;
|
|
112
|
+
if (!isValidCoordinateSpan(rest))
|
|
113
|
+
return null;
|
|
114
|
+
if (("identityHash" in value && !isSha256Hash(identityHash)) ||
|
|
115
|
+
("sourceHash" in value && !isSha256Hash(sourceHash))) {
|
|
19
116
|
return null;
|
|
20
117
|
}
|
|
21
118
|
return {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
119
|
+
span: {
|
|
120
|
+
sourceFile: rest.sourceFile,
|
|
121
|
+
sourceLine: rest.sourceLine,
|
|
122
|
+
sourceColumn: rest.sourceColumn,
|
|
123
|
+
sourceEndLine: rest.sourceEndLine,
|
|
124
|
+
sourceEndColumn: rest.sourceEndColumn,
|
|
125
|
+
},
|
|
126
|
+
...(typeof identityHash === "string" && identityHash.length > 0
|
|
127
|
+
? { identityHash }
|
|
128
|
+
: {}),
|
|
129
|
+
...(typeof sourceHash === "string" && sourceHash.length > 0
|
|
130
|
+
? { sourceHash }
|
|
131
|
+
: {}),
|
|
27
132
|
};
|
|
28
133
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
134
|
+
/**
|
|
135
|
+
* Strictly parse a generated coordinate artifact. Records failing span
|
|
136
|
+
* validation make the whole artifact invalid; consumers must fail closed
|
|
137
|
+
* instead of silently dropping evidence.
|
|
138
|
+
*/
|
|
139
|
+
// implements REQ-generated-coordinate-persistence
|
|
140
|
+
export function parseCoordinateArtifact(content) {
|
|
141
|
+
let parsed;
|
|
142
|
+
try {
|
|
143
|
+
parsed = parseYAML(content);
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
return {
|
|
147
|
+
status: "invalid",
|
|
148
|
+
reason: error instanceof Error ? error.message : String(error),
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
if (parsed === null || parsed === undefined) {
|
|
152
|
+
return { status: "legacy", coordinates: {} };
|
|
153
|
+
}
|
|
154
|
+
if (!isRecord(parsed)) {
|
|
155
|
+
return { status: "invalid", reason: "artifact root is not a mapping" };
|
|
156
|
+
}
|
|
157
|
+
const rawCoordinates = parsed.coordinates ?? {};
|
|
158
|
+
if (!isRecord(rawCoordinates)) {
|
|
159
|
+
return { status: "invalid", reason: "coordinates is not a mapping" };
|
|
160
|
+
}
|
|
161
|
+
const declaredVersion = parsed.version;
|
|
162
|
+
const entries = {};
|
|
163
|
+
for (const [id, value] of Object.entries(rawCoordinates)) {
|
|
164
|
+
const entry = normalizeRawEntry(value);
|
|
165
|
+
if (entry === null) {
|
|
166
|
+
return {
|
|
167
|
+
status: "invalid",
|
|
168
|
+
reason: `record '${id}' has an invalid coordinate span`,
|
|
169
|
+
};
|
|
35
170
|
}
|
|
36
|
-
|
|
171
|
+
entries[id] = entry;
|
|
37
172
|
}
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return { coordinates: {} };
|
|
173
|
+
if (declaredVersion === undefined) {
|
|
174
|
+
const legacy = {};
|
|
175
|
+
for (const [id, entry] of Object.entries(entries)) {
|
|
176
|
+
legacy[id] = entry.span;
|
|
177
|
+
}
|
|
178
|
+
return { status: "legacy", coordinates: legacy };
|
|
45
179
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
180
|
+
if (declaredVersion !== SYMBOL_COORDINATES_FORMAT_VERSION) {
|
|
181
|
+
return {
|
|
182
|
+
status: "invalid",
|
|
183
|
+
reason: `unsupported or missing artifact version: ${String(declaredVersion)}`,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
if (declaredVersion === SYMBOL_COORDINATES_FORMAT_VERSION) {
|
|
187
|
+
const bound = {};
|
|
188
|
+
for (const [id, entry] of Object.entries(entries)) {
|
|
189
|
+
const identityHash = entry.identityHash;
|
|
190
|
+
const sourceHash = entry.sourceHash;
|
|
191
|
+
if (identityHash === undefined || sourceHash === undefined) {
|
|
192
|
+
return {
|
|
193
|
+
status: "invalid",
|
|
194
|
+
reason: `record '${id}' is missing its identity or source binding in a versioned artifact`,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
bound[id] = { ...entry.span, identityHash, sourceHash };
|
|
51
198
|
}
|
|
52
|
-
|
|
199
|
+
return {
|
|
200
|
+
status: "parsed",
|
|
201
|
+
formatVersion: SYMBOL_COORDINATES_FORMAT_VERSION,
|
|
202
|
+
coordinates: bound,
|
|
203
|
+
};
|
|
53
204
|
}
|
|
54
|
-
return {
|
|
205
|
+
return { status: "invalid", reason: "unreachable artifact parser state" };
|
|
55
206
|
}
|
|
56
|
-
|
|
57
|
-
|
|
207
|
+
/**
|
|
208
|
+
* Serialize the generated artifact as a version 2 document. Every record is
|
|
209
|
+
* bound to both its manifest identity and exact source content.
|
|
210
|
+
* Key order is deterministic without relying on YAML sortKeys so the
|
|
211
|
+
* human-readable header stays first.
|
|
212
|
+
*/
|
|
213
|
+
// implements REQ-generated-coordinate-persistence
|
|
214
|
+
export function writeCoordinateArtifact(entries) {
|
|
215
|
+
const coordinates = {};
|
|
216
|
+
for (const id of Object.keys(entries).sort((left, right) => left.localeCompare(right))) {
|
|
217
|
+
const entry = entries[id];
|
|
218
|
+
if (entry === undefined || !isValidCoordinateSpan(entry)) {
|
|
219
|
+
throw new CoordinateArtifactError(`refusing to publish an invalid or missing coordinate span${id === undefined ? "" : ` for ${id}`}`);
|
|
220
|
+
}
|
|
221
|
+
if (!isSha256Hash(entry.identityHash) || !isSha256Hash(entry.sourceHash)) {
|
|
222
|
+
throw new CoordinateArtifactError(`refusing to publish an invalid or missing identityHash/sourceHash binding for ${id}`);
|
|
223
|
+
}
|
|
224
|
+
coordinates[id] = {
|
|
225
|
+
identityHash: entry.identityHash,
|
|
226
|
+
sourceHash: entry.sourceHash,
|
|
227
|
+
sourceColumn: entry.sourceColumn,
|
|
228
|
+
sourceEndColumn: entry.sourceEndColumn,
|
|
229
|
+
sourceEndLine: entry.sourceEndLine,
|
|
230
|
+
sourceFile: entry.sourceFile,
|
|
231
|
+
sourceLine: entry.sourceLine,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
58
234
|
const artifact = {
|
|
59
|
-
|
|
235
|
+
version: SYMBOL_COORDINATES_FORMAT_VERSION,
|
|
236
|
+
coordinates,
|
|
60
237
|
};
|
|
61
238
|
return `${SYMBOL_COORDINATES_COMMENT_BLOCK}${dumpYAML(artifact, {
|
|
62
239
|
lineWidth: -1,
|
|
63
240
|
noRefs: true,
|
|
64
|
-
sortKeys: true,
|
|
65
241
|
})}`;
|
|
66
242
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
243
|
+
/** Serialize a legacy artifact without introducing v2 bindings or metadata. */
|
|
244
|
+
// implements REQ-generated-coordinate-persistence
|
|
245
|
+
export function writeLegacyCoordinateArtifact(entries) {
|
|
246
|
+
const coordinates = {};
|
|
247
|
+
for (const id of Object.keys(entries).sort((left, right) => left.localeCompare(right))) {
|
|
248
|
+
const entry = entries[id];
|
|
249
|
+
if (entry === undefined || !isValidCoordinateSpan(entry)) {
|
|
250
|
+
throw new CoordinateArtifactError(`refusing to publish an invalid or missing legacy coordinate span for ${id}`);
|
|
251
|
+
}
|
|
252
|
+
coordinates[id] = {
|
|
253
|
+
sourceColumn: entry.sourceColumn,
|
|
254
|
+
sourceEndColumn: entry.sourceEndColumn,
|
|
255
|
+
sourceEndLine: entry.sourceEndLine,
|
|
256
|
+
sourceFile: entry.sourceFile,
|
|
257
|
+
sourceLine: entry.sourceLine,
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
return `${SYMBOL_COORDINATES_COMMENT_BLOCK}${dumpYAML({ coordinates }, { lineWidth: -1, noRefs: true })}`;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Reader kept for diff/traceability surfaces. Legacy records remain available
|
|
264
|
+
* as spans while v2 records retain their bindings.
|
|
265
|
+
*/
|
|
266
|
+
// implements REQ-generated-coordinate-persistence
|
|
267
|
+
export function readCoordinateArtifact(content) {
|
|
268
|
+
const parsed = parseCoordinateArtifact(content);
|
|
269
|
+
if (parsed.status === "invalid") {
|
|
270
|
+
throw new CoordinateArtifactError(parsed.reason);
|
|
271
|
+
}
|
|
272
|
+
const coordinates = {};
|
|
273
|
+
for (const [id, record] of Object.entries(parsed.coordinates)) {
|
|
274
|
+
coordinates[id] = record;
|
|
275
|
+
}
|
|
276
|
+
return { coordinates };
|
|
277
|
+
}
|
|
278
|
+
const GENERATED_MANIFEST_FIELDS = [
|
|
279
|
+
"sourceLine",
|
|
280
|
+
"sourceColumn",
|
|
281
|
+
"sourceEndLine",
|
|
282
|
+
"sourceEndColumn",
|
|
283
|
+
"coordinatesGeneratedAt",
|
|
284
|
+
];
|
|
285
|
+
function stripGeneratedFields(record) {
|
|
286
|
+
const next = { ...record };
|
|
287
|
+
for (const field of GENERATED_MANIFEST_FIELDS) {
|
|
288
|
+
delete next[field];
|
|
289
|
+
}
|
|
290
|
+
return next;
|
|
291
|
+
}
|
|
292
|
+
function manifestSourceFile(record) {
|
|
293
|
+
if (typeof record.sourceFile === "string" && record.sourceFile.length > 0) {
|
|
294
|
+
return record.sourceFile;
|
|
295
|
+
}
|
|
296
|
+
if (typeof record.source === "string" && record.source.length > 0) {
|
|
297
|
+
return record.source;
|
|
298
|
+
}
|
|
299
|
+
return undefined;
|
|
300
|
+
}
|
|
301
|
+
function defaultResolveSourceText(sourceFile) {
|
|
302
|
+
const absolute = path.isAbsolute(sourceFile)
|
|
303
|
+
? sourceFile
|
|
304
|
+
: path.resolve(process.cwd(), sourceFile);
|
|
305
|
+
if (!existsSync(absolute))
|
|
306
|
+
return null;
|
|
307
|
+
try {
|
|
308
|
+
const content = readFileSync(absolute, "utf8");
|
|
309
|
+
return typeof content === "string" ? content : null;
|
|
310
|
+
}
|
|
311
|
+
catch {
|
|
312
|
+
return null;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
function overlaySpan(stripped, span) {
|
|
316
|
+
return {
|
|
317
|
+
...stripped,
|
|
318
|
+
sourceFile: span.sourceFile,
|
|
319
|
+
sourceLine: span.sourceLine,
|
|
320
|
+
sourceColumn: span.sourceColumn,
|
|
321
|
+
sourceEndLine: span.sourceEndLine,
|
|
322
|
+
sourceEndColumn: span.sourceEndColumn,
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Overlay generated coordinates onto authored manifest records.
|
|
327
|
+
*
|
|
328
|
+
* Generated fields are always stripped first so stale spans can never reach
|
|
329
|
+
* compiled state. Bound v2 records apply only when both their identity hash
|
|
330
|
+
* and exact source-content hash match the current manifest and source. Legacy
|
|
331
|
+
* records and inline coordinates are accepted only after live declaration
|
|
332
|
+
* validation.
|
|
333
|
+
*/
|
|
334
|
+
export function mergeCoordinatesWithManifest(symbolRecords, coordinateArtifact, options = {}) {
|
|
335
|
+
if (coordinateArtifact !== null && "status" in coordinateArtifact) {
|
|
336
|
+
if (coordinateArtifact.status === "invalid") {
|
|
337
|
+
throw new CoordinateArtifactError(coordinateArtifact.reason);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
const resolveSourceText = options.resolveSourceText ?? defaultResolveSourceText;
|
|
341
|
+
const rawCoordinates = coordinateArtifact?.coordinates ?? {};
|
|
70
342
|
return symbolRecords.map((symbolRecord) => {
|
|
71
|
-
const
|
|
343
|
+
const stripped = stripGeneratedFields(symbolRecord);
|
|
72
344
|
const symbolId = typeof symbolRecord.id === "string" ? symbolRecord.id : undefined;
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
345
|
+
if (symbolId === undefined)
|
|
346
|
+
return stripped;
|
|
347
|
+
const entry = rawCoordinates[symbolId];
|
|
348
|
+
const candidate = entry ??
|
|
349
|
+
(coordinateArtifact === null ? inlineSpanOf(symbolRecord) : undefined);
|
|
350
|
+
if (candidate === undefined)
|
|
351
|
+
return stripped;
|
|
352
|
+
const identityHash = candidate.identityHash;
|
|
353
|
+
const sourceHash = candidate.sourceHash;
|
|
354
|
+
if (identityHash !== undefined || sourceHash !== undefined) {
|
|
355
|
+
const recordSourceFile = manifestSourceFile(symbolRecord);
|
|
356
|
+
const expected = coordinateIdentityHash({
|
|
357
|
+
id: symbolId,
|
|
358
|
+
...(symbolRecord.title === undefined
|
|
359
|
+
? {}
|
|
360
|
+
: { title: symbolRecord.title }),
|
|
361
|
+
...(recordSourceFile === undefined
|
|
362
|
+
? {}
|
|
363
|
+
: { sourceFile: recordSourceFile }),
|
|
364
|
+
...(typeof symbolRecord.granularity_reason === "string"
|
|
365
|
+
? { granularity_reason: symbolRecord.granularity_reason }
|
|
366
|
+
: {}),
|
|
367
|
+
});
|
|
368
|
+
if (!isSha256Hash(identityHash) ||
|
|
369
|
+
!isSha256Hash(sourceHash) ||
|
|
370
|
+
identityHash !== expected ||
|
|
371
|
+
!isValidCoordinateSpan(candidate) ||
|
|
372
|
+
recordSourceFile === undefined ||
|
|
373
|
+
candidate.sourceFile !== recordSourceFile) {
|
|
374
|
+
return stripped;
|
|
375
|
+
}
|
|
376
|
+
const sourceText = resolveSourceText(candidate.sourceFile);
|
|
377
|
+
if (sourceText === null ||
|
|
378
|
+
coordinateSourceHash(sourceText) !== sourceHash) {
|
|
379
|
+
return stripped;
|
|
380
|
+
}
|
|
381
|
+
return overlaySpan(stripped, candidate);
|
|
76
382
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}
|
|
383
|
+
if (!isValidCoordinateSpan(candidate))
|
|
384
|
+
return stripped;
|
|
385
|
+
if (!legacyRecordMatchesCurrentExtraction(symbolRecord, candidate, resolveSourceText)) {
|
|
386
|
+
return stripped;
|
|
387
|
+
}
|
|
388
|
+
return overlaySpan(stripped, candidate);
|
|
82
389
|
});
|
|
83
390
|
}
|
|
391
|
+
function legacyRecordMatchesCurrentExtraction(record, entry, resolveSourceText) {
|
|
392
|
+
const sourceFile = manifestSourceFile(record);
|
|
393
|
+
if (sourceFile === undefined || entry.sourceFile !== sourceFile)
|
|
394
|
+
return false;
|
|
395
|
+
const title = typeof record.title === "string" ? record.title : "";
|
|
396
|
+
const declarationName = title.slice(title.lastIndexOf(".") + 1);
|
|
397
|
+
if (declarationName.length === 0)
|
|
398
|
+
return false;
|
|
399
|
+
const content = resolveSourceText(entry.sourceFile);
|
|
400
|
+
if (content === null)
|
|
401
|
+
return false;
|
|
402
|
+
const lines = content.split(/\r?\n/);
|
|
403
|
+
const lineText = lines[entry.sourceLine - 1];
|
|
404
|
+
if (lineText === undefined)
|
|
405
|
+
return false;
|
|
406
|
+
if (entry.sourceColumn > lineText.length - declarationName.length) {
|
|
407
|
+
return false;
|
|
408
|
+
}
|
|
409
|
+
return (lineText.slice(entry.sourceColumn, entry.sourceColumn + declarationName.length) === declarationName);
|
|
410
|
+
}
|
|
411
|
+
function inlineSpanOf(record) {
|
|
412
|
+
const sourceFile = manifestSourceFile(record) ?? "";
|
|
413
|
+
const span = {
|
|
414
|
+
sourceFile,
|
|
415
|
+
sourceLine: typeof record.sourceLine === "number" ? record.sourceLine : -1,
|
|
416
|
+
sourceColumn: typeof record.sourceColumn === "number" ? record.sourceColumn : -1,
|
|
417
|
+
sourceEndLine: typeof record.sourceEndLine === "number" ? record.sourceEndLine : -1,
|
|
418
|
+
sourceEndColumn: typeof record.sourceEndColumn === "number" ? record.sourceEndColumn : -1,
|
|
419
|
+
};
|
|
420
|
+
return isValidCoordinateSpan(span) ? span : undefined;
|
|
421
|
+
}
|
|
@@ -77,7 +77,7 @@ export function analyzeSourceText(filePathOrEntries, contentOrWorkspaceRoot, opt
|
|
|
77
77
|
export async function enrichSymbolCoordinates(entries, workspaceRoot, deps) {
|
|
78
78
|
// implements REQ-vscode-traceability
|
|
79
79
|
const enrichTsCoordinates = deps?.enrichTsCoordinates ?? enrichSymbolCoordinatesWithTsMorph;
|
|
80
|
-
const output = entries.map((entry) => (
|
|
80
|
+
const output = entries.map((entry) => withoutGeneratedCoordinates(entry));
|
|
81
81
|
const tsIndices = [];
|
|
82
82
|
const tsEntries = [];
|
|
83
83
|
for (let index = 0; index < output.length; index++) {
|
|
@@ -107,6 +107,16 @@ export async function enrichSymbolCoordinates(entries, workspaceRoot, deps) {
|
|
|
107
107
|
}
|
|
108
108
|
return output;
|
|
109
109
|
}
|
|
110
|
+
function withoutGeneratedCoordinates(entry) {
|
|
111
|
+
const generatedFields = new Set([
|
|
112
|
+
"sourceLine",
|
|
113
|
+
"sourceColumn",
|
|
114
|
+
"sourceEndLine",
|
|
115
|
+
"sourceEndColumn",
|
|
116
|
+
"coordinatesGeneratedAt",
|
|
117
|
+
]);
|
|
118
|
+
return Object.fromEntries(Object.entries(entry).filter(([field]) => !generatedFields.has(field)));
|
|
119
|
+
}
|
|
110
120
|
function enrichWithRegexHeuristic(entry, absolutePath) {
|
|
111
121
|
try {
|
|
112
122
|
const content = fs.readFileSync(absolutePath, "utf8");
|
|
@@ -20,4 +20,5 @@ export interface ManifestSymbolEntry {
|
|
|
20
20
|
}
|
|
21
21
|
export declare function createTsMorphSourceAnalysisProvider(): SourceAnalysisProvider;
|
|
22
22
|
export declare function enrichSymbolCoordinatesWithTsMorph(entries: ManifestSymbolEntry[], workspaceRoot: string): Promise<ManifestSymbolEntry[]>;
|
|
23
|
+
export declare function onlyCandidate<T>(candidates: readonly T[]): T | undefined;
|
|
23
24
|
//# sourceMappingURL=symbols-ts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbols-ts.d.ts","sourceRoot":"","sources":["../../src/extractors/symbols-ts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"symbols-ts.d.ts","sourceRoot":"","sources":["../../src/extractors/symbols-ts.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EACV,sBAAsB,EAIvB,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAcD,wBAAgB,mCAAmC,IAAI,sBAAsB,CA+B5E;AAED,wBAAsB,kCAAkC,CACtD,OAAO,EAAE,mBAAmB,EAAE,EAC9B,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAuEhC;AAgUD,wBAAgB,aAAa,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,GAAG,SAAS,CAGxE"}
|