@juspay/neurolink 1.6.0 → 1.9.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 (176) hide show
  1. package/CHANGELOG.md +193 -7
  2. package/README.md +100 -17
  3. package/dist/agent/direct-tools.d.ts +1203 -0
  4. package/dist/agent/direct-tools.js +387 -0
  5. package/dist/cli/commands/agent-generate.d.ts +2 -0
  6. package/dist/cli/commands/agent-generate.js +70 -0
  7. package/dist/cli/commands/config.d.ts +6 -6
  8. package/dist/cli/commands/config.js +326 -273
  9. package/dist/cli/commands/mcp.d.ts +2 -1
  10. package/dist/cli/commands/mcp.js +874 -146
  11. package/dist/cli/commands/ollama.d.ts +1 -1
  12. package/dist/cli/commands/ollama.js +153 -143
  13. package/dist/cli/index.js +589 -323
  14. package/dist/cli/utils/complete-setup.d.ts +19 -0
  15. package/dist/cli/utils/complete-setup.js +81 -0
  16. package/dist/cli/utils/env-manager.d.ts +44 -0
  17. package/dist/cli/utils/env-manager.js +226 -0
  18. package/dist/cli/utils/interactive-setup.d.ts +48 -0
  19. package/dist/cli/utils/interactive-setup.js +302 -0
  20. package/dist/core/dynamic-models.d.ts +208 -0
  21. package/dist/core/dynamic-models.js +250 -0
  22. package/dist/core/factory.d.ts +13 -6
  23. package/dist/core/factory.js +176 -61
  24. package/dist/core/types.d.ts +4 -2
  25. package/dist/core/types.js +4 -4
  26. package/dist/index.d.ts +16 -16
  27. package/dist/index.js +16 -16
  28. package/dist/lib/agent/direct-tools.d.ts +1203 -0
  29. package/dist/lib/agent/direct-tools.js +387 -0
  30. package/dist/lib/core/dynamic-models.d.ts +208 -0
  31. package/dist/lib/core/dynamic-models.js +250 -0
  32. package/dist/lib/core/factory.d.ts +13 -6
  33. package/dist/lib/core/factory.js +176 -61
  34. package/dist/lib/core/types.d.ts +4 -2
  35. package/dist/lib/core/types.js +4 -4
  36. package/dist/lib/index.d.ts +16 -16
  37. package/dist/lib/index.js +16 -16
  38. package/dist/lib/mcp/auto-discovery.d.ts +120 -0
  39. package/dist/lib/mcp/auto-discovery.js +793 -0
  40. package/dist/lib/mcp/client.d.ts +66 -0
  41. package/dist/lib/mcp/client.js +245 -0
  42. package/dist/lib/mcp/config.d.ts +31 -0
  43. package/dist/lib/mcp/config.js +74 -0
  44. package/dist/lib/mcp/context-manager.d.ts +4 -4
  45. package/dist/lib/mcp/context-manager.js +24 -18
  46. package/dist/lib/mcp/factory.d.ts +28 -11
  47. package/dist/lib/mcp/factory.js +36 -29
  48. package/dist/lib/mcp/function-calling.d.ts +51 -0
  49. package/dist/lib/mcp/function-calling.js +510 -0
  50. package/dist/lib/mcp/index.d.ts +190 -0
  51. package/dist/lib/mcp/index.js +156 -0
  52. package/dist/lib/mcp/initialize-tools.d.ts +28 -0
  53. package/dist/lib/mcp/initialize-tools.js +209 -0
  54. package/dist/lib/mcp/initialize.d.ts +17 -0
  55. package/dist/lib/mcp/initialize.js +51 -0
  56. package/dist/lib/mcp/logging.d.ts +71 -0
  57. package/dist/lib/mcp/logging.js +183 -0
  58. package/dist/lib/mcp/manager.d.ts +67 -0
  59. package/dist/lib/mcp/manager.js +176 -0
  60. package/dist/lib/mcp/neurolink-mcp-client.d.ts +96 -0
  61. package/dist/lib/mcp/neurolink-mcp-client.js +417 -0
  62. package/dist/lib/mcp/orchestrator.d.ts +3 -3
  63. package/dist/lib/mcp/orchestrator.js +46 -43
  64. package/dist/lib/mcp/registry.d.ts +2 -2
  65. package/dist/lib/mcp/registry.js +42 -33
  66. package/dist/lib/mcp/servers/ai-providers/ai-analysis-tools.d.ts +1 -1
  67. package/dist/lib/mcp/servers/ai-providers/ai-analysis-tools.js +204 -65
  68. package/dist/lib/mcp/servers/ai-providers/ai-core-server.js +142 -102
  69. package/dist/lib/mcp/servers/ai-providers/ai-workflow-tools.d.ts +6 -6
  70. package/dist/lib/mcp/servers/ai-providers/ai-workflow-tools.js +197 -142
  71. package/dist/lib/mcp/servers/utilities/utility-server.d.ts +8 -0
  72. package/dist/lib/mcp/servers/utilities/utility-server.js +326 -0
  73. package/dist/lib/mcp/tool-integration.d.ts +67 -0
  74. package/dist/lib/mcp/tool-integration.js +179 -0
  75. package/dist/lib/mcp/unified-registry.d.ts +269 -0
  76. package/dist/lib/mcp/unified-registry.js +1411 -0
  77. package/dist/lib/neurolink.d.ts +68 -6
  78. package/dist/lib/neurolink.js +304 -42
  79. package/dist/lib/providers/agent-enhanced-provider.d.ts +59 -0
  80. package/dist/lib/providers/agent-enhanced-provider.js +242 -0
  81. package/dist/lib/providers/amazonBedrock.d.ts +3 -3
  82. package/dist/lib/providers/amazonBedrock.js +54 -50
  83. package/dist/lib/providers/anthropic.d.ts +2 -2
  84. package/dist/lib/providers/anthropic.js +92 -84
  85. package/dist/lib/providers/azureOpenAI.d.ts +2 -2
  86. package/dist/lib/providers/azureOpenAI.js +97 -86
  87. package/dist/lib/providers/function-calling-provider.d.ts +70 -0
  88. package/dist/lib/providers/function-calling-provider.js +359 -0
  89. package/dist/lib/providers/googleAIStudio.d.ts +10 -5
  90. package/dist/lib/providers/googleAIStudio.js +60 -38
  91. package/dist/lib/providers/googleVertexAI.d.ts +3 -3
  92. package/dist/lib/providers/googleVertexAI.js +96 -86
  93. package/dist/lib/providers/huggingFace.d.ts +3 -3
  94. package/dist/lib/providers/huggingFace.js +70 -63
  95. package/dist/lib/providers/index.d.ts +11 -11
  96. package/dist/lib/providers/index.js +18 -18
  97. package/dist/lib/providers/mcp-provider.d.ts +62 -0
  98. package/dist/lib/providers/mcp-provider.js +183 -0
  99. package/dist/lib/providers/mistralAI.d.ts +3 -3
  100. package/dist/lib/providers/mistralAI.js +42 -36
  101. package/dist/lib/providers/ollama.d.ts +4 -4
  102. package/dist/lib/providers/ollama.js +113 -98
  103. package/dist/lib/providers/openAI.d.ts +7 -3
  104. package/dist/lib/providers/openAI.js +45 -33
  105. package/dist/lib/utils/logger.js +2 -2
  106. package/dist/lib/utils/providerUtils.js +53 -31
  107. package/dist/mcp/auto-discovery.d.ts +120 -0
  108. package/dist/mcp/auto-discovery.js +794 -0
  109. package/dist/mcp/client.d.ts +66 -0
  110. package/dist/mcp/client.js +245 -0
  111. package/dist/mcp/config.d.ts +31 -0
  112. package/dist/mcp/config.js +74 -0
  113. package/dist/mcp/context-manager.d.ts +4 -4
  114. package/dist/mcp/context-manager.js +24 -18
  115. package/dist/mcp/factory.d.ts +28 -11
  116. package/dist/mcp/factory.js +36 -29
  117. package/dist/mcp/function-calling.d.ts +51 -0
  118. package/dist/mcp/function-calling.js +510 -0
  119. package/dist/mcp/index.d.ts +190 -0
  120. package/dist/mcp/index.js +156 -0
  121. package/dist/mcp/initialize-tools.d.ts +28 -0
  122. package/dist/mcp/initialize-tools.js +210 -0
  123. package/dist/mcp/initialize.d.ts +17 -0
  124. package/dist/mcp/initialize.js +51 -0
  125. package/dist/mcp/logging.d.ts +71 -0
  126. package/dist/mcp/logging.js +183 -0
  127. package/dist/mcp/manager.d.ts +67 -0
  128. package/dist/mcp/manager.js +176 -0
  129. package/dist/mcp/neurolink-mcp-client.d.ts +96 -0
  130. package/dist/mcp/neurolink-mcp-client.js +417 -0
  131. package/dist/mcp/orchestrator.d.ts +3 -3
  132. package/dist/mcp/orchestrator.js +46 -43
  133. package/dist/mcp/registry.d.ts +2 -2
  134. package/dist/mcp/registry.js +42 -33
  135. package/dist/mcp/servers/ai-providers/ai-analysis-tools.d.ts +1 -1
  136. package/dist/mcp/servers/ai-providers/ai-analysis-tools.js +204 -65
  137. package/dist/mcp/servers/ai-providers/ai-core-server.js +142 -102
  138. package/dist/mcp/servers/ai-providers/ai-workflow-tools.d.ts +6 -6
  139. package/dist/mcp/servers/ai-providers/ai-workflow-tools.js +197 -142
  140. package/dist/mcp/servers/utilities/utility-server.d.ts +8 -0
  141. package/dist/mcp/servers/utilities/utility-server.js +326 -0
  142. package/dist/mcp/tool-integration.d.ts +67 -0
  143. package/dist/mcp/tool-integration.js +179 -0
  144. package/dist/mcp/unified-registry.d.ts +269 -0
  145. package/dist/mcp/unified-registry.js +1411 -0
  146. package/dist/neurolink.d.ts +68 -6
  147. package/dist/neurolink.js +304 -42
  148. package/dist/providers/agent-enhanced-provider.d.ts +59 -0
  149. package/dist/providers/agent-enhanced-provider.js +242 -0
  150. package/dist/providers/amazonBedrock.d.ts +3 -3
  151. package/dist/providers/amazonBedrock.js +54 -50
  152. package/dist/providers/anthropic.d.ts +2 -2
  153. package/dist/providers/anthropic.js +92 -84
  154. package/dist/providers/azureOpenAI.d.ts +2 -2
  155. package/dist/providers/azureOpenAI.js +97 -86
  156. package/dist/providers/function-calling-provider.d.ts +70 -0
  157. package/dist/providers/function-calling-provider.js +359 -0
  158. package/dist/providers/googleAIStudio.d.ts +10 -5
  159. package/dist/providers/googleAIStudio.js +60 -38
  160. package/dist/providers/googleVertexAI.d.ts +3 -3
  161. package/dist/providers/googleVertexAI.js +96 -86
  162. package/dist/providers/huggingFace.d.ts +3 -3
  163. package/dist/providers/huggingFace.js +70 -63
  164. package/dist/providers/index.d.ts +11 -11
  165. package/dist/providers/index.js +18 -18
  166. package/dist/providers/mcp-provider.d.ts +62 -0
  167. package/dist/providers/mcp-provider.js +183 -0
  168. package/dist/providers/mistralAI.d.ts +3 -3
  169. package/dist/providers/mistralAI.js +42 -36
  170. package/dist/providers/ollama.d.ts +4 -4
  171. package/dist/providers/ollama.js +113 -98
  172. package/dist/providers/openAI.d.ts +7 -3
  173. package/dist/providers/openAI.js +45 -33
  174. package/dist/utils/logger.js +2 -2
  175. package/dist/utils/providerUtils.js +53 -31
  176. package/package.json +175 -161
