@fllf/agent-sdk 0.1.2 → 0.1.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 (266) hide show
  1. package/CHANGELOG.md +169 -0
  2. package/README.md +824 -198
  3. package/dist/agent/Agent.d.ts +16 -5
  4. package/dist/agent/Agent.d.ts.map +1 -1
  5. package/dist/agent/Agent.js +283 -2
  6. package/dist/agent/Agent.js.map +1 -1
  7. package/dist/agent/index.d.ts +1 -1
  8. package/dist/agent/index.d.ts.map +1 -1
  9. package/dist/agent/types.d.ts +27 -3
  10. package/dist/agent/types.d.ts.map +1 -1
  11. package/dist/config/config.d.ts +22 -3
  12. package/dist/config/config.d.ts.map +1 -1
  13. package/dist/config/config.js +194 -47
  14. package/dist/config/config.js.map +1 -1
  15. package/dist/config/index.d.ts +1 -1
  16. package/dist/config/index.d.ts.map +1 -1
  17. package/dist/errors.d.ts +74 -0
  18. package/dist/errors.d.ts.map +1 -0
  19. package/dist/errors.js +186 -0
  20. package/dist/errors.js.map +1 -0
  21. package/dist/executors/base-executor.d.ts +14 -0
  22. package/dist/executors/base-executor.d.ts.map +1 -0
  23. package/dist/executors/base-executor.js +31 -0
  24. package/dist/executors/base-executor.js.map +1 -0
  25. package/dist/executors/base.d.ts +36 -5
  26. package/dist/executors/base.d.ts.map +1 -1
  27. package/dist/executors/chat-request-builder.d.ts +10 -0
  28. package/dist/executors/chat-request-builder.d.ts.map +1 -0
  29. package/dist/executors/chat-request-builder.js +96 -0
  30. package/dist/executors/chat-request-builder.js.map +1 -0
  31. package/dist/executors/index.d.ts +4 -1
  32. package/dist/executors/index.d.ts.map +1 -1
  33. package/dist/executors/index.js +6 -1
  34. package/dist/executors/index.js.map +1 -1
  35. package/dist/executors/rag-executor.js +1 -1
  36. package/dist/executors/rag-executor.js.map +1 -1
  37. package/dist/executors/simple-chat-executor.d.ts +4 -2
  38. package/dist/executors/simple-chat-executor.d.ts.map +1 -1
  39. package/dist/executors/simple-chat-executor.js +59 -57
  40. package/dist/executors/simple-chat-executor.js.map +1 -1
  41. package/dist/executors/tool-calling-executor.d.ts +20 -2
  42. package/dist/executors/tool-calling-executor.d.ts.map +1 -1
  43. package/dist/executors/tool-calling-executor.js +189 -91
  44. package/dist/executors/tool-calling-executor.js.map +1 -1
  45. package/dist/history/base.d.ts +55 -2
  46. package/dist/history/base.d.ts.map +1 -1
  47. package/dist/history/base.js +49 -0
  48. package/dist/history/base.js.map +1 -1
  49. package/dist/history/compression.d.ts +49 -0
  50. package/dist/history/compression.d.ts.map +1 -0
  51. package/dist/history/compression.js +53 -0
  52. package/dist/history/compression.js.map +1 -0
  53. package/dist/history/context-window.d.ts +33 -0
  54. package/dist/history/context-window.d.ts.map +1 -0
  55. package/dist/history/context-window.js +68 -0
  56. package/dist/history/context-window.js.map +1 -0
  57. package/dist/history/in-memory.d.ts +6 -4
  58. package/dist/history/in-memory.d.ts.map +1 -1
  59. package/dist/history/in-memory.js +25 -39
  60. package/dist/history/in-memory.js.map +1 -1
  61. package/dist/history/index.d.ts +9 -2
  62. package/dist/history/index.d.ts.map +1 -1
  63. package/dist/history/index.js +18 -1
  64. package/dist/history/index.js.map +1 -1
  65. package/dist/history/postgres/index.d.ts +4 -0
  66. package/dist/history/postgres/index.d.ts.map +1 -0
  67. package/dist/history/postgres/index.js +20 -0
  68. package/dist/history/postgres/index.js.map +1 -0
  69. package/dist/history/postgres/postgres-message-history-store.d.ts +35 -0
  70. package/dist/history/postgres/postgres-message-history-store.d.ts.map +1 -0
  71. package/dist/history/postgres/postgres-message-history-store.js +195 -0
  72. package/dist/history/postgres/postgres-message-history-store.js.map +1 -0
  73. package/dist/history/postgres/schema.d.ts +18 -0
  74. package/dist/history/postgres/schema.d.ts.map +1 -0
  75. package/dist/history/postgres/schema.js +46 -0
  76. package/dist/history/postgres/schema.js.map +1 -0
  77. package/dist/history/postgres/sql.d.ts +29 -0
  78. package/dist/history/postgres/sql.d.ts.map +1 -0
  79. package/dist/history/postgres/sql.js +102 -0
  80. package/dist/history/postgres/sql.js.map +1 -0
  81. package/dist/history/postgres/types.d.ts +20 -0
  82. package/dist/history/postgres/types.d.ts.map +1 -0
  83. package/dist/history/postgres/types.js +3 -0
  84. package/dist/history/postgres/types.js.map +1 -0
  85. package/dist/history/tool-pairing.d.ts +11 -0
  86. package/dist/history/tool-pairing.d.ts.map +1 -0
  87. package/dist/history/tool-pairing.js +52 -0
  88. package/dist/history/tool-pairing.js.map +1 -0
  89. package/dist/index.d.ts +2 -0
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +2 -0
  92. package/dist/index.js.map +1 -1
  93. package/dist/llm/LLM.d.ts +1 -0
  94. package/dist/llm/LLM.d.ts.map +1 -1
  95. package/dist/llm/LLM.js +136 -26
  96. package/dist/llm/LLM.js.map +1 -1
  97. package/dist/llm/errors.d.ts +11 -1
  98. package/dist/llm/errors.d.ts.map +1 -1
  99. package/dist/llm/errors.js +50 -1
  100. package/dist/llm/errors.js.map +1 -1
  101. package/dist/llm/factory.d.ts +14 -2
  102. package/dist/llm/factory.d.ts.map +1 -1
  103. package/dist/llm/factory.js +48 -9
  104. package/dist/llm/factory.js.map +1 -1
  105. package/dist/llm/index.d.ts +8 -3
  106. package/dist/llm/index.d.ts.map +1 -1
  107. package/dist/llm/index.js +10 -1
  108. package/dist/llm/index.js.map +1 -1
  109. package/dist/llm/providers/anthropic.d.ts +14 -0
  110. package/dist/llm/providers/anthropic.d.ts.map +1 -0
  111. package/dist/llm/providers/anthropic.js +336 -0
  112. package/dist/llm/providers/anthropic.js.map +1 -0
  113. package/dist/llm/providers/openai-compatible.d.ts +7 -0
  114. package/dist/llm/providers/openai-compatible.d.ts.map +1 -1
  115. package/dist/llm/providers/openai-compatible.js +151 -47
  116. package/dist/llm/providers/openai-compatible.js.map +1 -1
  117. package/dist/llm/stream-accumulator.d.ts +17 -0
  118. package/dist/llm/stream-accumulator.d.ts.map +1 -0
  119. package/dist/llm/stream-accumulator.js +83 -0
  120. package/dist/llm/stream-accumulator.js.map +1 -0
  121. package/dist/llm/tool-arguments.d.ts +6 -0
  122. package/dist/llm/tool-arguments.d.ts.map +1 -0
  123. package/dist/llm/tool-arguments.js +20 -0
  124. package/dist/llm/tool-arguments.js.map +1 -0
  125. package/dist/llm/types.d.ts +76 -4
  126. package/dist/llm/types.d.ts.map +1 -1
  127. package/dist/messages/content.d.ts +36 -0
  128. package/dist/messages/content.d.ts.map +1 -0
  129. package/dist/messages/content.js +70 -0
  130. package/dist/messages/content.js.map +1 -0
  131. package/dist/messages/index.d.ts +4 -2
  132. package/dist/messages/index.d.ts.map +1 -1
  133. package/dist/messages/index.js +10 -1
  134. package/dist/messages/index.js.map +1 -1
  135. package/dist/messages/message.d.ts +11 -9
  136. package/dist/messages/message.d.ts.map +1 -1
  137. package/dist/messages/message.js +69 -4
  138. package/dist/messages/message.js.map +1 -1
  139. package/dist/messages/types.d.ts +12 -0
  140. package/dist/messages/types.d.ts.map +1 -1
  141. package/dist/observability/collecting-observer.d.ts +8 -0
  142. package/dist/observability/collecting-observer.d.ts.map +1 -0
  143. package/dist/observability/collecting-observer.js +15 -0
  144. package/dist/observability/collecting-observer.js.map +1 -0
  145. package/dist/observability/index.d.ts +1 -0
  146. package/dist/observability/index.d.ts.map +1 -1
  147. package/dist/observability/index.js +3 -1
  148. package/dist/observability/index.js.map +1 -1
  149. package/dist/observability/observer.d.ts.map +1 -1
  150. package/dist/observability/observer.js +14 -1
  151. package/dist/observability/observer.js.map +1 -1
  152. package/dist/observability/types.d.ts +16 -1
  153. package/dist/observability/types.d.ts.map +1 -1
  154. package/dist/rag/chunking/auto-chunker.d.ts +7 -0
  155. package/dist/rag/chunking/auto-chunker.d.ts.map +1 -1
  156. package/dist/rag/chunking/auto-chunker.js +13 -0
  157. package/dist/rag/chunking/auto-chunker.js.map +1 -1
  158. package/dist/rag/chunking/chunker.d.ts.map +1 -1
  159. package/dist/rag/chunking/chunker.js +29 -5
  160. package/dist/rag/chunking/chunker.js.map +1 -1
  161. package/dist/rag/chunking/index.d.ts +2 -0
  162. package/dist/rag/chunking/index.d.ts.map +1 -1
  163. package/dist/rag/chunking/index.js +2 -0
  164. package/dist/rag/chunking/index.js.map +1 -1
  165. package/dist/rag/chunking/markdown-chunker.d.ts.map +1 -1
  166. package/dist/rag/chunking/markdown-chunker.js.map +1 -1
  167. package/dist/rag/chunking/qa-pair-chunker.d.ts +23 -0
  168. package/dist/rag/chunking/qa-pair-chunker.d.ts.map +1 -0
  169. package/dist/rag/chunking/qa-pair-chunker.js +162 -0
  170. package/dist/rag/chunking/qa-pair-chunker.js.map +1 -0
  171. package/dist/rag/chunking/semantic-chunker.d.ts +19 -0
  172. package/dist/rag/chunking/semantic-chunker.d.ts.map +1 -0
  173. package/dist/rag/chunking/semantic-chunker.js +291 -0
  174. package/dist/rag/chunking/semantic-chunker.js.map +1 -0
  175. package/dist/rag/embeddings/embedder.d.ts.map +1 -1
  176. package/dist/rag/embeddings/embedder.js +6 -0
  177. package/dist/rag/embeddings/embedder.js.map +1 -1
  178. package/dist/rag/generation/context-builder.d.ts +7 -0
  179. package/dist/rag/generation/context-builder.d.ts.map +1 -1
  180. package/dist/rag/generation/context-builder.js +4 -1
  181. package/dist/rag/generation/context-builder.js.map +1 -1
  182. package/dist/rag/ingestion/metadata.d.ts +6 -1
  183. package/dist/rag/ingestion/metadata.d.ts.map +1 -1
  184. package/dist/rag/ingestion/metadata.js +6 -2
  185. package/dist/rag/ingestion/metadata.js.map +1 -1
  186. package/dist/rag/pipeline.d.ts.map +1 -1
  187. package/dist/rag/pipeline.js +34 -11
  188. package/dist/rag/pipeline.js.map +1 -1
  189. package/dist/rag/retrieval/index.d.ts +1 -0
  190. package/dist/rag/retrieval/index.d.ts.map +1 -1
  191. package/dist/rag/retrieval/index.js +1 -0
  192. package/dist/rag/retrieval/index.js.map +1 -1
  193. package/dist/rag/retrieval/parent-child-expanding-retriever.d.ts +31 -0
  194. package/dist/rag/retrieval/parent-child-expanding-retriever.d.ts.map +1 -0
  195. package/dist/rag/retrieval/parent-child-expanding-retriever.js +194 -0
  196. package/dist/rag/retrieval/parent-child-expanding-retriever.js.map +1 -0
  197. package/dist/rag/stores/in-memory-keyword-store.d.ts.map +1 -1
  198. package/dist/rag/stores/in-memory-keyword-store.js +3 -8
  199. package/dist/rag/stores/in-memory-keyword-store.js.map +1 -1
  200. package/dist/rag/stores/keyword-tokenizer.d.ts +4 -0
  201. package/dist/rag/stores/keyword-tokenizer.d.ts.map +1 -0
  202. package/dist/rag/stores/keyword-tokenizer.js +113 -0
  203. package/dist/rag/stores/keyword-tokenizer.js.map +1 -0
  204. package/dist/rag/stores/postgres/pg-vector-store.d.ts.map +1 -1
  205. package/dist/rag/stores/postgres/pg-vector-store.js +21 -8
  206. package/dist/rag/stores/postgres/pg-vector-store.js.map +1 -1
  207. package/dist/rag/stores/postgres/postgres-document-store.d.ts.map +1 -1
  208. package/dist/rag/stores/postgres/postgres-document-store.js +26 -13
  209. package/dist/rag/stores/postgres/postgres-document-store.js.map +1 -1
  210. package/dist/rag/stores/postgres/postgres-keyword-store.d.ts.map +1 -1
  211. package/dist/rag/stores/postgres/postgres-keyword-store.js +43 -43
  212. package/dist/rag/stores/postgres/postgres-keyword-store.js.map +1 -1
  213. package/dist/rag/stores/postgres/sql.d.ts +22 -0
  214. package/dist/rag/stores/postgres/sql.d.ts.map +1 -1
  215. package/dist/rag/stores/postgres/sql.js +42 -0
  216. package/dist/rag/stores/postgres/sql.js.map +1 -1
  217. package/dist/rag/stores/types.d.ts +5 -0
  218. package/dist/rag/stores/types.d.ts.map +1 -1
  219. package/dist/rag/types.d.ts +6 -0
  220. package/dist/rag/types.d.ts.map +1 -1
  221. package/dist/testing/agent.d.ts +11 -0
  222. package/dist/testing/agent.d.ts.map +1 -0
  223. package/dist/testing/agent.js +45 -0
  224. package/dist/testing/agent.js.map +1 -0
  225. package/dist/testing/history-contract.d.ts +12 -0
  226. package/dist/testing/history-contract.d.ts.map +1 -0
  227. package/dist/testing/history-contract.js +111 -0
  228. package/dist/testing/history-contract.js.map +1 -0
  229. package/dist/testing/index.d.ts +11 -0
  230. package/dist/testing/index.d.ts.map +1 -0
  231. package/dist/testing/index.js +16 -0
  232. package/dist/testing/index.js.map +1 -0
  233. package/dist/testing/models.d.ts +34 -0
  234. package/dist/testing/models.d.ts.map +1 -0
  235. package/dist/testing/models.js +74 -0
  236. package/dist/testing/models.js.map +1 -0
  237. package/dist/testing/tool-schema.d.ts +6 -0
  238. package/dist/testing/tool-schema.d.ts.map +1 -0
  239. package/dist/testing/tool-schema.js +29 -0
  240. package/dist/testing/tool-schema.js.map +1 -0
  241. package/dist/testing/tools.d.ts +21 -0
  242. package/dist/testing/tools.d.ts.map +1 -0
  243. package/dist/testing/tools.js +43 -0
  244. package/dist/testing/tools.js.map +1 -0
  245. package/dist/tools/base.d.ts +38 -7
  246. package/dist/tools/base.d.ts.map +1 -1
  247. package/dist/tools/base.js +238 -11
  248. package/dist/tools/base.js.map +1 -1
  249. package/dist/tools/builtin/advancedSearchTool.d.ts.map +1 -1
  250. package/dist/tools/builtin/advancedSearchTool.js +30 -4
  251. package/dist/tools/builtin/advancedSearchTool.js.map +1 -1
  252. package/dist/tools/builtin/ragSearchTool.d.ts +6 -3
  253. package/dist/tools/builtin/ragSearchTool.d.ts.map +1 -1
  254. package/dist/tools/builtin/ragSearchTool.js +8 -6
  255. package/dist/tools/builtin/ragSearchTool.js.map +1 -1
  256. package/dist/tools/executor.d.ts +30 -2
  257. package/dist/tools/executor.d.ts.map +1 -1
  258. package/dist/tools/executor.js +83 -15
  259. package/dist/tools/executor.js.map +1 -1
  260. package/dist/tools/index.d.ts +3 -1
  261. package/dist/tools/index.d.ts.map +1 -1
  262. package/dist/tools/registry.d.ts +15 -3
  263. package/dist/tools/registry.d.ts.map +1 -1
  264. package/dist/tools/registry.js +21 -2
  265. package/dist/tools/registry.js.map +1 -1
  266. package/package.json +58 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/messages/content.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,gBAAgB,GACtB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,gBAAgB,CAAC;CAC5B;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,YAAY,EAAE,CAAC;AAErD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAEjD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAErD;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAE5E;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAQ7D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAyBpE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAMxE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAWnE"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.textBlock = textBlock;
