@defai.digital/ax-cli 4.1.7 → 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.
@@ -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
- * Setup command - Initialize ~/.ax-cli/config.json with provider selection
12
+ * Create setup command
4
13
  */
5
14
  export declare function createSetupCommand(): Command;
@@ -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 { dirname } from 'path';
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 - exits process if cancelled
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
- * Check AutomatosX status - returns version if installed, null otherwise
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 getAutomatosXStatus() {
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 result = spawnSync('ax', ['--version'], {
28
- encoding: 'utf-8',
29
- timeout: 5000,
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
- return { installed: false, version: null };
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
- * Update AutomatosX to latest version
118
+ * Check if a local server is running
44
119
  */
45
- async function updateAutomatosX() {
120
+ async function checkLocalServer(url) {
46
121
  try {
47
- execSync('ax update -y', {
48
- stdio: 'inherit',
49
- timeout: 120000 // 2 minutes timeout
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
- return true;
128
+ clearTimeout(timeout);
129
+ return response.ok;
52
130
  }
53
131
  catch {
54
132
  return false;
55
133
  }
56
134
  }
57
135
  /**
58
- * Install AutomatosX globally
136
+ * Fetch models from local server
59
137
  */
60
- async function installAutomatosX() {
138
+ async function fetchLocalModels(baseURL) {
61
139
  try {
62
- execSync('npm install -g @defai.digital/automatosx', {
63
- stdio: 'inherit',
64
- timeout: 180000 // 3 minutes timeout
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
- return true;
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
- const PROVIDERS = {
73
- 'z.ai': {
74
- name: 'z.ai',
75
- displayName: 'Z.AI (GLM Models)',
76
- baseURL: 'https://api.z.ai/api/coding/paas/v4',
77
- defaultModel: 'glm-4.6',
78
- requiresApiKey: true,
79
- website: 'https://z.ai',
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
- * Determine provider key from baseURL
248
+ * Run Z.AI Cloud setup
121
249
  */
122
- function getProviderFromBaseURL(baseURL) {
123
- for (const [key, provider] of Object.entries(PROVIDERS)) {
124
- if (provider.baseURL === baseURL) {
125
- return key;
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
- return null;
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
- * Setup command - Initialize ~/.ax-cli/config.json with provider selection
331
+ * Run Local GLM Server setup
132
332
  */
133
- export function createSetupCommand() {
134
- const setupCommand = new Command('setup');
135
- setupCommand
136
- .description('Initialize AX CLI configuration with AI provider selection')
137
- .option('--force', 'Overwrite existing configuration')
138
- .option('--no-validate', 'Skip validation of API endpoint and credentials')
139
- .action(async (options) => {
140
- try {
141
- // Show intro
142
- prompts.intro(chalk.cyan('AX CLI Setup'));
143
- // Always use the NEW path ~/.ax-cli/config.json
144
- const configPath = CONFIG_PATHS.USER_CONFIG;
145
- const configDir = dirname(configPath);
146
- const settingsManager = getSettingsManager();
147
- // Ensure config directory exists
148
- if (!existsSync(configDir)) {
149
- mkdirSync(configDir, { recursive: true });
150
- }
151
- // Load existing config to check for existing API key BEFORE provider selection
152
- let existingConfig = null;
153
- let existingProviderKey = null;
154
- if (existsSync(configPath)) {
155
- try {
156
- existingConfig = settingsManager.loadUserSettings();
157
- if (existingConfig.baseURL) {
158
- existingProviderKey = getProviderFromBaseURL(existingConfig.baseURL);
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
- if (existingProviderKey && !options.force) {
161
- const existingProvider = PROVIDERS[existingProviderKey];
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(providerKey);
185
- const selectedProvider = PROVIDERS[providerKey];
186
- // ═══════════════════════════════════════════════════════════════════
187
- // STEP 2: API Key
188
- // ═══════════════════════════════════════════════════════════════════
189
- prompts.log.step(chalk.bold('Step 2/5 — API Key'));
190
- let apiKey = '';
191
- if (selectedProvider.requiresApiKey) {
192
- const isSameProvider = existingProviderKey === providerKey;
193
- const hasExistingKey = existingConfig?.apiKey && typeof existingConfig.apiKey === 'string' && existingConfig.apiKey.trim().length > 0;
194
- if (isSameProvider && hasExistingKey && existingConfig?.apiKey) {
195
- const key = existingConfig.apiKey;
196
- const maskedKey = key.length > 12
197
- ? `${key.substring(0, 8)}...${key.substring(key.length - 4)}`
198
- : `${key.substring(0, Math.min(4, key.length))}...`;
199
- await prompts.note(`Key: ${maskedKey}`, `Existing API Key for ${selectedProvider.displayName}`);
200
- const reuseKey = await prompts.confirm({
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
- else {
220
- if (hasExistingKey && !isSameProvider && existingProviderKey) {
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
- else {
234
- prompts.log.success(`${selectedProvider.displayName} doesn't require an API key`);
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
- // STEP 3: Model Selection
238
- // ═══════════════════════════════════════════════════════════════════
239
- prompts.log.step(chalk.bold('Step 3/5 — Choose Model'));
240
- const existingModel = existingConfig?.defaultModel || existingConfig?.currentModel;
241
- const baseModelOptions = Array.from(new Set([
242
- selectedProvider.defaultModel,
243
- ...(existingConfig?.models || []),
244
- existingModel,
245
- ].filter(Boolean)));
246
- const modelChoices = baseModelOptions.map(model => ({
247
- value: model,
248
- label: model === selectedProvider.defaultModel ? `${model} (default)` : model,
249
- }));
250
- modelChoices.push({ value: '__custom__', label: 'Other (enter manually)' });
251
- const modelSelection = await prompts.select({
252
- message: 'Select default model:',
253
- options: modelChoices,
254
- initialValue: existingModel || selectedProvider.defaultModel,
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(modelSelection);
257
- let chosenModel = modelSelection;
258
- if (modelSelection === '__custom__') {
259
- const manualModel = await prompts.text({
260
- message: 'Enter model ID:',
261
- initialValue: selectedProvider.defaultModel,
262
- validate: (value) => value?.trim().length > 0 ? undefined : 'Model is required',
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
- // STEP 4: Validate Connection
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
- // STEP 5: Review & Save
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
- // Create configuration object
330
- const mergedConfig = {
331
- ...(existingConfig || {}),
332
- apiKey: apiKey,
333
- baseURL: selectedProvider.baseURL,
334
- defaultModel: chosenModel,
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
- // AutomatosX Integration
388
- // ═══════════════════════════════════════════════════════════════════
389
- await prompts.note('Multi-agent AI orchestration with persistent memory and collaboration.', 'AutomatosX Agent Orchestration');
390
- let axStatus = getAutomatosXStatus();
391
- if (axStatus.installed) {
392
- prompts.log.success(`AutomatosX detected${axStatus.version ? ` (v${axStatus.version})` : ''}`);
393
- const axSpinner = prompts.spinner();
394
- axSpinner.start('Checking for updates...');
395
- const updated = await updateAutomatosX();
396
- if (updated) {
397
- axStatus = getAutomatosXStatus(); // Refresh version after update
398
- axSpinner.stop(`AutomatosX updated${axStatus.version ? ` to v${axStatus.version}` : ''}`);
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
- axSpinner.stop('Could not update AutomatosX');
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
- try {
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
- // Completion Summary
472
- // ═══════════════════════════════════════════════════════════════════
473
- await prompts.note(`Location: ${configPath}\n` +
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
- if (error?.message === 'canceled' || error?.name === 'canceled') {
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":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AA4BjE,uBAAuB;AACvB,MAAM,SAAS,GAAmC;IAChD,GAAG,EAAE;QACH,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,YAAY;QACzB,OAAO,EAAE,QAAQ;QACjB,OAAO,EAAE,uBAAuB;QAChC,cAAc,EAAE,qCAAqC;QACrD,YAAY,EAAE,SAAS;QACvB,YAAY,EAAE,aAAa;QAC3B,OAAO,EAAE,cAAc;QACvB,WAAW,EAAE,6CAA6C;QAC1D,SAAS,EAAE,SAAS;KACrB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,YAAY;QACzB,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,wBAAwB;QACjC,cAAc,EAAE,qBAAqB;QACrC,YAAY,EAAE,QAAQ;QACtB,YAAY,EAAE,aAAa;QAC3B,OAAO,EAAE,sBAAsB;QAC/B,WAAW,EAAE,wDAAwD;QACrE,SAAS,EAAE,UAAU;KACtB;CACF,CAAC;AAEF,aAAa;AACb,MAAM,UAAU,GAAgB;IAC9B,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,2CAA2C,EAAE,aAAa,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE;IAC3I,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,0BAA0B,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE;IACzH,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,EAAE;IAC1F,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,2BAA2B,EAAE,aAAa,EAAE,MAAM,EAAE;CAC5G,CAAC;AAEF,cAAc;AACd,MAAM,WAAW,GAAgB;IAC/B,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qCAAqC,EAAE,aAAa,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;IACzJ,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,iCAAiC,EAAE,aAAa,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;IAC/J,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iCAAiC,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE;IAC7H,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,wCAAwC,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;IACvK,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE;CAC3H,CAAC;AAEF,uBAAuB;AACvB,MAAM,aAAa,GAAG;IACpB,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,2BAA2B,EAAE,IAAI,EAAE,KAAK,EAAE;IACjE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,0BAA0B,EAAE,IAAI,EAAE,IAAI,EAAE;IAClE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,0BAA0B,EAAE,IAAI,EAAE,IAAI,EAAE;IAC7D,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,0BAA0B,EAAE,IAAI,EAAE,IAAI,EAAE;CACjE,CAAC;AAqBF;;GAEG;AACH,SAAS,eAAe,CAAI,KAAiB;IAC3C,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,QAAkB;IACvC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AACvE,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,QAAkB;IACtC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,QAAkB;IAC5C,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gBAAgB;IAClB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,QAAkB,EAAE,MAAsB;IACpE,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAE3C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAAC,GAAW;IACzC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,SAAS,EAAE;YAC5C,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;SAChD,CAAC,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAAC,OAAe;IAC7C,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,SAAS,EAAE;YAChD,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;SAChD,CAAC,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,CAAC;QAEtB,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QAE5B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAyD,CAAC;QAC1F,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QAE/B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAoC,EAAE,EAAE,CAAC,CAAC;YAC3D,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,EAAE;YACV,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,aAAa;YACrE,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB;IAC/B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QACnC,GAAG,MAAM;QACT,SAAS,EAAE,MAAM,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC;KAC9C,CAAC,CAAC,CACJ,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,uBAAuB,CAAC,OAAe,EAAE,MAAc;IACpE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,SAAS,EAAE;YAChD,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,MAAM,EAAE;gBACnC,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,QAAkB;IAC7C,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACnF,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,QAAkB;IAC/C,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAClC,OAAO,CAAC,KAAK,CAAC,cAAc,YAAY,CAAC,OAAO,KAAK,CAAC,CAAC;IAEvD,IAAI,CAAC;QACH,QAAQ,CAAC,kBAAkB,YAAY,CAAC,OAAO,EAAE,EAAE;YACjD,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,OAAO,0BAA0B,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,gCAAgC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,WAAW,CAAC,cAAuC;IAChE,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC;IAEnC,sBAAsB;IACtB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAEvD,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,MAAM,CAAa;QAClD,OAAO,EAAE,sCAAsC;QAC/C,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,OAAqB,EAAE,KAAK,EAAE,0BAA0B,EAAE,IAAI,EAAE,gCAAgC,EAAE;YAC3G,EAAE,KAAK,EAAE,OAAqB,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,+BAA+B,EAAE;SAC/F;QACD,YAAY,EAAE,CAAC,cAAc,CAAC,UAAU,IAAI,OAAO,CAAe;KACnE,CAAC,CAAC;IACH,eAAe,CAAC,UAAU,CAAC,CAAC;IAE5B,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAC3B,OAAO,MAAM,gBAAgB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,OAAO,MAAM,gBAAgB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAAC,cAAuC,EAAE,YAA0B;IACjG,kBAAkB;IAClB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;IAEnE,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC;IAE1C,IAAI,WAAW,IAAI,cAAc,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;QACzD,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,GAAG,EAAE;YACvC,CAAC,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YACrF,CAAC,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;QAExC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,SAAS,EAAE,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACjG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAE1B,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,GAAG,WAAW,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,YAAY,CAAC,YAAY,iBAAiB,CAAC,CAAC;QACtE,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,+BAA+B,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1G,eAAe,CAAC,SAAS,CAAC,CAAC;QAE3B,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,GAAG,MAAM,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC;YACpC,OAAO,EAAE,0BAA0B;YACnC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB;SAClF,CAAC,CAAC;QACH,eAAe,CAAC,MAAM,CAAC,CAAC;QACxB,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAExD,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1C,KAAK,EAAE,CAAC,CAAC,EAAE;QACX,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;QAC9E,IAAI,EAAE,CAAC,CAAC,WAAW;KACpB,CAAC,CAAC,CAAC;IAEJ,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;QACzC,OAAO,EAAE,uBAAuB;QAChC,OAAO,EAAE,YAAY;QACrB,YAAY,EAAE,cAAc,CAAC,YAAY,IAAI,YAAY,CAAC,YAAY;KACvE,CAAC,CAAC;IACH,eAAe,CAAC,aAAa,CAAC,CAAC;IAE/B,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAE3D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAClC,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAE/C,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC;QAC1C,OAAO,EAAE,YAAY,CAAC,cAAc;QACpC,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,aAAa;QACpB,YAAY,EAAE,KAAK;KACpB,EAAE,KAAK,CAAC,CAAC;IAEV,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IACnE,CAAC;IAED,OAAO;QACL,gBAAgB,EAAE,KAAK;QACvB,UAAU,EAAE,OAAO;QACnB,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,YAAY,CAAC,cAAc;QACpC,YAAY,EAAE,aAAa;QAC3B,YAAY,EAAE,aAAa;QAC3B,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,cAAc,CAAC,WAAW,IAAI,GAAG;QAC9C,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,SAAS,EAAE,kBAAkB;QAC7B,QAAQ,EAAE,YAAY,CAAC,OAAO;QAC9B,cAAc,EAAE,KAAK;KACtB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAAC,cAAuC,EAAE,aAA2B;IAClG,iCAAiC;IACjC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAExD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAClC,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAEtD,MAAM,eAAe,GAAG,MAAM,kBAAkB,EAAE,CAAC;IACnD,MAAM,gBAAgB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAClE,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC;QACtC,CAAC,CAAC,SAAS,gBAAgB,CAAC,MAAM,oBAAoB;QACtD,CAAC,CAAC,6BAA6B,CAAC,CAAC;IAEnC,IAAI,eAAuB,CAAC;IAE5B,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG;YACpB,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC/E,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,qBAAqB,EAAE;SACtD,CAAC;QAEF,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;YAC3C,OAAO,EAAE,2BAA2B;YACpC,OAAO,EAAE,aAAa;YACtB,YAAY,EAAE,cAAc,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG;SAChE,CAAC,CAAC;QACH,eAAe,CAAC,eAAe,CAAC,CAAC;QAEjC,IAAI,eAAe,KAAK,YAAY,EAAE,CAAC;YACrC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;gBACnC,OAAO,EAAE,mBAAmB;gBAC5B,YAAY,EAAE,2BAA2B;gBACzC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,IAAI,CAAC;wBAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;wBAAC,OAAO,SAAS,CAAC;oBAAC,CAAC;oBACzC,MAAM,CAAC;wBAAC,OAAO,0BAA0B,CAAC;oBAAC,CAAC;gBAC9C,CAAC;aACF,CAAC,CAAC;YACH,eAAe,CAAC,SAAS,CAAC,CAAC;YAC3B,eAAe,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,eAAe,GAAG,eAAe,CAAC;QACpC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC9C,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAEtE,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YACnC,OAAO,EAAE,wBAAwB;YACjC,YAAY,EAAE,cAAc,CAAC,OAAO,IAAI,2BAA2B;YACnE,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClB,IAAI,CAAC;oBAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;oBAAC,OAAO,SAAS,CAAC;gBAAC,CAAC;gBACzC,MAAM,CAAC;oBAAC,OAAO,0BAA0B,CAAC;gBAAC,CAAC;YAC9C,CAAC;SACF,CAAC,CAAC;QACH,eAAe,CAAC,SAAS,CAAC,CAAC;QAC3B,eAAe,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAExD,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IACvC,YAAY,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAEnD,IAAI,eAAe,GAAG,MAAM,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAC9D,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;QAC1C,CAAC,CAAC,SAAS,eAAe,CAAC,MAAM,WAAW;QAC5C,CAAC,CAAC,oCAAoC,CAAC,CAAC;IAE1C,IAAI,aAAqB,CAAC;IAE1B,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,YAAY,GAAG;YACnB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACrF,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,4BAA4B,EAAE;SAC7D,CAAC;QAEF,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;YAC1C,OAAO,EAAE,eAAe;YACxB,OAAO,EAAE,YAAY;YACrB,YAAY,EAAE,cAAc,CAAC,YAAY,IAAI,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE;SACpE,CAAC,CAAC;QACH,eAAe,CAAC,cAAc,CAAC,CAAC;QAEhC,IAAI,cAAc,KAAK,YAAY,EAAE,CAAC;YACpC,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/F,eAAe,CAAC,WAAW,CAAC,CAAC;YAC7B,aAAa,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,cAAc,CAAC;QACjC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YACrC,OAAO,EAAE,mBAAmB;YAC5B,YAAY,EAAE,cAAc,CAAC,YAAY,IAAI,MAAM;SACpD,CAAC,CAAC;QACH,eAAe,CAAC,WAAW,CAAC,CAAC;QAC7B,aAAa,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAE3D,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1C,eAAe,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAE/D,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,eAAe,CAAC,CAAC;IACxD,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC;IAElH,OAAO;QACL,gBAAgB,EAAE,KAAK;QACvB,UAAU,EAAE,OAAO;QACnB,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,eAAe;QACxB,YAAY,EAAE,aAAa;QAC3B,YAAY,EAAE,aAAa;QAC3B,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,cAAc,CAAC,WAAW,IAAI,GAAG;QAC9C,MAAM,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;QACrF,SAAS,EAAE,oBAAoB;QAC/B,QAAQ,EAAE,EAAE;QACZ,cAAc,EAAE,IAAI;KACrB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,YAAY,CAAC,cAAuC;IACjE,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC;IAEpC,kBAAkB;IAClB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;IAEnE,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACrF,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC;IAE1C,IAAI,WAAW,IAAI,cAAc,CAAC,gBAAgB,KAAK,MAAM,EAAE,CAAC;QAC9D,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,GAAG,EAAE;YACvC,CAAC,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YACrF,CAAC,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;QAExC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,SAAS,EAAE,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACjG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAE1B,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,GAAG,WAAW,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,+BAA+B,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1G,eAAe,CAAC,SAAS,CAAC,CAAC;QAE3B,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,GAAG,MAAM,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC;YACpC,OAAO,EAAE,yBAAyB;YAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClB,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;oBAAE,OAAO,qBAAqB,CAAC;gBACjD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;oBAAE,OAAO,gCAAgC,CAAC;gBACvE,OAAO,SAAS,CAAC;YACnB,CAAC;SACF,CAAC,CAAC;QACH,eAAe,CAAC,MAAM,CAAC,CAAC;QACxB,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,mBAAmB;IACnB,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1C,eAAe,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAE/C,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IACnF,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC;IAE/F,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAExD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IAEzE,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACzC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,gBAAgB;YAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,CAAC,cAAc;YAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,CAAC,cAAc;YAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAEpE,OAAO;YACL,KAAK,EAAE,CAAC,CAAC,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;YAC9E,IAAI,EAAE,GAAG,CAAC,CAAC,WAAW,GAAG,QAAQ,EAAE;SACpC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;QACzC,OAAO,EAAE,uBAAuB;QAChC,OAAO,EAAE,YAAY;QACrB,YAAY,EAAE,cAAc,CAAC,YAAY,IAAI,YAAY,CAAC,YAAY;KACvE,CAAC,CAAC;IACH,eAAe,CAAC,aAAa,CAAC,CAAC;IAE/B,MAAM,iBAAiB,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC;IAExE,0CAA0C;IAC1C,IAAI,YAAY,GAA2B,KAAK,CAAC;IAEjD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;IAE7D,IAAI,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QAEpE,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;YAC7C,OAAO,EAAE,wBAAwB;YACjC,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,KAAc,EAAE,KAAK,EAAE,+BAA+B,EAAE;gBACjE,EAAE,KAAK,EAAE,KAAc,EAAE,KAAK,EAAE,kCAAkC,EAAE;gBACpE,EAAE,KAAK,EAAE,MAAe,EAAE,KAAK,EAAE,gDAAgD,EAAE;aACpF;YACD,YAAY,EAAE,cAAc,CAAC,IAAI,EAAE,YAAY,IAAI,MAAM;SAC1D,CAAC,CAAC;QACH,eAAe,CAAC,iBAAiB,CAAC,CAAC;QACnC,YAAY,GAAG,iBAAiB,CAAC;QAEjC,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,8BAA8B,YAAY,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,aAAa,qCAAqC,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IAC9D,CAAC;IAED,sBAAsB;IACtB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAE3D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;IAErF,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;QAC7C,OAAO,EAAE,oCAAoC;QAC7C,YAAY,EAAE,cAAc,CAAC,IAAI,EAAE,UAAU,IAAI,IAAI;KACtD,CAAC,CAAC;IACH,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAElC,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IACrF,CAAC;IAED,wBAAwB;IACxB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAEzD,MAAM,YAAY,GAAG;QACnB,UAAU,aAAa,EAAE;KAC1B,CAAC;IACF,IAAI,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;QACxC,YAAY,CAAC,IAAI,CAAC,kBAAkB,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5F,CAAC;IACD,YAAY,CAAC,IAAI,CAAC,gBAAgB,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;IAE/E,MAAM,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,uBAAuB,CAAC,CAAC;IAErE,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IACvG,eAAe,CAAC,WAAW,CAAC,CAAC;IAE7B,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,gBAAgB,EAAE,MAAM;QACxB,UAAU,EAAE,OAAO;QACnB,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,YAAY,CAAC,cAAc;QACpC,YAAY,EAAE,aAAa;QAC3B,YAAY,EAAE,aAAa;QAC3B,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,cAAc,CAAC,WAAW,IAAI,GAAG;QAC9C,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClC,SAAS,EAAE,YAAY;QACvB,QAAQ,EAAE,YAAY,CAAC,OAAO;QAC9B,cAAc,EAAE,KAAK;QACrB,IAAI,EAAE;YACJ,YAAY,EAAE,YAAY;YAC1B,UAAU,EAAE,gBAAgB;SAC7B;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAAC,MAAc;IAC9C,MAAM,OAAO,CAAC,IAAI,CAChB,wDAAwD;QACxD,uCAAuC;QACvC,iDAAiD;QACjD,iCAAiC,EACjC,sBAAsB,CACvB,CAAC;IAEF,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IACrC,UAAU,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAEpD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAEnD,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE,CAAC;YACtC,IAAI,CAAC;gBAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,uBAAuB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBAC3D,YAAY,CAAC,MAAM,CAAC,CAAC;gBACrB,YAAY,EAAE,CAAC;YACjB,CAAC;YAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;QACxB,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,GAAG,YAAY,mBAAmB,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;IAChG,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1C,YAAY;SACT,WAAW,CAAC,2CAA2C,CAAC;SACxD,MAAM,CAAC,SAAS,EAAE,kCAAkC,CAAC;SACrD,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAEjD,MAAM,OAAO,CAAC,IAAI,CAChB,uDAAuD;gBACvD,mCAAmC,EACnC,SAAS,CACV,CAAC;YAEF,qBAAqB;YACrB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAW;gBAC9C,OAAO,EAAE,wCAAwC;gBACjD,OAAO,EAAE;oBACP;wBACE,KAAK,EAAE,KAAiB;wBACxB,KAAK,EAAE,YAAY;wBACnB,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,WAAW;qBAChC;oBACD;wBACE,KAAK,EAAE,MAAkB;wBACzB,KAAK,EAAE,YAAY;wBACnB,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW;qBACjC;iBACF;aACF,CAAC,CAAC;YACH,eAAe,CAAC,QAAQ,CAAC,CAAC;YAE1B,6CAA6C;YAC7C,MAAM,cAAc,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAEpD,8BAA8B;YAC9B,IAAI,SAAS,GAA0B,IAAI,CAAC;YAE5C,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;gBACvB,SAAS,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,SAAS,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC,CAAC;YACjD,CAAC;YAED,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,oDAAoD;YACpD,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;YAE5C,uCAAuC;YACvC,IAAI,QAAQ,KAAK,KAAK,IAAI,SAAS,CAAC,UAAU,KAAK,OAAO,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;gBAC/E,MAAM,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC7C,CAAC;YAED,eAAe;YACf,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;YACzC,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;YAE3C,MAAM,OAAO,CAAC,IAAI,CAChB,aAAa,SAAS,CAAC,SAAS,IAAI;gBACpC,aAAa,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,IAAI;gBAC3E,aAAa,SAAS,CAAC,YAAY,IAAI;gBACvC,aAAa,UAAU,EAAE,EACzB,uBAAuB,CACxB,CAAC;YAEF,qCAAqC;YACrC,MAAM,SAAS,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAEhD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,OAAO,oBAAoB,CAAC,CAAC;gBAE9D,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;oBAC1C,OAAO,EAAE,WAAW,YAAY,CAAC,OAAO,GAAG;oBAC3C,YAAY,EAAE,IAAI;iBACnB,CAAC,CAAC;gBAEH,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,aAAa,EAAE,CAAC;oBACtD,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;gBAClC,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,iCAAiC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC5E,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,OAAO,eAAe,CAAC,CAAC;YAC9D,CAAC;YAED,aAAa;YACb,MAAM,OAAO,CAAC,IAAI,CAChB,WAAW,YAAY,CAAC,OAAO,cAAc;gBAC7C,qCAAqC,YAAY,CAAC,OAAO,KAAK;gBAC9D,WAAW,YAAY,CAAC,OAAO,0BAA0B,EACzD,YAAY,CACb,CAAC;YAEF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;QAE9D,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,KAA4C,CAAC;YACzD,IAAI,GAAG,EAAE,OAAO,KAAK,UAAU,IAAI,GAAG,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC5D,OAAO,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;gBAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,YAAY,CAAC;AACtB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defai.digital/ax-cli",
3
- "version": "4.1.7",
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",