@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
package/README.md
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# @mingyuxu/check
|
|
2
|
+
|
|
3
|
+
doccheck-agent 的核查领域层,包含金融核查 Ontology、Method、CheckSkill、领域 Action、场景构建、证据化判定、评测归因和冻结生产线。
|
|
4
|
+
|
|
5
|
+
通常由 `doccheck-agent` 作为领域扩展加载。使用完整产品请安装 [`doccheck-agent`](https://www.npmjs.com/package/doccheck-agent)。
|
|
6
|
+
|
|
7
|
+
完整文档与源码:[doccheck-agent](https://github.com/Mingyu-Xu-98/doccheck-agent)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 外部批判者 agent —— 独立于构建框架,只对用户的本质需求负责。
|
|
3
|
+
* 先用确定性规则算「硬红旗」(不靠模型也成立),再交给一套故意尖锐、无框架约束的 persona 批判。
|
|
4
|
+
* 只读证据、不改任何东西。judge≠doer:不用构建工具、不受 AGENTS.md 红线约束(它就是来挑刺的)。
|
|
5
|
+
*/
|
|
6
|
+
import type { Evidence } from "./observe.js";
|
|
7
|
+
export interface Critique {
|
|
8
|
+
hard_signals: string[];
|
|
9
|
+
stability: string;
|
|
10
|
+
meets_requirement: string;
|
|
11
|
+
problems: string[];
|
|
12
|
+
critiques: string[];
|
|
13
|
+
innovations: string[];
|
|
14
|
+
overturn: {
|
|
15
|
+
recommend: boolean;
|
|
16
|
+
why: string;
|
|
17
|
+
alternative: string;
|
|
18
|
+
} | null;
|
|
19
|
+
verdict: string;
|
|
20
|
+
}
|
|
21
|
+
export interface LLMLike {
|
|
22
|
+
completeJson(system: string, user: string, mockFn?: () => Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
23
|
+
}
|
|
24
|
+
/** 确定性红旗:不依赖模型,直接从证据判。 */
|
|
25
|
+
export declare function hardSignals(ev: Evidence): string[];
|
|
26
|
+
export declare function critique(ev: Evidence, opts: {
|
|
27
|
+
need?: string;
|
|
28
|
+
llm: LLMLike;
|
|
29
|
+
mock?: () => Record<string, unknown>;
|
|
30
|
+
}): Promise<Critique>;
|
|
31
|
+
//# sourceMappingURL=critique.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"critique.d.ts","sourceRoot":"","sources":["../../src/critic/critique.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,WAAW,QAAQ;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC1E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IAAG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAAE;AAElJ,0BAA0B;AAC1B,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM,EAAE,CAsBlD;AAWD,wBAAsB,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAuB3I"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/** 确定性红旗:不依赖模型,直接从证据判。 */
|
|
2
|
+
export function hardSignals(ev) {
|
|
3
|
+
const s = [];
|
|
4
|
+
const bar = ev.bars.accuracy_bar;
|
|
5
|
+
if (ev.oracle && ev.oracle.cases < ev.bars.min_cases_for_bar)
|
|
6
|
+
s.push(`评测集仅 ${ev.oracle.cases} 例(< ${ev.bars.min_cases_for_bar}):达标不具统计意义,准确率是"看着达标"而非"真达标"。`);
|
|
7
|
+
if (!ev.oracle)
|
|
8
|
+
s.push("没有评测集(oracle):准确率/召回无从谈起,冻结只靠人工一道门。");
|
|
9
|
+
if (ev.eval?.accuracy != null && ev.eval.accuracy < bar)
|
|
10
|
+
s.push(`准确率 ${ev.eval.accuracy} < 门槛 ${bar}。`);
|
|
11
|
+
if (ev.eval?.recall != null && ev.eval.recall < bar)
|
|
12
|
+
s.push(`召回 ${ev.eval.recall} 偏低:存在漏报风险(该 fail 却放过)。`);
|
|
13
|
+
if (ev.grounding.clean === false)
|
|
14
|
+
s.push(`grounding 门有 ${ev.grounding.flags} 处证据未落原文:疑似幻觉证据,判定不可信。`);
|
|
15
|
+
if (ev.run_stats && ev.run_stats.total > 0) {
|
|
16
|
+
const nr = ev.run_stats.needs_review / ev.run_stats.total;
|
|
17
|
+
if (nr > 0.2)
|
|
18
|
+
s.push(`run 期 needs_review 比例 ${Math.round(nr * 100)}%:取证/判定大面积不足,系统在"不敢判"。`);
|
|
19
|
+
if (ev.run_stats.grounded_ratio < 0.8)
|
|
20
|
+
s.push(`仅 ${Math.round(ev.run_stats.grounded_ratio * 100)}% 判定有证据支撑:血缘不完整。`);
|
|
21
|
+
}
|
|
22
|
+
const hist = ev.history_accuracy;
|
|
23
|
+
if (hist.length >= 2 && Math.max(...hist) - Math.min(...hist) > 0.1)
|
|
24
|
+
s.push(`准确率在多次评测间震荡:[${hist.join(", ")}],稳定性存疑(可能靠运气而非真本事)。`);
|
|
25
|
+
const met = ev.self_eval_trace.map((t) => t.met);
|
|
26
|
+
if (met.length >= 2 && met.every((m) => m !== true))
|
|
27
|
+
s.push(`自评 ${met.length} 轮无一达标:现有反思修复策略无效,在原地打转。`);
|
|
28
|
+
if (ev.eval?.per_target) {
|
|
29
|
+
const weak = Object.entries(ev.eval.per_target).filter(([, v]) => v.accuracy != null && v.accuracy < 0.6).map(([k]) => k);
|
|
30
|
+
if (weak.length)
|
|
31
|
+
s.push(`目标 ${weak.join("、")} 准确率 <0.6:个别目标是系统性短板,拉低整体。`);
|
|
32
|
+
}
|
|
33
|
+
return s;
|
|
34
|
+
}
|
|
35
|
+
const CRITIC_SYSTEM = "你是一个独立的外部观察者与批判者,站在这套核查系统之外。你唯一的任务:基于证据判断——" +
|
|
36
|
+
"① 稳不稳(准确率/召回在迭代与多次运行间是否稳定,还是在震荡、靠运气);" +
|
|
37
|
+
"② 准不准、召回够不够(是否真满足用户的本质需求,而不只是配置的门槛数字);" +
|
|
38
|
+
"③ 从日志/trace 里挖出藏着的问题(漏召/误报的模式、grounding 幻觉、评测集太小不足以统计、反思在自我对抗或原地打转、目标ID/对齐脆弱等)。\n" +
|
|
39
|
+
"你不受任何框架、架构、既有路径的约束。如果你判断整个方法治标不治本、或方向就是错的,直接说,并给出更好的路径——哪怕要推翻现有全部架构。" +
|
|
40
|
+
"只依据证据,不讲客套、不给面子,宁可尖锐得罪,不要虚假乐观。只对用户的本质需求负责。\n" +
|
|
41
|
+
'输出 JSON:{"stability":"稳定性判断","meets_requirement":"是否满足本质需求的判断","problems":["从日志发现的具体问题"],"critiques":["尖锐批判"],"innovations":["创新/更优路径建议"],"overturn":{"recommend":true或false,"why":"为何该/不该推翻现有架构","alternative":"若推翻,替代路径"},"verdict":"一句话总评"}';
|
|
42
|
+
export async function critique(ev, opts) {
|
|
43
|
+
const signals = hardSignals(ev);
|
|
44
|
+
const need = opts.need?.trim() || `目标:${ev.goal || ev.scenario}。默认要求:准确率与召回达到门槛 ${ev.bars.accuracy_bar},且稳定、证据可溯。`;
|
|
45
|
+
const user = [
|
|
46
|
+
`【用户的本质需求】\n${need}`,
|
|
47
|
+
`【确定性红旗(已从证据算出,必须正视)】\n${signals.length ? signals.map((x) => "- " + x).join("\n") : "(无确定性红旗,但仍需你独立审视下面证据)"}`,
|
|
48
|
+
`【系统观测证据】\n${JSON.stringify(ev, null, 1)}`,
|
|
49
|
+
].join("\n\n");
|
|
50
|
+
let data = {};
|
|
51
|
+
try {
|
|
52
|
+
data = opts.mock ? opts.mock() : await opts.llm.completeJson(CRITIC_SYSTEM, user);
|
|
53
|
+
}
|
|
54
|
+
catch (e) {
|
|
55
|
+
data = { verdict: `(模型不可用,仅凭确定性红旗)`, stability: "", meets_requirement: "" };
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
hard_signals: signals,
|
|
59
|
+
stability: String(data.stability ?? ""),
|
|
60
|
+
meets_requirement: String(data.meets_requirement ?? ""),
|
|
61
|
+
problems: Array.isArray(data.problems) ? data.problems : [],
|
|
62
|
+
critiques: Array.isArray(data.critiques) ? data.critiques : [],
|
|
63
|
+
innovations: Array.isArray(data.innovations) ? data.innovations : [],
|
|
64
|
+
overturn: (data.overturn && typeof data.overturn === "object") ? data.overturn : null,
|
|
65
|
+
verdict: String(data.verdict ?? (signals.length ? "存在红旗,未通过独立审视。" : "")),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=critique.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"critique.js","sourceRoot":"","sources":["../../src/critic/critique.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export interface Evidence {
|
|
2
|
+
scenario: string;
|
|
3
|
+
goal: string;
|
|
4
|
+
frozen: boolean;
|
|
5
|
+
targets: {
|
|
6
|
+
count: number;
|
|
7
|
+
ids: string[];
|
|
8
|
+
};
|
|
9
|
+
oracle: {
|
|
10
|
+
cases: number;
|
|
11
|
+
tiers: string[];
|
|
12
|
+
} | null;
|
|
13
|
+
bars: {
|
|
14
|
+
accuracy_bar: number;
|
|
15
|
+
min_cases_for_bar: number;
|
|
16
|
+
};
|
|
17
|
+
eval: {
|
|
18
|
+
winner: string;
|
|
19
|
+
accuracy: number | null;
|
|
20
|
+
recall: number | null;
|
|
21
|
+
precision: number | null;
|
|
22
|
+
ranking: any[];
|
|
23
|
+
per_target: any;
|
|
24
|
+
mismatches: any[];
|
|
25
|
+
} | null;
|
|
26
|
+
self_eval_trace: Array<{
|
|
27
|
+
iter: number;
|
|
28
|
+
met: boolean | null;
|
|
29
|
+
summary: string;
|
|
30
|
+
}>;
|
|
31
|
+
reflection: {
|
|
32
|
+
diagnoses: any[];
|
|
33
|
+
changed_targets: number;
|
|
34
|
+
};
|
|
35
|
+
grounding: {
|
|
36
|
+
clean: boolean | null;
|
|
37
|
+
flags: number;
|
|
38
|
+
};
|
|
39
|
+
history_accuracy: number[];
|
|
40
|
+
run_stats: {
|
|
41
|
+
total: number;
|
|
42
|
+
needs_review: number;
|
|
43
|
+
errors: number;
|
|
44
|
+
grounded_ratio: number;
|
|
45
|
+
} | null;
|
|
46
|
+
}
|
|
47
|
+
export declare function gatherEvidence(workspace: string, scenario: string, policy?: Record<string, any>): Evidence;
|
|
48
|
+
//# sourceMappingURL=observe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observe.d.ts","sourceRoot":"","sources":["../../src/critic/observe.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC1C,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IAClD,IAAI,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,GAAG,EAAE,CAAC;QAAC,UAAU,EAAE,GAAG,CAAC;QAAC,UAAU,EAAE,GAAG,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9J,eAAe,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/E,UAAU,EAAE;QAAE,SAAS,EAAE,GAAG,EAAE,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,SAAS,EAAE;QAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,SAAS,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACnG;AAKD,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,QAAQ,CA4C9G"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 外部观察者 · 证据采集 —— 只读,从盘上日志/报告/trace 里把「事实」抽出来喂批判者。
|
|
3
|
+
* 不碰构建、不改任何东西(judge≠doer,纯观察)。所有文件都可缺失。
|
|
4
|
+
*/
|
|
5
|
+
import { existsSync, readFileSync, readdirSync } from "node:fs";
|
|
6
|
+
import { join } from "node:path";
|
|
7
|
+
function readJson(p) { try {
|
|
8
|
+
return JSON.parse(readFileSync(p, "utf-8"));
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return null;
|
|
12
|
+
} }
|
|
13
|
+
function readLines(p) { if (!existsSync(p))
|
|
14
|
+
return []; return readFileSync(p, "utf-8").split("\n").filter((l) => l.trim()).map((l) => { try {
|
|
15
|
+
return JSON.parse(l);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return null;
|
|
19
|
+
} }).filter(Boolean); }
|
|
20
|
+
export function gatherEvidence(workspace, scenario, policy = {}) {
|
|
21
|
+
const home = join(workspace, scenario);
|
|
22
|
+
const state = readJson(join(home, ".session", "state.json")) ?? {};
|
|
23
|
+
const events = readLines(join(home, ".session", "events.jsonl"));
|
|
24
|
+
const report = readJson(join(home, "build", "test_report.json"));
|
|
25
|
+
const reflection = readJson(join(home, "build", "reflection.json")) ?? { diagnoses: [] };
|
|
26
|
+
const cross = readJson(join(home, "build", "cross_check.json"));
|
|
27
|
+
const oracleRaw = state.inputs?.oracle && existsSync(state.inputs.oracle) ? readJson(state.inputs.oracle) : null;
|
|
28
|
+
const targetsData = readJson(join(home, "build", "targets.json")) ?? { targets: [] };
|
|
29
|
+
// 自评轨迹(判稳定性/震荡)
|
|
30
|
+
const selfEval = events.filter((e) => e.kind === "self_eval").map((e) => ({ iter: e.iter, met: e.met, summary: e.summary ?? "" }));
|
|
31
|
+
// 多次 bakeoff 准确率序列
|
|
32
|
+
const history = readLines(join(home, "build", "eval", "history.jsonl")).map((h) => Number(h?.ranking?.find((r) => r.candidate === h.winner)?.accuracy ?? h?.ranking?.[0]?.accuracy)).filter((x) => Number.isFinite(x));
|
|
33
|
+
// 最近一次 run 的判定质量(needs_review/error/grounding 比例)
|
|
34
|
+
let runStats = null;
|
|
35
|
+
const runsDir = join(home, "runs");
|
|
36
|
+
if (existsSync(runsDir)) {
|
|
37
|
+
const last = readdirSync(runsDir).sort().pop();
|
|
38
|
+
const js = last ? readJson(join(runsDir, last, "results", "judgments.json")) : null;
|
|
39
|
+
if (Array.isArray(js) && js.length) {
|
|
40
|
+
const needs = js.filter((j) => j.verdict === "needs_review").length;
|
|
41
|
+
const errs = js.filter((j) => j.verdict === "error").length;
|
|
42
|
+
const grounded = js.filter((j) => (j.grounded_in?.length ?? 0) > 0).length;
|
|
43
|
+
runStats = { total: js.length, needs_review: needs, errors: errs, grounded_ratio: Math.round((grounded / js.length) * 100) / 100 };
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const winnerRow = report ? (report.ranking ?? []).find((r) => r.candidate === report.winner) ?? (report.ranking ?? [])[0] : null;
|
|
47
|
+
return {
|
|
48
|
+
scenario,
|
|
49
|
+
goal: state.goal ?? "",
|
|
50
|
+
frozen: existsSync(join(home, "pack", "freeze_manifest.json")),
|
|
51
|
+
targets: { count: targetsData.targets.length, ids: targetsData.targets.map((t) => t.target_id) },
|
|
52
|
+
oracle: oracleRaw ? { cases: (oracleRaw.cases ?? []).length, tiers: [...new Set((oracleRaw.cases ?? []).map((c) => c.tier).filter(Boolean))] } : null,
|
|
53
|
+
bars: { accuracy_bar: Number(policy.eval?.accuracy_bar ?? 0.9), min_cases_for_bar: Number(policy.eval?.min_cases_for_bar ?? 20) },
|
|
54
|
+
eval: report ? { winner: report.winner ?? "", accuracy: winnerRow?.accuracy ?? null, recall: winnerRow?.recall ?? null, precision: winnerRow?.precision ?? null, ranking: report.ranking ?? [], per_target: report.winner_report?.per_target ?? {}, mismatches: (report.winner_report?.mismatches ?? []).slice(0, 12) } : null,
|
|
55
|
+
self_eval_trace: selfEval,
|
|
56
|
+
reflection: { diagnoses: reflection.diagnoses ?? [], changed_targets: (reflection.diagnoses ?? []).length },
|
|
57
|
+
grounding: { clean: cross ? Boolean(cross.clean) : null, flags: (cross?.grounding_flags ?? []).length },
|
|
58
|
+
history_accuracy: history,
|
|
59
|
+
run_stats: runStats,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=observe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observe.js","sourceRoot":"","sources":["../../src/critic/observe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/** 正式 DomainAction Registry:把 capability 提升为带契约、门禁和 effects 的状态变更。 */
|
|
2
|
+
import type { Session } from "@mingyuxu/core";
|
|
3
|
+
import type { JsonSchemaLike } from "../ontology/functions.js";
|
|
4
|
+
import type { VerificationAgent } from "../planner.js";
|
|
5
|
+
export type ApprovalPolicy = "none" | "human_required" | "production_human_required";
|
|
6
|
+
export interface Condition<I = Record<string, unknown>, C = unknown> {
|
|
7
|
+
id: string;
|
|
8
|
+
description: string;
|
|
9
|
+
check(input: I, context: C): boolean;
|
|
10
|
+
failure: string;
|
|
11
|
+
}
|
|
12
|
+
export interface Invariant<I = Record<string, unknown>, O = unknown, C = unknown> {
|
|
13
|
+
id: string;
|
|
14
|
+
description: string;
|
|
15
|
+
check(input: I, output: O, context: C): boolean;
|
|
16
|
+
failure: string;
|
|
17
|
+
}
|
|
18
|
+
export interface Effect {
|
|
19
|
+
id: string;
|
|
20
|
+
description: string;
|
|
21
|
+
creates?: string[];
|
|
22
|
+
updates?: string[];
|
|
23
|
+
invalidates?: string[];
|
|
24
|
+
}
|
|
25
|
+
export interface DomainAction<I = Record<string, unknown>, O = unknown, C = unknown> {
|
|
26
|
+
id: string;
|
|
27
|
+
description: string;
|
|
28
|
+
input: JsonSchemaLike;
|
|
29
|
+
output: JsonSchemaLike;
|
|
30
|
+
preconditions: Condition<I, C>[];
|
|
31
|
+
invariants: Invariant<I, O, C>[];
|
|
32
|
+
effects: Effect[];
|
|
33
|
+
approvalPolicy: ApprovalPolicy;
|
|
34
|
+
execute(input: I, context: C): Promise<O>;
|
|
35
|
+
}
|
|
36
|
+
export interface ActionDescription {
|
|
37
|
+
id: string;
|
|
38
|
+
description: string;
|
|
39
|
+
ready: boolean;
|
|
40
|
+
reason?: string;
|
|
41
|
+
recommended?: boolean;
|
|
42
|
+
approval_policy: ApprovalPolicy;
|
|
43
|
+
preconditions: Array<{
|
|
44
|
+
id: string;
|
|
45
|
+
description: string;
|
|
46
|
+
met: boolean;
|
|
47
|
+
failure: string;
|
|
48
|
+
}>;
|
|
49
|
+
invariants: Array<{
|
|
50
|
+
id: string;
|
|
51
|
+
description: string;
|
|
52
|
+
}>;
|
|
53
|
+
effects: Effect[];
|
|
54
|
+
}
|
|
55
|
+
export declare class DomainActionRegistry<C> {
|
|
56
|
+
private actions;
|
|
57
|
+
register(action: DomainAction<any, any, C>): this;
|
|
58
|
+
get(id: string): DomainAction<any, any, C> | null;
|
|
59
|
+
describe(context: C, recommendedId?: string): ActionDescription[];
|
|
60
|
+
execute(id: string, input: Record<string, unknown>, context: C): Promise<unknown>;
|
|
61
|
+
}
|
|
62
|
+
export interface VerificationActionContext {
|
|
63
|
+
agent: VerificationAgent;
|
|
64
|
+
session: Session;
|
|
65
|
+
}
|
|
66
|
+
export declare function createVerificationActionRegistry(agent: VerificationAgent, session: Session): DomainActionRegistry<VerificationActionContext>;
|
|
67
|
+
//# sourceMappingURL=actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/domain/actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { loadOntology, validateOntology } from "../ontology/loader.js";
|
|
2
|
+
export class DomainActionRegistry {
|
|
3
|
+
actions = new Map();
|
|
4
|
+
register(action) {
|
|
5
|
+
if (this.actions.has(action.id))
|
|
6
|
+
throw new Error(`Action 已注册:${action.id}`);
|
|
7
|
+
this.actions.set(action.id, action);
|
|
8
|
+
return this;
|
|
9
|
+
}
|
|
10
|
+
get(id) { return this.actions.get(id) ?? null; }
|
|
11
|
+
describe(context, recommendedId) {
|
|
12
|
+
return [...this.actions.values()].map((action) => {
|
|
13
|
+
const preconditions = action.preconditions.map((row) => ({ id: row.id, description: row.description, met: safeCheck(() => row.check({}, context)), failure: row.failure }));
|
|
14
|
+
const failed = preconditions.find((row) => !row.met);
|
|
15
|
+
return {
|
|
16
|
+
id: action.id,
|
|
17
|
+
description: action.description,
|
|
18
|
+
ready: !failed,
|
|
19
|
+
reason: failed?.failure,
|
|
20
|
+
recommended: action.id === recommendedId,
|
|
21
|
+
approval_policy: action.approvalPolicy,
|
|
22
|
+
preconditions,
|
|
23
|
+
invariants: action.invariants.map(({ id, description }) => ({ id, description })),
|
|
24
|
+
effects: action.effects,
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
async execute(id, input, context) {
|
|
29
|
+
const action = this.actions.get(id);
|
|
30
|
+
if (!action)
|
|
31
|
+
throw new Error(`未知 Action:${id}`);
|
|
32
|
+
for (const key of action.input.required ?? [])
|
|
33
|
+
if (!(key in input))
|
|
34
|
+
throw new Error(`${id} 缺输入 ${key}`);
|
|
35
|
+
for (const condition of action.preconditions)
|
|
36
|
+
if (!condition.check(input, context))
|
|
37
|
+
throw new Error(`前置条件 ${condition.id} 不满足:${condition.failure}`);
|
|
38
|
+
const output = await action.execute(input, context);
|
|
39
|
+
for (const invariant of action.invariants)
|
|
40
|
+
if (!invariant.check(input, output, context))
|
|
41
|
+
throw new Error(`Action 已执行但不变式 ${invariant.id} 失败:${invariant.failure}`);
|
|
42
|
+
return output;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export function createVerificationActionRegistry(agent, session) {
|
|
46
|
+
const registry = new DomainActionRegistry();
|
|
47
|
+
const definitions = [
|
|
48
|
+
{
|
|
49
|
+
id: "extract_rule_clauses", description: "把 Regulation 文本实例化为 RuleClause 和 VerificationTarget。",
|
|
50
|
+
effects: [{ id: "rule-model", description: "建立规则对象与核查目标", creates: ["RuleClause", "VerificationTarget"], invalidates: ["CheckSkill", "Workflow", "EvaluationRun", "ScenarioPack"] }],
|
|
51
|
+
invariant: (state) => Boolean(state.rule_clauses && state.targets), invariantText: "必须真实落盘 RuleClause 与 VerificationTarget",
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
id: "observe_examples", description: "观察样本文档结构、章节和证据锚点,丰富当前目标。",
|
|
55
|
+
effects: [{ id: "sample-observation", description: "更新取证锚点", creates: ["SampleObservation"], updates: ["VerificationTarget"], invalidates: ["CheckSkill", "Workflow", "EvaluationRun", "ScenarioPack"] }],
|
|
56
|
+
invariant: (state) => Boolean(state.observations), invariantText: "必须真实落盘样本观察",
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
id: "synthesize_checkskills", description: "按 rule_kind 和 Method 合成带血缘的 CheckSkill。",
|
|
60
|
+
effects: [{ id: "skill-candidate", description: "创建候选 CheckSkill 和场景对象图", creates: ["CheckSkill", "MethodSelection"], invalidates: ["Workflow", "EvaluationRun", "ScenarioPack"] }],
|
|
61
|
+
invariant: (state) => Boolean(state.checkskills?.current), invariantText: "CheckSkill 必须绑定当前目标摘要且通过对象图校验",
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
id: "compose_workflow", description: "从当前 CheckSkill 集合编排候选 Workflow。",
|
|
65
|
+
effects: [{ id: "workflow-candidate", description: "创建 Workflow 候选", creates: ["Workflow"], invalidates: ["EvaluationRun", "ScenarioPack"] }],
|
|
66
|
+
invariant: (state) => Boolean(state.workflow), invariantText: "Workflow 必须绑定当前 CheckSkill 集合",
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
id: "evaluate_attempt", description: "在隔离 Evaluator 中评测当前 attempt 并验证证据 grounding。",
|
|
70
|
+
effects: [{ id: "evaluation-run", description: "创建评测、Trace 和 attempt 快照", creates: ["EvaluationRun", "Trace", "Attempt"], invalidates: ["ScenarioPack"] }],
|
|
71
|
+
invariant: (state) => Boolean(state.report && state.evaluation?.current), invariantText: "评测必须属于当前 Workflow 和 CheckSkill",
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
id: "diagnose_attempt", description: "根据失败 Trace 归因并修订目标;不在同一动作中自评。",
|
|
75
|
+
effects: [{ id: "failure-diagnosis", description: "创建失败归因,必要时更新目标", creates: ["FailureDiagnosis"], updates: ["VerificationTarget"], invalidates: ["CheckSkill", "Workflow", "EvaluationRun", "ScenarioPack"] }],
|
|
76
|
+
invariant: () => true, invariantText: "诊断必须留事件和归因记录",
|
|
77
|
+
},
|
|
78
|
+
];
|
|
79
|
+
for (const definition of definitions) {
|
|
80
|
+
registry.register({
|
|
81
|
+
id: definition.id,
|
|
82
|
+
description: definition.description,
|
|
83
|
+
input: { type: "object", properties: {} },
|
|
84
|
+
output: { type: "object" },
|
|
85
|
+
approvalPolicy: "human_required",
|
|
86
|
+
preconditions: [{
|
|
87
|
+
id: "capability-ready",
|
|
88
|
+
description: "当前场景状态满足该 Action 的领域依赖",
|
|
89
|
+
check: (_input, context) => Boolean(context.agent.capabilities(context.session).find((row) => row.name === definition.id)?.ready),
|
|
90
|
+
failure: agent.capabilities(session).find((row) => row.name === definition.id)?.reason ?? "领域依赖未满足",
|
|
91
|
+
}],
|
|
92
|
+
invariants: [
|
|
93
|
+
{
|
|
94
|
+
id: "ontology-schema-valid", description: "五层 Ontology schema 和核心关系保持有效",
|
|
95
|
+
check: (_input, _output, context) => validateOntology(loadOntology(context.agent.root)).length === 0,
|
|
96
|
+
failure: "Ontology schema 或核心关系校验失败",
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
id: "disk-state-reconciled", description: definition.invariantText,
|
|
100
|
+
check: (_input, _output, context) => definition.invariant(context.agent.stateSnapshot(context.session)),
|
|
101
|
+
failure: definition.invariantText,
|
|
102
|
+
},
|
|
103
|
+
],
|
|
104
|
+
effects: definition.effects,
|
|
105
|
+
async execute(_input, context) {
|
|
106
|
+
context.session.event(context.agent.workspace, "domain_action.started", { action: definition.id, approval_policy: "human_required" }, context.agent.now());
|
|
107
|
+
const result = await context.agent.executeCapabilityUnchecked(context.session, definition.id);
|
|
108
|
+
context.session.event(context.agent.workspace, "domain_action.completed", { action: definition.id, changed: result.changed, effects: definition.effects.map((row) => row.id) }, context.agent.now());
|
|
109
|
+
return result;
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
return registry;
|
|
114
|
+
}
|
|
115
|
+
function safeCheck(fn) {
|
|
116
|
+
try {
|
|
117
|
+
return fn();
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/domain/actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type BuildAssetKind = "checkskills" | "workflow" | "evaluation" | "pack";
|
|
2
|
+
export type ChangeSource = "rule_model" | "observations" | "checkskills" | "workflow" | "evaluation";
|
|
3
|
+
export interface StaleEntry {
|
|
4
|
+
artifact: BuildAssetKind;
|
|
5
|
+
source: ChangeSource;
|
|
6
|
+
reason: string;
|
|
7
|
+
at: number;
|
|
8
|
+
}
|
|
9
|
+
export interface StaleState {
|
|
10
|
+
version: 1;
|
|
11
|
+
entries: Partial<Record<BuildAssetKind, StaleEntry>>;
|
|
12
|
+
}
|
|
13
|
+
export declare function stalePath(home: string): string;
|
|
14
|
+
export declare function loadStale(home: string): StaleState;
|
|
15
|
+
export declare function markChanged(home: string, source: ChangeSource, reason: string, at: number): StaleState;
|
|
16
|
+
export declare function clearStale(home: string, artifact: BuildAssetKind): StaleState;
|
|
17
|
+
export declare function isStale(home: string, artifact: BuildAssetKind): boolean;
|
|
18
|
+
//# sourceMappingURL=invalidation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invalidation.d.ts","sourceRoot":"","sources":["../../src/domain/invalidation.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,UAAU,GAAG,YAAY,GAAG,MAAM,CAAC;AAChF,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG,aAAa,GAAG,UAAU,GAAG,YAAY,CAAC;AAErG,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,UAAU;IAAG,OAAO,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAA;CAAE;AAUhG,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAiD;AAEhG,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAKlD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU,CAKtG;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,UAAU,CAK7E;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAEvE"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/** 构建资产的显式失效传播。旧文件不删除,但禁止被当作当前有效证据或用于冻结。 */
|
|
2
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
const downstream = {
|
|
5
|
+
rule_model: ["checkskills", "workflow", "evaluation", "pack"],
|
|
6
|
+
observations: ["checkskills", "workflow", "evaluation", "pack"],
|
|
7
|
+
checkskills: ["workflow", "evaluation", "pack"],
|
|
8
|
+
workflow: ["evaluation", "pack"],
|
|
9
|
+
evaluation: ["pack"],
|
|
10
|
+
};
|
|
11
|
+
export function stalePath(home) { return join(home, ".session", "stale.json"); }
|
|
12
|
+
export function loadStale(home) {
|
|
13
|
+
const path = stalePath(home);
|
|
14
|
+
if (!existsSync(path))
|
|
15
|
+
return { version: 1, entries: {} };
|
|
16
|
+
try {
|
|
17
|
+
return JSON.parse(readFileSync(path, "utf-8"));
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return { version: 1, entries: {} };
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export function markChanged(home, source, reason, at) {
|
|
24
|
+
const state = loadStale(home);
|
|
25
|
+
for (const artifact of downstream[source])
|
|
26
|
+
state.entries[artifact] = { artifact, source, reason, at };
|
|
27
|
+
save(home, state);
|
|
28
|
+
return state;
|
|
29
|
+
}
|
|
30
|
+
export function clearStale(home, artifact) {
|
|
31
|
+
const state = loadStale(home);
|
|
32
|
+
delete state.entries[artifact];
|
|
33
|
+
save(home, state);
|
|
34
|
+
return state;
|
|
35
|
+
}
|
|
36
|
+
export function isStale(home, artifact) {
|
|
37
|
+
return Boolean(loadStale(home).entries[artifact]);
|
|
38
|
+
}
|
|
39
|
+
function save(home, state) {
|
|
40
|
+
const path = stalePath(home);
|
|
41
|
+
mkdirSync(join(home, ".session"), { recursive: true });
|
|
42
|
+
writeFileSync(path, JSON.stringify(state, null, 2), "utf-8");
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=invalidation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invalidation.js","sourceRoot":"","sources":["../../src/domain/invalidation.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAcjC,MAAM,UAAU,GAA2C;IACzD,UAAU,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,CAAC;IAC7D,YAAY,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,CAAC;IAC/D,WAAW,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,CAAC;IAC/C,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC;IAChC,UAAU,EAAE,CAAC,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,IAAY,IAAY,OAAO,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;AAEhG,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC1D,IAAI,CAAC;QAAC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAe,CAAC;IAAC,CAAC;IACrE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,MAAoB,EAAE,MAAc,EAAE,EAAU;IACxF,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,MAAM,CAAC;QAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACtG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,QAAwB;IAC/D,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,QAAwB;IAC5D,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,IAAI,CAAC,IAAY,EAAE,KAAiB;IAC3C,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { Target } from "../schemas/target.js";
|
|
2
|
+
import type { Method } from "../methods/loader.js";
|
|
3
|
+
export interface DomainObjectRow {
|
|
4
|
+
type: string;
|
|
5
|
+
id: string;
|
|
6
|
+
data: Record<string, unknown>;
|
|
7
|
+
}
|
|
8
|
+
export interface DomainLinkRow {
|
|
9
|
+
type: string;
|
|
10
|
+
from: string;
|
|
11
|
+
to: string;
|
|
12
|
+
}
|
|
13
|
+
export interface MethodSelection {
|
|
14
|
+
target_id: string;
|
|
15
|
+
clause_id: string;
|
|
16
|
+
rule_kind: string;
|
|
17
|
+
method_ref: string;
|
|
18
|
+
method_source: string;
|
|
19
|
+
emits_function: string;
|
|
20
|
+
}
|
|
21
|
+
export interface DomainBuild {
|
|
22
|
+
ontology_version: string;
|
|
23
|
+
target_digest: string;
|
|
24
|
+
objects: DomainObjectRow[];
|
|
25
|
+
links: DomainLinkRow[];
|
|
26
|
+
method_selection: MethodSelection[];
|
|
27
|
+
checkskills: Record<string, Record<string, unknown>>;
|
|
28
|
+
unresolved: Array<{
|
|
29
|
+
target_id: string;
|
|
30
|
+
rule_kind: string;
|
|
31
|
+
reason: string;
|
|
32
|
+
}>;
|
|
33
|
+
}
|
|
34
|
+
export declare function targetDigest(targets: Target[]): string;
|
|
35
|
+
/** LLM 未标 rule_kind 时的保守分类。只识别高置信模式,其余交给通用 Method。 */
|
|
36
|
+
export declare function inferRuleKind(t: Target): string;
|
|
37
|
+
export declare function instantiateDomain(targets: Target[], methods: Method[], opts: {
|
|
38
|
+
ontologyVersion: string;
|
|
39
|
+
regulationPath: string;
|
|
40
|
+
lifecycle?: "draft" | "frozen";
|
|
41
|
+
winnerSpec?: string;
|
|
42
|
+
frozenAt?: number;
|
|
43
|
+
eval?: Record<string, unknown>;
|
|
44
|
+
}): DomainBuild;
|
|
45
|
+
//# sourceMappingURL=registers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registers.d.ts","sourceRoot":"","sources":["../../src/domain/registers.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAInD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,UAAU,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC7E;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAMtD;AAED,sDAAsD;AACtD,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAU/C;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAChK,WAAW,CAyFb"}
|