kibi-cli 0.19.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli-errors.d.ts +3 -1
- package/dist/cli-errors.d.ts.map +1 -1
- package/dist/cli-errors.js +4 -1
- package/dist/cli-json-command.d.ts +1 -0
- package/dist/cli-json-command.d.ts.map +1 -1
- package/dist/cli-json-command.js +13 -4
- package/dist/cli-operation-loader.d.ts.map +1 -1
- package/dist/cli-operation-loader.js +53 -20
- package/dist/cli-operation-metadata.d.ts +21 -8
- package/dist/cli-operation-metadata.d.ts.map +1 -1
- package/dist/cli-operation-metadata.js +27 -10
- package/dist/cli-protocol.d.ts.map +1 -1
- package/dist/cli-protocol.js +38 -8
- package/dist/cli-register-foundation.d.ts.map +1 -1
- package/dist/cli-register-foundation.js +14 -2
- package/dist/cli-register-maintenance.d.ts.map +1 -1
- package/dist/cli-register-maintenance.js +33 -4
- package/dist/cli-register-proof.d.ts +3 -0
- package/dist/cli-register-proof.d.ts.map +1 -0
- package/dist/cli-register-proof.js +103 -0
- package/dist/cli-register-reporting.d.ts.map +1 -1
- package/dist/cli-register-reporting.js +11 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +17 -8
- package/dist/commands/aggregated-checks.d.ts +1 -2
- package/dist/commands/aggregated-checks.d.ts.map +1 -1
- package/dist/commands/aggregated-checks.js +14 -9
- package/dist/commands/branch.d.ts +37 -0
- package/dist/commands/branch.d.ts.map +1 -1
- package/dist/commands/branch.js +375 -40
- package/dist/commands/check.d.ts +14 -0
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +209 -110
- package/dist/commands/coverage.d.ts +1 -0
- package/dist/commands/coverage.d.ts.map +1 -1
- package/dist/commands/coverage.js +6 -0
- package/dist/commands/discovery-shared.d.ts.map +1 -1
- package/dist/commands/discovery-shared.js +10 -19
- package/dist/commands/doctor.d.ts +26 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +291 -30
- package/dist/commands/engine.d.ts +12 -0
- package/dist/commands/engine.d.ts.map +1 -1
- package/dist/commands/engine.js +50 -7
- package/dist/commands/gc.d.ts +5 -2
- package/dist/commands/gc.d.ts.map +1 -1
- package/dist/commands/gc.js +140 -71
- package/dist/commands/github-init.d.ts +57 -0
- package/dist/commands/github-init.d.ts.map +1 -0
- package/dist/commands/github-init.js +314 -0
- package/dist/commands/init-helpers.d.ts +1 -1
- package/dist/commands/init-helpers.d.ts.map +1 -1
- package/dist/commands/init-helpers.js +109 -28
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +79 -24
- package/dist/commands/legacy-storage-migration.d.ts +54 -0
- package/dist/commands/legacy-storage-migration.d.ts.map +1 -0
- package/dist/commands/legacy-storage-migration.js +277 -0
- package/dist/commands/migrate.d.ts +11 -0
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +249 -96
- package/dist/commands/proof-migrate-legacy.d.ts +7 -0
- package/dist/commands/proof-migrate-legacy.d.ts.map +1 -0
- package/dist/commands/proof-migrate-legacy.js +45 -0
- package/dist/commands/proof-prune.d.ts +8 -0
- package/dist/commands/proof-prune.d.ts.map +1 -0
- package/dist/commands/proof-prune.js +53 -0
- package/dist/commands/prove.d.ts +37 -0
- package/dist/commands/prove.d.ts.map +1 -0
- package/dist/commands/prove.js +470 -0
- package/dist/commands/report.d.ts +24 -0
- package/dist/commands/report.d.ts.map +1 -0
- package/dist/commands/report.js +191 -0
- package/dist/commands/sync/cache.d.ts +16 -3
- package/dist/commands/sync/cache.d.ts.map +1 -1
- package/dist/commands/sync/cache.js +111 -4
- package/dist/commands/sync/discovery.d.ts +26 -2
- package/dist/commands/sync/discovery.d.ts.map +1 -1
- package/dist/commands/sync/discovery.js +204 -15
- package/dist/commands/sync/extraction.d.ts +8 -1
- package/dist/commands/sync/extraction.d.ts.map +1 -1
- package/dist/commands/sync/extraction.js +38 -4
- package/dist/commands/sync/manifest.d.ts +9 -6
- package/dist/commands/sync/manifest.d.ts.map +1 -1
- package/dist/commands/sync/manifest.js +195 -60
- package/dist/commands/sync/persistence.d.ts +4 -1
- package/dist/commands/sync/persistence.d.ts.map +1 -1
- package/dist/commands/sync/persistence.js +26 -12
- package/dist/commands/sync/staging.d.ts +1 -0
- package/dist/commands/sync/staging.d.ts.map +1 -1
- package/dist/commands/sync/staging.js +5 -2
- package/dist/commands/sync/untracked-targets.d.ts +24 -0
- package/dist/commands/sync/untracked-targets.d.ts.map +1 -0
- package/dist/commands/sync/untracked-targets.js +108 -0
- package/dist/commands/sync.d.ts +17 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +375 -106
- package/dist/diagnostics.d.ts +1 -1
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/engine-daemon.d.ts +3 -1
- package/dist/engine-daemon.d.ts.map +1 -1
- package/dist/engine-daemon.js +49 -20
- package/dist/engine.d.ts +34 -3
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +578 -42
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +5 -6
- package/dist/extractors/manifest.d.ts +13 -1
- package/dist/extractors/manifest.d.ts.map +1 -1
- package/dist/extractors/manifest.js +97 -10
- package/dist/extractors/markdown.d.ts +5 -2
- package/dist/extractors/markdown.d.ts.map +1 -1
- package/dist/extractors/markdown.js +47 -12
- package/dist/extractors/playwright-cases.d.ts +24 -0
- package/dist/extractors/playwright-cases.d.ts.map +1 -0
- package/dist/extractors/playwright-cases.js +126 -0
- package/dist/extractors/relationships.d.ts +6 -0
- package/dist/extractors/relationships.d.ts.map +1 -1
- package/dist/extractors/relationships.js +2 -1
- package/dist/extractors/symbol-coordinates.d.ts +81 -3
- package/dist/extractors/symbol-coordinates.d.ts.map +1 -1
- package/dist/extractors/symbol-coordinates.js +389 -51
- package/dist/extractors/symbols-coordinator.js +11 -1
- package/dist/extractors/symbols-ts.d.ts +1 -0
- package/dist/extractors/symbols-ts.d.ts.map +1 -1
- package/dist/extractors/symbols-ts.js +142 -67
- package/dist/intent-search.d.ts +61 -0
- package/dist/intent-search.d.ts.map +1 -0
- package/dist/intent-search.js +437 -0
- package/dist/logic/ir.d.ts +1 -0
- package/dist/logic/ir.d.ts.map +1 -1
- package/dist/logic/ir.js +1 -1
- package/dist/operations/bootstrap/activation.d.ts +5 -0
- package/dist/operations/bootstrap/activation.d.ts.map +1 -0
- package/dist/operations/{autopilot → bootstrap}/activation.js +58 -33
- package/dist/operations/{autopilot → bootstrap}/candidate-helpers.d.ts.map +1 -1
- package/dist/operations/bootstrap/candidates.d.ts +4 -0
- package/dist/operations/{autopilot → bootstrap}/candidates.d.ts.map +1 -1
- package/dist/operations/{autopilot → bootstrap}/candidates.js +22 -8
- package/dist/operations/{autopilot → bootstrap}/discovery-evidence.d.ts +2 -2
- package/dist/operations/{autopilot → bootstrap}/discovery-evidence.d.ts.map +1 -1
- package/dist/operations/{autopilot → bootstrap}/discovery-evidence.js +46 -6
- package/dist/operations/{autopilot → bootstrap}/discovery.d.ts +1 -1
- package/dist/operations/bootstrap/discovery.d.ts.map +1 -0
- package/dist/operations/{autopilot → bootstrap}/discovery.js +21 -14
- package/dist/operations/bootstrap/generate.d.ts +9 -0
- package/dist/operations/bootstrap/generate.d.ts.map +1 -0
- package/dist/operations/bootstrap/generate.js +207 -0
- package/dist/operations/{autopilot → bootstrap}/guidance-actions.d.ts +2 -2
- package/dist/operations/{autopilot → bootstrap}/guidance-actions.d.ts.map +1 -1
- package/dist/operations/{autopilot → bootstrap}/guidance-actions.js +4 -4
- package/dist/operations/{autopilot → bootstrap}/guidance.d.ts +3 -2
- package/dist/operations/bootstrap/guidance.d.ts.map +1 -0
- package/dist/operations/{autopilot → bootstrap}/guidance.js +3 -1
- package/dist/operations/{autopilot → bootstrap}/markdown-candidates.d.ts +2 -2
- package/dist/operations/{autopilot → bootstrap}/markdown-candidates.d.ts.map +1 -1
- package/dist/operations/{autopilot → bootstrap}/markdown-candidates.js +4 -3
- package/dist/operations/bootstrap/presentation.d.ts +15 -0
- package/dist/operations/bootstrap/presentation.d.ts.map +1 -0
- package/dist/operations/bootstrap/presentation.js +177 -0
- package/dist/operations/{autopilot → bootstrap}/requirement-claims.d.ts.map +1 -1
- package/dist/operations/{autopilot → bootstrap}/types.d.ts +63 -21
- package/dist/operations/bootstrap/types.d.ts.map +1 -0
- package/dist/operations/bootstrap/types.js +25 -0
- package/dist/operations/modeling/model-requirement.d.ts +5 -0
- package/dist/operations/modeling/model-requirement.d.ts.map +1 -1
- package/dist/operations/modeling/model-requirement.js +57 -63
- package/dist/operations/modeling/predicate-applicability.d.ts +16 -0
- package/dist/operations/modeling/predicate-applicability.d.ts.map +1 -0
- package/dist/operations/modeling/predicate-applicability.js +375 -0
- package/dist/operations/modeling/predicate-applyplan.d.ts +13 -2
- package/dist/operations/modeling/predicate-applyplan.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-applyplan.js +100 -3
- package/dist/operations/modeling/predicate-bindings.d.ts +6 -0
- package/dist/operations/modeling/predicate-bindings.d.ts.map +1 -0
- package/dist/operations/modeling/predicate-bindings.js +122 -0
- package/dist/operations/modeling/predicate-catalog-2.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-catalog-2.js +18 -2
- package/dist/operations/modeling/predicate-catalog-3.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-catalog-3.js +17 -1
- package/dist/operations/modeling/predicate-catalog-4.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-catalog-4.js +155 -0
- package/dist/operations/modeling/predicate-catalog-5.d.ts +10 -0
- package/dist/operations/modeling/predicate-catalog-5.d.ts.map +1 -0
- package/dist/operations/modeling/predicate-catalog-5.js +291 -0
- package/dist/operations/modeling/predicate-catalog.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-catalog.js +4 -0
- package/dist/operations/modeling/predicate-inference-1.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-inference-1.js +8 -0
- package/dist/operations/modeling/predicate-inference-launcher.d.ts +10 -0
- package/dist/operations/modeling/predicate-inference-launcher.d.ts.map +1 -0
- package/dist/operations/modeling/predicate-inference-launcher.js +13 -0
- package/dist/operations/modeling/predicate-inference.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-inference.js +4 -0
- package/dist/operations/modeling/predicate-loader.d.ts +1 -0
- package/dist/operations/modeling/predicate-loader.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-loader.js +11 -3
- package/dist/operations/modeling/predicate-ranker.d.ts +8 -1
- package/dist/operations/modeling/predicate-ranker.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-ranker.js +159 -24
- package/dist/operations/modeling/predicate-score-3.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-score-3.js +6 -0
- package/dist/operations/modeling/predicate-types.d.ts +35 -1
- package/dist/operations/modeling/predicate-types.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-usage-hints-3.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-usage-hints-3.js +40 -0
- package/dist/operations/modeling/predicate-usage-hints-4.d.ts +3 -0
- package/dist/operations/modeling/predicate-usage-hints-4.d.ts.map +1 -0
- package/dist/operations/modeling/predicate-usage-hints-4.js +84 -0
- package/dist/operations/modeling/predicate-utils.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-utils.js +2 -0
- package/dist/operations/modeling/suggest-predicates.d.ts +4 -2
- package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
- package/dist/operations/modeling/suggest-predicates.js +203 -32
- package/dist/operations/mutation/contradictions.d.ts +2 -1
- package/dist/operations/mutation/contradictions.d.ts.map +1 -1
- package/dist/operations/mutation/contradictions.js +26 -5
- package/dist/operations/mutation/delete.d.ts +3 -0
- package/dist/operations/mutation/delete.d.ts.map +1 -1
- package/dist/operations/mutation/delete.js +483 -19
- package/dist/operations/mutation/entity-projection.d.ts +11 -0
- package/dist/operations/mutation/entity-projection.d.ts.map +1 -0
- package/dist/operations/mutation/entity-projection.js +14 -0
- package/dist/operations/mutation/relationships.d.ts +11 -0
- package/dist/operations/mutation/relationships.d.ts.map +1 -1
- package/dist/operations/mutation/relationships.js +77 -5
- package/dist/operations/mutation/saga.d.ts +51 -0
- package/dist/operations/mutation/saga.d.ts.map +1 -0
- package/dist/operations/mutation/saga.js +67 -0
- package/dist/operations/mutation/serialization.d.ts.map +1 -1
- package/dist/operations/mutation/serialization.js +3 -1
- package/dist/operations/mutation/source-authoring.d.ts +65 -0
- package/dist/operations/mutation/source-authoring.d.ts.map +1 -0
- package/dist/operations/mutation/source-authoring.js +576 -0
- package/dist/operations/mutation/strict-fact.d.ts +1 -0
- package/dist/operations/mutation/strict-fact.d.ts.map +1 -1
- package/dist/operations/mutation/strict-fact.js +8 -5
- package/dist/operations/mutation/symbol-compiler-lock.d.ts +54 -0
- package/dist/operations/mutation/symbol-compiler-lock.d.ts.map +1 -0
- package/dist/operations/mutation/symbol-compiler-lock.js +337 -0
- package/dist/operations/mutation/symbol-granularity.d.ts.map +1 -1
- package/dist/operations/mutation/symbol-granularity.js +35 -4
- package/dist/operations/mutation/symbol-refresh.d.ts +19 -1
- package/dist/operations/mutation/symbol-refresh.d.ts.map +1 -1
- package/dist/operations/mutation/symbol-refresh.js +227 -63
- package/dist/operations/mutation/types.d.ts +57 -1
- package/dist/operations/mutation/types.d.ts.map +1 -1
- package/dist/operations/mutation/upsert.d.ts +18 -2
- package/dist/operations/mutation/upsert.d.ts.map +1 -1
- package/dist/operations/mutation/upsert.js +403 -32
- package/dist/operations/mutation/validate-upsert.js +2 -2
- package/dist/operations/mutation/validation.d.ts.map +1 -1
- package/dist/operations/mutation/validation.js +47 -4
- package/dist/operations/mutation/warnings.d.ts +1 -0
- package/dist/operations/mutation/warnings.d.ts.map +1 -1
- package/dist/operations/mutation/warnings.js +7 -5
- package/dist/operations/mutation/workspace-mutation-lock.d.ts +60 -0
- package/dist/operations/mutation/workspace-mutation-lock.d.ts.map +1 -0
- package/dist/operations/mutation/workspace-mutation-lock.js +362 -0
- package/dist/operations/planning/apply-plan.d.ts +19 -0
- package/dist/operations/planning/apply-plan.d.ts.map +1 -0
- package/dist/operations/planning/apply-plan.js +1514 -0
- package/dist/operations/planning/compile-intent.d.ts +108 -0
- package/dist/operations/planning/compile-intent.d.ts.map +1 -0
- package/dist/operations/planning/compile-intent.js +618 -0
- package/dist/operations/proof/ingest-proof.d.ts +34 -0
- package/dist/operations/proof/ingest-proof.d.ts.map +1 -0
- package/dist/operations/proof/ingest-proof.js +307 -0
- package/dist/operations/proof/migrate-legacy-receipts.d.ts +30 -0
- package/dist/operations/proof/migrate-legacy-receipts.d.ts.map +1 -0
- package/dist/operations/proof/migrate-legacy-receipts.js +88 -0
- package/dist/operations/proof/prune-receipts.d.ts +35 -0
- package/dist/operations/proof/prune-receipts.d.ts.map +1 -0
- package/dist/operations/proof/prune-receipts.js +91 -0
- package/dist/operations/proof/receipt-document.d.ts +29 -0
- package/dist/operations/proof/receipt-document.d.ts.map +1 -0
- package/dist/operations/proof/receipt-document.js +117 -0
- package/dist/operations/semantic-advisor/analyze-prose.d.ts +1 -0
- package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/analyze-prose.js +52 -28
- package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/clauses.js +35 -9
- package/dist/operations/semantic-advisor/ingestion-boundary.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/ingestion-boundary.js +7 -3
- package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts +51 -0
- package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts.map +1 -0
- package/dist/operations/semantic-advisor/predicate-rules-launcher.js +96 -0
- package/dist/operations/semantic-advisor/strict-count-rules.d.ts +2 -0
- package/dist/operations/semantic-advisor/strict-count-rules.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/strict-count-rules.js +40 -25
- package/dist/operations/semantic-advisor/types.d.ts +13 -5
- package/dist/operations/semantic-advisor/types.d.ts.map +1 -1
- package/dist/prolog/codec.d.ts +13 -1
- package/dist/prolog/codec.d.ts.map +1 -1
- package/dist/prolog/codec.js +269 -153
- package/dist/prolog/error-terms.d.ts +47 -0
- package/dist/prolog/error-terms.d.ts.map +1 -0
- package/dist/prolog/error-terms.js +334 -0
- package/dist/prolog/janitor.d.ts +50 -0
- package/dist/prolog/janitor.d.ts.map +1 -0
- package/dist/prolog/janitor.js +154 -0
- package/dist/prolog/store-lock.d.ts +45 -0
- package/dist/prolog/store-lock.d.ts.map +1 -0
- package/dist/prolog/store-lock.js +195 -0
- package/dist/prolog.d.ts +7 -0
- package/dist/prolog.d.ts.map +1 -1
- package/dist/prolog.js +82 -25
- package/dist/proof/evaluate.d.ts +27 -0
- package/dist/proof/evaluate.d.ts.map +1 -0
- package/dist/proof/evaluate.js +151 -0
- package/dist/proof/inspect.d.ts +12 -0
- package/dist/proof/inspect.d.ts.map +1 -0
- package/dist/proof/inspect.js +236 -0
- package/dist/proof/integrations.d.ts +35 -0
- package/dist/proof/integrations.d.ts.map +1 -0
- package/dist/proof/integrations.js +123 -0
- package/dist/proof/producers/junit-adapter.d.ts +26 -0
- package/dist/proof/producers/junit-adapter.d.ts.map +1 -0
- package/dist/proof/producers/junit-adapter.js +186 -0
- package/dist/proof/producers/playwright-case-id.d.ts +8 -0
- package/dist/proof/producers/playwright-case-id.d.ts.map +1 -0
- package/dist/proof/producers/playwright-case-id.js +25 -0
- package/dist/proof/producers/playwright-reporter.d.ts +27 -0
- package/dist/proof/producers/playwright-reporter.d.ts.map +1 -0
- package/dist/proof/producers/playwright-reporter.js +138 -0
- package/dist/proof/producers/tap-adapter.d.ts +10 -0
- package/dist/proof/producers/tap-adapter.d.ts.map +1 -0
- package/dist/proof/producers/tap-adapter.js +200 -0
- package/dist/proof/receipt-outcome.d.ts +2 -0
- package/dist/proof/receipt-outcome.d.ts.map +1 -0
- package/dist/proof/receipt-outcome.js +1 -0
- package/dist/public/branch-resolver.d.ts +1 -0
- package/dist/public/branch-resolver.d.ts.map +1 -1
- package/dist/public/branch-resolver.js +1 -0
- package/dist/public/check-types.d.ts +2 -2
- package/dist/public/check-types.d.ts.map +1 -1
- package/dist/public/check-types.js +16 -16
- package/dist/public/diagnostic-usage.d.ts.map +1 -1
- package/dist/public/diagnostic-usage.js +74 -6
- package/dist/public/distribution-parity.d.ts +7 -1
- package/dist/public/distribution-parity.d.ts.map +1 -1
- package/dist/public/distribution-parity.js +15 -9
- package/dist/public/ignore-policy.d.ts.map +1 -1
- package/dist/public/ignore-policy.js +16 -4
- package/dist/public/impact/coverage-depth-quality.d.ts +7 -1
- package/dist/public/impact/coverage-depth-quality.d.ts.map +1 -1
- package/dist/public/impact/coverage-depth-quality.js +22 -4
- package/dist/public/impact/diagnostics.d.ts.map +1 -1
- package/dist/public/impact/diagnostics.js +2 -2
- package/dist/public/impact/diff-meaning.d.ts +1 -0
- package/dist/public/impact/diff-meaning.d.ts.map +1 -1
- package/dist/public/impact/diff-meaning.js +5 -2
- package/dist/public/impact/full-kb-quality.d.ts +7 -2
- package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
- package/dist/public/impact/full-kb-quality.js +364 -39
- package/dist/public/impact/manifest.d.ts.map +1 -1
- package/dist/public/impact/manifest.js +2 -5
- package/dist/public/operational-artifacts.d.ts.map +1 -1
- package/dist/public/operational-artifacts.js +7 -1
- package/dist/public/operations/catalog.d.ts +900 -34
- package/dist/public/operations/catalog.d.ts.map +1 -1
- package/dist/public/operations/catalog.js +130 -6
- package/dist/public/operations/check-executor.d.ts +2 -2
- package/dist/public/operations/check-executor.d.ts.map +1 -1
- package/dist/public/operations/check-executor.js +68 -13
- package/dist/public/operations/check-format-shared.d.ts +3 -0
- package/dist/public/operations/check-format-shared.d.ts.map +1 -1
- package/dist/public/operations/check-format-shared.js +3 -0
- package/dist/public/operations/check-helpers.d.ts +27 -2
- package/dist/public/operations/check-helpers.d.ts.map +1 -1
- package/dist/public/operations/check-helpers.js +62 -26
- package/dist/public/operations/contracts.d.ts +18 -0
- package/dist/public/operations/contracts.d.ts.map +1 -0
- package/dist/public/operations/contracts.js +334 -0
- package/dist/public/operations/discovery-entities.d.ts +3 -0
- package/dist/public/operations/discovery-entities.d.ts.map +1 -1
- package/dist/public/operations/discovery-entities.js +4 -0
- package/dist/public/operations/discovery-executors.d.ts +43 -7
- package/dist/public/operations/discovery-executors.d.ts.map +1 -1
- package/dist/public/operations/discovery-executors.js +216 -13
- package/dist/public/operations/index.d.ts +9 -4
- package/dist/public/operations/index.d.ts.map +1 -1
- package/dist/public/operations/index.js +8 -3
- package/dist/public/operations/migration-plan.d.ts +102 -0
- package/dist/public/operations/migration-plan.d.ts.map +1 -0
- package/dist/public/operations/migration-plan.js +539 -0
- package/dist/public/operations/node-ports.d.ts.map +1 -1
- package/dist/public/operations/node-ports.js +71 -11
- package/dist/public/operations/prolog-json.d.ts +14 -0
- package/dist/public/operations/prolog-json.d.ts.map +1 -1
- package/dist/public/operations/prolog-json.js +44 -5
- package/dist/public/operations/repair-plan.d.ts +3 -3
- package/dist/public/operations/repair-plan.d.ts.map +1 -1
- package/dist/public/operations/repair-plan.js +49 -18
- package/dist/public/operations/result-envelope.d.ts +14 -0
- package/dist/public/operations/result-envelope.d.ts.map +1 -0
- package/dist/public/operations/result-envelope.js +106 -0
- package/dist/public/operations/runtime-types.d.ts +102 -7
- package/dist/public/operations/runtime-types.d.ts.map +1 -1
- package/dist/public/operations/source-relationship-parity.d.ts +13 -0
- package/dist/public/operations/source-relationship-parity.d.ts.map +1 -0
- package/dist/public/operations/source-relationship-parity.js +162 -0
- package/dist/public/operations/specs/{autopilot.d.ts → bootstrap.d.ts} +9 -9
- package/dist/public/operations/specs/bootstrap.d.ts.map +1 -0
- package/dist/public/operations/specs/{autopilot.js → bootstrap.js} +8 -7
- package/dist/public/operations/specs/check-rules.generated.d.ts +5 -0
- package/dist/public/operations/specs/check-rules.generated.d.ts.map +1 -0
- package/dist/public/operations/specs/check-rules.generated.js +34 -0
- package/dist/public/operations/specs/check.d.ts +9 -4
- package/dist/public/operations/specs/check.d.ts.map +1 -1
- package/dist/public/operations/specs/check.js +10 -21
- package/dist/public/operations/specs/discovery.d.ts +87 -3
- package/dist/public/operations/specs/discovery.d.ts.map +1 -1
- package/dist/public/operations/specs/discovery.js +53 -3
- package/dist/public/operations/specs/modeling.d.ts +3 -3
- package/dist/public/operations/specs/modeling.js +3 -3
- package/dist/public/operations/specs/mutation-schemas.d.ts +251 -14
- package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
- package/dist/public/operations/specs/mutation-schemas.js +16 -6
- package/dist/public/operations/specs/mutation.d.ts +42 -2
- package/dist/public/operations/specs/mutation.d.ts.map +1 -1
- package/dist/public/operations/specs/mutation.js +26 -2
- package/dist/public/operations/specs/planning.d.ts +279 -0
- package/dist/public/operations/specs/planning.d.ts.map +1 -0
- package/dist/public/operations/specs/planning.js +197 -0
- package/dist/public/operations/specs/proof.d.ts +212 -0
- package/dist/public/operations/specs/proof.d.ts.map +1 -0
- package/dist/public/operations/specs/proof.js +30 -0
- package/dist/public/operations/specs/reporting.d.ts +23 -1
- package/dist/public/operations/specs/reporting.d.ts.map +1 -1
- package/dist/public/operations/specs/reporting.js +156 -11
- package/dist/public/operations/specs/upsert.d.ts +265 -14
- package/dist/public/operations/specs/upsert.d.ts.map +1 -1
- package/dist/public/operations/specs/upsert.js +9 -0
- package/dist/public/operations/symbol-repair-plan.d.ts +22 -0
- package/dist/public/operations/symbol-repair-plan.d.ts.map +1 -0
- package/dist/public/operations/symbol-repair-plan.js +238 -0
- package/dist/public/operations/types.d.ts +52 -1
- package/dist/public/operations/types.d.ts.map +1 -1
- package/dist/public/proof-fingerprint.d.ts +54 -0
- package/dist/public/proof-fingerprint.d.ts.map +1 -0
- package/dist/public/proof-fingerprint.js +141 -0
- package/dist/public/proof-protocol.d.ts +354 -0
- package/dist/public/proof-protocol.d.ts.map +1 -0
- package/dist/public/proof-protocol.js +454 -0
- package/dist/public/proof-receipt.d.ts +279 -0
- package/dist/public/proof-receipt.d.ts.map +1 -0
- package/dist/public/proof-receipt.js +377 -0
- package/dist/public/schemas/entity.d.ts.map +1 -1
- package/dist/public/schemas/entity.js +22 -6
- package/dist/public/skills/kibi-bootstrap/SKILL.md +58 -0
- package/dist/public/skills/kibi-bootstrap/resources/bootstrap.md +11 -0
- package/dist/public/skills/kibi-bootstrap/resources/branch-lifecycle.md +7 -0
- package/dist/public/skills/kibi-bootstrap/resources/operation-access.md +5 -0
- package/dist/public/skills/kibi-bootstrap/resources/source-authoring.md +8 -0
- package/dist/public/skills/kibi-freshness/SKILL.md +39 -9
- package/dist/public/skills/kibi-freshness/resources/branch-lifecycle.md +7 -0
- package/dist/public/skills/kibi-freshness/resources/operation-access.md +6 -0
- package/dist/public/skills/kibi-freshness/resources/source-authoring.md +7 -0
- package/dist/public/skills/kibi-traceability/SKILL.md +47 -47
- package/dist/public/skills/kibi-traceability/resources/branch-lifecycle.md +7 -0
- package/dist/public/skills/kibi-traceability/resources/operation-access.md +5 -0
- package/dist/public/skills/kibi-traceability/resources/source-authoring.md +6 -0
- package/dist/public/skills/kibi-traceability/resources/traceability.md +8 -0
- package/dist/public/skills/kibi-usage/SKILL.md +136 -231
- package/dist/public/skills/kibi-usage/resources/branch-lifecycle.md +31 -0
- package/dist/public/skills/kibi-usage/resources/kb-improvement.md +38 -0
- package/dist/public/skills/kibi-usage/resources/operation-access.md +36 -38
- package/dist/public/skills/kibi-usage/resources/proof.md +105 -0
- package/dist/public/skills/kibi-usage/resources/relationship-directions.md +3 -3
- package/dist/public/skills/kibi-usage/resources/source-authoring.md +31 -0
- package/dist/public/skills/kibi-usage/resources/workflows.md +57 -4
- package/dist/public/symbol-granularity.d.ts +3 -14
- package/dist/public/symbol-granularity.d.ts.map +1 -1
- package/dist/public/symbol-granularity.generated.d.ts +16 -0
- package/dist/public/symbol-granularity.generated.d.ts.map +1 -0
- package/dist/public/symbol-granularity.generated.js +20 -0
- package/dist/public/symbol-granularity.js +6 -46
- package/dist/public/telemetry-acceptance.d.ts +3 -70
- package/dist/public/telemetry-acceptance.d.ts.map +1 -1
- package/dist/public/telemetry-acceptance.js +11 -2
- package/dist/public/telemetry-remediation.js +1 -1
- package/dist/relationships/shards.d.ts +16 -0
- package/dist/relationships/shards.d.ts.map +1 -1
- package/dist/relationships/shards.js +87 -2
- package/dist/report/brand.d.ts +19 -0
- package/dist/report/brand.d.ts.map +1 -0
- package/dist/report/brand.js +112 -0
- package/dist/report/html-report.css +282 -0
- package/dist/report/html-report.d.ts +21 -0
- package/dist/report/html-report.d.ts.map +1 -0
- package/dist/report/html-report.js +700 -0
- package/dist/report/relative-time.d.ts +4 -0
- package/dist/report/relative-time.d.ts.map +1 -0
- package/dist/report/relative-time.js +46 -0
- package/dist/report/report-view.d.ts +17 -0
- package/dist/report/report-view.d.ts.map +1 -0
- package/dist/report/report-view.js +33 -0
- package/dist/report/repository.d.ts +35 -0
- package/dist/report/repository.d.ts.map +1 -0
- package/dist/report/repository.js +151 -0
- package/dist/runtime/cli-runtime.d.ts +2 -0
- package/dist/runtime/cli-runtime.d.ts.map +1 -1
- package/dist/runtime/cli-runtime.js +90 -23
- package/dist/schemas/entity.schema.json +1254 -239
- package/dist/search-ranking.d.ts +1 -0
- package/dist/search-ranking.d.ts.map +1 -1
- package/dist/search-ranking.js +3 -0
- package/dist/traceability/evidence-model.d.ts +30 -2
- package/dist/traceability/evidence-model.d.ts.map +1 -1
- package/dist/traceability/evidence-model.js +2 -2
- package/dist/traceability/git-staged.d.ts +20 -0
- package/dist/traceability/git-staged.d.ts.map +1 -1
- package/dist/traceability/git-staged.js +156 -37
- package/dist/traceability/markdown-validate.d.ts.map +1 -1
- package/dist/traceability/markdown-validate.js +12 -7
- package/dist/traceability/staged-diagnostics.d.ts +7 -0
- package/dist/traceability/staged-diagnostics.d.ts.map +1 -1
- package/dist/traceability/staged-diagnostics.js +78 -7
- package/dist/traceability/staged-file-coverage.d.ts +33 -0
- package/dist/traceability/staged-file-coverage.d.ts.map +1 -0
- package/dist/traceability/staged-file-coverage.js +284 -0
- package/dist/traceability/staged-impact-contract.d.ts +3 -3
- package/dist/traceability/staged-impact-contract.d.ts.map +1 -1
- package/dist/traceability/staged-impact-contract.js +12 -40
- package/dist/traceability/staged-symbols-manifest.d.ts +13 -0
- package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
- package/dist/traceability/staged-symbols-manifest.js +142 -26
- package/dist/traceability/symbol-extract.d.ts +5 -0
- package/dist/traceability/symbol-extract.d.ts.map +1 -1
- package/dist/traceability/symbol-extract.js +1 -1
- package/dist/traceability/temp-kb.d.ts +2 -0
- package/dist/traceability/temp-kb.d.ts.map +1 -1
- package/dist/traceability/temp-kb.js +14 -2
- package/dist/types/entities.d.ts +5 -0
- package/dist/types/entities.d.ts.map +1 -1
- package/dist/utils/branch-resolver.d.ts +25 -10
- package/dist/utils/branch-resolver.d.ts.map +1 -1
- package/dist/utils/branch-resolver.js +124 -38
- package/dist/utils/branch-store-locator.d.ts +23 -0
- package/dist/utils/branch-store-locator.d.ts.map +1 -0
- package/dist/utils/branch-store-locator.js +90 -0
- package/dist/utils/branch-store.d.ts +21 -0
- package/dist/utils/branch-store.d.ts.map +1 -0
- package/dist/utils/branch-store.js +157 -0
- package/dist/utils/config.d.ts +39 -37
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +107 -119
- package/dist/utils/kb-manifest.d.ts +35 -0
- package/dist/utils/kb-manifest.d.ts.map +1 -0
- package/dist/utils/kb-manifest.js +154 -0
- package/dist/utils/kb-paths.d.ts +54 -0
- package/dist/utils/kb-paths.d.ts.map +1 -0
- package/dist/utils/kb-paths.js +125 -0
- package/dist/utils/manifest-paths.d.ts +4 -4
- package/dist/utils/manifest-paths.d.ts.map +1 -1
- package/dist/utils/manifest-paths.js +8 -56
- package/dist/utils/rule-registry.d.ts +42 -24
- package/dist/utils/rule-registry.d.ts.map +1 -1
- package/dist/utils/rule-registry.generated.d.ts +97 -0
- package/dist/utils/rule-registry.generated.d.ts.map +1 -0
- package/dist/utils/rule-registry.generated.js +125 -0
- package/dist/utils/rule-registry.js +52 -148
- package/dist/utils/schema-version.d.ts +5 -5
- package/dist/utils/schema-version.d.ts.map +1 -1
- package/dist/utils/schema-version.js +26 -6
- package/dist/utils/strict-modeling.d.ts +1 -4
- package/dist/utils/strict-modeling.d.ts.map +1 -1
- package/dist/utils/strict-modeling.js +8 -9
- package/package.json +47 -11
- package/schema/config.json +2 -2
- package/schema/manifest.json +26 -0
- package/src/public/branch-resolver.ts +1 -0
- package/src/public/check-types.ts +22 -19
- package/src/public/diagnostic-usage.ts +84 -6
- package/src/public/distribution-parity.ts +17 -9
- package/src/public/ignore-policy.ts +16 -10
- package/src/public/impact/coverage-depth-quality.ts +37 -1
- package/src/public/impact/diagnostics.ts +2 -1
- package/src/public/impact/diff-meaning.ts +11 -4
- package/src/public/impact/full-kb-quality.ts +545 -41
- package/src/public/impact/manifest.ts +2 -4
- package/src/public/operational-artifacts.ts +9 -1
- package/src/public/operations/catalog.ts +153 -10
- package/src/public/operations/check-executor.ts +98 -15
- package/src/public/operations/check-format-shared.ts +6 -0
- package/src/public/operations/check-helpers.ts +74 -35
- package/src/public/operations/contracts.ts +382 -0
- package/src/public/operations/discovery-entities.ts +7 -0
- package/src/public/operations/discovery-executors.ts +315 -25
- package/src/public/operations/index.ts +9 -4
- package/src/public/operations/migration-plan.ts +747 -0
- package/src/public/operations/node-ports.ts +87 -13
- package/src/public/operations/prolog-json.ts +60 -5
- package/src/public/operations/repair-plan.ts +60 -22
- package/src/public/operations/result-envelope.ts +141 -0
- package/src/public/operations/runtime-types.ts +96 -5
- package/src/public/operations/source-relationship-parity.ts +226 -0
- package/src/public/operations/specs/{autopilot.ts → bootstrap.ts} +17 -16
- package/src/public/operations/specs/check-rules.generated.ts +37 -0
- package/src/public/operations/specs/check.ts +14 -22
- package/src/public/operations/specs/discovery.ts +57 -3
- package/src/public/operations/specs/modeling.ts +3 -3
- package/src/public/operations/specs/mutation-schemas.ts +24 -6
- package/src/public/operations/specs/mutation.ts +27 -2
- package/src/public/operations/specs/planning.ts +241 -0
- package/src/public/operations/specs/proof.ts +43 -0
- package/src/public/operations/specs/reporting.ts +193 -12
- package/src/public/operations/specs/upsert.ts +10 -0
- package/src/public/operations/symbol-repair-plan.ts +324 -0
- package/src/public/operations/types.ts +62 -1
- package/src/public/proof-fingerprint.ts +216 -0
- package/src/public/proof-protocol-types.d.ts +96 -0
- package/src/public/proof-protocol.ts +589 -0
- package/src/public/proof-receipt.ts +499 -0
- package/src/public/schemas/entity.ts +27 -6
- package/src/public/skills/kibi-bootstrap/SKILL.md +58 -0
- package/src/public/skills/kibi-bootstrap/resources/bootstrap.md +11 -0
- package/src/public/skills/kibi-bootstrap/resources/branch-lifecycle.md +7 -0
- package/src/public/skills/kibi-bootstrap/resources/operation-access.md +5 -0
- package/src/public/skills/kibi-bootstrap/resources/source-authoring.md +8 -0
- package/src/public/skills/kibi-freshness/SKILL.md +39 -9
- package/src/public/skills/kibi-freshness/resources/branch-lifecycle.md +7 -0
- package/src/public/skills/kibi-freshness/resources/operation-access.md +6 -0
- package/src/public/skills/kibi-freshness/resources/source-authoring.md +7 -0
- package/src/public/skills/kibi-traceability/SKILL.md +47 -47
- package/src/public/skills/kibi-traceability/resources/branch-lifecycle.md +7 -0
- package/src/public/skills/kibi-traceability/resources/operation-access.md +5 -0
- package/src/public/skills/kibi-traceability/resources/source-authoring.md +6 -0
- package/src/public/skills/kibi-traceability/resources/traceability.md +8 -0
- package/src/public/skills/kibi-usage/SKILL.md +136 -231
- package/src/public/skills/kibi-usage/resources/branch-lifecycle.md +31 -0
- package/src/public/skills/kibi-usage/resources/kb-improvement.md +38 -0
- package/src/public/skills/kibi-usage/resources/operation-access.md +36 -38
- package/src/public/skills/kibi-usage/resources/proof.md +105 -0
- package/src/public/skills/kibi-usage/resources/relationship-directions.md +3 -3
- package/src/public/skills/kibi-usage/resources/source-authoring.md +31 -0
- package/src/public/skills/kibi-usage/resources/workflows.md +57 -4
- package/src/public/symbol-granularity.generated.ts +41 -0
- package/src/public/symbol-granularity.ts +35 -59
- package/src/public/telemetry-acceptance-types.d.ts +98 -0
- package/src/public/telemetry-acceptance.ts +30 -93
- package/src/public/telemetry-remediation.ts +1 -1
- package/src/schemas/entity.schema.json +1254 -239
- package/templates/github/kibi-badge.yml +86 -0
- package/templates/github/kibi-report.yml +84 -0
- package/dist/operations/autopilot/activation.d.ts +0 -4
- package/dist/operations/autopilot/activation.d.ts.map +0 -1
- package/dist/operations/autopilot/candidates.d.ts +0 -4
- package/dist/operations/autopilot/discovery.d.ts.map +0 -1
- package/dist/operations/autopilot/generate.d.ts +0 -8
- package/dist/operations/autopilot/generate.d.ts.map +0 -1
- package/dist/operations/autopilot/generate.js +0 -112
- package/dist/operations/autopilot/guidance.d.ts.map +0 -1
- package/dist/operations/autopilot/presentation.d.ts +0 -13
- package/dist/operations/autopilot/presentation.d.ts.map +0 -1
- package/dist/operations/autopilot/presentation.js +0 -91
- package/dist/operations/autopilot/types.d.ts.map +0 -1
- package/dist/operations/autopilot/types.js +0 -8
- package/dist/public/operations/specs/autopilot.d.ts.map +0 -1
- package/dist/public/skills/init-kibi/SKILL.md +0 -62
- package/dist/public/verification-receipt.d.ts +0 -75
- package/dist/public/verification-receipt.d.ts.map +0 -1
- package/dist/public/verification-receipt.js +0 -129
- package/src/public/skills/init-kibi/SKILL.md +0 -62
- package/src/public/verification-receipt.ts +0 -170
- /package/dist/operations/{autopilot → bootstrap}/candidate-helpers.d.ts +0 -0
- /package/dist/operations/{autopilot → bootstrap}/candidate-helpers.js +0 -0
- /package/dist/operations/{autopilot → bootstrap}/requirement-claims.d.ts +0 -0
- /package/dist/operations/{autopilot → bootstrap}/requirement-claims.js +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { execFile } from "node:child_process";
|
|
1
|
+
import { execFile, execFileSync } from "node:child_process";
|
|
2
2
|
import { createHash } from "node:crypto";
|
|
3
|
+
import * as fsSync from "node:fs";
|
|
3
4
|
import * as fs from "node:fs/promises";
|
|
4
5
|
import path from "node:path";
|
|
5
6
|
import { promisify } from "node:util";
|
|
@@ -23,10 +24,22 @@ type NodeGitPort = GitPort & {
|
|
|
23
24
|
};
|
|
24
25
|
|
|
25
26
|
const execFileAsync = promisify(execFile);
|
|
26
|
-
const SNAPSHOT_EXCLUDED_PREFIXES = [
|
|
27
|
+
const SNAPSHOT_EXCLUDED_PREFIXES = [
|
|
28
|
+
".changeset/",
|
|
29
|
+
".kb/branches/",
|
|
30
|
+
".kb/recovery/",
|
|
31
|
+
".kb/proof/runs/",
|
|
32
|
+
".kb/briefs/",
|
|
33
|
+
".kb/migrations/",
|
|
34
|
+
"docs/",
|
|
35
|
+
] as const;
|
|
27
36
|
const ALWAYS_IGNORED_GLOBS = [
|
|
28
37
|
"**/.git/**",
|
|
29
|
-
"**/.kb/**",
|
|
38
|
+
"**/.kb/branches/**",
|
|
39
|
+
"**/.kb/recovery/**",
|
|
40
|
+
"**/.kb/proof/runs/**",
|
|
41
|
+
"**/.kb/briefs/**",
|
|
42
|
+
"**/.kb/migrations/**",
|
|
30
43
|
"**/node_modules/**",
|
|
31
44
|
"**/vendor/**",
|
|
32
45
|
"**/vendors/**",
|
|
@@ -45,7 +58,7 @@ function includedSnapshotPath(relativePath: string): boolean {
|
|
|
45
58
|
);
|
|
46
59
|
}
|
|
47
60
|
|
|
48
|
-
function
|
|
61
|
+
function withoutProofReceiptFrontmatter(content: string): string {
|
|
49
62
|
const lines = content.match(/[^\n]*\n|[^\n]+$/g) ?? [];
|
|
50
63
|
if (lines[0]?.trim() !== "---") return content;
|
|
51
64
|
let inFrontmatter = true;
|
|
@@ -59,7 +72,7 @@ function withoutVerificationReceiptFrontmatter(content: string): string {
|
|
|
59
72
|
retained.push(line);
|
|
60
73
|
continue;
|
|
61
74
|
}
|
|
62
|
-
if (inFrontmatter && /^
|
|
75
|
+
if (inFrontmatter && /^proof_receipts\s*:/.test(line)) {
|
|
63
76
|
skippingReceipts = true;
|
|
64
77
|
continue;
|
|
65
78
|
}
|
|
@@ -76,17 +89,42 @@ function withoutVerificationReceiptFrontmatter(content: string): string {
|
|
|
76
89
|
}
|
|
77
90
|
|
|
78
91
|
function snapshotFileContent(relativePath: string, content: Buffer): Buffer {
|
|
79
|
-
if (
|
|
80
|
-
relativePath.startsWith("documentation/") &&
|
|
81
|
-
relativePath.endsWith(".md")
|
|
82
|
-
) {
|
|
92
|
+
if (relativePath.endsWith(".md")) {
|
|
83
93
|
return Buffer.from(
|
|
84
|
-
|
|
94
|
+
withoutProofReceiptFrontmatter(content.toString("utf8")),
|
|
85
95
|
);
|
|
86
96
|
}
|
|
87
97
|
return content;
|
|
88
98
|
}
|
|
89
99
|
|
|
100
|
+
/**
|
|
101
|
+
* A tracked markdown file whose only change is proof-receipt frontmatter
|
|
102
|
+
* cannot alter the snapshot hash (receipts are stripped before hashing), so it
|
|
103
|
+
* must not mark the workspace dirty either. CI proof runs append receipts to
|
|
104
|
+
* tracked proof documents before reporting, and would otherwise always surface
|
|
105
|
+
* a dirty-workspace warning.
|
|
106
|
+
*/
|
|
107
|
+
function isReceiptOnlyMarkdownChange(
|
|
108
|
+
workspaceRoot: string,
|
|
109
|
+
relativePath: string,
|
|
110
|
+
): boolean {
|
|
111
|
+
if (!relativePath.endsWith(".md")) return false;
|
|
112
|
+
try {
|
|
113
|
+
const working = snapshotFileContent(
|
|
114
|
+
relativePath,
|
|
115
|
+
fsSync.readFileSync(path.join(workspaceRoot, relativePath)),
|
|
116
|
+
);
|
|
117
|
+
const committed = execFileSync(
|
|
118
|
+
"git",
|
|
119
|
+
["-C", workspaceRoot, "show", `HEAD:${relativePath}`],
|
|
120
|
+
{ encoding: "buffer", maxBuffer: 64 * 1024 * 1024 },
|
|
121
|
+
) as Buffer;
|
|
122
|
+
return working.equals(snapshotFileContent(relativePath, committed));
|
|
123
|
+
} catch {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
90
128
|
async function workspaceSnapshot(workspaceRoot: string) {
|
|
91
129
|
const { stdout: listed } = await execFileAsync(
|
|
92
130
|
"git",
|
|
@@ -108,7 +146,7 @@ async function workspaceSnapshot(workspaceRoot: string) {
|
|
|
108
146
|
.filter(includedSnapshotPath)
|
|
109
147
|
.sort();
|
|
110
148
|
const digest = createHash("sha256");
|
|
111
|
-
digest.update("kibi.workspace-snapshot.
|
|
149
|
+
digest.update("kibi.workspace-snapshot.v2\0");
|
|
112
150
|
for (const relativePath of paths) {
|
|
113
151
|
digest.update(relativePath);
|
|
114
152
|
digest.update("\0");
|
|
@@ -132,14 +170,48 @@ async function workspaceSnapshot(workspaceRoot: string) {
|
|
|
132
170
|
"status",
|
|
133
171
|
"--porcelain=v1",
|
|
134
172
|
"--untracked-files=normal",
|
|
173
|
+
"-z",
|
|
135
174
|
],
|
|
136
175
|
{ maxBuffer: 16 * 1024 * 1024 },
|
|
137
176
|
);
|
|
177
|
+
const rawChanges = status.split("\0").filter(Boolean);
|
|
178
|
+
const changes: {
|
|
179
|
+
path: string;
|
|
180
|
+
status: string;
|
|
181
|
+
snapshotRelevant: boolean;
|
|
182
|
+
previousPath?: string;
|
|
183
|
+
}[] = [];
|
|
184
|
+
for (let index = 0; index < rawChanges.length; index++) {
|
|
185
|
+
const entry = rawChanges[index] ?? "";
|
|
186
|
+
const statusCode = entry.slice(0, 2);
|
|
187
|
+
const relativePath = entry.slice(3).replaceAll("\\", "/");
|
|
188
|
+
const previous = rawChanges[index + 1];
|
|
189
|
+
const isRenameOrCopy = statusCode[0] === "R" || statusCode[0] === "C";
|
|
190
|
+
const previousPath =
|
|
191
|
+
isRenameOrCopy && previous ? previous.replaceAll("\\", "/") : undefined;
|
|
192
|
+
const receiptOnly =
|
|
193
|
+
statusCode.includes("M") &&
|
|
194
|
+
includedSnapshotPath(relativePath) &&
|
|
195
|
+
isReceiptOnlyMarkdownChange(workspaceRoot, relativePath);
|
|
196
|
+
changes.push({
|
|
197
|
+
path: relativePath,
|
|
198
|
+
status: statusCode,
|
|
199
|
+
snapshotRelevant:
|
|
200
|
+
(includedSnapshotPath(relativePath) && !receiptOnly) ||
|
|
201
|
+
(previousPath !== undefined && includedSnapshotPath(previousPath)),
|
|
202
|
+
...(previousPath !== undefined ? { previousPath } : {}),
|
|
203
|
+
});
|
|
204
|
+
if (previousPath !== undefined) index++;
|
|
205
|
+
}
|
|
206
|
+
const maxChanges = 200;
|
|
138
207
|
return {
|
|
139
|
-
version: "kibi.workspace-snapshot.
|
|
208
|
+
version: "kibi.workspace-snapshot.v2" as const,
|
|
140
209
|
hash: digest.digest("hex"),
|
|
141
|
-
dirty:
|
|
210
|
+
dirty: changes.some((change) => change.snapshotRelevant),
|
|
142
211
|
fileCount: paths.length,
|
|
212
|
+
changes: changes.slice(0, maxChanges),
|
|
213
|
+
changeCount: changes.length,
|
|
214
|
+
changesTruncated: changes.length > maxChanges,
|
|
143
215
|
};
|
|
144
216
|
}
|
|
145
217
|
|
|
@@ -148,10 +220,12 @@ export const nodeFilesystem: NodeFilesystemPort = {
|
|
|
148
220
|
writeFile: async (filePath, data) => {
|
|
149
221
|
await fs.writeFile(filePath, data, "utf8");
|
|
150
222
|
},
|
|
223
|
+
rename: (from, to) => fs.rename(from, to),
|
|
151
224
|
mkdir: async (directoryPath) => {
|
|
152
225
|
await fs.mkdir(directoryPath, { recursive: true });
|
|
153
226
|
},
|
|
154
227
|
stat: (filePath) => fs.stat(filePath),
|
|
228
|
+
unlink: (filePath) => fs.unlink(filePath),
|
|
155
229
|
glob: (patterns, options) =>
|
|
156
230
|
fg([...patterns], {
|
|
157
231
|
cwd: options.cwd,
|
|
@@ -5,6 +5,43 @@ import { resolveKbPlPath } from "../../prolog.js";
|
|
|
5
5
|
import { escapeAtom } from "../../prolog/codec.js";
|
|
6
6
|
import type { PrologPort } from "./runtime-types.js";
|
|
7
7
|
|
|
8
|
+
export type JsonBindingDecodeStage = "outer" | "inner";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* A JSON operation result is transported through Prolog's answer printer and
|
|
12
|
+
* then through the engine frame. Keep decode failures typed and bounded: the
|
|
13
|
+
* raw binding may contain project-authored data and must never be copied into
|
|
14
|
+
* diagnostics wholesale.
|
|
15
|
+
*/
|
|
16
|
+
export class OperationJsonDecodeError extends Error {
|
|
17
|
+
readonly code = "engine_result_invalid_json";
|
|
18
|
+
readonly stage: JsonBindingDecodeStage;
|
|
19
|
+
readonly rawLength: number;
|
|
20
|
+
readonly prefixCodePoints: readonly number[];
|
|
21
|
+
|
|
22
|
+
constructor(
|
|
23
|
+
errorLabel: string,
|
|
24
|
+
stage: JsonBindingDecodeStage,
|
|
25
|
+
rawJson: unknown,
|
|
26
|
+
cause: unknown,
|
|
27
|
+
) {
|
|
28
|
+
const rawText = typeof rawJson === "string" ? rawJson : "";
|
|
29
|
+
const bindingType = typeof rawJson;
|
|
30
|
+
const message = cause instanceof Error ? cause.message : String(cause);
|
|
31
|
+
super(
|
|
32
|
+
`${errorLabel} returned invalid JSON binding (stage=${stage}, bindingType=${bindingType}, length=${rawText.length}, prefixCodePoints=${JSON.stringify([...rawText].slice(0, 8).map((character) => character.codePointAt(0) ?? 0))}): ${message}`,
|
|
33
|
+
);
|
|
34
|
+
this.name = "OperationJsonDecodeError";
|
|
35
|
+
this.stage = stage;
|
|
36
|
+
this.rawLength = rawText.length;
|
|
37
|
+
this.prefixCodePoints = Object.freeze(
|
|
38
|
+
[...rawText]
|
|
39
|
+
.slice(0, 8)
|
|
40
|
+
.map((character) => character.codePointAt(0) ?? 0),
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
8
45
|
function resolveCoreModulePath(fileName: string): string {
|
|
9
46
|
const genericOverride = getKbPlPathOverride();
|
|
10
47
|
return path.join(
|
|
@@ -29,9 +66,10 @@ export async function runOperationJsonQuery<T>(
|
|
|
29
66
|
const longLivedEngine =
|
|
30
67
|
typeof (prolog as { storageStatus?: unknown }).storageStatus === "function";
|
|
31
68
|
const oneShotMode =
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
69
|
+
prolog.oneShotMode === true ||
|
|
70
|
+
(!longLivedEngine &&
|
|
71
|
+
process.env.NODE_ENV === "test" &&
|
|
72
|
+
typeof (globalThis as { Bun?: unknown }).Bun !== "undefined");
|
|
35
73
|
const typedStatusQuery = prolog.queryStatusJson;
|
|
36
74
|
const result =
|
|
37
75
|
fileName === "status.pl" && typeof typedStatusQuery === "function"
|
|
@@ -48,9 +86,26 @@ export async function runOperationJsonQuery<T>(
|
|
|
48
86
|
if (rawJson === undefined) {
|
|
49
87
|
throw new Error(`${errorLabel} query returned no JsonString binding`);
|
|
50
88
|
}
|
|
51
|
-
|
|
89
|
+
if (typeof rawJson !== "string") {
|
|
90
|
+
throw new OperationJsonDecodeError(
|
|
91
|
+
errorLabel,
|
|
92
|
+
"outer",
|
|
93
|
+
rawJson,
|
|
94
|
+
new TypeError("JsonString binding is not a string"),
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
let parsed: unknown;
|
|
98
|
+
try {
|
|
99
|
+
parsed = JSON.parse(rawJson);
|
|
100
|
+
} catch (error) {
|
|
101
|
+
throw new OperationJsonDecodeError(errorLabel, "outer", rawJson, error);
|
|
102
|
+
}
|
|
52
103
|
if (typeof parsed === "string") {
|
|
53
|
-
|
|
104
|
+
try {
|
|
105
|
+
parsed = JSON.parse(parsed);
|
|
106
|
+
} catch (error) {
|
|
107
|
+
throw new OperationJsonDecodeError(errorLabel, "inner", parsed, error);
|
|
108
|
+
}
|
|
54
109
|
}
|
|
55
110
|
return parsed as T;
|
|
56
111
|
}
|
|
@@ -126,15 +126,14 @@ const REPAIR_PHASES = {
|
|
|
126
126
|
validationRules: [],
|
|
127
127
|
writePolicy: "runtime_recovery",
|
|
128
128
|
},
|
|
129
|
-
|
|
129
|
+
proof_evidence: {
|
|
130
130
|
order: 80,
|
|
131
131
|
objective:
|
|
132
|
-
"Run the
|
|
132
|
+
"Run the configured proof integration with kibi prove and append fresh snapshot-bound passing receipts.",
|
|
133
133
|
workflowSteps: [
|
|
134
134
|
"kb_status",
|
|
135
|
-
"
|
|
136
|
-
"
|
|
137
|
-
"kb_upsert",
|
|
135
|
+
"execute_proof_run",
|
|
136
|
+
"kb_ingest_proof",
|
|
138
137
|
"kb_coverage",
|
|
139
138
|
],
|
|
140
139
|
validationRules: ["required-fields", "no-dangling-refs"],
|
|
@@ -206,12 +205,13 @@ const GAP_PHASE: Readonly<Record<string, RepairPhase>> = {
|
|
|
206
205
|
blocking_contradiction: "contradiction_resolution",
|
|
207
206
|
missing_scenario: "scenario_endpoints",
|
|
208
207
|
missing_scenario_test: "scenario_tests",
|
|
209
|
-
|
|
210
|
-
missing_passing_e2e: "
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
208
|
+
proof_snapshot_unavailable: "snapshot_runtime",
|
|
209
|
+
missing_passing_e2e: "proof_evidence",
|
|
210
|
+
proof_contract_mismatch: "proof_evidence",
|
|
211
|
+
missing_proof_receipt: "proof_evidence",
|
|
212
|
+
stale_proof_receipt: "proof_evidence",
|
|
213
|
+
failed_proof_receipt: "proof_evidence",
|
|
214
|
+
invalid_proof_receipt: "proof_evidence",
|
|
215
215
|
missing_executable_test_symbol: "executable_symbols",
|
|
216
216
|
missing_production_symbol: "production_ownership",
|
|
217
217
|
missing_production_symbol_coverage: "production_coverage",
|
|
@@ -233,11 +233,12 @@ const GAP_STAGE: Readonly<Record<string, string>> = {
|
|
|
233
233
|
missing_scenario: "scenarios",
|
|
234
234
|
missing_scenario_test: "scenario_tests",
|
|
235
235
|
missing_passing_e2e: "passing_e2e",
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
236
|
+
missing_proof_receipt: "passing_e2e",
|
|
237
|
+
stale_proof_receipt: "passing_e2e",
|
|
238
|
+
failed_proof_receipt: "passing_e2e",
|
|
239
|
+
invalid_proof_receipt: "passing_e2e",
|
|
240
|
+
proof_contract_mismatch: "passing_e2e",
|
|
241
|
+
proof_snapshot_unavailable: "passing_e2e",
|
|
241
242
|
missing_executable_test_symbol: "executable_symbols",
|
|
242
243
|
missing_production_symbol: "production_symbols",
|
|
243
244
|
missing_production_symbol_coverage: "production_symbols",
|
|
@@ -426,7 +427,38 @@ function buildRequirementBatches(
|
|
|
426
427
|
);
|
|
427
428
|
const priorBatchIds: string[] = [];
|
|
428
429
|
return phases.map((phase) => {
|
|
429
|
-
const
|
|
430
|
+
const phaseRepairs = byPhase.get(phase) ?? [];
|
|
431
|
+
const coordinatesNeedReview =
|
|
432
|
+
phase === "source_coordinates" &&
|
|
433
|
+
phaseRepairs.some((repair) => {
|
|
434
|
+
const evidence = repair.evidence.coordinateRepairs;
|
|
435
|
+
return (
|
|
436
|
+
repair.gap !== "missing_symbol_coordinates" ||
|
|
437
|
+
!Array.isArray(evidence) ||
|
|
438
|
+
evidence.length === 0 ||
|
|
439
|
+
evidence.some((item) => !isRecord(item) || item.refreshable !== true)
|
|
440
|
+
);
|
|
441
|
+
});
|
|
442
|
+
const definition: RepairPhaseDefinition = coordinatesNeedReview
|
|
443
|
+
? {
|
|
444
|
+
...REPAIR_PHASES[phase],
|
|
445
|
+
objective: phaseRepairs.some(
|
|
446
|
+
(repair) => repair.gap === "missing_requirement_source",
|
|
447
|
+
)
|
|
448
|
+
? "Bind the requirement to its current source document through validated upsert and inspect any missing symbol anchors before refreshing."
|
|
449
|
+
: "Query the affected symbols and repair their sourceFile/title or explicitly author granularity_reason: extractor-miss (or another intentional coarse anchor) through validated upsert before refreshing.",
|
|
450
|
+
workflowSteps: [
|
|
451
|
+
"kb_query",
|
|
452
|
+
"kb_validate_upsert",
|
|
453
|
+
"kb_upsert",
|
|
454
|
+
"kibi sync --refresh-symbol-coordinates",
|
|
455
|
+
"kibi sync",
|
|
456
|
+
"kb_check",
|
|
457
|
+
"kb_coverage",
|
|
458
|
+
],
|
|
459
|
+
writePolicy: "review_then_sequential_upsert",
|
|
460
|
+
}
|
|
461
|
+
: REPAIR_PHASES[phase];
|
|
430
462
|
const id = batchId(requirementId, phase);
|
|
431
463
|
const batch: RepairPlanBatch = {
|
|
432
464
|
id,
|
|
@@ -440,11 +472,17 @@ function buildRequirementBatches(
|
|
|
440
472
|
validationRules: definition.validationRules,
|
|
441
473
|
writePolicy: definition.writePolicy,
|
|
442
474
|
autoApplicable: false,
|
|
443
|
-
repairs:
|
|
444
|
-
(
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
475
|
+
repairs: phaseRepairs
|
|
476
|
+
.map((repair) =>
|
|
477
|
+
coordinatesNeedReview
|
|
478
|
+
? { ...repair, action: definition.objective }
|
|
479
|
+
: repair,
|
|
480
|
+
)
|
|
481
|
+
.sort(
|
|
482
|
+
(left, right) =>
|
|
483
|
+
left.proofPriority - right.proofPriority ||
|
|
484
|
+
left.gap.localeCompare(right.gap),
|
|
485
|
+
),
|
|
448
486
|
};
|
|
449
487
|
priorBatchIds.push(id);
|
|
450
488
|
return batch;
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import type { KibiResult, OperationEffect, OperationName } from "./types.js";
|
|
2
|
+
|
|
3
|
+
export const KIBI_PROTOCOL_VERSION = 1 as const;
|
|
4
|
+
|
|
5
|
+
function record(value: unknown): value is Record<string, unknown> {
|
|
6
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
function diagnostics(value: unknown): KibiResult["diagnostics"] {
|
|
10
|
+
if (!Array.isArray(value)) return [];
|
|
11
|
+
return value.flatMap((entry) => {
|
|
12
|
+
if (typeof entry === "string")
|
|
13
|
+
return [{ message: entry, severity: "warning" as const }];
|
|
14
|
+
if (!record(entry) || typeof entry.message !== "string") return [];
|
|
15
|
+
return [entry as KibiResult["diagnostics"][number]];
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function nextActions(value: unknown): KibiResult["nextActions"] {
|
|
20
|
+
if (!Array.isArray(value)) return [];
|
|
21
|
+
return value.flatMap((entry) => {
|
|
22
|
+
if (
|
|
23
|
+
!record(entry) ||
|
|
24
|
+
typeof entry.operation !== "string" ||
|
|
25
|
+
typeof entry.reason !== "string"
|
|
26
|
+
)
|
|
27
|
+
return [];
|
|
28
|
+
return [
|
|
29
|
+
{
|
|
30
|
+
operation: entry.operation,
|
|
31
|
+
input: entry.input,
|
|
32
|
+
reason: entry.reason,
|
|
33
|
+
required: entry.required === true,
|
|
34
|
+
},
|
|
35
|
+
];
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function failedEffectStatus(
|
|
40
|
+
effect: OperationEffect,
|
|
41
|
+
failure: Record<string, unknown>,
|
|
42
|
+
): KibiResult["effects"][number] {
|
|
43
|
+
return {
|
|
44
|
+
kind: effect,
|
|
45
|
+
status: "failed",
|
|
46
|
+
detail: failure.detail,
|
|
47
|
+
...(typeof failure.errorCode === "string"
|
|
48
|
+
? { errorCode: failure.errorCode }
|
|
49
|
+
: {}),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function effectStatus(
|
|
54
|
+
effect: OperationEffect,
|
|
55
|
+
data: Record<string, unknown> | undefined,
|
|
56
|
+
): KibiResult["effects"][number] {
|
|
57
|
+
const failures = data?.effectFailures;
|
|
58
|
+
if (Array.isArray(failures)) {
|
|
59
|
+
const failure = failures.find(
|
|
60
|
+
(entry) => record(entry) && entry.kind === effect,
|
|
61
|
+
);
|
|
62
|
+
if (record(failure)) return failedEffectStatus(effect, failure);
|
|
63
|
+
}
|
|
64
|
+
return { kind: effect, status: "completed" };
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function extraFailedEffects(
|
|
68
|
+
declared: readonly OperationEffect[],
|
|
69
|
+
data: Record<string, unknown> | undefined,
|
|
70
|
+
): KibiResult["effects"] {
|
|
71
|
+
const failures = data?.effectFailures;
|
|
72
|
+
if (!Array.isArray(failures)) return [];
|
|
73
|
+
const seen = new Set(declared);
|
|
74
|
+
return failures.flatMap((entry) => {
|
|
75
|
+
if (
|
|
76
|
+
!record(entry) ||
|
|
77
|
+
typeof entry.kind !== "string" ||
|
|
78
|
+
seen.has(entry.kind as OperationEffect)
|
|
79
|
+
) {
|
|
80
|
+
return [];
|
|
81
|
+
}
|
|
82
|
+
seen.add(entry.kind as OperationEffect);
|
|
83
|
+
return [
|
|
84
|
+
{
|
|
85
|
+
kind: entry.kind,
|
|
86
|
+
status: "failed" as const,
|
|
87
|
+
detail: entry.detail,
|
|
88
|
+
...(typeof entry.errorCode === "string"
|
|
89
|
+
? { errorCode: entry.errorCode }
|
|
90
|
+
: {}),
|
|
91
|
+
},
|
|
92
|
+
];
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export function resultVersion(spec: {
|
|
97
|
+
readonly name: OperationName | string;
|
|
98
|
+
readonly resultVersion?: string;
|
|
99
|
+
}): string {
|
|
100
|
+
return spec.resultVersion ?? `kibi.${spec.name}.v1`;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export function toKibiResult<T>(
|
|
104
|
+
spec: {
|
|
105
|
+
readonly name: OperationName | string;
|
|
106
|
+
readonly effects: readonly OperationEffect[];
|
|
107
|
+
readonly resultVersion?: string;
|
|
108
|
+
},
|
|
109
|
+
data: T,
|
|
110
|
+
options: Partial<
|
|
111
|
+
Pick<KibiResult<T>, "status" | "diagnostics" | "nextActions" | "error">
|
|
112
|
+
> = {},
|
|
113
|
+
): KibiResult<T> {
|
|
114
|
+
const row = record(data) ? data : undefined;
|
|
115
|
+
const status =
|
|
116
|
+
options.status ??
|
|
117
|
+
(row?.status === "committed_with_repairs"
|
|
118
|
+
? "committed_with_repairs"
|
|
119
|
+
: "success");
|
|
120
|
+
return {
|
|
121
|
+
kibiProtocol: KIBI_PROTOCOL_VERSION,
|
|
122
|
+
operation: spec.name as OperationName,
|
|
123
|
+
resultVersion: resultVersion(spec),
|
|
124
|
+
status,
|
|
125
|
+
data,
|
|
126
|
+
effects: [
|
|
127
|
+
...spec.effects.map((effect) => effectStatus(effect, row)),
|
|
128
|
+
...extraFailedEffects(spec.effects, row),
|
|
129
|
+
],
|
|
130
|
+
diagnostics: options.diagnostics ?? diagnostics(row?.diagnostics),
|
|
131
|
+
nextActions: options.nextActions ?? nextActions(row?.nextActions),
|
|
132
|
+
...(options.error ? { error: options.error } : {}),
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export function operationData(value: unknown): unknown {
|
|
137
|
+
if (record(value) && "structuredContent" in value) {
|
|
138
|
+
return value.structuredContent;
|
|
139
|
+
}
|
|
140
|
+
return value;
|
|
141
|
+
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { PrologErrorRecord } from "../../prolog/error-terms.js";
|
|
2
|
+
import type { BranchAttachment } from "../../utils/branch-resolver.js";
|
|
1
3
|
import type { OperationEffect } from "./types.js";
|
|
2
4
|
|
|
3
5
|
export type { OperationEffect } from "./types.js";
|
|
@@ -6,6 +8,8 @@ export type PrologQueryResult = {
|
|
|
6
8
|
readonly success: boolean;
|
|
7
9
|
readonly bindings: Readonly<Record<string, string>>;
|
|
8
10
|
readonly error?: string;
|
|
11
|
+
/** Structured error term when the failure crossed a kb.pl throw site. */
|
|
12
|
+
readonly errorRecord?: PrologErrorRecord;
|
|
9
13
|
};
|
|
10
14
|
|
|
11
15
|
export type PrologEntityQueryInput = Readonly<{
|
|
@@ -35,20 +39,79 @@ export type PrologSearchQueryResult = Readonly<{
|
|
|
35
39
|
count: number;
|
|
36
40
|
}>;
|
|
37
41
|
|
|
42
|
+
/** Goal-free, versioned commands accepted by the journaled engine. */
|
|
43
|
+
export type EngineCommandV1 =
|
|
44
|
+
| Readonly<{ version: 1; kind: "status" }>
|
|
45
|
+
| Readonly<{
|
|
46
|
+
version: 1;
|
|
47
|
+
kind: "entities";
|
|
48
|
+
type?: string;
|
|
49
|
+
id?: string;
|
|
50
|
+
tags?: readonly string[];
|
|
51
|
+
sourceFile?: string;
|
|
52
|
+
limit: number;
|
|
53
|
+
offset: number;
|
|
54
|
+
}>
|
|
55
|
+
| Readonly<{
|
|
56
|
+
version: 1;
|
|
57
|
+
kind: "search";
|
|
58
|
+
query: string;
|
|
59
|
+
type?: string;
|
|
60
|
+
limit: number;
|
|
61
|
+
offset: number;
|
|
62
|
+
}>
|
|
63
|
+
| Readonly<{ version: 1; kind: "checkpoint" }>
|
|
64
|
+
| Readonly<{ version: 1; kind: "compact" }>
|
|
65
|
+
| Readonly<{ version: 1; kind: "save" }>
|
|
66
|
+
| Readonly<{ version: 1; kind: "check"; rule?: string }>
|
|
67
|
+
| Readonly<{
|
|
68
|
+
version: 1;
|
|
69
|
+
kind: "relationship";
|
|
70
|
+
action: "assert" | "retract";
|
|
71
|
+
type: string;
|
|
72
|
+
from: string;
|
|
73
|
+
to: string;
|
|
74
|
+
}>
|
|
75
|
+
| Readonly<{
|
|
76
|
+
version: 1;
|
|
77
|
+
kind: "persistence";
|
|
78
|
+
action: "checkpoint" | "compact" | "save" | "export";
|
|
79
|
+
targetDirectory?: string;
|
|
80
|
+
}>
|
|
81
|
+
| Readonly<{
|
|
82
|
+
version: 1;
|
|
83
|
+
kind: "lifecycle";
|
|
84
|
+
action: "stop" | "cancel";
|
|
85
|
+
requestId?: number;
|
|
86
|
+
}>
|
|
87
|
+
| Readonly<{ version: 1; kind: "stop" }>
|
|
88
|
+
| Readonly<{ version: 1; kind: "cancel"; requestId: number }>;
|
|
89
|
+
|
|
90
|
+
export interface EnginePort {
|
|
91
|
+
execute<T = PrologQueryResult>(
|
|
92
|
+
command: EngineCommandV1,
|
|
93
|
+
signal?: AbortSignal,
|
|
94
|
+
): Promise<T>;
|
|
95
|
+
}
|
|
96
|
+
|
|
38
97
|
// implements REQ-kibi-operation-interface-parity
|
|
39
98
|
export interface PrologPort {
|
|
40
|
-
query(goal: string): Promise<PrologQueryResult>;
|
|
99
|
+
query(goal: string, signal?: AbortSignal): Promise<PrologQueryResult>;
|
|
100
|
+
/** True when each query is isolated and must include its module load. */
|
|
101
|
+
oneShotMode?: boolean;
|
|
41
102
|
/** Optional index-backed page query supplied by the journaled engine. */
|
|
42
103
|
queryEntities?(
|
|
43
104
|
input: PrologEntityQueryInput,
|
|
105
|
+
signal?: AbortSignal,
|
|
44
106
|
): Promise<PrologEntityQueryResult>;
|
|
45
107
|
/** Optional normalized-token candidate lookup supplied by the engine. */
|
|
46
108
|
searchEntities?(
|
|
47
109
|
input: PrologSearchQueryInput,
|
|
110
|
+
signal?: AbortSignal,
|
|
48
111
|
): Promise<PrologSearchQueryResult>;
|
|
49
112
|
nextSolution(): Promise<PrologQueryResult | null>;
|
|
50
113
|
invalidateCache?(): void;
|
|
51
|
-
save(): Promise<PrologQueryResult>;
|
|
114
|
+
save(signal?: AbortSignal): Promise<PrologQueryResult>;
|
|
52
115
|
/** Present on the journaled engine; used to distinguish a persistent port from one-shot SWI. */
|
|
53
116
|
storageStatus?(): Promise<PrologQueryResult>;
|
|
54
117
|
/** Typed public freshness query; avoids exposing module loading over RPC. */
|
|
@@ -63,21 +126,39 @@ export type FilesystemStat = {
|
|
|
63
126
|
export interface FilesystemPort {
|
|
64
127
|
readFile(path: string): Promise<string>;
|
|
65
128
|
writeFile(path: string, data: string): Promise<void>;
|
|
129
|
+
/** Optional workspace globbing used by source-posture classifiers. */
|
|
130
|
+
glob?(
|
|
131
|
+
patterns: readonly string[],
|
|
132
|
+
options: { readonly cwd: string; readonly includeIgnored?: boolean },
|
|
133
|
+
): Promise<readonly string[]>;
|
|
134
|
+
/** Replace a file atomically when the host filesystem supports it. */
|
|
135
|
+
rename?(from: string, to: string): Promise<void>;
|
|
66
136
|
mkdir(path: string): Promise<void>;
|
|
67
137
|
stat(path: string): Promise<FilesystemStat>;
|
|
138
|
+
/** Optional destructive primitive used only to roll back newly-created files. */
|
|
139
|
+
unlink?(path: string): Promise<void>;
|
|
68
140
|
}
|
|
69
141
|
|
|
70
142
|
export interface GitPort {
|
|
71
|
-
|
|
72
|
-
|
|
143
|
+
/** Optional low-level Git probes; the journaled runtime may provide them. */
|
|
144
|
+
revParse?(...args: readonly string[]): Promise<string>;
|
|
145
|
+
showToplevel?(): Promise<string>;
|
|
73
146
|
workspaceSnapshot?(workspaceRoot: string): Promise<WorkspaceSnapshot>;
|
|
74
147
|
}
|
|
75
148
|
|
|
76
149
|
export type WorkspaceSnapshot = Readonly<{
|
|
77
|
-
version: "kibi.workspace-snapshot.
|
|
150
|
+
version: "kibi.workspace-snapshot.v2";
|
|
78
151
|
hash: string;
|
|
152
|
+
/** True only when at least one change can alter the verification snapshot. */
|
|
79
153
|
dirty: boolean;
|
|
80
154
|
fileCount: number;
|
|
155
|
+
readonly changes?: readonly {
|
|
156
|
+
readonly path: string;
|
|
157
|
+
readonly status: string;
|
|
158
|
+
readonly snapshotRelevant: boolean;
|
|
159
|
+
}[];
|
|
160
|
+
readonly changeCount?: number;
|
|
161
|
+
readonly changesTruncated?: boolean;
|
|
81
162
|
}>;
|
|
82
163
|
|
|
83
164
|
export interface NetworkPort {
|
|
@@ -101,9 +182,19 @@ export type OperationContext = {
|
|
|
101
182
|
readonly signal: AbortSignal;
|
|
102
183
|
readonly clock: Clock;
|
|
103
184
|
readonly prolog?: PrologPort;
|
|
185
|
+
readonly engine?: EnginePort;
|
|
186
|
+
/** Lazily acquire the branch engine for operations that may start without Prolog. */
|
|
187
|
+
readonly ensureProlog?: () => Promise<PrologPort>;
|
|
104
188
|
readonly fs?: FilesystemPort;
|
|
189
|
+
/** Whether filesystem-capable mutations must author tracked source files. */
|
|
190
|
+
readonly sourceFirst?: boolean;
|
|
191
|
+
/** Internal apply-plan capability: source bytes were already approved/published. */
|
|
192
|
+
readonly sourcePlanApplication?: boolean;
|
|
193
|
+
/** Internal apply-plan capability: caller holds the cooperative source lock. */
|
|
194
|
+
readonly sourceMutationLockHeld?: boolean;
|
|
105
195
|
readonly git?: GitPort;
|
|
106
196
|
readonly net?: NetworkPort;
|
|
197
|
+
readonly branchAttachment?: BranchAttachment;
|
|
107
198
|
};
|
|
108
199
|
|
|
109
200
|
export interface RuntimeOperationSpec<TInput = unknown, TResult = unknown> {
|