@llumiverse/drivers 1.0.0-dev.20260202.145450Z → 1.0.0

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 (240) hide show
  1. package/lib/cjs/adobe/firefly.js +120 -0
  2. package/lib/cjs/adobe/firefly.js.map +1 -0
  3. package/lib/cjs/azure/azure_foundry.js +432 -0
  4. package/lib/cjs/azure/azure_foundry.js.map +1 -0
  5. package/lib/cjs/bedrock/converse.js +359 -0
  6. package/lib/cjs/bedrock/converse.js.map +1 -0
  7. package/lib/cjs/bedrock/index.js +1441 -0
  8. package/lib/cjs/bedrock/index.js.map +1 -0
  9. package/lib/cjs/bedrock/nova-image-payload.js +207 -0
  10. package/lib/cjs/bedrock/nova-image-payload.js.map +1 -0
  11. package/lib/cjs/bedrock/payloads.js +3 -0
  12. package/lib/cjs/bedrock/payloads.js.map +1 -0
  13. package/lib/cjs/bedrock/s3.js +107 -0
  14. package/lib/cjs/bedrock/s3.js.map +1 -0
  15. package/lib/cjs/bedrock/twelvelabs.js +87 -0
  16. package/lib/cjs/bedrock/twelvelabs.js.map +1 -0
  17. package/lib/cjs/groq/index.js +326 -0
  18. package/lib/cjs/groq/index.js.map +1 -0
  19. package/lib/cjs/huggingface_ie.js +201 -0
  20. package/lib/cjs/huggingface_ie.js.map +1 -0
  21. package/lib/cjs/index.js +31 -0
  22. package/lib/cjs/index.js.map +1 -0
  23. package/lib/cjs/mistral/index.js +176 -0
  24. package/lib/cjs/mistral/index.js.map +1 -0
  25. package/lib/cjs/mistral/types.js +83 -0
  26. package/lib/cjs/mistral/types.js.map +1 -0
  27. package/lib/cjs/openai/azure_openai.js +72 -0
  28. package/lib/cjs/openai/azure_openai.js.map +1 -0
  29. package/lib/cjs/openai/index.js +1100 -0
  30. package/lib/cjs/openai/index.js.map +1 -0
  31. package/lib/cjs/openai/openai.js +21 -0
  32. package/lib/cjs/openai/openai.js.map +1 -0
  33. package/lib/cjs/openai/openai_compatible.js +63 -0
  34. package/lib/cjs/openai/openai_compatible.js.map +1 -0
  35. package/lib/cjs/openai/openai_format.js +131 -0
  36. package/lib/cjs/openai/openai_format.js.map +1 -0
  37. package/lib/cjs/package.json +3 -0
  38. package/lib/cjs/replicate.js +275 -0
  39. package/lib/cjs/replicate.js.map +1 -0
  40. package/lib/cjs/test-driver/TestErrorCompletionStream.js +20 -0
  41. package/lib/cjs/test-driver/TestErrorCompletionStream.js.map +1 -0
  42. package/lib/cjs/test-driver/TestValidationErrorCompletionStream.js +24 -0
  43. package/lib/cjs/test-driver/TestValidationErrorCompletionStream.js.map +1 -0
  44. package/lib/cjs/test-driver/index.js +109 -0
  45. package/lib/cjs/test-driver/index.js.map +1 -0
  46. package/lib/cjs/test-driver/utils.js +30 -0
  47. package/lib/cjs/test-driver/utils.js.map +1 -0
  48. package/lib/cjs/togetherai/index.js +126 -0
  49. package/lib/cjs/togetherai/index.js.map +1 -0
  50. package/lib/cjs/togetherai/interfaces.js +3 -0
  51. package/lib/cjs/togetherai/interfaces.js.map +1 -0
  52. package/lib/cjs/vertexai/debug.js +12 -0
  53. package/lib/cjs/vertexai/debug.js.map +1 -0
  54. package/lib/cjs/vertexai/embeddings/embeddings-image.js +27 -0
  55. package/lib/cjs/vertexai/embeddings/embeddings-image.js.map +1 -0
  56. package/lib/cjs/vertexai/embeddings/embeddings-text.js +23 -0
  57. package/lib/cjs/vertexai/embeddings/embeddings-text.js.map +1 -0
  58. package/lib/cjs/vertexai/index.js +635 -0
  59. package/lib/cjs/vertexai/index.js.map +1 -0
  60. package/lib/cjs/vertexai/models/claude.js +842 -0
  61. package/lib/cjs/vertexai/models/claude.js.map +1 -0
  62. package/lib/cjs/vertexai/models/gemini.js +1110 -0
  63. package/lib/cjs/vertexai/models/gemini.js.map +1 -0
  64. package/lib/cjs/vertexai/models/imagen.js +303 -0
  65. package/lib/cjs/vertexai/models/imagen.js.map +1 -0
  66. package/lib/cjs/vertexai/models/llama.js +183 -0
  67. package/lib/cjs/vertexai/models/llama.js.map +1 -0
  68. package/lib/cjs/vertexai/models.js +35 -0
  69. package/lib/cjs/vertexai/models.js.map +1 -0
  70. package/lib/cjs/watsonx/index.js +161 -0
  71. package/lib/cjs/watsonx/index.js.map +1 -0
  72. package/lib/cjs/watsonx/interfaces.js +3 -0
  73. package/lib/cjs/watsonx/interfaces.js.map +1 -0
  74. package/lib/cjs/xai/index.js +65 -0
  75. package/lib/cjs/xai/index.js.map +1 -0
  76. package/lib/esm/adobe/firefly.js +116 -0
  77. package/lib/esm/adobe/firefly.js.map +1 -0
  78. package/lib/esm/azure/azure_foundry.js +426 -0
  79. package/lib/esm/azure/azure_foundry.js.map +1 -0
  80. package/lib/esm/bedrock/converse.js +352 -0
  81. package/lib/esm/bedrock/converse.js.map +1 -0
  82. package/lib/esm/bedrock/index.js +1434 -0
  83. package/lib/esm/bedrock/index.js.map +1 -0
  84. package/lib/esm/bedrock/nova-image-payload.js +203 -0
  85. package/lib/esm/bedrock/nova-image-payload.js.map +1 -0
  86. package/lib/esm/bedrock/payloads.js +2 -0
  87. package/lib/esm/bedrock/payloads.js.map +1 -0
  88. package/lib/esm/bedrock/s3.js +99 -0
  89. package/lib/esm/bedrock/s3.js.map +1 -0
  90. package/lib/esm/bedrock/twelvelabs.js +84 -0
  91. package/lib/esm/bedrock/twelvelabs.js.map +1 -0
  92. package/lib/esm/groq/index.js +319 -0
  93. package/lib/esm/groq/index.js.map +1 -0
  94. package/lib/esm/huggingface_ie.js +197 -0
  95. package/lib/esm/huggingface_ie.js.map +1 -0
  96. package/lib/esm/index.js +15 -0
  97. package/lib/esm/index.js.map +1 -0
  98. package/lib/esm/mistral/index.js +172 -0
  99. package/lib/esm/mistral/index.js.map +1 -0
  100. package/lib/esm/mistral/types.js +80 -0
  101. package/lib/esm/mistral/types.js.map +1 -0
  102. package/lib/esm/openai/azure_openai.js +68 -0
  103. package/lib/esm/openai/azure_openai.js.map +1 -0
  104. package/lib/esm/openai/index.js +1093 -0
  105. package/lib/esm/openai/index.js.map +1 -0
  106. package/lib/esm/openai/openai.js +14 -0
  107. package/lib/esm/openai/openai.js.map +1 -0
  108. package/lib/esm/openai/openai_compatible.js +56 -0
  109. package/lib/esm/openai/openai_compatible.js.map +1 -0
  110. package/lib/esm/openai/openai_format.js +127 -0
  111. package/lib/esm/openai/openai_format.js.map +1 -0
  112. package/lib/esm/replicate.js +268 -0
  113. package/lib/esm/replicate.js.map +1 -0
  114. package/lib/esm/test-driver/TestErrorCompletionStream.js +16 -0
  115. package/lib/esm/test-driver/TestErrorCompletionStream.js.map +1 -0
  116. package/lib/esm/test-driver/TestValidationErrorCompletionStream.js +20 -0
  117. package/lib/esm/test-driver/TestValidationErrorCompletionStream.js.map +1 -0
  118. package/lib/esm/test-driver/index.js +91 -0
  119. package/lib/esm/test-driver/index.js.map +1 -0
  120. package/lib/esm/test-driver/utils.js +25 -0
  121. package/lib/esm/test-driver/utils.js.map +1 -0
  122. package/lib/esm/togetherai/index.js +122 -0
  123. package/lib/esm/togetherai/index.js.map +1 -0
  124. package/lib/esm/togetherai/interfaces.js +2 -0
  125. package/lib/esm/togetherai/interfaces.js.map +1 -0
  126. package/lib/esm/vertexai/debug.js +6 -0
  127. package/lib/esm/vertexai/debug.js.map +1 -0
  128. package/lib/esm/vertexai/embeddings/embeddings-image.js +24 -0
  129. package/lib/esm/vertexai/embeddings/embeddings-image.js.map +1 -0
  130. package/lib/esm/vertexai/embeddings/embeddings-text.js +20 -0
  131. package/lib/esm/vertexai/embeddings/embeddings-text.js.map +1 -0
  132. package/lib/esm/vertexai/index.js +630 -0
  133. package/lib/esm/vertexai/index.js.map +1 -0
  134. package/lib/esm/vertexai/models/claude.js +833 -0
  135. package/lib/esm/vertexai/models/claude.js.map +1 -0
  136. package/lib/esm/vertexai/models/gemini.js +1104 -0
  137. package/lib/esm/vertexai/models/gemini.js.map +1 -0
  138. package/lib/esm/vertexai/models/imagen.js +299 -0
  139. package/lib/esm/vertexai/models/imagen.js.map +1 -0
  140. package/lib/esm/vertexai/models/llama.js +179 -0
  141. package/lib/esm/vertexai/models/llama.js.map +1 -0
  142. package/lib/esm/vertexai/models.js +32 -0
  143. package/lib/esm/vertexai/models.js.map +1 -0
  144. package/lib/esm/watsonx/index.js +157 -0
  145. package/lib/esm/watsonx/index.js.map +1 -0
  146. package/lib/esm/watsonx/interfaces.js +2 -0
  147. package/lib/esm/watsonx/interfaces.js.map +1 -0
  148. package/lib/esm/xai/index.js +58 -0
  149. package/lib/esm/xai/index.js.map +1 -0
  150. package/lib/types/adobe/firefly.d.ts +30 -0
  151. package/lib/types/adobe/firefly.d.ts.map +1 -0
  152. package/lib/types/azure/azure_foundry.d.ts +52 -0
  153. package/lib/types/azure/azure_foundry.d.ts.map +1 -0
  154. package/lib/types/bedrock/converse.d.ts +8 -0
  155. package/lib/types/bedrock/converse.d.ts.map +1 -0
  156. package/lib/types/bedrock/index.d.ts +135 -0
  157. package/lib/types/bedrock/index.d.ts.map +1 -0
  158. package/lib/types/bedrock/nova-image-payload.d.ts +74 -0
  159. package/lib/types/bedrock/nova-image-payload.d.ts.map +1 -0
  160. package/lib/types/bedrock/payloads.d.ts +12 -0
  161. package/lib/types/bedrock/payloads.d.ts.map +1 -0
  162. package/lib/types/bedrock/s3.d.ts +23 -0
  163. package/lib/types/bedrock/s3.d.ts.map +1 -0
  164. package/lib/types/bedrock/twelvelabs.d.ts +50 -0
  165. package/lib/types/bedrock/twelvelabs.d.ts.map +1 -0
  166. package/lib/types/groq/index.d.ts +27 -0
  167. package/lib/types/groq/index.d.ts.map +1 -0
  168. package/lib/types/huggingface_ie.d.ts +35 -0
  169. package/lib/types/huggingface_ie.d.ts.map +1 -0
  170. package/lib/types/index.d.ts +15 -0
  171. package/lib/types/index.d.ts.map +1 -0
  172. package/lib/types/mistral/index.d.ts +25 -0
  173. package/lib/types/mistral/index.d.ts.map +1 -0
  174. package/lib/types/mistral/types.d.ts +127 -0
  175. package/lib/types/mistral/types.d.ts.map +1 -0
  176. package/lib/types/openai/azure_openai.d.ts +25 -0
  177. package/lib/types/openai/azure_openai.d.ts.map +1 -0
  178. package/lib/types/openai/index.d.ts +126 -0
  179. package/lib/types/openai/index.d.ts.map +1 -0
  180. package/lib/types/openai/openai.d.ts +15 -0
  181. package/lib/types/openai/openai.d.ts.map +1 -0
  182. package/lib/types/openai/openai_compatible.d.ts +31 -0
  183. package/lib/types/openai/openai_compatible.d.ts.map +1 -0
  184. package/lib/types/openai/openai_format.d.ts +21 -0
  185. package/lib/types/openai/openai_format.d.ts.map +1 -0
  186. package/lib/types/replicate.d.ts +48 -0
  187. package/lib/types/replicate.d.ts.map +1 -0
  188. package/lib/types/test-driver/TestErrorCompletionStream.d.ts +9 -0
  189. package/lib/types/test-driver/TestErrorCompletionStream.d.ts.map +1 -0
  190. package/lib/types/test-driver/TestValidationErrorCompletionStream.d.ts +9 -0
  191. package/lib/types/test-driver/TestValidationErrorCompletionStream.d.ts.map +1 -0
  192. package/lib/types/test-driver/index.d.ts +24 -0
  193. package/lib/types/test-driver/index.d.ts.map +1 -0
  194. package/lib/types/test-driver/utils.d.ts +5 -0
  195. package/lib/types/test-driver/utils.d.ts.map +1 -0
  196. package/lib/types/togetherai/index.d.ts +23 -0
  197. package/lib/types/togetherai/index.d.ts.map +1 -0
  198. package/lib/types/togetherai/interfaces.d.ts +96 -0
  199. package/lib/types/togetherai/interfaces.d.ts.map +1 -0
  200. package/lib/types/vertexai/debug.d.ts +2 -0
  201. package/lib/types/vertexai/debug.d.ts.map +1 -0
  202. package/lib/types/vertexai/embeddings/embeddings-image.d.ts +11 -0
  203. package/lib/types/vertexai/embeddings/embeddings-image.d.ts.map +1 -0
  204. package/lib/types/vertexai/embeddings/embeddings-text.d.ts +10 -0
  205. package/lib/types/vertexai/embeddings/embeddings-text.d.ts.map +1 -0
  206. package/lib/types/vertexai/index.d.ts +79 -0
  207. package/lib/types/vertexai/index.d.ts.map +1 -0
  208. package/lib/types/vertexai/models/claude.d.ts +103 -0
  209. package/lib/types/vertexai/models/claude.d.ts.map +1 -0
  210. package/lib/types/vertexai/models/gemini.d.ts +78 -0
  211. package/lib/types/vertexai/models/gemini.d.ts.map +1 -0
  212. package/lib/types/vertexai/models/imagen.d.ts +75 -0
  213. package/lib/types/vertexai/models/imagen.d.ts.map +1 -0
  214. package/lib/types/vertexai/models/llama.d.ts +20 -0
  215. package/lib/types/vertexai/models/llama.d.ts.map +1 -0
  216. package/lib/types/vertexai/models.d.ts +20 -0
  217. package/lib/types/vertexai/models.d.ts.map +1 -0
  218. package/lib/types/watsonx/index.d.ts +27 -0
  219. package/lib/types/watsonx/index.d.ts.map +1 -0
  220. package/lib/types/watsonx/interfaces.d.ts +65 -0
  221. package/lib/types/watsonx/interfaces.d.ts.map +1 -0
  222. package/lib/types/xai/index.d.ts +18 -0
  223. package/lib/types/xai/index.d.ts.map +1 -0
  224. package/package.json +18 -18
  225. package/src/bedrock/converse.ts +85 -10
  226. package/src/bedrock/error-handling.test.ts +352 -0
  227. package/src/bedrock/index.ts +293 -16
  228. package/src/groq/index.ts +9 -4
  229. package/src/mistral/index.ts +25 -22
  230. package/src/mistral/types.ts +0 -5
  231. package/src/openai/error-handling.test.ts +567 -0
  232. package/src/openai/index.ts +513 -33
  233. package/src/openai/openai_compatible.ts +7 -0
  234. package/src/openai/openai_format.ts +1 -1
  235. package/src/vertexai/index.ts +61 -13
  236. package/src/vertexai/models/claude-error-handling.test.ts +432 -0
  237. package/src/vertexai/models/claude.ts +287 -10
  238. package/src/vertexai/models/gemini-error-handling.test.ts +353 -0
  239. package/src/vertexai/models/gemini.ts +329 -52
  240. package/src/vertexai/models.ts +7 -2
