cc-claw 0.13.1 → 0.13.2
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/cli.js +24 -14
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -72,7 +72,7 @@ var VERSION;
|
|
|
72
72
|
var init_version = __esm({
|
|
73
73
|
"src/version.ts"() {
|
|
74
74
|
"use strict";
|
|
75
|
-
VERSION = true ? "0.13.
|
|
75
|
+
VERSION = true ? "0.13.2" : (() => {
|
|
76
76
|
try {
|
|
77
77
|
return JSON.parse(readFileSync(join2(process.cwd(), "package.json"), "utf-8")).version ?? "unknown";
|
|
78
78
|
} catch {
|
|
@@ -9684,6 +9684,9 @@ function stopAgent(chatId) {
|
|
|
9684
9684
|
}
|
|
9685
9685
|
return true;
|
|
9686
9686
|
}
|
|
9687
|
+
function getGeminiFallback(model2) {
|
|
9688
|
+
return GEMINI_FALLBACK_CHAIN[model2] ?? null;
|
|
9689
|
+
}
|
|
9687
9690
|
function spawnQuery(adapter, config2, model2, cancelState, thinkingLevel, timeoutMs, maxTurns, opts) {
|
|
9688
9691
|
const effectiveTimeout = timeoutMs ?? SPAWN_TIMEOUT_MS;
|
|
9689
9692
|
return new Promise((resolve, reject) => {
|
|
@@ -9952,12 +9955,14 @@ async function spawnGeminiWithRotation(chatId, adapter, baseConfig, configWithSe
|
|
|
9952
9955
|
const isTimeout = errMsg.startsWith(FIRST_RESPONSE_TIMEOUT_ERROR);
|
|
9953
9956
|
const isExhausted = /RESOURCE.?EXHAUSTED|resource has been exhausted/i.test(errMsg);
|
|
9954
9957
|
if ((isTimeout || isExhausted) && GEMINI_DOWNGRADE_MODELS.has(model2)) {
|
|
9958
|
+
const fallbackModel = getGeminiFallback(model2);
|
|
9955
9959
|
const reason = isTimeout ? "No response within timeout" : "Resource exhausted";
|
|
9956
|
-
warn(`[agent:gemini-rotation] ${reason} on ${model2} (${slotLabel}) \u2014 downgrading to ${
|
|
9957
|
-
onModelDowngrade?.(model2,
|
|
9960
|
+
warn(`[agent:gemini-rotation] ${reason} on ${model2} (${slotLabel}) \u2014 downgrading to ${fallbackModel}`);
|
|
9961
|
+
onModelDowngrade?.(model2, fallbackModel, `${reason} \u2014 model likely overloaded`);
|
|
9962
|
+
setModel(chatId, fallbackModel);
|
|
9958
9963
|
const fallbackConfig = adapter.buildSpawnConfig({
|
|
9959
9964
|
prompt: effectiveConfig.args[effectiveConfig.args.indexOf("-p") + 1],
|
|
9960
|
-
model:
|
|
9965
|
+
model: fallbackModel,
|
|
9961
9966
|
permMode: "yolo",
|
|
9962
9967
|
allowedTools: [],
|
|
9963
9968
|
cwd: effectiveConfig.cwd,
|
|
@@ -9974,8 +9979,8 @@ async function spawnGeminiWithRotation(chatId, adapter, baseConfig, configWithSe
|
|
|
9974
9979
|
}
|
|
9975
9980
|
}
|
|
9976
9981
|
}
|
|
9977
|
-
const fallbackResult = await spawnQuery(adapter, fallbackConfig,
|
|
9978
|
-
fallbackResult.resolvedModel =
|
|
9982
|
+
const fallbackResult = await spawnQuery(adapter, fallbackConfig, fallbackModel, cancelState, thinkingLevel, timeoutMs, maxTurns, { ...opts, envOverride: env });
|
|
9983
|
+
fallbackResult.resolvedModel = fallbackModel;
|
|
9979
9984
|
return fallbackResult;
|
|
9980
9985
|
}
|
|
9981
9986
|
const quotaClass = classifyGeminiQuota(errMsg);
|
|
@@ -10088,12 +10093,14 @@ async function askAgentImpl(chatId, userMessage, opts) {
|
|
|
10088
10093
|
const isTimeout = errMsg.startsWith(FIRST_RESPONSE_TIMEOUT_ERROR);
|
|
10089
10094
|
const isExhausted = /RESOURCE.?EXHAUSTED|resource has been exhausted/i.test(errMsg);
|
|
10090
10095
|
if (adapter.id === "gemini" && (isTimeout || isExhausted) && GEMINI_DOWNGRADE_MODELS.has(resolvedModel)) {
|
|
10096
|
+
const fallbackModel = getGeminiFallback(resolvedModel);
|
|
10091
10097
|
const reason = isTimeout ? "No response within timeout" : "Resource exhausted";
|
|
10092
|
-
warn(`[agent] ${reason} on ${resolvedModel} (no rotation) \u2014 downgrading to ${
|
|
10093
|
-
onModelDowngrade?.(chatId, resolvedModel,
|
|
10098
|
+
warn(`[agent] ${reason} on ${resolvedModel} (no rotation) \u2014 downgrading to ${fallbackModel}`);
|
|
10099
|
+
onModelDowngrade?.(chatId, resolvedModel, fallbackModel, `${reason} \u2014 model likely overloaded`);
|
|
10100
|
+
setModel(chatId, fallbackModel);
|
|
10094
10101
|
const fallbackConfig = adapter.buildSpawnConfig({
|
|
10095
10102
|
prompt: configWithSession.args[configWithSession.args.indexOf("-p") + 1],
|
|
10096
|
-
model:
|
|
10103
|
+
model: fallbackModel,
|
|
10097
10104
|
permMode: mode,
|
|
10098
10105
|
allowedTools,
|
|
10099
10106
|
cwd: resolvedCwd,
|
|
@@ -10103,8 +10110,8 @@ async function askAgentImpl(chatId, userMessage, opts) {
|
|
|
10103
10110
|
if (mcpConfigPath) {
|
|
10104
10111
|
fallbackConfig.args = injectMcpConfig(adapter.id, fallbackConfig.args, mcpConfigPath);
|
|
10105
10112
|
}
|
|
10106
|
-
result = await spawnQuery(adapter, fallbackConfig,
|
|
10107
|
-
result.resolvedModel =
|
|
10113
|
+
result = await spawnQuery(adapter, fallbackConfig, fallbackModel, cancelState, thinkingLevel, timeoutMs, maxTurns, spawnOpts);
|
|
10114
|
+
result.resolvedModel = fallbackModel;
|
|
10108
10115
|
} else {
|
|
10109
10116
|
throw err;
|
|
10110
10117
|
}
|
|
@@ -10190,7 +10197,7 @@ function injectMcpConfig(adapterId, args, mcpConfigPath) {
|
|
|
10190
10197
|
if (!flag) return args;
|
|
10191
10198
|
return [...args, ...flag, mcpConfigPath];
|
|
10192
10199
|
}
|
|
10193
|
-
var activeChats, chatLocks, SPAWN_TIMEOUT_MS, FIRST_RESPONSE_TIMEOUT_MS, FIRST_RESPONSE_TIMEOUT_ERROR,
|
|
10200
|
+
var activeChats, chatLocks, SPAWN_TIMEOUT_MS, FIRST_RESPONSE_TIMEOUT_MS, FIRST_RESPONSE_TIMEOUT_ERROR, GEMINI_FALLBACK_CHAIN, GEMINI_DOWNGRADE_MODELS, MCP_CONFIG_FLAG;
|
|
10194
10201
|
var init_agent = __esm({
|
|
10195
10202
|
"src/agent.ts"() {
|
|
10196
10203
|
"use strict";
|
|
@@ -10215,8 +10222,11 @@ var init_agent = __esm({
|
|
|
10215
10222
|
SPAWN_TIMEOUT_MS = 10 * 60 * 1e3;
|
|
10216
10223
|
FIRST_RESPONSE_TIMEOUT_MS = parseInt(process.env.GEMINI_FIRST_RESPONSE_TIMEOUT_MS ?? "30000", 10);
|
|
10217
10224
|
FIRST_RESPONSE_TIMEOUT_ERROR = "FIRST_RESPONSE_TIMEOUT";
|
|
10218
|
-
|
|
10219
|
-
|
|
10225
|
+
GEMINI_FALLBACK_CHAIN = {
|
|
10226
|
+
"gemini-3.1-pro-preview": "gemini-2.5-pro",
|
|
10227
|
+
"gemini-2.5-pro": "gemini-3.1-flash-preview"
|
|
10228
|
+
};
|
|
10229
|
+
GEMINI_DOWNGRADE_MODELS = new Set(Object.keys(GEMINI_FALLBACK_CHAIN));
|
|
10220
10230
|
MCP_CONFIG_FLAG = {
|
|
10221
10231
|
claude: ["--mcp-config"]
|
|
10222
10232
|
};
|
package/package.json
CHANGED