@hileeon/mcc 0.1.9 → 0.3.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.
Files changed (70) hide show
  1. package/README.md +6 -1
  2. package/dist/accounts/store.d.ts +11 -0
  3. package/dist/accounts/store.d.ts.map +1 -1
  4. package/dist/accounts/store.js.map +1 -1
  5. package/dist/commands/launch.d.ts.map +1 -1
  6. package/dist/commands/launch.js +8 -4
  7. package/dist/commands/launch.js.map +1 -1
  8. package/dist/commands/mcp.d.ts +11 -0
  9. package/dist/commands/mcp.d.ts.map +1 -1
  10. package/dist/commands/mcp.js +179 -1
  11. package/dist/commands/mcp.js.map +1 -1
  12. package/dist/commands/profile-test.d.ts +17 -0
  13. package/dist/commands/profile-test.d.ts.map +1 -0
  14. package/dist/commands/profile-test.js +188 -0
  15. package/dist/commands/profile-test.js.map +1 -0
  16. package/dist/core/model-router.d.ts.map +1 -1
  17. package/dist/core/model-router.js +31 -1
  18. package/dist/core/model-router.js.map +1 -1
  19. package/dist/dashboard/server.js +118 -30
  20. package/dist/dashboard/server.js.map +1 -1
  21. package/dist/mcc.js +15 -0
  22. package/dist/mcc.js.map +1 -1
  23. package/dist/mcp/external-registry.d.ts +6 -3
  24. package/dist/mcp/external-registry.d.ts.map +1 -1
  25. package/dist/mcp/external-registry.js.map +1 -1
  26. package/dist/mcp/installer.d.ts.map +1 -1
  27. package/dist/mcp/installer.js +25 -10
  28. package/dist/mcp/installer.js.map +1 -1
  29. package/dist/mcp/mcp-config.d.ts +17 -3
  30. package/dist/mcp/mcp-config.d.ts.map +1 -1
  31. package/dist/mcp/mcp-config.js +38 -19
  32. package/dist/mcp/mcp-config.js.map +1 -1
  33. package/dist/mcp/registry.d.ts +4 -2
  34. package/dist/mcp/registry.d.ts.map +1 -1
  35. package/dist/mcp/registry.js.map +1 -1
  36. package/dist/proxy/proxy-daemon.d.ts +1 -1
  37. package/dist/proxy/proxy-daemon.d.ts.map +1 -1
  38. package/dist/proxy/proxy-daemon.js +10 -5
  39. package/dist/proxy/proxy-daemon.js.map +1 -1
  40. package/dist/proxy/proxy-entry.js +6 -1
  41. package/dist/proxy/proxy-entry.js.map +1 -1
  42. package/dist/proxy/proxy-paths.d.ts +1 -0
  43. package/dist/proxy/proxy-paths.d.ts.map +1 -1
  44. package/dist/proxy/proxy-paths.js.map +1 -1
  45. package/dist/proxy/proxy-server.d.ts +1 -0
  46. package/dist/proxy/proxy-server.d.ts.map +1 -1
  47. package/dist/proxy/proxy-server.js +84 -2
  48. package/dist/proxy/proxy-server.js.map +1 -1
  49. package/dist/shared/config.d.ts +1 -0
  50. package/dist/shared/config.d.ts.map +1 -1
  51. package/dist/shared/config.js +1 -0
  52. package/dist/shared/config.js.map +1 -1
  53. package/dist/shared/provider-preset-catalog.d.ts +2 -0
  54. package/dist/shared/provider-preset-catalog.d.ts.map +1 -1
  55. package/dist/shared/provider-preset-catalog.js +31 -22
  56. package/dist/shared/provider-preset-catalog.js.map +1 -1
  57. package/dist/shared/test-image.d.ts +15 -0
  58. package/dist/shared/test-image.d.ts.map +1 -0
  59. package/dist/shared/test-image.js +89 -0
  60. package/dist/shared/test-image.js.map +1 -0
  61. package/dist/ui/assets/{index-ClqmrjNk.js → index-7kowlJw9.js} +7 -7
  62. package/dist/ui/assets/{index-CwMwQ-Z4.css → index-DnC-lskL.css} +1 -1
  63. package/dist/ui/index.html +2 -2
  64. package/dist/update.d.ts +16 -5
  65. package/dist/update.d.ts.map +1 -1
  66. package/dist/update.js +149 -37
  67. package/dist/update.js.map +1 -1
  68. package/lib/mcp-hooks/image-analysis-runtime.cjs +58 -5
  69. package/lib/shared/logger.cjs +5 -1
  70. package/package.json +2 -4
package/README.md CHANGED
@@ -19,11 +19,15 @@ mcc profile add <name> # 添加 profile
19
19
  mcc profile list # 查看所有 profile
20
20
  mcc profile remove <name> # 删除 profile
21
21
  mcc profile default [name] # 设默认 profile
