@prestyj/core 5.28.0 → 5.29.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.
- package/dist/{chunk-ZCXAIMZF.js → chunk-N73LFQ3N.js} +59 -41
- package/dist/chunk-N73LFQ3N.js.map +1 -0
- package/dist/index.cjs +91 -50
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +12 -2
- package/dist/index.d.ts +12 -2
- package/dist/index.js +36 -13
- package/dist/index.js.map +1 -1
- package/dist/model-registry.cjs +32 -34
- package/dist/model-registry.cjs.map +1 -1
- package/dist/model-registry.d.cts +14 -22
- package/dist/model-registry.d.ts +14 -22
- package/dist/model-registry.js +1 -3
- package/package.json +2 -2
- package/dist/chunk-ZCXAIMZF.js.map +0 -1
|
@@ -8,6 +8,14 @@ import { randomUUID } from "crypto";
|
|
|
8
8
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
|
|
9
9
|
import { arch, hostname, release, type } from "os";
|
|
10
10
|
import path from "path";
|
|
11
|
+
|
|
12
|
+
// src/oauth/request-timeout.ts
|
|
13
|
+
var OAUTH_REQUEST_TIMEOUT_MS = 3e4;
|
|
14
|
+
function oauthRequestSignal() {
|
|
15
|
+
return AbortSignal.timeout(OAUTH_REQUEST_TIMEOUT_MS);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// src/oauth/kimi.ts
|
|
11
19
|
var CLIENT_ID = "17e5f671-d194-4dfb-9706-5516cb48c098";
|
|
12
20
|
var DEFAULT_OAUTH_HOST = "https://auth.kimi.com";
|
|
13
21
|
var DEFAULT_CODING_BASE_URL = "https://api.kimi.com/coding/v1";
|
|
@@ -94,7 +102,8 @@ async function postForm(endpoint, params) {
|
|
|
94
102
|
"Content-Type": "application/x-www-form-urlencoded",
|
|
95
103
|
Accept: "application/json"
|
|
96
104
|
},
|
|
97
|
-
body: new URLSearchParams(params).toString()
|
|
105
|
+
body: new URLSearchParams(params).toString(),
|
|
106
|
+
signal: oauthRequestSignal()
|
|
98
107
|
});
|
|
99
108
|
let data = {};
|
|
100
109
|
try {
|
|
@@ -568,7 +577,12 @@ async function postTokenRequest(body, label) {
|
|
|
568
577
|
for (const url of TOKEN_URLS) {
|
|
569
578
|
let response;
|
|
570
579
|
try {
|
|
571
|
-
response = await fetch(url, {
|
|
580
|
+
response = await fetch(url, {
|
|
581
|
+
method: "POST",
|
|
582
|
+
headers,
|
|
583
|
+
body: encoded,
|
|
584
|
+
signal: oauthRequestSignal()
|
|
585
|
+
});
|
|
572
586
|
} catch (err) {
|
|
573
587
|
lastError = err instanceof Error ? err : new Error(String(err));
|
|
574
588
|
continue;
|
|
@@ -817,7 +831,8 @@ async function exchangeOpenAICode(code, verifier) {
|
|
|
817
831
|
code,
|
|
818
832
|
redirect_uri: REDIRECT_URI2,
|
|
819
833
|
code_verifier: verifier
|
|
820
|
-
})
|
|
834
|
+
}),
|
|
835
|
+
signal: oauthRequestSignal()
|
|
821
836
|
});
|
|
822
837
|
if (!response.ok) {
|
|
823
838
|
const text = await response.text();
|
|
@@ -838,7 +853,8 @@ async function refreshOpenAIToken(refreshToken) {
|
|
|
838
853
|
grant_type: "refresh_token",
|
|
839
854
|
refresh_token: refreshToken,
|
|
840
855
|
client_id: CLIENT_ID3
|
|
841
|
-
})
|
|
856
|
+
}),
|
|
857
|
+
signal: oauthRequestSignal()
|
|
842
858
|
});
|
|
843
859
|
if (!response.ok) {
|
|
844
860
|
const text = await response.text();
|
|
@@ -1048,7 +1064,8 @@ async function postTokenRequest2(body) {
|
|
|
1048
1064
|
const response = await fetch(TOKEN_URL2, {
|
|
1049
1065
|
method: "POST",
|
|
1050
1066
|
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
1051
|
-
body: new URLSearchParams(body)
|
|
1067
|
+
body: new URLSearchParams(body),
|
|
1068
|
+
signal: oauthRequestSignal()
|
|
1052
1069
|
});
|
|
1053
1070
|
if (!response.ok) {
|
|
1054
1071
|
const text = await response.text();
|
|
@@ -1177,7 +1194,8 @@ async function codeAssistGet(accessToken, operationName) {
|
|
|
1177
1194
|
async function codeAssistRequest(url, accessToken, label, init) {
|
|
1178
1195
|
const response = await fetch(url, {
|
|
1179
1196
|
...init,
|
|
1180
|
-
headers: codeAssistHeaders(accessToken)
|
|
1197
|
+
headers: codeAssistHeaders(accessToken),
|
|
1198
|
+
signal: oauthRequestSignal()
|
|
1181
1199
|
});
|
|
1182
1200
|
if (!response.ok) {
|
|
1183
1201
|
const text = await response.text();
|
|
@@ -1263,7 +1281,8 @@ async function postForm2(endpoint, params) {
|
|
|
1263
1281
|
Accept: "application/json",
|
|
1264
1282
|
"User-Agent": `grok-cli/${grokCliVersion()}`
|
|
1265
1283
|
},
|
|
1266
|
-
body: new URLSearchParams(params).toString()
|
|
1284
|
+
body: new URLSearchParams(params).toString(),
|
|
1285
|
+
signal: oauthRequestSignal()
|
|
1267
1286
|
});
|
|
1268
1287
|
let data = {};
|
|
1269
1288
|
try {
|
|
@@ -2099,7 +2118,7 @@ var MODELS = [
|
|
|
2099
2118
|
// ── OpenAI (Codex) ─────────────────────────────────────
|
|
2100
2119
|
{
|
|
2101
2120
|
// GPT-6 Astra — "Our most capable model for complex, demanding work."
|
|
2102
|
-
// (Codex catalog priority
|
|
2121
|
+
// (Codex catalog priority 2, listed for every ChatGPT plan, requires a
|
|
2103
2122
|
// Codex client >= 0.153.0 — see CODEX_CLIENT_VERSION). Same split as 5.6:
|
|
2104
2123
|
// 1.05M on the public Responses API, 272K on the ChatGPT OAuth route
|
|
2105
2124
|
// (openai/codex models.json, `gpt-6-astra`). Reasoning ladder low → medium
|
|
@@ -2123,32 +2142,36 @@ var MODELS = [
|
|
|
2123
2142
|
},
|
|
2124
2143
|
// GPT-6 Sol + Luna — released 2026-09-22 below Astra, replacing the whole
|
|
2125
2144
|
// GPT-5.6 family (Sol/Terra/Luna; there is no GPT-6 Terra — OpenAI's Codex
|
|
2126
|
-
// catalog upgrades 5.6 Terra to 6 Sol).
|
|
2127
|
-
//
|
|
2128
|
-
//
|
|
2129
|
-
//
|
|
2130
|
-
// a saved session on one falls back to the provider default on
|
|
2145
|
+
// catalog upgrades 5.6 Terra to 6 Sol). GPT-6.1 Sol (2026-09-29) then replaced
|
|
2146
|
+
// GPT-6 Sol. Same window split as Astra: 1.05M on the public Responses API,
|
|
2147
|
+
// 272K on the Codex route; 128K output, text+image input, freeform
|
|
2148
|
+
// apply_patch, responses-lite transport. The GPT-5.6 ids and `gpt-6-sol` are
|
|
2149
|
+
// retired — a saved session on one falls back to the provider default on
|
|
2150
|
+
// next start.
|
|
2131
2151
|
{
|
|
2132
|
-
// Sol — "
|
|
2133
|
-
//
|
|
2134
|
-
//
|
|
2135
|
-
//
|
|
2136
|
-
|
|
2137
|
-
|
|
2152
|
+
// GPT-6.1 Sol — "Latest workhorse model for coding and everyday work."
|
|
2153
|
+
// (Codex priority 1, default low). The catalog says Codex client >= 0.153.0,
|
|
2154
|
+
// but the ChatGPT backend only serves it from 0.159.0 (see
|
|
2155
|
+
// CODEX_CLIENT_VERSION). $2/$10 MTok, cached input $0.10. Ladder low →
|
|
2156
|
+
// medium → high → xhigh → max → ultra; ultra is the Codex orchestration
|
|
2157
|
+
// preset (max effort on the wire + proactive local subagent delegation).
|
|
2158
|
+
id: "gpt-6.1-sol",
|
|
2159
|
+
name: "GPT-6.1 Sol",
|
|
2138
2160
|
provider: "openai",
|
|
2139
2161
|
contextWindow: 105e4,
|
|
2140
2162
|
codexContextWindow: 272e3,
|
|
2141
2163
|
maxOutputTokens: 128e3,
|
|
2142
2164
|
supportsThinking: true,
|
|
2143
|
-
defaultThinkingLevel: "
|
|
2165
|
+
defaultThinkingLevel: "low",
|
|
2144
2166
|
supportsImages: true,
|
|
2145
2167
|
supportsVideo: false,
|
|
2146
2168
|
costTier: "medium",
|
|
2147
2169
|
maxThinkingLevel: "ultra"
|
|
2148
2170
|
},
|
|
2149
2171
|
{
|
|
2150
|
-
// Luna — "Fast and affordable model for easier tasks." (Codex priority
|
|
2151
|
-
// default medium). $0.10/$0.50 MTok.
|
|
2172
|
+
// Luna — "Fast and affordable model for easier tasks." (Codex priority 4,
|
|
2173
|
+
// default medium, needs a Codex client >= 0.155.0). $0.10/$0.50 MTok.
|
|
2174
|
+
// Reasoning tops out at `max`.
|
|
2152
2175
|
id: "gpt-6-luna",
|
|
2153
2176
|
name: "GPT-6 Luna",
|
|
2154
2177
|
provider: "openai",
|
|
@@ -2281,9 +2304,7 @@ var MODELS = [
|
|
|
2281
2304
|
// Sent over our Code Assist (OAuth) transport ahead of gemini-cli — upstream
|
|
2282
2305
|
// hasn't listed 3.7 yet (google-gemini/gemini-cli#28802, still open) — so
|
|
2283
2306
|
// free/personal accounts 404 (entitlement-gated) while Code Assist
|
|
2284
|
-
// Standard/Enterprise accounts get it.
|
|
2285
|
-
// getFastModel picks the first low-tier entry, and flash-lite is the one
|
|
2286
|
-
// that works on every account.
|
|
2307
|
+
// Standard/Enterprise accounts get it.
|
|
2287
2308
|
id: "gemini-3.7-flash",
|
|
2288
2309
|
name: "Gemini 3.7 Flash",
|
|
2289
2310
|
provider: "gemini",
|
|
@@ -2644,7 +2665,7 @@ function getVideoByteLimit(modelId) {
|
|
|
2644
2665
|
}
|
|
2645
2666
|
function getDefaultModel(provider) {
|
|
2646
2667
|
if (provider === "xiaomi") return MODELS.find((m) => m.id === "mimo-v2.6-pro");
|
|
2647
|
-
if (provider === "openai") return MODELS.find((m) => m.id === "gpt-6-sol");
|
|
2668
|
+
if (provider === "openai") return MODELS.find((m) => m.id === "gpt-6.1-sol");
|
|
2648
2669
|
if (provider === "gemini") return MODELS.find((m) => m.id === "gemini-3.1-flash-lite");
|
|
2649
2670
|
if (provider === "glm") return MODELS.find((m) => m.id === "glm-5.3");
|
|
2650
2671
|
if (provider === "moonshot") return MODELS.find((m) => m.id === "kimi-k3");
|
|
@@ -2694,19 +2715,17 @@ function getDefaultThinkingLevel(modelId, options) {
|
|
|
2694
2715
|
if (model?.id === "kimi-k3" && isKimiCodingEndpoint(options?.baseUrl)) return "high";
|
|
2695
2716
|
return model?.defaultThinkingLevel ?? model?.maxThinkingLevel ?? "high";
|
|
2696
2717
|
}
|
|
2718
|
+
var SUMMARY_COST_TIER = {
|
|
2719
|
+
anthropic: "medium",
|
|
2720
|
+
openai: "low",
|
|
2721
|
+
glm: "low",
|
|
2722
|
+
deepseek: "low",
|
|
2723
|
+
huggingface: "low"
|
|
2724
|
+
};
|
|
2697
2725
|
function getSummaryModel(provider, currentModelId) {
|
|
2698
|
-
|
|
2699
|
-
|
|
2700
|
-
|
|
2701
|
-
if (provider === "openai" || provider === "glm" || provider === "deepseek" || provider === "huggingface") {
|
|
2702
|
-
const low = getModelsForProvider(provider).find((m) => m.costTier === "low");
|
|
2703
|
-
if (low) return low;
|
|
2704
|
-
}
|
|
2705
|
-
return getModel(currentModelId) ?? getDefaultModel(provider);
|
|
2706
|
-
}
|
|
2707
|
-
function getFastModel(provider, currentModelId) {
|
|
2708
|
-
const low = getModelsForProvider(provider).find((m) => m.costTier === "low");
|
|
2709
|
-
return low ?? getModel(currentModelId) ?? getDefaultModel(provider);
|
|
2726
|
+
const tier = SUMMARY_COST_TIER[provider];
|
|
2727
|
+
const tagged = tier ? getModelsForProvider(provider).find((m) => m.costTier === tier) : void 0;
|
|
2728
|
+
return tagged ?? getModel(currentModelId) ?? getDefaultModel(provider);
|
|
2710
2729
|
}
|
|
2711
2730
|
|
|
2712
2731
|
export {
|
|
@@ -2765,7 +2784,6 @@ export {
|
|
|
2765
2784
|
getContextWindow,
|
|
2766
2785
|
getMaxThinkingLevel,
|
|
2767
2786
|
getDefaultThinkingLevel,
|
|
2768
|
-
getSummaryModel
|
|
2769
|
-
getFastModel
|
|
2787
|
+
getSummaryModel
|
|
2770
2788
|
};
|
|
2771
|
-
//# sourceMappingURL=chunk-
|
|
2789
|
+
//# sourceMappingURL=chunk-N73LFQ3N.js.map
|