kibi-cli 0.19.0 → 1.0.1
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-operation-loader.d.ts.map +1 -1
- package/dist/cli-operation-loader.js +53 -20
- package/dist/cli-operation-metadata.d.ts +20 -8
- package/dist/cli-operation-metadata.d.ts.map +1 -1
- package/dist/cli-operation-metadata.js +23 -8
- 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 +26 -4
- package/dist/cli-register-reporting.d.ts.map +1 -1
- package/dist/cli-register-reporting.js +10 -0
- package/dist/cli-register-verification.d.ts +3 -0
- package/dist/cli-register-verification.d.ts.map +1 -0
- package/dist/cli-register-verification.js +16 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2 -0
- 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 +36 -0
- package/dist/commands/branch.d.ts.map +1 -1
- package/dist/commands/branch.js +371 -40
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +20 -67
- package/dist/commands/discovery-shared.d.ts.map +1 -1
- package/dist/commands/discovery-shared.js +10 -19
- package/dist/commands/doctor.d.ts +4 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +259 -24
- package/dist/commands/engine.d.ts.map +1 -1
- package/dist/commands/engine.js +10 -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 +56 -0
- package/dist/commands/github-init.d.ts.map +1 -0
- package/dist/commands/github-init.js +310 -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 +73 -25
- 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 +7 -0
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +244 -91
- 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 +23 -2
- package/dist/commands/sync/discovery.d.ts.map +1 -1
- package/dist/commands/sync/discovery.js +196 -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 +8 -5
- package/dist/commands/sync/manifest.d.ts.map +1 -1
- package/dist/commands/sync/manifest.js +142 -39
- package/dist/commands/sync/persistence.d.ts.map +1 -1
- package/dist/commands/sync/persistence.js +3 -0
- package/dist/commands/sync.d.ts +6 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +304 -79
- package/dist/commands/verify.d.ts +10 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +126 -0
- package/dist/diagnostics.d.ts +1 -1
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/engine.d.ts +96 -3
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +392 -23
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +5 -6
- package/dist/extractors/manifest.d.ts +8 -1
- package/dist/extractors/manifest.d.ts.map +1 -1
- package/dist/extractors/manifest.js +51 -9
- package/dist/extractors/markdown.d.ts +2 -1
- package/dist/extractors/markdown.d.ts.map +1 -1
- package/dist/extractors/markdown.js +21 -3
- 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.map +1 -1
- package/dist/extractors/relationships.js +1 -0
- 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/intent-search.d.ts +60 -0
- package/dist/intent-search.d.ts.map +1 -0
- package/dist/intent-search.js +433 -0
- package/dist/operations/bootstrap/activation.d.ts.map +1 -0
- package/dist/operations/{autopilot → bootstrap}/activation.js +48 -31
- 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 +8 -0
- package/dist/operations/bootstrap/generate.d.ts.map +1 -0
- package/dist/operations/bootstrap/generate.js +204 -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 +2 -2
- package/dist/operations/{autopilot → bootstrap}/guidance.d.ts.map +1 -1
- package/dist/operations/{autopilot → bootstrap}/guidance.js +2 -0
- 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.map +1 -1
- package/dist/operations/modeling/model-requirement.js +4 -17
- 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 +276 -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-4.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-catalog-4.js +155 -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.map +1 -1
- package/dist/operations/modeling/predicate-loader.js +7 -0
- 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 +156 -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 +34 -0
- 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-utils.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-utils.js +2 -0
- package/dist/operations/modeling/suggest-predicates.d.ts +1 -1
- package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
- package/dist/operations/modeling/suggest-predicates.js +170 -32
- package/dist/operations/mutation/delete.d.ts.map +1 -1
- package/dist/operations/mutation/delete.js +415 -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 +10 -0
- package/dist/operations/mutation/relationships.d.ts.map +1 -1
- package/dist/operations/mutation/relationships.js +71 -1
- package/dist/operations/mutation/serialization.d.ts.map +1 -1
- package/dist/operations/mutation/serialization.js +1 -0
- package/dist/operations/mutation/source-authoring.d.ts +61 -0
- package/dist/operations/mutation/source-authoring.d.ts.map +1 -0
- package/dist/operations/mutation/source-authoring.js +543 -0
- package/dist/operations/mutation/symbol-compiler-lock.d.ts +51 -0
- package/dist/operations/mutation/symbol-compiler-lock.d.ts.map +1 -0
- package/dist/operations/mutation/symbol-compiler-lock.js +274 -0
- package/dist/operations/mutation/symbol-granularity.d.ts.map +1 -1
- package/dist/operations/mutation/symbol-granularity.js +34 -3
- package/dist/operations/mutation/symbol-refresh.d.ts +18 -1
- package/dist/operations/mutation/symbol-refresh.d.ts.map +1 -1
- package/dist/operations/mutation/symbol-refresh.js +225 -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.map +1 -1
- package/dist/operations/mutation/upsert.js +363 -24
- package/dist/operations/mutation/validation.d.ts.map +1 -1
- package/dist/operations/mutation/validation.js +1 -0
- package/dist/operations/planning/apply-plan.d.ts +117 -0
- package/dist/operations/planning/apply-plan.d.ts.map +1 -0
- package/dist/operations/planning/apply-plan.js +1437 -0
- package/dist/operations/planning/compile-intent.d.ts +106 -0
- package/dist/operations/planning/compile-intent.d.ts.map +1 -0
- package/dist/operations/planning/compile-intent.js +562 -0
- package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/analyze-prose.js +6 -2
- package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/clauses.js +15 -2
- 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/types.d.ts +13 -5
- package/dist/operations/semantic-advisor/types.d.ts.map +1 -1
- package/dist/operations/verification/ingest-verification.d.ts +29 -0
- package/dist/operations/verification/ingest-verification.d.ts.map +1 -0
- package/dist/operations/verification/ingest-verification.js +192 -0
- package/dist/prolog/codec.d.ts.map +1 -1
- package/dist/prolog/codec.js +2 -1
- package/dist/prolog.d.ts.map +1 -1
- package/dist/prolog.js +27 -8
- 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 +69 -1
- package/dist/public/distribution-parity.d.ts +1 -1
- package/dist/public/distribution-parity.d.ts.map +1 -1
- package/dist/public/distribution-parity.js +1 -0
- 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 +6 -1
- package/dist/public/impact/coverage-depth-quality.d.ts.map +1 -1
- package/dist/public/impact/coverage-depth-quality.js +21 -3
- package/dist/public/impact/full-kb-quality.d.ts +4 -2
- package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
- package/dist/public/impact/full-kb-quality.js +61 -1
- 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 +682 -67
- package/dist/public/operations/catalog.d.ts.map +1 -1
- package/dist/public/operations/catalog.js +126 -4
- 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 +72 -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 +11 -0
- package/dist/public/operations/contracts.d.ts.map +1 -0
- package/dist/public/operations/contracts.js +325 -0
- package/dist/public/operations/discovery-executors.d.ts +37 -1
- package/dist/public/operations/discovery-executors.d.ts.map +1 -1
- package/dist/public/operations/discovery-executors.js +206 -6
- 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 +101 -0
- package/dist/public/operations/migration-plan.d.ts.map +1 -0
- package/dist/public/operations/migration-plan.js +537 -0
- package/dist/public/operations/node-ports.d.ts.map +1 -1
- package/dist/public/operations/node-ports.js +68 -8
- 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.map +1 -1
- package/dist/public/operations/repair-plan.js +1 -0
- package/dist/public/operations/result-envelope.d.ts +13 -0
- package/dist/public/operations/result-envelope.d.ts.map +1 -0
- package/dist/public/operations/result-envelope.js +104 -0
- package/dist/public/operations/runtime-types.d.ts +97 -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.d.ts +4 -4
- package/dist/public/operations/specs/check.d.ts.map +1 -1
- package/dist/public/operations/specs/check.js +4 -3
- 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 +190 -47
- package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
- package/dist/public/operations/specs/mutation-schemas.js +3 -1
- 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 +270 -0
- package/dist/public/operations/specs/planning.d.ts.map +1 -0
- package/dist/public/operations/specs/planning.js +191 -0
- package/dist/public/operations/specs/reporting.d.ts +4 -1
- package/dist/public/operations/specs/reporting.d.ts.map +1 -1
- package/dist/public/operations/specs/reporting.js +46 -1
- package/dist/public/operations/specs/upsert.d.ts +204 -47
- package/dist/public/operations/specs/upsert.d.ts.map +1 -1
- package/dist/public/operations/specs/upsert.js +9 -0
- package/dist/public/operations/specs/verification.d.ts +78 -0
- package/dist/public/operations/specs/verification.d.ts.map +1 -0
- package/dist/public/operations/specs/verification.js +62 -0
- package/dist/public/operations/symbol-repair-plan.d.ts +11 -0
- package/dist/public/operations/symbol-repair-plan.d.ts.map +1 -0
- package/dist/public/operations/symbol-repair-plan.js +123 -0
- package/dist/public/operations/types.d.ts +52 -1
- package/dist/public/operations/types.d.ts.map +1 -1
- package/dist/public/playwright-case-id.d.ts +8 -0
- package/dist/public/playwright-case-id.d.ts.map +1 -0
- package/dist/public/playwright-case-id.js +25 -0
- package/dist/public/schemas/entity.d.ts.map +1 -1
- package/dist/public/schemas/entity.js +4 -2
- 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 +115 -239
- 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/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 +56 -3
- package/dist/public/symbol-granularity.d.ts +1 -1
- package/dist/public/symbol-granularity.d.ts.map +1 -1
- package/dist/public/symbol-granularity.js +1 -0
- package/dist/public/telemetry-acceptance.d.ts +7 -0
- package/dist/public/telemetry-acceptance.d.ts.map +1 -1
- package/dist/public/telemetry-acceptance.js +8 -1
- package/dist/public/telemetry-remediation.js +1 -1
- package/dist/public/verification-receipt.d.ts +206 -39
- package/dist/public/verification-receipt.d.ts.map +1 -1
- package/dist/public/verification-receipt.js +171 -4
- 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.d.ts +19 -0
- package/dist/report/html-report.d.ts.map +1 -0
- package/dist/report/html-report.js +963 -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.map +1 -1
- package/dist/runtime/cli-runtime.js +82 -22
- package/dist/schemas/entity.schema.json +1148 -273
- package/dist/traceability/evidence-model.d.ts +2 -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.map +1 -1
- package/dist/traceability/git-staged.js +15 -40
- package/dist/traceability/markdown-validate.d.ts.map +1 -1
- package/dist/traceability/markdown-validate.js +12 -7
- 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 +10 -38
- package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
- package/dist/traceability/staged-symbols-manifest.js +8 -3
- package/dist/traceability/temp-kb.d.ts.map +1 -1
- package/dist/traceability/temp-kb.js +3 -0
- package/dist/types/entities.d.ts +3 -0
- package/dist/types/entities.d.ts.map +1 -1
- package/dist/utils/branch-resolver.d.ts +24 -10
- package/dist/utils/branch-resolver.d.ts.map +1 -1
- package/dist/utils/branch-resolver.js +121 -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 +15 -0
- package/dist/utils/branch-store.d.ts.map +1 -0
- package/dist/utils/branch-store.js +130 -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 +48 -20
- package/dist/utils/rule-registry.d.ts.map +1 -1
- package/dist/utils/rule-registry.js +82 -77
- 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 +0 -4
- package/dist/utils/strict-modeling.d.ts.map +1 -1
- package/dist/utils/strict-modeling.js +7 -8
- package/dist/verification/playwright-reporter.d.ts +21 -0
- package/dist/verification/playwright-reporter.d.ts.map +1 -0
- package/dist/verification/playwright-reporter.js +114 -0
- package/package.json +46 -7
- 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 +79 -1
- package/src/public/distribution-parity.ts +1 -0
- package/src/public/ignore-policy.ts +16 -10
- package/src/public/impact/coverage-depth-quality.ts +36 -0
- package/src/public/impact/full-kb-quality.ts +118 -5
- package/src/public/impact/manifest.ts +2 -4
- package/src/public/operational-artifacts.ts +9 -1
- package/src/public/operations/catalog.ts +146 -9
- package/src/public/operations/check-executor.ts +102 -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 +366 -0
- package/src/public/operations/discovery-executors.ts +299 -12
- package/src/public/operations/index.ts +9 -4
- package/src/public/operations/migration-plan.ts +740 -0
- package/src/public/operations/node-ports.ts +84 -10
- package/src/public/operations/prolog-json.ts +60 -5
- package/src/public/operations/repair-plan.ts +1 -0
- package/src/public/operations/result-envelope.ts +136 -0
- package/src/public/operations/runtime-types.ts +91 -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.ts +4 -3
- 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 +6 -1
- package/src/public/operations/specs/mutation.ts +27 -2
- package/src/public/operations/specs/planning.ts +234 -0
- package/src/public/operations/specs/reporting.ts +55 -1
- package/src/public/operations/specs/upsert.ts +10 -0
- package/src/public/operations/specs/verification.ts +78 -0
- package/src/public/operations/symbol-repair-plan.ts +164 -0
- package/src/public/operations/types.ts +62 -1
- package/src/public/playwright-case-id.ts +35 -0
- package/src/public/schemas/entity.ts +7 -2
- 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 +115 -239
- 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/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 +56 -3
- package/src/public/symbol-granularity.ts +1 -0
- package/src/public/telemetry-acceptance.ts +16 -1
- package/src/public/telemetry-remediation.ts +1 -1
- package/src/public/verification-receipt.ts +248 -6
- package/src/schemas/entity.schema.json +1148 -273
- package/templates/github/kibi-badge.yml +86 -0
- package/templates/github/kibi-report.yml +84 -0
- 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/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/src/public/skills/init-kibi/SKILL.md +0 -62
- /package/dist/operations/{autopilot → bootstrap}/activation.d.ts +0 -0
- /package/dist/operations/{autopilot → bootstrap}/candidate-helpers.d.ts +0 -0
- /package/dist/operations/{autopilot → bootstrap}/candidate-helpers.js +0 -0
- /package/dist/operations/{autopilot → bootstrap}/requirement-claims.d.ts +0 -0
- /package/dist/operations/{autopilot → bootstrap}/requirement-claims.js +0 -0
|
@@ -1,6 +1,42 @@
|
|
|
1
1
|
export interface BranchEnsureOptions {
|
|
2
2
|
from?: string;
|
|
3
|
+
workspaceRoot?: string;
|
|
3
4
|
}
|
|
5
|
+
export interface BranchMigrateOptions {
|
|
6
|
+
from?: string;
|
|
7
|
+
to?: string;
|
|
8
|
+
apply?: boolean;
|
|
9
|
+
/** Hash-bound preview approval required for every mutating migration. */
|
|
10
|
+
approvalHash?: string;
|
|
11
|
+
recoverJournal?: string;
|
|
12
|
+
workspaceRoot?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface BranchRecoverOptions {
|
|
15
|
+
apply?: boolean;
|
|
16
|
+
workspaceRoot?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface BranchRestoreOptions {
|
|
19
|
+
branch?: string;
|
|
20
|
+
apply?: boolean;
|
|
21
|
+
workspaceRoot?: string;
|
|
22
|
+
}
|
|
23
|
+
/** Legacy migration changes storage format for one exact branch identity. */
|
|
24
|
+
export declare function isSupportedLegacyBranchMigration(from: string, to: string): boolean;
|
|
25
|
+
export declare function branchMigrationApprovalHash(from: string, to: string, sourcePath: string, targetPath: string): string;
|
|
4
26
|
export declare function branchEnsureCommand(options?: BranchEnsureOptions): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Move a legacy branch-named KB into the exact active Git branch namespace.
|
|
29
|
+
* Preview is the default; --apply is required because this changes tracked
|
|
30
|
+
* workspace state.
|
|
31
|
+
*/
|
|
32
|
+
export declare function branchMigrateCommand(options?: BranchMigrateOptions): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Rebuild an unreadable exact branch store from the current authored sources.
|
|
35
|
+
* The existing bytes are moved to a Kibi-owned recovery directory only after a
|
|
36
|
+
* clean staging store has been created successfully.
|
|
37
|
+
*/
|
|
38
|
+
export declare function branchRecoverCommand(options?: BranchRecoverOptions): Promise<void>;
|
|
39
|
+
/** Restore the newest quarantined store for an exact branch identity. */
|
|
40
|
+
export declare function branchRestoreCommand(options?: BranchRestoreOptions): Promise<void>;
|
|
5
41
|
export default branchEnsureCommand;
|
|
6
42
|
//# sourceMappingURL=branch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branch.d.ts","sourceRoot":"","sources":["../../src/commands/branch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"branch.d.ts","sourceRoot":"","sources":["../../src/commands/branch.ts"],"names":[],"mappings":"AA4CA,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,6EAA6E;AAC7E,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACT,OAAO,CAET;AAuBD,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,MAAM,CAeR;AAgHD,wBAAsB,mBAAmB,CACvC,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,IAAI,CAAC,CA2Kf;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,IAAI,CAAC,CAyFf;AAED,yEAAyE;AACzE,wBAAsB,oBAAoB,CACxC,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,IAAI,CAAC,CAkDf;AAED,eAAe,mBAAmB,CAAC"}
|
package/dist/commands/branch.js
CHANGED
|
@@ -15,64 +15,395 @@
|
|
|
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 { createHash } from "node:crypto";
|
|
18
19
|
import * as fs from "node:fs";
|
|
19
20
|
import * as path from "node:path";
|
|
20
|
-
import {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (fs.existsSync(fromPath)) {
|
|
28
|
-
return fromBranch;
|
|
29
|
-
}
|
|
30
|
-
console.warn(`Warning: --from branch '${fromBranch}' KB does not exist`);
|
|
31
|
-
return null;
|
|
21
|
+
import { EngineClient, acquireEnginePublicationLease, engineSocketPath, } from "../engine.js";
|
|
22
|
+
import { getBranchDiagnostic, isValidBranchName, resolveActiveBranch, resolveBranchAttachment, } from "../utils/branch-resolver.js";
|
|
23
|
+
import { branchStoreManifestMatches, branchStoreManifestPath, branchStorePath, branchStoresRoot, ensureBranchStoreManifest, expectedBranchStoreManifest, legacyBranchStorePath, readBranchStoreManifest, } from "../utils/branch-store-locator.js";
|
|
24
|
+
import { inspectBranchStore } from "../utils/branch-store.js";
|
|
25
|
+
/** Legacy migration changes storage format for one exact branch identity. */
|
|
26
|
+
export function isSupportedLegacyBranchMigration(from, to) {
|
|
27
|
+
return from === to;
|
|
32
28
|
}
|
|
33
|
-
function
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
29
|
+
function hashLegacyStore(sourcePath) {
|
|
30
|
+
const hash = createHash("sha256");
|
|
31
|
+
const visit = (directory, relative = "") => {
|
|
32
|
+
for (const entry of fs
|
|
33
|
+
.readdirSync(directory, { withFileTypes: true })
|
|
34
|
+
.sort((left, right) => left.name.localeCompare(right.name))) {
|
|
35
|
+
const absolute = path.join(directory, entry.name);
|
|
36
|
+
const child = relative ? path.join(relative, entry.name) : entry.name;
|
|
37
|
+
if (entry.isDirectory())
|
|
38
|
+
visit(absolute, child);
|
|
39
|
+
else if (entry.isFile()) {
|
|
40
|
+
hash.update(child.replaceAll(path.sep, "/"));
|
|
41
|
+
hash.update("\0");
|
|
42
|
+
hash.update(fs.readFileSync(absolute));
|
|
43
|
+
hash.update("\0");
|
|
44
|
+
}
|
|
43
45
|
}
|
|
46
|
+
};
|
|
47
|
+
visit(sourcePath);
|
|
48
|
+
return hash.digest("hex");
|
|
49
|
+
}
|
|
50
|
+
export function branchMigrationApprovalHash(from, to, sourcePath, targetPath) {
|
|
51
|
+
const sourceHash = hashLegacyStore(sourcePath);
|
|
52
|
+
return createHash("sha256")
|
|
53
|
+
.update(JSON.stringify({
|
|
54
|
+
version: 2,
|
|
55
|
+
from,
|
|
56
|
+
to,
|
|
57
|
+
sourcePath,
|
|
58
|
+
targetPath,
|
|
59
|
+
sourceHash,
|
|
60
|
+
manifestVersion: expectedBranchStoreManifest(to).version,
|
|
61
|
+
}))
|
|
62
|
+
.digest("hex");
|
|
63
|
+
}
|
|
64
|
+
function migrationJournalPath(workspaceRoot, id) {
|
|
65
|
+
if (!/^[A-Za-z0-9._-]+$/.test(id)) {
|
|
66
|
+
throw new Error("branch migration journal ID is invalid");
|
|
44
67
|
}
|
|
45
|
-
return
|
|
68
|
+
return path.join(workspaceRoot, ".kb", "recovery", "branch-migrations", `${id}.json`);
|
|
69
|
+
}
|
|
70
|
+
function writeMigrationJournal(journalPath, journal) {
|
|
71
|
+
fs.writeFileSync(journalPath, `${JSON.stringify(journal, null, 2)}\n`, {
|
|
72
|
+
mode: 0o600,
|
|
73
|
+
});
|
|
46
74
|
}
|
|
47
|
-
function
|
|
48
|
-
const
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
75
|
+
function recoverBranchMigration(workspaceRoot, id, apply) {
|
|
76
|
+
const journalPath = migrationJournalPath(workspaceRoot, id);
|
|
77
|
+
const journal = JSON.parse(fs.readFileSync(journalPath, "utf8"));
|
|
78
|
+
if (journal.version !== 2)
|
|
79
|
+
throw new Error("Unsupported branch migration journal version");
|
|
80
|
+
const root = path.resolve(workspaceRoot);
|
|
81
|
+
const paths = ["sourcePath", "targetPath", "stagingPath", "backupPath"].map((key) => path.resolve(root, String(journal[key])));
|
|
82
|
+
if (paths.some((candidate) => !candidate.startsWith(`${root}${path.sep}`))) {
|
|
83
|
+
throw new Error("Branch migration journal path escapes workspace");
|
|
84
|
+
}
|
|
85
|
+
const [sourcePath, targetPath, stagingPath, backupPath] = paths;
|
|
86
|
+
if (!sourcePath || !targetPath || !stagingPath || !backupPath) {
|
|
87
|
+
throw new Error("Branch migration journal is incomplete");
|
|
88
|
+
}
|
|
89
|
+
console.log(`Branch migration recovery preview: ${id}`);
|
|
90
|
+
console.log(`State: ${String(journal.state)}`);
|
|
91
|
+
console.log(`Source: ${sourcePath}`);
|
|
92
|
+
console.log(`Target: ${targetPath}`);
|
|
93
|
+
console.log(`Backup: ${backupPath}`);
|
|
94
|
+
if (!apply) {
|
|
95
|
+
console.log("Preview only. Re-run with --apply to recover this journal.");
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
if (journal.state === "committed")
|
|
99
|
+
return;
|
|
100
|
+
if (journal.state === "prepared") {
|
|
101
|
+
if (fs.existsSync(sourcePath) &&
|
|
102
|
+
fs.existsSync(stagingPath) &&
|
|
103
|
+
!fs.existsSync(targetPath)) {
|
|
104
|
+
fs.renameSync(sourcePath, backupPath);
|
|
105
|
+
writeMigrationJournal(journalPath, {
|
|
106
|
+
...journal,
|
|
107
|
+
state: "legacy_quarantined",
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
else if (fs.existsSync(sourcePath) && fs.existsSync(targetPath)) {
|
|
111
|
+
throw new Error("Recovery found both legacy source and target; refusing to choose a winner");
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (fs.existsSync(backupPath) &&
|
|
115
|
+
fs.existsSync(stagingPath) &&
|
|
116
|
+
!fs.existsSync(targetPath)) {
|
|
117
|
+
fs.renameSync(stagingPath, targetPath);
|
|
118
|
+
if (!branchStoreManifestMatches(targetPath, String(journal.to))) {
|
|
119
|
+
throw new Error("Recovered target manifest does not match the exact branch identity");
|
|
120
|
+
}
|
|
121
|
+
writeMigrationJournal(journalPath, {
|
|
122
|
+
...journal,
|
|
123
|
+
state: "target_published",
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
if (fs.existsSync(backupPath) && fs.existsSync(targetPath)) {
|
|
127
|
+
if (!branchStoreManifestMatches(targetPath, String(journal.to))) {
|
|
128
|
+
const corrupt = `${targetPath}.corrupt-${Date.now()}`;
|
|
129
|
+
fs.renameSync(targetPath, corrupt);
|
|
130
|
+
fs.renameSync(backupPath, targetPath);
|
|
131
|
+
throw new Error(`Invalid target moved to ${corrupt}; verified legacy backup restored`);
|
|
132
|
+
}
|
|
133
|
+
writeMigrationJournal(journalPath, { ...journal, state: "committed" });
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
throw new Error(`Migration journal ${id} remains incomplete; rerun its recovery preview`);
|
|
52
137
|
}
|
|
53
|
-
function createEmptyBranchKb(branch) {
|
|
54
|
-
const kbPath =
|
|
55
|
-
|
|
56
|
-
console.log(`Created branch KB: ${branch} (empty schema)`);
|
|
138
|
+
function createEmptyBranchKb(branch, workspaceRoot) {
|
|
139
|
+
const kbPath = ensureBranchStoreManifest(workspaceRoot, branch);
|
|
140
|
+
console.log(`Created branch KB: ${branch} (${kbPath})`);
|
|
57
141
|
}
|
|
58
142
|
export async function branchEnsureCommand(options) {
|
|
59
|
-
const
|
|
143
|
+
const workspaceRoot = path.resolve(options?.workspaceRoot ?? process.cwd());
|
|
144
|
+
const branchResult = resolveBranchAttachment(workspaceRoot);
|
|
60
145
|
if ("error" in branchResult) {
|
|
61
146
|
console.error(getBranchDiagnostic(undefined, branchResult.error));
|
|
62
147
|
throw new Error(`Failed to resolve active branch: ${branchResult.error}`);
|
|
63
148
|
}
|
|
64
|
-
|
|
65
|
-
|
|
149
|
+
if (branchResult.migrationRequired) {
|
|
150
|
+
throw new Error(`Branch ensure blocked by legacy storage at ${branchResult.storePath}. Run an explicit 'kibi branch migrate --from ${branchResult.kbBranch} --to ${branchResult.gitBranch} --apply' first.`);
|
|
151
|
+
}
|
|
152
|
+
const currentBranch = branchResult.kbBranch;
|
|
153
|
+
const kbPath = branchResult.storePath;
|
|
154
|
+
if (options?.from !== undefined) {
|
|
155
|
+
throw new Error("branch ensure --from was removed: new branch stores compile from the current checkout's tracked sources. Use branch migrate for an explicit legacy-store move.");
|
|
156
|
+
}
|
|
66
157
|
if (fs.existsSync(kbPath)) {
|
|
67
158
|
console.log(`Branch KB already exists: ${currentBranch}`);
|
|
68
159
|
return;
|
|
69
160
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
161
|
+
createEmptyBranchKb(currentBranch, workspaceRoot);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Move a legacy branch-named KB into the exact active Git branch namespace.
|
|
165
|
+
* Preview is the default; --apply is required because this changes tracked
|
|
166
|
+
* workspace state.
|
|
167
|
+
*/
|
|
168
|
+
export async function branchMigrateCommand(options = {}) {
|
|
169
|
+
const workspaceRoot = path.resolve(options.workspaceRoot ?? process.cwd());
|
|
170
|
+
if (options.recoverJournal !== undefined) {
|
|
171
|
+
recoverBranchMigration(workspaceRoot, options.recoverJournal, options.apply === true);
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
const from = options.from;
|
|
175
|
+
if (!from || !isValidBranchName(from)) {
|
|
176
|
+
throw new Error("branch migrate requires a valid --from branch name");
|
|
177
|
+
}
|
|
178
|
+
const active = resolveActiveBranch(workspaceRoot);
|
|
179
|
+
if ("error" in active) {
|
|
180
|
+
throw new Error(`Failed to resolve active branch: ${active.error}`);
|
|
181
|
+
}
|
|
182
|
+
const to = options.to;
|
|
183
|
+
if (!to || !isValidBranchName(to)) {
|
|
184
|
+
throw new Error("branch migrate requires an explicit valid --to branch name");
|
|
185
|
+
}
|
|
186
|
+
if (active.branch !== to) {
|
|
187
|
+
throw new Error(`branch migrate --to '${to}' does not match the active Git branch '${active.branch}'`);
|
|
188
|
+
}
|
|
189
|
+
if (!isSupportedLegacyBranchMigration(from, to)) {
|
|
190
|
+
throw new Error("branch migrate only supports a same-identity literal-to-hashed migration; every cross-branch move is refused");
|
|
191
|
+
}
|
|
192
|
+
// `from === to` is valid for the same-identity storage bridge: it names the
|
|
193
|
+
// same exact Git identity while moving a legacy literal directory into its
|
|
194
|
+
// hashed compiled-store path. The explicit pair is still required; no
|
|
195
|
+
// rename is inferred from commit history.
|
|
196
|
+
const root = branchStoresRoot(workspaceRoot);
|
|
197
|
+
const sourcePath = legacyBranchStorePath(workspaceRoot, from);
|
|
198
|
+
const targetPath = branchStorePath(workspaceRoot, to);
|
|
199
|
+
if (!fs.existsSync(sourcePath)) {
|
|
200
|
+
throw new Error(`Legacy source KB does not exist: ${sourcePath}`);
|
|
201
|
+
}
|
|
202
|
+
if (fs.existsSync(targetPath)) {
|
|
203
|
+
throw new Error(`Target branch KB already exists: ${targetPath}`);
|
|
204
|
+
}
|
|
205
|
+
const approvalHash = branchMigrationApprovalHash(from, to, sourcePath, targetPath);
|
|
206
|
+
console.log(`Branch KB migration preview: ${from} -> ${to}`);
|
|
207
|
+
console.log(`Source: ${sourcePath}`);
|
|
208
|
+
console.log(`Target: ${targetPath}`);
|
|
209
|
+
console.log(`Approval hash: ${approvalHash}`);
|
|
210
|
+
if (!options.apply) {
|
|
211
|
+
console.log("Preview only. Re-run with --apply to move the branch KB.");
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
if (!options.approvalHash) {
|
|
215
|
+
throw new Error(`branch migrate requires --approval-hash from the preview (${approvalHash})`);
|
|
216
|
+
}
|
|
217
|
+
if (options.approvalHash !== approvalHash) {
|
|
218
|
+
throw new Error(`branch migrate approval hash mismatch; expected ${approvalHash}`);
|
|
219
|
+
}
|
|
220
|
+
const publicationLease = acquireEnginePublicationLease(workspaceRoot, from);
|
|
221
|
+
try {
|
|
222
|
+
const engine = new EngineClient({
|
|
223
|
+
workspaceRoot,
|
|
224
|
+
branch: from,
|
|
225
|
+
timeout: 2_000,
|
|
226
|
+
allowPublicationLock: true,
|
|
227
|
+
});
|
|
228
|
+
const engineSocket = engineSocketPath(workspaceRoot, from);
|
|
229
|
+
try {
|
|
230
|
+
if (fs.existsSync(engineSocket))
|
|
231
|
+
await engine.start(false);
|
|
232
|
+
if (engine.isRunning()) {
|
|
233
|
+
await engine.stop(false);
|
|
234
|
+
}
|
|
235
|
+
else if (fs.existsSync(engineSocket)) {
|
|
236
|
+
throw new Error(`Kibi engine socket remains present but is not reachable: ${engineSocket}`);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
throw new Error(`Branch migration blocked: engine shutdown failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
241
|
+
}
|
|
242
|
+
finally {
|
|
243
|
+
await engine.terminate();
|
|
244
|
+
}
|
|
245
|
+
if (branchMigrationApprovalHash(from, to, sourcePath, targetPath) !==
|
|
246
|
+
approvalHash) {
|
|
247
|
+
throw new Error("Branch migration source changed after engine shutdown; rerun the preview");
|
|
248
|
+
}
|
|
249
|
+
fs.mkdirSync(root, { recursive: true });
|
|
250
|
+
const migrationId = `${Date.now()}-${from.replaceAll("/", "__")}-${to.replaceAll("/", "__")}`;
|
|
251
|
+
const journalPath = path.join(workspaceRoot, ".kb", "recovery", "branch-migrations", `${migrationId}.json`);
|
|
252
|
+
const stagingPath = `${targetPath}.staging-${process.pid}-${Date.now()}`;
|
|
253
|
+
const backupPath = path.join(workspaceRoot, ".kb", "recovery", "branch-migrations", `${migrationId}-legacy`);
|
|
254
|
+
fs.mkdirSync(path.dirname(backupPath), { recursive: true });
|
|
255
|
+
const journal = {
|
|
256
|
+
version: 2,
|
|
257
|
+
from,
|
|
258
|
+
to,
|
|
259
|
+
sourcePath: path.relative(workspaceRoot, sourcePath),
|
|
260
|
+
targetPath: path.relative(workspaceRoot, targetPath),
|
|
261
|
+
stagingPath: path.relative(workspaceRoot, stagingPath),
|
|
262
|
+
backupPath: path.relative(workspaceRoot, backupPath),
|
|
263
|
+
approvalHash,
|
|
264
|
+
state: "prepared",
|
|
265
|
+
};
|
|
266
|
+
writeMigrationJournal(journalPath, { ...journal });
|
|
267
|
+
try {
|
|
268
|
+
fs.cpSync(sourcePath, stagingPath, {
|
|
269
|
+
recursive: true,
|
|
270
|
+
errorOnExist: true,
|
|
271
|
+
});
|
|
272
|
+
fs.writeFileSync(branchStoreManifestPath(stagingPath), `${JSON.stringify(expectedBranchStoreManifest(to), null, 2)}\n`, { mode: 0o600 });
|
|
273
|
+
fs.renameSync(sourcePath, backupPath);
|
|
274
|
+
writeMigrationJournal(journalPath, {
|
|
275
|
+
...journal,
|
|
276
|
+
state: "legacy_quarantined",
|
|
277
|
+
});
|
|
278
|
+
fs.renameSync(stagingPath, targetPath);
|
|
279
|
+
if (!branchStoreManifestMatches(targetPath, to)) {
|
|
280
|
+
throw new Error("migrated branch store manifest verification failed");
|
|
281
|
+
}
|
|
282
|
+
writeMigrationJournal(journalPath, {
|
|
283
|
+
...journal,
|
|
284
|
+
state: "target_published",
|
|
285
|
+
});
|
|
286
|
+
writeMigrationJournal(journalPath, { ...journal, state: "committed" });
|
|
287
|
+
}
|
|
288
|
+
catch (error) {
|
|
289
|
+
// Leave the hash-bound journal and any staging bytes for explicit crash
|
|
290
|
+
// recovery; never silently select a winner between source and target.
|
|
291
|
+
throw new Error(`Branch migration failed before authoritative completion; recover ${journalPath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
292
|
+
}
|
|
293
|
+
console.log(`Migrated branch KB to exact Git branch '${to}'.`);
|
|
294
|
+
console.log(`Legacy store preserved at ${backupPath}.`);
|
|
295
|
+
console.log(`Migration journal: ${journalPath}.`);
|
|
296
|
+
}
|
|
297
|
+
finally {
|
|
298
|
+
publicationLease.release();
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Rebuild an unreadable exact branch store from the current authored sources.
|
|
303
|
+
* The existing bytes are moved to a Kibi-owned recovery directory only after a
|
|
304
|
+
* clean staging store has been created successfully.
|
|
305
|
+
*/
|
|
306
|
+
export async function branchRecoverCommand(options = {}) {
|
|
307
|
+
const workspaceRoot = path.resolve(options.workspaceRoot ?? process.cwd());
|
|
308
|
+
const attachment = resolveBranchAttachment(workspaceRoot);
|
|
309
|
+
if ("error" in attachment) {
|
|
310
|
+
throw new Error(`Failed to resolve active branch: ${attachment.error}`);
|
|
311
|
+
}
|
|
312
|
+
if (attachment.kind !== "exact") {
|
|
313
|
+
throw new Error("branch recover requires an exact Git/KB attachment; migrate legacy storage before recovery.");
|
|
314
|
+
}
|
|
315
|
+
const inspection = inspectBranchStore(workspaceRoot, attachment.kbBranch);
|
|
316
|
+
if (inspection.state === "missing") {
|
|
317
|
+
throw new Error(`Branch KB is missing at ${inspection.path}; run 'kibi branch ensure' instead.`);
|
|
318
|
+
}
|
|
319
|
+
const stamp = new Date().toISOString().replaceAll(":", "-");
|
|
320
|
+
const backupPath = path.join(workspaceRoot, ".kb", "recovery", attachment.kbBranch, stamp);
|
|
321
|
+
console.log(`Branch KB recovery preview: ${attachment.kbBranch}`);
|
|
322
|
+
console.log(`Store: ${inspection.path}`);
|
|
323
|
+
console.log(`State: ${inspection.state}${inspection.errorCode ? ` (${inspection.errorCode})` : ""}`);
|
|
324
|
+
console.log(`Backup: ${backupPath}`);
|
|
325
|
+
console.log("Strategy: rebuild a clean journaled store from current authored sources.");
|
|
326
|
+
console.log("Git branch remains unchanged; no branch rename will be performed.");
|
|
327
|
+
if (!options.apply) {
|
|
328
|
+
console.log("Preview only. Re-run with --apply to create the backup and publish the rebuilt store.");
|
|
329
|
+
return;
|
|
330
|
+
}
|
|
331
|
+
const { syncCommand } = await import("./sync.js");
|
|
332
|
+
const result = await syncCommand({
|
|
333
|
+
rebuild: true,
|
|
334
|
+
recoveryBackupPath: backupPath,
|
|
335
|
+
workspaceRoot,
|
|
336
|
+
});
|
|
337
|
+
if (!result.success) {
|
|
338
|
+
throw new Error("Branch KB recovery did not complete successfully.");
|
|
339
|
+
}
|
|
340
|
+
// Reattach through the normal delta path after publishing the isolated
|
|
341
|
+
// generation. This establishes the current checkpoint/snapshot metadata on
|
|
342
|
+
// the recovered store, so recovery finishes fresh rather than merely
|
|
343
|
+
// structurally readable.
|
|
344
|
+
const checkpoint = await syncCommand({ workspaceRoot });
|
|
345
|
+
if (!checkpoint.success) {
|
|
346
|
+
throw new Error("Recovered branch KB could not establish a fresh checkpoint.");
|
|
347
|
+
}
|
|
348
|
+
const auditPath = path.join(workspaceRoot, ".kb", "migrations", `${attachment.kbBranch.replaceAll("/", "__")}.recovery.json`);
|
|
349
|
+
fs.mkdirSync(path.dirname(auditPath), { recursive: true });
|
|
350
|
+
fs.writeFileSync(auditPath, `${JSON.stringify({
|
|
351
|
+
version: 1,
|
|
352
|
+
branch: attachment.kbBranch,
|
|
353
|
+
recoveredAt: new Date().toISOString(),
|
|
354
|
+
priorState: inspection.state,
|
|
355
|
+
priorErrorCode: inspection.errorCode ?? null,
|
|
356
|
+
backupPath: path.relative(workspaceRoot, backupPath),
|
|
357
|
+
strategy: "rebuild_from_authored_sources",
|
|
358
|
+
}, null, 2)}\n`, "utf8");
|
|
359
|
+
console.log(`Recovered exact branch KB '${attachment.kbBranch}'.`);
|
|
360
|
+
console.log(`Original bytes preserved at ${backupPath}.`);
|
|
361
|
+
console.log(`Recovery audit: ${auditPath}`);
|
|
362
|
+
}
|
|
363
|
+
/** Restore the newest quarantined store for an exact branch identity. */
|
|
364
|
+
export async function branchRestoreCommand(options = {}) {
|
|
365
|
+
const workspaceRoot = path.resolve(options.workspaceRoot ?? process.cwd());
|
|
366
|
+
const branch = options.branch;
|
|
367
|
+
if (!branch || !isValidBranchName(branch)) {
|
|
368
|
+
throw new Error("branch restore requires a valid --branch identity");
|
|
369
|
+
}
|
|
370
|
+
const targetPath = branchStorePath(workspaceRoot, branch);
|
|
371
|
+
if (fs.existsSync(targetPath)) {
|
|
372
|
+
throw new Error(`Target branch store already exists: ${targetPath}`);
|
|
373
|
+
}
|
|
374
|
+
const keyRoot = path.join(workspaceRoot, ".kb", "quarantine", "branches", path.basename(targetPath));
|
|
375
|
+
const candidates = fs.existsSync(keyRoot)
|
|
376
|
+
? fs
|
|
377
|
+
.readdirSync(keyRoot, { withFileTypes: true })
|
|
378
|
+
.filter((entry) => entry.isDirectory())
|
|
379
|
+
.map((entry) => path.join(keyRoot, entry.name))
|
|
380
|
+
.sort()
|
|
381
|
+
.reverse()
|
|
382
|
+
: [];
|
|
383
|
+
const source = candidates.find((candidate) => {
|
|
384
|
+
try {
|
|
385
|
+
const metadata = JSON.parse(fs.readFileSync(path.join(candidate, "quarantine.json"), "utf8"));
|
|
386
|
+
return metadata.branch === branch;
|
|
387
|
+
}
|
|
388
|
+
catch {
|
|
389
|
+
return false;
|
|
390
|
+
}
|
|
391
|
+
});
|
|
392
|
+
if (!source)
|
|
393
|
+
throw new Error(`No quarantined store found for '${branch}'.`);
|
|
394
|
+
console.log(`Branch restore preview: ${branch}`);
|
|
395
|
+
console.log(`Source: ${source}`);
|
|
396
|
+
console.log(`Target: ${targetPath}`);
|
|
397
|
+
if (!options.apply) {
|
|
398
|
+
console.log("Preview only. Re-run with --apply to restore the store.");
|
|
399
|
+
return;
|
|
73
400
|
}
|
|
74
|
-
|
|
75
|
-
|
|
401
|
+
const manifest = readBranchStoreManifest(source);
|
|
402
|
+
if (manifest === null || !branchStoreManifestMatches(source, branch)) {
|
|
403
|
+
throw new Error(`Quarantined store identity mismatch for '${branch}'.`);
|
|
76
404
|
}
|
|
405
|
+
fs.mkdirSync(path.dirname(targetPath), { recursive: true });
|
|
406
|
+
fs.renameSync(source, targetPath);
|
|
407
|
+
console.log(`Restored exact branch store for '${branch}'.`);
|
|
77
408
|
}
|
|
78
409
|
export default branchEnsureCommand;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAqFA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAmaD,wBAAsB,YAAY,CAChC,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CA4W/B"}
|
package/dist/commands/check.js
CHANGED
|
@@ -18,14 +18,14 @@
|
|
|
18
18
|
import { existsSync } from "node:fs";
|
|
19
19
|
import * as path from "node:path";
|
|
20
20
|
import { EngineClient } from "../engine.js";
|
|
21
|
-
import {
|
|
21
|
+
import { isCliTraceOrDebugEnabled } from "../env.js";
|
|
22
22
|
import { extractFromManifest, extractFromManifestString, } from "../extractors/manifest.js";
|
|
23
23
|
import { extractFromMarkdownString, } from "../extractors/markdown.js";
|
|
24
24
|
import { PrologProcess } from "../prolog.js";
|
|
25
25
|
import { escapeAtom, parseTriples, parseViolationRows, } from "../prolog/codec.js";
|
|
26
26
|
import { createSemanticReviewDiagnostics, createSymbolGranularityDiagnostics, createSymbolQualityDiagnostics, hasBlockingImpactDiagnostics, } from "../public/impact-diagnostics.js";
|
|
27
27
|
import { executeCheck } from "../public/operations/check-executor.js";
|
|
28
|
-
import { KIBI_NO_IMPACT_DECLARATION, KIBI_SYMBOLS_MANIFEST_PATH, } from "../traceability/evidence-model.js";
|
|
28
|
+
import { KIBI_NO_IMPACT_DECLARATION, KIBI_SYMBOLS_MANIFEST_PATH, KIBI_SYMBOL_COORDINATES_PATH, } from "../traceability/evidence-model.js";
|
|
29
29
|
import { getStagedFiles } from "../traceability/git-staged.js";
|
|
30
30
|
import { validateStagedMarkdown } from "../traceability/markdown-validate.js";
|
|
31
31
|
import { collectStagedKibiDiagnostics, } from "../traceability/staged-diagnostics.js";
|
|
@@ -34,9 +34,9 @@ import { assessStagedSymbolsManifest, collectStagedAuthoredSymbolsManifestEviden
|
|
|
34
34
|
import { createManifestLookupSentinelKey, extractSymbolsFromStagedFile, } from "../traceability/symbol-extract.js";
|
|
35
35
|
import { cleanupTempKb, consultOverlay, createOverlayFacts, createTempKb, projectStagedEntities, } from "../traceability/temp-kb.js";
|
|
36
36
|
import { formatViolations as formatStagedViolations, validateStagedSymbols, } from "../traceability/validate.js";
|
|
37
|
-
import {
|
|
37
|
+
import { resolveBranchAttachment } from "../utils/branch-resolver.js";
|
|
38
|
+
import { CANONICAL_ENTITY_PATHS } from "../utils/kb-paths.js";
|
|
38
39
|
import { safeCleanupProlog } from "../utils/prolog-cleanup.js";
|
|
39
|
-
import { getCurrentBranch } from "./init-helpers.js";
|
|
40
40
|
function getMatchGroup(match, index = 1) {
|
|
41
41
|
const value = match?.[index];
|
|
42
42
|
return typeof value === "string" ? value : null;
|
|
@@ -70,9 +70,8 @@ function buildManifestLookup(stagedFiles) {
|
|
|
70
70
|
// Pre-populate lookup from working-tree manifests so that code-only changes
|
|
71
71
|
// (where symbols.yaml is not staged) still resolve to the correct symbol IDs
|
|
72
72
|
// and relationships already defined on disk.
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
if (symbolsRelPath) {
|
|
73
|
+
const symbolsRelPath = CANONICAL_ENTITY_PATHS.symbols;
|
|
74
|
+
{
|
|
76
75
|
const absSymbolsPath = path.resolve(process.cwd(), symbolsRelPath);
|
|
77
76
|
if (existsSync(absSymbolsPath)) {
|
|
78
77
|
try {
|
|
@@ -104,10 +103,8 @@ function buildManifestLookup(stagedFiles) {
|
|
|
104
103
|
}
|
|
105
104
|
}
|
|
106
105
|
const stagedManifestFiles = stagedFiles.filter((file) => file.content !== undefined &&
|
|
107
|
-
(file.path.
|
|
108
|
-
file.path.
|
|
109
|
-
file.path === "symbols.yaml" ||
|
|
110
|
-
file.path === "symbols.yml"));
|
|
106
|
+
(file.path === CANONICAL_ENTITY_PATHS.symbols ||
|
|
107
|
+
file.path === ".kb/symbols.yml"));
|
|
111
108
|
for (const manifestFile of stagedManifestFiles) {
|
|
112
109
|
manifestLookup.set(createManifestLookupSentinelKey(manifestFile.path), {
|
|
113
110
|
id: manifestFile.path,
|
|
@@ -173,29 +170,9 @@ function isKibiEntityType(value) {
|
|
|
173
170
|
return KIBI_ENTITY_TYPES.has(value);
|
|
174
171
|
}
|
|
175
172
|
function isStagedManifestPath(filePath) {
|
|
176
|
-
|
|
177
|
-
filePath.
|
|
178
|
-
filePath
|
|
179
|
-
filePath === "symbols.yaml" ||
|
|
180
|
-
filePath === "symbols.yml" ||
|
|
181
|
-
filePath === "symbol-coordinates.yaml") {
|
|
182
|
-
return true;
|
|
183
|
-
}
|
|
184
|
-
try {
|
|
185
|
-
const config = loadConfig(process.cwd());
|
|
186
|
-
if (config.paths.symbols) {
|
|
187
|
-
const relSymbols = config.paths.symbols;
|
|
188
|
-
const configuredBase = relSymbols.split(/[\\/]/).pop();
|
|
189
|
-
if (filePath === relSymbols ||
|
|
190
|
-
(configuredBase && filePath.endsWith(`/${configuredBase}`))) {
|
|
191
|
-
return true;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
catch {
|
|
196
|
-
// ignore config read errors
|
|
197
|
-
}
|
|
198
|
-
return false;
|
|
173
|
+
return (filePath === CANONICAL_ENTITY_PATHS.symbols ||
|
|
174
|
+
filePath === ".kb/symbols.yml" ||
|
|
175
|
+
filePath === KIBI_SYMBOL_COORDINATES_PATH);
|
|
199
176
|
}
|
|
200
177
|
function isTestOnlySourcePath(filePath) {
|
|
201
178
|
return (filePath.startsWith("tests/") ||
|
|
@@ -363,28 +340,21 @@ export async function checkCommand(options) {
|
|
|
363
340
|
let prolog = null;
|
|
364
341
|
let engine = null;
|
|
365
342
|
let attached = false;
|
|
366
|
-
let resolvedBranch = "
|
|
343
|
+
let resolvedBranch = "";
|
|
367
344
|
try {
|
|
368
345
|
let resolvedKbPath = "";
|
|
369
346
|
if (options.kbPath) {
|
|
370
347
|
resolvedKbPath = options.kbPath;
|
|
371
348
|
}
|
|
372
349
|
else {
|
|
373
|
-
const
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
}
|
|
379
|
-
catch {
|
|
380
|
-
branch = undefined;
|
|
381
|
-
}
|
|
350
|
+
const attachment = resolveBranchAttachment(process.cwd());
|
|
351
|
+
if ("error" in attachment)
|
|
352
|
+
throw new Error(attachment.error);
|
|
353
|
+
resolvedBranch = attachment.kbBranch;
|
|
354
|
+
if (attachment.migrationRequired) {
|
|
355
|
+
console.warn(`Warning: reading legacy KB attachment ${attachment.gitBranch} -> ${attachment.kbBranch}; migrate before writes or sync.`);
|
|
382
356
|
}
|
|
383
|
-
|
|
384
|
-
branch = envBranch || "develop";
|
|
385
|
-
resolvedBranch = branch;
|
|
386
|
-
// fallback to main if develop isn't present? keep path consistent
|
|
387
|
-
resolvedKbPath = path.join(process.cwd(), ".kb/branches", branch || "main");
|
|
357
|
+
resolvedKbPath = attachment.storePath;
|
|
388
358
|
}
|
|
389
359
|
if (options.staged) {
|
|
390
360
|
const minLinks = options.minLinks ? Number(options.minLinks) : 1;
|
|
@@ -396,7 +366,7 @@ export async function checkCommand(options) {
|
|
|
396
366
|
return { exitCode: 0 };
|
|
397
367
|
}
|
|
398
368
|
const { manifestLookup, manifestResults, authoredSymbolResults, stagedAuthoredSymbolResults, } = buildManifestLookup(stagedFiles);
|
|
399
|
-
const symbolsManifestPath =
|
|
369
|
+
const symbolsManifestPath = KIBI_SYMBOLS_MANIFEST_PATH;
|
|
400
370
|
const sourceFiles = stagedFiles.filter((file) => !file.path.endsWith(".md") && !isStagedManifestPath(file.path));
|
|
401
371
|
const markdownFiles = stagedFiles.filter((f) => f.path.endsWith(".md"));
|
|
402
372
|
const markdownErrors = [];
|
|
@@ -1027,20 +997,3 @@ async function checkSymbolCoverage(prolog) {
|
|
|
1027
997
|
}
|
|
1028
998
|
return violations;
|
|
1029
999
|
}
|
|
1030
|
-
async function checkSymbolTraceability(prolog, requireAdr) {
|
|
1031
|
-
const violations = [];
|
|
1032
|
-
const requireAdrStr = requireAdr ? "true" : "false";
|
|
1033
|
-
const result = await prolog.query(`findall(violation(Rule, EntityId, Desc, Sugg, Src),
|
|
1034
|
-
checks:symbol_traceability_violation(${requireAdrStr}, violation(Rule, EntityId, Desc, Sugg, Src)),
|
|
1035
|
-
Violations)`);
|
|
1036
|
-
if (!result.success || !result.bindings.Violations) {
|
|
1037
|
-
return violations;
|
|
1038
|
-
}
|
|
1039
|
-
const violationsStr = result.bindings.Violations;
|
|
1040
|
-
if (violationsStr && violationsStr !== "[]") {
|
|
1041
|
-
for (const v of parseViolationRows(violationsStr)) {
|
|
1042
|
-
violations.push(v);
|
|
1043
|
-
}
|
|
1044
|
-
}
|
|
1045
|
-
return violations;
|
|
1046
|
-
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery-shared.d.ts","sourceRoot":"","sources":["../../src/commands/discovery-shared.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"discovery-shared.d.ts","sourceRoot":"","sources":["../../src/commands/discovery-shared.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,EACL,KAAK,cAAc,EAEpB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAMnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3B;AAED,qDAAqD;AACrD,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,aAAa,CAAC;IAC3D,WAAW,EAAE,OAAO,eAAe,CAAC;CACrC;AAGD,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,OAAO,EACxD,IAAI,EAAE,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,cAAmB,6EAG7B;AAGD,wBAAsB,wBAAwB,CAAC,CAAC,EAC9C,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,EAC/C,IAAI,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAC5B,OAAO,CAAC,CAAC,CAAC,CA+CZ;AAID,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAI5D;AAGD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAC5B,MAAM,CAGR;AAGD,wBAAsB,kBAAkB,CAAC,CAAC,EACxC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAC5B,OAAO,CAAC,CAAC,CAAC,CAwBZ;AAGD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,EACpC,UAAU,EAAE,OAAO,EACnB,YAAY,EAAE,MAAM,GACnB,IAAI,CAQN"}
|