@defai.digital/ax-cli 4.1.8 → 4.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/dist/commands/setup.d.ts +10 -1
- package/dist/commands/setup.js +653 -420
- package/dist/commands/setup.js.map +1 -1
- package/package.json +1 -1
package/dist/commands/setup.d.ts
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Setup Command - Provider Selection and Configuration
|
|
3
|
+
*
|
|
4
|
+
* This setup wizard:
|
|
5
|
+
* 1. Lets user select GLM or Grok provider
|
|
6
|
+
* 2. Runs provider-specific setup (API key, model selection, etc.)
|
|
7
|
+
* 3. Saves config to provider-specific directory (~/.ax-glm or ~/.ax-grok)
|
|
8
|
+
* 4. Recommends installing the provider-specific CLI
|
|
9
|
+
*/
|
|
1
10
|
import { Command } from 'commander';
|
|
2
11
|
/**
|
|
3
|
-
*
|
|
12
|
+
* Create setup command
|
|
4
13
|
*/
|
|
5
14
|
export declare function createSetupCommand(): Command;
|
package/dist/commands/setup.js
CHANGED
|
@@ -1,17 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Setup Command - Provider Selection and Configuration
|
|
3
|
+
*
|
|
4
|
+
* This setup wizard:
|
|
5
|
+
* 1. Lets user select GLM or Grok provider
|
|
6
|
+
* 2. Runs provider-specific setup (API key, model selection, etc.)
|
|
7
|
+
* 3. Saves config to provider-specific directory (~/.ax-glm or ~/.ax-grok)
|
|
8
|
+
* 4. Recommends installing the provider-specific CLI
|
|
9
|
+
*/
|
|
1
10
|
import { Command } from 'commander';
|
|
2
|
-
import { existsSync, mkdirSync } from 'fs';
|
|
3
|
-
import {
|
|
11
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
12
|
+
import { homedir } from 'os';
|
|
13
|
+
import { join } from 'path';
|
|
4
14
|
import { execSync, spawnSync } from 'child_process';
|
|
5
15
|
import * as prompts from '@clack/prompts';
|
|
6
16
|
import chalk from 'chalk';
|
|
7
17
|
import { validateProviderSetup } from '../utils/setup-validator.js';
|
|
8
|
-
import { getSettingsManager } from '../utils/settings-manager.js';
|
|
9
18
|
import { extractErrorMessage } from '../utils/error-handler.js';
|
|
10
|
-
import { CONFIG_PATHS } from '../constants.js';
|
|
11
19
|
import { detectZAIServices, getRecommendedServers, generateZAIServerConfig, } from '../mcp/index.js';
|
|
12
20
|
import { addMCPServer, removeMCPServer } from '../mcp/config.js';
|
|
21
|
+
// Provider definitions
|
|
22
|
+
const PROVIDERS = {
|
|
23
|
+
glm: {
|
|
24
|
+
name: 'glm',
|
|
25
|
+
displayName: 'GLM (Z.AI)',
|
|
26
|
+
cliName: 'ax-glm',
|
|
27
|
+
package: '@defai.digital/ax-glm',
|
|
28
|
+
defaultBaseURL: 'https://api.z.ai/api/coding/paas/v4',
|
|
29
|
+
defaultModel: 'glm-4.6',
|
|
30
|
+
apiKeyEnvVar: 'ZAI_API_KEY',
|
|
31
|
+
website: 'https://z.ai',
|
|
32
|
+
description: 'GLM-4.6 with thinking mode and 200K context',
|
|
33
|
+
configDir: '.ax-glm',
|
|
34
|
+
},
|
|
35
|
+
grok: {
|
|
36
|
+
name: 'grok',
|
|
37
|
+
displayName: 'Grok (xAI)',
|
|
38
|
+
cliName: 'ax-grok',
|
|
39
|
+
package: '@defai.digital/ax-grok',
|
|
40
|
+
defaultBaseURL: 'https://api.x.ai/v1',
|
|
41
|
+
defaultModel: 'grok-3',
|
|
42
|
+
apiKeyEnvVar: 'XAI_API_KEY',
|
|
43
|
+
website: 'https://console.x.ai',
|
|
44
|
+
description: 'Grok 3 with extended thinking, vision, and live search',
|
|
45
|
+
configDir: '.ax-grok',
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
// GLM models
|
|
49
|
+
const GLM_MODELS = [
|
|
50
|
+
{ id: 'glm-4.6', name: 'GLM-4.6', description: 'Most capable GLM model with thinking mode', contextWindow: 200000, supportsThinking: true },
|
|
51
|
+
{ id: 'glm-4.5v', name: 'GLM-4.5V', description: 'Vision-capable GLM model', contextWindow: 64000, supportsVision: true },
|
|
52
|
+
{ id: 'glm-4', name: 'GLM-4', description: 'Standard GLM-4 model', contextWindow: 128000 },
|
|
53
|
+
{ id: 'glm-4-flash', name: 'GLM-4 Flash', description: 'Fast, efficient GLM model', contextWindow: 128000 },
|
|
54
|
+
];
|
|
55
|
+
// Grok models
|
|
56
|
+
const GROK_MODELS = [
|
|
57
|
+
{ id: 'grok-3', name: 'Grok-3', description: 'Most capable with extended thinking', contextWindow: 131072, supportsThinking: true, supportsSearch: true },
|
|
58
|
+
{ id: 'grok-3-mini', name: 'Grok-3 Mini', description: 'Efficient with thinking support', contextWindow: 131072, supportsThinking: true, supportsSearch: true },
|
|
59
|
+
{ id: 'grok-2', name: 'Grok-2', description: 'Capable with advanced reasoning', contextWindow: 131072, supportsSearch: true },
|
|
60
|
+
{ id: 'grok-2-vision', name: 'Grok-2 Vision', description: 'Vision-capable for image understanding', contextWindow: 32768, supportsVision: true, supportsSearch: true },
|
|
61
|
+
{ id: 'grok-2-mini', name: 'Grok-2 Mini', description: 'Fast and efficient', contextWindow: 131072, supportsSearch: true },
|
|
62
|
+
];
|
|
63
|
+
// Local server options
|
|
64
|
+
const LOCAL_SERVERS = [
|
|
65
|
+
{ name: 'Ollama', url: 'http://localhost:11434/v1', port: 11434 },
|
|
66
|
+
{ name: 'LM Studio', url: 'http://localhost:1234/v1', port: 1234 },
|
|
67
|
+
{ name: 'vLLM', url: 'http://localhost:8000/v1', port: 8000 },
|
|
68
|
+
{ name: 'LocalAI', url: 'http://localhost:8080/v1', port: 8080 },
|
|
69
|
+
];
|
|
13
70
|
/**
|
|
14
|
-
* Handle user cancellation
|
|
71
|
+
* Handle user cancellation
|
|
15
72
|
*/
|
|
16
73
|
function exitIfCancelled(value) {
|
|
17
74
|
if (prompts.isCancel(value)) {
|
|
@@ -20,476 +77,652 @@ function exitIfCancelled(value) {
|
|
|
20
77
|
}
|
|
21
78
|
}
|
|
22
79
|
/**
|
|
23
|
-
*
|
|
80
|
+
* Get provider config path
|
|
81
|
+
*/
|
|
82
|
+
function getConfigPath(provider) {
|
|
83
|
+
return join(homedir(), PROVIDERS[provider].configDir, 'config.json');
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get provider config directory
|
|
24
87
|
*/
|
|
25
|
-
function
|
|
88
|
+
function getConfigDir(provider) {
|
|
89
|
+
return join(homedir(), PROVIDERS[provider].configDir);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Load existing provider config
|
|
93
|
+
*/
|
|
94
|
+
function loadProviderConfig(provider) {
|
|
26
95
|
try {
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
stdio: ['pipe', 'pipe', 'pipe']
|
|
31
|
-
});
|
|
32
|
-
if (result.status === 0 && result.stdout) {
|
|
33
|
-
const match = result.stdout.match(/(\d+\.\d+\.\d+)/);
|
|
34
|
-
return { installed: true, version: match ? match[1] : result.stdout.trim() };
|
|
96
|
+
const configPath = getConfigPath(provider);
|
|
97
|
+
if (existsSync(configPath)) {
|
|
98
|
+
return JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
35
99
|
}
|
|
36
|
-
return { installed: false, version: null };
|
|
37
100
|
}
|
|
38
101
|
catch {
|
|
39
|
-
|
|
102
|
+
// Ignore errors
|
|
103
|
+
}
|
|
104
|
+
return {};
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Save provider config
|
|
108
|
+
*/
|
|
109
|
+
function saveProviderConfig(provider, config) {
|
|
110
|
+
const configDir = getConfigDir(provider);
|
|
111
|
+
const configPath = getConfigPath(provider);
|
|
112
|
+
if (!existsSync(configDir)) {
|
|
113
|
+
mkdirSync(configDir, { recursive: true });
|
|
40
114
|
}
|
|
115
|
+
writeFileSync(configPath, JSON.stringify(config, null, 2), { mode: 0o600 });
|
|
41
116
|
}
|
|
42
117
|
/**
|
|
43
|
-
*
|
|
118
|
+
* Check if a local server is running
|
|
44
119
|
*/
|
|
45
|
-
async function
|
|
120
|
+
async function checkLocalServer(url) {
|
|
46
121
|
try {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
122
|
+
const controller = new AbortController();
|
|
123
|
+
const timeout = setTimeout(() => controller.abort(), 2000);
|
|
124
|
+
const response = await fetch(`${url}/models`, {
|
|
125
|
+
signal: controller.signal,
|
|
126
|
+
headers: { 'Content-Type': 'application/json' },
|
|
50
127
|
});
|
|
51
|
-
|
|
128
|
+
clearTimeout(timeout);
|
|
129
|
+
return response.ok;
|
|
52
130
|
}
|
|
53
131
|
catch {
|
|
54
132
|
return false;
|
|
55
133
|
}
|
|
56
134
|
}
|
|
57
135
|
/**
|
|
58
|
-
*
|
|
136
|
+
* Fetch models from local server
|
|
59
137
|
*/
|
|
60
|
-
async function
|
|
138
|
+
async function fetchLocalModels(baseURL) {
|
|
61
139
|
try {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
140
|
+
const controller = new AbortController();
|
|
141
|
+
const timeout = setTimeout(() => controller.abort(), 5000);
|
|
142
|
+
const response = await fetch(`${baseURL}/models`, {
|
|
143
|
+
signal: controller.signal,
|
|
144
|
+
headers: { 'Content-Type': 'application/json' },
|
|
65
145
|
});
|
|
66
|
-
|
|
146
|
+
clearTimeout(timeout);
|
|
147
|
+
if (!response.ok)
|
|
148
|
+
return [];
|
|
149
|
+
const data = await response.json();
|
|
150
|
+
const models = data.data || [];
|
|
151
|
+
return models.map((m) => ({
|
|
152
|
+
id: m.id,
|
|
153
|
+
name: m.id,
|
|
154
|
+
description: m.owned_by ? `Provided by ${m.owned_by}` : 'Local model',
|
|
155
|
+
contextWindow: 8192,
|
|
156
|
+
}));
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
return [];
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Detect running local servers
|
|
164
|
+
*/
|
|
165
|
+
async function detectLocalServers() {
|
|
166
|
+
const results = await Promise.all(LOCAL_SERVERS.map(async (server) => ({
|
|
167
|
+
...server,
|
|
168
|
+
available: await checkLocalServer(server.url),
|
|
169
|
+
})));
|
|
170
|
+
return results;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Validate cloud API connection
|
|
174
|
+
*/
|
|
175
|
+
async function validateCloudConnection(baseURL, apiKey) {
|
|
176
|
+
try {
|
|
177
|
+
const response = await fetch(`${baseURL}/models`, {
|
|
178
|
+
headers: {
|
|
179
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
180
|
+
'Content-Type': 'application/json',
|
|
181
|
+
},
|
|
182
|
+
});
|
|
183
|
+
return response.ok;
|
|
67
184
|
}
|
|
68
185
|
catch {
|
|
69
186
|
return false;
|
|
70
187
|
}
|
|
71
188
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
description: 'Z.AI with GLM 4.6 - Advanced reasoning and 200K context window'
|
|
81
|
-
},
|
|
82
|
-
'z.ai-free': {
|
|
83
|
-
name: 'z.ai-free',
|
|
84
|
-
displayName: 'Z.AI (Free Plan)',
|
|
85
|
-
baseURL: 'https://api.z.ai/api/paas/v4',
|
|
86
|
-
defaultModel: 'glm-4.6',
|
|
87
|
-
requiresApiKey: true,
|
|
88
|
-
website: 'https://z.ai',
|
|
89
|
-
description: 'Z.AI Free Plan - Standard API endpoint for non-coding-plan users'
|
|
90
|
-
},
|
|
91
|
-
'openai': {
|
|
92
|
-
name: 'openai',
|
|
93
|
-
displayName: 'OpenAI',
|
|
94
|
-
baseURL: 'https://api.openai.com/v1',
|
|
95
|
-
defaultModel: 'gpt-4-turbo',
|
|
96
|
-
requiresApiKey: true,
|
|
97
|
-
website: 'https://platform.openai.com',
|
|
98
|
-
description: 'OpenAI GPT models - Industry-leading language models'
|
|
99
|
-
},
|
|
100
|
-
'anthropic': {
|
|
101
|
-
name: 'anthropic',
|
|
102
|
-
displayName: 'Anthropic (Claude)',
|
|
103
|
-
baseURL: 'https://api.anthropic.com/v1',
|
|
104
|
-
defaultModel: 'claude-3-5-sonnet-20241022',
|
|
105
|
-
requiresApiKey: true,
|
|
106
|
-
website: 'https://console.anthropic.com',
|
|
107
|
-
description: 'Anthropic Claude models - Advanced AI assistant'
|
|
108
|
-
},
|
|
109
|
-
'ollama': {
|
|
110
|
-
name: 'ollama',
|
|
111
|
-
displayName: 'Ollama (Local)',
|
|
112
|
-
baseURL: 'http://localhost:11434/v1',
|
|
113
|
-
defaultModel: 'llama3.1',
|
|
114
|
-
requiresApiKey: false,
|
|
115
|
-
website: 'https://ollama.ai',
|
|
116
|
-
description: 'Local models via Ollama - No API key required'
|
|
189
|
+
/**
|
|
190
|
+
* Check if provider CLI is installed
|
|
191
|
+
*/
|
|
192
|
+
function isProviderInstalled(provider) {
|
|
193
|
+
const cliName = PROVIDERS[provider].cliName;
|
|
194
|
+
try {
|
|
195
|
+
const result = spawnSync('which', [cliName], { encoding: 'utf-8', timeout: 5000 });
|
|
196
|
+
return result.status === 0;
|
|
117
197
|
}
|
|
118
|
-
|
|
198
|
+
catch {
|
|
199
|
+
return false;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Install provider package
|
|
204
|
+
*/
|
|
205
|
+
async function installProvider(provider) {
|
|
206
|
+
const providerInfo = PROVIDERS[provider];
|
|
207
|
+
const spinner = prompts.spinner();
|
|
208
|
+
spinner.start(`Installing ${providerInfo.package}...`);
|
|
209
|
+
try {
|
|
210
|
+
execSync(`npm install -g ${providerInfo.package}`, {
|
|
211
|
+
stdio: 'pipe',
|
|
212
|
+
timeout: 180000,
|
|
213
|
+
});
|
|
214
|
+
spinner.stop(`${providerInfo.package} installed successfully!`);
|
|
215
|
+
return true;
|
|
216
|
+
}
|
|
217
|
+
catch (error) {
|
|
218
|
+
spinner.stop('Installation failed');
|
|
219
|
+
prompts.log.error(extractErrorMessage(error));
|
|
220
|
+
prompts.log.info(`Try manually: npm install -g ${providerInfo.package}`);
|
|
221
|
+
return false;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Run GLM-specific setup
|
|
226
|
+
*/
|
|
227
|
+
async function runGLMSetup(existingConfig) {
|
|
228
|
+
const providerInfo = PROVIDERS.glm;
|
|
229
|
+
// Step 1: Server Type
|
|
230
|
+
prompts.log.step(chalk.bold('Step 1/4 - Server Type'));
|
|
231
|
+
const serverType = await prompts.select({
|
|
232
|
+
message: 'Where do you want to run GLM models?',
|
|
233
|
+
options: [
|
|
234
|
+
{ value: 'cloud', label: 'Z.AI Cloud (Recommended)', hint: 'Official Z.AI API with GLM-4.6' },
|
|
235
|
+
{ value: 'local', label: 'Local Server', hint: 'Ollama, LM Studio, vLLM, etc.' },
|
|
236
|
+
],
|
|
237
|
+
initialValue: (existingConfig.serverType || 'cloud'),
|
|
238
|
+
});
|
|
239
|
+
exitIfCancelled(serverType);
|
|
240
|
+
if (serverType === 'cloud') {
|
|
241
|
+
return await runZAICloudSetup(existingConfig, providerInfo);
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
return await runLocalGLMSetup(existingConfig, providerInfo);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
119
247
|
/**
|
|
120
|
-
*
|
|
248
|
+
* Run Z.AI Cloud setup
|
|
121
249
|
*/
|
|
122
|
-
function
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
250
|
+
async function runZAICloudSetup(existingConfig, providerInfo) {
|
|
251
|
+
// Step 2: API Key
|
|
252
|
+
prompts.log.step(chalk.bold('Step 2/4 - Z.AI API Key'));
|
|
253
|
+
prompts.log.info(`Get your API key from: ${providerInfo.website}`);
|
|
254
|
+
let apiKey = '';
|
|
255
|
+
const envKey = process.env[providerInfo.apiKeyEnvVar];
|
|
256
|
+
const existingKey = existingConfig.apiKey;
|
|
257
|
+
if (existingKey && existingConfig.serverType === 'cloud') {
|
|
258
|
+
const maskedKey = existingKey.length > 12
|
|
259
|
+
? `${existingKey.substring(0, 8)}...${existingKey.substring(existingKey.length - 4)}`
|
|
260
|
+
: `${existingKey.substring(0, 4)}...`;
|
|
261
|
+
prompts.log.info(`Existing API key: ${maskedKey}`);
|
|
262
|
+
const reuseKey = await prompts.confirm({ message: 'Use existing API key?', initialValue: true });
|
|
263
|
+
exitIfCancelled(reuseKey);
|
|
264
|
+
if (reuseKey) {
|
|
265
|
+
apiKey = existingKey;
|
|
266
|
+
prompts.log.success('Using existing API key');
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
else if (envKey) {
|
|
270
|
+
prompts.log.info(`Found ${providerInfo.apiKeyEnvVar} in environment`);
|
|
271
|
+
const useEnvKey = await prompts.confirm({ message: 'Use API key from environment?', initialValue: true });
|
|
272
|
+
exitIfCancelled(useEnvKey);
|
|
273
|
+
if (useEnvKey) {
|
|
274
|
+
apiKey = envKey;
|
|
275
|
+
prompts.log.success('Using environment API key');
|
|
126
276
|
}
|
|
127
277
|
}
|
|
128
|
-
|
|
278
|
+
if (!apiKey) {
|
|
279
|
+
const newKey = await prompts.password({
|
|
280
|
+
message: 'Enter your Z.AI API key:',
|
|
281
|
+
validate: (value) => value?.trim().length > 0 ? undefined : 'API key is required',
|
|
282
|
+
});
|
|
283
|
+
exitIfCancelled(newKey);
|
|
284
|
+
apiKey = newKey.trim();
|
|
285
|
+
}
|
|
286
|
+
// Step 3: Model Selection
|
|
287
|
+
prompts.log.step(chalk.bold('Step 3/4 - Choose Model'));
|
|
288
|
+
const modelChoices = GLM_MODELS.map((m) => ({
|
|
289
|
+
value: m.id,
|
|
290
|
+
label: m.id === providerInfo.defaultModel ? `${m.name} (recommended)` : m.name,
|
|
291
|
+
hint: m.description,
|
|
292
|
+
}));
|
|
293
|
+
const selectedModel = await prompts.select({
|
|
294
|
+
message: 'Select default model:',
|
|
295
|
+
options: modelChoices,
|
|
296
|
+
initialValue: existingConfig.defaultModel || providerInfo.defaultModel,
|
|
297
|
+
});
|
|
298
|
+
exitIfCancelled(selectedModel);
|
|
299
|
+
// Step 4: Validate & Save
|
|
300
|
+
prompts.log.step(chalk.bold('Step 4/4 - Validate & Save'));
|
|
301
|
+
const spinner = prompts.spinner();
|
|
302
|
+
spinner.start('Validating Z.AI connection...');
|
|
303
|
+
const isValid = await validateProviderSetup({
|
|
304
|
+
baseURL: providerInfo.defaultBaseURL,
|
|
305
|
+
apiKey: apiKey,
|
|
306
|
+
model: selectedModel,
|
|
307
|
+
providerName: 'glm',
|
|
308
|
+
}, false);
|
|
309
|
+
if (isValid.success) {
|
|
310
|
+
spinner.stop('Z.AI connection validated successfully!');
|
|
311
|
+
}
|
|
312
|
+
else {
|
|
313
|
+
spinner.stop('Could not validate connection (will save anyway)');
|
|
314
|
+
}
|
|
315
|
+
return {
|
|
316
|
+
selectedProvider: 'glm',
|
|
317
|
+
serverType: 'cloud',
|
|
318
|
+
apiKey: apiKey,
|
|
319
|
+
baseURL: providerInfo.defaultBaseURL,
|
|
320
|
+
defaultModel: selectedModel,
|
|
321
|
+
currentModel: selectedModel,
|
|
322
|
+
maxTokens: 32768,
|
|
323
|
+
temperature: existingConfig.temperature ?? 0.7,
|
|
324
|
+
models: GLM_MODELS.map(m => m.id),
|
|
325
|
+
_provider: 'GLM (Z.AI Cloud)',
|
|
326
|
+
_website: providerInfo.website,
|
|
327
|
+
_isLocalServer: false,
|
|
328
|
+
};
|
|
129
329
|
}
|
|
130
330
|
/**
|
|
131
|
-
*
|
|
331
|
+
* Run Local GLM Server setup
|
|
132
332
|
*/
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
333
|
+
async function runLocalGLMSetup(existingConfig, _providerInfo) {
|
|
334
|
+
// Step 2: Local Server Detection
|
|
335
|
+
prompts.log.step(chalk.bold('Step 2/4 - Local Server'));
|
|
336
|
+
const spinner = prompts.spinner();
|
|
337
|
+
spinner.start('Detecting local inference servers...');
|
|
338
|
+
const detectedServers = await detectLocalServers();
|
|
339
|
+
const availableServers = detectedServers.filter(s => s.available);
|
|
340
|
+
spinner.stop(availableServers.length > 0
|
|
341
|
+
? `Found ${availableServers.length} running server(s)`
|
|
342
|
+
: 'No running servers detected');
|
|
343
|
+
let selectedBaseURL;
|
|
344
|
+
if (availableServers.length > 0) {
|
|
345
|
+
const serverChoices = [
|
|
346
|
+
...availableServers.map(s => ({ value: s.url, label: `${s.name} - ${s.url}` })),
|
|
347
|
+
{ value: '__custom__', label: 'Enter custom URL...' },
|
|
348
|
+
];
|
|
349
|
+
const serverSelection = await prompts.select({
|
|
350
|
+
message: 'Select your local server:',
|
|
351
|
+
options: serverChoices,
|
|
352
|
+
initialValue: existingConfig.baseURL || availableServers[0].url,
|
|
353
|
+
});
|
|
354
|
+
exitIfCancelled(serverSelection);
|
|
355
|
+
if (serverSelection === '__custom__') {
|
|
356
|
+
const customURL = await prompts.text({
|
|
357
|
+
message: 'Enter server URL:',
|
|
358
|
+
initialValue: 'http://localhost:11434/v1',
|
|
359
|
+
validate: (value) => {
|
|
360
|
+
try {
|
|
361
|
+
new URL(value);
|
|
362
|
+
return undefined;
|
|
159
363
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
await prompts.note(`Provider: ${existingProvider?.displayName || 'Unknown'}\n` +
|
|
163
|
-
`Location: ${configPath}`, 'Existing Configuration Found');
|
|
364
|
+
catch {
|
|
365
|
+
return 'Please enter a valid URL';
|
|
164
366
|
}
|
|
165
|
-
}
|
|
166
|
-
catch (error) {
|
|
167
|
-
prompts.log.warn(`Failed to load existing config: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
171
|
-
// STEP 1: Provider Selection
|
|
172
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
173
|
-
prompts.log.step(chalk.bold('Step 1/5 — Choose Provider'));
|
|
174
|
-
const providerChoices = Object.entries(PROVIDERS).map(([key, provider]) => ({
|
|
175
|
-
value: key,
|
|
176
|
-
label: provider.displayName,
|
|
177
|
-
hint: provider.description,
|
|
178
|
-
}));
|
|
179
|
-
const providerKey = await prompts.select({
|
|
180
|
-
message: 'Select your AI provider:',
|
|
181
|
-
options: providerChoices,
|
|
182
|
-
initialValue: existingProviderKey || 'z.ai',
|
|
367
|
+
},
|
|
183
368
|
});
|
|
184
|
-
exitIfCancelled(
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
message: 'Use existing API key?',
|
|
202
|
-
initialValue: true,
|
|
203
|
-
});
|
|
204
|
-
exitIfCancelled(reuseKey);
|
|
205
|
-
if (reuseKey) {
|
|
206
|
-
apiKey = existingConfig.apiKey;
|
|
207
|
-
prompts.log.success('Using existing API key');
|
|
208
|
-
}
|
|
209
|
-
else {
|
|
210
|
-
prompts.log.info(`Get your API key from: ${selectedProvider.website}`);
|
|
211
|
-
const newKey = await prompts.password({
|
|
212
|
-
message: `Enter new ${selectedProvider.displayName} API key:`,
|
|
213
|
-
validate: (value) => value?.trim().length > 0 ? undefined : 'API key is required',
|
|
214
|
-
});
|
|
215
|
-
exitIfCancelled(newKey);
|
|
216
|
-
apiKey = newKey.trim();
|
|
217
|
-
}
|
|
369
|
+
exitIfCancelled(customURL);
|
|
370
|
+
selectedBaseURL = customURL.trim();
|
|
371
|
+
}
|
|
372
|
+
else {
|
|
373
|
+
selectedBaseURL = serverSelection;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
else {
|
|
377
|
+
prompts.log.info('Common local server URLs:');
|
|
378
|
+
LOCAL_SERVERS.forEach(s => prompts.log.info(` ${s.name}: ${s.url}`));
|
|
379
|
+
const customURL = await prompts.text({
|
|
380
|
+
message: 'Enter your server URL:',
|
|
381
|
+
initialValue: existingConfig.baseURL || 'http://localhost:11434/v1',
|
|
382
|
+
validate: (value) => {
|
|
383
|
+
try {
|
|
384
|
+
new URL(value);
|
|
385
|
+
return undefined;
|
|
218
386
|
}
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
const previousProvider = PROVIDERS[existingProviderKey];
|
|
222
|
-
prompts.log.warn(`Switching from ${previousProvider?.displayName || 'previous provider'} to ${selectedProvider.displayName}`);
|
|
223
|
-
}
|
|
224
|
-
prompts.log.info(`Get your API key from: ${selectedProvider.website}`);
|
|
225
|
-
const newKey = await prompts.password({
|
|
226
|
-
message: `Enter your ${selectedProvider.displayName} API key:`,
|
|
227
|
-
validate: (value) => value?.trim().length > 0 ? undefined : 'API key is required',
|
|
228
|
-
});
|
|
229
|
-
exitIfCancelled(newKey);
|
|
230
|
-
apiKey = newKey.trim();
|
|
387
|
+
catch {
|
|
388
|
+
return 'Please enter a valid URL';
|
|
231
389
|
}
|
|
390
|
+
},
|
|
391
|
+
});
|
|
392
|
+
exitIfCancelled(customURL);
|
|
393
|
+
selectedBaseURL = customURL.trim();
|
|
394
|
+
}
|
|
395
|
+
// Step 3: Model Selection
|
|
396
|
+
prompts.log.step(chalk.bold('Step 3/4 - Choose Model'));
|
|
397
|
+
const modelSpinner = prompts.spinner();
|
|
398
|
+
modelSpinner.start('Fetching available models...');
|
|
399
|
+
let availableModels = await fetchLocalModels(selectedBaseURL);
|
|
400
|
+
modelSpinner.stop(availableModels.length > 0
|
|
401
|
+
? `Found ${availableModels.length} model(s)`
|
|
402
|
+
: 'Could not fetch models from server');
|
|
403
|
+
let selectedModel;
|
|
404
|
+
if (availableModels.length > 0) {
|
|
405
|
+
const modelChoices = [
|
|
406
|
+
...availableModels.map(m => ({ value: m.id, label: `${m.name} - ${m.description}` })),
|
|
407
|
+
{ value: '__custom__', label: 'Enter custom model name...' },
|
|
408
|
+
];
|
|
409
|
+
const modelSelection = await prompts.select({
|
|
410
|
+
message: 'Select model:',
|
|
411
|
+
options: modelChoices,
|
|
412
|
+
initialValue: existingConfig.defaultModel || availableModels[0]?.id,
|
|
413
|
+
});
|
|
414
|
+
exitIfCancelled(modelSelection);
|
|
415
|
+
if (modelSelection === '__custom__') {
|
|
416
|
+
const customModel = await prompts.text({ message: 'Enter model name:', initialValue: 'glm4' });
|
|
417
|
+
exitIfCancelled(customModel);
|
|
418
|
+
selectedModel = customModel.trim();
|
|
419
|
+
}
|
|
420
|
+
else {
|
|
421
|
+
selectedModel = modelSelection;
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
else {
|
|
425
|
+
const customModel = await prompts.text({
|
|
426
|
+
message: 'Enter model name:',
|
|
427
|
+
initialValue: existingConfig.defaultModel || 'glm4',
|
|
428
|
+
});
|
|
429
|
+
exitIfCancelled(customModel);
|
|
430
|
+
selectedModel = customModel.trim();
|
|
431
|
+
}
|
|
432
|
+
// Step 4: Validate & Save
|
|
433
|
+
prompts.log.step(chalk.bold('Step 4/4 - Validate & Save'));
|
|
434
|
+
const validateSpinner = prompts.spinner();
|
|
435
|
+
validateSpinner.start('Validating local server connection...');
|
|
436
|
+
const isValid = await checkLocalServer(selectedBaseURL);
|
|
437
|
+
validateSpinner.stop(isValid ? 'Local server connection validated!' : 'Server not responding (will save anyway)');
|
|
438
|
+
return {
|
|
439
|
+
selectedProvider: 'glm',
|
|
440
|
+
serverType: 'local',
|
|
441
|
+
apiKey: '',
|
|
442
|
+
baseURL: selectedBaseURL,
|
|
443
|
+
defaultModel: selectedModel,
|
|
444
|
+
currentModel: selectedModel,
|
|
445
|
+
maxTokens: 8192,
|
|
446
|
+
temperature: existingConfig.temperature ?? 0.7,
|
|
447
|
+
models: availableModels.length > 0 ? availableModels.map(m => m.id) : [selectedModel],
|
|
448
|
+
_provider: 'GLM (Local Server)',
|
|
449
|
+
_website: '',
|
|
450
|
+
_isLocalServer: true,
|
|
451
|
+
};
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* Run Grok-specific setup
|
|
455
|
+
*/
|
|
456
|
+
async function runGrokSetup(existingConfig) {
|
|
457
|
+
const providerInfo = PROVIDERS.grok;
|
|
458
|
+
// Step 1: API Key
|
|
459
|
+
prompts.log.step(chalk.bold('Step 1/5 - xAI API Key'));
|
|
460
|
+
prompts.log.info(`Get your API key from: ${providerInfo.website}`);
|
|
461
|
+
let apiKey = '';
|
|
462
|
+
const envKey = process.env[providerInfo.apiKeyEnvVar] || process.env['GROK_API_KEY'];
|
|
463
|
+
const existingKey = existingConfig.apiKey;
|
|
464
|
+
if (existingKey && existingConfig.selectedProvider === 'grok') {
|
|
465
|
+
const maskedKey = existingKey.length > 12
|
|
466
|
+
? `${existingKey.substring(0, 8)}...${existingKey.substring(existingKey.length - 4)}`
|
|
467
|
+
: `${existingKey.substring(0, 4)}...`;
|
|
468
|
+
prompts.log.info(`Existing API key: ${maskedKey}`);
|
|
469
|
+
const reuseKey = await prompts.confirm({ message: 'Use existing API key?', initialValue: true });
|
|
470
|
+
exitIfCancelled(reuseKey);
|
|
471
|
+
if (reuseKey) {
|
|
472
|
+
apiKey = existingKey;
|
|
473
|
+
prompts.log.success('Using existing API key');
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
else if (envKey) {
|
|
477
|
+
prompts.log.info('Found API key in environment');
|
|
478
|
+
const useEnvKey = await prompts.confirm({ message: 'Use API key from environment?', initialValue: true });
|
|
479
|
+
exitIfCancelled(useEnvKey);
|
|
480
|
+
if (useEnvKey) {
|
|
481
|
+
apiKey = envKey;
|
|
482
|
+
prompts.log.success('Using environment API key');
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
if (!apiKey) {
|
|
486
|
+
const newKey = await prompts.password({
|
|
487
|
+
message: 'Enter your xAI API key:',
|
|
488
|
+
validate: (value) => {
|
|
489
|
+
if (!value?.trim())
|
|
490
|
+
return 'API key is required';
|
|
491
|
+
if (!value.startsWith('xai-'))
|
|
492
|
+
return 'xAI API keys start with "xai-"';
|
|
493
|
+
return undefined;
|
|
494
|
+
},
|
|
495
|
+
});
|
|
496
|
+
exitIfCancelled(newKey);
|
|
497
|
+
apiKey = newKey.trim();
|
|
498
|
+
}
|
|
499
|
+
// Validate API key
|
|
500
|
+
const validateSpinner = prompts.spinner();
|
|
501
|
+
validateSpinner.start('Validating API key...');
|
|
502
|
+
const isValid = await validateCloudConnection(providerInfo.defaultBaseURL, apiKey);
|
|
503
|
+
validateSpinner.stop(isValid ? 'API key validated!' : 'Could not validate (will save anyway)');
|
|
504
|
+
// Step 2: Model Selection
|
|
505
|
+
prompts.log.step(chalk.bold('Step 2/5 - Choose Model'));
|
|
506
|
+
prompts.log.info('Grok 3 Series - Extended thinking with reasoning_effort');
|
|
507
|
+
prompts.log.info('Grok 2 Series - Fast and capable, with vision option');
|
|
508
|
+
const modelChoices = GROK_MODELS.map((m) => {
|
|
509
|
+
const badges = [];
|
|
510
|
+
if (m.supportsThinking)
|
|
511
|
+
badges.push('Thinking');
|
|
512
|
+
if (m.supportsVision)
|
|
513
|
+
badges.push('Vision');
|
|
514
|
+
if (m.supportsSearch)
|
|
515
|
+
badges.push('Search');
|
|
516
|
+
const badgeStr = badges.length > 0 ? ` [${badges.join(', ')}]` : '';
|
|
517
|
+
return {
|
|
518
|
+
value: m.id,
|
|
519
|
+
label: m.id === providerInfo.defaultModel ? `${m.name} (recommended)` : m.name,
|
|
520
|
+
hint: `${m.description}${badgeStr}`,
|
|
521
|
+
};
|
|
522
|
+
});
|
|
523
|
+
const selectedModel = await prompts.select({
|
|
524
|
+
message: 'Select default model:',
|
|
525
|
+
options: modelChoices,
|
|
526
|
+
initialValue: existingConfig.defaultModel || providerInfo.defaultModel,
|
|
527
|
+
});
|
|
528
|
+
exitIfCancelled(selectedModel);
|
|
529
|
+
const selectedModelInfo = GROK_MODELS.find(m => m.id === selectedModel);
|
|
530
|
+
// Step 3: Thinking Mode (only for Grok 3)
|
|
531
|
+
let thinkingMode = 'off';
|
|
532
|
+
prompts.log.step(chalk.bold('Step 3/5 - Extended Thinking'));
|
|
533
|
+
if (selectedModelInfo?.supportsThinking) {
|
|
534
|
+
prompts.log.info('Grok 3 supports extended thinking via reasoning_effort:');
|
|
535
|
+
prompts.log.info(' off - Standard responses, faster');
|
|
536
|
+
prompts.log.info(' low - Light reasoning, balanced');
|
|
537
|
+
prompts.log.info(' high - Deep reasoning, best for complex tasks');
|
|
538
|
+
const thinkingSelection = await prompts.select({
|
|
539
|
+
message: 'Default thinking mode:',
|
|
540
|
+
options: [
|
|
541
|
+
{ value: 'off', label: 'off - Standard mode (fastest)' },
|
|
542
|
+
{ value: 'low', label: 'low - Light reasoning (balanced)' },
|
|
543
|
+
{ value: 'high', label: 'high - Deep reasoning (recommended for coding)' },
|
|
544
|
+
],
|
|
545
|
+
initialValue: existingConfig.grok?.thinkingMode || 'high',
|
|
546
|
+
});
|
|
547
|
+
exitIfCancelled(thinkingSelection);
|
|
548
|
+
thinkingMode = thinkingSelection;
|
|
549
|
+
if (thinkingMode !== 'off') {
|
|
550
|
+
prompts.log.success(`Extended thinking enabled: ${thinkingMode}`);
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
else {
|
|
554
|
+
prompts.log.info(`${selectedModel} doesn't support extended thinking.`);
|
|
555
|
+
prompts.log.info('Choose a Grok 3 model for this feature.');
|
|
556
|
+
}
|
|
557
|
+
// Step 4: Live Search
|
|
558
|
+
prompts.log.step(chalk.bold('Step 4/5 - Live Web Search'));
|
|
559
|
+
prompts.log.info('Grok can search the web in real-time for up-to-date information.');
|
|
560
|
+
const enableLiveSearch = await prompts.confirm({
|
|
561
|
+
message: 'Enable live web search by default?',
|
|
562
|
+
initialValue: existingConfig.grok?.liveSearch ?? true,
|
|
563
|
+
});
|
|
564
|
+
exitIfCancelled(enableLiveSearch);
|
|
565
|
+
if (enableLiveSearch) {
|
|
566
|
+
prompts.log.success('Live search enabled');
|
|
567
|
+
}
|
|
568
|
+
else {
|
|
569
|
+
prompts.log.info('Live search disabled (use --search flag to enable per-request)');
|
|
570
|
+
}
|
|
571
|
+
// Step 5: Review & Save
|
|
572
|
+
prompts.log.step(chalk.bold('Step 5/5 - Review & Save'));
|
|
573
|
+
const summaryLines = [
|
|
574
|
+
`Model: ${selectedModel}`,
|
|
575
|
+
];
|
|
576
|
+
if (selectedModelInfo?.supportsThinking) {
|
|
577
|
+
summaryLines.push(`Thinking Mode: ${thinkingMode === 'off' ? 'disabled' : thinkingMode}`);
|
|
578
|
+
}
|
|
579
|
+
summaryLines.push(`Live Search: ${enableLiveSearch ? 'enabled' : 'disabled'}`);
|
|
580
|
+
await prompts.note(summaryLines.join('\n'), 'Configuration Preview');
|
|
581
|
+
const confirmSave = await prompts.confirm({ message: 'Save this configuration?', initialValue: true });
|
|
582
|
+
exitIfCancelled(confirmSave);
|
|
583
|
+
if (!confirmSave) {
|
|
584
|
+
return null;
|
|
585
|
+
}
|
|
586
|
+
return {
|
|
587
|
+
selectedProvider: 'grok',
|
|
588
|
+
serverType: 'cloud',
|
|
589
|
+
apiKey: apiKey,
|
|
590
|
+
baseURL: providerInfo.defaultBaseURL,
|
|
591
|
+
defaultModel: selectedModel,
|
|
592
|
+
currentModel: selectedModel,
|
|
593
|
+
maxTokens: 32768,
|
|
594
|
+
temperature: existingConfig.temperature ?? 0.7,
|
|
595
|
+
models: GROK_MODELS.map(m => m.id),
|
|
596
|
+
_provider: 'Grok (xAI)',
|
|
597
|
+
_website: providerInfo.website,
|
|
598
|
+
_isLocalServer: false,
|
|
599
|
+
grok: {
|
|
600
|
+
thinkingMode: thinkingMode,
|
|
601
|
+
liveSearch: enableLiveSearch,
|
|
602
|
+
},
|
|
603
|
+
};
|
|
604
|
+
}
|
|
605
|
+
/**
|
|
606
|
+
* Setup Z.AI MCP servers
|
|
607
|
+
*/
|
|
608
|
+
async function setupZAIMCPServers(apiKey) {
|
|
609
|
+
await prompts.note('Enabling Z.AI MCP servers for enhanced capabilities:\n' +
|
|
610
|
+
'- Web Search - Real-time web search\n' +
|
|
611
|
+
'- Web Reader - Extract content from web pages\n' +
|
|
612
|
+
'- Vision - Image/video analysis', 'Z.AI MCP Integration');
|
|
613
|
+
const mcpSpinner = prompts.spinner();
|
|
614
|
+
mcpSpinner.start('Configuring Z.AI MCP servers...');
|
|
615
|
+
try {
|
|
616
|
+
const status = await detectZAIServices();
|
|
617
|
+
const serversToAdd = getRecommendedServers(status);
|
|
618
|
+
for (const serverName of serversToAdd) {
|
|
619
|
+
try {
|
|
620
|
+
removeMCPServer(serverName);
|
|
232
621
|
}
|
|
233
|
-
|
|
234
|
-
|
|
622
|
+
catch { /* ignore */ }
|
|
623
|
+
}
|
|
624
|
+
let successCount = 0;
|
|
625
|
+
for (const serverName of serversToAdd) {
|
|
626
|
+
try {
|
|
627
|
+
const config = generateZAIServerConfig(serverName, apiKey);
|
|
628
|
+
addMCPServer(config);
|
|
629
|
+
successCount++;
|
|
235
630
|
}
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
631
|
+
catch { /* skip */ }
|
|
632
|
+
}
|
|
633
|
+
mcpSpinner.stop(`${successCount} Z.AI MCP server${successCount !== 1 ? 's' : ''} configured`);
|
|
634
|
+
}
|
|
635
|
+
catch (error) {
|
|
636
|
+
mcpSpinner.stop('Could not set up Z.AI MCP servers');
|
|
637
|
+
prompts.log.warn(extractErrorMessage(error));
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
/**
|
|
641
|
+
* Create setup command
|
|
642
|
+
*/
|
|
643
|
+
export function createSetupCommand() {
|
|
644
|
+
const setupCommand = new Command('setup');
|
|
645
|
+
setupCommand
|
|
646
|
+
.description('Configure your LLM provider (GLM or Grok)')
|
|
647
|
+
.option('--force', 'Overwrite existing configuration')
|
|
648
|
+
.action(async () => {
|
|
649
|
+
try {
|
|
650
|
+
prompts.intro(chalk.cyan('AX CLI Setup Wizard'));
|
|
651
|
+
await prompts.note('This wizard will configure your AI coding assistant\n' +
|
|
652
|
+
'with your preferred LLM provider.', 'Welcome');
|
|
653
|
+
// Provider Selection
|
|
654
|
+
prompts.log.step(chalk.bold('Choose Provider'));
|
|
655
|
+
const provider = await prompts.select({
|
|
656
|
+
message: 'Which LLM provider do you want to use?',
|
|
657
|
+
options: [
|
|
658
|
+
{
|
|
659
|
+
value: 'glm',
|
|
660
|
+
label: 'GLM (Z.AI)',
|
|
661
|
+
hint: PROVIDERS.glm.description,
|
|
662
|
+
},
|
|
663
|
+
{
|
|
664
|
+
value: 'grok',
|
|
665
|
+
label: 'Grok (xAI)',
|
|
666
|
+
hint: PROVIDERS.grok.description,
|
|
667
|
+
},
|
|
668
|
+
],
|
|
255
669
|
});
|
|
256
|
-
exitIfCancelled(
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
});
|
|
264
|
-
exitIfCancelled(manualModel);
|
|
265
|
-
chosenModel = manualModel.trim();
|
|
670
|
+
exitIfCancelled(provider);
|
|
671
|
+
// Load existing config for selected provider
|
|
672
|
+
const existingConfig = loadProviderConfig(provider);
|
|
673
|
+
// Run provider-specific setup
|
|
674
|
+
let newConfig = null;
|
|
675
|
+
if (provider === 'glm') {
|
|
676
|
+
newConfig = await runGLMSetup(existingConfig);
|
|
266
677
|
}
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
270
|
-
prompts.log.step(chalk.bold('Step 4/5 — Validate Connection'));
|
|
271
|
-
const spinner = prompts.spinner();
|
|
272
|
-
spinner.start('Validating connection...');
|
|
273
|
-
const validationResult = await validateProviderSetup({
|
|
274
|
-
baseURL: selectedProvider.baseURL,
|
|
275
|
-
apiKey: apiKey,
|
|
276
|
-
model: chosenModel,
|
|
277
|
-
providerName: selectedProvider.name,
|
|
278
|
-
}, !options.validate);
|
|
279
|
-
spinner.stop('Validation complete');
|
|
280
|
-
// If validator returned models list, offer quick re-pick
|
|
281
|
-
if (validationResult.availableModels && validationResult.availableModels.length > 0) {
|
|
282
|
-
const uniqueAvailable = Array.from(new Set(validationResult.availableModels));
|
|
283
|
-
const availableChoices = uniqueAvailable.map(model => ({
|
|
284
|
-
value: model,
|
|
285
|
-
label: model,
|
|
286
|
-
}));
|
|
287
|
-
availableChoices.push({ value: chosenModel, label: `${chosenModel} (keep current)` });
|
|
288
|
-
const altModel = await prompts.select({
|
|
289
|
-
message: 'Select a validated model (or keep current):',
|
|
290
|
-
options: availableChoices,
|
|
291
|
-
initialValue: chosenModel,
|
|
292
|
-
});
|
|
293
|
-
exitIfCancelled(altModel);
|
|
294
|
-
chosenModel = altModel;
|
|
295
|
-
}
|
|
296
|
-
if (validationResult.success) {
|
|
297
|
-
prompts.log.success('Connection validated successfully');
|
|
298
|
-
}
|
|
299
|
-
else if (options.validate !== false) {
|
|
300
|
-
prompts.log.warn('Validation failed, but you can still save the configuration.');
|
|
301
|
-
const proceedAnyway = await prompts.confirm({
|
|
302
|
-
message: 'Save configuration anyway?',
|
|
303
|
-
initialValue: false,
|
|
304
|
-
});
|
|
305
|
-
if (prompts.isCancel(proceedAnyway) || !proceedAnyway) {
|
|
306
|
-
prompts.cancel('Setup cancelled. Please check your settings and try again.');
|
|
307
|
-
process.exit(0);
|
|
308
|
-
}
|
|
678
|
+
else {
|
|
679
|
+
newConfig = await runGrokSetup(existingConfig);
|
|
309
680
|
}
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
313
|
-
prompts.log.step(chalk.bold('Step 5/5 — Review & Save'));
|
|
314
|
-
const maxTokens = (selectedProvider.name === 'z.ai' || selectedProvider.name === 'z.ai-free') ? 32768 : 8192;
|
|
315
|
-
await prompts.note(`Provider: ${selectedProvider.displayName}\n` +
|
|
316
|
-
`Base URL: ${selectedProvider.baseURL}\n` +
|
|
317
|
-
`Model: ${chosenModel}\n` +
|
|
318
|
-
`Max Tokens: ${existingConfig?.maxTokens ?? maxTokens}\n` +
|
|
319
|
-
`Config path: ${configPath}`, 'Configuration Summary');
|
|
320
|
-
const confirmSave = await prompts.confirm({
|
|
321
|
-
message: 'Save these settings?',
|
|
322
|
-
initialValue: true,
|
|
323
|
-
});
|
|
324
|
-
exitIfCancelled(confirmSave);
|
|
325
|
-
if (!confirmSave) {
|
|
326
|
-
prompts.cancel('Setup cancelled. No changes saved.');
|
|
681
|
+
if (!newConfig) {
|
|
682
|
+
prompts.cancel('Setup cancelled.');
|
|
327
683
|
process.exit(0);
|
|
328
684
|
}
|
|
329
|
-
//
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
currentModel: chosenModel,
|
|
336
|
-
maxTokens: existingConfig?.maxTokens ?? maxTokens,
|
|
337
|
-
temperature: existingConfig?.temperature ?? 0.7,
|
|
338
|
-
models: Array.from(new Set([chosenModel, ...(existingConfig?.models || []), selectedProvider.defaultModel].filter(Boolean))),
|
|
339
|
-
_provider: selectedProvider.displayName,
|
|
340
|
-
_website: selectedProvider.website,
|
|
341
|
-
};
|
|
342
|
-
// Persist using settings manager to ensure encryption + permissions
|
|
343
|
-
settingsManager.saveUserSettings(mergedConfig);
|
|
344
|
-
prompts.log.success('Configuration saved successfully!');
|
|
345
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
346
|
-
// Z.AI MCP Integration
|
|
347
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
348
|
-
if (selectedProvider.name === 'z.ai' || selectedProvider.name === 'z.ai-free') {
|
|
349
|
-
await prompts.note('Enabling Z.AI MCP servers for enhanced capabilities:\n' +
|
|
350
|
-
'• Web Search - Real-time web search\n' +
|
|
351
|
-
'• Web Reader - Extract content from web pages\n' +
|
|
352
|
-
'• Vision - Image/video analysis (Node.js 22+)', 'Z.AI MCP Integration');
|
|
353
|
-
const mcpSpinner = prompts.spinner();
|
|
354
|
-
mcpSpinner.start('Configuring Z.AI MCP servers...');
|
|
355
|
-
try {
|
|
356
|
-
const status = await detectZAIServices();
|
|
357
|
-
const serversToAdd = getRecommendedServers(status);
|
|
358
|
-
// Remove existing Z.AI MCP servers first
|
|
359
|
-
for (const serverName of serversToAdd) {
|
|
360
|
-
try {
|
|
361
|
-
removeMCPServer(serverName);
|
|
362
|
-
}
|
|
363
|
-
catch {
|
|
364
|
-
// Ignore errors if server doesn't exist
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
let successCount = 0;
|
|
368
|
-
for (const serverName of serversToAdd) {
|
|
369
|
-
try {
|
|
370
|
-
const config = generateZAIServerConfig(serverName, apiKey);
|
|
371
|
-
addMCPServer(config);
|
|
372
|
-
successCount++;
|
|
373
|
-
}
|
|
374
|
-
catch {
|
|
375
|
-
// Skip failed servers
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
mcpSpinner.stop(`${successCount} Z.AI MCP server${successCount !== 1 ? 's' : ''} configured`);
|
|
379
|
-
}
|
|
380
|
-
catch (error) {
|
|
381
|
-
mcpSpinner.stop('Could not set up Z.AI MCP servers');
|
|
382
|
-
prompts.log.warn(`${extractErrorMessage(error)}`);
|
|
383
|
-
prompts.log.info('You can enable them later with: ax-cli mcp add-zai');
|
|
384
|
-
}
|
|
685
|
+
// Save configuration to provider-specific directory
|
|
686
|
+
saveProviderConfig(provider, newConfig);
|
|
687
|
+
prompts.log.success('Configuration saved!');
|
|
688
|
+
// Setup Z.AI MCP servers for GLM cloud
|
|
689
|
+
if (provider === 'glm' && newConfig.serverType === 'cloud' && newConfig.apiKey) {
|
|
690
|
+
await setupZAIMCPServers(newConfig.apiKey);
|
|
385
691
|
}
|
|
386
|
-
//
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
await prompts.note(
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
692
|
+
// Show summary
|
|
693
|
+
const providerInfo = PROVIDERS[provider];
|
|
694
|
+
const configPath = getConfigPath(provider);
|
|
695
|
+
await prompts.note(`Provider: ${newConfig._provider}\n` +
|
|
696
|
+
`Server: ${newConfig._isLocalServer ? newConfig.baseURL : 'Cloud API'}\n` +
|
|
697
|
+
`Model: ${newConfig.defaultModel}\n` +
|
|
698
|
+
`Config: ${configPath}`, 'Configuration Summary');
|
|
699
|
+
// Check if provider CLI is installed
|
|
700
|
+
const installed = isProviderInstalled(provider);
|
|
701
|
+
if (!installed) {
|
|
702
|
+
prompts.log.warn(`${providerInfo.cliName} is not installed.`);
|
|
703
|
+
const shouldInstall = await prompts.confirm({
|
|
704
|
+
message: `Install ${providerInfo.cliName}?`,
|
|
705
|
+
initialValue: true,
|
|
706
|
+
});
|
|
707
|
+
if (!prompts.isCancel(shouldInstall) && shouldInstall) {
|
|
708
|
+
await installProvider(provider);
|
|
399
709
|
}
|
|
400
710
|
else {
|
|
401
|
-
|
|
402
|
-
prompts.log.info('Run manually: ax update -y');
|
|
711
|
+
prompts.log.info(`Install later: npm install -g ${providerInfo.package}`);
|
|
403
712
|
}
|
|
404
713
|
}
|
|
405
714
|
else {
|
|
406
|
-
|
|
407
|
-
const installResponse = await prompts.confirm({
|
|
408
|
-
message: 'Install AutomatosX for multi-agent AI orchestration?',
|
|
409
|
-
initialValue: true,
|
|
410
|
-
});
|
|
411
|
-
if (!prompts.isCancel(installResponse) && installResponse) {
|
|
412
|
-
const installSpinner = prompts.spinner();
|
|
413
|
-
installSpinner.start('Installing AutomatosX...');
|
|
414
|
-
const installed = await installAutomatosX();
|
|
415
|
-
if (installed) {
|
|
416
|
-
installSpinner.stop('AutomatosX installed successfully!');
|
|
417
|
-
prompts.log.info('Run `ax list agents` to see available AI agents.');
|
|
418
|
-
axStatus = getAutomatosXStatus(); // Refresh status after install
|
|
419
|
-
}
|
|
420
|
-
else {
|
|
421
|
-
installSpinner.stop('Could not install AutomatosX');
|
|
422
|
-
prompts.log.info('Install manually: npm install -g @defai.digital/automatosx');
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
else if (!prompts.isCancel(installResponse)) {
|
|
426
|
-
prompts.log.info('You can install AutomatosX later: npm install -g @defai.digital/automatosx');
|
|
427
|
-
}
|
|
428
|
-
}
|
|
429
|
-
catch {
|
|
430
|
-
prompts.log.info('Skipping AutomatosX setup (non-interactive mode).');
|
|
431
|
-
prompts.log.info('Install manually: npm install -g @defai.digital/automatosx');
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
// Agent-First Mode Configuration (only ask if AutomatosX is available)
|
|
435
|
-
if (axStatus.installed) {
|
|
436
|
-
await prompts.note('When enabled, ax-cli automatically routes tasks to specialized agents\n' +
|
|
437
|
-
'based on keywords (e.g., "test" → testing agent, "refactor" → refactoring agent).\n' +
|
|
438
|
-
'When disabled (default), you use the direct LLM and can invoke agents explicitly.', 'Agent-First Mode');
|
|
439
|
-
try {
|
|
440
|
-
const enableAgentFirst = await prompts.confirm({
|
|
441
|
-
message: 'Enable agent-first mode (auto-route to specialized agents)?',
|
|
442
|
-
initialValue: false,
|
|
443
|
-
});
|
|
444
|
-
if (!prompts.isCancel(enableAgentFirst)) {
|
|
445
|
-
const currentSettings = settingsManager.loadUserSettings();
|
|
446
|
-
settingsManager.saveUserSettings({
|
|
447
|
-
...currentSettings,
|
|
448
|
-
agentFirst: {
|
|
449
|
-
enabled: enableAgentFirst,
|
|
450
|
-
confidenceThreshold: 0.6,
|
|
451
|
-
showAgentIndicator: true,
|
|
452
|
-
defaultAgent: 'standard',
|
|
453
|
-
excludedAgents: [],
|
|
454
|
-
},
|
|
455
|
-
});
|
|
456
|
-
if (enableAgentFirst) {
|
|
457
|
-
prompts.log.success('Agent-first mode enabled');
|
|
458
|
-
prompts.log.info('Tasks will be automatically routed to specialized agents.');
|
|
459
|
-
}
|
|
460
|
-
else {
|
|
461
|
-
prompts.log.success('Agent-first mode disabled (default)');
|
|
462
|
-
prompts.log.info('Use direct LLM. Invoke agents with --agent flag when needed.');
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
catch {
|
|
467
|
-
prompts.log.info('Skipping agent-first configuration (non-interactive mode).');
|
|
468
|
-
}
|
|
715
|
+
prompts.log.success(`${providerInfo.cliName} is installed`);
|
|
469
716
|
}
|
|
470
|
-
//
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
`Provider: ${selectedProvider.displayName}\n` +
|
|
475
|
-
`Base URL: ${selectedProvider.baseURL}\n` +
|
|
476
|
-
`Model: ${chosenModel}\n` +
|
|
477
|
-
`Max Tokens: ${mergedConfig.maxTokens || maxTokens}\n` +
|
|
478
|
-
`Temperature: ${mergedConfig.temperature ?? 0.7}`, 'Configuration Details');
|
|
479
|
-
await prompts.note('1. Start interactive mode:\n' +
|
|
480
|
-
' $ ax-cli\n\n' +
|
|
481
|
-
'2. Initialize your project (inside ax-cli):\n' +
|
|
482
|
-
' > /init\n\n' +
|
|
483
|
-
'3. Or run a quick test:\n' +
|
|
484
|
-
' $ ax-cli -p "Hello, introduce yourself"', 'Next Steps');
|
|
485
|
-
await prompts.note(`• Edit config manually: ${configPath}\n` +
|
|
486
|
-
'• See example configs: Check "_examples" in config file\n' +
|
|
487
|
-
'• View help: ax-cli --help\n' +
|
|
488
|
-
'• Documentation: https://github.com/defai-digital/ax-cli', 'Tips');
|
|
717
|
+
// Next steps
|
|
718
|
+
await prompts.note(`1. Run "${providerInfo.cliName}" to start\n` +
|
|
719
|
+
`2. Or run "ax-cli" (auto-launches ${providerInfo.cliName})\n` +
|
|
720
|
+
`3. Run "${providerInfo.cliName} --help" for all options`, 'Next Steps');
|
|
489
721
|
prompts.outro(chalk.green('Setup complete! Happy coding!'));
|
|
490
722
|
}
|
|
491
723
|
catch (error) {
|
|
492
|
-
|
|
724
|
+
const err = error;
|
|
725
|
+
if (err?.message === 'canceled' || err?.name === 'canceled') {
|
|
493
726
|
prompts.cancel('Setup cancelled by user.');
|
|
494
727
|
process.exit(0);
|
|
495
728
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@defai.digital/ax-cli",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.9",
|
|
4
4
|
"sdkVersion": "1.3.0",
|
|
5
5
|
"description": "Enterprise-Class AI Command Line Interface - Primary support for GLM (General Language Model) with multi-provider AI orchestration powered by AutomatosX.",
|
|
6
6
|
"type": "module",
|