@juspay/neurolink 7.29.2 → 7.30.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 (226) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cli/commands/config.d.ts +83 -83
  3. package/dist/cli/commands/mcp.js +39 -9
  4. package/dist/cli/commands/models.js +25 -21
  5. package/dist/cli/commands/ollama.js +2 -2
  6. package/dist/cli/factories/commandFactory.d.ts +8 -0
  7. package/dist/cli/factories/commandFactory.js +65 -65
  8. package/dist/cli/factories/ollamaCommandFactory.js +3 -1
  9. package/dist/cli/factories/sagemakerCommandFactory.js +3 -2
  10. package/dist/cli/index.d.ts +1 -1
  11. package/dist/cli/index.js +11 -11
  12. package/dist/cli/utils/envManager.js +5 -5
  13. package/dist/cli/utils/ollamaUtils.d.ts +12 -0
  14. package/dist/cli/utils/ollamaUtils.js +58 -42
  15. package/dist/config/configManager.js +5 -2
  16. package/dist/config/conversationMemoryConfig.js +5 -0
  17. package/dist/core/analytics.d.ts +2 -24
  18. package/dist/core/analytics.js +12 -17
  19. package/dist/core/baseProvider.d.ts +30 -1
  20. package/dist/core/baseProvider.js +180 -198
  21. package/dist/core/conversationMemoryManager.d.ts +9 -15
  22. package/dist/core/conversationMemoryManager.js +98 -57
  23. package/dist/core/dynamicModels.d.ts +4 -4
  24. package/dist/core/dynamicModels.js +7 -7
  25. package/dist/core/evaluation.d.ts +9 -9
  26. package/dist/core/evaluation.js +117 -65
  27. package/dist/core/evaluationProviders.d.ts +18 -2
  28. package/dist/core/evaluationProviders.js +15 -13
  29. package/dist/core/modelConfiguration.d.ts +63 -0
  30. package/dist/core/modelConfiguration.js +354 -290
  31. package/dist/core/streamAnalytics.d.ts +10 -5
  32. package/dist/core/streamAnalytics.js +10 -10
  33. package/dist/core/types.d.ts +22 -110
  34. package/dist/core/types.js +13 -0
  35. package/dist/factories/providerFactory.js +1 -1
  36. package/dist/index.d.ts +2 -1
  37. package/dist/lib/config/configManager.js +5 -2
  38. package/dist/lib/config/conversationMemoryConfig.js +5 -0
  39. package/dist/lib/core/analytics.d.ts +2 -24
  40. package/dist/lib/core/analytics.js +12 -17
  41. package/dist/lib/core/baseProvider.d.ts +30 -1
  42. package/dist/lib/core/baseProvider.js +180 -198
  43. package/dist/lib/core/conversationMemoryManager.d.ts +9 -15
  44. package/dist/lib/core/conversationMemoryManager.js +98 -57
  45. package/dist/lib/core/dynamicModels.js +7 -7
  46. package/dist/lib/core/evaluation.d.ts +9 -9
  47. package/dist/lib/core/evaluation.js +117 -65
  48. package/dist/lib/core/evaluationProviders.d.ts +18 -2
  49. package/dist/lib/core/evaluationProviders.js +15 -13
  50. package/dist/lib/core/modelConfiguration.d.ts +63 -0
  51. package/dist/lib/core/modelConfiguration.js +354 -290
  52. package/dist/lib/core/streamAnalytics.d.ts +10 -5
  53. package/dist/lib/core/streamAnalytics.js +10 -10
  54. package/dist/lib/core/types.d.ts +22 -110
  55. package/dist/lib/core/types.js +13 -0
  56. package/dist/lib/factories/providerFactory.js +1 -1
  57. package/dist/lib/index.d.ts +2 -1
  58. package/dist/lib/mcp/externalServerManager.js +15 -6
  59. package/dist/lib/mcp/factory.js +1 -1
  60. package/dist/lib/mcp/index.d.ts +1 -1
  61. package/dist/lib/mcp/index.js +1 -1
  62. package/dist/lib/mcp/mcpCircuitBreaker.js +5 -1
  63. package/dist/lib/mcp/mcpClientFactory.js +3 -0
  64. package/dist/lib/mcp/registry.d.ts +3 -3
  65. package/dist/lib/mcp/registry.js +3 -3
  66. package/dist/lib/mcp/servers/aiProviders/aiAnalysisTools.js +5 -5
  67. package/dist/lib/mcp/servers/aiProviders/aiWorkflowTools.js +6 -6
  68. package/dist/lib/mcp/servers/utilities/utilityServer.js +1 -1
  69. package/dist/lib/mcp/toolDiscoveryService.js +8 -2
  70. package/dist/lib/mcp/toolRegistry.js +4 -4
  71. package/dist/lib/middleware/builtin/analytics.js +4 -4
  72. package/dist/lib/middleware/builtin/guardrails.js +2 -2
  73. package/dist/lib/middleware/registry.js +11 -2
  74. package/dist/lib/models/modelRegistry.d.ts +1 -1
  75. package/dist/lib/models/modelRegistry.js +3 -3
  76. package/dist/lib/models/modelResolver.d.ts +1 -1
  77. package/dist/lib/models/modelResolver.js +2 -2
  78. package/dist/lib/neurolink.d.ts +116 -9
  79. package/dist/lib/neurolink.js +718 -956
  80. package/dist/lib/providers/amazonSagemaker.d.ts +1 -1
  81. package/dist/lib/providers/amazonSagemaker.js +12 -3
  82. package/dist/lib/providers/anthropic.d.ts +1 -1
  83. package/dist/lib/providers/anthropic.js +7 -6
  84. package/dist/lib/providers/anthropicBaseProvider.d.ts +1 -1
  85. package/dist/lib/providers/anthropicBaseProvider.js +4 -3
  86. package/dist/lib/providers/azureOpenai.d.ts +1 -1
  87. package/dist/lib/providers/azureOpenai.js +1 -1
  88. package/dist/lib/providers/googleAiStudio.d.ts +1 -1
  89. package/dist/lib/providers/googleAiStudio.js +2 -2
  90. package/dist/lib/providers/googleVertex.d.ts +40 -0
  91. package/dist/lib/providers/googleVertex.js +330 -274
  92. package/dist/lib/providers/huggingFace.js +1 -1
  93. package/dist/lib/providers/mistral.d.ts +1 -1
  94. package/dist/lib/providers/mistral.js +2 -2
  95. package/dist/lib/providers/ollama.d.ts +4 -0
  96. package/dist/lib/providers/ollama.js +38 -18
  97. package/dist/lib/providers/openAI.d.ts +1 -1
  98. package/dist/lib/providers/openAI.js +2 -2
  99. package/dist/lib/providers/sagemaker/adaptive-semaphore.js +7 -4
  100. package/dist/lib/providers/sagemaker/client.js +13 -3
  101. package/dist/lib/providers/sagemaker/config.js +5 -1
  102. package/dist/lib/providers/sagemaker/detection.js +19 -9
  103. package/dist/lib/providers/sagemaker/errors.d.ts +8 -1
  104. package/dist/lib/providers/sagemaker/errors.js +103 -20
  105. package/dist/lib/providers/sagemaker/language-model.d.ts +3 -3
  106. package/dist/lib/providers/sagemaker/language-model.js +4 -4
  107. package/dist/lib/providers/sagemaker/parsers.js +14 -6
  108. package/dist/lib/providers/sagemaker/streaming.js +14 -3
  109. package/dist/lib/providers/sagemaker/types.d.ts +1 -1
  110. package/dist/lib/proxy/awsProxyIntegration.js +1 -1
  111. package/dist/lib/sdk/toolRegistration.d.ts +1 -1
  112. package/dist/lib/types/cli.d.ts +80 -8
  113. package/dist/lib/types/contextTypes.js +2 -2
  114. package/dist/lib/types/conversationTypes.d.ts +10 -0
  115. package/dist/lib/types/generateTypes.d.ts +2 -5
  116. package/dist/lib/types/providers.d.ts +81 -19
  117. package/dist/lib/types/providers.js +6 -6
  118. package/dist/lib/types/streamTypes.d.ts +4 -6
  119. package/dist/lib/types/typeAliases.d.ts +1 -1
  120. package/dist/lib/utils/analyticsUtils.d.ts +33 -0
  121. package/dist/lib/utils/analyticsUtils.js +76 -0
  122. package/dist/lib/utils/conversationMemoryUtils.d.ts +1 -2
  123. package/dist/lib/utils/conversationMemoryUtils.js +6 -7
  124. package/dist/lib/utils/errorHandling.js +4 -1
  125. package/dist/lib/utils/evaluationUtils.d.ts +27 -0
  126. package/dist/lib/utils/evaluationUtils.js +131 -0
  127. package/dist/lib/utils/optionsUtils.js +10 -1
  128. package/dist/lib/utils/performance.d.ts +1 -1
  129. package/dist/lib/utils/performance.js +15 -3
  130. package/dist/lib/utils/providerHealth.d.ts +48 -0
  131. package/dist/lib/utils/providerHealth.js +199 -254
  132. package/dist/lib/utils/providerUtils.js +2 -2
  133. package/dist/lib/utils/timeout.js +8 -3
  134. package/dist/mcp/externalServerManager.js +15 -6
  135. package/dist/mcp/factory.js +1 -1
  136. package/dist/mcp/index.d.ts +1 -1
  137. package/dist/mcp/index.js +1 -1
  138. package/dist/mcp/mcpCircuitBreaker.js +5 -1
  139. package/dist/mcp/mcpClientFactory.js +3 -0
  140. package/dist/mcp/registry.d.ts +3 -3
  141. package/dist/mcp/registry.js +3 -3
  142. package/dist/mcp/servers/aiProviders/aiAnalysisTools.js +5 -5
  143. package/dist/mcp/servers/aiProviders/aiWorkflowTools.js +6 -6
  144. package/dist/mcp/servers/utilities/utilityServer.js +1 -1
  145. package/dist/mcp/toolDiscoveryService.js +8 -2
  146. package/dist/mcp/toolRegistry.js +4 -4
  147. package/dist/middleware/builtin/analytics.js +4 -4
  148. package/dist/middleware/builtin/guardrails.js +2 -2
  149. package/dist/middleware/registry.js +11 -2
  150. package/dist/models/modelRegistry.d.ts +1 -1
  151. package/dist/models/modelRegistry.js +3 -3
  152. package/dist/models/modelResolver.d.ts +1 -1
  153. package/dist/models/modelResolver.js +2 -2
  154. package/dist/neurolink.d.ts +116 -9
  155. package/dist/neurolink.js +718 -956
  156. package/dist/providers/amazonSagemaker.d.ts +1 -1
  157. package/dist/providers/amazonSagemaker.js +12 -3
  158. package/dist/providers/anthropic.d.ts +1 -1
  159. package/dist/providers/anthropic.js +7 -6
  160. package/dist/providers/anthropicBaseProvider.d.ts +1 -1
  161. package/dist/providers/anthropicBaseProvider.js +4 -3
  162. package/dist/providers/azureOpenai.d.ts +1 -1
  163. package/dist/providers/azureOpenai.js +1 -1
  164. package/dist/providers/googleAiStudio.d.ts +1 -1
  165. package/dist/providers/googleAiStudio.js +2 -2
  166. package/dist/providers/googleVertex.d.ts +40 -0
  167. package/dist/providers/googleVertex.js +330 -274
  168. package/dist/providers/huggingFace.js +1 -1
  169. package/dist/providers/mistral.d.ts +1 -1
  170. package/dist/providers/mistral.js +2 -2
  171. package/dist/providers/ollama.d.ts +4 -0
  172. package/dist/providers/ollama.js +38 -18
  173. package/dist/providers/openAI.d.ts +1 -1
  174. package/dist/providers/openAI.js +2 -2
  175. package/dist/providers/sagemaker/adaptive-semaphore.js +7 -4
  176. package/dist/providers/sagemaker/client.js +13 -3
  177. package/dist/providers/sagemaker/config.js +5 -1
  178. package/dist/providers/sagemaker/detection.js +19 -9
  179. package/dist/providers/sagemaker/errors.d.ts +8 -1
  180. package/dist/providers/sagemaker/errors.js +103 -20
  181. package/dist/providers/sagemaker/language-model.d.ts +3 -3
  182. package/dist/providers/sagemaker/language-model.js +4 -4
  183. package/dist/providers/sagemaker/parsers.js +14 -6
  184. package/dist/providers/sagemaker/streaming.js +14 -3
  185. package/dist/providers/sagemaker/types.d.ts +1 -1
  186. package/dist/proxy/awsProxyIntegration.js +1 -1
  187. package/dist/sdk/toolRegistration.d.ts +1 -1
  188. package/dist/types/cli.d.ts +80 -8
  189. package/dist/types/contextTypes.js +2 -2
  190. package/dist/types/conversationTypes.d.ts +10 -0
  191. package/dist/types/generateTypes.d.ts +2 -5
  192. package/dist/types/providers.d.ts +81 -19
  193. package/dist/types/providers.js +6 -6
  194. package/dist/types/streamTypes.d.ts +4 -6
  195. package/dist/types/typeAliases.d.ts +1 -1
  196. package/dist/utils/analyticsUtils.d.ts +33 -0
  197. package/dist/utils/analyticsUtils.js +76 -0
  198. package/dist/utils/conversationMemoryUtils.d.ts +1 -2
  199. package/dist/utils/conversationMemoryUtils.js +6 -7
  200. package/dist/utils/errorHandling.js +4 -1
  201. package/dist/utils/evaluationUtils.d.ts +27 -0
  202. package/dist/utils/evaluationUtils.js +131 -0
  203. package/dist/utils/optionsUtils.js +10 -1
  204. package/dist/utils/performance.d.ts +1 -1
  205. package/dist/utils/performance.js +15 -3
  206. package/dist/utils/providerHealth.d.ts +48 -0
  207. package/dist/utils/providerHealth.js +199 -254
  208. package/dist/utils/providerUtils.js +2 -2
  209. package/dist/utils/timeout.js +8 -3
  210. package/package.json +1 -1
  211. package/dist/context/ContextManager.d.ts +0 -28
  212. package/dist/context/ContextManager.js +0 -113
  213. package/dist/context/config.d.ts +0 -5
  214. package/dist/context/config.js +0 -42
  215. package/dist/context/types.d.ts +0 -20
  216. package/dist/context/types.js +0 -1
  217. package/dist/context/utils.d.ts +0 -7
  218. package/dist/context/utils.js +0 -8
  219. package/dist/lib/context/ContextManager.d.ts +0 -28
  220. package/dist/lib/context/ContextManager.js +0 -113
  221. package/dist/lib/context/config.d.ts +0 -5
  222. package/dist/lib/context/config.js +0 -42
  223. package/dist/lib/context/types.d.ts +0 -20
  224. package/dist/lib/context/types.js +0 -1
  225. package/dist/lib/context/utils.d.ts +0 -7
  226. package/dist/lib/context/utils.js +0 -8
