dsh-data-domain-knowledge 0.1.1-alpha.2 → 0.1.1-alpha.4

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 (252) hide show
  1. package/README.md +33 -16
  2. package/lib/client.js +1042 -2097
  3. package/lib/contract-refs.d.ts +0 -1
  4. package/lib/doc-page.js +1 -1
  5. package/lib/pages.js +2489 -1060
  6. package/lib/types/agent-behavior-rules.d.ts.map +1 -1
  7. package/lib/types/agent-behavior-rules.js +3 -2
  8. package/lib/types/agent-behavior-rules.js.map +1 -1
  9. package/lib/types/axis-contract.js +1 -1
  10. package/lib/types/axis-contract.js.map +1 -1
  11. package/lib/types/card-organize.d.ts +2 -1
  12. package/lib/types/card-organize.d.ts.map +1 -1
  13. package/lib/types/card-organize.js +5 -3
  14. package/lib/types/card-organize.js.map +1 -1
  15. package/lib/types/config-schema.d.ts +1 -1
  16. package/lib/types/config-schema.js +1 -1
  17. package/lib/types/convert/host.d.ts +2 -3
  18. package/lib/types/convert/host.d.ts.map +1 -1
  19. package/lib/types/convert/host.js +11 -2
  20. package/lib/types/convert/host.js.map +1 -1
  21. package/lib/types/convert/ingest.d.ts +14 -20
  22. package/lib/types/convert/ingest.d.ts.map +1 -1
  23. package/lib/types/convert/ingest.js +8 -5
  24. package/lib/types/convert/ingest.js.map +1 -1
  25. package/lib/types/diagnosis/store.d.ts +2 -2
  26. package/lib/types/diagnosis/store.d.ts.map +1 -1
  27. package/lib/types/diagnosis/store.js +10 -2
  28. package/lib/types/diagnosis/store.js.map +1 -1
  29. package/lib/types/diagnosis/types.d.ts +1 -1
  30. package/lib/types/diagnosis/types.js +1 -1
  31. package/lib/types/extract-model.d.ts +3 -0
  32. package/lib/types/extract-model.d.ts.map +1 -1
  33. package/lib/types/extract-model.js.map +1 -1
  34. package/lib/types/images.js +1 -1
  35. package/lib/types/index.d.ts +0 -4
  36. package/lib/types/index.d.ts.map +1 -1
  37. package/lib/types/index.js +99 -91
  38. package/lib/types/index.js.map +1 -1
  39. package/lib/types/knowledge-bases.d.ts +3 -0
  40. package/lib/types/knowledge-bases.d.ts.map +1 -1
  41. package/lib/types/knowledge-bases.js +22 -2
  42. package/lib/types/knowledge-bases.js.map +1 -1
  43. package/lib/types/knowledge-contract.d.ts +6 -0
  44. package/lib/types/knowledge-contract.d.ts.map +1 -1
  45. package/lib/types/knowledge-contract.js +6 -2
  46. package/lib/types/knowledge-contract.js.map +1 -1
  47. package/lib/types/layout.d.ts +9 -26
  48. package/lib/types/layout.d.ts.map +1 -1
  49. package/lib/types/layout.js +10 -28
  50. package/lib/types/layout.js.map +1 -1
  51. package/lib/types/materialize-snapshot.d.ts +5 -0
  52. package/lib/types/materialize-snapshot.d.ts.map +1 -1
  53. package/lib/types/migrate.d.ts +3 -1
  54. package/lib/types/migrate.d.ts.map +1 -1
  55. package/lib/types/migrate.js +3 -1
  56. package/lib/types/migrate.js.map +1 -1
  57. package/lib/types/model-text.d.ts +7 -0
  58. package/lib/types/model-text.d.ts.map +1 -1
  59. package/lib/types/model-text.js +31 -9
  60. package/lib/types/model-text.js.map +1 -1
  61. package/lib/types/organize-contract.d.ts.map +1 -1
  62. package/lib/types/organize-contract.js +2 -1
  63. package/lib/types/organize-contract.js.map +1 -1
  64. package/lib/types/pipeline/engine.d.ts +28 -4
  65. package/lib/types/pipeline/engine.d.ts.map +1 -1
  66. package/lib/types/pipeline/engine.js +68 -15
  67. package/lib/types/pipeline/engine.js.map +1 -1
  68. package/lib/types/pipeline/progress.d.ts +12 -0
  69. package/lib/types/pipeline/progress.d.ts.map +1 -0
  70. package/lib/types/pipeline/progress.js +37 -0
  71. package/lib/types/pipeline/progress.js.map +1 -0
  72. package/lib/types/pipeline/resumable-extract.d.ts +45 -0
  73. package/lib/types/pipeline/resumable-extract.d.ts.map +1 -0
  74. package/lib/types/pipeline/resumable-extract.js +262 -0
  75. package/lib/types/pipeline/resumable-extract.js.map +1 -0
  76. package/lib/types/pipeline/store.d.ts +8 -2
  77. package/lib/types/pipeline/store.d.ts.map +1 -1
  78. package/lib/types/pipeline/store.js +27 -5
  79. package/lib/types/pipeline/store.js.map +1 -1
  80. package/lib/types/pipeline/types.d.ts +56 -0
  81. package/lib/types/pipeline/types.d.ts.map +1 -1
  82. package/lib/types/pipeline/types.js +18 -1
  83. package/lib/types/pipeline/types.js.map +1 -1
  84. package/lib/types/present.d.ts +1 -1
  85. package/lib/types/present.js +1 -1
  86. package/lib/types/preset-ids.d.ts +0 -1
  87. package/lib/types/preset-ids.d.ts.map +1 -1
  88. package/lib/types/preset-ids.js +0 -3
  89. package/lib/types/preset-ids.js.map +1 -1
  90. package/lib/types/query-analysis.d.ts +0 -5
  91. package/lib/types/query-analysis.d.ts.map +1 -1
  92. package/lib/types/query-analysis.js +0 -16
  93. package/lib/types/query-analysis.js.map +1 -1
  94. package/lib/types/recall-delivery.d.ts +36 -0
  95. package/lib/types/recall-delivery.d.ts.map +1 -0
  96. package/lib/types/recall-delivery.js +16 -0
  97. package/lib/types/recall-delivery.js.map +1 -0
  98. package/lib/types/retrieval/scope.d.ts +17 -0
  99. package/lib/types/retrieval/scope.d.ts.map +1 -0
  100. package/lib/types/retrieval/scope.js +11 -0
  101. package/lib/types/retrieval/scope.js.map +1 -0
  102. package/lib/types/runtime.d.ts +75 -14
  103. package/lib/types/runtime.d.ts.map +1 -1
  104. package/lib/types/runtime.js +454 -198
  105. package/lib/types/runtime.js.map +1 -1
  106. package/lib/types/settings-volatile.d.ts +0 -7
  107. package/lib/types/settings-volatile.d.ts.map +1 -1
  108. package/lib/types/settings-volatile.js +0 -7
  109. package/lib/types/settings-volatile.js.map +1 -1
  110. package/lib/types/source-identity.d.ts +34 -0
  111. package/lib/types/source-identity.d.ts.map +1 -0
  112. package/lib/types/source-identity.js +85 -0
  113. package/lib/types/source-identity.js.map +1 -0
  114. package/lib/types/source-read.d.ts +18 -0
  115. package/lib/types/source-read.d.ts.map +1 -0
  116. package/lib/types/source-read.js +49 -0
  117. package/lib/types/source-read.js.map +1 -0
  118. package/lib/types/store/axis-references.d.ts.map +1 -1
  119. package/lib/types/store/axis-references.js +5 -3
  120. package/lib/types/store/axis-references.js.map +1 -1
  121. package/lib/types/store/knowledge-db.d.ts +5 -29
  122. package/lib/types/store/knowledge-db.d.ts.map +1 -1
  123. package/lib/types/store/knowledge-db.js +57 -2
  124. package/lib/types/store/knowledge-db.js.map +1 -1
  125. package/lib/types/store/source-identity.d.ts +8 -0
  126. package/lib/types/store/source-identity.d.ts.map +1 -0
  127. package/lib/types/store/source-identity.js +56 -0
  128. package/lib/types/store/source-identity.js.map +1 -0
  129. package/lib/types/types.d.ts +46 -5
  130. package/lib/types/types.d.ts.map +1 -1
  131. package/lib/types/types.js +6 -3
  132. package/lib/types/types.js.map +1 -1
  133. package/lib/types/wiki-availability.d.ts +11 -0
  134. package/lib/types/wiki-availability.d.ts.map +1 -0
  135. package/lib/types/wiki-availability.js +39 -0
  136. package/lib/types/wiki-availability.js.map +1 -0
  137. package/lib/types/wiki-finalize.d.ts +4 -2
  138. package/lib/types/wiki-finalize.d.ts.map +1 -1
  139. package/lib/types/wiki-finalize.js +9 -27
  140. package/lib/types/wiki-finalize.js.map +1 -1
  141. package/lib/types/wiki-links.d.ts +35 -0
  142. package/lib/types/wiki-links.d.ts.map +1 -0
  143. package/lib/types/wiki-links.js +129 -0
  144. package/lib/types/wiki-links.js.map +1 -0
  145. package/lib/types/wiki-trial-types.d.ts +3 -0
  146. package/lib/types/wiki-trial-types.d.ts.map +1 -1
  147. package/lib/types/wiki-trial.d.ts +3 -3
  148. package/lib/types/wiki-trial.d.ts.map +1 -1
  149. package/lib/types/wiki-trial.js +14 -3
  150. package/lib/types/wiki-trial.js.map +1 -1
  151. package/package.json +16 -16
  152. package/scripts/doctor.mjs +0 -7
  153. package/scripts/setup-embedding.sh +0 -0
  154. package/src/agent-behavior-rules.ts +3 -2
  155. package/src/axis-contract.ts +1 -1
  156. package/src/card-organize.ts +5 -3
  157. package/src/client/AttributionEventGuide.tsx +3 -3
  158. package/src/client/AxisMatrix.tsx +86 -19
  159. package/src/client/AxisRegistrySection.tsx +1 -1
  160. package/src/client/CompileSettingsView.tsx +473 -0
  161. package/src/client/DirectoryPicker.tsx +0 -2
  162. package/src/client/ExtractionTasksPage.tsx +557 -423
  163. package/src/client/GuideArchitectureCanvas.tsx +5 -12
  164. package/src/client/ImportFilesDialog.tsx +1 -0
  165. package/src/client/InfoHint.tsx +1 -1
  166. package/src/client/KnowledgeBaseTab.tsx +141 -148
  167. package/src/client/KnowledgePanel.tsx +16 -9
  168. package/src/client/OperationLogTab.tsx +1 -1
  169. package/src/client/PipelineRunView.tsx +173 -0
  170. package/src/client/RecallPanel.tsx +5 -16
  171. package/src/client/TabGuide.tsx +3 -7
  172. package/src/client/WikiFlowPanel.tsx +10 -11
  173. package/src/client/arch/NodeLogicPanel.tsx +3 -3
  174. package/src/client/arch/model.ts +5 -113
  175. package/src/client/architecture.css +1 -1
  176. package/src/client/architecture.tsx +13 -27
  177. package/src/client/attribution/AttributionTab.tsx +141 -10
  178. package/src/client/pages.css +305 -180
  179. package/src/client/pages.tsx +7 -12
  180. package/src/client/styles.css +15 -96
  181. package/src/config-schema.ts +1 -1
  182. package/src/convert/host.ts +13 -5
  183. package/src/convert/ingest.ts +20 -7
  184. package/src/diagnosis/store.ts +7 -2
  185. package/src/diagnosis/types.ts +1 -1
  186. package/src/extract-model.ts +3 -0
  187. package/src/images.ts +1 -1
  188. package/src/index.ts +92 -97
  189. package/src/knowledge-bases.ts +23 -3
  190. package/src/knowledge-contract.ts +7 -2
  191. package/src/layout.ts +10 -32
  192. package/src/materialize-snapshot.ts +1 -0
  193. package/src/migrate.ts +3 -1
  194. package/src/model-text.ts +33 -11
  195. package/src/organize-contract.ts +2 -1
  196. package/src/pipeline/engine.ts +85 -22
  197. package/src/pipeline/progress.ts +40 -0
  198. package/src/pipeline/resumable-extract.ts +233 -0
  199. package/src/pipeline/store.ts +28 -6
  200. package/src/pipeline/types.ts +47 -2
  201. package/src/present.ts +1 -1
  202. package/src/preset-ids.ts +0 -4
  203. package/src/query-analysis.ts +0 -20
  204. package/src/recall-delivery.ts +19 -0
  205. package/src/retrieval/scope.ts +10 -0
  206. package/src/runtime.ts +412 -206
  207. package/src/settings-volatile.ts +0 -7
  208. package/src/source-identity.ts +85 -0
  209. package/src/source-read.ts +47 -0
  210. package/src/store/axis-references.ts +5 -3
  211. package/src/store/knowledge-db.ts +54 -2
  212. package/src/store/source-identity.ts +42 -0
  213. package/src/types.ts +18 -5
  214. package/src/wiki-availability.ts +37 -0
  215. package/src/wiki-finalize.ts +9 -25
  216. package/src/wiki-links.ts +120 -0
  217. package/src/wiki-trial-types.ts +3 -2
  218. package/src/wiki-trial.ts +17 -6
  219. package/lib/types/intent/engine.d.ts +0 -122
  220. package/lib/types/intent/engine.d.ts.map +0 -1
  221. package/lib/types/intent/engine.js +0 -488
  222. package/lib/types/intent/engine.js.map +0 -1
  223. package/lib/types/intent/host.d.ts +0 -68
  224. package/lib/types/intent/host.d.ts.map +0 -1
  225. package/lib/types/intent/host.js +0 -249
  226. package/lib/types/intent/host.js.map +0 -1
  227. package/lib/types/intent/scope.d.ts +0 -25
  228. package/lib/types/intent/scope.d.ts.map +0 -1
  229. package/lib/types/intent/scope.js +0 -116
  230. package/lib/types/intent/scope.js.map +0 -1
  231. package/lib/types/intent/store.d.ts +0 -33
  232. package/lib/types/intent/store.d.ts.map +0 -1
  233. package/lib/types/intent/store.js +0 -239
  234. package/lib/types/intent/store.js.map +0 -1
  235. package/lib/types/intent/tools.d.ts +0 -62
  236. package/lib/types/intent/tools.d.ts.map +0 -1
  237. package/lib/types/intent/tools.js +0 -130
  238. package/lib/types/intent/tools.js.map +0 -1
  239. package/lib/types/intent/types.d.ts +0 -170
  240. package/lib/types/intent/types.d.ts.map +0 -1
  241. package/lib/types/intent/types.js +0 -56
  242. package/lib/types/intent/types.js.map +0 -1
  243. package/src/client/IntentLogic.tsx +0 -192
  244. package/src/client/IntentTab.tsx +0 -343
  245. package/src/client/TypeDefinitionDrawer.tsx +0 -195
  246. package/src/intent/README.md +0 -42
  247. package/src/intent/engine.ts +0 -515
  248. package/src/intent/host.ts +0 -315
  249. package/src/intent/scope.ts +0 -125
  250. package/src/intent/store.ts +0 -218
  251. package/src/intent/tools.ts +0 -154
  252. package/src/intent/types.ts +0 -229
