@llumiverse/drivers 1.2.0 → 1.4.0-dev.20260629.090753Z

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 (403) hide show
  1. package/lib/{types/adobe → adobe}/firefly.d.ts +2 -1
  2. package/lib/adobe/firefly.d.ts.map +1 -0
  3. package/lib/adobe/firefly.js +120 -0
  4. package/lib/adobe/firefly.js.map +1 -0
  5. package/lib/anthropic/index.d.ts +23 -0
  6. package/lib/anthropic/index.d.ts.map +1 -0
  7. package/lib/anthropic/index.js +68 -0
  8. package/lib/anthropic/index.js.map +1 -0
  9. package/lib/{types/azure → azure}/azure_foundry.d.ts +9 -7
  10. package/lib/azure/azure_foundry.d.ts.map +1 -0
  11. package/lib/{esm/azure → azure}/azure_foundry.js +138 -124
  12. package/lib/azure/azure_foundry.js.map +1 -0
  13. package/lib/{types/bedrock → bedrock}/converse.d.ts +2 -2
  14. package/lib/bedrock/converse.d.ts.map +1 -0
  15. package/lib/{esm/bedrock → bedrock}/converse.js +86 -79
  16. package/lib/bedrock/converse.js.map +1 -0
  17. package/lib/bedrock/embeddings.d.ts +4 -0
  18. package/lib/bedrock/embeddings.d.ts.map +1 -0
  19. package/lib/bedrock/embeddings.js +359 -0
  20. package/lib/bedrock/embeddings.js.map +1 -0
  21. package/lib/{types/bedrock → bedrock}/index.d.ts +33 -9
  22. package/lib/bedrock/index.d.ts.map +1 -0
  23. package/lib/{esm/bedrock → bedrock}/index.js +599 -324
  24. package/lib/bedrock/index.js.map +1 -0
  25. package/lib/{types/bedrock → bedrock}/nova-image-payload.d.ts +5 -5
  26. package/lib/bedrock/nova-image-payload.d.ts.map +1 -0
  27. package/lib/{esm/bedrock → bedrock}/nova-image-payload.js +31 -36
  28. package/lib/bedrock/nova-image-payload.js.map +1 -0
  29. package/lib/{types/bedrock → bedrock}/payloads.d.ts +1 -1
  30. package/lib/bedrock/payloads.d.ts.map +1 -0
  31. package/lib/{cjs/bedrock → bedrock}/payloads.js.map +1 -1
  32. package/lib/{types/bedrock → bedrock}/s3.d.ts +3 -2
  33. package/lib/bedrock/s3.d.ts.map +1 -0
  34. package/lib/{esm/bedrock → bedrock}/s3.js +27 -23
  35. package/lib/bedrock/s3.js.map +1 -0
  36. package/lib/{types/bedrock → bedrock}/twelvelabs.d.ts +8 -9
  37. package/lib/bedrock/twelvelabs.d.ts.map +1 -0
  38. package/lib/{esm/bedrock → bedrock}/twelvelabs.js +17 -21
  39. package/lib/bedrock/twelvelabs.js.map +1 -0
  40. package/lib/{types/groq → groq}/index.d.ts +6 -4
  41. package/lib/groq/index.d.ts.map +1 -0
  42. package/lib/{esm/groq → groq}/index.js +72 -39
  43. package/lib/groq/index.js.map +1 -0
  44. package/lib/{types/huggingface_ie.d.ts → huggingface_ie.d.ts} +4 -3
  45. package/lib/huggingface_ie.d.ts.map +1 -0
  46. package/lib/{esm/huggingface_ie.js → huggingface_ie.js} +32 -31
  47. package/lib/huggingface_ie.js.map +1 -0
  48. package/lib/index.d.ts +16 -0
  49. package/lib/index.d.ts.map +1 -0
  50. package/lib/index.js +16 -0
  51. package/lib/index.js.map +1 -0
  52. package/lib/{types/mistral → mistral}/index.d.ts +6 -5
  53. package/lib/mistral/index.d.ts.map +1 -0
  54. package/lib/{esm/mistral → mistral}/index.js +66 -38
  55. package/lib/mistral/index.js.map +1 -0
  56. package/lib/{types/mistral → mistral}/types.d.ts +1 -0
  57. package/lib/mistral/types.d.ts.map +1 -0
  58. package/lib/mistral/types.js.map +1 -0
  59. package/lib/{types/openai → openai}/azure_openai.d.ts +5 -4
  60. package/lib/openai/azure_openai.d.ts.map +1 -0
  61. package/lib/{esm/openai → openai}/azure_openai.js +17 -14
  62. package/lib/openai/azure_openai.js.map +1 -0
  63. package/lib/openai/drivers.d.ts +4 -0
  64. package/lib/openai/drivers.d.ts.map +1 -0
  65. package/lib/openai/drivers.js +9 -0
  66. package/lib/openai/drivers.js.map +1 -0
  67. package/lib/{types/openai → openai}/index.d.ts +17 -5
  68. package/lib/openai/index.d.ts.map +1 -0
  69. package/lib/{esm/openai → openai}/index.js +254 -148
  70. package/lib/openai/index.js.map +1 -0
  71. package/lib/{types/openai → openai}/openai.d.ts +3 -3
  72. package/lib/openai/openai.d.ts.map +1 -0
  73. package/lib/openai/openai.js +15 -0
  74. package/lib/openai/openai.js.map +1 -0
  75. package/lib/{types/openai → openai}/openai_compatible.d.ts +3 -3
  76. package/lib/openai/openai_compatible.d.ts.map +1 -0
  77. package/lib/{esm/openai → openai}/openai_compatible.js +14 -11
  78. package/lib/openai/openai_compatible.js.map +1 -0
  79. package/lib/{types/openai → openai}/openai_format.d.ts +3 -2
  80. package/lib/openai/openai_format.d.ts.map +1 -0
  81. package/lib/{esm/openai → openai}/openai_format.js +66 -24
  82. package/lib/openai/openai_format.js.map +1 -0
  83. package/lib/{types/replicate.d.ts → replicate.d.ts} +3 -2
  84. package/lib/replicate.d.ts.map +1 -0
  85. package/lib/{esm/replicate.js → replicate.js} +59 -49
  86. package/lib/replicate.js.map +1 -0
  87. package/lib/shared/claude-messages.d.ts +99 -0
  88. package/lib/shared/claude-messages.d.ts.map +1 -0
  89. package/lib/shared/claude-messages.js +869 -0
  90. package/lib/shared/claude-messages.js.map +1 -0
  91. package/lib/{types/shared → shared}/claude-thinking.d.ts +1 -1
  92. package/lib/shared/claude-thinking.d.ts.map +1 -0
  93. package/lib/{esm/shared → shared}/claude-thinking.js +5 -7
  94. package/lib/shared/claude-thinking.js.map +1 -0
  95. package/lib/shared/debug-prompt.d.ts +5 -0
  96. package/lib/shared/debug-prompt.d.ts.map +1 -0
  97. package/lib/shared/debug-prompt.js +25 -0
  98. package/lib/shared/debug-prompt.js.map +1 -0
  99. package/lib/{types/test-driver → test-driver}/TestErrorCompletionStream.d.ts +1 -1
  100. package/lib/test-driver/TestErrorCompletionStream.d.ts.map +1 -0
  101. package/lib/test-driver/TestErrorCompletionStream.js +16 -0
  102. package/lib/test-driver/TestErrorCompletionStream.js.map +1 -0
  103. package/lib/{types/test-driver → test-driver}/TestValidationErrorCompletionStream.d.ts +1 -1
  104. package/lib/test-driver/TestValidationErrorCompletionStream.d.ts.map +1 -0
  105. package/lib/{esm/test-driver → test-driver}/TestValidationErrorCompletionStream.js +4 -4
  106. package/lib/test-driver/TestValidationErrorCompletionStream.js.map +1 -0
  107. package/lib/{types/test-driver → test-driver}/index.d.ts +3 -3
  108. package/lib/test-driver/index.d.ts.map +1 -0
  109. package/lib/{esm/test-driver → test-driver}/index.js +20 -20
  110. package/lib/test-driver/index.js.map +1 -0
  111. package/lib/{types/test-driver → test-driver}/utils.d.ts +1 -1
  112. package/lib/test-driver/utils.d.ts.map +1 -0
  113. package/lib/{esm/test-driver → test-driver}/utils.js +4 -4
  114. package/lib/test-driver/utils.js.map +1 -0
  115. package/lib/togetherai/index.d.ts +15 -0
  116. package/lib/togetherai/index.d.ts.map +1 -0
  117. package/lib/togetherai/index.js +54 -0
  118. package/lib/togetherai/index.js.map +1 -0
  119. package/lib/{types/togetherai → togetherai}/interfaces.d.ts +1 -1
  120. package/lib/togetherai/interfaces.d.ts.map +1 -0
  121. package/lib/{cjs/watsonx → togetherai}/interfaces.js.map +1 -1
  122. package/lib/vertexai/debug.d.ts +2 -0
  123. package/lib/vertexai/debug.d.ts.map +1 -0
  124. package/lib/{esm/vertexai → vertexai}/debug.js +1 -1
  125. package/lib/vertexai/debug.js.map +1 -0
  126. package/lib/vertexai/embeddings/embed-legacy-multimodal.d.ts +9 -0
  127. package/lib/vertexai/embeddings/embed-legacy-multimodal.d.ts.map +1 -0
  128. package/lib/vertexai/embeddings/embed-legacy-multimodal.js +141 -0
  129. package/lib/vertexai/embeddings/embed-legacy-multimodal.js.map +1 -0
  130. package/lib/vertexai/embeddings/embed.d.ts +13 -0
  131. package/lib/vertexai/embeddings/embed.d.ts.map +1 -0
  132. package/lib/vertexai/embeddings/embed.js +162 -0
  133. package/lib/vertexai/embeddings/embed.js.map +1 -0
  134. package/lib/vertexai/embeddings/source-utils.d.ts +9 -0
  135. package/lib/vertexai/embeddings/source-utils.d.ts.map +1 -0
  136. package/lib/vertexai/embeddings/source-utils.js +18 -0
  137. package/lib/vertexai/embeddings/source-utils.js.map +1 -0
  138. package/lib/{types/vertexai → vertexai}/index.d.ts +31 -19
  139. package/lib/vertexai/index.d.ts.map +1 -0
  140. package/lib/{esm/vertexai → vertexai}/index.js +221 -159
  141. package/lib/vertexai/index.js.map +1 -0
  142. package/lib/vertexai/models/claude.d.ts +16 -0
  143. package/lib/vertexai/models/claude.d.ts.map +1 -0
  144. package/lib/vertexai/models/claude.js +65 -0
  145. package/lib/vertexai/models/claude.js.map +1 -0
  146. package/lib/{types/vertexai → vertexai}/models/gemini.d.ts +29 -5
  147. package/lib/vertexai/models/gemini.d.ts.map +1 -0
  148. package/lib/{esm/vertexai → vertexai}/models/gemini.js +255 -127
  149. package/lib/vertexai/models/gemini.js.map +1 -0
  150. package/lib/{types/vertexai → vertexai}/models/imagen.d.ts +12 -11
  151. package/lib/vertexai/models/imagen.d.ts.map +1 -0
  152. package/lib/{esm/vertexai → vertexai}/models/imagen.js +74 -47
  153. package/lib/vertexai/models/imagen.js.map +1 -0
  154. package/lib/{types/vertexai → vertexai}/models/llama.d.ts +4 -4
  155. package/lib/vertexai/models/llama.d.ts.map +1 -0
  156. package/lib/{esm/vertexai → vertexai}/models/llama.js +37 -33
  157. package/lib/vertexai/models/llama.js.map +1 -0
  158. package/lib/vertexai/models.d.ts +21 -0
  159. package/lib/vertexai/models.d.ts.map +1 -0
  160. package/lib/{esm/vertexai → vertexai}/models.js +12 -9
  161. package/lib/vertexai/models.js.map +1 -0
  162. package/lib/{types/watsonx → watsonx}/index.d.ts +4 -3
  163. package/lib/watsonx/index.d.ts.map +1 -0
  164. package/lib/{esm/watsonx → watsonx}/index.js +69 -41
  165. package/lib/watsonx/index.js.map +1 -0
  166. package/lib/watsonx/interfaces.d.ts.map +1 -0
  167. package/lib/{esm/watsonx → watsonx}/interfaces.js.map +1 -1
  168. package/lib/{types/xai → xai}/index.d.ts +4 -4
  169. package/lib/xai/index.d.ts.map +1 -0
  170. package/lib/{esm/xai → xai}/index.js +22 -18
  171. package/lib/xai/index.js.map +1 -0
  172. package/package.json +88 -36
  173. package/src/adobe/firefly.ts +60 -43
  174. package/src/anthropic/index.ts +121 -0
  175. package/src/azure/azure_foundry.ts +210 -165
  176. package/src/bedrock/converse.ts +124 -101
  177. package/src/bedrock/embeddings.test.ts +508 -0
  178. package/src/bedrock/embeddings.ts +517 -0
  179. package/src/bedrock/error-handling.test.ts +62 -14
  180. package/src/bedrock/index.ts +832 -466
  181. package/src/bedrock/nova-image-payload.ts +98 -91
  182. package/src/bedrock/payloads.ts +9 -9
  183. package/src/bedrock/s3.test.ts +39 -0
  184. package/src/bedrock/s3.ts +57 -38
  185. package/src/bedrock/streaming-tool-use.test.ts +86 -69
  186. package/src/bedrock/twelvelabs.ts +35 -32
  187. package/src/groq/index.ts +143 -60
  188. package/src/http-timeout-wiring.test.ts +263 -0
  189. package/src/huggingface_ie.ts +45 -61
  190. package/src/index.ts +15 -15
  191. package/src/mistral/index.ts +97 -48
  192. package/src/mistral/types.ts +13 -12
  193. package/src/openai/azure_openai.ts +35 -27
  194. package/src/openai/drivers.ts +9 -0
  195. package/src/openai/error-handling.test.ts +308 -113
  196. package/src/openai/index.ts +389 -254
  197. package/src/openai/openai.ts +6 -13
  198. package/src/openai/openai_compatible.ts +35 -25
  199. package/src/openai/openai_format.ts +90 -40
  200. package/src/replicate.ts +108 -86
  201. package/src/shared/claude-messages.test.ts +37 -0
  202. package/src/shared/claude-messages.ts +1085 -0
  203. package/src/shared/claude-thinking.ts +6 -12
  204. package/src/shared/debug-prompt.ts +28 -0
  205. package/src/test-driver/TestErrorCompletionStream.ts +9 -10
  206. package/src/test-driver/TestValidationErrorCompletionStream.ts +9 -10
  207. package/src/test-driver/index.ts +43 -27
  208. package/src/test-driver/utils.ts +8 -8
  209. package/src/togetherai/index.test.ts +32 -0
  210. package/src/togetherai/index.ts +64 -128
  211. package/src/togetherai/interfaces.ts +5 -5
  212. package/src/vertexai/debug.ts +3 -3
  213. package/src/vertexai/embeddings/embed-legacy-multimodal.ts +211 -0
  214. package/src/vertexai/embeddings/embed.ts +206 -0
  215. package/src/vertexai/embeddings/embeddings.test.ts +497 -0
  216. package/src/vertexai/embeddings/source-utils.test.ts +54 -0
  217. package/src/vertexai/embeddings/source-utils.ts +29 -0
  218. package/src/vertexai/index.ts +339 -253
  219. package/src/vertexai/models/claude-error-handling.test.ts +86 -39
  220. package/src/vertexai/models/claude-streaming-spacing.test.ts +82 -75
  221. package/src/vertexai/models/claude.ts +84 -1041
  222. package/src/vertexai/models/gemini-conversation-mutation.test.ts +65 -23
  223. package/src/vertexai/models/gemini-error-handling.test.ts +126 -10
  224. package/src/vertexai/models/gemini-orphaned-tool-result.test.ts +118 -0
  225. package/src/vertexai/models/gemini.ts +372 -182
  226. package/src/vertexai/models/imagen.ts +164 -100
  227. package/src/vertexai/models/llama.ts +70 -48
  228. package/src/vertexai/models.ts +36 -16
  229. package/src/watsonx/index.ts +101 -65
  230. package/src/watsonx/interfaces.ts +10 -15
  231. package/src/xai/index.ts +30 -30
  232. package/lib/cjs/adobe/firefly.js +0 -120
  233. package/lib/cjs/adobe/firefly.js.map +0 -1
  234. package/lib/cjs/azure/azure_foundry.js +0 -432
  235. package/lib/cjs/azure/azure_foundry.js.map +0 -1
  236. package/lib/cjs/bedrock/converse.js +0 -359
  237. package/lib/cjs/bedrock/converse.js.map +0 -1
  238. package/lib/cjs/bedrock/index.js +0 -1508
  239. package/lib/cjs/bedrock/index.js.map +0 -1
  240. package/lib/cjs/bedrock/nova-image-payload.js +0 -207
  241. package/lib/cjs/bedrock/nova-image-payload.js.map +0 -1
  242. package/lib/cjs/bedrock/payloads.js +0 -3
  243. package/lib/cjs/bedrock/s3.js +0 -107
  244. package/lib/cjs/bedrock/s3.js.map +0 -1
  245. package/lib/cjs/bedrock/twelvelabs.js +0 -87
  246. package/lib/cjs/bedrock/twelvelabs.js.map +0 -1
  247. package/lib/cjs/groq/index.js +0 -328
  248. package/lib/cjs/groq/index.js.map +0 -1
  249. package/lib/cjs/huggingface_ie.js +0 -201
  250. package/lib/cjs/huggingface_ie.js.map +0 -1
  251. package/lib/cjs/index.js +0 -31
  252. package/lib/cjs/index.js.map +0 -1
  253. package/lib/cjs/mistral/index.js +0 -176
  254. package/lib/cjs/mistral/index.js.map +0 -1
  255. package/lib/cjs/mistral/types.js +0 -83
  256. package/lib/cjs/mistral/types.js.map +0 -1
  257. package/lib/cjs/openai/azure_openai.js +0 -72
  258. package/lib/cjs/openai/azure_openai.js.map +0 -1
  259. package/lib/cjs/openai/index.js +0 -1129
  260. package/lib/cjs/openai/index.js.map +0 -1
  261. package/lib/cjs/openai/openai.js +0 -21
  262. package/lib/cjs/openai/openai.js.map +0 -1
  263. package/lib/cjs/openai/openai_compatible.js +0 -63
  264. package/lib/cjs/openai/openai_compatible.js.map +0 -1
  265. package/lib/cjs/openai/openai_format.js +0 -131
  266. package/lib/cjs/openai/openai_format.js.map +0 -1
  267. package/lib/cjs/package.json +0 -3
  268. package/lib/cjs/replicate.js +0 -275
  269. package/lib/cjs/replicate.js.map +0 -1
  270. package/lib/cjs/shared/claude-thinking.js +0 -60
  271. package/lib/cjs/shared/claude-thinking.js.map +0 -1
  272. package/lib/cjs/test-driver/TestErrorCompletionStream.js +0 -20
  273. package/lib/cjs/test-driver/TestErrorCompletionStream.js.map +0 -1
  274. package/lib/cjs/test-driver/TestValidationErrorCompletionStream.js +0 -24
  275. package/lib/cjs/test-driver/TestValidationErrorCompletionStream.js.map +0 -1
  276. package/lib/cjs/test-driver/index.js +0 -109
  277. package/lib/cjs/test-driver/index.js.map +0 -1
  278. package/lib/cjs/test-driver/utils.js +0 -30
  279. package/lib/cjs/test-driver/utils.js.map +0 -1
  280. package/lib/cjs/togetherai/index.js +0 -126
  281. package/lib/cjs/togetherai/index.js.map +0 -1
  282. package/lib/cjs/togetherai/interfaces.js +0 -3
  283. package/lib/cjs/togetherai/interfaces.js.map +0 -1
  284. package/lib/cjs/vertexai/debug.js +0 -12
  285. package/lib/cjs/vertexai/debug.js.map +0 -1
  286. package/lib/cjs/vertexai/embeddings/embeddings-image.js +0 -27
  287. package/lib/cjs/vertexai/embeddings/embeddings-image.js.map +0 -1
  288. package/lib/cjs/vertexai/embeddings/embeddings-text.js +0 -23
  289. package/lib/cjs/vertexai/embeddings/embeddings-text.js.map +0 -1
  290. package/lib/cjs/vertexai/index.js +0 -644
  291. package/lib/cjs/vertexai/index.js.map +0 -1
  292. package/lib/cjs/vertexai/models/claude.js +0 -917
  293. package/lib/cjs/vertexai/models/claude.js.map +0 -1
  294. package/lib/cjs/vertexai/models/gemini.js +0 -858
  295. package/lib/cjs/vertexai/models/gemini.js.map +0 -1
  296. package/lib/cjs/vertexai/models/imagen.js +0 -303
  297. package/lib/cjs/vertexai/models/imagen.js.map +0 -1
  298. package/lib/cjs/vertexai/models/llama.js +0 -183
  299. package/lib/cjs/vertexai/models/llama.js.map +0 -1
  300. package/lib/cjs/vertexai/models.js +0 -35
  301. package/lib/cjs/vertexai/models.js.map +0 -1
  302. package/lib/cjs/watsonx/index.js +0 -161
  303. package/lib/cjs/watsonx/index.js.map +0 -1
  304. package/lib/cjs/watsonx/interfaces.js +0 -3
  305. package/lib/cjs/xai/index.js +0 -65
  306. package/lib/cjs/xai/index.js.map +0 -1
  307. package/lib/esm/adobe/firefly.js +0 -116
  308. package/lib/esm/adobe/firefly.js.map +0 -1
  309. package/lib/esm/azure/azure_foundry.js.map +0 -1
  310. package/lib/esm/bedrock/converse.js.map +0 -1
  311. package/lib/esm/bedrock/index.js.map +0 -1
  312. package/lib/esm/bedrock/nova-image-payload.js.map +0 -1
  313. package/lib/esm/bedrock/payloads.js.map +0 -1
  314. package/lib/esm/bedrock/s3.js.map +0 -1
  315. package/lib/esm/bedrock/twelvelabs.js.map +0 -1
  316. package/lib/esm/groq/index.js.map +0 -1
  317. package/lib/esm/huggingface_ie.js.map +0 -1
  318. package/lib/esm/index.js +0 -15
  319. package/lib/esm/index.js.map +0 -1
  320. package/lib/esm/mistral/index.js.map +0 -1
  321. package/lib/esm/mistral/types.js.map +0 -1
  322. package/lib/esm/openai/azure_openai.js.map +0 -1
  323. package/lib/esm/openai/index.js.map +0 -1
  324. package/lib/esm/openai/openai.js +0 -14
  325. package/lib/esm/openai/openai.js.map +0 -1
  326. package/lib/esm/openai/openai_compatible.js.map +0 -1
  327. package/lib/esm/openai/openai_format.js.map +0 -1
  328. package/lib/esm/replicate.js.map +0 -1
  329. package/lib/esm/shared/claude-thinking.js.map +0 -1
  330. package/lib/esm/test-driver/TestErrorCompletionStream.js +0 -16
  331. package/lib/esm/test-driver/TestErrorCompletionStream.js.map +0 -1
  332. package/lib/esm/test-driver/TestValidationErrorCompletionStream.js.map +0 -1
  333. package/lib/esm/test-driver/index.js.map +0 -1
  334. package/lib/esm/test-driver/utils.js.map +0 -1
  335. package/lib/esm/togetherai/index.js +0 -122
  336. package/lib/esm/togetherai/index.js.map +0 -1
  337. package/lib/esm/togetherai/interfaces.js.map +0 -1
  338. package/lib/esm/vertexai/debug.js.map +0 -1
  339. package/lib/esm/vertexai/embeddings/embeddings-image.js +0 -24
  340. package/lib/esm/vertexai/embeddings/embeddings-image.js.map +0 -1
  341. package/lib/esm/vertexai/embeddings/embeddings-text.js +0 -20
  342. package/lib/esm/vertexai/embeddings/embeddings-text.js.map +0 -1
  343. package/lib/esm/vertexai/index.js.map +0 -1
  344. package/lib/esm/vertexai/models/claude.js +0 -906
  345. package/lib/esm/vertexai/models/claude.js.map +0 -1
  346. package/lib/esm/vertexai/models/gemini.js.map +0 -1
  347. package/lib/esm/vertexai/models/imagen.js.map +0 -1
  348. package/lib/esm/vertexai/models/llama.js.map +0 -1
  349. package/lib/esm/vertexai/models.js.map +0 -1
  350. package/lib/esm/watsonx/index.js.map +0 -1
  351. package/lib/esm/xai/index.js.map +0 -1
  352. package/lib/types/adobe/firefly.d.ts.map +0 -1
  353. package/lib/types/azure/azure_foundry.d.ts.map +0 -1
  354. package/lib/types/bedrock/converse.d.ts.map +0 -1
  355. package/lib/types/bedrock/index.d.ts.map +0 -1
  356. package/lib/types/bedrock/nova-image-payload.d.ts.map +0 -1
  357. package/lib/types/bedrock/payloads.d.ts.map +0 -1
  358. package/lib/types/bedrock/s3.d.ts.map +0 -1
  359. package/lib/types/bedrock/twelvelabs.d.ts.map +0 -1
  360. package/lib/types/groq/index.d.ts.map +0 -1
  361. package/lib/types/huggingface_ie.d.ts.map +0 -1
  362. package/lib/types/index.d.ts +0 -15
  363. package/lib/types/index.d.ts.map +0 -1
  364. package/lib/types/mistral/index.d.ts.map +0 -1
  365. package/lib/types/mistral/types.d.ts.map +0 -1
  366. package/lib/types/openai/azure_openai.d.ts.map +0 -1
  367. package/lib/types/openai/index.d.ts.map +0 -1
  368. package/lib/types/openai/openai.d.ts.map +0 -1
  369. package/lib/types/openai/openai_compatible.d.ts.map +0 -1
  370. package/lib/types/openai/openai_format.d.ts.map +0 -1
  371. package/lib/types/replicate.d.ts.map +0 -1
  372. package/lib/types/shared/claude-thinking.d.ts.map +0 -1
  373. package/lib/types/test-driver/TestErrorCompletionStream.d.ts.map +0 -1
  374. package/lib/types/test-driver/TestValidationErrorCompletionStream.d.ts.map +0 -1
  375. package/lib/types/test-driver/index.d.ts.map +0 -1
  376. package/lib/types/test-driver/utils.d.ts.map +0 -1
  377. package/lib/types/togetherai/index.d.ts +0 -23
  378. package/lib/types/togetherai/index.d.ts.map +0 -1
  379. package/lib/types/togetherai/interfaces.d.ts.map +0 -1
  380. package/lib/types/vertexai/debug.d.ts +0 -2
  381. package/lib/types/vertexai/debug.d.ts.map +0 -1
  382. package/lib/types/vertexai/embeddings/embeddings-image.d.ts +0 -11
  383. package/lib/types/vertexai/embeddings/embeddings-image.d.ts.map +0 -1
  384. package/lib/types/vertexai/embeddings/embeddings-text.d.ts +0 -10
  385. package/lib/types/vertexai/embeddings/embeddings-text.d.ts.map +0 -1
  386. package/lib/types/vertexai/index.d.ts.map +0 -1
  387. package/lib/types/vertexai/models/claude.d.ts +0 -119
  388. package/lib/types/vertexai/models/claude.d.ts.map +0 -1
  389. package/lib/types/vertexai/models/gemini.d.ts.map +0 -1
  390. package/lib/types/vertexai/models/imagen.d.ts.map +0 -1
  391. package/lib/types/vertexai/models/llama.d.ts.map +0 -1
  392. package/lib/types/vertexai/models.d.ts +0 -20
  393. package/lib/types/vertexai/models.d.ts.map +0 -1
  394. package/lib/types/watsonx/index.d.ts.map +0 -1
  395. package/lib/types/watsonx/interfaces.d.ts.map +0 -1
  396. package/lib/types/xai/index.d.ts.map +0 -1
  397. package/src/vertexai/embeddings/embeddings-image.ts +0 -52
  398. package/src/vertexai/embeddings/embeddings-text.ts +0 -54
  399. /package/lib/{esm/bedrock → bedrock}/payloads.js +0 -0
  400. /package/lib/{esm/mistral → mistral}/types.js +0 -0
  401. /package/lib/{esm/togetherai → togetherai}/interfaces.js +0 -0
  402. /package/lib/{types/watsonx → watsonx}/interfaces.d.ts +0 -0
  403. /package/lib/{esm/watsonx → watsonx}/interfaces.js +0 -0
