@juspay/neurolink 7.29.2 → 7.29.3

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 (198) hide show
  1. package/CHANGELOG.md +6 -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/core/analytics.d.ts +2 -24
  17. package/dist/core/analytics.js +12 -17
  18. package/dist/core/baseProvider.d.ts +30 -1
  19. package/dist/core/baseProvider.js +180 -198
  20. package/dist/core/dynamicModels.d.ts +4 -4
  21. package/dist/core/dynamicModels.js +7 -7
  22. package/dist/core/evaluation.d.ts +9 -9
  23. package/dist/core/evaluation.js +117 -65
  24. package/dist/core/evaluationProviders.d.ts +18 -2
  25. package/dist/core/evaluationProviders.js +15 -13
  26. package/dist/core/modelConfiguration.d.ts +63 -0
  27. package/dist/core/modelConfiguration.js +354 -290
  28. package/dist/core/streamAnalytics.d.ts +10 -5
  29. package/dist/core/streamAnalytics.js +10 -10
  30. package/dist/core/types.d.ts +19 -109
  31. package/dist/core/types.js +13 -0
  32. package/dist/factories/providerFactory.js +1 -1
  33. package/dist/index.d.ts +2 -1
  34. package/dist/lib/config/configManager.js +5 -2
  35. package/dist/lib/core/analytics.d.ts +2 -24
  36. package/dist/lib/core/analytics.js +12 -17
  37. package/dist/lib/core/baseProvider.d.ts +30 -1
  38. package/dist/lib/core/baseProvider.js +180 -198
  39. package/dist/lib/core/dynamicModels.js +7 -7
  40. package/dist/lib/core/evaluation.d.ts +9 -9
  41. package/dist/lib/core/evaluation.js +117 -65
  42. package/dist/lib/core/evaluationProviders.d.ts +18 -2
  43. package/dist/lib/core/evaluationProviders.js +15 -13
  44. package/dist/lib/core/modelConfiguration.d.ts +63 -0
  45. package/dist/lib/core/modelConfiguration.js +354 -290
  46. package/dist/lib/core/streamAnalytics.d.ts +10 -5
  47. package/dist/lib/core/streamAnalytics.js +10 -10
  48. package/dist/lib/core/types.d.ts +19 -109
  49. package/dist/lib/core/types.js +13 -0
  50. package/dist/lib/factories/providerFactory.js +1 -1
  51. package/dist/lib/index.d.ts +2 -1
  52. package/dist/lib/mcp/externalServerManager.js +15 -6
  53. package/dist/lib/mcp/factory.js +1 -1
  54. package/dist/lib/mcp/index.d.ts +1 -1
  55. package/dist/lib/mcp/index.js +1 -1
  56. package/dist/lib/mcp/mcpCircuitBreaker.js +5 -1
  57. package/dist/lib/mcp/mcpClientFactory.js +3 -0
  58. package/dist/lib/mcp/registry.d.ts +3 -3
  59. package/dist/lib/mcp/registry.js +3 -3
  60. package/dist/lib/mcp/servers/aiProviders/aiAnalysisTools.js +5 -5
  61. package/dist/lib/mcp/servers/aiProviders/aiWorkflowTools.js +6 -6
  62. package/dist/lib/mcp/servers/utilities/utilityServer.js +1 -1
  63. package/dist/lib/mcp/toolDiscoveryService.js +8 -2
  64. package/dist/lib/mcp/toolRegistry.js +4 -4
  65. package/dist/lib/middleware/builtin/analytics.js +4 -4
  66. package/dist/lib/middleware/builtin/guardrails.js +2 -2
  67. package/dist/lib/middleware/registry.js +11 -2
  68. package/dist/lib/models/modelRegistry.d.ts +1 -1
  69. package/dist/lib/models/modelRegistry.js +3 -3
  70. package/dist/lib/models/modelResolver.d.ts +1 -1
  71. package/dist/lib/models/modelResolver.js +2 -2
  72. package/dist/lib/neurolink.d.ts +116 -0
  73. package/dist/lib/neurolink.js +716 -922
  74. package/dist/lib/providers/amazonSagemaker.d.ts +1 -1
  75. package/dist/lib/providers/amazonSagemaker.js +12 -3
  76. package/dist/lib/providers/anthropic.d.ts +1 -1
  77. package/dist/lib/providers/anthropic.js +7 -6
  78. package/dist/lib/providers/anthropicBaseProvider.d.ts +1 -1
  79. package/dist/lib/providers/anthropicBaseProvider.js +4 -3
  80. package/dist/lib/providers/azureOpenai.d.ts +1 -1
  81. package/dist/lib/providers/azureOpenai.js +1 -1
  82. package/dist/lib/providers/googleAiStudio.d.ts +1 -1
  83. package/dist/lib/providers/googleAiStudio.js +2 -2
  84. package/dist/lib/providers/googleVertex.d.ts +40 -0
  85. package/dist/lib/providers/googleVertex.js +330 -274
  86. package/dist/lib/providers/huggingFace.js +1 -1
  87. package/dist/lib/providers/mistral.d.ts +1 -1
  88. package/dist/lib/providers/mistral.js +2 -2
  89. package/dist/lib/providers/ollama.d.ts +4 -0
  90. package/dist/lib/providers/ollama.js +38 -18
  91. package/dist/lib/providers/openAI.d.ts +1 -1
  92. package/dist/lib/providers/openAI.js +2 -2
  93. package/dist/lib/providers/sagemaker/adaptive-semaphore.js +7 -4
  94. package/dist/lib/providers/sagemaker/client.js +13 -3
  95. package/dist/lib/providers/sagemaker/config.js +5 -1
  96. package/dist/lib/providers/sagemaker/detection.js +19 -9
  97. package/dist/lib/providers/sagemaker/errors.d.ts +8 -1
  98. package/dist/lib/providers/sagemaker/errors.js +103 -20
  99. package/dist/lib/providers/sagemaker/language-model.d.ts +3 -3
  100. package/dist/lib/providers/sagemaker/language-model.js +4 -4
  101. package/dist/lib/providers/sagemaker/parsers.js +14 -6
  102. package/dist/lib/providers/sagemaker/streaming.js +14 -3
  103. package/dist/lib/providers/sagemaker/types.d.ts +1 -1
  104. package/dist/lib/proxy/awsProxyIntegration.js +1 -1
  105. package/dist/lib/sdk/toolRegistration.d.ts +1 -1
  106. package/dist/lib/types/cli.d.ts +80 -8
  107. package/dist/lib/types/contextTypes.js +2 -2
  108. package/dist/lib/types/generateTypes.d.ts +4 -6
  109. package/dist/lib/types/providers.d.ts +81 -19
  110. package/dist/lib/types/providers.js +6 -6
  111. package/dist/lib/types/streamTypes.d.ts +4 -6
  112. package/dist/lib/types/typeAliases.d.ts +1 -1
  113. package/dist/lib/utils/analyticsUtils.d.ts +33 -0
  114. package/dist/lib/utils/analyticsUtils.js +76 -0
  115. package/dist/lib/utils/errorHandling.js +4 -1
  116. package/dist/lib/utils/evaluationUtils.d.ts +27 -0
  117. package/dist/lib/utils/evaluationUtils.js +131 -0
  118. package/dist/lib/utils/optionsUtils.js +10 -1
  119. package/dist/lib/utils/performance.d.ts +1 -1
  120. package/dist/lib/utils/performance.js +15 -3
  121. package/dist/lib/utils/providerHealth.d.ts +48 -0
  122. package/dist/lib/utils/providerHealth.js +199 -254
  123. package/dist/lib/utils/providerUtils.js +2 -2
  124. package/dist/lib/utils/timeout.js +8 -3
  125. package/dist/mcp/externalServerManager.js +15 -6
  126. package/dist/mcp/factory.js +1 -1
  127. package/dist/mcp/index.d.ts +1 -1
  128. package/dist/mcp/index.js +1 -1
  129. package/dist/mcp/mcpCircuitBreaker.js +5 -1
  130. package/dist/mcp/mcpClientFactory.js +3 -0
  131. package/dist/mcp/registry.d.ts +3 -3
  132. package/dist/mcp/registry.js +3 -3
  133. package/dist/mcp/servers/aiProviders/aiAnalysisTools.js +5 -5
  134. package/dist/mcp/servers/aiProviders/aiWorkflowTools.js +6 -6
  135. package/dist/mcp/servers/utilities/utilityServer.js +1 -1
  136. package/dist/mcp/toolDiscoveryService.js +8 -2
  137. package/dist/mcp/toolRegistry.js +4 -4
  138. package/dist/middleware/builtin/analytics.js +4 -4
  139. package/dist/middleware/builtin/guardrails.js +2 -2
  140. package/dist/middleware/registry.js +11 -2
  141. package/dist/models/modelRegistry.d.ts +1 -1
  142. package/dist/models/modelRegistry.js +3 -3
  143. package/dist/models/modelResolver.d.ts +1 -1
  144. package/dist/models/modelResolver.js +2 -2
  145. package/dist/neurolink.d.ts +116 -0
  146. package/dist/neurolink.js +716 -922
  147. package/dist/providers/amazonSagemaker.d.ts +1 -1
  148. package/dist/providers/amazonSagemaker.js +12 -3
  149. package/dist/providers/anthropic.d.ts +1 -1
  150. package/dist/providers/anthropic.js +7 -6
  151. package/dist/providers/anthropicBaseProvider.d.ts +1 -1
  152. package/dist/providers/anthropicBaseProvider.js +4 -3
  153. package/dist/providers/azureOpenai.d.ts +1 -1
  154. package/dist/providers/azureOpenai.js +1 -1
  155. package/dist/providers/googleAiStudio.d.ts +1 -1
  156. package/dist/providers/googleAiStudio.js +2 -2
  157. package/dist/providers/googleVertex.d.ts +40 -0
  158. package/dist/providers/googleVertex.js +330 -274
  159. package/dist/providers/huggingFace.js +1 -1
  160. package/dist/providers/mistral.d.ts +1 -1
  161. package/dist/providers/mistral.js +2 -2
  162. package/dist/providers/ollama.d.ts +4 -0
  163. package/dist/providers/ollama.js +38 -18
  164. package/dist/providers/openAI.d.ts +1 -1
  165. package/dist/providers/openAI.js +2 -2
  166. package/dist/providers/sagemaker/adaptive-semaphore.js +7 -4
  167. package/dist/providers/sagemaker/client.js +13 -3
  168. package/dist/providers/sagemaker/config.js +5 -1
  169. package/dist/providers/sagemaker/detection.js +19 -9
  170. package/dist/providers/sagemaker/errors.d.ts +8 -1
  171. package/dist/providers/sagemaker/errors.js +103 -20
  172. package/dist/providers/sagemaker/language-model.d.ts +3 -3
  173. package/dist/providers/sagemaker/language-model.js +4 -4
  174. package/dist/providers/sagemaker/parsers.js +14 -6
  175. package/dist/providers/sagemaker/streaming.js +14 -3
  176. package/dist/providers/sagemaker/types.d.ts +1 -1
  177. package/dist/proxy/awsProxyIntegration.js +1 -1
  178. package/dist/sdk/toolRegistration.d.ts +1 -1
  179. package/dist/types/cli.d.ts +80 -8
  180. package/dist/types/contextTypes.js +2 -2
  181. package/dist/types/generateTypes.d.ts +4 -6
  182. package/dist/types/providers.d.ts +81 -19
  183. package/dist/types/providers.js +6 -6
  184. package/dist/types/streamTypes.d.ts +4 -6
  185. package/dist/types/typeAliases.d.ts +1 -1
  186. package/dist/utils/analyticsUtils.d.ts +33 -0
  187. package/dist/utils/analyticsUtils.js +76 -0
  188. package/dist/utils/errorHandling.js +4 -1
  189. package/dist/utils/evaluationUtils.d.ts +27 -0
  190. package/dist/utils/evaluationUtils.js +131 -0
  191. package/dist/utils/optionsUtils.js +10 -1
  192. package/dist/utils/performance.d.ts +1 -1
  193. package/dist/utils/performance.js +15 -3
  194. package/dist/utils/providerHealth.d.ts +48 -0
  195. package/dist/utils/providerHealth.js +199 -254
  196. package/dist/utils/providerUtils.js +2 -2
  197. package/dist/utils/timeout.js +8 -3
  198. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## [7.29.3](https://github.com/juspay/neurolink/compare/v7.29.2...v7.29.3) (2025-08-29)