4
+ exports.imageUrlBlock = imageUrlBlock;
5
+ exports.imageBase64Block = imageBase64Block;
6
+ exports.contentToText = contentToText;
7
+ exports.isContentBlock = isContentBlock;
8
+ exports.isMessageContent = isMessageContent;
9
+ exports.assertMessageContent = assertMessageContent;
10
+ const errors_1 = require("../errors");
11
+ function textBlock(text) {
12
+ return { type: 'text', text };
13
+ }
14
+ function imageUrlBlock(url) {
15
+ return { type: 'image', source: { kind: 'url', url } };
16
+ }
17
+ function imageBase64Block(mediaType, data) {
18
+ return { type: 'image', source: { kind: 'base64', mediaType, data } };
19
+ }
20
+ /**
21
+ * 把内容降级为纯文本。
22
+ * 用于 toString、输出长度统计,以及不支持多模态的下游(例如 OpenAI 的
23
+ * assistant/tool 消息只接受字符串 content)。
24
+ */
25
+ function contentToText(content) {
26
+ if (typeof content === 'string') {
27
+ return content;
28
+ }
29
+ return content
30
+ .map((block) => (block.type === 'text' ? block.text : '[image]'))
31
+ .join('\n');
32
+ }
33
+ function isContentBlock(value) {
34
+ if (typeof value !== 'object' || value === null) {
35
+ return false;
36
+ }
37
+ const block = value;
38
+ if (block.type === 'text') {
39
+ return typeof block.text === 'string';
40
+ }
41
+ if (block.type === 'image') {
42
+ const source = block.source;
43
+ if (typeof source !== 'object' || source === null) {
44
+ return false;
45
+ }
46
+ if (source.kind === 'url') {
47
+ return typeof source.url === 'string' && source.url.length > 0;
48
+ }
49
+ if (source.kind === 'base64') {
50
+ return typeof source.mediaType === 'string' && typeof source.data === 'string';
51
+ }
52
+ return false;
53
+ }
54
+ return false;
55
+ }
56
+ function isMessageContent(value) {
57
+ if (typeof value === 'string') {
58
+ return true;
59
+ }
60
+ return Array.isArray(value) && value.every(isContentBlock);
61
+ }
62
+ function assertMessageContent(value) {
63
+ if (!isMessageContent(value)) {
64
+ throw new errors_1.HistoryError('Message content must be a string or an array of content blocks.', {
65
+ code: 'invalid_message_content',
66
+ });
67
+ }
68
+ return value;
69
+ }
70
+ //# sourceMappingURL=content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/messages/content.ts"],"names":[],"mappings":";;AAyBA,8BAEC;AAED,sCAEC;AAED,4CAEC;AAOD,sCAQC;AAED,wCAyBC;AAED,4CAMC;AAED,oDAWC;AAlGD,sCAAyC;AAyBzC,SAAgB,SAAS,CAAC,IAAY;IAClC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,SAAgB,aAAa,CAAC,GAAW;IACrC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;AAC3D,CAAC;AAED,SAAgB,gBAAgB,CAAC,SAAiB,EAAE,IAAY;IAC5D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;AAC1E,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,OAAuB;IACjD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,OAAO,OAAO;SACT,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;SAChE,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC;AAED,SAAgB,cAAc,CAAC,KAAc;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,KAAK,GAAG,KAAgC,CAAC;IAC/C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACxB,OAAO,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;IAC1C,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,MAA6C,CAAC;QACnE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAChD,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACxB,OAAO,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,OAAO,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC;QACnF,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,gBAAgB,CAAC,KAAc;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AAC/D,CAAC;AAED,SAAgB,oBAAoB,CAAC,KAAc;IAC/C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,qBAAY,CAClB,iEAAiE,EACjE;YACI,IAAI,EAAE,yBAAyB;SAClC,CACJ,CAAC;IACN,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC"}
@@ -1,3 +1,5 @@
1
- export { Message } from './message';
2
- export type { MessageMetadata, MessageOptions, MessageRole, } from './types';
1
+ export { assertMessageContent, contentToText, imageBase64Block, imageUrlBlock, isContentBlock, isMessageContent, textBlock, } from './content';
2
+ export type { ContentBlock, ImageBlock, ImageBlockSource, MessageContent, TextBlock, } from './content';
3
+ export { Message, reviveMessage } from './message';
4
+ export type { MessageJSON, MessageMetadata, MessageOptions, MessageRole, } from './types';
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/messages/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EACR,eAAe,EACf,cAAc,EACd,WAAW,GACd,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/messages/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,SAAS,GACZ,MAAM,WAAW,CAAC;AACnB,YAAY,EACR,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,SAAS,GACZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACnD,YAAY,EACR,WAAW,EACX,eAAe,EACf,cAAc,EACd,WAAW,GACd,MAAM,SAAS,CAAC"}
@@ -1,6 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Message = void 0;
3
+ exports.reviveMessage = exports.Message = exports.textBlock = exports.isMessageContent = exports.isContentBlock = exports.imageUrlBlock = exports.imageBase64Block = exports.contentToText = exports.assertMessageContent = void 0;
4
+ var content_1 = require("./content");
5
+ Object.defineProperty(exports, "assertMessageContent", { enumerable: true, get: function () { return content_1.assertMessageContent; } });
6
+ Object.defineProperty(exports, "contentToText", { enumerable: true, get: function () { return content_1.contentToText; } });
7
+ Object.defineProperty(exports, "imageBase64Block", { enumerable: true, get: function () { return content_1.imageBase64Block; } });
8
+ Object.defineProperty(exports, "imageUrlBlock", { enumerable: true, get: function () { return content_1.imageUrlBlock; } });
9
+ Object.defineProperty(exports, "isContentBlock", { enumerable: true, get: function () { return content_1.isContentBlock; } });
10
+ Object.defineProperty(exports, "isMessageContent", { enumerable: true, get: function () { return content_1.isMessageContent; } });
11
+ Object.defineProperty(exports, "textBlock", { enumerable: true, get: function () { return content_1.textBlock; } });
4
12
  var message_1 = require("./message");
