dsh-data-domain-knowledge 0.1.0-alpha.2 → 0.1.0-alpha.3

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 (117) hide show
  1. package/README.md +31 -7
  2. package/cordis.patch.yml +11 -5
  3. package/lib/client.js +5557 -3056
  4. package/lib/doc-page.js +7740 -0
  5. package/lib/types/convert/host.d.ts.map +1 -1
  6. package/lib/types/convert/host.js +36 -9
  7. package/lib/types/convert/host.js.map +1 -1
  8. package/lib/types/diagnosis/cards.d.ts +8 -7
  9. package/lib/types/diagnosis/cards.d.ts.map +1 -1
  10. package/lib/types/diagnosis/cards.js +119 -49
  11. package/lib/types/diagnosis/cards.js.map +1 -1
  12. package/lib/types/diagnosis/run.d.ts +51 -0
  13. package/lib/types/diagnosis/run.d.ts.map +1 -0
  14. package/lib/types/diagnosis/run.js +239 -0
  15. package/lib/types/diagnosis/run.js.map +1 -0
  16. package/lib/types/diagnosis/schema.d.ts +25 -2
  17. package/lib/types/diagnosis/schema.d.ts.map +1 -1
  18. package/lib/types/diagnosis/schema.js +64 -25
  19. package/lib/types/diagnosis/schema.js.map +1 -1
  20. package/lib/types/diagnosis/seed-source.d.ts +17 -2
  21. package/lib/types/diagnosis/seed-source.d.ts.map +1 -1
  22. package/lib/types/diagnosis/seed-source.js +18 -1
  23. package/lib/types/diagnosis/seed-source.js.map +1 -1
  24. package/lib/types/diagnosis/seed.d.ts +32 -42
  25. package/lib/types/diagnosis/seed.d.ts.map +1 -1
  26. package/lib/types/diagnosis/seed.js +187 -51
  27. package/lib/types/diagnosis/seed.js.map +1 -1
  28. package/lib/types/diagnosis/store.d.ts +114 -26
  29. package/lib/types/diagnosis/store.d.ts.map +1 -1
  30. package/lib/types/diagnosis/store.js +336 -167
  31. package/lib/types/diagnosis/store.js.map +1 -1
  32. package/lib/types/diagnosis/types.d.ts +168 -16
  33. package/lib/types/diagnosis/types.d.ts.map +1 -1
  34. package/lib/types/diagnosis/types.js +1 -1
  35. package/lib/types/diagnosis/types.js.map +1 -1
  36. package/lib/types/document-page.d.ts +39 -0
  37. package/lib/types/document-page.d.ts.map +1 -0
  38. package/lib/types/document-page.js +43 -0
  39. package/lib/types/document-page.js.map +1 -0
  40. package/lib/types/fs-atomic.d.ts +12 -0
  41. package/lib/types/fs-atomic.d.ts.map +1 -0
  42. package/lib/types/fs-atomic.js +42 -0
  43. package/lib/types/fs-atomic.js.map +1 -0
  44. package/lib/types/index.d.ts.map +1 -1
  45. package/lib/types/index.js +214 -24
  46. package/lib/types/index.js.map +1 -1
  47. package/lib/types/knowledge-bases.d.ts +10 -2
  48. package/lib/types/knowledge-bases.d.ts.map +1 -1
  49. package/lib/types/knowledge-bases.js +20 -18
  50. package/lib/types/knowledge-bases.js.map +1 -1
  51. package/lib/types/proposals.d.ts +166 -0
  52. package/lib/types/proposals.d.ts.map +1 -0
  53. package/lib/types/proposals.js +238 -0
  54. package/lib/types/proposals.js.map +1 -0
  55. package/lib/types/runtime.d.ts +199 -7
  56. package/lib/types/runtime.d.ts.map +1 -1
  57. package/lib/types/runtime.js +728 -145
  58. package/lib/types/runtime.js.map +1 -1
  59. package/lib/types/settings-schema.d.ts +2 -2
  60. package/lib/types/types.d.ts +61 -10
  61. package/lib/types/types.d.ts.map +1 -1
  62. package/lib/types/types.js +56 -8
  63. package/lib/types/types.js.map +1 -1
  64. package/lib/types/wiki-types.d.ts +8 -1
  65. package/lib/types/wiki-types.d.ts.map +1 -1
  66. package/lib/types/wiki-types.js +16 -25
  67. package/lib/types/wiki-types.js.map +1 -1
  68. package/package.json +4 -3
  69. package/preset/tita-data-agent/agent.cordis.yml +11 -5
  70. package/src/client/DirectoryPicker.tsx +12 -12
  71. package/src/client/InfoHint.tsx +21 -8
  72. package/src/client/IntentTab.tsx +20 -26
  73. package/src/client/KnowledgeBaseTab.tsx +190 -80
  74. package/src/client/KnowledgePanel.tsx +42 -9
  75. package/src/client/KnowledgeStepRail.tsx +3 -0
  76. package/src/client/NodeSettings.tsx +20 -22
  77. package/src/client/PreviewSections.tsx +87 -33
  78. package/src/client/ProposalReview.tsx +313 -0
  79. package/src/client/TypeDefinitionDrawer.tsx +72 -38
  80. package/src/client/WikiTypeEditor.tsx +193 -77
  81. package/src/client/arch/AgentArchitectureGraph.tsx +143 -14
  82. package/src/client/arch/NodeLogicPanel.tsx +6 -3
  83. package/src/client/arch/model.ts +164 -26
  84. package/src/client/architecture.css +29 -9
  85. package/src/client/architecture.tsx +54 -29
  86. package/src/client/attribution/AttributionGraph.tsx +481 -34
  87. package/src/client/attribution/AttributionTab.tsx +507 -106
  88. package/src/client/attribution/CaseView.tsx +9 -14
  89. package/src/client/attribution/GraphStage.tsx +25 -18
  90. package/src/client/attribution/RunView.tsx +27 -9
  91. package/src/client/attribution/StageChrome.tsx +296 -140
  92. package/src/client/attribution/graph-options.ts +611 -47
  93. package/src/client/attribution/model.ts +559 -30
  94. package/src/client/convert/ConvertPanel.tsx +6 -1
  95. package/src/client/doc-page.css +134 -0
  96. package/src/client/doc-page.tsx +263 -0
  97. package/src/client/panel-state.ts +105 -0
  98. package/src/client/request.ts +36 -0
  99. package/src/client/styles.css +317 -43
  100. package/src/client/useFitScale.ts +15 -2
  101. package/src/client/wiki-type-groups.ts +86 -0
  102. package/src/convert/host.ts +41 -7
  103. package/src/diagnosis/cards.ts +120 -50
  104. package/src/diagnosis/run.ts +245 -0
  105. package/src/diagnosis/schema.ts +67 -26
  106. package/src/diagnosis/seed-source.ts +28 -3
  107. package/src/diagnosis/seed.ts +187 -85
  108. package/src/diagnosis/store.ts +358 -174
  109. package/src/diagnosis/types.ts +181 -16
  110. package/src/document-page.ts +51 -0
  111. package/src/fs-atomic.ts +42 -0
  112. package/src/index.ts +209 -22
  113. package/src/knowledge-bases.ts +20 -18
  114. package/src/proposals.ts +337 -0
  115. package/src/runtime.ts +736 -135
  116. package/src/types.ts +113 -19
  117. package/src/wiki-types.ts +17 -27