22
+ mcc profile test [name...] # 体检 profile(验 key + 余额)
23
+ mcc profile test x --vision # 额外探测主模型能否识图
22
24
  mcc mcp list # 查看可用 MCP 工具
23
25
  mcc mcp add --name <id> --command <cmd> # 添加外部 MCP 工具
24
26
  mcc mcp remove <name> # 删除外部 MCP 工具
25
27
  mcc mcp enable <name> <profile> # 启用外部 MCP(指定 profile)
26
28
  mcc mcp disable <name> <profile> # 禁用外部 MCP
29
+ mcc mcp import-global <profile> # 一键导入全局 ~/.claude.json 的 MCP 到该 profile
30
+ mcc mcp import-global --all-profiles # 同步到所有 profile(默认跳过 mcc-*/ccs-*;支持 http/sse)
27
31
  mcc config # 打开 Web 配置控制台
28
32
  ```
29
33
 
@@ -32,6 +36,7 @@ mcc config # 打开 Web 配置控制台
32
36
  - **多 profile 管理**:API key 存 `~/.mcc/profiles/<name>/.key`,元数据存 `~/.mcc/profiles.json`
33
37
  - **实例隔离**:每个 profile 独立 `CLAUDE_CONFIG_DIR`,位于 `~/.mcc/instances/<name>/`
34
38
  - **OpenAI 兼容模式**:`--protocol openai` 时自动启动本地翻译 proxy(端口 43456-43555),转发 OpenAI 格式请求到 upstream Anthropic 兼容端点
39
+ - **思考模式**:profile 支持 `reasoningEffort`,默认开启思考;强度以 Claude Code 自身的 `/effort`/Tab 为准并自动映射到各 provider,`reasoningEffort` 仅作兜底默认
35
40
  - **Tiered model**:profile 支持 `opusModel`/`sonnetModel`/`haikuModel` 三级模型切换
36
41
  - **内置 MCP**:`mcc-websearch`(多源搜索)和 `mcc-image-analysis`(图片/PDF 分析)
37
42
  - **外部 MCP**:通过 `mcc mcp add` 注册第三方 MCP server,支持 `${MCC_PROVIDER_KEY:<providerId>}` 引用 provider API key
@@ -71,7 +76,7 @@ src/
71
76
  ├── commands/ # 每个 mcc 子命令一个文件
72
77
  │ ├── launch.ts # mcc <profile>
73
78
  │ ├── profile.ts # mcc profile add|list|remove|default
74
- │ └── mcp.ts # mcc mcp list|add|remove|enable|disable
79
+ │ └── mcp.ts # mcc mcp list|add|remove|enable|disable|import-global
75
80
  ├── accounts/
76
81
  │ ├── store.ts # Profile 元数据
77
82
  │ ├── instance-manager.ts # CLAUDE_CONFIG_DIR 隔离
@@ -8,6 +8,16 @@
8
8
  * └── <profile-name>/
9
9
  * └── .key # API key (plain text)
10
10
  */
11
+ /**
12
+ * Thinking / reasoning intensity. Normalized across providers; how it maps:
13
+ * - openai-protocol → injected by the proxy as provider-specific params
14
+ * (Qwen: enable_thinking + thinking_budget; GLM: thinking{enabled} + reasoning_effort;
15
+ * generic: reasoning_effort, max clamped to high).
16
+ * - anthropic-protocol → exported as CLAUDE_CODE_EFFORT_LEVEL (honored by DeepSeek;
17
+ * a harmless no-op for providers like Kimi/MiMo whose thinking is binary always-on).
18
+ * Undefined is treated as 'high' (thinking on). 'off' disables.
19
+ */
20
+ export type ReasoningEffort = 'off' | 'low' | 'medium' | 'high' | 'max';
11
21
  export interface Profile {
12
22
  name: string;
13
23
  displayName?: string;
@@ -18,6 +28,7 @@ export interface Profile {
18
28
  haikuModel?: string;
19
29
  protocol?: 'anthropic' | 'openai';
20
30
  proxyChatCompletionsPath?: string;
31
+ reasoningEffort?: ReasoningEffort;
21
32
  createdAt: string;
22
33
  lastUsedAt?: string;
23
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/accounts/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAiBH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;IAClC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA0BD,wBAAgB,YAAY,IAAI,OAAO,EAAE,CAExC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE5D;AAED,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAEtD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAOlE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIjE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAUhD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKpD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/accounts/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAiBH;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;AAExE,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;IAClC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA0BD,wBAAgB,YAAY,IAAI,OAAO,EAAE,CAExC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE5D;AAED,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAEtD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAOlE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIjE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAUhD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKpD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD"}
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/accounts/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/accounts/store.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../src/commands/launch.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoBH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6G7D"}
1
+ {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../src/commands/launch.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoBH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgH7D"}
@@ -83,14 +83,13 @@ async function cmdLaunch(args) {
83
83
  const wsProviders = (0, mcp_config_1.getEnabledWebSearchProviders)(mcpConfig);
84
84
  const iaProvider = (0, mcp_config_1.getActiveImageAnalysisProvider)(mcpConfig);
85
85
  const instancePath = await instanceMgr.ensureInstance(profileName);
86
- console.log(` ${picocolors_1.default.dim('instance')} ${picocolors_1.default.dim(instancePath)}`);
87
86
  (0, installer_1.syncInstanceMcpServers)(instancePath, registry_1.BUILTIN_MCP_SERVERS.map((s) => s.name), profileName);
88
87
  // Initialize logging session
89
88
  const sessionId = (0, logger_1.makeSessionId)();
90
89
  const mccHome = process.env.MCC_HOME ?? path.join(process.env.HOME ?? process.env.USERPROFILE ?? '~', '.mcc');
91
90
  const logDir = path.join(mccHome, 'logs', profileName, 'sessions', sessionId);
92
91
  (0, logger_1.init)(sessionId, logDir);
93
- logger_1.log.info('MCC', `Session starting: ${profileName} | log: ${logDir}`);
92
+ logger_1.log.debug('MCC', `Session starting: ${profileName} | log: ${logDir}`);
94
93
  console.log(` ${picocolors_1.default.dim('session')} ${picocolors_1.default.dim(sessionId)}`);
95
94
  // MCP provider summary
96
95
  if (wsProviders.length > 0) {
@@ -111,8 +110,13 @@ async function cmdLaunch(args) {
111
110
  env.MCC_CURRENT_PROFILE = profileName;
112
111
  env.MCC_LOG_SESSION_ID = sessionId;
113
112
  env.MCC_LOG_DIR = logDir;
114
- // Debug: key env vars (no secrets)
113
+ // Preserve full color depth without this Claude Code's TUI looks dim when
114
+ // spawned as a child process (TTY color detection can downgrade).
115
+ env.FORCE_COLOR = '3';
116
+ env.COLORTERM = 'truecolor';
117
+ // Debug: instance path + key env vars (no secrets)
115
118
  if ((0, logger_1.isDebugEnabled)()) {
119
+ console.log(` ${picocolors_1.default.dim('instance')} ${picocolors_1.default.dim(instancePath)}`);
116
120
  const debugEnvs = [
117
121
  ['ANTHROPIC_BASE_URL', env.ANTHROPIC_BASE_URL],
118
122
  ['ANTHROPIC_MODEL', env.ANTHROPIC_MODEL],
@@ -134,7 +138,7 @@ async function cmdLaunch(args) {
134
138
  // Start translation proxy for OpenAI-compatible profiles
135
139
  if (profile.protocol === 'openai') {
136
140
  try {
137
- const proxyInfo = await (0, proxy_daemon_1.startProxy)(profileName, profile.baseUrl, apiKey, profile.model, profile.proxyChatCompletionsPath);
141
+ const proxyInfo = await (0, proxy_daemon_1.startProxy)(profileName, profile.baseUrl, apiKey, profile.model, profile.proxyChatCompletionsPath, profile.reasoningEffort);
138
142
  env.ANTHROPIC_BASE_URL = `http://127.0.0.1:${proxyInfo.port}`;
