@jaypie/llm 1.2.37 → 1.2.38

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.
@@ -1,3 +1,17 @@
1
+ export declare const MODEL: {
2
+ OPUS: string;
3
+ SONNET: string;
4
+ HAIKU: string;
5
+ FABLE: string;
6
+ MYTHOS: string;
7
+ GEMINI_FLASH: string;
8
+ GEMINI_FLASH_LITE: string;
9
+ GEMINI_PRO: string;
10
+ GPT: string;
11
+ GPT_MINI: string;
12
+ GPT_NANO: string;
13
+ GROK: string;
14
+ };
1
15
  export declare const PROVIDER: {
2
16
  readonly BEDROCK: {
3
17
  readonly MODEL: {
@@ -35,12 +49,27 @@ export declare const PROVIDER: {
35
49
  readonly SCHEMA_VERSION: "v2";
36
50
  };
37
51
  };
52
+ /** @deprecated Use PROVIDER.GOOGLE — "Google" is the provider; Gemini is the model family */
38
53
  readonly GEMINI: {
39
54
  readonly MODEL: {
40
55
  readonly DEFAULT: "gemini-3.1-pro-preview";
41
56
  readonly LARGE: "gemini-3.1-pro-preview";
42
57
  readonly SMALL: "gemini-3.5-flash";
43
- readonly TINY: "gemini-3.5-flash";
58
+ readonly TINY: "gemini-3.1-flash-lite";
59
+ };
60
+ readonly MODEL_MATCH_WORDS: readonly ["gemini", "google"];
61
+ readonly NAME: "google";
62
+ readonly ROLE: {
63
+ readonly MODEL: "model";
64
+ readonly USER: "user";
65
+ };
66
+ };
67
+ readonly GOOGLE: {
68
+ readonly MODEL: {
69
+ readonly DEFAULT: "gemini-3.1-pro-preview";
70
+ readonly LARGE: "gemini-3.1-pro-preview";
71
+ readonly SMALL: "gemini-3.5-flash";
72
+ readonly TINY: "gemini-3.1-flash-lite";
44
73
  };
45
74
  readonly MODEL_MATCH_WORDS: readonly ["gemini", "google"];
46
75
  readonly NAME: "google";
@@ -88,7 +117,7 @@ export declare const PROVIDER: {
88
117
  readonly NAME: "xai";
89
118
  };
90
119
  };
91
- export type LlmProviderName = typeof PROVIDER.ANTHROPIC.NAME | typeof PROVIDER.BEDROCK.NAME | typeof PROVIDER.GEMINI.NAME | typeof PROVIDER.OPENAI.NAME | typeof PROVIDER.OPENROUTER.NAME | typeof PROVIDER.XAI.NAME;
120
+ export type LlmProviderName = typeof PROVIDER.ANTHROPIC.NAME | typeof PROVIDER.BEDROCK.NAME | typeof PROVIDER.GOOGLE.NAME | typeof PROVIDER.OPENAI.NAME | typeof PROVIDER.OPENROUTER.NAME | typeof PROVIDER.XAI.NAME;
92
121
  export declare const DEFAULT: {
93
122
  readonly MODEL: {
94
123
  readonly BASE: "gpt-5.4";
@@ -109,8 +138,8 @@ export declare const DEFAULT: {
109
138
  };
110
139
  export declare const ALL: {
111
140
  readonly BASE: readonly ["claude-sonnet-4-6", "gemini-3.1-pro-preview", "gpt-5.4", "grok-latest"];
112
- readonly COMBINED: readonly ("claude-sonnet-4-6" | "claude-opus-4-8" | "claude-haiku-4-5" | "gemini-3.1-pro-preview" | "gemini-3.5-flash" | "gpt-5.4" | "gpt-5.5" | "gpt-5.4-mini" | "gpt-5.4-nano" | "grok-latest" | "grok-4.3-latest" | "grok-4-1-fast-reasoning" | "grok-4-1-fast-non-reasoning")[];
141
+ readonly COMBINED: readonly ("claude-sonnet-4-6" | "claude-opus-4-8" | "claude-haiku-4-5" | "gemini-3.1-pro-preview" | "gemini-3.5-flash" | "gemini-3.1-flash-lite" | "gpt-5.4" | "gpt-5.5" | "gpt-5.4-mini" | "gpt-5.4-nano" | "grok-latest" | "grok-4.3-latest" | "grok-4-1-fast-reasoning" | "grok-4-1-fast-non-reasoning")[];
113
142
  readonly LARGE: readonly ["claude-opus-4-8", "gemini-3.1-pro-preview", "gpt-5.5", "grok-4.3-latest"];
114
143
  readonly SMALL: readonly ["claude-sonnet-4-6", "gemini-3.5-flash", "gpt-5.4-mini", "grok-4-1-fast-reasoning"];
115
- readonly TINY: readonly ["claude-haiku-4-5", "gemini-3.5-flash", "gpt-5.4-nano", "grok-4-1-fast-non-reasoning"];
144
+ readonly TINY: readonly ["claude-haiku-4-5", "gemini-3.1-flash-lite", "gpt-5.4-nano", "grok-4-1-fast-non-reasoning"];
116
145
  };
@@ -22,11 +22,11 @@ const FIRST_CLASS_PROVIDER = {
22
22
  TINY: "claude-haiku-4-5",
23
23
  },
24
24
  // https://ai.google.dev/gemini-api/docs/models
25
- GEMINI: {
25
+ GOOGLE: {
26
26
  DEFAULT: "gemini-3.1-pro-preview",
27
27
  LARGE: "gemini-3.1-pro-preview",
28
28
  SMALL: "gemini-3.5-flash",
29
- TINY: "gemini-3.5-flash",
29
+ TINY: "gemini-3.1-flash-lite",
30
30
  },
31
31
  // https://developers.openai.com/api/docs/models
32
32
  OPENAI: {
@@ -43,6 +43,39 @@ const FIRST_CLASS_PROVIDER = {
43
43
  TINY: "grok-4-1-fast-non-reasoning",
44
44
  },
45
45
  };
46
+ const MODEL = {
47
+ // Anthropic
48
+ OPUS: "claude-opus-4-8",
49
+ SONNET: "claude-sonnet-4-6",
50
+ HAIKU: "claude-haiku-4-5",
51
+ FABLE: "claude-fable-5",
52
+ MYTHOS: "claude-mythos-5",
53
+ // Google
54
+ GEMINI_FLASH: "gemini-3.5-flash",
55
+ GEMINI_FLASH_LITE: "gemini-3.1-flash-lite",
56
+ GEMINI_PRO: "gemini-3.1-pro-preview",
57
+ // OpenAI
58
+ GPT: "gpt-5.5",
59
+ GPT_MINI: "gpt-5.5-mini",
60
+ GPT_NANO: "gpt-5.5-nano",
61
+ // xAI
62
+ GROK: "grok-latest",
63
+ };
64
+ const GOOGLE_PROVIDER = {
65
+ // https://ai.google.dev/gemini-api/docs/models
66
+ MODEL: {
67
+ DEFAULT: FIRST_CLASS_PROVIDER.GOOGLE.DEFAULT,
68
+ LARGE: FIRST_CLASS_PROVIDER.GOOGLE.LARGE,
69
+ SMALL: FIRST_CLASS_PROVIDER.GOOGLE.SMALL,
70
+ TINY: FIRST_CLASS_PROVIDER.GOOGLE.TINY,
71
+ },
72
+ MODEL_MATCH_WORDS: ["gemini", "google"],
73
+ NAME: "google",
74
+ ROLE: {
75
+ MODEL: "model",
76
+ USER: "user",
77
+ },
78
+ };
46
79
  const PROVIDER = {
47
80
  // https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html
48
81
  BEDROCK: {
@@ -96,21 +129,9 @@ const PROVIDER = {
96
129
  SCHEMA_VERSION: "v2",
97
130
  },
98
131
  },
99
- GEMINI: {
100
- // https://ai.google.dev/gemini-api/docs/models
101
- MODEL: {
102
- DEFAULT: FIRST_CLASS_PROVIDER.GEMINI.DEFAULT,
103
- LARGE: FIRST_CLASS_PROVIDER.GEMINI.LARGE,
104
- SMALL: FIRST_CLASS_PROVIDER.GEMINI.SMALL,
105
- TINY: FIRST_CLASS_PROVIDER.GEMINI.TINY,
106
- },
107
- MODEL_MATCH_WORDS: ["gemini", "google"],
108
- NAME: "google",
109
- ROLE: {
110
- MODEL: "model",
111
- USER: "user",
112
- },
113
- },
132
+ /** @deprecated Use PROVIDER.GOOGLE — "Google" is the provider; Gemini is the model family */
133
+ GEMINI: GOOGLE_PROVIDER,
134
+ GOOGLE: GOOGLE_PROVIDER,
114
135
  OPENAI: {
115
136
  // https://platform.openai.com/docs/models
116
137
  MODEL: {
@@ -166,7 +187,7 @@ const DEFAULT = {
166
187
  const ALL = {
167
188
  BASE: [
168
189
  PROVIDER.ANTHROPIC.MODEL.DEFAULT,
169
- PROVIDER.GEMINI.MODEL.DEFAULT,
190
+ PROVIDER.GOOGLE.MODEL.DEFAULT,
170
191
  PROVIDER.OPENAI.MODEL.DEFAULT,
171
192
  PROVIDER.XAI.MODEL.DEFAULT,
172
193
  ],
@@ -176,10 +197,10 @@ const ALL = {
176
197
  PROVIDER.ANTHROPIC.MODEL.LARGE,
177
198
  PROVIDER.ANTHROPIC.MODEL.SMALL,
178
199
  PROVIDER.ANTHROPIC.MODEL.TINY,
179
- PROVIDER.GEMINI.MODEL.DEFAULT,
180
- PROVIDER.GEMINI.MODEL.LARGE,
181
- PROVIDER.GEMINI.MODEL.SMALL,
182
- PROVIDER.GEMINI.MODEL.TINY,
200
+ PROVIDER.GOOGLE.MODEL.DEFAULT,
201
+ PROVIDER.GOOGLE.MODEL.LARGE,
202
+ PROVIDER.GOOGLE.MODEL.SMALL,
203
+ PROVIDER.GOOGLE.MODEL.TINY,
183
204
  PROVIDER.OPENAI.MODEL.DEFAULT,
184
205
  PROVIDER.OPENAI.MODEL.LARGE,
185
206
  PROVIDER.OPENAI.MODEL.SMALL,
@@ -192,19 +213,19 @@ const ALL = {
192
213
  ],
193
214
  LARGE: [
194
215
  PROVIDER.ANTHROPIC.MODEL.LARGE,
195
- PROVIDER.GEMINI.MODEL.LARGE,
216
+ PROVIDER.GOOGLE.MODEL.LARGE,
196
217
  PROVIDER.OPENAI.MODEL.LARGE,
197
218
  PROVIDER.XAI.MODEL.LARGE,
198
219
  ],
199
220
  SMALL: [
200
221
  PROVIDER.ANTHROPIC.MODEL.SMALL,
201
- PROVIDER.GEMINI.MODEL.SMALL,
222
+ PROVIDER.GOOGLE.MODEL.SMALL,
202
223
  PROVIDER.OPENAI.MODEL.SMALL,
203
224
  PROVIDER.XAI.MODEL.SMALL,
204
225
  ],
205
226
  TINY: [
206
227
  PROVIDER.ANTHROPIC.MODEL.TINY,
207
- PROVIDER.GEMINI.MODEL.TINY,
228
+ PROVIDER.GOOGLE.MODEL.TINY,
208
229
  PROVIDER.OPENAI.MODEL.TINY,
209
230
  PROVIDER.XAI.MODEL.TINY,
210
231
  ],
@@ -214,6 +235,7 @@ var constants = /*#__PURE__*/Object.freeze({
214
235
  __proto__: null,
215
236
  ALL: ALL,
216
237
  DEFAULT: DEFAULT,
238
+ MODEL: MODEL,
217
239
  PROVIDER: PROVIDER
218
240
  });
219
241
 
@@ -253,10 +275,10 @@ function determineModelProvider(input) {
253
275
  provider: PROVIDER.ANTHROPIC.NAME,
254
276
  };
255
277
  }
256
- if (input === PROVIDER.GEMINI.NAME || input === "gemini") {
278
+ if (input === PROVIDER.GOOGLE.NAME || input === "gemini") {
257
279
  return {
258
- model: PROVIDER.GEMINI.MODEL.DEFAULT,
259
- provider: PROVIDER.GEMINI.NAME,
280
+ model: PROVIDER.GOOGLE.MODEL.DEFAULT,
281
+ provider: PROVIDER.GOOGLE.NAME,
260
282
  };
261
283
  }
262
284
  if (input === PROVIDER.OPENAI.NAME) {
@@ -287,11 +309,11 @@ function determineModelProvider(input) {
287
309
  }
288
310
  }
289
311
  // Check if input matches a Gemini model exactly
290
- for (const [, modelValue] of Object.entries(PROVIDER.GEMINI.MODEL)) {
312
+ for (const [, modelValue] of Object.entries(PROVIDER.GOOGLE.MODEL)) {
291
313
  if (input === modelValue) {
292
314
  return {
293
315
  model: input,
294
- provider: PROVIDER.GEMINI.NAME,
316
+ provider: PROVIDER.GOOGLE.NAME,
295
317
  };
296
318
  }
297
319
  }
@@ -350,11 +372,11 @@ function determineModelProvider(input) {
350
372
  }
351
373
  }
352
374
  // Check Gemini match words
353
- for (const matchWord of PROVIDER.GEMINI.MODEL_MATCH_WORDS) {
375
+ for (const matchWord of PROVIDER.GOOGLE.MODEL_MATCH_WORDS) {
354
376
  if (lowerInput.includes(matchWord)) {
355
377
  return {
356
378
  model: input,
357
- provider: PROVIDER.GEMINI.NAME,
379
+ provider: PROVIDER.GOOGLE.NAME,
358
380
  };
359
381
  }
360
382
  }
@@ -2510,15 +2532,15 @@ const NOT_RETRYABLE_STATUS_CODES = [
2510
2532
  // Main
2511
2533
  //
2512
2534
  /**
2513
- * GeminiAdapter implements the ProviderAdapter interface for Google's Gemini API.
2535
+ * GoogleAdapter implements the ProviderAdapter interface for Google's Gemini API.
2514
2536
  * It handles request building, response parsing, and error classification
2515
2537
  * specific to Gemini's generateContent API.
2516
2538
  */
2517
- class GeminiAdapter extends BaseProviderAdapter {
2539
+ class GoogleAdapter extends BaseProviderAdapter {
2518
2540
  constructor() {
2519
2541
  super(...arguments);
2520
- this.name = PROVIDER.GEMINI.NAME;
2521
- this.defaultModel = PROVIDER.GEMINI.MODEL.DEFAULT;
2542
+ this.name = PROVIDER.GOOGLE.NAME;
2543
+ this.defaultModel = PROVIDER.GOOGLE.MODEL.DEFAULT;
2522
2544
  // Session-level cache of Gemini 3 models observed to reject the native
2523
2545
  // `responseJsonSchema` + tools combo. When a model is in this set,
2524
2546
  // buildRequest engages the legacy fake-tool path instead.
@@ -2573,7 +2595,7 @@ class GeminiAdapter extends BaseProviderAdapter {
2573
2595
  ? [...request.tools]
2574
2596
  : [];
2575
2597
  if (request.format && hasUserTools && !useNativeCombo) {
2576
- log$1.warn(`[GeminiAdapter] Using legacy structured_output tool fallback for model ${geminiRequest.model}; native responseJsonSchema + tools combo is only available on Gemini 3.`);
2598
+ log$1.warn(`[GoogleAdapter] Using legacy structured_output tool fallback for model ${geminiRequest.model}; native responseJsonSchema + tools combo is only available on Gemini 3.`);
2577
2599
  allTools.push({
2578
2600
  name: STRUCTURED_OUTPUT_TOOL_NAME$1,
2579
2601
  description: "Output a structured JSON object, " +
@@ -2704,7 +2726,7 @@ class GeminiAdapter extends BaseProviderAdapter {
2704
2726
  if (wantsNativeCombo && isStructuredOutputComboUnsupportedError(error)) {
2705
2727
  const model = geminiRequest.model;
2706
2728
  this.rememberModelRejectsStructuredOutputCombo(model);
2707
- log$1.warn(`[GeminiAdapter] Model ${model} rejected native responseJsonSchema + tools combo; falling back to legacy structured_output tool emulation.`);
2729
+ log$1.warn(`[GoogleAdapter] Model ${model} rejected native responseJsonSchema + tools combo; falling back to legacy structured_output tool emulation.`);
2708
2730
  const fallbackRequest = this.toFallbackStructuredOutputRequest(geminiRequest);
2709
2731
  const response = await genAI.models.generateContent({
2710
2732
  model: fallbackRequest.model,
@@ -3286,7 +3308,7 @@ class GeminiAdapter extends BaseProviderAdapter {
3286
3308
  }
3287
3309
  }
3288
3310
  // Export singleton instance
3289
- const geminiAdapter = new GeminiAdapter();
3311
+ const googleAdapter = new GoogleAdapter();
3290
3312
 
3291
3313
  // Patterns for OpenAI reasoning models that support extended thinking
3292
3314
  const REASONING_MODEL_PATTERNS = [
@@ -6837,8 +6859,8 @@ function prepareMessages$2(message, { data, placeholders } = {}) {
6837
6859
  return { messages, systemInstruction: undefined };
6838
6860
  }
6839
6861
 
6840
- class GeminiProvider {
6841
- constructor(model = PROVIDER.GEMINI.MODEL.DEFAULT, { apiKey } = {}) {
6862
+ class GoogleProvider {
6863
+ constructor(model = PROVIDER.GOOGLE.MODEL.DEFAULT, { apiKey } = {}) {
6842
6864
  this.log = getLogger$3();
6843
6865
  this.conversationHistory = [];
6844
6866
  this.model = model;
@@ -6857,7 +6879,7 @@ class GeminiProvider {
6857
6879
  }
6858
6880
  const client = await this.getClient();
6859
6881
  this._operateLoop = createOperateLoop({
6860
- adapter: geminiAdapter,
6882
+ adapter: googleAdapter,
6861
6883
  client,
6862
6884
  });
6863
6885
  return this._operateLoop;
@@ -6868,7 +6890,7 @@ class GeminiProvider {
6868
6890
  }
6869
6891
  const client = await this.getClient();
6870
6892
  this._streamLoop = createStreamLoop({
6871
- adapter: geminiAdapter,
6893
+ adapter: googleAdapter,
6872
6894
  client,
6873
6895
  });
6874
6896
  return this._streamLoop;
@@ -7393,7 +7415,7 @@ class Llm {
7393
7415
  let finalModel = model;
7394
7416
  // Legacy: accept "gemini" but warn
7395
7417
  if (providerName === "gemini") {
7396
- log$1.warn(`Provider "gemini" is deprecated, use "${PROVIDER.GEMINI.NAME}" instead`);
7418
+ log$1.warn(`Provider "gemini" is deprecated, use "${PROVIDER.GOOGLE.NAME}" instead`);
7397
7419
  }
7398
7420
  if (model) {
7399
7421
  const modelDetermined = determineModelProvider(model);
@@ -7437,8 +7459,8 @@ class Llm {
7437
7459
  return new AnthropicProvider(model || PROVIDER.ANTHROPIC.MODEL.DEFAULT, { apiKey });
7438
7460
  case PROVIDER.BEDROCK.NAME:
7439
7461
  return new BedrockProvider(model || PROVIDER.BEDROCK.MODEL.DEFAULT);
7440
- case PROVIDER.GEMINI.NAME:
7441
- return new GeminiProvider(model || PROVIDER.GEMINI.MODEL.DEFAULT, {
7462
+ case PROVIDER.GOOGLE.NAME:
7463
+ return new GoogleProvider(model || PROVIDER.GOOGLE.MODEL.DEFAULT, {
7442
7464
  apiKey,
7443
7465
  });
7444
7466
  case PROVIDER.OPENAI.NAME:
@@ -7895,7 +7917,8 @@ const toolkit = new JaypieToolkit(tools);
7895
7917
  });
7896
7918
 
7897
7919
  exports.BedrockProvider = BedrockProvider;
7898
- exports.GeminiProvider = GeminiProvider;
7920
+ exports.GeminiProvider = GoogleProvider;
7921
+ exports.GoogleProvider = GoogleProvider;
7899
7922
  exports.JaypieToolkit = JaypieToolkit;
7900
7923
  exports.LLM = constants;
7901
7924
  exports.Llm = Llm;