kibi-cli 2.32.0 → 2.36.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.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/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 +23 -5
- 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 +87 -14
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +19 -0
- package/dist/extractors/markdown.d.ts +1 -1
- package/dist/extractors/markdown.d.ts.map +1 -1
- 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/migration/proof-contract-claims.d.ts +23 -10
- package/dist/operations/migration/proof-contract-claims.d.ts.map +1 -1
- package/dist/operations/migration/proof-contract-claims.js +35 -2
- package/dist/operations/migration/schema6.d.ts.map +1 -1
- package/dist/operations/migration/schema6.js +2 -4
- 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/source-authoring.d.ts.map +1 -1
- package/dist/operations/mutation/source-authoring.js +39 -20
- package/dist/operations/proof/claim-bindings.d.ts +18 -0
- package/dist/operations/proof/claim-bindings.d.ts.map +1 -1
- package/dist/operations/proof/claim-bindings.js +157 -4
- package/dist/operations/proof/code-certificates.d.ts +34 -14
- package/dist/operations/proof/code-certificates.d.ts.map +1 -1
- package/dist/operations/proof/code-certificates.js +266 -157
- 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 +3 -0
- package/dist/operations/proof/code-scope.d.ts.map +1 -1
- package/dist/operations/proof/code-scope.js +26 -2
- package/dist/operations/proof/ingest-proof.d.ts.map +1 -1
- package/dist/operations/proof/ingest-proof.js +2 -1
- 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/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 +231 -1
- package/dist/operations/semantic-advisor/types.d.ts +1 -1
- package/dist/operations/semantic-advisor/types.d.ts.map +1 -1
- package/dist/prolog.d.ts.map +1 -1
- package/dist/prolog.js +13 -3
- package/dist/public/operations/catalog.d.ts +156 -13
- package/dist/public/operations/catalog.d.ts.map +1 -1
- package/dist/public/operations/evidence-floor.js +1 -1
- package/dist/public/operations/proof-contract-claims.js +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 +140 -10
- package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
- package/dist/public/operations/specs/mutation-schemas.js +14 -3
- package/dist/public/operations/specs/upsert.d.ts +140 -10
- package/dist/public/operations/specs/upsert.d.ts.map +1 -1
- package/dist/public/proof-certificates.d.ts +75 -1
- package/dist/public/proof-certificates.d.ts.map +1 -1
- package/dist/public/proof-certificates.js +212 -0
- package/dist/public/proof-protocol.d.ts +143 -10
- package/dist/public/proof-protocol.d.ts.map +1 -1
- package/dist/public/proof-protocol.js +301 -16
- package/dist/public/proof-receipt.d.ts +4 -3
- package/dist/public/proof-receipt.d.ts.map +1 -1
- package/dist/public/proof-receipt.js +6 -1
- 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 +21 -1
- package/dist/public/skills/kibi-commit-review/SKILL.md +8 -8
- package/dist/public/skills/kibi-commit-review/resources/staged-gate.md +6 -6
- package/dist/public/skills/kibi-decisions/SKILL.md +5 -2
- package/dist/public/skills/kibi-decisions/resources/decision-records.md +4 -1
- package/dist/public/skills/kibi-freshness/SKILL.md +2 -2
- package/dist/public/skills/kibi-traceability/SKILL.md +3 -2
- package/dist/public/skills/kibi-usage/SKILL.md +5 -3
- package/dist/public/skills/kibi-usage/resources/proof.md +105 -9
- package/dist/report/html-report.css +45 -10
- package/dist/report/html-report.d.ts.map +1 -1
- package/dist/report/html-report.js +74 -17
- package/dist/report/report-view.d.ts +1 -1
- package/dist/report/report-view.d.ts.map +1 -1
- package/dist/report/report-view.js +1 -0
- package/dist/schemas/entity.schema.json +199 -8
- 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/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/types/entities.d.ts +1 -1
- package/dist/types/entities.d.ts.map +1 -1
- package/dist/utils/rule-registry.generated.d.ts +1 -1
- package/dist/utils/rule-registry.generated.js +1 -1
- 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 +3 -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 +2 -2
- package/schema/validation.pl +3 -1
- package/src/public/operations/evidence-floor.ts +1 -1
- package/src/public/operations/proof-contract-claims.ts +1 -1
- package/src/public/operations/specs/modeling.ts +24 -5
- package/src/public/operations/specs/mutation-schemas.ts +14 -3
- package/src/public/proof-certificates.ts +296 -1
- package/src/public/proof-protocol-types.d.ts +54 -2
- package/src/public/proof-protocol.ts +396 -20
- package/src/public/proof-receipt.ts +8 -2
- package/src/public/proof-sources.ts +1656 -0
- package/src/public/schemas/entity.ts +32 -2
- package/src/public/skills/kibi-commit-review/SKILL.md +8 -8
- package/src/public/skills/kibi-commit-review/resources/staged-gate.md +6 -6
- package/src/public/skills/kibi-decisions/SKILL.md +5 -2
- package/src/public/skills/kibi-decisions/resources/decision-records.md +4 -1
- package/src/public/skills/kibi-freshness/SKILL.md +2 -2
- package/src/public/skills/kibi-traceability/SKILL.md +3 -2
- package/src/public/skills/kibi-usage/SKILL.md +5 -3
- package/src/public/skills/kibi-usage/resources/proof.md +105 -9
- package/src/schemas/entity.schema.json +199 -8
- 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":"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,12 +242,87 @@ 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),
|
|
@@ -58,7 +58,7 @@ 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";
|
|
61
|
+
readonly operator: "eq" | "neq" | "lt" | "lte" | "gt" | "gte" | "matches" | "includes" | "subset_of" | "excludes";
|
|
62
62
|
readonly value_type: "string" | "int" | "number" | "bool" | "set";
|
|
63
63
|
readonly value_string?: string;
|
|
64
64
|
readonly value_set?: readonly string[];
|
|
@@ -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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"}
|
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
|
};
|