@hileeon/mcc 0.1.8 → 0.1.9

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 (86) hide show
  1. package/README.md +226 -127
  2. package/dist/accounts/store.d.ts +1 -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 +9 -0
  6. package/dist/commands/launch.d.ts.map +1 -0
  7. package/dist/commands/launch.js +158 -0
  8. package/dist/commands/launch.js.map +1 -0
  9. package/dist/commands/mcp.d.ts +9 -0
  10. package/dist/commands/mcp.d.ts.map +1 -0
  11. package/dist/commands/mcp.js +112 -0
  12. package/dist/commands/mcp.js.map +1 -0
  13. package/dist/commands/profile.d.ts +8 -0
  14. package/dist/commands/profile.d.ts.map +1 -0
  15. package/dist/commands/profile.js +125 -0
  16. package/dist/commands/profile.js.map +1 -0
  17. package/dist/core/model-router.d.ts.map +1 -1
  18. package/dist/core/model-router.js +5 -2
  19. package/dist/core/model-router.js.map +1 -1
  20. package/dist/{dashboard-server.d.ts → dashboard/server.d.ts} +1 -1
  21. package/dist/dashboard/server.d.ts.map +1 -0
  22. package/dist/{dashboard-server.js → dashboard/server.js} +169 -51
  23. package/dist/dashboard/server.js.map +1 -0
  24. package/dist/mcc.d.ts +4 -2
  25. package/dist/mcc.d.ts.map +1 -1
  26. package/dist/mcc.js +121 -408
  27. package/dist/mcc.js.map +1 -1
  28. package/dist/mcp/mcp-config.d.ts +17 -1
  29. package/dist/mcp/mcp-config.d.ts.map +1 -1
  30. package/dist/mcp/mcp-config.js +50 -17
  31. package/dist/mcp/mcp-config.js.map +1 -1
  32. package/dist/proxy/proxy-daemon.d.ts.map +1 -1
  33. package/dist/proxy/proxy-daemon.js +17 -2
  34. package/dist/proxy/proxy-daemon.js.map +1 -1
  35. package/dist/proxy/proxy-entry.js +5 -3
  36. package/dist/proxy/proxy-entry.js.map +1 -1
  37. package/dist/proxy/proxy-server.d.ts.map +1 -1
  38. package/dist/proxy/proxy-server.js +32 -6
  39. package/dist/proxy/proxy-server.js.map +1 -1
  40. package/dist/shared/config.d.ts +15 -0
  41. package/dist/shared/config.d.ts.map +1 -0
  42. package/dist/shared/config.js +79 -0
  43. package/dist/shared/config.js.map +1 -0
  44. package/dist/shared/logger.d.ts +23 -18
  45. package/dist/shared/logger.d.ts.map +1 -1
  46. package/dist/shared/logger.js +17 -178
  47. package/dist/shared/logger.js.map +1 -1
  48. package/dist/shared/provider-preset-catalog.d.ts +6 -2
  49. package/dist/shared/provider-preset-catalog.d.ts.map +1 -1
  50. package/dist/shared/provider-preset-catalog.js +47 -26
  51. package/dist/shared/provider-preset-catalog.js.map +1 -1
  52. package/dist/ui/assets/index-ClqmrjNk.js +40 -0
  53. package/dist/ui/assets/index-CwMwQ-Z4.css +1 -0
  54. package/dist/ui/index.html +21 -13
  55. package/dist/update.d.ts +31 -0
  56. package/dist/update.d.ts.map +1 -0
  57. package/dist/update.js +196 -0
  58. package/dist/update.js.map +1 -0
  59. package/lib/mcp/mcc-image-analysis-server.cjs +454 -454
  60. package/lib/mcp/mcc-websearch-server.cjs +339 -339
  61. package/lib/mcp-hooks/image-analysis-runtime.cjs +510 -510
  62. package/lib/mcp-hooks/image-analyzer-transformer.cjs +526 -526
  63. package/lib/mcp-hooks/websearch-transformer.cjs +1597 -1421
  64. package/lib/proxy/config/config-loader-facade.js +24 -24
  65. package/lib/proxy/glmt/delta-accumulator.js +362 -362
  66. package/lib/proxy/glmt/glmt-transformer.js +203 -203
  67. package/lib/proxy/glmt/index.js +40 -40
  68. package/lib/proxy/glmt/locale-enforcer.js +68 -68
  69. package/lib/proxy/glmt/pipeline/content-transformer.js +161 -161
  70. package/lib/proxy/glmt/pipeline/index.js +19 -19
  71. package/lib/proxy/glmt/pipeline/request-transformer.js +115 -115
  72. package/lib/proxy/glmt/pipeline/response-builder.js +204 -204
  73. package/lib/proxy/glmt/pipeline/stream-parser.js +233 -233
  74. package/lib/proxy/glmt/pipeline/tool-call-handler.js +77 -77
  75. package/lib/proxy/glmt/pipeline/types.js +5 -5
  76. package/lib/proxy/glmt/reasoning-enforcer.js +150 -150
  77. package/lib/proxy/glmt/sse-parser.js +101 -101
  78. package/lib/proxy/services/logging.js +13 -13
  79. package/lib/proxy/transformers/request-transformer.js +471 -471
  80. package/lib/proxy/transformers/sse-stream-transformer.js +198 -198
  81. package/lib/shared/logger.cjs +156 -138
  82. package/package.json +58 -41
  83. package/dist/dashboard-server.d.ts.map +0 -1
  84. package/dist/dashboard-server.js.map +0 -1
  85. package/dist/ui/assets/index-B16lhKZ6.js +0 -40
  86. package/dist/ui/assets/index-jEfiB6-h.css +0 -1
