@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.
@@ -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, { method: "POST", headers, body: encoded });
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 1, listed for every ChatGPT plan, requires a
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). Both need a Codex client >= 0.155.0
2127
- // on the ChatGPT OAuth route. Same window split as Astra: 1.05M on the public
2128
- // Responses API, 272K on the Codex route; 128K output, text+image input,
2129
- // freeform apply_patch, responses-lite transport. The 5.6 ids are retired —
2130
- // a saved session on one falls back to the provider default on next start.
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 — "Workhorse model for coding and everyday work." (Codex priority 2,
2133
- // default medium). $2/$10 MTok. Ladder low → medium → high → xhigh → max →
2134
- // ultra; ultra is the Codex orchestration preset (max effort on the wire +
2135
- // proactive local subagent delegation).
2136
- id: "gpt-6-sol",
2137
- name: "GPT-6 Sol",
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: "medium",
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 3,
2151
- // default medium). $0.10/$0.50 MTok. Reasoning tops out at `max`.
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. Kept after the working flash-lite:
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
- if (provider === "anthropic") {
2699
- return MODELS.find((m) => m.id === "claude-sonnet-5-5");
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-ZCXAIMZF.js.map
2789
+ //# sourceMappingURL=chunk-N73LFQ3N.js.map