@@ -1,4 +1,4 @@
1
- import { createVertex } from '@ai-sdk/google-vertex';
1
+ import { createVertex, } from "@ai-sdk/google-vertex";
2
2
  // Cache for anthropic module to avoid repeated imports
3
3
  let _createVertexAnthropic = null;
4
4
  let _anthropicImportAttempted = false;
@@ -10,33 +10,33 @@ async function getCreateVertexAnthropic() {
10
10
  _anthropicImportAttempted = true;
11
11
  try {
12
12
  // Try to import the anthropic module - available in @ai-sdk/google-vertex ^2.2.0+
13
- const anthropicModule = await import('@ai-sdk/google-vertex/anthropic');
13
+ const anthropicModule = await import("@ai-sdk/google-vertex/anthropic");
14
14
  _createVertexAnthropic = anthropicModule.createVertexAnthropic;
15
- logger.debug('[GoogleVertexAI] Anthropic module successfully loaded');
15
+ logger.debug("[GoogleVertexAI] Anthropic module successfully loaded");
16
16
  return _createVertexAnthropic;
17
17
  }
18
18
  catch (error) {
19
19
  // Anthropic module not available
20
- logger.warn('[GoogleVertexAI] Anthropic module not available. Install @ai-sdk/google-vertex ^2.2.0 for Anthropic model support.');
20
+ logger.warn("[GoogleVertexAI] Anthropic module not available. Install @ai-sdk/google-vertex ^2.2.0 for Anthropic model support.");
21
21
  return null;
22
22
  }
23
23
  }
