@cubos/ai-suite 1.0.2381126381-5.dev

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 (306) hide show
  1. package/README.md +68 -0
  2. package/dist/batch.d.ts +54 -0
  3. package/dist/batch.d.ts.map +1 -0
  4. package/dist/batch.js +85 -0
  5. package/dist/batch.js.map +1 -0
  6. package/dist/file.d.ts +72 -0
  7. package/dist/file.d.ts.map +1 -0
  8. package/dist/file.js +92 -0
  9. package/dist/file.js.map +1 -0
  10. package/dist/index.d.ts +78 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +189 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/providers/_base.d.ts +47 -0
  15. package/dist/providers/_base.d.ts.map +1 -0
  16. package/dist/providers/_base.js +75 -0
  17. package/dist/providers/_base.js.map +1 -0
  18. package/dist/providers/anthropic/anthropicProvider.d.ts +39 -0
  19. package/dist/providers/anthropic/anthropicProvider.d.ts.map +1 -0
  20. package/dist/providers/anthropic/anthropicProvider.js +293 -0
  21. package/dist/providers/anthropic/anthropicProvider.js.map +1 -0
  22. package/dist/providers/anthropic/batch/batchAnthropic.d.ts +15 -0
  23. package/dist/providers/anthropic/batch/batchAnthropic.d.ts.map +1 -0
  24. package/dist/providers/anthropic/batch/batchAnthropic.js +212 -0
  25. package/dist/providers/anthropic/batch/batchAnthropic.js.map +1 -0
  26. package/dist/providers/anthropic/batch/index.d.ts +2 -0
  27. package/dist/providers/anthropic/batch/index.d.ts.map +1 -0
  28. package/dist/providers/anthropic/batch/index.js +2 -0
  29. package/dist/providers/anthropic/batch/index.js.map +1 -0
  30. package/dist/providers/anthropic/file/fileAnthropic.d.ts +11 -0
  31. package/dist/providers/anthropic/file/fileAnthropic.d.ts.map +1 -0
  32. package/dist/providers/anthropic/file/fileAnthropic.js +76 -0
  33. package/dist/providers/anthropic/file/fileAnthropic.js.map +1 -0
  34. package/dist/providers/anthropic/file/index.d.ts +2 -0
  35. package/dist/providers/anthropic/file/index.d.ts.map +1 -0
  36. package/dist/providers/anthropic/file/index.js +2 -0
  37. package/dist/providers/anthropic/file/index.js.map +1 -0
  38. package/dist/providers/anthropic/index.d.ts +4 -0
  39. package/dist/providers/anthropic/index.d.ts.map +1 -0
  40. package/dist/providers/anthropic/index.js +4 -0
  41. package/dist/providers/anthropic/index.js.map +1 -0
  42. package/dist/providers/anthropic/types/anthropicContentBlock.d.ts +22 -0
  43. package/dist/providers/anthropic/types/anthropicContentBlock.d.ts.map +1 -0
  44. package/dist/providers/anthropic/types/anthropicContentBlock.js +2 -0
  45. package/dist/providers/anthropic/types/anthropicContentBlock.js.map +1 -0
  46. package/dist/providers/anthropic/types/anthropicModels.d.ts +4 -0
  47. package/dist/providers/anthropic/types/anthropicModels.d.ts.map +1 -0
  48. package/dist/providers/anthropic/types/anthropicModels.js +2 -0
  49. package/dist/providers/anthropic/types/anthropicModels.js.map +1 -0
  50. package/dist/providers/anthropic/types/index.d.ts +3 -0
  51. package/dist/providers/anthropic/types/index.d.ts.map +1 -0
  52. package/dist/providers/anthropic/types/index.js +3 -0
  53. package/dist/providers/anthropic/types/index.js.map +1 -0
  54. package/dist/providers/anthropic/utils/convertToAnthropicFunctions.d.ts +4 -0
  55. package/dist/providers/anthropic/utils/convertToAnthropicFunctions.d.ts.map +1 -0
  56. package/dist/providers/anthropic/utils/convertToAnthropicFunctions.js +17 -0
  57. package/dist/providers/anthropic/utils/convertToAnthropicFunctions.js.map +1 -0
  58. package/dist/providers/anthropic/utils/index.d.ts +2 -0
  59. package/dist/providers/anthropic/utils/index.d.ts.map +1 -0
  60. package/dist/providers/anthropic/utils/index.js +2 -0
  61. package/dist/providers/anthropic/utils/index.js.map +1 -0
  62. package/dist/providers/batchProviderBase.d.ts +13 -0
  63. package/dist/providers/batchProviderBase.d.ts.map +1 -0
  64. package/dist/providers/batchProviderBase.js +7 -0
  65. package/dist/providers/batchProviderBase.js.map +1 -0
  66. package/dist/providers/customLLM/customLLMProvider.d.ts +4 -0
  67. package/dist/providers/customLLM/customLLMProvider.d.ts.map +1 -0
  68. package/dist/providers/customLLM/customLLMProvider.js +4 -0
  69. package/dist/providers/customLLM/customLLMProvider.js.map +1 -0
  70. package/dist/providers/customLLM/index.d.ts +2 -0
  71. package/dist/providers/customLLM/index.d.ts.map +1 -0
  72. package/dist/providers/customLLM/index.js +2 -0
  73. package/dist/providers/customLLM/index.js.map +1 -0
  74. package/dist/providers/deepSeek/deepSeekProvider.d.ts +4 -0
  75. package/dist/providers/deepSeek/deepSeekProvider.d.ts.map +1 -0
  76. package/dist/providers/deepSeek/deepSeekProvider.js +4 -0
  77. package/dist/providers/deepSeek/deepSeekProvider.js.map +1 -0
  78. package/dist/providers/deepSeek/index.d.ts +3 -0
  79. package/dist/providers/deepSeek/index.d.ts.map +1 -0
  80. package/dist/providers/deepSeek/index.js +3 -0
  81. package/dist/providers/deepSeek/index.js.map +1 -0
  82. package/dist/providers/deepSeek/types/deepSeekModels.d.ts +3 -0
  83. package/dist/providers/deepSeek/types/deepSeekModels.d.ts.map +1 -0
  84. package/dist/providers/deepSeek/types/deepSeekModels.js +2 -0
  85. package/dist/providers/deepSeek/types/deepSeekModels.js.map +1 -0
  86. package/dist/providers/deepSeek/types/index.d.ts +2 -0
  87. package/dist/providers/deepSeek/types/index.d.ts.map +1 -0
  88. package/dist/providers/deepSeek/types/index.js +2 -0
  89. package/dist/providers/deepSeek/types/index.js.map +1 -0
  90. package/dist/providers/fileProviderBase.d.ts +13 -0
  91. package/dist/providers/fileProviderBase.d.ts.map +1 -0
  92. package/dist/providers/fileProviderBase.js +33 -0
  93. package/dist/providers/fileProviderBase.js.map +1 -0
  94. package/dist/providers/gemini/batch/batchGemini.d.ts +14 -0
  95. package/dist/providers/gemini/batch/batchGemini.d.ts.map +1 -0
  96. package/dist/providers/gemini/batch/batchGemini.js +322 -0
  97. package/dist/providers/gemini/batch/batchGemini.js.map +1 -0
  98. package/dist/providers/gemini/batch/index.d.ts +2 -0
  99. package/dist/providers/gemini/batch/index.d.ts.map +1 -0
  100. package/dist/providers/gemini/batch/index.js +2 -0
  101. package/dist/providers/gemini/batch/index.js.map +1 -0
  102. package/dist/providers/gemini/constants/index.d.ts +4 -0
  103. package/dist/providers/gemini/constants/index.d.ts.map +1 -0
  104. package/dist/providers/gemini/constants/index.js +4 -0
  105. package/dist/providers/gemini/constants/index.js.map +1 -0
  106. package/dist/providers/gemini/constants/notUseThinkingConfig.d.ts +2 -0
  107. package/dist/providers/gemini/constants/notUseThinkingConfig.d.ts.map +1 -0
  108. package/dist/providers/gemini/constants/notUseThinkingConfig.js +8 -0
  109. package/dist/providers/gemini/constants/notUseThinkingConfig.js.map +1 -0
  110. package/dist/providers/gemini/constants/onlyWorksWithThinking.d.ts +2 -0
  111. package/dist/providers/gemini/constants/onlyWorksWithThinking.d.ts.map +1 -0
  112. package/dist/providers/gemini/constants/onlyWorksWithThinking.js +2 -0
  113. package/dist/providers/gemini/constants/onlyWorksWithThinking.js.map +1 -0
  114. package/dist/providers/gemini/constants/useThinkingLevel.d.ts +2 -0
  115. package/dist/providers/gemini/constants/useThinkingLevel.d.ts.map +1 -0
  116. package/dist/providers/gemini/constants/useThinkingLevel.js +2 -0
  117. package/dist/providers/gemini/constants/useThinkingLevel.js.map +1 -0
  118. package/dist/providers/gemini/file/fileGemini.d.ts +11 -0
  119. package/dist/providers/gemini/file/fileGemini.d.ts.map +1 -0
  120. package/dist/providers/gemini/file/fileGemini.js +96 -0
  121. package/dist/providers/gemini/file/fileGemini.js.map +1 -0
  122. package/dist/providers/gemini/file/index.d.ts +2 -0
  123. package/dist/providers/gemini/file/index.d.ts.map +1 -0
  124. package/dist/providers/gemini/file/index.js +2 -0
  125. package/dist/providers/gemini/file/index.js.map +1 -0
  126. package/dist/providers/gemini/geminiProvider.d.ts +32 -0
  127. package/dist/providers/gemini/geminiProvider.d.ts.map +1 -0
  128. package/dist/providers/gemini/geminiProvider.js +311 -0
  129. package/dist/providers/gemini/geminiProvider.js.map +1 -0
  130. package/dist/providers/gemini/index.d.ts +6 -0
  131. package/dist/providers/gemini/index.d.ts.map +1 -0
  132. package/dist/providers/gemini/index.js +6 -0
  133. package/dist/providers/gemini/index.js.map +1 -0
  134. package/dist/providers/gemini/types/geminiModels.d.ts +3 -0
  135. package/dist/providers/gemini/types/geminiModels.d.ts.map +1 -0
  136. package/dist/providers/gemini/types/geminiModels.js +2 -0
  137. package/dist/providers/gemini/types/geminiModels.js.map +1 -0
  138. package/dist/providers/gemini/types/index.d.ts +3 -0
  139. package/dist/providers/gemini/types/index.d.ts.map +1 -0
  140. package/dist/providers/gemini/types/index.js +3 -0
  141. package/dist/providers/gemini/types/index.js.map +1 -0
  142. package/dist/providers/gemini/types/taskType.d.ts +2 -0
  143. package/dist/providers/gemini/types/taskType.d.ts.map +1 -0
  144. package/dist/providers/gemini/types/taskType.js +2 -0
  145. package/dist/providers/gemini/types/taskType.js.map +1 -0
  146. package/dist/providers/gemini/utils/convertToGeminiFunctions.d.ts +4 -0
  147. package/dist/providers/gemini/utils/convertToGeminiFunctions.d.ts.map +1 -0
  148. package/dist/providers/gemini/utils/convertToGeminiFunctions.js +46 -0
  149. package/dist/providers/gemini/utils/convertToGeminiFunctions.js.map +1 -0
  150. package/dist/providers/gemini/utils/index.d.ts +2 -0
  151. package/dist/providers/gemini/utils/index.d.ts.map +1 -0
  152. package/dist/providers/gemini/utils/index.js +2 -0
  153. package/dist/providers/gemini/utils/index.js.map +1 -0
  154. package/dist/providers/grok/grokProvider.d.ts +4 -0
  155. package/dist/providers/grok/grokProvider.d.ts.map +1 -0
  156. package/dist/providers/grok/grokProvider.js +4 -0
  157. package/dist/providers/grok/grokProvider.js.map +1 -0
  158. package/dist/providers/grok/index.d.ts +3 -0
  159. package/dist/providers/grok/index.d.ts.map +1 -0
  160. package/dist/providers/grok/index.js +3 -0
  161. package/dist/providers/grok/index.js.map +1 -0
  162. package/dist/providers/grok/types/grokModels.d.ts +2 -0
  163. package/dist/providers/grok/types/grokModels.d.ts.map +1 -0
  164. package/dist/providers/grok/types/grokModels.js +2 -0
  165. package/dist/providers/grok/types/grokModels.js.map +1 -0
  166. package/dist/providers/grok/types/index.d.ts +2 -0
  167. package/dist/providers/grok/types/index.d.ts.map +1 -0
  168. package/dist/providers/grok/types/index.js +2 -0
  169. package/dist/providers/grok/types/index.js.map +1 -0
  170. package/dist/providers/openai/batch/batchOpenai.d.ts +12 -0
  171. package/dist/providers/openai/batch/batchOpenai.d.ts.map +1 -0
  172. package/dist/providers/openai/batch/batchOpenai.js +284 -0
  173. package/dist/providers/openai/batch/batchOpenai.js.map +1 -0
  174. package/dist/providers/openai/batch/index.d.ts +2 -0
  175. package/dist/providers/openai/batch/index.d.ts.map +1 -0
  176. package/dist/providers/openai/batch/index.js +2 -0
  177. package/dist/providers/openai/batch/index.js.map +1 -0
  178. package/dist/providers/openai/file/fileOpenai.d.ts +11 -0
  179. package/dist/providers/openai/file/fileOpenai.d.ts.map +1 -0
  180. package/dist/providers/openai/file/fileOpenai.js +81 -0
  181. package/dist/providers/openai/file/fileOpenai.js.map +1 -0
  182. package/dist/providers/openai/file/index.d.ts +2 -0
  183. package/dist/providers/openai/file/index.d.ts.map +1 -0
  184. package/dist/providers/openai/file/index.js +2 -0
  185. package/dist/providers/openai/file/index.js.map +1 -0
  186. package/dist/providers/openai/index.d.ts +5 -0
  187. package/dist/providers/openai/index.d.ts.map +1 -0
  188. package/dist/providers/openai/index.js +5 -0
  189. package/dist/providers/openai/index.js.map +1 -0
  190. package/dist/providers/openai/openaiProvider.d.ts +34 -0
  191. package/dist/providers/openai/openaiProvider.d.ts.map +1 -0
  192. package/dist/providers/openai/openaiProvider.js +260 -0
  193. package/dist/providers/openai/openaiProvider.js.map +1 -0
  194. package/dist/providers/openai/types/index.d.ts +4 -0
  195. package/dist/providers/openai/types/index.d.ts.map +1 -0
  196. package/dist/providers/openai/types/index.js +4 -0
  197. package/dist/providers/openai/types/index.js.map +1 -0
  198. package/dist/providers/openai/types/openAIBatchChatCompletionCreateParams.d.ts +8 -0
  199. package/dist/providers/openai/types/openAIBatchChatCompletionCreateParams.d.ts.map +1 -0
  200. package/dist/providers/openai/types/openAIBatchChatCompletionCreateParams.js +2 -0
  201. package/dist/providers/openai/types/openAIBatchChatCompletionCreateParams.js.map +1 -0
  202. package/dist/providers/openai/types/openAIBatchEmbeddingCreateParams.d.ts +8 -0
  203. package/dist/providers/openai/types/openAIBatchEmbeddingCreateParams.d.ts.map +1 -0
  204. package/dist/providers/openai/types/openAIBatchEmbeddingCreateParams.js +2 -0
  205. package/dist/providers/openai/types/openAIBatchEmbeddingCreateParams.js.map +1 -0
  206. package/dist/providers/openai/types/openAIModels.d.ts +4 -0
  207. package/dist/providers/openai/types/openAIModels.d.ts.map +1 -0
  208. package/dist/providers/openai/types/openAIModels.js +2 -0
  209. package/dist/providers/openai/types/openAIModels.js.map +1 -0
  210. package/dist/providers/types/chatOptions.d.ts +5 -0
  211. package/dist/providers/types/chatOptions.d.ts.map +1 -0
  212. package/dist/providers/types/chatOptions.js +2 -0
  213. package/dist/providers/types/chatOptions.js.map +1 -0
  214. package/dist/providers/types/chatOptionsBase.d.ts +25 -0
  215. package/dist/providers/types/chatOptionsBase.d.ts.map +1 -0
  216. package/dist/providers/types/chatOptionsBase.js +2 -0
  217. package/dist/providers/types/chatOptionsBase.js.map +1 -0
  218. package/dist/providers/types/iJsonSchema.d.ts +13 -0
  219. package/dist/providers/types/iJsonSchema.d.ts.map +1 -0
  220. package/dist/providers/types/iJsonSchema.js +2 -0
  221. package/dist/providers/types/iJsonSchema.js.map +1 -0
  222. package/dist/providers/types/index.d.ts +11 -0
  223. package/dist/providers/types/index.d.ts.map +1 -0
  224. package/dist/providers/types/index.js +11 -0
  225. package/dist/providers/types/index.js.map +1 -0
  226. package/dist/providers/types/jsonObject.d.ts +8 -0
  227. package/dist/providers/types/jsonObject.d.ts.map +1 -0
  228. package/dist/providers/types/jsonObject.js +2 -0
  229. package/dist/providers/types/jsonObject.js.map +1 -0
  230. package/dist/providers/types/jsonSchema.d.ts +13 -0
  231. package/dist/providers/types/jsonSchema.d.ts.map +1 -0
  232. package/dist/providers/types/jsonSchema.js +2 -0
  233. package/dist/providers/types/jsonSchema.js.map +1 -0
  234. package/dist/providers/types/optionsBase.d.ts +21 -0
  235. package/dist/providers/types/optionsBase.d.ts.map +1 -0
  236. package/dist/providers/types/optionsBase.js +2 -0
  237. package/dist/providers/types/optionsBase.js.map +1 -0
  238. package/dist/providers/types/reasoningConfig.d.ts +9 -0
  239. package/dist/providers/types/reasoningConfig.d.ts.map +1 -0
  240. package/dist/providers/types/reasoningConfig.js +2 -0
  241. package/dist/providers/types/reasoningConfig.js.map +1 -0
  242. package/dist/providers/types/text.d.ts +8 -0
  243. package/dist/providers/types/text.d.ts.map +1 -0
  244. package/dist/providers/types/text.js +2 -0
  245. package/dist/providers/types/text.js.map +1 -0
  246. package/dist/providers/types/thinkingConfig.d.ts +11 -0
  247. package/dist/providers/types/thinkingConfig.d.ts.map +1 -0
  248. package/dist/providers/types/thinkingConfig.js +2 -0
  249. package/dist/providers/types/thinkingConfig.js.map +1 -0
  250. package/dist/providers/types/toolModel.d.ts +15 -0
  251. package/dist/providers/types/toolModel.d.ts.map +1 -0
  252. package/dist/providers/types/toolModel.js +2 -0
  253. package/dist/providers/types/toolModel.js.map +1 -0
  254. package/dist/types/batch.d.ts +280 -0
  255. package/dist/types/batch.d.ts.map +1 -0
  256. package/dist/types/batch.js +2 -0
  257. package/dist/types/batch.js.map +1 -0
  258. package/dist/types/chat.d.ts +144 -0
  259. package/dist/types/chat.d.ts.map +1 -0
  260. package/dist/types/chat.js +2 -0
  261. package/dist/types/chat.js.map +1 -0
  262. package/dist/types/embed.d.ts +70 -0
  263. package/dist/types/embed.d.ts.map +1 -0
  264. package/dist/types/embed.js +2 -0
  265. package/dist/types/embed.js.map +1 -0
  266. package/dist/types/file.d.ts +56 -0
  267. package/dist/types/file.d.ts.map +1 -0
  268. package/dist/types/file.js +2 -0
  269. package/dist/types/file.js.map +1 -0
  270. package/dist/types/handleErrorResponse.d.ts +35 -0
  271. package/dist/types/handleErrorResponse.d.ts.map +1 -0
  272. package/dist/types/handleErrorResponse.js +2 -0
  273. package/dist/types/handleErrorResponse.js.map +1 -0
  274. package/dist/types/index.d.ts +11 -0
  275. package/dist/types/index.d.ts.map +1 -0
  276. package/dist/types/index.js +11 -0
  277. package/dist/types/index.js.map +1 -0
  278. package/dist/types/providerModel.d.ts +12 -0
  279. package/dist/types/providerModel.d.ts.map +1 -0
  280. package/dist/types/providerModel.js +2 -0
  281. package/dist/types/providerModel.js.map +1 -0
  282. package/dist/types/responseBase.d.ts +9 -0
  283. package/dist/types/responseBase.d.ts.map +1 -0
  284. package/dist/types/responseBase.js +2 -0
  285. package/dist/types/responseBase.js.map +1 -0
  286. package/dist/types/resultBase.d.ts +30 -0
  287. package/dist/types/resultBase.d.ts.map +1 -0
  288. package/dist/types/resultBase.js +2 -0
  289. package/dist/types/resultBase.js.map +1 -0
  290. package/dist/types/retryOptions.d.ts +5 -0
  291. package/dist/types/retryOptions.d.ts.map +1 -0
  292. package/dist/types/retryOptions.js +2 -0
  293. package/dist/types/retryOptions.js.map +1 -0
  294. package/dist/types/usage.d.ts +9 -0
  295. package/dist/types/usage.d.ts.map +1 -0
  296. package/dist/types/usage.js +2 -0
  297. package/dist/types/usage.js.map +1 -0
  298. package/dist/types/utils.d.ts +2 -0
  299. package/dist/types/utils.d.ts.map +1 -0
  300. package/dist/types/utils.js +2 -0
  301. package/dist/types/utils.js.map +1 -0
  302. package/dist/utils.d.ts +4 -0
  303. package/dist/utils.d.ts.map +1 -0
  304. package/dist/utils.js +7 -0
  305. package/dist/utils.js.map +1 -0
  306. package/package.json +53 -0