@@ -1,17 +1,21 @@
1
1
  import type { AnalyticsData } from "./types.js";
2
2
  import type { TokenUsage } from "../types/providers.js";
3
3
  import type { ToolCall, ToolResult } from "../types/streamTypes.js";
4
+ /**
5
+ * Raw usage data from Vercel AI SDK (uses different field names)
6
+ */
7
+ interface AISDKUsage {
8
+ promptTokens: number;
9
+ completionTokens: number;
10
+ totalTokens: number;
11
+ }
4
12
  /**
5
13
  * Stream analytics result from Vercel AI SDK streamText
6
14
  */
7
15
  export interface StreamTextResult {
8
16
  textStream: AsyncIterable<string>;
9
17
  text: Promise<string>;
10
- usage: Promise<{
11
- promptTokens: number;
12
- completionTokens: number;
13
- totalTokens: number;
14
- } | undefined>;
18
+ usage: Promise<AISDKUsage | undefined>;
15
19
  response: Promise<{
16
20
  id?: string;
17
21
  model?: string;
@@ -63,3 +67,4 @@ export declare class BaseStreamAnalyticsCollector implements StreamAnalyticsColl
63
67
  * Global instance of stream analytics collector
64
68
  */
65
69
  export declare const streamAnalyticsCollector: BaseStreamAnalyticsCollector;
70
+ export {};
@@ -13,24 +13,24 @@ export class BaseStreamAnalyticsCollector {
13
13
  if (!usage) {
14
14
  logger.debug("No usage data available from stream result");
15
15
  return {
16
- inputTokens: 0,
17
- outputTokens: 0,
18
- totalTokens: 0,
16
+ input: 0,
17
+ output: 0,
18
+ total: 0,
19
19
  };
20
20
  }
21
21
  return {
22
- inputTokens: usage.promptTokens || 0,
23
- outputTokens: usage.completionTokens || 0,
24
- totalTokens: usage.totalTokens ||
22
+ input: usage.promptTokens || 0,
23
+ output: usage.completionTokens || 0,
24
+ total: usage.totalTokens ||
25
25
  (usage.promptTokens || 0) + (usage.completionTokens || 0),
26
26
  };
27
27
  }
28
28
  catch (error) {
29
29
  logger.warn("Failed to collect usage from stream result", { error });
30
30
  return {
31
- inputTokens: 0,
32
- outputTokens: 0,
33
- totalTokens: 0,
31
+ input: 0,
32
+ output: 0,
33
+ total: 0,
34
34
  };
35
35
  }
36
36
  }
@@ -100,7 +100,7 @@ export class BaseStreamAnalyticsCollector {
100
100
  error: error instanceof Error ? error.message : String(error),
101
101
  });
