@wengine-ai/claude-code-router 2.0.54 → 2.0.56
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/LICENSE +21 -0
- package/dist/README.md +763 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +1193 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.html +225 -0
- package/dist/index.js +1539 -0
- package/dist/package.json +31 -0
- package/dist/tiktoken_bg.wasm +0 -0
- package/dist/utils/activateCommand.d.ts +4 -0
- package/dist/utils/activateCommand.js +24 -0
- package/dist/utils/activateCommand.js.map +1 -0
- package/dist/utils/claudeSettings.d.ts +12 -0
- package/dist/utils/claudeSettings.js +188 -0
- package/dist/utils/claudeSettings.js.map +1 -0
- package/dist/utils/codeCommand.d.ts +13 -0
- package/dist/utils/codeCommand.js +88 -0
- package/dist/utils/codeCommand.js.map +1 -0
- package/dist/utils/createEnvVariables.d.ts +5 -0
- package/dist/utils/createEnvVariables.js +83 -0
- package/dist/utils/createEnvVariables.js.map +1 -0
- package/dist/utils/index.d.ts +15 -0
- package/dist/utils/index.js +271 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/installCommand.d.ts +9 -0
- package/dist/utils/installCommand.js +47 -0
- package/dist/utils/installCommand.js.map +1 -0
- package/dist/utils/modelSelector.d.ts +1 -0
- package/dist/utils/modelSelector.js +402 -0
- package/dist/utils/modelSelector.js.map +1 -0
- package/dist/utils/preset/commands.d.ts +8 -0
- package/dist/utils/preset/commands.js +267 -0
- package/dist/utils/preset/commands.js.map +1 -0
- package/dist/utils/preset/export.d.ts +11 -0
- package/dist/utils/preset/export.js +97 -0
- package/dist/utils/preset/export.js.map +1 -0
- package/dist/utils/preset/index.d.ts +8 -0
- package/dist/utils/preset/index.js +32 -0
- package/dist/utils/preset/index.js.map +1 -0
- package/dist/utils/preset/install-github.d.ts +13 -0
- package/dist/utils/preset/install-github.js +161 -0
- package/dist/utils/preset/install-github.js.map +1 -0
- package/dist/utils/preset/install.d.ts +19 -0
- package/dist/utils/preset/install.js +239 -0
- package/dist/utils/preset/install.js.map +1 -0
- package/dist/utils/processCheck.d.ts +17 -0
- package/dist/utils/processCheck.js +161 -0
- package/dist/utils/processCheck.js.map +1 -0
- package/dist/utils/prompt/schema-input.d.ts +26 -0
- package/dist/utils/prompt/schema-input.js +183 -0
- package/dist/utils/prompt/schema-input.js.map +1 -0
- package/dist/utils/status.d.ts +1 -0
- package/dist/utils/status.js +28 -0
- package/dist/utils/status.js.map +1 -0
- package/dist/utils/statusline.d.ts +61 -0
- package/dist/utils/statusline.js +924 -0
- package/dist/utils/statusline.js.map +1 -0
- package/dist/utils/update.d.ts +18 -0
- package/dist/utils/update.js +74 -0
- package/dist/utils/update.js.map +1 -0
- package/package.json +25 -4
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.runModelSelector = runModelSelector;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const prompts_1 = require("@inquirer/prompts");
|
|
40
|
+
// ANSI color codes
|
|
41
|
+
const RESET = "\x1B[0m";
|
|
42
|
+
const DIM = "\x1B[2m";
|
|
43
|
+
const BOLDGREEN = "\x1B[1m\x1B[32m";
|
|
44
|
+
const CYAN = "\x1B[36m";
|
|
45
|
+
const BOLDCYAN = "\x1B[1m\x1B[36m";
|
|
46
|
+
const GREEN = "\x1B[32m";
|
|
47
|
+
const YELLOW = "\x1B[33m";
|
|
48
|
+
const BOLDYELLOW = "\x1B[1m\x1B[33m";
|
|
49
|
+
const AVAILABLE_TRANSFORMERS = [
|
|
50
|
+
'anthropic',
|
|
51
|
+
'deepseek',
|
|
52
|
+
'gemini',
|
|
53
|
+
'openrouter',
|
|
54
|
+
'groq',
|
|
55
|
+
'maxtoken',
|
|
56
|
+
'tooluse',
|
|
57
|
+
'gemini-cli',
|
|
58
|
+
'reasoning',
|
|
59
|
+
'sampling',
|
|
60
|
+
'enhancetool',
|
|
61
|
+
'cleancache',
|
|
62
|
+
'vertex-gemini',
|
|
63
|
+
'chutes-glm',
|
|
64
|
+
'qwen-cli',
|
|
65
|
+
'rovo-cli'
|
|
66
|
+
];
|
|
67
|
+
function getConfigPath() {
|
|
68
|
+
const configDir = path.join(process.env.HOME || process.env.USERPROFILE || '', '.claude-code-router');
|
|
69
|
+
const configPath = path.join(configDir, 'config.json');
|
|
70
|
+
if (!fs.existsSync(configPath)) {
|
|
71
|
+
throw new Error(`config.json not found at ${configPath}`);
|
|
72
|
+
}
|
|
73
|
+
return configPath;
|
|
74
|
+
}
|
|
75
|
+
function loadConfig() {
|
|
76
|
+
const configPath = getConfigPath();
|
|
77
|
+
return JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
78
|
+
}
|
|
79
|
+
function saveConfig(config) {
|
|
80
|
+
const configPath = getConfigPath();
|
|
81
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
|
|
82
|
+
console.log(`${GREEN}✓ config.json updated successfully${RESET}\n`);
|
|
83
|
+
}
|
|
84
|
+
function getAllModels(config) {
|
|
85
|
+
const models = [];
|
|
86
|
+
for (const provider of config.Providers) {
|
|
87
|
+
for (const model of provider.models) {
|
|
88
|
+
models.push({
|
|
89
|
+
name: `${BOLDCYAN}${provider.name}${RESET} → ${CYAN} ${model}`,
|
|
90
|
+
value: `${provider.name},${model}`,
|
|
91
|
+
description: `\n${BOLDCYAN}Provider:${RESET} ${provider.name}`,
|
|
92
|
+
provider: provider.name,
|
|
93
|
+
model: model
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return models;
|
|
98
|
+
}
|
|
99
|
+
function displayCurrentConfig(config) {
|
|
100
|
+
console.log(`\n${BOLDCYAN}═══════════════════════════════════════════════${RESET}`);
|
|
101
|
+
console.log(`${BOLDCYAN} Current Configuration${RESET}`);
|
|
102
|
+
console.log(`${BOLDCYAN}═══════════════════════════════════════════════${RESET}\n`);
|
|
103
|
+
const formatModel = (routerValue) => {
|
|
104
|
+
if (!routerValue || typeof routerValue === 'number') {
|
|
105
|
+
return `${DIM}Not configured${RESET}`;
|
|
106
|
+
}
|
|
107
|
+
const [provider, model] = routerValue.split(',');
|
|
108
|
+
return `${YELLOW}${provider}${RESET} | ${model}\n ${DIM}- ${routerValue}${RESET}`;
|
|
109
|
+
};
|
|
110
|
+
console.log(`${BOLDCYAN}Default Model:${RESET}`);
|
|
111
|
+
console.log(` ${formatModel(config.Router.default)}\n`);
|
|
112
|
+
if (config.Router.background) {
|
|
113
|
+
console.log(`${BOLDCYAN}Background Model:${RESET}`);
|
|
114
|
+
console.log(` ${formatModel(config.Router.background)}\n`);
|
|
115
|
+
}
|
|
116
|
+
if (config.Router.think) {
|
|
117
|
+
console.log(`${BOLDCYAN}Think Model:${RESET}`);
|
|
118
|
+
console.log(` ${formatModel(config.Router.think)}\n`);
|
|
119
|
+
}
|
|
120
|
+
if (config.Router.longContext) {
|
|
121
|
+
console.log(`${BOLDCYAN}Long Context Model:${RESET}`);
|
|
122
|
+
console.log(` ${formatModel(config.Router.longContext)}\n`);
|
|
123
|
+
}
|
|
124
|
+
if (config.Router.webSearch) {
|
|
125
|
+
console.log(`${BOLDCYAN}Web Search Model:${RESET}`);
|
|
126
|
+
console.log(` ${formatModel(config.Router.webSearch)}\n`);
|
|
127
|
+
}
|
|
128
|
+
if (config.Router.image) {
|
|
129
|
+
console.log(`${BOLDCYAN}Image Model:${RESET}`);
|
|
130
|
+
console.log(` ${formatModel(config.Router.image)}\n`);
|
|
131
|
+
}
|
|
132
|
+
console.log(`\n${BOLDCYAN}═══════════════════════════════════════════════${RESET}`);
|
|
133
|
+
console.log(`${BOLDCYAN} Add/Update Model${RESET}`);
|
|
134
|
+
console.log(`${BOLDCYAN}═══════════════════════════════════════════════${RESET}\n`);
|
|
135
|
+
}
|
|
136
|
+
async function selectModelType() {
|
|
137
|
+
return await (0, prompts_1.select)({
|
|
138
|
+
message: `${BOLDYELLOW}Which model configuration do you want to update?${RESET}`,
|
|
139
|
+
choices: [
|
|
140
|
+
{ name: 'Default Model', value: 'default' },
|
|
141
|
+
{ name: 'Background Model', value: 'background' },
|
|
142
|
+
{ name: 'Think Model', value: 'think' },
|
|
143
|
+
{ name: 'Long Context Model', value: 'longContext' },
|
|
144
|
+
{ name: 'Web Search Model', value: 'webSearch' },
|
|
145
|
+
{ name: 'Image Model', value: 'image' },
|
|
146
|
+
{ name: `${BOLDGREEN}+ Add New Model${RESET}`, value: 'addModel' }
|
|
147
|
+
]
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
async function selectModel(config, modelType) {
|
|
151
|
+
const models = getAllModels(config);
|
|
152
|
+
return await (0, prompts_1.select)({
|
|
153
|
+
message: `\n${BOLDYELLOW}Select a model for ${modelType}:${RESET}`,
|
|
154
|
+
choices: models,
|
|
155
|
+
pageSize: 15
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
async function configureTransformers() {
|
|
159
|
+
const useTransformers = await (0, prompts_1.confirm)({
|
|
160
|
+
message: `\n${BOLDYELLOW}Add transformer configuration?${RESET}`,
|
|
161
|
+
default: false
|
|
162
|
+
});
|
|
163
|
+
if (!useTransformers) {
|
|
164
|
+
return undefined;
|
|
165
|
+
}
|
|
166
|
+
const transformers = [];
|
|
167
|
+
let addMore = true;
|
|
168
|
+
while (addMore) {
|
|
169
|
+
const transformer = await (0, prompts_1.select)({
|
|
170
|
+
message: `\n${BOLDYELLOW}Select a transformer:${RESET}`,
|
|
171
|
+
choices: AVAILABLE_TRANSFORMERS.map(t => ({ name: t, value: t })),
|
|
172
|
+
pageSize: 15
|
|
173
|
+
});
|
|
174
|
+
// Check if transformer needs options
|
|
175
|
+
if (transformer === 'maxtoken') {
|
|
176
|
+
const maxTokens = await (0, prompts_1.input)({
|
|
177
|
+
message: `\n${BOLDYELLOW}Max tokens:${RESET}`,
|
|
178
|
+
default: '30000',
|
|
179
|
+
validate: (value) => {
|
|
180
|
+
const num = parseInt(value);
|
|
181
|
+
if (isNaN(num) || num <= 0) {
|
|
182
|
+
return 'Please enter a valid positive number';
|
|
183
|
+
}
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
transformers.push(['maxtoken', { max_tokens: parseInt(maxTokens) }]);
|
|
188
|
+
}
|
|
189
|
+
else if (transformer === 'openrouter') {
|
|
190
|
+
const addProvider = await (0, prompts_1.confirm)({
|
|
191
|
+
message: `\n${BOLDYELLOW}Add provider routing options?${RESET}`,
|
|
192
|
+
default: false
|
|
193
|
+
});
|
|
194
|
+
if (addProvider) {
|
|
195
|
+
const providerInput = await (0, prompts_1.input)({
|
|
196
|
+
message: 'Provider (e.g., moonshotai/fp8):',
|
|
197
|
+
validate: (value) => value.trim() !== '' || 'Provider cannot be empty'
|
|
198
|
+
});
|
|
199
|
+
transformers.push(['openrouter', { provider: { only: [providerInput] } }]);
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
transformers.push(transformer);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
transformers.push(transformer);
|
|
207
|
+
}
|
|
208
|
+
addMore = await (0, prompts_1.confirm)({
|
|
209
|
+
message: `\n${BOLDYELLOW}Add another transformer?${RESET}`,
|
|
210
|
+
default: false
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
return { use: transformers };
|
|
214
|
+
}
|
|
215
|
+
async function addNewModel(config) {
|
|
216
|
+
const providerChoices = config.Providers.map(p => ({
|
|
217
|
+
name: p.name,
|
|
218
|
+
value: p.name
|
|
219
|
+
}));
|
|
220
|
+
providerChoices.push({ name: `${BOLDGREEN}+ Add New Provider${RESET}`, value: '__new__' });
|
|
221
|
+
const selectedProvider = await (0, prompts_1.select)({
|
|
222
|
+
message: `\n${BOLDYELLOW}Select provider for the new model:${RESET}`,
|
|
223
|
+
choices: providerChoices
|
|
224
|
+
});
|
|
225
|
+
if (selectedProvider === '__new__') {
|
|
226
|
+
return await addNewProvider(config);
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
return await addModelToExistingProvider(config, selectedProvider);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
async function addModelToExistingProvider(config, providerName) {
|
|
233
|
+
const modelName = await (0, prompts_1.input)({
|
|
234
|
+
message: `\n${BOLDYELLOW}Enter the model name:${RESET}`,
|
|
235
|
+
validate: (value) => {
|
|
236
|
+
if (!value.trim()) {
|
|
237
|
+
return 'Model name cannot be empty';
|
|
238
|
+
}
|
|
239
|
+
return true;
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
const provider = config.Providers.find(p => p.name === providerName);
|
|
243
|
+
if (!provider) {
|
|
244
|
+
console.log(`${YELLOW}Provider not found${RESET}`);
|
|
245
|
+
return null;
|
|
246
|
+
}
|
|
247
|
+
if (provider.models.includes(modelName)) {
|
|
248
|
+
console.log(`${YELLOW}Model already exists in provider${RESET}`);
|
|
249
|
+
return null;
|
|
250
|
+
}
|
|
251
|
+
provider.models.push(modelName);
|
|
252
|
+
// Ask about model-specific transformers
|
|
253
|
+
const addModelTransformer = await (0, prompts_1.confirm)({
|
|
254
|
+
message: `\n${BOLDYELLOW}Add model-specific transformer configuration?${RESET}`,
|
|
255
|
+
default: false
|
|
256
|
+
});
|
|
257
|
+
if (addModelTransformer) {
|
|
258
|
+
const transformerConfig = await configureTransformers();
|
|
259
|
+
if (transformerConfig && provider.transformer) {
|
|
260
|
+
provider.transformer[modelName] = transformerConfig;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
saveConfig(config);
|
|
264
|
+
console.log(`${GREEN}✓ Model "${modelName}" added to provider "${providerName}"${RESET}`);
|
|
265
|
+
const setAsDefault = await (0, prompts_1.confirm)({
|
|
266
|
+
message: `\n${BOLDYELLOW}Do you want to set this model in router configuration?${RESET}`,
|
|
267
|
+
default: false
|
|
268
|
+
});
|
|
269
|
+
if (setAsDefault) {
|
|
270
|
+
const modelType = await (0, prompts_1.select)({
|
|
271
|
+
message: `\n${BOLDYELLOW}Select configuration type:${RESET}`,
|
|
272
|
+
choices: [
|
|
273
|
+
{ name: 'Default Model', value: 'default' },
|
|
274
|
+
{ name: 'Background Model', value: 'background' },
|
|
275
|
+
{ name: 'Think Model', value: 'think' },
|
|
276
|
+
{ name: 'Long Context Model', value: 'longContext' },
|
|
277
|
+
{ name: 'Web Search Model', value: 'webSearch' },
|
|
278
|
+
{ name: 'Image Model', value: 'image' }
|
|
279
|
+
]
|
|
280
|
+
});
|
|
281
|
+
return { providerName, modelName, modelType };
|
|
282
|
+
}
|
|
283
|
+
return null;
|
|
284
|
+
}
|
|
285
|
+
async function addNewProvider(config) {
|
|
286
|
+
console.log(`\n${BOLDCYAN}Adding New Provider${RESET}\n`);
|
|
287
|
+
const providerName = await (0, prompts_1.input)({
|
|
288
|
+
message: `${BOLDYELLOW}Provider name:${RESET}`,
|
|
289
|
+
validate: (value) => {
|
|
290
|
+
if (!value.trim()) {
|
|
291
|
+
return 'Provider name cannot be empty';
|
|
292
|
+
}
|
|
293
|
+
if (config.Providers.some(p => p.name === value)) {
|
|
294
|
+
return 'Provider already exists';
|
|
295
|
+
}
|
|
296
|
+
return true;
|
|
297
|
+
}
|
|
298
|
+
});
|
|
299
|
+
const apiBaseUrl = await (0, prompts_1.input)({
|
|
300
|
+
message: `\n${BOLDYELLOW}API base URL:${RESET}`,
|
|
301
|
+
validate: (value) => {
|
|
302
|
+
if (!value.trim()) {
|
|
303
|
+
return 'API base URL cannot be empty';
|
|
304
|
+
}
|
|
305
|
+
try {
|
|
306
|
+
new URL(value);
|
|
307
|
+
return true;
|
|
308
|
+
}
|
|
309
|
+
catch {
|
|
310
|
+
return 'Please enter a valid URL';
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
const apiKey = await (0, prompts_1.input)({
|
|
315
|
+
message: `\n${BOLDYELLOW}API key:${RESET}`,
|
|
316
|
+
validate: (value) => {
|
|
317
|
+
if (!value.trim()) {
|
|
318
|
+
return 'API key cannot be empty';
|
|
319
|
+
}
|
|
320
|
+
return true;
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
const modelsInput = await (0, prompts_1.input)({
|
|
324
|
+
message: `\n${BOLDYELLOW}Model names (comma-separated):${RESET}`,
|
|
325
|
+
validate: (value) => {
|
|
326
|
+
if (!value.trim()) {
|
|
327
|
+
return 'At least one model name is required';
|
|
328
|
+
}
|
|
329
|
+
return true;
|
|
330
|
+
}
|
|
331
|
+
});
|
|
332
|
+
const models = modelsInput.split(',').map(m => m.trim()).filter(m => m);
|
|
333
|
+
const newProvider = {
|
|
334
|
+
name: providerName,
|
|
335
|
+
api_base_url: apiBaseUrl,
|
|
336
|
+
api_key: apiKey,
|
|
337
|
+
models: models
|
|
338
|
+
};
|
|
339
|
+
// Global transformer configuration
|
|
340
|
+
const transformerConfig = await configureTransformers();
|
|
341
|
+
if (transformerConfig) {
|
|
342
|
+
newProvider.transformer = transformerConfig;
|
|
343
|
+
}
|
|
344
|
+
config.Providers.push(newProvider);
|
|
345
|
+
saveConfig(config);
|
|
346
|
+
console.log(`${GREEN}\n✓ Provider "${providerName}" added successfully${RESET}`);
|
|
347
|
+
const setAsDefault = await (0, prompts_1.confirm)({
|
|
348
|
+
message: `\n${BOLDYELLOW}Do you want to set one of these models in router configuration?${RESET}`,
|
|
349
|
+
default: false
|
|
350
|
+
});
|
|
351
|
+
if (setAsDefault && models.length > 0) {
|
|
352
|
+
let selectedModel = models[0];
|
|
353
|
+
if (models.length > 1) {
|
|
354
|
+
selectedModel = await (0, prompts_1.select)({
|
|
355
|
+
message: `\n${BOLDYELLOW}Select which model to configure:${RESET}`,
|
|
356
|
+
choices: models.map(m => ({ name: m, value: m }))
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
const modelType = await (0, prompts_1.select)({
|
|
360
|
+
message: `\n${BOLDYELLOW}Select configuration type:${RESET}`,
|
|
361
|
+
choices: [
|
|
362
|
+
{ name: 'Default Model', value: 'default' },
|
|
363
|
+
{ name: 'Background Model', value: 'background' },
|
|
364
|
+
{ name: 'Think Model', value: 'think' },
|
|
365
|
+
{ name: 'Long Context Model', value: 'longContext' },
|
|
366
|
+
{ name: 'Web Search Model', value: 'webSearch' },
|
|
367
|
+
{ name: 'Image Model', value: 'image' }
|
|
368
|
+
]
|
|
369
|
+
});
|
|
370
|
+
return { providerName, modelName: selectedModel, modelType };
|
|
371
|
+
}
|
|
372
|
+
return null;
|
|
373
|
+
}
|
|
374
|
+
async function runModelSelector() {
|
|
375
|
+
console.clear();
|
|
376
|
+
try {
|
|
377
|
+
let config = loadConfig();
|
|
378
|
+
displayCurrentConfig(config);
|
|
379
|
+
const action = await selectModelType();
|
|
380
|
+
if (action === 'addModel') {
|
|
381
|
+
const result = await addNewModel(config);
|
|
382
|
+
if (result) {
|
|
383
|
+
config = loadConfig();
|
|
384
|
+
config.Router[result.modelType] = `${result.providerName},${result.modelName}`;
|
|
385
|
+
saveConfig(config);
|
|
386
|
+
console.log(`${GREEN}✓ ${result.modelType} set to ${result.providerName},${result.modelName}${RESET}`);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
else {
|
|
390
|
+
const selectedModel = await selectModel(config, action);
|
|
391
|
+
config.Router[action] = selectedModel;
|
|
392
|
+
saveConfig(config);
|
|
393
|
+
console.log(`${GREEN}✓ ${action} model updated to: ${selectedModel}${RESET}`);
|
|
394
|
+
}
|
|
395
|
+
displayCurrentConfig(config);
|
|
396
|
+
}
|
|
397
|
+
catch (error) {
|
|
398
|
+
console.error(`${YELLOW}Error:${RESET}`, error.message);
|
|
399
|
+
process.exit(1);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
//# sourceMappingURL=modelSelector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelSelector.js","sourceRoot":"","sources":["../../src/utils/modelSelector.ts"],"names":[],"mappings":"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"}
|