@kenkaiiii/gg-boss 4.13.3 → 4.14.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.
|
@@ -65898,6 +65898,7 @@ var PROVIDER_DISPLAY = {
|
|
|
65898
65898
|
moonshot: "Moonshot",
|
|
65899
65899
|
deepseek: "DeepSeek",
|
|
65900
65900
|
openrouter: "OpenRouter",
|
|
65901
|
+
sakana: "Sakana",
|
|
65901
65902
|
xiaomi: "Xiaomi (MiMo)",
|
|
65902
65903
|
minimax: "MiniMax"
|
|
65903
65904
|
};
|
|
@@ -66789,8 +66790,12 @@ function toOpenAIToolChoice(choice) {
|
|
|
66789
66790
|
if (choice === "required") return "required";
|
|
66790
66791
|
return { type: "function", function: { name: choice.name } };
|
|
66791
66792
|
}
|
|
66792
|
-
function toOpenAIReasoningEffort(level,
|
|
66793
|
-
|
|
66793
|
+
function toOpenAIReasoningEffort(level, model) {
|
|
66794
|
+
const effort = level === "max" ? "xhigh" : level;
|
|
66795
|
+
if (model.startsWith("fugu") && (effort === "low" || effort === "medium")) {
|
|
66796
|
+
return "high";
|
|
66797
|
+
}
|
|
66798
|
+
return effort;
|
|
66794
66799
|
}
|
|
66795
66800
|
function normalizeAnthropicStopReason(reason) {
|
|
66796
66801
|
switch (reason) {
|
|
@@ -68913,6 +68918,16 @@ providerRegistry.register("openrouter", {
|
|
|
68913
68918
|
baseUrl: options.baseUrl ?? "https://openrouter.ai/api/v1"
|
|
68914
68919
|
})
|
|
68915
68920
|
});
|
|
68921
|
+
providerRegistry.register("sakana", {
|
|
68922
|
+
// Sakana Fugu is a multi-agent system exposed as a standard LLM through the
|
|
68923
|
+
// OpenAI-compatible Sakana API. We ride the Chat Completions transport (the
|
|
68924
|
+
// Responses API is also offered). Fugu models only accept "high"/"xhigh"
|
|
68925
|
+
// reasoning effort — clamped centrally in toOpenAIReasoningEffort.
|
|
68926
|
+
stream: (options) => streamOpenAI({
|
|
68927
|
+
...options,
|
|
68928
|
+
baseUrl: options.baseUrl ?? "https://api.sakana.ai/v1"
|
|
68929
|
+
})
|
|
68930
|
+
});
|
|
68916
68931
|
providerRegistry.register("minimax", {
|
|
68917
68932
|
stream: (options) => streamAnthropic({
|
|
68918
68933
|
...options,
|
|
@@ -69245,6 +69260,9 @@ async function* agentLoop(messages, options) {
|
|
|
69245
69260
|
const STREAM_THINKING_IDLE_TIMEOUT_MS = 3e5;
|
|
69246
69261
|
const STREAM_THINKING_HARD_TIMEOUT_MS = 6e5;
|
|
69247
69262
|
const NON_STREAMING_HARD_TIMEOUT_MS = 3e5;
|
|
69263
|
+
const isSakana = options.provider === "sakana";
|
|
69264
|
+
const firstEventTimeoutMs = isSakana ? STREAM_THINKING_IDLE_TIMEOUT_MS : STREAM_FIRST_EVENT_TIMEOUT_MS;
|
|
69265
|
+
const initialHardTimeoutMs = isSakana ? STREAM_THINKING_HARD_TIMEOUT_MS : STREAM_HARD_TIMEOUT_MS;
|
|
69248
69266
|
const MAX_TOOLCALL_DELTA_CHARS = 1e6;
|
|
69249
69267
|
const MAX_TOOLCALL_DELTA_EVENTS = 2e4;
|
|
69250
69268
|
try {
|
|
@@ -69316,7 +69334,7 @@ async function* agentLoop(messages, options) {
|
|
|
69316
69334
|
const resetIdleTimer = () => {
|
|
69317
69335
|
if (useNonStreamingFallback) return;
|
|
69318
69336
|
if (idleTimer) clearTimeout(idleTimer);
|
|
69319
|
-
const timeoutMs = hasReceivedEvent ? STREAM_IDLE_TIMEOUT_MS : hasReceivedThinking ? STREAM_THINKING_IDLE_TIMEOUT_MS :
|
|
69337
|
+
const timeoutMs = hasReceivedEvent ? STREAM_IDLE_TIMEOUT_MS : hasReceivedThinking ? STREAM_THINKING_IDLE_TIMEOUT_MS : firstEventTimeoutMs;
|
|
69320
69338
|
idleTimer = setTimeout(() => {
|
|
69321
69339
|
diag("idle_timeout_fired", {
|
|
69322
69340
|
events: streamEventCount,
|
|
@@ -69330,7 +69348,7 @@ async function* agentLoop(messages, options) {
|
|
|
69330
69348
|
streamController.abort();
|
|
69331
69349
|
}, timeoutMs);
|
|
69332
69350
|
};
|
|
69333
|
-
let hardTimeoutMs = useNonStreamingFallback ? NON_STREAMING_HARD_TIMEOUT_MS :
|
|
69351
|
+
let hardTimeoutMs = useNonStreamingFallback ? NON_STREAMING_HARD_TIMEOUT_MS : initialHardTimeoutMs;
|
|
69334
69352
|
hardTimer = setTimeout(() => {
|
|
69335
69353
|
diag("hard_timeout_fired", {
|
|
69336
69354
|
events: typeof streamEventCount !== "undefined" ? streamEventCount : 0,
|
|
@@ -70334,7 +70352,7 @@ var Agent = class {
|
|
|
70334
70352
|
}
|
|
70335
70353
|
};
|
|
70336
70354
|
|
|
70337
|
-
// ../gg-core/dist/chunk-
|
|
70355
|
+
// ../gg-core/dist/chunk-7GQQLIPG.js
|
|
70338
70356
|
init_esm_shims();
|
|
70339
70357
|
var MODELS = [
|
|
70340
70358
|
// ── Anthropic ──────────────────────────────────────────
|
|
@@ -70456,6 +70474,36 @@ var MODELS = [
|
|
|
70456
70474
|
costTier: "high",
|
|
70457
70475
|
maxThinkingLevel: "xhigh"
|
|
70458
70476
|
},
|
|
70477
|
+
// ── Sakana (Fugu) ──────────────────────────────────────
|
|
70478
|
+
// Sakana Fugu is a multi-agent system surfaced as a standard LLM via the
|
|
70479
|
+
// OpenAI-compatible Sakana API (https://api.sakana.ai/v1). Both models take
|
|
70480
|
+
// text + image input and only accept "high"/"xhigh" reasoning effort, so the
|
|
70481
|
+
// top tier is `xhigh`. `fugu` routes across all providers; `fugu-ultra` is
|
|
70482
|
+
// the heavier tier (may need larger client timeouts on complex tasks).
|
|
70483
|
+
{
|
|
70484
|
+
id: "fugu",
|
|
70485
|
+
name: "Fugu",
|
|
70486
|
+
provider: "sakana",
|
|
70487
|
+
contextWindow: 1e6,
|
|
70488
|
+
maxOutputTokens: 128e3,
|
|
70489
|
+
supportsThinking: true,
|
|
70490
|
+
supportsImages: true,
|
|
70491
|
+
supportsVideo: false,
|
|
70492
|
+
costTier: "medium",
|
|
70493
|
+
maxThinkingLevel: "xhigh"
|
|
70494
|
+
},
|
|
70495
|
+
{
|
|
70496
|
+
id: "fugu-ultra",
|
|
70497
|
+
name: "Fugu Ultra",
|
|
70498
|
+
provider: "sakana",
|
|
70499
|
+
contextWindow: 1e6,
|
|
70500
|
+
maxOutputTokens: 128e3,
|
|
70501
|
+
supportsThinking: true,
|
|
70502
|
+
supportsImages: true,
|
|
70503
|
+
supportsVideo: false,
|
|
70504
|
+
costTier: "high",
|
|
70505
|
+
maxThinkingLevel: "xhigh"
|
|
70506
|
+
},
|
|
70459
70507
|
// ── Gemini ─────────────────────────────────────────────
|
|
70460
70508
|
{
|
|
70461
70509
|
id: "gemini-3.1-flash-lite-preview",
|
|
@@ -70654,6 +70702,7 @@ function getDefaultModel(provider) {
|
|
|
70654
70702
|
if (provider === "minimax") return MODELS.find((m) => m.id === "MiniMax-M3");
|
|
70655
70703
|
if (provider === "deepseek") return MODELS.find((m) => m.id === "deepseek-v4-pro");
|
|
70656
70704
|
if (provider === "openrouter") return MODELS.find((m) => m.id === "qwen/qwen3.6-plus");
|
|
70705
|
+
if (provider === "sakana") return MODELS.find((m) => m.id === "fugu");
|
|
70657
70706
|
return MODELS.find((m) => m.id === "claude-sonnet-4-6");
|
|
70658
70707
|
}
|
|
70659
70708
|
function usesOpenAICodexTransport(options) {
|
|
@@ -70725,6 +70774,7 @@ import { spawn } from "child_process";
|
|
|
70725
70774
|
import fs5 from "fs";
|
|
70726
70775
|
import path42 from "path";
|
|
70727
70776
|
var OPENAI_GPT_THINKING_LEVELS = ["medium", "high", "xhigh"];
|
|
70777
|
+
var SAKANA_THINKING_LEVELS = ["high", "xhigh"];
|
|
70728
70778
|
var ANTHROPIC_OPUS_48_47_THINKING_LEVELS = [
|
|
70729
70779
|
"low",
|
|
70730
70780
|
"medium",
|
|
@@ -70741,6 +70791,9 @@ var ANTHROPIC_ADAPTIVE_THINKING_LEVELS = [
|
|
|
70741
70791
|
function isOpenAIGptModel(provider, model) {
|
|
70742
70792
|
return provider === "openai" && model.startsWith("gpt-");
|
|
70743
70793
|
}
|
|
70794
|
+
function isSakanaModel(provider) {
|
|
70795
|
+
return provider === "sakana";
|
|
70796
|
+
}
|
|
70744
70797
|
function isAnthropicOpus48Or47Model(provider, model) {
|
|
70745
70798
|
return provider === "anthropic" && /opus-4-8|opus-4-7/.test(model);
|
|
70746
70799
|
}
|
|
@@ -70755,6 +70808,11 @@ function getSupportedThinkingLevels(provider, model) {
|
|
|
70755
70808
|
if (maxIndex2 === -1) return ["low", "medium", "high"];
|
|
70756
70809
|
return levels.slice(0, maxIndex2 + 1);
|
|
70757
70810
|
}
|
|
70811
|
+
if (isSakanaModel(provider)) {
|
|
70812
|
+
const maxIndex2 = SAKANA_THINKING_LEVELS.indexOf(maxLevel);
|
|
70813
|
+
if (maxIndex2 === -1) return SAKANA_THINKING_LEVELS;
|
|
70814
|
+
return SAKANA_THINKING_LEVELS.slice(0, maxIndex2 + 1);
|
|
70815
|
+
}
|
|
70758
70816
|
if (!isOpenAIGptModel(provider, model)) return [maxLevel];
|
|
70759
70817
|
const maxIndex = OPENAI_GPT_THINKING_LEVELS.indexOf(maxLevel);
|
|
70760
70818
|
if (maxIndex === -1) return ["medium"];
|
|
@@ -70765,7 +70823,7 @@ function isThinkingLevelSupported(provider, model, level) {
|
|
|
70765
70823
|
}
|
|
70766
70824
|
function getNextThinkingLevel(provider, model, current) {
|
|
70767
70825
|
const supportedLevels = getSupportedThinkingLevels(provider, model);
|
|
70768
|
-
const shouldCycleLevels = isOpenAIGptModel(provider, model) || isAnthropicAdaptiveModel(provider, model);
|
|
70826
|
+
const shouldCycleLevels = isOpenAIGptModel(provider, model) || isAnthropicAdaptiveModel(provider, model) || isSakanaModel(provider);
|
|
70769
70827
|
if (!shouldCycleLevels) {
|
|
70770
70828
|
return current ? void 0 : supportedLevels[0];
|
|
70771
70829
|
}
|
|
@@ -71259,7 +71317,8 @@ var STATIC_API_KEY_PROVIDERS = /* @__PURE__ */ new Set([
|
|
|
71259
71317
|
"xiaomi",
|
|
71260
71318
|
"minimax",
|
|
71261
71319
|
"deepseek",
|
|
71262
|
-
"openrouter"
|
|
71320
|
+
"openrouter",
|
|
71321
|
+
"sakana"
|
|
71263
71322
|
]);
|
|
71264
71323
|
var AuthStorage = class {
|
|
71265
71324
|
data = {};
|
|
@@ -78928,7 +78987,8 @@ var SettingsSchema = external_exports.object({
|
|
|
78928
78987
|
"minimax",
|
|
78929
78988
|
"xiaomi",
|
|
78930
78989
|
"deepseek",
|
|
78931
|
-
"openrouter"
|
|
78990
|
+
"openrouter",
|
|
78991
|
+
"sakana"
|
|
78932
78992
|
]).default("anthropic"),
|
|
78933
78993
|
defaultModel: external_exports.string().optional(),
|
|
78934
78994
|
maxTokens: external_exports.number().int().min(256).default(16384),
|
|
@@ -120381,4 +120441,4 @@ react/cjs/react-jsx-runtime.development.js:
|
|
|
120381
120441
|
* LICENSE file in the root directory of this source tree.
|
|
120382
120442
|
*)
|
|
120383
120443
|
*/
|
|
120384
|
-
//# sourceMappingURL=chunk-
|
|
120444
|
+
//# sourceMappingURL=chunk-4AOKOUTE.js.map
|