@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,25 @@
1
+ import type { Judgment } from "../schemas/judgment.js";
2
+ export interface TraceRow {
3
+ case_id: string;
4
+ target_id: string;
5
+ verdict: string;
6
+ expected?: string;
7
+ match?: boolean;
8
+ grounded: number;
9
+ evidence_head?: string;
10
+ checkskill_ref?: string;
11
+ model_ref?: string;
12
+ created_at: number;
13
+ }
14
+ export declare function judgmentToTrace(j: Judgment, expected?: string): TraceRow;
15
+ /** 追加写 trace 行到 <dir>/trace.jsonl。 */
16
+ export declare function writeTraces(dir: string, rows: TraceRow[]): string;
17
+ /** 从 trace 行做粗归因(反思引擎的种子):给出每个失败点的疑似根因面。 */
18
+ export declare function diagnose(rows: TraceRow[]): Array<{
19
+ case_id: string;
20
+ target_id: string;
21
+ suspect: string;
22
+ }>;
23
+ export declare const evalDirFor: (home: string, stamp: string) => string;
24
+ export declare const _dirname: (path: string) => string;
25
+ //# sourceMappingURL=trace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../src/forge/trace.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvD,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAaxE;AAED,sCAAsC;AACtC,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAKjE;AAED,4CAA4C;AAC5C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAYzG;AAED,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,MAA+C,CAAC;AACzG,eAAO,MAAM,QAAQ,0BAAU,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Trace 库 —— 每次评测/运行落可回放轨迹,是反思迭代(Phase 4)的输入。
3
+ * 一行一个判定点:判定 + 证据摘要 + 期望(若有 oracle)+ 用哪个 skill/模型。
4
+ * append-only,磁盘即真相;反思 agent 读它归因(漏召/误报/取证/判据)。
5
+ */
6
+ import { mkdirSync, appendFileSync } from "node:fs";
7
+ import { join, dirname } from "node:path";
8
+ export function judgmentToTrace(j, expected) {
9
+ return {
10
+ case_id: j.on_document,
11
+ target_id: j.evaluates,
12
+ verdict: j.verdict,
13
+ expected,
14
+ match: expected != null ? j.verdict === expected : undefined,
15
+ grounded: j.grounded_in.length,
16
+ evidence_head: j.grounded_in[0]?.quote?.slice(0, 120),
17
+ checkskill_ref: j.checkskill_ref,
18
+ model_ref: j.model_ref,
19
+ created_at: j.created_at,
20
+ };
21
+ }
22
+ /** 追加写 trace 行到 <dir>/trace.jsonl。 */
23
+ export function writeTraces(dir, rows) {
24
+ mkdirSync(dir, { recursive: true });
25
+ const path = join(dir, "trace.jsonl");
26
+ for (const r of rows)
27
+ appendFileSync(path, JSON.stringify(r) + "\n", "utf-8");
28
+ return path;
29
+ }
30
+ /** 从 trace 行做粗归因(反思引擎的种子):给出每个失败点的疑似根因面。 */
31
+ export function diagnose(rows) {
32
+ const out = [];
33
+ for (const r of rows) {
34
+ if (r.match !== false)
35
+ continue; // 只诊断判错的
36
+ let suspect;
37
+ if (r.grounded === 0 && r.verdict === "needs_review")
38
+ suspect = "retrieval:没取到证据(漏召/章节线索)";
39
+ else if (r.expected === "pass" && r.verdict === "fail")
40
+ suspect = "judge:误报(判据过严 / 单位换算)";
41
+ else if (r.expected === "fail" && r.verdict === "pass")
42
+ suspect = "judge:漏报(判据过松 / 证据未覆盖)";
43
+ else
44
+ suspect = "judge/rubric:判定与期望不符";
45
+ out.push({ case_id: r.case_id, target_id: r.target_id, suspect });
46
+ }
47
+ return out;
48
+ }
49
+ export const evalDirFor = (home, stamp) => join(home, "traces", `eval-${stamp}`);
50
+ export const _dirname = dirname; // 便于测试注入
51
+ //# sourceMappingURL=trace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/forge/trace.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAc,SAAS,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgB1C,MAAM,UAAU,eAAe,CAAC,CAAW,EAAE,QAAiB;IAC5D,OAAO;QACL,OAAO,EAAE,CAAC,CAAC,WAAW;QACtB,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,QAAQ;QACR,KAAK,EAAE,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS;QAC5D,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM;QAC9B,aAAa,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;QACrD,cAAc,EAAE,CAAC,CAAC,cAAc;QAChC,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,UAAU,EAAE,CAAC,CAAC,UAAU;KACzB,CAAC;AACJ,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,IAAgB;IACvD,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,IAAI;QAAE,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,QAAQ,CAAC,IAAgB;IACvC,MAAM,GAAG,GAAmE,EAAE,CAAC;IAC/E,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK;YAAE,SAAS,CAA8B,SAAS;QACvE,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,cAAc;YAAE,OAAO,GAAG,0BAA0B,CAAC;aACtF,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,CAAC,OAAO,KAAK,MAAM;YAAE,OAAO,GAAG,uBAAuB,CAAC;aACrF,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,CAAC,OAAO,KAAK,MAAM;YAAE,OAAO,GAAG,wBAAwB,CAAC;;YACtF,OAAO,GAAG,sBAAsB,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,KAAa,EAAU,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,KAAK,EAAE,CAAC,CAAC;AACzG,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAG,SAAS"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * @mingyuxu/check —— 核查领域层(Pi 无此层的垂直价值)。依赖 core + ai。
3
+ * 内核(schemas/nodes/workflows)已就位;forge/knowledge/planner 续。
4
+ */
5
+ export * from "./schemas/index.js";
6
+ export { loadBuiltinComponents, getComponent, registry, STAGE_OF_TYPE, component } from "./nodes/base.js";
7
+ export type { ComponentSpec, NodeFn } from "./nodes/base.js";
8
+ export { facetMatch } from "./nodes/scope.js";
9
+ export * as confidence from "./nodes/confidence.js";
10
+ export { RunContext } from "./workflows/context.js";
11
+ export { Executor } from "./workflows/executor.js";
12
+ export type { ExecutorOptions } from "./workflows/executor.js";
13
+ export { mergeDocuments } from "./workflows/merge.js";
14
+ export { Scorer } from "./forge/scorer.js";
15
+ export type { Oracle, OracleCase, ScoreReport } from "./forge/scorer.js";
16
+ export { runBakeoff } from "./forge/bakeoff.js";
17
+ export type { PackLike, BakeoffResult, BakeoffRow } from "./forge/bakeoff.js";
18
+ export { baselineFor, computeRegression, scoreAndGate } from "./forge/evaluate.js";
19
+ export type { RegressionInfo } from "./forge/evaluate.js";
20
+ export { ScenarioPack, loadPack } from "./knowledge/loader.js";
21
+ export { Knowledge } from "./knowledge/retrieval.js";
22
+ export type { Entry } from "./knowledge/retrieval.js";
23
+ export { proposeKnowledgeDelta, listPending, applyDelta, KINDS } from "./knowledge/write.js";
24
+ export type { Delta } from "./knowledge/write.js";
25
+ export { extractRubric, renderSkillMd, minimalContract, defaultSchemaProfile, splitRules, RUBRIC_MARK, RUBRIC_END, DEFAULT_SECTIONS, } from "./knowledge/skill.js";
26
+ export type { RuleChunk } from "./knowledge/skill.js";
27
+ export { evaluateScenario, replayEvaluation } from "./forge/evaluate-scenario.js";
28
+ export { ScenarioBuilder } from "./scenario-builder.js";
29
+ export { VerificationAgent, auditTargets } from "./planner.js";
30
+ export type { AgentOpts } from "./planner.js";
31
+ export { runScenario } from "./workflows/run.js";
32
+ export type { RunResultRow } from "./workflows/run.js";
33
+ export { projectInstructions, basePackContext } from "./project.js";
34
+ export { addFeedback, listFeedback, triageFeedback, DECISIONS } from "./forge/feedback.js";
35
+ export type { Feedback } from "./forge/feedback.js";
36
+ export { resetScenario, listArchives } from "./manage.js";
37
+ export { parseDocument, listParsers, findAdapter, parserDirs, docId } from "./parsers/store.js";
38
+ export type { ParserEntry, ParserManifest, ParseResult } from "./parsers/store.js";
39
+ export { synthesizeAdapter, readAdapterCode } from "./parsers/synthesize.js";
40
+ export type { SynthOpts, SynthResult } from "./parsers/synthesize.js";
41
+ export { runAdapter, DEFAULT_RUNNER } from "./parsers/exec.js";
42
+ export { loadOntology, validateOntology, parseYaml, ontologyPath } from "./ontology/loader.js";
43
+ export type { Ontology, OntologyObject, OntologyLink, CoreInvariant, OntologyLayer, OntologyLayerId } from "./ontology/loader.js";
44
+ export { ScenarioOntologyStore, validateScenarioGraph, migrateScenarioGraph, CURRENT_GRAPH_SCHEMA_VERSION } from "./ontology/store.js";
45
+ export type { ScenarioOntologyGraph, StoredOntologyObject, StoredOntologyLink, OntologyQuery, OntologyGraphTransaction } from "./ontology/store.js";
46
+ export { recordCheckRun, recordEvaluationContracts } from "./ontology/runtime-graph.js";
47
+ export type { CheckRunGraphInput, RuntimeGraphReceipt } from "./ontology/runtime-graph.js";
48
+ export { DomainFunctionRegistry, createFinanceFunctionRegistry, DEFAULT_INSTRUMENT_TAXONOMY } from "./ontology/functions.js";
49
+ export type { DomainFunction, JsonSchemaLike } from "./ontology/functions.js";
50
+ export { validateCheckSkill, ontologyVersion, buildCheckSkill } from "./ontology/checkskill.js";
51
+ export type { CheckSkillBuildOpts } from "./ontology/checkskill.js";
52
+ export { loadMethods, selectMethod, methodsDirs, methodRef } from "./methods/loader.js";
53
+ export type { Method } from "./methods/loader.js";
54
+ export { instantiateDomain, inferRuleKind, targetDigest } from "./domain/registers.js";
55
+ export type { DomainBuild, DomainObjectRow, DomainLinkRow, MethodSelection } from "./domain/registers.js";
56
+ export { buildDomainView } from "./domain/view.js";
57
+ export type { DomainView } from "./domain/view.js";
58
+ export { loadStale, markChanged, clearStale, isStale, stalePath } from "./domain/invalidation.js";
59
+ export type { BuildAssetKind, ChangeSource, StaleEntry, StaleState } from "./domain/invalidation.js";
60
+ export { DomainActionRegistry, createVerificationActionRegistry } from "./domain/actions.js";
61
+ export type { DomainAction, ActionDescription, VerificationActionContext, Condition, Invariant, Effect, ApprovalPolicy, } from "./domain/actions.js";
62
+ export { toJudgment, validateJudgment, VERDICTS } from "./schemas/judgment.js";
63
+ export type { Judgment, Verdict, GroundedEvidence } from "./schemas/judgment.js";
64
+ export { judgmentToTrace, writeTraces, diagnose, evalDirFor } from "./forge/trace.js";
65
+ export type { TraceRow } from "./forge/trace.js";
66
+ export { attributeEvaluation, latestAttemptDiff, diffJson } from "./forge/attribution.js";
67
+ export type { FailureAttribution, AttemptDiff } from "./forge/attribution.js";
68
+ export { buildEvaluationContracts, EVALUATION_CONTRACT_VERSION } from "./forge/contracts.js";
69
+ export type { EvaluationContracts, EvaluationSuiteContract, EvaluationRunContract, EvaluationReportContract, FailurePatternContract, } from "./forge/contracts.js";
70
+ export { reviseFromReport, tokens, nameTokens } from "./forge/reflect.js";
71
+ export type { TargetDiagnosis, WinnerReport } from "./forge/reflect.js";
72
+ export { synthesizeJudge, DEFAULT_JUDGE_RUNNER } from "./skills/judge-synth.js";
73
+ export type { JudgeSynthOpts, JudgeSynthResult, JudgeProbe } from "./skills/judge-synth.js";
74
+ export { gatherEvidence } from "./critic/observe.js";
75
+ export type { Evidence } from "./critic/observe.js";
76
+ export { critique, hardSignals } from "./critic/critique.js";
77
+ export type { Critique } from "./critic/critique.js";
78
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @mingyuxu/check —— 核查领域层(Pi 无此层的垂直价值)。依赖 core + ai。
3
+ * 内核(schemas/nodes/workflows)已就位;forge/knowledge/planner 续。
4
+ */
5
+ export * from "./schemas/index.js";
6
+ export { loadBuiltinComponents, getComponent, registry, STAGE_OF_TYPE, component } from "./nodes/base.js";
7
+ export { facetMatch } from "./nodes/scope.js";
8
+ export * as confidence from "./nodes/confidence.js";
9
+ export { RunContext } from "./workflows/context.js";
10
+ export { Executor } from "./workflows/executor.js";
11
+ export { mergeDocuments } from "./workflows/merge.js";
12
+ export { Scorer } from "./forge/scorer.js";
13
+ export { runBakeoff } from "./forge/bakeoff.js";
14
+ export { baselineFor, computeRegression, scoreAndGate } from "./forge/evaluate.js";
15
+ export { ScenarioPack, loadPack } from "./knowledge/loader.js";
16
+ export { Knowledge } from "./knowledge/retrieval.js";
17
+ export { proposeKnowledgeDelta, listPending, applyDelta, KINDS } from "./knowledge/write.js";
18
+ export { extractRubric, renderSkillMd, minimalContract, defaultSchemaProfile, splitRules, RUBRIC_MARK, RUBRIC_END, DEFAULT_SECTIONS, } from "./knowledge/skill.js";
19
+ export { evaluateScenario, replayEvaluation } from "./forge/evaluate-scenario.js";
20
+ export { ScenarioBuilder } from "./scenario-builder.js";
21
+ export { VerificationAgent, auditTargets } from "./planner.js";
22
+ export { runScenario } from "./workflows/run.js";
23
+ export { projectInstructions, basePackContext } from "./project.js";
24
+ export { addFeedback, listFeedback, triageFeedback, DECISIONS } from "./forge/feedback.js";
25
+ export { resetScenario, listArchives } from "./manage.js";
26
+ export { parseDocument, listParsers, findAdapter, parserDirs, docId } from "./parsers/store.js";
27
+ export { synthesizeAdapter, readAdapterCode } from "./parsers/synthesize.js";
28
+ export { runAdapter, DEFAULT_RUNNER } from "./parsers/exec.js";
29
+ export { loadOntology, validateOntology, parseYaml, ontologyPath } from "./ontology/loader.js";
30
+ export { ScenarioOntologyStore, validateScenarioGraph, migrateScenarioGraph, CURRENT_GRAPH_SCHEMA_VERSION } from "./ontology/store.js";
31
+ export { recordCheckRun, recordEvaluationContracts } from "./ontology/runtime-graph.js";
32
+ export { DomainFunctionRegistry, createFinanceFunctionRegistry, DEFAULT_INSTRUMENT_TAXONOMY } from "./ontology/functions.js";
33
+ export { validateCheckSkill, ontologyVersion, buildCheckSkill } from "./ontology/checkskill.js";
34
+ export { loadMethods, selectMethod, methodsDirs, methodRef } from "./methods/loader.js";
35
+ export { instantiateDomain, inferRuleKind, targetDigest } from "./domain/registers.js";
36
+ export { buildDomainView } from "./domain/view.js";
37
+ export { loadStale, markChanged, clearStale, isStale, stalePath } from "./domain/invalidation.js";
38
+ export { DomainActionRegistry, createVerificationActionRegistry } from "./domain/actions.js";
39
+ export { toJudgment, validateJudgment, VERDICTS } from "./schemas/judgment.js";
40
+ export { judgmentToTrace, writeTraces, diagnose, evalDirFor } from "./forge/trace.js";
41
+ export { attributeEvaluation, latestAttemptDiff, diffJson } from "./forge/attribution.js";
42
+ export { buildEvaluationContracts, EVALUATION_CONTRACT_VERSION } from "./forge/contracts.js";
43
+ export { reviseFromReport, tokens, nameTokens } from "./forge/reflect.js";
44
+ export { synthesizeJudge, DEFAULT_JUDGE_RUNNER } from "./skills/judge-synth.js";
45
+ export { gatherEvidence } from "./critic/observe.js";
46
+ export { critique, hardSignals } from "./critic/critique.js";
47
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { Target } from "../schemas/target.js";
2
+ import { PipelineSpec } from "../schemas/spec.js";
3
+ import { Executor } from "../workflows/executor.js";
4
+ import type { LLMLike } from "../workflows/context.js";
5
+ export declare class ScenarioPack {
6
+ root: string;
7
+ meta: Record<string, unknown>;
8
+ targets: Target[];
9
+ frozen: Record<string, PipelineSpec>;
10
+ profile: Record<string, unknown>;
11
+ refdata: Record<string, unknown>;
12
+ constructor(root: string, meta: Record<string, unknown>, targets: Target[], frozen: Record<string, PipelineSpec>, profile: Record<string, unknown>, refdata: Record<string, unknown>);
13
+ spec(workflowId?: string): PipelineSpec;
14
+ executor(workflowId?: string, opts?: {
15
+ llm?: LLMLike | null;
16
+ }): Executor;
17
+ }
18
+ export declare function loadPack(root: string): ScenarioPack;
19
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/knowledge/loader.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAgBvD,qBAAa,YAAY;IAEd,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC7B,OAAO,EAAE,MAAM,EAAE;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBALhC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAGzC,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY;IAMvC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;KAAO,GAAG,QAAQ;CAG7E;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAwBnD"}
@@ -0,0 +1,76 @@
1
+ /** 场景包加载器。pack = 目录:pack.json + targets/ + workflows/frozen/。从 Python loader.py 移植。 */
2
+ import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { Target } from "../schemas/target.js";
5
+ import { PipelineSpec } from "../schemas/spec.js";
6
+ import { Executor } from "../workflows/executor.js";
7
+ import { extractRubric } from "./skill.js";
8
+ function readJson(path, def) {
9
+ if (!existsSync(path)) {
10
+ if (def !== undefined)
11
+ return def;
12
+ throw new Error(`file not found: ${path}`);
13
+ }
14
+ return JSON.parse(readFileSync(path, "utf-8"));
15
+ }
16
+ function globDirs(dir) {
17
+ if (!existsSync(dir))
18
+ return [];
19
+ return readdirSync(dir).filter((n) => statSync(join(dir, n)).isDirectory()).sort();
20
+ }
21
+ export class ScenarioPack {
22
+ root;
23
+ meta;
24
+ targets;
25
+ frozen;
26
+ profile;
27
+ refdata;
28
+ constructor(root, meta, targets, frozen, profile, refdata) {
29
+ this.root = root;
30
+ this.meta = meta;
31
+ this.targets = targets;
32
+ this.frozen = frozen;
33
+ this.profile = profile;
34
+ this.refdata = refdata;
35
+ }
36
+ spec(workflowId) {
37
+ if (workflowId)
38
+ return this.frozen[workflowId];
39
+ for (const [k, v] of Object.entries(this.frozen))
40
+ if (k.endsWith("_default"))
41
+ return v;
42
+ return Object.values(this.frozen)[0];
43
+ }
44
+ executor(workflowId, opts = {}) {
45
+ return new Executor(this.spec(workflowId), { profileVocab: this.profile, refdata: this.refdata, llm: opts.llm });
46
+ }
47
+ }
48
+ export function loadPack(root) {
49
+ const meta = readJson(join(root, "pack.json"), {});
50
+ const targets = [];
51
+ const tdir = join(root, "targets");
52
+ for (const sub of globDirs(tdir)) {
53
+ const tj = join(tdir, sub, "target.json");
54
+ if (!existsSync(tj))
55
+ continue;
56
+ const t = Target.fromDict(readJson(tj));
57
+ const skill = join(tdir, sub, "SKILL.md");
58
+ if (existsSync(skill))
59
+ t.judge.rubric_text = extractRubric(readFileSync(skill, "utf-8"));
60
+ const jm = join(tdir, sub, "judge.mjs"); // 冻结的生成判定函数 → run 期回放
61
+ if (existsSync(jm))
62
+ t.judge.function_abs = jm;
63
+ targets.push(t);
64
+ }
65
+ const frozen = {};
66
+ const fdir = join(root, "workflows", "frozen");
67
+ if (existsSync(fdir)) {
68
+ for (const f of readdirSync(fdir).filter((n) => n.endsWith(".json")).sort()) {
69
+ frozen[f.replace(/\.json$/, "")] = PipelineSpec.fromDict(readJson(join(fdir, f)));
70
+ }
71
+ }
72
+ const profile = readJson(join(root, "profile", "profile.json"), {}).facets ?? {};
73
+ const refdata = readJson(join(root, "refdata", "reference.json"), {});
74
+ return new ScenarioPack(root, meta, targets, frozen, profile, refdata);
75
+ }
76
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/knowledge/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export interface Entry {
2
+ id: string;
3
+ kind: string;
4
+ scope: string;
5
+ title: string;
6
+ text: string;
7
+ source: string;
8
+ score: number;
9
+ }
10
+ export declare class Knowledge {
11
+ private root;
12
+ private entries;
13
+ constructor(root: string);
14
+ private loadSkills;
15
+ private loadDomain;
16
+ retrieve(query: string, opts?: {
17
+ kind?: string;
18
+ scope?: string;
19
+ limit?: number;
20
+ }): Entry[];
21
+ get length(): number;
22
+ }
23
+ //# sourceMappingURL=retrieval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retrieval.d.ts","sourceRoot":"","sources":["../../src/knowledge/retrieval.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAkBD,qBAAa,SAAS;IAER,OAAO,CAAC,IAAI;IADxB,OAAO,CAAC,OAAO,CAAe;gBACV,IAAI,EAAE,MAAM;IAKhC,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,UAAU;IAalB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,KAAK,EAAE;IAqB9F,IAAI,MAAM,IAAI,MAAM,CAEnB;CACF"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * 知识检索 —— 关键词打分(零依赖,不上向量,契合可审计)。每条结果带 source 溯源。
3
+ * 索引 skills/<id> + domain/<scope>/<kind>/<name>.md。从 Python retrieval.py 移植。
4
+ */
5
+ import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
6
+ import { join, relative } from "node:path";
7
+ const WORD = /[\w一-鿿]+/g;
8
+ function tokens(s) {
9
+ return (s.toLowerCase().match(WORD) ?? []);
10
+ }
11
+ function walk(dir, filter) {
12
+ if (!existsSync(dir))
13
+ return [];
14
+ const out = [];
15
+ for (const name of readdirSync(dir)) {
16
+ const p = join(dir, name);
17
+ if (statSync(p).isDirectory())
18
+ out.push(...walk(p, filter));
19
+ else if (filter(name))
20
+ out.push(p);
21
+ }
22
+ return out.sort();
23
+ }
24
+ export class Knowledge {
25
+ root;
26
+ entries = [];
27
+ constructor(root) {
28
+ this.root = root;
29
+ this.loadSkills();
30
+ this.loadDomain();
31
+ }
32
+ loadSkills() {
33
+ const sk = join(this.root, "skills");
34
+ for (const meta of walk(sk, (n) => n === "skill.json")) {
35
+ let data;
36
+ try {
37
+ data = JSON.parse(readFileSync(meta, "utf-8"));
38
+ }
39
+ catch {
40
+ continue;
41
+ }
42
+ const dir = meta.slice(0, meta.lastIndexOf("/"));
43
+ let body = "";
44
+ const md = join(dir, "SKILL.md");
45
+ if (existsSync(md))
46
+ body = readFileSync(md, "utf-8");
47
+ const cats = data.applicability?.product_category ?? [];
48
+ this.entries.push({
49
+ id: String(data.id ?? dir.split("/").pop()),
50
+ kind: "skill",
51
+ scope: cats[0] ?? "",
52
+ title: data.name ?? dir.split("/").pop(),
53
+ text: `${data.description ?? ""}\n${body}`,
54
+ source: relative(this.root, dir),
55
+ score: 0,
56
+ });
57
+ }
58
+ }
59
+ loadDomain() {
60
+ const dm = join(this.root, "domain");
61
+ for (const md of walk(dm, (n) => n.endsWith(".md"))) {
62
+ const rel = relative(dm, md).split("/");
63
+ const scope = rel[0] ?? "";
64
+ const kind = rel.length >= 3 ? rel[1] : "concept";
65
+ const text = readFileSync(md, "utf-8");
66
+ const first = text.split("\n")[0] ?? "";
67
+ const title = text.trim() ? first.replace(/^#\s*/, "").trim() : md.split("/").pop().replace(/\.md$/, "");
68
+ this.entries.push({ id: md.split("/").pop().replace(/\.md$/, ""), kind, scope, title, text, source: relative(this.root, md), score: 0 });
69
+ }
70
+ }
71
+ retrieve(query, opts = {}) {
72
+ const q = tokens(query);
73
+ if (!q.length)
74
+ return [];
75
+ const limit = opts.limit ?? 5;
76
+ const hits = [];
77
+ for (const e of this.entries) {
78
+ if (opts.kind && e.kind !== opts.kind)
79
+ continue;
80
+ if (opts.scope && e.scope && e.scope !== opts.scope)
81
+ continue;
82
+ const bodyToks = tokens(e.text);
83
+ const titleToks = new Set(tokens(e.title));
84
+ let score = 0;
85
+ for (const t of q) {
86
+ score += bodyToks.filter((x) => x === t).length;
87
+ if (titleToks.has(t))
88
+ score += 3.0;
89
+ }
90
+ if (score > 0)
91
+ hits.push({ ...e, score });
92
+ }
93
+ hits.sort((a, b) => b.score - a.score);
94
+ return hits.slice(0, limit);
95
+ }
96
+ get length() {
97
+ return this.entries.length;
98
+ }
99
+ }
100
+ //# sourceMappingURL=retrieval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retrieval.js","sourceRoot":"","sources":["../../src/knowledge/retrieval.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * 灵活 skill schema(P5)—— 最小契约 + schema_profile 声明形状 + 判据可回读。
3
+ * 从 Python scenario_builder.py 的 skill schema 辅助移植。
4
+ */
5
+ import type { Target } from "../schemas/target.js";
6
+ export declare const RUBRIC_MARK = "<!-- kc:rubric -->";
7
+ export declare const RUBRIC_END = "<!-- /kc:rubric -->";
8
+ export declare const DEFAULT_SECTIONS: string[];
9
+ export declare function defaultSchemaProfile(taskType: string): Record<string, unknown>;
10
+ export declare function renderSkillMd(t: Target, rubric: string, profile?: Record<string, any> | null): string;
11
+ export declare function extractRubric(skillMd: string): string;
12
+ export declare function minimalContract(t: Target, opts?: {
13
+ ontologyVersion?: string;
14
+ builtByMethod?: string;
15
+ }): Record<string, unknown>;
16
+ export interface RuleChunk {
17
+ chunk_id: string;
18
+ section: string;
19
+ text: string;
20
+ }
21
+ export declare function splitRules(text: string, chunkChars?: number): RuleChunk[];
22
+ //# sourceMappingURL=skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/knowledge/skill.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,eAAO,MAAM,WAAW,uBAAuB,CAAC;AAChD,eAAO,MAAM,UAAU,wBAAwB,CAAC;AAEhD,eAAO,MAAM,gBAAgB,UAA6D,CAAC;AAE3F,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAO9E;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,MAAM,CAuBrG;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKrD;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiBnI;AAKD,MAAM,WAAW,SAAS;IAAG,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;CAAE;AAE/E,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,SAAO,GAAG,SAAS,EAAE,CAkCvE"}
@@ -0,0 +1,112 @@
1
+ export const RUBRIC_MARK = "<!-- kc:rubric -->";
2
+ export const RUBRIC_END = "<!-- /kc:rubric -->";
3
+ export const DEFAULT_SECTIONS = ["适用范围", "规则原文", "判断标准", "定位线索", "负向筛查", "判定策略与结论域", "溯源"];
4
+ export function defaultSchemaProfile(taskType) {
5
+ return {
6
+ task_type: taskType,
7
+ sections: [...DEFAULT_SECTIONS],
8
+ skill_fields: [],
9
+ note: "本场景 skill 的形状声明——增删 sections 即改变 SKILL.md 结构,内核只依赖最小契约(applicability/judge/outcome 的 kind),其余全开放。",
10
+ };
11
+ }
12
+ export function renderSkillMd(t, rubric, profile) {
13
+ const sections = profile?.sections ?? DEFAULT_SECTIONS;
14
+ const name = t.meta.name ?? t.target_id;
15
+ const out = [`# ${t.target_id} ${name}`];
16
+ const sec = (title, body) => out.push(`\n## ${title}\n${body.trim() || "无"}`);
17
+ const r = t.retrieval ?? {};
18
+ for (const s of sections) {
19
+ if (s === "判断标准")
20
+ sec(s, `${RUBRIC_MARK}\n${rubric}\n${RUBRIC_END}`);
21
+ else if (s === "适用范围")
22
+ sec(s, Object.keys(t.applicability).length ? JSON.stringify(t.applicability) : "无限制(always)");
23
+ else if (s === "规则原文") {
24
+ const prov = t.meta.provenance ?? {};
25
+ sec(s, Object.keys(prov).length ? `来自规则来源「${prov.section ?? "?"}」(块 ${prov.chunk_id ?? "?"})` : "无");
26
+ }
27
+ else if (s === "定位线索") {
28
+ sec(s, `关键词: ${(r.content_keywords ?? ["无"]).join("、")}\n章节: ${(r.chapter_keywords ?? ["无"]).join("、")}\nlimit: ${r.limit ?? "?"}`);
29
+ }
30
+ else if (s === "负向筛查")
31
+ sec(s, (r.negative_keywords ?? []).length ? r.negative_keywords.join("、") : "无");
32
+ else if (s === "判定策略与结论域") {
33
+ const judge = { ...t.judge };
34
+ delete judge.rubric_text;
35
+ sec(s, `judge: ${JSON.stringify(judge)}\noutcome: ${JSON.stringify(t.outcome_domain)}`);
36
+ }
37
+ else if (s === "溯源")
38
+ sec(s, `${JSON.stringify(t.meta.provenance ?? {})}\n机器契约见 skill.json`);
39
+ else
40
+ sec(s, "无(由 schema_profile 声明,待补充)");
41
+ }
42
+ return out.join("\n") + "\n";
43
+ }
44
+ export function extractRubric(skillMd) {
45
+ if (skillMd.includes(RUBRIC_MARK) && skillMd.includes(RUBRIC_END)) {
46
+ return skillMd.split(RUBRIC_MARK, 2)[1].split(RUBRIC_END, 2)[0].trim();
47
+ }
48
+ return skillMd;
49
+ }
50
+ export function minimalContract(t, opts = {}) {
51
+ const j = t.judge ?? {};
52
+ const r = t.retrieval ?? {};
53
+ const c = {
54
+ schema_version: "2.0",
55
+ id: t.target_id,
56
+ name: t.meta.name ?? t.target_id,
57
+ task_type: t.task_type,
58
+ lifecycle_status: "frozen",
59
+ applicability: Object.keys(t.applicability).length ? t.applicability : { mode: "always" },
60
+ judge: { kind: j.kind ?? "prose_rubric", strategy: j.strategy ?? "" },
61
+ outcome: { kind: t.outcome_domain.kind ?? "status5" },
62
+ search: { keywords: r.content_keywords ?? [], section_hints: r.chapter_keywords ?? [], negative_keywords: r.negative_keywords ?? [] },
63
+ };
64
+ if (opts.ontologyVersion)
65
+ c.ontology_version = opts.ontologyVersion; // ← 盖 ontology 版本戳(血缘)
66
+ if (opts.builtByMethod)
67
+ c.provenance = { built_by_method: opts.builtByMethod };
68
+ return c;
69
+ }
70
+ // ---- 规则切分(① map-reduce 底座)----------------------------------------
71
+ const RULE_HEADING = /^(第[一二三四五六七八九十百0-9]+[章条节]|第[一二三四五六七八九十百0-9]+部分|[一二三四五六七八九十]+、)/;
72
+ export function splitRules(text, chunkChars = 3000) {
73
+ const sections = [];
74
+ let title = "", buf = [];
75
+ for (const line of text.split("\n")) {
76
+ const s = line.trim();
77
+ if (RULE_HEADING.test(s) && s.length <= 40) {
78
+ if (buf.length)
79
+ sections.push([title, buf.join("\n")]);
80
+ title = s;
81
+ buf = [line];
82
+ }
83
+ else
84
+ buf.push(line);
85
+ }
86
+ if (buf.length)
87
+ sections.push([title, buf.join("\n")]);
88
+ const chunks = [];
89
+ let accTitles = [], acc = "";
90
+ const flush = () => {
91
+ if (acc.trim())
92
+ chunks.push({ chunk_id: `c${String(chunks.length + 1).padStart(3, "0")}`, section: accTitles.filter(Boolean).join(";") || "(无标题)", text: acc });
93
+ accTitles = [];
94
+ acc = "";
95
+ };
96
+ for (const [secTitle, secText] of sections) {
97
+ if (secText.length > chunkChars) {
98
+ flush();
99
+ for (let i = 0; i < secText.length; i += chunkChars) {
100
+ chunks.push({ chunk_id: `c${String(chunks.length + 1).padStart(3, "0")}`, section: `${secTitle || "(无标题)"}#${Math.floor(i / chunkChars) + 1}`, text: secText.slice(i, i + chunkChars) });
101
+ }
102
+ continue;
103
+ }
104
+ if (acc && acc.length + secText.length > chunkChars)
105
+ flush();
106
+ accTitles.push(secTitle);
107
+ acc += (acc ? "\n" : "") + secText;
108
+ }
109
+ flush();
110
+ return chunks;
111
+ }
112
+ //# sourceMappingURL=skill.js.map