5
13
  Object.defineProperty(exports, "Message", { enumerable: true, get: function () { return message_1.Message; } });
14
+ Object.defineProperty(exports, "reviveMessage", { enumerable: true, get: function () { return message_1.reviveMessage; } });
6
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/messages/index.ts"],"names":[],"mappings":";;;AAAA,qCAAoC;AAA3B,kGAAA,OAAO,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/messages/index.ts"],"names":[],"mappings":";;;AAAA,qCAQmB;AAPf,+GAAA,oBAAoB,OAAA;AACpB,wGAAA,aAAa,OAAA;AACb,2GAAA,gBAAgB,OAAA;AAChB,wGAAA,aAAa,OAAA;AACb,yGAAA,cAAc,OAAA;AACd,2GAAA,gBAAgB,OAAA;AAChB,oGAAA,SAAS,OAAA;AASb,qCAAmD;AAA1C,kGAAA,OAAO,OAAA;AAAE,wGAAA,aAAa,OAAA"}
@@ -1,11 +1,16 @@
1
1
  import type { ChatMessage } from '../llm/types';
2
- import type { MessageMetadata, MessageOptions, MessageRole } from './types';
2
+ import type { MessageContent } from './content';
3
+ import type { MessageJSON, MessageMetadata, MessageOptions, MessageRole } from './types';
3
4
  export declare class Message {
4
- readonly content: string;
5
+ readonly content: MessageContent;
5
6
  readonly role: MessageRole;
6
7
  readonly timestamp: Date;
7
8
  readonly metadata: Readonly<MessageMetadata>;
8
- constructor(content: string, role: MessageRole, options?: MessageOptions);
9
+ constructor(content: MessageContent, role: MessageRole, options?: MessageOptions);
10
+ /**
11
+ * 内容的纯文本视图。非文本 block 以占位符表示。
12
+ */
13
+ get text(): string;
9
14
  /**
10
15
  * ChatModel 只需要稳定的消息结构,不需要关心 Message 类的时间戳等运行时信息。
11
16
  * 因此这里把领域对象转换为 LLM 层的纯数据对象。
@@ -14,12 +19,9 @@ export declare class Message {
14
19
  /**
15
20
  * 保留一个简单对象格式,方便调试、测试和序列化。
16
21
  */
17
- toJSON(): {
18
- role: MessageRole;
19
- content: string;
20
- timestamp: string;
21
- metadata: MessageMetadata;
22
- };
22
+ toJSON(): MessageJSON;
23
+ static fromJSON(value: MessageJSON): Message;
23
24
  toString(): string;
24
25
  }