@@ -0,0 +1,141 @@
1
+ import { helpers } from '@google-cloud/aiplatform';
2
+ import { buildEmbeddingsResult, LlumiverseError, } from '@llumiverse/core';
3
+ import { dataSourceToVertexSourceData } from './source-utils.js';
4
+ const DEFAULT_LEGACY_MULTIMODAL_MODEL = 'multimodalembedding@001';
5
+ async function dataSourceToImagePart(ds) {
6
+ const source = await dataSourceToVertexSourceData(ds);
7
+ if (source.gcsUri) {
8
+ return { gcsUri: source.gcsUri, mimeType: ds.mime_type };
9
+ }
10
+ if (!source.bytesBase64Encoded) {
11
+ throw new Error('Data source conversion produced neither GCS URI nor inline bytes');
12
+ }
13
+ return { bytesBase64Encoded: source.bytesBase64Encoded, mimeType: ds.mime_type };
14
+ }
15
+ async function dataSourceToVideoPart(ds, input) {
16
+ const source = await dataSourceToVertexSourceData(ds);
17
+ const segmentConfig = {};
18
+ if (input.start_sec !== undefined)
19
+ segmentConfig.startOffsetSec = input.start_sec;
20
+ if (input.start_sec !== undefined && input.length_sec !== undefined) {
21
+ segmentConfig.endOffsetSec = input.start_sec + input.length_sec;
22
+ }
23
+ if ('interval_sec' in input && input.interval_sec !== undefined) {
24
+ segmentConfig.intervalSec = input.interval_sec;
25
+ }
26
+ const config = Object.keys(segmentConfig).length > 0 ? segmentConfig : undefined;
27
+ if (source.gcsUri) {
28
+ return { gcsUri: source.gcsUri, videoSegmentConfig: config };
29
+ }
30
+ if (!source.bytesBase64Encoded) {
31
+ throw new Error('Data source conversion produced neither GCS URI nor inline bytes');
32
+ }
33
+ return { bytesBase64Encoded: source.bytesBase64Encoded, videoSegmentConfig: config };
34
+ }
35
+ async function buildLegacyInstance(input) {
36
+ switch (input.type) {
37
+ case 'text':
38
+ return { instance: { text: input.text }, modality: 'text' };
39
+ case 'image':
40
+ return { instance: { image: await dataSourceToImagePart(input.source) }, modality: 'image' };
41
+ case 'video':
42
+ return { instance: { video: await dataSourceToVideoPart(input.source, input) }, modality: 'video' };
43
+ case 'audio':
44
+ // multimodalembedding@001 has no dedicated audio modality; the API treats audio
45
+ // like video (uses videoEmbeddings in the response). Route through the video path
46
+ // and preserve the "audio" modality label so callers can identify the outputs.
47
+ return { instance: { video: await dataSourceToVideoPart(input.source, input) }, modality: 'audio' };
48
+ }
49
+ }
50
+ function hasPredictionEmbeddings(prediction) {
51
+ return Boolean(prediction.textEmbedding || prediction.imageEmbedding || prediction.videoEmbeddings?.length);
52
+ }
53
+ function decodePredictionValue(value, index, model) {
54
+ const decoded = helpers.fromValue(value);
55
+ if (!decoded || typeof decoded !== 'object') {
56
+ throw new Error(`Vertex predict returned an empty prediction for input ${index} (model ${model})`);
57
+ }
58
+ const prediction = decoded;
59
+ if (!hasPredictionEmbeddings(prediction)) {
60
+ throw new Error(`Vertex predict returned no embeddings for input ${index} (model ${model})`);
61
+ }
62
+ return prediction;
63
+ }
64
+ function predictionToOutputs(prediction, modality) {
65
+ if (modality === 'text' && prediction.textEmbedding) {
66
+ return [{ values: prediction.textEmbedding, modality: 'text' }];
67
+ }
68
+ if (modality === 'image' && prediction.imageEmbedding) {
69
+ return [{ values: prediction.imageEmbedding, modality: 'image' }];
70
+ }
71
+ if ((modality === 'video' || modality === 'audio') && prediction.videoEmbeddings?.length) {
72
+ return prediction.videoEmbeddings.map((segment) => ({
73
+ values: segment.embedding,
74
+ modality,
75
+ start_sec: segment.startOffsetSec,
76
+ end_sec: segment.endOffsetSec,
77
+ }));
78
+ }
79
+ // Fallback: return whatever is present
80
+ if (prediction.textEmbedding)
81
+ return [{ values: prediction.textEmbedding, modality: 'text' }];
82
+ if (prediction.imageEmbedding)
83
+ return [{ values: prediction.imageEmbedding, modality: 'image' }];
84
+ if (prediction.videoEmbeddings?.length) {
85
+ return prediction.videoEmbeddings.map((segment) => ({
86
+ values: segment.embedding,
87
+ modality: 'video',
88
+ start_sec: segment.startOffsetSec,
89
+ end_sec: segment.endOffsetSec,
90
+ }));
91
+ }
92
+ throw new Error('Vertex multimodal prediction returned no embedding values');
93
+ }
94
+ /**
95
+ * Embed via the legacy multimodalembedding@001 API using the typed
96
+ * @google-cloud/aiplatform PredictionServiceClient. Returns one result item
97
+ * per input; video/audio segments expand into multiple outputs.
98
+ */
99
+ export async function generateLegacyMultimodalEmbeddings(driver, options) {
100
+ const model = options.model ?? DEFAULT_LEGACY_MULTIMODAL_MODEL;
101
+ const built = await Promise.all(options.inputs.map(buildLegacyInstance));
102
+ const modalities = built.map((b) => b.modality);
103
+ const instances = built
104
+ .map((b) => helpers.toValue(b.instance))
105
+ .filter((v) => v != null);
106
+ if (instances.length !== built.length) {
107
+ throw new Error('Failed to encode one or more multimodal embedding instances');
108
+ }
109
+ const parameters = options.dimensions !== undefined ? helpers.toValue({ dimension: options.dimensions }) : undefined;
110
+ const endpoint = `projects/${driver.options.project}/locations/${driver.options.region}/publishers/google/models/${model}`;
111
+ const request = { endpoint, instances, parameters };
112
+ const client = await driver.getPredictionServiceClient();
113
+ try {
114
+ const [response] = await client.predict(request);
115
+ const predictions = response.predictions ?? [];
116
+ if (predictions.length !== built.length) {
117
+ throw new Error(`Vertex predict returned ${predictions.length} predictions for ${built.length} instances (model ${model})`);
118
+ }
119
+ const items = predictions.map((value, i) => {
120
+ const decoded = decodePredictionValue(value, i, model);
121
+ return { outputs: predictionToOutputs(decoded, modalities[i]) };
122
+ });
123
+ return buildEmbeddingsResult(model, items);
124
+ }
125
+ catch (error) {
126
+ if (LlumiverseError.isLlumiverseError(error))
127
+ throw error;
128
+ // @google-cloud/aiplatform uses gRPC, which surfaces errors with a numeric `code`
129
+ // field rather than `status`. Check both to avoid wrapping plain programming errors.
130
+ if (error instanceof Error &&
131
+ typeof error.status !== 'number' &&
132
+ typeof error.code !== 'number')
133
+ throw error;
134
+ throw driver.formatLlumiverseError(error, {
135
+ provider: 'vertexai',
136
+ model,
137
+ operation: 'execute',
138
+ });
139
+ }
140
+ }
141
+ //# sourceMappingURL=embed-legacy-multimodal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embed-legacy-multimodal.js","sourceRoot":"","sources":["../../../src/vertexai/embeddings/embed-legacy-multimodal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { type EmbeddingsOptions, type EmbeddingsResult } from '@llumiverse/core';
2
+ import type { VertexAIDriver } from '../index.js';
3
+ /**
4
+ * Generate Vertex AI embeddings via @google/genai's embedContent API.
5
+ * Text inputs are sent as Content with a text part; task_type and title
6
+ * are applied via the SDK config (or via prompt prefix for models that
7
+ * don't accept them as API parameters).
8
+ * Image/video/audio inputs are sent as inlineData (base64) or fileData (gs://).
9
+ * Inputs with the same config signature are batched in a single call;
10
+ * differing configs produce separate calls. Results preserve input order.
11
+ */
12
+ export declare function generateVertexAiEmbeddings(driver: VertexAIDriver, options: EmbeddingsOptions): Promise<EmbeddingsResult>;
13
+ //# sourceMappingURL=embed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../../../src/vertexai/embeddings/embed.ts"],"names":[],"mappings":"AAEA,OAAO,EAKH,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EAMxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA6GlD;;;;;;;;GAQG;AACH,wBAAsB,0BAA0B,CAC5C,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CAqE3B"}
@@ -0,0 +1,162 @@
1
+ import { VERTEX_DEFAULT_EMBEDDING_MODEL, VERTEX_MULTIMODAL_EMBEDDING_MODEL } from '@llumiverse/common';
2
+ import { buildEmbeddingsResult, LlumiverseError, normalizeEmbeddingsOptions, } from '@llumiverse/core';
3
+ import { generateLegacyMultimodalEmbeddings } from './embed-legacy-multimodal.js';
4
+ import { dataSourceToVertexSourceData } from './source-utils.js';
5
+ /**
6
+ * Models that do not accept task_type as an API parameter and instead expect
7
+ * the task to be conveyed by a documented prompt prefix.
8
+ */
9
+ const TASK_TYPE_PREFIX_MODELS = new Set(['gemini-embedding-2']);
10
+ /**
11
+ * Apply the documented prompt prefix for gemini-embedding-2 (prefix-only model).
12
+ *
13
+ * Prefixes per Google docs:
14
+ * query → "task: search result | query: {text}"
15
+ * document → "title: {title} | text: {text}" (uses "none" when title is absent)
16
+ */
17
+ function buildPrefixText(input) {
18
+ if (!input.task_type)
19
+ return input.text;
20
+ if (input.task_type === 'query') {
21
+ return `task: search result | query: ${input.text}`;
22
+ }
23
+ // document
24
+ const title = input.title ?? 'none';
25
+ return `title: ${title} | text: ${input.text}`;
26
+ }
27
+ function toGoogleTaskType(taskType) {
28
+ switch (taskType) {
29
+ case 'query':
30
+ return 'RETRIEVAL_QUERY';
31
+ case 'document':
32
+ return 'RETRIEVAL_DOCUMENT';
33
+ default:
34
+ return undefined;
35
+ }
36
+ }
37
+ /**
38
+ * Models only available in the Vertex "global" location.
39
+ */
40
+ const GLOBAL_ONLY_MODELS = new Set(['gemini-embedding-2']);
41
+ /**
42
+ * Models that only support one input content per embedContent request.
43
+ */
44
+ const NON_GROUPING_MODELS = new Set(['gemini-embedding-001', 'gemini-embedding-2']);
45
+ async function dataSourceToPart(ds) {
46
+ const source = await dataSourceToVertexSourceData(ds);
47
+ if (source.gcsUri) {
48
+ return { fileData: { fileUri: source.gcsUri, mimeType: ds.mime_type } };
49
+ }
50
+ if (!source.bytesBase64Encoded) {
51
+ throw new Error('Data source conversion produced neither GCS URI nor inline bytes');
52
+ }
53
+ return { inlineData: { data: source.bytesBase64Encoded, mimeType: ds.mime_type } };
54
+ }
55
+ function textConfig(input, viaPrefix) {
56
+ const config = {};
57
+ if (!viaPrefix && input.task_type)
58
+ config.taskType = toGoogleTaskType(input.task_type);
59
+ if (input.title)
60
+ config.title = input.title;
61
+ return config;
62
+ }
63
+ function configSignature(input, viaPrefix) {
64
+ if (input.type !== 'text')
65
+ return '{}';
66
+ return JSON.stringify(textConfig(input, viaPrefix));
67
+ }
68
+ async function inputToContent(input, viaPrefix) {
69
+ if (input.type === 'text') {
70
+ const text = viaPrefix ? buildPrefixText(input) : input.text;
71
+ return { role: 'user', parts: [{ text }] };
72
+ }
73
+ return { role: 'user', parts: [await dataSourceToPart(input.source)] };
74
+ }
75
+ function configForGroup(representative, viaPrefix, options) {
76
+ const config = {};
77
+ if (representative.type === 'text') {
78
+ Object.assign(config, textConfig(representative, viaPrefix));
79
+ }
80
+ if (options.dimensions !== undefined)
81
+ config.outputDimensionality = options.dimensions;
82
+ return Object.keys(config).length > 0 ? config : undefined;
83
+ }
84
+ function addInputTokenUsage(usage, tokenCount) {
85
+ usage.input_text_tokens = (usage.input_text_tokens ?? 0) + tokenCount;
86
+ usage.input_tokens = (usage.input_tokens ?? 0) + tokenCount;
87
+ }
88
+ /**
89
+ * Models that use the legacy multimodal predict API instead of embedContent.
90
+ */
91
+ const LEGACY_MULTIMODAL_MODELS = new Set([VERTEX_MULTIMODAL_EMBEDDING_MODEL]);
92
+ /**
93
+ * Generate Vertex AI embeddings via @google/genai's embedContent API.
94
+ * Text inputs are sent as Content with a text part; task_type and title
95
+ * are applied via the SDK config (or via prompt prefix for models that
96
+ * don't accept them as API parameters).
97
+ * Image/video/audio inputs are sent as inlineData (base64) or fileData (gs://).
98
+ * Inputs with the same config signature are batched in a single call;
99
+ * differing configs produce separate calls. Results preserve input order.
100
+ */
101
+ export async function generateVertexAiEmbeddings(driver, options) {
102
+ const normalized = normalizeEmbeddingsOptions(options);
103
+ const model = normalized.model ?? VERTEX_DEFAULT_EMBEDDING_MODEL;
104
+ if (LEGACY_MULTIMODAL_MODELS.has(model)) {
105
+ return generateLegacyMultimodalEmbeddings(driver, normalized);
106
+ }
107
+ const viaPrefix = TASK_TYPE_PREFIX_MODELS.has(model);
108
+ const region = GLOBAL_ONLY_MODELS.has(model) ? 'global' : undefined;
109
+ const disableGrouping = NON_GROUPING_MODELS.has(model);
110
+ const groups = new Map();
111
+ normalized.inputs.forEach((input, index) => {
112
+ const key = disableGrouping ? `single:${index}` : configSignature(input, viaPrefix);
113
+ const group = groups.get(key);
114
+ if (group) {
115
+ group.push({ index, input });
116
+ return;
117
+ }
118
+ groups.set(key, [{ index, input }]);
119
+ });
120
+ const ai = region ? driver.getGoogleGenAIClient(region) : driver.getGoogleGenAIClient();
121
+ const items = new Array(normalized.inputs.length);
122
+ const usage = {};
123
+ for (const group of groups.values()) {
124
+ const contents = await Promise.all(group.map((entry) => inputToContent(entry.input, viaPrefix)));
125
+ const config = configForGroup(group[0].input, viaPrefix, normalized);
126
+ try {
127
+ const response = await ai.models.embedContent({ model, contents, config });
128
+ const embeddings = response.embeddings ?? [];
129
+ if (embeddings.length !== group.length) {
130
+ throw new Error(`Vertex AI embedContent returned ${embeddings.length} embeddings for ${group.length} inputs (model ${model})`);
131
+ }
132
+ embeddings.forEach((embedding, i) => {
133
+ const entry = group[i];
134
+ const values = embedding.values;
135
+ if (!values) {
136
+ throw new Error(`Vertex AI embedContent returned an empty embedding for input ${entry.index} (model ${model})`);
137
+ }
138
+ const tokenCount = embedding.statistics?.tokenCount;
139
+ items[entry.index] = {
140
+ outputs: [{ values, modality: entry.input.type }],
141
+ input_tokens: tokenCount,
142
+ };
143
+ if (typeof tokenCount === 'number') {
144
+ addInputTokenUsage(usage, tokenCount);
145
+ }
146
+ });
147
+ }
148
+ catch (error) {
149
+ if (LlumiverseError.isLlumiverseError(error))
150
+ throw error;
151
+ if (error instanceof Error && typeof error.status !== 'number')
152
+ throw error;
153
+ throw driver.formatLlumiverseError(error, {
154
+ provider: 'vertexai',
155
+ model,
156
+ operation: 'execute',
157
+ });
158
+ }
159
+ }
160
+ return buildEmbeddingsResult(model, items, Object.keys(usage).length > 0 ? usage : undefined);
161
+ }
162
+ //# sourceMappingURL=embed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embed.js","sourceRoot":"","sources":["../../../src/vertexai/embeddings/embed.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type DataSource } from '@llumiverse/core';
2
+ interface VertexSourceData {
3
+ gcsUri?: string;
4
+ bytesBase64Encoded?: string;
5
+ }
6
+ export declare function isGcsUrl(url: string): boolean;
7
+ export declare function dataSourceToVertexSourceData(ds: DataSource): Promise<VertexSourceData>;
8
+ export {};
9
+ //# sourceMappingURL=source-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-utils.d.ts","sourceRoot":"","sources":["../../../src/vertexai/embeddings/source-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,UAAU,EAAsB,MAAM,kBAAkB,CAAC;AAEzF,UAAU,gBAAgB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAM7C;AAED,wBAAsB,4BAA4B,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAa5F"}
@@ -0,0 +1,18 @@
1
+ import { Base64DataSource, dataSourceToBase64 } from '@llumiverse/core';
2
+ export function isGcsUrl(url) {
3
+ return (url.startsWith('gs://') ||
4
+ url.startsWith('https://storage.googleapis.com/') ||
5
+ url.startsWith('https://storage.cloud.google.com/'));
6
+ }
7
+ export async function dataSourceToVertexSourceData(ds) {
8
+ const url = await ds.getURL().catch(() => undefined);
9
+ if (url && isGcsUrl(url)) {
10
+ return { gcsUri: url };
11
+ }
12
+ const bytesBase64Encoded = ds instanceof Base64DataSource ? ds.getBase64() : await dataSourceToBase64(ds);
13
+ if (!bytesBase64Encoded) {
14
+ throw new Error(`Data source conversion produced empty result — name=${ds.name}, mime=${ds.mime_type ?? 'unknown'}`);
15
+ }
16
+ return { bytesBase64Encoded };
17
+ }
18
+ //# sourceMappingURL=source-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-utils.js","sourceRoot":"","sources":["../../../src/vertexai/embeddings/source-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAmB,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAOzF,MAAM,UAAU,QAAQ,CAAC,GAAW;IAChC,OAAO,CACH,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;QACvB,GAAG,CAAC,UAAU,CAAC,iCAAiC,CAAC;QACjD,GAAG,CAAC,UAAU,CAAC,mCAAmC,CAAC,CACtD,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,EAAc;IAC7D,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACrD,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM,kBAAkB,GAAG,EAAE,YAAY,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAC1G,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACX,uDAAuD,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,SAAS,IAAI,SAAS,EAAE,CACtG,CAAC;IACN,CAAC;IACD,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAClC,CAAC"}
@@ -1,10 +1,14 @@
1
- import { AnthropicVertex } from "@anthropic-ai/vertex-sdk";
2
- import { PredictionServiceClient, v1beta1 } from "@google-cloud/aiplatform";
3
- import { Content, GoogleGenAI, Model } from "@google/genai";
4
- import { AIModel, AbstractDriver, Completion, CompletionChunkObject, DriverOptions, EmbeddingsOptions, EmbeddingsResult, ExecutionOptions, LlumiverseError, LlumiverseErrorContext, ModelSearchPayload, PromptSegment } from "@llumiverse/core";
5
- import { FetchClient } from "@vertesia/api-fetch-client";
6
- import { GoogleAuth, GoogleAuthOptions } from "google-auth-library";
7
- import { ImagenPrompt } from "./models/imagen.js";
1
+ import { AnthropicVertex } from '@anthropic-ai/vertex-sdk';
2
+ import { type Content, GoogleGenAI, type Model } from '@google/genai';
3
+ import { PredictionServiceClient, v1beta1 } from '@google-cloud/aiplatform';
4
+ import { type AIModel, type Completion, type CompletionChunkObject, type DriverOptions, type EmbeddingsOptions, type EmbeddingsResult, type ExecutionOptions, type HttpTimeoutOptions, type LlumiverseError, type LlumiverseErrorContext, type ModelSearchPayload, type PromptSegment } from '@llumiverse/core';
5
+ import { AbstractDriver } from '@llumiverse/core/driver';
6
+ import { FetchClient } from '@vertesia/api-fetch-client';
7
+ import { type AuthClient, GoogleAuth, type GoogleAuthOptions } from 'google-auth-library';
8
+ import { type ClaudePrompt } from '../shared/claude-messages.js';
9
+ import { type ImagenPrompt } from './models/imagen.js';
10
+ import type { LLamaPrompt } from './models/llama.js';
11
+ import { trimModelName } from './models.js';
8
12
  export interface VertexAIDriverOptions extends DriverOptions {
9
13
  project: string;
10
14
  region: string;
@@ -14,8 +18,8 @@ export interface GenerateContentPrompt {
14
18
  contents: Content[];
15
19
  system?: Content;
16
20
  }
17
- export type VertexAIPrompt = ImagenPrompt | GenerateContentPrompt;
18
- export declare function trimModelName(model: string): string;
21
+ export type VertexAIPrompt = ImagenPrompt | GenerateContentPrompt | ClaudePrompt | LLamaPrompt;
22
+ export { trimModelName };
19
23
  export declare class VertexAIDriver extends AbstractDriver<VertexAIDriverOptions, VertexAIPrompt> {
20
24
  static PROVIDER: string;
21
25
  provider: string;
@@ -25,27 +29,39 @@ export declare class VertexAIDriver extends AbstractDriver<VertexAIDriverOptions
25
29
  googleGenAI: GoogleGenAI | undefined;
26
30
  googleGenAIRegion: string | undefined;
27
31
  googleGenAIFlex: boolean | undefined;
28
- llamaClient: FetchClient & {
32
+ llamaClient: (FetchClient & {
29
33
  region?: string;
30
- } | undefined;
34
+ }) | undefined;
31
35
  modelGarden: v1beta1.ModelGardenServiceClient | undefined;
32
36
  imagenClient: PredictionServiceClient | undefined;
33
- googleAuth: GoogleAuth<any>;
37
+ predictionClient: PredictionServiceClient | undefined;
38
+ googleAuth: GoogleAuth<AuthClient>;
34
39
  private authClientPromise;
35
40
  constructor(options: VertexAIDriverOptions);
41
+ /**
42
+ * Cleanup Google Cloud clients when the driver is evicted from the cache.
43
+ * `super.destroy()` releases the HTTP agent socket pool created by
44
+ * {@link AbstractDriver.getHttpAgent} / {@link AbstractDriver.getDriverFetch}.
45
+ */
46
+ destroy(): void;
36
47
  private getAuthClient;
37
- getGoogleGenAIClient(region?: string, flex?: boolean): GoogleGenAI;
48
+ private getSdkRequestTimeoutMs;
49
+ private getGoogleGenAIHttpOptions;
50
+ private getAnthropicVertexClientOptions;
51
+ getGoogleGenAIClient(region?: string, flex?: boolean, httpTimeout?: HttpTimeoutOptions): GoogleGenAI;
38
52
  private buildGoogleGenAIClient;
39
- getFetchClient(): FetchClient;
53
+ getFetchClient(region?: string): FetchClient;
40
54
  getLLamaClient(region?: string): FetchClient;
41
- getAnthropicClient(region?: string): Promise<AnthropicVertex>;
55
+ getAnthropicClient(region?: string, httpTimeout?: HttpTimeoutOptions): Promise<AnthropicVertex>;
42
56
  getAIPlatformClient(): Promise<v1beta1.ModelServiceClient>;
43
57
  getModelGardenClient(): Promise<v1beta1.ModelGardenServiceClient>;
44
58
  getImagenClient(): Promise<PredictionServiceClient>;
59
+ getPredictionServiceClient(): Promise<PredictionServiceClient>;
45
60
  validateResult(result: Completion, options: ExecutionOptions): void;
46
61
  protected canStream(options: ExecutionOptions): Promise<boolean>;
47
62
  protected isImageModel(model: string): boolean;
48
63
  createPrompt(segments: PromptSegment[], options: ExecutionOptions): Promise<VertexAIPrompt>;
64
+ formatDebugPrompt(prompt: VertexAIPrompt): VertexAIPrompt;
49
65
  requestTextCompletion(prompt: VertexAIPrompt, options: ExecutionOptions): Promise<Completion>;
50
66
  requestTextCompletionStream(prompt: VertexAIPrompt, options: ExecutionOptions): Promise<AsyncIterable<CompletionChunkObject>>;
51
67
  /**
@@ -64,10 +80,6 @@ export declare class VertexAIDriver extends AbstractDriver<VertexAIDriverOptions
64
80
  listModels(_params?: ModelSearchPayload): Promise<AIModel<string>[]>;
65
81
  validateConnection(): Promise<boolean>;
66
82
  generateEmbeddings(options: EmbeddingsOptions): Promise<EmbeddingsResult>;
67
- /**
68
- * Cleanup Google Cloud clients when the driver is evicted from the cache.
69
- */
70
- destroy(): void;
71
83
  /**
72
84
  * Format VertexAI errors by routing to model-specific error handlers.
73
85
  * Each model definition (Gemini, Claude, Llama) can provide custom error parsing
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vertexai/index.ts"],"names":[],"mappings":"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"}