@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,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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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
|