@wu529778790/open-im 1.10.4 → 1.10.5-beta.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.
@@ -13,6 +13,7 @@ import { existsSync, readFileSync } from 'fs';
13
13
  import { homedir } from 'os';
14
14
  import { join } from 'path';
15
15
  import { createLogger } from '../logger.js';
16
+ import { refreshClaudeEnvToProcess } from '../config/file-io.js';
16
17
  import { toReplyPlainText } from '../shared/utils.js';
17
18
  const log = createLogger('ClaudeSDK');
18
19
  function loadUserPluginSettings() {
@@ -145,7 +146,9 @@ function isSessionCorruptionError(msg) {
145
146
  * @returns SDKSession 对象和实际的 sessionId
146
147
  */
147
148
  async function getOrCreateSession(sessionId, workDir, model, permissionMode) {
148
- const resolvedModel = model?.trim() || 'claude-opus-4-5';
149
+ // 刷新 Claude 环境变量(支持 cc switch 后无需重启即可生效)
150
+ refreshClaudeEnvToProcess();
151
+ const resolvedModel = model?.trim() || process.env.ANTHROPIC_MODEL?.trim() || 'claude-opus-4-5';
149
152
  if (activeSessions.size >= MAX_ACTIVE_SESSIONS) {
150
153
  throw new Error(`Session pool is full (${MAX_ACTIVE_SESSIONS}). Cannot create new session.`);
151
154
  }
@@ -9,3 +9,9 @@ export declare function saveClaudeSettingsEnv(env: Record<string, string>): void
9
9
  export declare function normalizeAiCommand(value: unknown, fallback: AiCommand): AiCommand;
10
10
  export declare function hasCodexAuth(): boolean;
11
11
  export declare function parseCommaSeparated(value: string): string[];
12
+ /**
13
+ * 将 ~/.claude/settings.json 中最新的 Claude 环境变量刷新到 process.env。
14
+ * 用于支持 cc switch 后立即生效,无需重启服务。
15
+ * 内部使用 mtime 缓存,文件未变更时几乎零开销。
16
+ */
17
+ export declare function refreshClaudeEnvToProcess(): void;
@@ -174,3 +174,27 @@ export function hasCodexAuth() {
174
174
  export function parseCommaSeparated(value) {
175
175
  return value.split(',').map((s) => s.trim()).filter(Boolean);
176
176
  }
177
+ /** Claude 认证相关的环境变量 key 列表 */
178
+ const CLAUDE_AUTH_ENV_KEYS = [
179
+ 'ANTHROPIC_API_KEY',
180
+ 'ANTHROPIC_AUTH_TOKEN',
181
+ 'CLAUDE_CODE_OAUTH_TOKEN',
182
+ 'ANTHROPIC_BASE_URL',
183
+ 'ANTHROPIC_MODEL',
184
+ ];
185
+ /**
186
+ * 将 ~/.claude/settings.json 中最新的 Claude 环境变量刷新到 process.env。
187
+ * 用于支持 cc switch 后立即生效,无需重启服务。
188
+ * 内部使用 mtime 缓存,文件未变更时几乎零开销。
189
+ */
190
+ export function refreshClaudeEnvToProcess() {
191
+ const env = loadClaudeSettingsEnv();
192
+ for (const key of CLAUDE_AUTH_ENV_KEYS) {
193
+ if (key in env) {
194
+ process.env[key] = env[key];
195
+ }
196
+ else {
197
+ delete process.env[key];
198
+ }
199
+ }
200
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wu529778790/open-im",
3
- "version": "1.10.4",
3
+ "version": "1.10.5-beta.0",
4
4
  "description": "Multi-platform IM bridge for AI CLI tools (Claude, Codex, CodeBuddy)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",