@cicctencent/agent-core 0.1.18 → 0.1.20

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 +70 -1
  2. package/dist/cjs/agent/engine.d.ts +23 -0
  3. package/dist/cjs/agent/engine.d.ts.map +1 -1
  4. package/dist/cjs/agent/engine.js +88 -9
  5. package/dist/cjs/agent/engine.js.map +1 -1
  6. package/dist/cjs/agent/history-manager.d.ts +66 -1
  7. package/dist/cjs/agent/history-manager.d.ts.map +1 -1
  8. package/dist/cjs/agent/history-manager.js +232 -0
  9. package/dist/cjs/agent/history-manager.js.map +1 -1
  10. package/dist/cjs/agent/llm-caller.d.ts +4 -1
  11. package/dist/cjs/agent/llm-caller.d.ts.map +1 -1
  12. package/dist/cjs/agent/llm-caller.js +25 -19
  13. package/dist/cjs/agent/llm-caller.js.map +1 -1
  14. package/dist/cjs/agent/profile-loader.d.ts +56 -0
  15. package/dist/cjs/agent/profile-loader.d.ts.map +1 -0
  16. package/dist/cjs/agent/profile-loader.js +145 -0
  17. package/dist/cjs/agent/profile-loader.js.map +1 -0
  18. package/dist/cjs/agent/types.d.ts +32 -3
  19. package/dist/cjs/agent/types.d.ts.map +1 -1
  20. package/dist/cjs/agent/types.js.map +1 -1
  21. package/dist/cjs/calendar/types.d.ts +41 -0
  22. package/dist/cjs/calendar/types.d.ts.map +1 -0
  23. package/dist/cjs/calendar/types.js +6 -0
  24. package/dist/cjs/calendar/types.js.map +1 -0
  25. package/dist/cjs/context/types.d.ts +3 -3
  26. package/dist/cjs/context/types.d.ts.map +1 -1
  27. package/dist/cjs/email/types.d.ts +46 -0
  28. package/dist/cjs/email/types.d.ts.map +1 -0
  29. package/dist/cjs/email/types.js +6 -0
  30. package/dist/cjs/email/types.js.map +1 -0
  31. package/dist/cjs/index.d.ts +28 -3
  32. package/dist/cjs/index.d.ts.map +1 -1
  33. package/dist/cjs/index.js +42 -11
  34. package/dist/cjs/index.js.map +1 -1
  35. package/dist/cjs/kb/in-memory-kb.d.ts +29 -0
  36. package/dist/cjs/kb/in-memory-kb.d.ts.map +1 -0
  37. package/dist/cjs/kb/in-memory-kb.js +210 -0
  38. package/dist/cjs/kb/in-memory-kb.js.map +1 -0
  39. package/dist/cjs/kb/rag-middleware.d.ts +31 -0
  40. package/dist/cjs/kb/rag-middleware.d.ts.map +1 -0
  41. package/dist/cjs/kb/rag-middleware.js +94 -0
  42. package/dist/cjs/kb/rag-middleware.js.map +1 -0
  43. package/dist/cjs/kb/types.d.ts +63 -0
  44. package/dist/cjs/kb/types.d.ts.map +1 -0
  45. package/dist/cjs/kb/types.js +6 -0
  46. package/dist/cjs/kb/types.js.map +1 -0
  47. package/dist/cjs/llm/anthropic-provider.d.ts +7 -0
  48. package/dist/cjs/llm/anthropic-provider.d.ts.map +1 -1
  49. package/dist/cjs/llm/anthropic-provider.js +84 -9
  50. package/dist/cjs/llm/anthropic-provider.js.map +1 -1
  51. package/dist/cjs/llm/ollama-provider.d.ts +18 -0
  52. package/dist/cjs/llm/ollama-provider.d.ts.map +1 -1
  53. package/dist/cjs/llm/ollama-provider.js +41 -0
  54. package/dist/cjs/llm/ollama-provider.js.map +1 -1
  55. package/dist/cjs/llm/openai-provider.d.ts +39 -2
  56. package/dist/cjs/llm/openai-provider.d.ts.map +1 -1
  57. package/dist/cjs/llm/openai-provider.js +302 -1
  58. package/dist/cjs/llm/openai-provider.js.map +1 -1
  59. package/dist/cjs/llm/pricing.d.ts +26 -0
  60. package/dist/cjs/llm/pricing.d.ts.map +1 -0
  61. package/dist/cjs/llm/pricing.js +86 -0
  62. package/dist/cjs/llm/pricing.js.map +1 -0
  63. package/dist/cjs/llm/provider.d.ts +2 -1
  64. package/dist/cjs/llm/provider.d.ts.map +1 -1
  65. package/dist/cjs/llm/provider.js +6 -1
  66. package/dist/cjs/llm/provider.js.map +1 -1
  67. package/dist/cjs/llm/types.d.ts +139 -0
  68. package/dist/cjs/llm/types.d.ts.map +1 -1
  69. package/dist/cjs/llm/types.js +74 -0
  70. package/dist/cjs/llm/types.js.map +1 -1
  71. package/dist/cjs/llm/usage-tracker.d.ts +119 -0
  72. package/dist/cjs/llm/usage-tracker.d.ts.map +1 -0
  73. package/dist/cjs/llm/usage-tracker.js +105 -0
  74. package/dist/cjs/llm/usage-tracker.js.map +1 -0
  75. package/dist/cjs/memory/extractor.js +1 -1
  76. package/dist/cjs/memory/extractor.js.map +1 -1
  77. package/dist/cjs/memory/persona.js +1 -1
  78. package/dist/cjs/memory/persona.js.map +1 -1
  79. package/dist/cjs/memory/scene.js +1 -1
  80. package/dist/cjs/memory/scene.js.map +1 -1
  81. package/dist/cjs/middleware/types.d.ts +2 -4
  82. package/dist/cjs/middleware/types.d.ts.map +1 -1
  83. package/dist/cjs/middleware/workspace-notes.d.ts +36 -0
  84. package/dist/cjs/middleware/workspace-notes.d.ts.map +1 -0
  85. package/dist/cjs/middleware/workspace-notes.js +53 -0
  86. package/dist/cjs/middleware/workspace-notes.js.map +1 -0
  87. package/dist/cjs/observability/logger.d.ts +1 -0
  88. package/dist/cjs/observability/logger.d.ts.map +1 -1
  89. package/dist/cjs/observability/logger.js.map +1 -1
  90. package/dist/cjs/observability/trace.d.ts +45 -0
  91. package/dist/cjs/observability/trace.d.ts.map +1 -0
  92. package/dist/cjs/observability/trace.js +59 -0
  93. package/dist/cjs/observability/trace.js.map +1 -0
  94. package/dist/cjs/runtime/run-registry-interface.d.ts +42 -0
  95. package/dist/cjs/runtime/run-registry-interface.d.ts.map +1 -0
  96. package/dist/cjs/runtime/run-registry-interface.js +7 -0
  97. package/dist/cjs/runtime/run-registry-interface.js.map +1 -0
  98. package/dist/cjs/runtime/run-registry.d.ts +15 -2
  99. package/dist/cjs/runtime/run-registry.d.ts.map +1 -1
  100. package/dist/cjs/runtime/run-registry.js +43 -1
  101. package/dist/cjs/runtime/run-registry.js.map +1 -1
  102. package/dist/cjs/sandbox/code-sandbox.d.ts +42 -0
  103. package/dist/cjs/sandbox/code-sandbox.d.ts.map +1 -0
  104. package/dist/cjs/sandbox/code-sandbox.js +59 -0
  105. package/dist/cjs/sandbox/code-sandbox.js.map +1 -0
  106. package/dist/cjs/skill/router.d.ts +20 -1
  107. package/dist/cjs/skill/router.d.ts.map +1 -1
  108. package/dist/cjs/skill/router.js +39 -1
  109. package/dist/cjs/skill/router.js.map +1 -1
  110. package/dist/cjs/skill/types.d.ts +1 -1
  111. package/dist/cjs/skill/types.d.ts.map +1 -1
  112. package/dist/cjs/skill/vector-index.d.ts +50 -0
  113. package/dist/cjs/skill/vector-index.d.ts.map +1 -0
  114. package/dist/cjs/skill/vector-index.js +57 -0
  115. package/dist/cjs/skill/vector-index.js.map +1 -0
  116. package/dist/cjs/store/history-persistence.d.ts +36 -0
  117. package/dist/cjs/store/history-persistence.d.ts.map +1 -0
  118. package/dist/cjs/store/history-persistence.js +142 -0
  119. package/dist/cjs/store/history-persistence.js.map +1 -0
  120. package/dist/cjs/types.d.ts +40 -1
  121. package/dist/cjs/types.d.ts.map +1 -1
  122. package/dist/cjs/types.js +34 -0
  123. package/dist/cjs/types.js.map +1 -1
  124. package/dist/cjs/utils/token-counter.d.ts.map +1 -1
  125. package/dist/cjs/utils/token-counter.js +33 -1
  126. package/dist/cjs/utils/token-counter.js.map +1 -1
  127. package/dist/esm/agent/engine.d.ts +23 -0
  128. package/dist/esm/agent/engine.d.ts.map +1 -1
  129. package/dist/esm/agent/engine.js +88 -9
  130. package/dist/esm/agent/engine.js.map +1 -1
  131. package/dist/esm/agent/history-manager.d.ts +66 -1
  132. package/dist/esm/agent/history-manager.d.ts.map +1 -1
  133. package/dist/esm/agent/history-manager.js +232 -0
  134. package/dist/esm/agent/history-manager.js.map +1 -1
  135. package/dist/esm/agent/llm-caller.d.ts +4 -1
  136. package/dist/esm/agent/llm-caller.d.ts.map +1 -1
  137. package/dist/esm/agent/llm-caller.js +25 -19
  138. package/dist/esm/agent/llm-caller.js.map +1 -1
  139. package/dist/esm/agent/profile-loader.d.ts +56 -0
  140. package/dist/esm/agent/profile-loader.d.ts.map +1 -0
  141. package/dist/esm/agent/profile-loader.js +108 -0
  142. package/dist/esm/agent/profile-loader.js.map +1 -0
  143. package/dist/esm/agent/types.d.ts +32 -3
  144. package/dist/esm/agent/types.d.ts.map +1 -1
  145. package/dist/esm/agent/types.js.map +1 -1
  146. package/dist/esm/calendar/types.d.ts +41 -0
  147. package/dist/esm/calendar/types.d.ts.map +1 -0
  148. package/dist/esm/calendar/types.js +5 -0
  149. package/dist/esm/calendar/types.js.map +1 -0
  150. package/dist/esm/context/types.d.ts +3 -3
  151. package/dist/esm/context/types.d.ts.map +1 -1
  152. package/dist/esm/email/types.d.ts +46 -0
  153. package/dist/esm/email/types.d.ts.map +1 -0
  154. package/dist/esm/email/types.js +5 -0
  155. package/dist/esm/email/types.js.map +1 -0
  156. package/dist/esm/index.d.ts +28 -3
  157. package/dist/esm/index.d.ts.map +1 -1
  158. package/dist/esm/index.js +12 -0
  159. package/dist/esm/index.js.map +1 -1
  160. package/dist/esm/kb/in-memory-kb.d.ts +29 -0
  161. package/dist/esm/kb/in-memory-kb.d.ts.map +1 -0
  162. package/dist/esm/kb/in-memory-kb.js +206 -0
  163. package/dist/esm/kb/in-memory-kb.js.map +1 -0
  164. package/dist/esm/kb/rag-middleware.d.ts +31 -0
  165. package/dist/esm/kb/rag-middleware.d.ts.map +1 -0
  166. package/dist/esm/kb/rag-middleware.js +91 -0
  167. package/dist/esm/kb/rag-middleware.js.map +1 -0
  168. package/dist/esm/kb/types.d.ts +63 -0
  169. package/dist/esm/kb/types.d.ts.map +1 -0
  170. package/dist/esm/kb/types.js +5 -0
  171. package/dist/esm/kb/types.js.map +1 -0
  172. package/dist/esm/llm/anthropic-provider.d.ts +7 -0
  173. package/dist/esm/llm/anthropic-provider.d.ts.map +1 -1
  174. package/dist/esm/llm/anthropic-provider.js +84 -9
  175. package/dist/esm/llm/anthropic-provider.js.map +1 -1
  176. package/dist/esm/llm/ollama-provider.d.ts +18 -0
  177. package/dist/esm/llm/ollama-provider.d.ts.map +1 -1
  178. package/dist/esm/llm/ollama-provider.js +41 -0
  179. package/dist/esm/llm/ollama-provider.js.map +1 -1
  180. package/dist/esm/llm/openai-provider.d.ts +39 -2
  181. package/dist/esm/llm/openai-provider.d.ts.map +1 -1
  182. package/dist/esm/llm/openai-provider.js +302 -1
  183. package/dist/esm/llm/openai-provider.js.map +1 -1
  184. package/dist/esm/llm/pricing.d.ts +26 -0
  185. package/dist/esm/llm/pricing.d.ts.map +1 -0
  186. package/dist/esm/llm/pricing.js +81 -0
  187. package/dist/esm/llm/pricing.js.map +1 -0
  188. package/dist/esm/llm/provider.d.ts +2 -1
  189. package/dist/esm/llm/provider.d.ts.map +1 -1
  190. package/dist/esm/llm/provider.js +1 -0
  191. package/dist/esm/llm/provider.js.map +1 -1
  192. package/dist/esm/llm/types.d.ts +139 -0
  193. package/dist/esm/llm/types.d.ts.map +1 -1
  194. package/dist/esm/llm/types.js +70 -1
  195. package/dist/esm/llm/types.js.map +1 -1
  196. package/dist/esm/llm/usage-tracker.d.ts +119 -0
  197. package/dist/esm/llm/usage-tracker.d.ts.map +1 -0
  198. package/dist/esm/llm/usage-tracker.js +101 -0
  199. package/dist/esm/llm/usage-tracker.js.map +1 -0
  200. package/dist/esm/memory/extractor.js +1 -1
  201. package/dist/esm/memory/extractor.js.map +1 -1
  202. package/dist/esm/memory/persona.js +1 -1
  203. package/dist/esm/memory/persona.js.map +1 -1
  204. package/dist/esm/memory/scene.js +1 -1
  205. package/dist/esm/memory/scene.js.map +1 -1
  206. package/dist/esm/middleware/types.d.ts +2 -4
  207. package/dist/esm/middleware/types.d.ts.map +1 -1
  208. package/dist/esm/middleware/workspace-notes.d.ts +36 -0
  209. package/dist/esm/middleware/workspace-notes.d.ts.map +1 -0
  210. package/dist/esm/middleware/workspace-notes.js +49 -0
  211. package/dist/esm/middleware/workspace-notes.js.map +1 -0
  212. package/dist/esm/observability/logger.d.ts +1 -0
  213. package/dist/esm/observability/logger.d.ts.map +1 -1
  214. package/dist/esm/observability/logger.js.map +1 -1
  215. package/dist/esm/observability/trace.d.ts +45 -0
  216. package/dist/esm/observability/trace.d.ts.map +1 -0
  217. package/dist/esm/observability/trace.js +55 -0
  218. package/dist/esm/observability/trace.js.map +1 -0
  219. package/dist/esm/runtime/run-registry-interface.d.ts +42 -0
  220. package/dist/esm/runtime/run-registry-interface.d.ts.map +1 -0
  221. package/dist/esm/runtime/run-registry-interface.js +6 -0
  222. package/dist/esm/runtime/run-registry-interface.js.map +1 -0
  223. package/dist/esm/runtime/run-registry.d.ts +15 -2
  224. package/dist/esm/runtime/run-registry.d.ts.map +1 -1
  225. package/dist/esm/runtime/run-registry.js +43 -1
  226. package/dist/esm/runtime/run-registry.js.map +1 -1
  227. package/dist/esm/sandbox/code-sandbox.d.ts +42 -0
  228. package/dist/esm/sandbox/code-sandbox.d.ts.map +1 -0
  229. package/dist/esm/sandbox/code-sandbox.js +56 -0
  230. package/dist/esm/sandbox/code-sandbox.js.map +1 -0
  231. package/dist/esm/skill/router.d.ts +20 -1
  232. package/dist/esm/skill/router.d.ts.map +1 -1
  233. package/dist/esm/skill/router.js +37 -0
  234. package/dist/esm/skill/router.js.map +1 -1
  235. package/dist/esm/skill/types.d.ts +1 -1
  236. package/dist/esm/skill/types.d.ts.map +1 -1
  237. package/dist/esm/skill/vector-index.d.ts +50 -0
  238. package/dist/esm/skill/vector-index.d.ts.map +1 -0
  239. package/dist/esm/skill/vector-index.js +53 -0
  240. package/dist/esm/skill/vector-index.js.map +1 -0
  241. package/dist/esm/store/history-persistence.d.ts +36 -0
  242. package/dist/esm/store/history-persistence.d.ts.map +1 -0
  243. package/dist/esm/store/history-persistence.js +105 -0
  244. package/dist/esm/store/history-persistence.js.map +1 -0
  245. package/dist/esm/types.d.ts +40 -1
  246. package/dist/esm/types.d.ts.map +1 -1
  247. package/dist/esm/types.js +32 -1
  248. package/dist/esm/types.js.map +1 -1
  249. package/dist/esm/utils/token-counter.d.ts.map +1 -1
  250. package/dist/esm/utils/token-counter.js +33 -1
  251. package/dist/esm/utils/token-counter.js.map +1 -1
  252. package/package.json +1 -1