139
143
  env.ANTHROPIC_AUTH_TOKEN = proxyInfo.authToken;
140
144
  // MCP image analysis also needs to go through the proxy
@@ -1 +1 @@
1
- {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/commands/launch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/commands/launch.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBH,8BAgHC;AAlID,iDAAsC;AACtC,2CAA6B;AAC7B,4DAA4B;AAC5B,6CAA+E;AAC/E,mEAAkE;AAClE,uDAAuD;AACvD,gDAA0D;AAC1D,8CAAsD;AACtD,kDAI2B;AAC3B,wDAAmD;AACnD,6CAA4E;AAE5E,MAAM,WAAW,GAAG,IAAI,qCAAkB,EAAE,CAAC;AAEtC,KAAK,UAAU,SAAS,CAAC,IAAc;IAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,WAAW,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,0BAA0B,WAAW,EAAE,CAAC,CAAC;QACvD,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACzC,KAAK,MAAM,CAAC,IAAI,IAAA,oBAAY,GAAE,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,oBAAE,CAAC,IAAI,CAAC,oBAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,oBAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,oBAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,oBAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,oBAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,oBAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAE/I,MAAM,MAAM,GAAG,IAAA,wBAAgB,EAAC,WAAW,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,qCAAqC,WAAW,EAAE,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,wDAAwD;IACxD,MAAM,SAAS,GAAG,IAAA,0BAAa,GAAE,CAAC;IAClC,MAAM,WAAW,GAAG,IAAA,yCAA4B,EAAC,SAAS,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,IAAA,2CAA8B,EAAC,SAAS,CAAC,CAAC;IAE7D,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IACnE,IAAA,kCAAsB,EAAC,YAAY,EAAE,8BAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;IAE1F,6BAA6B;IAC7B,MAAM,SAAS,GAAG,IAAA,sBAAa,GAAE,CAAC;IAClC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9G,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IAC9E,IAAA,aAAI,EAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACxB,YAAG,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,WAAW,WAAW,MAAM,EAAE,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,KAAK,oBAAE,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,oBAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAE7D,uBAAuB;IACvB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,oBAAE,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,oBAAE,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC;SAAM,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,KAAK,oBAAE,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,oBAAE,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,KAAK,oBAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,oBAAE,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,oBAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,oBAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7G,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,oBAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,oBAAE,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,IAAA,8BAAe,EAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAC3D,GAAG,CAAC,mBAAmB,GAAG,WAAW,CAAC;IACtC,GAAG,CAAC,kBAAkB,GAAG,SAAS,CAAC;IACnC,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC;IACzB,4EAA4E;IAC5E,kEAAkE;IAClE,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC;IACtB,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC;IAE5B,mDAAmD;IACnD,IAAI,IAAA,uBAAc,GAAE,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,oBAAE,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,oBAAE,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAChE,MAAM,SAAS,GAAuB;YACpC,CAAC,oBAAoB,EAAE,GAAG,CAAC,kBAAkB,CAAC;YAC9C,CAAC,iBAAiB,EAAE,GAAG,CAAC,eAAe,CAAC;YACxC,CAAC,mBAAmB,EAAE,GAAG,CAAC,iBAAiB,CAAC;YAC5C,CAAC,uBAAuB,EAAE,GAAG,CAAC,qBAAqB,IAAI,GAAG,CAAC;YAC3D,CAAC,4BAA4B,EAAE,GAAG,CAAC,0BAA0B,IAAI,GAAG,CAAC;SACtE,CAAC;QACF,IAAI,GAAG,CAAC,4BAA4B,KAAK,GAAG,CAAC,eAAe;YAC1D,SAAS,CAAC,IAAI,CAAC,CAAC,8BAA8B,EAAE,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACrF,IAAI,GAAG,CAAC,8BAA8B,KAAK,GAAG,CAAC,eAAe;YAC5D,SAAS,CAAC,IAAI,CAAC,CAAC,gCAAgC,EAAE,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACzF,IAAI,GAAG,CAAC,6BAA6B,KAAK,GAAG,CAAC,eAAe;YAC3D,SAAS,CAAC,IAAI,CAAC,CAAC,+BAA+B,EAAE,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC;QAEvF,OAAO,CAAC,GAAG,CAAC,KAAK,oBAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,oBAAE,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,oBAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,oBAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,IAAA,yBAAU,EAAC,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,wBAAwB,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;YACnJ,GAAG,CAAC,kBAAkB,GAAG,oBAAoB,SAAS,CAAC,IAAI,EAAE,CAAC;YAC9D,GAAG,CAAC,oBAAoB,GAAG,SAAS,CAAC,SAAS,CAAC;YAC/C,wDAAwD;YACxD,GAAG,CAAC,mCAAmC,GAAG,oBAAoB,SAAS,CAAC,IAAI,EAAE,CAAC;YAC/E,GAAG,CAAC,kCAAkC,GAAG,SAAS,CAAC,SAAS,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,oBAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,oBAAE,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,0CAA2C,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,OAAO,oBAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,oBAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACxE,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,QAAQ,EAAE,aAAa,EAAE;QAC3C,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE;QAC/B,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC"}
@@ -6,4 +6,15 @@ export declare function cmdMcpAdd(args: string[]): Promise<void>;
6
6
  export declare function cmdMcpRemove(args: string[]): Promise<void>;
7
7
  export declare function cmdMcpEnable(args: string[]): Promise<void>;
8
8
  export declare function cmdMcpDisable(args: string[]): Promise<void>;
9
+ /**
10
+ * `mcc mcp import-global [profile] [--all-profiles] [--only a,b] [--exclude a,b] [--include-ccs]`
11
+ *
12
+ * Imports the MCP servers from the user's global ~/.claude.json into MCC's
13
+ * external registry and enables them on the target profile(s). Because MCC
14
+ * rewrites each instance's .claude.json on every launch, importing via the
15
+ * registry (not a manual edit) is what makes the servers survive relaunch.
16
+ *
17
+ * By default skips MCC builtins (mcc-*) and CCS-owned servers (ccs-*).
18
+ */
19
+ export declare function cmdMcpImportGlobal(args: string[]): Promise<void>;
9
20
  //# sourceMappingURL=mcp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwBH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAahD;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiC7D;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAahE;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAehE;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAejE"}
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA;;GAEG;AA0BH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAkBhD;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiC7D;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAahE;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAehE;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAejE;AA6CD;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuFtE"}
@@ -2,12 +2,48 @@
2
2
  /**
3
3
  * `mcc mcp <list|add|remove|enable|disable>` — external MCP server management.
4
4
  */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
5
38
  Object.defineProperty(exports, "__esModule", { value: true });
6
39
  exports.cmdMcpList = cmdMcpList;
7
40
  exports.cmdMcpAdd = cmdMcpAdd;
8
41
  exports.cmdMcpRemove = cmdMcpRemove;
9
42
  exports.cmdMcpEnable = cmdMcpEnable;
10
43
  exports.cmdMcpDisable = cmdMcpDisable;
44
+ exports.cmdMcpImportGlobal = cmdMcpImportGlobal;
45
+ const fs = __importStar(require("fs"));
46
+ const path = __importStar(require("path"));
11
47
  const store_1 = require("../accounts/store");
12
48
  const instance_manager_1 = require("../accounts/instance-manager");
13
49
  const installer_1 = require("../mcp/installer");
@@ -28,7 +64,13 @@ async function cmdMcpList() {
28
64
  console.log(` ${s.displayName}: ${s.description}`);
29
65
  if (!isBuiltin) {
30
66
  const ext = s;
31
- console.log(` Command: ${ext.command} ${ext.args.join(' ')}`);
67
+ const transport = ext.type ?? 'stdio';
68
+ if (transport === 'http' || transport === 'sse') {
69
+ console.log(` ${transport.toUpperCase()}: ${ext.url ?? '(no url)'}`);
70
+ }
71
+ else {
72
+ console.log(` Command: ${ext.command ?? ''} ${(ext.args ?? []).join(' ')}`.trimEnd());
73
+ }
32
74
  }
33
75
  }
34
76
  }
