@llumiverse/drivers 1.3.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 (409) 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/{types/anthropic → anthropic}/index.d.ts +4 -2
  6. package/lib/anthropic/index.d.ts.map +1 -0
  7. package/lib/{esm/anthropic → anthropic}/index.js +19 -8
  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 +16 -5
  68. package/lib/openai/index.d.ts.map +1 -0
  69. package/lib/{esm/openai → openai}/index.js +242 -141
  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/{types/shared → shared}/claude-messages.d.ts +25 -1
  88. package/lib/shared/claude-messages.d.ts.map +1 -0
  89. package/lib/{esm/shared → shared}/claude-messages.js +212 -59
  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/{types/vertexai → vertexai}/models/claude.d.ts +4 -4
  143. package/lib/vertexai/models/claude.d.ts.map +1 -0
  144. package/lib/{esm/vertexai → vertexai}/models/claude.js +17 -20
  145. package/lib/vertexai/models/claude.js.map +1 -0
  146. package/lib/{types/vertexai → vertexai}/models/gemini.d.ts +28 -4
  147. package/lib/vertexai/models/gemini.d.ts.map +1 -0
  148. package/lib/{esm/vertexai → vertexai}/models/gemini.js +238 -116
  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 +87 -36
  173. package/src/adobe/firefly.ts +60 -43
  174. package/src/anthropic/index.ts +37 -20
  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 -16
  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 +378 -248
  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 +303 -97
  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 +331 -244
  219. package/src/vertexai/models/claude-error-handling.test.ts +83 -36
  220. package/src/vertexai/models/claude-streaming-spacing.test.ts +82 -75
  221. package/src/vertexai/models/claude.ts +55 -40
  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 +349 -172
  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/anthropic/index.js +0 -64
  235. package/lib/cjs/anthropic/index.js.map +0 -1
  236. package/lib/cjs/azure/azure_foundry.js +0 -432
  237. package/lib/cjs/azure/azure_foundry.js.map +0 -1
  238. package/lib/cjs/bedrock/converse.js +0 -359
  239. package/lib/cjs/bedrock/converse.js.map +0 -1
  240. package/lib/cjs/bedrock/index.js +0 -1508
  241. package/lib/cjs/bedrock/index.js.map +0 -1
  242. package/lib/cjs/bedrock/nova-image-payload.js +0 -207
  243. package/lib/cjs/bedrock/nova-image-payload.js.map +0 -1
  244. package/lib/cjs/bedrock/payloads.js +0 -3
  245. package/lib/cjs/bedrock/s3.js +0 -107
  246. package/lib/cjs/bedrock/s3.js.map +0 -1
  247. package/lib/cjs/bedrock/twelvelabs.js +0 -87
  248. package/lib/cjs/bedrock/twelvelabs.js.map +0 -1
  249. package/lib/cjs/groq/index.js +0 -328
  250. package/lib/cjs/groq/index.js.map +0 -1
  251. package/lib/cjs/huggingface_ie.js +0 -201
  252. package/lib/cjs/huggingface_ie.js.map +0 -1
  253. package/lib/cjs/index.js +0 -32
  254. package/lib/cjs/index.js.map +0 -1
  255. package/lib/cjs/mistral/index.js +0 -176
  256. package/lib/cjs/mistral/index.js.map +0 -1
  257. package/lib/cjs/mistral/types.js +0 -83
  258. package/lib/cjs/mistral/types.js.map +0 -1
  259. package/lib/cjs/openai/azure_openai.js +0 -72
  260. package/lib/cjs/openai/azure_openai.js.map +0 -1
  261. package/lib/cjs/openai/index.js +0 -1135
  262. package/lib/cjs/openai/index.js.map +0 -1
  263. package/lib/cjs/openai/openai.js +0 -21
  264. package/lib/cjs/openai/openai.js.map +0 -1
  265. package/lib/cjs/openai/openai_compatible.js +0 -63
  266. package/lib/cjs/openai/openai_compatible.js.map +0 -1
  267. package/lib/cjs/openai/openai_format.js +0 -131
  268. package/lib/cjs/openai/openai_format.js.map +0 -1
  269. package/lib/cjs/package.json +0 -3
  270. package/lib/cjs/replicate.js +0 -275
  271. package/lib/cjs/replicate.js.map +0 -1
  272. package/lib/cjs/shared/claude-messages.js +0 -737
  273. package/lib/cjs/shared/claude-messages.js.map +0 -1
  274. package/lib/cjs/shared/claude-thinking.js +0 -60
  275. package/lib/cjs/shared/claude-thinking.js.map +0 -1
  276. package/lib/cjs/test-driver/TestErrorCompletionStream.js +0 -20
  277. package/lib/cjs/test-driver/TestErrorCompletionStream.js.map +0 -1
  278. package/lib/cjs/test-driver/TestValidationErrorCompletionStream.js +0 -24
  279. package/lib/cjs/test-driver/TestValidationErrorCompletionStream.js.map +0 -1
  280. package/lib/cjs/test-driver/index.js +0 -109
  281. package/lib/cjs/test-driver/index.js.map +0 -1
  282. package/lib/cjs/test-driver/utils.js +0 -30
  283. package/lib/cjs/test-driver/utils.js.map +0 -1
  284. package/lib/cjs/togetherai/index.js +0 -126
  285. package/lib/cjs/togetherai/index.js.map +0 -1
  286. package/lib/cjs/togetherai/interfaces.js +0 -3
  287. package/lib/cjs/togetherai/interfaces.js.map +0 -1
  288. package/lib/cjs/vertexai/debug.js +0 -12
  289. package/lib/cjs/vertexai/debug.js.map +0 -1
  290. package/lib/cjs/vertexai/embeddings/embeddings-image.js +0 -27
  291. package/lib/cjs/vertexai/embeddings/embeddings-image.js.map +0 -1
  292. package/lib/cjs/vertexai/embeddings/embeddings-text.js +0 -23
  293. package/lib/cjs/vertexai/embeddings/embeddings-text.js.map +0 -1
  294. package/lib/cjs/vertexai/index.js +0 -644
  295. package/lib/cjs/vertexai/index.js.map +0 -1
  296. package/lib/cjs/vertexai/models/claude.js +0 -72
  297. package/lib/cjs/vertexai/models/claude.js.map +0 -1
  298. package/lib/cjs/vertexai/models/gemini.js +0 -864
  299. package/lib/cjs/vertexai/models/gemini.js.map +0 -1
  300. package/lib/cjs/vertexai/models/imagen.js +0 -303
  301. package/lib/cjs/vertexai/models/imagen.js.map +0 -1
  302. package/lib/cjs/vertexai/models/llama.js +0 -183
  303. package/lib/cjs/vertexai/models/llama.js.map +0 -1
  304. package/lib/cjs/vertexai/models.js +0 -35
  305. package/lib/cjs/vertexai/models.js.map +0 -1
  306. package/lib/cjs/watsonx/index.js +0 -161
  307. package/lib/cjs/watsonx/index.js.map +0 -1
  308. package/lib/cjs/watsonx/interfaces.js +0 -3
  309. package/lib/cjs/xai/index.js +0 -65
  310. package/lib/cjs/xai/index.js.map +0 -1
  311. package/lib/esm/adobe/firefly.js +0 -116
  312. package/lib/esm/adobe/firefly.js.map +0 -1
  313. package/lib/esm/anthropic/index.js.map +0 -1
  314. package/lib/esm/azure/azure_foundry.js.map +0 -1
  315. package/lib/esm/bedrock/converse.js.map +0 -1
  316. package/lib/esm/bedrock/index.js.map +0 -1
  317. package/lib/esm/bedrock/nova-image-payload.js.map +0 -1
  318. package/lib/esm/bedrock/payloads.js.map +0 -1
  319. package/lib/esm/bedrock/s3.js.map +0 -1
  320. package/lib/esm/bedrock/twelvelabs.js.map +0 -1
  321. package/lib/esm/groq/index.js.map +0 -1
  322. package/lib/esm/huggingface_ie.js.map +0 -1
  323. package/lib/esm/index.js +0 -16
  324. package/lib/esm/index.js.map +0 -1
  325. package/lib/esm/mistral/index.js.map +0 -1
  326. package/lib/esm/mistral/types.js.map +0 -1
  327. package/lib/esm/openai/azure_openai.js.map +0 -1
  328. package/lib/esm/openai/index.js.map +0 -1
  329. package/lib/esm/openai/openai.js +0 -14
  330. package/lib/esm/openai/openai.js.map +0 -1
  331. package/lib/esm/openai/openai_compatible.js.map +0 -1
  332. package/lib/esm/openai/openai_format.js.map +0 -1
  333. package/lib/esm/replicate.js.map +0 -1
  334. package/lib/esm/shared/claude-messages.js.map +0 -1
  335. package/lib/esm/shared/claude-thinking.js.map +0 -1
  336. package/lib/esm/test-driver/TestErrorCompletionStream.js +0 -16
  337. package/lib/esm/test-driver/TestErrorCompletionStream.js.map +0 -1
  338. package/lib/esm/test-driver/TestValidationErrorCompletionStream.js.map +0 -1
  339. package/lib/esm/test-driver/index.js.map +0 -1
  340. package/lib/esm/test-driver/utils.js.map +0 -1
  341. package/lib/esm/togetherai/index.js +0 -122
  342. package/lib/esm/togetherai/index.js.map +0 -1
  343. package/lib/esm/togetherai/interfaces.js.map +0 -1
  344. package/lib/esm/vertexai/debug.js.map +0 -1
  345. package/lib/esm/vertexai/embeddings/embeddings-image.js +0 -24
  346. package/lib/esm/vertexai/embeddings/embeddings-image.js.map +0 -1
  347. package/lib/esm/vertexai/embeddings/embeddings-text.js +0 -20
  348. package/lib/esm/vertexai/embeddings/embeddings-text.js.map +0 -1
  349. package/lib/esm/vertexai/index.js.map +0 -1
  350. package/lib/esm/vertexai/models/claude.js.map +0 -1
  351. package/lib/esm/vertexai/models/gemini.js.map +0 -1
  352. package/lib/esm/vertexai/models/imagen.js.map +0 -1
  353. package/lib/esm/vertexai/models/llama.js.map +0 -1
  354. package/lib/esm/vertexai/models.js.map +0 -1
  355. package/lib/esm/watsonx/index.js.map +0 -1
  356. package/lib/esm/xai/index.js.map +0 -1
  357. package/lib/types/adobe/firefly.d.ts.map +0 -1
  358. package/lib/types/anthropic/index.d.ts.map +0 -1
  359. package/lib/types/azure/azure_foundry.d.ts.map +0 -1
  360. package/lib/types/bedrock/converse.d.ts.map +0 -1
  361. package/lib/types/bedrock/index.d.ts.map +0 -1
  362. package/lib/types/bedrock/nova-image-payload.d.ts.map +0 -1
  363. package/lib/types/bedrock/payloads.d.ts.map +0 -1
  364. package/lib/types/bedrock/s3.d.ts.map +0 -1
  365. package/lib/types/bedrock/twelvelabs.d.ts.map +0 -1
  366. package/lib/types/groq/index.d.ts.map +0 -1
  367. package/lib/types/huggingface_ie.d.ts.map +0 -1
  368. package/lib/types/index.d.ts +0 -16
  369. package/lib/types/index.d.ts.map +0 -1
  370. package/lib/types/mistral/index.d.ts.map +0 -1
  371. package/lib/types/mistral/types.d.ts.map +0 -1
  372. package/lib/types/openai/azure_openai.d.ts.map +0 -1
  373. package/lib/types/openai/index.d.ts.map +0 -1
  374. package/lib/types/openai/openai.d.ts.map +0 -1
  375. package/lib/types/openai/openai_compatible.d.ts.map +0 -1
  376. package/lib/types/openai/openai_format.d.ts.map +0 -1
  377. package/lib/types/replicate.d.ts.map +0 -1
  378. package/lib/types/shared/claude-messages.d.ts.map +0 -1
  379. package/lib/types/shared/claude-thinking.d.ts.map +0 -1
  380. package/lib/types/test-driver/TestErrorCompletionStream.d.ts.map +0 -1
  381. package/lib/types/test-driver/TestValidationErrorCompletionStream.d.ts.map +0 -1
  382. package/lib/types/test-driver/index.d.ts.map +0 -1
  383. package/lib/types/test-driver/utils.d.ts.map +0 -1
  384. package/lib/types/togetherai/index.d.ts +0 -23
  385. package/lib/types/togetherai/index.d.ts.map +0 -1
  386. package/lib/types/togetherai/interfaces.d.ts.map +0 -1
  387. package/lib/types/vertexai/debug.d.ts +0 -2
  388. package/lib/types/vertexai/debug.d.ts.map +0 -1
  389. package/lib/types/vertexai/embeddings/embeddings-image.d.ts +0 -11
  390. package/lib/types/vertexai/embeddings/embeddings-image.d.ts.map +0 -1
  391. package/lib/types/vertexai/embeddings/embeddings-text.d.ts +0 -10
  392. package/lib/types/vertexai/embeddings/embeddings-text.d.ts.map +0 -1
  393. package/lib/types/vertexai/index.d.ts.map +0 -1
  394. package/lib/types/vertexai/models/claude.d.ts.map +0 -1
  395. package/lib/types/vertexai/models/gemini.d.ts.map +0 -1
  396. package/lib/types/vertexai/models/imagen.d.ts.map +0 -1
  397. package/lib/types/vertexai/models/llama.d.ts.map +0 -1
  398. package/lib/types/vertexai/models.d.ts +0 -20
  399. package/lib/types/vertexai/models.d.ts.map +0 -1
  400. package/lib/types/watsonx/index.d.ts.map +0 -1
  401. package/lib/types/watsonx/interfaces.d.ts.map +0 -1
  402. package/lib/types/xai/index.d.ts.map +0 -1
  403. package/src/vertexai/embeddings/embeddings-image.ts +0 -52
  404. package/src/vertexai/embeddings/embeddings-text.ts +0 -54
  405. /package/lib/{esm/bedrock → bedrock}/payloads.js +0 -0
  406. /package/lib/{esm/mistral → mistral}/types.js +0 -0
  407. /package/lib/{esm/togetherai → togetherai}/interfaces.js +0 -0
  408. /package/lib/{types/watsonx → watsonx}/interfaces.d.ts +0 -0
  409. /package/lib/{esm/watsonx → watsonx}/interfaces.js +0 -0
