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
|
@@ -22,12 +22,25 @@ export type SyncCache = {
|
|
|
22
22
|
semanticHashes: Record<string, string>;
|
|
23
23
|
semanticContracts: Record<string, boolean>;
|
|
24
24
|
};
|
|
25
|
-
|
|
25
|
+
/**
|
|
26
|
+
* v2: cache identities are workspace-root relative instead of process-cwd
|
|
27
|
+
* relative, and symbol manifests are fingerprinted together with their
|
|
28
|
+
* generated coordinate artifact so artifact-only changes are never mistaken
|
|
29
|
+
* for no-ops.
|
|
30
|
+
*/
|
|
31
|
+
export declare const SYNC_CACHE_VERSION = 2;
|
|
26
32
|
export declare const SYNC_CACHE_TTL_MS: number;
|
|
27
|
-
export declare function toCacheKey(filePath: string): string;
|
|
28
|
-
export declare function hashFile(filePath: string, deps?: Partial<SyncCacheDeps>): string;
|
|
33
|
+
export declare function toCacheKey(workspaceRoot: string, filePath: string): string;
|
|
34
|
+
export declare function hashFile(workspaceRoot: string, filePath: string, deps?: Partial<SyncCacheDeps>): string;
|
|
29
35
|
/** Deterministically hash a JSON-compatible compiler payload. */
|
|
30
36
|
export declare function hashNormalized(value: unknown): string;
|
|
37
|
+
/**
|
|
38
|
+
* Composite fingerprint for a symbol manifest and its generated coordinate
|
|
39
|
+
* artifact. The artifact is a compiler dependency of the manifest, so its
|
|
40
|
+
* existence, emptiness, content, and deletion must all change the effective
|
|
41
|
+
* source hash even though the authored YAML bytes stay identical.
|
|
42
|
+
*/
|
|
43
|
+
export declare function hashManifestWithCoordinates(workspaceRoot: string, manifestPath: string, coordinatesPath: string | null, deps?: Partial<SyncCacheDeps>): string;
|
|
31
44
|
export declare function readSyncCache(cachePath: string, deps?: Partial<SyncCacheDeps>): SyncCache;
|
|
32
45
|
export declare function writeSyncCache(cachePath: string, cache: SyncCache, deps?: Partial<SyncCacheDeps>): void;
|
|
33
46
|
export declare function copySyncCache(livePath: string, stagingPath: string, deps?: Partial<SyncCacheDeps>): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/cache.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/cache.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAI7E,UAAU,aAAa;IACrB,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,aAAa,EAAE,OAAO,aAAa,CAAC;CACrC;AAaD,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,sEAAsE;IACtE,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,iEAAiE;IACjE,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3C,kEAAkE;IAClE,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,iBAAiB,QAA2B,CAAC;AAE1D,wBAAgB,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM1E;AAED,wBAAgB,QAAQ,CAEtB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAC5B,MAAM,CAIR;AAED,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAerD;AAED;;;;;GAKG;AAEH,wBAAgB,2BAA2B,CACzC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,GAAG,IAAI,EAC9B,IAAI,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAC5B,MAAM,CA4FR;AAED,wBAAgB,aAAa,CAE3B,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAC5B,SAAS,CAuDX;AAED,wBAAgB,cAAc,CAE5B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,SAAS,EAChB,IAAI,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAC5B,IAAI,CAaN;AAED,wBAAgB,aAAa,CAE3B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAC5B,IAAI,CASN"}
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
import { createHash } from "node:crypto";
|
|
19
19
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
20
20
|
import * as path from "node:path";
|
|
21
|
+
import { load as parseYAML } from "js-yaml";
|
|
21
22
|
function resolveDeps(overrides) {
|
|
22
23
|
return {
|
|
23
24
|
createHash,
|
|
@@ -28,14 +29,24 @@ function resolveDeps(overrides) {
|
|
|
28
29
|
...overrides,
|
|
29
30
|
};
|
|
30
31
|
}
|
|
31
|
-
|
|
32
|
+
/**
|
|
33
|
+
* v2: cache identities are workspace-root relative instead of process-cwd
|
|
34
|
+
* relative, and symbol manifests are fingerprinted together with their
|
|
35
|
+
* generated coordinate artifact so artifact-only changes are never mistaken
|
|
36
|
+
* for no-ops.
|
|
37
|
+
*/
|
|
38
|
+
export const SYNC_CACHE_VERSION = 2;
|
|
32
39
|
export const SYNC_CACHE_TTL_MS = 30 * 24 * 60 * 60 * 1000;
|
|
33
|
-
export function toCacheKey(filePath) {
|
|
34
|
-
|
|
40
|
+
export function toCacheKey(workspaceRoot, filePath) {
|
|
41
|
+
const root = path.resolve(workspaceRoot);
|
|
42
|
+
const target = path.isAbsolute(filePath)
|
|
43
|
+
? filePath
|
|
44
|
+
: path.resolve(root, filePath);
|
|
45
|
+
return path.relative(root, target).split(path.sep).join("/");
|
|
35
46
|
}
|
|
36
47
|
export function hashFile(
|
|
37
48
|
// implements REQ-003
|
|
38
|
-
filePath, deps) {
|
|
49
|
+
workspaceRoot, filePath, deps) {
|
|
39
50
|
const resolved = resolveDeps(deps);
|
|
40
51
|
const content = resolved.readFileSync(filePath);
|
|
41
52
|
return resolved.createHash("sha256").update(content).digest("hex");
|
|
@@ -56,6 +67,102 @@ export function hashNormalized(value) {
|
|
|
56
67
|
.update(JSON.stringify(normalize(value)))
|
|
57
68
|
.digest("hex");
|
|
58
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Composite fingerprint for a symbol manifest and its generated coordinate
|
|
72
|
+
* artifact. The artifact is a compiler dependency of the manifest, so its
|
|
73
|
+
* existence, emptiness, content, and deletion must all change the effective
|
|
74
|
+
* source hash even though the authored YAML bytes stay identical.
|
|
75
|
+
*/
|
|
76
|
+
// implements REQ-generated-coordinate-persistence
|
|
77
|
+
export function hashManifestWithCoordinates(workspaceRoot, manifestPath, coordinatesPath, deps) {
|
|
78
|
+
const resolved = resolveDeps(deps);
|
|
79
|
+
const manifestContent = resolved.readFileSync(manifestPath);
|
|
80
|
+
const manifestHash = resolved
|
|
81
|
+
.createHash("sha256")
|
|
82
|
+
.update(manifestContent)
|
|
83
|
+
.digest("hex");
|
|
84
|
+
let artifactState = "missing";
|
|
85
|
+
let artifactHash = "";
|
|
86
|
+
if (coordinatesPath !== null && resolved.existsSync(coordinatesPath)) {
|
|
87
|
+
const content = resolved.readFileSync(coordinatesPath);
|
|
88
|
+
artifactState = content.length > 0 ? "present" : "empty";
|
|
89
|
+
artifactHash = resolved.createHash("sha256").update(content).digest("hex");
|
|
90
|
+
}
|
|
91
|
+
const referencedSources = [];
|
|
92
|
+
let symbols = [];
|
|
93
|
+
try {
|
|
94
|
+
const parsed = parseYAML(manifestContent.toString());
|
|
95
|
+
if (parsed !== null &&
|
|
96
|
+
typeof parsed === "object" &&
|
|
97
|
+
!Array.isArray(parsed) &&
|
|
98
|
+
Array.isArray(parsed.symbols)) {
|
|
99
|
+
symbols = parsed.symbols;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
// Extraction owns the user-facing YAML diagnostic. Fingerprinting must
|
|
104
|
+
// still complete so malformed manifests cannot look cache-current.
|
|
105
|
+
}
|
|
106
|
+
const sourcePaths = new Set();
|
|
107
|
+
for (const value of symbols) {
|
|
108
|
+
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
const symbol = value;
|
|
112
|
+
const sourceFile = typeof symbol.sourceFile === "string"
|
|
113
|
+
? symbol.sourceFile
|
|
114
|
+
: typeof symbol.source === "string"
|
|
115
|
+
? symbol.source
|
|
116
|
+
: undefined;
|
|
117
|
+
if (sourceFile !== undefined && sourceFile.length > 0) {
|
|
118
|
+
sourcePaths.add(sourceFile);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
const root = path.resolve(workspaceRoot);
|
|
122
|
+
for (const sourceFile of [...sourcePaths].sort()) {
|
|
123
|
+
try {
|
|
124
|
+
const absolute = path.isAbsolute(sourceFile)
|
|
125
|
+
? path.resolve(sourceFile)
|
|
126
|
+
: path.resolve(root, sourceFile);
|
|
127
|
+
const relative = path.relative(root, absolute);
|
|
128
|
+
if (relative === ".." || relative.startsWith(`..${path.sep}`)) {
|
|
129
|
+
referencedSources.push({
|
|
130
|
+
path: sourceFile,
|
|
131
|
+
state: "outside-workspace",
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
else if (!resolved.existsSync(absolute)) {
|
|
135
|
+
referencedSources.push({ path: sourceFile, state: "missing" });
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
try {
|
|
139
|
+
referencedSources.push({
|
|
140
|
+
path: sourceFile,
|
|
141
|
+
state: "present",
|
|
142
|
+
sha256: resolved
|
|
143
|
+
.createHash("sha256")
|
|
144
|
+
.update(resolved.readFileSync(absolute))
|
|
145
|
+
.digest("hex"),
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
referencedSources.push({ path: sourceFile, state: "unreadable" });
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
referencedSources.push({ path: sourceFile, state: "unreadable" });
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return resolved
|
|
158
|
+
.createHash("sha256")
|
|
159
|
+
.update(JSON.stringify({
|
|
160
|
+
manifest: manifestHash,
|
|
161
|
+
coordinates: { state: artifactState, sha256: artifactHash },
|
|
162
|
+
referencedSources,
|
|
163
|
+
}))
|
|
164
|
+
.digest("hex");
|
|
165
|
+
}
|
|
59
166
|
export function readSyncCache(
|
|
60
167
|
// implements REQ-003
|
|
61
168
|
cachePath, deps) {
|
|
@@ -1,8 +1,32 @@
|
|
|
1
|
-
|
|
1
|
+
export type DiscoveryOptions = Readonly<{
|
|
2
|
+
trackedOnly?: boolean;
|
|
3
|
+
recoverMissingPendingSources?: boolean;
|
|
4
|
+
/** Read-only callers must not consume receipts merely by discovering files. */
|
|
5
|
+
consumeTrackedPendingReceipts?: boolean;
|
|
6
|
+
}>;
|
|
7
|
+
/**
|
|
8
|
+
* A missing-source receipt selected for explicit recovery.
|
|
9
|
+
*
|
|
10
|
+
* The receipt path alone is not enough: another Kibi process may publish a
|
|
11
|
+
* newer receipt between discovery and the derived-store publication. The
|
|
12
|
+
* raw digest lets the recovery boundary compare-and-delete the exact receipt
|
|
13
|
+
* it observed, leaving a newer receipt available for its owner to handle.
|
|
14
|
+
*/
|
|
15
|
+
export type PendingSourceReceiptSnapshot = Readonly<{
|
|
16
|
+
receiptPath: string;
|
|
17
|
+
path: string;
|
|
18
|
+
afterHash: string;
|
|
19
|
+
rawHash: string;
|
|
20
|
+
}>;
|
|
21
|
+
export declare function isFsEnoent(error: unknown): boolean;
|
|
22
|
+
export declare function readTextOrEnoent(absolute: string): string | null;
|
|
23
|
+
export declare function unlinkOrEnoent(absolute: string): boolean;
|
|
24
|
+
export declare function clearRecoveredPendingSourceReceipts(cwd: string, receipts: readonly PendingSourceReceiptSnapshot[]): void;
|
|
2
25
|
export declare function normalizeMarkdownPath(pattern: string | undefined): string | null;
|
|
3
|
-
export declare function discoverSourceFiles(cwd: string,
|
|
26
|
+
export declare function discoverSourceFiles(cwd: string, options?: DiscoveryOptions): Promise<{
|
|
4
27
|
markdownFiles: string[];
|
|
5
28
|
manifestFiles: string[];
|
|
6
29
|
relationshipsDir: string;
|
|
30
|
+
recoveredPendingReceiptPaths: PendingSourceReceiptSnapshot[];
|
|
7
31
|
}>;
|
|
8
32
|
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/discovery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/discovery.ts"],"names":[],"mappings":"AAkCA,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,+EAA+E;IAC/E,6BAA6B,CAAC,EAAE,OAAO,CAAC;CACzC,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,MAAM,4BAA4B,GAAG,QAAQ,CAAC;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AAyFH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAOlD;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAShE;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAUxD;AAED,wBAAgB,mCAAmC,CACjD,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,SAAS,4BAA4B,EAAE,GAChD,IAAI,CA6CN;AAsBD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,MAAM,GAAG,IAAI,CAIf;AAED,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC;IACT,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,4BAA4B,EAAE,4BAA4B,EAAE,CAAC;CAC9D,CAAC,CA+FD"}
|
|
@@ -15,10 +15,157 @@
|
|
|
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 { execFile } from "node:child_process";
|
|
19
|
+
import { createHash } from "node:crypto";
|
|
20
|
+
import * as fs from "node:fs";
|
|
21
|
+
import { existsSync, readFileSync, readdirSync, unlinkSync } from "node:fs";
|
|
18
22
|
import * as path from "node:path";
|
|
23
|
+
import { promisify } from "node:util";
|
|
19
24
|
import fg from "fast-glob";
|
|
20
25
|
import { getRelationshipsDir } from "../../extractors/relationships.js";
|
|
26
|
+
import { CANONICAL_ENTITY_PATHS, isSymbolsManifestPath, } from "../../utils/kb-paths.js";
|
|
21
27
|
const MARKDOWN_DISCOVERY_IGNORE = ["**/README.md"];
|
|
28
|
+
const execFileAsync = promisify(execFile);
|
|
29
|
+
async function gitTrackedPaths(cwd) {
|
|
30
|
+
const result = await execFileAsync("git", ["-C", cwd, "ls-files", "--cached", "-z", "--"], { encoding: "buffer", maxBuffer: 64 * 1024 * 1024 });
|
|
31
|
+
return new Set(result.stdout
|
|
32
|
+
.toString("utf8")
|
|
33
|
+
.split("\0")
|
|
34
|
+
.filter(Boolean)
|
|
35
|
+
.map((value) => value.replaceAll("\\", "/")));
|
|
36
|
+
}
|
|
37
|
+
function pendingSourcePaths(cwd, recoverMissing) {
|
|
38
|
+
const root = path.join(cwd, ".kb", "recovery", "pending-sources");
|
|
39
|
+
if (!existsSync(root)) {
|
|
40
|
+
return { paths: new Map(), recoveredReceipts: [] };
|
|
41
|
+
}
|
|
42
|
+
const paths = new Map();
|
|
43
|
+
const recoveredReceipts = [];
|
|
44
|
+
for (const name of readdirSync(root)) {
|
|
45
|
+
if (!name.endsWith(".json"))
|
|
46
|
+
continue;
|
|
47
|
+
const receiptPath = path.join(root, name);
|
|
48
|
+
try {
|
|
49
|
+
const raw = readFileSync(receiptPath, "utf8");
|
|
50
|
+
const receipt = JSON.parse(raw);
|
|
51
|
+
if (typeof receipt.path === "string" &&
|
|
52
|
+
receipt.path.length > 0 &&
|
|
53
|
+
typeof receipt.afterHash === "string" &&
|
|
54
|
+
/^[a-f0-9]{64}$/i.test(receipt.afterHash)) {
|
|
55
|
+
const relative = receipt.path.replaceAll("\\", "/");
|
|
56
|
+
const absolute = path.resolve(cwd, relative);
|
|
57
|
+
if (!absolute.startsWith(`${path.resolve(cwd)}${path.sep}`)) {
|
|
58
|
+
throw new Error(`Pending source receipt escapes workspace: ${relative}`);
|
|
59
|
+
}
|
|
60
|
+
if (!existsSync(absolute)) {
|
|
61
|
+
if (recoverMissing) {
|
|
62
|
+
recoveredReceipts.push({
|
|
63
|
+
receiptPath,
|
|
64
|
+
path: relative,
|
|
65
|
+
afterHash: receipt.afterHash,
|
|
66
|
+
rawHash: createHash("sha256").update(raw).digest("hex"),
|
|
67
|
+
});
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
throw new Error(`Pending source is missing: ${relative}`);
|
|
71
|
+
}
|
|
72
|
+
const actual = createHash("sha256")
|
|
73
|
+
.update(readFileSync(absolute))
|
|
74
|
+
.digest("hex");
|
|
75
|
+
if (actual !== receipt.afterHash) {
|
|
76
|
+
throw new Error(`Pending source hash drift blocks sync for ${relative}; expected ${receipt.afterHash}, found ${actual}`);
|
|
77
|
+
}
|
|
78
|
+
paths.set(relative, receipt.afterHash);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
if (error instanceof Error &&
|
|
83
|
+
(/Pending source/.test(error.message) ||
|
|
84
|
+
/Pending source receipt/.test(error.message))) {
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
87
|
+
// Malformed receipts are ignored; an operator can remove or repair the
|
|
88
|
+
// receipt through the normal recovery operation.
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return { paths, recoveredReceipts };
|
|
92
|
+
}
|
|
93
|
+
export function isFsEnoent(error) {
|
|
94
|
+
return (error !== null &&
|
|
95
|
+
typeof error === "object" &&
|
|
96
|
+
"code" in error &&
|
|
97
|
+
error.code === "ENOENT");
|
|
98
|
+
}
|
|
99
|
+
export function readTextOrEnoent(absolute) {
|
|
100
|
+
try {
|
|
101
|
+
return fs.readFileSync(absolute, "utf8");
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
if (isFsEnoent(error))
|
|
105
|
+
return null;
|
|
106
|
+
throw new Error(`Failed to inspect pending source receipt for ${absolute}: ${error instanceof Error ? error.message : String(error)}`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
export function unlinkOrEnoent(absolute) {
|
|
110
|
+
try {
|
|
111
|
+
fs.unlinkSync(absolute);
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
if (isFsEnoent(error))
|
|
116
|
+
return false;
|
|
117
|
+
throw new Error(`Failed to retire pending source receipt for ${absolute}: ${error instanceof Error ? error.message : String(error)}`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
export function clearRecoveredPendingSourceReceipts(cwd, receipts) {
|
|
121
|
+
const root = path.resolve(cwd, ".kb", "recovery", "pending-sources");
|
|
122
|
+
for (const receipt of receipts) {
|
|
123
|
+
const absolute = path.resolve(receipt.receiptPath);
|
|
124
|
+
if (!absolute.startsWith(`${root}${path.sep}`)) {
|
|
125
|
+
throw new Error(`Pending source receipt escapes recovery root: ${absolute}`);
|
|
126
|
+
}
|
|
127
|
+
if (!existsSync(absolute))
|
|
128
|
+
continue;
|
|
129
|
+
// Compare-and-delete: a receipt may have been replaced while the
|
|
130
|
+
// recovery rebuild was running. Never remove the replacement merely
|
|
131
|
+
// because it has the same receipt filename. Failing closed here is
|
|
132
|
+
// important: publication may have completed, but recovery must not claim
|
|
133
|
+
// that pending intent was retired when a newer intent remains.
|
|
134
|
+
const raw = readTextOrEnoent(absolute);
|
|
135
|
+
if (raw === null)
|
|
136
|
+
continue;
|
|
137
|
+
const rawHash = createHash("sha256").update(raw).digest("hex");
|
|
138
|
+
if (rawHash !== receipt.rawHash) {
|
|
139
|
+
throw new Error(`Pending source receipt changed during recovery for ${receipt.path}; refusing to retire newer receipt`);
|
|
140
|
+
}
|
|
141
|
+
let current;
|
|
142
|
+
try {
|
|
143
|
+
current = JSON.parse(raw);
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
throw new Error(`Pending source receipt changed during recovery for ${receipt.path}; refusing to retire newer receipt`);
|
|
147
|
+
}
|
|
148
|
+
if (current.path !== receipt.path ||
|
|
149
|
+
current.afterHash !== receipt.afterHash) {
|
|
150
|
+
throw new Error(`Pending source receipt changed during recovery for ${receipt.path}; refusing to retire newer receipt`);
|
|
151
|
+
}
|
|
152
|
+
unlinkOrEnoent(absolute);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
function filterTracked(cwd, files, tracked, pending) {
|
|
156
|
+
const retained = [];
|
|
157
|
+
for (const file of files) {
|
|
158
|
+
const relative = path.relative(cwd, file).replaceAll(path.sep, "/");
|
|
159
|
+
if (tracked.has(relative)) {
|
|
160
|
+
retained.push(file);
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
if (pending.has(relative)) {
|
|
164
|
+
retained.push(file);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return retained;
|
|
168
|
+
}
|
|
22
169
|
export function normalizeMarkdownPath(pattern) {
|
|
23
170
|
if (!pattern)
|
|
24
171
|
return null;
|
|
@@ -26,32 +173,74 @@ export function normalizeMarkdownPath(pattern) {
|
|
|
26
173
|
return pattern;
|
|
27
174
|
return `${pattern}/**/*.md`;
|
|
28
175
|
}
|
|
29
|
-
export async function discoverSourceFiles(cwd,
|
|
176
|
+
export async function discoverSourceFiles(cwd, options = {}) {
|
|
30
177
|
const markdownPatterns = [
|
|
31
|
-
normalizeMarkdownPath(
|
|
32
|
-
normalizeMarkdownPath(
|
|
33
|
-
normalizeMarkdownPath(
|
|
34
|
-
normalizeMarkdownPath(
|
|
35
|
-
normalizeMarkdownPath(
|
|
36
|
-
normalizeMarkdownPath(
|
|
37
|
-
normalizeMarkdownPath(
|
|
178
|
+
normalizeMarkdownPath(CANONICAL_ENTITY_PATHS.requirements),
|
|
179
|
+
normalizeMarkdownPath(CANONICAL_ENTITY_PATHS.scenarios),
|
|
180
|
+
normalizeMarkdownPath(CANONICAL_ENTITY_PATHS.tests),
|
|
181
|
+
normalizeMarkdownPath(CANONICAL_ENTITY_PATHS.adr),
|
|
182
|
+
normalizeMarkdownPath(CANONICAL_ENTITY_PATHS.flags),
|
|
183
|
+
normalizeMarkdownPath(CANONICAL_ENTITY_PATHS.events),
|
|
184
|
+
normalizeMarkdownPath(CANONICAL_ENTITY_PATHS.facts),
|
|
38
185
|
].filter((p) => Boolean(p));
|
|
39
186
|
const markdownFiles = await fg(markdownPatterns, {
|
|
40
187
|
cwd,
|
|
41
188
|
absolute: true,
|
|
42
189
|
ignore: [...MARKDOWN_DISCOVERY_IGNORE],
|
|
43
190
|
});
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
191
|
+
let entityMarkdownFiles = (Array.isArray(markdownFiles) ? markdownFiles : []).filter((file) => !file.endsWith("/README.md"));
|
|
192
|
+
let manifestFiles = await fg(CANONICAL_ENTITY_PATHS.symbols, {
|
|
193
|
+
cwd,
|
|
194
|
+
absolute: true,
|
|
195
|
+
});
|
|
196
|
+
if (!Array.isArray(manifestFiles)) {
|
|
197
|
+
manifestFiles = [];
|
|
198
|
+
}
|
|
199
|
+
const recoveredPendingReceiptPaths = [];
|
|
200
|
+
if (options.trackedOnly) {
|
|
201
|
+
const tracked = await gitTrackedPaths(cwd);
|
|
202
|
+
const pending = pendingSourcePaths(cwd, options.recoverMissingPendingSources === true);
|
|
203
|
+
recoveredPendingReceiptPaths.push(...pending.recoveredReceipts);
|
|
204
|
+
entityMarkdownFiles = filterTracked(cwd, entityMarkdownFiles, tracked, new Set(pending.paths.keys()));
|
|
205
|
+
manifestFiles = filterTracked(cwd, manifestFiles, tracked, new Set(pending.paths.keys()));
|
|
206
|
+
for (const relative of pending.paths.keys()) {
|
|
207
|
+
const absolute = path.resolve(cwd, relative);
|
|
208
|
+
if (!existsSync(absolute))
|
|
209
|
+
continue;
|
|
210
|
+
if (relative.endsWith(".md") && !entityMarkdownFiles.includes(absolute)) {
|
|
211
|
+
entityMarkdownFiles.push(absolute);
|
|
212
|
+
}
|
|
213
|
+
if (isSymbolsManifestPath(relative) &&
|
|
214
|
+
!manifestFiles.includes(absolute)) {
|
|
215
|
+
manifestFiles.push(absolute);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
// A pending receipt is consumed as soon as Git tracks its file. This is
|
|
219
|
+
// deliberately best-effort metadata; the source hash remains authoritative.
|
|
220
|
+
const pendingRoot = path.join(cwd, ".kb", "recovery", "pending-sources");
|
|
221
|
+
if (options.consumeTrackedPendingReceipts !== false &&
|
|
222
|
+
existsSync(pendingRoot)) {
|
|
223
|
+
for (const name of readdirSync(pendingRoot)) {
|
|
224
|
+
if (!name.endsWith(".json"))
|
|
225
|
+
continue;
|
|
226
|
+
try {
|
|
227
|
+
const receipt = JSON.parse(readFileSync(path.join(pendingRoot, name), "utf8"));
|
|
228
|
+
if (typeof receipt.path === "string" &&
|
|
229
|
+
tracked.has(receipt.path.replaceAll("\\", "/"))) {
|
|
230
|
+
unlinkSync(path.join(pendingRoot, name));
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
catch {
|
|
234
|
+
// Leave malformed receipts for explicit recovery diagnostics.
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
51
239
|
const relationshipsDir = getRelationshipsDir(path.join(cwd, ".kb"));
|
|
52
240
|
return {
|
|
53
241
|
markdownFiles: entityMarkdownFiles,
|
|
54
242
|
manifestFiles,
|
|
55
243
|
relationshipsDir,
|
|
244
|
+
recoveredPendingReceiptPaths,
|
|
56
245
|
};
|
|
57
246
|
}
|
|
@@ -7,10 +7,17 @@ export interface ExtractionOutput {
|
|
|
7
7
|
message: string;
|
|
8
8
|
}[];
|
|
9
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* Authored source identities are workspace-relative POSIX paths. Code symbol
|
|
12
|
+
* coordinates remain a separate `sourceFile` field, but use the same stable
|
|
13
|
+
* relative identity so branch-local snapshots do not embed host-specific
|
|
14
|
+
* absolute paths.
|
|
15
|
+
*/
|
|
16
|
+
export declare function normalizeExtractionSources(results: readonly ExtractionResult[], workspaceRoot: string): ExtractionResult[];
|
|
10
17
|
interface ExtractionDependencies {
|
|
11
18
|
extractFromMarkdown: (file: string) => ExtractionResult;
|
|
12
19
|
extractFromManifest: (file: string) => ExtractionResult[];
|
|
13
20
|
}
|
|
14
|
-
export declare function processExtractions(changedMarkdownFiles: string[], changedManifestFiles: string[], validateOnly: boolean, dependencies?: ExtractionDependencies): Promise<ExtractionOutput>;
|
|
21
|
+
export declare function processExtractions(changedMarkdownFiles: string[], changedManifestFiles: string[], validateOnly: boolean, workspaceRoot?: string, dependencies?: ExtractionDependencies): Promise<ExtractionOutput>;
|
|
15
22
|
export {};
|
|
16
23
|
//# sourceMappingURL=extraction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extraction.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/extraction.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"extraction.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/extraction.ts"],"names":[],"mappings":"AAuBA,OAAO,EACL,KAAK,gBAAgB,EAGtB,MAAM,8BAA8B,CAAC;AAGtC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC7C;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,SAAS,gBAAgB,EAAE,EACpC,aAAa,EAAE,MAAM,GACpB,gBAAgB,EAAE,CAoBpB;AAED,UAAU,sBAAsB;IAC9B,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,gBAAgB,CAAC;IACxD,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,gBAAgB,EAAE,CAAC;CAC3D;AAOD,wBAAsB,kBAAkB,CAEtC,oBAAoB,EAAE,MAAM,EAAE,EAC9B,oBAAoB,EAAE,MAAM,EAAE,EAC9B,YAAY,EAAE,OAAO,EACrB,aAAa,SAAgB,EAC7B,YAAY,GAAE,sBAAwD,GACrE,OAAO,CAAC,gBAAgB,CAAC,CAmD3B"}
|
|
@@ -15,16 +15,45 @@
|
|
|
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
|
|
18
|
+
import * as path from "node:path";
|
|
19
|
+
import { ManifestError, extractFromManifest, } from "../../extractors/manifest.js";
|
|
19
20
|
import { FrontmatterError, extractFromMarkdown, } from "../../extractors/markdown.js";
|
|
20
21
|
import { toCacheKey } from "./cache.js";
|
|
22
|
+
/**
|
|
23
|
+
* Authored source identities are workspace-relative POSIX paths. Code symbol
|
|
24
|
+
* coordinates remain a separate `sourceFile` field, but use the same stable
|
|
25
|
+
* relative identity so branch-local snapshots do not embed host-specific
|
|
26
|
+
* absolute paths.
|
|
27
|
+
*/
|
|
28
|
+
export function normalizeExtractionSources(results, workspaceRoot) {
|
|
29
|
+
const root = path.resolve(workspaceRoot);
|
|
30
|
+
const normalize = (value) => {
|
|
31
|
+
if (/^[A-Za-z][A-Za-z0-9+.-]*:\/\//.test(value))
|
|
32
|
+
return value;
|
|
33
|
+
const absolute = path.isAbsolute(value) ? path.resolve(value) : undefined;
|
|
34
|
+
if (absolute?.startsWith(`${root}${path.sep}`)) {
|
|
35
|
+
return path.relative(root, absolute).replaceAll(path.sep, "/");
|
|
36
|
+
}
|
|
37
|
+
return value.replaceAll("\\", "/");
|
|
38
|
+
};
|
|
39
|
+
return results.map((result) => ({
|
|
40
|
+
...result,
|
|
41
|
+
entity: {
|
|
42
|
+
...result.entity,
|
|
43
|
+
source: normalize(result.entity.source),
|
|
44
|
+
},
|
|
45
|
+
...(result.sourceFile !== undefined
|
|
46
|
+
? { sourceFile: normalize(result.sourceFile) }
|
|
47
|
+
: {}),
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
21
50
|
const DEFAULT_EXTRACTION_DEPENDENCIES = {
|
|
22
51
|
extractFromMarkdown,
|
|
23
52
|
extractFromManifest,
|
|
24
53
|
};
|
|
25
54
|
export async function processExtractions(
|
|
26
55
|
// implements REQ-003
|
|
27
|
-
changedMarkdownFiles, changedManifestFiles, validateOnly, dependencies = DEFAULT_EXTRACTION_DEPENDENCIES) {
|
|
56
|
+
changedMarkdownFiles, changedManifestFiles, validateOnly, workspaceRoot = process.cwd(), dependencies = DEFAULT_EXTRACTION_DEPENDENCIES) {
|
|
28
57
|
const results = [];
|
|
29
58
|
const failedCacheKeys = new Set();
|
|
30
59
|
const errors = [];
|
|
@@ -45,7 +74,7 @@ changedMarkdownFiles, changedManifestFiles, validateOnly, dependencies = DEFAULT
|
|
|
45
74
|
else {
|
|
46
75
|
console.warn(`Warning: Failed to extract from ${file}: ${message}`);
|
|
47
76
|
}
|
|
48
|
-
failedCacheKeys.add(toCacheKey(file));
|
|
77
|
+
failedCacheKeys.add(toCacheKey(workspaceRoot, file));
|
|
49
78
|
}
|
|
50
79
|
}
|
|
51
80
|
for (const file of changedManifestFiles) {
|
|
@@ -55,13 +84,18 @@ changedMarkdownFiles, changedManifestFiles, validateOnly, dependencies = DEFAULT
|
|
|
55
84
|
}
|
|
56
85
|
catch (error) {
|
|
57
86
|
const message = error instanceof Error ? error.message : String(error);
|
|
87
|
+
if (error instanceof ManifestError &&
|
|
88
|
+
error.classification === "coordinate-artifact" &&
|
|
89
|
+
!validateOnly) {
|
|
90
|
+
throw error;
|
|
91
|
+
}
|
|
58
92
|
if (validateOnly) {
|
|
59
93
|
errors.push({ file, message });
|
|
60
94
|
}
|
|
61
95
|
else {
|
|
62
96
|
console.warn(`Warning: Failed to extract from ${file}: ${message}`);
|
|
63
97
|
}
|
|
64
|
-
failedCacheKeys.add(toCacheKey(file));
|
|
98
|
+
failedCacheKeys.add(toCacheKey(workspaceRoot, file));
|
|
65
99
|
}
|
|
66
100
|
}
|
|
67
101
|
return { results, failedCacheKeys, errors };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
1
|
+
import { existsSync, readFileSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { dump as dumpYAML, load as parseYAML } from "js-yaml";
|
|
3
3
|
import { writeCoordinateArtifact } from "../../extractors/symbol-coordinates.js";
|
|
4
4
|
import { type ManifestSymbolEntry, enrichSymbolCoordinates } from "../../extractors/symbols-coordinator.js";
|
|
@@ -10,19 +10,22 @@ interface ManifestDeps {
|
|
|
10
10
|
existsSync: typeof existsSync;
|
|
11
11
|
parseYAML: typeof parseYAML;
|
|
12
12
|
readFileSync: typeof readFileSync;
|
|
13
|
+
renameSync: typeof renameSync;
|
|
14
|
+
unlinkSync: typeof unlinkSync;
|
|
13
15
|
writeFileSync: typeof writeFileSync;
|
|
14
16
|
writeCoordinateArtifact: typeof writeCoordinateArtifact;
|
|
15
17
|
resolveSymbolsManifestPaths: typeof resolveSymbolsManifestPaths;
|
|
16
18
|
}
|
|
17
|
-
export declare const SYMBOLS_MANIFEST_COMMENT_BLOCK
|
|
19
|
+
export declare const SYMBOLS_MANIFEST_COMMENT_BLOCK: string;
|
|
18
20
|
/**
|
|
19
|
-
* Coarse symbol anchors for which per-
|
|
21
|
+
* Coarse symbol anchors for which AST per-declaration coordinates are not
|
|
22
|
+
* expected.
|
|
20
23
|
*
|
|
21
24
|
* Test-suite, module-level-behavior, and config-artifact symbols represent a
|
|
22
25
|
* whole file or configuration unit, and `extractor-miss` explicitly documents
|
|
23
|
-
* that the extractor cannot locate a declaration.
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
+
* that the extractor cannot locate a declaration. Refresh still counts those
|
|
27
|
+
* entries as unchanged instead of failures, but it persists title-match or
|
|
28
|
+
* whole-file coordinates so proof-bearing executable symbols can resolve.
|
|
26
29
|
*/
|
|
27
30
|
export { COARSE_GRANULARITY_REASONS };
|
|
28
31
|
export declare function isCoarseGranularityAnchor(entry: ManifestSymbolEntry): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/manifest.ts"],"names":[],"mappings":"AAkBA,OAAO,
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/manifest.ts"],"names":[],"mappings":"AAkBA,OAAO,EACL,UAAU,EACV,YAAY,EACZ,UAAU,EACV,UAAU,EACV,aAAa,EACd,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAML,uBAAuB,EACxB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,KAAK,mBAAmB,EACxB,uBAAuB,EACxB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,0BAA0B,EAG3B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,UAAU,YAAY;IACpB,QAAQ,EAAE,OAAO,QAAQ,CAAC;IAC1B,uBAAuB,EAAE,OAAO,uBAAuB,CAAC;IACxD,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,aAAa,EAAE,OAAO,aAAa,CAAC;IACpC,uBAAuB,EAAE,OAAO,uBAAuB,CAAC;IACxD,2BAA2B,EAAE,OAAO,2BAA2B,CAAC;CACjE;AAkBD,eAAO,MAAM,8BAA8B,QAc1C,CAAC;AAaF;;;;;;;;;GASG;AACH,OAAO,EAAE,0BAA0B,EAAE,CAAC;AAEtC,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAG7E;AAoHD,wBAAsB,0BAA0B,CAE9C,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG;IAAE,wBAAwB,CAAC,EAAE,OAAO,CAAA;CAAE,GACpE,OAAO,CAAC,IAAI,CAAC,CAqMf;AAED,wBAAgB,0BAA0B,CAExC,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAOT;AAED,wBAAgB,8BAA8B,CAE5C,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,aAAa,EAAE,MAAM,EACrB,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAC3B,OAAO,CAUT"}
|