102
102
  // Return minimal analytics on error
103
- return createAnalytics(provider, model, { usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 } }, responseTime, {
103
+ return createAnalytics(provider, model, { usage: { input: 0, output: 0, total: 0 } }, responseTime, {
104
104
  ...metadata,
105
105
  streamingMode: true,
106
106
  analyticsError: true,
@@ -3,17 +3,15 @@ import type { ZodUnknownSchema, ValidationSchema } from "../types/typeAliases.js
3
3
  import type { GenerateResult } from "../types/generateTypes.js";
4
4
  import type { StreamOptions, StreamResult } from "../types/streamTypes.js";
5
5
  import type { JsonValue } from "../types/common.js";
6
- import type { ChatMessage } from "../types/conversationTypes.js";
7
- import type { AnalyticsData } from "./analytics.js";
6
+ import type { ChatMessage, ConversationMemoryConfig } from "../types/conversationTypes.js";
7
+ import type { TokenUsage, AnalyticsData } from "../types/providers.js";
8
+ import type { EvaluationData } from "../index.js";
9
+ export type { EvaluationData };
8
10
  export interface TextGenerationResult {
9
11
  content: string;
10
12
  provider?: string;
11
13
  model?: string;
12
- usage?: {
13
- promptTokens?: number;
14
- completionTokens?: number;
15
- totalTokens?: number;
16
- };
14
+ usage?: TokenUsage;
17
15
  responseTime?: number;
18
16
  toolsUsed?: string[];
19
17
  toolExecutions?: Array<{
@@ -30,13 +28,7 @@ export interface TextGenerationResult {
30
28
  category?: string;
31
29
  }>;
32
30
  analytics?: AnalyticsData;
33
- evaluation?: {
34
- relevance: number;
35
- accuracy: number;
36
- completeness: number;
37
- overall: number;
38
- reasoning?: string;
39
- };
31
+ evaluation?: EvaluationData;
40
32
  }
41
33
  /**
42
34
  * Supported AI Provider Names
@@ -105,10 +97,20 @@ export declare enum GoogleAIModels {
105
97
  GEMINI_1_5_FLASH = "gemini-1.5-flash",
106
98
  GEMINI_1_5_FLASH_LITE = "gemini-1.5-flash-lite"
107
99
  }
100
+ /**
101
+ * Supported Models for Anthropic (Direct API)
102
+ */
103
+ export declare enum AnthropicModels {
104
+ CLAUDE_3_5_SONNET = "claude-3-5-sonnet-20241022",
105
+ CLAUDE_3_5_HAIKU = "claude-3-5-haiku-20241022",
106
+ CLAUDE_3_SONNET = "claude-3-sonnet-20240229",
107
+ CLAUDE_3_OPUS = "claude-3-opus-20240229",
108
+ CLAUDE_3_HAIKU = "claude-3-haiku-20240307"
109
+ }
108
110
  /**
109
111
  * Union type of all supported model names
110
112
  */
111
- export type SupportedModelName = BedrockModels | OpenAIModels | VertexModels | GoogleAIModels;
113
+ export type SupportedModelName = BedrockModels | OpenAIModels | VertexModels | GoogleAIModels | AnthropicModels;
112
114
  /**
113
115
  * Provider configuration specifying provider and its available models
114
116
  */
@@ -153,102 +155,12 @@ export interface TextGenerationOptions {
153
155
  content: string;
154
156
  }>;
155
157
  conversationMessages?: ChatMessage[];
158
+ conversationMemoryConfig?: Partial<ConversationMemoryConfig>;
159
+ originalPrompt?: string;
160
+ expectedOutcome?: string;
161
+ evaluationCriteria?: string[];
156
162
  }
157
- export type { AnalyticsData };
158
- /**
159
- * Response quality evaluation scores
160
- * Comprehensive evaluation interface for response quality assessment
161
- */
162
- export interface EvaluationData {
163
- relevance: number;
164
- accuracy: number;
165
- completeness: number;
166
- overall: number;
167
- domainAlignment?: number;
168
- terminologyAccuracy?: number;
169
- toolEffectiveness?: number;
170
- isOffTopic: boolean;
171
- alertSeverity: "low" | "medium" | "high" | "none";
172
- reasoning: string;
173
- suggestedImprovements?: string;
174
- evaluationModel: string;
175
- evaluationTime: number;
176
- evaluationDomain?: string;
177
- evaluationProvider?: string;
178
- evaluationAttempt?: number;
179
- evaluationConfig?: {
180
- mode: string;
181
- fallbackUsed: boolean;
182
- costEstimate: number;
183
- };
184
- domainConfig?: {
185
- domainName: string;
186
- domainDescription: string;
187
- keyTerms: string[];
188
- failurePatterns: string[];
189
- successPatterns: string[];
190
- evaluationCriteria?: Record<string, unknown>;
191
- };
192
- domainEvaluation?: {
193
- domainRelevance: number;
194
- terminologyAccuracy: number;
195
- domainExpertise: number;
196
- domainSpecificInsights: string[];
197
- };
198
- }
199
- /**
200
- * BACKWARD COMPATIBILITY: Legacy evaluation interface
201
- * Maintains existing field names for backward compatibility
202
- */
203
- export interface LegacyEvaluationData {
204
- relevance: number;
205
- accuracy: number;
206
- completeness: number;
207
- overall: number;
208
- isOffTopic: boolean;
209
- alertSeverity: "low" | "medium" | "high" | "none";
210
- reasoning: string;
211
- suggestedImprovements?: string;
212
- evaluationModel: string;
213
- evaluationTime: number;
214
- }
215
- /**
216
- * Evaluation system configuration for multi-provider support
217
- */
218
- export interface EvaluationConfig {
219
- provider: string;
220
- model: string;
221
- mode: "fast" | "balanced" | "quality";
222
- fallbackEnabled: boolean;
223
- fallbackProviders: string[];
224
- timeout: number;
225
- maxTokens: number;
226
- temperature: number;
227
- preferCheap: boolean;
228
- maxCostPerEval: number;
229
- retryAttempts: number;
230
- }
231
- /**
232
- * Provider model configuration for evaluation
233
- */
234
- export interface ProviderModelConfig {
235
- provider: string;
236
- models: {
237
- fast: string;
238
- balanced: string;
239
- quality: string;
240
- };
241
- costPerToken: {
242
- input: number;
243
- output: number;
244
- };
245
- requiresApiKey: string[];
246
- performance: {
247
- speed: number;
248
- quality: number;
249
- cost: number;
250
- };
251
- }
163
+ export type { AnalyticsData } from "../types/providers.js";
252
164
  /**
253
165
  * Enhanced result interfaces with optional analytics/evaluation
254
166
  */
@@ -79,6 +79,19 @@ export var GoogleAIModels;
79
79
  GoogleAIModels["GEMINI_1_5_FLASH"] = "gemini-1.5-flash";
80
80
  GoogleAIModels["GEMINI_1_5_FLASH_LITE"] = "gemini-1.5-flash-lite";
81
81
  })(GoogleAIModels || (GoogleAIModels = {}));
82
+ /**
83
+ * Supported Models for Anthropic (Direct API)
84
+ */
85
+ export var AnthropicModels;
86
+ (function (AnthropicModels) {
87
+ // Claude 3.5 Series (Latest)
88
+ AnthropicModels["CLAUDE_3_5_SONNET"] = "claude-3-5-sonnet-20241022";
89
+ AnthropicModels["CLAUDE_3_5_HAIKU"] = "claude-3-5-haiku-20241022";
90
+ // Claude 3 Series (Legacy support)
91
+ AnthropicModels["CLAUDE_3_SONNET"] = "claude-3-sonnet-20240229";
92
+ AnthropicModels["CLAUDE_3_OPUS"] = "claude-3-opus-20240229";
93
+ AnthropicModels["CLAUDE_3_HAIKU"] = "claude-3-haiku-20240307";
94
+ })(AnthropicModels || (AnthropicModels = {}));
82
95
  /**
83
96
  * Default provider configurations
84
97
  */
@@ -54,7 +54,7 @@ export class ProviderFactory {
54
54
  // Try as async factory function first (most providers are async functions)
55
55
  result = await registration.constructor(model, providerName, sdk);
56
56
  }
57
- catch (functionError) {
57
+ catch {
58
58
  // Fallback to constructor - ensure parameters are maintained
59
59
  result = new registration.constructor(model, providerName, sdk);
60
60
  }
@@ -83,7 +83,8 @@ export declare function getTelemetryStatus(): {
83
83
  enabled: boolean;
84
84
  initialized: boolean;
85
85
  };
86
- export type { TextGenerationOptions, TextGenerationResult, AnalyticsData, EvaluationData, } from "./core/types.js";
86
+ export type { TextGenerationOptions, TextGenerationResult, AnalyticsData, } from "./core/types.js";
87
+ export type { EvaluationData } from "./types/providers.js";
87
88
  /**
88
89
  * BACKWARD COMPATIBILITY: Legacy generateText function
89
90
  * Provides standalone generateText function for existing code that uses it
@@ -357,6 +357,9 @@ export class ExternalServerManager extends EventEmitter {
357
357
  // Start the server
358
358
  await this.startServer(serverId);
359
359
  const finalInstance = this.servers.get(serverId);
360
+ if (!finalInstance) {
361
+ throw new Error(`Server ${serverId} not found after registration`);
362
+ }
360
363
  // Convert RuntimeMCPServerInfo to ExternalMCPServerInstance for return
361
364
  const convertedInstance = {
362
365
  config: finalInstance.config,
@@ -927,11 +930,18 @@ export class ExternalServerManager extends EventEmitter {
927
930
  serverId: serverId,
928
931
  category: detectCategory({ isExternal: true, serverId }),
929
932
  };
930
- registrations.push(toolRegistry.registerTool(toolId, toolInfo, {
931
- execute: async (params) => await this.executeTool(serverId, toolName, params, {
932
- timeout: this.config.defaultTimeout,
933
- }),
934
- }));
933
+ try {
934
+ registrations.push(toolRegistry.registerTool(toolId, toolInfo, {
935
+ execute: async (params, _context) => {
936
+ // Execute tool via ExternalServerManager for proper lifecycle management
937
+ return await this.executeTool(serverId, toolName, params, { timeout: this.config.defaultTimeout });
938
+ },
939
+ }));
940
+ mcpLogger.debug(`[ExternalServerManager] Registered tool with main registry: ${toolId}`);
941
+ }
942
+ catch (registrationError) {
943
+ mcpLogger.warn(`[ExternalServerManager] Failed to register tool ${toolId} with main registry:`, registrationError);
944
+ }
935
945
  }
936
946
  const results = await Promise.allSettled(registrations);
937
947
  const ok = results.filter((r) => r.status === "fulfilled").length;
@@ -1009,7 +1019,6 @@ export class ExternalServerManager extends EventEmitter {
1009
1019
  }
1010
1020
  }
1011
1021
  catch (error) {
1012
- const duration = Date.now() - startTime;
1013
1022
  instance.metrics.totalErrors++;
1014
1023
  mcpLogger.error(`[ExternalServerManager] Tool execution failed: ${toolName} on ${serverId}`, error);
1015
1024
  throw error;
@@ -116,7 +116,7 @@ export function validateTool(tool) {
116
116
  const validation = validateMCPTool(tool);
117
117
  return validation.isValid;
118
118
  }
119
- catch (error) {
119
+ catch {
120
120
  return false;
121
121
  }
122
122
  }
@@ -18,7 +18,7 @@ export declare function listMCPs(): Promise<McpMetadata[]>;
18
18
  /**
19
19
  * Execute an MCP operation - simplified
20
20
  */
21
- export declare function executeMCP<T = unknown>(name: string, config: unknown, args: unknown, context?: {
21
+ export declare function executeMCP<T = unknown>(_name: string, _config: unknown, _args: unknown, _context?: {
22
22
  sessionId?: string;
23
23
  userId?: string;
24
24
  }): Promise<T>;
@@ -21,7 +21,7 @@ export async function listMCPs() {
21
21
  /**
22
22
  * Execute an MCP operation - simplified
23
23
  */
24
- export async function executeMCP(name, config, args, context) {
24
+ export async function executeMCP(_name, _config, _args, _context) {
25
25
  throw new Error("MCP execution not available - ecosystem removed");
26
26
  }
27
27
  /**
@@ -285,7 +285,11 @@ export class CircuitBreakerManager {
285
285
  this.breakers.set(name, breaker);
286
286
  mcpLogger.debug(`[CircuitBreakerManager] Created circuit breaker: ${name}`);
287
287
  }
288
- return this.breakers.get(name);
288
+ const breaker = this.breakers.get(name);
289
+ if (!breaker) {
290
+ throw new Error(`Circuit breaker ${name} not found after creation`);
291
+ }
292
+ return breaker;
289
293
  }
290
294
  /**
291
295
  * Remove a circuit breaker and clean up its resources
@@ -192,6 +192,9 @@ export class MCPClientFactory {
192
192
  throw new Error("Process failed to start or exited immediately");
193
193
  }
194
194
  // Create transport
195
+ if (!config.command) {
196
+ throw new Error(`Command is required for stdio transport`);
197
+ }
195
198
  const transport = new StdioClientTransport({
196
199
  command: config.command,
197
200
  args: config.args || [],
@@ -44,15 +44,15 @@ export declare class MCPRegistry implements McpRegistry {
44
44
  /**
45
45
  * Register a server (compatible with new interface)
46
46
  */
47
- registerServer(serverId: string, serverConfig?: unknown, context?: ExecutionContext): Promise<void>;
47
+ registerServer(serverId: string, serverConfig?: unknown, _context?: ExecutionContext): Promise<void>;
48
48
  /**
49
49
  * Execute a tool (mock implementation for tests)
50
50
  */
51
- executeTool<T = unknown>(toolName: string, args?: unknown, context?: ExecutionContext): Promise<T>;
51
+ executeTool<T = unknown>(toolName: string, args?: unknown, _context?: ExecutionContext): Promise<T>;
52
52
  /**
53
53
  * List all tools (compatible with new interface)
54
54
  */
55
- listTools(context?: ExecutionContext): Promise<ToolInfo[]>;
55
+ listTools(_context?: ExecutionContext): Promise<ToolInfo[]>;
56
56
  /**
57
57
  * Register a server (legacy sync version)
58
58
  */
@@ -53,7 +53,7 @@ export class MCPRegistry {
53
53
  /**
54
54
  * Register a server (compatible with new interface)
55
55
  */
56
- async registerServer(serverId, serverConfig, context) {
56
+ async registerServer(serverId, serverConfig, _context) {
57
57
  const plugin = {
58
58
  metadata: {
59
59
  name: serverId,
@@ -74,14 +74,14 @@ export class MCPRegistry {
74
74
  /**
75
75
  * Execute a tool (mock implementation for tests)
76
76
  */
77
- async executeTool(toolName, args, context) {
77
+ async executeTool(toolName, args, _context) {
78
78
  registryLogger.info(`Executing tool: ${toolName}`);
79
79
  return { result: `Mock execution of ${toolName}`, args };
80
80
  }
81
81
  /**
82
82
  * List all tools (compatible with new interface)
83
83
  */
84
- async listTools(context) {
84
+ async listTools(_context) {
85
85
  const tools = this.list().map((plugin) => ({
86
86
  name: plugin.metadata.name,
87
87
  description: plugin.metadata.description || "No description",
@@ -78,7 +78,7 @@ const OptimizeParametersSchema = z.object({
78
78
  * AI Usage Analysis Tool
79
79
  * Analyzes AI usage patterns, token consumption, and cost optimization opportunities
80
80
  */
81
- const analyzeAIUsageTool = {
81
+ const _analyzeAIUsageTool = {
82
82
  name: "analyze-ai-usage",
83
83
  description: "Analyze AI usage patterns, token consumption, and cost optimization opportunities",
84
84
  category: "ai-analysis",
@@ -163,7 +163,7 @@ const analyzeAIUsageTool = {
163
163
  * Provider Performance Benchmarking Tool
164
164
  * Benchmarks AI provider performance across latency, quality, and cost metrics
165
165
  */
166
- const benchmarkProviderPerformanceTool = {
166
+ const _benchmarkProviderPerformanceTool = {
167
167
  name: "benchmark-provider-performance",
168
168
  description: "Benchmark AI provider performance across latency, quality, and cost metrics",
169
169
  category: "ai-analysis",
@@ -199,7 +199,7 @@ const benchmarkProviderPerformanceTool = {
199
199
  });
200
200
  if (result && result.usage) {
201
201
  totalLatency += Date.now() - testStartTime;
202
- totalTokens += result.usage.totalTokens || 0;
202
+ totalTokens += result.usage.total || 0;
203
203
  successfulTests++;
204
204
  }
205
205
  }
@@ -210,7 +210,7 @@ const benchmarkProviderPerformanceTool = {
210
210
  avgLatency: successfulTests > 0
211
211
  ? Math.round(totalLatency / successfulTests)
212
212
  : 0,
213
- totalTokens: totalTokens,
213
+ total: totalTokens,
214
214
  successRate: (successfulTests /
215
215
  (testPrompts.length * typedParams.iterations)) *
216
216
  100,
@@ -259,7 +259,7 @@ const benchmarkProviderPerformanceTool = {
259
259
  * Prompt Parameter Optimization Tool
260
260
  * Optimizes prompt parameters (temperature, max tokens) for better AI output quality and efficiency
261
261
  */
262
- const optimizePromptParametersTool = {
262
+ const _optimizePromptParametersTool = {
263
263
  name: "optimize-prompt-parameters",
264
264
  description: "Optimize prompt parameters (temperature, max tokens) for better AI output quality and efficiency",
265
265
  category: "ai-optimization",
@@ -99,7 +99,7 @@ const debugAIOutputSchema = z.object({
99
99
  /**
100
100
  * Generate test cases for code functions
101
101
  */
102
- const generateTestCasesTool = {
102
+ const _generateTestCasesTool = {
103
103
  name: "generate-test-cases",
104
104
  description: "Generate comprehensive test cases for code functions with various test types and frameworks",
105
105
  category: "ai-workflow",
@@ -203,7 +203,7 @@ Generate 3-5 comprehensive test cases covering the requested types.`;
203
203
  /**
204
204
  * Refactor code for improved quality
205
205
  */
206
- const refactorCodeTool = {
206
+ const _refactorCodeTool = {
207
207
  name: "refactor-code",
208
208
  description: "AI-powered code refactoring for improved readability, performance, and maintainability",
209
209
  category: "ai-workflow",
@@ -316,7 +316,7 @@ Focus on real, actionable improvements based on the specified objectives.`;
316
316
  /**
317
317
  * Generate documentation from code
318
318
  */
319
- const generateDocumentationTool = {
319
+ const _generateDocumentationTool = {
320
320
  name: "generate-documentation",
321
321
  description: "Automatically generate comprehensive documentation from code",
322
322
  category: "ai-workflow",
@@ -427,7 +427,7 @@ Focus on creating accurate, useful documentation that explains the code's purpos
427
427
  /**
428
428
  * Debug AI-generated output
429
429
  */
430
- const debugAIOutputTool = {
430
+ const _debugAIOutputTool = {
431
431
  name: "debug-ai-output",
432
432
  description: "Analyze and debug AI-generated output to identify issues and suggest improvements",
433
433
  category: "ai-workflow",
@@ -549,13 +549,13 @@ Provide thorough, actionable analysis focused on improving AI output quality.`;
549
549
  },
550
550
  };
551
551
  // Helper functions
552
- function extractFunctionName(code) {
552
+ function _extractFunctionName(code) {
553
553
  const match = code.match(/function\s+(\w+)|const\s+(\w+)\s*=|(\w+)\s*\(/);
554
554
  return match
555
555
  ? match[1] || match[2] || match[3] || "processData"
556
556
  : "processData";
557
557
  }
558
- function simulateRefactoring(code, objectives, styleGuide) {
558
+ function _simulateRefactoring(code, objectives, _styleGuide) {
559
559
  // Simulate basic refactoring
560
560
  let refactored = code;
561
561
  if (objectives.includes("readability")) {
@@ -61,7 +61,7 @@ utilityServer.registerTool({
61
61
  });
62
62
  resultData.actualTimezone = timezone;
63
63
  }
64
- catch (tzError) {
64
+ catch {
65
65
  const fallbackTimezone = "Asia/Kolkata";
66
66
  logger.warn(`[Utility] Invalid timezone '${timezone}', falling back to ${fallbackTimezone}`);
67
67
  resultData.localTime = now.toLocaleString("en-US", {
@@ -6,7 +6,7 @@
6
6
  import { EventEmitter } from "events";
7
7
  import { mcpLogger } from "../utils/logger.js";
8
8
  import { globalCircuitBreakerManager } from "./mcpCircuitBreaker.js";
9
- import { isObject, isNullish, } from "../utils/typeUtils.js";
9
+ import { isObject, isNullish } from "../utils/typeUtils.js";
10
10
  import { validateToolName, validateToolDescription, } from "../utils/parameterValidation.js";
11
11
  /**
12
12
  * ToolDiscoveryService
@@ -133,6 +133,9 @@ export class ToolDiscoveryService extends EventEmitter {
133
133
  this.serverToolStorage.set(serverId, []);
134
134
  }
135
135
  const serverTools = this.serverToolStorage.get(serverId);
136
+ if (!serverTools) {
137
+ throw new Error(`Server tools storage not found for ${serverId}`);
138
+ }
136
139
  // Add tool if not already present
137
140
  if (!serverTools.find((t) => t.name === tool.name)) {
138
141
  serverTools.push({
@@ -145,7 +148,10 @@ export class ToolDiscoveryService extends EventEmitter {
145
148
  if (!this.serverTools.has(serverId)) {
146
149
  this.serverTools.set(serverId, new Set());
147
150
  }
148
- this.serverTools.get(serverId).add(tool.name);
151
+ const serverToolSet = this.serverTools.get(serverId);
152
+ if (serverToolSet) {
153
+ serverToolSet.add(tool.name);
154
+ }
149
155
  registeredTools.push(toolInfo);
150
156
  // Emit tool registered event
151
157
  this.emit("toolRegistered", {
@@ -81,11 +81,11 @@ export class MCPToolRegistry extends MCPRegistry {
81
81
  async registerServer(serverInfoOrId, serverConfigOrContext, context) {
82
82
  // Handle both signatures for backward compatibility
83
83
  let serverInfo;
84
- let finalContext;
84
+ let _finalContext;
85
85
  if (typeof serverInfoOrId === "string") {
86
86
  // Legacy signature: registerServer(serverId, serverConfig, context)
87
87
  const serverId = serverInfoOrId;
88
- finalContext = context;
88
+ _finalContext = context;
89
89
  // Convert legacy call to MCPServerInfo format using smart defaults
90
90
  serverInfo = createMCPServerInfo({
91
91
  id: serverId,
@@ -97,7 +97,7 @@ export class MCPToolRegistry extends MCPRegistry {
97
97
  else {
98
98
  // New signature: registerServer(serverInfo, context)
99
99
  serverInfo = serverInfoOrId;
100
- finalContext = serverConfigOrContext;
100
+ _finalContext = serverConfigOrContext;
101
101
  }
102
102
  const serverId = serverInfo.id;
103
103
  registryLogger.info(`Registering MCPServerInfo directly: ${serverId}`);
@@ -348,7 +348,7 @@ export class MCPToolRegistry extends MCPRegistry {
348
348
  if (filter.permissions && filter.permissions.length > 0) {
349
349
  result = result.filter((tool) => {
350
350
  const toolPermissions = tool.permissions || [];
351
- return filter.permissions.some((perm) => toolPermissions.includes(perm));
351
+ return (filter.permissions?.some((perm) => toolPermissions.includes(perm)) ?? false);
352
352
  });
353
353
  }
354
354
  }
@@ -30,10 +30,10 @@ export function createAnalyticsMiddleware() {
30
30
  responseTime,
31
31
  timestamp: new Date().toISOString(),
32
32
  usage: {
33
- inputTokens: result.usage?.promptTokens || 0,
34
- outputTokens: result.usage?.completionTokens || 0,
35
- totalTokens: (result.usage?.promptTokens || 0) +
36
- (result.usage?.completionTokens || 0),
33
+ input: result.usage?.promptTokens ?? 0,
34
+ output: result.usage?.completionTokens ?? 0,
35
+ total: (result.usage?.promptTokens ?? 0) +
36
+ (result.usage?.completionTokens ?? 0),
37
37
  },
38
38
  };
39
39
  // Store metrics for potential retrieval
@@ -13,7 +13,7 @@ export function createGuardrailsMiddleware(config = {}) {
13
13
  defaultEnabled: true,
14
14
  };
15
15
  const middleware = {
16
- wrapGenerate: async ({ doGenerate, params }) => {
16
+ wrapGenerate: async ({ doGenerate, params: _params }) => {
17
17
  logger.debug(`[GuardrailsMiddleware] Applying to generate call.`, {
18
18
  badWordsEnabled: !!config.badWords?.enabled,
19
19
  modelFilterEnabled: !!config.modelFilter?.enabled,
@@ -53,7 +53,7 @@ export function createGuardrailsMiddleware(config = {}) {
53
53
  }
54
54
  return result;
55
55
  },
56
- wrapStream: async ({ doStream, params }) => {
56
+ wrapStream: async ({ doStream, params: _params }) => {
57
57
  logger.debug(`[GuardrailsMiddleware] Applying to stream call.`, {
58
58
  badWordsEnabled: !!config.badWords?.enabled,
59
59
  });