kibi-cli 0.18.1 → 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-json-command.d.ts +1 -2
- package/dist/cli-json-command.d.ts.map +1 -1
- package/dist/cli-json-command.js +2 -34
- package/dist/cli-operation-loader.d.ts +3 -0
- package/dist/cli-operation-loader.d.ts.map +1 -0
- package/dist/cli-operation-loader.js +91 -0
- package/dist/cli-operation-metadata.d.ts +94 -0
- package/dist/cli-operation-metadata.d.ts.map +1 -0
- package/dist/cli-operation-metadata.js +121 -0
- package/dist/cli-protocol.d.ts +1 -1
- package/dist/cli-protocol.d.ts.map +1 -1
- package/dist/cli-protocol.js +42 -11
- package/dist/cli-register-foundation.d.ts.map +1 -1
- package/dist/cli-register-foundation.js +28 -19
- package/dist/cli-register-json.d.ts +3 -0
- package/dist/cli-register-json.d.ts.map +1 -0
- package/dist/cli-register-json.js +35 -0
- package/dist/cli-register-maintenance.d.ts.map +1 -1
- package/dist/cli-register-maintenance.js +60 -13
- package/dist/cli-register-reporting.d.ts.map +1 -1
- package/dist/cli-register-reporting.js +23 -14
- package/dist/cli-register-skills.d.ts.map +1 -1
- package/dist/cli-register-skills.js +8 -6
- 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 +3 -1
- 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 +48 -77
- package/dist/commands/coverage.js +1 -1
- package/dist/commands/discovery-shared.d.ts +2 -1
- package/dist/commands/discovery-shared.d.ts.map +1 -1
- package/dist/commands/discovery-shared.js +38 -25
- 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 +8 -0
- package/dist/commands/engine.d.ts.map +1 -0
- package/dist/commands/engine.js +103 -0
- package/dist/commands/gaps.js +1 -1
- 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/graph.js +1 -1
- 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/query.d.ts.map +1 -1
- package/dist/commands/query.js +3 -1
- 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/search.d.ts.map +1 -1
- package/dist/commands/search.js +3 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +2 -1
- package/dist/commands/sync/cache.d.ts +26 -3
- package/dist/commands/sync/cache.d.ts.map +1 -1
- package/dist/commands/sync/cache.js +141 -5
- 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 +10 -1
- package/dist/commands/sync/persistence.d.ts.map +1 -1
- package/dist/commands/sync/persistence.js +223 -44
- package/dist/commands/sync/staging.d.ts +10 -1
- package/dist/commands/sync/staging.d.ts.map +1 -1
- package/dist/commands/sync/staging.js +84 -1
- package/dist/commands/sync.d.ts +6 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +710 -48
- 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-daemon.d.ts +3 -0
- package/dist/engine-daemon.d.ts.map +1 -0
- package/dist/engine-daemon.js +34 -0
- package/dist/engine.d.ts +156 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +1625 -0
- 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 +2 -0
- package/dist/extractors/relationships.d.ts.map +1 -1
- package/dist/extractors/relationships.js +16 -17
- 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 +8 -0
- package/dist/prolog.d.ts.map +1 -1
- package/dist/prolog.js +66 -16
- 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-entities.d.ts.map +1 -1
- package/dist/public/operations/discovery-entities.js +3 -2
- 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 +246 -9
- 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 +55 -6
- 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 +126 -5
- 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 +40 -10
- 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 +98 -42
- 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 +51 -8
- 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-entities.ts +3 -2
- package/src/public/operations/discovery-executors.ts +343 -15
- 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 +73 -6
- 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 +130 -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 +40 -10
- 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
|
@@ -114,6 +114,117 @@ function serializeTypedFactFields(entity) {
|
|
|
114
114
|
}
|
|
115
115
|
return fields;
|
|
116
116
|
}
|
|
117
|
+
function parsePrologList(value) {
|
|
118
|
+
if (typeof value !== "string")
|
|
119
|
+
return [];
|
|
120
|
+
const text = value.trim();
|
|
121
|
+
if (text.length < 2 || !text.startsWith("[") || !text.endsWith("]")) {
|
|
122
|
+
return [];
|
|
123
|
+
}
|
|
124
|
+
const body = text.slice(1, -1).trim();
|
|
125
|
+
if (body.length === 0)
|
|
126
|
+
return [];
|
|
127
|
+
const values = [];
|
|
128
|
+
// IDs are atoms in the Kibi schema. Keep the parser deliberately narrow so
|
|
129
|
+
// a malformed response cannot turn into a destructive path or goal.
|
|
130
|
+
for (const part of body.split(",")) {
|
|
131
|
+
const valuePart = part.trim();
|
|
132
|
+
if (!valuePart)
|
|
133
|
+
continue;
|
|
134
|
+
if (valuePart.startsWith("'") && valuePart.endsWith("'")) {
|
|
135
|
+
values.push(valuePart.slice(1, -1).replaceAll("''", "'"));
|
|
136
|
+
}
|
|
137
|
+
else if (/^[A-Za-z0-9_.:/@+-]+$/.test(valuePart)) {
|
|
138
|
+
values.push(valuePart);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return values;
|
|
142
|
+
}
|
|
143
|
+
async function entityIdsForSource(prolog, sourceFile) {
|
|
144
|
+
const candidates = new Set([
|
|
145
|
+
sourceFile,
|
|
146
|
+
path.relative(process.cwd(), sourceFile),
|
|
147
|
+
path.basename(sourceFile),
|
|
148
|
+
]);
|
|
149
|
+
const ids = new Set();
|
|
150
|
+
for (const candidate of candidates) {
|
|
151
|
+
const result = await prolog.query(`kb_entities_by_source(${toPrologString(candidate)}, Ids)`);
|
|
152
|
+
if (result.success) {
|
|
153
|
+
for (const id of parsePrologList(result.bindings?.Ids))
|
|
154
|
+
ids.add(id);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return [...ids];
|
|
158
|
+
}
|
|
159
|
+
/** Remove entities owned by changed/deleted source files before re-upserting. */
|
|
160
|
+
export async function retractEntitiesForSources(prolog, sourceFiles) {
|
|
161
|
+
const ids = new Set();
|
|
162
|
+
for (const sourceFile of sourceFiles) {
|
|
163
|
+
for (const id of await entityIdsForSource(prolog, sourceFile))
|
|
164
|
+
ids.add(id);
|
|
165
|
+
}
|
|
166
|
+
if (ids.size === 0)
|
|
167
|
+
return 0;
|
|
168
|
+
const goals = [...ids].map((id) => `kb_retract_entity(${toPrologAtom(id)})`);
|
|
169
|
+
const batchRunner = prolog.queryBatch?.bind(prolog);
|
|
170
|
+
if (batchRunner) {
|
|
171
|
+
const result = await batchRunner(goals);
|
|
172
|
+
if (!result.success) {
|
|
173
|
+
throw new Error(result.error ?? "Failed to retract changed source entities");
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
for (const goal of goals) {
|
|
178
|
+
const result = await prolog.query(goal);
|
|
179
|
+
if (!result.success) {
|
|
180
|
+
throw new Error(result.error ?? "Failed to retract changed source entity");
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return ids.size;
|
|
185
|
+
}
|
|
186
|
+
/** Remove an exact entity delta without scanning every indexed source. */
|
|
187
|
+
export async function retractEntitiesById(prolog, entityIds) {
|
|
188
|
+
const ids = [...new Set(entityIds)];
|
|
189
|
+
if (ids.length === 0)
|
|
190
|
+
return 0;
|
|
191
|
+
const goals = ids.map((id) => `kb_retract_entity(${toPrologAtom(id)})`);
|
|
192
|
+
const batchRunner = prolog.queryBatch?.bind(prolog);
|
|
193
|
+
const result = batchRunner
|
|
194
|
+
? await batchRunner(goals)
|
|
195
|
+
: await prolog.query(`rdf_transaction((${goals.join(", ")}))`);
|
|
196
|
+
if (!result.success) {
|
|
197
|
+
throw new Error(result.error ?? "Failed to retract entity delta");
|
|
198
|
+
}
|
|
199
|
+
return ids.length;
|
|
200
|
+
}
|
|
201
|
+
/** Clear outgoing inline relationships for entities whose payload changed. */
|
|
202
|
+
export async function retractEntityRelationshipsById(prolog, entityIds) {
|
|
203
|
+
const ids = [...new Set(entityIds)];
|
|
204
|
+
if (ids.length === 0)
|
|
205
|
+
return;
|
|
206
|
+
const goals = ids.map((id) => `kb_retract_entity_relationships(${toPrologAtom(id)})`);
|
|
207
|
+
const batchRunner = prolog.queryBatch?.bind(prolog);
|
|
208
|
+
const result = batchRunner
|
|
209
|
+
? await batchRunner(goals)
|
|
210
|
+
: await prolog.query(`rdf_transaction((${goals.join(", ")}))`);
|
|
211
|
+
if (!result.success) {
|
|
212
|
+
throw new Error(result.error ?? "Failed to retract relationship delta");
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
export async function retractRelationships(prolog, relationships) {
|
|
216
|
+
if (relationships.length === 0)
|
|
217
|
+
return 0;
|
|
218
|
+
const goals = relationships.map((relationship) => `kb_retract_relationship(${toPrologAtom(relationship.type)}, ${toPrologAtom(relationship.from)}, ${toPrologAtom(relationship.to)})`);
|
|
219
|
+
const batchRunner = prolog.queryBatch?.bind(prolog);
|
|
220
|
+
const result = batchRunner
|
|
221
|
+
? await batchRunner(goals)
|
|
222
|
+
: await prolog.query(`rdf_transaction((${goals.join(", ")}))`);
|
|
223
|
+
if (!result.success) {
|
|
224
|
+
throw new Error(result.error ?? "Failed to retract relationship shard delta");
|
|
225
|
+
}
|
|
226
|
+
return relationships.length;
|
|
227
|
+
}
|
|
117
228
|
function isQueryFailedError(error) {
|
|
118
229
|
const lowered = error.toLowerCase();
|
|
119
230
|
// Only match session-corruption errors that might benefit from a Prolog process restart.
|
|
@@ -140,21 +251,26 @@ async function tryResetPrologProcess(prolog) {
|
|
|
140
251
|
}
|
|
141
252
|
export async function persistEntities(
|
|
142
253
|
// implements REQ-009
|
|
143
|
-
prolog, results, entityIds) {
|
|
254
|
+
prolog, results, entityIds, options = {}) {
|
|
144
255
|
let entityCount = 0;
|
|
145
256
|
let kbModified = false;
|
|
146
257
|
const existingEntityIds = new Set();
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
258
|
+
const pendingEntityGoals = [];
|
|
259
|
+
if (options.loadExistingEntityIds !== false) {
|
|
260
|
+
// Generation rebuilds need the complete endpoint inventory for local
|
|
261
|
+
// relationship validation. Journal deltas rely on Prolog's authoritative
|
|
262
|
+
// endpoint checks and must not materialize 10,000 IDs for one upsert.
|
|
263
|
+
const existingIdsResult = await prolog.query("findall(Id, kb_entity(Id, _, _), ExistingIds)");
|
|
264
|
+
if (existingIdsResult.success && existingIdsResult.bindings?.ExistingIds) {
|
|
265
|
+
const raw = existingIdsResult.bindings.ExistingIds;
|
|
266
|
+
const cleaned = raw.trim().replace(/^\[/, "").replace(/\]$/, "");
|
|
267
|
+
if (cleaned) {
|
|
268
|
+
for (const atom of cleaned.split(",")) {
|
|
269
|
+
const id = atom.trim().replace(/^'|'$/g, "");
|
|
270
|
+
if (id) {
|
|
271
|
+
entityIds.add(id);
|
|
272
|
+
existingEntityIds.add(id);
|
|
273
|
+
}
|
|
158
274
|
}
|
|
159
275
|
}
|
|
160
276
|
}
|
|
@@ -253,24 +369,65 @@ prolog, results, entityIds) {
|
|
|
253
369
|
if (entity.verification_perspective !== undefined) {
|
|
254
370
|
props.push(`verification_perspective=${toPrologAtom(entity.verification_perspective)}`);
|
|
255
371
|
}
|
|
372
|
+
if (entity.verification_contract !== undefined) {
|
|
373
|
+
props.push(`verification_contract=${toPrologString(JSON.stringify(entity.verification_contract))}`);
|
|
374
|
+
}
|
|
256
375
|
if (entity.verification_receipts !== undefined) {
|
|
257
376
|
props.push(`verification_receipts=${toPrologString(JSON.stringify(entity.verification_receipts))}`);
|
|
258
377
|
}
|
|
259
378
|
}
|
|
260
379
|
const propsList = `[${props.join(", ")}]`;
|
|
261
380
|
const goal = `kb_assert_entity(${entity.type}, ${propsList})`;
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
kbModified = true;
|
|
381
|
+
pendingEntityGoals.push({
|
|
382
|
+
entity,
|
|
383
|
+
sourceFile: sourceFile ?? entity.source,
|
|
384
|
+
goal,
|
|
385
|
+
});
|
|
268
386
|
}
|
|
269
387
|
catch (error) {
|
|
270
388
|
const message = error instanceof Error ? error.message : String(error);
|
|
271
389
|
throw new Error(`Failed to upsert entity ${entity.id}: ${message}${semanticEntityContext(entity, sourceFile ?? entity.source)}`);
|
|
272
390
|
}
|
|
273
391
|
}
|
|
392
|
+
// Persist a changed source as a bounded set of RDF edits. This retains the
|
|
393
|
+
// per-entity fallback diagnostics while avoiding one Prolog round-trip and
|
|
394
|
+
// journal flush for every symbol/document in the common case.
|
|
395
|
+
const batchRunner = prolog.queryBatch?.bind(prolog);
|
|
396
|
+
const batchSize = 250;
|
|
397
|
+
for (let offset = 0; offset < pendingEntityGoals.length; offset += batchSize) {
|
|
398
|
+
const chunk = pendingEntityGoals.slice(offset, offset + batchSize);
|
|
399
|
+
const result = batchRunner
|
|
400
|
+
? await batchRunner(chunk.map(({ goal }) => goal))
|
|
401
|
+
: { success: false, error: "batch unsupported" };
|
|
402
|
+
if (result.success) {
|
|
403
|
+
entityCount += chunk.length;
|
|
404
|
+
kbModified = true;
|
|
405
|
+
continue;
|
|
406
|
+
}
|
|
407
|
+
// A malformed entity should retain the precise existing error. The batch
|
|
408
|
+
// transaction has rolled back, so retrying sequentially is safe.
|
|
409
|
+
for (const item of chunk) {
|
|
410
|
+
try {
|
|
411
|
+
const single = await prolog.query(item.goal);
|
|
412
|
+
if (!single.success) {
|
|
413
|
+
const detail = single.error ||
|
|
414
|
+
(batchRunner ? result.error : undefined) ||
|
|
415
|
+
`kb_assert_entity failed for ${item.entity.id}`;
|
|
416
|
+
throw new Error(`Failed to upsert entity ${item.entity.id}: ${detail}${semanticEntityContext(item.entity, item.sourceFile)}`);
|
|
417
|
+
}
|
|
418
|
+
entityCount++;
|
|
419
|
+
kbModified = true;
|
|
420
|
+
}
|
|
421
|
+
catch (error) {
|
|
422
|
+
if (error instanceof Error &&
|
|
423
|
+
error.message.startsWith("Failed to upsert entity ")) {
|
|
424
|
+
throw error;
|
|
425
|
+
}
|
|
426
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
427
|
+
throw new Error(`Failed to upsert entity ${item.entity.id}: ${message}${semanticEntityContext(item.entity, item.sourceFile)}`);
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
}
|
|
274
431
|
return { entityCount, kbModified };
|
|
275
432
|
}
|
|
276
433
|
function semanticEntityContext(entity, sourceFile) {
|
|
@@ -306,25 +463,14 @@ export async function persistRelationships(prolog, results, shardRelationships)
|
|
|
306
463
|
}
|
|
307
464
|
// Collect all relationships from results and shards
|
|
308
465
|
const failedRelationships = [];
|
|
466
|
+
const pendingRelationships = [];
|
|
309
467
|
for (const { relationships } of results) {
|
|
310
468
|
for (const rel of relationships) {
|
|
311
469
|
try {
|
|
312
470
|
const fromId = idLookup.get(rel.from) || rel.from;
|
|
313
471
|
const toId = idLookup.get(rel.to) || rel.to;
|
|
314
472
|
const goal = `kb_assert_relationship(${toPrologAtom(rel.type)}, ${toPrologAtom(fromId)}, ${toPrologAtom(toId)}, [])`;
|
|
315
|
-
|
|
316
|
-
if (result.success) {
|
|
317
|
-
relCount++;
|
|
318
|
-
kbModified = true;
|
|
319
|
-
}
|
|
320
|
-
else {
|
|
321
|
-
failedRelationships.push({
|
|
322
|
-
rel,
|
|
323
|
-
fromId,
|
|
324
|
-
toId,
|
|
325
|
-
error: result.error || "Unknown error",
|
|
326
|
-
});
|
|
327
|
-
}
|
|
473
|
+
pendingRelationships.push({ rel, fromId, toId, goal });
|
|
328
474
|
}
|
|
329
475
|
catch (error) {
|
|
330
476
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -338,19 +484,12 @@ export async function persistRelationships(prolog, results, shardRelationships)
|
|
|
338
484
|
for (const rel of shardRelationships) {
|
|
339
485
|
try {
|
|
340
486
|
const goal = `kb_assert_relationship(${toPrologAtom(rel.type)}, ${toPrologAtom(rel.from)}, ${toPrologAtom(rel.to)}, [])`;
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
failedRelationships.push({
|
|
348
|
-
rel,
|
|
349
|
-
fromId: rel.from,
|
|
350
|
-
toId: rel.to,
|
|
351
|
-
error: result.error || "Unknown error",
|
|
352
|
-
});
|
|
353
|
-
}
|
|
487
|
+
pendingRelationships.push({
|
|
488
|
+
rel,
|
|
489
|
+
fromId: rel.from,
|
|
490
|
+
toId: rel.to,
|
|
491
|
+
goal,
|
|
492
|
+
});
|
|
354
493
|
}
|
|
355
494
|
catch (error) {
|
|
356
495
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -362,6 +501,46 @@ export async function persistRelationships(prolog, results, shardRelationships)
|
|
|
362
501
|
});
|
|
363
502
|
}
|
|
364
503
|
}
|
|
504
|
+
const relationshipBatchRunner = prolog.queryBatch?.bind(prolog);
|
|
505
|
+
const relationshipBatchSize = 250;
|
|
506
|
+
for (let offset = 0; offset < pendingRelationships.length; offset += relationshipBatchSize) {
|
|
507
|
+
const chunk = pendingRelationships.slice(offset, offset + relationshipBatchSize);
|
|
508
|
+
const batch = relationshipBatchRunner
|
|
509
|
+
? await relationshipBatchRunner(chunk.map(({ goal }) => goal))
|
|
510
|
+
: { success: false, error: "batch unsupported" };
|
|
511
|
+
if (batch.success) {
|
|
512
|
+
relCount += chunk.length;
|
|
513
|
+
kbModified = true;
|
|
514
|
+
continue;
|
|
515
|
+
}
|
|
516
|
+
for (const item of chunk) {
|
|
517
|
+
try {
|
|
518
|
+
const single = await prolog.query(item.goal);
|
|
519
|
+
if (single.success) {
|
|
520
|
+
relCount++;
|
|
521
|
+
kbModified = true;
|
|
522
|
+
}
|
|
523
|
+
else {
|
|
524
|
+
failedRelationships.push({
|
|
525
|
+
rel: item.rel,
|
|
526
|
+
fromId: item.fromId,
|
|
527
|
+
toId: item.toId,
|
|
528
|
+
error: single.error ||
|
|
529
|
+
(relationshipBatchRunner ? batch.error : undefined) ||
|
|
530
|
+
"Unknown error",
|
|
531
|
+
});
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
catch (error) {
|
|
535
|
+
failedRelationships.push({
|
|
536
|
+
rel: item.rel,
|
|
537
|
+
fromId: item.fromId,
|
|
538
|
+
toId: item.toId,
|
|
539
|
+
error: error instanceof Error ? error.message : String(error),
|
|
540
|
+
});
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
}
|
|
365
544
|
// Retry failed relationships
|
|
366
545
|
const retryCount = 3;
|
|
367
546
|
let resetAttempted = false;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, renameSync, rmSync } from "node:fs";
|
|
1
|
+
import { existsSync, mkdirSync, renameSync, rmSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { copyFileSync } from "node:fs";
|
|
3
3
|
import fg from "fast-glob";
|
|
4
4
|
import { copyCleanSnapshot } from "../../utils/branch-resolver.js";
|
|
@@ -13,11 +13,20 @@ interface StagingDeps {
|
|
|
13
13
|
moduleDir: string;
|
|
14
14
|
renameSync: typeof renameSync;
|
|
15
15
|
rmSync: typeof rmSync;
|
|
16
|
+
writeFileSync: typeof writeFileSync;
|
|
16
17
|
}
|
|
17
18
|
export declare function createUniqueStagingPath(currentBranch: string, rootDir: string, pid?: number, now?: number): string;
|
|
18
19
|
export declare function cleanupAbandonedStagingDirectories(stagingPath: string, deps?: Partial<StagingDeps>): Promise<void>;
|
|
19
20
|
export declare function prepareStagingEnvironment(stagingPath: string, livePath: string, rebuild: boolean, deps?: Partial<StagingDeps>): Promise<void>;
|
|
20
21
|
export declare function atomicPublish(stagingPath: string, livePath: string, deps?: Partial<StagingDeps>): void;
|
|
22
|
+
/**
|
|
23
|
+
* Publish a rebuilt journal generation without replacing the branch directory.
|
|
24
|
+
* The legacy backup, sync metadata, and sentinel stay in place; only the
|
|
25
|
+
* journal database and CURRENT pointer move. A short-lived rollback pair is
|
|
26
|
+
* retained until both moves succeed so an interrupted publication can be
|
|
27
|
+
* repaired on the next engine start.
|
|
28
|
+
*/
|
|
29
|
+
export declare function atomicPublishGeneration(stagingPath: string, livePath: string, deps?: Partial<StagingDeps>): void;
|
|
21
30
|
export declare function cleanupStaging(stagingPath: string, deps?: Partial<StagingDeps>): void;
|
|
22
31
|
export {};
|
|
23
32
|
//# sourceMappingURL=staging.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"staging.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/staging.ts"],"names":[],"mappings":"AAkBA,OAAO,
|
|
1
|
+
{"version":3,"file":"staging.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/staging.ts"],"names":[],"mappings":"AAkBA,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,MAAM,EACN,aAAa,EACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,UAAU,WAAW;IACnB,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IAC5C,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,EAAE,EAAE,OAAO,EAAE,CAAC;IACd,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,MAAM,EAAE,OAAO,MAAM,CAAC;IACtB,aAAa,EAAE,OAAO,aAAa,CAAC;CACrC;AA+BD,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,GAAG,SAAc,EACjB,GAAG,SAAa,GACf,MAAM,CAOR;AAGD,wBAAsB,kCAAkC,CACtD,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC1B,OAAO,CAAC,IAAI,CAAC,CAqDf;AAED,wBAAsB,yBAAyB,CAE7C,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,EAChB,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC1B,OAAO,CAAC,IAAI,CAAC,CA6Cf;AA0CD,wBAAgB,aAAa,CAE3B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC1B,IAAI,CAeN;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC1B,IAAI,CA6DN;AAED,wBAAgB,cAAc,CAE5B,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC1B,IAAI,CAKN"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
You should have received a copy of the GNU Affero General Public License
|
|
16
16
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
17
|
*/
|
|
18
|
-
import { existsSync, mkdirSync, renameSync, rmSync } from "node:fs";
|
|
18
|
+
import { existsSync, mkdirSync, renameSync, rmSync, writeFileSync, } from "node:fs";
|
|
19
19
|
import { copyFileSync } from "node:fs";
|
|
20
20
|
import * as path from "node:path";
|
|
21
21
|
import fg from "fast-glob";
|
|
@@ -42,6 +42,7 @@ function resolveDeps(overrides) {
|
|
|
42
42
|
moduleDir: import.meta.dirname,
|
|
43
43
|
renameSync,
|
|
44
44
|
rmSync,
|
|
45
|
+
writeFileSync,
|
|
45
46
|
...overrides,
|
|
46
47
|
};
|
|
47
48
|
}
|
|
@@ -104,6 +105,22 @@ stagingPath, livePath, rebuild, deps) {
|
|
|
104
105
|
// Start fresh with schema only
|
|
105
106
|
await copySchemaToStaging(stagingPath, resolved);
|
|
106
107
|
}
|
|
108
|
+
// Every new staging generation uses the journaled store format. This also
|
|
109
|
+
// makes `--rebuild` publish a native RDF database instead of recreating the
|
|
110
|
+
// legacy full-snapshot path.
|
|
111
|
+
const markerPath = path.join(stagingPath, "storage.json");
|
|
112
|
+
const canWriteMetadata = deps === undefined || deps.writeFileSync !== undefined;
|
|
113
|
+
if (canWriteMetadata &&
|
|
114
|
+
resolved.existsSync(stagingPath) &&
|
|
115
|
+
!resolved.existsSync(markerPath)) {
|
|
116
|
+
resolved.mkdirSync(path.join(stagingPath, "rdf"), { recursive: true });
|
|
117
|
+
resolved.writeFileSync(markerPath, '{"format":"kibi.rdf-journal.v1","schemaVersion":1}\n', { mode: 0o600 });
|
|
118
|
+
const generation = rebuild
|
|
119
|
+
? `generation-${process.pid}-${Date.now()}`
|
|
120
|
+
: "generation-1";
|
|
121
|
+
resolved.writeFileSync(path.join(stagingPath, "CURRENT"), `${generation}:0\n`, { mode: 0o600 });
|
|
122
|
+
resolved.writeFileSync(path.join(stagingPath, "kb.rdf"), "KIBI_STORAGE_FORMAT=kibi.rdf-journal.v1\n", { mode: 0o600 });
|
|
123
|
+
}
|
|
107
124
|
}
|
|
108
125
|
async function copySchemaToStaging(stagingPath, deps) {
|
|
109
126
|
const possibleSchemaPaths = [
|
|
@@ -154,6 +171,72 @@ stagingPath, livePath, deps) {
|
|
|
154
171
|
resolved.renameSync(stagingPath, livePath);
|
|
155
172
|
}
|
|
156
173
|
}
|
|
174
|
+
/**
|
|
175
|
+
* Publish a rebuilt journal generation without replacing the branch directory.
|
|
176
|
+
* The legacy backup, sync metadata, and sentinel stay in place; only the
|
|
177
|
+
* journal database and CURRENT pointer move. A short-lived rollback pair is
|
|
178
|
+
* retained until both moves succeed so an interrupted publication can be
|
|
179
|
+
* repaired on the next engine start.
|
|
180
|
+
*/
|
|
181
|
+
export function atomicPublishGeneration(stagingPath, livePath, deps) {
|
|
182
|
+
const resolved = resolveDeps(deps);
|
|
183
|
+
const liveParent = path.dirname(livePath);
|
|
184
|
+
if (!resolved.existsSync(liveParent)) {
|
|
185
|
+
resolved.mkdirSync(liveParent, { recursive: true });
|
|
186
|
+
}
|
|
187
|
+
if (!resolved.existsSync(livePath)) {
|
|
188
|
+
resolved.renameSync(stagingPath, livePath);
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
const generationStamp = `${Date.now()}.${process.pid}`;
|
|
192
|
+
const liveRdf = path.join(livePath, "rdf");
|
|
193
|
+
const stagedRdf = path.join(stagingPath, "rdf");
|
|
194
|
+
const oldRdf = `${liveRdf}.old.${generationStamp}`;
|
|
195
|
+
const liveCurrent = path.join(livePath, "CURRENT");
|
|
196
|
+
const stagedCurrent = path.join(stagingPath, "CURRENT");
|
|
197
|
+
const oldCurrent = `${liveCurrent}.old.${generationStamp}`;
|
|
198
|
+
if (!resolved.existsSync(stagedRdf) || !resolved.existsSync(stagedCurrent)) {
|
|
199
|
+
throw new Error("Rebuilt journal generation is missing rdf or CURRENT");
|
|
200
|
+
}
|
|
201
|
+
let oldRdfMoved = false;
|
|
202
|
+
let oldCurrentMoved = false;
|
|
203
|
+
try {
|
|
204
|
+
if (resolved.existsSync(liveRdf)) {
|
|
205
|
+
resolved.renameSync(liveRdf, oldRdf);
|
|
206
|
+
oldRdfMoved = true;
|
|
207
|
+
}
|
|
208
|
+
resolved.renameSync(stagedRdf, liveRdf);
|
|
209
|
+
if (resolved.existsSync(liveCurrent)) {
|
|
210
|
+
resolved.renameSync(liveCurrent, oldCurrent);
|
|
211
|
+
oldCurrentMoved = true;
|
|
212
|
+
}
|
|
213
|
+
resolved.renameSync(stagedCurrent, liveCurrent);
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
// Restore the old pointer/database whenever publication fails. If the
|
|
217
|
+
// process itself crashes, ensureJournaledBranchStoreAsync performs the
|
|
218
|
+
// same recovery from the `.old.<stamp>` siblings.
|
|
219
|
+
try {
|
|
220
|
+
if (resolved.existsSync(liveCurrent))
|
|
221
|
+
resolved.rmSync(liveCurrent, { force: true });
|
|
222
|
+
if (oldCurrentMoved && resolved.existsSync(oldCurrent))
|
|
223
|
+
resolved.renameSync(oldCurrent, liveCurrent);
|
|
224
|
+
if (resolved.existsSync(liveRdf))
|
|
225
|
+
resolved.rmSync(liveRdf, { recursive: true, force: true });
|
|
226
|
+
if (oldRdfMoved && resolved.existsSync(oldRdf))
|
|
227
|
+
resolved.renameSync(oldRdf, liveRdf);
|
|
228
|
+
}
|
|
229
|
+
catch {
|
|
230
|
+
// Preserve the original publication error; startup recovery will report
|
|
231
|
+
// the remaining sibling paths if the rollback itself was interrupted.
|
|
232
|
+
}
|
|
233
|
+
throw error;
|
|
234
|
+
}
|
|
235
|
+
if (resolved.existsSync(oldRdf))
|
|
236
|
+
resolved.rmSync(oldRdf, { recursive: true, force: true });
|
|
237
|
+
if (resolved.existsSync(oldCurrent))
|
|
238
|
+
resolved.rmSync(oldCurrent, { force: true });
|
|
239
|
+
}
|
|
157
240
|
export function cleanupStaging(
|
|
158
241
|
// implements REQ-003
|
|
159
242
|
stagingPath, deps) {
|
package/dist/commands/sync.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { SyncSummary } from "../diagnostics.js";
|
|
2
|
+
import { acquireSymbolCompilerLock } from "../operations/mutation/symbol-compiler-lock.js";
|
|
2
3
|
import { PrologProcess } from "../prolog.js";
|
|
3
4
|
export declare class SyncError extends Error {
|
|
4
5
|
constructor(message: string);
|
|
@@ -21,11 +22,16 @@ interface SyncCommandRuntime {
|
|
|
21
22
|
createProlog?: (options: {
|
|
22
23
|
timeout: number;
|
|
23
24
|
}) => PrologProcess;
|
|
25
|
+
acquireSymbolCompilerLock?: typeof acquireSymbolCompilerLock;
|
|
24
26
|
}
|
|
25
27
|
export declare function syncCommand(options?: {
|
|
26
28
|
validateOnly?: boolean;
|
|
27
29
|
rebuild?: boolean;
|
|
28
30
|
refreshSymbolCoordinates?: boolean;
|
|
31
|
+
/** Explicitly rebuild an unreadable branch store from authored sources. */
|
|
32
|
+
recoveryBackupPath?: string;
|
|
33
|
+
/** Workspace to operate on when invoked through MCP or another host. */
|
|
34
|
+
workspaceRoot?: string;
|
|
29
35
|
}, runtime?: SyncCommandRuntime): Promise<SyncResult>;
|
|
30
36
|
export { normalizeMarkdownPath } from "./sync/discovery.js";
|
|
31
37
|
//# sourceMappingURL=sync.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAc,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAyBjE,OAAO,EAEL,yBAAyB,EAE1B,MAAM,gDAAgD,CAAC;AAGxD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AA+C7C,qBAAa,SAAU,SAAQ,KAAK;gBACtB,OAAO,EAAE,MAAM;CAI5B;AAkMD,MAAM,WAAW,UAAW,SAAQ,WAAW;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,yBAAyB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,kBAAkB;IAC1B,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC3E,UAAU,CAAC,EAAE,CACX,OAAO,EAAE,yBAAyB,GAAG;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE,KACzD,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,aAAa,CAAC;IAC/D,yBAAyB,CAAC,EAAE,OAAO,yBAAyB,CAAC;CAC9D;AA+DD,wBAAsB,WAAW,CAC/B,OAAO,GAAE;IACP,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,2EAA2E;IAC3E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;CACnB,EACN,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,UAAU,CAAC,CA4kCrB;AAED,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC"}
|