2
+
3
+ ### Bug Fixes
4
+
5
+ - **(build):** resolve ESLint compliance and TypeScript compilation errors ([c9030f2](https://github.com/juspay/neurolink/commit/c9030f20b080b359ab5cdd014cecaf15a8b68789))
6
+
1
7
  ## [7.29.2](https://github.com/juspay/neurolink/compare/v7.29.1...v7.29.2) (2025-08-29)
2
8
 
3
9
  ### Bug Fixes
@@ -18,9 +18,9 @@ declare const ConfigSchema: z.ZodObject<{
18
18
  apiKey?: string | undefined;
19
19
  baseURL?: string | undefined;
20
20
  }, {
21
- model?: string | undefined;
22
21
  apiKey?: string | undefined;
23
22
  baseURL?: string | undefined;
23
+ model?: string | undefined;
24
24
  }>>;
25
25
  bedrock: z.ZodOptional<z.ZodObject<{
26
26
  region: z.ZodOptional<z.ZodString>;
@@ -73,8 +73,8 @@ declare const ConfigSchema: z.ZodObject<{
73
73
  model: string;
74
74
  apiKey?: string | undefined;
75
75
  }, {
76
- model?: string | undefined;
77
76
  apiKey?: string | undefined;
77
+ model?: string | undefined;
78
78
  }>>;
79
79
  azure: z.ZodOptional<z.ZodObject<{
80
80
  apiKey: z.ZodOptional<z.ZodString>;
@@ -87,8 +87,8 @@ declare const ConfigSchema: z.ZodObject<{
87
87
  endpoint?: string | undefined;
88
88
  deploymentId?: string | undefined;
89
89
  }, {
90
- model?: string | undefined;
91
90
  apiKey?: string | undefined;
91
+ model?: string | undefined;
92
92
  endpoint?: string | undefined;
93
93
  deploymentId?: string | undefined;
94
94
  }>>;
@@ -99,8 +99,8 @@ declare const ConfigSchema: z.ZodObject<{
99
99
  model: string;
100
100
  apiKey?: string | undefined;
101
101
  }, {
102
- model?: string | undefined;
103
102
  apiKey?: string | undefined;
103
+ model?: string | undefined;
104
104
  }>>;
105
105
  huggingface: z.ZodOptional<z.ZodObject<{
106
106
  apiKey: z.ZodOptional<z.ZodString>;
@@ -109,20 +109,20 @@ declare const ConfigSchema: z.ZodObject<{
109
109
  model: string;
110
110
  apiKey?: string | undefined;
111
111
  }, {
112
- model?: string | undefined;
113
112
  apiKey?: string | undefined;
113
+ model?: string | undefined;
114
114
  }>>;
115
115
  ollama: z.ZodOptional<z.ZodObject<{
116
116
  baseUrl: z.ZodDefault<z.ZodString>;
117
117
  model: z.ZodDefault<z.ZodString>;
118
118
  timeout: z.ZodDefault<z.ZodNumber>;
119
119
  }, "strip", z.ZodTypeAny, {
120
- model: string;
121
120
  timeout: number;
121
+ model: string;
122
122
  baseUrl: string;
123
123
  }, {
124
- model?: string | undefined;
125
124
  timeout?: number | undefined;
125
+ model?: string | undefined;
126
126
  baseUrl?: string | undefined;
127
127
  }>>;
128
128
  mistral: z.ZodOptional<z.ZodObject<{
@@ -132,23 +132,10 @@ declare const ConfigSchema: z.ZodObject<{
132
132
  model: string;
133
133
  apiKey?: string | undefined;
134
134
  }, {
135
- model?: string | undefined;
136
135
  apiKey?: string | undefined;
136
+ model?: string | undefined;
137
137
  }>>;
138
138
  }, "strip", z.ZodTypeAny, {
139
- "google-ai"?: {
140
- model: string;
141
- apiKey?: string | undefined;
142
- } | undefined;
143
- openai?: {
144
- model: string;
145
- apiKey?: string | undefined;
146
- baseURL?: string | undefined;
147
- } | undefined;
148
- anthropic?: {
149
- model: string;
150
- apiKey?: string | undefined;
151
- } | undefined;
152
139
  vertex?: {
153
140
  model: string;
154
141
  location: string;
@@ -165,39 +152,39 @@ declare const ConfigSchema: z.ZodObject<{
165
152
  secretAccessKey?: string | undefined;
166
153
  sessionToken?: string | undefined;
167
154
  } | undefined;
168
- azure?: {
155
+ anthropic?: {
169
156
  model: string;
170
157
  apiKey?: string | undefined;
171
- endpoint?: string | undefined;
172
- deploymentId?: string | undefined;
173
158
  } | undefined;
174
- ollama?: {
159
+ openai?: {
175
160
  model: string;
176
- timeout: number;
177
- baseUrl: string;
161
+ apiKey?: string | undefined;
162
+ baseURL?: string | undefined;
178
163
  } | undefined;
179
- mistral?: {
164
+ "google-ai"?: {
180
165
  model: string;
181
166
  apiKey?: string | undefined;
182
167
  } | undefined;
183
- huggingface?: {
168
+ ollama?: {
169
+ timeout: number;
184
170
  model: string;
185
- apiKey?: string | undefined;
171
+ baseUrl: string;
186
172
  } | undefined;
187
- }, {
188
- "google-ai"?: {
189
- model?: string | undefined;
173
+ azure?: {
174
+ model: string;
190
175
  apiKey?: string | undefined;
176
+ endpoint?: string | undefined;
177
+ deploymentId?: string | undefined;
191
178
  } | undefined;
192
- openai?: {
193
- model?: string | undefined;
179
+ huggingface?: {
180
+ model: string;
194
181
  apiKey?: string | undefined;
195
- baseURL?: string | undefined;
196
182
  } | undefined;
197
- anthropic?: {
198
- model?: string | undefined;
183
+ mistral?: {
184
+ model: string;
199
185
  apiKey?: string | undefined;
200
186
  } | undefined;
187
+ }, {
201
188
  vertex?: {
202
189
  model?: string | undefined;
203
190
  projectId?: string | undefined;
@@ -214,24 +201,37 @@ declare const ConfigSchema: z.ZodObject<{
214
201
  secretAccessKey?: string | undefined;
215
202
  sessionToken?: string | undefined;
216
203
  } | undefined;
217
- azure?: {
204
+ anthropic?: {
205
+ apiKey?: string | undefined;
218
206
  model?: string | undefined;
207
+ } | undefined;
208
+ openai?: {
219
209
  apiKey?: string | undefined;
220
- endpoint?: string | undefined;
221
- deploymentId?: string | undefined;
210
+ baseURL?: string | undefined;
211
+ model?: string | undefined;
222
212
  } | undefined;
223
- ollama?: {
213
+ "google-ai"?: {
214
+ apiKey?: string | undefined;
224
215
  model?: string | undefined;
216
+ } | undefined;
217
+ ollama?: {
225
218
  timeout?: number | undefined;
219
+ model?: string | undefined;
226
220
  baseUrl?: string | undefined;
227
221
  } | undefined;
228
- mistral?: {
229
- model?: string | undefined;
222
+ azure?: {
230
223
  apiKey?: string | undefined;
224
+ model?: string | undefined;
225
+ endpoint?: string | undefined;
226
+ deploymentId?: string | undefined;
231
227
  } | undefined;
232
228
  huggingface?: {
229
+ apiKey?: string | undefined;
233
230
  model?: string | undefined;
231
+ } | undefined;
232
+ mistral?: {
234
233
  apiKey?: string | undefined;
234
+ model?: string | undefined;
235
235
  } | undefined;
236
236
  }>>;
237
237
  profiles: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodAny>>;
@@ -456,19 +456,6 @@ declare const ConfigSchema: z.ZodObject<{
456
456
  }>>;
457
457
  }, "strip", z.ZodTypeAny, {
458
458
  providers: {
459
- "google-ai"?: {
460
- model: string;
461
- apiKey?: string | undefined;
462
- } | undefined;
463
- openai?: {
464
- model: string;
465
- apiKey?: string | undefined;
466
- baseURL?: string | undefined;
467
- } | undefined;
468
- anthropic?: {
469
- model: string;
470
- apiKey?: string | undefined;
471
- } | undefined;
472
459
  vertex?: {
473
460
  model: string;
474
461
  location: string;
@@ -485,27 +472,40 @@ declare const ConfigSchema: z.ZodObject<{
485
472
  secretAccessKey?: string | undefined;
486
473
  sessionToken?: string | undefined;
487
474
  } | undefined;
488
- azure?: {
475
+ anthropic?: {
489
476
  model: string;
490
477
  apiKey?: string | undefined;
491
- endpoint?: string | undefined;
492
- deploymentId?: string | undefined;
493
478
  } | undefined;
494
- ollama?: {
479
+ openai?: {
480
+ model: string;
481
+ apiKey?: string | undefined;
482
+ baseURL?: string | undefined;
483
+ } | undefined;
484
+ "google-ai"?: {
495
485
  model: string;
486
+ apiKey?: string | undefined;
487
+ } | undefined;
488
+ ollama?: {
496
489
  timeout: number;
490
+ model: string;
497
491
  baseUrl: string;
498
492
  } | undefined;
499
- mistral?: {
493
+ azure?: {
500
494
  model: string;
501
495
  apiKey?: string | undefined;
496
+ endpoint?: string | undefined;
497
+ deploymentId?: string | undefined;
502
498
  } | undefined;
503
499
  huggingface?: {
504
500
  model: string;
505
501
  apiKey?: string | undefined;
506
502
  } | undefined;
503
+ mistral?: {
504
+ model: string;
505
+ apiKey?: string | undefined;
506
+ } | undefined;
507
507
  };
508
- defaultProvider: "google-ai" | "openai" | "anthropic" | "vertex" | "bedrock" | "azure" | "ollama" | "mistral" | "huggingface" | "auto";
508
+ defaultProvider: "vertex" | "bedrock" | "anthropic" | "openai" | "google-ai" | "ollama" | "azure" | "huggingface" | "mistral" | "auto";
509
509
  profiles: Record<string, any>;
510
510
  preferences: {
511
511
  maxTokens: number;
@@ -554,19 +554,6 @@ declare const ConfigSchema: z.ZodObject<{
554
554
  };
555
555
  }, {
556
556
  providers?: {
557
- "google-ai"?: {
558
- model?: string | undefined;
559
- apiKey?: string | undefined;
560
- } | undefined;
561
- openai?: {
562
- model?: string | undefined;
563
- apiKey?: string | undefined;
564
- baseURL?: string | undefined;
565
- } | undefined;
566
- anthropic?: {
567
- model?: string | undefined;
568
- apiKey?: string | undefined;
569
- } | undefined;
570
557
  vertex?: {
571
558
  model?: string | undefined;
572
559
  projectId?: string | undefined;
@@ -583,27 +570,40 @@ declare const ConfigSchema: z.ZodObject<{
583
570
  secretAccessKey?: string | undefined;
584
571
  sessionToken?: string | undefined;
585
572
  } | undefined;
586
- azure?: {
573
+ anthropic?: {
574
+ apiKey?: string | undefined;
575
+ model?: string | undefined;
576
+ } | undefined;
577
+ openai?: {
578
+ apiKey?: string | undefined;
579
+ baseURL?: string | undefined;
587
580
  model?: string | undefined;
581
+ } | undefined;
582
+ "google-ai"?: {
588
583
  apiKey?: string | undefined;
589
- endpoint?: string | undefined;
590
- deploymentId?: string | undefined;
584
+ model?: string | undefined;
591
585
  } | undefined;
592
586
  ollama?: {
593
- model?: string | undefined;
594
587
  timeout?: number | undefined;
588
+ model?: string | undefined;
595
589
  baseUrl?: string | undefined;
596
590
  } | undefined;
597
- mistral?: {
598
- model?: string | undefined;
591
+ azure?: {
599
592
  apiKey?: string | undefined;
593
+ model?: string | undefined;
594
+ endpoint?: string | undefined;
595
+ deploymentId?: string | undefined;
600
596
  } | undefined;
601
597
  huggingface?: {
598
+ apiKey?: string | undefined;
602
599
  model?: string | undefined;
600
+ } | undefined;
601
+ mistral?: {
603
602
  apiKey?: string | undefined;
603
+ model?: string | undefined;
604
604
  } | undefined;
605
605
  } | undefined;
606
- defaultProvider?: "google-ai" | "openai" | "anthropic" | "vertex" | "bedrock" | "azure" | "ollama" | "mistral" | "huggingface" | "auto" | undefined;
606
+ defaultProvider?: "vertex" | "bedrock" | "anthropic" | "openai" | "google-ai" | "ollama" | "azure" | "huggingface" | "mistral" | "auto" | undefined;
607
607
  profiles?: Record<string, any> | undefined;
608
608
  preferences?: {
609
609
  maxTokens?: number | undefined;
@@ -390,6 +390,10 @@ export class MCPCommandFactory {
390
390
  static async executeInstall(argv) {
391
391
  try {
392
392
  const serverName = argv.server;
393
+ if (!serverName) {
394
+ logger.error(chalk.red("❌ Server name is required"));
395
+ process.exit(1);
396
+ }
393
397
  const serverConfig = POPULAR_MCP_SERVERS[serverName];
394
398
  if (!serverConfig) {
395
399
  logger.error(chalk.red(`❌ Unknown server: ${serverName}`));
@@ -409,11 +413,12 @@ export class MCPCommandFactory {
409
413
  const parsedEnv = JSON.parse(argv.env);
410
414
  env = { ...env, ...parsedEnv };
411
415
  }
412
- catch (_error) {
416
+ catch (error) {
413
417
  if (spinner) {
414
418
  spinner.fail();
415
419
  }
416
420
  logger.error(chalk.red("❌ Invalid JSON in env parameter"));
421
+ logger.error(chalk.red(`Error details: ${error instanceof Error ? error.message : String(error)}`));
417
422
  process.exit(1);
418
423
  }
419
424
  }
@@ -421,6 +426,7 @@ export class MCPCommandFactory {
421
426
  ...serverConfig,
422
427
  id: serverName,
423
428
  name: serverName,
429
+ env,
424
430
  });
425
431
  // Add server to NeuroLink - direct usage, zero transformations!
426
432
  const sdk = new NeuroLink();
@@ -461,6 +467,7 @@ export class MCPCommandFactory {
461
467
  }
462
468
  catch (testError) {
463
469
  logger.always(chalk.yellow("⚠️ Could not test connection"));
470
+ logger.debug(`Test connection _error: ${testError instanceof Error ? testError.message : String(testError)}`);
464
471
  }
465
472
  }
466
473
  catch (_error) {
@@ -474,7 +481,15 @@ export class MCPCommandFactory {
474
481
  static async executeAdd(argv) {
475
482
  try {
476
483
  const name = argv.name;
484
+ if (!name) {
485
+ logger.error(chalk.red("❌ Server name is required"));
486
+ process.exit(1);
487
+ }
477
488
  const command = argv.command;
489
+ if (!command) {
490
+ logger.error(chalk.red("❌ Command is required"));
491
+ process.exit(1);
492
+ }
478
493
  const spinner = argv.quiet
479
494
  ? null
480
495
  : ora(`Adding custom MCP server: ${name}...`).start();
@@ -484,11 +499,12 @@ export class MCPCommandFactory {
484
499
  try {
485
500
  env = JSON.parse(argv.env);
486
501
  }
487
- catch (_error) {
502
+ catch (error) {
488
503
  if (spinner) {
489
504
  spinner.fail();
490
505
  }
491
506
  logger.error(chalk.red("❌ Invalid JSON in env parameter"));
507
+ logger.error(chalk.red(`Error details: ${error instanceof Error ? error.message : String(error)}`));
492
508
  process.exit(1);
493
509
  }
494
510
  }
@@ -534,7 +550,6 @@ export class MCPCommandFactory {
534
550
  ? null
535
551
  : ora("Testing MCP server connections...").start();
536
552
  const sdk = new NeuroLink();
537
- const rawMcpStatus = await sdk.getMCPStatus();
538
553
  let serversToTest = await sdk.listMCPServers();
539
554
  if (targetServer) {
540
555
  serversToTest = serversToTest.filter((s) => s.name === targetServer);
@@ -596,7 +611,15 @@ export class MCPCommandFactory {
596
611
  static async executeExec(argv) {
597
612
  try {
598
613
  const serverName = argv.server;
614
+ if (!serverName) {
615
+ logger.error(chalk.red("❌ Server name is required"));
616
+ process.exit(1);
617
+ }
599
618
  const toolName = argv.tool;
619
+ if (!toolName) {
620
+ logger.error(chalk.red("❌ Tool name is required"));
621
+ process.exit(1);
622
+ }
600
623
  const spinner = argv.quiet
601
624
  ? null
602
625
  : ora(`Executing ${toolName} on ${serverName}...`).start();
@@ -606,11 +629,12 @@ export class MCPCommandFactory {
606
629
  try {
607
630
  params = JSON.parse(argv.params);
608
631
  }
609
- catch (_error) {
632
+ catch (error) {
610
633
  if (spinner) {
611
634
  spinner.fail();
612
635
  }
613
636
  logger.error(chalk.red("❌ Invalid JSON in params parameter"));
637
+ logger.error(chalk.red(`Error details: ${error instanceof Error ? error.message : String(error)}`));
614
638
  process.exit(1);
615
639
  }
616
640
  }
@@ -691,7 +715,7 @@ export class MCPCommandFactory {
691
715
  tool: toolName,
692
716
  server: serverName,
693
717
  params,
694
- error: errorMessage,
718
+ _error: errorMessage,
695
719
  success: false,
696
720
  timestamp: new Date().toISOString(),
697
721
  };
@@ -718,6 +742,10 @@ export class MCPCommandFactory {
718
742
  static async executeRemove(argv) {
719
743
  try {
720
744
  const serverName = argv.server;
745
+ if (!serverName) {
746
+ logger.error(chalk.red("❌ Server name is required"));
747
+ process.exit(1);
748
+ }
721
749
  const sdk = new NeuroLink();
722
750
  const allServers = await sdk.listMCPServers();
723
751
  const server = allServers.find((s) => s.name === serverName);
@@ -856,8 +884,9 @@ export class MCPCommandFactory {
856
884
  }
857
885
  }
858
886
  }
859
- catch (_error) {
860
- // Ignore errors in discovery
887
+ catch (error) {
888
+ // Log discovery errors for debugging but don't fail
889
+ logger.debug(`Claude Desktop discovery error: ${error instanceof Error ? error.message : String(error)}`);
861
890
  }
862
891
  return servers;
863
892
  }
@@ -892,8 +921,9 @@ export class MCPCommandFactory {
892
921
  }
893
922
  }
894
923
  }
895
- catch (_error) {
896
- // Ignore errors in discovery
924
+ catch (error) {
925
+ // Log discovery errors for debugging but don't fail
926
+ logger.debug(`VS Code discovery error: ${error instanceof Error ? error.message : String(error)}`);
897
927
  }
898
928
  return servers;
899
929
  }
@@ -4,7 +4,7 @@
4
4
  * Part of Phase 4.1 - Models Command System
5
5
  */
6
6
  import { ModelResolver, formatSearchResults, formatRecommendation, formatComparison, } from "../../lib/models/modelResolver.js";
7
- import { getAllModels, formatModelForDisplay, } from "../../lib/models/modelRegistry.js";
7
+ import { getAllModels, getModelsByProvider, getAvailableProviders, formatModelForDisplay, } from "../../lib/models/modelRegistry.js";
8
8
  import chalk from "chalk";
9
9
  import ora from "ora";
10
10
  import { logger } from "../../lib/utils/logger.js";
@@ -65,12 +65,12 @@ export class ModelsCommandFactory {
65
65
  describe: "Manage and discover AI models",
66
66
  builder: (yargs) => {
67
67
  return yargs
68
- .command("list", "List available models with filtering options", this.buildListOptions, this.executeList)
69
- .command("search [query]", "Search models by capabilities, use case, or features", this.buildSearchOptions, this.executeSearch)
70
- .command("best", "Get the best model recommendation for your use case", this.buildBestOptions, this.executeBest)
71
- .command("resolve <model>", "Resolve model aliases and find exact model names", this.buildResolveOptions, this.executeResolve)
72
- .command("compare <models..>", "Compare multiple models side by side", this.buildCompareOptions, this.executeCompare)
73
- .command("stats", "Show model registry statistics and insights", this.buildStatsOptions, this.executeStats)
68
+ .command("list", "List available models with filtering options", (yargs) => this.buildListOptions(yargs), this.executeList)
69
+ .command("search [query]", "Search models by capabilities, use case, or features", (yargs) => this.buildSearchOptions(yargs), this.executeSearch)
70
+ .command("best", "Get the best model recommendation for your use case", (yargs) => this.buildBestOptions(yargs), this.executeBest)
71
+ .command("resolve <model>", "Resolve model aliases and find exact model names", (yargs) => this.buildResolveOptions(yargs), this.executeResolve)
72
+ .command("compare <models..>", "Compare multiple models side by side", (yargs) => this.buildCompareOptions(yargs), this.executeCompare)
73
+ .command("stats", "Show model registry statistics and insights", (yargs) => this.buildStatsOptions(yargs), this.executeStats)
74
74
  .option("format", {
75
75
  choices: ["table", "json", "compact"],
76
76
  default: "table",
@@ -105,17 +105,7 @@ export class ModelsCommandFactory {
105
105
  static buildListOptions(yargs) {
106
106
  return yargs
107
107
  .option("provider", {
108
- choices: [
109
- "openai",
110
- "bedrock",
111
- "vertex",
112
- "anthropic",
113
- "azure",
114
- "google-ai",
115
- "huggingface",
116
- "ollama",
117
- "mistral",
118
- ],
108
+ choices: getAvailableProviders(),
119
109
  description: "Filter by AI provider",
120
110
  })
121
111
  .option("category", {
@@ -306,19 +296,25 @@ export class ModelsCommandFactory {
306
296
  ? null
307
297
  : ora("Loading model registry...").start();
308
298
  let models = getAllModels();
309
- // Apply filters
299
+ // Apply filters - Use getModelsByProvider for efficiency when provider is specified
310
300
  if (argv.provider) {
311
301
  const providers = Array.isArray(argv.provider)
312
302
  ? argv.provider
313
303
  : [argv.provider];
314
- models = models.filter((model) => providers.includes(model.provider));
304
+ // Use optimized function for single provider, filter for multiple
305
+ if (providers.length === 1) {
306
+ models = getModelsByProvider(providers[0]);
307
+ }
308
+ else {
309
+ models = models.filter((model) => providers.includes(model.provider));
310
+ }
315
311
  }
316
312
  if (argv.category) {
317
313
  models = models.filter((model) => model.category === argv.category);
318
314
  }
319
315
  if (argv.capability) {
320
316
  models = models.filter((model) => {
321
- return argv.capability.every((cap) => model.capabilities[cap]);
317
+ return (argv.capability?.every((cap) => model.capabilities[cap]) ?? false);
322
318
  });
323
319
  }
324
320
  if (!argv.deprecated) {
@@ -525,6 +521,10 @@ export class ModelsCommandFactory {
525
521
  static async executeResolve(argv) {
526
522
  try {
527
523
  const query = argv.model;
524
+ if (!query) {
525
+ logger.error(chalk.red("❌ Model name is required"));
526
+ process.exit(1);
527
+ }
528
528
  const model = ModelResolver.resolveModel(query);
529
529
  if (!model) {
530
530
  logger.always(chalk.red(`❌ Could not resolve model: ${query}`));
@@ -567,6 +567,10 @@ export class ModelsCommandFactory {
567
567
  static async executeCompare(argv) {
568
568
  try {
569
569
  const modelIds = argv.models;
570
+ if (!modelIds || modelIds.length === 0) {
571
+ logger.error(chalk.red("❌ Model IDs are required for comparison"));
572
+ process.exit(1);
573
+ }
570
574
  const comparison = ModelResolver.compareModels(modelIds);
571
575
  if (argv.format === "json") {
572
576
  logger.always(JSON.stringify(formatComparison(comparison), null, 2));
@@ -100,9 +100,9 @@ async function removeModelHandler(argv) {
100
100
  }
101
101
  spinner.succeed(`Successfully removed ${model}`);
102
102
  }
103
- catch (error) {
103
+ catch (_error) {
104
104
  spinner.fail(`Failed to remove ${model}`);
105
- const errorMessage = error instanceof Error ? error.message : String(error);
105
+ const errorMessage = _error instanceof Error ? _error.message : String(_error);
106
106
  logger.error(chalk.red("Error:", errorMessage));
107
107
  process.exit(1);
108
108
  }
@@ -74,6 +74,14 @@ export declare class CLICommandFactory {
74
74
  * Execute the generate command
75
75
  */
76
76
  private static executeGenerate;
77
+ /**
78
+ * Log debug information for stream result
79
+ */
80
+ private static logStreamDebugInfo;
81
+ /**
82
+ * Handle stdin input for stream command
83
+ */
84
+ private static handleStdinInput;
77
85
  /**
78
86
  * Execute the stream command
79
87
  */