@jupyterlite/ai 0.18.0 → 0.19.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 (108) hide show
  1. package/lib/chat-commands/clear.d.ts +1 -0
  2. package/lib/chat-commands/index.d.ts +1 -0
  3. package/lib/chat-commands/skills.d.ts +2 -1
  4. package/lib/chat-model-handler.d.ts +3 -1
  5. package/lib/chat-model.d.ts +46 -8
  6. package/lib/chat-model.js +51 -21
  7. package/lib/completion/completion-provider.d.ts +3 -1
  8. package/lib/completion/completion-provider.js +1 -2
  9. package/lib/completion/index.d.ts +1 -0
  10. package/lib/components/clear-button.d.ts +1 -0
  11. package/lib/components/clear-button.js +3 -4
  12. package/lib/components/completion-status.d.ts +1 -0
  13. package/lib/components/completion-status.js +5 -4
  14. package/lib/components/index.d.ts +1 -0
  15. package/lib/components/model-select.d.ts +1 -0
  16. package/lib/components/model-select.js +62 -67
  17. package/lib/components/save-button.d.ts +1 -0
  18. package/lib/components/save-button.js +4 -5
  19. package/lib/components/stop-button.d.ts +1 -0
  20. package/lib/components/stop-button.js +3 -4
  21. package/lib/components/tool-select.d.ts +3 -1
  22. package/lib/components/tool-select.js +47 -60
  23. package/lib/components/usage-display.d.ts +4 -2
  24. package/lib/components/usage-display.js +50 -61
  25. package/lib/diff-manager.d.ts +3 -1
  26. package/lib/index.d.ts +3 -2
  27. package/lib/index.js +28 -17
  28. package/lib/models/settings-model.d.ts +3 -1
  29. package/lib/rendered-message-outputarea.d.ts +1 -0
  30. package/lib/tokens.d.ts +18 -640
  31. package/lib/tokens.js +2 -31
  32. package/lib/widgets/ai-settings.d.ts +3 -1
  33. package/lib/widgets/ai-settings.js +185 -349
  34. package/lib/widgets/main-area-chat.d.ts +1 -0
  35. package/lib/widgets/provider-config-dialog.d.ts +2 -1
  36. package/lib/widgets/provider-config-dialog.js +102 -167
  37. package/package.json +111 -258
  38. package/src/chat-commands/skills.ts +2 -2
  39. package/src/chat-model-handler.ts +6 -4
  40. package/src/chat-model.ts +66 -19
  41. package/src/completion/completion-provider.ts +6 -6
  42. package/src/components/clear-button.tsx +0 -2
  43. package/src/components/completion-status.tsx +2 -2
  44. package/src/components/model-select.tsx +1 -1
  45. package/src/components/stop-button.tsx +0 -2
  46. package/src/components/tool-select.tsx +10 -9
  47. package/src/components/usage-display.tsx +4 -2
  48. package/src/diff-manager.ts +4 -3
  49. package/src/index.ts +62 -44
  50. package/src/models/settings-model.ts +6 -6
  51. package/src/tokens.ts +23 -788
  52. package/src/widgets/ai-settings.tsx +14 -11
  53. package/src/widgets/provider-config-dialog.tsx +8 -8
  54. package/LICENSE +0 -30
  55. package/README.md +0 -49
  56. package/lib/agent.d.ts +0 -280
  57. package/lib/agent.js +0 -1103
  58. package/lib/icons.d.ts +0 -3
  59. package/lib/icons.js +0 -8
  60. package/lib/providers/built-in-providers.d.ts +0 -21
  61. package/lib/providers/built-in-providers.js +0 -233
  62. package/lib/providers/generated-model-info.d.ts +0 -8
  63. package/lib/providers/generated-model-info.js +0 -502
  64. package/lib/providers/model-info.d.ts +0 -6
  65. package/lib/providers/model-info.js +0 -91
  66. package/lib/providers/models.d.ts +0 -37
  67. package/lib/providers/models.js +0 -28
  68. package/lib/providers/provider-registry.d.ts +0 -49
  69. package/lib/providers/provider-registry.js +0 -72
  70. package/lib/providers/provider-tools.d.ts +0 -36
  71. package/lib/providers/provider-tools.js +0 -93
  72. package/lib/skills/index.d.ts +0 -4
  73. package/lib/skills/index.js +0 -7
  74. package/lib/skills/parse-skill.d.ts +0 -25
  75. package/lib/skills/parse-skill.js +0 -69
  76. package/lib/skills/skill-loader.d.ts +0 -25
  77. package/lib/skills/skill-loader.js +0 -133
  78. package/lib/skills/skill-registry.d.ts +0 -31
  79. package/lib/skills/skill-registry.js +0 -100
  80. package/lib/skills/types.d.ts +0 -29
  81. package/lib/skills/types.js +0 -5
  82. package/lib/tools/commands.d.ts +0 -11
  83. package/lib/tools/commands.js +0 -154
  84. package/lib/tools/skills.d.ts +0 -9
  85. package/lib/tools/skills.js +0 -73
  86. package/lib/tools/tool-registry.d.ts +0 -35
  87. package/lib/tools/tool-registry.js +0 -55
  88. package/lib/tools/web.d.ts +0 -8
  89. package/lib/tools/web.js +0 -196
  90. package/src/agent.ts +0 -1431
  91. package/src/icons.ts +0 -11
  92. package/src/providers/built-in-providers.ts +0 -241
  93. package/src/providers/generated-model-info.ts +0 -508
  94. package/src/providers/model-info.ts +0 -145
  95. package/src/providers/models.ts +0 -76
  96. package/src/providers/provider-registry.ts +0 -88
  97. package/src/providers/provider-tools.ts +0 -179
  98. package/src/skills/index.ts +0 -14
  99. package/src/skills/parse-skill.ts +0 -91
  100. package/src/skills/skill-loader.ts +0 -175
  101. package/src/skills/skill-registry.ts +0 -137
  102. package/src/skills/types.ts +0 -37
  103. package/src/tools/commands.ts +0 -210
  104. package/src/tools/skills.ts +0 -84
  105. package/src/tools/tool-registry.ts +0 -63
  106. package/src/tools/web.ts +0 -238
  107. package/src/types.d.ts +0 -4
  108. package/style/icons/jupyternaut-lite.svg +0 -7
