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
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
You should have received a copy of the GNU Affero General Public License
|
|
16
16
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
17
|
*/
|
|
18
|
-
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
18
|
+
import { existsSync, readFileSync, renameSync, unlinkSync, writeFileSync, } from "node:fs";
|
|
19
19
|
import * as path from "node:path";
|
|
20
20
|
import { dump as dumpYAML, load as parseYAML } from "js-yaml";
|
|
21
|
-
import { writeCoordinateArtifact, } from "../../extractors/symbol-coordinates.js";
|
|
21
|
+
import { coarseCoordinateSpan, coordinateIdentityHash, coordinateSourceHash, parseCoordinateArtifact, writeCoordinateArtifact, } from "../../extractors/symbol-coordinates.js";
|
|
22
22
|
import { enrichSymbolCoordinates, } from "../../extractors/symbols-coordinator.js";
|
|
23
|
-
import { COARSE_GRANULARITY_REASONS, isCoarseGranularityReason, } from "../../public/symbol-granularity.js";
|
|
23
|
+
import { COARSE_GRANULARITY_REASONS, COARSE_GRANULARITY_REASONS_PARENTHESIZED, isCoarseGranularityReason, } from "../../public/symbol-granularity.js";
|
|
24
24
|
import { resolveSymbolsManifestPaths } from "../../utils/manifest-paths.js";
|
|
25
25
|
function resolveDeps(overrides) {
|
|
26
26
|
return {
|
|
@@ -29,6 +29,8 @@ function resolveDeps(overrides) {
|
|
|
29
29
|
existsSync,
|
|
30
30
|
parseYAML,
|
|
31
31
|
readFileSync,
|
|
32
|
+
renameSync,
|
|
33
|
+
unlinkSync,
|
|
32
34
|
writeFileSync,
|
|
33
35
|
writeCoordinateArtifact,
|
|
34
36
|
resolveSymbolsManifestPaths,
|
|
@@ -40,17 +42,16 @@ export const SYMBOLS_MANIFEST_COMMENT_BLOCK = `# symbols.yaml
|
|
|
40
42
|
# id, title, sourceFile, links, status, tags, owner, priority
|
|
41
43
|
# Generated coordinates are stored separately in symbol-coordinates.yaml.
|
|
42
44
|
# Run \`kibi sync --refresh-symbol-coordinates\` to refresh them.
|
|
45
|
+
#
|
|
46
|
+
# Coordinate refresh granularity gate:
|
|
47
|
+
# The AST extractor locates per-declaration spans for code files. When it
|
|
48
|
+
# cannot find a declaration, a title-match or whole-file coarse span is
|
|
49
|
+
# published ONLY for symbols that declare a coarse granularity_reason
|
|
50
|
+
# (${COARSE_GRANULARITY_REASONS.join(", ")}).
|
|
51
|
+
# A symbol without granularity_reason whose extraction misses gets no
|
|
52
|
+
# coordinate entry at all and is reported as failed; add symbol_role and
|
|
53
|
+
# granularity_reason to opt it into the coarse fallback.
|
|
43
54
|
`;
|
|
44
|
-
const SYMBOL_COORD_EXTENSIONS = new Set([
|
|
45
|
-
".ts",
|
|
46
|
-
".tsx",
|
|
47
|
-
".js",
|
|
48
|
-
".jsx",
|
|
49
|
-
".mts",
|
|
50
|
-
".cts",
|
|
51
|
-
".mjs",
|
|
52
|
-
".cjs",
|
|
53
|
-
]);
|
|
54
55
|
const GENERATED_COORD_FIELDS = [
|
|
55
56
|
"sourceLine",
|
|
56
57
|
"sourceColumn",
|
|
@@ -62,19 +63,107 @@ const GENERATED_MANIFEST_FIELDS = new Set([
|
|
|
62
63
|
"coordinatesGeneratedAt",
|
|
63
64
|
]);
|
|
64
65
|
/**
|
|
65
|
-
* Coarse symbol anchors for which per-
|
|
66
|
+
* Coarse symbol anchors for which AST per-declaration coordinates are not
|
|
67
|
+
* expected.
|
|
66
68
|
*
|
|
67
69
|
* Test-suite, module-level-behavior, and config-artifact symbols represent a
|
|
68
70
|
* whole file or configuration unit, and `extractor-miss` explicitly documents
|
|
69
|
-
* that the extractor cannot locate a declaration.
|
|
70
|
-
*
|
|
71
|
-
*
|
|
71
|
+
* that the extractor cannot locate a declaration. Refresh still counts those
|
|
72
|
+
* entries as unchanged instead of failures, but it persists title-match or
|
|
73
|
+
* whole-file coordinates so proof-bearing executable symbols can resolve.
|
|
72
74
|
*/
|
|
73
75
|
export { COARSE_GRANULARITY_REASONS };
|
|
74
76
|
export function isCoarseGranularityAnchor(entry) {
|
|
75
77
|
const reason = entry.granularity_reason;
|
|
76
78
|
return isCoarseGranularityReason(reason);
|
|
77
79
|
}
|
|
80
|
+
function extractedCoordinates(entry) {
|
|
81
|
+
const { sourceFile, sourceLine, sourceColumn, sourceEndLine, sourceEndColumn, } = entry;
|
|
82
|
+
return typeof sourceFile === "string" &&
|
|
83
|
+
typeof sourceLine === "number" &&
|
|
84
|
+
typeof sourceColumn === "number" &&
|
|
85
|
+
typeof sourceEndLine === "number" &&
|
|
86
|
+
typeof sourceEndColumn === "number"
|
|
87
|
+
? {
|
|
88
|
+
sourceFile,
|
|
89
|
+
sourceLine,
|
|
90
|
+
sourceColumn,
|
|
91
|
+
sourceEndLine,
|
|
92
|
+
sourceEndColumn,
|
|
93
|
+
}
|
|
94
|
+
: null;
|
|
95
|
+
}
|
|
96
|
+
function readSourceText(sourceFile, workspaceRoot, deps) {
|
|
97
|
+
const absolute = path.isAbsolute(sourceFile)
|
|
98
|
+
? sourceFile
|
|
99
|
+
: path.resolve(workspaceRoot, sourceFile);
|
|
100
|
+
if (!deps.existsSync(absolute))
|
|
101
|
+
return null;
|
|
102
|
+
try {
|
|
103
|
+
const content = deps.readFileSync(absolute, "utf8");
|
|
104
|
+
return typeof content === "string" ? content : null;
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
function fallbackCoarseCoordinates(entry, workspaceRoot, deps) {
|
|
111
|
+
if (!isCoarseGranularityAnchor(entry))
|
|
112
|
+
return null;
|
|
113
|
+
const sourceFile = typeof entry.sourceFile === "string" ? entry.sourceFile : undefined;
|
|
114
|
+
const title = typeof entry.title === "string" ? entry.title : "";
|
|
115
|
+
if (sourceFile === undefined)
|
|
116
|
+
return null;
|
|
117
|
+
const content = readSourceText(sourceFile, workspaceRoot, deps);
|
|
118
|
+
if (content === null)
|
|
119
|
+
return null;
|
|
120
|
+
return coarseCoordinateSpan(sourceFile, title, content);
|
|
121
|
+
}
|
|
122
|
+
/** Atomically replace `targetPath` with `content` via temp file + rename. */
|
|
123
|
+
function publishAtomically(targetPath, content, deps) {
|
|
124
|
+
const temporary = `${targetPath}.kibi-tmp-${process.pid}`;
|
|
125
|
+
try {
|
|
126
|
+
deps.writeFileSync(temporary, content, "utf8");
|
|
127
|
+
deps.renameSync(temporary, targetPath);
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
try {
|
|
131
|
+
deps.unlinkSync(temporary);
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
// Temp cleanup is best effort; the original failure propagates.
|
|
135
|
+
}
|
|
136
|
+
throw error;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
function manifestEntryIdentity(entry) {
|
|
140
|
+
const title = typeof entry.title === "string" ? entry.title : undefined;
|
|
141
|
+
const sourceFile = typeof entry.sourceFile === "string" ? entry.sourceFile : undefined;
|
|
142
|
+
const granularityReason = typeof entry.granularity_reason === "string"
|
|
143
|
+
? entry.granularity_reason
|
|
144
|
+
: undefined;
|
|
145
|
+
return {
|
|
146
|
+
id: String(entry.id),
|
|
147
|
+
...(title === undefined ? {} : { title }),
|
|
148
|
+
...(sourceFile === undefined ? {} : { sourceFile }),
|
|
149
|
+
...(granularityReason === undefined
|
|
150
|
+
? {}
|
|
151
|
+
: { granularity_reason: granularityReason }),
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Typed reason an eligible (code-file) symbol still has no coordinates after
|
|
156
|
+
* enrichment: the AST extractor missed and the symbol either lacks a coarse
|
|
157
|
+
* granularity_reason (so the whole-file fallback is gated off) or the
|
|
158
|
+
* fallback itself produced no span.
|
|
159
|
+
*/
|
|
160
|
+
function coarseAnchorFailureReason(entry) {
|
|
161
|
+
const reason = entry.granularity_reason;
|
|
162
|
+
if (!isCoarseGranularityReason(reason)) {
|
|
163
|
+
return `extractor produced no coordinates; add symbol_role and granularity_reason ${COARSE_GRANULARITY_REASONS_PARENTHESIZED} to enable the whole-file coarse fallback`;
|
|
164
|
+
}
|
|
165
|
+
return "extractor produced no coordinates and the whole-file coarse fallback found no span for this symbol";
|
|
166
|
+
}
|
|
78
167
|
export async function refreshManifestCoordinates(
|
|
79
168
|
// implements REQ-003
|
|
80
169
|
manifestPath, workspaceRoot, deps) {
|
|
@@ -83,56 +172,60 @@ manifestPath, workspaceRoot, deps) {
|
|
|
83
172
|
const rawContent = resolved.readFileSync(manifestPath, "utf8");
|
|
84
173
|
const parsed = resolved.parseYAML(rawContent);
|
|
85
174
|
if (!isRecord(parsed)) {
|
|
86
|
-
|
|
87
|
-
return;
|
|
175
|
+
throw new Error(`symbols manifest ${manifestPath} is not a YAML object; refusing coordinate refresh`);
|
|
88
176
|
}
|
|
89
177
|
const rawSymbols = parsed.symbols;
|
|
90
178
|
if (!Array.isArray(rawSymbols)) {
|
|
91
|
-
|
|
92
|
-
return;
|
|
179
|
+
throw new Error(`symbols manifest ${manifestPath} has no symbols array; refusing coordinate refresh`);
|
|
93
180
|
}
|
|
94
181
|
const before = rawSymbols.map((entry) => isRecord(entry)
|
|
95
182
|
? { ...entry }
|
|
96
183
|
: {});
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
typeof entry.sourceColumn === "number" &&
|
|
107
|
-
typeof entry.sourceEndLine === "number" &&
|
|
108
|
-
typeof entry.sourceEndColumn === "number") {
|
|
109
|
-
coordinatesMap[id] = {
|
|
110
|
-
sourceFile: entry.sourceFile,
|
|
111
|
-
sourceLine: entry.sourceLine,
|
|
112
|
-
sourceColumn: entry.sourceColumn,
|
|
113
|
-
sourceEndLine: entry.sourceEndLine,
|
|
114
|
-
sourceEndColumn: entry.sourceEndColumn,
|
|
115
|
-
};
|
|
184
|
+
let coordinatesPath = null;
|
|
185
|
+
if (shouldRefreshCoordinates) {
|
|
186
|
+
coordinatesPath =
|
|
187
|
+
resolved.resolveSymbolsManifestPaths(workspaceRoot).coordinatesPath;
|
|
188
|
+
if (resolved.existsSync(coordinatesPath)) {
|
|
189
|
+
const existing = parseCoordinateArtifact(String(resolved.readFileSync(coordinatesPath, "utf8")));
|
|
190
|
+
if (existing.status === "invalid") {
|
|
191
|
+
throw new Error(`Failed to parse coordinate artifact ${coordinatesPath}: ${existing.reason}`);
|
|
192
|
+
}
|
|
116
193
|
}
|
|
117
194
|
}
|
|
118
|
-
|
|
195
|
+
const enriched = await resolved.enrichSymbolCoordinates(before, workspaceRoot);
|
|
196
|
+
// Publish the generated coordinate artifact when explicitly requested.
|
|
197
|
+
// Parse and I/O failures are fatal so sync never advances cache state on a
|
|
198
|
+
// partially published compiler dependency. Symbols without extractable
|
|
199
|
+
// coordinates stay absent from the artifact; coverage keeps their gap visible.
|
|
200
|
+
let refreshedArtifactBytes = null;
|
|
119
201
|
if (shouldRefreshCoordinates) {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
202
|
+
const boundEntries = {};
|
|
203
|
+
for (const entry of enriched) {
|
|
204
|
+
const id = typeof entry?.id === "string" ? entry.id : undefined;
|
|
205
|
+
if (!id)
|
|
206
|
+
continue;
|
|
207
|
+
const span = extractedCoordinates(entry) ??
|
|
208
|
+
fallbackCoarseCoordinates(entry, workspaceRoot, resolved);
|
|
209
|
+
if (span === null)
|
|
210
|
+
continue;
|
|
211
|
+
const sourceText = readSourceText(span.sourceFile, workspaceRoot, resolved);
|
|
212
|
+
if (sourceText === null)
|
|
213
|
+
continue;
|
|
214
|
+
boundEntries[id] = {
|
|
215
|
+
...span,
|
|
216
|
+
identityHash: coordinateIdentityHash(manifestEntryIdentity(entry)),
|
|
217
|
+
sourceHash: coordinateSourceHash(sourceText),
|
|
218
|
+
};
|
|
127
219
|
}
|
|
220
|
+
refreshedArtifactBytes = resolved.writeCoordinateArtifact(boundEntries);
|
|
128
221
|
}
|
|
129
222
|
// Coordinates belong exclusively to the generated artifact. Always strip
|
|
130
223
|
// them from the authored manifest so consecutive refreshes are idempotent.
|
|
131
224
|
const strippedEnriched = enriched.map((current) => Object.fromEntries(Object.entries(current).filter(([field]) => !GENERATED_MANIFEST_FIELDS.has(field))));
|
|
132
225
|
parsed.symbols = strippedEnriched;
|
|
133
226
|
let refreshed = 0;
|
|
134
|
-
let failed = 0;
|
|
135
227
|
let unchanged = 0;
|
|
228
|
+
const failures = [];
|
|
136
229
|
for (let i = 0; i < before.length; i++) {
|
|
137
230
|
const previous = before[i] ?? {};
|
|
138
231
|
const current = enriched[i] ?? previous;
|
|
@@ -150,11 +243,13 @@ manifestPath, workspaceRoot, deps) {
|
|
|
150
243
|
? previous.sourceFile
|
|
151
244
|
: undefined, workspaceRoot, resolved);
|
|
152
245
|
if (eligible && !hasAllGeneratedCoordinates(current)) {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
246
|
+
failures.push({
|
|
247
|
+
id: typeof current.id === "string" ? current.id : `#${i}`,
|
|
248
|
+
reason: coarseAnchorFailureReason(current),
|
|
249
|
+
});
|
|
250
|
+
continue;
|
|
157
251
|
}
|
|
252
|
+
unchanged++;
|
|
158
253
|
}
|
|
159
254
|
const dumped = resolved.dumpYAML(parsed, {
|
|
160
255
|
lineWidth: -1,
|
|
@@ -162,10 +257,51 @@ manifestPath, workspaceRoot, deps) {
|
|
|
162
257
|
sortKeys: false,
|
|
163
258
|
});
|
|
164
259
|
const nextContent = `${SYMBOLS_MANIFEST_COMMENT_BLOCK}${dumped}`;
|
|
165
|
-
|
|
166
|
-
|
|
260
|
+
let manifestPublished = false;
|
|
261
|
+
try {
|
|
262
|
+
if (rawContent !== nextContent) {
|
|
263
|
+
publishAtomically(manifestPath, nextContent, resolved);
|
|
264
|
+
manifestPublished = true;
|
|
265
|
+
}
|
|
266
|
+
if (refreshedArtifactBytes !== null && coordinatesPath !== null) {
|
|
267
|
+
publishAtomically(coordinatesPath, refreshedArtifactBytes, resolved);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
if (manifestPublished) {
|
|
272
|
+
try {
|
|
273
|
+
const current = resolved.readFileSync(manifestPath, "utf8");
|
|
274
|
+
if (current !== nextContent) {
|
|
275
|
+
throw new Error(`symbol manifest changed after publication; refusing rollback: ${manifestPath}`);
|
|
276
|
+
}
|
|
277
|
+
publishAtomically(manifestPath, rawContent, resolved);
|
|
278
|
+
}
|
|
279
|
+
catch (rollbackError) {
|
|
280
|
+
throw new AggregateError([error, rollbackError], `Coordinate artifact publication failed and manifest rollback failed: ${manifestPath}`);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
throw error;
|
|
284
|
+
}
|
|
285
|
+
// The generated coordinates live in the artifact beside the manifest, not
|
|
286
|
+
// in the authored symbols.yaml this command also rewrites; naming the
|
|
287
|
+
// artifact keeps diff audits pointed at the file that actually changed.
|
|
288
|
+
const counts = `(refreshed=${refreshed}, unchanged=${unchanged}, failed=${failures.length})`;
|
|
289
|
+
if (coordinatesPath !== null) {
|
|
290
|
+
console.log(`\u2713 Refreshed symbol coordinates in ${path.relative(workspaceRoot, coordinatesPath)} ${counts}`);
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
console.log(`\u2713 Normalized symbol manifest ${path.relative(workspaceRoot, manifestPath)} ${counts}`);
|
|
294
|
+
}
|
|
295
|
+
const maxReportedFailures = 10;
|
|
296
|
+
for (const failure of failures.slice(0, maxReportedFailures)) {
|
|
297
|
+
console.log(` failed ${failure.id}: ${failure.reason}`);
|
|
298
|
+
}
|
|
299
|
+
if (failures.length > maxReportedFailures) {
|
|
300
|
+
console.log(` ... and ${failures.length - maxReportedFailures} more failed symbol(s)`);
|
|
301
|
+
}
|
|
302
|
+
if (failures.length > 0) {
|
|
303
|
+
console.log(" Symbols without a published coordinate entry are dropped from coverage on the next plain sync until they succeed.");
|
|
167
304
|
}
|
|
168
|
-
console.log(`\u2713 Refreshed symbol coordinates in ${path.relative(workspaceRoot, manifestPath)} (refreshed=${refreshed}, unchanged=${unchanged}, failed=${failed})`);
|
|
169
305
|
}
|
|
170
306
|
export function hasAllGeneratedCoordinates(
|
|
171
307
|
// implements REQ-003
|
|
@@ -184,10 +320,9 @@ sourceFile, workspaceRoot, deps) {
|
|
|
184
320
|
const absolute = path.isAbsolute(sourceFile)
|
|
185
321
|
? sourceFile
|
|
186
322
|
: path.resolve(workspaceRoot, sourceFile);
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
return SYMBOL_COORD_EXTENSIONS.has(ext);
|
|
323
|
+
// Non-JS/TS files also undergo coordinate extraction through the text
|
|
324
|
+
// heuristic. A miss there must be reported just like an AST extraction miss.
|
|
325
|
+
return resolved.existsSync(absolute);
|
|
191
326
|
}
|
|
192
327
|
function isRecord(value) {
|
|
193
328
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -18,7 +18,10 @@ export declare function persistEntities(prolog: PrologProcess, results: Extracti
|
|
|
18
18
|
entityCount: number;
|
|
19
19
|
kbModified: boolean;
|
|
20
20
|
}>;
|
|
21
|
-
export declare function
|
|
21
|
+
export declare function relationshipFailureMessage(singleError: string | undefined, batchError: string | undefined): string;
|
|
22
|
+
export declare function persistRelationships(prolog: PrologProcess, results: ExtractionResult[], shardRelationships: ExtractedRelationship[], options?: {
|
|
23
|
+
workspaceRoot?: string;
|
|
24
|
+
}): Promise<{
|
|
22
25
|
relationshipCount: number;
|
|
23
26
|
kbModified: boolean;
|
|
24
27
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/persistence.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAEV,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/persistence.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAEV,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAiHrD,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;CACrB;AA8CD,iFAAiF;AACjF,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,SAAS,MAAM,EAAE,GAC7B,OAAO,CAAC,MAAM,CAAC,CAkCjB;AAED,0EAA0E;AAC1E,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,SAAS,MAAM,EAAE,GAC3B,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAED,8EAA8E;AAC9E,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,SAAS,MAAM,EAAE,GAC3B,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,SAAS,qBAAqB,EAAE,GAC9C,OAAO,CAAC,MAAM,CAAC,CAuBjB;AAmCD,wBAAsB,eAAe,CAEnC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,EACtB,OAAO,GAAE;IAAE,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAAO,GAChD,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAAC,CAiPvD;AA4BD,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,MAAM,CAER;AAGD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,kBAAkB,EAAE,qBAAqB,EAAE,EAC3C,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,GACvC,OAAO,CAAC;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAAC,CAmO7D"}
|
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
import * as path from "node:path";
|
|
19
19
|
import { toPrologAtom, toPrologString } from "../../prolog/codec.js";
|
|
20
20
|
import { loadEntities } from "../../public/operations/discovery-entities.js";
|
|
21
|
-
import {
|
|
21
|
+
import { appendOnlyProofReceiptHistoryErrors } from "../../public/proof-receipt.js";
|
|
22
|
+
import { findUntrackedDocumentMatches } from "./untracked-targets.js";
|
|
22
23
|
// Field categorization for typed fact serialization
|
|
23
24
|
// NOTE: base entity fields (status, owner, priority, severity) are NOT listed here —
|
|
24
25
|
// they are emitted in the base props block above. Only fact-specific atom fields go here.
|
|
@@ -285,15 +286,15 @@ prolog, results, entityIds, options = {}) {
|
|
|
285
286
|
id: entity.id,
|
|
286
287
|
type: "test",
|
|
287
288
|
});
|
|
288
|
-
const previous = Array.isArray(existing[0]?.
|
|
289
|
-
? existing[0].
|
|
289
|
+
const previous = Array.isArray(existing[0]?.proof_receipts)
|
|
290
|
+
? existing[0].proof_receipts.filter((receipt) => receipt !== null &&
|
|
290
291
|
typeof receipt === "object" &&
|
|
291
292
|
!Array.isArray(receipt))
|
|
292
293
|
: [];
|
|
293
|
-
const next = Array.isArray(entity.
|
|
294
|
-
? entity.
|
|
294
|
+
const next = Array.isArray(entity.proof_receipts)
|
|
295
|
+
? entity.proof_receipts
|
|
295
296
|
: undefined;
|
|
296
|
-
const receiptErrors =
|
|
297
|
+
const receiptErrors = appendOnlyProofReceiptHistoryErrors(previous, next);
|
|
297
298
|
if (receiptErrors.length > 0) {
|
|
298
299
|
throw new Error(receiptErrors.join("; "));
|
|
299
300
|
}
|
|
@@ -369,8 +370,14 @@ prolog, results, entityIds, options = {}) {
|
|
|
369
370
|
if (entity.verification_perspective !== undefined) {
|
|
370
371
|
props.push(`verification_perspective=${toPrologAtom(entity.verification_perspective)}`);
|
|
371
372
|
}
|
|
372
|
-
if (entity.
|
|
373
|
-
props.push(`
|
|
373
|
+
if (entity.proof_contract !== undefined) {
|
|
374
|
+
props.push(`proof_contract=${toPrologString(JSON.stringify(entity.proof_contract))}`);
|
|
375
|
+
}
|
|
376
|
+
if (entity.proof_bindings !== undefined) {
|
|
377
|
+
props.push(`proof_bindings=${toPrologString(JSON.stringify(entity.proof_bindings))}`);
|
|
378
|
+
}
|
|
379
|
+
if (entity.proof_receipts !== undefined) {
|
|
380
|
+
props.push(`proof_receipts=${toPrologString(JSON.stringify(entity.proof_receipts))}`);
|
|
374
381
|
}
|
|
375
382
|
}
|
|
376
383
|
const propsList = `[${props.join(", ")}]`;
|
|
@@ -447,8 +454,11 @@ function semanticEntityContext(entity, sourceFile) {
|
|
|
447
454
|
}
|
|
448
455
|
return ` (${details.join("; ")})`;
|
|
449
456
|
}
|
|
457
|
+
export function relationshipFailureMessage(singleError, batchError) {
|
|
458
|
+
return singleError || batchError || "Unknown error";
|
|
459
|
+
}
|
|
450
460
|
// implements REQ-core-persistence
|
|
451
|
-
export async function persistRelationships(prolog, results, shardRelationships) {
|
|
461
|
+
export async function persistRelationships(prolog, results, shardRelationships, options = {}) {
|
|
452
462
|
let relCount = 0;
|
|
453
463
|
let kbModified = false;
|
|
454
464
|
// Build ID lookup for relationship resolution
|
|
@@ -522,9 +532,7 @@ export async function persistRelationships(prolog, results, shardRelationships)
|
|
|
522
532
|
rel: item.rel,
|
|
523
533
|
fromId: item.fromId,
|
|
524
534
|
toId: item.toId,
|
|
525
|
-
error: single.error
|
|
526
|
-
(relationshipBatchRunner ? batch.error : undefined) ||
|
|
527
|
-
"Unknown error",
|
|
535
|
+
error: relationshipFailureMessage(single.error, relationshipBatchRunner ? batch.error : undefined),
|
|
528
536
|
});
|
|
529
537
|
}
|
|
530
538
|
}
|
|
@@ -606,6 +614,12 @@ export async function persistRelationships(prolog, results, shardRelationships)
|
|
|
606
614
|
const idList = [...missingIds].sort().join(", ");
|
|
607
615
|
console.warn(`\nTip: ${missingEntities.length} relationship(s) reference ${missingIds.size} missing entity/ies: ${idList}.`);
|
|
608
616
|
console.warn(" Create the missing docs (e.g., docs/requirements/REQ-*.md) or remove stale relationships.");
|
|
617
|
+
const untrackedMatches = options.workspaceRoot !== undefined
|
|
618
|
+
? findUntrackedDocumentMatches(options.workspaceRoot, [...missingIds])
|
|
619
|
+
: new Map();
|
|
620
|
+
for (const [id, docPath] of untrackedMatches) {
|
|
621
|
+
console.warn(` Note: document for ${id} exists at ${docPath} but is untracked, so sync ignores it. Stage it with \`git add ${docPath}\` (staging is enough; no commit required) and sync again.`);
|
|
622
|
+
}
|
|
609
623
|
}
|
|
610
624
|
else if (invalidRels.length > 0) {
|
|
611
625
|
console.warn("\nTip: Check that relationship types and directions match the allowed schema (e.g., implements symbol→req, verified_by req→test).");
|
|
@@ -16,6 +16,7 @@ interface StagingDeps {
|
|
|
16
16
|
writeFileSync: typeof writeFileSync;
|
|
17
17
|
}
|
|
18
18
|
export declare function createUniqueStagingPath(currentBranch: string, rootDir: string, pid?: number, now?: number): string;
|
|
19
|
+
export declare function abandonedStagingBranch(branch: string | undefined): string | undefined;
|
|
19
20
|
export declare function cleanupAbandonedStagingDirectories(stagingPath: string, deps?: Partial<StagingDeps>): Promise<void>;
|
|
20
21
|
export declare function prepareStagingEnvironment(stagingPath: string, livePath: string, rebuild: boolean, deps?: Partial<StagingDeps>): Promise<void>;
|
|
21
22
|
export declare function atomicPublish(stagingPath: string, livePath: string, deps?: Partial<StagingDeps>): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"staging.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/staging.ts"],"names":[],"mappings":"AAkBA,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,MAAM,EACN,aAAa,EACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,UAAU,WAAW;IACnB,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IAC5C,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,EAAE,EAAE,OAAO,EAAE,CAAC;IACd,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,MAAM,EAAE,OAAO,MAAM,CAAC;IACtB,aAAa,EAAE,OAAO,aAAa,CAAC;CACrC;AA+BD,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,GAAG,SAAc,EACjB,GAAG,SAAa,GACf,MAAM,CAOR;AAGD,wBAAsB,kCAAkC,CACtD,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC1B,OAAO,CAAC,IAAI,CAAC,CAqDf;AAED,wBAAsB,yBAAyB,CAE7C,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,EAChB,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC1B,OAAO,CAAC,IAAI,CAAC,CA6Cf;AA0CD,wBAAgB,aAAa,CAE3B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC1B,IAAI,CAeN;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC1B,IAAI,CA6DN;AAED,wBAAgB,cAAc,CAE5B,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC1B,IAAI,CAKN"}
|
|
1
|
+
{"version":3,"file":"staging.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/staging.ts"],"names":[],"mappings":"AAkBA,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,MAAM,EACN,aAAa,EACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,UAAU,WAAW;IACnB,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IAC5C,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,EAAE,EAAE,OAAO,EAAE,CAAC;IACd,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,MAAM,EAAE,OAAO,MAAM,CAAC;IACtB,aAAa,EAAE,OAAO,aAAa,CAAC;CACrC;AA+BD,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,GAAG,SAAc,EACjB,GAAG,SAAa,GACf,MAAM,CAOR;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,MAAM,GAAG,SAAS,CAEpB;AAGD,wBAAsB,kCAAkC,CACtD,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC1B,OAAO,CAAC,IAAI,CAAC,CAqDf;AAED,wBAAsB,yBAAyB,CAE7C,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,EAChB,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC1B,OAAO,CAAC,IAAI,CAAC,CA6Cf;AA0CD,wBAAgB,aAAa,CAE3B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC1B,IAAI,CAeN;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC1B,IAAI,CA6DN;AAED,wBAAgB,cAAc,CAE5B,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC1B,IAAI,CAKN"}
|
|
@@ -50,16 +50,19 @@ function resolveDeps(overrides) {
|
|
|
50
50
|
export function createUniqueStagingPath(currentBranch, rootDir, pid = process.pid, now = Date.now()) {
|
|
51
51
|
return path.join(rootDir, ".kb", "branches", `${currentBranch}.staging.${pid}.${now}`);
|
|
52
52
|
}
|
|
53
|
+
export function abandonedStagingBranch(branch) {
|
|
54
|
+
return branch ? branch : undefined;
|
|
55
|
+
}
|
|
53
56
|
// implements REQ-003
|
|
54
57
|
export async function cleanupAbandonedStagingDirectories(stagingPath, deps) {
|
|
55
58
|
const resolved = resolveDeps(deps);
|
|
56
59
|
const stagingDir = path.dirname(stagingPath);
|
|
57
60
|
const stagingBase = path.basename(stagingPath);
|
|
58
|
-
const match = /^(?<branch
|
|
61
|
+
const match = /^(?<branch>.*)\.staging\.(?<pid>\d+)\.(?<timestamp>\d+)$/.exec(stagingBase);
|
|
59
62
|
if (!match?.groups) {
|
|
60
63
|
return;
|
|
61
64
|
}
|
|
62
|
-
const branch = match.groups.branch;
|
|
65
|
+
const branch = abandonedStagingBranch(match.groups.branch);
|
|
63
66
|
if (!branch) {
|
|
64
67
|
return;
|
|
65
68
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
interface UntrackedTargetsDeps {
|
|
2
|
+
execFileSync: (file: string, args: readonly string[], options: {
|
|
3
|
+
encoding: "utf8";
|
|
4
|
+
maxBuffer: number;
|
|
5
|
+
stdio: "pipe";
|
|
6
|
+
}) => string;
|
|
7
|
+
existsSync: (path: string) => boolean;
|
|
8
|
+
readFileSync: (path: string, encoding: "utf8") => string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Match missing relationship-target ids against untracked `.kb` documents.
|
|
12
|
+
*
|
|
13
|
+
* Sync discovery intentionally enumerates only git-tracked (or
|
|
14
|
+
* pending-receipt) documents, so a freshly authored but unstaged `.kb` doc is
|
|
15
|
+
* invisible to sync while relationships that reference it fail with a
|
|
16
|
+
* misleading "Target entity does not exist". This helper powers the sync
|
|
17
|
+
* warning that tells the author to stage the document instead.
|
|
18
|
+
*
|
|
19
|
+
* Best effort by design: any git or filesystem failure yields no matches so
|
|
20
|
+
* the diagnostic can never break a sync run.
|
|
21
|
+
*/
|
|
22
|
+
export declare function findUntrackedDocumentMatches(workspaceRoot: string, missingIds: readonly string[], deps?: Partial<UntrackedTargetsDeps>): Map<string, string>;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=untracked-targets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"untracked-targets.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/untracked-targets.ts"],"names":[],"mappings":"AAsBA,UAAU,oBAAoB;IAC5B,YAAY,EAAE,CACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAC5D,MAAM,CAAC;IACZ,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;CAC1D;AAQD;;;;;;;;;;;GAWG;AAEH,wBAAgB,4BAA4B,CAC1C,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,IAAI,GAAE,OAAO,CAAC,oBAAoB,CAAM,GACvC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAiDrB"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Kibi — repo-local, per-branch, queryable long-term memory for software projects
|
|
3
|
+
Copyright (C) 2026 Piotr Franczyk
|
|
4
|
+
|
|
5
|
+
This program is free software: you can redistribute it and/or modify
|
|
6
|
+
it under the terms of the GNU Affero General Public License as published by
|
|
7
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
8
|
+
(at your option) any later version.
|
|
9
|
+
|
|
10
|
+
This program is distributed in the hope that it will be useful,
|
|
11
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
GNU Affero General Public License for more details.
|
|
14
|
+
|
|
15
|
+
You should have received a copy of the GNU Affero General Public License
|
|
16
|
+
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
+
*/
|
|
18
|
+
import { execFileSync } from "node:child_process";
|
|
19
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
20
|
+
import * as path from "node:path";
|
|
21
|
+
const defaultDeps = {
|
|
22
|
+
execFileSync: (file, args, options) => execFileSync(file, args, options),
|
|
23
|
+
existsSync,
|
|
24
|
+
readFileSync,
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Match missing relationship-target ids against untracked `.kb` documents.
|
|
28
|
+
*
|
|
29
|
+
* Sync discovery intentionally enumerates only git-tracked (or
|
|
30
|
+
* pending-receipt) documents, so a freshly authored but unstaged `.kb` doc is
|
|
31
|
+
* invisible to sync while relationships that reference it fail with a
|
|
32
|
+
* misleading "Target entity does not exist". This helper powers the sync
|
|
33
|
+
* warning that tells the author to stage the document instead.
|
|
34
|
+
*
|
|
35
|
+
* Best effort by design: any git or filesystem failure yields no matches so
|
|
36
|
+
* the diagnostic can never break a sync run.
|
|
37
|
+
*/
|
|
38
|
+
// implements REQ-core-persistence
|
|
39
|
+
export function findUntrackedDocumentMatches(workspaceRoot, missingIds, deps = {}) {
|
|
40
|
+
const resolved = { ...defaultDeps, ...deps };
|
|
41
|
+
const matches = new Map();
|
|
42
|
+
if (missingIds.length === 0)
|
|
43
|
+
return matches;
|
|
44
|
+
let untracked;
|
|
45
|
+
try {
|
|
46
|
+
const output = resolved.execFileSync("git", [
|
|
47
|
+
"-C",
|
|
48
|
+
workspaceRoot,
|
|
49
|
+
"ls-files",
|
|
50
|
+
"--others",
|
|
51
|
+
"--exclude-standard",
|
|
52
|
+
"-z",
|
|
53
|
+
"--",
|
|
54
|
+
".kb",
|
|
55
|
+
], { encoding: "utf8", maxBuffer: 16 * 1024 * 1024, stdio: "pipe" });
|
|
56
|
+
untracked = output.split("\0").filter(Boolean);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return matches;
|
|
60
|
+
}
|
|
61
|
+
const remaining = new Set(missingIds);
|
|
62
|
+
for (const relative of untracked) {
|
|
63
|
+
if (remaining.size === 0)
|
|
64
|
+
break;
|
|
65
|
+
if (!relative.endsWith(".md"))
|
|
66
|
+
continue;
|
|
67
|
+
const absolute = path.resolve(workspaceRoot, relative.replaceAll("\\", "/"));
|
|
68
|
+
if (!resolved.existsSync(absolute))
|
|
69
|
+
continue;
|
|
70
|
+
let content;
|
|
71
|
+
try {
|
|
72
|
+
content = resolved.readFileSync(absolute, "utf8");
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
const id = frontmatterId(content);
|
|
78
|
+
if (id !== null && remaining.has(id)) {
|
|
79
|
+
const workspaceRelative = path
|
|
80
|
+
.relative(workspaceRoot, absolute)
|
|
81
|
+
.replaceAll("\\", "/");
|
|
82
|
+
matches.set(id, workspaceRelative);
|
|
83
|
+
remaining.delete(id);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return matches;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Extract `id:` from a markdown document's YAML frontmatter (the first
|
|
90
|
+
* `---` block). Documents whose id never appears in the frontmatter region
|
|
91
|
+
* are not entity candidates.
|
|
92
|
+
*/
|
|
93
|
+
function frontmatterId(content) {
|
|
94
|
+
const lines = content.match(/[^\n]*\n|[^\n]+$/g) ?? [];
|
|
95
|
+
if (lines[0]?.trim() !== "---")
|
|
96
|
+
return null;
|
|
97
|
+
for (let index = 1; index < lines.length && index < 64; index++) {
|
|
98
|
+
const line = lines[index] ?? "";
|
|
99
|
+
if (line.trim() === "---")
|
|
100
|
+
return null;
|
|
101
|
+
const match = line.match(/^id:\s*(?:"([^"]+)"|'([^']+)'|(\S+))/);
|
|
102
|
+
if (match) {
|
|
103
|
+
const id = (match[1] ?? match[2] ?? match[3])?.trim();
|
|
104
|
+
return id && id.length > 0 ? id : null;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return null;
|
|
108
|
+
}
|