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,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/verification/",
|
|
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/verification/**",
|
|
41
|
+
"**/.kb/briefs/**",
|
|
42
|
+
"**/.kb/migrations/**",
|
|
30
43
|
"**/node_modules/**",
|
|
31
44
|
"**/vendor/**",
|
|
32
45
|
"**/vendors/**",
|
|
@@ -76,10 +89,7 @@ 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
|
withoutVerificationReceiptFrontmatter(content.toString("utf8")),
|
|
85
95
|
);
|
|
@@ -87,6 +97,34 @@ function snapshotFileContent(relativePath: string, content: Buffer): Buffer {
|
|
|
87
97
|
return content;
|
|
88
98
|
}
|
|
89
99
|
|
|
100
|
+
/**
|
|
101
|
+
* A tracked markdown file whose only change is verification-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
|
}
|
|
@@ -237,6 +237,7 @@ const GAP_STAGE: Readonly<Record<string, string>> = {
|
|
|
237
237
|
stale_verification_receipt: "passing_e2e",
|
|
238
238
|
failed_verification_receipt: "passing_e2e",
|
|
239
239
|
invalid_verification_receipt: "passing_e2e",
|
|
240
|
+
verification_contract_mismatch: "passing_e2e",
|
|
240
241
|
verification_snapshot_unavailable: "passing_e2e",
|
|
241
242
|
missing_executable_test_symbol: "executable_symbols",
|
|
242
243
|
missing_production_symbol: "production_symbols",
|
|
@@ -0,0 +1,136 @@
|
|
|
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
|
+
function effectStatus(
|
|
40
|
+
effect: OperationEffect,
|
|
41
|
+
data: Record<string, unknown> | undefined,
|
|
42
|
+
): KibiResult["effects"][number] {
|
|
43
|
+
const failures = data?.effectFailures;
|
|
44
|
+
if (Array.isArray(failures)) {
|
|
45
|
+
const failure = failures.find(
|
|
46
|
+
(entry) => record(entry) && entry.kind === effect,
|
|
47
|
+
);
|
|
48
|
+
if (record(failure)) {
|
|
49
|
+
return {
|
|
50
|
+
kind: effect,
|
|
51
|
+
status: "failed",
|
|
52
|
+
detail: failure.detail,
|
|
53
|
+
...(typeof failure.errorCode === "string"
|
|
54
|
+
? { errorCode: failure.errorCode }
|
|
55
|
+
: {}),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return { kind: effect, status: "completed" };
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function extraFailedEffects(
|
|
63
|
+
declared: readonly OperationEffect[],
|
|
64
|
+
data: Record<string, unknown> | undefined,
|
|
65
|
+
): KibiResult["effects"] {
|
|
66
|
+
const failures = data?.effectFailures;
|
|
67
|
+
if (!Array.isArray(failures)) return [];
|
|
68
|
+
const seen = new Set(declared);
|
|
69
|
+
return failures.flatMap((entry) => {
|
|
70
|
+
if (
|
|
71
|
+
!record(entry) ||
|
|
72
|
+
typeof entry.kind !== "string" ||
|
|
73
|
+
seen.has(entry.kind as OperationEffect)
|
|
74
|
+
) {
|
|
75
|
+
return [];
|
|
76
|
+
}
|
|
77
|
+
seen.add(entry.kind as OperationEffect);
|
|
78
|
+
return [
|
|
79
|
+
{
|
|
80
|
+
kind: entry.kind,
|
|
81
|
+
status: "failed" as const,
|
|
82
|
+
detail: entry.detail,
|
|
83
|
+
...(typeof entry.errorCode === "string"
|
|
84
|
+
? { errorCode: entry.errorCode }
|
|
85
|
+
: {}),
|
|
86
|
+
},
|
|
87
|
+
];
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export function resultVersion(spec: {
|
|
92
|
+
readonly name: OperationName | string;
|
|
93
|
+
readonly resultVersion?: string;
|
|
94
|
+
}): string {
|
|
95
|
+
return spec.resultVersion ?? `kibi.${spec.name}.v1`;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export function toKibiResult<T>(
|
|
99
|
+
spec: {
|
|
100
|
+
readonly name: OperationName | string;
|
|
101
|
+
readonly effects: readonly OperationEffect[];
|
|
102
|
+
readonly resultVersion?: string;
|
|
103
|
+
},
|
|
104
|
+
data: T,
|
|
105
|
+
options: Partial<
|
|
106
|
+
Pick<KibiResult<T>, "status" | "diagnostics" | "nextActions" | "error">
|
|
107
|
+
> = {},
|
|
108
|
+
): KibiResult<T> {
|
|
109
|
+
const row = record(data) ? data : undefined;
|
|
110
|
+
const status =
|
|
111
|
+
options.status ??
|
|
112
|
+
(row?.status === "committed_with_repairs"
|
|
113
|
+
? "committed_with_repairs"
|
|
114
|
+
: "success");
|
|
115
|
+
return {
|
|
116
|
+
kibiProtocol: KIBI_PROTOCOL_VERSION,
|
|
117
|
+
operation: spec.name as OperationName,
|
|
118
|
+
resultVersion: resultVersion(spec),
|
|
119
|
+
status,
|
|
120
|
+
data,
|
|
121
|
+
effects: [
|
|
122
|
+
...spec.effects.map((effect) => effectStatus(effect, row)),
|
|
123
|
+
...extraFailedEffects(spec.effects, row),
|
|
124
|
+
],
|
|
125
|
+
diagnostics: options.diagnostics ?? diagnostics(row?.diagnostics),
|
|
126
|
+
nextActions: options.nextActions ?? nextActions(row?.nextActions),
|
|
127
|
+
...(options.error ? { error: options.error } : {}),
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export function operationData(value: unknown): unknown {
|
|
132
|
+
if (record(value) && "structuredContent" in value) {
|
|
133
|
+
return value.structuredContent;
|
|
134
|
+
}
|
|
135
|
+
return value;
|
|
136
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BranchAttachment } from "../../utils/branch-resolver.js";
|
|
1
2
|
import type { OperationEffect } from "./types.js";
|
|
2
3
|
|
|
3
4
|
export type { OperationEffect } from "./types.js";
|
|
@@ -35,20 +36,79 @@ export type PrologSearchQueryResult = Readonly<{
|
|
|
35
36
|
count: number;
|
|
36
37
|
}>;
|
|
37
38
|
|
|
39
|
+
/** Goal-free, versioned commands accepted by the journaled engine. */
|
|
40
|
+
export type EngineCommandV1 =
|
|
41
|
+
| Readonly<{ version: 1; kind: "status" }>
|
|
42
|
+
| Readonly<{
|
|
43
|
+
version: 1;
|
|
44
|
+
kind: "entities";
|
|
45
|
+
type?: string;
|
|
46
|
+
id?: string;
|
|
47
|
+
tags?: readonly string[];
|
|
48
|
+
sourceFile?: string;
|
|
49
|
+
limit: number;
|
|
50
|
+
offset: number;
|
|
51
|
+
}>
|
|
52
|
+
| Readonly<{
|
|
53
|
+
version: 1;
|
|
54
|
+
kind: "search";
|
|
55
|
+
query: string;
|
|
56
|
+
type?: string;
|
|
57
|
+
limit: number;
|
|
58
|
+
offset: number;
|
|
59
|
+
}>
|
|
60
|
+
| Readonly<{ version: 1; kind: "checkpoint" }>
|
|
61
|
+
| Readonly<{ version: 1; kind: "compact" }>
|
|
62
|
+
| Readonly<{ version: 1; kind: "save" }>
|
|
63
|
+
| Readonly<{ version: 1; kind: "check"; rule?: string }>
|
|
64
|
+
| Readonly<{
|
|
65
|
+
version: 1;
|
|
66
|
+
kind: "relationship";
|
|
67
|
+
action: "assert" | "retract";
|
|
68
|
+
type: string;
|
|
69
|
+
from: string;
|
|
70
|
+
to: string;
|
|
71
|
+
}>
|
|
72
|
+
| Readonly<{
|
|
73
|
+
version: 1;
|
|
74
|
+
kind: "persistence";
|
|
75
|
+
action: "checkpoint" | "compact" | "save" | "export";
|
|
76
|
+
targetDirectory?: string;
|
|
77
|
+
}>
|
|
78
|
+
| Readonly<{
|
|
79
|
+
version: 1;
|
|
80
|
+
kind: "lifecycle";
|
|
81
|
+
action: "stop" | "cancel";
|
|
82
|
+
requestId?: number;
|
|
83
|
+
}>
|
|
84
|
+
| Readonly<{ version: 1; kind: "stop" }>
|
|
85
|
+
| Readonly<{ version: 1; kind: "cancel"; requestId: number }>;
|
|
86
|
+
|
|
87
|
+
export interface EnginePort {
|
|
88
|
+
execute<T = PrologQueryResult>(
|
|
89
|
+
command: EngineCommandV1,
|
|
90
|
+
signal?: AbortSignal,
|
|
91
|
+
): Promise<T>;
|
|
92
|
+
}
|
|
93
|
+
|
|
38
94
|
// implements REQ-kibi-operation-interface-parity
|
|
39
95
|
export interface PrologPort {
|
|
40
|
-
query(goal: string): Promise<PrologQueryResult>;
|
|
96
|
+
query(goal: string, signal?: AbortSignal): Promise<PrologQueryResult>;
|
|
97
|
+
/** True when each query is isolated and must include its module load. */
|
|
98
|
+
oneShotMode?: boolean;
|
|
41
99
|
/** Optional index-backed page query supplied by the journaled engine. */
|
|
42
100
|
queryEntities?(
|
|
43
101
|
input: PrologEntityQueryInput,
|
|
102
|
+
signal?: AbortSignal,
|
|
44
103
|
): Promise<PrologEntityQueryResult>;
|
|
45
104
|
/** Optional normalized-token candidate lookup supplied by the engine. */
|
|
46
105
|
searchEntities?(
|
|
47
106
|
input: PrologSearchQueryInput,
|
|
107
|
+
signal?: AbortSignal,
|
|
48
108
|
): Promise<PrologSearchQueryResult>;
|
|
49
109
|
nextSolution(): Promise<PrologQueryResult | null>;
|
|
50
110
|
invalidateCache?(): void;
|
|
51
|
-
save(): Promise<PrologQueryResult>;
|
|
111
|
+
save(signal?: AbortSignal): Promise<PrologQueryResult>;
|
|
52
112
|
/** Present on the journaled engine; used to distinguish a persistent port from one-shot SWI. */
|
|
53
113
|
storageStatus?(): Promise<PrologQueryResult>;
|
|
54
114
|
/** Typed public freshness query; avoids exposing module loading over RPC. */
|
|
@@ -63,21 +123,39 @@ export type FilesystemStat = {
|
|
|
63
123
|
export interface FilesystemPort {
|
|
64
124
|
readFile(path: string): Promise<string>;
|
|
65
125
|
writeFile(path: string, data: string): Promise<void>;
|
|
126
|
+
/** Optional workspace globbing used by source-posture classifiers. */
|
|
127
|
+
glob?(
|
|
128
|
+
patterns: readonly string[],
|
|
129
|
+
options: { readonly cwd: string; readonly includeIgnored?: boolean },
|
|
130
|
+
): Promise<readonly string[]>;
|
|
131
|
+
/** Replace a file atomically when the host filesystem supports it. */
|
|
132
|
+
rename?(from: string, to: string): Promise<void>;
|
|
66
133
|
mkdir(path: string): Promise<void>;
|
|
67
134
|
stat(path: string): Promise<FilesystemStat>;
|
|
135
|
+
/** Optional destructive primitive used only to roll back newly-created files. */
|
|
136
|
+
unlink?(path: string): Promise<void>;
|
|
68
137
|
}
|
|
69
138
|
|
|
70
139
|
export interface GitPort {
|
|
71
|
-
|
|
72
|
-
|
|
140
|
+
/** Optional low-level Git probes; the journaled runtime may provide them. */
|
|
141
|
+
revParse?(...args: readonly string[]): Promise<string>;
|
|
142
|
+
showToplevel?(): Promise<string>;
|
|
73
143
|
workspaceSnapshot?(workspaceRoot: string): Promise<WorkspaceSnapshot>;
|
|
74
144
|
}
|
|
75
145
|
|
|
76
146
|
export type WorkspaceSnapshot = Readonly<{
|
|
77
|
-
version: "kibi.workspace-snapshot.
|
|
147
|
+
version: "kibi.workspace-snapshot.v2";
|
|
78
148
|
hash: string;
|
|
149
|
+
/** True only when at least one change can alter the verification snapshot. */
|
|
79
150
|
dirty: boolean;
|
|
80
151
|
fileCount: number;
|
|
152
|
+
readonly changes?: readonly {
|
|
153
|
+
readonly path: string;
|
|
154
|
+
readonly status: string;
|
|
155
|
+
readonly snapshotRelevant: boolean;
|
|
156
|
+
}[];
|
|
157
|
+
readonly changeCount?: number;
|
|
158
|
+
readonly changesTruncated?: boolean;
|
|
81
159
|
}>;
|
|
82
160
|
|
|
83
161
|
export interface NetworkPort {
|
|
@@ -101,9 +179,17 @@ export type OperationContext = {
|
|
|
101
179
|
readonly signal: AbortSignal;
|
|
102
180
|
readonly clock: Clock;
|
|
103
181
|
readonly prolog?: PrologPort;
|
|
182
|
+
readonly engine?: EnginePort;
|
|
183
|
+
/** Lazily acquire the branch engine for operations that may start without Prolog. */
|
|
184
|
+
readonly ensureProlog?: () => Promise<PrologPort>;
|
|
104
185
|
readonly fs?: FilesystemPort;
|
|
186
|
+
/** Whether filesystem-capable mutations must author tracked source files. */
|
|
187
|
+
readonly sourceFirst?: boolean;
|
|
188
|
+
/** Internal apply-plan capability: source bytes were already approved/published. */
|
|
189
|
+
readonly sourcePlanApplication?: boolean;
|
|
105
190
|
readonly git?: GitPort;
|
|
106
191
|
readonly net?: NetworkPort;
|
|
192
|
+
readonly branchAttachment?: BranchAttachment;
|
|
107
193
|
};
|
|
108
194
|
|
|
109
195
|
export interface RuntimeOperationSpec<TInput = unknown, TResult = unknown> {
|