@ljoukov/llm 7.0.10 → 7.0.11

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/dist/index.d.cts CHANGED
@@ -19,10 +19,10 @@ declare function estimateCallCostUsd({ modelId, tokens, responseImages, imageSiz
19
19
  imageSize?: string;
20
20
  }): number;
21
21
 
22
- declare const OPENAI_MODEL_IDS: readonly ["gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano"];
22
+ declare const OPENAI_MODEL_IDS: readonly ["gpt-5.5", "gpt-5.5-fast", "gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano"];
23
23
  type OpenAiModelId = (typeof OPENAI_MODEL_IDS)[number];
24
24
  declare function isOpenAiModelId(value: string): value is OpenAiModelId;
25
- declare const CHATGPT_MODEL_IDS: readonly ["chatgpt-gpt-5.4", "chatgpt-gpt-5.4-fast", "chatgpt-gpt-5.4-mini", "chatgpt-gpt-5.3-codex-spark"];
25
+ declare const CHATGPT_MODEL_IDS: readonly ["chatgpt-gpt-5.5", "chatgpt-gpt-5.5-fast", "chatgpt-gpt-5.4", "chatgpt-gpt-5.4-fast", "chatgpt-gpt-5.4-mini", "chatgpt-gpt-5.3-codex-spark"];
26
26
  declare const EXPERIMENTAL_CHATGPT_MODEL_PREFIX: "experimental-chatgpt-";
27
27
  type ListedChatGptModelId = (typeof CHATGPT_MODEL_IDS)[number];
28
28
  type ExperimentalChatGptModelId = `${typeof EXPERIMENTAL_CHATGPT_MODEL_PREFIX}${string}`;