@@ -2,6 +2,7 @@
2
2
  /**
3
3
  * @file OpenAI 兼容 LLM Provider
4
4
  * @description 使用原生 fetch 实现,支持任意 OpenAI 兼容端点(OpenAI / DeepSeek / Ollama / vLLM 等)
5
+ * 额外实现 BatchProvider + FileProvider 接口(OpenAI Batch API + Files API)
5
6
  */
6
7
  Object.defineProperty(exports, "__esModule", { value: true });
7
8
  exports.OpenAIProvider = void 0;
@@ -135,7 +136,7 @@ class OpenAIProvider {
135
136
  buildRequestBody(params, stream) {
136
137
  const body = {
137
138
  model: this.config.model,
138
- messages: params.messages,
139
+ messages: this.convertMessagesForApi(params.messages),
139
140
  temperature: params.temperature ?? this.config.temperature,
140
141
  max_tokens: (typeof params.maxTokens === 'number' && params.maxTokens > 0)
141
142
  ? params.maxTokens
@@ -154,6 +155,46 @@ class OpenAIProvider {
154
155
  }
155
156
  return body;
156
157
  }
158
+ /**
159
+ * 将内部 Message[] 转换为 OpenAI API 格式
160
+ * - string content 直接透传
161
+ * - ContentPart[] 转换为 OpenAI 多模态格式
162
+ */
163
+ convertMessagesForApi(messages) {
164
+ return messages.map(msg => {
165
+ if (msg.content == null || typeof msg.content === 'string') {
166
+ return msg;
167
+ }
168
+ // ContentPart[] → OpenAI content parts
169
+ return {
170
+ ...msg,
171
+ content: msg.content.map(part => this.convertContentPartForOpenAI(part)),
172
+ };
173
+ });
174
+ }
175
+ /** 将 ContentPart 转换为 OpenAI API 格式 */
176
+ convertContentPartForOpenAI(part) {
177
+ switch (part.type) {
178
+ case 'text':
179
+ return { type: 'text', text: part.text };
180
+ case 'image':
181
+ return {
182
+ type: 'image_url',
183
+ image_url: {
184
+ url: part.source,
185
+ detail: part.detail || 'auto',
186
+ },
187
+ };
188
+ case 'file':
189
+ // OpenAI Chat API 无原生文件类型,转为文本注入
190
+ return {
191
+ type: 'text',
192
+ text: `[File: ${part.filename}]\n\n${part.content}`,
193
+ };
194
+ default:
195
+ return { type: 'text', text: '' };
196
+ }
197
+ }
157
198
  async doRequest(body, signal) {
158
199
  const url = `${this.config.baseUrl.replace(/\/$/, '')}/chat/completions`;
159
200
  const controller = new AbortController();
@@ -181,6 +222,266 @@ class OpenAIProvider {
181
222
  clearTimeout(timeout);
182
223
  }
183
224
  }
225
+ // ============================================================
226
+ // FileProvider — 文件上传与管理(OpenAI Files API)
227
+ // ============================================================
228
+ async uploadFile(filename, content, purpose) {
229
+ const url = `${this.config.baseUrl.replace(/\/$/, '')}/files`;
230
+ const buffer = typeof content === 'string' ? Buffer.from(content, 'utf-8') : content;
231
+ const formData = new FormData();
232
+ formData.append('purpose', purpose);
233
+ formData.append('file', new Blob([buffer]), filename);
234
+ const res = await this.doRawRequest(url, {
235
+ method: 'POST',
236
+ headers: {
237
+ ...(this.config.apiKey ? { Authorization: `Bearer ${this.config.apiKey}` } : {}),
238
+ },
239
+ body: formData,
240
+ });
241
+ if (!res.ok) {
242
+ const errText = await res.text().catch(() => 'Unknown error');
243
+ throw new Error(`File upload error ${res.status}: ${errText}`);
244
+ }
245
+ const data = await res.json();
246
+ return this.parseFileInfo(data);
247
+ }
248
+ async getFile(fileId) {
249
+ const url = `${this.config.baseUrl.replace(/\/$/, '')}/files/${fileId}`;
250
+ const res = await this.doRawRequest(url, {
251
+ method: 'GET',
252
+ headers: this.authHeaders(),
253
+ });
254
+ if (!res.ok) {
255
+ const errText = await res.text().catch(() => 'Unknown error');
256
+ throw new Error(`Get file error ${res.status}: ${errText}`);
257
+ }
258
+ return this.parseFileInfo(await res.json());
259
+ }
260
+ async listFiles(limit = 20, purpose) {
261
+ let url = `${this.config.baseUrl.replace(/\/$/, '')}/files?limit=${limit}`;
262
+ if (purpose)
263
+ url += `&purpose=${purpose}`;
264
+ const res = await this.doRawRequest(url, {
265
+ method: 'GET',
266
+ headers: this.authHeaders(),
267
+ });
268
+ if (!res.ok) {
269
+ const errText = await res.text().catch(() => 'Unknown error');
270
+ throw new Error(`List files error ${res.status}: ${errText}`);
271
+ }
272
+ const data = await res.json();
273
+ return (data.data || []).map((f) => this.parseFileInfo(f));
274
+ }
275
+ async deleteFile(fileId) {
276
+ const url = `${this.config.baseUrl.replace(/\/$/, '')}/files/${fileId}`;
277
+ const res = await this.doRawRequest(url, {
278
+ method: 'DELETE',
279
+ headers: this.authHeaders(),
280
+ });
281
+ if (!res.ok) {
282
+ const errText = await res.text().catch(() => 'Unknown error');
283
+ throw new Error(`Delete file error ${res.status}: ${errText}`);
284
+ }
285
+ const data = await res.json();
286
+ return data.deleted === true;
287
+ }
288
+ async downloadFile(fileId) {
289
+ const url = `${this.config.baseUrl.replace(/\/$/, '')}/files/${fileId}/content`;
290
+ const res = await this.doRawRequest(url, {
291
+ method: 'GET',
292
+ headers: this.authHeaders(),
293
+ });
294
+ if (!res.ok) {
295
+ const errText = await res.text().catch(() => 'Unknown error');
296
+ throw new Error(`Download file error ${res.status}: ${errText}`);
297
+ }
298
+ const arrayBuffer = await res.arrayBuffer();
299
+ return Buffer.from(arrayBuffer);
300
+ }
301
+ async getFileContent(fileId) {
302
+ const buffer = await this.downloadFile(fileId);
303
+ return buffer.toString('utf-8');
304
+ }
305
+ // ============================================================
306
+ // BatchProvider — 批处理(OpenAI Batch API)
307
+ // ============================================================
308
+ async createBatch(inputFileId, options) {
309
+ const url = `${this.config.baseUrl.replace(/\/$/, '')}/batches`;
310
+ const body = {
311
+ input_file_id: inputFileId,
312
+ endpoint: options?.endpoint || '/v1/chat/completions',
313
+ completion_window: options?.completionWindow || '24h',
314
+ };
315
+ if (options?.metadata)
316
+ body.metadata = options.metadata;
317
+ const res = await this.doRawRequest(url, {
318
+ method: 'POST',
319
+ headers: { ...this.authHeaders(), 'Content-Type': 'application/json' },
320
+ body: JSON.stringify(body),
321
+ });
322
+ if (!res.ok) {
323
+ const errText = await res.text().catch(() => 'Unknown error');
324
+ throw new Error(`Create batch error ${res.status}: ${errText}`);
325
+ }
326
+ return this.parseBatchInfo(await res.json());
327
+ }
328
+ async getBatch(batchId) {
329
+ const url = `${this.config.baseUrl.replace(/\/$/, '')}/batches/${batchId}`;
330
+ const res = await this.doRawRequest(url, {
331
+ method: 'GET',
332
+ headers: this.authHeaders(),
333
+ });
334
+ if (!res.ok) {
335
+ const errText = await res.text().catch(() => 'Unknown error');
336
+ throw new Error(`Get batch error ${res.status}: ${errText}`);
337
+ }
338
+ return this.parseBatchInfo(await res.json());
339
+ }
340
+ async listBatches(limit = 20) {
341
+ const url = `${this.config.baseUrl.replace(/\/$/, '')}/batches?limit=${limit}`;
342
+ const res = await this.doRawRequest(url, {
343
+ method: 'GET',
344
+ headers: this.authHeaders(),
345
+ });
346
+ if (!res.ok) {
347
+ const errText = await res.text().catch(() => 'Unknown error');
348
+ throw new Error(`List batches error ${res.status}: ${errText}`);
349
+ }
350
+ const data = await res.json();
351
+ return (data.data || []).map((b) => this.parseBatchInfo(b));
352
+ }
353
+ async cancelBatch(batchId) {
354
+ const url = `${this.config.baseUrl.replace(/\/$/, '')}/batches/${batchId}/cancel`;
355
+ const res = await this.doRawRequest(url, {
356
+ method: 'POST',
357
+ headers: this.authHeaders(),
358
+ });
359
+ if (!res.ok) {
360
+ const errText = await res.text().catch(() => 'Unknown error');
361
+ throw new Error(`Cancel batch error ${res.status}: ${errText}`);
362
+ }
363
+ return this.parseBatchInfo(await res.json());
364
+ }
365
+ async getBatchResults(batchId) {
366
+ const batch = await this.getBatch(batchId);
367
+ if (batch.status !== 'completed' && batch.status !== 'failed' && batch.status !== 'expired') {
368
+ throw new Error(`Batch ${batchId} is not finished yet (status: ${batch.status})`);
369
+ }
370
+ const results = [];
371
+ // 下载成功结果
372
+ if (batch.outputFileId) {
373
+ const content = await this.getFileContent(batch.outputFileId);
374
+ for (const line of content.split('\n')) {
375
+ const trimmed = line.trim();
376
+ if (!trimmed)
377
+ continue;
378
+ try {
379
+ results.push(this.parseBatchResult(JSON.parse(trimmed)));
380
+ }
381
+ catch { /* skip malformed lines */ }
382
+ }
383
+ }
384
+ // 下载失败结果
385
+ if (batch.errorFileId) {
386
+ const content = await this.getFileContent(batch.errorFileId);
387
+ for (const line of content.split('\n')) {
388
+ const trimmed = line.trim();
389
+ if (!trimmed)
390
+ continue;
391
+ try {
392
+ results.push(this.parseBatchResult(JSON.parse(trimmed)));
393
+ }
394
+ catch { /* skip malformed lines */ }
395
+ }
396
+ }
397
+ return results;
398
+ }
399
+ // ============================================================
400
+ // 内部辅助方法
401
+ // ============================================================
402
+ /** 认证 headers */
403
+ authHeaders() {
404
+ return {
405
+ ...(this.config.apiKey ? { Authorization: `Bearer ${this.config.apiKey}` } : {}),
406
+ };
407
+ }
408
+ /** 原始 fetch 请求(不带 JSON Content-Type,用于 multipart/GET) */
409
+ async doRawRequest(url, init) {
410
+ const controller = new AbortController();
411
+ const timeout = setTimeout(() => controller.abort(), this.config.timeout);
412
+ try {
413
+ return await fetch(url, {
414
+ ...init,
415
+ signal: controller.signal,
416
+ ...(this.config.proxy ? { proxy: this.config.proxy } : {}),
417
+ });
418
+ }
419
+ finally {
420
+ clearTimeout(timeout);
421
+ }
422
+ }
423
+ /** 解析文件信息 */
424
+ parseFileInfo(data) {
425
+ return {
426
+ id: data.id,
427
+ filename: data.filename,
428
+ bytes: data.bytes,
429
+ createdAt: data.created_at,
430
+ purpose: data.purpose,
431
+ status: data.status,
432
+ mimeType: data.mime_type,
433
+ };
434
+ }
435
+ /** 解析批处理任务信息 */
436
+ parseBatchInfo(data) {
437
+ return {
438
+ id: data.id,
439
+ status: data.status,
440
+ inputFileId: data.input_file_id,
441
+ completionWindow: data.completion_window,
442
+ createdAt: data.created_at,
443
+ expiresAt: data.expires_at,
444
+ outputFileId: data.output_file_id,
445
+ errorFileId: data.error_file_id,
446
+ requestCounts: data.request_counts ? {
447
+ total: data.request_counts.total,
448
+ completed: data.request_counts.completed,
449
+ failed: data.request_counts.failed,
450
+ } : undefined,
451
+ metadata: data.metadata,
452
+ };
453
+ }
454
+ /** 解析单条批处理结果 */
455
+ parseBatchResult(data) {
456
+ const result = {
457
+ id: data.id,
458
+ customId: data.custom_id,
459
+ };
460
+ if (data.response) {
461
+ result.response = {
462
+ status: data.response.status,
463
+ body: {
464
+ choices: data.response.body?.choices?.map((c) => ({
465
+ message: c.message,
466
+ finish_reason: c.finish_reason || 'stop',
467
+ })) || [],
468
+ usage: data.response.body?.usage ? {
469
+ promptTokens: data.response.body.usage.prompt_tokens || 0,
470
+ completionTokens: data.response.body.usage.completion_tokens || 0,
471
+ totalTokens: data.response.body.usage.total_tokens || 0,
472
+ } : undefined,
473
+ },
474
+ };
475
+ }
476
+ if (data.error) {
477
+ result.error = {
478
+ message: data.error.message,
479
+ type: data.error.type,
480
+ code: data.error.code,
481
+ };
482
+ }
483
+ return result;
484
+ }
184
485
  }
185
486
  exports.OpenAIProvider = OpenAIProvider;
186
487
  //# sourceMappingURL=openai-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openai-provider.js","sourceRoot":"","sources":["../../../src/llm/openai-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai-provider.js","sourceRoot":"","sources":["../../../src/llm/openai-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ export interface ModelPricing {
2
+ /** 输入 token 单价(美元/百万 token) */
3
+ inputPerMillion: number;
4
+ /** 输出 token 单价(美元/百万 token) */
5
+ outputPerMillion: number;
6
+ /** 上下文窗口(token) */
7
+ contextWindow?: number;
8
+ }
9
+ /**
10
+ * 注册自定义模型定价
11
+ * @param key 模型标识,格式 {provider}:{model}
12
+ */
13
+ export declare function registerPricing(key: string, pricing: ModelPricing): void;
14
+ /**
15
+ * 查询模型定价
16
+ * 查找顺序:自定义 → 内置精确匹配 → 内置前缀匹配 → 默认值
17
+ */
18
+ export declare function getPricing(provider: string, model: string): ModelPricing;
19
+ /**
20
+ * 计算 token 使用成本(美元)
21
+ */
22
+ export declare function calculateCost(provider: string, model: string, usage: {
23
+ promptTokens: number;
24
+ completionTokens: number;
25
+ }): number;
26
+ //# sourceMappingURL=pricing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../../src/llm/pricing.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,YAAY;IAC3B,+BAA+B;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,+BAA+B;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAyCD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAExE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAkBxE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GACxD,MAAM,CAKR"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // TokenPricing — 内置模型定价表
4
+ // ============================================================
5
+ //
6
+ // 常见模型的 input/output token 单价(美元/百万 token)
7
+ // 数据来源:各 Provider 官方定价页(2025-06)
8
+ //
9
+ // 上层可通过 registerPricing() 注册自定义模型定价
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.registerPricing = registerPricing;
12
+ exports.getPricing = getPricing;
13
+ exports.calculateCost = calculateCost;
14
+ /**
15
+ * 内置模型定价表
16
+ * key 格式:{provider}:{model} 或 {model-prefix}
17
+ * 查找时先精确匹配,再前缀匹配
18
+ */
19
+ const BUILTIN_PRICING = {
20
+ // ---- OpenAI ----
21
+ 'openai:gpt-4o': { inputPerMillion: 2.5, outputPerMillion: 10, contextWindow: 128000 },
22
+ 'openai:gpt-4o-mini': { inputPerMillion: 0.15, outputPerMillion: 0.6, contextWindow: 128000 },
23
+ 'openai:gpt-4-turbo': { inputPerMillion: 10, outputPerMillion: 30, contextWindow: 128000 },
24
+ 'openai:gpt-4': { inputPerMillion: 30, outputPerMillion: 60, contextWindow: 8192 },
25
+ 'openai:gpt-3.5-turbo': { inputPerMillion: 0.5, outputPerMillion: 1.5, contextWindow: 16385 },
26
+ 'openai:o1': { inputPerMillion: 15, outputPerMillion: 60, contextWindow: 200000 },
27
+ 'openai:o1-mini': { inputPerMillion: 3, outputPerMillion: 12, contextWindow: 128000 },
28
+ 'openai:o3': { inputPerMillion: 15, outputPerMillion: 60, contextWindow: 200000 },
29
+ 'openai:o3-mini': { inputPerMillion: 1.1, outputPerMillion: 4.4, contextWindow: 200000 },
30
+ 'openai:o4-mini': { inputPerMillion: 1.1, outputPerMillion: 4.4, contextWindow: 200000 },
31
+ // ---- Anthropic ----
32
+ 'anthropic:claude-sonnet-4': { inputPerMillion: 3, outputPerMillion: 15, contextWindow: 200000 },
33
+ 'anthropic:claude-opus-4': { inputPerMillion: 15, outputPerMillion: 75, contextWindow: 200000 },
34
+ 'anthropic:claude-3-5-sonnet': { inputPerMillion: 3, outputPerMillion: 15, contextWindow: 200000 },
35
+ 'anthropic:claude-3-5-haiku': { inputPerMillion: 0.8, outputPerMillion: 4, contextWindow: 200000 },
36
+ 'anthropic:claude-3-opus': { inputPerMillion: 15, outputPerMillion: 75, contextWindow: 200000 },
37
+ 'anthropic:claude-3-sonnet': { inputPerMillion: 3, outputPerMillion: 15, contextWindow: 200000 },
38
+ 'anthropic:claude-3-haiku': { inputPerMillion: 0.25, outputPerMillion: 1.25, contextWindow: 200000 },
39
+ // ---- DeepSeek ----
40
+ 'deepseek:deepseek-chat': { inputPerMillion: 0.27, outputPerMillion: 1.1, contextWindow: 64000 },
41
+ 'deepseek:deepseek-reasoner': { inputPerMillion: 0.55, outputPerMillion: 2.19, contextWindow: 64000 },
42
+ // ---- Ollama(本地免费,标记为 0)----
43
+ 'ollama:llama3': { inputPerMillion: 0, outputPerMillion: 0, contextWindow: 8192 },
44
+ 'ollama:qwen2': { inputPerMillion: 0, outputPerMillion: 0, contextWindow: 32768 },
45
+ };
46
+ /** 自定义定价覆盖(上层注册) */
47
+ const customPricing = new Map();
48
+ /**
49
+ * 注册自定义模型定价
50
+ * @param key 模型标识,格式 {provider}:{model}
51
+ */
52
+ function registerPricing(key, pricing) {
53
+ customPricing.set(key, pricing);
54
+ }
55
+ /**
56
+ * 查询模型定价
57
+ * 查找顺序:自定义 → 内置精确匹配 → 内置前缀匹配 → 默认值
58
+ */
59
+ function getPricing(provider, model) {
60
+ const key = `${provider}:${model}`;
61
+ // 1. 自定义定价
62
+ const custom = customPricing.get(key);
63
+ if (custom)
64
+ return custom;
65
+ // 2. 内置精确匹配
66
+ const exact = BUILTIN_PRICING[key];
67
+ if (exact)
68
+ return exact;
69
+ // 3. 内置前缀匹配(如 claude-sonnet-4-20250514 → claude-sonnet-4)
70
+ for (const [pricingKey, pricing] of Object.entries(BUILTIN_PRICING)) {
71
+ if (key.startsWith(pricingKey))
72
+ return pricing;
73
+ }
74
+ // 4. 默认值(未知模型)
75
+ return { inputPerMillion: 1, outputPerMillion: 3 };
76
+ }
77
+ /**
78
+ * 计算 token 使用成本(美元)
79
+ */
80
+ function calculateCost(provider, model, usage) {
81
+ const pricing = getPricing(provider, model);
82
+ const inputCost = (usage.promptTokens / 1_000_000) * pricing.inputPerMillion;
83
+ const outputCost = (usage.completionTokens / 1_000_000) * pricing.outputPerMillion;
84
+ return Math.round((inputCost + outputCost) * 1_000_000) / 1_000_000; // 保留 6 位小数
85
+ }
86
+ //# sourceMappingURL=pricing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../../src/llm/pricing.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,yBAAyB;AACzB,+DAA+D;AAC/D,EAAE;AACF,2CAA2C;AAC3C,iCAAiC;AACjC,EAAE;AACF,oCAAoC;;AAsDpC,0CAEC;AAMD,gCAkBC;AAKD,sCASC;AAnFD;;;;GAIG;AACH,MAAM,eAAe,GAAiC;IACpD,mBAAmB;IACnB,eAAe,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,gBAAgB,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;IACtF,oBAAoB,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE;IAC7F,oBAAoB,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;IAC1F,cAAc,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;IAClF,sBAAsB,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE;IAC7F,WAAW,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;IACjF,gBAAgB,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;IACrF,WAAW,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;IACjF,gBAAgB,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE;IACxF,gBAAgB,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE;IAExF,sBAAsB;IACtB,2BAA2B,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;IAChG,yBAAyB,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;IAC/F,6BAA6B,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;IAClG,4BAA4B,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE;IAClG,yBAAyB,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;IAC/F,2BAA2B,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;IAChG,0BAA0B,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE;IAEpG,qBAAqB;IACrB,wBAAwB,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE;IAChG,4BAA4B,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;IAErG,8BAA8B;IAC9B,eAAe,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE;IACjF,cAAc,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE;CAClF,CAAC;AAEF,oBAAoB;AACpB,MAAM,aAAa,GAAG,IAAI,GAAG,EAAwB,CAAC;AAEtD;;;GAGG;AACH,SAAgB,eAAe,CAAC,GAAW,EAAE,OAAqB;IAChE,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,SAAgB,UAAU,CAAC,QAAgB,EAAE,KAAa;IACxD,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,KAAK,EAAE,CAAC;IAEnC,WAAW;IACX,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,YAAY;IACZ,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IAExB,0DAA0D;IAC1D,KAAK,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;QACpE,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO,OAAO,CAAC;IACjD,CAAC;IAED,eAAe;IACf,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAC3B,QAAgB,EAChB,KAAa,EACb,KAAyD;IAEzD,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IAC7E,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,gBAAgB,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IACnF,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC,WAAW;AAClF,CAAC"}
@@ -1,4 +1,5 @@
1
- export type { LLMProvider, ModelConfig, ModelInfo, ChatParams, ChatResponse, ChatChunk } from './types.js';
1
+ export type { LLMProvider, ModelConfig, ModelInfo, ChatParams, ChatResponse, ChatChunk, BatchProvider, BatchRequest, BatchInfo, BatchResult, FileProvider, UploadedFileInfo, } from './types.js';
2
+ export { isBatchProvider, isFileProvider, serializeBatchRequests, createBatchRequest } from './types.js';
2
3
  export { OpenAIProvider } from './openai-provider.js';