@@ -109,4 +151,140 @@ async function cmdMcpDisable(args) {
109
151
  (0, installer_1.syncInstanceMcpServers)(instancePath, registry_1.BUILTIN_MCP_SERVERS.map((s) => s.name), profileName);
110
152
  console.log(`[OK] External MCP '${name}' disabled for profile '${profileName}'`);
111
153
  }
154
+ /** Parse positional (non-flag) args, skipping values consumed by valued flags. */
155
+ function positionalArgs(args, valuedFlags) {
156
+ const out = [];
157
+ for (let i = 0; i < args.length; i++) {
158
+ const a = args[i];
159
+ if (valuedFlags.includes(a)) {
160
+ i++; // skip this flag's value
161
+ continue;
162
+ }
163
+ if (a.startsWith('--'))
164
+ continue;
165
+ out.push(a);
166
+ }
167
+ return out;
168
+ }
169
+ function getGlobalClaudeJsonPath() {
170
+ const home = process.env.HOME ?? process.env.USERPROFILE ?? '~';
171
+ return path.join(home, '.claude.json');
172
+ }
173
+ function toExternalServer(name, cfg) {
174
+ const transport = cfg.type ?? (cfg.url ? 'http' : 'stdio');
175
+ const base = {
176
+ name,
177
+ displayName: name,
178
+ description: 'Imported from global ~/.claude.json',
179
+ enabledByDefault: false,
180
+ };
181
+ if (transport === 'http' || transport === 'sse') {
182
+ return { ...base, type: transport, url: cfg.url, headers: cfg.headers ?? {} };
183
+ }
184
+ return { ...base, type: 'stdio', command: cfg.command, args: cfg.args ?? [], envVars: cfg.env ?? {} };
185
+ }
186
+ /**
187
+ * `mcc mcp import-global [profile] [--all-profiles] [--only a,b] [--exclude a,b] [--include-ccs]`
188
+ *
189
+ * Imports the MCP servers from the user's global ~/.claude.json into MCC's
190
+ * external registry and enables them on the target profile(s). Because MCC
191
+ * rewrites each instance's .claude.json on every launch, importing via the
192
+ * registry (not a manual edit) is what makes the servers survive relaunch.
193
+ *
194
+ * By default skips MCC builtins (mcc-*) and CCS-owned servers (ccs-*).
195
+ */
196
+ async function cmdMcpImportGlobal(args) {
197
+ const allProfiles = args.includes('--all-profiles');
198
+ const includeCcs = args.includes('--include-ccs');
199
+ const only = getFlag(args, '--only');
200
+ const exclude = getFlag(args, '--exclude');
201
+ const onlySet = only ? new Set(only.split(',').map((s) => s.trim()).filter(Boolean)) : null;
202
+ const excludeSet = new Set(exclude ? exclude.split(',').map((s) => s.trim()).filter(Boolean) : []);
203
+ const positional = positionalArgs(args, ['--only', '--exclude']);
204
+ const profileName = positional[0];
205
+ if (!allProfiles && !profileName) {
206
+ console.error('[!] Usage: mcc mcp import-global <profile> [--all-profiles] [--only a,b] [--exclude a,b] [--include-ccs]');
207
+ process.exit(1);
208
+ }
209
+ // Resolve target profiles
210
+ const targets = allProfiles ? (0, store_1.listProfiles)().map((p) => p.name) : [profileName];
211
+ for (const t of targets) {
212
+ if (!(0, store_1.hasProfile)(t)) {
213
+ console.error(`[!] Profile not found: ${t}`);
214
+ process.exit(1);
215
+ }
216
+ }
217
+ if (targets.length === 0) {
218
+ console.error('[!] No profiles to import into.');
219
+ process.exit(1);
220
+ }
221
+ // Read global ~/.claude.json
222
+ const globalPath = getGlobalClaudeJsonPath();
223
+ if (!fs.existsSync(globalPath)) {
224
+ console.error(`[!] Global config not found: ${globalPath}`);
225
+ process.exit(1);
226
+ }
227
+ let globalServers;
228
+ try {
229
+ const data = JSON.parse(fs.readFileSync(globalPath, 'utf8'));
230
+ globalServers = data.mcpServers ?? {};
231
+ }
232
+ catch (e) {
233
+ console.error(`[!] Failed to parse ${globalPath}: ${e.message}`);
234
+ process.exit(1);
235
+ }
236
+ const builtinNames = new Set(registry_1.BUILTIN_MCP_SERVERS.map((s) => s.name));
237
+ const skipped = [];
238
+ const picked = [];
239
+ for (const [name, cfg] of Object.entries(globalServers)) {
240
+ if (builtinNames.has(name)) {
241
+ skipped.push(`${name} (mcc builtin)`);
242
+ continue;
243
+ }
244
+ if (onlySet) {
245
+ if (!onlySet.has(name)) {
246
+ skipped.push(`${name} (not in --only)`);
247
+ continue;
248
+ }
249
+ }
250
+ else {
251
+ if (excludeSet.has(name)) {
252
+ skipped.push(`${name} (--exclude)`);
253
+ continue;
254
+ }
255
+ if (!includeCcs && name.startsWith('ccs-')) {
256
+ skipped.push(`${name} (ccs-*, use --include-ccs)`);
257
+ continue;
258
+ }
259
+ }
260
+ picked.push([name, cfg]);
261
+ }
262
+ if (picked.length === 0) {
263
+ console.log('[i] Nothing to import.');
264
+ if (skipped.length > 0)
265
+ console.log(` Skipped: ${skipped.join(', ')}`);
266
+ return;
267
+ }
268
+ // Register in external registry (idempotent upsert)
269
+ for (const [name, cfg] of picked) {
270
+ (0, external_registry_1.addExternalMcpServer)(toExternalServer(name, cfg));
271
+ }
272
+ // Enable on each target profile + resync its .claude.json
273
+ for (const profile of targets) {
274
+ const instancePath = instanceMgr.getInstancePath(profile);
275
+ for (const [name] of picked) {
276
+ (0, installer_1.enableInstanceExternalMcp)(instancePath, name);
277
+ }
278
+ (0, installer_1.syncInstanceMcpServers)(instancePath, registry_1.BUILTIN_MCP_SERVERS.map((s) => s.name), profile);
279
+ }
280
+ const importedNames = picked.map(([n, cfg]) => {
281
+ const t = cfg.type ?? (cfg.url ? 'http' : 'stdio');
282
+ return `${n} [${t}]`;
283
+ });
284
+ console.log(`[OK] Imported ${picked.length} MCP server(s) into ${targets.length} profile(s).`);
285
+ console.log(` Servers: ${importedNames.join(', ')}`);
286
+ console.log(` Profiles: ${targets.join(', ')}`);
287
+ if (skipped.length > 0)
288
+ console.log(` Skipped: ${skipped.join(', ')}`);
289
+ }
112
290
  //# sourceMappingURL=mcp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * `mcc profile test [name] [--vision]` — live health-check a profile's key.