26
+ export declare function reviveMessage(value: unknown): Message;
25
27
  //# sourceMappingURL=message.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/messages/message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE5E,qBAAa,OAAO;IAChB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;gBAEjC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,GAAE,cAAmB;IAO5E;;;OAGG;IACH,aAAa,IAAI,WAAW;IAmB5B;;OAEG;IACH,MAAM,IAAI;QACN,IAAI,EAAE,WAAW,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,eAAe,CAAC;KAC7B;IASD,QAAQ,IAAI,MAAM;CAGrB"}
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/messages/message.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAKhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EACR,WAAW,EACX,eAAe,EACf,cAAc,EACd,WAAW,EACd,MAAM,SAAS,CAAC;AAEjB,qBAAa,OAAO;IAChB,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;gBAEjC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,GAAE,cAAmB;IAOpF;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;OAGG;IACH,aAAa,IAAI,WAAW;IAmB5B;;OAEG;IACH,MAAM,IAAI,WAAW;IASrB,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO;IAI5C,QAAQ,IAAI,MAAM;CAGrB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA0CrD"}
@@ -1,17 +1,26 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Message = void 0;
4
+ exports.reviveMessage = reviveMessage;
5
+ const errors_1 = require("../errors");
6
+ const content_1 = require("./content");
4
7
  class Message {
5
8
  content;
6
9
  role;
7
10
  timestamp;
8
11
  metadata;
9
12
  constructor(content, role, options = {}) {
10
- this.content = content;
13
+ this.content = freezeValue(cloneValue(content));
11
14
  this.role = role;
12
15
  this.timestamp = options.timestamp ?? new Date();
13
16
  this.metadata = freezeMetadata(cloneMetadata(options.metadata));
14
17
  }
18
+ /**
19
+ * 内容的纯文本视图。非文本 block 以占位符表示。
20
+ */
21
+ get text() {
22
+ return (0, content_1.contentToText)(this.content);
23
+ }
15
24
  /**
16
25
  * ChatModel 只需要稳定的消息结构,不需要关心 Message 类的时间戳等运行时信息。
17
26
  * 因此这里把领域对象转换为 LLM 层的纯数据对象。
@@ -20,7 +29,7 @@ class Message {
20
29
  const metadata = cloneMetadata(this.metadata);
21
30
  const message = {
22
31
  role: this.role,
23
- content: this.content,
32
+ content: cloneValue(this.content),
24
33
  metadata,
25
34
  };
26
35
  if (metadata.toolCallId !== undefined) {
@@ -37,16 +46,53 @@ class Message {
37
46
  toJSON() {
38
47
  return {
39
48
  role: this.role,
40
- content: this.content,
49
+ content: cloneValue(this.content),
41
50
  timestamp: this.timestamp.toISOString(),
42
51
  metadata: cloneMetadata(this.metadata),
43
52
  };
44
53
  }
54
+ static fromJSON(value) {
55
+ return reviveMessage(value);
56
+ }
45
57
  toString() {
46
- return `[${this.role}] ${this.content}`;
58
+ return `[${this.role}] ${this.text}`;
47
59
  }
48
60
  }
49
61
  exports.Message = Message;
62
+ function reviveMessage(value) {
63
+ if (!isRecord(value)) {
64
+ throw invalidMessageJSON('Message JSON must be an object.');
65
+ }
66
+ const role = value.role;
67
+ if (!isMessageRole(role)) {
68
+ throw invalidMessageJSON('Message JSON has an invalid role.', 'role');
69
+ }
70
+ const content = value.content;
71
+ let validContent;
72
+ try {
73
+ validContent = (0, content_1.assertMessageContent)(content);
74
+ }
75
+ catch {
76
+ throw invalidMessageJSON('Message JSON content must be a string or an array of content blocks.', 'content');
77
+ }
78
+ const timestampValue = value.timestamp;
79
+ if (typeof timestampValue !== 'string') {
80
+ throw invalidMessageJSON('Message JSON timestamp must be a string.', 'timestamp');
81
+ }
82
+ const timestamp = new Date(timestampValue);
83
+ if (Number.isNaN(timestamp.getTime())) {
84
+ throw invalidMessageJSON('Message JSON timestamp is invalid.', 'timestamp');
85
+ }
86
+ const options = { timestamp };
87
+ const metadataValue = value.metadata;
88
+ if (metadataValue !== undefined) {
89
+ if (!isRecord(metadataValue)) {
90
+ throw invalidMessageJSON('Message JSON metadata must be an object.', 'metadata');
91
+ }
92
+ options.metadata = metadataValue;
93
+ }
94
+ return new Message(validContent, role, options);
95
+ }
50
96
  function cloneMetadata(metadata) {
51
97
  return cloneValue(metadata ?? {});
52
98
  }
@@ -107,4 +153,23 @@ function freezeValue(value, seen = new WeakSet()) {
107
153
  }
108
154
  return value;
109
155
  }
156
+ function isRecord(value) {
157
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
158
+ }
159
+ function isMessageRole(value) {
160
+ return value === 'user'
161
+ || value === 'assistant'
162
+ || value === 'system'
163
+ || value === 'tool';
164
+ }
165
+ function invalidMessageJSON(message, field) {
166
+ const metadata = {};
167
+ if (field !== undefined) {
168
+ metadata.field = field;
169
+ }
170
+ return new errors_1.HistoryError(message, {
171
+ code: 'invalid_message_json',
172
+ metadata,
173
+ });
174
+ }
110
175
  //# sourceMappingURL=message.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/messages/message.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/messages/message.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { ChatToolCall } from '../llm/types';
2
+ import type { MessageContent } from './content';
2
3
  export type MessageRole = 'user' | 'assistant' | 'system' | 'tool';
3
4
  export interface MessageMetadata {
4
5
  /**
@@ -11,10 +12,21 @@ export interface MessageMetadata {
11
12
  * 把它放进元数据里,可以让 MessageHistory 保存完整推理轨迹。
12
13
  */
13
14
  toolCalls?: ChatToolCall[];
15
+ /**
16
+ * tool role 消息可以标记结果是否为执行错误,
17
+ * 供上层区分正常工具输出与错误反馈。
18
+ */
19
+ isError?: boolean;
14
20
  [key: string]: unknown;
15
21
  }
