kibi-cli 2.31.1 → 2.35.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli-register-proof.d.ts.map +1 -1
- package/dist/cli-register-proof.js +19 -7
- package/dist/cli-register-reporting.d.ts.map +1 -1
- package/dist/cli-register-reporting.js +2 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +5 -1
- package/dist/commands/check-generated.d.ts +5 -1
- package/dist/commands/check-generated.d.ts.map +1 -1
- package/dist/commands/check-generated.js +24 -35
- package/dist/commands/check.d.ts +1 -0
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +14 -5
- package/dist/commands/discovery-table.d.ts.map +1 -1
- package/dist/commands/discovery-table.js +51 -4
- package/dist/commands/doctor.js +19 -4
- package/dist/commands/init-helpers.d.ts.map +1 -1
- package/dist/commands/init-helpers.js +8 -5
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +109 -5
- package/dist/commands/prove.d.ts +48 -1
- package/dist/commands/prove.d.ts.map +1 -1
- package/dist/commands/prove.js +293 -8
- package/dist/commands/report.d.ts +1 -0
- package/dist/commands/report.d.ts.map +1 -1
- package/dist/commands/report.js +70 -5
- package/dist/commands/signoff.d.ts.map +1 -1
- package/dist/commands/signoff.js +20 -1
- package/dist/commands/sync/manifest.d.ts +10 -1
- package/dist/commands/sync/manifest.d.ts.map +1 -1
- package/dist/commands/sync/manifest.js +106 -17
- package/dist/commands/sync/persistence.d.ts.map +1 -1
- package/dist/commands/sync/persistence.js +16 -5
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +19 -0
- package/dist/diagnostics.js +1 -1
- package/dist/engine.js +1 -1
- package/dist/extractors/markdown.d.ts +4 -2
- package/dist/extractors/markdown.d.ts.map +1 -1
- package/dist/extractors/markdown.js +17 -0
- package/dist/extractors/symbol-coordinates.js +2 -2
- package/dist/extractors/symbols-coordinator.d.ts +2 -4
- package/dist/extractors/symbols-coordinator.d.ts.map +1 -1
- package/dist/extractors/symbols-coordinator.js +1 -2
- package/dist/operations/bootstrap/candidate-helpers.d.ts +3 -0
- package/dist/operations/bootstrap/candidate-helpers.d.ts.map +1 -1
- package/dist/operations/bootstrap/candidate-helpers.js +4 -0
- package/dist/operations/migration/evidence-floor.d.ts +41 -0
- package/dist/operations/migration/evidence-floor.d.ts.map +1 -0
- package/dist/operations/migration/evidence-floor.js +230 -0
- package/dist/operations/migration/proof-contract-claims.d.ts +72 -0
- package/dist/operations/migration/proof-contract-claims.d.ts.map +1 -0
- package/dist/operations/migration/proof-contract-claims.js +215 -0
- package/dist/operations/migration/schema6.d.ts +6 -0
- package/dist/operations/migration/schema6.d.ts.map +1 -1
- package/dist/operations/migration/schema6.js +92 -0
- package/dist/operations/migration/symbol-coordinates-refresh.d.ts +3 -2
- package/dist/operations/migration/symbol-coordinates-refresh.d.ts.map +1 -1
- package/dist/operations/migration/symbol-coordinates-refresh.js +4 -3
- package/dist/operations/migration/untrack-symbol-coordinates.d.ts +23 -0
- package/dist/operations/migration/untrack-symbol-coordinates.d.ts.map +1 -0
- package/dist/operations/migration/untrack-symbol-coordinates.js +67 -0
- package/dist/operations/modeling/requirement-modeler.d.ts.map +1 -1
- package/dist/operations/modeling/requirement-modeler.js +48 -1
- package/dist/operations/modeling/requirement-types.d.ts +2 -1
- package/dist/operations/modeling/requirement-types.d.ts.map +1 -1
- package/dist/operations/modeling/requirement-utils.d.ts +1 -1
- package/dist/operations/modeling/requirement-utils.d.ts.map +1 -1
- package/dist/operations/modeling/requirement-utils.js +8 -1
- package/dist/operations/mutation/omitted-properties.d.ts +11 -0
- package/dist/operations/mutation/omitted-properties.d.ts.map +1 -0
- package/dist/operations/mutation/omitted-properties.js +76 -0
- package/dist/operations/mutation/serialization.d.ts.map +1 -1
- package/dist/operations/mutation/serialization.js +1 -0
- package/dist/operations/mutation/source-authoring.d.ts.map +1 -1
- package/dist/operations/mutation/source-authoring.js +39 -20
- package/dist/operations/mutation/strict-fact.d.ts.map +1 -1
- package/dist/operations/mutation/strict-fact.js +6 -2
- package/dist/operations/mutation/symbol-granularity.d.ts.map +1 -1
- package/dist/operations/mutation/symbol-granularity.js +5 -3
- package/dist/operations/mutation/upsert.d.ts.map +1 -1
- package/dist/operations/mutation/upsert.js +7 -1
- package/dist/operations/mutation/validation.d.ts +2 -0
- package/dist/operations/mutation/validation.d.ts.map +1 -1
- package/dist/operations/mutation/validation.js +4 -0
- package/dist/operations/proof/claim-bindings.d.ts +41 -0
- package/dist/operations/proof/claim-bindings.d.ts.map +1 -0
- package/dist/operations/proof/claim-bindings.js +364 -0
- package/dist/operations/proof/code-certificates.d.ts +155 -0
- package/dist/operations/proof/code-certificates.d.ts.map +1 -0
- package/dist/operations/proof/code-certificates.js +894 -0
- package/dist/operations/proof/code-models.d.ts +96 -0
- package/dist/operations/proof/code-models.d.ts.map +1 -0
- package/dist/operations/proof/code-models.js +601 -0
- package/dist/operations/proof/code-runner.d.ts +40 -0
- package/dist/operations/proof/code-runner.d.ts.map +1 -0
- package/dist/operations/proof/code-runner.js +164 -0
- package/dist/operations/proof/code-scope.d.ts +14 -1
- package/dist/operations/proof/code-scope.d.ts.map +1 -1
- package/dist/operations/proof/code-scope.js +44 -2
- package/dist/operations/proof/compact-receipts.d.ts.map +1 -1
- package/dist/operations/proof/compact-receipts.js +4 -3
- package/dist/operations/proof/explain.d.ts +32 -0
- package/dist/operations/proof/explain.d.ts.map +1 -1
- package/dist/operations/proof/explain.js +91 -0
- package/dist/operations/proof/ingest-proof.d.ts +9 -1
- package/dist/operations/proof/ingest-proof.d.ts.map +1 -1
- package/dist/operations/proof/ingest-proof.js +42 -2
- package/dist/operations/proof/receipt-compaction.d.ts +2 -0
- package/dist/operations/proof/receipt-compaction.d.ts.map +1 -1
- package/dist/operations/proof/receipt-compaction.js +6 -2
- package/dist/operations/proof/regular-language.d.ts +89 -0
- package/dist/operations/proof/regular-language.d.ts.map +1 -0
- package/dist/operations/proof/regular-language.js +943 -0
- package/dist/operations/proof/source-code-readers.d.ts +12 -0
- package/dist/operations/proof/source-code-readers.d.ts.map +1 -0
- package/dist/operations/proof/source-code-readers.js +699 -0
- package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/analyze-prose.js +2 -1
- package/dist/operations/semantic-advisor/shared.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/shared.js +4 -0
- package/dist/operations/semantic-advisor/strict-count-rules.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/strict-count-rules.js +8 -2
- package/dist/operations/semantic-advisor/strict-rules.d.ts +8 -0
- package/dist/operations/semantic-advisor/strict-rules.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/strict-rules.js +234 -4
- package/dist/operations/semantic-advisor/types.d.ts +3 -2
- package/dist/operations/semantic-advisor/types.d.ts.map +1 -1
- package/dist/plugins/approved-source-analyzers.generated.d.ts +6 -6
- package/dist/plugins/approved-source-analyzers.generated.js +6 -6
- package/dist/prolog.d.ts.map +1 -1
- package/dist/prolog.js +13 -3
- package/dist/proof/command-test-report.d.ts +4 -3
- package/dist/proof/command-test-report.d.ts.map +1 -1
- package/dist/proof/command-test-report.js +4 -10
- package/dist/proof/evaluate.d.ts.map +1 -1
- package/dist/proof/evaluate.js +18 -2
- package/dist/proof/inspect.d.ts.map +1 -1
- package/dist/proof/inspect.js +58 -0
- package/dist/proof/producers/playwright-reporter.d.ts +3 -0
- package/dist/proof/producers/playwright-reporter.d.ts.map +1 -1
- package/dist/proof/producers/playwright-reporter.js +25 -2
- package/dist/proof/step-runner.d.ts +36 -0
- package/dist/proof/step-runner.d.ts.map +1 -0
- package/dist/proof/step-runner.js +234 -0
- package/dist/public/evidence-levels.d.ts +12 -0
- package/dist/public/evidence-levels.d.ts.map +1 -0
- package/dist/public/evidence-levels.js +19 -0
- package/dist/public/impact/coverage-depth-quality.d.ts +7 -0
- package/dist/public/impact/coverage-depth-quality.d.ts.map +1 -1
- package/dist/public/impact/coverage-depth-quality.js +59 -0
- package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
- package/dist/public/impact/full-kb-quality.js +3 -1
- package/dist/public/operations/catalog.d.ts +315 -11
- package/dist/public/operations/catalog.d.ts.map +1 -1
- package/dist/public/operations/check-executor.d.ts +2 -0
- package/dist/public/operations/check-executor.d.ts.map +1 -1
- package/dist/public/operations/check-executor.js +6 -0
- package/dist/public/operations/evidence-floor.d.ts +48 -0
- package/dist/public/operations/evidence-floor.d.ts.map +1 -0
- package/dist/public/operations/evidence-floor.js +143 -0
- package/dist/public/operations/migration-plan.d.ts +19 -5
- package/dist/public/operations/migration-plan.d.ts.map +1 -1
- package/dist/public/operations/migration-plan.js +22 -5
- package/dist/public/operations/node-ports.d.ts.map +1 -1
- package/dist/public/operations/node-ports.js +4 -1
- package/dist/public/operations/proof-contract-claims.d.ts +26 -0
- package/dist/public/operations/proof-contract-claims.d.ts.map +1 -0
- package/dist/public/operations/proof-contract-claims.js +71 -0
- package/dist/public/operations/specs/check-rules.generated.d.ts +1 -1
- package/dist/public/operations/specs/check-rules.generated.d.ts.map +1 -1
- package/dist/public/operations/specs/check-rules.generated.js +3 -1
- package/dist/public/operations/specs/check.d.ts +1 -1
- package/dist/public/operations/specs/composite.d.ts +16 -3
- package/dist/public/operations/specs/composite.d.ts.map +1 -1
- package/dist/public/operations/specs/modeling.d.ts +16 -3
- package/dist/public/operations/specs/modeling.d.ts.map +1 -1
- package/dist/public/operations/specs/modeling.js +22 -3
- package/dist/public/operations/specs/mutation-schemas.d.ts +289 -7
- package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
- package/dist/public/operations/specs/mutation-schemas.js +28 -4
- package/dist/public/operations/specs/proof.d.ts +9 -0
- package/dist/public/operations/specs/proof.d.ts.map +1 -1
- package/dist/public/operations/specs/reporting.d.ts.map +1 -1
- package/dist/public/operations/specs/reporting.js +19 -10
- package/dist/public/operations/specs/upsert.d.ts +289 -7
- package/dist/public/operations/specs/upsert.d.ts.map +1 -1
- package/dist/public/proof-certificates.d.ts +163 -0
- package/dist/public/proof-certificates.d.ts.map +1 -0
- package/dist/public/proof-certificates.js +419 -0
- package/dist/public/proof-protocol.d.ts +259 -3
- package/dist/public/proof-protocol.d.ts.map +1 -1
- package/dist/public/proof-protocol.js +524 -3
- package/dist/public/proof-receipt.d.ts +90 -6
- package/dist/public/proof-receipt.d.ts.map +1 -1
- package/dist/public/proof-receipt.js +88 -7
- package/dist/public/proof-sources.d.ts +102 -0
- package/dist/public/proof-sources.d.ts.map +1 -0
- package/dist/public/proof-sources.js +1292 -0
- package/dist/public/schemas/entity.d.ts.map +1 -1
- package/dist/public/schemas/entity.js +39 -2
- package/dist/public/skills/kibi-bootstrap/SKILL.md +2 -2
- package/dist/public/skills/kibi-commit-review/SKILL.md +8 -8
- package/dist/public/skills/kibi-commit-review/resources/staged-gate.md +12 -7
- package/dist/public/skills/kibi-decisions/SKILL.md +13 -2
- package/dist/public/skills/kibi-decisions/resources/decision-records.md +9 -1
- package/dist/public/skills/kibi-freshness/SKILL.md +5 -1
- package/dist/public/skills/kibi-traceability/SKILL.md +12 -1
- package/dist/public/skills/kibi-usage/SKILL.md +8 -4
- package/dist/public/skills/kibi-usage/resources/proof.md +221 -20
- package/dist/public/skills/kibi-usage/resources/workflows.md +4 -4
- package/dist/report/html-report.css +83 -11
- package/dist/report/html-report.d.ts +8 -0
- package/dist/report/html-report.d.ts.map +1 -1
- package/dist/report/html-report.js +214 -22
- package/dist/report/report-view.d.ts +2 -2
- package/dist/report/report-view.d.ts.map +1 -1
- package/dist/report/report-view.js +8 -0
- package/dist/schemas/entity.schema.json +404 -5
- package/dist/search-answer.d.ts.map +1 -1
- package/dist/search-answer.js +1 -0
- package/dist/signoff/html.d.ts.map +1 -1
- package/dist/signoff/html.js +3 -0
- package/dist/signoff/markdown.d.ts.map +1 -1
- package/dist/signoff/markdown.js +3 -0
- package/dist/signoff/model.d.ts +20 -0
- package/dist/signoff/model.d.ts.map +1 -1
- package/dist/signoff/model.js +20 -1
- package/dist/traceability/evidence-model.d.ts +13 -12
- package/dist/traceability/evidence-model.d.ts.map +1 -1
- package/dist/traceability/evidence-model.js +1 -1
- package/dist/traceability/impact-knowledge.d.ts.map +1 -1
- package/dist/traceability/impact-knowledge.js +1 -0
- package/dist/traceability/staged-diagnostics.d.ts.map +1 -1
- package/dist/traceability/staged-diagnostics.js +24 -20
- package/dist/traceability/staged-impact-contract.d.ts +4 -4
- package/dist/traceability/staged-impact-contract.js +9 -9
- package/dist/traceability/staged-symbols-manifest.d.ts +11 -3
- package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
- package/dist/traceability/staged-symbols-manifest.js +47 -140
- package/dist/traceability/temp-kb.d.ts.map +1 -1
- package/dist/traceability/temp-kb.js +1 -0
- package/dist/types/entities.d.ts +5 -2
- package/dist/types/entities.d.ts.map +1 -1
- package/dist/utils/merge-driver-setup.d.ts +8 -1
- package/dist/utils/merge-driver-setup.d.ts.map +1 -1
- package/dist/utils/merge-driver-setup.js +23 -2
- package/dist/utils/rule-registry.generated.d.ts +10 -0
- package/dist/utils/rule-registry.generated.d.ts.map +1 -1
- package/dist/utils/rule-registry.generated.js +12 -0
- package/dist/utils/schema-version.d.ts +1 -1
- package/dist/utils/schema-version.d.ts.map +1 -1
- package/dist/utils/schema-version.js +7 -1
- package/dist/utils/strict-modeling.d.ts +3 -2
- package/dist/utils/strict-modeling.d.ts.map +1 -1
- package/dist/utils/strict-modeling.js +37 -4
- package/dist/workspace-cwd.d.ts +15 -0
- package/dist/workspace-cwd.d.ts.map +1 -0
- package/dist/workspace-cwd.js +86 -0
- package/package.json +6 -2
- package/schema/entities.pl +6 -0
- package/schema/validation.pl +7 -2
- package/src/public/evidence-levels.ts +23 -0
- package/src/public/impact/coverage-depth-quality.ts +73 -0
- package/src/public/impact/full-kb-quality.ts +6 -1
- package/src/public/operations/check-executor.ts +13 -0
- package/src/public/operations/evidence-floor.ts +203 -0
- package/src/public/operations/migration-plan.ts +39 -6
- package/src/public/operations/node-ports.ts +3 -1
- package/src/public/operations/proof-contract-claims.ts +103 -0
- package/src/public/operations/specs/check-rules.generated.ts +3 -1
- package/src/public/operations/specs/modeling.ts +24 -5
- package/src/public/operations/specs/mutation-schemas.ts +30 -4
- package/src/public/operations/specs/reporting.ts +20 -10
- package/src/public/proof-certificates.ts +566 -0
- package/src/public/proof-protocol-types.d.ts +69 -1
- package/src/public/proof-protocol.ts +694 -3
- package/src/public/proof-receipt.ts +133 -7
- package/src/public/proof-sources.ts +1656 -0
- package/src/public/schemas/entity.ts +51 -3
- package/src/public/skills/kibi-bootstrap/SKILL.md +2 -2
- package/src/public/skills/kibi-commit-review/SKILL.md +8 -8
- package/src/public/skills/kibi-commit-review/resources/staged-gate.md +12 -7
- package/src/public/skills/kibi-decisions/SKILL.md +13 -2
- package/src/public/skills/kibi-decisions/resources/decision-records.md +9 -1
- package/src/public/skills/kibi-freshness/SKILL.md +5 -1
- package/src/public/skills/kibi-traceability/SKILL.md +12 -1
- package/src/public/skills/kibi-usage/SKILL.md +8 -4
- package/src/public/skills/kibi-usage/resources/proof.md +221 -20
- package/src/public/skills/kibi-usage/resources/workflows.md +4 -4
- package/src/schemas/entity.schema.json +404 -5
- package/dist/commands/proof-impact.d.ts +0 -7
- package/dist/commands/proof-impact.d.ts.map +0 -1
- package/dist/commands/proof-impact.js +0 -39
- package/dist/operations/proof/baseline-diff.d.ts +0 -41
- package/dist/operations/proof/baseline-diff.d.ts.map +0 -1
- package/dist/operations/proof/baseline-diff.js +0 -153
- package/dist/operations/proof/impact.d.ts +0 -51
- package/dist/operations/proof/impact.d.ts.map +0 -1
- package/dist/operations/proof/impact.js +0 -138
- package/dist/traceability/reviewed-coordinate-refresh.d.ts +0 -10
- package/dist/traceability/reviewed-coordinate-refresh.d.ts.map +0 -1
- package/dist/traceability/reviewed-coordinate-refresh.js +0 -49
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze-prose.d.ts","sourceRoot":"","sources":["../../../src/operations/semantic-advisor/analyze-prose.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAiBxD,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;
|
|
1
|
+
{"version":3,"file":"analyze-prose.d.ts","sourceRoot":"","sources":["../../../src/operations/semantic-advisor/analyze-prose.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAiBxD,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;AA6gBD,OAAO,EAAE,eAAe,EAAE,CAAC;AAwX3B,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,oBAAoB,GAC1B,6BAA6B,CAgE/B"}
|
|
@@ -8,7 +8,7 @@ import { detectConditionalRule, } from "./conditional-rules.js";
|
|
|
8
8
|
import { observationPlan } from "./observation-plan.js";
|
|
9
9
|
import { propositionRole } from "./proposition-role.js";
|
|
10
10
|
import { predicateSuggestion as buildPredicateSuggestion, isRecord, payloadHash, propertiesOf, relationship, semanticClausesOf, semanticSourceHash, semanticSourceOf, sourceOf, statementOf, stringValue, } from "./shared.js";
|
|
11
|
-
import { detectStrictSuggestion } from "./strict-rules.js";
|
|
11
|
+
import { detectSourceShape, detectStrictSuggestion } from "./strict-rules.js";
|
|
12
12
|
export const SEMANTIC_ADVISOR_VERSION = "semantic-advisor-v2";
|
|
13
13
|
export { semanticClaimKey } from "./clauses.js";
|
|
14
14
|
export function stringLogicClaims(value) {
|
|
@@ -260,6 +260,7 @@ function modelingSuggestions(payload, modeled, clauses, interpretations) {
|
|
|
260
260
|
const candidate = clause.text;
|
|
261
261
|
const conditional = detectConditionalRule(candidate);
|
|
262
262
|
const rawSuggestion = conditionalRuleSuggestion(payload, clause, conditional) ??
|
|
263
|
+
detectSourceShape(payload, candidate) ??
|
|
263
264
|
predicateSuggestion(payload, candidate) ??
|
|
264
265
|
unresolvedConditionalSuggestion(payload, clause, conditional) ??
|
|
265
266
|
ontologyGapSuggestion(payload, candidate) ??
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/operations/semantic-advisor/shared.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,0BAA0B,EAE1B,2BAA2B,EAC5B,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AACxD,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AACvE,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;AACvE,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG,UAAU,GAAG,OAAO,CAAC;AAGzE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAElD;AAGD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CASnD;AAGD,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAKpD;AAGD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG;IAClD,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAmBA;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,GACf,SAAS,MAAM,EAAE,GAAG,SAAS,CAO/B;AAGD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAGD,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEtE;AAGD,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAEpD;AAGD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAIjD;AAGD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOlD;AAGD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ7D;AAID;;;;;GAKG;AAEH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,SAAS,MAAM,EAAO,GAC3B,MAAM,CAUR;AAGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD;AAGD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzB;AAGD,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,2BAA2B,EAClC,SAAS,EAAE,MAAM,EACjB,UAAU,SAAM,GACf,0BAA0B,
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/operations/semantic-advisor/shared.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,0BAA0B,EAE1B,2BAA2B,EAC5B,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AACxD,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AACvE,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;AACvE,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG,UAAU,GAAG,OAAO,CAAC;AAGzE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAElD;AAGD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CASnD;AAGD,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAKpD;AAGD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG;IAClD,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAmBA;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,GACf,SAAS,MAAM,EAAE,GAAG,SAAS,CAO/B;AAGD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAGD,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEtE;AAGD,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAEpD;AAGD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAIjD;AAGD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOlD;AAGD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ7D;AAID;;;;;GAKG;AAEH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,SAAS,MAAM,EAAO,GAC3B,MAAM,CAUR;AAGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD;AAGD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzB;AAGD,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,2BAA2B,EAClC,SAAS,EAAE,MAAM,EACjB,UAAU,SAAM,GACf,0BAA0B,CA8F5B;AAGD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,QAAQ,GAAG,MAAiB,GACrC,0BAA0B,CA+C5B"}
|
|
@@ -131,6 +131,7 @@ export function strictSuggestion(payload, evidence, claim, rationale, confidence
|
|
|
131
131
|
const propertyId = `FACT-PROP-${shortHash(`${claim.subject_key}.${claim.property_key}.${claim.operator}.${canonicalize(claim)}`)}`;
|
|
132
132
|
const source = sourceOf(payload);
|
|
133
133
|
const value = claim.value_string ??
|
|
134
|
+
claim.value_set?.join("|") ??
|
|
134
135
|
claim.value_int ??
|
|
135
136
|
claim.value_number ??
|
|
136
137
|
claim.value_bool;
|
|
@@ -138,6 +139,9 @@ export function strictSuggestion(payload, evidence, claim, rationale, confidence
|
|
|
138
139
|
...(claim.value_string !== undefined
|
|
139
140
|
? { value_string: claim.value_string }
|
|
140
141
|
: {}),
|
|
142
|
+
...(claim.value_set !== undefined
|
|
143
|
+
? { value_set: [...claim.value_set] }
|
|
144
|
+
: {}),
|
|
141
145
|
...(claim.value_int !== undefined ? { value_int: claim.value_int } : {}),
|
|
142
146
|
...(claim.value_number !== undefined
|
|
143
147
|
? { value_number: claim.value_number }
|
|
@@ -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;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,
|
|
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,CA2EnC"}
|
|
@@ -24,7 +24,7 @@ export function whenParsedNumber(value, then) {
|
|
|
24
24
|
}
|
|
25
25
|
// implements REQ-mcp-semantic-advisor-preflight
|
|
26
26
|
export function detectCountStrictSuggestion(payload, statement) {
|
|
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_-]*?)
|
|
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_-]*?)(?:\s+(?:under|in|below)\s+`?(?<scope>\/[^\s`]*)`?)?\.?$/i);
|
|
28
28
|
const cardinalityGroups = cardinality?.groups;
|
|
29
29
|
if (cardinalityGroups?.operator &&
|
|
30
30
|
cardinalityGroups.value &&
|
|
@@ -42,7 +42,13 @@ export function detectCountStrictSuggestion(payload, statement) {
|
|
|
42
42
|
? "eq"
|
|
43
43
|
: "lte";
|
|
44
44
|
return strictSuggestion(payload, `${operatorText} ${valueText}`, {
|
|
45
|
-
|
|
45
|
+
// "at least 30 routes under /api/orgs" counts the routes under the
|
|
46
|
+
// prefix, the subject a source proof with path_prefix reads.
|
|
47
|
+
subject_key: cardinalityGroups.scope
|
|
48
|
+
? normalizeSubjectKey(`${resourceText} ${cardinalityGroups.scope}`)
|
|
49
|
+
: tail === "session"
|
|
50
|
+
? "user.session"
|
|
51
|
+
: normalized.replace(/_/g, "."),
|
|
46
52
|
property_key: normalized.includes("active_session")
|
|
47
53
|
? "active_count"
|
|
48
54
|
: "count",
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import { type Payload } from "./shared.js";
|
|
2
2
|
import type { SemanticModelingSuggestion } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Set claims a source or state_machine proof decides: a machine state that
|
|
5
|
+
* can never reach another, a state every path passes through, middleware
|
|
6
|
+
* every route under a prefix runs, fields every table or object has, a
|
|
7
|
+
* nullable field, members a set must stay within, and references the code
|
|
8
|
+
* must never make.
|
|
9
|
+
*/
|
|
10
|
+
export declare function detectSourceShape(payload: Payload, statement: string): SemanticModelingSuggestion | null;
|
|
3
11
|
export declare function detectStrictSuggestion(payload: Payload, statement: string): SemanticModelingSuggestion | null;
|
|
4
12
|
//# sourceMappingURL=strict-rules.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strict-rules.d.ts","sourceRoot":"","sources":["../../../src/operations/semantic-advisor/strict-rules.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"strict-rules.d.ts","sourceRoot":"","sources":["../../../src/operations/semantic-advisor/strict-rules.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAIb,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EACV,0BAA0B,EAE3B,MAAM,YAAY,CAAC;AA4CpB;;;;;;GAMG;AAEH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,GAChB,0BAA0B,GAAG,IAAI,CA8NnC;AAGD,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,GAChB,0BAA0B,GAAG,IAAI,CAsSnC"}
|
|
@@ -1,8 +1,163 @@
|
|
|
1
|
-
import { normalizeSubjectKey, strictSuggestion, } from "./shared.js";
|
|
1
|
+
import { normalizeKey, normalizeSubjectKey, strictSuggestion, } from "./shared.js";
|
|
2
2
|
import { detectCountStrictSuggestion } from "./strict-count-rules.js";
|
|
3
3
|
function suggestion(payload, match, claim, rationale, confidence, evidence = match[0]) {
|
|
4
4
|
return strictSuggestion(payload, evidence, claim, rationale, confidence);
|
|
5
5
|
}
|
|
6
|
+
const splitValues = (text) => [
|
|
7
|
+
...new Set(text
|
|
8
|
+
.split(/,|\band\b|\bor\b|\bnor\b/i)
|
|
9
|
+
.map((value) => value
|
|
10
|
+
.trim()
|
|
11
|
+
.replace(/^(?:the|a|an)\s+/i, "")
|
|
12
|
+
.replace(/^`|`$/g, ""))
|
|
13
|
+
.filter(Boolean)),
|
|
14
|
+
].sort();
|
|
15
|
+
// A member name: an identifier, a dotted or scoped module specifier
|
|
16
|
+
// (@scope/pkg, node:fs/promises, ./local) or a key.
|
|
17
|
+
const IDENTIFIER = /^[@.]?[A-Za-z_][\w.:/@-]*$/;
|
|
18
|
+
// A subject whose members have fields: "every table", "each request body".
|
|
19
|
+
const FIELD_OWNER = /\b(?:tables?|objects?|schemas?|rows?|records?|models?|entit(?:y|ies)|types?|payloads?|dtos?|interfaces?|request\s+bod(?:y|ies)|response\s+bod(?:y|ies))\b/i;
|
|
20
|
+
const NEVER_VERBS = {
|
|
21
|
+
use: "uses",
|
|
22
|
+
import: "imports",
|
|
23
|
+
call: "calls",
|
|
24
|
+
read: "reads",
|
|
25
|
+
throw: "throws",
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Set claims a source or state_machine proof decides: a machine state that
|
|
29
|
+
* can never reach another, a state every path passes through, middleware
|
|
30
|
+
* every route under a prefix runs, fields every table or object has, a
|
|
31
|
+
* nullable field, members a set must stay within, and references the code
|
|
32
|
+
* must never make.
|
|
33
|
+
*/
|
|
34
|
+
// implements REQ-kibi-source-proof-kinds
|
|
35
|
+
export function detectSourceShape(payload, statement) {
|
|
36
|
+
// The article is not a state: "A member can never become owner" is about
|
|
37
|
+
// the member state, with no machine named.
|
|
38
|
+
const never = statement
|
|
39
|
+
.replace(/^(?:an?|the)\s+/i, "")
|
|
40
|
+
.match(/^(?<from>[\w-]+)(?:\s+(?<base>[\w\s-]+?))?\s+(?:can|may|must|shall|should)\s+never\s+(?:become|reach|transition\s+to|move\s+to|go\s+(?:back\s+)?to)\s+(?<to>[\w-]+)\.?$/i);
|
|
41
|
+
if (never?.groups?.from && never.groups.to)
|
|
42
|
+
return suggestion(payload, never, {
|
|
43
|
+
subject_key: normalizeSubjectKey(never.groups.base ?? "workflow"),
|
|
44
|
+
property_key: "reachable_pairs",
|
|
45
|
+
operator: "excludes",
|
|
46
|
+
value_type: "set",
|
|
47
|
+
value_set: [
|
|
48
|
+
`${never.groups.from.toLowerCase()}->${never.groups.to.toLowerCase()}`,
|
|
49
|
+
],
|
|
50
|
+
}, "A state that can never reach another is a reachable_pairs set fact with operator excludes; a state_machine proof checks that no path of the code's machine joins them.", 0.86, `${never.groups.from} ... never ... ${never.groups.to}`);
|
|
51
|
+
const waypoint = statement.match(/^(?:in\s+(?:the\s+|an?\s+)?(?<base>.+?),\s*)?(?:every|each|any)\s+path\s+from\s+(?<from>[\w-]+)\s+to\s+(?<to>[\w-]+)\s+(?:must|shall|should)\s+(?:pass|go)\s+through\s+(?<via>[\w-]+)\.?$/i);
|
|
52
|
+
if (waypoint?.groups?.from && waypoint.groups.to && waypoint.groups.via)
|
|
53
|
+
return suggestion(payload, waypoint, {
|
|
54
|
+
subject_key: normalizeSubjectKey(waypoint.groups.base ?? "workflow"),
|
|
55
|
+
property_key: "required_waypoints",
|
|
56
|
+
operator: "includes",
|
|
57
|
+
value_type: "set",
|
|
58
|
+
value_set: [
|
|
59
|
+
`${waypoint.groups.from}->${waypoint.groups.to} via ${waypoint.groups.via}`,
|
|
60
|
+
],
|
|
61
|
+
}, 'A state every path passes through is a required_waypoints set fact ("from->to via state"); a state_machine proof checks that the target is reachable and every path to it passes through the state.', 0.86, `path from ${waypoint.groups.from} to ${waypoint.groups.to} ... through ${waypoint.groups.via}`);
|
|
62
|
+
const middleware = statement.match(/^(?:every|each|all)\s+(?:routes?|endpoints?|handlers?)\s+(?:under|below|in)\s+`?(?<prefix>\/[^\s`]*)`?\s+(?:must|shall|should)\s+(?:use|run|apply|be\s+(?:protected|guarded)\s+by|go\s+through)\s+(?:the\s+)?(?<values>.+?)(?:\s+middleware)?\.?$/i);
|
|
63
|
+
if (middleware?.groups?.prefix && middleware.groups.values) {
|
|
64
|
+
const values = splitValues(middleware.groups.values);
|
|
65
|
+
if (values.length > 0 && values.every((value) => IDENTIFIER.test(value)))
|
|
66
|
+
return suggestion(payload, middleware, {
|
|
67
|
+
subject_key: normalizeSubjectKey(`routes ${middleware.groups.prefix}`),
|
|
68
|
+
property_key: "middleware",
|
|
69
|
+
operator: "includes",
|
|
70
|
+
value_type: "set",
|
|
71
|
+
value_set: values,
|
|
72
|
+
}, "Middleware every route under a prefix runs is a middleware set fact with operator includes; a source proof reads the app's route table and checks each route.", 0.84, `under ${middleware.groups.prefix} ... ${middleware.groups.values}`);
|
|
73
|
+
}
|
|
74
|
+
// Fields need a schema word: "every table must have id", "every
|
|
75
|
+
// organization must have the field owner_id" or "... an id column".
|
|
76
|
+
// "Every organization must have an owner" is about membership, not a
|
|
77
|
+
// column, and stays out.
|
|
78
|
+
const fields = statement.match(/^(?:every|each|all)\s+(?<subject>.+?)\s+(?:must|shall|should)\s+(?:have|include|contain|define|declare)\s+(?:an?\s+|the\s+)?(?:(?:required|non-null)\s+)?(?:(?<lead>fields?|columns?|properties)\s+)?(?<values>.+?)(?:\s+(?:as\s+)?(?:(?:required|non-null)\s+)?(?<trail>fields?|columns?|properties))?\.?$/i);
|
|
79
|
+
if (fields?.groups?.subject &&
|
|
80
|
+
fields.groups.values &&
|
|
81
|
+
(fields.groups.lead !== undefined ||
|
|
82
|
+
fields.groups.trail !== undefined ||
|
|
83
|
+
FIELD_OWNER.test(fields.groups.subject))) {
|
|
84
|
+
const values = splitValues(fields.groups.values);
|
|
85
|
+
if (values.length > 0 && values.every((value) => IDENTIFIER.test(value)))
|
|
86
|
+
return suggestion(payload, fields, {
|
|
87
|
+
subject_key: normalizeSubjectKey(fields.groups.subject),
|
|
88
|
+
property_key: "required_fields",
|
|
89
|
+
operator: "includes",
|
|
90
|
+
value_type: "set",
|
|
91
|
+
value_set: values,
|
|
92
|
+
}, "Fields every table or object must have are a required_fields set fact; a source proof reads the schema or validator and checks each one (typecheck proves it for one type).", 0.84, `have ${fields.groups.values}`);
|
|
93
|
+
}
|
|
94
|
+
const nullable = statement.match(/^(?:the\s+)?(?<values>.+?)\s+(?:column|field|property)s?\s+(?:of|in|on)\s+(?:the\s+)?(?<subject>[\w\s-]+?)\s+(?:must|shall|should)\s+be\s+(?:nullable|optional\s+null)\.?$/i);
|
|
95
|
+
if (nullable?.groups?.subject && nullable.groups.values) {
|
|
96
|
+
const values = splitValues(nullable.groups.values);
|
|
97
|
+
if (values.length > 0 && values.every((value) => IDENTIFIER.test(value)))
|
|
98
|
+
return suggestion(payload, nullable, {
|
|
99
|
+
subject_key: normalizeSubjectKey(nullable.groups.subject),
|
|
100
|
+
property_key: "nullable_fields",
|
|
101
|
+
operator: "includes",
|
|
102
|
+
value_type: "set",
|
|
103
|
+
value_set: values,
|
|
104
|
+
}, "A field that must accept null is a nullable_fields set fact; a source proof reads the schema or validator and checks it.", 0.84, `${nullable.groups.values} ... nullable`);
|
|
105
|
+
}
|
|
106
|
+
const within = statement.match(/^(?:every|each|all|any)\s+(?<subject>.+?)\s+(?:must|shall|should)\s+be\s+(?:one\s+of|(?:declared|listed)\s+(?:in|among))\s+(?<values>.+?)\.?$/i);
|
|
107
|
+
if (within?.groups?.subject && within.groups.values) {
|
|
108
|
+
const values = splitValues(within.groups.values);
|
|
109
|
+
if (values.length > 1)
|
|
110
|
+
return suggestion(payload, within, {
|
|
111
|
+
subject_key: normalizeSubjectKey(within.groups.subject),
|
|
112
|
+
property_key: "allowed_values",
|
|
113
|
+
operator: "subset_of",
|
|
114
|
+
value_type: "set",
|
|
115
|
+
value_set: values,
|
|
116
|
+
}, "A claim that every member stays within a set is a set fact with operator subset_of: the members the code uses must all be listed, and listed values need not all be used. A source proof reads the members from the project.", 0.84, `one of ${within.groups.values}`);
|
|
117
|
+
}
|
|
118
|
+
const forbidden = statement.match(/^(?<subject>.+?)\s+(?:must|shall|should)\s+never\s+(?<verb>use|import|call|read|throw)\s+(?<values>.+?)\.?$/i);
|
|
119
|
+
if (forbidden?.groups?.subject &&
|
|
120
|
+
forbidden.groups.verb &&
|
|
121
|
+
forbidden.groups.values) {
|
|
122
|
+
const values = splitValues(forbidden.groups.values);
|
|
123
|
+
const property = NEVER_VERBS[forbidden.groups.verb.toLowerCase()];
|
|
124
|
+
if (property !== undefined &&
|
|
125
|
+
values.length > 0 &&
|
|
126
|
+
values.every((value) => IDENTIFIER.test(value)))
|
|
127
|
+
return suggestion(payload, forbidden, {
|
|
128
|
+
subject_key: normalizeSubjectKey(forbidden.groups.subject),
|
|
129
|
+
property_key: property,
|
|
130
|
+
operator: "excludes",
|
|
131
|
+
value_type: "set",
|
|
132
|
+
value_set: values,
|
|
133
|
+
}, "Something the code must never use is a set fact with operator excludes; a source proof reads every reference the code makes (imports, calls, environment variables) and checks none is listed.", 0.84, `never ${forbidden.groups.verb} ${forbidden.groups.values}`);
|
|
134
|
+
}
|
|
135
|
+
const exactly = statement.match(/^(?<subject>.+?)\s+(?:must|shall|should)\s+(?:be|contain|list|declare|have|provide)\s+exactly\s+(?:the\s+[\w-]+\s+)?(?<values>.+?)\.?$/i);
|
|
136
|
+
if (exactly?.groups?.subject && exactly.groups.values) {
|
|
137
|
+
const values = splitValues(exactly.groups.values);
|
|
138
|
+
if (values.length > 0 && values.every((value) => IDENTIFIER.test(value)))
|
|
139
|
+
return suggestion(payload, exactly, {
|
|
140
|
+
subject_key: normalizeSubjectKey(exactly.groups.subject),
|
|
141
|
+
property_key: "members",
|
|
142
|
+
operator: "eq",
|
|
143
|
+
value_type: "set",
|
|
144
|
+
value_set: values,
|
|
145
|
+
}, "Members a set must have exactly are a set fact with operator eq; a source proof reads the members from the project (json or yaml keys, glob matches) and compares the whole set.", 0.84, `exactly ${exactly.groups.values}`);
|
|
146
|
+
}
|
|
147
|
+
const atLeast = statement.match(/^(?<subject>.+?)\s+(?:must|shall|should)\s+(?:always\s+)?(?:include|contain|list|declare)\s+at\s+least\s+(?<values>.+?)\.?$/i);
|
|
148
|
+
if (atLeast?.groups?.subject && atLeast.groups.values) {
|
|
149
|
+
const values = splitValues(atLeast.groups.values);
|
|
150
|
+
if (values.length > 0 && values.every((value) => IDENTIFIER.test(value)))
|
|
151
|
+
return suggestion(payload, atLeast, {
|
|
152
|
+
subject_key: normalizeSubjectKey(atLeast.groups.subject),
|
|
153
|
+
property_key: "members",
|
|
154
|
+
operator: "includes",
|
|
155
|
+
value_type: "set",
|
|
156
|
+
value_set: values,
|
|
157
|
+
}, "Members a set must contain are a set fact with operator includes; a source proof reads the members from the project.", 0.84, `at least ${atLeast.groups.values}`);
|
|
158
|
+
}
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
6
161
|
// implements REQ-mcp-semantic-advisor-preflight
|
|
7
162
|
export function detectStrictSuggestion(payload, statement) {
|
|
8
163
|
const expiry = statement.match(/^(?<subject>.+?)\s+expir(?:e|es)\s+after\s+(?<value>\d+)\s+(?<unit>days?|months?|years?|hours?|minutes?)\.?$/i);
|
|
@@ -87,20 +242,95 @@ export function detectStrictSuggestion(payload, statement) {
|
|
|
87
242
|
unit,
|
|
88
243
|
}, "Retention duration is a scalar strict property and can participate in contradiction checks.", 0.92, `retained for ${retention.groups.value} ${retention.groups.unit}`);
|
|
89
244
|
}
|
|
245
|
+
// "Every currency in GBP, ILS and ZAR must fail closed": every member of
|
|
246
|
+
// the set must have the property, which names the fact. The operator is
|
|
247
|
+
// includes, not eq: other members may have the property too, so two such
|
|
248
|
+
// claims over different sets agree. A rule certificate over the property's
|
|
249
|
+
// predicate, or an exhaustive one whose per-member check is the property,
|
|
250
|
+
// proves it.
|
|
251
|
+
const everyMember = statement.match(/^(?:every|each|all)\s+(?<subject>.+?)\s+in\s+(?<values>.+?)\s+(?:must|shall|should)\s+(?<predicate>.+?)\.?$/i);
|
|
252
|
+
if (everyMember?.groups?.subject &&
|
|
253
|
+
everyMember.groups.values &&
|
|
254
|
+
everyMember.groups.predicate) {
|
|
255
|
+
const values = everyMember.groups.values
|
|
256
|
+
.split(/,|\band\b|\bor\b/i)
|
|
257
|
+
.map((value) => value.trim())
|
|
258
|
+
.filter(Boolean);
|
|
259
|
+
const property = normalizeKey(everyMember.groups.predicate)
|
|
260
|
+
.split("_")
|
|
261
|
+
.slice(0, 6)
|
|
262
|
+
.join("_");
|
|
263
|
+
if (values.length > 1 && property !== "")
|
|
264
|
+
return suggestion(payload, everyMember, {
|
|
265
|
+
subject_key: normalizeSubjectKey(everyMember.groups.subject),
|
|
266
|
+
property_key: property,
|
|
267
|
+
operator: "includes",
|
|
268
|
+
value_type: "set",
|
|
269
|
+
value_set: [...new Set(values)].sort(),
|
|
270
|
+
}, `A claim that every member of a closed set has a property is a set fact named for the property (${property}) with operator includes: every member of its value must have the property, and other members may have it too. An exhaustive proof binds to it when its domain is that set and its per-member check is the property.`, 0.84, `in ${everyMember.groups.values}`);
|
|
271
|
+
}
|
|
272
|
+
// implements REQ-kibi-non-numeric-proof-kinds
|
|
273
|
+
const pattern = statement.match(/^(?<subject>.+?)\s+(?:must|shall|should)\s+(?:always\s+)?match\s+(?:the\s+(?:pattern|regular\s+expression|regex)\s+)?(?:`(?<tick>[^`]+)`|\/(?<slash>.+)\/)\.?$/i);
|
|
274
|
+
const patternSource = pattern?.groups?.tick ?? pattern?.groups?.slash;
|
|
275
|
+
if (pattern?.groups?.subject && patternSource) {
|
|
276
|
+
return suggestion(payload, pattern, {
|
|
277
|
+
subject_key: normalizeSubjectKey(pattern.groups.subject),
|
|
278
|
+
property_key: "format",
|
|
279
|
+
operator: "matches",
|
|
280
|
+
value_type: "string",
|
|
281
|
+
value_string: patternSource,
|
|
282
|
+
}, "A required format is a string fact with operator matches; a regex proof decides whether the code's pattern accepts exactly these strings.", 0.86, `match ${patternSource}`);
|
|
283
|
+
}
|
|
284
|
+
const exactString = statement.match(/^(?<subject>.+?)\s+(?:must|shall|should)\s+(?:always\s+)?be\s+`(?<value>[^`]+)`\.?$/i);
|
|
285
|
+
if (exactString?.groups?.subject && exactString.groups.value) {
|
|
286
|
+
return suggestion(payload, exactString, {
|
|
287
|
+
subject_key: normalizeSubjectKey(exactString.groups.subject),
|
|
288
|
+
property_key: "value",
|
|
289
|
+
operator: "eq",
|
|
290
|
+
value_type: "string",
|
|
291
|
+
value_string: exactString.groups.value,
|
|
292
|
+
}, "An exact quoted value is a string fact; a regex proof checks the code's constant against it.", 0.86, `be ${exactString.groups.value}`);
|
|
293
|
+
}
|
|
294
|
+
const sourceShape = detectSourceShape(payload, statement);
|
|
295
|
+
if (sourceShape !== null)
|
|
296
|
+
return sourceShape;
|
|
297
|
+
// implements REQ-kibi-non-numeric-proof-kinds
|
|
90
298
|
const enumSet = statement.match(/^(?<subject>.+?)\s+(?:must|shall|should)\s+be\s+one\s+of\s+(?<values>.+?)\.?$/i);
|
|
91
299
|
if (enumSet?.groups?.subject && enumSet.groups.values) {
|
|
92
300
|
const values = enumSet.groups.values
|
|
93
301
|
.split(/,|\bor\b/i)
|
|
94
302
|
.map((value) => value.trim())
|
|
95
303
|
.filter(Boolean);
|
|
304
|
+
// A machine's transitions ("draft -> sent") or its initial, terminal
|
|
305
|
+
// (final) or reachable states name the projection a state_machine
|
|
306
|
+
// proof checks.
|
|
307
|
+
const machine = enumSet.groups.subject.match(/^(?<base>.+?)\s+(?<projection>transitions|(?:initial|terminal|final|reachable)\s+states)$/i);
|
|
308
|
+
const projection = machine?.groups?.projection
|
|
309
|
+
?.toLowerCase()
|
|
310
|
+
.replace(/^final/, "terminal")
|
|
311
|
+
.replace(/\s+/, "_");
|
|
312
|
+
if (machine?.groups?.base &&
|
|
313
|
+
projection !== undefined &&
|
|
314
|
+
values.length > 0 &&
|
|
315
|
+
(projection !== "transitions" ||
|
|
316
|
+
values.every((value) => /->|\u2192/.test(value))))
|
|
317
|
+
return suggestion(payload, enumSet, {
|
|
318
|
+
subject_key: normalizeSubjectKey(machine.groups.base),
|
|
319
|
+
property_key: projection,
|
|
320
|
+
operator: "eq",
|
|
321
|
+
value_type: "set",
|
|
322
|
+
value_set: [
|
|
323
|
+
...new Set(values.map((value) => value.replace(/\s*(?:->|\u2192)\s*/, "->"))),
|
|
324
|
+
].sort(),
|
|
325
|
+
}, "A state machine's transitions or states are a set fact named after the projection; a state_machine proof checks the code's machine against it.", 0.86, `one of ${enumSet.groups.values}`);
|
|
96
326
|
if (values.length > 1)
|
|
97
327
|
return suggestion(payload, enumSet, {
|
|
98
328
|
subject_key: normalizeSubjectKey(enumSet.groups.subject),
|
|
99
329
|
property_key: "allowed_values",
|
|
100
330
|
operator: "eq",
|
|
101
|
-
value_type: "
|
|
102
|
-
|
|
103
|
-
}, "Allowed enum sets are explicit
|
|
331
|
+
value_type: "set",
|
|
332
|
+
value_set: [...new Set(values)].sort(),
|
|
333
|
+
}, "Allowed enum sets are explicit set values and should not remain prose-only; an exhaustive or typecheck proof can bind to the set.", 0.86, `one of ${enumSet.groups.values}`);
|
|
104
334
|
}
|
|
105
335
|
return detectCountStrictSuggestion(payload, statement);
|
|
106
336
|
}
|
|
@@ -58,9 +58,10 @@ export interface SemanticAmbiguityWitness {
|
|
|
58
58
|
export interface SemanticStrictPropertyClaim {
|
|
59
59
|
readonly subject_key: string;
|
|
60
60
|
readonly property_key: string;
|
|
61
|
-
readonly operator: "eq" | "neq" | "lt" | "lte" | "gt" | "gte";
|
|
62
|
-
readonly value_type: "string" | "int" | "number" | "bool";
|
|
61
|
+
readonly operator: "eq" | "neq" | "lt" | "lte" | "gt" | "gte" | "matches" | "includes" | "subset_of" | "excludes";
|
|
62
|
+
readonly value_type: "string" | "int" | "number" | "bool" | "set";
|
|
63
63
|
readonly value_string?: string;
|
|
64
|
+
readonly value_set?: readonly string[];
|
|
64
65
|
readonly value_int?: number;
|
|
65
66
|
readonly value_number?: number;
|
|
66
67
|
readonly value_bool?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/operations/semantic-advisor/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/operations/semantic-advisor/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export declare const qualifiedSourceAnalyzers: readonly [{
|
|
2
2
|
readonly packageName: "kibi-plugin-treesitter";
|
|
3
|
-
readonly version: "2.0.
|
|
3
|
+
readonly version: "2.0.2";
|
|
4
4
|
readonly files: {
|
|
5
|
-
readonly "SBOM.spdx.json": "
|
|
5
|
+
readonly "SBOM.spdx.json": "8027fb0c6b5a9f6f325d6aa836b87c1cddf580df4cfd4c25310bc83c2173de50";
|
|
6
6
|
readonly "THIRD_PARTY_NOTICES.md": "0b1ede96cb261dab73fd1ec8c51d7bb5b2492eed0502f6c10ed071736daa263c";
|
|
7
7
|
readonly "assets/queries/bash.scm": "6ca535e8fe652b51203ac272831881dab001f7ac508e50551bc2cdc4a15d7b6c";
|
|
8
8
|
readonly "assets/queries/c.scm": "774ca67cfe23b0e0d1d3a4f01788049a822beb1311feee72b20a595a37be1e28";
|
|
@@ -32,13 +32,13 @@ export declare const qualifiedSourceAnalyzers: readonly [{
|
|
|
32
32
|
readonly "assets/tree-sitter-ruby.wasm": "09a96427d7c72f0613ed470cd9812223fc4a91d6a9c025c0235cc6bd59ff96f4";
|
|
33
33
|
readonly "assets/tree-sitter-rust.wasm": "f65f354215611fd94ad34134b3427eb3d58cbb745df7b6509ba722184db73d57";
|
|
34
34
|
readonly "assets/tree-sitter-terraform.release.wasm": "59dbcbb0f08eb78b78f37510834559a48ce5c9d4866c978d62c6390796461cb5";
|
|
35
|
-
readonly "catalog.json": "
|
|
36
|
-
readonly "dist/analysis-worker.js": "
|
|
35
|
+
readonly "catalog.json": "585a67f97fbc352f45ebfc628db71ad9f9bd504f1c0b63dfa0f1859a98e9ec02";
|
|
36
|
+
readonly "dist/analysis-worker.js": "e62a7aac822837c584b7071d86b04defdbf6e6c40db981beac863672b0f5bb6f";
|
|
37
37
|
readonly "dist/catalog.js": "460243c48cb6a03b8c7971273729d8a1134955186978b6c0d04182c71960ebff";
|
|
38
38
|
readonly "dist/extractor.js": "1d8cd819e7ec8fcc291a44e5ffe4ccfe77099301677913fcfe0d92e7ce971f33";
|
|
39
39
|
readonly "dist/index.js": "adc03d77d94c0133b3188950b35f79db19e447cf7bfa1f7e1cf1f5c97a582a44";
|
|
40
40
|
readonly "dist/performance-timing.js": "56cce530f627c8fd079e8ec070322f84378ae50c40a6765d88b418850692940b";
|
|
41
|
-
readonly "integrity.json": "
|
|
41
|
+
readonly "integrity.json": "34b40e997aad777c888ab12a616c2d55423b29c7c54203678edaad055506a347";
|
|
42
42
|
readonly "licenses/tree-sitter-bash-MIT.txt": "49bf33cf78ef5897e4e161ce1517df7de1ae5042a65b6bcfd44401e0fc606559";
|
|
43
43
|
readonly "licenses/tree-sitter-c-MIT.txt": "2e0110e07abef7c2548b26ec9d6969775617ca539a0dc8dbeeb14d6452c711d1";
|
|
44
44
|
readonly "licenses/tree-sitter-c-sharp-MIT.txt": "778fb7d63b8c1844da315648c02f325c4713a6f4a5d19644fd413421422776d3";
|
|
@@ -51,7 +51,7 @@ export declare const qualifiedSourceAnalyzers: readonly [{
|
|
|
51
51
|
readonly "licenses/tree-sitter-ruby-MIT.txt": "9c99b99e93d3c6461bef9f6bac45d17b8bf014172625c24f76319bbd235a7b80";
|
|
52
52
|
readonly "licenses/tree-sitter-rust-MIT.txt": "31d5b6f4243d5c7c6e1c4ebbbb9f6407bd1457a08bcc4f706521710341acba36";
|
|
53
53
|
readonly "licenses/web-tree-sitter-MIT.txt": "c5cfb43042b6b72045f4ba997834d0a7786d2793d91680868b5815b39f14fc78";
|
|
54
|
-
readonly "package.json": "
|
|
54
|
+
readonly "package.json": "74a2fbbbde092f1c01eebcf5f8e98789e4b6a55b8464a1fc6bbc9767c6a80042";
|
|
55
55
|
};
|
|
56
56
|
readonly dependencies: readonly [{
|
|
57
57
|
readonly packageName: "web-tree-sitter";
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
export const qualifiedSourceAnalyzers = [
|
|
5
5
|
{
|
|
6
6
|
packageName: "kibi-plugin-treesitter",
|
|
7
|
-
version: "2.0.
|
|
7
|
+
version: "2.0.2",
|
|
8
8
|
files: {
|
|
9
|
-
"SBOM.spdx.json": "
|
|
9
|
+
"SBOM.spdx.json": "8027fb0c6b5a9f6f325d6aa836b87c1cddf580df4cfd4c25310bc83c2173de50",
|
|
10
10
|
"THIRD_PARTY_NOTICES.md": "0b1ede96cb261dab73fd1ec8c51d7bb5b2492eed0502f6c10ed071736daa263c",
|
|
11
11
|
"assets/queries/bash.scm": "6ca535e8fe652b51203ac272831881dab001f7ac508e50551bc2cdc4a15d7b6c",
|
|
12
12
|
"assets/queries/c.scm": "774ca67cfe23b0e0d1d3a4f01788049a822beb1311feee72b20a595a37be1e28",
|
|
@@ -36,13 +36,13 @@ export const qualifiedSourceAnalyzers = [
|
|
|
36
36
|
"assets/tree-sitter-ruby.wasm": "09a96427d7c72f0613ed470cd9812223fc4a91d6a9c025c0235cc6bd59ff96f4",
|
|
37
37
|
"assets/tree-sitter-rust.wasm": "f65f354215611fd94ad34134b3427eb3d58cbb745df7b6509ba722184db73d57",
|
|
38
38
|
"assets/tree-sitter-terraform.release.wasm": "59dbcbb0f08eb78b78f37510834559a48ce5c9d4866c978d62c6390796461cb5",
|
|
39
|
-
"catalog.json": "
|
|
40
|
-
"dist/analysis-worker.js": "
|
|
39
|
+
"catalog.json": "585a67f97fbc352f45ebfc628db71ad9f9bd504f1c0b63dfa0f1859a98e9ec02",
|
|
40
|
+
"dist/analysis-worker.js": "e62a7aac822837c584b7071d86b04defdbf6e6c40db981beac863672b0f5bb6f",
|
|
41
41
|
"dist/catalog.js": "460243c48cb6a03b8c7971273729d8a1134955186978b6c0d04182c71960ebff",
|
|
42
42
|
"dist/extractor.js": "1d8cd819e7ec8fcc291a44e5ffe4ccfe77099301677913fcfe0d92e7ce971f33",
|
|
43
43
|
"dist/index.js": "adc03d77d94c0133b3188950b35f79db19e447cf7bfa1f7e1cf1f5c97a582a44",
|
|
44
44
|
"dist/performance-timing.js": "56cce530f627c8fd079e8ec070322f84378ae50c40a6765d88b418850692940b",
|
|
45
|
-
"integrity.json": "
|
|
45
|
+
"integrity.json": "34b40e997aad777c888ab12a616c2d55423b29c7c54203678edaad055506a347",
|
|
46
46
|
"licenses/tree-sitter-bash-MIT.txt": "49bf33cf78ef5897e4e161ce1517df7de1ae5042a65b6bcfd44401e0fc606559",
|
|
47
47
|
"licenses/tree-sitter-c-MIT.txt": "2e0110e07abef7c2548b26ec9d6969775617ca539a0dc8dbeeb14d6452c711d1",
|
|
48
48
|
"licenses/tree-sitter-c-sharp-MIT.txt": "778fb7d63b8c1844da315648c02f325c4713a6f4a5d19644fd413421422776d3",
|
|
@@ -55,7 +55,7 @@ export const qualifiedSourceAnalyzers = [
|
|
|
55
55
|
"licenses/tree-sitter-ruby-MIT.txt": "9c99b99e93d3c6461bef9f6bac45d17b8bf014172625c24f76319bbd235a7b80",
|
|
56
56
|
"licenses/tree-sitter-rust-MIT.txt": "31d5b6f4243d5c7c6e1c4ebbbb9f6407bd1457a08bcc4f706521710341acba36",
|
|
57
57
|
"licenses/web-tree-sitter-MIT.txt": "c5cfb43042b6b72045f4ba997834d0a7786d2793d91680868b5815b39f14fc78",
|
|
58
|
-
"package.json": "
|
|
58
|
+
"package.json": "74a2fbbbde092f1c01eebcf5f8e98789e4b6a55b8464a1fc6bbc9767c6a80042",
|
|
59
59
|
},
|
|
60
60
|
dependencies: [
|
|
61
61
|
{
|
package/dist/prolog.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prolog.d.ts","sourceRoot":"","sources":["../src/prolog.ts"],"names":[],"mappings":"AA2BA,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,KAAK,aAAa,EAGnB,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"prolog.d.ts","sourceRoot":"","sources":["../src/prolog.ts"],"names":[],"mappings":"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"}
|
package/dist/prolog.js
CHANGED
|
@@ -31,6 +31,15 @@ const importMetaDir = path.dirname(fileURLToPath(import.meta.url));
|
|
|
31
31
|
const DEFAULT_PROLOG_OUTPUT_MAX_BUFFER_BYTES = 8 * 1024 * 1024;
|
|
32
32
|
const PROLOG_OUTPUT_OVERFLOW_ERROR = "Query exceeded bounded Prolog output capacity (ENOBUFS); narrow the operation or reduce stored entity size";
|
|
33
33
|
const INTERACTIVE_QUERY_FRAME_END = "__KIBI_QUERY_FRAME_END__";
|
|
34
|
+
/**
|
|
35
|
+
* Everything SWI prints for the frame goal: the marker, then the toplevel's
|
|
36
|
+
* own answer to `writeln/1`. That answer arrives in later writes, so a frame
|
|
37
|
+
* counts as complete only once it has been read too. A query resolved on the
|
|
38
|
+
* marker alone left those bytes in flight while its caller answered over a
|
|
39
|
+
* socket, and Bun can then drop the pipe's one-shot readiness event and
|
|
40
|
+
* never read the Prolog child again.
|
|
41
|
+
*/
|
|
42
|
+
const INTERACTIVE_QUERY_FRAME_TERMINATOR = `${INTERACTIVE_QUERY_FRAME_END}\ntrue.\n\n`;
|
|
34
43
|
const require = createRequire(import.meta.url);
|
|
35
44
|
export function resolveKbPlPath() {
|
|
36
45
|
// implements REQ-009
|
|
@@ -402,7 +411,7 @@ export class PrologProcess {
|
|
|
402
411
|
});
|
|
403
412
|
return;
|
|
404
413
|
}
|
|
405
|
-
const frameEnd = this.outputBuffer.indexOf(
|
|
414
|
+
const frameEnd = this.outputBuffer.indexOf(INTERACTIVE_QUERY_FRAME_TERMINATOR);
|
|
406
415
|
if (frameEnd >= 0) {
|
|
407
416
|
settle();
|
|
408
417
|
const framedOutput = this.outputBuffer.slice(0, frameEnd).trimEnd();
|
|
@@ -454,8 +463,9 @@ export class PrologProcess {
|
|
|
454
463
|
const wake = () => {
|
|
455
464
|
if (settled)
|
|
456
465
|
return;
|
|
457
|
-
const found = this.outputBuffer.indexOf(
|
|
458
|
-
frameScanFrom = Math.max(0, this.outputBuffer.length -
|
|
466
|
+
const found = this.outputBuffer.indexOf(INTERACTIVE_QUERY_FRAME_TERMINATOR, frameScanFrom) >= 0;
|
|
467
|
+
frameScanFrom = Math.max(0, this.outputBuffer.length -
|
|
468
|
+
INTERACTIVE_QUERY_FRAME_TERMINATOR.length);
|
|
459
469
|
if (found || this.outputOverflowed)
|
|
460
470
|
checkResult();
|
|
461
471
|
};
|
|
@@ -61,9 +61,10 @@ export declare function proofTestReportPath(artifactPath: string): string;
|
|
|
61
61
|
export declare function parseProofTestReport(value: unknown, selectedTestIds: readonly string[]): ReadonlyMap<string, ProofTestReportEntry>;
|
|
62
62
|
/**
|
|
63
63
|
* Decide how a finished command run is attributed. `per_test` partitions the
|
|
64
|
-
* selected tests by their own outcome
|
|
65
|
-
*
|
|
66
|
-
*
|
|
64
|
+
* selected tests by their own outcome whenever a valid report was read, a
|
|
65
|
+
* fully passing one included; `aggregate` keeps the historical whole-run
|
|
66
|
+
* semantics (and is always the answer for a passing process without a
|
|
67
|
+
* report, so a fully green run without a report stays byte-identical).
|
|
67
68
|
*/
|
|
68
69
|
export declare function attributeCommandRun(input: {
|
|
69
70
|
readonly selectedTestIds: readonly string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-test-report.d.ts","sourceRoot":"","sources":["../../src/proof/command-test-report.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;GAYG;AAGH,eAAO,MAAM,yBAAyB,EAAG,2BAAoC,CAAC;AAE9E,8EAA8E;AAE9E,eAAO,MAAM,qBAAqB,EAAG,wBAAiC,CAAC;AAGvE,eAAO,MAAM,0BAA0B,sEAM7B,CAAC;AAGX,MAAM,MAAM,sBAAsB,GAChC,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC;AAG9C,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC,CAAC;AAGH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,sBAAsB,CAAC;IAChC,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACvC,CAAC,CAAC;AAEH,kEAAkE;AAElE,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC,CAAC;AAEH,6EAA6E;AAE7E,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACvC,OAAO,EAAE,sBAAsB,CAAC;IAChC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;CACzC,CAAC,CAAC;AAGH,MAAM,MAAM,mBAAmB,GAC3B,QAAQ,CAAC;IACP,WAAW,EAAE,UAAU,CAAC;IACxB,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACzC,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;CACzC,CAAC,GACF,QAAQ,CAAC;IACP,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;CACzC,CAAC,CAAC;AAEP,qEAAqE;AAErE,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAIhE;AA+BD;;;;GAIG;AAEH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EACd,eAAe,EAAE,SAAS,MAAM,EAAE,GACjC,WAAW,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAoD3C;AAqBD
|
|
1
|
+
{"version":3,"file":"command-test-report.d.ts","sourceRoot":"","sources":["../../src/proof/command-test-report.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;GAYG;AAGH,eAAO,MAAM,yBAAyB,EAAG,2BAAoC,CAAC;AAE9E,8EAA8E;AAE9E,eAAO,MAAM,qBAAqB,EAAG,wBAAiC,CAAC;AAGvE,eAAO,MAAM,0BAA0B,sEAM7B,CAAC;AAGX,MAAM,MAAM,sBAAsB,GAChC,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC;AAG9C,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC,CAAC;AAGH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,sBAAsB,CAAC;IAChC,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACvC,CAAC,CAAC;AAEH,kEAAkE;AAElE,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC,CAAC;AAEH,6EAA6E;AAE7E,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACvC,OAAO,EAAE,sBAAsB,CAAC;IAChC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;CACzC,CAAC,CAAC;AAGH,MAAM,MAAM,mBAAmB,GAC3B,QAAQ,CAAC;IACP,WAAW,EAAE,UAAU,CAAC;IACxB,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACzC,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;CACzC,CAAC,GACF,QAAQ,CAAC;IACP,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;CACzC,CAAC,CAAC;AAEP,qEAAqE;AAErE,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAIhE;AA+BD;;;;GAIG;AAEH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EACd,eAAe,EAAE,SAAS,MAAM,EAAE,GACjC,WAAW,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAoD3C;AAqBD;;;;;;GAMG;AAEH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B,GAAG,mBAAmB,CAwDtB"}
|
|
@@ -138,9 +138,10 @@ function failedStepsOf(entries) {
|
|
|
138
138
|
}
|
|
139
139
|
/**
|
|
140
140
|
* Decide how a finished command run is attributed. `per_test` partitions the
|
|
141
|
-
* selected tests by their own outcome
|
|
142
|
-
*
|
|
143
|
-
*
|
|
141
|
+
* selected tests by their own outcome whenever a valid report was read, a
|
|
142
|
+
* fully passing one included; `aggregate` keeps the historical whole-run
|
|
143
|
+
* semantics (and is always the answer for a passing process without a
|
|
144
|
+
* report, so a fully green run without a report stays byte-identical).
|
|
144
145
|
*/
|
|
145
146
|
// implements REQ-kibi-fresh-verification-receipts-v2
|
|
146
147
|
export function attributeCommandRun(input) {
|
|
@@ -174,13 +175,6 @@ export function attributeCommandRun(input) {
|
|
|
174
175
|
failedSteps,
|
|
175
176
|
};
|
|
176
177
|
}
|
|
177
|
-
if (failing.length === 0) {
|
|
178
|
-
return {
|
|
179
|
-
attribution: "aggregate",
|
|
180
|
-
reason: "the integration passed",
|
|
181
|
-
failedSteps,
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
178
|
const groups = new Map();
|
|
185
179
|
for (const testId of selectedTestIds) {
|
|
186
180
|
const entry = entries.get(testId);
|