dsh-data-domain-knowledge 0.1.0-alpha.1

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 (231) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +360 -0
  3. package/cordis.patch.yml +410 -0
  4. package/eval/README.md +76 -0
  5. package/eval/evaluate-retrieval.mjs +121 -0
  6. package/eval/queries.example.jsonl +2 -0
  7. package/lib/client.js +111415 -0
  8. package/lib/types/config-schema.d.ts +35 -0
  9. package/lib/types/config-schema.d.ts.map +1 -0
  10. package/lib/types/config-schema.js +34 -0
  11. package/lib/types/config-schema.js.map +1 -0
  12. package/lib/types/convert/core-loader.d.ts +32 -0
  13. package/lib/types/convert/core-loader.d.ts.map +1 -0
  14. package/lib/types/convert/core-loader.js +60 -0
  15. package/lib/types/convert/core-loader.js.map +1 -0
  16. package/lib/types/convert/host.d.ts +88 -0
  17. package/lib/types/convert/host.d.ts.map +1 -0
  18. package/lib/types/convert/host.js +479 -0
  19. package/lib/types/convert/host.js.map +1 -0
  20. package/lib/types/convert/ingest.d.ts +125 -0
  21. package/lib/types/convert/ingest.d.ts.map +1 -0
  22. package/lib/types/convert/ingest.js +228 -0
  23. package/lib/types/convert/ingest.js.map +1 -0
  24. package/lib/types/convert/settings-schema.d.ts +18 -0
  25. package/lib/types/convert/settings-schema.d.ts.map +1 -0
  26. package/lib/types/convert/settings-schema.js +26 -0
  27. package/lib/types/convert/settings-schema.js.map +1 -0
  28. package/lib/types/convert/types.d.ts +46 -0
  29. package/lib/types/convert/types.d.ts.map +1 -0
  30. package/lib/types/convert/types.js +41 -0
  31. package/lib/types/convert/types.js.map +1 -0
  32. package/lib/types/diagnosis/cards.d.ts +71 -0
  33. package/lib/types/diagnosis/cards.d.ts.map +1 -0
  34. package/lib/types/diagnosis/cards.js +482 -0
  35. package/lib/types/diagnosis/cards.js.map +1 -0
  36. package/lib/types/diagnosis/problem-classes.d.ts +51 -0
  37. package/lib/types/diagnosis/problem-classes.d.ts.map +1 -0
  38. package/lib/types/diagnosis/problem-classes.js +66 -0
  39. package/lib/types/diagnosis/problem-classes.js.map +1 -0
  40. package/lib/types/diagnosis/schema.d.ts +65 -0
  41. package/lib/types/diagnosis/schema.d.ts.map +1 -0
  42. package/lib/types/diagnosis/schema.js +208 -0
  43. package/lib/types/diagnosis/schema.js.map +1 -0
  44. package/lib/types/diagnosis/seed-source.d.ts +20 -0
  45. package/lib/types/diagnosis/seed-source.d.ts.map +1 -0
  46. package/lib/types/diagnosis/seed-source.js +96 -0
  47. package/lib/types/diagnosis/seed-source.js.map +1 -0
  48. package/lib/types/diagnosis/seed.d.ts +50 -0
  49. package/lib/types/diagnosis/seed.d.ts.map +1 -0
  50. package/lib/types/diagnosis/seed.js +242 -0
  51. package/lib/types/diagnosis/seed.js.map +1 -0
  52. package/lib/types/diagnosis/store.d.ts +81 -0
  53. package/lib/types/diagnosis/store.d.ts.map +1 -0
  54. package/lib/types/diagnosis/store.js +409 -0
  55. package/lib/types/diagnosis/store.js.map +1 -0
  56. package/lib/types/diagnosis/types.d.ts +124 -0
  57. package/lib/types/diagnosis/types.d.ts.map +1 -0
  58. package/lib/types/diagnosis/types.js +13 -0
  59. package/lib/types/diagnosis/types.js.map +1 -0
  60. package/lib/types/directory-picker.d.ts +94 -0
  61. package/lib/types/directory-picker.d.ts.map +1 -0
  62. package/lib/types/directory-picker.js +110 -0
  63. package/lib/types/directory-picker.js.map +1 -0
  64. package/lib/types/extract-model.d.ts +76 -0
  65. package/lib/types/extract-model.d.ts.map +1 -0
  66. package/lib/types/extract-model.js +193 -0
  67. package/lib/types/extract-model.js.map +1 -0
  68. package/lib/types/extract.d.ts +121 -0
  69. package/lib/types/extract.d.ts.map +1 -0
  70. package/lib/types/extract.js +549 -0
  71. package/lib/types/extract.js.map +1 -0
  72. package/lib/types/fts.d.ts +96 -0
  73. package/lib/types/fts.d.ts.map +1 -0
  74. package/lib/types/fts.js +184 -0
  75. package/lib/types/fts.js.map +1 -0
  76. package/lib/types/index.d.ts +39 -0
  77. package/lib/types/index.d.ts.map +1 -0
  78. package/lib/types/index.js +1112 -0
  79. package/lib/types/index.js.map +1 -0
  80. package/lib/types/intent/engine.d.ts +108 -0
  81. package/lib/types/intent/engine.d.ts.map +1 -0
  82. package/lib/types/intent/engine.js +501 -0
  83. package/lib/types/intent/engine.js.map +1 -0
  84. package/lib/types/intent/host.d.ts +88 -0
  85. package/lib/types/intent/host.d.ts.map +1 -0
  86. package/lib/types/intent/host.js +389 -0
  87. package/lib/types/intent/host.js.map +1 -0
  88. package/lib/types/intent/preset-tools.d.ts +37 -0
  89. package/lib/types/intent/preset-tools.d.ts.map +1 -0
  90. package/lib/types/intent/preset-tools.js +45 -0
  91. package/lib/types/intent/preset-tools.js.map +1 -0
  92. package/lib/types/intent/settings-schema.d.ts +59 -0
  93. package/lib/types/intent/settings-schema.d.ts.map +1 -0
  94. package/lib/types/intent/settings-schema.js +57 -0
  95. package/lib/types/intent/settings-schema.js.map +1 -0
  96. package/lib/types/intent/store.d.ts +75 -0
  97. package/lib/types/intent/store.d.ts.map +1 -0
  98. package/lib/types/intent/store.js +139 -0
  99. package/lib/types/intent/store.js.map +1 -0
  100. package/lib/types/intent/tools.d.ts +63 -0
  101. package/lib/types/intent/tools.d.ts.map +1 -0
  102. package/lib/types/intent/tools.js +108 -0
  103. package/lib/types/intent/tools.js.map +1 -0
  104. package/lib/types/intent/types.d.ts +189 -0
  105. package/lib/types/intent/types.d.ts.map +1 -0
  106. package/lib/types/intent/types.js +62 -0
  107. package/lib/types/intent/types.js.map +1 -0
  108. package/lib/types/knowledge-bases.d.ts +266 -0
  109. package/lib/types/knowledge-bases.d.ts.map +1 -0
  110. package/lib/types/knowledge-bases.js +1107 -0
  111. package/lib/types/knowledge-bases.js.map +1 -0
  112. package/lib/types/layout.d.ts +262 -0
  113. package/lib/types/layout.d.ts.map +1 -0
  114. package/lib/types/layout.js +312 -0
  115. package/lib/types/layout.js.map +1 -0
  116. package/lib/types/migrate.d.ts +110 -0
  117. package/lib/types/migrate.d.ts.map +1 -0
  118. package/lib/types/migrate.js +280 -0
  119. package/lib/types/migrate.js.map +1 -0
  120. package/lib/types/recall-rank.d.ts +158 -0
  121. package/lib/types/recall-rank.d.ts.map +1 -0
  122. package/lib/types/recall-rank.js +261 -0
  123. package/lib/types/recall-rank.js.map +1 -0
  124. package/lib/types/runtime.d.ts +568 -0
  125. package/lib/types/runtime.d.ts.map +1 -0
  126. package/lib/types/runtime.js +3045 -0
  127. package/lib/types/runtime.js.map +1 -0
  128. package/lib/types/settings-schema.d.ts +117 -0
  129. package/lib/types/settings-schema.d.ts.map +1 -0
  130. package/lib/types/settings-schema.js +92 -0
  131. package/lib/types/settings-schema.js.map +1 -0
  132. package/lib/types/settings-volatile.d.ts +102 -0
  133. package/lib/types/settings-volatile.d.ts.map +1 -0
  134. package/lib/types/settings-volatile.js +114 -0
  135. package/lib/types/settings-volatile.js.map +1 -0
  136. package/lib/types/types.d.ts +799 -0
  137. package/lib/types/types.d.ts.map +1 -0
  138. package/lib/types/types.js +387 -0
  139. package/lib/types/types.js.map +1 -0
  140. package/lib/types/wiki-types.d.ts +68 -0
  141. package/lib/types/wiki-types.d.ts.map +1 -0
  142. package/lib/types/wiki-types.js +322 -0
  143. package/lib/types/wiki-types.js.map +1 -0
  144. package/package.json +101 -0
  145. package/preset/tita-data-agent/agent.cordis.yml +376 -0
  146. package/preset/tita-data-agent/preset.yml +3 -0
  147. package/python/requirements.txt +8 -0
  148. package/scripts/doctor.mjs +70 -0
  149. package/scripts/e2e-pipeline.mjs +355 -0
  150. package/scripts/install-agent-preset.mjs +92 -0
  151. package/scripts/setup-embedding.sh +34 -0
  152. package/scripts/sync-agent-preset.mjs +188 -0
  153. package/src/client/AgentPresetCard.tsx +247 -0
  154. package/src/client/DirectoryPicker.tsx +357 -0
  155. package/src/client/InfoHint.tsx +65 -0
  156. package/src/client/IntentLogicTab.tsx +185 -0
  157. package/src/client/IntentTab.tsx +715 -0
  158. package/src/client/KnowledgeBaseTab.tsx +1454 -0
  159. package/src/client/KnowledgeGraphView.tsx +306 -0
  160. package/src/client/KnowledgePanel.tsx +381 -0
  161. package/src/client/KnowledgeStepRail.tsx +60 -0
  162. package/src/client/NodeSettings.tsx +392 -0
  163. package/src/client/PreviewSections.tsx +116 -0
  164. package/src/client/RecallPanel.tsx +399 -0
  165. package/src/client/TypeDefinitionDrawer.tsx +215 -0
  166. package/src/client/WikiFlowCard.tsx +226 -0
  167. package/src/client/WikiTypeEditor.tsx +332 -0
  168. package/src/client/agent-preset.ts +121 -0
  169. package/src/client/arch/AgentArchitectureGraph.tsx +219 -0
  170. package/src/client/arch/NodeLogicPanel.tsx +133 -0
  171. package/src/client/arch/ProblemDetailPanel.tsx +88 -0
  172. package/src/client/arch/model.ts +691 -0
  173. package/src/client/architecture.css +191 -0
  174. package/src/client/architecture.tsx +530 -0
  175. package/src/client/attribution/AttributionGraph.tsx +104 -0
  176. package/src/client/attribution/AttributionTab.tsx +332 -0
  177. package/src/client/attribution/CaseView.tsx +102 -0
  178. package/src/client/attribution/GraphStage.tsx +87 -0
  179. package/src/client/attribution/RunView.tsx +184 -0
  180. package/src/client/attribution/StageChrome.tsx +403 -0
  181. package/src/client/attribution/ViewSwitch.tsx +107 -0
  182. package/src/client/attribution/graph-options.ts +381 -0
  183. package/src/client/attribution/model.ts +462 -0
  184. package/src/client/config-scope.ts +119 -0
  185. package/src/client/convert/ConvertPanel.tsx +594 -0
  186. package/src/client/convert/styles.css +138 -0
  187. package/src/client/convert/styles.ts +49 -0
  188. package/src/client/format.ts +39 -0
  189. package/src/client/graph/layout.ts +181 -0
  190. package/src/client/graph.css +113 -0
  191. package/src/client/index.ts +98 -0
  192. package/src/client/problem-domains.ts +114 -0
  193. package/src/client/styles.css +940 -0
  194. package/src/client/styles.ts +11 -0
  195. package/src/client/useFitScale.ts +68 -0
  196. package/src/config-schema.ts +45 -0
  197. package/src/convert/core-loader.ts +68 -0
  198. package/src/convert/host.ts +579 -0
  199. package/src/convert/ingest.ts +367 -0
  200. package/src/convert/settings-schema.ts +27 -0
  201. package/src/convert/types.ts +65 -0
  202. package/src/diagnosis/cards.ts +498 -0
  203. package/src/diagnosis/problem-classes.ts +117 -0
  204. package/src/diagnosis/schema.ts +260 -0
  205. package/src/diagnosis/seed-source.ts +107 -0
  206. package/src/diagnosis/seed.ts +291 -0
  207. package/src/diagnosis/store.ts +432 -0
  208. package/src/diagnosis/types.ts +152 -0
  209. package/src/directory-picker.ts +164 -0
  210. package/src/extract-model.ts +227 -0
  211. package/src/extract.ts +632 -0
  212. package/src/fts.ts +203 -0
  213. package/src/index.ts +1091 -0
  214. package/src/intent/README.md +63 -0
  215. package/src/intent/engine.ts +527 -0
  216. package/src/intent/host.ts +462 -0
  217. package/src/intent/preset-tools.ts +48 -0
  218. package/src/intent/settings-schema.ts +63 -0
  219. package/src/intent/store.ts +143 -0
  220. package/src/intent/tools.ts +139 -0
  221. package/src/intent/types.ts +245 -0
  222. package/src/knowledge-bases.ts +1160 -0
  223. package/src/layout.ts +350 -0
  224. package/src/migrate.ts +262 -0
  225. package/src/python/embedding_worker.py +471 -0
  226. package/src/recall-rank.ts +299 -0
  227. package/src/runtime.ts +3069 -0
  228. package/src/settings-schema.ts +94 -0
  229. package/src/settings-volatile.ts +122 -0
  230. package/src/types.ts +1140 -0
  231. package/src/wiki-types.ts +357 -0
