@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.
- package/README.md +226 -127
- package/dist/accounts/store.d.ts +1 -0
- package/dist/accounts/store.d.ts.map +1 -1
- package/dist/accounts/store.js.map +1 -1
- package/dist/commands/launch.d.ts +9 -0
- package/dist/commands/launch.d.ts.map +1 -0
- package/dist/commands/launch.js +158 -0
- package/dist/commands/launch.js.map +1 -0
- package/dist/commands/mcp.d.ts +9 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +112 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/profile.d.ts +8 -0
- package/dist/commands/profile.d.ts.map +1 -0
- package/dist/commands/profile.js +125 -0
- package/dist/commands/profile.js.map +1 -0
- package/dist/core/model-router.d.ts.map +1 -1
- package/dist/core/model-router.js +5 -2
- package/dist/core/model-router.js.map +1 -1
- package/dist/{dashboard-server.d.ts → dashboard/server.d.ts} +1 -1
- package/dist/dashboard/server.d.ts.map +1 -0
- package/dist/{dashboard-server.js → dashboard/server.js} +169 -51
- package/dist/dashboard/server.js.map +1 -0
- package/dist/mcc.d.ts +4 -2
- package/dist/mcc.d.ts.map +1 -1
- package/dist/mcc.js +121 -408
- package/dist/mcc.js.map +1 -1
- package/dist/mcp/mcp-config.d.ts +17 -1
- package/dist/mcp/mcp-config.d.ts.map +1 -1
- package/dist/mcp/mcp-config.js +50 -17
- package/dist/mcp/mcp-config.js.map +1 -1
- package/dist/proxy/proxy-daemon.d.ts.map +1 -1
- package/dist/proxy/proxy-daemon.js +17 -2
- package/dist/proxy/proxy-daemon.js.map +1 -1
- package/dist/proxy/proxy-entry.js +5 -3
- package/dist/proxy/proxy-entry.js.map +1 -1
- package/dist/proxy/proxy-server.d.ts.map +1 -1
- package/dist/proxy/proxy-server.js +32 -6
- package/dist/proxy/proxy-server.js.map +1 -1
- package/dist/shared/config.d.ts +15 -0
- package/dist/shared/config.d.ts.map +1 -0
- package/dist/shared/config.js +79 -0
- package/dist/shared/config.js.map +1 -0
- package/dist/shared/logger.d.ts +23 -18
- package/dist/shared/logger.d.ts.map +1 -1
- package/dist/shared/logger.js +17 -178
- package/dist/shared/logger.js.map +1 -1
- package/dist/shared/provider-preset-catalog.d.ts +6 -2
- package/dist/shared/provider-preset-catalog.d.ts.map +1 -1
- package/dist/shared/provider-preset-catalog.js +47 -26
- package/dist/shared/provider-preset-catalog.js.map +1 -1
- package/dist/ui/assets/index-ClqmrjNk.js +40 -0
- package/dist/ui/assets/index-CwMwQ-Z4.css +1 -0
- package/dist/ui/index.html +21 -13
- package/dist/update.d.ts +31 -0
- package/dist/update.d.ts.map +1 -0
- package/dist/update.js +196 -0
- package/dist/update.js.map +1 -0
- package/lib/mcp/mcc-image-analysis-server.cjs +454 -454
- package/lib/mcp/mcc-websearch-server.cjs +339 -339
- package/lib/mcp-hooks/image-analysis-runtime.cjs +510 -510
- package/lib/mcp-hooks/image-analyzer-transformer.cjs +526 -526
- package/lib/mcp-hooks/websearch-transformer.cjs +1597 -1421
- package/lib/proxy/config/config-loader-facade.js +24 -24
- package/lib/proxy/glmt/delta-accumulator.js +362 -362
- package/lib/proxy/glmt/glmt-transformer.js +203 -203
- package/lib/proxy/glmt/index.js +40 -40
- package/lib/proxy/glmt/locale-enforcer.js +68 -68
- package/lib/proxy/glmt/pipeline/content-transformer.js +161 -161
- package/lib/proxy/glmt/pipeline/index.js +19 -19
- package/lib/proxy/glmt/pipeline/request-transformer.js +115 -115
- package/lib/proxy/glmt/pipeline/response-builder.js +204 -204
- package/lib/proxy/glmt/pipeline/stream-parser.js +233 -233
- package/lib/proxy/glmt/pipeline/tool-call-handler.js +77 -77
- package/lib/proxy/glmt/pipeline/types.js +5 -5
- package/lib/proxy/glmt/reasoning-enforcer.js +150 -150
- package/lib/proxy/glmt/sse-parser.js +101 -101
- package/lib/proxy/services/logging.js +13 -13
- package/lib/proxy/transformers/request-transformer.js +471 -471
- package/lib/proxy/transformers/sse-stream-transformer.js +198 -198
- package/lib/shared/logger.cjs +156 -138
- package/package.json +58 -41
- package/dist/dashboard-server.d.ts.map +0 -1
- package/dist/dashboard-server.js.map +0 -1
- package/dist/ui/assets/index-B16lhKZ6.js +0 -40
- package/dist/ui/assets/index-jEfiB6-h.css +0 -1
package/dist/shared/logger.d.ts
CHANGED
|
@@ -1,23 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* MCC Logger (TypeScript)
|
|
2
|
+
* MCC Logger (TypeScript thin shell)
|
|
3
3
|
*
|
|
4
|
-
* lib/shared/logger.cjs
|
|
5
|
-
*
|
|
4
|
+
* Single source of truth lives in lib/shared/logger.cjs — it must stay CJS
|
|
5
|
+
* because MCP runtime hooks (also CJS) require it directly from
|
|
6
|
+
* ~/.mcc/shared/logger.cjs after installer copies it over.
|
|
7
|
+
*
|
|
8
|
+
* This file exists only to give src/ TypeScript code typed access to that impl.
|
|
9
|
+
* Runtime resolution: dist/shared/logger.js → ../../lib/shared/logger.cjs
|
|
10
|
+
* (the same relative path works both in dev and after npm publish, since
|
|
11
|
+
* package.json `files` ships both dist/ and lib/).
|
|
6
12
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
debug: (c: string, m: string) => void;
|
|
15
|
-
init: typeof init;
|
|
16
|
-
initFromEnv: typeof initFromEnv;
|
|
13
|
+
export interface Logger {
|
|
14
|
+
error: (component: string, message: string) => void;
|
|
15
|
+
warn: (component: string, message: string) => void;
|
|
16
|
+
info: (component: string, message: string) => void;
|
|
17
|
+
debug: (component: string, message: string) => void;
|
|
18
|
+
init: (sessionId: string, logDir?: string) => string;
|
|
19
|
+
initFromEnv: () => void;
|
|
17
20
|
getSessionId: () => string;
|
|
18
|
-
getLogDir:
|
|
19
|
-
}
|
|
20
|
-
export
|
|
21
|
-
export declare
|
|
22
|
-
export declare
|
|
21
|
+
getLogDir: () => string;
|
|
22
|
+
}
|
|
23
|
+
export declare const log: Logger;
|
|
24
|
+
export declare const init: (sessionId: string, logDir?: string) => string;
|
|
25
|
+
export declare const initFromEnv: () => void;
|
|
26
|
+
export declare const isDebugEnabled: () => boolean;
|
|
27
|
+
export declare const makeSessionId: () => string;
|
|
23
28
|
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/shared/logger.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/shared/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,IAAI,EAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,IAAI,EAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACrD,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,GAAG,EAAE,MAAa,CAAC;AAChC,eAAO,MAAM,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,MAAkB,CAAC;AAC9E,eAAO,MAAM,WAAW,EAAE,MAAM,IAAuB,CAAC;AACxD,eAAO,MAAM,cAAc,EAAE,MAAM,OAA6B,CAAC;AACjE,eAAO,MAAM,aAAa,EAAE,MAAM,MAA2B,CAAC"}
|
package/dist/shared/logger.js
CHANGED
|
@@ -1,184 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* MCC Logger (TypeScript)
|
|
3
|
+
* MCC Logger (TypeScript thin shell)
|
|
4
4
|
*
|
|
5
|
-
* lib/shared/logger.cjs
|
|
6
|
-
*
|
|
5
|
+
* Single source of truth lives in lib/shared/logger.cjs — it must stay CJS
|
|
6
|
+
* because MCP runtime hooks (also CJS) require it directly from
|
|
7
|
+
* ~/.mcc/shared/logger.cjs after installer copies it over.
|
|
8
|
+
*
|
|
9
|
+
* This file exists only to give src/ TypeScript code typed access to that impl.
|
|
10
|
+
* Runtime resolution: dist/shared/logger.js → ../../lib/shared/logger.cjs
|
|
11
|
+
* (the same relative path works both in dev and after npm publish, since
|
|
12
|
+
* package.json `files` ships both dist/ and lib/).
|
|
7
13
|
*/
|
|
8
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
-
if (k2 === undefined) k2 = k;
|
|
10
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
-
}
|
|
14
|
-
Object.defineProperty(o, k2, desc);
|
|
15
|
-
}) : (function(o, m, k, k2) {
|
|
16
|
-
if (k2 === undefined) k2 = k;
|
|
17
|
-
o[k2] = m[k];
|
|
18
|
-
}));
|
|
19
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
-
}) : function(o, v) {
|
|
22
|
-
o["default"] = v;
|
|
23
|
-
});
|
|
24
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
-
var ownKeys = function(o) {
|
|
26
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
-
var ar = [];
|
|
28
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
-
return ar;
|
|
30
|
-
};
|
|
31
|
-
return ownKeys(o);
|
|
32
|
-
};
|
|
33
|
-
return function (mod) {
|
|
34
|
-
if (mod && mod.__esModule) return mod;
|
|
35
|
-
var result = {};
|
|
36
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
-
__setModuleDefault(result, mod);
|
|
38
|
-
return result;
|
|
39
|
-
};
|
|
40
|
-
})();
|
|
41
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
exports.log = void 0;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
exports.
|
|
46
|
-
exports.
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const LEVELS = { error: 0, warn: 1, info: 2, debug: 3 };
|
|
51
|
-
function env(key, fallback) {
|
|
52
|
-
return process.env[key] ?? fallback;
|
|
53
|
-
}
|
|
54
|
-
function levelValue(level) {
|
|
55
|
-
return LEVELS[level?.toLowerCase()] ?? LEVELS.info;
|
|
56
|
-
}
|
|
57
|
-
let _sessionId = '';
|
|
58
|
-
let _logDir = '';
|
|
59
|
-
let _currentFile = '';
|
|
60
|
-
let _currentSize = 0;
|
|
61
|
-
let _maxSize = 5 * 1024 * 1024;
|
|
62
|
-
let _maxFiles = 3;
|
|
63
|
-
let _minLevel = LEVELS.info;
|
|
64
|
-
function getLogDir() {
|
|
65
|
-
if (_logDir)
|
|
66
|
-
return _logDir;
|
|
67
|
-
const logDirEnv = env('MCC_LOG_DIR', '');
|
|
68
|
-
if (logDirEnv)
|
|
69
|
-
return logDirEnv;
|
|
70
|
-
const mccHome = env('MCC_HOME', path.join(os.homedir(), '.mcc'));
|
|
71
|
-
const profile = env('MCC_CURRENT_PROFILE', 'default');
|
|
72
|
-
return path.join(mccHome, 'logs', profile, _sessionId || 'nosession');
|
|
73
|
-
}
|
|
74
|
-
function getLogPath() {
|
|
75
|
-
return path.join(getLogDir(), 'mcc.log');
|
|
76
|
-
}
|
|
77
|
-
function rotate() {
|
|
78
|
-
const logPath = getLogPath();
|
|
79
|
-
if (!fs.existsSync(logPath))
|
|
80
|
-
return;
|
|
81
|
-
try {
|
|
82
|
-
fs.unlinkSync(`${logPath}.${_maxFiles}`);
|
|
83
|
-
}
|
|
84
|
-
catch { }
|
|
85
|
-
for (let i = _maxFiles - 1; i >= 1; i--) {
|
|
86
|
-
const from = `${logPath}.${i}`;
|
|
87
|
-
const to = `${logPath}.${i + 1}`;
|
|
88
|
-
try {
|
|
89
|
-
if (fs.existsSync(from))
|
|
90
|
-
fs.renameSync(from, to);
|
|
91
|
-
}
|
|
92
|
-
catch { }
|
|
93
|
-
}
|
|
94
|
-
try {
|
|
95
|
-
fs.renameSync(logPath, `${logPath}.1`);
|
|
96
|
-
}
|
|
97
|
-
catch { }
|
|
98
|
-
_currentSize = 0;
|
|
99
|
-
_currentFile = '';
|
|
100
|
-
}
|
|
101
|
-
function ensureDir() {
|
|
102
|
-
const dir = getLogDir();
|
|
103
|
-
if (!fs.existsSync(dir))
|
|
104
|
-
fs.mkdirSync(dir, { recursive: true, mode: 0o755 });
|
|
105
|
-
return dir;
|
|
106
|
-
}
|
|
107
|
-
function writeFile(line) {
|
|
108
|
-
if (!_sessionId)
|
|
109
|
-
return;
|
|
110
|
-
ensureDir();
|
|
111
|
-
const logPath = getLogPath();
|
|
112
|
-
const lineBytes = Buffer.byteLength(line, 'utf8') + 1;
|
|
113
|
-
if (_currentFile !== logPath || _currentSize + lineBytes > _maxSize) {
|
|
114
|
-
rotate();
|
|
115
|
-
}
|
|
116
|
-
try {
|
|
117
|
-
fs.appendFileSync(logPath, line + '\n', { mode: 0o644 });
|
|
118
|
-
_currentFile = logPath;
|
|
119
|
-
_currentSize += lineBytes;
|
|
120
|
-
}
|
|
121
|
-
catch (err) {
|
|
122
|
-
process.stderr.write(`[logger] write failed: ${err.message}\n`);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
function timestamp() {
|
|
126
|
-
const now = new Date();
|
|
127
|
-
const p = (n, l = 2) => String(n).padStart(l, '0');
|
|
128
|
-
return `${now.getFullYear()}-${p(now.getMonth() + 1)}-${p(now.getDate())} ` +
|
|
129
|
-
`${p(now.getHours())}:${p(now.getMinutes())}:${p(now.getSeconds())}.${p(now.getMilliseconds(), 3)}`;
|
|
130
|
-
}
|
|
131
|
-
function format(level, message, component) {
|
|
132
|
-
const sid = _sessionId ? `[${_sessionId}]` : '';
|
|
133
|
-
const comp = component ? `[${component}]` : '';
|
|
134
|
-
return `${timestamp()} ${(level || 'info').toUpperCase().padEnd(5)} ${sid}${comp} ${message}`;
|
|
135
|
-
}
|
|
136
|
-
function write(level, component, message) {
|
|
137
|
-
if (levelValue(level) > _minLevel)
|
|
138
|
-
return;
|
|
139
|
-
const line = format(level, message, component);
|
|
140
|
-
process.stderr.write(line + '\n');
|
|
141
|
-
writeFile(line);
|
|
142
|
-
}
|
|
143
|
-
function init(sessionId, logDir) {
|
|
144
|
-
_sessionId = sessionId;
|
|
145
|
-
_logDir = logDir || '';
|
|
146
|
-
_currentFile = '';
|
|
147
|
-
_currentSize = 0;
|
|
148
|
-
_minLevel = levelValue(env('MCC_LOG_LEVEL', 'info'));
|
|
149
|
-
_maxSize = parseInt(env('MCC_LOG_MAX_SIZE', ''), 10) || 5 * 1024 * 1024;
|
|
150
|
-
_maxFiles = parseInt(env('MCC_LOG_MAX_FILES', ''), 10) || 3;
|
|
151
|
-
const dir = ensureDir();
|
|
152
|
-
try {
|
|
153
|
-
fs.writeFileSync(path.join(dir, '.session'), `${sessionId}\n${Date.now()}\n`, { mode: 0o644 });
|
|
154
|
-
}
|
|
155
|
-
catch { }
|
|
156
|
-
return dir;
|
|
157
|
-
}
|
|
158
|
-
function initFromEnv() {
|
|
159
|
-
const sid = env('MCC_LOG_SESSION_ID', '');
|
|
160
|
-
const dir = env('MCC_LOG_DIR', '');
|
|
161
|
-
if (sid)
|
|
162
|
-
init(sid, dir);
|
|
163
|
-
}
|
|
164
|
-
// --- 统一 API:log.info(component, message) ---
|
|
165
|
-
const log = {
|
|
166
|
-
error: (c, m) => write('error', m, c),
|
|
167
|
-
warn: (c, m) => write('warn', m, c),
|
|
168
|
-
info: (c, m) => write('info', m, c),
|
|
169
|
-
debug: (c, m) => write('debug', m, c),
|
|
170
|
-
init,
|
|
171
|
-
initFromEnv,
|
|
172
|
-
getSessionId: () => _sessionId,
|
|
173
|
-
getLogDir,
|
|
174
|
-
};
|
|
175
|
-
exports.log = log;
|
|
176
|
-
function isDebugEnabled() {
|
|
177
|
-
return _minLevel >= LEVELS.debug;
|
|
178
|
-
}
|
|
179
|
-
function makeSessionId() {
|
|
180
|
-
const now = new Date();
|
|
181
|
-
const p = (n, l = 2) => String(n).padStart(l, '0');
|
|
182
|
-
return `${now.getFullYear()}-${p(now.getMonth() + 1)}-${p(now.getDate())}_${p(now.getHours())}-${p(now.getMinutes())}-${p(now.getSeconds())}`;
|
|
183
|
-
}
|
|
15
|
+
exports.makeSessionId = exports.isDebugEnabled = exports.initFromEnv = exports.init = exports.log = void 0;
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
|
|
17
|
+
const impl = require('../../lib/shared/logger.cjs');
|
|
18
|
+
exports.log = impl;
|
|
19
|
+
exports.init = impl.init;
|
|
20
|
+
exports.initFromEnv = impl.initFromEnv;
|
|
21
|
+
exports.isDebugEnabled = impl.isDebugEnabled;
|
|
22
|
+
exports.makeSessionId = impl.makeSessionId;
|
|
184
23
|
//# sourceMappingURL=logger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/shared/logger.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/shared/logger.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAEH,qGAAqG;AACrG,MAAM,IAAI,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;AAavC,QAAA,GAAG,GAAW,IAAI,CAAC;AACnB,QAAA,IAAI,GAAmD,IAAI,CAAC,IAAI,CAAC;AACjE,QAAA,WAAW,GAAe,IAAI,CAAC,WAAW,CAAC;AAC3C,QAAA,cAAc,GAAkB,IAAI,CAAC,cAAc,CAAC;AACpD,QAAA,aAAa,GAAiB,IAAI,CAAC,aAAa,CAAC"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export type PresetCategory = 'recommended' | 'alternative';
|
|
8
8
|
export type ProviderPresetTarget = 'claude' | 'droid';
|
|
9
|
-
export declare const PROVIDER_PRESET_IDS: readonly ["openrouter", "alibaba-coding-plan", "huggingface", "ollama", "llamacpp", "anthropic", "glm", "km", "foundry", "mm", "deepseek", "qwen", "ollama-cloud", "novita", "bigmodel"];
|
|
9
|
+
export declare const PROVIDER_PRESET_IDS: readonly ["openrouter", "alibaba-coding-plan", "huggingface", "ollama", "llamacpp", "anthropic", "glm", "km", "foundry", "mm", "deepseek", "qwen", "xiaomi-mimo", "ollama-cloud", "novita", "bigmodel"];
|
|
10
10
|
export type ProviderPresetId = (typeof PROVIDER_PRESET_IDS)[number];
|
|
11
11
|
export interface ProviderPresetDefinition {
|
|
12
12
|
id: ProviderPresetId;
|
|
@@ -26,10 +26,14 @@ export interface ProviderPresetDefinition {
|
|
|
26
26
|
alwaysThinkingEnabled?: boolean;
|
|
27
27
|
/** Override default /v1/chat/completions proxy path (e.g. '/chat/completions' for BigModel) */
|
|
28
28
|
proxyChatCompletionsPath?: string;
|
|
29
|
+
/** Tiered model defaults — let Claude Code's /model picker route Opus/Sonnet/Haiku
|
|
30
|
+
* to provider-specific models. Empty fields fall back to `defaultModel`. */
|
|
31
|
+
opusModel?: string;
|
|
32
|
+
sonnetModel?: string;
|
|
33
|
+
haikuModel?: string;
|
|
29
34
|
/** UI metadata */
|
|
30
35
|
badge?: string;
|
|
31
36
|
featured?: boolean;
|
|
32
|
-
icon?: string;
|
|
33
37
|
}
|
|
34
38
|
export declare const OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1";
|
|
35
39
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-preset-catalog.d.ts","sourceRoot":"","sources":["../../src/shared/provider-preset-catalog.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,aAAa,CAAC;AAC3D,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEtD,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"provider-preset-catalog.d.ts","sourceRoot":"","sources":["../../src/shared/provider-preset-catalog.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,aAAa,CAAC;AAC3D,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEtD,eAAO,MAAM,mBAAmB,yMAiBtB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,gBAAgB,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,cAAc,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,mCAAmC;IACnC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,+FAA+F;IAC/F,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC;iFAC6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,mBAAmB,iCAAiC,CAAC;AAElE;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAQ7E,CAAC;AA0SH,eAAO,MAAM,2BAA2B,EAAE,SAAS,wBAAwB,EAE1E,CAAC;AAEF,wBAAgB,+BAA+B,IAAI,wBAAwB,EAAE,CAE5E;AAED,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAG5D"}
|
|
@@ -22,6 +22,7 @@ exports.PROVIDER_PRESET_IDS = [
|
|
|
22
22
|
'mm',
|
|
23
23
|
'deepseek',
|
|
24
24
|
'qwen',
|
|
25
|
+
'xiaomi-mimo',
|
|
25
26
|
'ollama-cloud',
|
|
26
27
|
'novita',
|
|
27
28
|
'bigmodel',
|
|
@@ -37,6 +38,8 @@ exports.PROVIDER_PRESET_ALIASES = Object.freeze({
|
|
|
37
38
|
alibaba: 'alibaba-coding-plan',
|
|
38
39
|
acp: 'alibaba-coding-plan',
|
|
39
40
|
hf: 'huggingface',
|
|
41
|
+
xiaomi: 'xiaomi-mimo',
|
|
42
|
+
mimo: 'xiaomi-mimo',
|
|
40
43
|
});
|
|
41
44
|
const RAW_PROVIDER_PRESET_DEFINITIONS = [
|
|
42
45
|
{
|
|
@@ -52,7 +55,6 @@ const RAW_PROVIDER_PRESET_DEFINITIONS = [
|
|
|
52
55
|
requiresApiKey: true,
|
|
53
56
|
badge: '349+ models',
|
|
54
57
|
featured: true,
|
|
55
|
-
icon: '/icons/openrouter.svg',
|
|
56
58
|
},
|
|
57
59
|
{
|
|
58
60
|
id: 'alibaba-coding-plan',
|
|
@@ -67,7 +69,6 @@ const RAW_PROVIDER_PRESET_DEFINITIONS = [
|
|
|
67
69
|
requiresApiKey: true,
|
|
68
70
|
badge: 'Coding Plan',
|
|
69
71
|
featured: true,
|
|
70
|
-
icon: '/assets/providers/alibabacloud-color.svg',
|
|
71
72
|
},
|
|
72
73
|
{
|
|
73
74
|
id: 'ollama',
|
|
@@ -82,7 +83,6 @@ const RAW_PROVIDER_PRESET_DEFINITIONS = [
|
|
|
82
83
|
requiresApiKey: false,
|
|
83
84
|
badge: 'Local',
|
|
84
85
|
featured: true,
|
|
85
|
-
icon: '/icons/ollama.svg',
|
|
86
86
|
},
|
|
87
87
|
{
|
|
88
88
|
id: 'llamacpp',
|
|
@@ -97,7 +97,6 @@ const RAW_PROVIDER_PRESET_DEFINITIONS = [
|
|
|
97
97
|
requiresApiKey: false,
|
|
98
98
|
badge: 'Local',
|
|
99
99
|
featured: true,
|
|
100
|
-
icon: '/assets/providers/llama-cpp.svg',
|
|
101
100
|
},
|
|
102
101
|
{
|
|
103
102
|
id: 'anthropic',
|
|
@@ -112,7 +111,6 @@ const RAW_PROVIDER_PRESET_DEFINITIONS = [
|
|
|
112
111
|
requiresApiKey: true,
|
|
113
112
|
badge: 'Direct',
|
|
114
113
|
featured: true,
|
|
115
|
-
icon: '/assets/providers/claude.svg',
|
|
116
114
|
},
|
|
117
115
|
{
|
|
118
116
|
id: 'huggingface',
|
|
@@ -135,12 +133,14 @@ const RAW_PROVIDER_PRESET_DEFINITIONS = [
|
|
|
135
133
|
baseUrl: 'https://api.z.ai/api/anthropic',
|
|
136
134
|
defaultProfileName: 'glm',
|
|
137
135
|
defaultModel: 'glm-5',
|
|
136
|
+
opusModel: 'glm-5',
|
|
137
|
+
sonnetModel: 'glm-5',
|
|
138
|
+
haikuModel: 'glm-5-air',
|
|
138
139
|
apiKeyPlaceholder: 'ghp_...',
|
|
139
140
|
apiKeyHint: 'Get your API key from Z.AI',
|
|
140
141
|
category: 'alternative',
|
|
141
142
|
requiresApiKey: true,
|
|
142
143
|
badge: 'Z.AI',
|
|
143
|
-
icon: '/icons/zai.svg',
|
|
144
144
|
},
|
|
145
145
|
{
|
|
146
146
|
id: 'km',
|
|
@@ -155,7 +155,6 @@ const RAW_PROVIDER_PRESET_DEFINITIONS = [
|
|
|
155
155
|
requiresApiKey: true,
|
|
156
156
|
alwaysThinkingEnabled: true,
|
|
157
157
|
badge: 'Reasoning',
|
|
158
|
-
icon: '/icons/kimi.svg',
|
|
159
158
|
},
|
|
160
159
|
{
|
|
161
160
|
id: 'foundry',
|
|
@@ -169,49 +168,71 @@ const RAW_PROVIDER_PRESET_DEFINITIONS = [
|
|
|
169
168
|
category: 'alternative',
|
|
170
169
|
requiresApiKey: true,
|
|
171
170
|
badge: 'Azure',
|
|
172
|
-
icon: '/icons/azure.svg',
|
|
173
171
|
},
|
|
174
172
|
{
|
|
175
173
|
id: 'mm',
|
|
176
|
-
name: '
|
|
177
|
-
description: 'M2.1/M2.1-lightning/M2
|
|
178
|
-
baseUrl: 'https://api.
|
|
174
|
+
name: 'MiniMax',
|
|
175
|
+
description: 'M2.1/M2.1-lightning/M2 — multilingual coding (1M context)',
|
|
176
|
+
baseUrl: 'https://api.minimaxi.com/anthropic',
|
|
179
177
|
defaultProfileName: 'mm',
|
|
180
178
|
defaultModel: 'MiniMax-M2.1',
|
|
179
|
+
opusModel: 'MiniMax-M2.1',
|
|
180
|
+
sonnetModel: 'MiniMax-M2.1',
|
|
181
|
+
haikuModel: 'MiniMax-M2.1-lightning',
|
|
181
182
|
apiKeyPlaceholder: 'YOUR_MINIMAX_API_KEY_HERE',
|
|
182
|
-
apiKeyHint: 'Get your API key at platform.
|
|
183
|
+
apiKeyHint: 'Get your API key at platform.minimaxi.com (国内域名)',
|
|
183
184
|
category: 'alternative',
|
|
184
185
|
requiresApiKey: true,
|
|
185
186
|
badge: '1M context',
|
|
186
|
-
icon: '/icons/minimax.svg',
|
|
187
187
|
},
|
|
188
188
|
{
|
|
189
189
|
id: 'deepseek',
|
|
190
190
|
name: 'DeepSeek',
|
|
191
|
-
description: '
|
|
191
|
+
description: 'V4-Pro / V4-Flash — multimodal (text + vision), 1M context',
|
|
192
192
|
baseUrl: 'https://api.deepseek.com/anthropic',
|
|
193
193
|
defaultProfileName: 'deepseek',
|
|
194
|
-
defaultModel: 'deepseek-
|
|
194
|
+
defaultModel: 'deepseek-v4-pro',
|
|
195
|
+
opusModel: 'deepseek-v4-pro',
|
|
196
|
+
sonnetModel: 'deepseek-v4-pro',
|
|
197
|
+
haikuModel: 'deepseek-v4-flash',
|
|
195
198
|
apiKeyPlaceholder: 'sk-...',
|
|
196
199
|
apiKeyHint: 'Get your API key at platform.deepseek.com',
|
|
197
200
|
category: 'alternative',
|
|
198
201
|
requiresApiKey: true,
|
|
199
|
-
badge: '
|
|
200
|
-
icon: '/icons/deepseek.svg',
|
|
202
|
+
badge: 'Vision',
|
|
201
203
|
},
|
|
202
204
|
{
|
|
203
205
|
id: 'qwen',
|
|
204
|
-
name: 'Qwen',
|
|
205
|
-
description: '
|
|
206
|
-
baseUrl: 'https://dashscope
|
|
207
|
-
defaultProfileName: 'qwen
|
|
206
|
+
name: 'Qwen (DashScope 通义)',
|
|
207
|
+
description: '阿里云 DashScope OpenAI 兼容,国内域名,支持 qwen3 全系',
|
|
208
|
+
baseUrl: 'https://dashscope.aliyuncs.com/compatible-mode/v1',
|
|
209
|
+
defaultProfileName: 'qwen',
|
|
208
210
|
defaultModel: 'qwen3-coder-plus',
|
|
211
|
+
opusModel: 'qwen3-max',
|
|
212
|
+
sonnetModel: 'qwen3-coder-plus',
|
|
213
|
+
haikuModel: 'qwen3-turbo',
|
|
209
214
|
apiKeyPlaceholder: 'sk-...',
|
|
210
|
-
apiKeyHint: '
|
|
215
|
+
apiKeyHint: '阿里云 Model Studio 控制台获取 DashScope API Key',
|
|
211
216
|
category: 'alternative',
|
|
212
217
|
requiresApiKey: true,
|
|
218
|
+
proxyChatCompletionsPath: '/chat/completions',
|
|
213
219
|
badge: 'Alibaba',
|
|
214
|
-
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
id: 'xiaomi-mimo',
|
|
223
|
+
name: '小米 MiMo',
|
|
224
|
+
description: 'MiMo V2 系列(pro / flash / omni 多模态),Anthropic 兼容',
|
|
225
|
+
baseUrl: 'https://api.xiaomimimo.com/anthropic',
|
|
226
|
+
defaultProfileName: 'xiaomi',
|
|
227
|
+
defaultModel: 'mimo-v2-pro',
|
|
228
|
+
opusModel: 'mimo-v2-pro',
|
|
229
|
+
sonnetModel: 'mimo-v2-pro',
|
|
230
|
+
haikuModel: 'mimo-v2-flash',
|
|
231
|
+
apiKeyPlaceholder: 'YOUR_XIAOMI_MIMO_API_KEY',
|
|
232
|
+
apiKeyHint: 'platform.xiaomimimo.com 控制台获取',
|
|
233
|
+
category: 'alternative',
|
|
234
|
+
requiresApiKey: true,
|
|
235
|
+
badge: 'MiMo V2',
|
|
215
236
|
},
|
|
216
237
|
{
|
|
217
238
|
id: 'ollama-cloud',
|
|
@@ -225,7 +246,6 @@ const RAW_PROVIDER_PRESET_DEFINITIONS = [
|
|
|
225
246
|
category: 'alternative',
|
|
226
247
|
requiresApiKey: true,
|
|
227
248
|
badge: 'Cloud',
|
|
228
|
-
icon: '/icons/ollama.svg',
|
|
229
249
|
},
|
|
230
250
|
{
|
|
231
251
|
id: 'novita',
|
|
@@ -239,7 +259,6 @@ const RAW_PROVIDER_PRESET_DEFINITIONS = [
|
|
|
239
259
|
category: 'alternative',
|
|
240
260
|
requiresApiKey: true,
|
|
241
261
|
badge: 'Anthropic-compatible',
|
|
242
|
-
icon: '/icons/novita.svg',
|
|
243
262
|
},
|
|
244
263
|
{
|
|
245
264
|
id: 'bigmodel',
|
|
@@ -248,13 +267,15 @@ const RAW_PROVIDER_PRESET_DEFINITIONS = [
|
|
|
248
267
|
baseUrl: 'https://open.bigmodel.cn/api/paas/v4',
|
|
249
268
|
defaultProfileName: 'bigmodel',
|
|
250
269
|
defaultModel: 'glm-5',
|
|
270
|
+
opusModel: 'glm-5',
|
|
271
|
+
sonnetModel: 'glm-5',
|
|
272
|
+
haikuModel: 'glm-5-air',
|
|
251
273
|
apiKeyPlaceholder: 'YOUR_BIGMODEL_API_KEY',
|
|
252
274
|
apiKeyHint: 'Get your API key at bigmodel.cn',
|
|
253
275
|
category: 'alternative',
|
|
254
276
|
requiresApiKey: true,
|
|
255
277
|
proxyChatCompletionsPath: '/chat/completions',
|
|
256
278
|
badge: '智谱AI',
|
|
257
|
-
icon: '/icons/bigmodel.svg',
|
|
258
279
|
},
|
|
259
280
|
];
|
|
260
281
|
function clonePresetDefinition(preset) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-preset-catalog.js","sourceRoot":"","sources":["../../src/shared/provider-preset-catalog.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;
|
|
1
|
+
{"version":3,"file":"provider-preset-catalog.js","sourceRoot":"","sources":["../../src/shared/provider-preset-catalog.ts"],"names":[],"mappings":"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"}
|