16
22
  export interface MessageOptions {
17
23
  timestamp?: Date;
18
24
  metadata?: MessageMetadata;
19
25
  }
26
+ export interface MessageJSON {
27
+ role: MessageRole;
28
+ content: MessageContent;
29
+ timestamp: string;
30
+ metadata: MessageMetadata;
31
+ }
20
32
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/messages/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEnE,MAAM,WAAW,eAAe;IAC5B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;IAE3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC3B,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC9B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/messages/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEnE,MAAM,WAAW,eAAe;IAC5B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;IAE3B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC3B,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,eAAe,CAAC;CAC7B"}
@@ -0,0 +1,8 @@
1
+ import type { Observer, RuntimeEvent } from './types';
2
+ export declare class CollectingObserver implements Observer {
3
+ readonly events: RuntimeEvent[];
4
+ redactEvent: Observer['redactEvent'] | undefined;
5
+ onEvent(event: RuntimeEvent): void;
6
+ clear(): void;
7
+ }
8
+ //# sourceMappingURL=collecting-observer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collecting-observer.d.ts","sourceRoot":"","sources":["../../src/observability/collecting-observer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEtD,qBAAa,kBAAmB,YAAW,QAAQ;IAC/C,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,CAAM;IACrC,WAAW,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;IAEjD,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAIlC,KAAK,IAAI,IAAI;CAGhB"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CollectingObserver = void 0;
4
+ class CollectingObserver {
5
+ events = [];
6
+ redactEvent;
7
+ onEvent(event) {
8
+ this.events.push(event);
9
+ }
10
+ clear() {
11
+ this.events.length = 0;
12
+ }
13
+ }
14
+ exports.CollectingObserver = CollectingObserver;
15
+ //# sourceMappingURL=collecting-observer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collecting-observer.js","sourceRoot":"","sources":["../../src/observability/collecting-observer.ts"],"names":[],"mappings":";;;AAEA,MAAa,kBAAkB;IAClB,MAAM,GAAmB,EAAE,CAAC;IACrC,WAAW,CAAsC;IAEjD,OAAO,CAAC,KAAmB;QACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3B,CAAC;CACJ;AAXD,gDAWC"}
@@ -1,3 +1,4 @@
1
+ export { CollectingObserver } from './collecting-observer';
1
2
  export { ConsoleObserver } from './console-observer';
