@ljoukov/llm 4.0.2 → 4.0.3
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/README.md +3 -1
- package/dist/index.cjs +44 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +44 -4
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.cts
CHANGED
|
@@ -115,11 +115,11 @@ type LlmToolCallCompletedEvent = {
|
|
|
115
115
|
type LlmToolCallStreamEvent = LlmToolCallStartedEvent | LlmToolCallCompletedEvent;
|
|
116
116
|
type LlmStreamEvent = LlmTextDeltaEvent | LlmUsageEvent | LlmModelEvent | LlmBlockedEvent | LlmToolCallStreamEvent;
|
|
117
117
|
type LlmProvider = "openai" | "chatgpt" | "gemini" | "fireworks";
|
|
118
|
-
declare const LLM_TEXT_MODEL_IDS: readonly ["gpt-5.3-codex", "gpt-5.2", "gpt-5.1-codex-mini", "chatgpt-gpt-5.3-codex", "chatgpt-gpt-5.3-codex-spark", "chatgpt-gpt-5.2", "chatgpt-gpt-5.1-codex-mini", "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"];
|
|
118
|
+
declare const LLM_TEXT_MODEL_IDS: readonly ["gpt-5.4", "gpt-5.3-codex", "gpt-5.2", "gpt-5.1-codex-mini", "chatgpt-gpt-5.4", "chatgpt-gpt-5.4-fast", "chatgpt-gpt-5.3-codex", "chatgpt-gpt-5.3-codex-spark", "chatgpt-gpt-5.2", "chatgpt-gpt-5.1-codex-mini", "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"];
|
|
119
119
|
type LlmTextModelId = (typeof LLM_TEXT_MODEL_IDS)[number];
|
|
120
120
|
declare const LLM_IMAGE_MODEL_IDS: readonly ["gemini-3-pro-image-preview", "gemini-3.1-flash-image-preview"];
|
|
121
121
|
type LlmImageModelId = (typeof LLM_IMAGE_MODEL_IDS)[number];
|
|
122
|
-
declare const LLM_MODEL_IDS: readonly ["gpt-5.3-codex", "gpt-5.2", "gpt-5.1-codex-mini", "chatgpt-gpt-5.3-codex", "chatgpt-gpt-5.3-codex-spark", "chatgpt-gpt-5.2", "chatgpt-gpt-5.1-codex-mini", "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"];
|
|
122
|
+
declare const LLM_MODEL_IDS: readonly ["gpt-5.4", "gpt-5.3-codex", "gpt-5.2", "gpt-5.1-codex-mini", "chatgpt-gpt-5.4", "chatgpt-gpt-5.4-fast", "chatgpt-gpt-5.3-codex", "chatgpt-gpt-5.3-codex-spark", "chatgpt-gpt-5.2", "chatgpt-gpt-5.1-codex-mini", "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"];
|
|
123
123
|
type LlmModelId = (typeof LLM_MODEL_IDS)[number];
|
|
124
124
|
declare function isLlmTextModelId(value: string): value is LlmTextModelId;
|
|
125
125
|
declare function isLlmImageModelId(value: string): value is LlmImageModelId;
|
|
@@ -848,10 +848,10 @@ declare function refreshChatGptOauthToken(refreshToken: string, fallback?: {
|
|
|
848
848
|
}): Promise<ChatGptAuthProfile>;
|
|
849
849
|
declare function getChatGptAuthProfile(): Promise<ChatGptAuthProfile>;
|
|
850
850
|
|
|
851
|
-
declare const OPENAI_MODEL_IDS: readonly ["gpt-5.3-codex", "gpt-5.2", "gpt-5.1-codex-mini"];
|
|
851
|
+
declare const OPENAI_MODEL_IDS: readonly ["gpt-5.4", "gpt-5.3-codex", "gpt-5.2", "gpt-5.1-codex-mini"];
|
|
852
852
|
type OpenAiModelId = (typeof OPENAI_MODEL_IDS)[number];
|
|
853
853
|
declare function isOpenAiModelId(value: string): value is OpenAiModelId;
|
|
854
|
-
declare const CHATGPT_MODEL_IDS: readonly ["chatgpt-gpt-5.3-codex", "chatgpt-gpt-5.3-codex-spark", "chatgpt-gpt-5.2", "chatgpt-gpt-5.1-codex-mini"];
|
|
854
|
+
declare const CHATGPT_MODEL_IDS: readonly ["chatgpt-gpt-5.4", "chatgpt-gpt-5.4-fast", "chatgpt-gpt-5.3-codex", "chatgpt-gpt-5.3-codex-spark", "chatgpt-gpt-5.2", "chatgpt-gpt-5.1-codex-mini"];
|
|
855
855
|
type ChatGptModelId = (typeof CHATGPT_MODEL_IDS)[number];
|
|
856
856
|
declare function isChatGptModelId(value: string): value is ChatGptModelId;
|
|
857
857
|
|
package/dist/index.d.ts
CHANGED
|
@@ -115,11 +115,11 @@ type LlmToolCallCompletedEvent = {
|
|
|
115
115
|
type LlmToolCallStreamEvent = LlmToolCallStartedEvent | LlmToolCallCompletedEvent;
|
|
116
116
|
type LlmStreamEvent = LlmTextDeltaEvent | LlmUsageEvent | LlmModelEvent | LlmBlockedEvent | LlmToolCallStreamEvent;
|
|
117
117
|
type LlmProvider = "openai" | "chatgpt" | "gemini" | "fireworks";
|
|
118
|
-
declare const LLM_TEXT_MODEL_IDS: readonly ["gpt-5.3-codex", "gpt-5.2", "gpt-5.1-codex-mini", "chatgpt-gpt-5.3-codex", "chatgpt-gpt-5.3-codex-spark", "chatgpt-gpt-5.2", "chatgpt-gpt-5.1-codex-mini", "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"];
|
|
118
|
+
declare const LLM_TEXT_MODEL_IDS: readonly ["gpt-5.4", "gpt-5.3-codex", "gpt-5.2", "gpt-5.1-codex-mini", "chatgpt-gpt-5.4", "chatgpt-gpt-5.4-fast", "chatgpt-gpt-5.3-codex", "chatgpt-gpt-5.3-codex-spark", "chatgpt-gpt-5.2", "chatgpt-gpt-5.1-codex-mini", "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"];
|
|
119
119
|
type LlmTextModelId = (typeof LLM_TEXT_MODEL_IDS)[number];
|
|
120
120
|
declare const LLM_IMAGE_MODEL_IDS: readonly ["gemini-3-pro-image-preview", "gemini-3.1-flash-image-preview"];
|
|
121
121
|
type LlmImageModelId = (typeof LLM_IMAGE_MODEL_IDS)[number];
|
|
122
|
-
declare const LLM_MODEL_IDS: readonly ["gpt-5.3-codex", "gpt-5.2", "gpt-5.1-codex-mini", "chatgpt-gpt-5.3-codex", "chatgpt-gpt-5.3-codex-spark", "chatgpt-gpt-5.2", "chatgpt-gpt-5.1-codex-mini", "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"];
|
|
122
|
+
declare const LLM_MODEL_IDS: readonly ["gpt-5.4", "gpt-5.3-codex", "gpt-5.2", "gpt-5.1-codex-mini", "chatgpt-gpt-5.4", "chatgpt-gpt-5.4-fast", "chatgpt-gpt-5.3-codex", "chatgpt-gpt-5.3-codex-spark", "chatgpt-gpt-5.2", "chatgpt-gpt-5.1-codex-mini", "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"];
|
|
123
123
|
type LlmModelId = (typeof LLM_MODEL_IDS)[number];
|
|
124
124
|
declare function isLlmTextModelId(value: string): value is LlmTextModelId;
|
|
125
125
|
declare function isLlmImageModelId(value: string): value is LlmImageModelId;
|
|
@@ -848,10 +848,10 @@ declare function refreshChatGptOauthToken(refreshToken: string, fallback?: {
|
|
|
848
848
|
}): Promise<ChatGptAuthProfile>;
|
|
849
849
|
declare function getChatGptAuthProfile(): Promise<ChatGptAuthProfile>;
|
|
850
850
|
|
|
851
|
-
declare const OPENAI_MODEL_IDS: readonly ["gpt-5.3-codex", "gpt-5.2", "gpt-5.1-codex-mini"];
|
|
851
|
+
declare const OPENAI_MODEL_IDS: readonly ["gpt-5.4", "gpt-5.3-codex", "gpt-5.2", "gpt-5.1-codex-mini"];
|
|
852
852
|
type OpenAiModelId = (typeof OPENAI_MODEL_IDS)[number];
|
|
853
853
|
declare function isOpenAiModelId(value: string): value is OpenAiModelId;
|
|
854
|
-
declare const CHATGPT_MODEL_IDS: readonly ["chatgpt-gpt-5.3-codex", "chatgpt-gpt-5.3-codex-spark", "chatgpt-gpt-5.2", "chatgpt-gpt-5.1-codex-mini"];
|
|
854
|
+
declare const CHATGPT_MODEL_IDS: readonly ["chatgpt-gpt-5.4", "chatgpt-gpt-5.4-fast", "chatgpt-gpt-5.3-codex", "chatgpt-gpt-5.3-codex-spark", "chatgpt-gpt-5.2", "chatgpt-gpt-5.1-codex-mini"];
|
|
855
855
|
type ChatGptModelId = (typeof CHATGPT_MODEL_IDS)[number];
|
|
856
856
|
declare function isChatGptModelId(value: string): value is ChatGptModelId;
|
|
857
857
|
|
package/dist/index.js
CHANGED
|
@@ -205,6 +205,16 @@ var OPENAI_GPT_52_PRICING = {
|
|
|
205
205
|
cachedRate: 0.175 / 1e6,
|
|
206
206
|
outputRate: 14 / 1e6
|
|
207
207
|
};
|
|
208
|
+
var OPENAI_GPT_54_PRICING = {
|
|
209
|
+
inputRate: 2.5 / 1e6,
|
|
210
|
+
cachedRate: 0.25 / 1e6,
|
|
211
|
+
outputRate: 15 / 1e6
|
|
212
|
+
};
|
|
213
|
+
var OPENAI_GPT_54_PRIORITY_PRICING = {
|
|
214
|
+
inputRate: 5 / 1e6,
|
|
215
|
+
cachedRate: 0.5 / 1e6,
|
|
216
|
+
outputRate: 30 / 1e6
|
|
217
|
+
};
|
|
208
218
|
var OPENAI_GPT_53_CODEX_PRICING = {
|
|
209
219
|
inputRate: 1.25 / 1e6,
|
|
210
220
|
cachedRate: 0.125 / 1e6,
|
|
@@ -216,6 +226,12 @@ var OPENAI_GPT_5_MINI_PRICING = {
|
|
|
216
226
|
outputRate: 2 / 1e6
|
|
217
227
|
};
|
|
218
228
|
function getOpenAiPricing(modelId) {
|
|
229
|
+
if (modelId.includes("gpt-5.4-fast")) {
|
|
230
|
+
return OPENAI_GPT_54_PRIORITY_PRICING;
|
|
231
|
+
}
|
|
232
|
+
if (modelId.includes("gpt-5.4")) {
|
|
233
|
+
return OPENAI_GPT_54_PRICING;
|
|
234
|
+
}
|
|
219
235
|
if (modelId.includes("gpt-5.3-codex-spark")) {
|
|
220
236
|
return OPENAI_GPT_5_MINI_PRICING;
|
|
221
237
|
}
|
|
@@ -2626,11 +2642,18 @@ async function runOpenAiCall(fn, modelId, runOptions) {
|
|
|
2626
2642
|
}
|
|
2627
2643
|
|
|
2628
2644
|
// src/openai/models.ts
|
|
2629
|
-
var OPENAI_MODEL_IDS = [
|
|
2645
|
+
var OPENAI_MODEL_IDS = [
|
|
2646
|
+
"gpt-5.4",
|
|
2647
|
+
"gpt-5.3-codex",
|
|
2648
|
+
"gpt-5.2",
|
|
2649
|
+
"gpt-5.1-codex-mini"
|
|
2650
|
+
];
|
|
2630
2651
|
function isOpenAiModelId(value) {
|
|
2631
2652
|
return OPENAI_MODEL_IDS.includes(value);
|
|
2632
2653
|
}
|
|
2633
2654
|
var CHATGPT_MODEL_IDS = [
|
|
2655
|
+
"chatgpt-gpt-5.4",
|
|
2656
|
+
"chatgpt-gpt-5.4-fast",
|
|
2634
2657
|
"chatgpt-gpt-5.3-codex",
|
|
2635
2658
|
"chatgpt-gpt-5.3-codex-spark",
|
|
2636
2659
|
"chatgpt-gpt-5.2",
|
|
@@ -2642,6 +2665,17 @@ function isChatGptModelId(value) {
|
|
|
2642
2665
|
function stripChatGptPrefix(model) {
|
|
2643
2666
|
return model.slice("chatgpt-".length);
|
|
2644
2667
|
}
|
|
2668
|
+
function resolveChatGptProviderModel(model) {
|
|
2669
|
+
switch (model) {
|
|
2670
|
+
case "chatgpt-gpt-5.4-fast":
|
|
2671
|
+
return "gpt-5.4";
|
|
2672
|
+
default:
|
|
2673
|
+
return stripChatGptPrefix(model);
|
|
2674
|
+
}
|
|
2675
|
+
}
|
|
2676
|
+
function resolveChatGptServiceTier(model) {
|
|
2677
|
+
return model === "chatgpt-gpt-5.4-fast" ? "priority" : void 0;
|
|
2678
|
+
}
|
|
2645
2679
|
|
|
2646
2680
|
// src/agentLogging.ts
|
|
2647
2681
|
import { AsyncLocalStorage } from "async_hooks";
|
|
@@ -3390,7 +3424,11 @@ function convertLlmContentToGeminiContent(content) {
|
|
|
3390
3424
|
}
|
|
3391
3425
|
function resolveProvider(model) {
|
|
3392
3426
|
if (isChatGptModelId(model)) {
|
|
3393
|
-
return {
|
|
3427
|
+
return {
|
|
3428
|
+
provider: "chatgpt",
|
|
3429
|
+
model: resolveChatGptProviderModel(model),
|
|
3430
|
+
serviceTier: resolveChatGptServiceTier(model)
|
|
3431
|
+
};
|
|
3394
3432
|
}
|
|
3395
3433
|
if (isGeminiTextModelId(model) || isGeminiImageModelId(model)) {
|
|
3396
3434
|
return { provider: "gemini", model };
|
|
@@ -5101,6 +5139,7 @@ async function runTextCall(params) {
|
|
|
5101
5139
|
model: modelForProvider,
|
|
5102
5140
|
store: false,
|
|
5103
5141
|
stream: true,
|
|
5142
|
+
...providerInfo.serviceTier ? { service_tier: providerInfo.serviceTier } : {},
|
|
5104
5143
|
instructions: chatGptInput.instructions ?? "You are a helpful assistant.",
|
|
5105
5144
|
input: chatGptInput.input,
|
|
5106
5145
|
include: ["reasoning.encrypted_content"],
|
|
@@ -5135,7 +5174,7 @@ async function runTextCall(params) {
|
|
|
5135
5174
|
queue.push({ type: "blocked" });
|
|
5136
5175
|
}
|
|
5137
5176
|
if (result.model) {
|
|
5138
|
-
modelVersion = `chatgpt-${result.model}`;
|
|
5177
|
+
modelVersion = providerInfo.serviceTier ? request.model : `chatgpt-${result.model}`;
|
|
5139
5178
|
queue.push({ type: "model", modelVersion });
|
|
5140
5179
|
}
|
|
5141
5180
|
latestUsage = extractChatGptUsageTokens(result.usage);
|
|
@@ -6097,6 +6136,7 @@ async function runToolLoop(request) {
|
|
|
6097
6136
|
model: providerInfo.model,
|
|
6098
6137
|
store: false,
|
|
6099
6138
|
stream: true,
|
|
6139
|
+
...providerInfo.serviceTier ? { service_tier: providerInfo.serviceTier } : {},
|
|
6100
6140
|
instructions: toolLoopInput.instructions ?? "You are a helpful assistant.",
|
|
6101
6141
|
input,
|
|
6102
6142
|
prompt_cache_key: promptCacheKey,
|
|
@@ -6137,7 +6177,7 @@ async function runToolLoop(request) {
|
|
|
6137
6177
|
}
|
|
6138
6178
|
});
|
|
6139
6179
|
const modelCompletedAtMs = Date.now();
|
|
6140
|
-
modelVersion = response.model ? `chatgpt-${response.model}` : request.model;
|
|
6180
|
+
modelVersion = response.model && !providerInfo.serviceTier ? `chatgpt-${response.model}` : request.model;
|
|
6141
6181
|
usageTokens = extractChatGptUsageTokens(response.usage);
|
|
6142
6182
|
const stepCostUsd = estimateCallCostUsd({
|
|
6143
6183
|
modelId: modelVersion,
|