@@ -1,502 +0,0 @@
1
- /**
2
- * This file is generated by `jlpm sync:model-info`.
3
- * Source: https://models.dev/api.json
4
- * Backed by: https://github.com/anomalyco/models.dev
5
- * Generated: 2026-04-28T11:55:05.327Z
6
- */
7
- export const BUILT_IN_PROVIDER_MODEL_INFO = {
8
- anthropic: {
9
- 'claude-opus-4-6': {
10
- contextWindow: 1000000,
11
- supportsImages: true,
12
- supportsPdf: true,
13
- supportsAudio: false
14
- },
15
- 'claude-sonnet-4-6': {
16
- contextWindow: 1000000,
17
- supportsImages: true,
18
- supportsPdf: true,
19
- supportsAudio: false
20
- },
21
- 'claude-opus-4-5': {
22
- contextWindow: 200000,
23
- supportsImages: true,
24
- supportsPdf: true,
25
- supportsAudio: false
26
- },
27
- 'claude-opus-4-5-20251101': {
28
- contextWindow: 200000,
29
- supportsImages: true,
30
- supportsPdf: true,
31
- supportsAudio: false
32
- },
33
- 'claude-sonnet-4-5': {
34
- contextWindow: 200000,
35
- supportsImages: true,
36
- supportsPdf: true,
37
- supportsAudio: false
38
- },
39
- 'claude-sonnet-4-5-20250929': {
40
- contextWindow: 200000,
41
- supportsImages: true,
42
- supportsPdf: true,
43
- supportsAudio: false
44
- },
45
- 'claude-haiku-4-5': {
46
- contextWindow: 200000,
47
- supportsImages: true,
48
- supportsPdf: true,
49
- supportsAudio: false
50
- },
51
- 'claude-haiku-4-5-20251001': {
52
- contextWindow: 200000,
53
- supportsImages: true,
54
- supportsPdf: true,
55
- supportsAudio: false
56
- },
57
- 'claude-opus-4-1': {
58
- contextWindow: 200000,
59
- supportsImages: true,
60
- supportsPdf: true,
61
- supportsAudio: false
62
- },
63
- 'claude-opus-4-1-20250805': {
64
- contextWindow: 200000,
65
- supportsImages: true,
66
- supportsPdf: true,
67
- supportsAudio: false
68
- },
69
- 'claude-opus-4-0': {
70
- contextWindow: 200000,
71
- supportsImages: true,
72
- supportsPdf: true,
73
- supportsAudio: false
74
- },
75
- 'claude-opus-4-20250514': {
76
- contextWindow: 200000,
77
- supportsImages: true,
78
- supportsPdf: true,
79
- supportsAudio: false
80
- },
81
- 'claude-sonnet-4-0': {
82
- contextWindow: 200000,
83
- supportsImages: true,
84
- supportsPdf: true,
85
- supportsAudio: false
86
- },
87
- 'claude-sonnet-4-20250514': {
88
- contextWindow: 200000,
89
- supportsImages: true,
90
- supportsPdf: true,
91
- supportsAudio: false
92
- }
93
- },
94
- google: {
95
- 'gemini-3.1-pro-preview': {
96
- contextWindow: 1048576,
97
- supportsImages: true,
98
- supportsPdf: true,
99
- supportsAudio: true
100
- },
101
- 'gemini-3.1-pro-preview-customtools': {
102
- contextWindow: 1048576,
103
- supportsImages: true,
104
- supportsPdf: true,
105
- supportsAudio: true
106
- },
107
- 'gemini-3.1-flash-image-preview': {
108
- contextWindow: 131072,
109
- supportsImages: true,
110
- supportsPdf: true,
111
- supportsAudio: false
112
- },
113
- 'gemini-3.1-flash-lite-preview': {
114
- contextWindow: 1048576,
115
- supportsImages: true,
116
- supportsPdf: true,
117
- supportsAudio: true
118
- },
119
- 'gemini-3-flash-preview': {
120
- contextWindow: 1048576,
121
- supportsImages: true,
122
- supportsPdf: true,
123
- supportsAudio: true
124
- },
125
- 'gemini-2.5-pro': {
126
- contextWindow: 1048576,
127
- supportsImages: true,
128
- supportsPdf: true,
129
- supportsAudio: true
130
- },
131
- 'gemini-2.5-flash': {
132
- contextWindow: 1048576,
133
- supportsImages: true,
134
- supportsPdf: true,
135
- supportsAudio: true
136
- },
137
- 'gemini-2.5-flash-image': {
138
- contextWindow: 32768,
139
- supportsImages: true,
140
- supportsPdf: false,
141
- supportsAudio: false
142
- },
143
- 'gemini-2.5-flash-lite': {
144
- contextWindow: 1048576,
145
- supportsImages: true,
146
- supportsPdf: true,
147
- supportsAudio: true
148
- },
149
- 'gemini-flash-latest': {
150
- contextWindow: 1048576,
151
- supportsImages: true,
152
- supportsPdf: true,
153
- supportsAudio: true
154
- },
155
- 'gemini-flash-lite-latest': {
156
- contextWindow: 1048576,
157
- supportsImages: true,
158
- supportsPdf: true,
159
- supportsAudio: true
160
- }
161
- },
162
- mistral: {
163
- 'mistral-large-latest': {
164
- contextWindow: 262144,
165
- supportsImages: true,
166
- supportsPdf: false,
167
- supportsAudio: false
168
- },
169
- 'mistral-medium-latest': {
170
- contextWindow: 128000,
171
- supportsImages: true,
172
- supportsPdf: false,
173
- supportsAudio: false
174
- },
175
- 'mistral-medium-2508': {
176
- contextWindow: 262144,
177
- supportsImages: true,
178
- supportsPdf: false,
179
- supportsAudio: false
180
- },
181
- 'mistral-small-latest': {
182
- contextWindow: 256000,
183
- supportsImages: true,
184
- supportsPdf: false,
185
- supportsAudio: false
186
- },
187
- 'mistral-small-2506': {
188
- contextWindow: 128000,
189
- supportsImages: true,
190
- supportsPdf: false,
191
- supportsAudio: false
192
- },
193
- 'ministral-3b-latest': {
194
- contextWindow: 128000,
195
- supportsImages: false,
196
- supportsPdf: false,
197
- supportsAudio: false
198
- },
199
- 'ministral-8b-latest': {
200
- contextWindow: 128000,
201
- supportsImages: false,
202
- supportsPdf: false,
203
- supportsAudio: false
204
- },
205
- 'magistral-small-latest': {
206
- contextWindow: 128000,
207
- supportsImages: false,
208
- supportsPdf: false,
209
- supportsAudio: false
210
- },
211
- 'magistral-small': {
212
- contextWindow: 128000,
213
- supportsImages: false,
214
- supportsPdf: false,
215
- supportsAudio: false
216
- },
217
- 'magistral-medium-latest': {
218
- contextWindow: 128000,
219
- supportsImages: false,
220
- supportsPdf: false,
221
- supportsAudio: false
222
- },
223
- 'pixtral-large-latest': {
224
- contextWindow: 128000,
225
- supportsImages: true,
226
- supportsPdf: false,
227
- supportsAudio: false
228
- },
229
- 'codestral-latest': {
230
- contextWindow: 256000,
231
- supportsImages: false,
232
- supportsPdf: false,
233
- supportsAudio: false
234
- },
235
- 'devstral-latest': {
236
- contextWindow: 128000,
237
- supportsImages: false,
238
- supportsPdf: false,
239
- supportsAudio: false
240
- },
241
- 'devstral-small-2507': {
242
- contextWindow: 128000,
243
- supportsImages: false,
244
- supportsPdf: false,
245
- supportsAudio: false
246
- }
247
- },
248
- openai: {
249
- 'gpt-5.4': {
250
- contextWindow: 1050000,
251
- supportsImages: true,
252
- supportsPdf: true,
253
- supportsAudio: false
254
- },
255
- 'gpt-5.4-mini': {
256
- contextWindow: 400000,
257
- supportsImages: true,
258
- supportsPdf: false,
259
- supportsAudio: false
260
- },
261
- 'gpt-5.4-nano': {
262
- contextWindow: 400000,
263
- supportsImages: true,
264
- supportsPdf: false,
265
- supportsAudio: false
266
- },
267
- 'gpt-5.2': {
268
- contextWindow: 400000,
269
- supportsImages: true,
270
- supportsPdf: false,
271
- supportsAudio: false
272
- },
273
- 'gpt-5.2-2025-12-11': {
274
- contextWindow: 400000,
275
- supportsImages: true,
276
- supportsPdf: false,
277
- supportsAudio: false
278
- },
279
- 'gpt-5.2-chat-latest': {
280
- contextWindow: 128000,
281
- supportsImages: true,
282
- supportsPdf: false,
283
- supportsAudio: false
284
- },
285
- 'gpt-5.2-pro': {
286
- contextWindow: 400000,
287
- supportsImages: true,
288
- supportsPdf: false,
289
- supportsAudio: false
290
- },
291
- 'gpt-5.2-pro-2025-12-11': {
292
- contextWindow: 400000,
293
- supportsImages: true,
294
- supportsPdf: false,
295
- supportsAudio: false
296
- },
297
- 'gpt-5.2-codex': {
298
- contextWindow: 400000,
299
- supportsImages: true,
300
- supportsPdf: true,
301
- supportsAudio: false
302
- },
303
- 'gpt-5.1': {
304
- contextWindow: 400000,
305
- supportsImages: true,
306
- supportsPdf: false,
307
- supportsAudio: false
308
- },
309
- 'gpt-5.1-2025-11-13': {
310
- contextWindow: 400000,
311
- supportsImages: true,
312
- supportsPdf: false,
313
- supportsAudio: false
314
- },
315
- 'gpt-5.1-chat-latest': {
316
- contextWindow: 128000,
317
- supportsImages: true,
318
- supportsPdf: false,
319
- supportsAudio: false
320
- },
321
- 'gpt-5': {
322
- contextWindow: 400000,
323
- supportsImages: true,
324
- supportsPdf: false,
325
- supportsAudio: false
326
- },
327
- 'gpt-5-2025-08-07': {
328
- contextWindow: 400000,
329
- supportsImages: true,
330
- supportsPdf: false,
331
- supportsAudio: false
332
- },
333
- 'gpt-5-chat-latest': {
334
- contextWindow: 400000,
335
- supportsImages: true,
336
- supportsPdf: false,
337
- supportsAudio: false
338
- },
339
- 'gpt-5-mini': {
340
- contextWindow: 400000,
341
- supportsImages: true,
342
- supportsPdf: false,
343
- supportsAudio: false
344
- },
345
- 'gpt-5-mini-2025-08-07': {
346
- contextWindow: 400000,
347
- supportsImages: true,
348
- supportsPdf: false,
349
- supportsAudio: false
350
- },
351
- 'gpt-5-nano': {
352
- contextWindow: 400000,
353
- supportsImages: true,
354
- supportsPdf: false,
355
- supportsAudio: false
356
- },
357
- 'gpt-5-nano-2025-08-07': {
358
- contextWindow: 400000,
359
- supportsImages: true,
360
- supportsPdf: false,
361
- supportsAudio: false
362
- },
363
- 'o4-mini': {
364
- contextWindow: 200000,
365
- supportsImages: true,
366
- supportsPdf: false,
367
- supportsAudio: false
368
- },
369
- 'o4-mini-2025-04-16': {
370
- contextWindow: 200000,
371
- supportsImages: true,
372
- supportsPdf: false,
373
- supportsAudio: false
374
- },
375
- 'o3-pro': {
376
- contextWindow: 200000,
377
- supportsImages: true,
378
- supportsPdf: false,
379
- supportsAudio: false
380
- },
381
- o3: {
382
- contextWindow: 200000,
383
- supportsImages: true,
384
- supportsPdf: true,
385
- supportsAudio: false
386
- },
387
- 'o3-2025-04-16': {
388
- contextWindow: 200000,
389
- supportsImages: true,
390
- supportsPdf: true,
391
- supportsAudio: false
392
- },
393
- 'o3-mini': {
394
- contextWindow: 200000,
395
- supportsImages: false,
396
- supportsPdf: false,
397
- supportsAudio: false
398
- },
399
- 'o3-mini-2025-01-31': {
400
- contextWindow: 200000,
401
- supportsImages: false,
402
- supportsPdf: false,
403
- supportsAudio: false
404
- },
405
- o1: {
406
- contextWindow: 200000,
407
- supportsImages: true,
408
- supportsPdf: true,
409
- supportsAudio: false
410
- },
411
- 'o1-2024-12-17': {
412
- contextWindow: 200000,
413
- supportsImages: true,
414
- supportsPdf: true,
415
- supportsAudio: false
416
- },
417
- 'gpt-4.1': {
418
- contextWindow: 1047576,
419
- supportsImages: true,
420
- supportsPdf: true,
421
- supportsAudio: false
422
- },
423
- 'gpt-4.1-2025-04-14': {
424
- contextWindow: 1047576,
425
- supportsImages: true,
426
- supportsPdf: true,
427
- supportsAudio: false
428
- },
429
- 'gpt-4.1-mini': {
430
- contextWindow: 1047576,
431
- supportsImages: true,
432
- supportsPdf: true,
433
- supportsAudio: false
434
- },
435
- 'gpt-4.1-mini-2025-04-14': {
436
- contextWindow: 1047576,
437
- supportsImages: true,
438
- supportsPdf: true,
439
- supportsAudio: false
440
- },
441
- 'gpt-4.1-nano': {
442
- contextWindow: 1047576,
443
- supportsImages: true,
444
- supportsPdf: false,
445
- supportsAudio: false
446
- },
447
- 'gpt-4.1-nano-2025-04-14': {
448
- contextWindow: 1047576,
449
- supportsImages: true,
450
- supportsPdf: false,
451
- supportsAudio: false
452
- },
453
- 'gpt-4o': {
454
- contextWindow: 128000,
455
- supportsImages: true,
456
- supportsPdf: true,
457
- supportsAudio: false
458
- },
459
- 'gpt-4o-2024-05-13': {
460
- contextWindow: 128000,
461
- supportsImages: true,
462
- supportsPdf: false,
463
- supportsAudio: false
464
- },
465
- 'gpt-4o-2024-08-06': {
466
- contextWindow: 128000,
467
- supportsImages: true,
468
- supportsPdf: false,
469
- supportsAudio: false
470
- },
471
- 'gpt-4o-2024-11-20': {
472
- contextWindow: 128000,
473
- supportsImages: true,
474
- supportsPdf: false,
475
- supportsAudio: false
476
- },
477
- 'gpt-4o-mini': {
478
- contextWindow: 128000,
479
- supportsImages: true,
480
- supportsPdf: true,
481
- supportsAudio: false
482
- },
483
- 'gpt-4o-mini-2024-07-18': {
484
- contextWindow: 128000,
485
- supportsImages: true,
486
- supportsPdf: true,
487
- supportsAudio: false
488
- },
489
- 'gpt-3.5-turbo': {
490
- contextWindow: 16385,
491
- supportsImages: false,
492
- supportsPdf: false,
493
- supportsAudio: false
494
- },
495
- 'gpt-3.5-turbo-0125': {
496
- contextWindow: 16385,
497
- supportsImages: false,
498
- supportsPdf: false,
499
- supportsAudio: false
500
- }
501
- }
502
- };
@@ -1,6 +0,0 @@
1
- import type { IProviderConfig, IProviderInfo, IProviderModelInfo, IProviderRegistry } from '../tokens';
2
- export declare function getProviderModelInfo(providerInfo: IProviderInfo | null | undefined, model: string | undefined): IProviderModelInfo | undefined;
3
- export declare function modelSupportsImages(providerConfig: IProviderConfig | undefined, providerRegistry?: IProviderRegistry): boolean;
4
- export declare function modelSupportsPdf(providerConfig: IProviderConfig | undefined, providerRegistry?: IProviderRegistry): boolean;
5
- export declare function modelSupportsAudio(providerConfig: IProviderConfig | undefined, providerRegistry?: IProviderRegistry): boolean;
6
- export declare function getEffectiveContextWindow(providerConfig: IProviderConfig | undefined, providerRegistry?: IProviderRegistry): number | undefined;
@@ -1,91 +0,0 @@
1
- const DATE_SUFFIX = /^(.*)-\d{4}-\d{2}-\d{2}$/;
2
- const SHORT_VERSION_SUFFIX = /^(.*)-\d{4}$/;
3
- // Treat rolling aliases and dated releases as the same model family so they
4
- // can share provider metadata such as context windows.
5
- function normalizeModelId(modelId) {
6
- if (modelId.endsWith('-latest')) {
7
- return modelId.slice(0, -7);
8
- }
9
- const dateSuffixMatch = modelId.match(DATE_SUFFIX);
10
- if (dateSuffixMatch) {
11
- return dateSuffixMatch[1];
12
- }
13
- const shortVersionSuffixMatch = modelId.match(SHORT_VERSION_SUFFIX);
14
- if (shortVersionSuffixMatch) {
15
- return shortVersionSuffixMatch[1];
16
- }
17
- return modelId;
18
- }
19
- function getCandidateModelIds(modelId) {
20
- const candidates = [modelId];
21
- const normalizedModelId = normalizeModelId(modelId);
22
- candidates.push(normalizedModelId);
23
- if (normalizedModelId !== modelId) {
24
- candidates.push(`${normalizedModelId}-latest`);
25
- }
26
- return [...new Set(candidates)];
27
- }
28
- export function getProviderModelInfo(providerInfo, model) {
29
- if (!providerInfo || !model) {
30
- return undefined;
31
- }
32
- const modelInfo = providerInfo.modelInfo;
33
- if (!modelInfo) {
34
- return undefined;
35
- }
36
- for (const candidateId of getCandidateModelIds(model)) {
37
- if (modelInfo[candidateId]) {
38
- return modelInfo[candidateId];
39
- }
40
- }
41
- const normalizedModelId = normalizeModelId(model);
42
- // As a last resort, match any known model entry that normalizes to the same
43
- // base ID, even if the exact alias/version string differs.
44
- return Object.entries(modelInfo).find(([candidateId]) => {
45
- return normalizeModelId(candidateId) === normalizedModelId;
46
- })?.[1];
47
- }
48
- export function modelSupportsImages(providerConfig, providerRegistry) {
49
- if (!providerConfig) {
50
- return true;
51
- }
52
- const providerInfo = providerRegistry?.getProviderInfo(providerConfig.provider);
53
- const modelInfo = getProviderModelInfo(providerInfo, providerConfig.model);
54
- if (!modelInfo) {
55
- return true;
56
- }
57
- return modelInfo.supportsImages ?? true;
58
- }
59
- export function modelSupportsPdf(providerConfig, providerRegistry) {
60
- if (!providerConfig) {
61
- return true;
62
- }
63
- const providerInfo = providerRegistry?.getProviderInfo(providerConfig.provider);
64
- const modelInfo = getProviderModelInfo(providerInfo, providerConfig.model);
65
- if (!modelInfo) {
66
- return true;
67
- }
68
- return modelInfo.supportsPdf ?? true;
69
- }
70
- export function modelSupportsAudio(providerConfig, providerRegistry) {
71
- if (!providerConfig) {
72
- return true;
73
- }
74
- const providerInfo = providerRegistry?.getProviderInfo(providerConfig.provider);
75
- const modelInfo = getProviderModelInfo(providerInfo, providerConfig.model);
76
- if (!modelInfo) {
77
- return true;
78
- }
79
- return modelInfo.supportsAudio ?? true;
80
- }
81
- export function getEffectiveContextWindow(providerConfig, providerRegistry) {
82
- if (!providerConfig) {
83
- return undefined;
84
- }
85
- if (providerConfig.parameters?.contextWindow !== undefined) {
86
- return providerConfig.parameters.contextWindow;
87
- }
88
- const providerInfo = providerRegistry?.getProviderInfo(providerConfig.provider);
89
- return getProviderModelInfo(providerInfo, providerConfig.model)
90
- ?.contextWindow;
91
- }
@@ -1,37 +0,0 @@
1
- import type { LanguageModel } from 'ai';
2
- import type { IProviderRegistry } from '../tokens';
3
- /**
4
- * Configuration options for creating language models.
5
- */
6
- export interface IModelOptions {
7
- /**
8
- * The provider name (e.g., 'openai', 'anthropic', 'huggingface')
9
- */
10
- provider: string;
11
- /**
12
- * The specific model name. If not provided, uses provider's default model
13
- */
14
- model?: string;
15
- /**
16
- * API key for authentication with the provider
17
- */
18
- apiKey?: string;
19
- /**
20
- * Additional HTTP headers to send with requests
21
- */
22
- headers?: Record<string, string>;
23
- /**
24
- * Custom base URL for the provider's API endpoint
25
- */
26
- baseURL?: string;
27
- }
28
- /**
29
- * Create a completion model using the provider registry.
30
- * Built-in providers are automatically registered during extension initialization.
31
- */
32
- export declare function createCompletionModel(options: IModelOptions, registry?: IProviderRegistry): LanguageModel;
33
- /**
34
- * Create a chat model using the provider registry.
35
- * Built-in providers are automatically registered during extension initialization.
36
- */
37
- export declare function createModel(options: IModelOptions, registry?: IProviderRegistry): LanguageModel;
@@ -1,28 +0,0 @@
1
- /**
2
- * Create a completion model using the provider registry.
3
- * Built-in providers are automatically registered during extension initialization.
4
- */
5
- export function createCompletionModel(options, registry) {
6
- if (!registry) {
7
- throw new Error('Provider registry not available');
8
- }
9
- const model = registry.createCompletionModel(options.provider, options);
10
- if (!model) {
11
- throw new Error(`Provider ${options.provider} not found or failed to create model`);
12
- }
13
- return model;
14
- }
15
- /**
16
- * Create a chat model using the provider registry.
17
- * Built-in providers are automatically registered during extension initialization.
18
- */
19
- export function createModel(options, registry) {
20
- if (!registry) {
21
- throw new Error('Provider registry not available');
22
- }
23
- const model = registry.createChatModel(options.provider, options);
24
- if (!model) {
25
- throw new Error(`Provider ${options.provider} not found or failed to create model`);
26
- }
27
- return model;
28
- }