2
3
  export type { ConsoleObserverOptions } from './console-observer';
3
4
  export { NoopObserver, createRunId, emitRuntimeEvent, toObservedError, } from './observer';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EACH,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,eAAe,GAClB,MAAM,YAAY,CAAC;AACpB,YAAY,EACR,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,YAAY,GACf,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EACH,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,eAAe,GAClB,MAAM,YAAY,CAAC;AACpB,YAAY,EACR,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,YAAY,GACf,MAAM,SAAS,CAAC"}
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toObservedError = exports.emitRuntimeEvent = exports.createRunId = exports.NoopObserver = exports.ConsoleObserver = void 0;
3
+ exports.toObservedError = exports.emitRuntimeEvent = exports.createRunId = exports.NoopObserver = exports.ConsoleObserver = exports.CollectingObserver = void 0;
4
+ var collecting_observer_1 = require("./collecting-observer");
5
+ Object.defineProperty(exports, "CollectingObserver", { enumerable: true, get: function () { return collecting_observer_1.CollectingObserver; } });
4
6
  var console_observer_1 = require("./console-observer");
5
7
  Object.defineProperty(exports, "ConsoleObserver", { enumerable: true, get: function () { return console_observer_1.ConsoleObserver; } });
6
8
  var observer_1 = require("./observer");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":";;;AAAA,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AAExB,uCAKoB;AAJhB,wGAAA,YAAY,OAAA;AACZ,uGAAA,WAAW,OAAA;AACX,4GAAA,gBAAgB,OAAA;AAChB,2GAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":";;;AAAA,6DAA2D;AAAlD,yHAAA,kBAAkB,OAAA;AAC3B,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AAExB,uCAKoB;AAJhB,wGAAA,YAAY,OAAA;AACZ,uGAAA,WAAW,OAAA;AACX,4GAAA,gBAAgB,OAAA;AAChB,2GAAA,eAAe,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"observer.d.ts","sourceRoot":"","sources":["../../src/observability/observer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAErE,qBAAa,YAAa,YAAW,QAAQ;IACzC,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;CAGtC;AAED,wBAAsB,gBAAgB,CAClC,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAC9B,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAgB,WAAW,IAAI,MAAM,CAGpC;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAc7D"}
