@mingyuxu/check 0.1.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/README.md +7 -0
- package/dist/critic/critique.d.ts +31 -0
- package/dist/critic/critique.d.ts.map +1 -0
- package/dist/critic/critique.js +68 -0
- package/dist/critic/critique.js.map +1 -0
- package/dist/critic/observe.d.ts +48 -0
- package/dist/critic/observe.d.ts.map +1 -0
- package/dist/critic/observe.js +62 -0
- package/dist/critic/observe.js.map +1 -0
- package/dist/domain/actions.d.ts +67 -0
- package/dist/domain/actions.d.ts.map +1 -0
- package/dist/domain/actions.js +123 -0
- package/dist/domain/actions.js.map +1 -0
- package/dist/domain/invalidation.d.ts +18 -0
- package/dist/domain/invalidation.d.ts.map +1 -0
- package/dist/domain/invalidation.js +44 -0
- package/dist/domain/invalidation.js.map +1 -0
- package/dist/domain/registers.d.ts +45 -0
- package/dist/domain/registers.d.ts.map +1 -0
- package/dist/domain/registers.js +121 -0
- package/dist/domain/registers.js.map +1 -0
- package/dist/domain/view.d.ts +48 -0
- package/dist/domain/view.d.ts.map +1 -0
- package/dist/domain/view.js +70 -0
- package/dist/domain/view.js.map +1 -0
- package/dist/forge/attribution.d.ts +18 -0
- package/dist/forge/attribution.d.ts.map +1 -0
- package/dist/forge/attribution.js +83 -0
- package/dist/forge/attribution.js.map +1 -0
- package/dist/forge/bakeoff.d.ts +35 -0
- package/dist/forge/bakeoff.d.ts.map +1 -0
- package/dist/forge/bakeoff.js +48 -0
- package/dist/forge/bakeoff.js.map +1 -0
- package/dist/forge/contracts.d.ts +67 -0
- package/dist/forge/contracts.d.ts.map +1 -0
- package/dist/forge/contracts.js +70 -0
- package/dist/forge/contracts.js.map +1 -0
- package/dist/forge/evaluate-scenario.d.ts +17 -0
- package/dist/forge/evaluate-scenario.d.ts.map +1 -0
- package/dist/forge/evaluate-scenario.js +93 -0
- package/dist/forge/evaluate-scenario.js.map +1 -0
- package/dist/forge/evaluate.d.ts +25 -0
- package/dist/forge/evaluate.d.ts.map +1 -0
- package/dist/forge/evaluate.js +81 -0
- package/dist/forge/evaluate.js.map +1 -0
- package/dist/forge/feedback.d.ts +21 -0
- package/dist/forge/feedback.d.ts.map +1 -0
- package/dist/forge/feedback.js +41 -0
- package/dist/forge/feedback.js.map +1 -0
- package/dist/forge/reflect.d.ts +35 -0
- package/dist/forge/reflect.d.ts.map +1 -0
- package/dist/forge/reflect.js +72 -0
- package/dist/forge/reflect.js.map +1 -0
- package/dist/forge/scorer.d.ts +67 -0
- package/dist/forge/scorer.d.ts.map +1 -0
- package/dist/forge/scorer.js +99 -0
- package/dist/forge/scorer.js.map +1 -0
- package/dist/forge/trace.d.ts +25 -0
- package/dist/forge/trace.d.ts.map +1 -0
- package/dist/forge/trace.js +51 -0
- package/dist/forge/trace.js.map +1 -0
- package/dist/index.d.ts +78 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/knowledge/loader.d.ts +19 -0
- package/dist/knowledge/loader.d.ts.map +1 -0
- package/dist/knowledge/loader.js +76 -0
- package/dist/knowledge/loader.js.map +1 -0
- package/dist/knowledge/retrieval.d.ts +23 -0
- package/dist/knowledge/retrieval.d.ts.map +1 -0
- package/dist/knowledge/retrieval.js +100 -0
- package/dist/knowledge/retrieval.js.map +1 -0
- package/dist/knowledge/skill.d.ts +22 -0
- package/dist/knowledge/skill.d.ts.map +1 -0
- package/dist/knowledge/skill.js +112 -0
- package/dist/knowledge/skill.js.map +1 -0
- package/dist/knowledge/write.d.ts +35 -0
- package/dist/knowledge/write.d.ts.map +1 -0
- package/dist/knowledge/write.js +84 -0
- package/dist/knowledge/write.js.map +1 -0
- package/dist/manage.d.ts +7 -0
- package/dist/manage.d.ts.map +1 -0
- package/dist/manage.js +36 -0
- package/dist/manage.js.map +1 -0
- package/dist/methods/loader.d.ts +18 -0
- package/dist/methods/loader.d.ts.map +1 -0
- package/dist/methods/loader.js +65 -0
- package/dist/methods/loader.js.map +1 -0
- package/dist/nodes/aggregate.d.ts +2 -0
- package/dist/nodes/aggregate.d.ts.map +1 -0
- package/dist/nodes/aggregate.js +101 -0
- package/dist/nodes/aggregate.js.map +1 -0
- package/dist/nodes/base.d.ts +31 -0
- package/dist/nodes/base.d.ts.map +1 -0
- package/dist/nodes/base.js +44 -0
- package/dist/nodes/base.js.map +1 -0
- package/dist/nodes/cognition.d.ts +2 -0
- package/dist/nodes/cognition.d.ts.map +1 -0
- package/dist/nodes/cognition.js +263 -0
- package/dist/nodes/cognition.js.map +1 -0
- package/dist/nodes/confidence.d.ts +9 -0
- package/dist/nodes/confidence.d.ts.map +1 -0
- package/dist/nodes/confidence.js +19 -0
- package/dist/nodes/confidence.js.map +1 -0
- package/dist/nodes/deliver.d.ts +2 -0
- package/dist/nodes/deliver.d.ts.map +1 -0
- package/dist/nodes/deliver.js +37 -0
- package/dist/nodes/deliver.js.map +1 -0
- package/dist/nodes/evidence.d.ts +2 -0
- package/dist/nodes/evidence.d.ts.map +1 -0
- package/dist/nodes/evidence.js +118 -0
- package/dist/nodes/evidence.js.map +1 -0
- package/dist/nodes/ground.d.ts +2 -0
- package/dist/nodes/ground.d.ts.map +1 -0
- package/dist/nodes/ground.js +22 -0
- package/dist/nodes/ground.js.map +1 -0
- package/dist/nodes/parse.d.ts +2 -0
- package/dist/nodes/parse.d.ts.map +1 -0
- package/dist/nodes/parse.js +72 -0
- package/dist/nodes/parse.js.map +1 -0
- package/dist/nodes/scope.d.ts +4 -0
- package/dist/nodes/scope.d.ts.map +1 -0
- package/dist/nodes/scope.js +63 -0
- package/dist/nodes/scope.js.map +1 -0
- package/dist/nodes/shape.d.ts +2 -0
- package/dist/nodes/shape.d.ts.map +1 -0
- package/dist/nodes/shape.js +111 -0
- package/dist/nodes/shape.js.map +1 -0
- package/dist/ontology/checkskill.d.ts +26 -0
- package/dist/ontology/checkskill.d.ts.map +1 -0
- package/dist/ontology/checkskill.js +89 -0
- package/dist/ontology/checkskill.js.map +1 -0
- package/dist/ontology/functions.d.ts +29 -0
- package/dist/ontology/functions.d.ts.map +1 -0
- package/dist/ontology/functions.js +143 -0
- package/dist/ontology/functions.js.map +1 -0
- package/dist/ontology/loader.d.ts +44 -0
- package/dist/ontology/loader.d.ts.map +1 -0
- package/dist/ontology/loader.js +254 -0
- package/dist/ontology/loader.js.map +1 -0
- package/dist/ontology/runtime-graph.d.ts +22 -0
- package/dist/ontology/runtime-graph.d.ts.map +1 -0
- package/dist/ontology/runtime-graph.js +111 -0
- package/dist/ontology/runtime-graph.js.map +1 -0
- package/dist/ontology/store.d.ts +65 -0
- package/dist/ontology/store.d.ts.map +1 -0
- package/dist/ontology/store.js +179 -0
- package/dist/ontology/store.js.map +1 -0
- package/dist/parsers/exec.d.ts +9 -0
- package/dist/parsers/exec.d.ts.map +1 -0
- package/dist/parsers/exec.js +41 -0
- package/dist/parsers/exec.js.map +1 -0
- package/dist/parsers/runner.d.ts +2 -0
- package/dist/parsers/runner.d.ts.map +1 -0
- package/dist/parsers/runner.js +26 -0
- package/dist/parsers/runner.js.map +1 -0
- package/dist/parsers/store.d.ts +32 -0
- package/dist/parsers/store.d.ts.map +1 -0
- package/dist/parsers/store.js +64 -0
- package/dist/parsers/store.js.map +1 -0
- package/dist/parsers/synthesize.d.ts +26 -0
- package/dist/parsers/synthesize.d.ts.map +1 -0
- package/dist/parsers/synthesize.js +63 -0
- package/dist/parsers/synthesize.js.map +1 -0
- package/dist/planner.d.ts +89 -0
- package/dist/planner.d.ts.map +1 -0
- package/dist/planner.js +785 -0
- package/dist/planner.js.map +1 -0
- package/dist/project.d.ts +4 -0
- package/dist/project.d.ts.map +1 -0
- package/dist/project.js +42 -0
- package/dist/project.js.map +1 -0
- package/dist/scenario-builder.d.ts +56 -0
- package/dist/scenario-builder.d.ts.map +1 -0
- package/dist/scenario-builder.js +366 -0
- package/dist/scenario-builder.js.map +1 -0
- package/dist/schemas/index.d.ts +12 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +8 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/judgment.d.ts +38 -0
- package/dist/schemas/judgment.d.ts.map +1 -0
- package/dist/schemas/judgment.js +45 -0
- package/dist/schemas/judgment.js.map +1 -0
- package/dist/schemas/payloads.d.ts +53 -0
- package/dist/schemas/payloads.d.ts.map +1 -0
- package/dist/schemas/payloads.js +54 -0
- package/dist/schemas/payloads.js.map +1 -0
- package/dist/schemas/result.d.ts +36 -0
- package/dist/schemas/result.d.ts.map +1 -0
- package/dist/schemas/result.js +26 -0
- package/dist/schemas/result.js.map +1 -0
- package/dist/schemas/spec.d.ts +40 -0
- package/dist/schemas/spec.d.ts.map +1 -0
- package/dist/schemas/spec.js +82 -0
- package/dist/schemas/spec.js.map +1 -0
- package/dist/schemas/target.d.ts +28 -0
- package/dist/schemas/target.d.ts.map +1 -0
- package/dist/schemas/target.js +36 -0
- package/dist/schemas/target.js.map +1 -0
- package/dist/schemas/workflow.d.ts +21 -0
- package/dist/schemas/workflow.d.ts.map +1 -0
- package/dist/schemas/workflow.js +100 -0
- package/dist/schemas/workflow.js.map +1 -0
- package/dist/skills/judge-runner.d.ts +2 -0
- package/dist/skills/judge-runner.d.ts.map +1 -0
- package/dist/skills/judge-runner.js +29 -0
- package/dist/skills/judge-runner.js.map +1 -0
- package/dist/skills/judge-synth.d.ts +31 -0
- package/dist/skills/judge-synth.d.ts.map +1 -0
- package/dist/skills/judge-synth.js +87 -0
- package/dist/skills/judge-synth.js.map +1 -0
- package/dist/subagents/worker.d.ts +5 -0
- package/dist/subagents/worker.d.ts.map +1 -0
- package/dist/subagents/worker.js +58 -0
- package/dist/subagents/worker.js.map +1 -0
- package/dist/workflows/context.d.ts +26 -0
- package/dist/workflows/context.d.ts.map +1 -0
- package/dist/workflows/context.js +23 -0
- package/dist/workflows/context.js.map +1 -0
- package/dist/workflows/executor.d.ts +44 -0
- package/dist/workflows/executor.d.ts.map +1 -0
- package/dist/workflows/executor.js +146 -0
- package/dist/workflows/executor.js.map +1 -0
- package/dist/workflows/merge.d.ts +4 -0
- package/dist/workflows/merge.d.ts.map +1 -0
- package/dist/workflows/merge.js +21 -0
- package/dist/workflows/merge.js.map +1 -0
- package/dist/workflows/run.d.ts +20 -0
- package/dist/workflows/run.d.ts.map +1 -0
- package/dist/workflows/run.js +66 -0
- package/dist/workflows/run.js.map +1 -0
- package/knowledge/methods/prose-rule.method.md +21 -0
- package/knowledge/methods/ratio-limit.method.md +31 -0
- package/knowledge/ontology/verification.yaml +268 -0
- package/package.json +36 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export interface OntologyObject {
|
|
2
|
+
name: string;
|
|
3
|
+
key: string;
|
|
4
|
+
ext: boolean;
|
|
5
|
+
properties: Record<string, string>;
|
|
6
|
+
}
|
|
7
|
+
export interface OntologyLink {
|
|
8
|
+
name: string;
|
|
9
|
+
from: string;
|
|
10
|
+
to: string;
|
|
11
|
+
card: string;
|
|
12
|
+
core: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface CoreInvariant {
|
|
15
|
+
id: string;
|
|
16
|
+
rule: string;
|
|
17
|
+
}
|
|
18
|
+
export type OntologyLayerId = "meta" | "finance" | "regulation" | "verification" | "runtime_learning";
|
|
19
|
+
export interface OntologyLayer {
|
|
20
|
+
id: OntologyLayerId;
|
|
21
|
+
name: string;
|
|
22
|
+
description: string;
|
|
23
|
+
objects: string[];
|
|
24
|
+
}
|
|
25
|
+
export interface Ontology {
|
|
26
|
+
version: string;
|
|
27
|
+
layers: Record<OntologyLayerId, OntologyLayer>;
|
|
28
|
+
vocabularies: Record<string, string[]>;
|
|
29
|
+
structs: Record<string, Record<string, string>>;
|
|
30
|
+
objects: Record<string, OntologyObject>;
|
|
31
|
+
links: OntologyLink[];
|
|
32
|
+
coreInvariants: CoreInvariant[];
|
|
33
|
+
}
|
|
34
|
+
type YamlNode = string | YamlNode[] | {
|
|
35
|
+
[k: string]: YamlNode;
|
|
36
|
+
} | null;
|
|
37
|
+
export declare function parseYaml(text: string): Record<string, YamlNode>;
|
|
38
|
+
/** 定位 ontology 文件:<root>/knowledge(项目自定义)→ 包内随发布的默认(<pkg>/knowledge)。 */
|
|
39
|
+
export declare function ontologyPath(root?: string): string | null;
|
|
40
|
+
export declare function loadOntology(root?: string): Ontology;
|
|
41
|
+
/** 结构校验:link 两端类型已定义、基数格式合法、vocab(x) 引用存在、核心不变式齐全。返回问题清单(空=通过)。 */
|
|
42
|
+
export declare function validateOntology(o: Ontology): string[];
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/ontology/loader.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,OAAO,CAAC;IACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AACD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;CACf;AACD,MAAM,WAAW,aAAa;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;CAAE;AAC5D,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,YAAY,GAAG,cAAc,GAAG,kBAAkB,CAAC;AACtG,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,eAAe,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;IAC/C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACxC,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,cAAc,EAAE,aAAa,EAAE,CAAC;CACjC;AAGD,KAAK,QAAQ,GAAG,MAAM,GAAG,QAAQ,EAAE,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,GAAG,IAAI,CAAC;AA4GvE,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAKhE;AAsCD,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,IAAI,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAWxE;AAED,wBAAgB,YAAY,CAAC,IAAI,GAAE,MAAsB,GAAG,QAAQ,CAInE;AAED,mEAAmE;AACnE,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,EAAE,CAuCtD"}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ontology 加载器 —— 读 knowledge/ontology/verification.yaml,解析成类型化模型并校验。
|
|
3
|
+
* 零依赖:内置一个针对本文件结构的 YAML 子集解析器(块映射/块序列/流映射{}/流序列[]/标量)。
|
|
4
|
+
* 语义层是领域层的类型词汇表;harness 不认识它,check 域按接口消费(v3/v4/v5)。
|
|
5
|
+
*/
|
|
6
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
7
|
+
import { join, dirname } from "node:path";
|
|
8
|
+
import { fileURLToPath } from "node:url";
|
|
9
|
+
function stripComments(raw) {
|
|
10
|
+
const out = [];
|
|
11
|
+
for (const line0 of raw.split("\n")) {
|
|
12
|
+
const line = line0.replace(/\t/g, " ");
|
|
13
|
+
if (!line.trim() || /^\s*#/.test(line))
|
|
14
|
+
continue; // 空行 / 整行注释
|
|
15
|
+
const noComment = line.replace(/\s+#.*$/, ""); // 行尾注释(# 前须有空格;本文件值内无 #)
|
|
16
|
+
const indent = noComment.length - noComment.trimStart().length;
|
|
17
|
+
out.push({ indent, text: noComment.trim() });
|
|
18
|
+
}
|
|
19
|
+
return out;
|
|
20
|
+
}
|
|
21
|
+
/** 顶层逗号切分(尊重引号与 []{} 嵌套)——供流映射/流序列用。 */
|
|
22
|
+
function splitTop(s) {
|
|
23
|
+
const parts = [];
|
|
24
|
+
let depth = 0, q = null, buf = "";
|
|
25
|
+
for (const ch of s) {
|
|
26
|
+
if (q) {
|
|
27
|
+
buf += ch;
|
|
28
|
+
if (ch === q)
|
|
29
|
+
q = null;
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
if (ch === '"' || ch === "'") {
|
|
33
|
+
q = ch;
|
|
34
|
+
buf += ch;
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
if (ch === "[" || ch === "{") {
|
|
38
|
+
depth++;
|
|
39
|
+
buf += ch;
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (ch === "]" || ch === "}") {
|
|
43
|
+
depth--;
|
|
44
|
+
buf += ch;
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
if (ch === "," && depth === 0) {
|
|
48
|
+
parts.push(buf.trim());
|
|
49
|
+
buf = "";
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
buf += ch;
|
|
53
|
+
}
|
|
54
|
+
if (buf.trim())
|
|
55
|
+
parts.push(buf.trim());
|
|
56
|
+
return parts;
|
|
57
|
+
}
|
|
58
|
+
function unquote(s) {
|
|
59
|
+
const t = s.trim();
|
|
60
|
+
if ((t.startsWith('"') && t.endsWith('"')) || (t.startsWith("'") && t.endsWith("'")))
|
|
61
|
+
return t.slice(1, -1);
|
|
62
|
+
return t;
|
|
63
|
+
}
|
|
64
|
+
/** 解析一个标量 / 内联流映射 {} / 内联流序列 []。 */
|
|
65
|
+
function parseInline(s) {
|
|
66
|
+
const t = s.trim();
|
|
67
|
+
if (t.startsWith("[") && t.endsWith("]")) {
|
|
68
|
+
const inner = t.slice(1, -1).trim();
|
|
69
|
+
return inner ? splitTop(inner).map((x) => unquote(x)) : [];
|
|
70
|
+
}
|
|
71
|
+
if (t.startsWith("{") && t.endsWith("}")) {
|
|
72
|
+
const inner = t.slice(1, -1).trim();
|
|
73
|
+
const map = {};
|
|
74
|
+
if (inner)
|
|
75
|
+
for (const pair of splitTop(inner)) {
|
|
76
|
+
const i = pair.indexOf(":");
|
|
77
|
+
map[pair.slice(0, i).trim()] = unquote(pair.slice(i + 1));
|
|
78
|
+
}
|
|
79
|
+
return map;
|
|
80
|
+
}
|
|
81
|
+
return unquote(t);
|
|
82
|
+
}
|
|
83
|
+
/** 递归解析块结构,返回 [节点, 下一行索引]。 */
|
|
84
|
+
function parseBlock(lines, i, indent) {
|
|
85
|
+
if (lines[i].text.startsWith("- ") || lines[i].text === "-") {
|
|
86
|
+
const arr = [];
|
|
87
|
+
while (i < lines.length && lines[i].indent === indent && (lines[i].text.startsWith("- ") || lines[i].text === "-")) {
|
|
88
|
+
const rest = lines[i].text.replace(/^-\s*/, "");
|
|
89
|
+
if (rest.startsWith("{") || rest.startsWith("[")) {
|
|
90
|
+
arr.push(parseInline(rest));
|
|
91
|
+
i++;
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
if (rest.includes(":")) { // 块映射作为序列项(如 core_invariants)
|
|
95
|
+
const map = {};
|
|
96
|
+
const j = rest.indexOf(":");
|
|
97
|
+
const k = rest.slice(0, j).trim(), v = rest.slice(j + 1).trim();
|
|
98
|
+
map[k] = v ? parseInline(v) : null;
|
|
99
|
+
i++;
|
|
100
|
+
const childIndent = indent + 2; // "- " 之后对齐的续行
|
|
101
|
+
while (i < lines.length && lines[i].indent >= childIndent && !lines[i].text.startsWith("- ")) {
|
|
102
|
+
const [subv, ni] = parseKeyValue(lines, i, lines[i].indent);
|
|
103
|
+
Object.assign(map, subv);
|
|
104
|
+
i = ni;
|
|
105
|
+
}
|
|
106
|
+
arr.push(map);
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
arr.push(parseInline(rest));
|
|
110
|
+
i++;
|
|
111
|
+
}
|
|
112
|
+
return [arr, i];
|
|
113
|
+
}
|
|
114
|
+
return parseMapping(lines, i, indent);
|
|
115
|
+
}
|
|
116
|
+
function parseMapping(lines, i, indent) {
|
|
117
|
+
const map = {};
|
|
118
|
+
while (i < lines.length && lines[i].indent === indent && !lines[i].text.startsWith("- ")) {
|
|
119
|
+
const [kv, ni] = parseKeyValue(lines, i, indent);
|
|
120
|
+
Object.assign(map, kv);
|
|
121
|
+
i = ni;
|
|
122
|
+
}
|
|
123
|
+
return [map, i];
|
|
124
|
+
}
|
|
125
|
+
function parseKeyValue(lines, i, indent) {
|
|
126
|
+
const line = lines[i].text;
|
|
127
|
+
const j = line.indexOf(":");
|
|
128
|
+
const key = line.slice(0, j).trim();
|
|
129
|
+
const val = line.slice(j + 1).trim();
|
|
130
|
+
if (val)
|
|
131
|
+
return [{ [key]: parseInline(val) }, i + 1];
|
|
132
|
+
// 值在下方缩进块
|
|
133
|
+
if (i + 1 < lines.length && lines[i + 1].indent > indent) {
|
|
134
|
+
const [child, ni] = parseBlock(lines, i + 1, lines[i + 1].indent);
|
|
135
|
+
return [{ [key]: child }, ni];
|
|
136
|
+
}
|
|
137
|
+
return [{ [key]: null }, i + 1];
|
|
138
|
+
}
|
|
139
|
+
export function parseYaml(text) {
|
|
140
|
+
const lines = stripComments(text);
|
|
141
|
+
if (!lines.length)
|
|
142
|
+
return {};
|
|
143
|
+
const [node] = parseMapping(lines, 0, lines[0].indent);
|
|
144
|
+
return node;
|
|
145
|
+
}
|
|
146
|
+
// ── 装配成类型化 Ontology ─────────────────────────────────────────────
|
|
147
|
+
function asStr(v) { return typeof v === "string" ? v : ""; }
|
|
148
|
+
function toOntology(raw) {
|
|
149
|
+
const layerIds = ["meta", "finance", "regulation", "verification", "runtime_learning"];
|
|
150
|
+
const layerRaw = (raw.layers ?? {});
|
|
151
|
+
const layers = Object.fromEntries(layerIds.map((id) => [id, {
|
|
152
|
+
id,
|
|
153
|
+
name: asStr(layerRaw[id]?.name) || id,
|
|
154
|
+
description: asStr(layerRaw[id]?.description),
|
|
155
|
+
objects: Array.isArray(layerRaw[id]?.objects) ? layerRaw[id].objects.map(String) : [],
|
|
156
|
+
}]));
|
|
157
|
+
const objectsRaw = (raw.objects ?? {});
|
|
158
|
+
const objects = {};
|
|
159
|
+
for (const [name, def] of Object.entries(objectsRaw)) {
|
|
160
|
+
objects[name] = {
|
|
161
|
+
name,
|
|
162
|
+
key: asStr(def?.key),
|
|
163
|
+
ext: def?.ext === "true" || def?.ext === true,
|
|
164
|
+
properties: (def?.properties ?? {}),
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
const links = (raw.links ?? []).map((l) => ({
|
|
168
|
+
name: asStr(l.name), from: asStr(l.from), to: asStr(l.to), card: asStr(l.card),
|
|
169
|
+
core: l.core === "true" || l.core === true,
|
|
170
|
+
}));
|
|
171
|
+
const coreInvariants = (raw.core_invariants ?? []).map((c) => ({ id: asStr(c.id), rule: asStr(c.rule) }));
|
|
172
|
+
return {
|
|
173
|
+
version: asStr(raw.version),
|
|
174
|
+
layers,
|
|
175
|
+
vocabularies: (raw.vocabularies ?? {}),
|
|
176
|
+
structs: (raw.structs ?? {}),
|
|
177
|
+
objects, links, coreInvariants,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
/** 定位 ontology 文件:<root>/knowledge(项目自定义)→ 包内随发布的默认(<pkg>/knowledge)。 */
|
|
181
|
+
export function ontologyPath(root = process.cwd()) {
|
|
182
|
+
const proj = join(root, "knowledge", "ontology", "verification.yaml");
|
|
183
|
+
if (existsSync(proj))
|
|
184
|
+
return proj;
|
|
185
|
+
try {
|
|
186
|
+
const here = dirname(fileURLToPath(import.meta.url)); // <pkg>/{src|dist}/ontology
|
|
187
|
+
for (const up of ["../..", "../../..", "../../../.."]) { // 包内 knowledge(src/dist/装到 node_modules 皆命中)
|
|
188
|
+
const p = join(here, up, "knowledge", "ontology", "verification.yaml");
|
|
189
|
+
if (existsSync(p))
|
|
190
|
+
return p;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
catch { /* ignore */ }
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
export function loadOntology(root = process.cwd()) {
|
|
197
|
+
const p = ontologyPath(root);
|
|
198
|
+
if (!p)
|
|
199
|
+
throw new Error("找不到 knowledge/ontology/verification.yaml");
|
|
200
|
+
return toOntology(parseYaml(readFileSync(p, "utf-8")));
|
|
201
|
+
}
|
|
202
|
+
/** 结构校验:link 两端类型已定义、基数格式合法、vocab(x) 引用存在、核心不变式齐全。返回问题清单(空=通过)。 */
|
|
203
|
+
export function validateOntology(o) {
|
|
204
|
+
const issues = [];
|
|
205
|
+
const known = new Set(Object.keys(o.objects));
|
|
206
|
+
const assigned = new Map();
|
|
207
|
+
for (const layer of Object.values(o.layers)) {
|
|
208
|
+
for (const object of layer.objects) {
|
|
209
|
+
if (!known.has(object))
|
|
210
|
+
issues.push(`层 ${layer.name}: 对象「${object}」未定义`);
|
|
211
|
+
const rows = assigned.get(object) ?? [];
|
|
212
|
+
rows.push(layer.id);
|
|
213
|
+
assigned.set(object, rows);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
for (const object of known) {
|
|
217
|
+
const rows = assigned.get(object) ?? [];
|
|
218
|
+
if (!rows.length)
|
|
219
|
+
issues.push(`对象 ${object}: 未归入五层目录`);
|
|
220
|
+
if (rows.length > 1)
|
|
221
|
+
issues.push(`对象 ${object}: 同时归入 ${rows.join("、")}`);
|
|
222
|
+
}
|
|
223
|
+
for (const l of o.links) {
|
|
224
|
+
if (!l.name)
|
|
225
|
+
issues.push("有 link 缺 name");
|
|
226
|
+
if (!known.has(l.from))
|
|
227
|
+
issues.push(`link ${l.name}: from「${l.from}」未定义`);
|
|
228
|
+
if (!known.has(l.to))
|
|
229
|
+
issues.push(`link ${l.name}: to「${l.to}」未定义`);
|
|
230
|
+
if (!/^[0-9n]\.\.[0-9nm]$/.test(l.card))
|
|
231
|
+
issues.push(`link ${l.name}: 基数「${l.card}」格式非法`);
|
|
232
|
+
}
|
|
233
|
+
for (const [name, obj] of Object.entries(o.objects)) {
|
|
234
|
+
if (!obj.key)
|
|
235
|
+
issues.push(`对象 ${name}: 缺 key`);
|
|
236
|
+
for (const [prop, ty] of Object.entries(obj.properties)) {
|
|
237
|
+
const m = /vocab\(([^)]+)\)/.exec(String(ty));
|
|
238
|
+
if (m && !(m[1] in o.vocabularies))
|
|
239
|
+
issues.push(`对象 ${name}.${prop}: 引用未定义词表 vocab(${m[1]})`);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
const invIds = new Set(o.coreInvariants.map((c) => c.id));
|
|
243
|
+
for (const req of ["target-has-rubric", "judgment-on-target", "judgment-grounded"]) {
|
|
244
|
+
if (!invIds.has(req))
|
|
245
|
+
issues.push(`缺核心不变式:${req}`);
|
|
246
|
+
}
|
|
247
|
+
const coreLinks = new Set(o.links.filter((l) => l.core).map((l) => l.name));
|
|
248
|
+
for (const req of ["judgedBy", "evaluates", "groundedIn"]) {
|
|
249
|
+
if (!coreLinks.has(req))
|
|
250
|
+
issues.push(`核心关系未标记 core: ${req}`);
|
|
251
|
+
}
|
|
252
|
+
return issues;
|
|
253
|
+
}
|
|
254
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/ontology/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Judgment } from "../schemas/judgment.js";
|
|
2
|
+
import type { EvaluationContracts } from "../forge/contracts.js";
|
|
3
|
+
export interface CheckRunGraphInput {
|
|
4
|
+
runId: string;
|
|
5
|
+
scenarioKey: string;
|
|
6
|
+
packRef: string;
|
|
7
|
+
startedAt: number;
|
|
8
|
+
completedAt: number;
|
|
9
|
+
documents: Array<{
|
|
10
|
+
document_id: string;
|
|
11
|
+
source_file?: string;
|
|
12
|
+
}>;
|
|
13
|
+
judgments: Judgment[];
|
|
14
|
+
}
|
|
15
|
+
export interface RuntimeGraphReceipt {
|
|
16
|
+
revision: number;
|
|
17
|
+
objects: number;
|
|
18
|
+
links: number;
|
|
19
|
+
}
|
|
20
|
+
export declare function recordCheckRun(home: string, input: CheckRunGraphInput, ontologyRoot?: string): RuntimeGraphReceipt;
|
|
21
|
+
export declare function recordEvaluationContracts(home: string, contracts: EvaluationContracts, ontologyRoot?: string): RuntimeGraphReceipt;
|
|
22
|
+
//# sourceMappingURL=runtime-graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-graph.d.ts","sourceRoot":"","sources":["../../src/ontology/runtime-graph.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAIjE,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,YAAY,GAAE,MAAa,GAAG,mBAAmB,CAqBxH;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE,YAAY,GAAE,MAAa,GAAG,mBAAmB,CAgBxI"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/** 把核查与评测事实写回场景本体图。这里记录已发生的事实,不做 Agent 推理。 */
|
|
2
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { loadOntology } from "./loader.js";
|
|
5
|
+
import { ScenarioOntologyStore } from "./store.js";
|
|
6
|
+
export function recordCheckRun(home, input, ontologyRoot = home) {
|
|
7
|
+
const store = preparedStore(home, ontologyRoot);
|
|
8
|
+
const graph = store.transact(`check_run:${input.runId}`, (tx) => {
|
|
9
|
+
tx.upsertObject({
|
|
10
|
+
type: "CheckRun", id: input.runId,
|
|
11
|
+
data: {
|
|
12
|
+
run_id: input.runId, scenario_ref: input.scenarioKey, pack_ref: input.packRef,
|
|
13
|
+
started_at: input.startedAt, completed_at: input.completedAt, status: "completed",
|
|
14
|
+
document_count: input.documents.length,
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
for (const document of input.documents) {
|
|
18
|
+
tx.upsertObject({
|
|
19
|
+
type: "Document", id: document.document_id,
|
|
20
|
+
data: { document_id: document.document_id, doc_type: extensionOf(document.source_file), source_file: document.source_file },
|
|
21
|
+
});
|
|
22
|
+
tx.upsertLink({ type: "checkedDocument", from: input.runId, to: document.document_id });
|
|
23
|
+
}
|
|
24
|
+
for (const judgment of input.judgments)
|
|
25
|
+
addJudgment(tx, input.runId, judgment);
|
|
26
|
+
});
|
|
27
|
+
return { revision: graph.revision, objects: graph.objects.length, links: graph.links.length };
|
|
28
|
+
}
|
|
29
|
+
export function recordEvaluationContracts(home, contracts, ontologyRoot = home) {
|
|
30
|
+
const store = preparedStore(home, ontologyRoot);
|
|
31
|
+
const graph = store.transact(`evaluation_run:${contracts.run.eval_run_id}`, (tx) => {
|
|
32
|
+
tx.upsertObject({ type: "EvaluationSuite", id: contracts.suite.suite_id, data: { ...contracts.suite } });
|
|
33
|
+
tx.upsertObject({ type: "EvaluationRun", id: contracts.run.eval_run_id, data: { ...contracts.run } });
|
|
34
|
+
tx.upsertObject({ type: "EvaluationReport", id: contracts.report.report_id, data: { ...contracts.report } });
|
|
35
|
+
tx.upsertLink({ type: "usesSuite", from: contracts.run.eval_run_id, to: contracts.suite.suite_id });
|
|
36
|
+
tx.upsertLink({ type: "hasEvaluationReport", from: contracts.run.eval_run_id, to: contracts.report.report_id });
|
|
37
|
+
for (const failure of contracts.failures) {
|
|
38
|
+
ensureTarget(tx, failure.target_id);
|
|
39
|
+
tx.upsertObject({ type: "FailurePattern", id: failure.failure_id, data: { ...failure } });
|
|
40
|
+
tx.upsertLink({ type: "containsFailure", from: contracts.report.report_id, to: failure.failure_id });
|
|
41
|
+
tx.upsertLink({ type: "failureOnTarget", from: failure.failure_id, to: failure.target_id });
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
return { revision: graph.revision, objects: graph.objects.length, links: graph.links.length };
|
|
45
|
+
}
|
|
46
|
+
function addJudgment(tx, runId, judgment) {
|
|
47
|
+
ensureTarget(tx, judgment.evaluates);
|
|
48
|
+
const judgmentId = `${runId}:${judgment.judgment_id}`;
|
|
49
|
+
tx.upsertObject({
|
|
50
|
+
type: "Judgment", id: judgmentId,
|
|
51
|
+
data: { ...judgment, judgment_id: judgmentId, source_judgment_id: judgment.judgment_id },
|
|
52
|
+
});
|
|
53
|
+
tx.upsertLink({ type: "producesJudgment", from: runId, to: judgmentId });
|
|
54
|
+
tx.upsertLink({ type: "evaluates", from: judgmentId, to: judgment.evaluates });
|
|
55
|
+
tx.upsertLink({ type: "onDocument", from: judgmentId, to: judgment.on_document });
|
|
56
|
+
for (const [index, evidence] of judgment.grounded_in.entries()) {
|
|
57
|
+
const evidenceId = `${judgmentId}:evidence:${index + 1}`;
|
|
58
|
+
tx.upsertObject({
|
|
59
|
+
type: "Evidence", id: evidenceId,
|
|
60
|
+
data: {
|
|
61
|
+
evidence_id: evidenceId, quote: evidence.quote,
|
|
62
|
+
locator: normalizeLocator(evidence.locator, evidenceId), extracted_value: evidence.extracted_value,
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
tx.upsertLink({ type: "groundedIn", from: judgmentId, to: evidenceId });
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/** 老场景没有 store.json 时,从兼容投影初始化;仍没有目标时由运行事实补最小合法骨架。 */
|
|
69
|
+
function preparedStore(home, ontologyRoot) {
|
|
70
|
+
const store = new ScenarioOntologyStore(home, loadOntology(ontologyRoot));
|
|
71
|
+
if (store.read().objects.length)
|
|
72
|
+
return store;
|
|
73
|
+
const objects = readRows(join(home, "build", "domain", "objects.json"), "objects");
|
|
74
|
+
const links = readRows(join(home, "build", "domain", "links.json"), "links");
|
|
75
|
+
if (objects.length)
|
|
76
|
+
store.replace(objects, links, "bootstrap_from_compatibility_projection");
|
|
77
|
+
return store;
|
|
78
|
+
}
|
|
79
|
+
function ensureTarget(tx, targetId) {
|
|
80
|
+
const exists = tx.objects.some((row) => row.type === "VerificationTarget" && row.id === targetId);
|
|
81
|
+
if (exists)
|
|
82
|
+
return;
|
|
83
|
+
const rubricId = `${targetId}:runtime-rubric`;
|
|
84
|
+
tx.upsertObject({
|
|
85
|
+
type: "VerificationTarget", id: targetId,
|
|
86
|
+
data: { target_id: targetId, name: targetId, task_type: "predicate", status: "active", meta: { runtime_bootstrap: true } },
|
|
87
|
+
});
|
|
88
|
+
tx.upsertObject({ type: "Rubric", id: rubricId, data: { rubric_id: rubricId, criteria: "由冻结包运行时恢复" } });
|
|
89
|
+
tx.upsertLink({ type: "judgedBy", from: targetId, to: rubricId });
|
|
90
|
+
}
|
|
91
|
+
function readRows(path, key) {
|
|
92
|
+
if (!existsSync(path))
|
|
93
|
+
return [];
|
|
94
|
+
try {
|
|
95
|
+
const value = JSON.parse(readFileSync(path, "utf-8"));
|
|
96
|
+
return Array.isArray(value) ? value : Array.isArray(value?.[key]) ? value[key] : [];
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return [];
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function extensionOf(path) {
|
|
103
|
+
const match = path?.match(/\.([^.\/]+)$/);
|
|
104
|
+
return match?.[1]?.toLowerCase() ?? "unknown";
|
|
105
|
+
}
|
|
106
|
+
function normalizeLocator(locator, fallback) {
|
|
107
|
+
if (locator && typeof locator === "object")
|
|
108
|
+
return locator;
|
|
109
|
+
return { block_id: locator == null ? fallback : String(locator) };
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=runtime-graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-graph.js","sourceRoot":"","sources":["../../src/ontology/runtime-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { Ontology } from "./loader.js";
|
|
2
|
+
import type { DomainLinkRow, DomainObjectRow } from "../domain/registers.js";
|
|
3
|
+
export interface StoredOntologyObject extends DomainObjectRow {
|
|
4
|
+
revision: number;
|
|
5
|
+
updated_at: string;
|
|
6
|
+
}
|
|
7
|
+
export interface StoredOntologyLink extends DomainLinkRow {
|
|
8
|
+
revision: number;
|
|
9
|
+
updated_at: string;
|
|
10
|
+
}
|
|
11
|
+
export interface ScenarioOntologyGraph {
|
|
12
|
+
schema_version: number;
|
|
13
|
+
ontology_version: string;
|
|
14
|
+
revision: number;
|
|
15
|
+
updated_at: string;
|
|
16
|
+
objects: StoredOntologyObject[];
|
|
17
|
+
links: StoredOntologyLink[];
|
|
18
|
+
validation: {
|
|
19
|
+
valid: boolean;
|
|
20
|
+
issues: string[];
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export declare const CURRENT_GRAPH_SCHEMA_VERSION = 1;
|
|
24
|
+
export interface OntologyGraphTransaction {
|
|
25
|
+
upsertObject(row: DomainObjectRow): void;
|
|
26
|
+
removeObject(type: string, id: string): void;
|
|
27
|
+
upsertLink(row: DomainLinkRow): void;
|
|
28
|
+
removeLink(type: string, from: string, to: string): void;
|
|
29
|
+
readonly objects: DomainObjectRow[];
|
|
30
|
+
readonly links: DomainLinkRow[];
|
|
31
|
+
}
|
|
32
|
+
type LegacyGraph = Partial<ScenarioOntologyGraph> & {
|
|
33
|
+
schema_version?: number;
|
|
34
|
+
};
|
|
35
|
+
/** store.json 的兼容入口。以后升级只在这里逐版追加,不让业务代码承担迁移。 */
|
|
36
|
+
export declare function migrateScenarioGraph(raw: LegacyGraph, ontologyVersion: string): ScenarioOntologyGraph;
|
|
37
|
+
export interface OntologyQuery {
|
|
38
|
+
type?: string;
|
|
39
|
+
text?: string;
|
|
40
|
+
limit?: number;
|
|
41
|
+
}
|
|
42
|
+
export declare class ScenarioOntologyStore {
|
|
43
|
+
readonly home: string;
|
|
44
|
+
readonly ontology: Ontology;
|
|
45
|
+
readonly path: string;
|
|
46
|
+
readonly eventsPath: string;
|
|
47
|
+
constructor(home: string, ontology: Ontology);
|
|
48
|
+
read(): ScenarioOntologyGraph;
|
|
49
|
+
replace(objects: DomainObjectRow[], links: DomainLinkRow[], reason: string): ScenarioOntologyGraph;
|
|
50
|
+
upsertObject(row: DomainObjectRow, reason: string): ScenarioOntologyGraph;
|
|
51
|
+
addLink(row: DomainLinkRow, reason: string): ScenarioOntologyGraph;
|
|
52
|
+
/** 多对象、多关系一次提交:只校验一次,也不会留下“对象已写、关系未写”的半成品。 */
|
|
53
|
+
transact(reason: string, mutate: (tx: OntologyGraphTransaction) => void): ScenarioOntologyGraph;
|
|
54
|
+
query(query?: OntologyQuery): StoredOntologyObject[];
|
|
55
|
+
neighbors(id: string): {
|
|
56
|
+
links: StoredOntologyLink[];
|
|
57
|
+
objects: StoredOntologyObject[];
|
|
58
|
+
};
|
|
59
|
+
private empty;
|
|
60
|
+
private write;
|
|
61
|
+
private event;
|
|
62
|
+
}
|
|
63
|
+
export declare function validateScenarioGraph(ontology: Ontology, objects: DomainObjectRow[], links: DomainLinkRow[]): string[];
|
|
64
|
+
export {};
|
|
65
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/ontology/store.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE7E,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAAG,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE;AACtG,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IAAG,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE;AAElG,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,UAAU,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAClD;AAED,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,MAAM,WAAW,wBAAwB;IACvC,YAAY,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACzD,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,CAAC;CACjC;AAED,KAAK,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC,GAAG;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhF,gDAAgD;AAChD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,GAAG,qBAAqB,CAqBrG;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,qBAAqB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;IAO5C,IAAI,IAAI,qBAAqB;IAK7B,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,qBAAqB;IAsBlG,YAAY,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,qBAAqB;IAOzE,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,qBAAqB;IAKlE,8CAA8C;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,wBAAwB,KAAK,IAAI,GAAG,qBAAqB;IAgB/F,KAAK,CAAC,KAAK,GAAE,aAAkB,GAAG,oBAAoB,EAAE;IAQxD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;QAAC,OAAO,EAAE,oBAAoB,EAAE,CAAA;KAAE;IAOvF,OAAO,CAAC,KAAK;IAWb,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,KAAK;CAId;AAUD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,MAAM,EAAE,CA8BtH"}
|