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/prolog/codec.js
CHANGED
|
@@ -13,11 +13,21 @@
|
|
|
13
13
|
*/
|
|
14
14
|
/**
|
|
15
15
|
* Escape a string for use as a Prolog atom.
|
|
16
|
-
*
|
|
16
|
+
* Escapes backslashes/control characters and doubles single quotes per ISO
|
|
17
|
+
* Prolog syntax.
|
|
17
18
|
*/
|
|
18
19
|
export function escapeAtom(value) {
|
|
19
20
|
// implements REQ-009
|
|
20
|
-
return value
|
|
21
|
+
return value
|
|
22
|
+
.replaceAll("\\", "\\\\")
|
|
23
|
+
.replaceAll("\u0007", "\\a")
|
|
24
|
+
.replaceAll("\u0008", "\\b")
|
|
25
|
+
.replaceAll("\u000c", "\\f")
|
|
26
|
+
.replaceAll("\n", "\\n")
|
|
27
|
+
.replaceAll("\r", "\\r")
|
|
28
|
+
.replaceAll("\t", "\\t")
|
|
29
|
+
.replaceAll("\u000b", "\\v")
|
|
30
|
+
.replaceAll("'", "''");
|
|
21
31
|
}
|
|
22
32
|
/**
|
|
23
33
|
* Convert a string to a Prolog atom, quoting if necessary.
|
|
@@ -26,9 +36,7 @@ export function escapeAtom(value) {
|
|
|
26
36
|
export function toPrologAtom(value) {
|
|
27
37
|
// implements REQ-009
|
|
28
38
|
const simplePrologAtom = /^[a-z][a-zA-Z0-9_]*$/;
|
|
29
|
-
return simplePrologAtom.test(value)
|
|
30
|
-
? value
|
|
31
|
-
: `'${value.replace(/'/g, "''")}'`;
|
|
39
|
+
return simplePrologAtom.test(value) ? value : `'${escapeAtom(value)}'`;
|
|
32
40
|
}
|
|
33
41
|
/**
|
|
34
42
|
* Escape a string value for use inside a Prolog double-quoted string literal.
|
|
@@ -51,75 +59,99 @@ export function toPrologString(value) {
|
|
|
51
59
|
*/
|
|
52
60
|
export function escapeAtomContent(value) {
|
|
53
61
|
// implements REQ-009
|
|
54
|
-
return value
|
|
62
|
+
return escapeAtom(value);
|
|
55
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Parse a Prolog list of list rows without decoding or normalizing columns.
|
|
66
|
+
* Malformed outer collections fail closed rather than returning a partial
|
|
67
|
+
* projection.
|
|
68
|
+
*/
|
|
56
69
|
export function parseListOfLists(listStr) {
|
|
57
70
|
// implements REQ-009
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
71
|
+
return parseListRows(listStr).flatMap((row) => {
|
|
72
|
+
const scanned = scanTopLevelGeneral(row, ",");
|
|
73
|
+
if (!scanned.balanced)
|
|
74
|
+
return [];
|
|
75
|
+
const columns = scanned.parts.map((column) => column.trim());
|
|
76
|
+
return columns.length === 0 || (columns.length === 1 && columns[0] === "")
|
|
77
|
+
? []
|
|
78
|
+
: [columns];
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
export function firstTwoDefinedParts(parts) {
|
|
82
|
+
const first = parts[0];
|
|
83
|
+
const second = parts[1];
|
|
84
|
+
if (first === undefined || second === undefined) {
|
|
85
|
+
return undefined;
|
|
61
86
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
current += char;
|
|
87
|
+
return [first, second];
|
|
88
|
+
}
|
|
89
|
+
export function fallbackWhenPairMissing(pair, fallback) {
|
|
90
|
+
return pair === undefined ? fallback : null;
|
|
91
|
+
}
|
|
92
|
+
// implements REQ-core-persistence
|
|
93
|
+
// covered_by TEST-cli-prolog-codec
|
|
94
|
+
export function typedLiteralFromParts(parts, original) {
|
|
95
|
+
const pair = firstTwoDefinedParts(parts);
|
|
96
|
+
if (!pair) {
|
|
97
|
+
return original;
|
|
98
|
+
}
|
|
99
|
+
const [literalPart, datatypePart] = pair;
|
|
100
|
+
let literalValue = literalPart.trim();
|
|
101
|
+
const datatype = datatypePart.trim();
|
|
102
|
+
const decodedLiteral = decodePrologQuotedLiteral(literalValue, '"');
|
|
103
|
+
if (decodedLiteral !== undefined) {
|
|
104
|
+
literalValue = decodedLiteral;
|
|
105
|
+
}
|
|
106
|
+
else if (literalValue.startsWith('"') && literalValue.endsWith('"')) {
|
|
107
|
+
literalValue = literalValue.substring(1, literalValue.length - 1);
|
|
108
|
+
}
|
|
109
|
+
if (datatype.includes("#integer")) {
|
|
110
|
+
return Number.parseInt(literalValue, 10);
|
|
111
|
+
}
|
|
112
|
+
if (datatype.includes("#decimal") || datatype.includes("#double")) {
|
|
113
|
+
return Number.parseFloat(literalValue);
|
|
114
|
+
}
|
|
115
|
+
if (datatype.includes("#boolean")) {
|
|
116
|
+
return literalValue === "true";
|
|
117
|
+
}
|
|
118
|
+
if (literalValue.startsWith("[") && literalValue.endsWith("]")) {
|
|
119
|
+
const listContent = literalValue.substring(1, literalValue.length - 1);
|
|
120
|
+
if (listContent === "") {
|
|
121
|
+
return [];
|
|
100
122
|
}
|
|
123
|
+
return splitTopLevelGeneral(listContent, ",").map((item) => item.trim());
|
|
101
124
|
}
|
|
102
|
-
return
|
|
125
|
+
return literalValue;
|
|
103
126
|
}
|
|
104
|
-
export function
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
127
|
+
export function fileUriLeaf(value) {
|
|
128
|
+
const lastSlash = value.lastIndexOf("/");
|
|
129
|
+
if (lastSlash !== -1) {
|
|
130
|
+
return value.substring(lastSlash + 1);
|
|
131
|
+
}
|
|
132
|
+
return value;
|
|
133
|
+
}
|
|
134
|
+
export function entityFromBindingParts(parts) {
|
|
109
135
|
if (parts.length < 3) {
|
|
110
136
|
return {};
|
|
111
137
|
}
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
if (idPart === undefined || typePart === undefined) {
|
|
138
|
+
const pair = firstTwoDefinedParts(parts);
|
|
139
|
+
if (!pair) {
|
|
115
140
|
return {};
|
|
116
141
|
}
|
|
142
|
+
const [idPart, typePart] = pair;
|
|
117
143
|
const id = idPart.trim();
|
|
118
144
|
const type = typePart.trim();
|
|
119
145
|
const propsStr = parts.slice(2).join(",").trim();
|
|
120
146
|
const props = parsePropertyList(propsStr);
|
|
121
147
|
return { ...props, id: normalizeEntityId(stripOuterQuotes(id)), type };
|
|
122
148
|
}
|
|
149
|
+
export function parseEntityFromBinding(
|
|
150
|
+
// implements REQ-009
|
|
151
|
+
bindingStr) {
|
|
152
|
+
const cleaned = bindingStr.trim().replace(/^\[/, "").replace(/\]$/, "");
|
|
153
|
+
return entityFromBindingParts(splitTopLevelGeneral(cleaned, ","));
|
|
154
|
+
}
|
|
123
155
|
export function parseEntityFromList(data) {
|
|
124
156
|
// implements REQ-009
|
|
125
157
|
if (data.length < 3) {
|
|
@@ -160,8 +192,9 @@ export function parsePropertyList(propsStr) {
|
|
|
160
192
|
let parsed = parsePrologValue(value);
|
|
161
193
|
if ((key === "rule_ir" ||
|
|
162
194
|
key === "semantic_inventory" ||
|
|
163
|
-
key === "
|
|
164
|
-
key === "
|
|
195
|
+
key === "proof_receipts" ||
|
|
196
|
+
key === "proof_contract" ||
|
|
197
|
+
key === "proof_bindings") &&
|
|
165
198
|
typeof parsed === "string") {
|
|
166
199
|
try {
|
|
167
200
|
parsed = JSON.parse(parsed);
|
|
@@ -204,57 +237,22 @@ export function parsePrologValue(valueInput) {
|
|
|
204
237
|
const innerContent = value.substring(innerStart, innerEnd);
|
|
205
238
|
const parts = splitTopLevelGeneral(innerContent, ",");
|
|
206
239
|
if (parts.length >= 2) {
|
|
207
|
-
|
|
208
|
-
const datatypePart = parts[1];
|
|
209
|
-
if (literalPart === undefined || datatypePart === undefined) {
|
|
210
|
-
return value;
|
|
211
|
-
}
|
|
212
|
-
let literalValue = literalPart.trim();
|
|
213
|
-
const datatype = datatypePart.trim();
|
|
214
|
-
if (literalValue.startsWith('"') && literalValue.endsWith('"')) {
|
|
215
|
-
literalValue = literalValue.substring(1, literalValue.length - 1);
|
|
216
|
-
}
|
|
217
|
-
// Parse typed literals based on datatype
|
|
218
|
-
if (datatype.includes("#integer")) {
|
|
219
|
-
return Number.parseInt(literalValue, 10);
|
|
220
|
-
}
|
|
221
|
-
if (datatype.includes("#decimal") || datatype.includes("#double")) {
|
|
222
|
-
return Number.parseFloat(literalValue);
|
|
223
|
-
}
|
|
224
|
-
if (datatype.includes("#boolean")) {
|
|
225
|
-
return literalValue === "true";
|
|
226
|
-
}
|
|
227
|
-
// Handle array notation for string values
|
|
228
|
-
if (literalValue.startsWith("[") && literalValue.endsWith("]")) {
|
|
229
|
-
const listContent = literalValue.substring(1, literalValue.length - 1);
|
|
230
|
-
if (listContent === "") {
|
|
231
|
-
return [];
|
|
232
|
-
}
|
|
233
|
-
return splitTopLevelGeneral(listContent, ",").map((item) => item.trim());
|
|
234
|
-
}
|
|
235
|
-
return literalValue;
|
|
240
|
+
return typedLiteralFromParts(parts, value);
|
|
236
241
|
}
|
|
237
242
|
}
|
|
238
243
|
// Handle URI
|
|
239
244
|
if (value.startsWith("file:///")) {
|
|
240
|
-
|
|
241
|
-
if (lastSlash !== -1) {
|
|
242
|
-
return value.substring(lastSlash + 1);
|
|
243
|
-
}
|
|
244
|
-
return value;
|
|
245
|
+
return fileUriLeaf(value);
|
|
245
246
|
}
|
|
246
247
|
// Handle quoted string
|
|
247
248
|
if (value.startsWith('"') && value.endsWith('"')) {
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
}
|
|
251
|
-
catch {
|
|
252
|
-
return value.substring(1, value.length - 1);
|
|
253
|
-
}
|
|
249
|
+
return (decodePrologQuotedLiteral(value, '"') ??
|
|
250
|
+
value.substring(1, value.length - 1));
|
|
254
251
|
}
|
|
255
252
|
// Handle quoted atom
|
|
256
253
|
if (value.startsWith("'") && value.endsWith("'")) {
|
|
257
|
-
return value
|
|
254
|
+
return (decodePrologQuotedLiteral(value, "'") ??
|
|
255
|
+
value.substring(1, value.length - 1));
|
|
258
256
|
}
|
|
259
257
|
// Handle list
|
|
260
258
|
if (value.startsWith("[") && value.endsWith("]")) {
|
|
@@ -271,42 +269,66 @@ export function parsePrologValue(valueInput) {
|
|
|
271
269
|
}
|
|
272
270
|
export function splitTopLevelGeneral(str, delimiter) {
|
|
273
271
|
// implements REQ-009
|
|
272
|
+
return scanTopLevelGeneral(str, delimiter).parts;
|
|
273
|
+
}
|
|
274
|
+
function scanTopLevelGeneral(str, delimiter) {
|
|
274
275
|
const results = [];
|
|
275
276
|
let current = "";
|
|
276
|
-
let
|
|
277
|
-
|
|
278
|
-
let
|
|
277
|
+
let quote = null;
|
|
278
|
+
const delimiters = [];
|
|
279
|
+
let balanced = true;
|
|
279
280
|
for (let i = 0; i < str.length; i++) {
|
|
280
281
|
const char = str[i];
|
|
281
|
-
|
|
282
|
-
if (char === '"' && !inSingleQuotes && prevChar !== "\\") {
|
|
283
|
-
inDoubleQuotes = !inDoubleQuotes;
|
|
282
|
+
if (quote !== null) {
|
|
284
283
|
current += char;
|
|
284
|
+
if (char === "\\") {
|
|
285
|
+
const escaped = str[i + 1];
|
|
286
|
+
if (escaped !== undefined) {
|
|
287
|
+
current += escaped;
|
|
288
|
+
i++;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
else if (char === quote) {
|
|
292
|
+
const doubledPrologQuote = quote === "'" && str[i + 1] === "'";
|
|
293
|
+
if (doubledPrologQuote) {
|
|
294
|
+
current += str[i + 1] ?? "";
|
|
295
|
+
i++;
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
quote = null;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
continue;
|
|
285
302
|
}
|
|
286
|
-
|
|
287
|
-
|
|
303
|
+
if (char === "'" || char === '"') {
|
|
304
|
+
quote = char;
|
|
288
305
|
current += char;
|
|
306
|
+
continue;
|
|
289
307
|
}
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
(char === "[" || char === "(")) {
|
|
293
|
-
depth++;
|
|
308
|
+
if (char === "[" || char === "(" || char === "{") {
|
|
309
|
+
delimiters.push(char);
|
|
294
310
|
current += char;
|
|
311
|
+
continue;
|
|
295
312
|
}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
(
|
|
299
|
-
|
|
313
|
+
if (char === "]" || char === ")" || char === "}") {
|
|
314
|
+
const expectedOpening = char === "]" ? "[" : char === ")" ? "(" : "{";
|
|
315
|
+
if (delimiters.at(-1) !== expectedOpening) {
|
|
316
|
+
balanced = false;
|
|
317
|
+
}
|
|
318
|
+
else {
|
|
319
|
+
delimiters.pop();
|
|
320
|
+
}
|
|
300
321
|
current += char;
|
|
322
|
+
continue;
|
|
301
323
|
}
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
char === delimiter) {
|
|
324
|
+
if (delimiters.length === 0 &&
|
|
325
|
+
delimiter.length > 0 &&
|
|
326
|
+
str.startsWith(delimiter, i)) {
|
|
306
327
|
if (current) {
|
|
307
328
|
results.push(current);
|
|
308
329
|
current = "";
|
|
309
330
|
}
|
|
331
|
+
i += delimiter.length - 1;
|
|
310
332
|
}
|
|
311
333
|
else {
|
|
312
334
|
current += char;
|
|
@@ -315,7 +337,10 @@ export function splitTopLevelGeneral(str, delimiter) {
|
|
|
315
337
|
if (current) {
|
|
316
338
|
results.push(current);
|
|
317
339
|
}
|
|
318
|
-
return
|
|
340
|
+
return {
|
|
341
|
+
parts: results,
|
|
342
|
+
balanced: balanced && quote === null && delimiters.length === 0,
|
|
343
|
+
};
|
|
319
344
|
}
|
|
320
345
|
export function splitTopLevel(str, delimiter) {
|
|
321
346
|
// implements REQ-009
|
|
@@ -323,14 +348,17 @@ export function splitTopLevel(str, delimiter) {
|
|
|
323
348
|
}
|
|
324
349
|
function stripOuterQuotes(value) {
|
|
325
350
|
if (value.startsWith("'") && value.endsWith("'")) {
|
|
326
|
-
return value.slice(1, -1);
|
|
351
|
+
return decodePrologQuotedLiteral(value, "'") ?? value.slice(1, -1);
|
|
327
352
|
}
|
|
328
353
|
if (value.startsWith('"') && value.endsWith('"')) {
|
|
329
|
-
return value.slice(1, -1);
|
|
354
|
+
return decodePrologQuotedLiteral(value, '"') ?? value.slice(1, -1);
|
|
330
355
|
}
|
|
331
356
|
return value;
|
|
332
357
|
}
|
|
333
|
-
function normalizeEntityId(value) {
|
|
358
|
+
export function normalizeEntityId(value) {
|
|
359
|
+
if (value.startsWith("kb:entity/")) {
|
|
360
|
+
return value.slice("kb:entity/".length);
|
|
361
|
+
}
|
|
334
362
|
if (!value.startsWith("file:///")) {
|
|
335
363
|
return value;
|
|
336
364
|
}
|
|
@@ -389,37 +417,26 @@ function parseListRows(raw) {
|
|
|
389
417
|
if (trimmed === "[]" || trimmed.length === 0) {
|
|
390
418
|
return [];
|
|
391
419
|
}
|
|
420
|
+
if (!trimmed.startsWith("[") || !trimmed.endsWith("]")) {
|
|
421
|
+
return [];
|
|
422
|
+
}
|
|
392
423
|
const content = unwrapList(trimmed);
|
|
393
424
|
if (content.length === 0) {
|
|
394
425
|
return [];
|
|
395
426
|
}
|
|
427
|
+
const scanned = scanTopLevelGeneral(content, ",");
|
|
428
|
+
if (!scanned.balanced) {
|
|
429
|
+
return [];
|
|
430
|
+
}
|
|
396
431
|
const rows = [];
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
const ch = content[i];
|
|
401
|
-
if (ch === "[") {
|
|
402
|
-
depth++;
|
|
403
|
-
if (depth > 1) {
|
|
404
|
-
current += ch;
|
|
405
|
-
}
|
|
406
|
-
continue;
|
|
407
|
-
}
|
|
408
|
-
if (ch === "]") {
|
|
409
|
-
depth--;
|
|
410
|
-
if (depth === 0) {
|
|
411
|
-
rows.push(current.trim());
|
|
412
|
-
current = "";
|
|
413
|
-
}
|
|
414
|
-
else {
|
|
415
|
-
current += ch;
|
|
416
|
-
}
|
|
417
|
-
continue;
|
|
418
|
-
}
|
|
419
|
-
if (ch === "," && depth === 0) {
|
|
432
|
+
for (const term of scanned.parts) {
|
|
433
|
+
const row = term.trim();
|
|
434
|
+
if (row.length === 0)
|
|
420
435
|
continue;
|
|
436
|
+
if (!row.startsWith("[") || !row.endsWith("]")) {
|
|
437
|
+
return [];
|
|
421
438
|
}
|
|
422
|
-
|
|
439
|
+
rows.push(row.slice(1, -1).trim());
|
|
423
440
|
}
|
|
424
441
|
return rows;
|
|
425
442
|
}
|
|
@@ -462,12 +479,12 @@ export function parseViolationRows(raw) {
|
|
|
462
479
|
suggestionPart === undefined) {
|
|
463
480
|
continue;
|
|
464
481
|
}
|
|
465
|
-
const rule = rulePart.trim()
|
|
466
|
-
const entityId = entityIdPart.trim()
|
|
467
|
-
const description = descriptionPart.trim()
|
|
468
|
-
const suggestion = suggestionPart.trim()
|
|
482
|
+
const rule = stripQuotes(rulePart.trim());
|
|
483
|
+
const entityId = stripQuotes(entityIdPart.trim());
|
|
484
|
+
const description = stripQuotes(descriptionPart.trim());
|
|
485
|
+
const suggestion = stripQuotes(suggestionPart.trim());
|
|
469
486
|
const source = parts.length >= 5
|
|
470
|
-
? parts[4]?.trim()
|
|
487
|
+
? stripQuotes(parts[4]?.trim() ?? "") || undefined
|
|
471
488
|
: undefined;
|
|
472
489
|
violations.push({
|
|
473
490
|
rule,
|
|
@@ -481,10 +498,108 @@ export function parseViolationRows(raw) {
|
|
|
481
498
|
}
|
|
482
499
|
function stripQuotes(value) {
|
|
483
500
|
if (value.startsWith("'") && value.endsWith("'")) {
|
|
484
|
-
return value.slice(1, -1);
|
|
501
|
+
return decodePrologQuotedLiteral(value, "'") ?? value.slice(1, -1);
|
|
485
502
|
}
|
|
486
503
|
if (value.startsWith('"') && value.endsWith('"')) {
|
|
487
|
-
return value.slice(1, -1);
|
|
504
|
+
return decodePrologQuotedLiteral(value, '"') ?? value.slice(1, -1);
|
|
488
505
|
}
|
|
489
506
|
return value;
|
|
490
507
|
}
|
|
508
|
+
/** Decode one Prolog quoted literal without decoding an escaped value twice. */
|
|
509
|
+
function decodePrologQuotedLiteral(value, quote) {
|
|
510
|
+
if (!value.startsWith(quote) || !value.endsWith(quote) || value.length < 2) {
|
|
511
|
+
return undefined;
|
|
512
|
+
}
|
|
513
|
+
const content = value.slice(1, -1);
|
|
514
|
+
let decoded = "";
|
|
515
|
+
for (let index = 0; index < content.length; index++) {
|
|
516
|
+
const char = content[index];
|
|
517
|
+
if (char === undefined)
|
|
518
|
+
continue;
|
|
519
|
+
if (quote === "'" && char === "'") {
|
|
520
|
+
if (content[index + 1] !== "'")
|
|
521
|
+
return undefined;
|
|
522
|
+
decoded += "'";
|
|
523
|
+
index++;
|
|
524
|
+
continue;
|
|
525
|
+
}
|
|
526
|
+
if (char !== "\\") {
|
|
527
|
+
decoded += char;
|
|
528
|
+
continue;
|
|
529
|
+
}
|
|
530
|
+
const escaped = content[index + 1];
|
|
531
|
+
if (escaped === undefined)
|
|
532
|
+
return undefined;
|
|
533
|
+
index++;
|
|
534
|
+
switch (escaped) {
|
|
535
|
+
case "a":
|
|
536
|
+
decoded += "\u0007";
|
|
537
|
+
break;
|
|
538
|
+
case "b":
|
|
539
|
+
decoded += "\b";
|
|
540
|
+
break;
|
|
541
|
+
case "e":
|
|
542
|
+
decoded += "\u001b";
|
|
543
|
+
break;
|
|
544
|
+
case "f":
|
|
545
|
+
decoded += "\f";
|
|
546
|
+
break;
|
|
547
|
+
case "n":
|
|
548
|
+
decoded += "\n";
|
|
549
|
+
break;
|
|
550
|
+
case "r":
|
|
551
|
+
decoded += "\r";
|
|
552
|
+
break;
|
|
553
|
+
case "t":
|
|
554
|
+
decoded += "\t";
|
|
555
|
+
break;
|
|
556
|
+
case "v":
|
|
557
|
+
decoded += "\u000b";
|
|
558
|
+
break;
|
|
559
|
+
case "\\":
|
|
560
|
+
decoded += "\\";
|
|
561
|
+
break;
|
|
562
|
+
case "'":
|
|
563
|
+
decoded += "'";
|
|
564
|
+
break;
|
|
565
|
+
case '"':
|
|
566
|
+
decoded += '"';
|
|
567
|
+
break;
|
|
568
|
+
case "u": {
|
|
569
|
+
const code = content.slice(index + 1, index + 5);
|
|
570
|
+
if (!/^[0-9A-Fa-f]{4}$/.test(code))
|
|
571
|
+
return undefined;
|
|
572
|
+
decoded += String.fromCodePoint(Number.parseInt(code, 16));
|
|
573
|
+
index += 4;
|
|
574
|
+
break;
|
|
575
|
+
}
|
|
576
|
+
case "U": {
|
|
577
|
+
const code = content.slice(index + 1, index + 9);
|
|
578
|
+
if (!/^[0-9A-Fa-f]{8}$/.test(code))
|
|
579
|
+
return undefined;
|
|
580
|
+
const codePoint = Number.parseInt(code, 16);
|
|
581
|
+
if (codePoint > 0x10ffff)
|
|
582
|
+
return undefined;
|
|
583
|
+
decoded += String.fromCodePoint(codePoint);
|
|
584
|
+
index += 8;
|
|
585
|
+
break;
|
|
586
|
+
}
|
|
587
|
+
case "x": {
|
|
588
|
+
let end = index + 1;
|
|
589
|
+
while (/[0-9A-Fa-f]/.test(content[end] ?? ""))
|
|
590
|
+
end++;
|
|
591
|
+
if (end === index + 1 || content[end] !== "\\")
|
|
592
|
+
return undefined;
|
|
593
|
+
const codePoint = Number.parseInt(content.slice(index + 1, end), 16);
|
|
594
|
+
if (codePoint > 0x10ffff)
|
|
595
|
+
return undefined;
|
|
596
|
+
decoded += String.fromCodePoint(codePoint);
|
|
597
|
+
index = end;
|
|
598
|
+
break;
|
|
599
|
+
}
|
|
600
|
+
default:
|
|
601
|
+
return undefined;
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
return decoded;
|
|
605
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured transport for Prolog errors.
|
|
3
|
+
*
|
|
4
|
+
* kb.pl throws ISO-style terms (`error(permission_error(save, kb,
|
|
5
|
+
* stale_snapshot), Context)`). The query wrappers in prolog.ts write the
|
|
6
|
+
* thrown term — quoted, depth-bounded — to stderr behind this sentinel so
|
|
7
|
+
* TypeScript can classify the term structurally instead of re-parsing SWI's
|
|
8
|
+
* human-readable print_message output. Text heuristics remain only as a
|
|
9
|
+
* fallback for errors that never pass through a wrapper (startup failures,
|
|
10
|
+
* older kibi-core versions).
|
|
11
|
+
*/
|
|
12
|
+
export declare const PROLOG_ERROR_TERM_PREFIX = "__KIBI_ERROR__:";
|
|
13
|
+
export type PrologErrorCode = "stale_snapshot" | "audit_locked" | "permission_denied" | "entity_not_found" | "invalid_relationship" | "contradiction" | "validation_error";
|
|
14
|
+
export type PrologErrorRelationship = Readonly<{
|
|
15
|
+
relType: string;
|
|
16
|
+
fromType: string;
|
|
17
|
+
toType: string;
|
|
18
|
+
}>;
|
|
19
|
+
export type PrologErrorConflict = Readonly<{
|
|
20
|
+
reason: string;
|
|
21
|
+
otherId: string;
|
|
22
|
+
}>;
|
|
23
|
+
export type PrologStoreLockOwner = Readonly<{
|
|
24
|
+
pid?: number;
|
|
25
|
+
workspaceRoot?: string;
|
|
26
|
+
bootId?: string;
|
|
27
|
+
startedAt?: string;
|
|
28
|
+
}>;
|
|
29
|
+
export type PrologStoreLockedDetail = Readonly<{
|
|
30
|
+
owner: PrologStoreLockOwner | null;
|
|
31
|
+
lockDirectory: string;
|
|
32
|
+
originalError?: string;
|
|
33
|
+
}>;
|
|
34
|
+
export type PrologErrorRecord = Readonly<{
|
|
35
|
+
code: PrologErrorCode;
|
|
36
|
+
message: string;
|
|
37
|
+
entityId?: string;
|
|
38
|
+
role?: "source" | "target";
|
|
39
|
+
relationship?: PrologErrorRelationship;
|
|
40
|
+
conflicts?: readonly PrologErrorConflict[];
|
|
41
|
+
storeLocked?: PrologStoreLockedDetail;
|
|
42
|
+
}>;
|
|
43
|
+
/** Extract the first structured error term line from raw stderr text. */
|
|
44
|
+
export declare function extractPrologErrorRecord(text: string): PrologErrorRecord | null;
|
|
45
|
+
/** Parse a written error term such as `error(permission_error(...), Context)`. */
|
|
46
|
+
export declare function parsePrologErrorTerm(termText: string): PrologErrorRecord | null;
|
|
47
|
+
//# sourceMappingURL=error-terms.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-terms.d.ts","sourceRoot":"","sources":["../../src/prolog/error-terms.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;;GAUG;AAEH,eAAO,MAAM,wBAAwB,oBAAoB,CAAC;AAG1D,MAAM,MAAM,eAAe,GACvB,gBAAgB,GAChB,cAAc,GACd,mBAAmB,GACnB,kBAAkB,GAClB,sBAAsB,GACtB,eAAe,GACf,kBAAkB,CAAC;AAGvB,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAGH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AAGH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACvC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC3B,YAAY,CAAC,EAAE,uBAAuB,CAAC;IACvC,SAAS,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC3C,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAEH,yEAAyE;AAEzE,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,GACX,iBAAiB,GAAG,IAAI,CAK1B;AAED,kFAAkF;AAElF,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,GACf,iBAAiB,GAAG,IAAI,CAsG1B"}
|