@juspay/neurolink 8.8.0 → 8.10.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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,20 @@
1
+ ## [8.10.0](https://github.com/juspay/neurolink/compare/v8.9.0...v8.10.0) (2025-12-12)
2
+
3
+ ### Features
4
+
5
+ - **(cli):** add video CLI flags tests and verification ([2d75347](https://github.com/juspay/neurolink/commit/2d753473cc75a219db4425783f4a062cca23873b))
6
+ - **(models):** add GPT-5.2 and comprehensive model updates across all providers ([b75042f](https://github.com/juspay/neurolink/commit/b75042fcb98bbf19bdfe6f197ac12d6752b291ee))
7
+
8
+ ### Bug Fixes
9
+
10
+ - **(ci):** use minimal plugins for semantic-release validation to avoid npm auth requirement ([f3ab09e](https://github.com/juspay/neurolink/commit/f3ab09e0cdc79ae70e55a37246d0edfe9a41a77d))
11
+
12
+ ## [8.9.0](https://github.com/juspay/neurolink/compare/v8.8.0...v8.9.0) (2025-12-11)
13
+
14
+ ### Features
15
+
16
+ - **(csv):** add sampleDataFormat option for CSV metadata ([ded6ec4](https://github.com/juspay/neurolink/commit/ded6ec4ef0924ff020de079ed3a8031490e76094))
17
+
1
18
  ## [8.8.0](https://github.com/juspay/neurolink/compare/v8.7.0...v8.8.0) (2025-12-11)
2
19
 
3
20
  ### Features
@@ -21,6 +21,10 @@ export class MultimodalLogger {
21
21
  */
22
22
  const VISION_CAPABILITIES = {
23
23
  openai: [
24
+ // GPT-5.2 family (released Dec 11, 2025) - Latest flagship models
25
+ "gpt-5.2",
26
+ "gpt-5.2-chat-latest",
27
+ "gpt-5.2-pro",
24
28
  // GPT-5 family (released Aug 2025)
25
29
  "gpt-5",
26
30
  "gpt-5-2025-08-07",
@@ -34,6 +38,7 @@ const VISION_CAPABILITIES = {
34
38
  // o-series reasoning models (released Apr 2025)
35
39
  "o3",
36
40
  "o3-mini",
41
+ "o3-pro",
37
42
  "o4",
38
43
  "o4-mini",
39
44
  "o4-mini-deep-research",
@@ -48,12 +53,17 @@ const VISION_CAPABILITIES = {
48
53
  "gemini-3-pro-preview",
49
54
  "gemini-3-pro-preview-11-2025",
50
55
  "gemini-3-pro-latest",
56
+ "gemini-3-pro-image-preview",
51
57
  // Gemini 2.5 Series
52
58
  "gemini-2.5-pro",
53
59
  "gemini-2.5-flash",
60
+ "gemini-2.5-flash-lite",
61
+ "gemini-2.5-flash-image",
54
62
  // Gemini 2.0 Series
55
63
  "gemini-2.0-flash",
64
+ "gemini-2.0-flash-001",
56
65
  "gemini-2.0-flash-lite",
66
+ "gemini-2.0-flash-preview-image-generation",
57
67
  // Gemini 1.5 Series (Legacy)
58
68
  "gemini-1.5-pro",
59
69
  "gemini-1.5-flash",
@@ -67,24 +77,44 @@ const VISION_CAPABILITIES = {
67
77
  "claude-opus-4-5-20251101",
68
78
  "claude-haiku-4-5",
69
79
  "claude-haiku-4-5-20251001",
80
+ // Claude 4.1 and 4.0 Series
81
+ "claude-opus-4-1",
82
+ "claude-opus-4-1-20250805",
83
+ "claude-opus-4",
84
+ "claude-opus-4-20250514",
85
+ "claude-sonnet-4",
86
+ "claude-sonnet-4-20250514",
70
87
  // Claude 3.7 Series
71
88
  "claude-3-7-sonnet",
89
+ "claude-3-7-sonnet-20250219",
72
90
  // Claude 3.5 Series
73
91
  "claude-3-5-sonnet",
92
+ "claude-3-5-sonnet-20241022",
74
93
  // Claude 3 Series
75
94
  "claude-3-opus",
76
95
  "claude-3-sonnet",
77
96
  "claude-3-haiku",
78
97
  ],
79
98
  azure: [
99
+ // GPT-5.1 family (December 2025)
100
+ "gpt-5.1",
101
+ "gpt-5.1-chat",
102
+ "gpt-5.1-codex",
80
103
  // GPT-5 family
81
104
  "gpt-5",
82
105
  "gpt-5-pro",
106
+ "gpt-5-turbo",
107
+ "gpt-5-chat",
83
108
  "gpt-5-mini",
84
109
  // GPT-4.1 family
85
110
  "gpt-4.1",
86
111
  "gpt-4.1-mini",
87
112
  "gpt-4.1-nano",
113
+ // O-series
114
+ "o3",
115
+ "o3-mini",
116
+ "o3-pro",
117
+ "o4-mini",
88
118
  // Existing GPT-4
89
119
  "gpt-4o",
90
120
  "gpt-4o-mini",
@@ -97,10 +127,12 @@ const VISION_CAPABILITIES = {
97
127
  "gemini-3-pro-preview-11-2025",
98
128
  "gemini-3-pro-latest",
99
129
  "gemini-3-pro-preview",
130
+ "gemini-3-pro",
100
131
  // Gemini 2.5 models on Vertex AI
101
132
  "gemini-2.5-pro",
102
133
  "gemini-2.5-flash",
103
134
  "gemini-2.5-flash-lite",
135
+ "gemini-2.5-flash-image",
104
136
  // Gemini 2.0 models on Vertex AI
105
137
  "gemini-2.0-flash-001",
106
138
  "gemini-2.0-flash-lite",
@@ -146,27 +178,41 @@ const VISION_CAPABILITIES = {
146
178
  litellm: [
147
179
  // LiteLLM proxies to underlying providers
148
180
  // List models that support vision when going through the proxy
149
- // Gemini models
150
- "gemini-3-pro-preview",
151
- "gemini-3-pro-latest",
152
- "gemini-2.5-pro",
153
- "gemini-2.5-flash",
154
- "gemini-2.0-flash-lite",
155
- // Claude 4.5 models
181
+ // OpenAI models via LiteLLM
182
+ "openai/gpt-5",
183
+ "openai/gpt-4o",
184
+ "openai/gpt-4o-mini",
185
+ "openai/gpt-4-turbo",
186
+ "gpt-5",
187
+ "gpt-4o",
188
+ "gpt-4.1",
189
+ // Anthropic models via LiteLLM
190
+ "anthropic/claude-sonnet-4-5-20250929",
191
+ "anthropic/claude-opus-4-1-20250805",
192
+ "anthropic/claude-3-5-sonnet-20240620",
156
193
  "claude-sonnet-4-5",
157
194
  "claude-sonnet-4-5-20250929",
158
195
  "claude-opus-4-5",
159
196
  "claude-opus-4-5-20251101",
160
197
  "claude-haiku-4-5-20251001",
161
- // Claude 4 models
162
198
  "claude-sonnet-4",
163
199
  "claude-opus-4-1",
164
- // OpenAI models
165
- "gpt-4o",
166
- "gpt-4.1",
167
- "gpt-5",
200
+ // Gemini models via LiteLLM
201
+ "vertex_ai/gemini-2.5-pro",
202
+ "gemini/gemini-2.5-pro",
203
+ "gemini/gemini-2.0-flash",
204
+ "gemini-3-pro-preview",
205
+ "gemini-3-pro-latest",
206
+ "gemini-2.5-pro",
207
+ "gemini-2.5-flash",
208
+ "gemini-2.0-flash-lite",
209
+ // Groq models via LiteLLM (vision)
210
+ "groq/llama-3.2-11b-vision-preview",
168
211
  ],
169
212
  mistral: [
213
+ // Mistral Large (latest has vision via Pixtral integration)
214
+ "mistral-large-latest",
215
+ "mistral-large-2512",
170
216
  // Mistral Small 3.2 (vision support for images: PNG, JPEG, WEBP, GIF)
171
217
  "mistral-small",
172
218
  "mistral-small-latest",
@@ -176,26 +222,39 @@ const VISION_CAPABILITIES = {
176
222
  "mistral-medium",
177
223
  "mistral-medium-latest",
178
224
  "mistral-medium-3.1",
225
+ "mistral-medium-2508",
179
226
  // Magistral models (vision support)
180
227
  "magistral-small",
228
+ "magistral-small-latest",
181
229
  "magistral-medium",
230
+ "magistral-medium-latest",
182
231
  // Pixtral models (specialized vision models)
183
232
  "pixtral-12b",
184
233
  "pixtral-12b-latest",
185
234
  "pixtral-large",
186
235
  "pixtral-large-latest",
236
+ "pixtral-large-2502",
187
237
  ],
188
238
  ollama: [
189
239
  // Llama 4 family (May 2025 - Best vision + tool calling)
190
240
  "llama4:scout",
191
241
  "llama4:maverick",
192
- // Llama 3.2 vision
242
+ "llama4:latest",
243
+ "llama4",
244
+ // Llama 3.2 vision variants
193
245
  "llama3.2-vision",
246
+ "llama3.2-vision:11b",
247
+ "llama3.2-vision:90b",
194
248
  // Gemma 3 family (SigLIP vision encoder - supports tool calling + vision)
249
+ "gemma3",
195
250
  "gemma3:4b",
196
251
  "gemma3:12b",
197
252
  "gemma3:27b",
198
253
  "gemma3:latest",
254
+ // Qwen 2.5 VL (Vision-Language)
255
+ "qwen2.5-vl",
256
+ "qwen2.5-vl:72b",
257
+ "qwen2.5-vl:32b",
199
258
  // Mistral Small family (vision + tool calling)
200
259
  "mistral-small3.1",
201
260
  "mistral-small3.1:large",
@@ -203,8 +262,24 @@ const VISION_CAPABILITIES = {
203
262
  "mistral-small3.1:small",
204
263
  // LLaVA (vision-focused)
205
264
  "llava",
265
+ "llava:7b",
266
+ "llava:13b",
267
+ "llava:34b",
268
+ "llava-llama3",
269
+ "llava-llama3:8b",
206
270
  ],
207
271
  bedrock: [
272
+ // Amazon Nova models (December 2024+) - multimodal vision support
273
+ "amazon.nova-premier",
274
+ "amazon.nova-premier-v1:0",
275
+ "amazon.nova-pro",
276
+ "amazon.nova-pro-v1:0",
277
+ "amazon.nova-lite",
278
+ "amazon.nova-lite-v1:0",
279
+ "amazon.nova-2-lite-v1:0",
280
+ "nova-premier",
281
+ "nova-pro",
282
+ "nova-lite",
208
283
  // Claude 4.5 family (supports vision, PDFs, images - September-November 2025)
209
284
  "claude-sonnet-4-5",
210
285
  "claude-sonnet-4.5",
@@ -213,7 +288,7 @@ const VISION_CAPABILITIES = {
213
288
  "claude-opus-4-5",
214
289
  "claude-opus-4.5",
215
290
  "anthropic.claude-opus-4-5",
216
- "anthropic.claude-opus-4-5-20251101-v1:0",
291
+ "anthropic.claude-opus-4-5-20251124-v1:0",
217
292
  "claude-haiku-4-5",
218
293
  "claude-haiku-4.5",
219
294
  "anthropic.claude-haiku-4-5",
@@ -222,18 +297,22 @@ const VISION_CAPABILITIES = {
222
297
  "claude-sonnet-4",
223
298
  "claude-sonnet-4@",
224
299
  "anthropic.claude-sonnet-4",
300
+ "anthropic.claude-sonnet-4-20250514-v1:0",
225
301
  "claude-opus-4",
226
302
  "claude-opus-4-1",
227
303
  "claude-opus-4@",
228
304
  "anthropic.claude-opus-4",
305
+ "anthropic.claude-opus-4-1-20250805-v1:0",
229
306
  // Claude 3.7 Sonnet
230
307
  "claude-3-7-sonnet",
231
308
  "claude-3.7-sonnet",
232
309
  "anthropic.claude-3-7-sonnet",
310
+ "anthropic.claude-3-7-sonnet-20250219-v1:0",
233
311
  // Claude 3.5 Sonnet
234
312
  "claude-3-5-sonnet",
235
313
  "claude-3.5-sonnet",
236
314
  "anthropic.claude-3-5-sonnet",
315
+ "anthropic.claude-3-5-sonnet-20241022-v1:0",
237
316
  // Claude 3 Opus
238
317
  "claude-3-opus",
239
318
  "anthropic.claude-3-opus",
@@ -243,9 +322,32 @@ const VISION_CAPABILITIES = {
243
322
  // Claude 3 Haiku
244
323
  "claude-3-haiku",
245
324
  "anthropic.claude-3-haiku",
325
+ // Meta Llama 4 models (multimodal vision)
326
+ "meta.llama4-maverick-17b-instruct-v1:0",
327
+ "meta.llama4-scout-17b-instruct-v1:0",
328
+ // Meta Llama 3.2 vision models
329
+ "meta.llama3-2-90b-instruct-v1:0",
330
+ "meta.llama3-2-11b-instruct-v1:0",
331
+ // Mistral Pixtral (multimodal vision)
332
+ "mistral.pixtral-large-2502-v1:0",
246
333
  // Generic anthropic.claude prefix (catches all Claude models)
247
334
  "anthropic.claude",
248
335
  ],
336
+ huggingface: [
337
+ // Qwen 2.5 VL (Vision-Language)
338
+ "Qwen/Qwen2.5-VL-32B-Instruct",
339
+ "Qwen/Qwen2.5-VL-7B-Instruct",
340
+ // Microsoft Phi-3 Vision
341
+ "microsoft/Phi-3-vision-128k-instruct",
342
+ // LLaVA variants
343
+ "llava-hf/llava-1.5-7b-hf",
344
+ "llava-hf/llava-v1.6-mistral-7b-hf",
345
+ ],
346
+ sagemaker: [
347
+ // Meta Llama 4 vision models
348
+ "meta-llama-4-maverick-17b-128e-instruct",
349
+ "meta-llama-4-scout-17b-16e-instruct",
350
+ ],
249
351
  };
250
352
  /**
251
353
  * Provider Image Adapter - Smart routing and formatting
@@ -281,6 +383,21 @@ export class ProviderImageAdapter {
281
383
  case "ollama":
282
384
  adaptedPayload = this.formatForOpenAI(text, images);
283
385
  break;
386
+ case "huggingface":
387
+ adaptedPayload = this.formatForOpenAI(text, images);
388
+ break;
389
+ case "sagemaker":
390
+ adaptedPayload = this.formatForOpenAI(text, images);
391
+ break;
392
+ case "litellm":
393
+ adaptedPayload = this.formatForOpenAI(text, images);
394
+ break;
395
+ case "mistral":
396
+ adaptedPayload = this.formatForOpenAI(text, images);
397
+ break;
398
+ case "bedrock":
399
+ adaptedPayload = this.formatForAnthropic(text, images);
400
+ break;
284
401
  default:
285
402
  throw new Error(`Vision not supported for provider: ${provider}`);
286
403
  }
@@ -9,6 +9,7 @@ export declare class CLICommandFactory {
9
9
  private static processCliCSVFiles;
10
10
  private static processCliPDFFiles;
11
11
  private static processCliFiles;
12
+ private static processCliVideoFiles;
12
13
  private static processOptions;
13
14
  private static handleOutput;
14
15
  /**
@@ -60,6 +60,31 @@ export class CLICommandFactory {
60
60
  type: "string",
61
61
  description: "Add PDF file for analysis (can be used multiple times)",
62
62
  },
63
+ video: {
64
+ type: "string",
65
+ description: "Add video file for analysis (can be used multiple times) (MP4, WebM, MOV, AVI, MKV)",
66
+ },
67
+ "video-frames": {
68
+ type: "number",
69
+ default: 8,
70
+ description: "Number of frames to extract (default: 8)",
71
+ },
72
+ "video-quality": {
73
+ type: "number",
74
+ default: 85,
75
+ description: "Frame quality 0-100 (default: 85)",
76
+ },
77
+ "video-format": {
78
+ type: "string",
79
+ choices: ["jpeg", "png"],
80
+ default: "jpeg",
81
+ description: "Frame format (default: jpeg)",
82
+ },
83
+ "transcribe-audio": {
84
+ type: "boolean",
85
+ default: false,
86
+ description: "Extract and transcribe audio from video",
87
+ },
63
88
  file: {
64
89
  type: "string",
65
90
  description: "Add file with auto-detection (CSV, image, etc. - can be used multiple times)",
@@ -271,6 +296,13 @@ export class CLICommandFactory {
271
296
  }
272
297
  return Array.isArray(files) ? files : [files];
273
298
  }
299
+ // Helper method to process CLI video files
300
+ static processCliVideoFiles(videoFiles) {
301
+ if (!videoFiles) {
302
+ return undefined;
303
+ }
304
+ return Array.isArray(videoFiles) ? videoFiles : [videoFiles];
305
+ }
274
306
  // Helper method to process common options
275
307
  static processOptions(argv) {
276
308
  // Handle noColor option by disabling chalk
@@ -543,7 +575,8 @@ export class CLICommandFactory {
543
575
  .example('$0 gen "Write a Python function" --provider openai', "Use specific provider")
544
576
  .example('$0 generate "Code review" -m gpt-4 -t 0.3', "Use specific model and temperature")
545
577
  .example('echo "Summarize this" | $0 generate', "Use stdin input")
546
- .example('$0 generate "Analyze data" --enable-analytics', "Enable usage analytics"));
578
+ .example('$0 generate "Analyze data" --enable-analytics', "Enable usage analytics")
579
+ .example('$0 generate "Describe this video" --video path/to/video.mp4', "Analyze video content"));
547
580
  },
548
581
  handler: async (argv) => await this.executeGenerate(argv),
549
582
  };
@@ -564,7 +597,8 @@ export class CLICommandFactory {
564
597
  .example('$0 stream "Write a story about space"', "Stream a creative story")
565
598
  .example('$0 stream "Explain machine learning" -p anthropic', "Stream with specific provider")
566
599
  .example('$0 stream "Code walkthrough" --output story.txt', "Stream to file")
567
- .example('echo "Live demo" | $0 stream', "Stream from stdin"));
600
+ .example('echo "Live demo" | $0 stream', "Stream from stdin")
601
+ .example('$0 stream "Narrate this video" --video path/to/video.mp4', "Stream video analysis"));
568
602
  },
569
603
  handler: async (argv) => await this.executeStream(argv),
570
604
  };
@@ -1160,12 +1194,14 @@ export class CLICommandFactory {
1160
1194
  const imageBuffers = CLICommandFactory.processCliImages(argv.image);
1161
1195
  const csvFiles = CLICommandFactory.processCliCSVFiles(argv.csv);
1162
1196
  const pdfFiles = CLICommandFactory.processCliPDFFiles(argv.pdf);
1197
+ const videoFiles = CLICommandFactory.processCliVideoFiles(argv.video);
1163
1198
  const files = CLICommandFactory.processCliFiles(argv.file);
1164
1199
  const generateInput = {
1165
1200
  text: inputText,
1166
1201
  ...(imageBuffers && { images: imageBuffers }),
1167
1202
  ...(csvFiles && { csvFiles }),
1168
1203
  ...(pdfFiles && { pdfFiles }),
1204
+ ...(videoFiles && { videoFiles }),
1169
1205
  ...(files && { files }),
1170
1206
  };
1171
1207
  const result = await sdk.generate({
@@ -1174,6 +1210,12 @@ export class CLICommandFactory {
1174
1210
  maxRows: argv.csvMaxRows,
1175
1211
  formatStyle: argv.csvFormat,
1176
1212
  },
1213
+ videoOptions: {
1214
+ frames: argv.videoFrames,
1215
+ quality: argv.videoQuality,
1216
+ format: argv.videoFormat,
1217
+ transcribeAudio: argv.transcribeAudio,
1218
+ },
1177
1219
  provider: enhancedOptions.provider,
1178
1220
  model: enhancedOptions.model,
1179
1221
  temperature: enhancedOptions.temperature,
@@ -1349,6 +1391,7 @@ export class CLICommandFactory {
1349
1391
  const imageBuffers = CLICommandFactory.processCliImages(argv.image);
1350
1392
  const csvFiles = CLICommandFactory.processCliCSVFiles(argv.csv);
1351
1393
  const pdfFiles = CLICommandFactory.processCliPDFFiles(argv.pdf);
1394
+ const videoFiles = CLICommandFactory.processCliVideoFiles(argv.video);
1352
1395
  const files = CLICommandFactory.processCliFiles(argv.file);
1353
1396
  const stream = await sdk.stream({
1354
1397
  input: {
@@ -1356,12 +1399,19 @@ export class CLICommandFactory {
1356
1399
  ...(imageBuffers && { images: imageBuffers }),
1357
1400
  ...(csvFiles && { csvFiles }),
1358
1401
  ...(pdfFiles && { pdfFiles }),
1402
+ ...(videoFiles && { videoFiles }),
1359
1403
  ...(files && { files }),
1360
1404
  },
1361
1405
  csvOptions: {
1362
1406
  maxRows: argv.csvMaxRows,
1363
1407
  formatStyle: argv.csvFormat,
1364
1408
  },
1409
+ videoOptions: {
1410
+ frames: argv.videoFrames,
1411
+ quality: argv.videoQuality,
1412
+ format: argv.videoFormat,
1413
+ transcribeAudio: argv.transcribeAudio,
1414
+ },
1365
1415
  provider: enhancedOptions.provider,
1366
1416
  model: enhancedOptions.model,
1367
1417
  temperature: enhancedOptions.temperature,