@@ -0,0 +1,635 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VertexAIDriver = void 0;
4
+ exports.trimModelName = trimModelName;
5
+ const vertex_sdk_1 = require("@anthropic-ai/vertex-sdk");
6
+ const aiplatform_1 = require("@google-cloud/aiplatform");
7
+ const genai_1 = require("@google/genai");
8
+ const core_1 = require("@llumiverse/core");
9
+ const api_fetch_client_1 = require("@vertesia/api-fetch-client");
10
+ const google_auth_library_1 = require("google-auth-library");
11
+ const embeddings_image_js_1 = require("./embeddings/embeddings-image.js");
12
+ const embeddings_text_js_1 = require("./embeddings/embeddings-text.js");
13
+ const models_js_1 = require("./models.js");
14
+ const claude_js_1 = require("./models/claude.js");
15
+ const imagen_js_1 = require("./models/imagen.js");
16
+ function trimModelName(model) {
17
+ const i = model.lastIndexOf("@");
18
+ return i > -1 ? model.substring(0, i) : model;
19
+ }
20
+ class VertexAIDriver extends core_1.AbstractDriver {
21
+ static PROVIDER = "vertexai";
22
+ provider = VertexAIDriver.PROVIDER;
23
+ aiplatform;
24
+ anthropicClient;
25
+ fetchClient;
26
+ googleGenAI;
27
+ llamaClient;
28
+ modelGarden;
29
+ imagenClient;
30
+ googleAuth;
31
+ authClientPromise;
32
+ constructor(options) {
33
+ super(options);
34
+ this.aiplatform = undefined;
35
+ this.anthropicClient = undefined;
36
+ this.fetchClient = undefined;
37
+ this.googleGenAI = undefined;
38
+ this.modelGarden = undefined;
39
+ this.llamaClient = undefined;
40
+ this.imagenClient = undefined;
41
+ this.googleAuth = new google_auth_library_1.GoogleAuth(options.googleAuthOptions);
42
+ this.authClientPromise = undefined;
43
+ }
44
+ async getAuthClient() {
45
+ if (!this.authClientPromise) {
46
+ this.authClientPromise = this.googleAuth.getClient();
47
+ }
48
+ return this.authClientPromise;
49
+ }
50
+ getGoogleGenAIClient(region = this.options.region) {
51
+ //Lazy initialization
52
+ if (region !== this.options.region) {
53
+ //Get one off client for different region
54
+ return new genai_1.GoogleGenAI({
55
+ project: this.options.project,
56
+ location: region,
57
+ vertexai: true,
58
+ googleAuthOptions: this.options.googleAuthOptions || {
59
+ scopes: ["https://www.googleapis.com/auth/cloud-platform"],
60
+ }
61
+ });
62
+ }
63
+ if (!this.googleGenAI) {
64
+ this.googleGenAI = new genai_1.GoogleGenAI({
65
+ project: this.options.project,
66
+ location: region,
67
+ vertexai: true,
68
+ googleAuthOptions: this.options.googleAuthOptions || {
69
+ scopes: ["https://www.googleapis.com/auth/cloud-platform"],
70
+ }
71
+ });
72
+ }
73
+ return this.googleGenAI;
74
+ }
75
+ getFetchClient() {
76
+ //Lazy initialization
77
+ if (!this.fetchClient) {
78
+ this.fetchClient = createFetchClient({
79
+ region: this.options.region,
80
+ project: this.options.project,
81
+ }).withAuthCallback(async () => {
82
+ const token = await this.googleAuth.getAccessToken();
83
+ return `Bearer ${token}`;
84
+ });
85
+ }
86
+ return this.fetchClient;
87
+ }
88
+ getLLamaClient(region = "us-central1") {
89
+ //Lazy initialization
90
+ if (!this.llamaClient || this.llamaClient["region"] !== region) {
91
+ this.llamaClient = createFetchClient({
92
+ region: region,
93
+ project: this.options.project,
94
+ apiVersion: "v1beta1",
95
+ }).withAuthCallback(async () => {
96
+ const token = await this.googleAuth.getAccessToken();
97
+ return `Bearer ${token}`;
98
+ });
99
+ // Store the region for potential client reuse
100
+ this.llamaClient["region"] = region;
101
+ }
102
+ return this.llamaClient;
103
+ }
104
+ async getAnthropicClient(region = this.options.region) {
105
+ // Extract region prefix and map if it exists in ANTHROPIC_REGIONS, otherwise use as-is
106
+ const getRegionPrefix = (r) => r.split('-')[0];
107
+ const regionPrefix = getRegionPrefix(region);
108
+ const mappedRegion = claude_js_1.ANTHROPIC_REGIONS[regionPrefix] || region;
109
+ const defaultRegionPrefix = getRegionPrefix(this.options.region);
110
+ const defaultMappedRegion = claude_js_1.ANTHROPIC_REGIONS[defaultRegionPrefix] || this.options.region;
111
+ // Get auth client to avoid version mismatch with GoogleAuth generic types
112
+ const authClient = await this.getAuthClient();
113
+ // If mapped region is different from default mapped region, create one-off client
114
+ if (mappedRegion !== defaultMappedRegion) {
115
+ return new vertex_sdk_1.AnthropicVertex({
116
+ timeout: 20 * 60 * 10000, // Set to 20 minutes, 10 minute default, setting this disables long request error: https://github.com/anthropics/anthropic-sdk-typescript?#long-requests
117
+ region: mappedRegion,
118
+ projectId: this.options.project,
119
+ authClient: authClient,
120
+ });
121
+ }
122
+ //Lazy initialization for default region
123
+ if (!this.anthropicClient) {
124
+ this.anthropicClient = new vertex_sdk_1.AnthropicVertex({
125
+ timeout: 20 * 60 * 10000, // Set to 20 minutes, 10 minute default, setting this disables long request error: https://github.com/anthropics/anthropic-sdk-typescript?#long-requests
126
+ region: mappedRegion,
127
+ projectId: this.options.project,
128
+ authClient: authClient,
129
+ });
130
+ }
131
+ return this.anthropicClient;
132
+ }
133
+ async getAIPlatformClient() {
134
+ //Lazy initialization
135
+ if (!this.aiplatform) {
136
+ const authClient = await this.getAuthClient();
137
+ this.aiplatform = new aiplatform_1.v1beta1.ModelServiceClient({
138
+ projectId: this.options.project,
139
+ apiEndpoint: `${this.options.region}-${API_BASE_PATH}`,
140
+ authClient,
141
+ });
142
+ }
143
+ return this.aiplatform;
144
+ }
145
+ async getModelGardenClient() {
146
+ //Lazy initialization
147
+ if (!this.modelGarden) {
148
+ const authClient = await this.getAuthClient();
149
+ this.modelGarden = new aiplatform_1.v1beta1.ModelGardenServiceClient({
150
+ projectId: this.options.project,
151
+ apiEndpoint: `${this.options.region}-${API_BASE_PATH}`,
152
+ authClient,
153
+ });
154
+ }
155
+ return this.modelGarden;
156
+ }
157
+ async getImagenClient() {
158
+ //Lazy initialization
159
+ if (!this.imagenClient) {
160
+ // TODO: make location configurable, fixed to us-central1 for now
161
+ const authClient = await this.getAuthClient();
162
+ this.imagenClient = new aiplatform_1.PredictionServiceClient({
163
+ projectId: this.options.project,
164
+ apiEndpoint: `us-central1-${API_BASE_PATH}`,
165
+ authClient,
166
+ });
167
+ }
168
+ return this.imagenClient;
169
+ }
170
+ validateResult(result, options) {
171
+ // Optionally preprocess the result before validation
172
+ const modelDef = (0, models_js_1.getModelDefinition)(options.model);
173
+ if (typeof modelDef.preValidationProcessing === "function") {
174
+ const processed = modelDef.preValidationProcessing(result, options);
175
+ result = processed.result;
176
+ options = processed.options;
177
+ }
178
+ super.validateResult(result, options);
179
+ }
180
+ canStream(options) {
181
+ if (this.isImageModel(options.model)) {
182
+ return Promise.resolve(false);
183
+ }
184
+ return Promise.resolve((0, models_js_1.getModelDefinition)(options.model).model.can_stream === true);
185
+ }
186
+ isImageModel(model) {
187
+ return model.includes("imagen");
188
+ }
189
+ createPrompt(segments, options) {
190
+ if (this.isImageModel(options.model)) {
191
+ return new imagen_js_1.ImagenModelDefinition(options.model).createPrompt(this, segments, options);
192
+ }
193
+ return (0, models_js_1.getModelDefinition)(options.model).createPrompt(this, segments, options);
194
+ }
195
+ async requestTextCompletion(prompt, options) {
196
+ return (0, models_js_1.getModelDefinition)(options.model).requestTextCompletion(this, prompt, options);
197
+ }
198
+ async requestTextCompletionStream(prompt, options) {
199
+ return (0, models_js_1.getModelDefinition)(options.model).requestTextCompletionStream(this, prompt, options);
200
+ }
201
+ /**
202
+ * Build conversation context after streaming completion.
203
+ * Reconstructs the assistant message from accumulated results and applies stripping.
204
+ * Handles both Gemini (Content[]) and Claude (ClaudePrompt) formats.
205
+ */
206
+ buildStreamingConversation(prompt, result, toolUse, options) {
207
+ // Handle Claude-style prompts (has 'messages' array)
208
+ if ('messages' in prompt && Array.isArray(prompt.messages)) {
209
+ return this.buildClaudeStreamingConversation(prompt, result, toolUse, options);
210
+ }
211
+ // Only handle Gemini-style prompts with contents array
212
+ if (!('contents' in prompt) || !Array.isArray(prompt.contents)) {
213
+ return undefined;
214
+ }
215
+ const completionResults = result;
216
+ // Convert accumulated results to text content for assistant message
217
+ const textContent = completionResults
218
+ .map(r => {
219
+ switch (r.type) {
220
+ case 'text':
221
+ return r.value;
222
+ case 'json':
223
+ return typeof r.value === 'string' ? r.value : JSON.stringify(r.value);
224
+ case 'image':
225
+ // Skip images in conversation - they're in the result
226
+ return '';
227
+ default:
228
+ return String(r.value || '');
229
+ }
230
+ })
231
+ .join('');
232
+ // Build parts array for assistant message
233
+ const parts = [];
234
+ if (textContent) {
235
+ parts.push({ text: textContent });
236
+ }
237
+ // Add function calls if present (Gemini format)
238
+ if (toolUse && toolUse.length > 0) {
239
+ for (const tool of toolUse) {
240
+ const functionCallPart = {
241
+ functionCall: {
242
+ name: tool.tool_name,
243
+ args: tool.tool_input,
244
+ }
245
+ };
246
+ // Include thought_signature for Gemini thinking models (2.5+/3.0+)
247
+ // This must be preserved in the conversation for subsequent API calls
248
+ if (tool.thought_signature) {
249
+ functionCallPart.thoughtSignature = tool.thought_signature;
250
+ }
251
+ parts.push(functionCallPart);
252
+ }
253
+ }
254
+ // prompt.contents already includes the conversation history
255
+ // (merged in requestTextCompletionStream via updateConversation),
256
+ // so we use it directly — do NOT prepend options.conversation again.
257
+ let conversation = [
258
+ ...prompt.contents,
259
+ ];
260
+ // Only add assistant message if there's actual content
261
+ // (Empty text parts can cause API errors)
262
+ if (parts.length > 0) {
263
+ conversation.push({
264
+ role: 'model',
265
+ parts: parts
266
+ });
267
+ }
268
+ // Increment turn counter
269
+ conversation = (0, core_1.incrementConversationTurn)(conversation);
270
+ // Apply stripping based on options
271
+ const currentTurn = (0, core_1.getConversationMeta)(conversation).turnNumber;
272
+ const stripOptions = {
273
+ keepForTurns: options.stripImagesAfterTurns ?? Infinity,
274
+ currentTurn,
275
+ textMaxTokens: options.stripTextMaxTokens
276
+ };
277
+ let processedConversation = (0, core_1.stripBase64ImagesFromConversation)(conversation, stripOptions);
278
+ processedConversation = (0, core_1.truncateLargeTextInConversation)(processedConversation, stripOptions);
279
+ processedConversation = (0, core_1.stripHeartbeatsFromConversation)(processedConversation, {
280
+ keepForTurns: options.stripHeartbeatsAfterTurns ?? 1,
281
+ currentTurn,
282
+ });
283
+ // Preserve system instruction in conversation for Gemini multi-turn support.
284
+ // The Gemini API takes system as a separate parameter (not in contents),
285
+ // so we must store it in the conversation wrapper to survive serialization.
286
+ const geminiPrompt = prompt;
287
+ if (geminiPrompt.system) {
288
+ if (typeof processedConversation === 'object' && processedConversation !== null) {
289
+ processedConversation = { ...processedConversation, _llumiverse_system: geminiPrompt.system };
290
+ }
291
+ }
292
+ return processedConversation;
293
+ }
294
+ /**
295
+ * Build conversation for Claude streaming.
296
+ * Creates assistant message with tool_use blocks in Claude's ContentBlock format.
297
+ */
298
+ buildClaudeStreamingConversation(prompt, result, toolUse, options) {
299
+ const completionResults = result;
300
+ // Convert accumulated results to text content
301
+ const textContent = completionResults
302
+ .map(r => {
303
+ switch (r.type) {
304
+ case 'text':
305
+ return r.value;
306
+ case 'json':
307
+ return typeof r.value === 'string' ? r.value : JSON.stringify(r.value);
308
+ case 'image':
309
+ return '';
310
+ default:
311
+ return String(r.value || '');
312
+ }
313
+ })
314
+ .join('');
315
+ // Build Claude-style ContentBlock array for assistant message
316
+ const content = [];
317
+ // Add text block if there's text content
318
+ if (textContent) {
319
+ content.push({
320
+ type: 'text',
321
+ text: textContent
322
+ });
323
+ }
324
+ // Add tool_use blocks in Claude format
325
+ if (toolUse && toolUse.length > 0) {
326
+ for (const tool of toolUse) {
327
+ content.push({
328
+ type: 'tool_use',
329
+ id: tool.id,
330
+ name: tool.tool_name,
331
+ input: tool.tool_input ?? {}
332
+ });
333
+ }
334
+ }
335
+ // Claude's requestTextCompletionStream does NOT mutate prompt.messages
336
+ // to include history, so we must prepend options.conversation here.
337
+ const existingMessages = options.conversation?.messages ?? [];
338
+ const existingSystem = options.conversation?.system ?? prompt.system;
339
+ // Build the new messages array
340
+ const newMessages = [
341
+ ...existingMessages,
342
+ ...prompt.messages,
343
+ ];
344
+ // Only add assistant message if there's actual content
345
+ // (Claude API rejects empty text content blocks)
346
+ if (content.length > 0) {
347
+ newMessages.push({
348
+ role: 'assistant',
349
+ content: content
350
+ });
351
+ }
352
+ // Build the new conversation in ClaudePrompt format
353
+ const conversation = {
354
+ messages: newMessages,
355
+ system: existingSystem
356
+ };
357
+ // Increment turn counter
358
+ const withTurn = (0, core_1.incrementConversationTurn)(conversation);
359
+ // Apply stripping based on options
360
+ const currentTurn = (0, core_1.getConversationMeta)(withTurn).turnNumber;
361
+ const stripOptions = {
362
+ keepForTurns: options.stripImagesAfterTurns ?? Infinity,
363
+ currentTurn,
364
+ textMaxTokens: options.stripTextMaxTokens
365
+ };
366
+ let processedConversation = (0, core_1.stripBase64ImagesFromConversation)(withTurn, stripOptions);
367
+ processedConversation = (0, core_1.truncateLargeTextInConversation)(processedConversation, stripOptions);
368
+ processedConversation = (0, core_1.stripHeartbeatsFromConversation)(processedConversation, {
369
+ keepForTurns: options.stripHeartbeatsAfterTurns ?? 1,
370
+ currentTurn,
371
+ });
372
+ return processedConversation;
373
+ }
374
+ async requestImageGeneration(_prompt, _options) {
375
+ const splits = _options.model.split("/");
376
+ const modelName = trimModelName(splits[splits.length - 1]);
377
+ return new imagen_js_1.ImagenModelDefinition(modelName).requestImageGeneration(this, _prompt, _options);
378
+ }
379
+ async getGenAIModelsArray(client) {
380
+ const models = [];
381
+ const pager = await client.models.list();
382
+ for await (const item of pager) {
383
+ models.push(item);
384
+ }
385
+ return models;
386
+ }
387
+ async listModels(_params) {
388
+ // Get clients
389
+ const modelGarden = await this.getModelGardenClient();
390
+ const aiplatform = await this.getAIPlatformClient();
391
+ const globalGenAiClient = this.getGoogleGenAIClient("global");
392
+ let models = [];
393
+ //Model Garden Publisher models - Pretrained models
394
+ const publishers = ["google", "anthropic", "meta"];
395
+ // Meta "maas" models are LLama Models-As-A-Service. Non-maas models are not pre-deployed.
396
+ const supportedModels = { google: ["gemini", "imagen"], anthropic: ["claude"], meta: ["maas"] };
397
+ // Additional models not in the listings, but we want to include
398
+ // TODO: Remove once the models are available in the listing API, or no longer needed
399
+ const additionalModels = {
400
+ google: [
401
+ "imagen-3.0-fast-generate-001",
402
+ ],
403
+ anthropic: [],
404
+ meta: [
405
+ "llama-4-maverick-17b-128e-instruct-maas",
406
+ "llama-4-scout-17b-16e-instruct-maas",
407
+ "llama-3.3-70b-instruct-maas",
408
+ "llama-3.2-90b-vision-instruct-maas",
409
+ "llama-3.1-405b-instruct-maas",
410
+ "llama-3.1-70b-instruct-maas",
411
+ "llama-3.1-8b-instruct-maas",
412
+ ],
413
+ };
414
+ //Used to exclude retired models that are still in the listing API but not available for use.
415
+ //Or models we do not support yet
416
+ const unsupportedModelsByPublisher = {
417
+ google: ["gemini-pro", "gemini-ultra", "imagen-product-recontext-preview", "embedding", "gemini-live-2.5-flash-preview-native-audio", "computer-use-preview"],
418
+ anthropic: [],
419
+ meta: [],
420
+ };
421
+ // Start all network requests in parallel
422
+ const aiplatformPromise = aiplatform.listModels({
423
+ parent: `projects/${this.options.project}/locations/${this.options.region}`,
424
+ });
425
+ const publisherPromises = publishers.map(async (publisher) => {
426
+ const [response] = await modelGarden.listPublisherModels({
427
+ parent: `publishers/${publisher}`,
428
+ orderBy: "name",
429
+ listAllVersions: true,
430
+ });
431
+ return { publisher, response };
432
+ });
433
+ const globalGooglePromise = this.getGenAIModelsArray(globalGenAiClient);
434
+ // Await all network requests
435
+ const [aiplatformResult, globalGoogleResult, ...publisherResults] = await Promise.all([
436
+ aiplatformPromise,
437
+ globalGooglePromise,
438
+ ...publisherPromises,
439
+ ]);
440
+ // Process aiplatform models, project specific models
441
+ const [response] = aiplatformResult;
442
+ models = models.concat(response.map((model) => ({
443
+ id: model.name?.split("/").pop() ?? "",
444
+ name: model.displayName ?? "",
445
+ provider: "vertexai"
446
+ })));
447
+ // Process global google models from GenAI
448
+ models = models.concat(globalGoogleResult.map((model) => {
449
+ const modelCapability = (0, core_1.getModelCapabilities)(model.name ?? '', "vertexai");
450
+ return {
451
+ id: "locations/global/" + model.name,
452
+ name: "Global " + model.name?.split('/').pop(),
453
+ provider: "vertexai",
454
+ owner: "google",
455
+ input_modalities: (0, core_1.modelModalitiesToArray)(modelCapability.input),
456
+ output_modalities: (0, core_1.modelModalitiesToArray)(modelCapability.output),
457
+ tool_support: modelCapability.tool_support,
458
+ };
459
+ }));
460
+ // Process publisher models
461
+ for (const result of publisherResults) {
462
+ const { publisher, response } = result;
463
+ const modelFamily = supportedModels[publisher];
464
+ const retiredModels = unsupportedModelsByPublisher[publisher];
465
+ models = models.concat(response.filter((model) => {
466
+ const modelName = model.name ?? "";
467
+ // Exclude retired models
468
+ if (retiredModels.some(retiredModel => modelName.includes(retiredModel))) {
469
+ return false;
470
+ }
471
+ // Check if the model belongs to the supported model families
472
+ if (modelFamily.some(family => modelName.includes(family))) {
473
+ return true;
474
+ }
475
+ return false;
476
+ }).map(model => {
477
+ const modelCapability = (0, core_1.getModelCapabilities)(model.name ?? '', "vertexai");
478
+ return {
479
+ id: model.name ?? '',
480
+ name: model.name?.split('/').pop() ?? '',
481
+ provider: 'vertexai',
482
+ owner: publisher,
483
+ input_modalities: (0, core_1.modelModalitiesToArray)(modelCapability.input),
484
+ output_modalities: (0, core_1.modelModalitiesToArray)(modelCapability.output),
485
+ tool_support: modelCapability.tool_support,
486
+ };
487
+ }));
488
+ // Create global google gemini models for Gemini 2.5 and later, if missing from GenAI listing
489
+ if (publisher === 'google') {
490
+ const globalGeminiModels = response.filter((model) => {
491
+ const modelName = model.name ?? "";
492
+ if (retiredModels.some(retiredModel => modelName.includes(retiredModel))) {
493
+ return false;
494
+ }
495
+ if (modelFamily.some(family => modelName.includes(family))) {
496
+ const versionMatch = modelName.match(/gemini-(\d+(?:\.\d+)?)/);
497
+ if (versionMatch) {
498
+ const version = parseFloat(versionMatch[1]);
499
+ if (version >= 2.5) {
500
+ // Check if already present
501
+ const shortName = modelName.split('/').pop();
502
+ const globalName = "Global " + shortName;
503
+ if (models.some(m => m.name === globalName)) {
504
+ return false;
505
+ }
506
+ return true;
507
+ }
508
+ }
509
+ return false;
510
+ }
511
+ return false;
512
+ }).map(model => {
513
+ const modelCapability = (0, core_1.getModelCapabilities)(model.name ?? '', "vertexai");
514
+ return {
515
+ id: "locations/global/" + model.name,
516
+ name: "Global " + model.name?.split('/').pop(),
517
+ provider: 'vertexai',
518
+ owner: publisher,
519
+ input_modalities: (0, core_1.modelModalitiesToArray)(modelCapability.input),
520
+ output_modalities: (0, core_1.modelModalitiesToArray)(modelCapability.output),
521
+ tool_support: modelCapability.tool_support,
522
+ };
523
+ });
524
+ models = models.concat(globalGeminiModels);
525
+ }
526
+ // Create global anthropic models for those not in NON_GLOBAL_ANTHROPIC_MODELS
527
+ if (publisher === 'anthropic') {
528
+ const globalAnthropicModels = response.filter((model) => {
529
+ const modelName = model.name ?? "";
530
+ if (retiredModels.some(retiredModel => modelName.includes(retiredModel))) {
531
+ return false;
532
+ }
533
+ if (modelFamily.some(family => modelName.includes(family))) {
534
+ if (modelName.includes("claude-3-7")) {
535
+ return true;
536
+ }
537
+ return !claude_js_1.NON_GLOBAL_ANTHROPIC_MODELS.some(nonGlobalModel => modelName.includes(nonGlobalModel));
538
+ }
539
+ return false;
540
+ }).map(model => {
541
+ const modelCapability = (0, core_1.getModelCapabilities)(model.name ?? '', "vertexai");
542
+ return {
543
+ id: "locations/global/" + model.name,
544
+ name: "Global " + model.name?.split('/').pop(),
545
+ provider: 'vertexai',
546
+ owner: publisher,
547
+ input_modalities: (0, core_1.modelModalitiesToArray)(modelCapability.input),
548
+ output_modalities: (0, core_1.modelModalitiesToArray)(modelCapability.output),
549
+ tool_support: modelCapability.tool_support,
550
+ };
551
+ });
552
+ models = models.concat(globalAnthropicModels);
553
+ }
554
+ // Add additional models that are not in the listing
555
+ for (const additionalModel of additionalModels[publisher]) {
556
+ const publisherModelName = `publishers/${publisher}/models/${additionalModel}`;
557
+ const modelCapability = (0, core_1.getModelCapabilities)(additionalModel, "vertexai");
558
+ models.push({
559
+ id: publisherModelName,
560
+ name: additionalModel,
561
+ provider: 'vertexai',
562
+ owner: publisher,
563
+ input_modalities: (0, core_1.modelModalitiesToArray)(modelCapability.input),
564
+ output_modalities: (0, core_1.modelModalitiesToArray)(modelCapability.output),
565
+ tool_support: modelCapability.tool_support,
566
+ });
567
+ }
568
+ }
569
+ //Remove duplicates
570
+ const uniqueModels = Array.from(new Set(models.map(a => a.id)))
571
+ .map(id => {
572
+ return models.find(a => a.id === id) ?? {};
573
+ }).sort((a, b) => a.id.localeCompare(b.id));
574
+ return uniqueModels;
575
+ }
576
+ validateConnection() {
577
+ throw new Error("Method not implemented.");
578
+ }
579
+ async generateEmbeddings(options) {
580
+ if (options.image || options.model?.includes("multimodal")) {
581
+ if (options.text && options.image) {
582
+ throw new Error("Text and Image simultaneous embedding not implemented. Submit separately");
583
+ }
584
+ return (0, embeddings_image_js_1.getEmbeddingsForImages)(this, options);
585
+ }
586
+ const text_options = {
587
+ content: options.text ?? "",
588
+ model: options.model,
589
+ };
590
+ return (0, embeddings_text_js_1.getEmbeddingsForText)(this, text_options);
591
+ }
592
+ /**
593
+ * Cleanup Google Cloud clients when the driver is evicted from the cache.
594
+ */
595
+ destroy() {
596
+ this.aiplatform?.close();
597
+ this.modelGarden?.close();
598
+ this.imagenClient?.close();
599
+ }
600
+ /**
601
+ * Format VertexAI errors by routing to model-specific error handlers.
602
+ * Each model definition (Gemini, Claude, Llama) can provide custom error parsing
603
+ * based on their specific SDK error structures.
604
+ *
605
+ * @param error - The error from the VertexAI/model SDK
606
+ * @param context - Context about where the error occurred
607
+ * @returns A standardized LlumiverseError
608
+ */
609
+ formatLlumiverseError(error, context) {
610
+ // Get the model definition for this request
611
+ const modelDef = (0, models_js_1.getModelDefinition)(context.model);
612
+ // If the model definition provides custom error handling, use it
613
+ if (modelDef.formatLlumiverseError) {
614
+ try {
615
+ return modelDef.formatLlumiverseError(this, error, context);
616
+ }
617
+ catch (formattingError) {
618
+ // If model-specific handler throws, fall through to default handling
619
+ // This allows model handlers to explicitly opt out for certain errors
620
+ }
621
+ }
622
+ // Fall back to default AbstractDriver error handling
623
+ return super.formatLlumiverseError(error, context);
624
+ }
625
+ }
626
+ exports.VertexAIDriver = VertexAIDriver;
627
+ //'us-central1-aiplatform.googleapis.com',
628
+ const API_BASE_PATH = "aiplatform.googleapis.com";
629
+ function createFetchClient({ region, project, apiEndpoint, apiVersion = "v1", }) {
630
+ const vertexBaseEndpoint = apiEndpoint ?? `${region}-${API_BASE_PATH}`;
631
+ return new api_fetch_client_1.FetchClient(`https://${vertexBaseEndpoint}/${apiVersion}/projects/${project}/locations/${region}`).withHeaders({
632
+ "Content-Type": "application/json",
633
+ });
634
+ }
635
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/vertexai/index.ts"],"names":[],"mappings":"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"}