@@ -0,0 +1,568 @@
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 { type ModelCall } from './extract-model.js';
3
+ import type { LineageContext, LineageRef } from 'dsh-data-contracts/refs';
4
+ declare const LAYOUT: readonly ["01_source_truth", "02_wiki", "03_compiled", "05_diagnosis"];
5
+ /**
6
+ * Both helpers delegate to the shared envelope constructors: the five-key shape
7
+ * and the "warnings ⇒ partial" rule live in `dsh-data-contracts`,
8
+ * so a knowledge response and a workbook response cannot disagree about status,
9
+ * and neither can forget `error: null` on the happy path.
10
+ */
11
+ export declare function success<T>(data: T, warnings?: string[]): Envelope<T>;
12
+ export declare function failure<T>(data: T, code: string, message: string, retryable?: boolean, suggestion?: string): Envelope<T>;
13
+ export declare function parseMarkdown(source: string): {
14
+ frontmatter: Record<string, unknown>;
15
+ content: string;
16
+ };
17
+ /**
18
+ * Stage 2: turn one wiki card into recall notes.
19
+ *
20
+ * Short cards stay a single note whose content is the historical
21
+ * `summary + content` payload, so existing recall results and qrels keep
22
+ * working. Long cards that carry `##`/`###` sections split on those headings
23
+ * and the summary rides along with the first section.
24
+ */
25
+ export declare function splitWikiNotes(card: Pick<KnowledgeCard, 'summary' | 'content'>): Array<{
26
+ heading?: string;
27
+ content: string;
28
+ }>;
29
+ /**
30
+ * 来源分类注册表的读取入口。
31
+ *
32
+ * 做成 provider 而不是构造时快照:`KnowledgeBases` 缓存的是 runtime 而不是
33
+ * 注册表,用户在设置里改完分类必须**立刻**对 `add_source` 生效(0013 规范
34
+ * 第 5 节「新增后必须立刻对 Agent 可见」)。
35
+ */
36
+ export type SourceTypeProvider = () => SourceTypeDef[];
37
+ /** Wiki 卡片类型注册表的读取入口(0024):类型定义 + schema 生效方式。 */
38
+ export interface WikiSchemaSnapshot {
39
+ types: WikiTypeDef[];
40
+ mode: WikiSchemaMode;
41
+ }
42
+ export type WikiSchemaProvider = () => WikiSchemaSnapshot;
43
+ export interface KnowledgeRuntimeOptions {
44
+ /** 注册表来源;省略时用出厂内置分类。 */
45
+ sourceTypes?: SourceTypeProvider;
46
+ /** Wiki 卡片类型来源;省略时用出厂 11 个类型 + `report` 模式。 */
47
+ wikiSchema?: WikiSchemaProvider;
48
+ /**
49
+ * 0029:家当目录(`<agentRoot>/resource`)。
50
+ *
51
+ * 配置里那三个路径字段(`python` / `embeddingModel` / `rerankModel`)为空时,
52
+ * 它们从这里解析。省略时退回旧的 `TITA_DATA_AGENT_HOME` —— 独立运行时与单元
53
+ * 测试不必先造一个根路径。
54
+ */
55
+ resourceRoot?: string;
56
+ /**
57
+ * 0032:这个知识库的记忆段(`<agentRoot>/memory/<知识库 id>`)。
58
+ *
59
+ * 版本快照、反馈与访问审计写到这里,**不再写进知识树**。省略时退回
60
+ * `<rootDir>/04_memory` —— 独立运行时与单元测试不必先造一个根路径,迁移期间
61
+ * 「还没搬」的知识库也照常能读写。
62
+ */
63
+ memoryRoot?: string;
64
+ /**
65
+ * #3b:模型调用接缝。
66
+ *
67
+ * 运行时自己**不认识** `ctx.llm` —— 那是插件层的事。把调用以函数形式注进来,
68
+ * 运行时才能在 `rebuild` 里用模型做实体抽取与归并(`extract-model.ts`),
69
+ * 而单元测试可以塞一个假模型进去,不必真的跑一次推理。
70
+ *
71
+ * 省略 = 退回纯规则抽取(Pass 0)。那条链路本来就不依赖模型,这条接缝的存在
72
+ * 不能让「没有模型就跑不动」成为新的前提。
73
+ */
74
+ modelCall?: ModelCall;
75
+ }
76
+ export declare class KnowledgeRuntime {
77
+ /** 当前生效的配置。volatile 改动会就地合并进来(见 `updateConfig`),所以它不是只读的。 */
78
+ config: RuntimeKnowledgeConfig;
79
+ readonly rootDir: string;
80
+ /**
81
+ * 来源分类注册表的来源(0013)。省略时用出厂内置分类——独立 runtime 与单元
82
+ * 测试是这个形态;`KnowledgeBases` 会注入「按库读取」的 provider,于是每个
83
+ * 知识库有自己的注册表,自定义分类立刻对 Agent 可见,不需要重启。
84
+ */
85
+ private readonly sourceTypeProvider?;
86
+ /** Wiki 卡片类型注册表的来源(0024);省略时用出厂 11 个类型 + `report` 模式。 */
87
+ private readonly wikiSchemaProvider?;
88
+ /**
89
+ * Id of the knowledge base this runtime serves. `KnowledgeBases` sets it when
90
+ * it creates/caches a runtime; asset URLs are built from it. Standalone
91
+ * runtimes keep the default so `/knowledge/assets/default/<rel>` still works.
92
+ */
93
+ baseId: string;
94
+ private cards;
95
+ private units;
96
+ private graph;
97
+ /**
98
+ * `docSlug → 绝对路径` 的 SourceRaw 索引(0030)。
99
+ *
100
+ * 有了它,文档 id 不需要携带来源分类也能定位文件 —— `add_source` 允许调用方自
101
+ * 己给 `source_id`,那串 id 里没有类型信息;而目录层级里有。索引递归覆盖整段,
102
+ * 所以旧平铺布局、新分类布局、以及两者并存的迁移中间态都能解析。
103
+ * 写入与删除后必须失效(见 `addSource` / `deleteDocument`)。
104
+ */
105
+ private sourceIndex;
106
+ /** 段内布局整理是否已经跑过(每个 runtime 一次)。 */
107
+ private segmentsOrganized;
108
+ private vectorIndex;
109
+ private vectorError;
110
+ private embeddingWorker;
111
+ /** Separate process so a rerank model failure cannot take embeddings down. */
112
+ private rerankWorker;
113
+ /** Cache the first rerank failure; do not respawn a doomed model per recall. */
114
+ private rerankUnavailable;
115
+ /** 解析后的 Python 解释器路径(配置为空时从家当目录解析)。 */
116
+ private pythonPath;
117
+ /** 解析后的嵌入模型:本地目录或 HF 模型名。 */
118
+ private embeddingModelPath;
119
+ /** 解析后的重排模型。 */
120
+ private rerankModelPath;
121
+ /**
122
+ * 向量清单里记的**模型身份**。
123
+ *
124
+ * 本地模型记 `resource:<相对路径>`,不记绝对路径 —— 否则把根路径搬一次,
125
+ * 清单里的模型名就对不上,整个向量索引被判成「配置不匹配」而作废,用户会莫名
126
+ * 收到一次全量重编码。清单该记「是哪一个模型」,不是「它在哪」。
127
+ */
128
+ private readonly embeddingModelId;
129
+ /**
130
+ * 这个知识库的记忆段(0032)。
131
+ *
132
+ * 它可以**在知识树之外**(正常情况就是 `<agentRoot>/memory/<库 id>`),所以
133
+ * 不能再走 `safePath` —— 那个守卫的契约是「不许跑出 rootDir」。这里另起一个
134
+ * `memoryPath`,守卫换成「不许跑出 memoryDir」。
135
+ */
136
+ private readonly memoryDir;
137
+ /** #3b 的模型调用接缝;undefined = 退回纯规则抽取。 */
138
+ private readonly modelCall;
139
+ constructor(rootDir: string, config?: Partial<RuntimeKnowledgeConfig>, options?: KnowledgeRuntimeOptions);
140
+ /**
141
+ * 就地应用一份新的运行时配置(0.1.7 的 volatile 改动走这条路)。
142
+ *
143
+ * 宿主改 volatile 字段时**不会重载插件**(`Entry._commitVolatile()` 只调
144
+ * `updateVolatile()` 就地改引用,再发一个 `loader/volatile-update`),所以「设置存下了
145
+ * 但没有生效」必须由这里兜住 —— 只标 volatile 不应用,就是假设置。
146
+ *
147
+ * 大部分字段是**每次调用现读** `this.config` 的(`recall` 读 `recallTopK`、
148
+ * `sourceTruth` 读 `allowSourceTruth`……),合并进去就生效。但有几类是**建好就缓存**
149
+ * 的,配置换了却还用旧的,那正是「看起来改了其实没改」:
150
+ *
151
+ * - 两个模型进程:解释器或模型路径变了,旧进程跑的还是旧模型;
152
+ * - 向量索引:维度或模型变了,旧向量与新查询不在同一个空间里,比出来的分没有意义。
153
+ *
154
+ * @param patch - 要合并进来的配置片段。
155
+ */
156
+ updateConfig(patch: Partial<RuntimeKnowledgeConfig>): void;
157
+ /** 当前生效的卡片 schema:类型定义 + 生效方式。 */
158
+ wikiSchema(): WikiSchemaSnapshot;
159
+ /**
160
+ * Agent 与设置面板共用的类型目录:注册表 + 生效方式 + 内置只读判定规则 +
161
+ * 现有卡片的三层校验结果(`report` 模式下这是"待补"清单)。
162
+ */
163
+ wikiTypeCatalog(): Promise<Envelope<WikiTypeCatalog>>;
164
+ /** 对已落库的卡片跑三层校验。不写盘,只报告。 */
165
+ lintCards(): Promise<Array<CardSchemaIssue & {
166
+ entityId: string;
167
+ entityType: string;
168
+ }>>;
169
+ /**
170
+ * `write_knowledge_card` 的类型闸门 + 三层校验。
171
+ *
172
+ * 返回 `{ type, issues }` 或一个失败信封。是否因 issues 拒绝写入由 `mode` 决定:
173
+ * `strict` 直接拒绝,`report` 把问题写进卡片并回报——存量卡片因此不会被升级挡在门外。
174
+ */
175
+ private cardSchemaGate;
176
+ /** 当前生效的来源分类注册表(含计算字段 `sourceCount`)。 */
177
+ sourceTypes(): SourceTypeDef[];
178
+ /** Agent 与设置面板共用的分类目录:注册表 + 内置只读判定提示词。 */
179
+ sourceTypeCatalog(): Envelope<SourceTypeCatalog>;
180
+ /**
181
+ * `add_source` 的分类闸门。
182
+ *
183
+ * 三态区分得很清楚,因为它们的修法完全不同:
184
+ * - 未知分类 → `SOURCE_TYPE_UNKNOWN`(去注册表里加,或改用一个已存在的 id);
185
+ * - 已停用 → `SOURCE_TYPE_DISABLED`(去设置里重新启用,或换一个分类);
186
+ * - 兜底分类被停用 → 不可能,`document` 由注册表守卫保证始终启用。
187
+ */
188
+ private sourceTypeGate;
189
+ directory(name: typeof LAYOUT[number]): string;
190
+ ensureLayout(): Promise<void>;
191
+ /**
192
+ * 0030:把平铺的 `<段>/*.md` 搬进 `<段>/<source_type>/*.md`。
193
+ *
194
+ * 三条纪律与 `migrate.ts` 一致:**只动直接躺在段目录下的 `.md`**(已经在子目录里的
195
+ * 不碰,所以可重入)、**读不出合法 `source_type` 的就留在原地**(宁可少搬,不可搬错
196
+ * ——分类只是元数据,搬错目录会让人按分类找不到东西)、**失败不回滚也不报错**(
197
+ * `loadSources` 两种布局都能读,搬不动不影响正确性)。
198
+ */
199
+ private migrateSourceTruthLayout;
200
+ /**
201
+ * 0030:删掉已经被撤掉的 `00_schema` 段。
202
+ *
203
+ * **只在它确实是空的时候删。** 这个段从来没被写过东西,但如果用户的目录里恰好
204
+ * 有人放了文件,那就不属于「没用的空文件夹」了 —— 那种情况下留着并让人自己判断,
205
+ * 比替他们删掉安全。
206
+ */
207
+ private dropLegacySchemaSegment;
208
+ private loadVectorIndex;
209
+ private vectorWorkerPath;
210
+ private encodeWithOllama;
211
+ private encodeEmbeddings;
212
+ close(): void;
213
+ /** Both the encoder and the reranker speak the same JSONL worker protocol. */
214
+ private spawnWorker;
215
+ private vectorInputs;
216
+ /** 关键词索引的最近一次失败原因;`undefined` = 上次构建成功。 */
217
+ private ftsError;
218
+ /**
219
+ * 关键词索引(0031):FTS5 + BM25,见 `fts.ts`。
220
+ *
221
+ * 与向量索引的区别是它**不依赖模型**,所以 `only: 'wiki'` 也重建它 —— 卡片改了、
222
+ * 关键词索引不跟着改,就会出现「按旧词表召回」。`node:sqlite` 不可用时如实返回
223
+ * `unavailable`(诊断里会写明),而不是退回 0030 那套对中文无效的计数打分。
224
+ */
225
+ private buildFtsIndex;
226
+ private buildVectorIndex;
227
+ private loadCompiledState;
228
+ private safePath;
229
+ /**
230
+ * 记忆段里的一个路径(0032)。
231
+ *
232
+ * 与 `safePath` 同一套守卫,边界换成 `memoryDir` —— 记忆段现在住在知识树
233
+ * **外面**(`<agentRoot>/memory/<库 id>`),拿 `safePath` 拼会直接抛
234
+ * `PATH_OUTSIDE_KNOWLEDGE_ROOT`。两个守卫各自成立,不合并成一个「允许两个根」的
235
+ * 宽松版本:那样一旦哪个根算错,路径就会悄悄写到别人的目录里去。
236
+ */
237
+ private memoryPath;
238
+ /** 记忆段的真实位置(面板与诊断要显示它,而不是让人以为还在知识树里)。 */
239
+ get memoryRoot(): string;
240
+ stats(): Promise<Record<string, unknown>>;
241
+ addSource(input: {
242
+ sourceType: SourceType;
243
+ title?: string;
244
+ content: string;
245
+ externalId?: string;
246
+ metadata?: Record<string, unknown>;
247
+ sourceId?: string;
248
+ lineage?: LineageContext;
249
+ }): Promise<Envelope<{
250
+ sourceId: string;
251
+ path: string;
252
+ lineage?: LineageContext;
253
+ }>>;
254
+ /** Directory holding one document's version snapshots. */
255
+ private versionDir;
256
+ /** Write the previous file bytes as one immutable version snapshot. */
257
+ private snapshotSource;
258
+ /** Snapshot file basenames (without `.md`) for one document. */
259
+ private versionIds;
260
+ loadSources(): Promise<SourceRaw[]>;
261
+ /**
262
+ * Absolute path a SourceRaw document is written to.
263
+ *
264
+ * 0030:段内按来源分类分目录。`sourceType` 在调用点已经过了注册表闸门
265
+ * (`addSource` 的 `sourceTypeGate`),所以它一定匹配 `SOURCE_TYPE_ID_PATTERN`,
266
+ * 不会引入路径穿越。
267
+ */
268
+ private sourcePath;
269
+ /** 递归扫 SourceRaw 段,建 `docSlug → path` 索引;两种布局都覆盖。 */
270
+ private sourceIndexMap;
271
+ /** 已知文档 id 的落盘位置;不存在时 `undefined`(调用方各自决定怎么报错)。 */
272
+ private sourcePathOf;
273
+ /**
274
+ * Assets a document really has on disk.
275
+ *
276
+ * Preferred source of truth is `metadata.assets` (knowledge-root-relative
277
+ * paths written by `convert/ingest.ts`). Documents written by hand fall back
278
+ * to parsing local markdown image links. A link is resolved **knowledge-root
279
+ * first, then relative to the document's own directory**: the convert ingest
280
+ * seam re-bases assets to `_assets/<bucket>/<name>` (root-relative), while
281
+ * hand-written docs typically use a sibling path. Only existing files are
282
+ * returned, so `assetCount` is never an over-count.
283
+ */
284
+ private assetsOf;
285
+ /** Parse one on-disk SourceRaw file into the detail projection. */
286
+ private readDocumentFile;
287
+ /** 文档列表(新→旧),正文/资产明细留在详情接口里。 */
288
+ listDocuments(): Promise<KnowledgeDocument[]>;
289
+ /** 文档详情:正文、frontmatter、资产与 lineage。 */
290
+ readDocument(docId: string): Promise<KnowledgeDocumentDetail | undefined>;
291
+ /**
292
+ * 版本历史,新→旧。
293
+ *
294
+ * 第一条永远是当前 head(`isCurrent: true`,`versionId` 形如
295
+ * `current-<hash8>`),其后是 `04_memory/source-versions/<docSlug>/` 里的
296
+ * 历史快照。快照保存的是**被覆盖前的原文件字节**,因此回滚是字节级的。
297
+ */
298
+ listVersions(docId: string): Promise<DocumentVersion[]>;
299
+ /**
300
+ * 回滚到某个历史版本。
301
+ *
302
+ * 语义:用快照内容重新调用 `addSource`。因为 `addSource` 在覆盖前会把当前
303
+ * head 再快照一次,所以**回滚本身也可回滚**,历史只增不减。
304
+ * `current-<hash8>` 指向当前 head,属于 no-op,直接返回当前详情。
305
+ */
306
+ revertDocument(docId: string, versionId: string): Promise<Envelope<KnowledgeDocumentDetail>>;
307
+ /** 删除文档本体与其版本历史(重新写入同一 sourceId 会从头开始记版本)。 */
308
+ deleteDocument(docId: string): Promise<Envelope<{
309
+ deleted: true;
310
+ }>>;
311
+ writeCard(input: {
312
+ entityType: SchemaType;
313
+ entityId: string;
314
+ title: string;
315
+ content: string;
316
+ sourceRefs: string[];
317
+ status?: KnowledgeStatus;
318
+ summary?: string; /**
319
+ * 负责人。它属于 0021 §6.4 的卡片信封(智能归因的五类卡片里 `check.owner` 是必填 ——
320
+ * 「这一步该找谁」和成本、判定阈值一样是执行信息);其余 entity_type 不使用它。
321
+ */
322
+ owner?: string;
323
+ metadata?: Record<string, unknown>;
324
+ lineage?: LineageContext;
325
+ provenance?: LineageRef[];
326
+ }): Promise<Envelope<{
327
+ entityId: string;
328
+ path: string;
329
+ lineage?: LineageContext;
330
+ }>>;
331
+ /** Directory holding one wiki card's version snapshots. */
332
+ private cardVersionDir;
333
+ /** Write the previous card file bytes as one immutable version snapshot. */
334
+ private snapshotCard;
335
+ /** Snapshot basenames (without `.md`) for one card, newest first. */
336
+ private cardVersionIds;
337
+ /** Resolve one card by id, optionally constrained to a type (ids are unique per type). */
338
+ readCard(entityId: string, entityType?: SchemaType): Promise<KnowledgeCard | undefined>;
339
+ /**
340
+ * Version list for one card: the newest snapshot reported as current *plus* the
341
+ * live head. The head is not itself a snapshot — it is the file on disk — but a
342
+ * version list that omits what you are looking at is unreadable.
343
+ */
344
+ listCardVersions(entityId: string, entityType?: SchemaType): Promise<WikiCardVersion[]>;
345
+ /** 回滚一张卡片到历史快照;写入走 writeCard,所以**回滚前的当前版本也会被快照**。 */
346
+ revertCard(entityId: string, versionId: string, entityType?: SchemaType): Promise<Envelope<KnowledgeCard>>;
347
+ loadCards(): Promise<KnowledgeCard[]>;
348
+ setStatus(entityId: string, status: KnowledgeStatus, problemNote?: string, lineage?: LineageContext): Promise<Envelope<{
349
+ entityId: string;
350
+ status: KnowledgeStatus;
351
+ lineage?: LineageContext;
352
+ }>>;
353
+ /**
354
+ * Stage 2: compile wiki cards into wikiNotes.
355
+ *
356
+ * A note is the unit stage 3 recalls and stage 4 reranks. Every note keeps a
357
+ * `wikiId` pointer so recall can always resolve the authoritative wiki card,
358
+ * and the first note of a wiki keeps the historical `<type>:<id>` unitId.
359
+ *
360
+ * Split per card (not per corpus) so the incremental rebuild can recompile one
361
+ * card's notes while keeping every other card's `unitId`s — and therefore their
362
+ * vectors — exactly as they were.
363
+ */
364
+ private compileNotes;
365
+ private compileCardNotes;
366
+ /** 1-hop neighbourhood of a set of wiki cards inside the compiled graph. */
367
+ private oneHopGraph;
368
+ /**
369
+ * Stage 4: BERT cross-encoder rerank over the recalled wikiNotes.
370
+ *
371
+ * Mirrors the embedding path: a missing model or worker degrades to the
372
+ * fused score order with an explicit warning instead of faking a score.
373
+ *
374
+ * 0031 的两处改动:
375
+ * 1. **作用在候选池上**,不再是已经截断到 `recallTopK` 的那 10 条 —— 否则重排只能
376
+ * 换顺序,救不回被融合排到窗口外的那一条(0014 点名的「分层只做了一半」)。
377
+ * 2. **带阈值**:低于 `threshold` 的一律丢弃,并报出丢了几条。「弃答」主要靠它 ——
378
+ * cross-encoder 的分是**跨查询可比**的,而关键词/向量的阈值做不到这一点。
379
+ *
380
+ * `threshold` 与 WeKnora 同刻度(**原始 logit**,默认 0.2);worker 用
381
+ * `predict_raw` 保证这一点(`predict` 默认会套 sigmoid),`rerankScore` 是
382
+ * sigmoid 之后的展示值,两者单调等价,排序不受影响。刻度换算集中在
383
+ * `applyRerank`(纯函数,有测试),这里不再自己乘除。
384
+ */
385
+ private rerankNotes;
386
+ /**
387
+ * Fingerprint of everything a wikiNote is compiled *from*.
388
+ *
389
+ * Deliberately excludes the fields that are cheap to refresh on a reused note
390
+ * (`provenance`, `imagePaths`, `metadata`) and includes the ones that change
391
+ * what the note says (`title`, `status`, `content`, `sourceRefs`). A card whose
392
+ * fingerprint is unchanged produces byte-identical notes, so reusing them is
393
+ * not a shortcut — it is the same answer without the churn.
394
+ */
395
+ private cardHashOf;
396
+ /** Previous `wiki_notes.json` (or the pre-0014 mirror), without touching `this.units`. */
397
+ private readNotesArtifact;
398
+ /**
399
+ * 来源的抽取指纹。
400
+ *
401
+ * 三项缺一不可:
402
+ * - **正文**:文档本身变了,抽出来的东西自然要重算;
403
+ * - **声明式候选**:它们只写在 `metadata` 里(`SourceRaw` 只投影这一块),
404
+ * 正文不变而声明变了是常见操作,不带上它就会漏抽;
405
+ * - **启用的类型注册表**:用户新登记一个 wiki 类型后,同一份文档的判型结论会变。
406
+ * 不把注册表算进指纹,「来源没变就永远不重抽」会把新类型永远锁在门外。
407
+ */
408
+ private extractionFingerprint;
409
+ /** 一次 Pass 0 的真实结果:计数器 + 待装配的关系 + 来源指纹。 */
410
+ private emptyExtractionOutcome;
411
+ /**
412
+ * Pass 0:对指纹变了的来源做候选抽取 + 归一,并把结果落成 wiki 卡片。
413
+ *
414
+ * 三条硬约束:
415
+ * 1. **增量**:指纹没变的来源一次都不抽(这是 0025 增量承诺的一部分);
416
+ * 2. **不重写没变的卡片**:合并只追加 `source_refs`,正文不动,所以不会凭空造
417
+ * 版本快照(`snapshotCard` 只认正文变化);
418
+ * 3. **fail-soft**:一个候选被闸门拒绝、甚至一份来源整个抛错,都只记一笔,
419
+ * 绝不带走整次重建 —— 重建失败比少一张卡片严重得多。
420
+ */
421
+ private runExtractionStage;
422
+ /** 读回关系产物。文件不在或读不动都当「没有」,不抛。 */
423
+ private readExtractedRelations;
424
+ /** 落盘关系产物。失败只记一笔:它不该带走整次重建。 */
425
+ private writeExtractedRelations;
426
+ /** 一份来源的抽取结果:新建候选卡片、把证据来源并进已有卡片、收集关系候选。 */
427
+ private extractFromSource;
428
+ /**
429
+ * 把关系候选装配成 wiki↔wiki 的边。
430
+ *
431
+ * 只有两端都解析到**已存在的 wiki 节点**时才加边,其余丢弃并计数:凭空造一个
432
+ * 节点会给图上留一个点不开的孤立点,比没有这条边更难解释。自环同理丢弃。
433
+ * `supported_by`(卡片 → 来源)完全不受影响,它是另一套边。
434
+ */
435
+ private applyExtractedRelations;
436
+ rebuild(only?: 'all' | 'schema' | 'wiki' | 'embeddings', lineage?: LineageContext, options?: {
437
+ extract?: boolean;
438
+ }): Promise<Envelope<RebuildReport>>;
439
+ /**
440
+ * The staged read path:
441
+ * 3) recall — multi-route (keyword + vector + knowledge graph) recall over
442
+ * wikiNotes, bounded by `recallTopK`, then resolve each hit's wiki and
443
+ * its 1-hop graph;
444
+ * 4) rerank — BERT cross-encoder, then expand only `contextTopN` notes
445
+ * into the context pack handed to the model.
446
+ */
447
+ /**
448
+ * 编码器健康门(0031 的 P0)。
449
+ *
450
+ * 0030 的真实故障:WeMM 经 `SentenceTransformer.encode` 对**任何输入返回同一个向量**
451
+ * (实测四段无关文本两两 `cos = 1.000000`),而整条链路照样上报
452
+ * `routes: ["fts","vector","graph"]` —— 谎报「三路都在跑」。索引里 44 行有 39 行逐字节
453
+ * 相同,排序退化成 `unitId` 字典序,而界面上看不出任何异常。
454
+ *
455
+ * 所以「能不能用」不能靠「跑没跑」来判断,要**实测**:编码两段无关文本,要求余弦远小于 1。
456
+ * 不通过就关掉向量路并如实说明 —— 一条会撒谎的路比没有这条路更坏。
457
+ *
458
+ * 代价:第一次用到向量路时要起一次 worker(模型常驻之后就是一次往返)。这个代价是
459
+ * 必要的,而且它和「第一次召回本来就要加载模型」重叠。
460
+ */
461
+ private encoderHealth;
462
+ private checkEncoder;
463
+ /** 关键词路:FTS5 + BM25(0031)。索引不在时如实降级,不退回旧的计数打分。 */
464
+ private ftsRoute;
465
+ /**
466
+ * 向量路:健康门 → 编码一次 → 原始余弦 → 阈值。
467
+ *
468
+ * 分数**不再**做 `(cosine + 1) / 2` 的映射:那个映射把余弦压进 0..1 之后,`0.15` 这样的
469
+ * 阈值就完全失去意义(余弦 0 会被映射成 0.5,轻松过线)。原始余弦是绝对量,可以直接
470
+ * 用来判「这段内容和问题到底像不像」—— 弃答主要靠它和重排阈值。
471
+ */
472
+ private vectorRoute;
473
+ /**
474
+ * 图谱的**名次表**(不是一路分数,见 `graphBoost`)。
475
+ *
476
+ * 匹配逻辑与 0030 相同(词面匹配节点 title / id 与关系词,命中节点带出 1 跳邻居并衰减),
477
+ * 但返回值只用于给**已经在候选池里**的条目加权 —— 它自己不能制造候选。
478
+ */
479
+ private graphBoostRanking;
480
+ /** SourceRaw 正文,按 sourceId 索引;证据片段从这里取。写入后失效。 */
481
+ private sourceCorpusCache;
482
+ private sourceCorpus;
483
+ /**
484
+ * 给命中挂上**证据片段**(0031)。
485
+ *
486
+ * `sourceRefs` 只说了「这条结论出自哪几份 SourceRaw」,而模型要核对一个数字时需要的
487
+ * 是**那一段原文**。这里把它解析出来放进上下文,于是「每个数字都能指回它的口径定义与
488
+ * 原始文档」在上下文层面成立,而不是靠模型自觉再调一次工具。
489
+ */
490
+ private attachEvidence;
491
+ recall(query: string, limit?: number, sourceTypes?: string[], includeProblems?: boolean, mode?: RecallMode, lineage?: LineageContext, options?: {
492
+ contextTopN?: number;
493
+ rerank?: boolean;
494
+ }): Promise<Envelope<RecallResult>>;
495
+ /**
496
+ * 向量路的原始余弦(0031 修了两个数)。
497
+ *
498
+ * 1. **分母**:向量在入库与查询时都已归一(实测 `|v| = 0.9992`),量化是 `round(v × 127)`,
499
+ * 所以 `Σ q_i·s_i ≈ 127²·cos`,正确分母是 `127²`。0030 写的是 `127² × dimension`,
500
+ * 多除了一个 1024 —— 任何余弦都被压进 ±0.001,再经 `(cos+1)/2` 之后所有候选都落在
501
+ * 0.5 附近,**排序完全没有区分度**(实测:某行自相似度算出来是 0.000975,应为 1.0)。
502
+ * 2. **量纲**:返回**原始余弦**,不再做 `(cos+1)/2` 的映射 —— 那个映射让 `0.15` 这类阈值
503
+ * 失去意义(余弦 0 → 0.5,轻松过线)。原始余弦是绝对量,可以直接用于弃答。
504
+ */
505
+ private vectorRecall;
506
+ /**
507
+ * 解析后的三个「家当」路径(0029)。
508
+ *
509
+ * 设置面板用它显示「自动」到底指向哪里:配置里那三个字段空着就是「跟着根路径
510
+ * 走」,但用户要看到的是**真实路径**,否则「自动」等于没说。
511
+ */
512
+ resourcePaths(): {
513
+ python: string;
514
+ embeddingModel: string;
515
+ rerankModel: string;
516
+ embeddingModelId: string;
517
+ };
518
+ embeddingHealth(): Promise<Envelope<Record<string, unknown>>>;
519
+ /**
520
+ * Stage 5(旁路):读 SourceRaw 原文,**带配额**。
521
+ *
522
+ * 配额是「top `max_chars` 字符」(默认与上限都是 40000),而且是**跨多条来源共享**的,
523
+ * 所以一份长文档很可能只回来开头。这件事必须**说出来**,不能靠调用方自己猜:
524
+ *
525
+ * - 每条带上 `path`(磁盘绝对路径)与 `totalChars`;
526
+ * - 信封上带 `truncated`。
527
+ *
528
+ * 看到 `truncated: true` 或 `returnedChars < totalChars`,就该去读那个文件 —— 这条
529
+ * 路径是知识库里的真实文件,读它与读这里的内容是同一份数据,而且没有配额。这样
530
+ * 「一次读不完」就不再等于「读不到」,也不会出现「以为拿到全文、其实只有前 4 万字符」。
531
+ */
532
+ sourceTruth(query: string, sourceTypes?: string[], limit?: number, maxChars?: number, lineage?: LineageContext): Promise<Envelope<{
533
+ sources: SourceRawRead[];
534
+ sourceReadId: string;
535
+ maxChars: number;
536
+ returnedChars: number;
537
+ truncated: boolean;
538
+ lineage?: LineageContext;
539
+ }>>;
540
+ graphQuery(action: 'entity' | 'neighbors' | 'path' | 'list' | 'types', entityId?: string, entityType?: string, depth?: number, options?: {
541
+ fromId?: string;
542
+ toId?: string;
543
+ status?: string;
544
+ includeProblem?: boolean;
545
+ limit?: number;
546
+ }, lineage?: LineageContext): Promise<Envelope<Record<string, unknown>>>;
547
+ recordFeedback(input: {
548
+ feedbackId?: string;
549
+ unitId?: string;
550
+ rating: number;
551
+ comment?: string;
552
+ sessionKey?: string;
553
+ lineage?: LineageContext;
554
+ }): Promise<Envelope<{
555
+ feedbackId: string;
556
+ lineage?: LineageContext;
557
+ }>>;
558
+ audit(action: string, metadata: Record<string, unknown>): Promise<void>;
559
+ }
560
+ /**
561
+ * @deprecated 0029:知识树的根不再是「一个路径」,而是
562
+ * `<agentRoot>/domain_knowledge/<知识库 id>`。这里保留旧名字只为让外部调用点
563
+ * (注册表的默认库、测试)有个可迁移的入口;新代码一律用 `layout.ts` 的
564
+ * `knowledgeBaseRoot()`。它返回的是**旧布局**的位置,也就是迁移的来源。
565
+ */
566
+ export declare function defaultKnowledgeRoot(): string;
567
+ export {};
568
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":"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"}