@kenkaiiii/gg-core 5.64.2 → 5.65.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/index.cjs CHANGED
@@ -1894,7 +1894,14 @@ var AuthStorage = class {
1894
1894
  if (opts?.storageKeys && !(opts.storageKeys.length === 1 && opts.storageKeys[0] === provider)) {
1895
1895
  for (const key of opts.storageKeys) {
1896
1896
  const creds2 = this.data[key];
1897
- if (creds2) return creds2;
1897
+ if (!creds2) continue;
1898
+ if (key !== provider && dualAuthProviderByOAuthKey(key)) {
1899
+ return await this.resolveCredentials(key, {
1900
+ ...opts.forceRefresh ? { forceRefresh: true } : {},
1901
+ ...opts.rejectedToken !== void 0 ? { rejectedToken: opts.rejectedToken } : {}
1902
+ });
1903
+ }
1904
+ return creds2;
1898
1905
  }
1899
1906
  throw new NotLoggedInError(provider);
1900
1907
  }
@@ -2185,10 +2192,12 @@ var MODELS = [
2185
2192
  },
2186
2193
  // ── Sakana (Fugu) ──────────────────────────────────────
2187
2194
  // Sakana Fugu is a multi-agent system surfaced as a standard LLM via the
2188
- // OpenAI-compatible Sakana API (https://api.sakana.ai/v1). Both models take
2189
- // text + image input. Plain Fugu stops at xhigh; Ultra v1.1 also supports max.
2190
- // `fugu` routes across all providers; `fugu-ultra` is
2191
- // the heavier tier (may need larger client timeouts on complex tasks).
2195
+ // OpenAI-compatible Sakana API (https://api.sakana.ai/v1). All three take
2196
+ // text + image input (verified against the live /models list, 2026-09-28).
2197
+ // `fugu` balances latency and quality; `fugu-max` (v1.0, 2026-09-11) is the
2198
+ // cost tier over the largest open-weight pool ($2/$6 per 1M); `fugu-ultra`
2199
+ // is the heavier quality tier (may need larger client timeouts). Plain Fugu
2200
+ // and Fugu Max stop at xhigh — Sakana documents max as the same effort there.
2192
2201
  {
2193
2202
  id: "fugu",
2194
2203
  name: "Fugu",
@@ -2201,6 +2210,18 @@ var MODELS = [
2201
2210
  costTier: "medium",
2202
2211
  maxThinkingLevel: "xhigh"
2203
2212
  },
2213
+ {
2214
+ id: "fugu-max",
2215
+ name: "Fugu Max",
2216
+ provider: "sakana",
2217
+ contextWindow: 1e6,
2218
+ maxOutputTokens: 128e3,
2219
+ supportsThinking: true,
2220
+ supportsImages: true,
2221
+ supportsVideo: false,
2222
+ costTier: "medium",
2223
+ maxThinkingLevel: "xhigh"
2224
+ },
2204
2225
  {
2205
2226
  id: "fugu-ultra",
2206
2227
  name: "Fugu Ultra",
@@ -2211,7 +2232,7 @@ var MODELS = [
2211
2232
  supportsImages: true,
2212
2233
  supportsVideo: false,
2213
2234
  costTier: "high",
2214
- // The rolling alias now serves v1.1, which adds a distinct max effort.
2235
+ // The rolling alias now serves v2.0 (2026-09-11), which keeps max effort.
2215
2236
  maxThinkingLevel: "max"
2216
2237
  },
2217
2238
  // ── xAI (Grok) ─────────────────────────────────────────
@@ -2355,7 +2376,27 @@ var MODELS = [
2355
2376
  costTier: "high",
2356
2377
  maxThinkingLevel: "max"
2357
2378
  },
2358
- // Retain the cheaper dedicated coding model as an explicit alternative.
2379
+ // K2.8 Preview (2026-09-11) is served only on the Kimi For Coding OAuth
2380
+ // endpoint, under its rolling `kimi-for-coding` id (live /models, 2026-09-28:
2381
+ // display_name "K2.8 Preview", 1M context, image + video input, efforts
2382
+ // low/high/max default max). The public API-key endpoint does not serve it,
2383
+ // so it resolves from the Kimi sign-in credential only.
2384
+ {
2385
+ id: "kimi-for-coding",
2386
+ name: "Kimi K2.8 Preview",
2387
+ provider: "moonshot",
2388
+ contextWindow: 1048576,
2389
+ maxOutputTokens: 131072,
2390
+ supportsThinking: true,
2391
+ supportsImages: true,
2392
+ supportsVideo: true,
2393
+ maxVideoBytes: 100 * 1024 * 1024,
2394
+ costTier: "medium",
2395
+ maxThinkingLevel: "max",
2396
+ authStorageKeys: [MOONSHOT_OAUTH_KEY]
2397
+ },
2398
+ // K2.7 Code is requested by its pinned id (not the `kimi-for-coding` alias
2399
+ // that moved to K2.8), so it stays the real K2.7 on both endpoints.
2359
2400
  {
2360
2401
  id: "kimi-k2.7-code",
2361
2402
  name: "Kimi K2.7 Code",
@@ -2486,10 +2527,14 @@ var MODELS = [
2486
2527
  authStorageKeys: [XIAOMI_CREDITS_KEY]
2487
2528
  },
2488
2529
  // ── DeepSeek ───────────────────────────────────────────
2530
+ // The live /models list (2026-09-28) serves exactly `deepseek-flash` and
2531
+ // `deepseek-v4-pro`. V4 Flash and V4 Flash Vision Exp are retired; their old
2532
+ // ids only temporarily route to V4.1 Flash, so they are retired here too.
2489
2533
  {
2490
2534
  // `deepseek-v4-pro` now serves DeepSeek-V4-Pro-0813 (released 2026-08-13,
2491
2535
  // first STABLE V4 Pro — supersedes the April preview; calling name
2492
2536
  // unchanged, same 1.6T/49B MoE). 1M context, text-only, low/high/max effort.
2537
+ // DeepSeek reversed its planned 2026-09-14 retirement, so it stays served.
2493
2538
  // Docs abbreviate output as 384K; use the same conservative 384,000-token
2494
2539
  // application cap across V4 models rather than mixing decimal/binary units.
2495
2540
  id: "deepseek-v4-pro",
@@ -2504,21 +2549,10 @@ var MODELS = [
2504
2549
  maxThinkingLevel: "max"
2505
2550
  },
2506
2551
  {
2507
- id: "deepseek-v4-flash",
2508
- name: "DeepSeek V4 Flash",
2509
- provider: "deepseek",
2510
- contextWindow: 1048576,
2511
- maxOutputTokens: 384e3,
2512
- supportsThinking: true,
2513
- supportsImages: false,
2514
- supportsVideo: false,
2515
- costTier: "low",
2516
- maxThinkingLevel: "max"
2517
- },
2518
- // Opt-in experimental vision sibling; never replaces the stable summary model.
2519
- {
2520
- id: "deepseek-v4-flash-vision-exp",
2521
- name: "DeepSeek V4 Flash Vision (Experimental)",
2552
+ // `deepseek-flash` is the rolling alias for the latest Flash — currently
2553
+ // V4.1 Flash (2026-09-10): native image input, 1M context, 384K output.
2554
+ id: "deepseek-flash",
2555
+ name: "DeepSeek V4.1 Flash",
2522
2556
  provider: "deepseek",
2523
2557
  contextWindow: 1048576,
2524
2558
  maxOutputTokens: 384e3,
@@ -2530,11 +2564,13 @@ var MODELS = [
2530
2564
  },
2531
2565
  // ── OpenRouter ─────────────────────────────────────────
2532
2566
  {
2533
- id: "qwen/qwen3.6-plus",
2534
- name: "Qwen3.6-Plus",
2567
+ // Qwen3.8 Max — Alibaba's flagship (live /endpoints, 2026-09-28): 1M
2568
+ // context, 131,072 output, text + image + video input, reasoning on.
2569
+ id: "qwen/qwen3.8-max",
2570
+ name: "Qwen3.8 Max",
2535
2571
  provider: "openrouter",
2536
2572
  contextWindow: 1e6,
2537
- maxOutputTokens: 65536,
2573
+ maxOutputTokens: 131072,
2538
2574
  supportsThinking: true,
2539
2575
  supportsImages: true,
2540
2576
  supportsVideo: true,
@@ -2628,7 +2664,7 @@ function getDefaultModel(provider) {
2628
2664
  if (provider === "deepseek") return MODELS.find((m) => m.id === "deepseek-v4-pro");
2629
2665
  if (provider === "huggingface")
2630
2666
  return MODELS.find((m) => m.id === "Qwen/Qwen3-Coder-480B-A35B-Instruct");
2631
- if (provider === "openrouter") return MODELS.find((m) => m.id === "qwen/qwen3.6-plus");
2667
+ if (provider === "openrouter") return MODELS.find((m) => m.id === "qwen/qwen3.8-max");
2632
2668
  if (provider === "sakana") return MODELS.find((m) => m.id === "fugu");
2633
2669
  if (provider === "xai") return MODELS.find((m) => m.id === "grok-4.7");
2634
2670
  if (provider === "local") {
@@ -2724,7 +2760,7 @@ function isXaiModel(provider) {
2724
2760
  return provider === "xai";
2725
2761
  }
2726
2762
  function isMoonshotK3Model(provider, model) {
2727
- return provider === "moonshot" && model === "kimi-k3";
2763
+ return provider === "moonshot" && (model === "kimi-k3" || model === "kimi-for-coding");
2728
2764
  }
2729
2765
  function isGlmModel(provider) {
2730
2766
  return provider === "glm";