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,14 +15,25 @@
|
|
|
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 { execSync as rawExecSync } from "node:child_process";
|
|
19
|
-
import { copyFileSync, existsSync, mkdirSync, readdirSync, statSync, } from "node:fs";
|
|
18
|
+
import { execFileSync as rawExecFileSync, execSync as rawExecSync, } from "node:child_process";
|
|
19
|
+
import { copyFileSync, existsSync, mkdirSync, readFileSync, readdirSync, statSync, } from "node:fs";
|
|
20
20
|
import * as path from "node:path";
|
|
21
21
|
import { getBranchOverride } from "../env.js";
|
|
22
|
-
|
|
22
|
+
import { branchStoreManifestMatches, branchStorePath, legacyBranchStorePath, } from "./branch-store-locator.js";
|
|
23
|
+
export function unreadableMigrationJournalError(journalName) {
|
|
24
|
+
return {
|
|
25
|
+
error: `Unreadable branch migration journal '${journalName}' blocks attachment; recover it explicitly before continuing.`,
|
|
26
|
+
code: "MIGRATION_RECOVERY_REQUIRED",
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
const defaultDeps = {
|
|
30
|
+
execSync: rawExecSync,
|
|
31
|
+
execFileSync: rawExecFileSync,
|
|
32
|
+
};
|
|
23
33
|
export function _setBranchResolverDepsForTests(deps) {
|
|
24
34
|
// implements REQ-008
|
|
25
35
|
defaultDeps.execSync = deps.execSync ?? rawExecSync;
|
|
36
|
+
defaultDeps.execFileSync = deps.execFileSync ?? rawExecFileSync;
|
|
26
37
|
}
|
|
27
38
|
// Files to exclude when copying branch snapshots (volatile artifacts)
|
|
28
39
|
const VOLATILE_ARTIFACTS = new Set([
|
|
@@ -96,9 +107,9 @@ export function resolveActiveBranch(workspaceRoot = process.cwd()) {
|
|
|
96
107
|
code: "UNKNOWN_ERROR",
|
|
97
108
|
};
|
|
98
109
|
}
|
|
99
|
-
//
|
|
100
|
-
|
|
101
|
-
return { branch
|
|
110
|
+
// Git branch names are the branch identity. Do not normalize master,
|
|
111
|
+
// main, or any other branch name: the KB is branch-local state.
|
|
112
|
+
return { branch };
|
|
102
113
|
}
|
|
103
114
|
catch (error) {
|
|
104
115
|
// Try alternative: git rev-parse --abbrev-ref HEAD
|
|
@@ -129,9 +140,7 @@ export function resolveActiveBranch(workspaceRoot = process.cwd()) {
|
|
|
129
140
|
code: "UNKNOWN_ERROR",
|
|
130
141
|
};
|
|
131
142
|
}
|
|
132
|
-
|
|
133
|
-
const normalizedBranch = branch === "master" ? "main" : branch;
|
|
134
|
-
return { branch: normalizedBranch };
|
|
143
|
+
return { branch };
|
|
135
144
|
}
|
|
136
145
|
catch {
|
|
137
146
|
// Determine specific error type
|
|
@@ -156,6 +165,71 @@ export function resolveActiveBranch(workspaceRoot = process.cwd()) {
|
|
|
156
165
|
}
|
|
157
166
|
}
|
|
158
167
|
}
|
|
168
|
+
/**
|
|
169
|
+
* Resolve the storage namespace without treating any branch as canonical.
|
|
170
|
+
* Literal branch-named stores are read-compatible legacy storage only. The
|
|
171
|
+
* active Git identity always remains the exact branch name.
|
|
172
|
+
*/
|
|
173
|
+
export function resolveBranchAttachment(workspaceRoot = process.cwd()) {
|
|
174
|
+
const active = resolveActiveBranch(workspaceRoot);
|
|
175
|
+
if ("error" in active)
|
|
176
|
+
return active;
|
|
177
|
+
const explicit = Boolean(getBranchOverride());
|
|
178
|
+
const migrationRoot = path.join(path.resolve(workspaceRoot), ".kb", "recovery", "branch-migrations");
|
|
179
|
+
if (existsSync(migrationRoot)) {
|
|
180
|
+
for (const journalName of readdirSync(migrationRoot)) {
|
|
181
|
+
if (!journalName.endsWith(".json"))
|
|
182
|
+
continue;
|
|
183
|
+
try {
|
|
184
|
+
const journal = JSON.parse(readFileSync(path.join(migrationRoot, journalName), "utf8"));
|
|
185
|
+
if (journal.state !== "committed" && journal.state !== "rolled_back") {
|
|
186
|
+
const id = journalName.slice(0, -5);
|
|
187
|
+
return {
|
|
188
|
+
error: `Incomplete branch migration journal '${id}' blocks attachment. Preview recovery with 'kibi branch migrate --recover-journal ${id}', then apply that exact recovery action.`,
|
|
189
|
+
code: "MIGRATION_RECOVERY_REQUIRED",
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
return unreadableMigrationJournalError(journalName);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
const exactPath = branchStorePath(workspaceRoot, active.branch);
|
|
199
|
+
const legacyPath = legacyBranchStorePath(workspaceRoot, active.branch);
|
|
200
|
+
if (existsSync(exactPath) && existsSync(legacyPath)) {
|
|
201
|
+
return {
|
|
202
|
+
error: `Ambiguous branch storage: both the hashed store ${exactPath} and legacy store ${legacyPath} exist for '${active.branch}'. Preview an explicit migration before continuing.`,
|
|
203
|
+
code: "AMBIGUOUS_ATTACHMENT",
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
if (existsSync(legacyPath)) {
|
|
207
|
+
return {
|
|
208
|
+
gitBranch: active.branch,
|
|
209
|
+
kbBranch: active.branch,
|
|
210
|
+
storePath: legacyPath,
|
|
211
|
+
kind: "legacy_compat",
|
|
212
|
+
migrationRequired: true,
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
// An exact hash directory is an identity fence, not merely a convenient
|
|
216
|
+
// pathname. A missing, malformed, or mismatched manifest must never be
|
|
217
|
+
// silently attached to the active Git ref.
|
|
218
|
+
if (existsSync(exactPath) &&
|
|
219
|
+
!branchStoreManifestMatches(exactPath, active.branch)) {
|
|
220
|
+
return {
|
|
221
|
+
error: `Branch store identity manifest mismatch at ${exactPath}; refusing to attach it to '${active.branch}'.`,
|
|
222
|
+
code: "AMBIGUOUS_ATTACHMENT",
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
return {
|
|
226
|
+
gitBranch: active.branch,
|
|
227
|
+
kbBranch: active.branch,
|
|
228
|
+
storePath: exactPath,
|
|
229
|
+
kind: explicit ? "explicit_override" : "exact",
|
|
230
|
+
migrationRequired: false,
|
|
231
|
+
};
|
|
232
|
+
}
|
|
159
233
|
/**
|
|
160
234
|
* Check if the repository is in detached HEAD state.
|
|
161
235
|
*
|
|
@@ -203,22 +277,44 @@ export function getBranchDiagnostic(branch, error) {
|
|
|
203
277
|
export function isValidBranchName(name) {
|
|
204
278
|
if (!name || name.length === 0 || name.length > 255)
|
|
205
279
|
return false;
|
|
280
|
+
const hasControlCharacter = [...name].some((character) => {
|
|
281
|
+
const codePoint = character.codePointAt(0) ?? 0;
|
|
282
|
+
return codePoint <= 0x20 || codePoint === 0x7f;
|
|
283
|
+
});
|
|
206
284
|
// Reject path traversal attempts
|
|
207
285
|
if (name.includes("..") || path.isAbsolute(name) || name.startsWith("/")) {
|
|
208
286
|
return false;
|
|
209
287
|
}
|
|
210
|
-
// Only allow safe characters
|
|
211
|
-
if (!/^[a-zA-Z0-9._\-/+]+$/.test(name))
|
|
212
|
-
return false;
|
|
213
288
|
// Reject problematic patterns
|
|
214
289
|
if (name.includes("//") ||
|
|
215
290
|
name.endsWith("/") ||
|
|
216
291
|
name.endsWith(".") ||
|
|
217
292
|
name.includes("\\") ||
|
|
218
|
-
name.startsWith("-")
|
|
293
|
+
name.startsWith("-") ||
|
|
294
|
+
name.includes("@{") ||
|
|
295
|
+
name.includes("..") ||
|
|
296
|
+
hasControlCharacter ||
|
|
297
|
+
/[~^:?*\[\]]/.test(name)) {
|
|
298
|
+
return false;
|
|
299
|
+
}
|
|
300
|
+
// Git rejects a ref component that starts with a dot or ends in `.lock`.
|
|
301
|
+
// Keep this check local (rather than shelling out for every validation) so
|
|
302
|
+
// env/config validation remains deterministic while matching the relevant
|
|
303
|
+
// `git check-ref-format --branch` rules.
|
|
304
|
+
const components = name.split("/");
|
|
305
|
+
if (components.some((component) => component.startsWith(".") || component.endsWith(".lock"))) {
|
|
306
|
+
return false;
|
|
307
|
+
}
|
|
308
|
+
try {
|
|
309
|
+
defaultDeps.execFileSync("git", ["check-ref-format", "--branch", name], {
|
|
310
|
+
stdio: ["ignore", "ignore", "ignore"],
|
|
311
|
+
timeout: 5000,
|
|
312
|
+
});
|
|
313
|
+
return true;
|
|
314
|
+
}
|
|
315
|
+
catch {
|
|
219
316
|
return false;
|
|
220
317
|
}
|
|
221
|
-
return true;
|
|
222
318
|
}
|
|
223
319
|
/**
|
|
224
320
|
* Copy a clean snapshot from source branch to target branch, excluding
|
|
@@ -275,37 +371,25 @@ export function getVolatileArtifactPatterns() {
|
|
|
275
371
|
];
|
|
276
372
|
}
|
|
277
373
|
/**
|
|
278
|
-
* @deprecated
|
|
279
|
-
*
|
|
280
|
-
*
|
|
374
|
+
* @deprecated Branch lifecycle follows Git naturally. This helper remains for
|
|
375
|
+
* callers that need informational remote-default discovery, but it never
|
|
376
|
+
* invents a `main` branch.
|
|
281
377
|
*
|
|
282
|
-
* Resolve
|
|
283
|
-
*
|
|
284
|
-
*
|
|
285
|
-
* 3. Fallback to "main"
|
|
378
|
+
* Resolve a remote default branch for informational display only. It must not
|
|
379
|
+
* be used to attach a KB or initialize a branch. Legacy migration callers must
|
|
380
|
+
* supply explicit old and new identities.
|
|
286
381
|
*
|
|
287
382
|
* Unlike resolveActiveBranch, this does NOT normalize branch names.
|
|
288
383
|
* Configured names are returned verbatim.
|
|
289
384
|
*
|
|
290
385
|
* @param cwd - The working directory to resolve the default branch
|
|
291
|
-
* @param
|
|
386
|
+
* @param _config - Retained for source compatibility; ignored.
|
|
292
387
|
* @returns BranchResolutionResult with either the branch name or an error
|
|
293
388
|
*/
|
|
294
|
-
export function resolveDefaultBranch(cwd = process.cwd(),
|
|
389
|
+
export function resolveDefaultBranch(cwd = process.cwd(), _config) {
|
|
295
390
|
// implements REQ-012
|
|
296
|
-
//
|
|
297
|
-
|
|
298
|
-
if (configuredBranch) {
|
|
299
|
-
if (!isValidBranchName(configuredBranch)) {
|
|
300
|
-
return {
|
|
301
|
-
error: `Invalid defaultBranch configured in .kb/config.json: '${configuredBranch}'`,
|
|
302
|
-
code: "INVALID_CONFIG",
|
|
303
|
-
};
|
|
304
|
-
}
|
|
305
|
-
// Return configured branch verbatim (no normalization)
|
|
306
|
-
return { branch: configuredBranch };
|
|
307
|
-
}
|
|
308
|
-
// 2. Try to get the remote default branch from origin/HEAD
|
|
391
|
+
// Try to get the remote default branch from origin/HEAD. This is only
|
|
392
|
+
// informational; attachment always follows the active Git branch.
|
|
309
393
|
try {
|
|
310
394
|
const remoteHead = defaultDeps
|
|
311
395
|
.execSync("git symbolic-ref refs/remotes/origin/HEAD", {
|
|
@@ -327,6 +411,8 @@ export function resolveDefaultBranch(cwd = process.cwd(), config) {
|
|
|
327
411
|
catch {
|
|
328
412
|
// origin/HEAD doesn't exist or command failed, fall through to fallback
|
|
329
413
|
}
|
|
330
|
-
|
|
331
|
-
|
|
414
|
+
return {
|
|
415
|
+
error: "No remote default branch is configured; provide explicit migration identities.",
|
|
416
|
+
code: "NO_DEFAULT_BRANCH",
|
|
417
|
+
};
|
|
332
418
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The compiled branch store is keyed by the exact Git ref rather than by a
|
|
3
|
+
* path derived from that ref. This keeps names such as `feature/auth` flat and
|
|
4
|
+
* makes the store safe to enumerate and garbage collect.
|
|
5
|
+
*/
|
|
6
|
+
export declare const BRANCH_STORE_MANIFEST_VERSION: 1;
|
|
7
|
+
export type BranchStoreManifest = Readonly<{
|
|
8
|
+
version: typeof BRANCH_STORE_MANIFEST_VERSION;
|
|
9
|
+
branch: string;
|
|
10
|
+
key: string;
|
|
11
|
+
}>;
|
|
12
|
+
export declare function branchStoreKey(branch: string): string;
|
|
13
|
+
export declare function branchStoresRoot(workspaceRoot: string): string;
|
|
14
|
+
export declare function branchStorePath(workspaceRoot: string, branch: string): string;
|
|
15
|
+
export declare function branchStoreManifestPath(storePath: string): string;
|
|
16
|
+
export declare function expectedBranchStoreManifest(branch: string): BranchStoreManifest;
|
|
17
|
+
export declare function readBranchStoreManifest(storePath: string): BranchStoreManifest | null;
|
|
18
|
+
export declare function branchStoreManifestMatches(storePath: string, branch: string): boolean;
|
|
19
|
+
/** Create or verify the identity fence for a newly materialized store. */
|
|
20
|
+
export declare function ensureBranchStoreManifest(workspaceRoot: string, branch: string): string;
|
|
21
|
+
export declare function legacyBranchStorePath(workspaceRoot: string, branch: string): string;
|
|
22
|
+
export declare function isDirectory(pathname: string): boolean;
|
|
23
|
+
//# sourceMappingURL=branch-store-locator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branch-store-locator.d.ts","sourceRoot":"","sources":["../../src/utils/branch-store-locator.ts"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,EAAG,CAAU,CAAC;AAExD,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,OAAO,EAAE,OAAO,6BAA6B,CAAC;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb,CAAC,CAAC;AAEH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,GACb,mBAAmB,CAMrB;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,GAChB,mBAAmB,GAAG,IAAI,CAsB5B;AAED,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAUT;AAED,0EAA0E;AAC1E,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,GACb,MAAM,CA6BR;AAED,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,GACb,MAAM,CAER;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAMrD"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync, } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
/**
|
|
5
|
+
* The compiled branch store is keyed by the exact Git ref rather than by a
|
|
6
|
+
* path derived from that ref. This keeps names such as `feature/auth` flat and
|
|
7
|
+
* makes the store safe to enumerate and garbage collect.
|
|
8
|
+
*/
|
|
9
|
+
export const BRANCH_STORE_MANIFEST_VERSION = 1;
|
|
10
|
+
export function branchStoreKey(branch) {
|
|
11
|
+
return createHash("sha256").update(branch, "utf8").digest("hex");
|
|
12
|
+
}
|
|
13
|
+
export function branchStoresRoot(workspaceRoot) {
|
|
14
|
+
return path.join(path.resolve(workspaceRoot), ".kb", "branches");
|
|
15
|
+
}
|
|
16
|
+
export function branchStorePath(workspaceRoot, branch) {
|
|
17
|
+
return path.join(branchStoresRoot(workspaceRoot), branchStoreKey(branch));
|
|
18
|
+
}
|
|
19
|
+
export function branchStoreManifestPath(storePath) {
|
|
20
|
+
return path.join(storePath, "branch.json");
|
|
21
|
+
}
|
|
22
|
+
export function expectedBranchStoreManifest(branch) {
|
|
23
|
+
return {
|
|
24
|
+
version: BRANCH_STORE_MANIFEST_VERSION,
|
|
25
|
+
branch,
|
|
26
|
+
key: branchStoreKey(branch),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export function readBranchStoreManifest(storePath) {
|
|
30
|
+
const manifestPath = branchStoreManifestPath(storePath);
|
|
31
|
+
if (!existsSync(manifestPath))
|
|
32
|
+
return null;
|
|
33
|
+
try {
|
|
34
|
+
const parsed = JSON.parse(readFileSync(manifestPath, "utf8"));
|
|
35
|
+
if (parsed.version !== BRANCH_STORE_MANIFEST_VERSION ||
|
|
36
|
+
typeof parsed.branch !== "string" ||
|
|
37
|
+
typeof parsed.key !== "string") {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
version: BRANCH_STORE_MANIFEST_VERSION,
|
|
42
|
+
branch: parsed.branch,
|
|
43
|
+
key: parsed.key,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export function branchStoreManifestMatches(storePath, branch) {
|
|
51
|
+
const manifest = readBranchStoreManifest(storePath);
|
|
52
|
+
const expected = expectedBranchStoreManifest(branch);
|
|
53
|
+
return (manifest !== null &&
|
|
54
|
+
manifest.version === expected.version &&
|
|
55
|
+
manifest.branch === expected.branch &&
|
|
56
|
+
manifest.key === expected.key &&
|
|
57
|
+
path.basename(storePath) === expected.key);
|
|
58
|
+
}
|
|
59
|
+
/** Create or verify the identity fence for a newly materialized store. */
|
|
60
|
+
export function ensureBranchStoreManifest(workspaceRoot, branch) {
|
|
61
|
+
const storePath = branchStorePath(workspaceRoot, branch);
|
|
62
|
+
mkdirSync(storePath, { recursive: true });
|
|
63
|
+
const manifestPath = branchStoreManifestPath(storePath);
|
|
64
|
+
const existing = readBranchStoreManifest(storePath);
|
|
65
|
+
if (existing !== null && !branchStoreManifestMatches(storePath, branch)) {
|
|
66
|
+
throw new Error(`Branch store identity mismatch at ${storePath}; refusing to attach it to '${branch}'.`);
|
|
67
|
+
}
|
|
68
|
+
if (existing === null) {
|
|
69
|
+
if (existsSync(manifestPath)) {
|
|
70
|
+
throw new Error(`Branch store manifest is invalid at ${manifestPath}; refusing to overwrite it.`);
|
|
71
|
+
}
|
|
72
|
+
const entries = readdirSync(storePath);
|
|
73
|
+
if (entries.length > 0) {
|
|
74
|
+
throw new Error(`Branch store at ${storePath} has compiled data but no valid identity manifest; refusing to adopt it.`);
|
|
75
|
+
}
|
|
76
|
+
writeFileSync(manifestPath, `${JSON.stringify(expectedBranchStoreManifest(branch), null, 2)}\n`, { mode: 0o600 });
|
|
77
|
+
}
|
|
78
|
+
return storePath;
|
|
79
|
+
}
|
|
80
|
+
export function legacyBranchStorePath(workspaceRoot, branch) {
|
|
81
|
+
return path.join(branchStoresRoot(workspaceRoot), branch);
|
|
82
|
+
}
|
|
83
|
+
export function isDirectory(pathname) {
|
|
84
|
+
try {
|
|
85
|
+
return statSync(pathname).isDirectory();
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type BranchStoreState = "healthy" | "missing" | "incomplete" | "unreadable";
|
|
2
|
+
export type BranchStoreInspection = Readonly<{
|
|
3
|
+
state: BranchStoreState;
|
|
4
|
+
path: string;
|
|
5
|
+
errorCode?: string;
|
|
6
|
+
detail?: string;
|
|
7
|
+
recoveryRequired: boolean;
|
|
8
|
+
}>;
|
|
9
|
+
/**
|
|
10
|
+
* Performs only filesystem checks. It deliberately never starts the engine or
|
|
11
|
+
* attaches Prolog, so callers can still explain a broken branch store.
|
|
12
|
+
*/
|
|
13
|
+
export declare function inspectBranchStore(workspaceRoot: string, branch: string): BranchStoreInspection;
|
|
14
|
+
/**
|
|
15
|
+
* Surface a stale branch-store lock journal: the recorded holder is
|
|
16
|
+
* provably dead (crashed engine, killed prove run). The next attach will
|
|
17
|
+
* auto-heal; the reason exists so operators see the state before it bites.
|
|
18
|
+
*/
|
|
19
|
+
export declare function storeLockJournalReason(storePath: string): Record<string, unknown> | null;
|
|
20
|
+
export declare function branchStoreReason(inspection: BranchStoreInspection): Record<string, unknown> | null;
|
|
21
|
+
//# sourceMappingURL=branch-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branch-store.d.ts","sourceRoot":"","sources":["../../src/utils/branch-store.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,SAAS,GACT,YAAY,GACZ,YAAY,CAAC;AAEjB,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC3C,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;CAC3B,CAAC,CAAC;AAEH;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,GACb,qBAAqB,CA0GvB;AAED;;;;GAIG;AAEH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAiBhC;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,qBAAqB,GAChC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAWhC"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Kibi — repo-local, per-branch, queryable long-term memory for software projects
|
|
3
|
+
Copyright (C) 2026 Piotr Franczyk
|
|
4
|
+
*/
|
|
5
|
+
import { existsSync, readFileSync, statSync } from "node:fs";
|
|
6
|
+
import * as path from "node:path";
|
|
7
|
+
import { classifyStoreLockHolder, readStoreLockOwner, } from "../prolog/store-lock.js";
|
|
8
|
+
import { branchStoreManifestMatches, branchStorePath, legacyBranchStorePath, } from "./branch-store-locator.js";
|
|
9
|
+
/**
|
|
10
|
+
* Performs only filesystem checks. It deliberately never starts the engine or
|
|
11
|
+
* attaches Prolog, so callers can still explain a broken branch store.
|
|
12
|
+
*/
|
|
13
|
+
export function inspectBranchStore(workspaceRoot, branch) {
|
|
14
|
+
const storePath = branchStorePath(workspaceRoot, branch);
|
|
15
|
+
if (!existsSync(storePath)) {
|
|
16
|
+
const legacyPath = legacyBranchStorePath(workspaceRoot, branch);
|
|
17
|
+
if (existsSync(legacyPath)) {
|
|
18
|
+
return {
|
|
19
|
+
state: "incomplete",
|
|
20
|
+
path: legacyPath,
|
|
21
|
+
errorCode: "legacy_branch_store",
|
|
22
|
+
detail: "A literal branch-named store exists; preview and apply the explicit migration before writes.",
|
|
23
|
+
recoveryRequired: true,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
state: "missing",
|
|
28
|
+
path: storePath,
|
|
29
|
+
errorCode: "branch_store_missing",
|
|
30
|
+
detail: "The branch-local KB directory does not exist.",
|
|
31
|
+
recoveryRequired: false,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
if (!statSync(storePath).isDirectory()) {
|
|
36
|
+
return {
|
|
37
|
+
state: "unreadable",
|
|
38
|
+
path: storePath,
|
|
39
|
+
errorCode: "branch_store_not_directory",
|
|
40
|
+
detail: "The branch-local KB path is not a directory.",
|
|
41
|
+
recoveryRequired: true,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
if (!branchStoreManifestMatches(storePath, branch)) {
|
|
45
|
+
return {
|
|
46
|
+
state: "unreadable",
|
|
47
|
+
path: storePath,
|
|
48
|
+
errorCode: "branch_store_manifest_mismatch",
|
|
49
|
+
detail: "The hashed branch store is missing a valid manifest for the exact Git branch.",
|
|
50
|
+
recoveryRequired: true,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
const markerPath = path.join(storePath, "storage.json");
|
|
54
|
+
const rdfPath = path.join(storePath, "rdf");
|
|
55
|
+
const currentPath = path.join(storePath, "CURRENT");
|
|
56
|
+
const legacyPath = path.join(storePath, "kb.rdf");
|
|
57
|
+
if (existsSync(markerPath)) {
|
|
58
|
+
if (!existsSync(rdfPath) || !statSync(rdfPath).isDirectory()) {
|
|
59
|
+
return {
|
|
60
|
+
state: "incomplete",
|
|
61
|
+
path: storePath,
|
|
62
|
+
errorCode: "branch_store_missing_rdf",
|
|
63
|
+
detail: "The journaled store has no rdf generation directory.",
|
|
64
|
+
recoveryRequired: true,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
if (!existsSync(currentPath)) {
|
|
68
|
+
return {
|
|
69
|
+
state: "incomplete",
|
|
70
|
+
path: storePath,
|
|
71
|
+
errorCode: "sync_metadata_missing",
|
|
72
|
+
detail: "The journaled store has no CURRENT generation pointer.",
|
|
73
|
+
recoveryRequired: true,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
const current = readFileSync(currentPath, "utf8").trim();
|
|
77
|
+
if (!/^generation-[^:\s]+:\d+$/.test(current)) {
|
|
78
|
+
return {
|
|
79
|
+
state: "unreadable",
|
|
80
|
+
path: storePath,
|
|
81
|
+
errorCode: "branch_store_invalid_current",
|
|
82
|
+
detail: "The journaled store CURRENT pointer is malformed.",
|
|
83
|
+
recoveryRequired: true,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
return { state: "healthy", path: storePath, recoveryRequired: false };
|
|
87
|
+
}
|
|
88
|
+
if (existsSync(legacyPath)) {
|
|
89
|
+
const legacy = readFileSync(legacyPath, "utf8");
|
|
90
|
+
if (!/<rdf:RDF(?:\s|>)/.test(legacy)) {
|
|
91
|
+
return {
|
|
92
|
+
state: "unreadable",
|
|
93
|
+
path: storePath,
|
|
94
|
+
errorCode: "branch_store_invalid_legacy_rdf",
|
|
95
|
+
detail: "The legacy kb.rdf file is not RDF/XML.",
|
|
96
|
+
recoveryRequired: true,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
return { state: "healthy", path: storePath, recoveryRequired: false };
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
state: "missing",
|
|
103
|
+
path: storePath,
|
|
104
|
+
errorCode: "sync_metadata_missing",
|
|
105
|
+
detail: "The branch KB has neither journal metadata nor legacy RDF.",
|
|
106
|
+
recoveryRequired: false,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
return {
|
|
111
|
+
state: "unreadable",
|
|
112
|
+
path: storePath,
|
|
113
|
+
errorCode: "branch_store_unreadable",
|
|
114
|
+
detail: error instanceof Error ? error.message : String(error),
|
|
115
|
+
recoveryRequired: true,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Surface a stale branch-store lock journal: the recorded holder is
|
|
121
|
+
* provably dead (crashed engine, killed prove run). The next attach will
|
|
122
|
+
* auto-heal; the reason exists so operators see the state before it bites.
|
|
123
|
+
*/
|
|
124
|
+
// implements REQ-core-journaled-engine-persistence
|
|
125
|
+
export function storeLockJournalReason(storePath) {
|
|
126
|
+
const journal = readStoreLockOwner(storePath);
|
|
127
|
+
if (journal === null)
|
|
128
|
+
return null;
|
|
129
|
+
const owner = journal.owner;
|
|
130
|
+
// Same boot-id-aware classification as the janitor and the attach
|
|
131
|
+
// takeover, so all three surfaces reach the same verdict on a journal.
|
|
132
|
+
if (classifyStoreLockHolder(owner) !== "dead")
|
|
133
|
+
return null;
|
|
134
|
+
return {
|
|
135
|
+
code: "store_lock_stale",
|
|
136
|
+
path: journal.journalPath,
|
|
137
|
+
entityIds: [],
|
|
138
|
+
detail: `Branch store lock journal records holder pid ${owner.pid} for ${owner.workspaceRoot ?? "unknown"}, which is no longer running.`,
|
|
139
|
+
remediation: {
|
|
140
|
+
command_argv: ["kibi", "engine", "janitor", "--apply"],
|
|
141
|
+
applyRequired: false,
|
|
142
|
+
},
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
export function branchStoreReason(inspection) {
|
|
146
|
+
if (inspection.state === "healthy")
|
|
147
|
+
return null;
|
|
148
|
+
return {
|
|
149
|
+
code: inspection.errorCode ?? `branch_store_${inspection.state}`,
|
|
150
|
+
path: inspection.path,
|
|
151
|
+
entityIds: [],
|
|
152
|
+
detail: inspection.detail ?? "Branch store requires attention.",
|
|
153
|
+
remediation: inspection.recoveryRequired
|
|
154
|
+
? { command_argv: ["kibi", "branch", "recover"], applyRequired: true }
|
|
155
|
+
: { command_argv: ["kibi", "branch", "ensure"], applyRequired: false },
|
|
156
|
+
};
|
|
157
|
+
}
|
package/dist/utils/config.d.ts
CHANGED
|
@@ -1,8 +1,21 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type KbEntityPaths } from "./kb-paths.js";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Kibi no longer has a user-editable configuration file. Entity source
|
|
4
|
+
* locations live in the canonical `.kb/` namespace defined in `kb-paths.ts`,
|
|
5
|
+
* and check policy is owned by Kibi's rule registry. This module retains
|
|
6
|
+
* only the canonical accessors plus read-only recognition of the legacy
|
|
7
|
+
* `.kb/config.json` document for migration tooling.
|
|
4
8
|
*/
|
|
5
|
-
export
|
|
9
|
+
export type { KbEntityPaths };
|
|
10
|
+
/** Canonical entity paths; always the same, never merged with user input. */
|
|
11
|
+
export declare const DEFAULT_CONFIG_PATHS: KbEntityPaths;
|
|
12
|
+
/**
|
|
13
|
+
* Load the canonical entity paths. The result is constant: Kibi owns the
|
|
14
|
+
* layout and repositories cannot relocate knowledge lanes.
|
|
15
|
+
*/
|
|
16
|
+
export declare function loadEntityPaths(_cwd?: string): KbEntityPaths;
|
|
17
|
+
/** Legacy `.kb/config.json` path document, kept only for migration input. */
|
|
18
|
+
export interface LegacyKbConfigPaths {
|
|
6
19
|
requirements?: string;
|
|
7
20
|
scenarios?: string;
|
|
8
21
|
tests?: string;
|
|
@@ -12,47 +25,36 @@ export interface KbConfigPaths {
|
|
|
12
25
|
facts?: string;
|
|
13
26
|
symbols?: string;
|
|
14
27
|
}
|
|
15
|
-
/**
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
paths: KbConfigPaths;
|
|
28
|
+
/** Recognized legacy `.kb/config.json` fields (migration recognition only). */
|
|
29
|
+
export interface LegacyKbConfig {
|
|
30
|
+
paths?: LegacyKbConfigPaths;
|
|
31
|
+
/** Pre-manifest top-level symbols manifest override. */
|
|
32
|
+
symbolsManifest?: string;
|
|
21
33
|
schemaVersion?: number | string;
|
|
22
34
|
semanticAdvisorBackfill?: "pending" | "completed" | "not_applicable";
|
|
23
|
-
|
|
24
|
-
* @deprecated defaultBranch is deprecated. Branch lifecycle now follows git naturally
|
|
25
|
-
* without requiring a configured default. This field is ignored but kept for compatibility.
|
|
26
|
-
*/
|
|
35
|
+
checks?: unknown;
|
|
27
36
|
defaultBranch?: string;
|
|
28
|
-
checks?: ChecksConfig;
|
|
29
37
|
}
|
|
30
|
-
|
|
38
|
+
/** Whether a legacy `.kb/config.json` exists at the workspace root. */
|
|
39
|
+
export declare function legacyConfigExists(cwd: string): boolean;
|
|
31
40
|
/**
|
|
32
|
-
*
|
|
41
|
+
* Read a legacy `.kb/config.json` if one exists. Malformed JSON returns
|
|
42
|
+
* `kind: "malformed"` so migration can report actionable diagnostics
|
|
43
|
+
* instead of silently guessing paths.
|
|
33
44
|
*/
|
|
34
|
-
export declare
|
|
35
|
-
|
|
45
|
+
export declare function readLegacyKbConfig(cwd: string): {
|
|
46
|
+
kind: "none";
|
|
47
|
+
} | {
|
|
48
|
+
kind: "malformed";
|
|
49
|
+
error: string;
|
|
50
|
+
} | {
|
|
51
|
+
kind: "present";
|
|
52
|
+
config: LegacyKbConfig;
|
|
36
53
|
};
|
|
37
54
|
/**
|
|
38
|
-
*
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Load and parse the Kibi configuration from .kb/config.json.
|
|
43
|
-
* Falls back to DEFAULT_CONFIG if the file doesn't exist or is invalid.
|
|
44
|
-
*
|
|
45
|
-
* @param cwd - The working directory to look for .kb/config.json
|
|
46
|
-
* @returns The merged configuration (defaults + user config)
|
|
47
|
-
*/
|
|
48
|
-
export declare function loadConfig(cwd?: string): KbConfig;
|
|
49
|
-
/**
|
|
50
|
-
* Load sync configuration with fallback to glob patterns.
|
|
51
|
-
* This is used by sync.ts to maintain backward compatibility with
|
|
52
|
-
* older config files that may use glob patterns.
|
|
53
|
-
*
|
|
54
|
-
* @param cwd - The working directory to look for .kb/config.json
|
|
55
|
-
* @returns The merged configuration with sync-compatible paths
|
|
55
|
+
* Resolve the effective legacy entity paths for migration discovery:
|
|
56
|
+
* configured values win, then the historical `documentation/` defaults.
|
|
57
|
+
* Glob-bearing values are preserved so migration can strip them to roots.
|
|
56
58
|
*/
|
|
57
|
-
export declare function
|
|
59
|
+
export declare function resolveLegacyEntityPaths(config: LegacyKbConfig | undefined): KbEntityPaths;
|
|
58
60
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAoBA,OAAO,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAoBA,OAAO,EAEL,KAAK,aAAa,EAEnB,MAAM,eAAe,CAAC;AAEvB;;;;;;GAMG;AAEH,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B,6EAA6E;AAC7E,eAAO,MAAM,oBAAoB,EAAE,aAAsC,CAAC;AAE1E;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,GAAE,MAAsB,GAAG,aAAa,CAE3E;AAED,6EAA6E;AAC7E,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,+EAA+E;AAC/E,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,wDAAwD;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,uBAAuB,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,gBAAgB,CAAC;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAcD,uEAAuE;AACvE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,GAET;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,CAqE9C;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,cAAc,GAAG,SAAS,GACjC,aAAa,CAwBf"}
|