package/dist/index.js ADDED
@@ -0,0 +1,189 @@
1
+ import dotenv from "dotenv";
2
+ import { Batch } from "./batch.js";
3
+ import { File } from "./file.js";
4
+ import { AnthropicProvider } from "./providers/anthropic/index.js";
5
+ import { CustomLLMProvider } from "./providers/customLLM/index.js";
6
+ import { DeepSeekProvider } from "./providers/deepSeek/index.js";
7
+ import { GeminiProvider } from "./providers/gemini/index.js";
8
+ import { GrokProvider } from "./providers/grok/index.js";
9
+ import { OpenAIProvider } from "./providers/openai/openaiProvider.js";
10
+ dotenv.config();
11
+ export class AISuite {
12
+ constructor(keys, options) {
13
+ this.openaiKey = keys.openaiKey || "";
14
+ this.anthropicKey = keys.anthropicKey || "";
15
+ this.geminiKey = keys.geminiKey || "";
16
+ this.deepseekKey = keys.deepseekKey || "";
17
+ this.grokKey = keys.grokKey || "";
18
+ this.customURL = keys.customURL || "";
19
+ this.customLLMKey = keys.customLLMKey || "";
20
+ this.langFuse = options?.langFuse;
21
+ this.hooks = options?.hooks;
22
+ this.batch = new Batch({
23
+ openaiKey: this.openaiKey,
24
+ anthropicKey: this.anthropicKey,
25
+ geminiKey: this.geminiKey,
26
+ deepseekKey: this.deepseekKey,
27
+ grokKey: this.grokKey,
28
+ customURL: this.customURL,
29
+ customLLMKey: this.customLLMKey,
30
+ }, this.getProvider, this.resultWhithObservation);
31
+ this.file = new File({
32
+ openaiKey: this.openaiKey,
33
+ anthropicKey: this.anthropicKey,
34
+ geminiKey: this.geminiKey,
35
+ deepseekKey: this.deepseekKey,
36
+ grokKey: this.grokKey,
37
+ customURL: this.customURL,
38
+ customLLMKey: this.customLLMKey,
39
+ }, this.getProvider, this.resultWhithObservation);
40
+ }
41
+ /**
42
+ * Create a chat completion with multiple providers
43
+ * @param providers - The providers to use
44
+ * @param messages - The messages to send to the providers
45
+ * @param options - The options to use
46
+ * @returns The chat completion
47
+ */
48
+ async createChatCompletionMultiResult(providers, messages, options = {
49
+ stream: false,
50
+ responseFormat: "text",
51
+ temperature: 0.7,
52
+ }) {
53
+ return Promise.all(providers.map(async (p) => this.createChatCompletion(p, messages, options)));
54
+ }
55
+ /**
56
+ * Create a chat completion with streaming
57
+ * @param provider - The provider to use
58
+ * @param messages - The messages to send to the provider
59
+ * @param options - The options to use
60
+ * @returns A stream of the chat completion
61
+ */
62
+ // async createChatCompletion(
63
+ // provider: ProviderModel,
64
+ // messages: MessageModel[],
65
+ // options?: { stream: true } & Partial<ChatOptions>
66
+ // ): Promise<Readable>;
67
+ async createChatCompletion(provider, messages, options) {
68
+ const opts = {
69
+ stream: false,
70
+ responseFormat: "text",
71
+ temperature: 0.7,
72
+ ...options,
73
+ };
74
+ const start = Date.now();
75
+ if (opts.stream) {
76
+ return {
77
+ success: false,
78
+ error: "Streaming is not supported",
79
+ raw: new Error("Streaming is not supported"),
80
+ tag: "InvalidRequest",
81
+ created: start,
82
+ model: provider.split("/")[1],
83
+ execution_time: Date.now() - start,
84
+ };
85
+ }
86
+ const p = this.getProvider(provider);
87
+ return this.resultWhithObservation(() => p.createChatCompletion(messages, opts), {
88
+ langfuseData: {
89
+ name: "create-chat-completion",
90
+ tags: ["chat", provider],
91
+ ...options?.metadata?.langFuse,
92
+ },
93
+ model: provider.split("/")[1],
94
+ input: messages,
95
+ }, p, start);
96
+ }
97
+ async createEmbedding(provider, embedding, options) {
98
+ const start = Date.now();
99
+ const p = this.getProvider(provider);
100
+ return this.resultWhithObservation(() => p.createEmbedding(embedding, options ?? {}), {
101
+ langfuseData: {
102
+ name: "create-embedding",
103
+ tags: ["embedding", provider],
104
+ ...options?.metadata?.langFuse,
105
+ },
106
+ model: provider.split("/")[1],
107
+ input: embedding.content,
108
+ }, p, start);
109
+ }
110
+ async resultWhithObservation(func, langfuseOptions, provider, start) {
111
+ const trace = this.langFuse?.trace({
112
+ ...(langfuseOptions.langfuseData.sessionId ? { sessionId: langfuseOptions.langfuseData.sessionId } : {}),
113
+ name: langfuseOptions.langfuseData.name ?? "create-chat-completion",
114
+ tags: langfuseOptions.langfuseData.tags ?? [],
115
+ environment: langfuseOptions.langfuseData.environment ?? "default",
116
+ ...(langfuseOptions.langfuseData.userId ? { userId: langfuseOptions.langfuseData.userId } : {}),
117
+ });
118
+ const generation = trace?.generation({
119
+ environment: langfuseOptions.langfuseData.environment ?? "default",
120
+ name: langfuseOptions.langfuseData.name ?? "create-chat-completion",
121
+ model: langfuseOptions.model,
122
+ input: langfuseOptions.input,
123
+ });
124
+ try {
125
+ const result = await func();
126
+ const end = Date.now();
127
+ generation?.end({
128
+ usage: {
129
+ input: result.usage?.input_tokens ?? 0,
130
+ output: result.usage?.output_tokens ?? 0,
131
+ total: result.usage?.total_tokens ?? 0,
132
+ },
133
+ output: result,
134
+ });
135
+ trace?.update({
136
+ input: langfuseOptions.input,
137
+ output: result.content,
138
+ });
139
+ return {
140
+ ...result,
141
+ execution_time: end - start,
142
+ };
143
+ }
144
+ catch (error) {
145
+ const result = provider.handleError(error);
146
+ const end = Date.now();
147
+ generation?.end({
148
+ output: error,
149
+ });
150
+ trace?.update({
151
+ input: langfuseOptions.input,
152
+ output: error,
153
+ });
154
+ return {
155
+ success: false,
156
+ ...result,
157
+ created: start,
158
+ model: langfuseOptions.model,
159
+ execution_time: end - start,
160
+ };
161
+ }
162
+ }
163
+ getProvider(provider) {
164
+ const [providerName, model] = provider.split("/");
165
+ if (providerName === "openai") {
166
+ return new OpenAIProvider(this.openaiKey, model, providerName, undefined, this.hooks);
167
+ }
168
+ else if (providerName === "anthropic") {
169
+ return new AnthropicProvider(this.anthropicKey, model, providerName, this.hooks);
170
+ }
171
+ else if (providerName === "gemini") {
172
+ return new GeminiProvider(this.geminiKey, model, providerName, this.hooks);
173
+ }
174
+ else if (providerName === "deepseek") {
175
+ return new DeepSeekProvider(this.deepseekKey, model, providerName, "https://api.deepseek.com/v1", this.hooks);
176
+ }
177
+ else if (providerName === "custom-llm") {
178
+ if (!this.customURL) {
179
+ throw new Error(`Need to provide a custom URL for the custom-llm provider`);
180
+ }
181
+ return new CustomLLMProvider(this.customLLMKey ?? "not-needed", model, providerName, this.customURL, this.hooks);
182
+ }
183
+ else if (providerName === "grok") {
184
+ return new GrokProvider(this.grokKey, model, providerName, "https://api.x.ai/v1", this.hooks);
185
+ }
186
+ throw new Error(`Unsupported provider: ${providerName}`);
187
+ }
188
+ }
189
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import type { Anthropic } from "@anthropic-ai/sdk";
2
+ import type { GoogleGenAI } from "@google/genai";
3
+ import type OpenAI from "openai";
4
+ import type { EmbeddingOptions, EmbeddingRequest, HandleErrorResponse, InputContent, MessageModel, SuccessChatCompletion, SuccessEmbedding } from "../types/index.js";
5
+ import type { BatchProviderBase } from "./batchProviderBase.js";
6
+ import type { FileProviderBase } from "./fileProviderBase.js";
7
+ import type { ChatOptions } from "./types/index.js";
8
+ export declare abstract class ProviderBase {
9
+ abstract client: OpenAI | Anthropic | GoogleGenAI;
10
+ abstract model: string;
11
+ abstract providerName: string;
12
+ abstract hooks: BaseHook;
13
+ abstract batch: BatchProviderBase;
14
+ abstract file: FileProviderBase;
15
+ /**
16
+ * Abstract method that must be implemented by each provider
17
+ */
18
+ protected abstract _createChatCompletion(messages: MessageModel[], options: ChatOptions): Promise<SuccessChatCompletion>;
19
+ /**
20
+ * Abstract method that must be implemented by each provider
21
+ */
22
+ protected abstract _createEmbedding(embedding: EmbeddingRequest, options: EmbeddingOptions): Promise<SuccessEmbedding>;
23
+ /**
24
+ * Abstract method that must be implemented by each provider
25
+ */
26
+ abstract handleError(error: Error): Pick<HandleErrorResponse, "error" | "raw" | "tag">;
27
+ /**
28
+ * Abstract method that must be implemented by each provider
29
+ */
30
+ abstract parseInputContent<T>(content: InputContent): T;
31
+ private retry;
32
+ /**
33
+ * Public method that includes retry logic
34
+ */
35
+ createChatCompletion(messages: MessageModel[], options: ChatOptions): Promise<SuccessChatCompletion>;
36
+ createEmbedding(embedding: EmbeddingRequest, options: EmbeddingOptions): Promise<SuccessEmbedding>;
37
+ }
38
+ export declare class BaseHook {
39
+ handleRequest: (req: unknown) => Promise<void>;
40
+ handleResponse: (req: unknown, res: unknown, metadata: Record<string, unknown>) => Promise<void>;
41
+ constructor(hooks?: {
42
+ handleRequest?: (req: unknown) => Promise<void>;
43
+ handleResponse?: (req: unknown, res: unknown, metadata: Record<string, unknown>) => Promise<void>;
44
+ failOnError?: boolean;
45
+ });
46
+ }
47
+ //# sourceMappingURL=_base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_base.d.ts","sourceRoot":"","sources":["../../src/providers/_base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,YAAY,EAEZ,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIpD,8BAAsB,YAAY;IAChC,SAAgB,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC;IACzD,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,YAAY,EAAE,MAAM,CAAC;IACrC,SAAgB,KAAK,EAAE,QAAQ,CAAC;IAChC,SAAgB,KAAK,EAAE,iBAAiB,CAAC;IACzC,SAAgB,IAAI,EAAE,gBAAgB,CAAC;IAEvC;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CACtC,QAAQ,EAAE,YAAY,EAAE,EACxB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,qBAAqB,CAAC;IAEjC;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CACjC,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,gBAAgB,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC;IAEtF;;OAEG;IACH,QAAQ,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,GAAG,CAAC;YAEzC,KAAK;IAkCnB;;OAEG;IACG,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIpG,eAAe,CAAC,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAGzG;AAED,qBAAa,QAAQ;IACnB,aAAa,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,cAAc,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;gBACrF,KAAK,CAAC,EAAE;QAClB,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAChD,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAClG,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB;CA6BF"}
@@ -0,0 +1,75 @@
1
+ import { promisify } from "util";
2
+ import { AISuiteError } from "../utils.js";
3
+ const sleep = promisify(setTimeout);
4
+ export class ProviderBase {
5
+ async retry(fn, options) {
6
+ const attempts = options?.attempts || 1;
7
+ const delay = options?.delay || (attempt => 2 ** attempt * 100);
8
+ const debug = false;
9
+ for (let i = 0; i < attempts; i++) {
10
+ try {
11
+ if (debug) {
12
+ console.log(`Attempt ${i + 1} of ${attempts} with delay ${delay(i)}`);
13
+ }
14
+ return await fn();
15
+ }
16
+ catch (error) {
17
+ if (error instanceof AISuiteError) {
18
+ if (debug) {
19
+ console.log(`Error is an AISuiteError, throwing it`);
20
+ }
21
+ throw error;
22
+ }
23
+ if (i === attempts - 1) {
24
+ if (debug) {
25
+ console.log(`This is the last attempt, throwing the error`);
26
+ }
27
+ throw error;
28
+ }
29
+ await sleep(delay(i));
30
+ }
31
+ }
32
+ throw new Error("Retry logic failed");
33
+ }
34
+ /**
35
+ * Public method that includes retry logic
36
+ */
37
+ async createChatCompletion(messages, options) {
38
+ return this.retry(() => this._createChatCompletion(messages, options), options.retry);
39
+ }
40
+ async createEmbedding(embedding, options) {
41
+ return this.retry(() => this._createEmbedding(embedding, options), options.retry);
42
+ }
43
+ }
44
+ export class BaseHook {
45
+ constructor(hooks) {
46
+ const failOnError = hooks?.failOnError ?? true;
47
+ this.handleRequest = async (req) => {
48
+ if (hooks?.handleRequest) {
49
+ try {
50
+ await hooks.handleRequest(req);
51
+ }
52
+ catch (error) {
53
+ console.warn("Error in handleRequest", error);
54
+ if (failOnError) {
55
+ throw new AISuiteError(error);
56
+ }
57
+ }
58
+ }
59
+ };
60
+ this.handleResponse = async (req, res, metadata) => {
61
+ if (hooks?.handleResponse) {
62
+ try {
63
+ await hooks.handleResponse(req, res, metadata);
64
+ }
65
+ catch (error) {
66
+ console.warn("Error in handleResponse", error);
67
+ if (failOnError) {
68
+ throw new AISuiteError(error);
69
+ }
70
+ }
71
+ }
72
+ };
73
+ }
74
+ }
75
+ //# sourceMappingURL=_base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_base.js","sourceRoot":"","sources":["../../src/providers/_base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { Anthropic } from "@anthropic-ai/sdk";
2
+ import type { InputContent, MessageModel, SuccessChatCompletion } from "../../types/chat.js";
3
+ import type { EmbeddingOptions, EmbeddingRequest, SuccessEmbedding } from "../../types/embed.js";
4
+ import type { ErrorAISuite } from "../../types/handleErrorResponse.js";
5
+ import { BaseHook, ProviderBase } from "../_base.js";
6
+ import type { ChatOptions } from "../types/index.js";
7
+ import { BatchAnthropic } from "./batch/index.js";
8
+ import { FileAnthropic } from "./file/index.js";
9
+ import type { AnthropicContentBlock } from "./types/index.js";
10
+ export declare class AnthropicProvider extends ProviderBase {
11
+ client: Anthropic;
12
+ model: string;
13
+ hooks: BaseHook;
14
+ providerName: string;
15
+ batch: BatchAnthropic;
16
+ file: FileAnthropic;
17
+ constructor(apiKey: string, model: string, provideName: string, hooks?: {
18
+ handleRequest?: (req: unknown) => Promise<void>;
19
+ handleResponse?: (req: unknown, res: unknown, metadata: Record<string, unknown>) => Promise<void>;
20
+ failOnError?: boolean;
21
+ });
22
+ _createChatCompletion(messages: MessageModel[], options: ChatOptions): Promise<SuccessChatCompletion>;
23
+ /**
24
+ * Anthropic does not have a dedicated embedding endpoint, so this method is not implemented.
25
+ */
26
+ protected _createEmbedding(_embedding: EmbeddingRequest, _options: EmbeddingOptions): Promise<SuccessEmbedding>;
27
+ mapMessagesToChat(messages: MessageModel[]): {
28
+ role: "user" | "assistant";
29
+ content: string | AnthropicContentBlock[];
30
+ }[];
31
+ /**
32
+ * Parses the input content into an Anthropic-compatible content part.
33
+ * @param content The input content to parse.
34
+ * @returns The parsed content part.
35
+ */
36
+ parseInputContent<T>(content: InputContent): T;
37
+ handleError(error: Error): Pick<ErrorAISuite, "error" | "raw" | "tag">;
38
+ }
39
+ //# sourceMappingURL=anthropicProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropicProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/anthropicProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACjG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAG9D,qBAAa,iBAAkB,SAAQ,YAAY;IAC1C,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,QAAQ,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,cAAc,CAA4B;IACjD,IAAI,EAAE,aAAa,CAA2B;gBAG5C,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE;QACN,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAChD,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAClG,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB;IAWG,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA+E3G;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAI/G,iBAAiB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG;QAC3C,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;QAC3B,OAAO,EAAE,MAAM,GAAG,qBAAqB,EAAE,CAAC;KAC3C,EAAE;IA4CH;;;;OAIG;IACH,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,GAAG,CAAC;IAmF9C,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC;CA2FvE"}
@@ -0,0 +1,293 @@
1
+ import { Anthropic } from "@anthropic-ai/sdk";
2
+ import JSON5 from "json5";
3
+ import { BaseHook, ProviderBase } from "../_base.js";
4
+ import { BatchAnthropic } from "./batch/index.js";
5
+ import { FileAnthropic } from "./file/index.js";
6
+ import { convertToAnthropicFunctions } from "./utils/convertToAnthropicFunctions.js";
7
+ export class AnthropicProvider extends ProviderBase {
8
+ constructor(apiKey, model, provideName, hooks) {
9
+ super();
10
+ this.batch = new BatchAnthropic(this);
11
+ this.file = new FileAnthropic(this);
12
+ this.hooks = new BaseHook(hooks);
13
+ this.client = new Anthropic({
14
+ apiKey: apiKey,
15
+ });
16
+ this.model = model;
17
+ this.providerName = provideName;
18
+ }
19
+ async _createChatCompletion(messages, options) {
20
+ const mappedMessages = this.mapMessagesToChat(messages);
21
+ // Prepare common options
22
+ const anthropicOptions = {
23
+ model: this.model,
24
+ messages: mappedMessages,
25
+ ...(options.maxOutputTokens ? { max_tokens: options.maxOutputTokens } : { max_tokens: 4096 }),
26
+ stream: options.stream || false,
27
+ tools: convertToAnthropicFunctions(options.tools),
28
+ thinking: {
29
+ ...((options.thinking?.budget ?? 0) > 0
30
+ ? { budget_tokens: options.thinking?.budget ?? 0, type: "enabled" }
31
+ : { type: "disabled" }),
32
+ },
33
+ };
34
+ // Add temperature if provided
35
+ if (options.temperature !== undefined) {
36
+ anthropicOptions.temperature = options.temperature;
37
+ }
38
+ // Handle response format (Anthropic uses system prompt for this)
39
+ if (options.responseFormat === "json_object") {
40
+ anthropicOptions.system = "Please provide your response in JSON format.";
41
+ }
42
+ await this.hooks.handleRequest(anthropicOptions);
43
+ const response = await this.client.messages.create({
44
+ ...anthropicOptions,
45
+ stream: false,
46
+ });
47
+ await this.hooks.handleResponse(anthropicOptions, response, options.metadata ?? {});
48
+ const content = response.content[0].type === "text" ? response.content[0].text : "";
49
+ let contentObject;
50
+ if (options.responseFormat !== "text") {
51
+ try {
52
+ contentObject = JSON5.parse(content);
53
+ }
54
+ catch {
55
+ // ignore JSON5 parse errors
56
+ }
57
+ }
58
+ const result = {
59
+ success: true,
60
+ id: response.id,
61
+ created: Math.floor(Date.now() / 1000),
62
+ model: this.model,
63
+ object: "chat.completion",
64
+ content,
65
+ content_object: contentObject ?? {},
66
+ tools: response.content
67
+ .filter((block) => block.type === "tool_use")
68
+ .map(tool => ({
69
+ id: tool.id,
70
+ type: "function",
71
+ name: tool.name,
72
+ content: tool.input,
73
+ rawContent: JSON.stringify(tool.input),
74
+ })),
75
+ usage: {
76
+ input_tokens: response.usage.input_tokens || 0,
77
+ output_tokens: response.usage.output_tokens || 0,
78
+ total_tokens: response.usage.input_tokens + response.usage.output_tokens,
79
+ cached_tokens: response.usage.cache_read_input_tokens || 0,
80
+ reasoning_tokens: 0,
81
+ thoughts_tokens: 0,
82
+ },
83
+ metadata: options.metadata,
84
+ };
85
+ return result;
86
+ }
87
+ /**
88
+ * Anthropic does not have a dedicated embedding endpoint, so this method is not implemented.
89
+ */
90
+ _createEmbedding(_embedding, _options) {
91
+ throw new Error("Method not implemented.");
92
+ }
93
+ mapMessagesToChat(messages) {
94
+ return messages.map((msg) => {
95
+ const content = Array.isArray(msg.content) ? msg.content : [msg.content];
96
+ const parsedContent = content.map(c => this.parseInputContent(c));
97
+ if (msg.role === "developer" || msg.role === "user") {
98
+ return {
99
+ role: "user",
100
+ content: parsedContent,
101
+ };
102
+ }
103
+ if (msg.role === "assistant") {
104
+ const textContent = parsedContent
105
+ .filter((c) => c.type === "text")
106
+ .map(c => c.text)
107
+ .join("");
108
+ return {
109
+ role: "assistant",
110
+ content: textContent,
111
+ };
112
+ }
113
+ if (msg.role === "tool") {
114
+ const textContent = parsedContent
115
+ .filter((c) => c.type === "text")
116
+ .map(c => c.text)
117
+ .join("");
118
+ return {
119
+ role: "user",
120
+ content: `Tool Response (${msg.name || "default_tool"}): ${textContent}`,
121
+ };
122
+ }
123
+ throw new Error(`Unsupported role: ${msg.role}`);
124
+ });
125
+ }
126
+ /**
127
+ * Parses the input content into an Anthropic-compatible content part.
128
+ * @param content The input content to parse.
129
+ * @returns The parsed content part.
130
+ */
131
+ parseInputContent(content) {
132
+ if (typeof content === "string") {
133
+ return { type: "text", text: content };
134
+ }
135
+ if (content.type === "text") {
136
+ return { type: "text", text: content.text };
137
+ }
138
+ if (content.type === "image") {
139
+ let base64;
140
+ if (Buffer.isBuffer(content.image)) {
141
+ base64 = content.image.toString("base64");
142
+ }
143
+ else if (typeof content.image === "string") {
144
+ if (content.image.startsWith("http") || content.image.startsWith("data:")) {
145
+ throw new Error("Anthropic does not support image URLs directly. Please provide base64 encoded images.");
146
+ }
147
+ else {
148
+ base64 = content.image;
149
+ }
150
+ }
151
+ else {
152
+ throw new Error("Unsupported image type");
153
+ }
154
+ return {
155
+ type: "image",
156
+ source: {
157
+ type: "base64",
158
+ media_type: "image/png",
159
+ data: base64,
160
+ },
161
+ };
162
+ }
163
+ if (content.type === "file") {
164
+ let base64;
165
+ if (Buffer.isBuffer(content.file)) {
166
+ base64 = content.file.toString("base64");
167
+ }
168
+ else if (content.file instanceof ArrayBuffer) {
169
+ base64 = Buffer.from(content.file).toString("base64");
170
+ }
171
+ else {
172
+ base64 = content.file;
173
+ }
174
+ if (content.mediaType.startsWith("image/")) {
175
+ // Map media type to Anthropic's allowed types
176
+ let mediaType;
177
+ if (content.mediaType === "image/jpeg" || content.mediaType === "image/jpg") {
178
+ mediaType = "image/jpeg";
179
+ }
180
+ else if (content.mediaType === "image/gif") {
181
+ mediaType = "image/gif";
182
+ }
183
+ else if (content.mediaType === "image/webp") {
184
+ mediaType = "image/webp";
185
+ }
186
+ else {
187
+ mediaType = "image/png";
188
+ }
189
+ return {
190
+ type: "image",
191
+ source: {
192
+ type: "base64",
193
+ media_type: mediaType,
194
+ data: base64,
195
+ },
196
+ };
197
+ }
198
+ if (content.mediaType === "application/pdf") {
199
+ return {
200
+ type: "document",
201
+ source: {
202
+ type: "base64",
203
+ media_type: "application/pdf",
204
+ data: base64,
205
+ },
206
+ };
207
+ }
208
+ throw new Error(`Unsupported media type for Anthropic: ${content.mediaType}`);
209
+ }
210
+ throw new Error("Unsupported content type");
211
+ }
212
+ handleError(error) {
213
+ if (error instanceof Anthropic.APIError) {
214
+ const status = error.status;
215
+ if (status === 400) {
216
+ return {
217
+ error: "Bad Request: Invalid request parameters",
218
+ raw: error,
219
+ tag: "InvalidRequest",
220
+ };
221
+ }
222
+ if (status === 401) {
223
+ return {
224
+ error: "Unauthorized: Invalid API key",
225
+ raw: error,
226
+ tag: "InvalidAuth",
227
+ };
228
+ }
229
+ if (status === 403) {
230
+ return {
231
+ error: "Forbidden: Insufficient permissions",
232
+ raw: error,
233
+ tag: "InvalidRequest",
234
+ };
235
+ }
236
+ if (status === 404) {
237
+ return {
238
+ error: "Not Found: Resource not found",
239
+ raw: error,
240
+ tag: "InvalidRequest",
241
+ };
242
+ }
243
+ if (status === 409) {
244
+ return {
245
+ error: "Conflict: Request conflicts with current state",
246
+ raw: error,
247
+ tag: "InvalidRequest",
248
+ };
249
+ }
250
+ if (status === 422) {
251
+ return {
252
+ error: "Unprocessable Entity: Invalid input data",
253
+ raw: error,
254
+ tag: "InvalidRequest",
255
+ };
256
+ }
257
+ if (status === 429) {
258
+ return {
259
+ error: "Rate Limit Exceeded: Too many requests",
260
+ raw: error,
261
+ tag: "RateLimitExceeded",
262
+ };
263
+ }
264
+ if (status >= 500) {
265
+ return {
266
+ error: "Internal Server Error: Anthropic API is experiencing issues",
267
+ raw: error,
268
+ tag: "ServerError",
269
+ };
270
+ }
271
+ return {
272
+ error: `${error.name}: ${error.message}`,
273
+ raw: error,
274
+ tag: "Unknown",
275
+ };
276
+ }
277
+ // Handle connection errors
278
+ if (error instanceof Anthropic.APIConnectionError) {
279
+ return {
280
+ error: "Connection Error: Failed to connect to Anthropic API",
281
+ raw: error,
282
+ tag: "ServerError",
283
+ };
284
+ }
285
+ // Handle any other errors
286
+ return {
287
+ error: `${error.name} : ${error.message}`,
288
+ raw: error,
289
+ tag: "Unknown",
290
+ };
291
+ }
292
+ }
293
+ //# sourceMappingURL=anthropicProvider.js.map