3
+ *
4
+ * Three independent probes, each reported separately:
5
+ * 1. models — GET the provider's model list. Proves the key *authenticates*.
6
+ * 2. usable — a 1-token chat/messages call. Proves the account is actually
7
+ * callable (catches "key valid but balance = 0", e.g. DeepSeek 402,
8
+ * which the models endpoint alone reports as OK).
9
+ * 3. vision — (only with --vision) sends a 4-quadrant probe image to the
10
+ * profile's own model and checks it names all four colors, i.e.
11
+ * whether the main model can natively see images.
12
+ *
13
+ * Calls the upstream provider directly (not through the local proxy) so the
14
+ * result reflects the real provider, not the translation layer.
15
+ */
16
+ export declare function cmdProfileTest(args: string[]): Promise<void>;
17
+ //# sourceMappingURL=profile-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-test.d.ts","sourceRoot":"","sources":["../../src/commands/profile-test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAwJH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoClE"}
@@ -0,0 +1,188 @@
1
+ "use strict";
2
+ /**
3
+ * `mcc profile test [name] [--vision]` — live health-check a profile's key.
4
+ *
5
+ * Three independent probes, each reported separately:
6
+ * 1. models — GET the provider's model list. Proves the key *authenticates*.
7
+ * 2. usable — a 1-token chat/messages call. Proves the account is actually
8
+ * callable (catches "key valid but balance = 0", e.g. DeepSeek 402,
9
+ * which the models endpoint alone reports as OK).
10
+ * 3. vision — (only with --vision) sends a 4-quadrant probe image to the
11
+ * profile's own model and checks it names all four colors, i.e.
12
+ * whether the main model can natively see images.
13
+ *
14
+ * Calls the upstream provider directly (not through the local proxy) so the
15
+ * result reflects the real provider, not the translation layer.
16
+ */
17
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.cmdProfileTest = cmdProfileTest;
22
+ const picocolors_1 = __importDefault(require("picocolors"));
23
+ const store_1 = require("../accounts/store");
24
+ const test_image_1 = require("../shared/test-image");
25
+ const TIMEOUT_MS = 30000;
26
+ function trimBase(baseUrl) {
27
+ return baseUrl.trim().replace(/\/+$/, '');
28
+ }
29
+ function authHeaders(key, protocol) {
30
+ return protocol === 'anthropic'
31
+ ? { 'x-api-key': key, 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json' }
32
+ : { Authorization: `Bearer ${key}`, 'Content-Type': 'application/json' };
33
+ }
34
+ async function http(url, init) {
35
+ const controller = new AbortController();
36
+ const timer = setTimeout(() => controller.abort(), TIMEOUT_MS);
37
+ try {
38
+ const resp = await fetch(url, { ...init, signal: controller.signal });
39
+ const text = await resp.text();
40
+ let json = undefined;
41
+ try {
42
+ json = JSON.parse(text);
43
+ }
44
+ catch {
45
+ /* non-JSON body */
46
+ }
47
+ return { status: resp.status, json, text };
48
+ }
49
+ finally {
50
+ clearTimeout(timer);
51
+ }
52
+ }
53
+ function errSnippet(status, json, text) {
54
+ const j = json;
55
+ const raw = j?.error?.message ?? j?.message ?? text;
56
+ // Collapse whitespace and strip HTML so a 404 error page stays one tidy line.
57
+ const msg = raw.replace(/<[^>]*>/g, ' ').replace(/\s+/g, ' ').trim().slice(0, 100);
58
+ return `HTTP ${status}${msg ? ` — ${msg}` : ''}`;
59
+ }
60
+ async function probeModels(base, key, protocol) {
61
+ const url = protocol === 'anthropic' ? `${base}/v1/models` : `${base}/models`;
62
+ try {
63
+ const { status, json, text } = await http(url, { method: 'GET', headers: authHeaders(key, protocol) });
64
+ // Many Anthropic-compatible providers don't expose /v1/models — a 404 here
65
+ // says nothing about the key (the `usable` probe is the real auth check).
66
+ if (status === 404)
67
+ return { ok: true, neutral: true, detail: 'no /v1/models endpoint' };
68
+ if (status !== 200)
69
+ return { ok: false, detail: errSnippet(status, json, text) };
70
+ const body = json;
71
+ const list = Array.isArray(body?.data) ? body.data : Array.isArray(body?.models) ? body.models : [];
72
+ return { ok: true, detail: `${list.length} models` };
73
+ }
74
+ catch (e) {
75
+ return { ok: false, detail: e.message };
76
+ }
77
+ }
78
+ async function probeUsable(base, key, protocol, model) {
79
+ const url = protocol === 'anthropic' ? `${base}/v1/messages` : `${base}/chat/completions`;
80
+ const body = JSON.stringify({ model, max_tokens: 8, messages: [{ role: 'user', content: 'hi' }] });
81
+ try {
82
+ const { status, json, text } = await http(url, { method: 'POST', headers: authHeaders(key, protocol), body });
83
+ if (status !== 200)
84
+ return { ok: false, detail: errSnippet(status, json, text) };
85
+ return { ok: true, detail: `model=${model}` };
86
+ }
87
+ catch (e) {
88
+ return { ok: false, detail: e.message };
89
+ }
90
+ }
91
+ function extractReply(protocol, json) {
92
+ if (protocol === 'anthropic') {
93
+ const d = json;
94
+ return (d?.content ?? [])
95
+ .filter((b) => b?.type === 'text' && typeof b.text === 'string')
96
+ .map((b) => b.text)
97
+ .join(' ');
98
+ }
99
+ const d = json;
100
+ const m = d?.choices?.[0]?.message;
101
+ return m?.content || m?.reasoning_content || '';
102
+ }
103
+ async function probeVision(base, key, protocol, model) {
104
+ const url = protocol === 'anthropic' ? `${base}/v1/messages` : `${base}/chat/completions`;
105
+ const b64 = (0, test_image_1.makeVisionProbeBase64)();
106
+ const content = protocol === 'anthropic'
107
+ ? [
108
+ { type: 'text', text: test_image_1.VISION_PROBE_PROMPT },
109
+ { type: 'image', source: { type: 'base64', media_type: 'image/png', data: b64 } },
110
+ ]
111
+ : [
112
+ { type: 'text', text: test_image_1.VISION_PROBE_PROMPT },
113
+ { type: 'image_url', image_url: { url: `data:image/png;base64,${b64}` } },
114
+ ];
115
+ const body = JSON.stringify({ model, max_tokens: 300, messages: [{ role: 'user', content }] });
116
+ try {
117
+ const { status, json, text } = await http(url, { method: 'POST', headers: authHeaders(key, protocol), body });
118
+ if (status !== 200)
119
+ return { ok: false, detail: errSnippet(status, json, text) };
120
+ const reply = extractReply(protocol, json).replace(/\s+/g, ' ').trim();
121
+ if ((0, test_image_1.passesVisionProbe)(reply))
122
+ return { ok: true, detail: `read image: "${reply.slice(0, 60)}"` };
123
+ return { ok: false, detail: `wrong/blind: "${reply.slice(0, 60) || '(empty)'}"` };
124
+ }
125
+ catch (e) {
126
+ return { ok: false, detail: e.message };
127
+ }
128
+ }
129
+ function line(label, probe) {
130
+ if (!probe)
131
+ return ` ${picocolors_1.default.dim('vision'.padEnd(7))} ${picocolors_1.default.dim('–')} ${picocolors_1.default.dim('skipped (pass --vision)')}`;
132
+ const mark = probe.neutral ? picocolors_1.default.dim('•') : probe.ok ? picocolors_1.default.green('✓') : picocolors_1.default.red('✗');
133
+ const text = probe.neutral || probe.ok ? picocolors_1.default.dim(probe.detail) : picocolors_1.default.red(probe.detail);
134
+ return ` ${picocolors_1.default.dim(label.padEnd(7))} ${mark} ${text}`;
135
+ }
136
+ async function testOne(profile, wantVision) {
137
+ const protocol = profile.protocol || 'anthropic';
138
+ const key = (0, store_1.getProfileApiKey)(profile.name);
139
+ const head = ` ${picocolors_1.default.bold(profile.name)} ${picocolors_1.default.dim('·')} ${picocolors_1.default.dim(protocol)} ${picocolors_1.default.dim('·')} ${picocolors_1.default.cyan(profile.model)}`;
140
+ if (!key) {
141
+ console.log(head);
142
+ console.log(` ${picocolors_1.default.red('✗')} ${picocolors_1.default.red('no API key stored')}`);
143
+ return false;
144
+ }
145
+ const base = trimBase(profile.baseUrl);
146
+ const models = await probeModels(base, key, protocol);
147
+ const usable = await probeUsable(base, key, protocol, profile.model);
148
+ const vision = wantVision ? await probeVision(base, key, protocol, profile.model) : null;
149
+ console.log(head);
150
+ console.log(line('models', models));
151
+ console.log(line('usable', usable));
152
+ console.log(line('vision', vision));
153
+ // "Healthy" = can actually be used. Models-only success with an unusable
154
+ // account (balance 0) is still a failure worth surfacing in the exit code.
155
+ return usable.ok;
156
+ }
157
+ async function cmdProfileTest(args) {
158
+ const wantVision = args.includes('--vision');
159
+ const names = args.filter((a) => !a.startsWith('--'));
160
+ const targets = names.length
161
+ ? names.map((n) => (0, store_1.getProfile)(n)).filter((p) => Boolean(p))
162
+ : (0, store_1.listProfiles)();
163
+ if (names.length) {
164
+ const missing = names.filter((n) => !(0, store_1.getProfile)(n));
165
+ if (missing.length) {
166
+ console.error(`[!] Profile not found: ${missing.join(', ')}`);
167
+ process.exit(1);
168
+ }
169
+ }
170
+ if (targets.length === 0) {
171
+ console.log('[i] No profiles to test.');
172
+ return;
173
+ }
174
+ console.log(`Testing ${targets.length} profile(s)${wantVision ? ' + vision' : ''} ${picocolors_1.default.dim('(models = auth · usable = balance · vision = main model sees images)')}\n`);
175
+ let failures = 0;
176
+ for (const p of targets) {
177
+ const ok = await testOne(p, wantVision);
178
+ if (!ok)
179
+ failures++;
180
+ console.log();
181
+ }
182
+ if (failures > 0) {
183
+ console.log(picocolors_1.default.dim(`${failures}/${targets.length} profile(s) not usable.`));
184
+ process.exit(1);
185
+ }
186
+ console.log(picocolors_1.default.green(`All ${targets.length} profile(s) usable.`));
187
+ }
188
+ //# sourceMappingURL=profile-test.js.map