3
4
  export { AnthropicProvider } from './anthropic-provider.js';
4
5
  export { OllamaProvider } from './ollama-provider.js';
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/llm/provider.ts"],"names":[],"mappings":"AAKA,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG3G,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACpE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/llm/provider.ts"],"names":[],"mappings":"AAKA,YAAY,EACV,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EACxE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EACnD,YAAY,EAAE,gBAAgB,GAC/B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGzG,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACpE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
@@ -3,7 +3,12 @@
3
3
  // LLM Provider — 类型接口 + 实现 + 工厂
4
4
  // ============================================================
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.BUILTIN_PROVIDERS = exports.createLLMProvider = exports.OllamaProvider = exports.AnthropicProvider = exports.OpenAIProvider = void 0;
6
+ exports.BUILTIN_PROVIDERS = exports.createLLMProvider = exports.OllamaProvider = exports.AnthropicProvider = exports.OpenAIProvider = exports.createBatchRequest = exports.serializeBatchRequests = exports.isFileProvider = exports.isBatchProvider = void 0;
7
+ var types_ts_1 = require("./types.js");
8
+ Object.defineProperty(exports, "isBatchProvider", { enumerable: true, get: function () { return types_ts_1.isBatchProvider; } });
9
+ Object.defineProperty(exports, "isFileProvider", { enumerable: true, get: function () { return types_ts_1.isFileProvider; } });
10
+ Object.defineProperty(exports, "serializeBatchRequests", { enumerable: true, get: function () { return types_ts_1.serializeBatchRequests; } });
11
+ Object.defineProperty(exports, "createBatchRequest", { enumerable: true, get: function () { return types_ts_1.createBatchRequest; } });
7
12
  // 实现