24
- import { streamText, generateText, Output } from 'ai';
25
- import { logger } from '../utils/logger.js';
24
+ import { streamText, generateText, Output, } from "ai";
25
+ import { logger } from "../utils/logger.js";
26
26
  // Default system context
27
27
  const DEFAULT_SYSTEM_CONTEXT = {
28
- systemPrompt: 'You are a helpful AI assistant.'
28
+ systemPrompt: "You are a helpful AI assistant.",
29
29
  };
30
30
  // Configuration helpers
31
31
  const getGCPVertexBreezeProjectId = () => {
32
32
  const projectId = process.env.GOOGLE_VERTEX_PROJECT;
33
33
  if (!projectId) {
34
- throw new Error('GOOGLE_VERTEX_PROJECT environment variable is not set');
34
+ throw new Error("GOOGLE_VERTEX_PROJECT environment variable is not set");
35
35
  }
36
36
  return projectId;
37
37
  };
38
38
  const getGCPVertexBreezeLocation = () => {
39
- return process.env.GOOGLE_VERTEX_LOCATION || 'us-east5';
39
+ return process.env.GOOGLE_VERTEX_LOCATION || "us-east5";
40
40
  };
41
41
  const getGoogleApplicationCredentials = () => {
42
42
  return process.env.GOOGLE_APPLICATION_CREDENTIALS;
@@ -51,7 +51,7 @@ const getGooglePrivateKey = () => {
51
51
  return process.env.GOOGLE_AUTH_PRIVATE_KEY;
52
52
  };
53
53
  const getVertexModelId = () => {
54
- return process.env.VERTEX_MODEL_ID || 'claude-sonnet-4@20250514';
54
+ return process.env.VERTEX_MODEL_ID || "claude-sonnet-4@20250514";
55
55
  };
56
56
  const hasPrincipalAccountAuth = () => {
57
57
  return !!getGoogleApplicationCredentials();
@@ -63,126 +63,132 @@ const hasServiceAccountEnvAuth = () => {
63
63
  return !!(getGoogleClientEmail() && getGooglePrivateKey());
64
64
  };
65
65
  const hasValidAuth = () => {
66
- return hasPrincipalAccountAuth() || hasServiceAccountKeyAuth() || hasServiceAccountEnvAuth();
66
+ return (hasPrincipalAccountAuth() ||
67
+ hasServiceAccountKeyAuth() ||
68
+ hasServiceAccountEnvAuth());
67
69
  };
68
70
  // Setup environment for Google authentication
69
71
  const setupGoogleAuth = async () => {
70
- const functionTag = 'setupGoogleAuth';
72
+ const functionTag = "setupGoogleAuth";
71
73
  // Method 2: Service Account Key (JSON string) - Create temporary file
72
74
  if (hasServiceAccountKeyAuth() && !hasPrincipalAccountAuth()) {
73
75
  const serviceAccountKey = getGoogleServiceAccountKey();
74
76
  logger.debug(`[${functionTag}] Service account key auth (JSON string)`, {
75
77
  hasServiceAccountKey: !!serviceAccountKey,
76
- authMethod: 'service_account_key'
78
+ authMethod: "service_account_key",
77
79
  });
78
80
  try {
79
81
  // Parse to validate JSON
80
82
  JSON.parse(serviceAccountKey);
81
83
  // Write to temporary file and set environment variable using dynamic imports
82
- const { writeFileSync } = await import('fs');
83
- const { join } = await import('path');
84
- const { tmpdir } = await import('os');
84
+ const { writeFileSync } = await import("fs");
85
+ const { join } = await import("path");
86
+ const { tmpdir } = await import("os");
85
87
  const tempFile = join(tmpdir(), `gcp-credentials-${Date.now()}.json`);
86
88
  writeFileSync(tempFile, serviceAccountKey);
87
89
  process.env.GOOGLE_APPLICATION_CREDENTIALS = tempFile;
88
90
  logger.debug(`[${functionTag}] Created temporary credentials file`, {
89
- tempFile: '[CREATED]',
90
- authMethod: 'service_account_key_temp_file'
91
+ tempFile: "[CREATED]",
92
+ authMethod: "service_account_key_temp_file",
91
93
  });
92
94
  }
93
95
  catch (error) {
94
96
  logger.error(`[${functionTag}] Failed to parse service account key`, {
95
- error: error instanceof Error ? error.message : String(error)
97
+ error: error instanceof Error ? error.message : String(error),
96
98
  });
97
- throw new Error('Invalid GOOGLE_SERVICE_ACCOUNT_KEY format. Must be valid JSON.');
99
+ throw new Error("Invalid GOOGLE_SERVICE_ACCOUNT_KEY format. Must be valid JSON.");
98
100
  }
99
101
  }
100
102
  // Method 3: Service Account Environment Variables - Set as individual env vars
101
- if (hasServiceAccountEnvAuth() && !hasPrincipalAccountAuth() && !hasServiceAccountKeyAuth()) {
103
+ if (hasServiceAccountEnvAuth() &&
104
+ !hasPrincipalAccountAuth() &&
105
+ !hasServiceAccountKeyAuth()) {
102
106
  const clientEmail = getGoogleClientEmail();
103
107
  const privateKey = getGooglePrivateKey();
104
108
  logger.debug(`[${functionTag}] Service account env auth (separate variables)`, {
105
109
  hasClientEmail: !!clientEmail,
106
110
  hasPrivateKey: !!privateKey,
107
- authMethod: 'service_account_env'
111
+ authMethod: "service_account_env",
108
112
  });
109
113
  // Create service account object and write to temporary file
110
114
  const serviceAccount = {
111
- type: 'service_account',
115
+ type: "service_account",
112
116
  project_id: getGCPVertexBreezeProjectId(),
113
117
  client_email: clientEmail,
114
- private_key: privateKey.replace(/\\n/g, '\n'),
115
- auth_uri: 'https://accounts.google.com/o/oauth2/auth',
116
- token_uri: 'https://oauth2.googleapis.com/token'
118
+ private_key: privateKey.replace(/\\n/g, "\n"),
119
+ auth_uri: "https://accounts.google.com/o/oauth2/auth",
120
+ token_uri: "https://oauth2.googleapis.com/token",
117
121
  };
118
122
  try {
119
123
  // Use dynamic imports for ESM compatibility
120
- const { writeFileSync } = await import('fs');
121
- const { join } = await import('path');
122
- const { tmpdir } = await import('os');
124
+ const { writeFileSync } = await import("fs");
125
+ const { join } = await import("path");
126
+ const { tmpdir } = await import("os");
123
127
  const tempFile = join(tmpdir(), `gcp-credentials-env-${Date.now()}.json`);
124
128
  writeFileSync(tempFile, JSON.stringify(serviceAccount, null, 2));
125
129
  process.env.GOOGLE_APPLICATION_CREDENTIALS = tempFile;
126
130
  logger.debug(`[${functionTag}] Created temporary credentials file from env vars`, {
127
- tempFile: '[CREATED]',
128
- authMethod: 'service_account_env_temp_file'
131
+ tempFile: "[CREATED]",
132
+ authMethod: "service_account_env_temp_file",
129
133
  });
130
134
  }
131
135
  catch (error) {
132
136
  logger.error(`[${functionTag}] Failed to create service account file from env vars`, {
133
- error: error instanceof Error ? error.message : String(error)
137
+ error: error instanceof Error ? error.message : String(error),
134
138
  });
135
- throw new Error('Failed to create temporary service account file from environment variables.');
139
+ throw new Error("Failed to create temporary service account file from environment variables.");
136
140
  }
137
141
  }
138
142
  };
139
143
  // Vertex AI setup with multiple authentication support
140
144
  const createVertexSettings = async () => {
141
- const functionTag = 'createVertexSettings';
145
+ const functionTag = "createVertexSettings";
142
146
  // Setup authentication first
143
147
  await setupGoogleAuth();
144
148
  const baseSettings = {
145
149
  project: getGCPVertexBreezeProjectId(),
146
- location: getGCPVertexBreezeLocation()
150
+ location: getGCPVertexBreezeLocation(),
147
151
  };
148
152
  // Method 1: Principal Account Authentication (file path) - Recommended for production
149
153
  if (hasPrincipalAccountAuth()) {
150
154
  const credentialsPath = getGoogleApplicationCredentials();
151
155
  logger.debug(`[${functionTag}] Principal account auth (file path)`, {
152
- credentialsPath: credentialsPath ? '[PROVIDED]' : '[NOT_PROVIDED]',
153
- authMethod: 'principal_account_file'
156
+ credentialsPath: credentialsPath ? "[PROVIDED]" : "[NOT_PROVIDED]",
157
+ authMethod: "principal_account_file",
154
158
  });
155
159
  return baseSettings;
156
160
  }
157
161
  // Method 2 & 3: Other methods now set GOOGLE_APPLICATION_CREDENTIALS in setupGoogleAuth()
158
162
  if (hasServiceAccountKeyAuth() || hasServiceAccountEnvAuth()) {
159
163
  logger.debug(`[${functionTag}] Alternative auth method configured`, {
160
- authMethod: hasServiceAccountKeyAuth() ? 'service_account_key' : 'service_account_env',
161
- credentialsSet: !!process.env.GOOGLE_APPLICATION_CREDENTIALS
164
+ authMethod: hasServiceAccountKeyAuth()
165
+ ? "service_account_key"
166
+ : "service_account_env",
167
+ credentialsSet: !!process.env.GOOGLE_APPLICATION_CREDENTIALS,
162
168
  });
163
169
  return baseSettings;
164
170
  }
165
171
  // No valid authentication found
166
172
  logger.error(`[${functionTag}] No valid authentication method found`, {
167
- authMethod: 'none',
173
+ authMethod: "none",
168
174
  hasPrincipalAccount: hasPrincipalAccountAuth(),
169
175
  hasServiceAccountKey: hasServiceAccountKeyAuth(),
170
176
  hasServiceAccountEnv: hasServiceAccountEnvAuth(),
171
177
  availableMethods: [
172
- 'GOOGLE_APPLICATION_CREDENTIALS (file path)',
173
- 'GOOGLE_SERVICE_ACCOUNT_KEY (JSON string)',
174
- 'GOOGLE_AUTH_CLIENT_EMAIL + GOOGLE_AUTH_PRIVATE_KEY (env vars)'
175
- ]
178
+ "GOOGLE_APPLICATION_CREDENTIALS (file path)",
179
+ "GOOGLE_SERVICE_ACCOUNT_KEY (JSON string)",
180
+ "GOOGLE_AUTH_CLIENT_EMAIL + GOOGLE_AUTH_PRIVATE_KEY (env vars)",
181
+ ],
176
182
  });
177
- throw new Error('No valid Google Vertex AI authentication found. Please provide one of:\n' +
178
- '1. GOOGLE_APPLICATION_CREDENTIALS (path to service account file)\n' +
179
- '2. GOOGLE_SERVICE_ACCOUNT_KEY (JSON string of service account)\n' +
180
- '3. GOOGLE_AUTH_CLIENT_EMAIL + GOOGLE_AUTH_PRIVATE_KEY (environment variables)');
183
+ throw new Error("No valid Google Vertex AI authentication found. Please provide one of:\n" +
184
+ "1. GOOGLE_APPLICATION_CREDENTIALS (path to service account file)\n" +
185
+ "2. GOOGLE_SERVICE_ACCOUNT_KEY (JSON string of service account)\n" +
186
+ "3. GOOGLE_AUTH_CLIENT_EMAIL + GOOGLE_AUTH_PRIVATE_KEY (environment variables)");
181
187
  };
182
188
  // Helper function to determine if a model is an Anthropic model
183
189
  const isAnthropicModel = (modelName) => {
184
190
  // Anthropic models in Vertex AI contain "claude" anywhere in the model name
185
- return modelName.toLowerCase().includes('claude');
191
+ return modelName.toLowerCase().includes("claude");
186
192
  };
187
193
  // Lazy initialization cache
188
194
  let _vertex = null;
@@ -201,45 +207,45 @@ export class GoogleVertexAI {
201
207
  * @param modelName - Optional model name to override the default from config
202
208
  */
203
209
  constructor(modelName) {
204
- const functionTag = 'GoogleVertexAI.constructor';
210
+ const functionTag = "GoogleVertexAI.constructor";
205
211
  this.modelName = modelName || getVertexModelId();
206
212
  try {
207
213
  logger.debug(`[${functionTag}] Initialization started`, {
208
214
  modelName: this.modelName,
209
- isAnthropic: isAnthropicModel(this.modelName)
215
+ isAnthropic: isAnthropicModel(this.modelName),
210
216
  });
211
217
  const hasPrincipal = hasPrincipalAccountAuth();
212
218
  logger.debug(`[${functionTag}] Authentication validation`, {
213
219
  hasPrincipalAccountAuth: hasPrincipal,
214
- projectId: getGCPVertexBreezeProjectId() || 'MISSING',
215
- location: getGCPVertexBreezeLocation() || 'MISSING'
220
+ projectId: getGCPVertexBreezeProjectId() || "MISSING",
221
+ location: getGCPVertexBreezeLocation() || "MISSING",
216
222
  });
217
223
  if (hasPrincipal) {
218
224
  logger.debug(`[${functionTag}] Auth method selected`, {
219
- authMethod: 'principal_account',
220
- hasGoogleApplicationCredentials: !!getGoogleApplicationCredentials()
225
+ authMethod: "principal_account",
226
+ hasGoogleApplicationCredentials: !!getGoogleApplicationCredentials(),
221
227
  });
222
228
  }
223
229
  else {
224
230
  logger.warn(`[${functionTag}] Auth method missing`, {
225
- authMethod: 'none',
226
- hasPrincipalAccountAuth: hasPrincipal
231
+ authMethod: "none",
232
+ hasPrincipalAccountAuth: hasPrincipal,
227
233
  });
228
234
  }
229
235
  logger.debug(`[${functionTag}] Initialization completed`, {
230
236
  modelName: this.modelName,
231
237
  isAnthropic: isAnthropicModel(this.modelName),
232
- authMethod: hasPrincipalAccountAuth() ? 'principal_account' : 'none',
233
- success: true
238
+ authMethod: hasPrincipalAccountAuth() ? "principal_account" : "none",
239
+ success: true,
234
240
  });
235
241
  }
236
242
  catch (err) {
237
243
  logger.error(`[${functionTag}] Initialization failed`, {
238
- message: 'Error in initializing Google Vertex AI',
244
+ message: "Error in initializing Google Vertex AI",
239
245
  modelName: this.modelName,
240
246
  isAnthropic: isAnthropicModel(this.modelName),
241
247
  error: err instanceof Error ? err.message : String(err),
242
- stack: err instanceof Error ? err.stack : undefined
248
+ stack: err instanceof Error ? err.stack : undefined,
243
249
  });
244
250
  }
245
251
  }
@@ -249,13 +255,13 @@ export class GoogleVertexAI {
249
255
  */
250
256
  async getModel() {
251
257
  if (isAnthropicModel(this.modelName)) {
252
- logger.debug('GoogleVertexAI.getModel - Anthropic model selected', {
253
- modelName: this.modelName
258
+ logger.debug("GoogleVertexAI.getModel - Anthropic model selected", {
259
+ modelName: this.modelName,
254
260
  });
255
261
  const createVertexAnthropic = await getCreateVertexAnthropic();
256
262
  if (!createVertexAnthropic) {
257
263
  throw new Error(`Anthropic model "${this.modelName}" requested but @ai-sdk/google-vertex/anthropic is not available. ` +
258
- 'Please install @ai-sdk/google-vertex ^2.2.0 or use a Google model instead.');
264
+ "Please install @ai-sdk/google-vertex ^2.2.0 or use a Google model instead.");
259
265
  }
260
266
  const settings = await createVertexSettings();
261
267
  const vertexAnthropic = createVertexAnthropic(settings);
@@ -271,15 +277,15 @@ export class GoogleVertexAI {
271
277
  * @returns Promise resolving to StreamTextResult or null if operation fails
272
278
  */
273
279
  async streamText(optionsOrPrompt, analysisSchema) {
274
- const functionTag = 'GoogleVertexAI.streamText';
275
- const provider = 'vertex';
280
+ const functionTag = "GoogleVertexAI.streamText";
281
+ const provider = "vertex";
276
282
  let chunkCount = 0;
277
283
  try {
278
284
  // Parse parameters - support both string and options object
279
- const options = typeof optionsOrPrompt === 'string'
285
+ const options = typeof optionsOrPrompt === "string"
280
286
  ? { prompt: optionsOrPrompt }
281
287
  : optionsOrPrompt;
282
- const { prompt, temperature = 0.7, maxTokens = 500, systemPrompt = DEFAULT_SYSTEM_CONTEXT.systemPrompt, schema } = options;
288
+ const { prompt, temperature = 0.7, maxTokens = 500, systemPrompt = DEFAULT_SYSTEM_CONTEXT.systemPrompt, schema, } = options;
283
289
  // Use schema from options or fallback parameter
284
290
  const finalSchema = schema || analysisSchema;
285
291
  logger.debug(`[${functionTag}] Stream request started`, {
@@ -289,7 +295,7 @@ export class GoogleVertexAI {
289
295
  promptLength: prompt.length,
290
296
  temperature,
291
297
  maxTokens,
292
- hasSchema: !!finalSchema
298
+ hasSchema: !!finalSchema,
293
299
  });
294
300
  const model = await this.getModel();
295
301
  const streamOptions = {
@@ -308,7 +314,7 @@ export class GoogleVertexAI {
308
314
  error: errorMessage,
309
315
  stack: errorStack,
310
316
  promptLength: prompt.length,
311
- chunkCount
317
+ chunkCount,
312
318
  });
313
319
  },
314
320
  onFinish: (event) => {
@@ -319,7 +325,7 @@ export class GoogleVertexAI {
319
325
  usage: event.usage,
320
326
  totalChunks: chunkCount,
321
327
  promptLength: prompt.length,
322
- responseLength: event.text?.length || 0
328
+ responseLength: event.text?.length || 0,
323
329
  });
324
330
  },
325
331
  onChunk: (event) => {
@@ -329,12 +335,14 @@ export class GoogleVertexAI {
329
335
  modelName: this.modelName,
330
336
  chunkNumber: chunkCount,
331
337
  chunkLength: event.chunk.text?.length || 0,
332
- chunkType: event.chunk.type
338
+ chunkType: event.chunk.type,
333
339
  });
334
- }
340
+ },
335
341
  };
336
342
  if (analysisSchema) {
337
- streamOptions.experimental_output = Output.object({ schema: analysisSchema });
343
+ streamOptions.experimental_output = Output.object({
344
+ schema: analysisSchema,
345
+ });
338
346
  }
339
347
  const result = streamText(streamOptions);
340
348
  return result;
@@ -343,9 +351,9 @@ export class GoogleVertexAI {
343
351
  logger.error(`[${functionTag}] Exception`, {
344
352
  provider,
345
353
  modelName: this.modelName,
346
- message: 'Error in streaming text',
354
+ message: "Error in streaming text",
347
355
  err: String(err),
348
- promptLength: prompt.length
356
+ promptLength: prompt.length,
349
357
  });
350
358
  throw err; // Re-throw error to trigger fallback
351
359
  }
@@ -357,14 +365,14 @@ export class GoogleVertexAI {
357
365
  * @returns Promise resolving to GenerateTextResult or null if operation fails
358
366
  */
359
367
  async generateText(optionsOrPrompt, analysisSchema) {
360
- const functionTag = 'GoogleVertexAI.generateText';
361
- const provider = 'vertex';
368
+ const functionTag = "GoogleVertexAI.generateText";
369
+ const provider = "vertex";
362
370
  try {
363
371
  // Parse parameters - support both string and options object
364
- const options = typeof optionsOrPrompt === 'string'
372
+ const options = typeof optionsOrPrompt === "string"
365
373
  ? { prompt: optionsOrPrompt }
366
374
  : optionsOrPrompt;
367
- const { prompt, temperature = 0.7, maxTokens = 500, systemPrompt = DEFAULT_SYSTEM_CONTEXT.systemPrompt, schema } = options;
375
+ const { prompt, temperature = 0.7, maxTokens = 500, systemPrompt = DEFAULT_SYSTEM_CONTEXT.systemPrompt, schema, } = options;
368
376
  // Use schema from options or fallback parameter
369
377
  const finalSchema = schema || analysisSchema;
370
378
  logger.debug(`[${functionTag}] Generate request started`, {
@@ -373,7 +381,7 @@ export class GoogleVertexAI {
373
381
  isAnthropic: isAnthropicModel(this.modelName),
374
382
  promptLength: prompt.length,
375
383
  temperature,
376
- maxTokens
384
+ maxTokens,
377
385
  });
378
386
  const model = await this.getModel();
379
387
  const generateOptions = {
@@ -381,10 +389,12 @@ export class GoogleVertexAI {
381
389
  prompt: prompt,
382
390
  system: systemPrompt,
383
391
  temperature,
384
- maxTokens
392
+ maxTokens,
385
393
  };
386
394
  if (finalSchema) {
387
- generateOptions.experimental_output = Output.object({ schema: finalSchema });
395
+ generateOptions.experimental_output = Output.object({
396
+ schema: finalSchema,
397
+ });
388
398
  }
389
399
  const result = await generateText(generateOptions);
390
400
  logger.debug(`[${functionTag}] Generate text completed`, {
@@ -392,7 +402,7 @@ export class GoogleVertexAI {
392
402
  modelName: this.modelName,
393
403
  usage: result.usage,
394
404
  finishReason: result.finishReason,
395
- responseLength: result.text?.length || 0
405
+ responseLength: result.text?.length || 0,
396
406
  });
397
407
  return result;
398
408
  }
@@ -400,8 +410,8 @@ export class GoogleVertexAI {
400
410
  logger.error(`[${functionTag}] Exception`, {
401
411
  provider,
402
412
  modelName: this.modelName,
403
- message: 'Error in generating text',
404
- err: String(err)
413
+ message: "Error in generating text",
414
+ err: String(err),
405
415
  });
406
416
  throw err; // Re-throw error to trigger fallback
407
417
  }
@@ -1,6 +1,6 @@
1
- import type { ZodType, ZodTypeDef } from 'zod';
2
- import { type StreamTextResult, type ToolSet, type Schema, type GenerateTextResult } from 'ai';
3
- import type { AIProvider, TextGenerationOptions, StreamTextOptions } from '../core/types.js';
1
+ import type { ZodType, ZodTypeDef } from "zod";
2
+ import { type StreamTextResult, type ToolSet, type Schema, type GenerateTextResult } from "ai";
3
+ import type { AIProvider, TextGenerationOptions, StreamTextOptions } from "../core/types.js";
4
4
  export declare class HuggingFace implements AIProvider {
5
5
  private modelName;
6
6
  private client;