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,12 +1,22 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { existsSync, readFileSync, realpathSync, unlinkSync, writeFileSync, } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { OperationError } from "../../cli-errors.js";
|
|
5
|
+
import { readManifestWithCoordinateOverlay } from "../../extractors/manifest.js";
|
|
6
|
+
import { extractManifestSymbolRecords } from "../../extractors/manifest.js";
|
|
1
7
|
import { escapeAtom } from "../../prolog/codec.js";
|
|
2
8
|
import { loadEntities } from "../../public/operations/discovery-entities.js";
|
|
3
9
|
import { appendOnlyVerificationReceiptHistoryErrors } from "../../public/verification-receipt.js";
|
|
10
|
+
import { appendRelationship, computeShardPath, } from "../../relationships/shards.js";
|
|
11
|
+
import { resolveBranchAttachment } from "../../utils/branch-resolver.js";
|
|
4
12
|
import { analyzeSemanticAdvisorInput } from "../semantic-advisor/analyze-prose.js";
|
|
5
13
|
import { assertLogicalGroundingClaimKeys, assertSemanticInventoryBoundary, } from "../semantic-advisor/ingestion-boundary.js";
|
|
6
14
|
import { buildUpsertCommitGoal, formatUpsertError } from "./contradictions.js";
|
|
7
|
-
import { existingRelationships, validateLiveRelationshipTargets, validateRelationshipSources, validateStrictLanePairing, } from "./relationships.js";
|
|
15
|
+
import { existingRelationships, validateLiveRelationshipTargets, validateRelationshipSources, validateStrictLanePairing, validateSupersedesSourceHistory, } from "./relationships.js";
|
|
16
|
+
import { writePendingSourceReceipt, writeSourceForUpsert, } from "./source-authoring.js";
|
|
17
|
+
import { acquireSymbolCompilerLock, releaseSymbolCompilerLock, } from "./symbol-compiler-lock.js";
|
|
8
18
|
import { validateSymbolGranularity } from "./symbol-granularity.js";
|
|
9
|
-
import {
|
|
19
|
+
import { refreshSymbolCoordinatesForManifest } from "./symbol-refresh.js";
|
|
10
20
|
import { validateUpsertInput } from "./validation.js";
|
|
11
21
|
import { scenarioCoverageWarnings } from "./warnings.js";
|
|
12
22
|
function requireProlog(context) {
|
|
@@ -28,6 +38,58 @@ function parseChangeKind(value) {
|
|
|
28
38
|
? normalized
|
|
29
39
|
: null;
|
|
30
40
|
}
|
|
41
|
+
function fileHash(pathname) {
|
|
42
|
+
if (!existsSync(pathname))
|
|
43
|
+
return null;
|
|
44
|
+
return createHash("sha256").update(readFileSync(pathname)).digest("hex");
|
|
45
|
+
}
|
|
46
|
+
function textHash(value) {
|
|
47
|
+
return createHash("sha256").update(value).digest("hex");
|
|
48
|
+
}
|
|
49
|
+
function assertRelationshipShardContained(workspaceRoot, shardPath) {
|
|
50
|
+
const root = path.resolve(workspaceRoot);
|
|
51
|
+
const relationshipRoot = path.resolve(root, ".kb", "relationships");
|
|
52
|
+
const absolute = path.resolve(shardPath);
|
|
53
|
+
if (!absolute.startsWith(`${relationshipRoot}${path.sep}`)) {
|
|
54
|
+
throw new OperationError("SOURCE_PATH_INVALID", `Relationship shard escapes the canonical workspace lane: ${shardPath}`);
|
|
55
|
+
}
|
|
56
|
+
let existing = absolute;
|
|
57
|
+
while (!existsSync(existing) && path.dirname(existing) !== existing) {
|
|
58
|
+
existing = path.dirname(existing);
|
|
59
|
+
}
|
|
60
|
+
const real = realpathSync.native(existing);
|
|
61
|
+
if (real !== root && !real.startsWith(`${root}${path.sep}`)) {
|
|
62
|
+
throw new OperationError("SOURCE_PATH_INVALID", `Relationship shard follows a symlink outside the workspace: ${shardPath}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function restoreRelationshipShard(shardPath, before, expectedAfterHash) {
|
|
66
|
+
// Compare before restore: a concurrent writer may have replaced the shard
|
|
67
|
+
// after our append. Never clobber newer bytes; the next check/sync reports
|
|
68
|
+
// any canonical source path that needs reconciliation.
|
|
69
|
+
if (expectedAfterHash !== null) {
|
|
70
|
+
let currentHash = null;
|
|
71
|
+
try {
|
|
72
|
+
currentHash = fileHash(shardPath);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
currentHash = null;
|
|
76
|
+
}
|
|
77
|
+
if (currentHash !== expectedAfterHash) {
|
|
78
|
+
console.warn(`Skipped relationship shard rollback for ${path.relative(process.cwd(), shardPath)}: shard changed after the Kibi write.`);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (before === null) {
|
|
83
|
+
try {
|
|
84
|
+
unlinkSync(shardPath);
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
// The file may already be absent after an interrupted atomic replace.
|
|
88
|
+
}
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
writeFileSync(shardPath, before, "utf8");
|
|
92
|
+
}
|
|
31
93
|
export async function validateAppendOnlyVerificationReceipts(entity, context) {
|
|
32
94
|
if (entity.type !== "test")
|
|
33
95
|
return;
|
|
@@ -45,16 +107,23 @@ export async function validateAppendOnlyVerificationReceipts(entity, context) {
|
|
|
45
107
|
}
|
|
46
108
|
}
|
|
47
109
|
export async function effectiveRelationships(input, entity, relationships, context) {
|
|
48
|
-
if (input.relationships !== undefined && input.relationships.length > 0) {
|
|
49
|
-
return relationships;
|
|
50
|
-
}
|
|
51
110
|
const prolog = requireProlog(context);
|
|
52
111
|
const exists = await prolog.query(`once(kb_entity('${escapeAtom(input.id)}', _, _))`);
|
|
53
112
|
if (!exists.success)
|
|
54
113
|
return relationships;
|
|
55
114
|
try {
|
|
56
|
-
const current = await existingRelationships(prolog, String(entity.id))
|
|
57
|
-
|
|
115
|
+
const current = (await existingRelationships(prolog, String(entity.id)))
|
|
116
|
+
// An upsert owns only relationships whose source is the upserted entity.
|
|
117
|
+
// Incoming relationships must not be copied into its validation or
|
|
118
|
+
// canonical source projection.
|
|
119
|
+
.filter((relationship) => relationship.from === input.id);
|
|
120
|
+
const merged = new Map();
|
|
121
|
+
for (const relationship of [...current, ...relationships]) {
|
|
122
|
+
const key = `${String(relationship.type)}\u0000${String(relationship.from)}\u0000${String(relationship.to)}`;
|
|
123
|
+
// The explicit input wins so any supplied metadata is retained.
|
|
124
|
+
merged.set(key, relationship);
|
|
125
|
+
}
|
|
126
|
+
return [...merged.values()];
|
|
58
127
|
}
|
|
59
128
|
catch (error) {
|
|
60
129
|
if (error instanceof Error)
|
|
@@ -62,55 +131,243 @@ export async function effectiveRelationships(input, entity, relationships, conte
|
|
|
62
131
|
throw error;
|
|
63
132
|
}
|
|
64
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* Re-extract one complete canonical symbol entity from the authored manifest
|
|
136
|
+
* plus the freshly published generated coordinate artifact. Source-first
|
|
137
|
+
* commits must match exactly what the next sync would compile, instead of
|
|
138
|
+
* hand-merging generated fields into the caller's partial payload.
|
|
139
|
+
*/
|
|
140
|
+
function reextractCanonicalSymbolEntity(symbolId, authoredRelativePath, workspaceRoot) {
|
|
141
|
+
const absoluteManifest = path.resolve(workspaceRoot, authoredRelativePath);
|
|
142
|
+
let records;
|
|
143
|
+
try {
|
|
144
|
+
records = readManifestWithCoordinateOverlay(absoluteManifest);
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
throw new Error(`Canonical symbol manifest ${authoredRelativePath} could not be compiled after coordinate refresh: ${error instanceof Error ? error.message : String(error)}`);
|
|
148
|
+
}
|
|
149
|
+
const mine = records.find((candidate) => candidate.id === symbolId);
|
|
150
|
+
if (mine === undefined)
|
|
151
|
+
return null;
|
|
152
|
+
const [result] = extractManifestSymbolRecords([mine], absoluteManifest);
|
|
153
|
+
if (result === undefined)
|
|
154
|
+
return null;
|
|
155
|
+
return {
|
|
156
|
+
...result.entity,
|
|
157
|
+
...(result.sourceFile === undefined
|
|
158
|
+
? {}
|
|
159
|
+
: { sourceFile: result.sourceFile }),
|
|
160
|
+
};
|
|
161
|
+
}
|
|
65
162
|
export async function executeUpsert(input, context) {
|
|
163
|
+
const branchAttachment = context.branchAttachment ?? resolveBranchAttachment(context.workspaceRoot);
|
|
164
|
+
if ("error" in branchAttachment) {
|
|
165
|
+
throw new Error(`Unable to resolve KB branch: ${branchAttachment.error}`);
|
|
166
|
+
}
|
|
167
|
+
if (branchAttachment.migrationRequired &&
|
|
168
|
+
(context.branchAttachment !== undefined || context.fs !== undefined)) {
|
|
169
|
+
throw new Error(`Upsert blocked: KB is attached through legacy branch storage (${branchAttachment.gitBranch} -> ${branchAttachment.kbBranch}). Run 'kibi branch migrate --from ${branchAttachment.kbBranch} --to ${branchAttachment.gitBranch} --apply' first.`);
|
|
170
|
+
}
|
|
66
171
|
const prolog = requireProlog(context);
|
|
172
|
+
let sourceWrite = null;
|
|
173
|
+
let commitEntity;
|
|
174
|
+
let sourceRolledBack = false;
|
|
175
|
+
let compiledCommitted = false;
|
|
176
|
+
let relationshipCount = 0;
|
|
177
|
+
let changeKind = null;
|
|
178
|
+
let semanticAdvisor;
|
|
179
|
+
let compilerLock;
|
|
180
|
+
let coordinatePublication;
|
|
181
|
+
let operationFailure;
|
|
182
|
+
const relationshipShardBefore = new Map();
|
|
183
|
+
const relationshipShardAfterHash = new Map();
|
|
184
|
+
const holdsSymbolCompilerLock = input.type === "symbol" &&
|
|
185
|
+
context.fs !== undefined &&
|
|
186
|
+
context.sourceFirst !== false;
|
|
67
187
|
try {
|
|
188
|
+
if (holdsSymbolCompilerLock) {
|
|
189
|
+
// Symbol source publication, coordinate refresh, canonical
|
|
190
|
+
// re-extraction, and the RDF commit form one read-modify-write cycle.
|
|
191
|
+
// Serialize the whole cycle so concurrent full refreshes or sibling
|
|
192
|
+
// upserts cannot lose updates.
|
|
193
|
+
compilerLock = await acquireSymbolCompilerLock(context.workspaceRoot);
|
|
194
|
+
}
|
|
68
195
|
const validated = validateUpsertInput(input, context.clock());
|
|
69
196
|
await validateAppendOnlyVerificationReceipts(validated.entity, context);
|
|
70
197
|
validateRelationshipSources(input.id, validated.relationships);
|
|
71
198
|
await validateSymbolGranularity(validated.entity, validated.relationships, context);
|
|
72
199
|
const relationships = await effectiveRelationships(input, validated.entity, validated.relationships, context);
|
|
73
|
-
|
|
74
|
-
await
|
|
200
|
+
relationshipCount = validated.relationships.length;
|
|
201
|
+
await validateStrictLanePairing(prolog, validated.relationships);
|
|
202
|
+
await validateLiveRelationshipTargets(prolog, validated.entity, validated.relationships);
|
|
203
|
+
await validateSupersedesSourceHistory(prolog, validated.entity, validated.relationships, context.workspaceRoot);
|
|
75
204
|
const semantic = analyzeSemanticAdvisorInput({
|
|
76
205
|
payload: { ...input, relationships },
|
|
77
206
|
});
|
|
207
|
+
semanticAdvisor = semantic.receipt;
|
|
78
208
|
assertSemanticInventoryBoundary({ ...input, relationships }, relationships, semantic.receipt);
|
|
79
209
|
await assertLogicalGroundingClaimKeys(prolog, { ...input, relationships }, relationships);
|
|
210
|
+
if (context.fs !== undefined && context.sourceFirst !== false) {
|
|
211
|
+
const existingRows = await loadEntities(prolog, {
|
|
212
|
+
id: input.id,
|
|
213
|
+
type: input.type,
|
|
214
|
+
});
|
|
215
|
+
const existing = existingRows[0];
|
|
216
|
+
const existingSource = existing !== undefined && typeof existing.source === "string"
|
|
217
|
+
? existing.source
|
|
218
|
+
: undefined;
|
|
219
|
+
// Existing non-authored runtime sources (mcp://, test://, etc.) have no
|
|
220
|
+
// tracked document to update unless the caller explicitly supplies one;
|
|
221
|
+
// new entities are required to choose a source target in this
|
|
222
|
+
// filesystem-capable context.
|
|
223
|
+
if (input.document !== undefined ||
|
|
224
|
+
existingSource?.match(/\.(?:md|mdx|ya?ml|json)$/i) ||
|
|
225
|
+
// A filesystem-capable runtime is source-first for every new entity.
|
|
226
|
+
// writeSourceForUpsert emits the typed DOCUMENT_PATH_REQUIRED request
|
|
227
|
+
// when configuration has zero or multiple writable targets, rather
|
|
228
|
+
// than silently creating compiled-only state.
|
|
229
|
+
existing === undefined) {
|
|
230
|
+
sourceWrite = await writeSourceForUpsert(input, validated.entity, existing, context);
|
|
231
|
+
if (sourceWrite !== null) {
|
|
232
|
+
// The authored path is the entity's canonical identity. Runtime
|
|
233
|
+
// transport provenance (mcp://...) must never survive a source-first
|
|
234
|
+
// write or a later delete/sync cycle.
|
|
235
|
+
commitEntity = {
|
|
236
|
+
...validated.entity,
|
|
237
|
+
source: sourceWrite.receipt.path,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// Relationship shards are canonical source artifacts. Patch them before
|
|
243
|
+
// the compiled transaction so a failed commit can restore exact bytes and
|
|
244
|
+
// a successful commit never leaves a compiled-only relationship behind.
|
|
245
|
+
if (context.fs !== undefined && validated.relationships.length > 0) {
|
|
246
|
+
for (const relationship of validated.relationships) {
|
|
247
|
+
const type = typeof relationship.type === "string" ? relationship.type : "";
|
|
248
|
+
const from = typeof relationship.from === "string" ? relationship.from : input.id;
|
|
249
|
+
const to = typeof relationship.to === "string" ? relationship.to : "";
|
|
250
|
+
if (!type || !from || !to)
|
|
251
|
+
continue;
|
|
252
|
+
const shardPath = computeShardPath(path.join(context.workspaceRoot, ".kb"), from);
|
|
253
|
+
assertRelationshipShardContained(context.workspaceRoot, shardPath);
|
|
254
|
+
if (!relationshipShardBefore.has(shardPath)) {
|
|
255
|
+
relationshipShardBefore.set(shardPath, existsSync(shardPath) ? readFileSync(shardPath, "utf8") : null);
|
|
256
|
+
}
|
|
257
|
+
appendRelationship(path.join(context.workspaceRoot, ".kb"), {
|
|
258
|
+
type,
|
|
259
|
+
from,
|
|
260
|
+
to,
|
|
261
|
+
created_at: context.clock().toISOString(),
|
|
262
|
+
created_by: "kibi/upsert",
|
|
263
|
+
source: "mcp://kibi/upsert",
|
|
264
|
+
});
|
|
265
|
+
relationshipShardAfterHash.set(shardPath, fileHash(shardPath));
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
// Coordinates are generated compiler state owned by
|
|
269
|
+
// `.kb/symbol-coordinates.yaml`. Refresh the target's generated record
|
|
270
|
+
// from current extraction (we hold the symbol compiler lock), then commit
|
|
271
|
+
// the complete canonical entity the next sync would compile. Failures
|
|
272
|
+
// abort before the RDF transaction so source and shard rollbacks keep all
|
|
273
|
+
// surfaces consistent; stale coordinates are never reused as a fallback.
|
|
274
|
+
if (input.type === "symbol" &&
|
|
275
|
+
context.fs !== undefined &&
|
|
276
|
+
context.sourceFirst !== false &&
|
|
277
|
+
sourceWrite !== null) {
|
|
278
|
+
const refresh = await refreshSymbolCoordinatesForManifest(input.id, path.resolve(context.workspaceRoot, sourceWrite.receipt.path), context);
|
|
279
|
+
coordinatePublication = refresh.publication;
|
|
280
|
+
if (!refresh.found || refresh.outcome === "removed") {
|
|
281
|
+
throw new Error(`Coordinate refresh could not find ${input.id} in the authored symbol manifest`);
|
|
282
|
+
}
|
|
283
|
+
const canonical = reextractCanonicalSymbolEntity(input.id, sourceWrite.receipt.path, context.workspaceRoot);
|
|
284
|
+
if (canonical === null) {
|
|
285
|
+
throw new Error(`Canonical symbol manifest ${sourceWrite.receipt.path} no longer contains ${input.id} after coordinate refresh`);
|
|
286
|
+
}
|
|
287
|
+
// The authored path is the entity's canonical identity. Runtime
|
|
288
|
+
// transport provenance (mcp://...) must never survive a source-first
|
|
289
|
+
// write or a later delete/sync cycle.
|
|
290
|
+
commitEntity = {
|
|
291
|
+
...canonical,
|
|
292
|
+
source: sourceWrite.receipt.path,
|
|
293
|
+
};
|
|
294
|
+
}
|
|
80
295
|
const transaction = buildUpsertCommitGoal({
|
|
81
|
-
entity: validated.entity,
|
|
82
|
-
relationships,
|
|
296
|
+
entity: commitEntity ?? validated.entity,
|
|
297
|
+
relationships: validated.relationships,
|
|
83
298
|
skipContradictionCheck: input._skipContradictionCheck === true,
|
|
84
299
|
});
|
|
85
300
|
const written = await prolog.query(transaction);
|
|
86
301
|
if (!written.success) {
|
|
302
|
+
await sourceWrite?.rollback();
|
|
303
|
+
sourceRolledBack = sourceWrite !== null;
|
|
304
|
+
for (const [shardPath, before] of relationshipShardBefore) {
|
|
305
|
+
restoreRelationshipShard(shardPath, before, relationshipShardAfterHash.get(shardPath) ?? null);
|
|
306
|
+
}
|
|
87
307
|
throw new Error(formatUpsertError(input.id, written.error));
|
|
88
308
|
}
|
|
309
|
+
compiledCommitted = true;
|
|
89
310
|
// The combined commit is the sole mutation boundary. Invalidate reads only
|
|
90
311
|
// after Prolog reports success so a failed/rolled-back commit does not
|
|
91
312
|
// disturb callers' view of the current snapshot.
|
|
92
313
|
prolog.invalidateCache?.();
|
|
93
|
-
|
|
314
|
+
changeKind = parseChangeKind(written.bindings.ChangeKind);
|
|
94
315
|
if (changeKind === null) {
|
|
95
316
|
throw new Error(`Upsert commit completed without a created/updated result for ${input.id}`);
|
|
96
317
|
}
|
|
97
|
-
if (input.type === "symbol") {
|
|
98
|
-
try {
|
|
99
|
-
await refreshSymbolCoordinates(input.id, context);
|
|
100
|
-
}
|
|
101
|
-
catch (error) {
|
|
102
|
-
if (!(error instanceof Error))
|
|
103
|
-
throw error;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
318
|
const coverage = await scenarioCoverageWarnings(prolog, validated.relationships, input.type, input.id);
|
|
107
319
|
const created = changeKind === "created" ? 1 : 0;
|
|
320
|
+
const shardWarnings = [];
|
|
321
|
+
const relationshipSourceWrites = [];
|
|
322
|
+
for (const [shardPath, before] of relationshipShardBefore) {
|
|
323
|
+
const afterHash = fileHash(shardPath);
|
|
324
|
+
const beforeHash = before === null ? null : textHash(before);
|
|
325
|
+
if (afterHash === null || afterHash === beforeHash)
|
|
326
|
+
continue;
|
|
327
|
+
const relative = path
|
|
328
|
+
.relative(context.workspaceRoot, shardPath)
|
|
329
|
+
.replaceAll("\\", "/");
|
|
330
|
+
writePendingSourceReceipt(context.workspaceRoot, relative, afterHash);
|
|
331
|
+
relationshipSourceWrites.push({
|
|
332
|
+
path: relative,
|
|
333
|
+
mode: "write",
|
|
334
|
+
beforeHash,
|
|
335
|
+
afterHash,
|
|
336
|
+
created: before === null,
|
|
337
|
+
});
|
|
338
|
+
}
|
|
108
339
|
const payload = {
|
|
109
340
|
created,
|
|
110
341
|
updated: changeKind === "updated" ? 1 : 0,
|
|
111
|
-
relationships_created: relationships.length,
|
|
112
|
-
warnings: [...semantic.warnings, ...coverage],
|
|
342
|
+
relationships_created: validated.relationships.length,
|
|
343
|
+
warnings: [...semantic.warnings, ...coverage, ...shardWarnings],
|
|
113
344
|
semanticAdvisor: semantic.receipt,
|
|
345
|
+
...(shardWarnings.length > 0
|
|
346
|
+
? {
|
|
347
|
+
status: "committed_with_repairs",
|
|
348
|
+
effectFailures: shardWarnings.map((detail) => ({
|
|
349
|
+
kind: "workspace-write",
|
|
350
|
+
errorCode: "RELATIONSHIP_SHARD_WRITE_FAILED",
|
|
351
|
+
detail,
|
|
352
|
+
})),
|
|
353
|
+
nextActions: [
|
|
354
|
+
{
|
|
355
|
+
operation: "kb_check",
|
|
356
|
+
reason: "Relationship shard publication failed after the KB commit; inspect the shard diagnostics and repair the canonical YAML before syncing.",
|
|
357
|
+
required: true,
|
|
358
|
+
},
|
|
359
|
+
],
|
|
360
|
+
}
|
|
361
|
+
: {}),
|
|
362
|
+
...(sourceWrite ? { sourceWrites: [sourceWrite.receipt] } : {}),
|
|
363
|
+
...(relationshipSourceWrites.length > 0
|
|
364
|
+
? {
|
|
365
|
+
sourceWrites: [
|
|
366
|
+
...(sourceWrite ? [sourceWrite.receipt] : []),
|
|
367
|
+
...relationshipSourceWrites,
|
|
368
|
+
],
|
|
369
|
+
}
|
|
370
|
+
: {}),
|
|
114
371
|
...(input.type === "req"
|
|
115
372
|
? {
|
|
116
373
|
contradictionCheck: {
|
|
@@ -136,7 +393,89 @@ export async function executeUpsert(input, context) {
|
|
|
136
393
|
};
|
|
137
394
|
}
|
|
138
395
|
catch (error) {
|
|
396
|
+
let coordinateRollbackError;
|
|
397
|
+
if (!compiledCommitted && coordinatePublication !== undefined) {
|
|
398
|
+
try {
|
|
399
|
+
coordinatePublication.rollback();
|
|
400
|
+
}
|
|
401
|
+
catch (rollbackError) {
|
|
402
|
+
coordinateRollbackError = rollbackError;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
if (!compiledCommitted) {
|
|
406
|
+
for (const [shardPath, before] of relationshipShardBefore) {
|
|
407
|
+
try {
|
|
408
|
+
restoreRelationshipShard(shardPath, before, relationshipShardAfterHash.get(shardPath) ?? null);
|
|
409
|
+
}
|
|
410
|
+
catch {
|
|
411
|
+
// Preserve the original failure; the next check/sync reports any
|
|
412
|
+
// canonical source path that could not be restored.
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
if (!compiledCommitted && sourceWrite !== null && !sourceRolledBack) {
|
|
417
|
+
try {
|
|
418
|
+
await sourceWrite.rollback();
|
|
419
|
+
sourceRolledBack = true;
|
|
420
|
+
}
|
|
421
|
+
catch {
|
|
422
|
+
// Preserve the original mutation error; the recovery journal can
|
|
423
|
+
// reconcile a failed source rollback on the next sync.
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
if (compiledCommitted) {
|
|
427
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
428
|
+
return {
|
|
429
|
+
content: [
|
|
430
|
+
{
|
|
431
|
+
type: "text",
|
|
432
|
+
text: `Upserted ${input.id}, but a derived effect requires repair.`,
|
|
433
|
+
},
|
|
434
|
+
],
|
|
435
|
+
structuredContent: {
|
|
436
|
+
created: changeKind === "created" ? 1 : 0,
|
|
437
|
+
updated: changeKind === "updated" ? 1 : 0,
|
|
438
|
+
relationships_created: relationshipCount,
|
|
439
|
+
warnings: [detail],
|
|
440
|
+
semanticAdvisor: semanticAdvisor,
|
|
441
|
+
status: "committed_with_repairs",
|
|
442
|
+
effectFailures: [
|
|
443
|
+
{
|
|
444
|
+
kind: "derived-effect",
|
|
445
|
+
errorCode: "POST_COMMIT_EFFECT_FAILED",
|
|
446
|
+
detail,
|
|
447
|
+
},
|
|
448
|
+
],
|
|
449
|
+
nextActions: [
|
|
450
|
+
{
|
|
451
|
+
operation: "kb_status",
|
|
452
|
+
reason: "The compiled mutation committed; inspect the authoritative source and derived status before repairing.",
|
|
453
|
+
required: true,
|
|
454
|
+
},
|
|
455
|
+
{
|
|
456
|
+
operation: "kb_sync",
|
|
457
|
+
reason: "Recompile canonical source files after the committed derived effect failure; do not retry the original upsert.",
|
|
458
|
+
required: true,
|
|
459
|
+
},
|
|
460
|
+
],
|
|
461
|
+
},
|
|
462
|
+
};
|
|
463
|
+
}
|
|
464
|
+
if (coordinateRollbackError !== undefined) {
|
|
465
|
+
const failure = new AggregateError([error, coordinateRollbackError], `Upsert failed and coordinate artifact rollback failed for ${input.id}`);
|
|
466
|
+
operationFailure = { error: failure };
|
|
467
|
+
throw failure;
|
|
468
|
+
}
|
|
469
|
+
if (error instanceof OperationError) {
|
|
470
|
+
operationFailure = { error };
|
|
471
|
+
throw error;
|
|
472
|
+
}
|
|
139
473
|
const message = error instanceof Error ? error.message : String(error);
|
|
140
|
-
|
|
474
|
+
const failure = new Error(`Upsert execution failed: ${message}`);
|
|
475
|
+
operationFailure = { error: failure };
|
|
476
|
+
throw failure;
|
|
477
|
+
}
|
|
478
|
+
finally {
|
|
479
|
+
releaseSymbolCompilerLock(compilerLock, operationFailure);
|
|
141
480
|
}
|
|
142
481
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/operations/mutation/validation.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,0BAA0B,EAC3B,MAAM,oCAAoC,CAAC;AAQ5C,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/operations/mutation/validation.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,0BAA0B,EAC3B,MAAM,oCAAoC,CAAC;AAQ5C,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAkF/D,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,IAAI,GACR,eAAe,CAwDjB;AAED,OAAO,EAAE,0BAA0B,EAAE,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { type MigrationPlan } from "../../public/operations/migration-plan.js";
|
|
2
|
+
import type { OperationContext } from "../../public/operations/runtime-types.js";
|
|
3
|
+
import { type BootstrapAction, type BootstrapPlanV1 } from "../bootstrap/types.js";
|
|
4
|
+
import { type CompilePlanV1, type SourceWritePlan } from "./compile-intent.js";
|
|
5
|
+
export declare const PLAN_APPLY_RESULT_VERSION: "kibi.plan-apply-result.v1";
|
|
6
|
+
export type ApplyPlanArgs = Readonly<{
|
|
7
|
+
plan: BootstrapPlanV1;
|
|
8
|
+
approvedPlanHash: string;
|
|
9
|
+
}> | Readonly<{
|
|
10
|
+
plan: CompilePlanV1;
|
|
11
|
+
approvedPlanHash: string;
|
|
12
|
+
}> | Readonly<{
|
|
13
|
+
plan: MigrationPlan;
|
|
14
|
+
approvedPlanHash: string;
|
|
15
|
+
approvedActionIds: readonly string[];
|
|
16
|
+
}> | Readonly<{
|
|
17
|
+
plan: EntityDeletionPlan;
|
|
18
|
+
approvedPlanHash: string;
|
|
19
|
+
}> | Readonly<{
|
|
20
|
+
recoveryJournalId: string;
|
|
21
|
+
}>;
|
|
22
|
+
export type EntityDeletionPlan = Readonly<{
|
|
23
|
+
version: "kibi.entity-deletion-plan.v1";
|
|
24
|
+
planHash: string;
|
|
25
|
+
entityIds: readonly string[];
|
|
26
|
+
sourceHashes: Readonly<Record<string, string | null>>;
|
|
27
|
+
sourceWrites?: readonly SourceWritePlan[];
|
|
28
|
+
supersessionRequired: boolean;
|
|
29
|
+
}>;
|
|
30
|
+
type BootstrapActionResult = Readonly<{
|
|
31
|
+
actionId: string;
|
|
32
|
+
outcome: "applied" | "failed" | "skipped";
|
|
33
|
+
detail: string;
|
|
34
|
+
}>;
|
|
35
|
+
export type ApplyPlanResult = Readonly<{
|
|
36
|
+
version: typeof PLAN_APPLY_RESULT_VERSION;
|
|
37
|
+
outcome: "applied" | "replayed" | "partially_applied";
|
|
38
|
+
planHash: string;
|
|
39
|
+
actionResults: readonly BootstrapActionResult[];
|
|
40
|
+
changedEntities: number;
|
|
41
|
+
changedRelationships: number;
|
|
42
|
+
finalSnapshots: {
|
|
43
|
+
branch: string;
|
|
44
|
+
kbSnapshotId: string;
|
|
45
|
+
workspaceSnapshot: string;
|
|
46
|
+
};
|
|
47
|
+
recoveryJournalId: string | null;
|
|
48
|
+
changedPaths?: readonly string[];
|
|
49
|
+
validationSummary?: Readonly<Record<string, unknown>>;
|
|
50
|
+
status?: "committed_with_repairs";
|
|
51
|
+
effectFailures?: readonly Readonly<Record<string, unknown>>[];
|
|
52
|
+
nextActions?: readonly Readonly<Record<string, unknown>>[];
|
|
53
|
+
}> | Readonly<{
|
|
54
|
+
version: typeof PLAN_APPLY_RESULT_VERSION;
|
|
55
|
+
outcome: "applied" | "replayed";
|
|
56
|
+
planHash: string;
|
|
57
|
+
changedEntities: number;
|
|
58
|
+
changedRelationships: number;
|
|
59
|
+
changedPaths: readonly string[];
|
|
60
|
+
finalSnapshots: {
|
|
61
|
+
branch: string;
|
|
62
|
+
kbSnapshotId: string;
|
|
63
|
+
workspaceSnapshot: string;
|
|
64
|
+
};
|
|
65
|
+
validationSummary: {
|
|
66
|
+
stepsValidated: number;
|
|
67
|
+
stepsApplied: number;
|
|
68
|
+
sourceHashesChecked: number;
|
|
69
|
+
notes: readonly string[];
|
|
70
|
+
};
|
|
71
|
+
recoveryJournalId: string | null;
|
|
72
|
+
status?: "committed_with_repairs";
|
|
73
|
+
effectFailures?: readonly Readonly<Record<string, unknown>>[];
|
|
74
|
+
nextActions?: readonly Readonly<Record<string, unknown>>[];
|
|
75
|
+
}> | Readonly<{
|
|
76
|
+
version: "kibi.entity-deletion-apply-result.v1";
|
|
77
|
+
outcome: "applied";
|
|
78
|
+
planHash: string;
|
|
79
|
+
deleted: number;
|
|
80
|
+
sourcePaths: readonly string[];
|
|
81
|
+
recoveryJournalId?: string | null;
|
|
82
|
+
status?: "committed_with_repairs";
|
|
83
|
+
nextActions?: readonly Readonly<Record<string, unknown>>[];
|
|
84
|
+
}> | Readonly<{
|
|
85
|
+
version: "kibi.migration-apply-result.v1";
|
|
86
|
+
outcome: "applied" | "partially_applied" | "replayed" | "reconciliation_required";
|
|
87
|
+
planHash: string;
|
|
88
|
+
actionResults: readonly Readonly<{
|
|
89
|
+
actionId: string;
|
|
90
|
+
outcome: "applied" | "failed" | "skipped";
|
|
91
|
+
detail: string;
|
|
92
|
+
}>[];
|
|
93
|
+
finalSnapshots: {
|
|
94
|
+
branch: string;
|
|
95
|
+
kbSnapshotId: string;
|
|
96
|
+
workspaceSnapshot: string;
|
|
97
|
+
};
|
|
98
|
+
notes: readonly string[];
|
|
99
|
+
remainingPlan?: MigrationPlan;
|
|
100
|
+
closeout?: {
|
|
101
|
+
taskOutcome: "complete" | "interim" | "blocked";
|
|
102
|
+
kbState: "clean_fresh" | "stale" | "dirty" | "legacy_compat" | "not_evaluated";
|
|
103
|
+
verificationState: "fresh" | "dirty" | "unavailable" | "not_evaluated";
|
|
104
|
+
proofState: "proven" | "mixed" | "unresolved" | "not_evaluated";
|
|
105
|
+
limitationDisposition: "none" | "accepted" | "unaccepted" | "not_applicable";
|
|
106
|
+
};
|
|
107
|
+
}>;
|
|
108
|
+
export declare function orderBootstrapActions(actions: readonly BootstrapAction[], completed?: Set<string>): BootstrapAction[];
|
|
109
|
+
export declare function executeApplyPlan(args: ApplyPlanArgs, context: OperationContext): Promise<{
|
|
110
|
+
content: Array<{
|
|
111
|
+
type: "text";
|
|
112
|
+
text: string;
|
|
113
|
+
}>;
|
|
114
|
+
structuredContent: ApplyPlanResult;
|
|
115
|
+
}>;
|
|
116
|
+
export {};
|
|
117
|
+
//# sourceMappingURL=apply-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-plan.d.ts","sourceRoot":"","sources":["../../../src/operations/planning/apply-plan.ts"],"names":[],"mappings":"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"}
|