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
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Kibi — repo-local, per-branch, queryable long-term memory for software projects
|
|
3
|
+
Copyright (C) 2026 Piotr Franczyk
|
|
4
|
+
|
|
5
|
+
This program is free software: you can redistribute it and/or modify
|
|
6
|
+
it under the terms of the GNU Affero General Public License as published by
|
|
7
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
8
|
+
(at your option) any later version.
|
|
9
|
+
|
|
10
|
+
This program is distributed in the hope that it will be useful,
|
|
11
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
GNU Affero General Public License for more details.
|
|
14
|
+
|
|
15
|
+
You should have received a copy of the GNU Affero General Public License
|
|
16
|
+
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
+
*/
|
|
18
|
+
import { dump as dumpYaml } from "js-yaml";
|
|
19
|
+
/**
|
|
20
|
+
* Remove a top-level frontmatter block (`key:` plus its nested lines) from a
|
|
21
|
+
* markdown document, leaving every other byte untouched. Returns the patched
|
|
22
|
+
* content, or null when the content is not a well-formed frontmatter
|
|
23
|
+
* document the remover can safely splice.
|
|
24
|
+
*
|
|
25
|
+
* Used by proof maintenance to drop legacy `verification_receipts` blocks
|
|
26
|
+
* once a `proof_contract` exists, without canonicalizing the document.
|
|
27
|
+
*/
|
|
28
|
+
// implements REQ-kibi-proof-evidence-protocol
|
|
29
|
+
export function removeFrontmatterBlock(content, key) {
|
|
30
|
+
const lines = content.match(/[^\n]*\n|[^\n]+$/g) ?? [];
|
|
31
|
+
if (lines.length === 0 || lines[0]?.trim() !== "---")
|
|
32
|
+
return null;
|
|
33
|
+
let closingIndex = -1;
|
|
34
|
+
for (let index = 1; index < lines.length; index++) {
|
|
35
|
+
if (lines[index]?.trim() === "---") {
|
|
36
|
+
closingIndex = index;
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (closingIndex === -1)
|
|
41
|
+
return null;
|
|
42
|
+
let blockStart = -1;
|
|
43
|
+
let blockEnd = closingIndex;
|
|
44
|
+
for (let index = 1; index < closingIndex; index++) {
|
|
45
|
+
if (new RegExp(`^${key}\\s*:`).test(lines[index] ?? "")) {
|
|
46
|
+
blockStart = index;
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (blockStart === -1)
|
|
51
|
+
return null;
|
|
52
|
+
for (let index = blockStart + 1; index < closingIndex; index++) {
|
|
53
|
+
const line = lines[index] ?? "";
|
|
54
|
+
if (/^[A-Za-z_][A-Za-z0-9_-]*\s*:/.test(line)) {
|
|
55
|
+
blockEnd = index;
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return [...lines.slice(0, blockStart), ...lines.slice(blockEnd)].join("");
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Patch the `proof_receipts` frontmatter block of an authored test document
|
|
63
|
+
* without re-rendering anything else.
|
|
64
|
+
*
|
|
65
|
+
* Receipt ingest used to route every append through the canonical entity
|
|
66
|
+
* renderer, which re-dumps the whole frontmatter: inline tag lists became
|
|
67
|
+
* block lists, timestamps gained milliseconds, and so on. Those non-receipt
|
|
68
|
+
* edits are not stripped by the workspace snapshotter, so the snapshot hash
|
|
69
|
+
* changed on the first ingest that touched a hand-authored document and every
|
|
70
|
+
* later integration in the same `kibi prove --all` run refused with
|
|
71
|
+
* "changed the tracked workspace". This patcher splices ONLY the receipts
|
|
72
|
+
* block, leaving the rest of the document byte-for-byte identical.
|
|
73
|
+
*
|
|
74
|
+
* Returns null when the content is not a well-formed frontmatter document the
|
|
75
|
+
* patcher can safely splice; the caller then falls back to the canonical
|
|
76
|
+
* render.
|
|
77
|
+
*/
|
|
78
|
+
// implements REQ-kibi-proof-evidence-protocol
|
|
79
|
+
export function patchReceiptsIntoDocument(content, receipts) {
|
|
80
|
+
const lines = content.match(/[^\n]*\n|[^\n]+$/g) ?? [];
|
|
81
|
+
if (lines.length === 0 || lines[0]?.trim() !== "---")
|
|
82
|
+
return null;
|
|
83
|
+
let closingIndex = -1;
|
|
84
|
+
for (let index = 1; index < lines.length; index++) {
|
|
85
|
+
if (lines[index]?.trim() === "---") {
|
|
86
|
+
closingIndex = index;
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (closingIndex === -1)
|
|
91
|
+
return null;
|
|
92
|
+
let receiptsStart = -1;
|
|
93
|
+
let receiptsEnd = closingIndex;
|
|
94
|
+
for (let index = 1; index < closingIndex; index++) {
|
|
95
|
+
if (/^proof_receipts\s*:/.test(lines[index] ?? "")) {
|
|
96
|
+
receiptsStart = index;
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (receiptsStart !== -1) {
|
|
101
|
+
for (let index = receiptsStart + 1; index < closingIndex; index++) {
|
|
102
|
+
const line = lines[index] ?? "";
|
|
103
|
+
if (/^[A-Za-z_][A-Za-z0-9_-]*\s*:/.test(line)) {
|
|
104
|
+
receiptsEnd = index;
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const block = dumpYaml({ proof_receipts: receipts.map((receipt) => ({ ...receipt })) }, { noRefs: true, lineWidth: -1, sortKeys: false });
|
|
110
|
+
const blockLines = block.match(/[^\n]*\n|[^\n]+$/g) ?? [];
|
|
111
|
+
const spliced = [
|
|
112
|
+
...lines.slice(0, receiptsStart === -1 ? closingIndex : receiptsStart),
|
|
113
|
+
...blockLines,
|
|
114
|
+
...lines.slice(receiptsEnd),
|
|
115
|
+
];
|
|
116
|
+
return spliced.join("");
|
|
117
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { SemanticAdvisorAnalysisResult, SemanticAdvisorInput } from "./types.js";
|
|
2
2
|
export declare const SEMANTIC_ADVISOR_VERSION = "semantic-advisor-v2";
|
|
3
3
|
export { semanticClaimKey } from "./clauses.js";
|
|
4
|
+
export declare function stringLogicClaims(value: unknown): string[];
|
|
4
5
|
export declare function analyzeSemanticAdvisorInput(input: SemanticAdvisorInput): SemanticAdvisorAnalysisResult;
|
|
5
6
|
//# sourceMappingURL=analyze-prose.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze-prose.d.ts","sourceRoot":"","sources":["../../../src/operations/semantic-advisor/analyze-prose.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EACV,6BAA6B,EAC7B,oBAAoB,EAWrB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,wBAAwB,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"analyze-prose.d.ts","sourceRoot":"","sources":["../../../src/operations/semantic-advisor/analyze-prose.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EACV,6BAA6B,EAC7B,oBAAoB,EAWrB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,wBAAwB,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAI1D;AAo3BD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,oBAAoB,GAC1B,6BAA6B,CA+D/B"}
|
|
@@ -13,6 +13,11 @@ import { isRecord, payloadHash, propertiesOf, relationship, semanticClausesOf, s
|
|
|
13
13
|
import { detectStrictSuggestion } from "./strict-rules.js";
|
|
14
14
|
export const SEMANTIC_ADVISOR_VERSION = "semantic-advisor-v2";
|
|
15
15
|
export { semanticClaimKey } from "./clauses.js";
|
|
16
|
+
export function stringLogicClaims(value) {
|
|
17
|
+
return Array.isArray(value)
|
|
18
|
+
? value.filter((entry) => typeof entry === "string")
|
|
19
|
+
: [];
|
|
20
|
+
}
|
|
16
21
|
const SIGNAL_PATTERNS = [
|
|
17
22
|
{
|
|
18
23
|
kind: "numeric_cardinality",
|
|
@@ -289,8 +294,9 @@ function modelingSuggestions(payload, modeled, clauses, interpretations) {
|
|
|
289
294
|
return suggestions;
|
|
290
295
|
}
|
|
291
296
|
function withClauseProvenance(suggestion, clause, clauses, expectedClaimKeys, statement, sourceField) {
|
|
292
|
-
const
|
|
293
|
-
const
|
|
297
|
+
const clauseLocation = propositionSpan(statement, clause, 0);
|
|
298
|
+
const clauseText = clauseLocation.sourceText;
|
|
299
|
+
const clauseSpan = clauseLocation.span;
|
|
294
300
|
const status = suggestion.kind === "ambiguity_observation"
|
|
295
301
|
? "ambiguous"
|
|
296
302
|
: suggestion.kind === "ontology_gap"
|
|
@@ -309,7 +315,7 @@ function withClauseProvenance(suggestion, clause, clauses, expectedClaimKeys, st
|
|
|
309
315
|
: "missing";
|
|
310
316
|
return {
|
|
311
317
|
claim_key: entry.claim_key,
|
|
312
|
-
claim_text:
|
|
318
|
+
claim_text: located.sourceText,
|
|
313
319
|
role,
|
|
314
320
|
status: entryStatus,
|
|
315
321
|
span: located.span,
|
|
@@ -334,9 +340,7 @@ function withClauseProvenance(suggestion, clause, clauses, expectedClaimKeys, st
|
|
|
334
340
|
if (properties === null)
|
|
335
341
|
return step;
|
|
336
342
|
if (step.type === "req") {
|
|
337
|
-
const existing =
|
|
338
|
-
? properties.logic_claims.filter((value) => typeof value === "string")
|
|
339
|
-
: [];
|
|
343
|
+
const existing = stringLogicClaims(properties.logic_claims);
|
|
340
344
|
return {
|
|
341
345
|
...step,
|
|
342
346
|
properties: {
|
|
@@ -357,7 +361,7 @@ function withClauseProvenance(suggestion, clause, clauses, expectedClaimKeys, st
|
|
|
357
361
|
properties: {
|
|
358
362
|
...properties,
|
|
359
363
|
claim_key: clause.claim_key,
|
|
360
|
-
claim_text:
|
|
364
|
+
claim_text: clauseText,
|
|
361
365
|
claim_span_start: clauseSpan.start,
|
|
362
366
|
claim_span_end: clauseSpan.end,
|
|
363
367
|
},
|
|
@@ -366,14 +370,14 @@ function withClauseProvenance(suggestion, clause, clauses, expectedClaimKeys, st
|
|
|
366
370
|
return {
|
|
367
371
|
...suggestion,
|
|
368
372
|
claim_key: clause.claim_key,
|
|
369
|
-
claim_text:
|
|
373
|
+
claim_text: clauseText,
|
|
370
374
|
applyPlan,
|
|
371
375
|
...(suggestion.kind === "predicate" && suggestion.relationshipPlan !== null
|
|
372
376
|
? {
|
|
373
377
|
relationshipPlan: {
|
|
374
378
|
...suggestion.relationshipPlan,
|
|
375
379
|
claimKey: clause.claim_key,
|
|
376
|
-
claimText:
|
|
380
|
+
claimText: clauseText,
|
|
377
381
|
logicClaims: expectedClaimKeys,
|
|
378
382
|
semanticClauses: clauses.map(({ text }) => text),
|
|
379
383
|
semanticInventory,
|
|
@@ -387,7 +391,7 @@ function withClauseProvenance(suggestion, clause, clauses, expectedClaimKeys, st
|
|
|
387
391
|
relationshipPlan: {
|
|
388
392
|
...suggestion.relationshipPlan,
|
|
389
393
|
claimKey: clause.claim_key,
|
|
390
|
-
claimText:
|
|
394
|
+
claimText: clauseText,
|
|
391
395
|
logicClaims: expectedClaimKeys,
|
|
392
396
|
semanticClauses: clauses.map(({ text }) => text),
|
|
393
397
|
semanticInventory,
|
|
@@ -554,12 +558,36 @@ function shadowAnalysis(text, interpretations) {
|
|
|
554
558
|
}));
|
|
555
559
|
}
|
|
556
560
|
function propositionSpan(text, clause, cursor) {
|
|
557
|
-
const
|
|
561
|
+
const located = locateSourceText(text, clause.text, cursor);
|
|
562
|
+
return {
|
|
563
|
+
span: utf8Span(text, located.start, located.end),
|
|
564
|
+
next: Math.max(cursor, located.end),
|
|
565
|
+
sourceText: text.slice(located.start, located.end),
|
|
566
|
+
};
|
|
567
|
+
}
|
|
568
|
+
function escapeRegExp(value) {
|
|
569
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
570
|
+
}
|
|
571
|
+
/**
|
|
572
|
+
* Locate canonical claim text while accepting source-only whitespace layout.
|
|
573
|
+
* The caller receives the authored slice so strict ingestion can compare the
|
|
574
|
+
* span with the claim text without rewriting the source document.
|
|
575
|
+
*/
|
|
576
|
+
function locateSourceText(source, claimText, cursor) {
|
|
577
|
+
const canonicalPattern = escapeRegExp(claimText).replace(/\s+/g, "\\s+");
|
|
578
|
+
const match = new RegExp(canonicalPattern).exec(source.slice(cursor));
|
|
579
|
+
if (match?.index !== undefined) {
|
|
580
|
+
const start = cursor + match.index;
|
|
581
|
+
return { start, end: start + match[0].length };
|
|
582
|
+
}
|
|
583
|
+
const exact = source.indexOf(claimText, cursor);
|
|
558
584
|
const start = exact >= 0 ? exact : cursor;
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
:
|
|
562
|
-
|
|
585
|
+
return {
|
|
586
|
+
start,
|
|
587
|
+
end: exact >= 0
|
|
588
|
+
? exact + claimText.length
|
|
589
|
+
: Math.min(source.length, start + claimText.length),
|
|
590
|
+
};
|
|
563
591
|
}
|
|
564
592
|
function interpretationResults(interpretations, clauses, statement) {
|
|
565
593
|
if (interpretations === undefined)
|
|
@@ -582,16 +610,8 @@ function interpretationResults(interpretations, clauses, statement) {
|
|
|
582
610
|
(candidate.span.start < 0 || candidate.span.end < candidate.span.start))
|
|
583
611
|
errors.push("interpretation span is invalid");
|
|
584
612
|
if (clause && candidate.span) {
|
|
585
|
-
const
|
|
586
|
-
const
|
|
587
|
-
const sourceStart = candidateStart >= 0 ? candidateStart : clauseStart;
|
|
588
|
-
const sourceEnd = sourceStart >= 0
|
|
589
|
-
? sourceStart +
|
|
590
|
-
(candidateStart >= 0
|
|
591
|
-
? candidate.claim_text.length
|
|
592
|
-
: clause.text.length)
|
|
593
|
-
: 0;
|
|
594
|
-
const expectedSpan = utf8Span(statement, Math.max(0, sourceStart), Math.max(0, sourceEnd));
|
|
613
|
+
const candidateLocation = locateSourceText(statement, candidate.claim_text, 0);
|
|
614
|
+
const expectedSpan = utf8Span(statement, candidateLocation.start, candidateLocation.end);
|
|
595
615
|
if (candidate.span.start !== expectedSpan.start ||
|
|
596
616
|
candidate.span.end !== expectedSpan.end)
|
|
597
617
|
errors.push(`interpretation span for ${candidate.claim_key} does not match the exact UTF-8 proposition span`);
|
|
@@ -671,7 +691,7 @@ function propositionInventory(statement, clauses, suggestions, interpretations,
|
|
|
671
691
|
}
|
|
672
692
|
return {
|
|
673
693
|
claim_key: clause.claim_key,
|
|
674
|
-
claim_text:
|
|
694
|
+
claim_text: located.sourceText,
|
|
675
695
|
role,
|
|
676
696
|
status,
|
|
677
697
|
span: located.span,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clauses.d.ts","sourceRoot":"","sources":["../../../src/operations/semantic-advisor/clauses.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;CACjC,CAAC,CAAC;AAKH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAW7D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIrD;AA4BD,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,GAClC,SAAS,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"clauses.d.ts","sourceRoot":"","sources":["../../../src/operations/semantic-advisor/clauses.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;CACjC,CAAC,CAAC;AAKH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAW7D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIrD;AA4BD,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,GAClC,SAAS,cAAc,EAAE,CA4B3B"}
|
|
@@ -46,11 +46,24 @@ export function extractSemanticClauses(text, suppliedClauses) {
|
|
|
46
46
|
if (suppliedClauses !== undefined && normalized.length === 0) {
|
|
47
47
|
throw new Error("Semantic advisor clauses must contain at least one non-empty atomic claim");
|
|
48
48
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
49
|
+
// A repeated sentence has one logical identity. Keep the first source
|
|
50
|
+
// occurrence for its source span and provenance; retaining repeated claim
|
|
51
|
+
// keys would make the inventory impossible to persist because logic_claims
|
|
52
|
+
// is a set-like manifest and grounding is one-to-one.
|
|
53
|
+
const seen = new Set();
|
|
54
|
+
return normalized.flatMap((clause, index) => {
|
|
55
|
+
const identity = clause.toLowerCase();
|
|
56
|
+
if (seen.has(identity))
|
|
57
|
+
return [];
|
|
58
|
+
seen.add(identity);
|
|
59
|
+
return [
|
|
60
|
+
{
|
|
61
|
+
claim_key: semanticClaimKey(clause),
|
|
62
|
+
text: clause,
|
|
63
|
+
index,
|
|
64
|
+
normative: NORMATIVE_PATTERN.test(clause),
|
|
65
|
+
source,
|
|
66
|
+
},
|
|
67
|
+
];
|
|
68
|
+
});
|
|
56
69
|
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { type Payload } from "./shared.js";
|
|
2
2
|
import type { SemanticModelingSuggestion } from "./types.js";
|
|
3
|
+
export declare function numberToken(value: string): number | null;
|
|
4
|
+
export declare function whenParsedNumber<T>(value: number | null, then: (value: number) => T): T | null;
|
|
3
5
|
export declare function detectCountStrictSuggestion(payload: Payload, statement: string): SemanticModelingSuggestion | null;
|
|
4
6
|
//# sourceMappingURL=strict-count-rules.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strict-count-rules.d.ts","sourceRoot":"","sources":["../../../src/operations/semantic-advisor/strict-count-rules.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAKb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"strict-count-rules.d.ts","sourceRoot":"","sources":["../../../src/operations/semantic-advisor/strict-count-rules.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAKb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAgB7D,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIxD;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,GACzB,CAAC,GAAG,IAAI,CAGV;AAGD,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,GAChB,0BAA0B,GAAG,IAAI,CAsEnC"}
|
|
@@ -12,51 +12,66 @@ const NUMBER_WORDS = new Map([
|
|
|
12
12
|
["nine", 9],
|
|
13
13
|
["ten", 10],
|
|
14
14
|
]);
|
|
15
|
-
function numberToken(value) {
|
|
15
|
+
export function numberToken(value) {
|
|
16
16
|
return /^\d+$/.test(value)
|
|
17
17
|
? Number(value)
|
|
18
18
|
: (NUMBER_WORDS.get(value.toLowerCase()) ?? null);
|
|
19
19
|
}
|
|
20
|
+
export function whenParsedNumber(value, then) {
|
|
21
|
+
if (value === null)
|
|
22
|
+
return null;
|
|
23
|
+
return then(value);
|
|
24
|
+
}
|
|
20
25
|
// implements REQ-mcp-semantic-advisor-preflight
|
|
21
26
|
export function detectCountStrictSuggestion(payload, statement) {
|
|
22
27
|
const cardinality = statement.match(/\b(?<operator>at\s+most|at\s+least|exactly|no\s+more\s+than|up\s+to)\s+(?<value>\d+|zero|one|two|three|four|five|six|seven|eight|nine|ten)\s+(?<resource>[a-z][a-z\s_-]*?)\.?$/i);
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
const cardinalityGroups = cardinality?.groups;
|
|
29
|
+
if (cardinalityGroups?.operator &&
|
|
30
|
+
cardinalityGroups.value &&
|
|
31
|
+
cardinalityGroups.resource) {
|
|
32
|
+
const operatorText = cardinalityGroups.operator;
|
|
33
|
+
const valueText = cardinalityGroups.value;
|
|
34
|
+
const resourceText = cardinalityGroups.resource;
|
|
35
|
+
const value = numberToken(valueText);
|
|
36
|
+
const suggestion = whenParsedNumber(value, (parsed) => {
|
|
37
|
+
const normalized = normalizeKey(resourceText);
|
|
29
38
|
const tail = singularize(normalized.split("_").at(-1) ?? normalized);
|
|
30
|
-
const operator = /at\s+least/i.test(
|
|
39
|
+
const operator = /at\s+least/i.test(operatorText)
|
|
31
40
|
? "gte"
|
|
32
|
-
: /exactly/i.test(
|
|
41
|
+
: /exactly/i.test(operatorText)
|
|
33
42
|
? "eq"
|
|
34
43
|
: "lte";
|
|
35
|
-
return strictSuggestion(payload, `${
|
|
44
|
+
return strictSuggestion(payload, `${operatorText} ${valueText}`, {
|
|
36
45
|
subject_key: tail === "session" ? "user.session" : normalized.replace(/_/g, "."),
|
|
37
46
|
property_key: normalized.includes("active_session")
|
|
38
47
|
? "active_count"
|
|
39
48
|
: "count",
|
|
40
49
|
operator,
|
|
41
50
|
value_type: "int",
|
|
42
|
-
value_int:
|
|
51
|
+
value_int: parsed,
|
|
43
52
|
}, "Bounded cardinality is a strict numeric property and should be modeled explicitly.", 0.9);
|
|
44
|
-
}
|
|
53
|
+
});
|
|
54
|
+
if (suggestion)
|
|
55
|
+
return suggestion;
|
|
45
56
|
}
|
|
46
57
|
const capped = statement.match(/^(?<subject>.+?)\s+cap(?:s|ped)?\s+at\s+(?:(?<property>[a-z][a-z\s_-]*?)\s+)?(?<value>\d+|zero|one|two|three|four|five|six|seven|eight|nine|ten)\.?$/i);
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
const cappedGroups = capped?.groups;
|
|
59
|
+
if (cappedGroups?.subject && cappedGroups.value) {
|
|
60
|
+
const subjectText = cappedGroups.subject;
|
|
61
|
+
const valueText = cappedGroups.value;
|
|
62
|
+
const propertyText = cappedGroups.property;
|
|
63
|
+
const value = numberToken(valueText);
|
|
64
|
+
const suggestion = whenParsedNumber(value, (parsed) => strictSuggestion(payload, `cap at ${valueText}`, {
|
|
65
|
+
subject_key: normalizeSubjectKey(subjectText),
|
|
66
|
+
property_key: propertyText
|
|
67
|
+
? `${normalizeKey(propertyText)}_cap`
|
|
68
|
+
: "count",
|
|
69
|
+
operator: "lte",
|
|
70
|
+
value_type: "int",
|
|
71
|
+
value_int: parsed,
|
|
72
|
+
}, "Cap-at prose is an upper-bound strict property and should be modeled explicitly.", 0.9));
|
|
73
|
+
if (suggestion)
|
|
74
|
+
return suggestion;
|
|
60
75
|
}
|
|
61
76
|
return null;
|
|
62
77
|
}
|
package/dist/prolog/codec.d.ts
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
6
|
* Escape a string for use as a Prolog atom.
|
|
7
|
-
*
|
|
7
|
+
* Escapes backslashes/control characters and doubles single quotes per ISO
|
|
8
|
+
* Prolog syntax.
|
|
8
9
|
*/
|
|
9
10
|
export declare function escapeAtom(value: string): string;
|
|
10
11
|
/**
|
|
@@ -23,13 +24,24 @@ export declare function toPrologString(value: string): string;
|
|
|
23
24
|
* Alias for escapeAtom for semantic clarity.
|
|
24
25
|
*/
|
|
25
26
|
export declare function escapeAtomContent(value: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Parse a Prolog list of list rows without decoding or normalizing columns.
|
|
29
|
+
* Malformed outer collections fail closed rather than returning a partial
|
|
30
|
+
* projection.
|
|
31
|
+
*/
|
|
26
32
|
export declare function parseListOfLists(listStr: string): string[][];
|
|
33
|
+
export declare function firstTwoDefinedParts(parts: readonly (string | undefined)[]): [string, string] | undefined;
|
|
34
|
+
export declare function fallbackWhenPairMissing<T>(pair: [string, string] | undefined, fallback: T): T | null;
|
|
35
|
+
export declare function typedLiteralFromParts(parts: readonly (string | undefined)[], original: string): unknown;
|
|
36
|
+
export declare function fileUriLeaf(value: string): string;
|
|
37
|
+
export declare function entityFromBindingParts(parts: readonly (string | undefined)[]): Record<string, unknown>;
|
|
27
38
|
export declare function parseEntityFromBinding(bindingStr: string): Record<string, unknown>;
|
|
28
39
|
export declare function parseEntityFromList(data: string[]): Record<string, unknown>;
|
|
29
40
|
export declare function parsePropertyList(propsStr: string): Record<string, unknown>;
|
|
30
41
|
export declare function parsePrologValue(valueInput: string): unknown;
|
|
31
42
|
export declare function splitTopLevelGeneral(str: string, delimiter: string): string[];
|
|
32
43
|
export declare function splitTopLevel(str: string, delimiter: string): string[];
|
|
44
|
+
export declare function normalizeEntityId(value: string): string;
|
|
33
45
|
export declare function parseAtomList(raw: string): string[];
|
|
34
46
|
export declare function parsePairList(raw: string): Array<[string, string]>;
|
|
35
47
|
export declare function parseTriples(raw: string): Array<[string, string, string]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/prolog/codec.ts"],"names":[],"mappings":"AAUA;;;GAGG;AAEH
|
|
1
|
+
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/prolog/codec.ts"],"names":[],"mappings":"AAUA;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAYhD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASpD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,CAU5D;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GACrC,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAO9B;AAED,wBAAgB,uBAAuB,CAAC,CAAC,EACvC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAClC,QAAQ,EAAE,CAAC,GACV,CAAC,GAAG,IAAI,CAEV;AAID,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,EACtC,QAAQ,EAAE,MAAM,GACf,OAAO,CAoCT;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMjD;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GACrC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiBzB;AAED,wBAAgB,sBAAsB,CAEpC,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGzB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqB3E;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoD3E;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CA6D5D;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAG7E;AAuFD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAGtE;AAYD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUvD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAenD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAmBlE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAoBzE;AAyCD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,EAAE,CA6DjE"}
|