@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.
Files changed (237) hide show
  1. package/README.md +7 -0
  2. package/dist/critic/critique.d.ts +31 -0
  3. package/dist/critic/critique.d.ts.map +1 -0
  4. package/dist/critic/critique.js +68 -0
  5. package/dist/critic/critique.js.map +1 -0
  6. package/dist/critic/observe.d.ts +48 -0
  7. package/dist/critic/observe.d.ts.map +1 -0
  8. package/dist/critic/observe.js +62 -0
  9. package/dist/critic/observe.js.map +1 -0
  10. package/dist/domain/actions.d.ts +67 -0
  11. package/dist/domain/actions.d.ts.map +1 -0
  12. package/dist/domain/actions.js +123 -0
  13. package/dist/domain/actions.js.map +1 -0
  14. package/dist/domain/invalidation.d.ts +18 -0
  15. package/dist/domain/invalidation.d.ts.map +1 -0
  16. package/dist/domain/invalidation.js +44 -0
  17. package/dist/domain/invalidation.js.map +1 -0
  18. package/dist/domain/registers.d.ts +45 -0
  19. package/dist/domain/registers.d.ts.map +1 -0
  20. package/dist/domain/registers.js +121 -0
  21. package/dist/domain/registers.js.map +1 -0
  22. package/dist/domain/view.d.ts +48 -0
  23. package/dist/domain/view.d.ts.map +1 -0
  24. package/dist/domain/view.js +70 -0
  25. package/dist/domain/view.js.map +1 -0
  26. package/dist/forge/attribution.d.ts +18 -0
  27. package/dist/forge/attribution.d.ts.map +1 -0
  28. package/dist/forge/attribution.js +83 -0
  29. package/dist/forge/attribution.js.map +1 -0
  30. package/dist/forge/bakeoff.d.ts +35 -0
  31. package/dist/forge/bakeoff.d.ts.map +1 -0
  32. package/dist/forge/bakeoff.js +48 -0
  33. package/dist/forge/bakeoff.js.map +1 -0
  34. package/dist/forge/contracts.d.ts +67 -0
  35. package/dist/forge/contracts.d.ts.map +1 -0
  36. package/dist/forge/contracts.js +70 -0
  37. package/dist/forge/contracts.js.map +1 -0
  38. package/dist/forge/evaluate-scenario.d.ts +17 -0
  39. package/dist/forge/evaluate-scenario.d.ts.map +1 -0
  40. package/dist/forge/evaluate-scenario.js +93 -0
  41. package/dist/forge/evaluate-scenario.js.map +1 -0
  42. package/dist/forge/evaluate.d.ts +25 -0
  43. package/dist/forge/evaluate.d.ts.map +1 -0
  44. package/dist/forge/evaluate.js +81 -0
  45. package/dist/forge/evaluate.js.map +1 -0
  46. package/dist/forge/feedback.d.ts +21 -0
  47. package/dist/forge/feedback.d.ts.map +1 -0
  48. package/dist/forge/feedback.js +41 -0
  49. package/dist/forge/feedback.js.map +1 -0
  50. package/dist/forge/reflect.d.ts +35 -0
  51. package/dist/forge/reflect.d.ts.map +1 -0
  52. package/dist/forge/reflect.js +72 -0
  53. package/dist/forge/reflect.js.map +1 -0
  54. package/dist/forge/scorer.d.ts +67 -0
  55. package/dist/forge/scorer.d.ts.map +1 -0
  56. package/dist/forge/scorer.js +99 -0
  57. package/dist/forge/scorer.js.map +1 -0
  58. package/dist/forge/trace.d.ts +25 -0
  59. package/dist/forge/trace.d.ts.map +1 -0
  60. package/dist/forge/trace.js +51 -0
  61. package/dist/forge/trace.js.map +1 -0
  62. package/dist/index.d.ts +78 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +47 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/knowledge/loader.d.ts +19 -0
  67. package/dist/knowledge/loader.d.ts.map +1 -0
  68. package/dist/knowledge/loader.js +76 -0
  69. package/dist/knowledge/loader.js.map +1 -0
  70. package/dist/knowledge/retrieval.d.ts +23 -0
  71. package/dist/knowledge/retrieval.d.ts.map +1 -0
  72. package/dist/knowledge/retrieval.js +100 -0
  73. package/dist/knowledge/retrieval.js.map +1 -0
  74. package/dist/knowledge/skill.d.ts +22 -0
  75. package/dist/knowledge/skill.d.ts.map +1 -0
  76. package/dist/knowledge/skill.js +112 -0
  77. package/dist/knowledge/skill.js.map +1 -0
  78. package/dist/knowledge/write.d.ts +35 -0
  79. package/dist/knowledge/write.d.ts.map +1 -0
  80. package/dist/knowledge/write.js +84 -0
  81. package/dist/knowledge/write.js.map +1 -0
  82. package/dist/manage.d.ts +7 -0
  83. package/dist/manage.d.ts.map +1 -0
  84. package/dist/manage.js +36 -0
  85. package/dist/manage.js.map +1 -0
  86. package/dist/methods/loader.d.ts +18 -0
  87. package/dist/methods/loader.d.ts.map +1 -0
  88. package/dist/methods/loader.js +65 -0
  89. package/dist/methods/loader.js.map +1 -0
  90. package/dist/nodes/aggregate.d.ts +2 -0
  91. package/dist/nodes/aggregate.d.ts.map +1 -0
  92. package/dist/nodes/aggregate.js +101 -0
  93. package/dist/nodes/aggregate.js.map +1 -0
  94. package/dist/nodes/base.d.ts +31 -0
  95. package/dist/nodes/base.d.ts.map +1 -0
  96. package/dist/nodes/base.js +44 -0
  97. package/dist/nodes/base.js.map +1 -0
  98. package/dist/nodes/cognition.d.ts +2 -0
  99. package/dist/nodes/cognition.d.ts.map +1 -0
  100. package/dist/nodes/cognition.js +263 -0
  101. package/dist/nodes/cognition.js.map +1 -0
  102. package/dist/nodes/confidence.d.ts +9 -0
  103. package/dist/nodes/confidence.d.ts.map +1 -0
  104. package/dist/nodes/confidence.js +19 -0
  105. package/dist/nodes/confidence.js.map +1 -0
  106. package/dist/nodes/deliver.d.ts +2 -0
  107. package/dist/nodes/deliver.d.ts.map +1 -0
  108. package/dist/nodes/deliver.js +37 -0
  109. package/dist/nodes/deliver.js.map +1 -0
  110. package/dist/nodes/evidence.d.ts +2 -0
  111. package/dist/nodes/evidence.d.ts.map +1 -0
  112. package/dist/nodes/evidence.js +118 -0
  113. package/dist/nodes/evidence.js.map +1 -0
  114. package/dist/nodes/ground.d.ts +2 -0
  115. package/dist/nodes/ground.d.ts.map +1 -0
  116. package/dist/nodes/ground.js +22 -0
  117. package/dist/nodes/ground.js.map +1 -0
  118. package/dist/nodes/parse.d.ts +2 -0
  119. package/dist/nodes/parse.d.ts.map +1 -0
  120. package/dist/nodes/parse.js +72 -0
  121. package/dist/nodes/parse.js.map +1 -0
  122. package/dist/nodes/scope.d.ts +4 -0
  123. package/dist/nodes/scope.d.ts.map +1 -0
  124. package/dist/nodes/scope.js +63 -0
  125. package/dist/nodes/scope.js.map +1 -0
  126. package/dist/nodes/shape.d.ts +2 -0
  127. package/dist/nodes/shape.d.ts.map +1 -0
  128. package/dist/nodes/shape.js +111 -0
  129. package/dist/nodes/shape.js.map +1 -0
  130. package/dist/ontology/checkskill.d.ts +26 -0
  131. package/dist/ontology/checkskill.d.ts.map +1 -0
  132. package/dist/ontology/checkskill.js +89 -0
  133. package/dist/ontology/checkskill.js.map +1 -0
  134. package/dist/ontology/functions.d.ts +29 -0
  135. package/dist/ontology/functions.d.ts.map +1 -0
  136. package/dist/ontology/functions.js +143 -0
  137. package/dist/ontology/functions.js.map +1 -0
  138. package/dist/ontology/loader.d.ts +44 -0
  139. package/dist/ontology/loader.d.ts.map +1 -0
  140. package/dist/ontology/loader.js +254 -0
  141. package/dist/ontology/loader.js.map +1 -0
  142. package/dist/ontology/runtime-graph.d.ts +22 -0
  143. package/dist/ontology/runtime-graph.d.ts.map +1 -0
  144. package/dist/ontology/runtime-graph.js +111 -0
  145. package/dist/ontology/runtime-graph.js.map +1 -0
  146. package/dist/ontology/store.d.ts +65 -0
  147. package/dist/ontology/store.d.ts.map +1 -0
  148. package/dist/ontology/store.js +179 -0
  149. package/dist/ontology/store.js.map +1 -0
  150. package/dist/parsers/exec.d.ts +9 -0
  151. package/dist/parsers/exec.d.ts.map +1 -0
  152. package/dist/parsers/exec.js +41 -0
  153. package/dist/parsers/exec.js.map +1 -0
  154. package/dist/parsers/runner.d.ts +2 -0
  155. package/dist/parsers/runner.d.ts.map +1 -0
  156. package/dist/parsers/runner.js +26 -0
  157. package/dist/parsers/runner.js.map +1 -0
  158. package/dist/parsers/store.d.ts +32 -0
  159. package/dist/parsers/store.d.ts.map +1 -0
  160. package/dist/parsers/store.js +64 -0
  161. package/dist/parsers/store.js.map +1 -0
  162. package/dist/parsers/synthesize.d.ts +26 -0
  163. package/dist/parsers/synthesize.d.ts.map +1 -0
  164. package/dist/parsers/synthesize.js +63 -0
  165. package/dist/parsers/synthesize.js.map +1 -0
  166. package/dist/planner.d.ts +89 -0
  167. package/dist/planner.d.ts.map +1 -0
  168. package/dist/planner.js +785 -0
  169. package/dist/planner.js.map +1 -0
  170. package/dist/project.d.ts +4 -0
  171. package/dist/project.d.ts.map +1 -0
  172. package/dist/project.js +42 -0
  173. package/dist/project.js.map +1 -0
  174. package/dist/scenario-builder.d.ts +56 -0
  175. package/dist/scenario-builder.d.ts.map +1 -0
  176. package/dist/scenario-builder.js +366 -0
  177. package/dist/scenario-builder.js.map +1 -0
  178. package/dist/schemas/index.d.ts +12 -0
  179. package/dist/schemas/index.d.ts.map +1 -0
  180. package/dist/schemas/index.js +8 -0
  181. package/dist/schemas/index.js.map +1 -0
  182. package/dist/schemas/judgment.d.ts +38 -0
  183. package/dist/schemas/judgment.d.ts.map +1 -0
  184. package/dist/schemas/judgment.js +45 -0
  185. package/dist/schemas/judgment.js.map +1 -0
  186. package/dist/schemas/payloads.d.ts +53 -0
  187. package/dist/schemas/payloads.d.ts.map +1 -0
  188. package/dist/schemas/payloads.js +54 -0
  189. package/dist/schemas/payloads.js.map +1 -0
  190. package/dist/schemas/result.d.ts +36 -0
  191. package/dist/schemas/result.d.ts.map +1 -0
  192. package/dist/schemas/result.js +26 -0
  193. package/dist/schemas/result.js.map +1 -0
  194. package/dist/schemas/spec.d.ts +40 -0
  195. package/dist/schemas/spec.d.ts.map +1 -0
  196. package/dist/schemas/spec.js +82 -0
  197. package/dist/schemas/spec.js.map +1 -0
  198. package/dist/schemas/target.d.ts +28 -0
  199. package/dist/schemas/target.d.ts.map +1 -0
  200. package/dist/schemas/target.js +36 -0
  201. package/dist/schemas/target.js.map +1 -0
  202. package/dist/schemas/workflow.d.ts +21 -0
  203. package/dist/schemas/workflow.d.ts.map +1 -0
  204. package/dist/schemas/workflow.js +100 -0
  205. package/dist/schemas/workflow.js.map +1 -0
  206. package/dist/skills/judge-runner.d.ts +2 -0
  207. package/dist/skills/judge-runner.d.ts.map +1 -0
  208. package/dist/skills/judge-runner.js +29 -0
  209. package/dist/skills/judge-runner.js.map +1 -0
  210. package/dist/skills/judge-synth.d.ts +31 -0
  211. package/dist/skills/judge-synth.d.ts.map +1 -0
  212. package/dist/skills/judge-synth.js +87 -0
  213. package/dist/skills/judge-synth.js.map +1 -0
  214. package/dist/subagents/worker.d.ts +5 -0
  215. package/dist/subagents/worker.d.ts.map +1 -0
  216. package/dist/subagents/worker.js +58 -0
  217. package/dist/subagents/worker.js.map +1 -0
  218. package/dist/workflows/context.d.ts +26 -0
  219. package/dist/workflows/context.d.ts.map +1 -0
  220. package/dist/workflows/context.js +23 -0
  221. package/dist/workflows/context.js.map +1 -0
  222. package/dist/workflows/executor.d.ts +44 -0
  223. package/dist/workflows/executor.d.ts.map +1 -0
  224. package/dist/workflows/executor.js +146 -0
  225. package/dist/workflows/executor.js.map +1 -0
  226. package/dist/workflows/merge.d.ts +4 -0
  227. package/dist/workflows/merge.d.ts.map +1 -0
  228. package/dist/workflows/merge.js +21 -0
  229. package/dist/workflows/merge.js.map +1 -0
  230. package/dist/workflows/run.d.ts +20 -0
  231. package/dist/workflows/run.d.ts.map +1 -0
  232. package/dist/workflows/run.js +66 -0
  233. package/dist/workflows/run.js.map +1 -0
  234. package/knowledge/methods/prose-rule.method.md +21 -0
  235. package/knowledge/methods/ratio-limit.method.md +31 -0
  236. package/knowledge/ontology/verification.yaml +268 -0
  237. package/package.json +36 -0