1
+ {"version":3,"file":"observer.d.ts","sourceRoot":"","sources":["../../src/observability/observer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAErE,qBAAa,YAAa,YAAW,QAAQ;IACzC,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;CAGtC;AAED,wBAAsB,gBAAgB,CAClC,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAC9B,KAAK,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CAef;AAED,wBAAgB,WAAW,IAAI,MAAM,CAGpC;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAc7D"}
@@ -15,7 +15,11 @@ async function emitRuntimeEvent(observer, event) {
15
15
  return;
16
16
  }
17
17
  try {
18
- await observer.onEvent(event);
18
+ const normalizedEvent = normalizeRuntimeEvent(event);
19
+ const redactedEvent = observer.redactEvent
20
+ ? observer.redactEvent(normalizedEvent)
21
+ : normalizedEvent;
22
+ await observer.onEvent(redactedEvent);
19
23
  }
20
24
  catch {
21
25
  // Observer 是旁路能力,日志/监控失败不应该影响 Agent 主流程。
@@ -43,4 +47,13 @@ function getErrorCode(error) {
43
47
  const maybeCode = error.code;
44
48
  return typeof maybeCode === 'string' ? maybeCode : undefined;
45
49
  }
50
+ function normalizeRuntimeEvent(event) {
51
+ if (event.level !== undefined) {
52
+ return event;
53
+ }
54
+ return {
55
+ ...event,
56
+ level: event.type.endsWith(':error') ? 'error' : 'info',
57
+ };
58
+ }
46
59
  //# sourceMappingURL=observer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"observer.js","sourceRoot":"","sources":["../../src/observability/observer.ts"],"names":[],"mappings":";;;AAQA,4CAaC;AAED,kCAGC;AAED,0CAcC;AAxCD,MAAa,YAAY;IACrB,OAAO,CAAC,MAAoB;QACxB,qCAAqC;IACzC,CAAC;CACJ;AAJD,oCAIC;AAEM,KAAK,UAAU,gBAAgB,CAClC,QAA8B,EAC9B,KAAmB;IAEnB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,OAAO;IACX,CAAC;IAED,IAAI,CAAC;QACD,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACL,yCAAyC;IAC7C,CAAC;AACL,CAAC;AAED,SAAgB,WAAW;IACvB,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC;IACnD,OAAO,QAAQ,CAAC,CAAC,CAAC,OAAO,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACrG,CAAC;AAED,SAAgB,eAAe,CAAC,KAAc;IAC1C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO;YACH,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC;YACzB,KAAK,EAAE,KAAK,CAAC,KAAK;SACrB,CAAC;IACN,CAAC;IAED,OAAO;QACH,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;KACzB,CAAC;AACN,CAAC;AAED,SAAS,YAAY,CAAC,KAAY;IAC9B,MAAM,SAAS,GAAI,KAAoC,CAAC,IAAI,CAAC;IAC7D,OAAO,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"observer.js","sourceRoot":"","sources":["../../src/observability/observer.ts"],"names":[],"mappings":";;;AAQA,4CAkBC;AAED,kCAGC;AAED,0CAcC;AA7CD,MAAa,YAAY;IACrB,OAAO,CAAC,MAAoB;QACxB,qCAAqC;IACzC,CAAC;CACJ;AAJD,oCAIC;AAEM,KAAK,UAAU,gBAAgB,CAClC,QAA8B,EAC9B,KAAmB;IAEnB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,OAAO;IACX,CAAC;IAED,IAAI,CAAC;QACD,MAAM,eAAe,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW;YACtC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC;YACvC,CAAC,CAAC,eAAe,CAAC;QAEtB,MAAM,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACL,yCAAyC;IAC7C,CAAC;AACL,CAAC;AAED,SAAgB,WAAW;IACvB,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC;IACnD,OAAO,QAAQ,CAAC,CAAC,CAAC,OAAO,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACrG,CAAC;AAED,SAAgB,eAAe,CAAC,KAAc;IAC1C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO;YACH,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC;YACzB,KAAK,EAAE,KAAK,CAAC,KAAK;SACrB,CAAC;IACN,CAAC;IAED,OAAO;QACH,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;KACzB,CAAC;AACN,CAAC;AAED,SAAS,YAAY,CAAC,KAAY;IAC9B,MAAM,SAAS,GAAI,KAAoC,CAAC,IAAI,CAAC;IAC7D,OAAO,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AACjE,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAmB;IAC9C,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO;QACH,GAAG,KAAK;QACR,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;KAC1D,CAAC;AACN,CAAC"}
@@ -1,4 +1,5 @@
1
- export type RuntimeEventType = 'agent:start' | 'agent:end' | 'agent:error' | 'llm:start' | 'llm:end' | 'llm:error' | 'tool:start' | 'tool:end' | 'tool:error';
1
+ import type { TokenUsage } from '../llm/types';
2
+ export type RuntimeEventType = 'agent:start' | 'agent:end' | 'agent:error' | 'llm:start' | 'llm:end' | 'llm:error' | 'llm:retry' | 'tool:start' | 'tool:end' | 'tool:error';
2
3
  export interface ObservedError {
3
4
  name: string;
4
5
  message: string;
@@ -9,6 +10,9 @@ export interface RuntimeEvent {
9
10
  type: RuntimeEventType;
10
11
  runId: string;
11
12
  timestamp: Date;
13
+ level?: 'debug' | 'info' | 'warn' | 'error' | undefined;
14
+ spanId?: string | undefined;
15
+ parentSpanId?: string | undefined;
12
16
  durationMs?: number | undefined;
13
17
  agentName?: string | undefined;
14
18
  sessionId?: string | undefined;
@@ -19,10 +23,19 @@ export interface RuntimeEvent {
19
23
  messageCount?: number | undefined;
20
24
  toolCount?: number | undefined;
21
25
  outputLength?: number | undefined;
26
+ /**
27
+ * llm:end / agent:end 携带的 token 用量,供成本核算。
28
+ */
29
+ usage?: TokenUsage | undefined;
30
+ /**
31
+ * llm:retry 携带的重试序号(1 = 第一次重试)。
32
+ */
33
+ attempt?: number | undefined;
22
34
  error?: ObservedError | undefined;
23
35
  metadata?: Record<string, unknown> | undefined;
24
36
  }
25
37
  export interface Observer {
38
+ redactEvent?: ((event: RuntimeEvent) => RuntimeEvent) | undefined;
26
39
  onEvent(event: RuntimeEvent): void | Promise<void>;
27
40
  }
28
41
  export interface TraceContext {
@@ -30,5 +43,7 @@ export interface TraceContext {
30
43
  observer?: Observer | undefined;
31
44
  agentName?: string | undefined;
32
45
  sessionId?: string | undefined;
46
+ spanId?: string | undefined;
47
+ parentSpanId?: string | undefined;
33
48
  }
34
49
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/observability/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GACtB,aAAa,GACb,WAAW,GACX,aAAa,GACb,WAAW,GACX,SAAS,GACT,WAAW,GACX,YAAY,GACZ,UAAU,GACV,YAAY,CAAC;AAEnB,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAClD;AAED,MAAM,WAAW,QAAQ;IACrB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/observability/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,gBAAgB,GACtB,aAAa,GACb,WAAW,GACX,aAAa,GACb,WAAW,GACX,SAAS,GACT,WAAW,GACX,WAAW,GACX,YAAY,GACZ,UAAU,GACV,YAAY,CAAC;AAEnB,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACxD,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC;;OAEG;IACH,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC/B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAClD;AAED,MAAM,WAAW,QAAQ;IACrB,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,YAAY,KAAK,YAAY,CAAC,GAAG,SAAS,CAAC;IAClE,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC"}
@@ -2,20 +2,27 @@ import type { Chunk, RawDocument } from '../types';
2
2
  import type { Chunker } from './chunker';
3
3
  export interface AutoChunkerOptions {
4
4
  markdownChunker?: Chunker;
5
+ qaPairChunker?: Chunker;
5
6
  parentChildChunker?: Chunker;
6
7
  recursiveChunker?: Chunker;
8
+ enableQaPairChunker?: boolean;
9
+ qaPairMinPairs?: number;
7
10
  parentChildMinContentLength?: number;
8
11
  }
9
12
  /**
10
13
  * AutoChunker 根据文档形态选择切块策略:
11
14
  * - 有 Markdown 结构或明确来自 Markdown 转换链路:使用 MarkdownChunker,保留标题、表格、代码等结构。
15
+ * - 非 Markdown 的 FAQ / QA 文本:使用 QaPairChunker,把问答对作为稳定检索单元。
12
16
  * - 无结构但内容较长:使用 ParentChildChunker,用小块召回、大块补上下文。
13
17
  * - 其余短文本:使用 RecursiveChunker,按通用文本边界切块。
14
18
  */
15
19
  export declare class AutoChunker implements Chunker {
16
20
  private readonly markdownChunker;
21
+ private readonly qaPairChunker;
17
22
  private readonly parentChildChunker;
18
23
  private readonly recursiveChunker;
24
+ private readonly enableQaPairChunker;
25
+ private readonly qaPairMinPairs;
19
26
  private readonly parentChildMinContentLength;
20
27
  constructor(options?: AutoChunkerOptions);
21
28
  chunk(document: RawDocument): Promise<Chunk[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"auto-chunker.d.ts","sourceRoot":"","sources":["../../../src/rag/chunking/auto-chunker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,KAAK,EAEL,WAAW,EACd,MAAM,UAAU,CAAC;AAIlB,OAAO,KAAK,EACR,OAAO,EACV,MAAM,WAAW,CAAC;AAWnB,MAAM,WAAW,kBAAkB;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,2BAA2B,CAAC,EAAE,MAAM,CAAC;CACxC;AAcD;;;;;GAKG;AACH,qBAAa,WAAY,YAAW,OAAO;IACvC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAC7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;IAC3C,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAS;gBAEzC,OAAO,GAAE,kBAAuB;IAUtC,KAAK,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAI9C,SAAS,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAI3D,OAAO,CAAC,cAAc;CAWzB"}
1
+ {"version":3,"file":"auto-chunker.d.ts","sourceRoot":"","sources":["../../../src/rag/chunking/auto-chunker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,KAAK,EAEL,WAAW,EACd,MAAM,UAAU,CAAC;AAIlB,OAAO,KAAK,EACR,OAAO,EACV,MAAM,WAAW,CAAC;AAenB,MAAM,WAAW,kBAAkB;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2BAA2B,CAAC,EAAE,MAAM,CAAC;CACxC;AAeD;;;;;;GAMG;AACH,qBAAa,WAAY,YAAW,OAAO;IACvC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAC1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IACxC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAC7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;IAC3C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAU;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAS;gBAEzC,OAAO,GAAE,kBAAuB;IAgBtC,KAAK,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAI9C,SAAS,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAI3D,OAAO,CAAC,cAAc;CAkBzB"}
@@ -4,8 +4,10 @@ exports.AutoChunker = void 0;
4
4
  const chunker_1 = require("./chunker");
5
5
  const markdown_chunker_1 = require("./markdown-chunker");
6
6
  const parent_child_1 = require("./parent-child");
7
+ const qa_pair_chunker_1 = require("./qa-pair-chunker");
7
8
  const recursive_chunker_1 = require("./recursive-chunker");
8
9
  const DEFAULT_PARENT_CHILD_MIN_CONTENT_LENGTH = 6000;
10
+ const DEFAULT_QA_PAIR_MIN_PAIRS = 2;
9
11
  const MARKDOWN_MIME_TYPES = new Set([
10
12
  'text/markdown',
11
13
  'text/x-markdown',
@@ -19,18 +21,25 @@ const MARKDOWN_EXTENSIONS = new Set([
19
21
  /**
20
22
  * AutoChunker 根据文档形态选择切块策略:
21
23
  * - 有 Markdown 结构或明确来自 Markdown 转换链路:使用 MarkdownChunker,保留标题、表格、代码等结构。
24
+ * - 非 Markdown 的 FAQ / QA 文本:使用 QaPairChunker,把问答对作为稳定检索单元。
22
25
  * - 无结构但内容较长:使用 ParentChildChunker,用小块召回、大块补上下文。
23
26
  * - 其余短文本:使用 RecursiveChunker,按通用文本边界切块。
24
27
  */
25
28
  class AutoChunker {
26
29
  markdownChunker;
30
+ qaPairChunker;
27
31
  parentChildChunker;
28
32
  recursiveChunker;
33
+ enableQaPairChunker;
34
+ qaPairMinPairs;
29
35
  parentChildMinContentLength;
30
36
  constructor(options = {}) {
31
37
  this.markdownChunker = options.markdownChunker ?? new markdown_chunker_1.MarkdownChunker();
38
+ this.qaPairChunker = options.qaPairChunker ?? new qa_pair_chunker_1.QaPairChunker();
32
39
  this.parentChildChunker = options.parentChildChunker ?? new parent_child_1.ParentChildChunker();
33
40
  this.recursiveChunker = options.recursiveChunker ?? new recursive_chunker_1.RecursiveChunker();
41
+ this.enableQaPairChunker = options.enableQaPairChunker ?? true;
42
+ this.qaPairMinPairs = toPositiveInteger(options.qaPairMinPairs, DEFAULT_QA_PAIR_MIN_PAIRS);
34
43
  this.parentChildMinContentLength = toPositiveInteger(options.parentChildMinContentLength, DEFAULT_PARENT_CHILD_MIN_CONTENT_LENGTH);
35
44
  }
36
45
  async chunk(document) {
@@ -43,6 +52,10 @@ class AutoChunker {
43
52
  if (shouldUseMarkdownChunker(document)) {
44
53
  return this.markdownChunker;
45
54
  }
55
+ if (this.enableQaPairChunker
56
+ && (0, qa_pair_chunker_1.hasQaPairs)(document.content, this.qaPairMinPairs)) {
57
+ return this.qaPairChunker;
58
+ }
46
59
  if (document.content.length >= this.parentChildMinContentLength) {
47
60
  return this.parentChildChunker;
48
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"auto-chunker.js","sourceRoot":"","sources":["../../../src/rag/chunking/auto-chunker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto-chunker.js","sourceRoot":"","sources":["../../../src/rag/chunking/auto-chunker.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"chunker.d.ts","sourceRoot":"","sources":["../../../src/rag/chunking/chunker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,KAAK,EACL,SAAS,EAET,WAAW,EACd,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,OAAO;IACpB,KAAK,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/C,SAAS,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,gBAAgB;IAC7B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,WAAW,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAC7C,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAC5C,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAe1C,wBAAsB,kBAAkB,CACpC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,WAAW,EAAE,GACzB,OAAO,CAAC,KAAK,EAAE,CAAC,CAIlB;AAED,wBAAgB,iBAAiB,CAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,gBAAqB,GAC/B,WAAW,EAAE,CA4Cf;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,KAAK,CA2C1D;AAED,MAAM,WAAW,YAAY;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CASzD"}
1
+ {"version":3,"file":"chunker.d.ts","sourceRoot":"","sources":["../../../src/rag/chunking/chunker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,KAAK,EACL,SAAS,EAET,WAAW,EACd,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,OAAO;IACpB,KAAK,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/C,SAAS,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,gBAAgB;IAC7B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,WAAW,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAC7C,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAC5C,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAyB1C,wBAAsB,kBAAkB,CACpC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,WAAW,EAAE,GACzB,OAAO,CAAC,KAAK,EAAE,CAAC,CAIlB;AAED,wBAAgB,iBAAiB,CAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,gBAAqB,GAC/B,WAAW,EAAE,CA4Cf;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,KAAK,CA2C1D;AAED,MAAM,WAAW,YAAY;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CASzD"}