8
13
  var openai_provider_ts_1 = require("./openai-provider.js");
9
14
  Object.defineProperty(exports, "OpenAIProvider", { enumerable: true, get: function () { return openai_provider_ts_1.OpenAIProvider; } });
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/llm/provider.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,gCAAgC;AAChC,+DAA+D;;;AAK/D,KAAK;AACL,2DAAsD;AAA7C,oHAAA,cAAc,OAAA;AACvB,iEAA4D;AAAnD,0HAAA,iBAAiB,OAAA;AAC1B,2DAAsD;AAA7C,oHAAA,cAAc,OAAA;AAEvB,KAAK;AACL,2CAAoE;AAA3D,+GAAA,iBAAiB,OAAA;AAAE,+GAAA,iBAAiB,OAAA"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/llm/provider.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,gCAAgC;AAChC,+DAA+D;;;AAQ/D,uCAAyG;AAAhG,2GAAA,eAAe,OAAA;AAAE,0GAAA,cAAc,OAAA;AAAE,kHAAA,sBAAsB,OAAA;AAAE,8GAAA,kBAAkB,OAAA;AAEpF,KAAK;AACL,2DAAsD;AAA7C,oHAAA,cAAc,OAAA;AACvB,iEAA4D;AAAnD,0HAAA,iBAAiB,OAAA;AAC1B,2DAAsD;AAA7C,oHAAA,cAAc,OAAA;AAEvB,KAAK;AACL,2CAAoE;AAA3D,+GAAA,iBAAiB,OAAA;AAAE,+GAAA,iBAAiB,OAAA"}