cc-claw 0.15.0 → 0.15.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.
Files changed (2) hide show
  1. package/dist/cli.js +32 -7
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -33,7 +33,7 @@ var VERSION;
33
33
  var init_version = __esm({
34
34
  "src/version.ts"() {
35
35
  "use strict";
36
- VERSION = true ? "0.15.0" : (() => {
36
+ VERSION = true ? "0.15.2" : (() => {
37
37
  try {
38
38
  return JSON.parse(readFileSync(join(process.cwd(), "package.json"), "utf-8")).version ?? "unknown";
39
39
  } catch {
@@ -10745,8 +10745,18 @@ async function askAgentImpl(chatId, userMessage, opts) {
10745
10745
  const downgradeCb = onModelDowngrade ? (from, to, reason) => onModelDowngrade(chatId, from, to, reason) : void 0;
10746
10746
  result = await spawnGeminiWithRotation(chatId, adapter, baseConfig, configWithSession, resolvedModel, cancelState, thinkingLevel, timeoutMs, maxTurns, rotationMode, spawnOpts, rotationCb, settingsSourceChatId, downgradeCb);
10747
10747
  } else {
10748
+ const slotSpawnOpts = (() => {
10749
+ if (adapter.id !== "gemini") return spawnOpts;
10750
+ const geminiAdapter = adapter;
10751
+ const { env, slot } = geminiAdapter.getEnvForSlot(chatId);
10752
+ if (slot) {
10753
+ log(`[agent] rotation=off, using pinned slot: ${slot.label || `slot-${slot.id}`} (${slot.slotType})`);
10754
+ return { ...spawnOpts, envOverride: env };
10755
+ }
10756
+ return spawnOpts;
10757
+ })();
10748
10758
  try {
10749
- result = await spawnQuery(adapter, configWithSession, resolvedModel, cancelState, thinkingLevel, timeoutMs, maxTurns, spawnOpts);
10759
+ result = await spawnQuery(adapter, configWithSession, resolvedModel, cancelState, thinkingLevel, timeoutMs, maxTurns, slotSpawnOpts);
10750
10760
  } catch (err) {
10751
10761
  const errMsg = err instanceof Error ? err.message : String(err);
10752
10762
  const isTimeout = errMsg.startsWith(FIRST_RESPONSE_TIMEOUT_ERROR);
@@ -10769,7 +10779,7 @@ async function askAgentImpl(chatId, userMessage, opts) {
10769
10779
  if (mcpConfigPath) {
10770
10780
  fallbackConfig.args = injectMcpConfig(adapter.id, fallbackConfig.args, mcpConfigPath);
10771
10781
  }
10772
- result = await spawnQuery(adapter, fallbackConfig, fallbackModel, cancelState, thinkingLevel, timeoutMs, maxTurns, spawnOpts);
10782
+ result = await spawnQuery(adapter, fallbackConfig, fallbackModel, cancelState, thinkingLevel, timeoutMs, maxTurns, slotSpawnOpts);
10773
10783
  result.resolvedModel = fallbackModel;
10774
10784
  } else {
10775
10785
  throw err;
@@ -10786,7 +10796,14 @@ async function askAgentImpl(chatId, userMessage, opts) {
10786
10796
  const downgradeCb = onModelDowngrade ? (from, to, reason) => onModelDowngrade(chatId, from, to, reason) : void 0;
10787
10797
  result = await spawnGeminiWithRotation(chatId, adapter, baseConfig, baseConfig, resolvedModel, cancelState, thinkingLevel, timeoutMs, maxTurns, rotationMode, spawnOpts, rotationCb, settingsSourceChatId, downgradeCb);
10788
10798
  } else {
10789
- result = await spawnQuery(adapter, baseConfig, resolvedModel, cancelState, thinkingLevel, timeoutMs, maxTurns, spawnOpts);
10799
+ const retryOpts = (() => {
10800
+ if (adapter.id !== "gemini") return spawnOpts;
10801
+ const geminiAdapter = adapter;
10802
+ const { env, slot } = geminiAdapter.getEnvForSlot(chatId);
10803
+ if (slot) return { ...spawnOpts, envOverride: env };
10804
+ return spawnOpts;
10805
+ })();
10806
+ result = await spawnQuery(adapter, baseConfig, resolvedModel, cancelState, thinkingLevel, timeoutMs, maxTurns, retryOpts);
10790
10807
  }
10791
10808
  }
10792
10809
  } catch (spawnErr) {
@@ -10799,7 +10816,14 @@ async function askAgentImpl(chatId, userMessage, opts) {
10799
10816
  const downgradeCb = onModelDowngrade ? (from, to, reason) => onModelDowngrade(chatId, from, to, reason) : void 0;
10800
10817
  result = await spawnGeminiWithRotation(chatId, adapter, baseConfig, baseConfig, resolvedModel, cancelState, thinkingLevel, timeoutMs, maxTurns, rotationMode, spawnOpts, rotationCb, settingsSourceChatId, downgradeCb);
10801
10818
  } else {
10802
- result = await spawnQuery(adapter, baseConfig, resolvedModel, cancelState, thinkingLevel, timeoutMs, maxTurns, spawnOpts);
10819
+ const retryOpts = (() => {
10820
+ if (adapter.id !== "gemini") return spawnOpts;
10821
+ const geminiAdapter = adapter;
10822
+ const { env, slot } = geminiAdapter.getEnvForSlot(chatId);
10823
+ if (slot) return { ...spawnOpts, envOverride: env };
10824
+ return spawnOpts;
10825
+ })();
10826
+ result = await spawnQuery(adapter, baseConfig, resolvedModel, cancelState, thinkingLevel, timeoutMs, maxTurns, retryOpts);
10803
10827
  }
10804
10828
  } else {
10805
10829
  if (!isSyntheticChatId(chatId)) {
@@ -15321,7 +15345,9 @@ async function doBackendSwitch(chatId, backendId, channel) {
15321
15345
  clearSession(chatId);
15322
15346
  clearModel(chatId);
15323
15347
  clearThinkingLevel(chatId);
15324
- clearChatGeminiSlot(chatId);
15348
+ if (backendId !== "gemini") {
15349
+ clearChatGeminiSlot(chatId);
15350
+ }
15325
15351
  setBackend(chatId, backendId);
15326
15352
  logActivity(getDb(), { chatId, source: "telegram", eventType: "config_changed", summary: `Backend switched to ${targetAdapter.displayName}`, detail: { field: "backend", value: backendId } });
15327
15353
  if (typeof channel.sendKeyboard === "function") {
@@ -15871,7 +15897,6 @@ Tap to toggle:`,
15871
15897
  const exchangeCount = getMessagePairCount(chatId);
15872
15898
  const summarized = await summarizeSession(chatId);
15873
15899
  clearSession(chatId);
15874
- clearChatGeminiSlot(chatId);
15875
15900
  setSessionStartedAt(chatId);
15876
15901
  logActivity(getDb(), { chatId, source: "telegram", eventType: "config_changed", summary: "New session started", detail: { field: "session", action: "reset", summarized } });
15877
15902
  if (typeof channel.sendKeyboard === "function" && oldSessionId) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cc-claw",
3
- "version": "0.15.0",
3
+ "version": "0.15.2",
4
4
  "description": "CC-Claw: Personal AI assistant on Telegram — multi-backend (Claude, Gemini, Codex, Cursor), sub-agent orchestration, MCP management",
5
5
  "type": "module",
6
6
  "main": "dist/cli.js",