@@ -0,0 +1,238 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { mkdir, readFile, readdir, unlink } from 'node:fs/promises';
3
+ import { join } from 'node:path';
4
+ import { writeTextAtomic } from './fs-atomic.js';
5
+ import { validateCardAgainstType } from './wiki-types.js';
6
+ const TRIGGER_LABEL = {
7
+ extraction: '编译时自动抽取',
8
+ agent: 'Agent 主动提议',
9
+ 'diagnosis-run': '一次排查结束',
10
+ };
11
+ export function triggerLabel(trigger) {
12
+ return TRIGGER_LABEL[trigger] ?? trigger;
13
+ }
14
+ function shortHash(value) {
15
+ return createHash('sha256').update(value).digest('hex').slice(0, 16);
16
+ }
17
+ /**
18
+ * 提议的身份:**同一件事重跑不会产生第二条**。
19
+ *
20
+ * 它**刻意不含 `sourceRef`**。同一张卡片常常由多份来源共同支撑(同一份口径在两篇文档里
21
+ * 都写了、一次排查与它的复盘各指一遍)—— 把来源算进身份,同一条提议就会按来源裂成
22
+ * 好几条,人 review 时要在队列里连着点头三次,而且每次点的都是同一件事。
23
+ *
24
+ * 来源没有被丢掉:它是**多值**的。`sourceRef` 记「最先触发它的那一条」,
25
+ * `sourceRefs` 累积全部触发它的来源(见 `upsert` 的合并规则)。
26
+ */
27
+ export function proposalIdOf(input) {
28
+ return `p-${shortHash(`${input.action}|${input.entityType}|${input.entityId}`)}`;
29
+ }
30
+ /**
31
+ * 内容指纹。
32
+ *
33
+ * 它只包含**会改变卡片内容的东西**(标题、正文、出处):状态流转、时间戳不参与 ——
34
+ * 否则一次无意义的写入就会让「拒绝过的那条」重新冒出来。
35
+ */
36
+ export function fingerprintOf(input) {
37
+ const refs = [...(input.sourceRefs ?? [])].sort().join(',');
38
+ return shortHash(`${input.entityType}|${input.entityId}|${input.title}|${input.content}|${refs}`);
39
+ }
40
+ /** 卡片正文的指纹,用来发现「提议之后卡片又被人改过」。 */
41
+ export function contentHashOf(content) {
42
+ return shortHash(content);
43
+ }
44
+ export class CardProposalStore {
45
+ host;
46
+ constructor(host) {
47
+ this.host = host;
48
+ }
49
+ get dir() { return join(this.host.memoryRoot, 'card-proposals'); }
50
+ /** 全部提议,新的在前。读不动就返回空 —— 提议是可重建的待办,不是数据。 */
51
+ async list() {
52
+ let names;
53
+ try {
54
+ names = await readdir(this.dir);
55
+ }
56
+ catch {
57
+ return [];
58
+ }
59
+ const result = [];
60
+ for (const name of names) {
61
+ if (!name.endsWith('.json'))
62
+ continue;
63
+ try {
64
+ const value = JSON.parse(await readFile(join(this.dir, name), 'utf8'));
65
+ if (value && typeof value.id === 'string')
66
+ result.push(value);
67
+ }
68
+ catch { /* 坏掉的一条不该让整张待办清单消失 */ }
69
+ }
70
+ return result.sort((left, right) => right.updatedAt.localeCompare(left.updatedAt));
71
+ }
72
+ async get(id) {
73
+ if (!/^p-[a-f0-9]{16}$/.test(id))
74
+ return undefined;
75
+ try {
76
+ const value = JSON.parse(await readFile(join(this.dir, `${id}.json`), 'utf8'));
77
+ return typeof value?.id === 'string' ? value : undefined;
78
+ }
79
+ catch {
80
+ return undefined;
81
+ }
82
+ }
83
+ async pending() {
84
+ return (await this.list()).filter(item => item.status === 'pending');
85
+ }
86
+ /**
87
+ * 写入一批提议。返回真正**新增或更新**的那些(被指纹判重挡掉的不会出现在结果里)。
88
+ *
89
+ * 三条判重规则,按已有提议的状态分:
90
+ * - `pending`:原地更新(来源可能又长了一节,正文跟着变),保留 `createdAt`;
91
+ * - `confirmed` / `written`:指纹相同就跳过(人已经说过是了,不必再问一遍);
92
+ * - `rejected`:指纹相同就跳过(不重复打扰人),**指纹变了才重新提**(知识确实变了)。
93
+ */
94
+ async upsert(inputs) {
95
+ if (inputs.length === 0)
96
+ return [];
97
+ await mkdir(this.dir, { recursive: true });
98
+ const existing = new Map((await this.list()).map(item => [item.id, item]));
99
+ const schema = this.host.schema();
100
+ const touched = [];
101
+ const now = new Date().toISOString();
102
+ for (const input of inputs) {
103
+ const id = proposalIdOf(input);
104
+ const fingerprint = fingerprintOf(input);
105
+ const previous = existing.get(id);
106
+ if (previous && previous.fingerprint === fingerprint && previous.status !== 'pending')
107
+ continue;
108
+ if (previous && previous.status === 'pending' && previous.fingerprint === fingerprint)
109
+ continue;
110
+ const issues = this.issuesOf(schema, input);
111
+ /**
112
+ * 出处**合并**而不是覆盖。
113
+ *
114
+ * 提议的身份不含来源(见 `proposalIdOf`),所以第二份来源再提同一张卡片时命中的是
115
+ * 同一条提议。覆盖的话,第一份来源的出处会凭空消失 —— 而「这张卡片由哪几份来源
116
+ * 共同支撑」正是 review 时最需要看到的东西。
117
+ */
118
+ const sourceRefs = [...new Set([...(previous?.sourceRefs ?? []), ...(input.sourceRefs ?? [input.sourceRef])])];
119
+ const next = {
120
+ id,
121
+ sourceRef: previous?.sourceRef ?? input.sourceRef,
122
+ trigger: input.trigger,
123
+ action: input.action,
124
+ entityType: input.entityType,
125
+ entityId: input.entityId,
126
+ title: input.title,
127
+ ...(input.summary ? { summary: input.summary } : {}),
128
+ content: input.content,
129
+ sourceRefs,
130
+ ...(input.metadata ? { metadata: input.metadata } : {}),
131
+ status: 'pending',
132
+ fingerprint,
133
+ createdAt: previous?.createdAt ?? now,
134
+ updatedAt: now,
135
+ issues,
136
+ ...(input.baseHash ? { baseHash: input.baseHash } : {}),
137
+ };
138
+ await writeTextAtomic(join(this.dir, `${id}.json`), JSON.stringify(next, null, 2));
139
+ existing.set(id, next);
140
+ touched.push(next);
141
+ }
142
+ return touched;
143
+ }
144
+ /** 提议阶段的三层校验。缺字段 / 图断了 / 知识没用,各报各的。 */
145
+ issuesOf(schema, input) {
146
+ const type = schema.types.find(def => def.id === input.entityType);
147
+ if (!type) {
148
+ return [{ level: 'format', field: 'entity_type', message: `未知卡片类型:${input.entityType}` }];
149
+ }
150
+ return validateCardAgainstType(type, {
151
+ title: input.title,
152
+ content: input.content,
153
+ sourceRefs: input.sourceRefs ?? [input.sourceRef],
154
+ metadata: input.metadata ?? {},
155
+ ...(input.summary ? { summary: input.summary } : {}),
156
+ });
157
+ }
158
+ /**
159
+ * 人点了「通过」。
160
+ *
161
+ * **确认与落卡是两件事**,所以这里只标状态、不写卡片:
162
+ * - 面板上的主操作是「确认并写入」,它先调这里再调 `writeCard`;
163
+ * - 副操作是「仅确认」,落卡交给 Agent 的 `write_knowledge_card`(它要求这条提议
164
+ * 已确认且尚未落卡)。两条路都过同一道门。
165
+ */
166
+ async confirm(id, by, patch) {
167
+ const previous = await this.get(id);
168
+ if (!previous || previous.status !== 'pending')
169
+ return undefined;
170
+ const next = {
171
+ ...previous,
172
+ ...(patch?.title !== undefined ? { title: patch.title } : {}),
173
+ ...(patch?.summary !== undefined ? { summary: patch.summary } : {}),
174
+ ...(patch?.content !== undefined ? { content: patch.content } : {}),
175
+ status: 'confirmed',
176
+ confirmedAt: new Date().toISOString(),
177
+ confirmedBy: by,
178
+ reviewedAt: new Date().toISOString(),
179
+ reviewedBy: by,
180
+ updatedAt: new Date().toISOString(),
181
+ };
182
+ // 人改过之后必须**再跑一遍**校验:提议阶段那一次是 Agent 自己补的,
183
+ // 这一次的修改来自另一个人(0021 §6.5 说清了为什么要两道都跑)。
184
+ next.issues = this.issuesOf(this.host.schema(), {
185
+ sourceRef: next.sourceRef, trigger: next.trigger, action: next.action,
186
+ entityType: next.entityType, entityId: next.entityId, title: next.title,
187
+ ...(next.summary ? { summary: next.summary } : {}),
188
+ content: next.content, sourceRefs: next.sourceRefs,
189
+ ...(next.metadata ? { metadata: next.metadata } : {}),
190
+ });
191
+ next.fingerprint = fingerprintOf(next);
192
+ await writeTextAtomic(join(this.dir, `${id}.json`), JSON.stringify(next, null, 2));
193
+ return next;
194
+ }
195
+ /** 落卡成功之后回填。没有这一步,「已确认但没落卡」和「已经落卡了」分不开。 */
196
+ async markWritten(id) {
197
+ const previous = await this.get(id);
198
+ if (!previous)
199
+ return undefined;
200
+ const next = { ...previous, writtenAt: new Date().toISOString(), updatedAt: new Date().toISOString() };
201
+ await writeTextAtomic(join(this.dir, `${id}.json`), JSON.stringify(next, null, 2));
202
+ return next;
203
+ }
204
+ /**
205
+ * 人点了「拒绝」。原因留档 —— 它同时是「下次不要再提同一条」的判据。
206
+ *
207
+ * 只有 `pending` 能被拒绝:一条已经确认(甚至已经落卡)的提议再被拒,会让
208
+ * 「卡片在库里、提议却是拒绝态」这种自相矛盾的状态出现在待办区里。
209
+ */
210
+ async reject(id, reason, by) {
211
+ const previous = await this.get(id);
212
+ if (!previous || previous.status !== 'pending')
213
+ return undefined;
214
+ const next = {
215
+ ...previous,
216
+ status: 'rejected',
217
+ reason: reason.trim() || '(没有写原因)',
218
+ reviewedAt: new Date().toISOString(),
219
+ reviewedBy: by,
220
+ updatedAt: new Date().toISOString(),
221
+ };
222
+ await writeTextAtomic(join(this.dir, `${id}.json`), JSON.stringify(next, null, 2));
223
+ return next;
224
+ }
225
+ /** 删掉一条提议(清理用)。已落卡的提议删掉不影响卡片本身。 */
226
+ async remove(id) {
227
+ if (!/^p-[a-f0-9]{16}$/.test(id))
228
+ return false;
229
+ try {
230
+ await unlink(join(this.dir, `${id}.json`));
231
+ return true;
232
+ }
233
+ catch {
234
+ return false;
235
+ }
236
+ }
237
+ }
238
+ //# sourceMappingURL=proposals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proposals.js","sourceRoot":"","sources":["../../src/proposals.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import { type CardSchemaIssue, type DocumentVersion, type Envelope, type KnowledgeCard, type KnowledgeDocument, type KnowledgeDocumentDetail, type KnowledgeStatus, type RecallMode, type RecallResult, type RebuildReport, type RuntimeKnowledgeConfig, type SchemaType, type SourceRaw, type SourceRawRead, type SourceType, type SourceTypeCatalog, type SourceTypeDef, type WikiCardVersion, type WikiSchemaMode, type WikiTypeCatalog, type WikiTypeDef } from './types.js';
2
+ import { CardProposalStore } from './proposals.js';
3
+ import { DiagnosisStore } from './diagnosis/store.js';
2
4
  import { type ModelCall } from './extract-model.js';
