kibi-cli 1.0.1 → 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.js +3 -3
- package/dist/cli-operation-metadata.d.ts +4 -3
- package/dist/cli-operation-metadata.d.ts.map +1 -1
- package/dist/cli-operation-metadata.js +7 -5
- package/dist/cli-protocol.js +1 -1
- package/dist/cli-register-maintenance.d.ts.map +1 -1
- package/dist/cli-register-maintenance.js +7 -0
- 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 +1 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +17 -10
- package/dist/commands/branch.d.ts +1 -0
- package/dist/commands/branch.d.ts.map +1 -1
- package/dist/commands/branch.js +8 -4
- package/dist/commands/check.d.ts +14 -0
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +190 -44
- 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/doctor.d.ts +22 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +48 -22
- package/dist/commands/engine.d.ts +12 -0
- package/dist/commands/engine.d.ts.map +1 -1
- package/dist/commands/engine.js +40 -0
- package/dist/commands/github-init.d.ts +1 -0
- package/dist/commands/github-init.d.ts.map +1 -1
- package/dist/commands/github-init.js +9 -5
- package/dist/commands/init-helpers.d.ts.map +1 -1
- package/dist/commands/init-helpers.js +38 -5
- package/dist/commands/migrate.d.ts +4 -0
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +7 -7
- 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.js +1 -1
- package/dist/commands/sync/discovery.d.ts +3 -0
- package/dist/commands/sync/discovery.d.ts.map +1 -1
- package/dist/commands/sync/discovery.js +36 -28
- package/dist/commands/sync/manifest.d.ts +1 -1
- package/dist/commands/sync/manifest.d.ts.map +1 -1
- package/dist/commands/sync/manifest.js +53 -21
- 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 +25 -14
- 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 +11 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +74 -30
- 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 +14 -76
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +197 -30
- package/dist/extractors/manifest.d.ts +5 -0
- package/dist/extractors/manifest.d.ts.map +1 -1
- package/dist/extractors/manifest.js +46 -1
- package/dist/extractors/markdown.d.ts +5 -3
- package/dist/extractors/markdown.d.ts.map +1 -1
- package/dist/extractors/markdown.js +41 -24
- package/dist/extractors/playwright-cases.js +1 -1
- package/dist/extractors/relationships.d.ts +6 -0
- package/dist/extractors/relationships.d.ts.map +1 -1
- package/dist/extractors/relationships.js +1 -1
- package/dist/extractors/symbol-coordinates.d.ts.map +1 -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 +1 -0
- package/dist/intent-search.d.ts.map +1 -1
- package/dist/intent-search.js +7 -3
- 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 +2 -1
- package/dist/operations/bootstrap/activation.d.ts.map +1 -1
- package/dist/operations/bootstrap/activation.js +11 -3
- package/dist/operations/bootstrap/generate.d.ts +2 -1
- package/dist/operations/bootstrap/generate.d.ts.map +1 -1
- package/dist/operations/bootstrap/generate.js +6 -3
- package/dist/operations/bootstrap/guidance.d.ts +1 -0
- package/dist/operations/bootstrap/guidance.d.ts.map +1 -1
- package/dist/operations/bootstrap/guidance.js +1 -1
- 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 +53 -46
- package/dist/operations/modeling/predicate-applicability.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-applicability.js +103 -4
- 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-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-loader.d.ts +1 -0
- package/dist/operations/modeling/predicate-loader.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-loader.js +4 -3
- package/dist/operations/modeling/predicate-ranker.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-ranker.js +4 -1
- package/dist/operations/modeling/predicate-types.d.ts +1 -1
- package/dist/operations/modeling/predicate-types.d.ts.map +1 -1
- 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/suggest-predicates.d.ts +3 -1
- package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
- package/dist/operations/modeling/suggest-predicates.js +52 -19
- 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 +100 -32
- package/dist/operations/mutation/relationships.d.ts +1 -0
- package/dist/operations/mutation/relationships.d.ts.map +1 -1
- package/dist/operations/mutation/relationships.js +6 -4
- 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 -2
- package/dist/operations/mutation/source-authoring.d.ts +5 -1
- package/dist/operations/mutation/source-authoring.d.ts.map +1 -1
- package/dist/operations/mutation/source-authoring.js +79 -46
- 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 +5 -2
- package/dist/operations/mutation/symbol-compiler-lock.d.ts.map +1 -1
- package/dist/operations/mutation/symbol-compiler-lock.js +65 -2
- package/dist/operations/mutation/symbol-granularity.d.ts.map +1 -1
- package/dist/operations/mutation/symbol-granularity.js +2 -2
- package/dist/operations/mutation/symbol-refresh.d.ts +1 -0
- package/dist/operations/mutation/symbol-refresh.d.ts.map +1 -1
- package/dist/operations/mutation/symbol-refresh.js +10 -8
- 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 +86 -54
- 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 +46 -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 +8 -106
- package/dist/operations/planning/apply-plan.d.ts.map +1 -1
- package/dist/operations/planning/apply-plan.js +113 -36
- package/dist/operations/planning/compile-intent.d.ts +2 -0
- package/dist/operations/planning/compile-intent.d.ts.map +1 -1
- package/dist/operations/planning/compile-intent.js +70 -14
- 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 +46 -26
- package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/clauses.js +20 -7
- 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/prolog/codec.d.ts +13 -1
- package/dist/prolog/codec.d.ts.map +1 -1
- package/dist/prolog/codec.js +269 -154
- 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 +55 -17
- 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/{public → proof/producers}/playwright-case-id.d.ts +1 -1
- package/dist/proof/producers/playwright-case-id.d.ts.map +1 -0
- package/dist/{public → proof/producers}/playwright-case-id.js +3 -3
- 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/diagnostic-usage.js +6 -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 -10
- package/dist/public/impact/coverage-depth-quality.d.ts +1 -0
- package/dist/public/impact/coverage-depth-quality.d.ts.map +1 -1
- package/dist/public/impact/coverage-depth-quality.js +1 -1
- 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 +5 -2
- package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
- package/dist/public/impact/full-kb-quality.js +329 -64
- package/dist/public/operations/catalog.d.ts +447 -196
- package/dist/public/operations/catalog.d.ts.map +1 -1
- package/dist/public/operations/catalog.js +6 -4
- package/dist/public/operations/check-executor.d.ts.map +1 -1
- package/dist/public/operations/check-executor.js +3 -7
- package/dist/public/operations/contracts.d.ts +7 -0
- package/dist/public/operations/contracts.d.ts.map +1 -1
- package/dist/public/operations/contracts.js +31 -22
- 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 +9 -9
- package/dist/public/operations/discovery-executors.d.ts.map +1 -1
- package/dist/public/operations/discovery-executors.js +17 -14
- package/dist/public/operations/index.d.ts +1 -1
- package/dist/public/operations/index.d.ts.map +1 -1
- package/dist/public/operations/index.js +1 -1
- package/dist/public/operations/migration-plan.d.ts +4 -3
- package/dist/public/operations/migration-plan.d.ts.map +1 -1
- package/dist/public/operations/migration-plan.js +23 -21
- package/dist/public/operations/node-ports.js +6 -6
- 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 -19
- package/dist/public/operations/result-envelope.d.ts +1 -0
- package/dist/public/operations/result-envelope.d.ts.map +1 -1
- package/dist/public/operations/result-envelope.js +12 -10
- package/dist/public/operations/runtime-types.d.ts +5 -0
- package/dist/public/operations/runtime-types.d.ts.map +1 -1
- 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 +7 -2
- package/dist/public/operations/specs/check.d.ts.map +1 -1
- package/dist/public/operations/specs/check.js +8 -20
- package/dist/public/operations/specs/mutation-schemas.d.ts +257 -163
- package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
- package/dist/public/operations/specs/mutation-schemas.js +15 -7
- package/dist/public/operations/specs/planning.d.ts +9 -0
- package/dist/public/operations/specs/planning.d.ts.map +1 -1
- package/dist/public/operations/specs/planning.js +6 -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 +19 -0
- package/dist/public/operations/specs/reporting.d.ts.map +1 -1
- package/dist/public/operations/specs/reporting.js +112 -12
- package/dist/public/operations/specs/upsert.d.ts +257 -163
- package/dist/public/operations/specs/upsert.d.ts.map +1 -1
- package/dist/public/operations/symbol-repair-plan.d.ts +11 -0
- package/dist/public/operations/symbol-repair-plan.d.ts.map +1 -1
- package/dist/public/operations/symbol-repair-plan.js +118 -3
- package/dist/public/operations/types.d.ts +1 -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 +21 -7
- package/dist/public/skills/kibi-freshness/SKILL.md +1 -1
- package/dist/public/skills/kibi-usage/SKILL.md +41 -12
- package/dist/public/skills/kibi-usage/resources/operation-access.md +1 -1
- package/dist/public/skills/kibi-usage/resources/proof.md +105 -0
- package/dist/public/skills/kibi-usage/resources/workflows.md +6 -6
- 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 -47
- package/dist/public/telemetry-acceptance.d.ts +3 -77
- package/dist/public/telemetry-acceptance.d.ts.map +1 -1
- package/dist/public/telemetry-acceptance.js +4 -2
- package/dist/public/telemetry-remediation.js +1 -1
- package/dist/report/html-report.css +282 -0
- package/dist/report/html-report.d.ts +4 -2
- package/dist/report/html-report.d.ts.map +1 -1
- package/dist/report/html-report.js +37 -300
- 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 +14 -7
- package/dist/schemas/entity.schema.json +355 -215
- 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 +28 -0
- package/dist/traceability/evidence-model.d.ts.map +1 -1
- 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 +145 -1
- 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.js +4 -4
- 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 +138 -27
- 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 +13 -4
- package/dist/types/entities.d.ts +5 -3
- package/dist/types/entities.d.ts.map +1 -1
- package/dist/utils/branch-resolver.d.ts +1 -0
- package/dist/utils/branch-resolver.d.ts.map +1 -1
- package/dist/utils/branch-resolver.js +7 -4
- package/dist/utils/branch-store.d.ts +6 -0
- package/dist/utils/branch-store.d.ts.map +1 -1
- package/dist/utils/branch-store.js +27 -0
- package/dist/utils/kb-paths.d.ts +1 -1
- package/dist/utils/kb-paths.d.ts.map +1 -1
- package/dist/utils/kb-paths.js +1 -1
- package/dist/utils/rule-registry.d.ts +1 -11
- 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 +12 -113
- package/dist/utils/strict-modeling.d.ts +1 -0
- package/dist/utils/strict-modeling.d.ts.map +1 -1
- package/dist/utils/strict-modeling.js +1 -1
- package/package.json +8 -11
- package/src/public/diagnostic-usage.ts +6 -6
- package/src/public/distribution-parity.ts +17 -10
- package/src/public/impact/coverage-depth-quality.ts +1 -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 +463 -72
- package/src/public/operations/catalog.ts +10 -4
- package/src/public/operations/check-executor.ts +3 -7
- package/src/public/operations/contracts.ts +38 -22
- package/src/public/operations/discovery-entities.ts +7 -0
- package/src/public/operations/discovery-executors.ts +26 -23
- package/src/public/operations/index.ts +1 -1
- package/src/public/operations/migration-plan.ts +32 -25
- package/src/public/operations/node-ports.ts +6 -6
- package/src/public/operations/repair-plan.ts +60 -23
- package/src/public/operations/result-envelope.ts +15 -10
- package/src/public/operations/runtime-types.ts +5 -0
- package/src/public/operations/specs/check-rules.generated.ts +37 -0
- package/src/public/operations/specs/check.ts +12 -21
- package/src/public/operations/specs/mutation-schemas.ts +22 -9
- package/src/public/operations/specs/planning.ts +7 -0
- package/src/public/operations/specs/proof.ts +43 -0
- package/src/public/operations/specs/reporting.ts +140 -13
- package/src/public/operations/symbol-repair-plan.ts +163 -3
- package/src/public/operations/types.ts +1 -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 +26 -10
- package/src/public/skills/kibi-freshness/SKILL.md +1 -1
- package/src/public/skills/kibi-usage/SKILL.md +41 -12
- package/src/public/skills/kibi-usage/resources/operation-access.md +1 -1
- package/src/public/skills/kibi-usage/resources/proof.md +105 -0
- package/src/public/skills/kibi-usage/resources/workflows.md +6 -6
- package/src/public/symbol-granularity.generated.ts +41 -0
- package/src/public/symbol-granularity.ts +35 -60
- package/src/public/telemetry-acceptance-types.d.ts +98 -0
- package/src/public/telemetry-acceptance.ts +22 -100
- package/src/public/telemetry-remediation.ts +1 -1
- package/src/schemas/entity.schema.json +355 -215
- package/dist/cli-register-verification.d.ts +0 -3
- package/dist/cli-register-verification.d.ts.map +0 -1
- package/dist/cli-register-verification.js +0 -16
- package/dist/commands/verify.d.ts +0 -10
- package/dist/commands/verify.d.ts.map +0 -1
- package/dist/commands/verify.js +0 -126
- package/dist/operations/verification/ingest-verification.d.ts +0 -29
- package/dist/operations/verification/ingest-verification.d.ts.map +0 -1
- package/dist/operations/verification/ingest-verification.js +0 -192
- package/dist/public/operations/specs/verification.d.ts +0 -78
- package/dist/public/operations/specs/verification.d.ts.map +0 -1
- package/dist/public/operations/specs/verification.js +0 -62
- package/dist/public/playwright-case-id.d.ts.map +0 -1
- package/dist/public/verification-receipt.d.ts +0 -242
- package/dist/public/verification-receipt.d.ts.map +0 -1
- package/dist/public/verification-receipt.js +0 -296
- package/dist/verification/playwright-reporter.d.ts +0 -21
- package/dist/verification/playwright-reporter.d.ts.map +0 -1
- package/dist/verification/playwright-reporter.js +0 -114
- package/src/public/operations/specs/verification.ts +0 -78
- package/src/public/playwright-case-id.ts +0 -35
- package/src/public/verification-receipt.ts +0 -412
package/dist/commands/check.js
CHANGED
|
@@ -22,20 +22,21 @@ import { isCliTraceOrDebugEnabled } from "../env.js";
|
|
|
22
22
|
import { extractFromManifest, extractFromManifestString, } from "../extractors/manifest.js";
|
|
23
23
|
import { extractFromMarkdownString, } from "../extractors/markdown.js";
|
|
24
24
|
import { PrologProcess } from "../prolog.js";
|
|
25
|
-
import { escapeAtom, parseTriples, parseViolationRows, } from "../prolog/codec.js";
|
|
25
|
+
import { escapeAtom, normalizeEntityId, parseTriples, parseViolationRows, } from "../prolog/codec.js";
|
|
26
26
|
import { createSemanticReviewDiagnostics, createSymbolGranularityDiagnostics, createSymbolQualityDiagnostics, hasBlockingImpactDiagnostics, } from "../public/impact-diagnostics.js";
|
|
27
27
|
import { executeCheck } from "../public/operations/check-executor.js";
|
|
28
28
|
import { KIBI_NO_IMPACT_DECLARATION, KIBI_SYMBOLS_MANIFEST_PATH, KIBI_SYMBOL_COORDINATES_PATH, } from "../traceability/evidence-model.js";
|
|
29
|
-
import {
|
|
29
|
+
import { getStagedInventory, supportedStagedFiles, } from "../traceability/git-staged.js";
|
|
30
30
|
import { validateStagedMarkdown } from "../traceability/markdown-validate.js";
|
|
31
31
|
import { collectStagedKibiDiagnostics, } from "../traceability/staged-diagnostics.js";
|
|
32
|
+
import { analyzeStagedFileCoverage, } from "../traceability/staged-file-coverage.js";
|
|
32
33
|
import { classifyKibiImpactEvidence, isBehaviorSourceEdit, parseKibiImpactOverride, } from "../traceability/staged-impact-contract.js";
|
|
33
34
|
import { assessStagedSymbolsManifest, collectStagedAuthoredSymbolsManifestEvidence, } from "../traceability/staged-symbols-manifest.js";
|
|
34
35
|
import { createManifestLookupSentinelKey, extractSymbolsFromStagedFile, } from "../traceability/symbol-extract.js";
|
|
35
36
|
import { cleanupTempKb, consultOverlay, createOverlayFacts, createTempKb, projectStagedEntities, } from "../traceability/temp-kb.js";
|
|
36
37
|
import { formatViolations as formatStagedViolations, validateStagedSymbols, } from "../traceability/validate.js";
|
|
37
38
|
import { resolveBranchAttachment } from "../utils/branch-resolver.js";
|
|
38
|
-
import { CANONICAL_ENTITY_PATHS } from "../utils/kb-paths.js";
|
|
39
|
+
import { CANONICAL_ENTITY_PATHS, isEntityLanePath } from "../utils/kb-paths.js";
|
|
39
40
|
import { safeCleanupProlog } from "../utils/prolog-cleanup.js";
|
|
40
41
|
function getMatchGroup(match, index = 1) {
|
|
41
42
|
const value = match?.[index];
|
|
@@ -198,6 +199,9 @@ function formatStagedKibiDiagnostics(diagnostics) {
|
|
|
198
199
|
if (diagnostic.files.length > 0) {
|
|
199
200
|
lines.push(` Files: ${diagnostic.files.join(", ")}`);
|
|
200
201
|
}
|
|
202
|
+
for (const detail of diagnostic.details ?? []) {
|
|
203
|
+
lines.push(` Detail: ${detail}`);
|
|
204
|
+
}
|
|
201
205
|
if (diagnostic.docs.length > 0) {
|
|
202
206
|
lines.push(` Docs: ${diagnostic.docs.join(", ")}`);
|
|
203
207
|
}
|
|
@@ -239,6 +243,66 @@ function printStructuredCheckResult(input) {
|
|
|
239
243
|
},
|
|
240
244
|
}));
|
|
241
245
|
}
|
|
246
|
+
function formatStagedCoverage(result) {
|
|
247
|
+
const counts = {
|
|
248
|
+
symbol: result.files.filter((file) => file.analysisDepth === "symbol")
|
|
249
|
+
.length,
|
|
250
|
+
metadata: result.files.filter((file) => file.analysisDepth === "metadata")
|
|
251
|
+
.length,
|
|
252
|
+
file: result.files.filter((file) => file.analysisDepth === "file").length,
|
|
253
|
+
skipped: result.files.filter((file) => file.disposition === "skipped")
|
|
254
|
+
.length,
|
|
255
|
+
};
|
|
256
|
+
const lines = [
|
|
257
|
+
`Staged files: ${result.files.length} total; ${counts.symbol} symbol-level; ${counts.metadata} metadata; ${counts.file} file-level; ${counts.skipped} skipped.`,
|
|
258
|
+
];
|
|
259
|
+
for (const file of result.files) {
|
|
260
|
+
const details = [file.analysisDepth, file.disposition];
|
|
261
|
+
if (file.reason)
|
|
262
|
+
details.push(file.reason);
|
|
263
|
+
if (file.requirementIds.length > 0) {
|
|
264
|
+
details.push(`requirements: ${file.requirementIds.join(", ")}`);
|
|
265
|
+
}
|
|
266
|
+
if (file.evidencePaths.length > 0) {
|
|
267
|
+
details.push(`evidence: ${file.evidencePaths.join(", ")}`);
|
|
268
|
+
}
|
|
269
|
+
lines.push(` ${file.status} ${file.path} [${details.join("; ")}]`);
|
|
270
|
+
}
|
|
271
|
+
if (result.diagnostics.length > 0) {
|
|
272
|
+
lines.push("", `Advisory staged-file diagnostics (${result.diagnostics.length}):`);
|
|
273
|
+
for (const diagnostic of result.diagnostics) {
|
|
274
|
+
lines.push(` [${diagnostic.id}] ${diagnostic.message}`);
|
|
275
|
+
lines.push(` Suggestion: ${diagnostic.suggestion}`);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
return lines.join("\n");
|
|
279
|
+
}
|
|
280
|
+
function printStagedResult(input) {
|
|
281
|
+
const violations = input.violations ?? [];
|
|
282
|
+
const qualityDiagnostics = input.qualityDiagnostics ?? [];
|
|
283
|
+
if (input.format === "json") {
|
|
284
|
+
console.log(JSON.stringify({
|
|
285
|
+
structuredContent: {
|
|
286
|
+
violations,
|
|
287
|
+
count: violations.length,
|
|
288
|
+
diagnostics: input.coverage?.diagnostics ?? [],
|
|
289
|
+
qualityDiagnostics,
|
|
290
|
+
staged: input.coverage,
|
|
291
|
+
messages: input.messages ?? [],
|
|
292
|
+
...(input.operationalError
|
|
293
|
+
? { operationalError: input.operationalError }
|
|
294
|
+
: {}),
|
|
295
|
+
},
|
|
296
|
+
}));
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
if (input.coverage)
|
|
300
|
+
console.log(formatStagedCoverage(input.coverage));
|
|
301
|
+
for (const message of input.messages ?? [])
|
|
302
|
+
console.log(message);
|
|
303
|
+
if (input.operationalError)
|
|
304
|
+
console.error(input.operationalError);
|
|
305
|
+
}
|
|
242
306
|
function uniqueSorted(values) {
|
|
243
307
|
return Array.from(new Set(values)).sort();
|
|
244
308
|
}
|
|
@@ -327,6 +391,9 @@ function buildStagedKibiImpactEvidence(options) {
|
|
|
327
391
|
path: stagedSymbolsManifest.path,
|
|
328
392
|
state: stagedSymbolsManifest.state,
|
|
329
393
|
sourcePaths: stagedSymbolsManifest.sourcePaths,
|
|
394
|
+
...(stagedSymbolsManifest.fileDetails
|
|
395
|
+
? { fileDetails: stagedSymbolsManifest.fileDetails }
|
|
396
|
+
: {}),
|
|
330
397
|
},
|
|
331
398
|
mode: resolvedKbArtifacts.length > 0
|
|
332
399
|
? { kind: "kb_changes", kbArtifacts: resolvedKbArtifacts }
|
|
@@ -335,6 +402,13 @@ function buildStagedKibiImpactEvidence(options) {
|
|
|
335
402
|
: { kind: "missing" },
|
|
336
403
|
};
|
|
337
404
|
}
|
|
405
|
+
export function requireActiveProlog(engine, prolog) {
|
|
406
|
+
const activeProlog = engine ?? prolog;
|
|
407
|
+
if (activeProlog == null) {
|
|
408
|
+
throw new Error("Prolog runtime not initialized");
|
|
409
|
+
}
|
|
410
|
+
return activeProlog;
|
|
411
|
+
}
|
|
338
412
|
// implements REQ-006
|
|
339
413
|
export async function checkCommand(options) {
|
|
340
414
|
let prolog = null;
|
|
@@ -358,17 +432,27 @@ export async function checkCommand(options) {
|
|
|
358
432
|
}
|
|
359
433
|
if (options.staged) {
|
|
360
434
|
const minLinks = options.minLinks ? Number(options.minLinks) : 1;
|
|
435
|
+
let stagedCoverage = null;
|
|
361
436
|
let tempCtx = null;
|
|
362
437
|
try {
|
|
363
|
-
const
|
|
364
|
-
|
|
365
|
-
|
|
438
|
+
const stagedInventory = getStagedInventory();
|
|
439
|
+
stagedCoverage = analyzeStagedFileCoverage(stagedInventory);
|
|
440
|
+
const stagedFiles = supportedStagedFiles(stagedInventory);
|
|
441
|
+
if (stagedInventory.length === 0) {
|
|
442
|
+
printStagedResult({
|
|
443
|
+
format: options.format,
|
|
444
|
+
coverage: stagedCoverage,
|
|
445
|
+
messages: ["No staged files found."],
|
|
446
|
+
});
|
|
366
447
|
return { exitCode: 0 };
|
|
367
448
|
}
|
|
368
449
|
const { manifestLookup, manifestResults, authoredSymbolResults, stagedAuthoredSymbolResults, } = buildManifestLookup(stagedFiles);
|
|
369
450
|
const symbolsManifestPath = KIBI_SYMBOLS_MANIFEST_PATH;
|
|
370
|
-
const
|
|
371
|
-
|
|
451
|
+
const symbolPaths = new Set(stagedInventory
|
|
452
|
+
.filter((file) => file.analysisDepth === "symbol")
|
|
453
|
+
.map((file) => file.path));
|
|
454
|
+
const sourceFiles = stagedFiles.filter((file) => symbolPaths.has(file.path));
|
|
455
|
+
const markdownFiles = stagedFiles.filter((file) => file.path.endsWith(".md") && isEntityLanePath(file.path));
|
|
372
456
|
const markdownErrors = [];
|
|
373
457
|
for (const f of markdownFiles) {
|
|
374
458
|
const result = validateStagedMarkdown(f.path, f.content || "");
|
|
@@ -377,11 +461,18 @@ export async function checkCommand(options) {
|
|
|
377
461
|
}
|
|
378
462
|
}
|
|
379
463
|
if (markdownErrors.length > 0) {
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
464
|
+
printStagedResult({
|
|
465
|
+
format: options.format,
|
|
466
|
+
coverage: stagedCoverage,
|
|
467
|
+
violations: markdownErrors.map((message) => ({
|
|
468
|
+
rule: "staged-markdown",
|
|
469
|
+
message,
|
|
470
|
+
})),
|
|
471
|
+
messages: [
|
|
472
|
+
"Found embedded entity violations in staged markdown files:",
|
|
473
|
+
...markdownErrors,
|
|
474
|
+
],
|
|
475
|
+
});
|
|
385
476
|
if (options.dryRun) {
|
|
386
477
|
return { exitCode: 0 };
|
|
387
478
|
}
|
|
@@ -402,7 +493,9 @@ export async function checkCommand(options) {
|
|
|
402
493
|
}
|
|
403
494
|
}
|
|
404
495
|
catch (e) {
|
|
405
|
-
|
|
496
|
+
const message = `Error extracting symbols from staged file ${f.path}: ${e instanceof Error ? e.message : String(e)}`;
|
|
497
|
+
if (options.format !== "json")
|
|
498
|
+
console.error(message);
|
|
406
499
|
}
|
|
407
500
|
}
|
|
408
501
|
const markdownResultsByPath = new Map();
|
|
@@ -453,7 +546,12 @@ export async function checkCommand(options) {
|
|
|
453
546
|
}), ...createSemanticReviewDiagnostics({ symbolsByFile }));
|
|
454
547
|
if (allSymbols.length === 0 && stagedEntityResults.length === 0) {
|
|
455
548
|
if (stagedKibiDiagnostics.length > 0) {
|
|
456
|
-
|
|
549
|
+
printStagedResult({
|
|
550
|
+
format: options.format,
|
|
551
|
+
coverage: stagedCoverage,
|
|
552
|
+
qualityDiagnostics: stagedKibiDiagnostics,
|
|
553
|
+
messages: [formatStagedKibiDiagnostics(stagedKibiDiagnostics)],
|
|
554
|
+
});
|
|
457
555
|
if (options.dryRun) {
|
|
458
556
|
return { exitCode: 0 };
|
|
459
557
|
}
|
|
@@ -463,12 +561,23 @@ export async function checkCommand(options) {
|
|
|
463
561
|
: 0,
|
|
464
562
|
};
|
|
465
563
|
}
|
|
466
|
-
|
|
564
|
+
printStagedResult({
|
|
565
|
+
format: options.format,
|
|
566
|
+
coverage: stagedCoverage,
|
|
567
|
+
messages: [
|
|
568
|
+
"No exported symbols or staged entities found in staged files.",
|
|
569
|
+
],
|
|
570
|
+
});
|
|
467
571
|
return { exitCode: 0 };
|
|
468
572
|
}
|
|
469
573
|
if (allSymbols.length === 0) {
|
|
470
574
|
if (stagedKibiDiagnostics.length > 0) {
|
|
471
|
-
|
|
575
|
+
printStagedResult({
|
|
576
|
+
format: options.format,
|
|
577
|
+
coverage: stagedCoverage,
|
|
578
|
+
qualityDiagnostics: stagedKibiDiagnostics,
|
|
579
|
+
messages: [formatStagedKibiDiagnostics(stagedKibiDiagnostics)],
|
|
580
|
+
});
|
|
472
581
|
if (options.dryRun) {
|
|
473
582
|
return { exitCode: 0 };
|
|
474
583
|
}
|
|
@@ -478,7 +587,11 @@ export async function checkCommand(options) {
|
|
|
478
587
|
: 0,
|
|
479
588
|
};
|
|
480
589
|
}
|
|
481
|
-
|
|
590
|
+
printStagedResult({
|
|
591
|
+
format: options.format,
|
|
592
|
+
coverage: stagedCoverage,
|
|
593
|
+
messages: ["✓ No violations found in staged files."],
|
|
594
|
+
});
|
|
482
595
|
return { exitCode: 0 };
|
|
483
596
|
}
|
|
484
597
|
// Create temp KB
|
|
@@ -496,12 +609,19 @@ export async function checkCommand(options) {
|
|
|
496
609
|
prolog: tempCtx.prolog,
|
|
497
610
|
});
|
|
498
611
|
const violationsFormatted = formatStagedViolations(violationsRaw);
|
|
499
|
-
if (stagedKibiDiagnostics.length > 0) {
|
|
500
|
-
console.log(formatStagedKibiDiagnostics(stagedKibiDiagnostics));
|
|
501
|
-
console.log();
|
|
502
|
-
}
|
|
503
612
|
if (violationsRaw && violationsRaw.length > 0) {
|
|
504
|
-
|
|
613
|
+
printStagedResult({
|
|
614
|
+
format: options.format,
|
|
615
|
+
coverage: stagedCoverage,
|
|
616
|
+
violations: violationsRaw,
|
|
617
|
+
qualityDiagnostics: stagedKibiDiagnostics,
|
|
618
|
+
messages: [
|
|
619
|
+
...(stagedKibiDiagnostics.length > 0
|
|
620
|
+
? [formatStagedKibiDiagnostics(stagedKibiDiagnostics)]
|
|
621
|
+
: []),
|
|
622
|
+
violationsFormatted,
|
|
623
|
+
],
|
|
624
|
+
});
|
|
505
625
|
await cleanupTempKb(tempCtx.tempDir);
|
|
506
626
|
if (options.dryRun) {
|
|
507
627
|
return { exitCode: 0 };
|
|
@@ -510,23 +630,38 @@ export async function checkCommand(options) {
|
|
|
510
630
|
}
|
|
511
631
|
if (stagedKibiDiagnostics.length > 0) {
|
|
512
632
|
await cleanupTempKb(tempCtx.tempDir);
|
|
633
|
+
const blocking = hasBlockingImpactDiagnostics(stagedKibiDiagnostics);
|
|
634
|
+
printStagedResult({
|
|
635
|
+
format: options.format,
|
|
636
|
+
coverage: stagedCoverage,
|
|
637
|
+
qualityDiagnostics: stagedKibiDiagnostics,
|
|
638
|
+
messages: [
|
|
639
|
+
formatStagedKibiDiagnostics(stagedKibiDiagnostics),
|
|
640
|
+
...(!blocking
|
|
641
|
+
? ["✓ No violations found in staged symbols."]
|
|
642
|
+
: []),
|
|
643
|
+
],
|
|
644
|
+
});
|
|
513
645
|
if (options.dryRun) {
|
|
514
646
|
return { exitCode: 0 };
|
|
515
647
|
}
|
|
516
|
-
if (!
|
|
517
|
-
console.log("✓ No violations found in staged symbols.");
|
|
648
|
+
if (!blocking) {
|
|
518
649
|
return { exitCode: 0 };
|
|
519
650
|
}
|
|
520
651
|
return {
|
|
521
652
|
exitCode: 1,
|
|
522
653
|
};
|
|
523
654
|
}
|
|
524
|
-
|
|
655
|
+
printStagedResult({
|
|
656
|
+
format: options.format,
|
|
657
|
+
coverage: stagedCoverage,
|
|
658
|
+
messages: ["✓ No violations found in staged symbols."],
|
|
659
|
+
});
|
|
525
660
|
await cleanupTempKb(tempCtx.tempDir);
|
|
526
661
|
return { exitCode: 0 };
|
|
527
662
|
}
|
|
528
663
|
catch (err) {
|
|
529
|
-
|
|
664
|
+
const message = `Error running staged validation: ${err instanceof Error ? err.message : String(err)}`;
|
|
530
665
|
if (tempCtx) {
|
|
531
666
|
try {
|
|
532
667
|
await cleanupTempKb(tempCtx.tempDir);
|
|
@@ -535,6 +670,11 @@ export async function checkCommand(options) {
|
|
|
535
670
|
// best-effort: temp directory may already be cleaned up
|
|
536
671
|
}
|
|
537
672
|
}
|
|
673
|
+
printStagedResult({
|
|
674
|
+
format: options.format,
|
|
675
|
+
coverage: stagedCoverage,
|
|
676
|
+
operationalError: message,
|
|
677
|
+
});
|
|
538
678
|
return { exitCode: 1 };
|
|
539
679
|
}
|
|
540
680
|
}
|
|
@@ -561,10 +701,7 @@ export async function checkCommand(options) {
|
|
|
561
701
|
}
|
|
562
702
|
attached = true;
|
|
563
703
|
}
|
|
564
|
-
const activeProlog = engine
|
|
565
|
-
if (!activeProlog) {
|
|
566
|
-
throw new Error("Prolog runtime not initialized");
|
|
567
|
-
}
|
|
704
|
+
const activeProlog = requireActiveProlog(engine, prolog);
|
|
568
705
|
const rules = options.rules
|
|
569
706
|
?.split(",")
|
|
570
707
|
.map((rule) => rule.trim())
|
|
@@ -575,6 +712,9 @@ export async function checkCommand(options) {
|
|
|
575
712
|
clock: () => new Date(),
|
|
576
713
|
prolog: {
|
|
577
714
|
query: (goal) => activeProlog.query(goal),
|
|
715
|
+
...(activeProlog instanceof EngineClient
|
|
716
|
+
? { queryEntities: activeProlog.queryEntities.bind(activeProlog) }
|
|
717
|
+
: {}),
|
|
578
718
|
nextSolution: async () => null,
|
|
579
719
|
invalidateCache: () => activeProlog.invalidateCache(),
|
|
580
720
|
save: () => activeProlog.query("kb_save"),
|
|
@@ -628,7 +768,7 @@ export async function checkCommand(options) {
|
|
|
628
768
|
await safeCleanupProlog(prolog);
|
|
629
769
|
}
|
|
630
770
|
}
|
|
631
|
-
async function checkMustPriorityCoverage(prolog) {
|
|
771
|
+
export async function checkMustPriorityCoverage(prolog) {
|
|
632
772
|
const violations = [];
|
|
633
773
|
const mustReqs = await findMustPriorityReqs(prolog);
|
|
634
774
|
for (const reqId of mustReqs) {
|
|
@@ -667,7 +807,9 @@ async function checkMustPriorityCoverage(prolog) {
|
|
|
667
807
|
}
|
|
668
808
|
return violations;
|
|
669
809
|
}
|
|
670
|
-
|
|
810
|
+
// implements REQ-cli-check
|
|
811
|
+
// covered_by TEST-004
|
|
812
|
+
export async function findMustPriorityReqs(prolog) {
|
|
671
813
|
const query = `findall(Id, (kb_entity(Id, req, Props), memberchk(priority=P, Props), (P = ^^("must", _) ; P = "must" ; P = 'must' ; (atom(P), atom_string(P, PS), sub_string(PS, _, 4, 0, "must")))), Ids)`;
|
|
672
814
|
const result = await prolog.query(query);
|
|
673
815
|
if (!result.success || !result.bindings.Ids) {
|
|
@@ -681,7 +823,7 @@ async function findMustPriorityReqs(prolog) {
|
|
|
681
823
|
}
|
|
682
824
|
return content.split(",").map((id) => id.trim().replace(/^'|'$/g, ""));
|
|
683
825
|
}
|
|
684
|
-
async function getAllEntityIds(prolog, type) {
|
|
826
|
+
export async function getAllEntityIds(prolog, type) {
|
|
685
827
|
const typeFilter = type ? `, Type = ${type}` : "";
|
|
686
828
|
const query = `findall(Id, (kb_entity(Id, Type, _)${typeFilter}), Ids)`;
|
|
687
829
|
const result = await prolog.query(query);
|
|
@@ -696,7 +838,7 @@ async function getAllEntityIds(prolog, type) {
|
|
|
696
838
|
}
|
|
697
839
|
return content.split(",").map((id) => id.trim().replace(/^'|'$/g, ""));
|
|
698
840
|
}
|
|
699
|
-
async function checkNoDanglingRefs(prolog) {
|
|
841
|
+
export async function checkNoDanglingRefs(prolog) {
|
|
700
842
|
const violations = [];
|
|
701
843
|
const allEntityIds = new Set(await getAllEntityIds(prolog));
|
|
702
844
|
const relTypes = [
|
|
@@ -751,7 +893,9 @@ async function checkNoDanglingRefs(prolog) {
|
|
|
751
893
|
}
|
|
752
894
|
return violations;
|
|
753
895
|
}
|
|
754
|
-
|
|
896
|
+
// implements REQ-cli-check
|
|
897
|
+
// covered_by TEST-cli-check-integrity
|
|
898
|
+
export async function checkNoCycles(prolog) {
|
|
755
899
|
const violations = [];
|
|
756
900
|
const depsResult = await prolog.query("findall([From,To], kb_relationship(depends_on, From, To), Deps)");
|
|
757
901
|
if (!depsResult.success || !depsResult.bindings.Deps) {
|
|
@@ -835,7 +979,7 @@ async function checkNoCycles(prolog) {
|
|
|
835
979
|
}
|
|
836
980
|
return violations;
|
|
837
981
|
}
|
|
838
|
-
async function checkRequiredFields(prolog, allEntityIds) {
|
|
982
|
+
export async function checkRequiredFields(prolog, allEntityIds) {
|
|
839
983
|
const violations = [];
|
|
840
984
|
const required = [
|
|
841
985
|
"id",
|
|
@@ -871,7 +1015,7 @@ async function checkRequiredFields(prolog, allEntityIds) {
|
|
|
871
1015
|
}
|
|
872
1016
|
return violations;
|
|
873
1017
|
}
|
|
874
|
-
async function checkDeprecatedAdrs(prolog) {
|
|
1018
|
+
export async function checkDeprecatedAdrs(prolog) {
|
|
875
1019
|
const violations = [];
|
|
876
1020
|
// Use Prolog predicate to find deprecated ADRs without successors
|
|
877
1021
|
const result = await prolog.query("setof(Id, deprecated_no_successor(Id), Ids)");
|
|
@@ -908,14 +1052,16 @@ async function checkDeprecatedAdrs(prolog) {
|
|
|
908
1052
|
}
|
|
909
1053
|
return violations;
|
|
910
1054
|
}
|
|
911
|
-
async function checkDomainContradictions(prolog) {
|
|
1055
|
+
export async function checkDomainContradictions(prolog) {
|
|
912
1056
|
const violations = [];
|
|
913
1057
|
const result = await prolog.query("setof([A,B,Reason], contradicting_reqs(A, B, Reason), Rows)");
|
|
914
1058
|
if (!result.success || !result.bindings.Rows) {
|
|
915
1059
|
return violations;
|
|
916
1060
|
}
|
|
917
1061
|
const rows = parseTriples(result.bindings.Rows);
|
|
918
|
-
for (const [
|
|
1062
|
+
for (const [rawReqA, rawReqB, reason] of rows) {
|
|
1063
|
+
const reqA = normalizeEntityId(rawReqA);
|
|
1064
|
+
const reqB = normalizeEntityId(rawReqB);
|
|
919
1065
|
violations.push({
|
|
920
1066
|
rule: "domain-contradictions",
|
|
921
1067
|
entityId: `${reqA}/${reqB}`,
|
|
@@ -925,7 +1071,7 @@ async function checkDomainContradictions(prolog) {
|
|
|
925
1071
|
}
|
|
926
1072
|
return violations;
|
|
927
1073
|
}
|
|
928
|
-
async function checkStrictFactShape(prolog) {
|
|
1074
|
+
export async function checkStrictFactShape(prolog) {
|
|
929
1075
|
const violations = [];
|
|
930
1076
|
const result = await prolog.query(`findall(violation(Rule, EntityId, Desc, Sugg, Src),
|
|
931
1077
|
checks:strict_fact_shape_violation(violation(Rule, EntityId, Desc, Sugg, Src)),
|
|
@@ -941,7 +1087,7 @@ async function checkStrictFactShape(prolog) {
|
|
|
941
1087
|
}
|
|
942
1088
|
return violations;
|
|
943
1089
|
}
|
|
944
|
-
async function checkStrictReqFactPairing(prolog) {
|
|
1090
|
+
export async function checkStrictReqFactPairing(prolog) {
|
|
945
1091
|
const violations = [];
|
|
946
1092
|
const result = await prolog.query(`findall(violation(Rule, EntityId, Desc, Sugg, Src),
|
|
947
1093
|
checks:strict_req_fact_pairing_violation(violation(Rule, EntityId, Desc, Sugg, Src)),
|
|
@@ -957,7 +1103,7 @@ async function checkStrictReqFactPairing(prolog) {
|
|
|
957
1103
|
}
|
|
958
1104
|
return violations;
|
|
959
1105
|
}
|
|
960
|
-
async function checkStrictReadiness(prolog) {
|
|
1106
|
+
export async function checkStrictReadiness(prolog) {
|
|
961
1107
|
const violations = [];
|
|
962
1108
|
const result = await prolog.query(`findall(violation(Rule, EntityId, Desc, Sugg, Src),
|
|
963
1109
|
checks:strict_readiness_violation(violation(Rule, EntityId, Desc, Sugg, Src)),
|
|
@@ -973,7 +1119,7 @@ async function checkStrictReadiness(prolog) {
|
|
|
973
1119
|
}
|
|
974
1120
|
return violations;
|
|
975
1121
|
}
|
|
976
|
-
async function checkSymbolCoverage(prolog) {
|
|
1122
|
+
export async function checkSymbolCoverage(prolog) {
|
|
977
1123
|
const violations = [];
|
|
978
1124
|
const uncoveredResult = await prolog.query("setof(Symbol, symbol_no_req_coverage(Symbol, _), Symbols)");
|
|
979
1125
|
if (uncoveredResult.success && uncoveredResult.bindings.Symbols) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coverage.d.ts","sourceRoot":"","sources":["../../src/commands/coverage.ts"],"names":[],"mappings":"AAMA,UAAU,eAAe;IACvB,EAAE,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3B;AAGD,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"coverage.d.ts","sourceRoot":"","sources":["../../src/commands/coverage.ts"],"names":[],"mappings":"AAMA,UAAU,eAAe;IACvB,EAAE,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3B;AAGD,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAmC7E"}
|
|
@@ -11,6 +11,12 @@ export async function coverageCommand(options) {
|
|
|
11
11
|
.filter(Boolean)
|
|
12
12
|
: [],
|
|
13
13
|
includePassing: options.includePassing ?? false,
|
|
14
|
+
statuses: options.status
|
|
15
|
+
? options.status
|
|
16
|
+
.split(",")
|
|
17
|
+
.map((item) => item.trim())
|
|
18
|
+
.filter(Boolean)
|
|
19
|
+
: [],
|
|
14
20
|
includeTransitive: options.includeTransitive ?? true,
|
|
15
21
|
limit: Number.parseInt(options.limit || "100", 10),
|
|
16
22
|
offset: Number.parseInt(options.offset || "0", 10),
|
|
@@ -4,4 +4,26 @@ export interface DoctorOptions {
|
|
|
4
4
|
export declare function doctorCommand(options?: DoctorOptions): Promise<{
|
|
5
5
|
exitCode: number;
|
|
6
6
|
}>;
|
|
7
|
+
export declare function detectExecuteApplyPlanExport(load?: () => Promise<{
|
|
8
|
+
executeApplyPlan?: unknown;
|
|
9
|
+
}>): Promise<boolean>;
|
|
10
|
+
export declare function packageMigrationActions(runtime: Readonly<Record<string, unknown>>): Promise<Readonly<{
|
|
11
|
+
id: string;
|
|
12
|
+
code: string;
|
|
13
|
+
category: "package" | "branch" | "storage" | "schema" | "freshness" | "relationship" | "symbol" | "semantic" | "proof" | "quality";
|
|
14
|
+
state: import("../public/operations/migration-plan.js").MigrationActionState;
|
|
15
|
+
safety: import("../public/operations/migration-plan.js").MigrationSafety;
|
|
16
|
+
invocation: import("../public/operations/migration-plan.js").MigrationInvocation;
|
|
17
|
+
affectedEntityIds: readonly string[];
|
|
18
|
+
affectedFiles: readonly string[];
|
|
19
|
+
dependsOn: readonly string[];
|
|
20
|
+
preconditions: readonly Readonly<Record<string, unknown>>[];
|
|
21
|
+
postconditions: readonly Readonly<Record<string, unknown>>[];
|
|
22
|
+
evidence: Readonly<Record<string, unknown>>;
|
|
23
|
+
autoApplicable: boolean;
|
|
24
|
+
dispositionRequired: boolean;
|
|
25
|
+
allowedDispositions: readonly import("../public/operations/migration-plan.js").MigrationDisposition[];
|
|
26
|
+
}>[]>;
|
|
27
|
+
export declare function nextAncestorDirectory(current: string): string | undefined;
|
|
28
|
+
export declare function nearestNamedPackageManifest(startDir: string, name: string): string | undefined;
|
|
7
29
|
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAmCA,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3B;AAGD,wBAAsB,aAAa,CACjC,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAiF/B"}
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAmCA,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3B;AAGD,wBAAsB,aAAa,CACjC,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAiF/B;AAED,wBAAsB,4BAA4B,CAChD,IAAI,GAAE,MAAM,OAAO,CAAC;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,CACT,GACxC,OAAO,CAAC,OAAO,CAAC,CAOlB;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;;;;;;;;;;;;;;;MAkE3C;AAkGD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGzE;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,SAAS,CAepB"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -97,7 +97,16 @@ export async function doctorCommand(options = {}) {
|
|
|
97
97
|
console.log("Some checks failed. Please address the issues above.");
|
|
98
98
|
return { exitCode: 1 };
|
|
99
99
|
}
|
|
100
|
-
async function
|
|
100
|
+
export async function detectExecuteApplyPlanExport(load = () => import("../public/operations/index.js")) {
|
|
101
|
+
try {
|
|
102
|
+
const operations = await load();
|
|
103
|
+
return typeof operations.executeApplyPlan === "function";
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
export async function packageMigrationActions(runtime) {
|
|
101
110
|
const actions = [];
|
|
102
111
|
const versions = ["cliVersion", "coreVersion", "mcpVersion"].filter((key) => runtime[key] === "unresolved" || runtime[key] === "unknown");
|
|
103
112
|
if (versions.length > 0) {
|
|
@@ -175,15 +184,7 @@ async function runtimeProvenance() {
|
|
|
175
184
|
}
|
|
176
185
|
const core = resolveInstalledPackageInfo("kibi-core");
|
|
177
186
|
const mcp = resolveInstalledPackageInfo("kibi-mcp");
|
|
178
|
-
|
|
179
|
-
try {
|
|
180
|
-
const operations = await import("../public/operations/index.js");
|
|
181
|
-
executeApplyPlanExported =
|
|
182
|
-
typeof operations.executeApplyPlan === "function";
|
|
183
|
-
}
|
|
184
|
-
catch {
|
|
185
|
-
executeApplyPlanExported = false;
|
|
186
|
-
}
|
|
187
|
+
const executeApplyPlanExported = await detectExecuteApplyPlanExport();
|
|
187
188
|
return {
|
|
188
189
|
cliVersion: typeof cli.version === "string" ? cli.version : "unknown",
|
|
189
190
|
coreVersion: core.version,
|
|
@@ -226,9 +227,13 @@ function packageInfoFromManifest(manifestPath) {
|
|
|
226
227
|
: undefined,
|
|
227
228
|
};
|
|
228
229
|
}
|
|
229
|
-
function
|
|
230
|
+
export function nextAncestorDirectory(current) {
|
|
231
|
+
const parent = path.dirname(current);
|
|
232
|
+
return parent === current ? undefined : parent;
|
|
233
|
+
}
|
|
234
|
+
export function nearestNamedPackageManifest(startDir, name) {
|
|
230
235
|
let current = startDir;
|
|
231
|
-
while (
|
|
236
|
+
while (current !== undefined) {
|
|
232
237
|
const candidate = path.join(current, "package.json");
|
|
233
238
|
try {
|
|
234
239
|
const metadata = JSON.parse(readFileSync(candidate, "utf8"));
|
|
@@ -238,11 +243,9 @@ function nearestNamedPackageManifest(startDir, name) {
|
|
|
238
243
|
catch {
|
|
239
244
|
// Keep walking; an unrelated or absent manifest is not a match.
|
|
240
245
|
}
|
|
241
|
-
|
|
242
|
-
if (parent === current)
|
|
243
|
-
return undefined;
|
|
244
|
-
current = parent;
|
|
246
|
+
current = nextAncestorDirectory(current);
|
|
245
247
|
}
|
|
248
|
+
return undefined;
|
|
246
249
|
}
|
|
247
250
|
function resolveInstalledPackageInfo(name) {
|
|
248
251
|
const require = createRequire(import.meta.url);
|
|
@@ -468,8 +471,13 @@ function checkPreCommitHook() {
|
|
|
468
471
|
const preCommitExecutable = (preCommitStats.mode & 0o111) !== 0;
|
|
469
472
|
// Read hook content to determine whether it's using the new staged check
|
|
470
473
|
const content = readFileSync(preCommitPath, "utf-8");
|
|
471
|
-
|
|
472
|
-
|
|
474
|
+
// Current templates resolve the kibi binary into KIBI_BIN before invoking
|
|
475
|
+
// it (git hooks do not get node_modules/.bin on PATH); legacy templates
|
|
476
|
+
// invoked bare `kibi`.
|
|
477
|
+
const resolvesKibi = content.includes("KIBI_BIN=");
|
|
478
|
+
const usesKibi = resolvesKibi || content.includes("kibi check");
|
|
479
|
+
const usesStaged = content.includes('"$KIBI_BIN" check --staged') ||
|
|
480
|
+
content.includes("kibi check --staged");
|
|
473
481
|
if (!usesKibi) {
|
|
474
482
|
// Fail if hook doesn't invoke kibi at all
|
|
475
483
|
return {
|
|
@@ -480,15 +488,24 @@ function checkPreCommitHook() {
|
|
|
480
488
|
}
|
|
481
489
|
if (preCommitExecutable) {
|
|
482
490
|
if (usesStaged) {
|
|
491
|
+
if (!resolvesKibi) {
|
|
492
|
+
// Functional template that invokes bare `kibi`: it fails whenever
|
|
493
|
+
// kibi is installed only as a project dependency.
|
|
494
|
+
return {
|
|
495
|
+
passed: true,
|
|
496
|
+
message: "Installed and executable (legacy template without kibi CLI resolution — run 'kibi init' to regenerate so hooks work with local installs)",
|
|
497
|
+
remediation: "Run: kibi init to update git hooks to the latest template",
|
|
498
|
+
};
|
|
499
|
+
}
|
|
483
500
|
return {
|
|
484
501
|
passed: true,
|
|
485
|
-
message: "Installed and executable (uses 'kibi check --staged')",
|
|
502
|
+
message: "Installed and executable (resolves kibi CLI; uses 'kibi check --staged')",
|
|
486
503
|
};
|
|
487
504
|
}
|
|
488
505
|
// Warn but pass if using legacy kibi check without --staged
|
|
489
506
|
return {
|
|
490
507
|
passed: true,
|
|
491
|
-
message: "Installed and executable (uses legacy 'kibi check' — consider running 'kibi init' to update hooks to use '--staged')",
|
|
508
|
+
message: "Installed and executable (uses legacy 'kibi check' — consider running 'kibi init' to update hooks to use '--staged' with CLI resolution)",
|
|
492
509
|
remediation: "Run: kibi init to update git hooks to the latest template",
|
|
493
510
|
};
|
|
494
511
|
}
|
|
@@ -529,9 +546,11 @@ function checkPostRewriteHook() {
|
|
|
529
546
|
try {
|
|
530
547
|
const postRewriteStats = statSync(postRewritePath);
|
|
531
548
|
const postRewriteExecutable = (postRewriteStats.mode & 0o111) !== 0;
|
|
532
|
-
// Read hook content to verify it invokes kibi
|
|
549
|
+
// Read hook content to verify it invokes kibi. Current templates invoke
|
|
550
|
+
// the resolved KIBI_BIN; legacy templates invoked bare `kibi sync`.
|
|
533
551
|
const content = readFileSync(postRewritePath, "utf-8");
|
|
534
|
-
const usesKibi = content.includes("kibi sync");
|
|
552
|
+
const usesKibi = content.includes('"$KIBI_BIN" sync') || content.includes("kibi sync");
|
|
553
|
+
const resolvesKibi = content.includes("KIBI_BIN=");
|
|
535
554
|
if (!usesKibi) {
|
|
536
555
|
return {
|
|
537
556
|
passed: false,
|
|
@@ -540,6 +559,13 @@ function checkPostRewriteHook() {
|
|
|
540
559
|
};
|
|
541
560
|
}
|
|
542
561
|
if (postRewriteExecutable) {
|
|
562
|
+
if (!resolvesKibi) {
|
|
563
|
+
return {
|
|
564
|
+
passed: true,
|
|
565
|
+
message: "Installed and executable (legacy template without kibi CLI resolution — run 'kibi init' to regenerate so hooks work with local installs)",
|
|
566
|
+
remediation: "Run: kibi init to update git hooks to the latest template",
|
|
567
|
+
};
|
|
568
|
+
}
|
|
543
569
|
return {
|
|
544
570
|
passed: true,
|
|
545
571
|
message: "Installed and executable",
|