@@ -1,488 +0,0 @@
1
- import { DEFAULT_ACTS, DEFAULT_CATEGORIES, DEFAULT_INTENT_SETTINGS, DEFAULT_PREDICATES, } from './types.js';
2
- import { envelopeSuccess } from '#contracts';
3
- function id(prefix = 'intent') {
4
- return `${prefix}_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 8)}`;
5
- }
6
- function clamp01(value) {
7
- if (typeof value !== 'number' || !Number.isFinite(value))
8
- return undefined;
9
- return Math.max(0, Math.min(1, value));
10
- }
11
- function slotsOf(value) {
12
- if (!value || typeof value !== 'object' || Array.isArray(value))
13
- return {};
14
- return Object.fromEntries(Object.entries(value).filter(([, item]) => item !== null && item !== undefined));
15
- }
16
- function refsOf(value) {
17
- if (!Array.isArray(value))
18
- return [];
19
- return value.flatMap((ref) => {
20
- if (typeof ref === 'string' && ref.trim())
21
- return [{ id: ref.trim() }];
22
- if (ref && typeof ref === 'object' && typeof ref.id === 'string') {
23
- const item = ref;
24
- return [{ id: item.id, ...(typeof item.kind === 'string' ? { kind: item.kind } : {}), ...(typeof item.label === 'string' ? { label: item.label } : {}) }];
25
- }
26
- return [];
27
- });
28
- }
29
- function safeLineage(value) {
30
- if (!value || typeof value !== 'object' || Array.isArray(value))
31
- return {};
32
- const record = value;
33
- const result = {};
34
- for (const key of ['sessionId', 'turnId', 'intentId', 'taskId', 'subtaskId', 'parentSubtaskId', 'runId', 'traceId', 'domain']) {
35
- if (typeof record[key] === 'string' && record[key].trim())
36
- result[key] = record[key].trim().slice(0, 160);
37
- }
38
- return result;
39
- }
40
- /** 标量字段的同类兜底:类型不对就退回默认值(引用对象、`undefined`、字符串都算不对)。 */
41
- function numberOr(value, fallback) {
42
- return typeof value === 'number' && Number.isFinite(value) ? value : fallback;
43
- }
44
- function booleanOr(value, fallback) {
45
- return typeof value === 'boolean' ? value : fallback;
46
- }
47
- function normalizeSettings(settings) {
48
- return {
49
- ...settings,
50
- clarifyThreshold: numberOr(settings.clarifyThreshold, DEFAULT_INTENT_SETTINGS.clarifyThreshold),
51
- ttlSeconds: numberOr(settings.ttlSeconds, DEFAULT_INTENT_SETTINGS.ttlSeconds),
52
- fallbackEnabled: booleanOr(settings.fallbackEnabled, DEFAULT_INTENT_SETTINGS.fallbackEnabled),
53
- };
54
- }
55
- /**
56
- * Bounded audit store: one record per session turn, expiring after the configured TTL.
57
- *
58
- * 0033 起它同时是**工作集**与**留痕的入口**,两者的分工要说清:
59
- *
60
- * - 内存里这份是有 TTL 的**工作集**(默认 600 秒):血缘判定只关心最近的轮次,
61
- * 一个十轮之前就结束的会话不该让新的一轮接到它的 task 上。
62
- * - 磁盘上那份(`intent/intent.db`)是**留痕**,当前版本便于读取,历史版本只追加、不随 TTL 消失。
63
- * `sink` 在每次 `save` 时被调用,`hydrate` 在启动时把留痕读回工作集 ——
64
- * 重启之后同一个会话的血缘因此还在(在 TTL 窗口内)。
65
- *
66
- * 为什么不干脆让 `records()` 直接读文件:那会让 TTL 名存实亡(文件永远有),
67
- * 于是「工作集」这个概念消失,血缘会接到很久以前的 task 上。两件事分开,
68
- * 各自的契约才都成立。
69
- */
70
- export class IntentStore {
71
- ttlSeconds;
72
- now;
73
- sessions = new Map();
74
- /**
75
- * 每条被保存的记录都会经过它(落盘留痕)。
76
- *
77
- * 同步签名、由调用方自己吞异常:`save` 在记录路径的关键路径上,而留痕失败
78
- * 不该让这一轮的意图记录失败 —— 「记录不拦截请求」这条契约对留痕也成立。
79
- */
80
- sink;
81
- constructor(ttlSeconds = DEFAULT_INTENT_SETTINGS.ttlSeconds, now = () => Date.now()) {
82
- this.ttlSeconds = ttlSeconds;
83
- this.now = now;
84
- }
85
- /** 装上一个留痕出口。多次调用以最后一次为准。 */
86
- setSink(sink) {
87
- this.sink = sink;
88
- }
89
- /**
90
- * 把留痕读回工作集(启动时调用一次)。
91
- *
92
- * `touched` 用记录自己的 `updatedAt`,于是「重启」不会把 TTL 归零:一份十小时
93
- * 前的记录在 TTL 600 秒下本来就该过期,重启不该让它复活。
94
- */
95
- hydrate(records) {
96
- let loaded = 0;
97
- for (const record of records) {
98
- const item = this.sessions.get(record.sessionKey) ?? { records: [], touched: 0 };
99
- const index = item.records.findIndex(existing => existing.turnKey === record.turnKey);
100
- if (index >= 0)
101
- item.records[index] = record;
102
- else
103
- item.records.push(record);
104
- item.records = item.records.slice(-100);
105
- const at = Date.parse(String(record.updatedAt ?? record.createdAt));
106
- item.touched = Math.max(item.touched, Number.isFinite(at) ? at : this.now());
107
- this.sessions.set(record.sessionKey, item);
108
- loaded += 1;
109
- }
110
- return loaded;
111
- }
112
- setTtl(seconds) {
113
- this.ttlSeconds = Math.max(1, Math.min(86400, Math.round(seconds)));
114
- }
115
- entry(sessionKey) {
116
- const current = this.sessions.get(sessionKey);
117
- if (!current || this.now() - current.touched > this.ttlSeconds * 1000) {
118
- const fresh = { records: [], touched: this.now() };
119
- this.sessions.set(sessionKey, fresh);
120
- return fresh;
121
- }
122
- current.touched = this.now();
123
- return current;
124
- }
125
- /** Upsert by turn key so repeated records within one turn stay a single fact. */
126
- save(record) {
127
- const item = this.entry(record.sessionKey);
128
- const index = item.records.findIndex(existing => existing.turnKey === record.turnKey);
129
- if (index >= 0)
130
- item.records[index] = record;
131
- else
132
- item.records.push(record);
133
- item.records = item.records.slice(-100);
134
- try {
135
- this.sink?.(record);
136
- }
137
- catch { /* 留痕失败不影响这一轮 */ }
138
- return record;
139
- }
140
- records(sessionKey) {
141
- return this.entry(sessionKey).records;
142
- }
143
- last(sessionKey) {
144
- return this.entry(sessionKey).records.at(-1);
145
- }
146
- findByTurn(sessionKey, turnKey) {
147
- return this.entry(sessionKey).records.find(record => record.turnKey === turnKey);
148
- }
149
- taskExists(sessionKey, taskId) {
150
- return this.entry(sessionKey).records.some(record => record.lineage.taskId === taskId);
151
- }
152
- lastSubtaskOf(sessionKey, taskId) {
153
- return this.entry(sessionKey).records.filter(record => record.lineage.taskId === taskId).at(-1)?.lineage.subtaskId;
154
- }
155
- expiresAt(sessionKey) {
156
- const item = this.entry(sessionKey);
157
- return item.records.length > 0 ? new Date(item.touched + this.ttlSeconds * 1000).toISOString() : undefined;
158
- }
159
- clear(sessionKey) {
160
- this.sessions.delete(sessionKey);
161
- }
162
- /** When the session was last touched (ms since epoch); 0 when unknown. */
163
- touchedAt(sessionKey) {
164
- return this.sessions.get(sessionKey)?.touched ?? 0;
165
- }
166
- /** Live session keys, most recently touched first. Expired sessions are skipped. */
167
- sessionKeys() {
168
- const now = this.now();
169
- const live = [];
170
- for (const [key, item] of this.sessions) {
171
- if (now - item.touched > this.ttlSeconds * 1000)
172
- continue;
173
- live.push({ key, touched: item.touched });
174
- }
175
- return live.sort((left, right) => right.touched - left.touched).map(item => item.key);
176
- }
177
- }
178
- /**
179
- * Intent recorder. Every entry point is total: an unrecognized act, an unknown
180
- * task reference, or a missing classification degrade into warnings on a stored
181
- * record. Nothing here blocks, confirms, or rewrites the user's request.
182
- */
183
- export class IntentEngine {
184
- store;
185
- settings;
186
- turns = new Map();
187
- constructor(settings = {}, store) {
188
- this.settings = normalizeSettings({ ...DEFAULT_INTENT_SETTINGS, ...settings });
189
- this.store = store ?? new IntentStore(this.settings.ttlSeconds);
190
- }
191
- setSettings(settings) {
192
- this.settings = normalizeSettings({ ...this.settings, ...settings });
193
- this.store.setTtl(this.settings.ttlSeconds);
194
- }
195
- getSettings() {
196
- return this.settings;
197
- }
198
- /**
199
- * Open a turn and allocate its provisional ids before the model records.
200
- * Downstream calls dispatched in parallel with the record can already carry
201
- * an id; the record later commits the authoritative task binding.
202
- */
203
- beginTurn(sessionKey, turn, userInput, eligible = true) {
204
- const state = {
205
- turn,
206
- userInput: userInput.slice(0, 2000),
207
- subtaskId: id('subtask'),
208
- taskId: this.store.last(sessionKey)?.lineage.taskId,
209
- eligible,
210
- dataToolUsed: false,
211
- committed: false,
212
- };
213
- this.turns.set(sessionKey, state);
214
- return state;
215
- }
216
- /**
217
- * 用户消息可能在 `turn/start` 之后才到达。
218
- *
219
- * 宿主事件顺序不是固定的:有些会话先发 `turn/start`,再发 `user/message`。如果只在
220
- * `beginTurn` 读取一次原文,就会把整轮意图永久记录成空字符串。收到真实用户消息后,
221
- * 只更新尚未提交的当前轮次;已经记录的判断不再被后来事件改写。
222
- */
223
- updateTurnInput(sessionKey, userInput) {
224
- const state = this.turns.get(sessionKey);
225
- if (!state || state.committed || !userInput.trim())
226
- return false;
227
- state.userInput = userInput.slice(0, 2000);
228
- return true;
229
- }
230
- /** Mark the current turn as a data turn without classifying it. */
231
- markDataIntent(sessionKey, turn) {
232
- const state = this.turns.get(sessionKey);
233
- if (!state || state.committed || (turn !== undefined && state.turn !== turn))
234
- return false;
235
- state.eligible = true;
236
- return true;
237
- }
238
- /** Mark the current turn as a data turn based on actual data-tool use. */
239
- markDataToolUse(sessionKey, turn) {
240
- const state = this.turns.get(sessionKey);
241
- if (!state || state.committed || (turn !== undefined && state.turn !== turn))
242
- return false;
243
- state.eligible = true;
244
- state.dataToolUsed = true;
245
- return true;
246
- }
247
- /** Clear a text-only gate when the model explicitly identifies a non-data turn. */
248
- clearDataIntent(sessionKey, turn) {
249
- const state = this.turns.get(sessionKey);
250
- if (!state || state.committed || (turn !== undefined && state.turn !== turn))
251
- return false;
252
- if (!state.dataToolUsed)
253
- state.eligible = false;
254
- return true;
255
- }
256
- /** Whether the current turn is eligible for data intent recording. */
257
- isDataIntentTurn(sessionKey, turn) {
258
- const state = this.turns.get(sessionKey);
259
- return Boolean(state && !state.committed && state.eligible && (turn === undefined || state.turn === turn));
260
- }
261
- /** Backfill one `unknown` record only when an eligible data turn has no model record. */
262
- fallbackWhenMissing(sessionKey, turn) {
263
- if (!this.settings.fallbackEnabled)
264
- return undefined;
265
- const state = this.turns.get(sessionKey);
266
- if (!state || state.turn !== turn || state.committed)
267
- return undefined;
268
- if (!state.eligible) {
269
- this.turns.delete(sessionKey);
270
- return undefined;
271
- }
272
- const result = this.record({
273
- userInput: state.userInput,
274
- act: 'unknown',
275
- category: 'unknown',
276
- relation: 'unknown',
277
- sessionKey,
278
- }, 'fallback');
279
- if (result.ok) {
280
- state.committed = true;
281
- this.turns.delete(sessionKey);
282
- }
283
- return result;
284
- }
285
- /** Record the model's intent judgement. The host applies scope before calling this method. */
286
- record(input, source = 'model') {
287
- const sessionKey = input.sessionKey?.trim() || 'default';
288
- const timestamp = new Date(input.now ?? Date.now()).toISOString();
289
- const warnings = [];
290
- const state = this.turns.get(sessionKey);
291
- const turnKey = state ? `${sessionKey}#${state.turn}` : `${sessionKey}#${input.turnId?.trim() || 'manual'}`;
292
- const existing = this.store.findByTurn(sessionKey, turnKey);
293
- const lineageInput = safeLineage(input.lineage);
294
- const userInput = input.userInput?.trim() ? input.userInput : state?.userInput ?? '';
295
- const act = input.act?.trim() || 'unknown';
296
- const category = input.category?.trim() || undefined;
297
- const confidence = clamp01(input.confidence);
298
- if (!userInput.trim())
299
- warnings.push('user_input 为空,仅记录了一条空意图');
300
- if (act !== 'unknown' && !DEFAULT_ACTS.some(item => item.id === act && item.enabled))
301
- warnings.push(`act "${act}" 不在内置 act 列表中,已按原样记录`);
302
- if (category && !DEFAULT_CATEGORIES.some(item => item.id === category && item.enabled))
303
- warnings.push(`category "${category}" 不是内置分类,已按原样记录`);
304
- const lowConfidence = confidence !== undefined && confidence < this.settings.clarifyThreshold;
305
- if (lowConfidence)
306
- warnings.push(`confidence ${confidence.toFixed(2)} 低于阈值 ${this.settings.clarifyThreshold.toFixed(2)},已标记 lowConfidence`);
307
- const requestedTaskId = lineageInput.taskId;
308
- let relation = input.relation ?? (requestedTaskId ? 'subtask_of' : 'new_task');
309
- let taskId;
310
- let parentSubtaskId;
311
- if (relation === 'subtask_of') {
312
- if (requestedTaskId && this.store.taskExists(sessionKey, requestedTaskId)) {
313
- taskId = requestedTaskId;
314
- parentSubtaskId = this.store.lastSubtaskOf(sessionKey, requestedTaskId);
315
- }
316
- else {
317
- warnings.push(requestedTaskId
318
- ? `task_id "${requestedTaskId}" 在本会话不存在,本轮已按 new_task 记录`
319
- : 'relation=subtask_of 缺少 task_id,本轮已按 new_task 记录');
320
- relation = 'new_task';
321
- }
322
- }
323
- if (!taskId) {
324
- taskId = relation === 'new_task'
325
- ? id('task')
326
- : existing?.lineage.taskId ?? state?.taskId ?? id('task');
327
- }
328
- const subtaskId = existing?.lineage.subtaskId ?? state?.subtaskId ?? id('subtask');
329
- const runId = lineageInput.runId ?? existing?.lineage.runId ?? id('run');
330
- const intentId = existing?.id ?? id('intent');
331
- const turnId = input.turnId?.trim() || existing?.turnId || (state ? `turn-${state.turn}` : id('turn'));
332
- const record = {
333
- id: intentId,
334
- sessionKey,
335
- turnKey,
336
- turnId,
337
- userInput,
338
- act,
339
- ...(category ? { category } : {}),
340
- ...(input.predicate?.trim() ? { predicate: input.predicate.trim() } : {}),
341
- slots: slotsOf(input.slots),
342
- ...(confidence !== undefined ? { confidence } : {}),
343
- ...(lowConfidence ? { lowConfidence: true } : {}),
344
- refs: refsOf(input.refs),
345
- relation,
346
- source,
347
- createdAt: existing?.createdAt ?? timestamp,
348
- updatedAt: timestamp,
349
- lineage: {
350
- ...lineageInput,
351
- sessionId: lineageInput.sessionId ?? sessionKey,
352
- turnId,
353
- intentId,
354
- taskId,
355
- subtaskId,
356
- ...(parentSubtaskId ? { parentSubtaskId } : {}),
357
- runId,
358
- },
359
- meta: {},
360
- };
361
- this.store.save(record);
362
- if (state) {
363
- state.committed = true;
364
- state.taskId = taskId;
365
- state.subtaskId = subtaskId;
366
- }
367
- // Built through the shared constructor. This literal used to omit
368
- // `error: null`, which made an intent result the one envelope in the repo
369
- // that did not satisfy spec/contracts/envelope.json.
370
- return envelopeSuccess({
371
- intentId,
372
- taskId,
373
- subtaskId,
374
- ...(parentSubtaskId ? { parentSubtaskId } : {}),
375
- runId,
376
- turnId,
377
- act,
378
- ...(category ? { category } : {}),
379
- relation,
380
- source,
381
- lowConfidence,
382
- activeTasks: this.tasks(sessionKey),
383
- }, warnings);
384
- }
385
- /** Ids a downstream tool call in this session should carry. */
386
- activeLineage(sessionKey) {
387
- const last = this.store.last(sessionKey);
388
- if (last)
389
- return { lineage: { ...last.lineage }, committed: this.turns.get(sessionKey)?.committed ?? true };
390
- const state = this.turns.get(sessionKey);
391
- if (!state)
392
- return undefined;
393
- return { lineage: { sessionId: sessionKey, ...(state.taskId ? { taskId: state.taskId } : {}), subtaskId: state.subtaskId }, committed: false };
394
- }
395
- tasks(sessionKey) {
396
- const now = Date.now();
397
- const seen = new Map();
398
- for (const record of this.store.records(sessionKey)) {
399
- const taskId = record.lineage.taskId;
400
- if (!taskId)
401
- continue;
402
- seen.set(taskId, {
403
- taskId,
404
- ...(record.lineage.subtaskId ? { lastSubtaskId: record.lineage.subtaskId } : {}),
405
- ...(record.category ? { category: record.category } : {}),
406
- ageSeconds: Math.max(0, Math.round((now - Date.parse(record.updatedAt)) / 1000)),
407
- });
408
- }
409
- return [...seen.values()].slice(-3).reverse();
410
- }
411
- view(sessionKey = 'default', includePrompt = false) {
412
- const last = this.store.last(sessionKey);
413
- const view = {
414
- sessionKey,
415
- ...(last?.lineage.taskId ? { activeTaskId: last.lineage.taskId } : {}),
416
- ...(last ? { activeIntentId: last.id } : {}),
417
- tasks: this.tasks(sessionKey),
418
- recent: this.store.records(sessionKey).slice(-10).reverse(),
419
- ...(this.store.expiresAt(sessionKey) ? { expiresAt: this.store.expiresAt(sessionKey) } : {}),
420
- };
421
- return envelopeSuccess({ store: view, ...(includePrompt ? { prompt: this.routingPrompt() } : {}) });
422
- }
423
- /**
424
- * Session-level index for the 意图 panel: every live session with its last
425
- * classification and active task ids. Records themselves stay per-session.
426
- */
427
- overview() {
428
- const sessions = this.store.sessionKeys().map(sessionKey => {
429
- const last = this.store.last(sessionKey);
430
- return {
431
- sessionKey,
432
- recordCount: this.store.records(sessionKey).length,
433
- lastAt: new Date(this.store.touchedAt(sessionKey)).toISOString(),
434
- tasks: this.tasks(sessionKey),
435
- ...(last ? { activeIntentId: last.id } : {}),
436
- ...(last?.act ? { lastAct: last.act } : {}),
437
- ...(last?.category ? { lastCategory: last.category } : {}),
438
- ...(last?.relation ? { lastRelation: last.relation } : {}),
439
- ...(last?.lineage.taskId ? { activeTaskId: last.lineage.taskId } : {}),
440
- ...(last && last.confidence !== undefined ? { lastConfidence: last.confidence } : {}),
441
- };
442
- });
443
- return { sessions };
444
- }
445
- /**
446
- * Model-facing contract: record first, then continue; the record never gates the request.
447
- *
448
- * 这段文本就是 `intent_record` 的**工具描述**(0023 起不再单独注入 system prompt 段),
449
- * 分类规则固定随工具在场,不再通过设置或注册表变更。
450
- *
451
- * 分类判定是**两段式**的(issue 0023):
452
- * 1. 先拿用户意思去比对预置分类的 `description` / `examples`,命中就**直接用该 id**;
453
- * 2. 全不命中才允许自行判断(新起一个 id 或落 `unknown`)。
454
- *
455
- * 这样预置项就是"先验",而不是一份仅供参考的清单——模型不必每轮从零分类。
456
- */
457
- routingPrompt() {
458
- const routes = DEFAULT_CATEGORIES
459
- .map(category => {
460
- const head = `- ${category.id}(${category.label})→ ${category.route}${category.description ? `:${category.description}` : ''}`;
461
- const examples = (category.examples ?? []).filter(Boolean);
462
- return examples.length > 0 ? `${head}\n 例如:${examples.join(' / ')}` : head;
463
- })
464
- .join('\n');
465
- return [
466
- '本工具支持 standard preset 的顶层会话。先判断本轮是否属于数据 / 知识域;只有属于数据域时,才调用 intent_record 落一条数据意图审计;寒暄、闲聊、Agent 自身说明、纯写作、代码和一般运维请求不要调用,也不要补 unknown。记录不改变、不阻塞、也不需要用户确认。',
467
- '如果当前请求会使用数据、知识库、表格、报告、SourceRaw、WikiCard、查询、分析、导入、编译或召回工具,它属于数据域;否则按普通对话处理。',
468
- '当前轮是新的任务用 relation=new_task;如果是在延续某个已有任务(追问、补充、纠正),用 relation=subtask_of 并带上该任务的 task_id;无法判断时省略 relation。',
469
- '',
470
- '分类判定分两步,必须先匹配预置、再自行判断:',
471
- '1) 先把用户的意思和下面的「预置分类」逐条比对——看定义,也看"例如"里的说法。命中就直接用该分类的 id,不要另起一个近义的新 id,也不要因为措辞不同就换一个分类。',
472
- '2) 所有预置分类都不命中时,才自行判断:可以按语义新起一个短语作为分类 id,或落 unknown。新起的 id 用英文小写下划线,并在 slots 里带上关键参数。',
473
- '',
474
- '预置分类(category 参数传 id):',
475
- routes,
476
- '',
477
- 'act 回答"这一轮用户在做什么",挑最贴近的一个:',
478
- DEFAULT_ACTS
479
- .map(def => `- ${def.id}${def.label && def.label !== def.id ? `(${def.label})` : ''}${def.description ? `:${def.description}` : ''}`)
480
- .join('\n'),
481
- `可用 predicate:${DEFAULT_PREDICATES.join('、')}`,
482
- ].join('\n');
483
- }
484
- }
485
- export function createIntentEngine(settings) {
486
- return new IntentEngine(settings);
487
- }
488
- //# sourceMappingURL=engine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/intent/engine.ts"],"names":[],"mappings":"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"}
@@ -1,68 +0,0 @@
1
- import type { Context } from '@deepseek-ai/cordis';
2
- import type { LineageContext } from '#contracts';
3
- import type { IntentToolHost } from './tools.js';
4
- export * from './types.js';
5
- export * from './engine.js';
6
- export * from './tools.js';
7
- /** Session intent audit endpoints. */
8
- export declare const INTENT_MOUNT_PATH = "/intent";
9
- /** Cordis service name consumers read to inherit the session's active task ids. */
10
- export declare const INTENT_SERVICE = "titaDataAgentIntent";
11
- /**
12
- * 意图引擎的对外操作面。
13
- *
14
- * 两类消费者,一个服务:
15
- * - `activeLineage` —— 其它插件(`data-table`)读本轮活动血缘。
16
- * - 其余成员 —— Host 组合根按它注册 `intent_*` 工具。
17
- *
18
- * 本模块只提供意图引擎。组合根在 Host 层注册工具;执行端只接受标准模式的会话。
19
- */
20
- export interface IntentService extends IntentToolHost {
21
- /**
22
- * Ids a downstream tool call in `sessionKey` should carry. `committed` is
23
- * false while the current turn has not recorded yet, so callers can tell a
24
- * provisional subtask id from an authoritative record.
25
- * @param sessionKey - session whose lineage is requested.
26
- * @returns lineage plus whether a record already committed it, or undefined when nothing is known.
27
- */
28
- activeLineage(sessionKey: string): {
29
- lineage: Partial<LineageContext>;
30
- committed: boolean;
31
- } | undefined;
32
- }
33
- /** @deprecated 0029:改用 `IntentService`。保留别名只为不动既有 import。 */
34
- export type IntentLineageService = IntentService;
35
- /**
36
- * 意图记录模块(原 `@tita-agent/data-domain-intent`,0020 并入本插件)。
37
- *
38
- * 它是 `KnowledgePanel` 五个视图之一「意图」的宿主实现。0029 起它**只负责引擎**:
39
- * 轮次记账、`/intent/**` 只读面,以及通过 `INTENT_SERVICE` 暴露操作面。
40
- *
41
- * `intent_*` 工具由组合根在 Host 层注册;本模块只提供引擎和会话审计能力。
42
- *
43
- * 本模块由 `src/index.ts` 组合根调用,不自己导出 `name` / `inject`。
44
- * @module dsh-data-domain-knowledge/intent
45
- */
46
- /**
47
- * 组合根交给意图模块的东西。
48
- *
49
- * `intentRoot` 是**函数**而不是字符串:根路径由设置决定,可以在运行时改,而
50
- * 模块加载时还不知道。每次读写都重新问一次,于是「改了根路径」立刻生效,
51
- * 不存在「配置说 A、实际写 B」。
52
- */
53
- export interface IntentHostDeps {
54
- /** `<agentRoot>/intent`。省略时退回内存态(只测引擎的单元测试用这个形态)。 */
55
- intentRoot?: () => string;
56
- }
57
- /**
58
- * `applyIntent` 交给组合根的那一个把手。
59
- *
60
- * 保留这个把手是为了兼容宿主的装配生命周期;意图审计现在使用固定契约,不需要重灌
61
- * 用户词表或动态重挂工具。
62
- */
63
- export interface IntentHost {
64
- /** 保留宿主装配生命周期的兼容把手;固定审计契约无需重载配置。 */
65
- reprocess(): void;
66
- }
67
- export declare function applyIntent(ctx: Context, deps?: IntentHostDeps): IntentHost;
68
- //# sourceMappingURL=host.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../../src/intent/host.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAIlD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAIhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAIhD,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAE1B,sCAAsC;AACtC,eAAO,MAAM,iBAAiB,YAAY,CAAA;AAC1C,mFAAmF;AACnF,eAAO,MAAM,cAAc,wBAAwB,CAAA;AAEnD;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAc,SAAQ,cAAc;IACnD;;;;;;OAMG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,CAAA;CACxG;AAED,6DAA6D;AAC7D,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAAA;AAqBhD;;;;;;;;;;GAUG;AACH;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,MAAM,CAAA;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,oCAAoC;IACpC,SAAS,IAAI,IAAI,CAAA;CAClB;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,GAAE,cAAmB,GAAG,UAAU,CAwN/E"}