@ljoukov/llm 7.0.8 → 7.0.10

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.cjs CHANGED
@@ -36,6 +36,7 @@ __export(index_exports, {
36
36
  CODEX_APPLY_PATCH_LARK_GRAMMAR: () => CODEX_APPLY_PATCH_LARK_GRAMMAR,
37
37
  DEFAULT_FILE_TTL_SECONDS: () => DEFAULT_FILE_TTL_SECONDS,
38
38
  DEFAULT_SIGNED_URL_TTL_SECONDS: () => DEFAULT_SIGNED_URL_TTL_SECONDS,
39
+ EXPERIMENTAL_CHATGPT_MODEL_PREFIX: () => EXPERIMENTAL_CHATGPT_MODEL_PREFIX,
39
40
  FIREWORKS_DEFAULT_GLM_MODEL: () => FIREWORKS_DEFAULT_GLM_MODEL,
40
41
  FIREWORKS_DEFAULT_GPT_OSS_120B_MODEL: () => FIREWORKS_DEFAULT_GPT_OSS_120B_MODEL,
41
42
  FIREWORKS_DEFAULT_KIMI_MODEL: () => FIREWORKS_DEFAULT_KIMI_MODEL,
@@ -90,6 +91,7 @@ __export(index_exports, {
90
91
  getChatGptAuthProfile: () => getChatGptAuthProfile,
91
92
  getCurrentToolCallContext: () => getCurrentToolCallContext,
92
93
  isChatGptModelId: () => isChatGptModelId,
94
+ isExperimentalChatGptModelId: () => isExperimentalChatGptModelId,
93
95
  isFireworksModelId: () => isFireworksModelId,
94
96
  isGeminiImageModelId: () => isGeminiImageModelId,
95
97
  isGeminiModelId: () => isGeminiModelId,
@@ -318,6 +320,42 @@ function getGeminiImagePricing(modelId) {
318
320
  return void 0;
319
321
  }
320
322
 
323
+ // src/openai/models.ts
324
+ var OPENAI_MODEL_IDS = ["gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano"];
325
+ function isOpenAiModelId(value) {
326
+ return OPENAI_MODEL_IDS.includes(value);
327
+ }
328
+ var CHATGPT_MODEL_IDS = [
329
+ "chatgpt-gpt-5.4",
330
+ "chatgpt-gpt-5.4-fast",
331
+ "chatgpt-gpt-5.4-mini",
332
+ "chatgpt-gpt-5.3-codex-spark"
333
+ ];
334
+ var EXPERIMENTAL_CHATGPT_MODEL_PREFIX = "experimental-chatgpt-";
335
+ function isExperimentalChatGptModelId(value) {
336
+ return value.startsWith(EXPERIMENTAL_CHATGPT_MODEL_PREFIX) && value.length > EXPERIMENTAL_CHATGPT_MODEL_PREFIX.length;
337
+ }
338
+ function isChatGptModelId(value) {
339
+ return CHATGPT_MODEL_IDS.includes(value) || isExperimentalChatGptModelId(value);
340
+ }
341
+ function stripChatGptPrefix(model) {
342
+ if (isExperimentalChatGptModelId(model)) {
343
+ return model.slice(EXPERIMENTAL_CHATGPT_MODEL_PREFIX.length);
344
+ }
345
+ return model.slice("chatgpt-".length);
346
+ }
347
+ function resolveChatGptProviderModel(model) {
348
+ switch (model) {
349
+ case "chatgpt-gpt-5.4-fast":
350
+ return "gpt-5.4";
351
+ default:
352
+ return stripChatGptPrefix(model);
353
+ }
354
+ }
355
+ function resolveChatGptServiceTier(model) {
356
+ return model === "chatgpt-gpt-5.4-fast" ? "priority" : void 0;
357
+ }
358
+
321
359
  // src/openai/pricing.ts
322
360
  var OPENAI_GPT_54_FAST_MODEL_IDS = ["gpt-5.4-fast", "chatgpt-gpt-5.4-fast"];
323
361
  var OPENAI_GPT_54_MINI_MODEL_IDS = ["gpt-5.4-mini", "chatgpt-gpt-5.4-mini"];
@@ -348,6 +386,9 @@ var OPENAI_GPT_54_NANO_PRICING = {
348
386
  outputRate: 0.4 / 1e6
349
387
  };
350
388
  function getOpenAiPricing(modelId) {
389
+ if (isExperimentalChatGptModelId(modelId)) {
390
+ return OPENAI_GPT_54_PRICING;
391
+ }
351
392
  if (OPENAI_GPT_54_FAST_MODEL_IDS.includes(modelId)) {
352
393
  return OPENAI_GPT_54_PRIORITY_PRICING;
353
394
  }
@@ -2832,35 +2873,6 @@ async function runOpenAiCall(fn, modelId, runOptions) {
2832
2873
  return getSchedulerForModel3(modelId).run(async () => fn(getOpenAiClient()), runOptions);
2833
2874
  }
2834
2875
 
2835
- // src/openai/models.ts
2836
- var OPENAI_MODEL_IDS = ["gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano"];
2837
- function isOpenAiModelId(value) {
2838
- return OPENAI_MODEL_IDS.includes(value);
2839
- }
2840
- var CHATGPT_MODEL_IDS = [
2841
- "chatgpt-gpt-5.4",
2842
- "chatgpt-gpt-5.4-fast",
2843
- "chatgpt-gpt-5.4-mini",
2844
- "chatgpt-gpt-5.3-codex-spark"
2845
- ];
2846
- function isChatGptModelId(value) {
2847
- return CHATGPT_MODEL_IDS.includes(value);
2848
- }
2849
- function stripChatGptPrefix(model) {
2850
- return model.slice("chatgpt-".length);
2851
- }
2852
- function resolveChatGptProviderModel(model) {
2853
- switch (model) {
2854
- case "chatgpt-gpt-5.4-fast":
2855
- return "gpt-5.4";
2856
- default:
2857
- return stripChatGptPrefix(model);
2858
- }
2859
- }
2860
- function resolveChatGptServiceTier(model) {
2861
- return model === "chatgpt-gpt-5.4-fast" ? "priority" : void 0;
2862
- }
2863
-
2864
2876
  // src/agentLogging.ts
2865
2877
  var import_node_async_hooks = require("async_hooks");
2866
2878
  var import_node_buffer2 = require("buffer");
@@ -7936,7 +7948,7 @@ async function runTextCall(params) {
7936
7948
  pushEvent({ type: "blocked" });
7937
7949
  }
7938
7950
  if (result2.model) {
7939
- modelVersion = providerInfo.serviceTier ? request.model : `chatgpt-${result2.model}`;
7951
+ modelVersion = providerInfo.serviceTier || isExperimentalChatGptModelId(request.model) ? request.model : `chatgpt-${result2.model}`;
7940
7952
  pushEvent({ type: "model", modelVersion });
7941
7953
  }
7942
7954
  latestUsage = extractChatGptUsageTokens(result2.usage);
@@ -9142,7 +9154,7 @@ async function runToolLoop(request) {
9142
9154
  }
9143
9155
  });
9144
9156
  const modelCompletedAtMs = Date.now();
9145
- modelVersion = response.model && !providerInfo.serviceTier ? `chatgpt-${response.model}` : request.model;
9157
+ modelVersion = response.model && !providerInfo.serviceTier && !isExperimentalChatGptModelId(request.model) ? `chatgpt-${response.model}` : request.model;
9146
9158
  usageTokens = extractChatGptUsageTokens(response.usage);
9147
9159
  const stepCostUsd = estimateCallCostUsd({
9148
9160
  modelId: modelVersion,
@@ -10895,10 +10907,16 @@ function resolveCollabInputText(params) {
10895
10907
  return blocks.join("\n\n");
10896
10908
  }
10897
10909
  if (!params.items || params.items.length === 0) {
10910
+ if (blocks.length > 0) {
10911
+ return blocks.join("\n\n");
10912
+ }
10898
10913
  throw new Error(params.emptyItemsError);
10899
10914
  }
10900
10915
  const itemText = resolveInputItemsText(params.items);
10901
10916
  if (!itemText) {
10917
+ if (blocks.length > 0) {
10918
+ return blocks.join("\n\n");
10919
+ }
10902
10920
  throw new Error(params.emptyItemsError);
10903
10921
  }
10904
10922
  blocks.push(itemText);
@@ -12746,6 +12764,9 @@ async function runAccessHook2(runtime, context) {
12746
12764
  await runtime.checkAccess(context);
12747
12765
  }
12748
12766
  function isCodexModel(model) {
12767
+ if (model.startsWith("experimental-chatgpt-")) {
12768
+ return true;
12769
+ }
12749
12770
  const normalized = model.startsWith("chatgpt-") ? model.slice("chatgpt-".length) : model;
12750
12771
  return normalized.includes("codex") || normalized === "gpt-5.4" || normalized === "gpt-5.4-fast";
12751
12772
  }
@@ -14186,6 +14207,7 @@ async function runCandidateEvolution(options) {
14186
14207
  CODEX_APPLY_PATCH_LARK_GRAMMAR,
14187
14208
  DEFAULT_FILE_TTL_SECONDS,
14188
14209
  DEFAULT_SIGNED_URL_TTL_SECONDS,
14210
+ EXPERIMENTAL_CHATGPT_MODEL_PREFIX,
14189
14211
  FIREWORKS_DEFAULT_GLM_MODEL,
14190
14212
  FIREWORKS_DEFAULT_GPT_OSS_120B_MODEL,
14191
14213
  FIREWORKS_DEFAULT_KIMI_MODEL,
@@ -14240,6 +14262,7 @@ async function runCandidateEvolution(options) {
14240
14262
  getChatGptAuthProfile,
14241
14263
  getCurrentToolCallContext,
14242
14264
  isChatGptModelId,
14265
+ isExperimentalChatGptModelId,
14243
14266
  isFireworksModelId,
14244
14267
  isGeminiImageModelId,
14245
14268
  isGeminiModelId,