@@ -1,138 +1,156 @@
1
- /**
2
- * MCC Logger — 单文件,零依赖
3
- *
4
- * 设计原则:
5
- * - session 隔离:每次 mcc <profile> 生成独立 session,所有子进程写同一文件
6
- * - 确定性路径:MCC_LOG_DIR / MCC_LOG_SESSION_ID 两个 env 确定路径
7
- * - 最小 API:init(sessionId, logDir) + logger(component).error/info/debug(msg)
8
- */
9
-
10
- const fs = require('fs');
11
- const path = require('path');
12
- const os = require('os');
13
-
14
- const LEVELS = { error: 0, warn: 1, info: 2, debug: 3 };
15
-
16
- function env(key, fallback) {
17
- return process.env[key] ?? fallback;
18
- }
19
-
20
- function levelValue(level) {
21
- return LEVELS[level?.toLowerCase()] ?? LEVELS.info;
22
- }
23
-
24
- let _sessionId = '';
25
- let _logDir = '';
26
- let _currentFile = '';
27
- let _currentSize = 0;
28
- let _maxSize = 5 * 1024 * 1024;
29
- let _maxFiles = 3;
30
- let _minLevel = LEVELS.info;
31
-
32
- function getLogDir() {
33
- if (_logDir) return _logDir;
34
- const logDirEnv = env('MCC_LOG_DIR', '');
35
- if (logDirEnv) return logDirEnv;
36
- const mccHome = env('MCC_HOME', path.join(os.homedir(), '.mcc'));
37
- const profile = env('MCC_CURRENT_PROFILE', 'default');
38
- return path.join(mccHome, 'logs', profile, _sessionId || 'nosession');
39
- }
40
-
41
- function getLogPath() {
42
- return path.join(getLogDir(), 'mcc.log');
43
- }
44
-
45
- function rotate() {
46
- const logPath = getLogPath();
47
- if (!fs.existsSync(logPath)) return;
48
- try { fs.unlinkSync(`${logPath}.${_maxFiles}`); } catch {}
49
- for (let i = _maxFiles - 1; i >= 1; i--) {
50
- const from = `${logPath}.${i}`;
51
- const to = `${logPath}.${i + 1}`;
52
- try { if (fs.existsSync(from)) fs.renameSync(from, to); } catch {}
53
- }
54
- try { fs.renameSync(logPath, `${logPath}.1`); } catch {}
55
- _currentSize = 0;
56
- _currentFile = '';
57
- }
58
-
59
- function ensureDir() {
60
- const dir = getLogDir();
61
- if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true, mode: 0o755 });
62
- return dir;
63
- }
64
-
65
- function writeFile(line) {
66
- if (!_sessionId) return;
67
- ensureDir();
68
- const logPath = getLogPath();
69
- const lineBytes = Buffer.byteLength(line, 'utf8') + 1;
70
- if (_currentFile !== logPath || _currentSize + lineBytes > _maxSize) {
71
- rotate();
72
- }
73
- try {
74
- fs.appendFileSync(logPath, line + '\n', { mode: 0o644 });
75
- _currentFile = logPath;
76
- _currentSize += lineBytes;
77
- } catch (err) {
78
- process.stderr.write(`[logger] write failed: ${err.message}\n`);
79
- }
80
- }
81
-
82
- function timestamp() {
83
- const now = new Date();
84
- const p = (n, l = 2) => String(n).padStart(l, '0');
85
- return `${now.getFullYear()}-${p(now.getMonth() + 1)}-${p(now.getDate())} ` +
86
- `${p(now.getHours())}:${p(now.getMinutes())}:${p(now.getSeconds())}.${p(now.getMilliseconds(), 3)}`;
87
- }
88
-
89
- function format(level, message, component) {
90
- const sid = _sessionId ? `[${_sessionId}]` : '';
91
- const comp = component ? `[${component}]` : '';
92
- return `${timestamp()} ${(level || 'info').toUpperCase().padEnd(5)} ${sid}${comp} ${message}`;
93
- }
94
-
95
- function write(level, message, component) {
96
- if (levelValue(level) > _minLevel) return;
97
- const line = format(level, message, component);
98
- process.stderr.write(line + '\n');
99
- writeFile(line);
100
- }
101
-
102
- // --- 导出---
103
-
104
- function init(sessionId, logDir) {
105
- _sessionId = sessionId || '';
106
- _logDir = logDir || '';
107
- _currentFile = '';
108
- _currentSize = 0;
109
- _minLevel = levelValue(env('MCC_LOG_LEVEL', 'info'));
110
- _maxSize = parseInt(env('MCC_LOG_MAX_SIZE', ''), 10) || 5 * 1024 * 1024;
111
- _maxFiles = parseInt(env('MCC_LOG_MAX_FILES', ''), 10) || 3;
112
- const dir = ensureDir();
113
- try { fs.writeFileSync(path.join(dir, '.session'), `${sessionId}\n${Date.now()}\n`, { mode: 0o644 }); } catch {}
114
- return dir;
115
- }
116
-
117
- function initFromEnv() {
118
- const sid = env('MCC_LOG_SESSION_ID', '');
119
- const dir = env('MCC_LOG_DIR', '');
120
- if (sid) init(sid, dir);
121
- }
122
-
123
- // 统一 API:log.info(component, message) — 两参数风格
124
- const log = {
125
- error: (c, m) => write('error', m, c),
126
- warn: (c, m) => write('warn', m, c),
127
- info: (c, m) => write('info', m, c),
128
- debug: (c, m) => write('debug', m, c),
129
- init,
130
- initFromEnv,
131
- getSessionId: () => _sessionId,
132
- getLogDir,
133
- };
134
-
135
- // --- 自动从 env 初始化 ---
136
- initFromEnv();
137
-
138
- module.exports = log;
1
+ /**
2
+ * MCC Logger — 单文件,零依赖
3
+ *
4
+ * 设计原则:
5
+ * - session 隔离:每次 mcc <profile> 生成独立 session,所有子进程写同一文件
6
+ * - 确定性路径:MCC_LOG_DIR / MCC_LOG_SESSION_ID 两个 env 确定路径
7
+ * - 最小 API:init(sessionId, logDir) + logger(component).error/info/debug(msg)
8
+ */
9
+
10
+ const fs = require('fs');
11
+ const path = require('path');
12
+ const os = require('os');
13
+
14
+ const LEVELS = { error: 0, warn: 1, info: 2, debug: 3 };
15
+
16
+ function env(key, fallback) {
17
+ return process.env[key] ?? fallback;
18
+ }
19
+
20
+ function levelValue(level) {
21
+ return LEVELS[level?.toLowerCase()] ?? LEVELS.info;
22
+ }
23
+
24
+ let _sessionId = '';
25
+ let _logDir = '';
26
+ let _currentFile = '';
27
+ let _currentSize = 0;
28
+ let _maxSize = 5 * 1024 * 1024;
29
+ let _maxFiles = 3;
30
+ let _minLevel = LEVELS.info;
31
+
32
+ function getLogDir() {
33
+ if (_logDir) return _logDir;
34
+ const logDirEnv = env('MCC_LOG_DIR', '');
35
+ if (logDirEnv) return logDirEnv;
36
+ const mccHome = env('MCC_HOME', path.join(os.homedir(), '.mcc'));
37
+ const profile = env('MCC_CURRENT_PROFILE', 'default');
38
+ return path.join(mccHome, 'logs', profile, _sessionId || 'nosession');
39
+ }
40
+
41
+ function getLogPath() {
42
+ return path.join(getLogDir(), 'mcc.log');
43
+ }
44
+
45
+ function rotate() {
46
+ const logPath = getLogPath();
47
+ if (!fs.existsSync(logPath)) return;
48
+ try { fs.unlinkSync(`${logPath}.${_maxFiles}`); } catch {}
49
+ for (let i = _maxFiles - 1; i >= 1; i--) {
50
+ const from = `${logPath}.${i}`;
51
+ const to = `${logPath}.${i + 1}`;
52
+ try { if (fs.existsSync(from)) fs.renameSync(from, to); } catch {}
53
+ }
54
+ try { fs.renameSync(logPath, `${logPath}.1`); } catch {}
55
+ _currentSize = 0;
56
+ _currentFile = '';
57
+ }
58
+
59
+ function ensureDir() {
60
+ const dir = getLogDir();
61
+ if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true, mode: 0o755 });
62
+ return dir;
63
+ }
64
+
65
+ function writeFile(line) {
66
+ if (!_sessionId) return;
67
+ ensureDir();
68
+ const logPath = getLogPath();
69
+ const lineBytes = Buffer.byteLength(line, 'utf8') + 1;
70
+ if (_currentFile !== logPath || _currentSize + lineBytes > _maxSize) {
71
+ rotate();
72
+ }
73
+ try {
74
+ fs.appendFileSync(logPath, line + '\n', { mode: 0o644 });
75
+ _currentFile = logPath;
76
+ _currentSize += lineBytes;
77
+ } catch (err) {
78
+ process.stderr.write(`[logger] write failed: ${err.message}\n`);
79
+ }
80
+ }
81
+
82
+ function timestamp() {
83
+ const now = new Date();
84
+ const p = (n, l = 2) => String(n).padStart(l, '0');
85
+ return `${now.getFullYear()}-${p(now.getMonth() + 1)}-${p(now.getDate())} ` +
86
+ `${p(now.getHours())}:${p(now.getMinutes())}:${p(now.getSeconds())}.${p(now.getMilliseconds(), 3)}`;
87
+ }
88
+
89
+ function format(level, message, component) {
90
+ const sid = _sessionId ? `[${_sessionId}]` : '';
91
+ const comp = component ? `[${component}]` : '';
92
+ return `${timestamp()} ${(level || 'info').toUpperCase().padEnd(5)} ${sid}${comp} ${message}`;
93
+ }
94
+
95
+ function write(level, message, component) {
96
+ if (levelValue(level) > _minLevel) return;
97
+ const line = format(level, message, component);
98
+ process.stderr.write(line + '\n');
99
+ writeFile(line);
100
+ }
101
+
102
+ // --- 导出---
103
+
104
+ function init(sessionId, logDir) {
105
+ _sessionId = sessionId || '';
106
+ _logDir = logDir || '';
107
+ _currentFile = '';
108
+ _currentSize = 0;
109
+ _minLevel = levelValue(env('MCC_LOG_LEVEL', 'info'));
110
+ _maxSize = parseInt(env('MCC_LOG_MAX_SIZE', ''), 10) || 5 * 1024 * 1024;
111
+ _maxFiles = parseInt(env('MCC_LOG_MAX_FILES', ''), 10) || 3;
112
+ const dir = ensureDir();
113
+ try { fs.writeFileSync(path.join(dir, '.session'), `${sessionId}\n${Date.now()}\n`, { mode: 0o644 }); } catch {}
114
+ return dir;
115
+ }
116
+
117
+ function initFromEnv() {
118
+ const sid = env('MCC_LOG_SESSION_ID', '');
119
+ const dir = env('MCC_LOG_DIR', '');
120
+ if (sid) init(sid, dir);
121
+ }
122
+
123
+ function isDebugEnabled() {
124
+ return _minLevel >= LEVELS.debug;
125
+ }
126
+
127
+ function makeSessionId() {
128
+ const now = new Date();
129
+ const p = (n, l = 2) => String(n).padStart(l, '0');
130
+ return `${now.getFullYear()}-${p(now.getMonth() + 1)}-${p(now.getDate())}_` +
131
+ `${p(now.getHours())}-${p(now.getMinutes())}-${p(now.getSeconds())}`;
132
+ }
133
+
134
+ // 统一 API:log.info(component, message) — 两参数风格
135
+ const log = {
136
+ error: (c, m) => write('error', m, c),
137
+ warn: (c, m) => write('warn', m, c),
138
+ info: (c, m) => write('info', m, c),
139
+ debug: (c, m) => write('debug', m, c),
140
+ init,
141
+ initFromEnv,
142
+ getSessionId: () => _sessionId,
143
+ getLogDir,
144
+ };
145
+
146
+ // --- 自动从 env 初始化 ---
147
+ initFromEnv();
148
+
149
+ // log 是默认导出(MCP runtime hooks 直接 require 拿这个对象)。
150
+ // 顶层属性额外暴露 init / initFromEnv / isDebugEnabled / makeSessionId,
151
+ // 让 src/shared/logger.ts 的 named import 可以拿到。
152
+ module.exports = log;
153
+ module.exports.init = init;
154
+ module.exports.initFromEnv = initFromEnv;
155
+ module.exports.isDebugEnabled = isDebugEnabled;
156
+ module.exports.makeSessionId = makeSessionId;
package/package.json CHANGED
@@ -1,41 +1,58 @@
1
- {
2
- "name": "@hileeon/mcc",
3
- "version": "0.1.8",
4
- "description": "My Cloud Code - Multi-provider account and model switching for Claude Code",
5
- "license": "MIT",
6
- "author": "Zhang Chicheng",
7
- "repository": "https://github.com/leeon917/mcc",
8
- "main": "dist/mcc.js",
9
- "types": "dist/mcc.d.ts",
10
- "bin": {
11
- "mcc": "dist/mcc.js"
12
- },
13
- "engines": {
14
- "node": ">=18.0.0"
15
- },
16
- "files": [
17
- "dist",
18
- "lib"
19
- ],
20
- "scripts": {
21
- "build": "tsc && node -e \"const fs=require('fs');const p='dist/mcc.js';const c=fs.readFileSync(p,'utf8');if(!c.startsWith('#!')){fs.writeFileSync(p,'#!/usr/bin/env node\\n'+c);}\"",
22
- "build:watch": "tsc --watch",
23
- "typecheck": "tsc --noEmit",
24
- "dev": "node dist/mcc.js",
25
- "build:ui": "cd ui && npm install && npm run build",
26
- "build:all": "npm run build && npm run build:ui",
27
- "dashboard": "npm run build && npm run build:ui && node dist/dashboard-server.js",
28
- "prepublishOnly": "npm run build:all"
29
- },
30
- "dependencies": {
31
- "cors": "^2.8.5",
32
- "express": "^4.18.2",
33
- "picocolors": "^1.1.1"
34
- },
35
- "devDependencies": {
36
- "@types/cors": "^2.8.17",
37
- "@types/express": "^4.17.21",
38
- "@types/node": "^20.0.0",
39
- "typescript": "^5.3.0"
40
- }
41
- }
1
+ {
2
+ "name": "@hileeon/mcc",
3
+ "version": "0.1.9",
4
+ "description": "My Claude Code - Multi-provider account and model switching for Claude Code",
5
+ "license": "MIT",
6
+ "author": "Leeon",
7
+ "repository": "https://github.com/leeon917/mcc",
8
+ "main": "dist/mcc.js",
9
+ "types": "dist/mcc.d.ts",
10
+ "bin": {
11
+ "mcc": "dist/mcc.js"
12
+ },
13
+ "engines": {
14
+ "node": ">=18.0.0"
15
+ },
16
+ "files": [
17
+ "dist",
18
+ "lib"
19
+ ],
20
+ "publishConfig": {
21
+ "access": "public",
22
+ "provenance": true
23
+ },
24
+ "scripts": {
25
+ "build": "tsc && node -e \"const fs=require('fs');const p='dist/mcc.js';const c=fs.readFileSync(p,'utf8');if(!c.startsWith('#!')){fs.writeFileSync(p,'#!/usr/bin/env node\\n'+c);}\"",
26
+ "build:watch": "tsc --watch",
27
+ "typecheck": "tsc --noEmit",
28
+ "build:ui": "pnpm -C ui install && pnpm -C ui build",
29
+ "build:all": "pnpm build && pnpm build:ui",
30
+ "prepublishOnly": "pnpm build:all",
31
+ "postversion": "git push --follow-tags",
32
+ "mcc": "pnpm build && tsx src/mcc.ts",
33
+ "dash": "tsx watch src/dashboard/server.ts",
34
+ "ui": "pnpm -C ui dev",
35
+ "dev": "concurrently -k -n be,fe -c blue,magenta \"pnpm dash\" \"pnpm ui\"",
36
+ "dashboard": "pnpm build && pnpm build:ui && node dist/dashboard/server.js"
37
+ },
38
+ "dependencies": {
39
+ "cors": "^2.8.5",
40
+ "express": "^4.18.2",
41
+ "picocolors": "^1.1.1",
42
+ "update-notifier": "^5.1.0"
43
+ },
44
+ "devDependencies": {
45
+ "@types/cors": "^2.8.17",
46
+ "@types/express": "^4.17.21",
47
+ "@types/node": "^20.0.0",
48
+ "@types/update-notifier": "^6.0.8",
49
+ "concurrently": "^10.0.3",
50
+ "tsx": "^4.22.4",
51
+ "typescript": "^5.3.0"
52
+ },
53
+ "pnpm": {
54
+ "onlyBuiltDependencies": [
55
+ "esbuild"
56
+ ]
57
+ }
58
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"dashboard-server.d.ts","sourceRoot":"","sources":["../src/dashboard-server.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dashboard-server.js","sourceRoot":"","sources":["../src/dashboard-server.ts"],"names":[],"mappings":"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"}