kibi-cli 0.16.1 → 0.17.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/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +1 -1
- package/dist/commands/sync/manifest.d.ts +12 -1
- package/dist/commands/sync/manifest.d.ts.map +1 -1
- package/dist/commands/sync/manifest.js +22 -5
- package/dist/commands/sync/persistence.d.ts.map +1 -1
- package/dist/commands/sync/persistence.js +18 -1
- package/dist/extractors/markdown.d.ts +9 -1
- package/dist/extractors/markdown.d.ts.map +1 -1
- package/dist/extractors/markdown.js +12 -0
- package/dist/logic/ir.d.ts +112 -0
- package/dist/logic/ir.d.ts.map +1 -0
- package/dist/logic/ir.js +729 -0
- package/dist/operations/modeling/logic-modeling.d.ts +22 -0
- package/dist/operations/modeling/logic-modeling.d.ts.map +1 -0
- package/dist/operations/modeling/logic-modeling.js +111 -0
- package/dist/operations/modeling/model-requirement.d.ts.map +1 -1
- package/dist/operations/modeling/model-requirement.js +56 -0
- package/dist/operations/modeling/predicate-applyplan.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-applyplan.js +15 -2
- package/dist/operations/modeling/predicate-inference.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-inference.js +17 -2
- package/dist/operations/modeling/predicate-loader.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-loader.js +6 -0
- package/dist/operations/modeling/predicate-ranker.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-ranker.js +40 -2
- package/dist/operations/modeling/predicate-types.d.ts +3 -0
- package/dist/operations/modeling/predicate-types.d.ts.map +1 -1
- package/dist/operations/modeling/requirement-types.d.ts +12 -0
- package/dist/operations/modeling/requirement-types.d.ts.map +1 -1
- package/dist/operations/mutation/relationships.d.ts.map +1 -1
- package/dist/operations/mutation/relationships.js +8 -0
- package/dist/operations/mutation/serialization.d.ts.map +1 -1
- package/dist/operations/mutation/serialization.js +3 -0
- package/dist/operations/mutation/strict-fact.d.ts.map +1 -1
- package/dist/operations/mutation/strict-fact.js +68 -3
- package/dist/operations/semantic-advisor/analysis-receipt.d.ts +2 -2
- package/dist/operations/semantic-advisor/analysis-receipt.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/analysis-receipt.js +23 -15
- package/dist/operations/semantic-advisor/analyze-prose.d.ts +1 -1
- package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/analyze-prose.js +435 -13
- package/dist/operations/semantic-advisor/observation-plan.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/observation-plan.js +15 -3
- package/dist/operations/semantic-advisor/shared.d.ts +1 -0
- package/dist/operations/semantic-advisor/shared.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/shared.js +1 -1
- package/dist/operations/semantic-advisor/types.d.ts +61 -1
- package/dist/operations/semantic-advisor/types.d.ts.map +1 -1
- package/dist/prolog/codec.d.ts.map +1 -1
- package/dist/prolog/codec.js +11 -1
- package/dist/prolog.d.ts.map +1 -1
- package/dist/prolog.js +7 -2
- package/dist/public/operations/catalog.d.ts +85 -6
- package/dist/public/operations/catalog.d.ts.map +1 -1
- package/dist/public/operations/index.d.ts +1 -0
- package/dist/public/operations/index.d.ts.map +1 -1
- package/dist/public/operations/index.js +1 -0
- package/dist/public/operations/specs/check.d.ts +2 -2
- package/dist/public/operations/specs/check.d.ts.map +1 -1
- package/dist/public/operations/specs/check.js +4 -1
- package/dist/public/operations/specs/modeling.d.ts +16 -0
- package/dist/public/operations/specs/modeling.d.ts.map +1 -1
- package/dist/public/operations/specs/modeling.js +16 -0
- package/dist/public/operations/specs/mutation-schemas.d.ts +37 -2
- package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
- package/dist/public/operations/specs/mutation-schemas.js +27 -0
- package/dist/public/operations/specs/semantic.d.ts +30 -2
- package/dist/public/operations/specs/semantic.d.ts.map +1 -1
- package/dist/public/operations/specs/semantic.js +34 -2
- package/dist/public/operations/specs/upsert.d.ts +37 -2
- package/dist/public/operations/specs/upsert.d.ts.map +1 -1
- package/dist/public/schemas/entity.d.ts.map +1 -1
- package/dist/public/schemas/entity.js +290 -0
- package/dist/public/schemas/relationship.d.ts.map +1 -1
- package/dist/public/schemas/relationship.js +1 -0
- package/dist/public/skills/kibi-usage/SKILL.md +35 -9
- package/dist/public/skills/kibi-usage/resources/fact-lanes.md +11 -1
- package/dist/public/skills/kibi-usage/resources/logic-ir.md +43 -0
- package/dist/public/skills/kibi-usage/resources/operation-access.md +19 -19
- package/dist/public/skills/kibi-usage/resources/ui-requirements.md +96 -0
- package/dist/public/skills/kibi-usage/resources/workflows.md +21 -6
- package/dist/public/symbol-granularity.d.ts +9 -0
- package/dist/public/symbol-granularity.d.ts.map +1 -1
- package/dist/public/symbol-granularity.js +16 -0
- package/dist/schemas/entity.schema.json +306 -3
- package/dist/traceability/staged-diagnostics.d.ts +1 -1
- package/dist/traceability/staged-diagnostics.d.ts.map +1 -1
- package/dist/traceability/staged-diagnostics.js +17 -10
- package/dist/traceability/staged-impact-contract.js +1 -1
- package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
- package/dist/traceability/staged-symbols-manifest.js +28 -10
- package/dist/traceability/temp-kb.d.ts.map +1 -1
- package/dist/traceability/temp-kb.js +13 -0
- package/dist/types/relationships.d.ts +1 -1
- package/dist/types/relationships.d.ts.map +1 -1
- package/dist/utils/rule-registry.d.ts.map +1 -1
- package/dist/utils/rule-registry.js +18 -0
- package/dist/utils/schema-version.d.ts +1 -1
- package/dist/utils/schema-version.js +1 -1
- package/package.json +6 -2
- package/src/public/operations/index.ts +1 -0
- package/src/public/operations/specs/check.ts +4 -1
- package/src/public/operations/specs/modeling.ts +20 -0
- package/src/public/operations/specs/mutation-schemas.ts +30 -0
- package/src/public/operations/specs/semantic.ts +41 -2
- package/src/public/schemas/entity.ts +297 -1
- package/src/public/schemas/relationship.ts +1 -0
- package/src/public/skills/kibi-usage/SKILL.md +35 -9
- package/src/public/skills/kibi-usage/resources/fact-lanes.md +11 -1
- package/src/public/skills/kibi-usage/resources/logic-ir.md +43 -0
- package/src/public/skills/kibi-usage/resources/operation-access.md +19 -19
- package/src/public/skills/kibi-usage/resources/ui-requirements.md +96 -0
- package/src/public/skills/kibi-usage/resources/workflows.md +21 -6
- package/src/public/symbol-granularity.ts +25 -0
- package/src/schemas/entity.schema.json +306 -3
- package/src/schemas/relationship.schema.json +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAkFA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,YAAY,EAAE,SAAS,EAAE,CAAC;AAG1B,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AA2bD,wBAAsB,YAAY,CAChC,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAqW/B"}
|
package/dist/commands/check.js
CHANGED
|
@@ -453,7 +453,7 @@ export async function checkCommand(options) {
|
|
|
453
453
|
symbolsByFile,
|
|
454
454
|
symbolsManifestPath,
|
|
455
455
|
});
|
|
456
|
-
const stagedKibiDiagnostics = collectStagedKibiDiagnostics(stagedKibiEvidence);
|
|
456
|
+
const stagedKibiDiagnostics = collectStagedKibiDiagnostics(stagedKibiEvidence, symbolsManifestPath);
|
|
457
457
|
const activeStagedSymbolEntityIds = new Set(stagedKibiEvidence.mode.kind === "kb_changes"
|
|
458
458
|
? stagedKibiEvidence.mode.kbArtifacts
|
|
459
459
|
.filter((artifact) => artifact.kind === "symbols_manifest")
|
|
@@ -2,6 +2,7 @@ import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
|
2
2
|
import { dump as dumpYAML, load as parseYAML } from "js-yaml";
|
|
3
3
|
import { writeCoordinateArtifact } from "../../extractors/symbol-coordinates.js";
|
|
4
4
|
import { type ManifestSymbolEntry, enrichSymbolCoordinates } from "../../extractors/symbols-coordinator.js";
|
|
5
|
+
import { COARSE_GRANULARITY_REASONS } from "../../public/symbol-granularity.js";
|
|
5
6
|
import { resolveSymbolsManifestPaths } from "../../utils/manifest-paths.js";
|
|
6
7
|
interface ManifestDeps {
|
|
7
8
|
dumpYAML: typeof dumpYAML;
|
|
@@ -14,10 +15,20 @@ interface ManifestDeps {
|
|
|
14
15
|
resolveSymbolsManifestPaths: typeof resolveSymbolsManifestPaths;
|
|
15
16
|
}
|
|
16
17
|
export declare const SYMBOLS_MANIFEST_COMMENT_BLOCK = "# symbols.yaml\n# AUTHORED fields (edit freely):\n# id, title, sourceFile, links, status, tags, owner, priority\n# Generated coordinates are stored separately in symbol-coordinates.yaml.\n# Run `kibi sync --refresh-symbol-coordinates` to refresh them.\n";
|
|
18
|
+
/**
|
|
19
|
+
* Coarse symbol anchors for which per-symbol coordinates are not expected.
|
|
20
|
+
*
|
|
21
|
+
* Test-suite, module-level-behavior, and config-artifact symbols represent a
|
|
22
|
+
* whole file or configuration unit, and `extractor-miss` explicitly documents
|
|
23
|
+
* that the extractor cannot locate a declaration. These entries legitimately
|
|
24
|
+
* carry no generated coordinates, so coordinate refresh counts them as
|
|
25
|
+
* unchanged instead of flagging them as failures.
|
|
26
|
+
*/
|
|
27
|
+
export { COARSE_GRANULARITY_REASONS };
|
|
28
|
+
export declare function isCoarseGranularityAnchor(entry: ManifestSymbolEntry): boolean;
|
|
17
29
|
export declare function refreshManifestCoordinates(manifestPath: string, workspaceRoot: string, deps?: Partial<ManifestDeps> & {
|
|
18
30
|
refreshSymbolCoordinates?: boolean;
|
|
19
31
|
}): Promise<void>;
|
|
20
32
|
export declare function hasAllGeneratedCoordinates(entry: ManifestSymbolEntry): boolean;
|
|
21
33
|
export declare function isEligibleForCoordinateRefresh(sourceFile: string | undefined, workspaceRoot: string, deps?: Partial<ManifestDeps>): boolean;
|
|
22
|
-
export {};
|
|
23
34
|
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/manifest.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAElE,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAEL,uBAAuB,EACxB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,KAAK,mBAAmB,EACxB,uBAAuB,EACxB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,UAAU,YAAY;IACpB,QAAQ,EAAE,OAAO,QAAQ,CAAC;IAC1B,uBAAuB,EAAE,OAAO,uBAAuB,CAAC;IACxD,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,aAAa,EAAE,OAAO,aAAa,CAAC;IACpC,uBAAuB,EAAE,OAAO,uBAAuB,CAAC;IACxD,2BAA2B,EAAE,OAAO,2BAA2B,CAAC;CACjE;AAgBD,eAAO,MAAM,8BAA8B,oQAK1C,CAAC;AAwBF,wBAAsB,0BAA0B,CAE9C,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG;IAAE,wBAAwB,CAAC,EAAE,OAAO,CAAA;CAAE,GACpE,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/manifest.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAElE,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAEL,uBAAuB,EACxB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,KAAK,mBAAmB,EACxB,uBAAuB,EACxB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,0BAA0B,EAE3B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,UAAU,YAAY;IACpB,QAAQ,EAAE,OAAO,QAAQ,CAAC;IAC1B,uBAAuB,EAAE,OAAO,uBAAuB,CAAC;IACxD,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,aAAa,EAAE,OAAO,aAAa,CAAC;IACpC,uBAAuB,EAAE,OAAO,uBAAuB,CAAC;IACxD,2BAA2B,EAAE,OAAO,2BAA2B,CAAC;CACjE;AAgBD,eAAO,MAAM,8BAA8B,oQAK1C,CAAC;AAwBF;;;;;;;;GAQG;AACH,OAAO,EAAE,0BAA0B,EAAE,CAAC;AAEtC,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAG7E;AAED,wBAAsB,0BAA0B,CAE9C,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG;IAAE,wBAAwB,CAAC,EAAE,OAAO,CAAA;CAAE,GACpE,OAAO,CAAC,IAAI,CAAC,CAuIf;AAED,wBAAgB,0BAA0B,CAExC,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAOT;AAED,wBAAgB,8BAA8B,CAE5C,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,aAAa,EAAE,MAAM,EACrB,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAC3B,OAAO,CAUT"}
|
|
@@ -20,6 +20,7 @@ import * as path from "node:path";
|
|
|
20
20
|
import { dump as dumpYAML, load as parseYAML } from "js-yaml";
|
|
21
21
|
import { writeCoordinateArtifact, } from "../../extractors/symbol-coordinates.js";
|
|
22
22
|
import { enrichSymbolCoordinates, } from "../../extractors/symbols-coordinator.js";
|
|
23
|
+
import { COARSE_GRANULARITY_REASONS, isCoarseGranularityReason, } from "../../public/symbol-granularity.js";
|
|
23
24
|
import { resolveSymbolsManifestPaths } from "../../utils/manifest-paths.js";
|
|
24
25
|
function resolveDeps(overrides) {
|
|
25
26
|
return {
|
|
@@ -60,6 +61,20 @@ const GENERATED_MANIFEST_FIELDS = new Set([
|
|
|
60
61
|
...GENERATED_COORD_FIELDS,
|
|
61
62
|
"coordinatesGeneratedAt",
|
|
62
63
|
]);
|
|
64
|
+
/**
|
|
65
|
+
* Coarse symbol anchors for which per-symbol coordinates are not expected.
|
|
66
|
+
*
|
|
67
|
+
* Test-suite, module-level-behavior, and config-artifact symbols represent a
|
|
68
|
+
* whole file or configuration unit, and `extractor-miss` explicitly documents
|
|
69
|
+
* that the extractor cannot locate a declaration. These entries legitimately
|
|
70
|
+
* carry no generated coordinates, so coordinate refresh counts them as
|
|
71
|
+
* unchanged instead of flagging them as failures.
|
|
72
|
+
*/
|
|
73
|
+
export { COARSE_GRANULARITY_REASONS };
|
|
74
|
+
export function isCoarseGranularityAnchor(entry) {
|
|
75
|
+
const reason = entry.granularity_reason;
|
|
76
|
+
return isCoarseGranularityReason(reason);
|
|
77
|
+
}
|
|
63
78
|
export async function refreshManifestCoordinates(
|
|
64
79
|
// implements REQ-003
|
|
65
80
|
manifestPath, workspaceRoot, deps) {
|
|
@@ -127,11 +142,13 @@ manifestPath, workspaceRoot, deps) {
|
|
|
127
142
|
refreshed++;
|
|
128
143
|
continue;
|
|
129
144
|
}
|
|
130
|
-
const
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
?
|
|
134
|
-
:
|
|
145
|
+
const coarseAnchor = isCoarseGranularityAnchor(current);
|
|
146
|
+
const eligible = !coarseAnchor &&
|
|
147
|
+
isEligibleForCoordinateRefresh(typeof current.sourceFile === "string"
|
|
148
|
+
? current.sourceFile
|
|
149
|
+
: typeof previous.sourceFile === "string"
|
|
150
|
+
? previous.sourceFile
|
|
151
|
+
: undefined, workspaceRoot, resolved);
|
|
135
152
|
if (eligible && !hasAllGeneratedCoordinates(current)) {
|
|
136
153
|
failed++;
|
|
137
154
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/persistence.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAEV,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/persistence.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAEV,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA8GrD,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;CACrB;AAmCD,wBAAsB,eAAe,CAEnC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,GACrB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAAC,CA8FvD;AA6BD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,kBAAkB,EAAE,qBAAqB,EAAE,GAC1C,OAAO,CAAC;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAAC,CA+K7D"}
|
|
@@ -40,8 +40,18 @@ const STRING_FIELDS = new Set([
|
|
|
40
40
|
"claim_text",
|
|
41
41
|
"predicate_name",
|
|
42
42
|
"predicate_namespace",
|
|
43
|
+
"rule_hash",
|
|
44
|
+
"rule_schema_id",
|
|
45
|
+
"rule_name",
|
|
46
|
+
"semantic_key",
|
|
47
|
+
]);
|
|
48
|
+
const NUMBER_FIELDS = new Set([
|
|
49
|
+
"value_int",
|
|
50
|
+
"value_number",
|
|
51
|
+
"predicate_arity",
|
|
52
|
+
"claim_span_start",
|
|
53
|
+
"claim_span_end",
|
|
43
54
|
]);
|
|
44
|
-
const NUMBER_FIELDS = new Set(["value_int", "value_number", "predicate_arity"]);
|
|
45
55
|
const BOOLEAN_FIELDS = new Set(["value_bool", "closed_world"]);
|
|
46
56
|
const STRING_ARRAY_FIELDS = new Set([
|
|
47
57
|
"argument_names",
|
|
@@ -66,6 +76,10 @@ function serializeTypedFactFields(entity) {
|
|
|
66
76
|
fields.push(`${field}=${toPrologString(String(value))}`);
|
|
67
77
|
}
|
|
68
78
|
}
|
|
79
|
+
const ruleIr = getEntityField(entity, "rule_ir");
|
|
80
|
+
if (ruleIr !== undefined && ruleIr !== null) {
|
|
81
|
+
fields.push(`rule_ir=${toPrologString(JSON.stringify(ruleIr))}`);
|
|
82
|
+
}
|
|
69
83
|
// Atom fields (possibly unquoted if simple)
|
|
70
84
|
for (const field of ATOM_FIELDS) {
|
|
71
85
|
const value = getEntityField(entity, field);
|
|
@@ -168,6 +182,9 @@ prolog, results, entityIds) {
|
|
|
168
182
|
if (entity.type === "req" && entity.logic_claims) {
|
|
169
183
|
props.push(`logic_claims=[${entity.logic_claims.map(toPrologAtom).join(",")}]`);
|
|
170
184
|
}
|
|
185
|
+
if (entity.type === "req" && entity.semantic_inventory) {
|
|
186
|
+
props.push(`semantic_inventory=${toPrologString(JSON.stringify(entity.semantic_inventory))}`);
|
|
187
|
+
}
|
|
171
188
|
if (sourceFile)
|
|
172
189
|
props.push(`sourceFile=${toPrologString(sourceFile)}`);
|
|
173
190
|
// Add typed fact fields for fact entities
|
|
@@ -21,7 +21,7 @@ export interface ExtractedEntity {
|
|
|
21
21
|
sourceEndColumn?: number;
|
|
22
22
|
verification_scope?: "unit" | "integration" | "end_to_end";
|
|
23
23
|
verification_perspective?: "internal" | "consumer";
|
|
24
|
-
fact_kind?: "subject" | "property_value" | "observation" | "meta" | "predicate_schema" | "predicate";
|
|
24
|
+
fact_kind?: "subject" | "property_value" | "observation" | "meta" | "predicate_schema" | "predicate" | "rule_schema" | "rule";
|
|
25
25
|
subject_key?: string;
|
|
26
26
|
property_key?: string;
|
|
27
27
|
operator?: "eq" | "neq" | "lt" | "lte" | "gt" | "gte";
|
|
@@ -48,6 +48,14 @@ export interface ExtractedEntity {
|
|
|
48
48
|
aliases?: string[];
|
|
49
49
|
examples?: string[];
|
|
50
50
|
predicate_args?: string[];
|
|
51
|
+
rule_ir?: Record<string, unknown>;
|
|
52
|
+
rule_hash?: string;
|
|
53
|
+
rule_schema_id?: string;
|
|
54
|
+
rule_name?: string;
|
|
55
|
+
semantic_key?: string;
|
|
56
|
+
claim_span_start?: number;
|
|
57
|
+
claim_span_end?: number;
|
|
58
|
+
semantic_inventory?: readonly Record<string, unknown>[];
|
|
51
59
|
}
|
|
52
60
|
export interface ExtractedRelationship {
|
|
53
61
|
type: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/extractors/markdown.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/extractors/markdown.ts"],"names":[],"mappings":"AAiFA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,YAAY,CAAC;IAC3D,wBAAwB,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IAEnD,SAAS,CAAC,EACN,SAAS,GACT,gBAAgB,GAChB,aAAa,GACb,MAAM,GACN,kBAAkB,GAClB,WAAW,GACX,aAAa,GACb,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;IACtD,UAAU,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IACpD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACzD;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,eAAe,CAAC;IACxB,aAAa,EAAE,qBAAqB,EAAE,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA8LD,qBAAa,gBAAiB,SAAQ,KAAK;IAOhC,QAAQ,EAAE,MAAM;IANlB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;gBAG5B,OAAO,EAAE,MAAM,EACR,QAAQ,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE;QACR,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB;IAYM,QAAQ;CAUlB;AA8DD,wBAAgB,sBAAsB,CAEpC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,EAAE,MAAM,GACjB,MAAM,EAAE,CAkDV;AA+TD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,gBAAgB,CAElB;AAGD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAatE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASjE;AASD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAQpE"}
|
|
@@ -39,11 +39,18 @@ const FACT_STRING_FIELDS = [
|
|
|
39
39
|
"claim_text",
|
|
40
40
|
"predicate_name",
|
|
41
41
|
"predicate_namespace",
|
|
42
|
+
"rule_ir",
|
|
43
|
+
"rule_hash",
|
|
44
|
+
"rule_schema_id",
|
|
45
|
+
"rule_name",
|
|
46
|
+
"semantic_key",
|
|
42
47
|
];
|
|
43
48
|
const FACT_NUMBER_FIELDS = [
|
|
44
49
|
"value_int",
|
|
45
50
|
"value_number",
|
|
46
51
|
"predicate_arity",
|
|
52
|
+
"claim_span_start",
|
|
53
|
+
"claim_span_end",
|
|
47
54
|
];
|
|
48
55
|
const FACT_BOOLEAN_FIELDS = ["value_bool", "closed_world"];
|
|
49
56
|
const FACT_STRING_ARRAY_FIELDS = [
|
|
@@ -88,6 +95,7 @@ const VALID_RELATIONSHIP_TYPES = new Set([
|
|
|
88
95
|
"constrains",
|
|
89
96
|
"requires_property",
|
|
90
97
|
"requires_predicate",
|
|
98
|
+
"requires_rule",
|
|
91
99
|
"guards",
|
|
92
100
|
"publishes",
|
|
93
101
|
"consumes",
|
|
@@ -108,6 +116,7 @@ const VALID_RELATIONSHIP_DIRECTIONS = [
|
|
|
108
116
|
{ type: "constrains", from: "req", to: "fact" },
|
|
109
117
|
{ type: "requires_property", from: "req", to: "fact" },
|
|
110
118
|
{ type: "requires_predicate", from: "req", to: "fact" },
|
|
119
|
+
{ type: "requires_rule", from: "req", to: "fact" },
|
|
111
120
|
{ type: "guards", from: "flag", to: "symbol" },
|
|
112
121
|
{ type: "guards", from: "flag", to: "event" },
|
|
113
122
|
{ type: "guards", from: "flag", to: "req" },
|
|
@@ -444,6 +453,9 @@ function extractFromMarkdownContent(content, filePath) {
|
|
|
444
453
|
}
|
|
445
454
|
}
|
|
446
455
|
}
|
|
456
|
+
if (type === "req" && Array.isArray(data.semantic_inventory)) {
|
|
457
|
+
entity.semantic_inventory = data.semantic_inventory.filter((value) => isObjectRecord(value));
|
|
458
|
+
}
|
|
447
459
|
if (!validateExtractedEntity(entity)) {
|
|
448
460
|
const messages = (validateExtractedEntity.errors || [])
|
|
449
461
|
.map((e) => `${e.instancePath || "root"}: ${e.message}`)
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/** The only serialized logic language accepted by Kibi. */
|
|
2
|
+
export declare const LOGIC_IR_VERSION: "kibi.logic.v1";
|
|
3
|
+
export declare const LOGIC_RULE_MAX_DEPTH = 16;
|
|
4
|
+
export declare const LOGIC_RULE_MAX_ATOMS = 64;
|
|
5
|
+
export declare const LOGIC_RULE_MAX_VARIABLES = 32;
|
|
6
|
+
export type LogicModality = "assert" | "deny" | "oblige" | "permit" | "forbid";
|
|
7
|
+
export type LogicRuleKind = "atom" | "rule" | "constraint";
|
|
8
|
+
export type LogicVariableQuantifier = "forall" | "exists";
|
|
9
|
+
export type LogicTerm = {
|
|
10
|
+
readonly kind: "var";
|
|
11
|
+
readonly name: string;
|
|
12
|
+
readonly type: string;
|
|
13
|
+
} | {
|
|
14
|
+
readonly kind: "const";
|
|
15
|
+
readonly value: string;
|
|
16
|
+
readonly type?: string;
|
|
17
|
+
} | {
|
|
18
|
+
readonly kind: "number";
|
|
19
|
+
readonly value: number;
|
|
20
|
+
readonly unit?: string;
|
|
21
|
+
} | {
|
|
22
|
+
readonly kind: "duration";
|
|
23
|
+
readonly value: number;
|
|
24
|
+
readonly unit: "ms" | "s" | "m" | "h" | "d" | "w";
|
|
25
|
+
} | {
|
|
26
|
+
readonly kind: "timestamp";
|
|
27
|
+
readonly value: string;
|
|
28
|
+
} | {
|
|
29
|
+
readonly kind: "interval";
|
|
30
|
+
readonly start: string;
|
|
31
|
+
readonly end: string;
|
|
32
|
+
};
|
|
33
|
+
export interface LogicAtom {
|
|
34
|
+
readonly kind: "atom";
|
|
35
|
+
readonly namespace?: string;
|
|
36
|
+
readonly name: string;
|
|
37
|
+
readonly args: readonly LogicTerm[];
|
|
38
|
+
/** Explicit positive/negative information. This is not negation-as-failure. */
|
|
39
|
+
readonly polarity?: "positive" | "negative";
|
|
40
|
+
/** Required when the atom is used beneath `not`. */
|
|
41
|
+
readonly closedWorld?: boolean;
|
|
42
|
+
}
|
|
43
|
+
export type LogicExpression = LogicAtom | {
|
|
44
|
+
readonly kind: "all";
|
|
45
|
+
readonly items: readonly LogicExpression[];
|
|
46
|
+
} | {
|
|
47
|
+
readonly kind: "any";
|
|
48
|
+
readonly items: readonly LogicExpression[];
|
|
49
|
+
} | {
|
|
50
|
+
readonly kind: "not";
|
|
51
|
+
readonly item: LogicAtom;
|
|
52
|
+
} | {
|
|
53
|
+
readonly kind: "compare";
|
|
54
|
+
readonly operator: "eq" | "neq" | "lt" | "lte" | "gt" | "gte";
|
|
55
|
+
readonly left: LogicTerm;
|
|
56
|
+
readonly right: LogicTerm;
|
|
57
|
+
} | {
|
|
58
|
+
readonly kind: "count";
|
|
59
|
+
readonly atom: LogicAtom;
|
|
60
|
+
readonly operator: "eq" | "neq" | "lt" | "lte" | "gt" | "gte";
|
|
61
|
+
readonly value: number;
|
|
62
|
+
} | {
|
|
63
|
+
readonly kind: "temporal";
|
|
64
|
+
readonly relation: "before" | "after" | "during" | "overlaps" | "starts" | "finishes";
|
|
65
|
+
readonly left: LogicTerm;
|
|
66
|
+
readonly right: LogicTerm;
|
|
67
|
+
};
|
|
68
|
+
export interface LogicVariable {
|
|
69
|
+
readonly name: string;
|
|
70
|
+
readonly type: string;
|
|
71
|
+
readonly quantifier?: LogicVariableQuantifier;
|
|
72
|
+
}
|
|
73
|
+
export interface LogicScope {
|
|
74
|
+
readonly authority?: string;
|
|
75
|
+
readonly name?: string;
|
|
76
|
+
readonly tags?: readonly string[];
|
|
77
|
+
}
|
|
78
|
+
export interface LogicRuleIR {
|
|
79
|
+
readonly version: typeof LOGIC_IR_VERSION;
|
|
80
|
+
readonly kind: LogicRuleKind;
|
|
81
|
+
readonly modality: LogicModality;
|
|
82
|
+
readonly head?: LogicAtom;
|
|
83
|
+
readonly body?: LogicExpression;
|
|
84
|
+
readonly variables?: readonly LogicVariable[];
|
|
85
|
+
readonly exceptions?: readonly LogicExpression[];
|
|
86
|
+
readonly scope?: LogicScope;
|
|
87
|
+
readonly validFrom?: string;
|
|
88
|
+
readonly validTo?: string;
|
|
89
|
+
readonly ruleSchemaId?: string;
|
|
90
|
+
}
|
|
91
|
+
export interface LogicValidationResult {
|
|
92
|
+
readonly valid: boolean;
|
|
93
|
+
readonly errors: readonly string[];
|
|
94
|
+
readonly warnings: readonly string[];
|
|
95
|
+
readonly normalized?: LogicRuleIR;
|
|
96
|
+
readonly canonicalJson?: string;
|
|
97
|
+
readonly ruleHash?: string;
|
|
98
|
+
readonly semanticKey?: string;
|
|
99
|
+
readonly renderedProlog?: string;
|
|
100
|
+
}
|
|
101
|
+
/** Canonical JSON is the persistence and semantic-identity boundary. */
|
|
102
|
+
export declare function canonicalLogicJson(ir: LogicRuleIR): string;
|
|
103
|
+
export declare function logicRuleHash(ir: LogicRuleIR): string;
|
|
104
|
+
export declare function logicSemanticKey(ir: LogicRuleIR): string;
|
|
105
|
+
/** Rendered output is an audit preview only; it is never evaluated as source. */
|
|
106
|
+
export declare function renderLogicProlog(ir: LogicRuleIR): string;
|
|
107
|
+
export declare function validateLogicIr(input: unknown): LogicValidationResult;
|
|
108
|
+
export declare function utf8Span(text: string, start: number, end: number): {
|
|
109
|
+
readonly start: number;
|
|
110
|
+
readonly end: number;
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=ir.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ir.d.ts","sourceRoot":"","sources":["../../src/logic/ir.ts"],"names":[],"mappings":"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"}
|