@@ -13,9 +13,18 @@ import {
13
13
  } from '@anthropic-ai/sdk/error';
14
14
  import { LlumiverseError } from '@llumiverse/core';
15
15
  import { beforeEach, describe, expect, it } from 'vitest';
16
- import { VertexAIDriver } from '../index.js';
16
+ import { exposePrivate } from '../../../test/__helpers__/test-utils.js';
17
+ import type { VertexAIDriver } from '../index.js';
17
18
  import { ClaudeModelDefinition } from './claude.js';
18
19
 
20
+ type ClaudeModelInternals = {
21
+ isClaudeErrorRetryable: (
22
+ error: unknown,
23
+ httpStatusCode: number | undefined,
24
+ errorType: string | undefined,
25
+ ) => boolean | undefined;
26
+ };
27
+
19
28
  describe('ClaudeModelDefinition Error Handling', () => {
20
29
  let modelDef: ClaudeModelDefinition;
21
30
  let driver: VertexAIDriver;
@@ -24,8 +33,8 @@ describe('ClaudeModelDefinition Error Handling', () => {
24
33
  modelDef = new ClaudeModelDefinition('claude-haiku-4-5');
25
34
  driver = {
26
35
  provider: 'vertexai',
27
- logger: { warn: () => { }, info: () => { }, error: () => { } },
28
- } as any;
36
+ logger: { warn: () => {}, info: () => {}, error: () => {} },
37
+ } as unknown as VertexAIDriver;
29
38
  });
30
39
 
31
40
  describe('formatLlumiverseError', () => {
@@ -39,11 +48,11 @@ describe('ClaudeModelDefinition Error Handling', () => {
39
48
  type: 'error',
40
49
  error: {
41
50
  type: 'invalid_request_error',
42
- message: 'temperature: range: 0..1'
43
- }
51
+ message: 'temperature: range: 0..1',
52
+ },
44
53
  },
45
54
  '400 {"type":"error","error":{"type":"invalid_request_error","message":"temperature: range: 0..1"},"request_id":"req_test_123"}',
46
- headers
55
+ headers,
47
56
  );
48
57
 
49
58
  const error = modelDef.formatLlumiverseError(driver, anthropicError, {
@@ -67,7 +76,7 @@ describe('ClaudeModelDefinition Error Handling', () => {
67
76
  429,
68
77
  { type: 'error', error: { type: 'rate_limit_error', message: 'Rate limit exceeded' } },
69
78
  'Rate limit exceeded',
70
- new Headers()
79
+ new Headers(),
71
80
  );
72
81
 
73
82
  const error = modelDef.formatLlumiverseError(driver, anthropicError, {
@@ -86,7 +95,7 @@ describe('ClaudeModelDefinition Error Handling', () => {
86
95
  500,
87
96
  { type: 'error', error: { type: 'internal_error', message: 'Internal server error' } },
88
97
  'Internal server error',
89
- new Headers()
98
+ new Headers(),
90
99
  );
91
100
 
92
101
  const error = modelDef.formatLlumiverseError(driver, anthropicError, {
@@ -105,7 +114,7 @@ describe('ClaudeModelDefinition Error Handling', () => {
105
114
  401,
106
115
  { type: 'error', error: { type: 'authentication_error', message: 'Invalid API key' } },
107
116
  'Invalid API key',
108
- new Headers()
117
+ new Headers(),
109
118
  );
110
119
 
111
120
  const error = modelDef.formatLlumiverseError(driver, anthropicError, {
@@ -124,7 +133,7 @@ describe('ClaudeModelDefinition Error Handling', () => {
124
133
  403,
125
134
  { type: 'error', error: { type: 'permission_error', message: 'Insufficient permissions' } },
126
135
  'Insufficient permissions',
127
- new Headers()
136
+ new Headers(),
128
137
  );
129
138
 
130
139
  const error = modelDef.formatLlumiverseError(driver, anthropicError, {
@@ -143,7 +152,7 @@ describe('ClaudeModelDefinition Error Handling', () => {
143
152
  404,
144
153
  { type: 'error', error: { type: 'not_found_error', message: 'Model not found' } },
145
154
  'Model not found',
146
- new Headers()
155
+ new Headers(),
147
156
  );
148
157
 
149
158
  const error = modelDef.formatLlumiverseError(driver, anthropicError, {
@@ -162,7 +171,7 @@ describe('ClaudeModelDefinition Error Handling', () => {
162
171
  409,
163
172
  { type: 'error', error: { type: 'conflict_error', message: 'Resource conflict' } },
164
173
  'Resource conflict',
165
- new Headers()
174
+ new Headers(),
166
175
  );
167
176
 
168
177
  const error = modelDef.formatLlumiverseError(driver, anthropicError, {
@@ -181,7 +190,7 @@ describe('ClaudeModelDefinition Error Handling', () => {
181
190
  422,
182
191
  { type: 'error', error: { type: 'validation_error', message: 'Validation failed' } },
183
192
  'Validation failed',
184
- new Headers()
193
+ new Headers(),
185
194
  );
186
195
 
187
196
  const error = modelDef.formatLlumiverseError(driver, anthropicError, {
@@ -230,11 +239,11 @@ describe('ClaudeModelDefinition Error Handling', () => {
230
239
  type: 'error',
231
240
  error: {
232
241
  type: 'invalid_request_error',
233
- message: 'Missing required field'
234
- }
242
+ message: 'Missing required field',
243
+ },
235
244
  },
236
245
  'Missing required field',
237
- new Headers()
246
+ new Headers(),
238
247
  );
239
248
 
240
249
  const error = modelDef.formatLlumiverseError(driver, anthropicError, {
@@ -255,7 +264,7 @@ describe('ClaudeModelDefinition Error Handling', () => {
255
264
  400,
256
265
  { type: 'error', error: { type: 'invalid_request_error', message: 'Bad request' } },
257
266
  'Bad request',
258
- headers
267
+ headers,
259
268
  );
260
269
 
261
270
  const error = modelDef.formatLlumiverseError(driver, anthropicError, {
@@ -284,7 +293,7 @@ describe('ClaudeModelDefinition Error Handling', () => {
284
293
  400,
285
294
  { type: 'error', error: { type: 'invalid_request_error', message: 'Test error' } },
286
295
  'Test error',
287
- new Headers()
296
+ new Headers(),
288
297
  );
289
298
 
290
299
  const error = modelDef.formatLlumiverseError(driver, anthropicError, {
@@ -307,7 +316,11 @@ describe('ClaudeModelDefinition Error Handling', () => {
307
316
  ];
308
317
 
309
318
  for (const error of retryableErrors) {
310
- const result = (modelDef as any).isClaudeErrorRetryable(error, error.status, undefined);
319
+ const result = exposePrivate<ClaudeModelInternals>(modelDef).isClaudeErrorRetryable(
320
+ error,
321
+ error.status,
322
+ undefined,
323
+ );
311
324
  expect(result, `${error.constructor.name} should be retryable`).toBe(true);
312
325
  }
313
326
  });
@@ -322,54 +335,88 @@ describe('ClaudeModelDefinition Error Handling', () => {
322
335
  ];
323
336
 
324
337
  for (const error of nonRetryableErrors) {
325
- const result = (modelDef as any).isClaudeErrorRetryable(error, error.status, undefined);
338
+ const result = exposePrivate<ClaudeModelInternals>(modelDef).isClaudeErrorRetryable(
339
+ error,
340
+ error.status,
341
+ undefined,
342
+ );
326
343
  expect(result, `${error.constructor.name} should not be retryable`).toBe(false);
327
344
  }
328
345
  });
329
346
 
330
347
  it('should use HTTP status codes when available', () => {
331
348
  const apiError = new APIError(429, {}, 'Too many requests', new Headers());
332
- expect((modelDef as any).isClaudeErrorRetryable(apiError, 429, undefined)).toBe(true);
349
+ expect(exposePrivate<ClaudeModelInternals>(modelDef).isClaudeErrorRetryable(apiError, 429, undefined)).toBe(
350
+ true,
351
+ );
333
352
 
334
353
  const apiError2 = new APIError(408, {}, 'Request timeout', new Headers());
335
- expect((modelDef as any).isClaudeErrorRetryable(apiError2, 408, undefined)).toBe(true);
354
+ expect(
355
+ exposePrivate<ClaudeModelInternals>(modelDef).isClaudeErrorRetryable(apiError2, 408, undefined),
356
+ ).toBe(true);
336
357
 
337
358
  const apiError3 = new APIError(529, {}, 'Overloaded', new Headers());
338
- expect((modelDef as any).isClaudeErrorRetryable(apiError3, 529, undefined)).toBe(true);
359
+ expect(
360
+ exposePrivate<ClaudeModelInternals>(modelDef).isClaudeErrorRetryable(apiError3, 529, undefined),
361
+ ).toBe(true);
339
362
 
340
363
  const apiError4 = new APIError(503, {}, 'Service unavailable', new Headers());
341
- expect((modelDef as any).isClaudeErrorRetryable(apiError4, 503, undefined)).toBe(true);
364
+ expect(
365
+ exposePrivate<ClaudeModelInternals>(modelDef).isClaudeErrorRetryable(apiError4, 503, undefined),
366
+ ).toBe(true);
342
367
  });
343
368
 
344
369
  it('should classify 4xx as non-retryable', () => {
345
370
  const apiError = new APIError(400, {}, 'Bad request', new Headers());
346
- expect((modelDef as any).isClaudeErrorRetryable(apiError, 400, undefined)).toBe(false);
371
+ expect(exposePrivate<ClaudeModelInternals>(modelDef).isClaudeErrorRetryable(apiError, 400, undefined)).toBe(
372
+ false,
373
+ );
347
374
 
348
375
  const apiError2 = new APIError(403, {}, 'Forbidden', new Headers());
349
- expect((modelDef as any).isClaudeErrorRetryable(apiError2, 403, undefined)).toBe(false);
376
+ expect(
377
+ exposePrivate<ClaudeModelInternals>(modelDef).isClaudeErrorRetryable(apiError2, 403, undefined),
378
+ ).toBe(false);
350
379
  });
351
380
 
352
381
  it('should classify 5xx as retryable', () => {
353
382
  const apiError = new APIError(500, {}, 'Internal error', new Headers());
354
- expect((modelDef as any).isClaudeErrorRetryable(apiError, 500, undefined)).toBe(true);
383
+ expect(exposePrivate<ClaudeModelInternals>(modelDef).isClaudeErrorRetryable(apiError, 500, undefined)).toBe(
384
+ true,
385
+ );
355
386
 
356
387
  const apiError2 = new APIError(502, {}, 'Bad gateway', new Headers());
357
- expect((modelDef as any).isClaudeErrorRetryable(apiError2, 502, undefined)).toBe(true);
388
+ expect(
389
+ exposePrivate<ClaudeModelInternals>(modelDef).isClaudeErrorRetryable(apiError2, 502, undefined),
390
+ ).toBe(true);
358
391
  });
359
392
 
360
393
  it('should classify invalid_request_error as non-retryable', () => {
361
394
  const apiError = new APIError(400, {}, 'Invalid request', new Headers());
362
- expect((modelDef as any).isClaudeErrorRetryable(apiError, 400, 'invalid_request_error')).toBe(false);
395
+ expect(
396
+ exposePrivate<ClaudeModelInternals>(modelDef).isClaudeErrorRetryable(
397
+ apiError,
398
+ 400,
399
+ 'invalid_request_error',
400
+ ),
401
+ ).toBe(false);
363
402
  });
364
403
 
365
404
  it('should classify APIConnectionError (non-timeout) as retryable', () => {
366
405
  const connectionError = new APIConnectionError({ message: 'Network failure' });
367
- expect((modelDef as any).isClaudeErrorRetryable(connectionError, undefined, undefined)).toBe(true);
406
+ expect(
407
+ exposePrivate<ClaudeModelInternals>(modelDef).isClaudeErrorRetryable(
408
+ connectionError,
409
+ undefined,
410
+ undefined,
411
+ ),
412
+ ).toBe(true);
368
413
  });
369
414
 
370
415
  it('should return undefined for unknown errors', () => {
371
- const apiError = new APIError(undefined, {}, 'Unknown error', undefined as any);
372
- expect((modelDef as any).isClaudeErrorRetryable(apiError, undefined, undefined)).toBeUndefined();
416
+ const apiError = new APIError(undefined, {}, 'Unknown error', undefined);
417
+ expect(
418
+ exposePrivate<ClaudeModelInternals>(modelDef).isClaudeErrorRetryable(apiError, undefined, undefined),
419
+ ).toBeUndefined();
373
420
  });
374
421
  });
375
422
 
@@ -384,11 +431,11 @@ describe('ClaudeModelDefinition Error Handling', () => {
384
431
  type: 'error',
385
432
  error: {
386
433
  type: 'rate_limit_error',
387
- message: 'Rate limit exceeded'
388
- }
434
+ message: 'Rate limit exceeded',
435
+ },
389
436
  },
390
437
  'Rate limit exceeded',
391
- headers
438
+ headers,
392
439
  );
393
440
 
394
441
  const error = modelDef.formatLlumiverseError(driver, anthropicError, {
@@ -414,7 +461,7 @@ describe('ClaudeModelDefinition Error Handling', () => {
414
461
  400,
415
462
  { type: 'error', error: { type: 'invalid_request_error', message: 'Invalid parameter' } },
416
463
  'Invalid parameter',
417
- new Headers()
464
+ new Headers(),
418
465
  );
419
466
 
420
467
  const error = modelDef.formatLlumiverseError(driver, anthropicError, {
@@ -1,9 +1,10 @@
1
- import { ExecutionOptions } from '@llumiverse/core';
1
+ import type { CompletionChunkObject, ExecutionOptions } from '@llumiverse/core';
2
2
  import { describe, expect, it } from 'vitest';
3
- import { VertexAIDriver } from '../index.js';
3
+ import type { ClaudePrompt } from '../../shared/claude-messages.js';
4
+ import type { VertexAIDriver } from '../index.js';
4
5
  import { ClaudeModelDefinition } from './claude.js';
5
6
 
6
- function createAsyncStream(events: any[]): AsyncIterable<any> {
7
+ function createAsyncStream(events: unknown[]): AsyncIterable<unknown> {
7
8
  return (async function* () {
8
9
  for (const event of events) {
9
10
  yield event;
@@ -11,8 +12,8 @@ function createAsyncStream(events: any[]): AsyncIterable<any> {
11
12
  })();
12
13
  }
13
14
 
14
- async function collectChunks(stream: AsyncIterable<any>) {
15
- const chunks: any[] = [];
15
+ async function collectChunks(stream: AsyncIterable<CompletionChunkObject>): Promise<CompletionChunkObject[]> {
16
+ const chunks: CompletionChunkObject[] = [];
16
17
  for await (const chunk of stream) {
17
18
  chunks.push(chunk);
18
19
  }
@@ -23,37 +24,38 @@ describe('ClaudeModelDefinition streaming spacing', () => {
23
24
  it('does not leak deferred spacing when tool use follows thinking', async () => {
24
25
  const modelDef = new ClaudeModelDefinition('claude-sonnet-4-5');
25
26
  const driver = {
26
- logger: { warn: () => { }, info: () => { }, error: () => { } },
27
+ logger: { warn: () => {}, info: () => {}, error: () => {} },
27
28
  getAnthropicClient: async () => ({
28
29
  messages: {
29
- stream: async () => createAsyncStream([
30
- {
31
- type: 'content_block_delta',
32
- delta: { type: 'thinking_delta', thinking: 'Thinking...' },
33
- },
34
- {
35
- type: 'content_block_delta',
36
- delta: { type: 'signature_delta' },
37
- },
38
- {
39
- type: 'content_block_start',
40
- content_block: { type: 'tool_use', id: 'tool-1', name: 'get_weather' },
41
- },
42
- {
43
- type: 'content_block_delta',
44
- delta: { type: 'input_json_delta', partial_json: '{"city":"Paris"}' },
45
- },
46
- {
47
- type: 'content_block_stop',
48
- },
49
- ]),
30
+ stream: async () =>
31
+ createAsyncStream([
32
+ {
33
+ type: 'content_block_delta',
34
+ delta: { type: 'thinking_delta', thinking: 'Thinking...' },
35
+ },
36
+ {
37
+ type: 'content_block_delta',
38
+ delta: { type: 'signature_delta' },
39
+ },
40
+ {
41
+ type: 'content_block_start',
42
+ content_block: { type: 'tool_use', id: 'tool-1', name: 'get_weather' },
43
+ },
44
+ {
45
+ type: 'content_block_delta',
46
+ delta: { type: 'input_json_delta', partial_json: '{"city":"Paris"}' },
47
+ },
48
+ {
49
+ type: 'content_block_stop',
50
+ },
51
+ ]),
50
52
  },
51
53
  }),
52
54
  } as unknown as VertexAIDriver;
53
55
 
54
56
  const prompt = {
55
57
  messages: [{ role: 'user', content: [{ type: 'text', text: 'Weather?' }] }],
56
- } as any;
58
+ } as unknown as ClaudePrompt;
57
59
 
58
60
  const options = {
59
61
  model: 'publishers/anthropic/models/claude-sonnet-4-5',
@@ -66,8 +68,11 @@ describe('ClaudeModelDefinition streaming spacing', () => {
66
68
  const stream = await modelDef.requestTextCompletionStream(driver, prompt, options);
67
69
  const chunks = await collectChunks(stream);
68
70
 
69
- const textOutput = chunks.flatMap(chunk => chunk.result ?? []).map(part => part.value).join('');
70
- const toolChunks = chunks.flatMap(chunk => chunk.tool_use ?? []);
71
+ const textOutput = chunks
72
+ .flatMap((chunk) => chunk.result ?? [])
73
+ .map((part) => part.value)
74
+ .join('');
75
+ const toolChunks = chunks.flatMap((chunk) => chunk.tool_use ?? []);
71
76
 
72
77
  expect(textOutput).toBe('Thinking...');
73
78
  expect(toolChunks).toHaveLength(2);
@@ -78,30 +83,31 @@ describe('ClaudeModelDefinition streaming spacing', () => {
78
83
  it('flushes deferred spacing into the first text delta after thinking', async () => {
79
84
  const modelDef = new ClaudeModelDefinition('claude-sonnet-4-5');
80
85
  const driver = {
81
- logger: { warn: () => { }, info: () => { }, error: () => { } },
86
+ logger: { warn: () => {}, info: () => {}, error: () => {} },
82
87
  getAnthropicClient: async () => ({
83
88
  messages: {
84
- stream: async () => createAsyncStream([
85
- {
86
- type: 'content_block_delta',
87
- delta: { type: 'thinking_delta', thinking: 'Thinking...' },
88
- },
89
- {
90
- type: 'content_block_delta',
91
- delta: { type: 'signature_delta' },
92
- },
93
- {
94
- type: 'content_block_delta',
95
- delta: { type: 'text_delta', text: 'Answer' },
96
- },
97
- ]),
89
+ stream: async () =>
90
+ createAsyncStream([
91
+ {
92
+ type: 'content_block_delta',
93
+ delta: { type: 'thinking_delta', thinking: 'Thinking...' },
94
+ },
95
+ {
96
+ type: 'content_block_delta',
97
+ delta: { type: 'signature_delta' },
98
+ },
99
+ {
100
+ type: 'content_block_delta',
101
+ delta: { type: 'text_delta', text: 'Answer' },
102
+ },
103
+ ]),
98
104
  },
99
105
  }),
100
106
  } as unknown as VertexAIDriver;
101
107
 
102
108
  const prompt = {
103
109
  messages: [{ role: 'user', content: [{ type: 'text', text: 'Question?' }] }],
104
- } as any;
110
+ } as unknown as ClaudePrompt;
105
111
 
106
112
  const options = {
107
113
  model: 'publishers/anthropic/models/claude-sonnet-4-5',
@@ -114,48 +120,49 @@ describe('ClaudeModelDefinition streaming spacing', () => {
114
120
  const stream = await modelDef.requestTextCompletionStream(driver, prompt, options);
115
121
  const chunks = await collectChunks(stream);
116
122
 
117
- const textParts = chunks.flatMap(chunk => chunk.result ?? []).map(part => part.value);
123
+ const textParts = chunks.flatMap((chunk) => chunk.result ?? []).map((part) => part.value);
118
124
  expect(textParts).toEqual(['Thinking...', '\n\nAnswer']);
119
125
  });
120
126
 
121
127
  it('does not reintroduce deferred spacing when text arrives after a tool call', async () => {
122
128
  const modelDef = new ClaudeModelDefinition('claude-sonnet-4-5');
123
129
  const driver = {
124
- logger: { warn: () => { }, info: () => { }, error: () => { } },
130
+ logger: { warn: () => {}, info: () => {}, error: () => {} },
125
131
  getAnthropicClient: async () => ({
126
132
  messages: {
127
- stream: async () => createAsyncStream([
128
- {
129
- type: 'content_block_delta',
130
- delta: { type: 'thinking_delta', thinking: 'Thinking...' },
131
- },
132
- {
133
- type: 'content_block_delta',
134
- delta: { type: 'signature_delta' },
135
- },
136
- {
137
- type: 'content_block_start',
138
- content_block: { type: 'tool_use', id: 'tool-1', name: 'get_weather' },
139
- },
140
- {
141
- type: 'content_block_delta',
142
- delta: { type: 'input_json_delta', partial_json: '{"city":"Paris"}' },
143
- },
144
- {
145
- type: 'content_block_stop',
146
- },
147
- {
148
- type: 'content_block_delta',
149
- delta: { type: 'text_delta', text: 'Answer after tool' },
150
- },
151
- ]),
133
+ stream: async () =>
134
+ createAsyncStream([
135
+ {
136
+ type: 'content_block_delta',
137
+ delta: { type: 'thinking_delta', thinking: 'Thinking...' },
138
+ },
139
+ {
140
+ type: 'content_block_delta',
141
+ delta: { type: 'signature_delta' },
142
+ },
143
+ {
144
+ type: 'content_block_start',
145
+ content_block: { type: 'tool_use', id: 'tool-1', name: 'get_weather' },
146
+ },
147
+ {
148
+ type: 'content_block_delta',
149
+ delta: { type: 'input_json_delta', partial_json: '{"city":"Paris"}' },
150
+ },
151
+ {
152
+ type: 'content_block_stop',
153
+ },
154
+ {
155
+ type: 'content_block_delta',
156
+ delta: { type: 'text_delta', text: 'Answer after tool' },
157
+ },
158
+ ]),
152
159
  },
153
160
  }),
154
161
  } as unknown as VertexAIDriver;
155
162
 
156
163
  const prompt = {
157
164
  messages: [{ role: 'user', content: [{ type: 'text', text: 'Weather?' }] }],
158
- } as any;
165
+ } as unknown as ClaudePrompt;
159
166
 
160
167
  const options = {
161
168
  model: 'publishers/anthropic/models/claude-sonnet-4-5',
@@ -168,7 +175,7 @@ describe('ClaudeModelDefinition streaming spacing', () => {
168
175
  const stream = await modelDef.requestTextCompletionStream(driver, prompt, options);
169
176
  const chunks = await collectChunks(stream);
170
177
 
171
- const textParts = chunks.flatMap(chunk => chunk.result ?? []).map(part => part.value);
178
+ const textParts = chunks.flatMap((chunk) => chunk.result ?? []).map((part) => part.value);
172
179
  expect(textParts).toEqual(['Thinking...', 'Answer after tool']);
173
180
  });
174
181
  });