@@ -218,11 +218,11 @@ type LlmToolCallCompletedEvent = {
218
218
  type LlmToolCallStreamEvent = LlmToolCallStartedEvent | LlmToolCallCompletedEvent;
219
219
  type LlmStreamEvent = LlmTextDeltaEvent | LlmUsageEvent | LlmModelEvent | LlmBlockedEvent | LlmToolCallStreamEvent;
220
220
  type LlmProvider = "openai" | "chatgpt" | "gemini" | "fireworks";
221
- declare const LLM_TEXT_MODEL_IDS: readonly ["gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano", "chatgpt-gpt-5.4", "chatgpt-gpt-5.4-fast", "chatgpt-gpt-5.4-mini", "chatgpt-gpt-5.3-codex-spark", "kimi-k2.5", "glm-5", "minimax-m2.1", "gpt-oss-120b", "gemini-3.1-pro-preview", "gemini-3-flash-preview", "gemini-2.5-pro", "gemini-flash-latest", "gemini-flash-lite-latest"];
221
+ declare const LLM_TEXT_MODEL_IDS: readonly ["gpt-5.5", "gpt-5.5-fast", "gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano", "chatgpt-gpt-5.5", "chatgpt-gpt-5.5-fast", "chatgpt-gpt-5.4", "chatgpt-gpt-5.4-fast", "chatgpt-gpt-5.4-mini", "chatgpt-gpt-5.3-codex-spark", "kimi-k2.5", "glm-5", "minimax-m2.1", "gpt-oss-120b", "gemini-3.1-pro-preview", "gemini-3-flash-preview", "gemini-2.5-pro", "gemini-flash-latest", "gemini-flash-lite-latest"];
222
222
  type LlmTextModelId = (typeof LLM_TEXT_MODEL_IDS)[number] | ExperimentalChatGptModelId;
223
223
  declare const LLM_IMAGE_MODEL_IDS: readonly ["gemini-3-pro-image-preview", "gemini-3.1-flash-image-preview"];
224
224
  type LlmImageModelId = (typeof LLM_IMAGE_MODEL_IDS)[number];
225
- declare const LLM_MODEL_IDS: readonly ["gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano", "chatgpt-gpt-5.4", "chatgpt-gpt-5.4-fast", "chatgpt-gpt-5.4-mini", "chatgpt-gpt-5.3-codex-spark", "kimi-k2.5", "glm-5", "minimax-m2.1", "gpt-oss-120b", "gemini-3.1-pro-preview", "gemini-3-flash-preview", "gemini-2.5-pro", "gemini-flash-latest", "gemini-flash-lite-latest", "gemini-3-pro-image-preview", "gemini-3.1-flash-image-preview"];
225
+ declare const LLM_MODEL_IDS: readonly ["gpt-5.5", "gpt-5.5-fast", "gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano", "chatgpt-gpt-5.5", "chatgpt-gpt-5.5-fast", "chatgpt-gpt-5.4", "chatgpt-gpt-5.4-fast", "chatgpt-gpt-5.4-mini", "chatgpt-gpt-5.3-codex-spark", "kimi-k2.5", "glm-5", "minimax-m2.1", "gpt-oss-120b", "gemini-3.1-pro-preview", "gemini-3-flash-preview", "gemini-2.5-pro", "gemini-flash-latest", "gemini-flash-lite-latest", "gemini-3-pro-image-preview", "gemini-3.1-flash-image-preview"];
226
226
  type LlmModelId = LlmTextModelId | LlmImageModelId;
227
227
  declare function isLlmTextModelId(value: string): value is LlmTextModelId;
228
228
  declare function isLlmImageModelId(value: string): value is LlmImageModelId;
package/dist/index.d.ts CHANGED
@@ -19,10 +19,10 @@ declare function estimateCallCostUsd({ modelId, tokens, responseImages, imageSiz
19
19
  imageSize?: string;
20
20
  }): number;
21
21
 
22
- declare const OPENAI_MODEL_IDS: readonly ["gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano"];
22
+ declare const OPENAI_MODEL_IDS: readonly ["gpt-5.5", "gpt-5.5-fast", "gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano"];
23
23
  type OpenAiModelId = (typeof OPENAI_MODEL_IDS)[number];
24
24
  declare function isOpenAiModelId(value: string): value is OpenAiModelId;
25
- declare const CHATGPT_MODEL_IDS: readonly ["chatgpt-gpt-5.4", "chatgpt-gpt-5.4-fast", "chatgpt-gpt-5.4-mini", "chatgpt-gpt-5.3-codex-spark"];
25
+ declare const CHATGPT_MODEL_IDS: readonly ["chatgpt-gpt-5.5", "chatgpt-gpt-5.5-fast", "chatgpt-gpt-5.4", "chatgpt-gpt-5.4-fast", "chatgpt-gpt-5.4-mini", "chatgpt-gpt-5.3-codex-spark"];
26
26
  declare const EXPERIMENTAL_CHATGPT_MODEL_PREFIX: "experimental-chatgpt-";
27
27
  type ListedChatGptModelId = (typeof CHATGPT_MODEL_IDS)[number];
28
28
  type ExperimentalChatGptModelId = `${typeof EXPERIMENTAL_CHATGPT_MODEL_PREFIX}${string}`;
@@ -218,11 +218,11 @@ type LlmToolCallCompletedEvent = {
218
218
  type LlmToolCallStreamEvent = LlmToolCallStartedEvent | LlmToolCallCompletedEvent;
219
219
  type LlmStreamEvent = LlmTextDeltaEvent | LlmUsageEvent | LlmModelEvent | LlmBlockedEvent | LlmToolCallStreamEvent;
220
220
  type LlmProvider = "openai" | "chatgpt" | "gemini" | "fireworks";
221
- declare const LLM_TEXT_MODEL_IDS: readonly ["gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano", "chatgpt-gpt-5.4", "chatgpt-gpt-5.4-fast", "chatgpt-gpt-5.4-mini", "chatgpt-gpt-5.3-codex-spark", "kimi-k2.5", "glm-5", "minimax-m2.1", "gpt-oss-120b", "gemini-3.1-pro-preview", "gemini-3-flash-preview", "gemini-2.5-pro", "gemini-flash-latest", "gemini-flash-lite-latest"];
221
+ declare const LLM_TEXT_MODEL_IDS: readonly ["gpt-5.5", "gpt-5.5-fast", "gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano", "chatgpt-gpt-5.5", "chatgpt-gpt-5.5-fast", "chatgpt-gpt-5.4", "chatgpt-gpt-5.4-fast", "chatgpt-gpt-5.4-mini", "chatgpt-gpt-5.3-codex-spark", "kimi-k2.5", "glm-5", "minimax-m2.1", "gpt-oss-120b", "gemini-3.1-pro-preview", "gemini-3-flash-preview", "gemini-2.5-pro", "gemini-flash-latest", "gemini-flash-lite-latest"];
222
222
  type LlmTextModelId = (typeof LLM_TEXT_MODEL_IDS)[number] | ExperimentalChatGptModelId;
223
223
  declare const LLM_IMAGE_MODEL_IDS: readonly ["gemini-3-pro-image-preview", "gemini-3.1-flash-image-preview"];
224
224
  type LlmImageModelId = (typeof LLM_IMAGE_MODEL_IDS)[number];
225
- declare const LLM_MODEL_IDS: readonly ["gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano", "chatgpt-gpt-5.4", "chatgpt-gpt-5.4-fast", "chatgpt-gpt-5.4-mini", "chatgpt-gpt-5.3-codex-spark", "kimi-k2.5", "glm-5", "minimax-m2.1", "gpt-oss-120b", "gemini-3.1-pro-preview", "gemini-3-flash-preview", "gemini-2.5-pro", "gemini-flash-latest", "gemini-flash-lite-latest", "gemini-3-pro-image-preview", "gemini-3.1-flash-image-preview"];
225
+ declare const LLM_MODEL_IDS: readonly ["gpt-5.5", "gpt-5.5-fast", "gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano", "chatgpt-gpt-5.5", "chatgpt-gpt-5.5-fast", "chatgpt-gpt-5.4", "chatgpt-gpt-5.4-fast", "chatgpt-gpt-5.4-mini", "chatgpt-gpt-5.3-codex-spark", "kimi-k2.5", "glm-5", "minimax-m2.1", "gpt-oss-120b", "gemini-3.1-pro-preview", "gemini-3-flash-preview", "gemini-2.5-pro", "gemini-flash-latest", "gemini-flash-lite-latest", "gemini-3-pro-image-preview", "gemini-3.1-flash-image-preview"];
226
226
  type LlmModelId = LlmTextModelId | LlmImageModelId;
227
227
  declare function isLlmTextModelId(value: string): value is LlmTextModelId;
228
228
  declare function isLlmImageModelId(value: string): value is LlmImageModelId;
package/dist/index.js CHANGED
@@ -206,16 +206,27 @@ function getGeminiImagePricing(modelId) {
206
206
  }
207
207
 
208
208
  // src/openai/models.ts
209
- var OPENAI_MODEL_IDS = ["gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano"];
209
+ var OPENAI_MODEL_IDS = [
210
+ "gpt-5.5",
211
+ "gpt-5.5-fast",
212
+ "gpt-5.4",
213
+ "gpt-5.4-mini",
214
+ "gpt-5.4-nano"
215
+ ];
210
216
  function isOpenAiModelId(value) {
211
217
  return OPENAI_MODEL_IDS.includes(value);
212
218
  }
213
219
  var CHATGPT_MODEL_IDS = [
220
+ "chatgpt-gpt-5.5",
221
+ "chatgpt-gpt-5.5-fast",
214
222
  "chatgpt-gpt-5.4",
215
223
  "chatgpt-gpt-5.4-fast",
216
224
  "chatgpt-gpt-5.4-mini",
217
225
  "chatgpt-gpt-5.3-codex-spark"
218
226
  ];
227
+ var FAST_MODEL_SUFFIX = "-fast";
228
+ var OPENAI_PRIORITY_MODEL_IDS = ["gpt-5.5-fast"];
229
+ var CHATGPT_PRIORITY_MODEL_IDS = ["chatgpt-gpt-5.5-fast", "chatgpt-gpt-5.4-fast"];
219
230
  var EXPERIMENTAL_CHATGPT_MODEL_PREFIX = "experimental-chatgpt-";
220
231
  function isExperimentalChatGptModelId(value) {
221
232
  return value.startsWith(EXPERIMENTAL_CHATGPT_MODEL_PREFIX) && value.length > EXPERIMENTAL_CHATGPT_MODEL_PREFIX.length;
@@ -223,6 +234,15 @@ function isExperimentalChatGptModelId(value) {
223
234
  function isChatGptModelId(value) {
224
235
  return CHATGPT_MODEL_IDS.includes(value) || isExperimentalChatGptModelId(value);
225
236
  }
237
+ function stripFastSuffix(model) {
238
+ return model.endsWith(FAST_MODEL_SUFFIX) ? model.slice(0, -FAST_MODEL_SUFFIX.length) : model;
239
+ }
240
+ function resolveOpenAiProviderModel(model) {
241
+ return OPENAI_PRIORITY_MODEL_IDS.includes(model) ? stripFastSuffix(model) : model;
242
+ }
243
+ function resolveOpenAiServiceTier(model) {
244
+ return OPENAI_PRIORITY_MODEL_IDS.includes(model) ? "priority" : void 0;
245
+ }
226
246
  function stripChatGptPrefix(model) {
227
247
  if (isExperimentalChatGptModelId(model)) {
228
248
  return model.slice(EXPERIMENTAL_CHATGPT_MODEL_PREFIX.length);
@@ -230,18 +250,16 @@ function stripChatGptPrefix(model) {
230
250
  return model.slice("chatgpt-".length);
231
251
  }
232
252
  function resolveChatGptProviderModel(model) {
233
- switch (model) {
234
- case "chatgpt-gpt-5.4-fast":
235
- return "gpt-5.4";
236
- default:
237
- return stripChatGptPrefix(model);
238
- }
253
+ const providerModel = stripChatGptPrefix(model);
254
+ return CHATGPT_PRIORITY_MODEL_IDS.includes(model) ? stripFastSuffix(providerModel) : providerModel;
239
255
  }
240
256
  function resolveChatGptServiceTier(model) {
241
- return model === "chatgpt-gpt-5.4-fast" ? "priority" : void 0;
257
+ return CHATGPT_PRIORITY_MODEL_IDS.includes(model) ? "priority" : void 0;
242
258
  }
243
259
 
244
260
  // src/openai/pricing.ts
261
+ var OPENAI_GPT_55_FAST_MODEL_IDS = ["gpt-5.5-fast", "chatgpt-gpt-5.5-fast"];
262
+ var OPENAI_GPT_55_STANDARD_MODEL_IDS = ["gpt-5.5", "chatgpt-gpt-5.5"];
245
263
  var OPENAI_GPT_54_FAST_MODEL_IDS = ["gpt-5.4-fast", "chatgpt-gpt-5.4-fast"];
246
264
  var OPENAI_GPT_54_MINI_MODEL_IDS = ["gpt-5.4-mini", "chatgpt-gpt-5.4-mini"];
247
265
  var OPENAI_GPT_54_NANO_MODEL_IDS = ["gpt-5.4-nano"];
@@ -250,6 +268,16 @@ var OPENAI_GPT_53_CODEX_SPARK_MODEL_IDS = [
250
268
  "chatgpt-gpt-5.3-codex-spark"
251
269
  ];
252
270
  var OPENAI_GPT_54_STANDARD_MODEL_IDS = ["gpt-5.4", "chatgpt-gpt-5.4"];
271
+ var OPENAI_GPT_55_PRICING = {
272
+ inputRate: 5 / 1e6,
273
+ cachedRate: 0.5 / 1e6,
274
+ outputRate: 30 / 1e6
275
+ };
276
+ var OPENAI_GPT_55_PRIORITY_PRICING = {
277
+ inputRate: 12.5 / 1e6,
278
+ cachedRate: 1.25 / 1e6,
279
+ outputRate: 75 / 1e6
280
+ };
253
281
  var OPENAI_GPT_54_PRICING = {
254
282
  inputRate: 2.5 / 1e6,
255
283
  cachedRate: 0.25 / 1e6,
@@ -274,6 +302,12 @@ function getOpenAiPricing(modelId) {
274
302
  if (isExperimentalChatGptModelId(modelId)) {
275
303
  return OPENAI_GPT_54_PRICING;
276
304
  }
305
+ if (OPENAI_GPT_55_FAST_MODEL_IDS.includes(modelId)) {
306
+ return OPENAI_GPT_55_PRIORITY_PRICING;
307
+ }
308
+ if (OPENAI_GPT_55_STANDARD_MODEL_IDS.includes(modelId)) {
309
+ return OPENAI_GPT_55_PRICING;
310
+ }
277
311
  if (OPENAI_GPT_54_FAST_MODEL_IDS.includes(modelId)) {
278
312
  return OPENAI_GPT_54_PRIORITY_PRICING;
279
313
  }
@@ -4955,7 +4989,11 @@ function resolveProvider(model) {
4955
4989
  }
4956
4990
  }
4957
4991
  if (isOpenAiModelId(model)) {
4958
- return { provider: "openai", model };
4992
+ return {
4993
+ provider: "openai",
4994
+ model: resolveOpenAiProviderModel(model),
4995
+ serviceTier: resolveOpenAiServiceTier(model)
4996
+ };
4959
4997
  }
4960
4998
  throw new Error(`Unsupported text model: ${model}`);
4961
4999
  }
@@ -7729,6 +7767,7 @@ async function runTextCall(params) {
7729
7767
  {
7730
7768
  model: modelForProvider,
7731
7769
  input: openAiInput,
7770
+ ...providerInfo.serviceTier ? { service_tier: providerInfo.serviceTier } : {},
7732
7771
  reasoning,
7733
7772
  text: openAiTextConfig,
7734
7773
  ...openAiTools ? { tools: openAiTools } : {},
@@ -8614,6 +8653,7 @@ async function runToolLoop(request) {
8614
8653
  const stepRequestPayload = {
8615
8654
  model: providerInfo.model,
8616
8655
  input: preparedInput,
8656
+ ...providerInfo.serviceTier ? { service_tier: providerInfo.serviceTier } : {},
8617
8657
  ...previousResponseId ? { previous_response_id: previousResponseId } : {},
8618
8658
  ...openAiTools.length > 0 ? { tools: openAiTools } : {},
8619
8659
  ...openAiTools.length > 0 ? { parallel_tool_calls: true } : {},
@@ -8642,6 +8682,7 @@ async function runToolLoop(request) {
8642
8682
  {
8643
8683
  model: providerInfo.model,
8644
8684
  input: preparedInput,
8685
+ ...providerInfo.serviceTier ? { service_tier: providerInfo.serviceTier } : {},
8645
8686
  ...previousResponseId ? { previous_response_id: previousResponseId } : {},
8646
8687
  ...openAiTools.length > 0 ? { tools: openAiTools } : {},
8647
8688
  ...openAiTools.length > 0 ? { parallel_tool_calls: true } : {},
@@ -12653,7 +12694,7 @@ function isCodexModel(model) {
12653
12694
  return true;
12654
12695
  }
12655
12696
  const normalized = model.startsWith("chatgpt-") ? model.slice("chatgpt-".length) : model;
12656
- return normalized.includes("codex") || normalized === "gpt-5.4" || normalized === "gpt-5.4-fast";
12697
+ return normalized.includes("codex") || normalized === "gpt-5.5" || normalized === "gpt-5.5-fast" || normalized === "gpt-5.4" || normalized === "gpt-5.4-fast";
12657
12698
  }
12658
12699
  function isGeminiModel(model) {
12659
12700
  return model.startsWith("gemini-");