3
5
  import type { LineageContext, LineageRef } from 'dsh-data-contracts/refs';
4
- declare const LAYOUT: readonly ["01_source_truth", "02_wiki", "03_compiled", "05_diagnosis"];
6
+ declare const LAYOUT: readonly ["01_source_truth", "02_wiki", "03_compiled"];
5
7
  /**
6
8
  * Both helpers delegate to the shared envelope constructors: the five-key shape
7
9
  * and the "warnings ⇒ partial" rule live in `dsh-data-contracts`,
@@ -10,6 +12,17 @@ declare const LAYOUT: readonly ["01_source_truth", "02_wiki", "03_compiled", "05
10
12
  */
11
13
  export declare function success<T>(data: T, warnings?: string[]): Envelope<T>;
12
14
  export declare function failure<T>(data: T, code: string, message: string, retryable?: boolean, suggestion?: string): Envelope<T>;
15
+ /**
16
+ * 抽屉里的原文预览**只发**正文的前这么多字符。
17
+ *
18
+ * 依据是实跑反馈:一份几十万字的转换文档,抽屉只渲染前 4000 字符(更长的在
19
+ * 380px 宽的抽屉里没有阅读意义),而接口原来把**整份正文**发过去 —— 传输、JSON 解析、
20
+ * 塞进 React state 全按全文的量级付费,于是「打开弹层要等半天」。上面那段封顶之后,
21
+ * 弹层的耗时与文档大小**脱钩**;要读全文走独立整页(分页取,见 `documentContentPage`)。
22
+ *
23
+ * 4000 是用户明确要的阈值,所以它是一个具名常量而不是散在各处的字面量。
24
+ */
25
+ export declare const SOURCE_PREVIEW_CHARS = 4000;
13
26
  export declare function parseMarkdown(source: string): {
14
27
  frontmatter: Record<string, unknown>;
15
28
  content: string;
@@ -105,6 +118,12 @@ export declare class KnowledgeRuntime {
105
118
  private sourceIndex;
106
119
  /** 段内布局整理是否已经跑过(每个 runtime 一次)。 */
107
120
  private segmentsOrganized;
121
+ /**
122
+ * 一次性迁移里**没有静默处理掉**的事(改名冲突、迁移后比对不一致)。
123
+ *
124
+ * 它必须能被界面读到:迁移失败而没人知道,等价于数据已经丢了。
125
+ */
126
+ private migrationProblems;
108
127
  private vectorIndex;
109
128
  private vectorError;
110
129
  private embeddingWorker;
@@ -158,9 +177,91 @@ export declare class KnowledgeRuntime {
158
177
  wikiSchema(): WikiSchemaSnapshot;
159
178
  /**
160
179
  * Agent 与设置面板共用的类型目录:注册表 + 生效方式 + 内置只读判定规则 +
161
- * 现有卡片的三层校验结果(`report` 模式下这是"待补"清单)。
180
+ * 现有卡片的三层校验结果(`report` 模式下这是"待补"清单)+ **待审提议的条数**。
181
+ *
182
+ * 提议计数挂在这里而不是另开一路,是因为 review 就发生在这一屏(「知识库 → Wiki」的
183
+ * 待办区)—— 与 Pass 0 的候选草案、lint 待补清单是同一处,不新造第二套 review 界面。
162
184
  */
163
185
  wikiTypeCatalog(): Promise<Envelope<WikiTypeCatalog>>;
186
+ /**
187
+ * 智能归因图谱的存储句柄。
188
+ *
189
+ * 它由 runtime 自己构造(而不是由 index.ts 注入),因为 `rebuild` 要产出
190
+ * `03_compiled/diagnosis_graph.json` —— 那次产出必须和 `knowledge_graph.json`
191
+ * 在同一次卡片遍历的语义下发生,否则两份产物会来自两个不同版本的卡片。
192
+ */
193
+ private diagnosis?;
194
+ diagnosisStore(): DiagnosisStore;
195
+ /**
196
+ * 卡片提议的存储(0021 §6.1 的那道门)。
197
+ *
198
+ * 它按**记忆段**(`<agentRoot>/memory/<库 id>`)落,不在知识树里 —— 理由写在
199
+ * `proposals.ts` 顶上:提议是「关于 Agent 动作的待办留痕」,删掉只丢待办、
200
+ * 重跑一次提议就能回来,所以它既不属于「源头」(删了就丢数据的那一段),
201
+ * 更不能落 `02_wiki/`(那正是这道门要拦的事)。
202
+ */
203
+ private proposalStore?;
204
+ cardProposals(): CardProposalStore;
205
+ /**
206
+ * 提一批卡片提议。**它不写任何卡片**(0021 §6.1)。
207
+ *
208
+ * 这是 Agent 唯一能碰类型层的入口:把草案挂到触发它的那条 SourceRaw 上,
209
+ * 由人在面板上确认之后才落卡。未确认的提议不落 `02_wiki/`、不进编译、
210
+ * 不参与召回、不在图上出现。
211
+ */
212
+ proposeCards(input: {
213
+ sourceId: string;
214
+ proposals: Array<{
215
+ action?: 'create' | 'update' | 'merge';
216
+ entityType: string;
217
+ entityId: string;
218
+ title: string;
219
+ summary?: string;
220
+ content: string;
221
+ sourceRefs?: string[];
222
+ metadata?: Record<string, unknown>;
223
+ }>;
224
+ }): Promise<Envelope<{
225
+ proposed: number;
226
+ ids: string[];
227
+ rejected: string[];
228
+ }>>;
229
+ /**
230
+ * 把一条**已确认**的提议落成卡片。
231
+ *
232
+ * 三道检查,缺一条这道门就有缝:
233
+ * 1. 提议存在,且状态是 `confirmed`(人点过「通过」);
234
+ * 2. **还没落过卡**(`writtenAt` 为空)—— 确认凭证是**一次性**的;
235
+ * 3. 再跑一遍三层校验(0021 §6.5):提议阶段那一遍是 Agent 自己补的,
236
+ * 这一遍的修改可能来自人,两道都跑才拦得住「改完又破了约束」。
237
+ */
238
+ applyProposal(proposalId: string, lineage?: LineageContext): Promise<Envelope<{
239
+ entityId: string;
240
+ path: string;
241
+ proposalId: string;
242
+ }>>;
243
+ /**
244
+ * 人的 review 动作(面板调用,**不是工具**)。
245
+ *
246
+ * Agent 拿不到这个入口 —— 它只能 `proposeCards` 与 `applyProposal`,而后者要求
247
+ * 一条已经被人确认过的提议。确认权收在人手里,这是 §6.1 那条硬规则的结构保证。
248
+ */
249
+ reviewProposal(input: {
250
+ proposalId: string;
251
+ action: 'confirm-and-write' | 'confirm' | 'reject';
252
+ reviewer?: string;
253
+ reason?: string;
254
+ patch?: {
255
+ title?: string;
256
+ summary?: string;
257
+ content?: string;
258
+ };
259
+ lineage?: LineageContext;
260
+ }): Promise<Envelope<{
261
+ proposalId: string;
262
+ status: string;
263
+ written: boolean;
264
+ }>>;
164
265
  /** 对已落库的卡片跑三层校验。不写盘,只报告。 */
165
266
  lintCards(): Promise<Array<CardSchemaIssue & {
166
267
  entityId: string;
@@ -204,7 +305,55 @@ export declare class KnowledgeRuntime {
204
305
  * 有人放了文件,那就不属于「没用的空文件夹」了 —— 那种情况下留着并让人自己判断,
205
306
  * 比替他们删掉安全。
206
307
  */
207
- private dropLegacySchemaSegment;
308
+ /**
309
+ * 清掉**只装了旧版本自己生成的东西**的退役段。
310
+ *
311
+ * `00_schema` 从来没有一行代码写过东西,所以「空」就是它的全部历史形态 —— 空就删。
312
+ *
313
+ * `05_diagnosis` 不一样:旧版本在里面铺过 `templates/*.md` 与一份 README,那两样是
314
+ * 可以重建的(模板由类型定义派生、README 是说明),删掉不丢知识。但同一个目录里
315
+ * 可能躺着**真正的历史快照**(`*.jsonl` / `cases.json`),那是只读的迁移输入,
316
+ * 一个字节都不能动。所以判据是**文件清单**而不是「空不空」:只认得旧版本自己写的
317
+ * 那些名字时,才删;出现任何别的东西就整个留着。
318
+ */
319
+ private dropRetiredSegments;
320
+ private dropSegmentIfEmpty;
321
+ /**
322
+ * 0040 §3.2 的一次性迁移:`01_source_truth/ai_chat_message/` → `agent_chat_message/`。
323
+ *
324
+ * 改名不能只改注册表:`01_source_truth/` 是**按分类分目录**的,存量来源的
325
+ * frontmatter 里写着 `source_type: ai_chat_message`。只改注册表会有两个后果 ——
326
+ * 旧目录里那些来源变成一个「注册表里没有的分类」(界面上显示成未知分类),
327
+ * 而旧分类因为还有来源在,永远删不掉。
328
+ *
329
+ * 三条纪律:
330
+ * 1. **逐份搬,不整体 rename 目录。** 目标里可能已经有同名文件(用户在新版本里
331
+ * 重新录过同一份来源),整体搬会覆盖它。
332
+ * 2. **同名时比对正文**:一致就删掉旧的那份(同一份东西,只是目录名变了);
333
+ * 不一致就**两边都留**,并把冲突报给界面 —— 静默覆盖等于丢数据。
334
+ * 3. **迁移无损才认**:写完读回来比对 frontmatter 与正文,不一致就放弃这一份。
335
+ */
336
+ private migrateLegacySourceTypeRename;
337
+ /**
338
+ * 0040 §4 的一次性迁移:两次改名(`check` → `check_point`、`failure-mode` →
339
+ * `failure_reason`)的存量卡片。
340
+ *
341
+ * 两件事一起做,因为它们是同一次改名的两个面:
342
+ * 1. **卡片类型**:`02_wiki/diagnosis/check/` → `check-point/`,
343
+ * frontmatter 的 `entity_type` 一起改;
344
+ * 2. **结构化块里的字段名**:`failure_mode` → `failure_reason`。这一条与卡片类型
345
+ * 无关 —— `diagnosis/hypothesis` 卡片的类型没变,但它块里那个字段变了。
346
+ * 只按目录过滤的话,假设卡片上的旧字段名会永远留在磁盘上,而读回来是「少一个
347
+ * 必填字段」,正文里却明明写着它。
348
+ *
349
+ * 读取端本来也认别名(`cards.parseCard`),但**只在内存里认是不够的**:`writeCard`
350
+ * 按 `entity_type` 决定写哪个目录,改一张旧卡片就会在 `check-point/` 下多写一份,
351
+ * 而旧目录里那份还在 —— 同一张卡片变成两张,读图时看谁先被遍历到。
352
+ *
353
+ * 用 `writeCard` 而不是自己拼 frontmatter:它是唯一知道卡片信封长什么样、并且会
354
+ * 顺手做版本快照与三层校验的地方。
355
+ */
356
+ private migrateLegacyDiagnosisCards;
208
357
  private loadVectorIndex;
209
358
  private vectorWorkerPath;
210
359
  private encodeWithOllama;
@@ -282,12 +431,31 @@ export declare class KnowledgeRuntime {
282
431
  * returned, so `assetCount` is never an over-count.
283
432
  */
284
433
  private assetsOf;
285
- /** Parse one on-disk SourceRaw file into the detail projection. */
434
+ /**
435
+ * Parse one on-disk SourceRaw file into the detail projection.
436
+ *
437
+ * `previewChars` 给了就把正文截到那么长,并把**总长度**如实放进 `contentChars`
438
+ * (见 `SOURCE_PREVIEW_CHARS` 的理由)。不给就是不截断 —— 那是「我确实要全文」的
439
+ * 调用方,目前只有 `readDocumentBody()` 之外的内部路径会这么用。
440
+ */
286
441
  private readDocumentFile;
287
442
  /** 文档列表(新→旧),正文/资产明细留在详情接口里。 */
288
443
  listDocuments(): Promise<KnowledgeDocument[]>;
289
444
  /** 文档详情:正文、frontmatter、资产与 lineage。 */
290
- readDocument(docId: string): Promise<KnowledgeDocumentDetail | undefined>;
445
+ /**
446
+ * 一份文档的详情投影,**正文默认按 `SOURCE_PREVIEW_CHARS` 封顶**。
447
+ *
448
+ * 这是明细接口(抽屉里的预览)读的那一份,所以默认就是「够预览」而不是「全文」:
449
+ * 全文由 `readDocumentBody()` 提供服务,而它只服务独立整页的分页读取。
450
+ */
451
+ readDocument(docId: string, previewChars?: number): Promise<KnowledgeDocumentDetail | undefined>;
452
+ /**
453
+ * 一份文档的**完整正文**(不含 frontmatter),给独立整页分页取用。
454
+ *
455
+ * 每次调用都重读一遍盘:独立整页是「用户滚到哪儿取哪一页」,一次请求一段文本,
456
+ * 谁都不该拿到整份文档 —— 这正是抽屉那一版的问题。缓存留到真的量出来是瓶颈再加。
457
+ */
458
+ readDocumentBody(docId: string): Promise<string | undefined>;
291
459
  /**
292
460
  * 版本历史,新→旧。
293
461
  *
@@ -423,8 +591,16 @@ export declare class KnowledgeRuntime {
423
591
  private readExtractedRelations;
424
592
  /** 落盘关系产物。失败只记一笔:它不该带走整次重建。 */
425
593
  private writeExtractedRelations;
426
- /** 一份来源的抽取结果:新建候选卡片、把证据来源并进已有卡片、收集关系候选。 */
427
- private extractFromSource;
594
+ /**
595
+ * 一份来源的抽取结果:**产出提议**(新建 / 更新),并收集关系候选。
596
+ *
597
+ * 它**不再写卡片**。这是 v1.5 那道门最容易被绕开的地方:Pass 0 是一次自动流程,
598
+ * 它写进 `02_wiki/` 的东西会立刻参与编译、进图、被召回 —— 而类型层是收敛的那一层,
599
+ * 它错一条,所有现象的排序一起错。所以这里只往 `pending` 里放提议,
600
+ * 由 `runExtractionStage` 在整轮结束时一次性 upsert(同一张卡片被多份来源命中时,
601
+ * 只有一条提议,正文累积)。
602
+ */
603
+ private proposeFromSource;
428
604
  /**
429
605
  * 把关系候选装配成 wiki↔wiki 的边。
430
606
  *
@@ -476,6 +652,22 @@ export declare class KnowledgeRuntime {
476
652
  * 匹配逻辑与 0030 相同(词面匹配节点 title / id 与关系词,命中节点带出 1 跳邻居并衰减),
477
653
  * 但返回值只用于给**已经在候选池里**的条目加权 —— 它自己不能制造候选。
478
654
  */
655
+ /**
656
+ * 字段级的归因图(`03_compiled/diagnosis_graph.json`)。
657
+ *
658
+ * 它只用于**给已经在候选池里的条目加权**(和卡片级图一样,不能自己制造候选)。
659
+ * 用途是把「假设 → 检查点」「证据 → 假设」这两类卡片级图看不见的语义带进召回。
660
+ */
661
+ private diagnosisGraph;
662
+ /**
663
+ * 归因图上按词面命中的节点 → 分数,含 1 跳衰减。
664
+ *
665
+ * 与卡片级那一段是**同一条算法、两份数据**:卡片级图里只有 `supported_by` /
666
+ * `relates_to`,而字段级图里是十种语义边。分开算再按 `entityId` 合流,
667
+ * 是因为两张图的节点含义不同(一个是卡片,一个是字段级节点),合成一张会让
668
+ * 图谱 Tab 看到一张卡片散成七个点。
669
+ */
670
+ private diagnosisHits;
479
671
  private graphBoostRanking;
480
672
  /** SourceRaw 正文,按 sourceId 索引;证据片段从这里取。写入后失效。 */
481
673
  private sourceCorpusCache;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":"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"}