@@ -0,0 +1,4 @@
1
+ /** 把一个 case 的多文档合并成一个 doc-tagged DocumentIR。从 Python merge.py 移植。 */
2
+ import { DocumentIR } from "../schemas/payloads.js";
3
+ export declare function mergeDocuments(docs: DocumentIR[]): DocumentIR;
4
+ //# sourceMappingURL=merge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/workflows/merge.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,OAAO,EAAE,UAAU,EAAyB,MAAM,wBAAwB,CAAC;AAE3E,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,UAAU,CAiB7D"}
@@ -0,0 +1,21 @@
1
+ /** 把一个 case 的多文档合并成一个 doc-tagged DocumentIR。从 Python merge.py 移植。 */
2
+ import { DocumentIR, makeBlock } from "../schemas/payloads.js";
3
+ export function mergeDocuments(docs) {
4
+ const blocks = [];
5
+ for (const d of docs) {
6
+ const received = d.metadata.received_at ?? "";
7
+ const doctype = d.metadata.doc_type ?? "";
8
+ for (const b of d.blocks) {
9
+ blocks.push(makeBlock(`${d.document_id}:${b.block_id}`, b.text, {
10
+ type: b.type,
11
+ section_path: [...(b.section_path ?? [])],
12
+ source: { ...(b.source ?? {}), document_id: d.document_id, received_at: received, doc_type: doctype },
13
+ }));
14
+ }
15
+ }
16
+ return new DocumentIR(docs.map((d) => d.document_id).join("+"), {
17
+ blocks,
18
+ metadata: { documents: docs.map((d) => d.document_id), merged: true },
19
+ });
20
+ }
21
+ //# sourceMappingURL=merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/workflows/merge.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAc,MAAM,wBAAwB,CAAC;AAE3E,MAAM,UAAU,cAAc,CAAC,IAAkB;IAC/C,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAI,CAAC,CAAC,QAAQ,CAAC,WAAsB,IAAI,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAI,CAAC,CAAC,QAAQ,CAAC,QAAmB,IAAI,EAAE,CAAC;QACtD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;gBAC9D,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;gBACzC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE;aACtG,CAAC,CAAC,CAAC;QACN,CAAC;IACH,CAAC;IACD,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC9D,MAAM;QACN,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;KACtE,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { type RuntimeGraphReceipt } from "../ontology/runtime-graph.js";
2
+ import type { LLMLike } from "./context.js";
3
+ export interface RunResultRow {
4
+ document: string;
5
+ target_id: string;
6
+ outcome: unknown;
7
+ status: string;
8
+ evidence_count: number;
9
+ }
10
+ export declare function runScenario(workspace: string, scenarioKey: string, docPaths: string[], opts?: {
11
+ llm?: LLMLike | null;
12
+ now?: number;
13
+ parserDirs?: string[];
14
+ }): Promise<{
15
+ scenario_key: string;
16
+ results: RunResultRow[];
17
+ out: string;
18
+ ontology: RuntimeGraphReceipt;
19
+ }>;
20
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/workflows/run.ts"],"names":[],"mappings":"AASA,OAAO,EAAkB,KAAK,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAAE,EAClB,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GACvE,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,EAAE,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,mBAAmB,CAAA;CAAE,CAAC,CAqDxG"}
@@ -0,0 +1,66 @@
1
+ /** 生产线执行 —— 冻结场景包即 CLI(run 期,0 agent 决策)。从 Python run.py 移植核心。 */
2
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { DocumentIR } from "../schemas/payloads.js";
5
+ import { loadPack } from "../knowledge/loader.js";
6
+ import { loadBuiltinComponents } from "../nodes/base.js";
7
+ import { parseDocument, docId as toDocId, parserDirs } from "../parsers/store.js";
8
+ import { toJudgment } from "../schemas/judgment.js";
9
+ import { judgmentToTrace, writeTraces } from "../forge/trace.js";
10
+ import { recordCheckRun } from "../ontology/runtime-graph.js";
11
+ export async function runScenario(workspace, scenarioKey, docPaths, opts = {}) {
12
+ await loadBuiltinComponents();
13
+ const home = join(workspace, scenarioKey);
14
+ const packDir = join(home, "pack");
15
+ if (!existsSync(join(packDir, "pack.json")))
16
+ throw new Error(`场景 ${scenarioKey} 还没有冻结生产线(缺 ${packDir}/pack.json)——先完成 build 并 approve。`);
17
+ if (!existsSync(join(packDir, "freeze_manifest.json")))
18
+ throw new Error(`缺 freeze_manifest.json:${packDir} 不是过了晋升门的冻结包。`);
19
+ const pack = loadPack(packDir);
20
+ const executor = pack.executor("", { llm: opts.llm });
21
+ const skillRefs = Object.fromEntries(pack.targets.map((t) => {
22
+ const p = join(packDir, "targets", t.target_id, "skill.json");
23
+ try {
24
+ const skill = JSON.parse(readFileSync(p, "utf-8"));
25
+ return [t.target_id, String(skill.id ?? `${t.target_id}@${skill.version ?? "unknown"}`)];
26
+ }
27
+ catch {
28
+ return [t.target_id, `${scenarioKey}:${t.target_id}`];
29
+ }
30
+ }));
31
+ const stamp = String(Math.floor(opts.now ?? Date.now() / 1000));
32
+ const runDir = join(home, "runs", `run-${stamp}`);
33
+ mkdirSync(join(runDir, "results"), { recursive: true });
34
+ const rows = [];
35
+ const judgments = [];
36
+ const documents = [];
37
+ const nowTs = Math.floor(opts.now ?? Date.now() / 1000);
38
+ for (const p of docPaths) {
39
+ // txt/md 原生读;docx/pdf 等路由到冻结解析器 adapter(沙箱执行)——无匹配则可操作报错
40
+ const { text, via } = await parseDocument(p, { dirs: opts.parserDirs ?? parserDirs(), workDir: join(runDir, "parse", toDocId(p)) });
41
+ if (via !== "native")
42
+ writeFileSync(join(runDir, "results", `${toDocId(p)}.parsed.txt`), text, "utf-8");
43
+ const docId = toDocId(p);
44
+ documents.push({ document_id: docId, source_file: p });
45
+ const res = await executor.runDocument(new DocumentIR(docId), pack.targets, { rawText: text });
46
+ for (const r of res.results) {
47
+ const outcome = r.value != null ? r.value : r.comparison ? `${r.comparison.actual} vs ${r.comparison.expected}` : r.verdict;
48
+ rows.push({ document: docId, target_id: r.target_id, outcome, status: r.status, evidence_count: (r.evidence ?? []).length });
49
+ // Judgment 一等化:把扁平结果升成带血缘的决策对象(强制 grounding 不变式)
50
+ judgments.push(toJudgment({ target_id: r.target_id, status: r.status, outcome: { kind: "verdict", verdict: r.verdict, value: r.value, comparison: r.comparison }, evidence: r.evidence ?? [], confidence: r.confidence ?? null, provenance: r.provenance ?? {}, checks: [], unit: {}, derived: {}, sub_results: [] }, { document_id: docId, now: nowTs, checkskill_ref: skillRefs[r.target_id] ?? `${scenarioKey}:${r.target_id}` }));
51
+ }
52
+ }
53
+ const payload = { scenario_key: scenarioKey, stamp, results: rows };
54
+ const out = join(runDir, "results", "results.json");
55
+ writeFileSync(out, JSON.stringify(payload, null, 2), "utf-8");
56
+ // 落 Judgment(一等决策对象)与 trace(反思输入)
57
+ writeFileSync(join(runDir, "results", "judgments.json"), JSON.stringify(judgments, null, 2), "utf-8");
58
+ writeTraces(join(home, "traces", `run-${stamp}`), judgments.map((j) => judgmentToTrace(j)));
59
+ const ontology = recordCheckRun(home, {
60
+ runId: `run-${stamp}`, scenarioKey, packRef: packDir,
61
+ startedAt: nowTs, completedAt: Math.floor(opts.now ?? Date.now() / 1000), documents, judgments,
62
+ });
63
+ writeFileSync(join(runDir, "results", "ontology_receipt.json"), JSON.stringify(ontology, null, 2), "utf-8");
64
+ return { ...payload, out, ontology };
65
+ }
66
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/workflows/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ ---
2
+ method_id: prose-rule
3
+ version: "1"
4
+ applies_to_rule_kind: "*"
5
+ produces: [VerificationTarget, Rubric, EvidenceRequirement, CheckSkill]
6
+ emits_function: judge.prose_grounded
7
+ ---
8
+ # 通用散文规则 → 核查技能 · 方法论(fallback meta-skill)
9
+
10
+ 仅当没有更具体的 Method 时使用。它保留规则原文的判据,不把未知规则强行改写成阈值或计算逻辑。
11
+
12
+ ## 合成配方
13
+ 1. 一条 RuleClause 只生成一个最小 VerificationTarget 和一个 Rubric。
14
+ 2. applicability 不明确时使用 always,不推测产品范围。
15
+ 3. retrieval 只采用条文及样本中真实出现的关键词和章节线索。
16
+ 4. judge 使用 grounded prose rubric;必须引用原文证据才能 pass/fail。
17
+ 5. 没有足够证据或判据存在歧义时输出 needs_review。
18
+
19
+ ## 反思分流
20
+ - 个别目标错判:只修该 CheckSkill 的 retrieval/rubric。
21
+ - 同类规则持续系统性错判:新增专用 Method,不在本 fallback 中堆场景特例。
@@ -0,0 +1,31 @@
1
+ ---
2
+ method_id: ratio-limit
3
+ version: "3"
4
+ applies_to_rule_kind: ratio_limit
5
+ produces: [VerificationTarget, Rubric]
6
+ emits_function: judge.threshold_compare
7
+ ---
8
+ # 比例限制类规则 → 核查技能 · 方法论(meta-skill)
9
+
10
+ 构建期由 Build Loop 消费:读一条 ratio_limit 的 RuleClause,产出 VerificationTarget + Rubric,
11
+ 并给出判定 Function 的骨架。跨场景复用——所有「比例限制」规则都走这一份方法。
12
+
13
+ ## 识别
14
+ 条文含「不得超过 / 不低于 + 百分比 + 某类资产/指标」→ 归为 ratio_limit。
15
+
16
+ ## 抽取配方(怎么生成 Target + Rubric)
17
+ 1. 抽 metric(如「债权投资比例」)、operator(<= / >=)、threshold(如 40)、unit(percent)。
18
+ 2. task_type = comparison;outcome_domain.kind = verdict。
19
+ 3. Rubric.constraint = { op, value, unit };criteria 用原文判据。
20
+ 4. retrieval:chapter_keywords=投资范围/投资比例;content_keywords=metric 关键词 + 「比例」「%」。
21
+ 5. evidence_contract:必须引用原文的比例数字,否则 verdict = needs_review。
22
+
23
+ ## 判定逻辑骨架(生成 judge Function 的规格)
24
+ 从证据中抽 metric 值 → 与 constraint 比较 → 给出 verdict + 引用原文。
25
+ - 抽不到数值 → needs_review(不猜)。
26
+ - 命中多处 → 取约束最紧的一处,其余入证据列表。
27
+
28
+ ## 反思要点(评测不达标时改哪)
29
+ - 漏召(该判没判)→ 放宽 retrieval 关键词 / 章节线索。
30
+ - 误报(比例判错)→ 检查 metric 抽取与单位换算(万分之 vs 百分之)。
31
+ - 系统性偏差 → 升级本方法到 v4,一次修复惠及所有比例规则。
@@ -0,0 +1,268 @@
1
+ # 核查领域 Ontology —— 语义层(对象/属性/关系)的正式 schema。
2
+ # 设计原则:极小稳定核心(core: true 的三条关系) + 其余加法/软层可演进。
3
+ # 词表(vocabularies)加值不改 schema;对象带 ext=true 即支持 meta:{} 扩展袋。
4
+ # 版本随破坏性变更递增;CheckSkill 记它构建时的 ontology 版本。
5
+ version: "verification@1.0"
6
+
7
+ # 五层目录不是五套割裂的库,而是同一对象图的职责分区。
8
+ # 当前只登记已经有 schema/运行时的类型;后续新增类型按层追加,不需要改 Agent 控制流。
9
+ layers:
10
+ meta:
11
+ name: 元本体层
12
+ description: 定义构建方法、类型和系统可表达的能力
13
+ objects: [Method]
14
+ finance:
15
+ name: 金融领域层
16
+ description: 相对稳定的金融产品、指标、分类和业务概念
17
+ objects: [ProductType]
18
+ regulation:
19
+ name: 规则监管层
20
+ description: 法规、条款、约束、例外和适用条件
21
+ objects: [Regulation, RuleClause]
22
+ verification:
23
+ name: 核查场景层
24
+ description: 核查目标、判据、证据要求和可执行 CheckSkill
25
+ objects: [VerificationTarget, Rubric, EvidenceRequirement, CheckSkill]
26
+ runtime_learning:
27
+ name: 运行学习层
28
+ description: 文档、证据、判定、运行记录和反馈学习对象
29
+ objects: [Document, DocumentBlock, Evidence, Judgment, CheckRun, EvaluationSuite, EvaluationRun, EvaluationReport, FailurePattern]
30
+
31
+ # ── 开放词表(软层:加值即用,不动 schema、不重编译)──
32
+ vocabularies:
33
+ rule_kind: [prohibition, ratio_limit, threshold, disclosure, qualification, procedure]
34
+ task_type: [predicate, comparison, extraction, calculation]
35
+ verdict: [pass, fail, not_applicable, needs_review]
36
+ severity: [blocker, major, minor]
37
+ evidence_kind: [quote, number, table, date]
38
+ block_type: [heading, paragraph, table, list]
39
+ normative: [mandatory, advisory]
40
+ status: [draft, active, superseded, retired]
41
+
42
+ # ── 结构体(值对象,非独立 object,可内嵌)──
43
+ structs:
44
+ SourceRef: { regulation_id: string, article: string }
45
+ Facet: { product_category: "string[]", doc_type: "string[]", jurisdiction: "string?" }
46
+ Constraint: { op: "enum[<=,>=,==,!=,in]", value: "scalar", unit: "string?" }
47
+ Confidence: { score: number, band: "vocab(band)" }
48
+ OutcomeDomain: { kind: "enum[verdict,value,comparison]", values: "string[]?" }
49
+ Locator: { block_id: string, offset: "int?" }
50
+
51
+ # ── 对象类型(名词)。key=主键;ext=true 允许 meta:{} 扩展袋 ──
52
+ objects:
53
+
54
+ # A · 规则侧(核查依据)
55
+ Regulation:
56
+ ext: true
57
+ key: regulation_id
58
+ properties:
59
+ regulation_id: string
60
+ title: string
61
+ issuer: string # 发布方
62
+ doc_type: string # 法规|指引|合同模板(开放)
63
+ effective_date: "date?"
64
+ version: "string?"
65
+
66
+ RuleClause:
67
+ ext: true
68
+ key: clause_id
69
+ properties:
70
+ clause_id: string
71
+ source_ref: SourceRef # 溯源到 第X条
72
+ text: markdown
73
+ rule_kind: "vocab(rule_kind)"
74
+ normative: "vocab(normative) = mandatory"
75
+ status: "vocab(status) = active"
76
+
77
+ # B · 目标 / 判定逻辑侧(怎么核查)
78
+ VerificationTarget:
79
+ ext: true
80
+ key: target_id
81
+ properties:
82
+ target_id: string
83
+ name: string
84
+ task_type: "vocab(task_type)"
85
+ applicability: Facet
86
+ outcome_domain: OutcomeDomain
87
+ severity: "vocab(severity) = major"
88
+ status: "vocab(status) = draft"
89
+
90
+ Rubric:
91
+ ext: true
92
+ key: rubric_id
93
+ properties:
94
+ rubric_id: string
95
+ criteria: markdown
96
+ decision: "{ pass_when: string?, fail_when: string? }"
97
+ tolerance: "number?"
98
+
99
+ EvidenceRequirement:
100
+ ext: true
101
+ key: req_id
102
+ properties:
103
+ req_id: string
104
+ description: string
105
+ evidence_kind: "vocab(evidence_kind)"
106
+ locator_hint: "string?"
107
+
108
+ # C · 文档 / 证据 / 结果侧(核查对象与产出)
109
+ Document:
110
+ ext: true
111
+ key: document_id
112
+ properties:
113
+ document_id: string
114
+ doc_type: string
115
+ product_category: "string?"
116
+ received_at: "date?"
117
+ source_file: "string?"
118
+
119
+ DocumentBlock:
120
+ key: block_id
121
+ properties:
122
+ block_id: string
123
+ text: markdown
124
+ section_path: "string[]"
125
+ block_type: "vocab(block_type)"
126
+
127
+ Evidence:
128
+ ext: true
129
+ key: evidence_id
130
+ properties:
131
+ evidence_id: string
132
+ quote: markdown # 原文引用
133
+ locator: Locator
134
+ extracted_value: "string?" # 抽取值,如 "40%"
135
+
136
+ Judgment: # ★ 一等决策对象(decisions-not-data)
137
+ ext: true
138
+ key: judgment_id
139
+ properties:
140
+ judgment_id: string
141
+ verdict: "vocab(verdict)"
142
+ confidence: Confidence
143
+ rationale: "markdown?"
144
+ created_at: timestamp
145
+ model_ref: "string?" # 模型 + 版本
146
+ checkskill_ref: "string?" # 用哪个 CheckSkill 判的
147
+
148
+ CheckRun: # 一次冻结生产线的真实执行
149
+ ext: true
150
+ key: run_id
151
+ properties:
152
+ run_id: string
153
+ scenario_ref: string
154
+ pack_ref: string
155
+ started_at: timestamp
156
+ completed_at: "timestamp?"
157
+ status: string
158
+ document_count: number
159
+
160
+ EvaluationSuite: # 可复现的评测集版本
161
+ ext: true
162
+ key: suite_id
163
+ properties:
164
+ suite_id: string
165
+ name: string
166
+ version: string
167
+ oracle_ref: string
168
+ case_count: number
169
+ source: string
170
+
171
+ EvaluationRun: # 某版本 pack 对某版本评测集的一次运行
172
+ ext: true
173
+ key: eval_run_id
174
+ properties:
175
+ eval_run_id: string
176
+ scenario_ref: string
177
+ suite_ref: string
178
+ pack_ref: string
179
+ pack_version: string
180
+ started_at: timestamp
181
+ status: string
182
+
183
+ EvaluationReport: # 指标、切片和晋升门结果
184
+ ext: true
185
+ key: report_id
186
+ properties:
187
+ report_id: string
188
+ accuracy: number
189
+ precision: "number?"
190
+ recall: "number?"
191
+ case_count: number
192
+ gate_status: string
193
+ metrics: object
194
+
195
+ FailurePattern: # 从 mismatch 归纳出的可追踪失败
196
+ ext: true
197
+ key: failure_id
198
+ properties:
199
+ failure_id: string
200
+ kind: string
201
+ case_id: string
202
+ expected: object
203
+ actual: object
204
+ diagnosis: "string?"
205
+ first_error_stage: "string?"
206
+ attribution_confidence: "number?"
207
+
208
+ # D · 分类 / 上下文
209
+ ProductType:
210
+ key: product_id
211
+ properties:
212
+ product_id: string
213
+ name: string
214
+ parent: "product_id?" # 上位类
215
+
216
+ # E · 动能 / 构建产物(附在语义层,非纯名词;见 v5)
217
+ CheckSkill: # 运行期:驱动冻结系统的核查技能
218
+ ext: true
219
+ key: skill_id
220
+ properties:
221
+ skill_id: string
222
+ target_ref: target_id
223
+ retrieval: object # 取证配置(松:随 task_type 变)
224
+ judge: object # rubric + constraint + function_ref
225
+ version: string
226
+ eval: object # { accuracy, recall, ... }
227
+ provenance: object # { built_by_method, winner_spec, derived_from }
228
+
229
+ Method: # 构建期:造 CheckSkill 的方法论(元技能)
230
+ ext: true
231
+ key: method_id
232
+ properties:
233
+ method_id: string
234
+ version: string
235
+ applies_to_rule_kind: "vocab(rule_kind)"
236
+ produces: "string[]" # 产出哪些对象类型
237
+ emits_function: "string?"
238
+
239
+ # ── 关系(有向 link + 基数)。core:true = 稳定核心,机器强制、慎改 ──
240
+ links:
241
+ - { name: hasClause, from: Regulation, to: RuleClause, card: "1..n" }
242
+ - { name: derivesTo, from: RuleClause, to: VerificationTarget, card: "n..m" }
243
+ - { name: judgedBy, from: VerificationTarget, to: Rubric, card: "1..1", core: true }
244
+ - { name: requires, from: VerificationTarget, to: EvidenceRequirement, card: "0..n" }
245
+ - { name: appliesTo, from: VerificationTarget, to: ProductType, card: "0..n" }
246
+ - { name: realizedBy, from: VerificationTarget, to: CheckSkill, card: "1..1" }
247
+ - { name: builtByMethod, from: CheckSkill, to: Method, card: "n..1" }
248
+ - { name: classifiedAs, from: Document, to: ProductType, card: "n..1" }
249
+ - { name: hasBlock, from: Document, to: DocumentBlock, card: "1..n" }
250
+ - { name: extractedFrom, from: Evidence, to: DocumentBlock, card: "n..1" }
251
+ - { name: evaluates, from: Judgment, to: VerificationTarget, card: "n..1", core: true }
252
+ - { name: onDocument, from: Judgment, to: Document, card: "n..1" }
253
+ - { name: groundedIn, from: Judgment, to: Evidence, card: "1..n", core: true }
254
+ - { name: checkedDocument, from: CheckRun, to: Document, card: "1..n" }
255
+ - { name: producesJudgment, from: CheckRun, to: Judgment, card: "1..n" }
256
+ - { name: usesSuite, from: EvaluationRun, to: EvaluationSuite, card: "n..1" }
257
+ - { name: hasEvaluationReport, from: EvaluationRun, to: EvaluationReport, card: "1..1" }
258
+ - { name: containsFailure, from: EvaluationReport, to: FailurePattern, card: "0..n" }
259
+ - { name: failureOnTarget, from: FailurePattern, to: VerificationTarget, card: "n..1" }
260
+
261
+ # ── 稳定核心不变式(核查的物理定律;加载时校验、冻结前强制)──
262
+ core_invariants:
263
+ - id: target-has-rubric
264
+ rule: "每个 VerificationTarget 必须 judgedBy 恰好一个 Rubric"
265
+ - id: judgment-on-target
266
+ rule: "每个 Judgment 必须 evaluates 恰好一个 VerificationTarget"
267
+ - id: judgment-grounded
268
+ rule: "pass/fail 等决定性 Judgment 必须 groundedIn ≥1 Evidence;无证据只能 needs_review 或 not_applicable"
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@mingyuxu/check",
3
+ "version": "0.1.0",
4
+ "description": "核查领域层(内核 + 知识引擎)—— Pi 无此层的垂直价值。依赖 core+ai。",
5
+ "keywords": ["agent", "verification", "ontology", "document-checking", "compliance"],
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/Mingyu-Xu-98/doccheck-agent.git",
9
+ "directory": "packages/check"
10
+ },
11
+ "homepage": "https://github.com/Mingyu-Xu-98/doccheck-agent#readme",
12
+ "bugs": { "url": "https://github.com/Mingyu-Xu-98/doccheck-agent/issues" },
13
+ "engines": { "node": ">=20" },
14
+ "type": "module",
15
+ "main": "./dist/index.js",
16
+ "types": "./dist/index.d.ts",
17
+ "exports": {
18
+ ".": "./dist/index.js"
19
+ },
20
+ "scripts": {
21
+ "build": "tsc --build",
22
+ "prepublishOnly": "npm run build"
23
+ },
24
+ "dependencies": {
25
+ "@mingyuxu/ai": "0.1.0",
26
+ "@mingyuxu/core": "0.1.0"
27
+ },
28
+ "files": [
29
+ "dist",
30
+ "knowledge"
31
+ ],
32
+ "publishConfig": {
33
+ "access": "public",
34
+ "registry": "https://registry.npmjs.org"
35
+ }
36
+ }