@defai.digital/cli 13.1.16 → 13.2.0

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.
@@ -0,0 +1,524 @@
1
+ /**
2
+ * Init command - Per-project initialization for AutomatosX
3
+ *
4
+ * Creates project-local structure and registers MCP with provider CLIs.
5
+ * Run this in each project directory to set up AutomatosX integration.
6
+ *
7
+ * Separation of concerns:
8
+ * - `ax setup`: Global, one-time system setup (provider detection, global config)
9
+ * - `ax init`: Per-project initialization (project structure, MCP registration)
10
+ */
11
+ import { exec } from 'node:child_process';
12
+ import { promisify } from 'node:util';
13
+ import { mkdir, writeFile, readFile, access } from 'node:fs/promises';
14
+ import { join } from 'node:path';
15
+ import { DATA_DIR_NAME, CONFIG_FILENAME, TIMEOUT_SETUP_ADD, TIMEOUT_SETUP_REMOVE, DEFAULT_SCHEMA_VERSION, ITERATE_MAX_DEFAULT, ITERATE_TIMEOUT_DEFAULT, } from '@defai.digital/contracts';
16
+ import { CONTEXT_DIRECTORY } from '@defai.digital/context-domain';
17
+ import { createConfigStore } from '@defai.digital/config-domain';
18
+ import { PROVIDER_CHECKS, checkProviderCLI } from './doctor.js';
19
+ const execAsync = promisify(exec);
20
+ // ============================================================================
21
+ // Constants
22
+ // ============================================================================
23
+ /** MCP server name registered with provider CLIs */
24
+ const MCP_SERVER_NAME = 'automatosx';
25
+ /** MCP subcommands */
26
+ const MCP_COMMANDS = {
27
+ add: 'mcp add',
28
+ remove: 'mcp remove',
29
+ serverArgs: 'mcp server',
30
+ };
31
+ /** MCP command flags for different formats */
32
+ const MCP_FLAGS = {
33
+ claudeScope: '-s local',
34
+ command: '-c',
35
+ args: '-a',
36
+ };
37
+ /** Pattern to detect successful MCP server addition in output */
38
+ const MCP_SUCCESS_PATTERN = /Added MCP server|server.*added|successfully added/i;
39
+ /** Fallback CLI command when binary path cannot be determined */
40
+ const CLI_FALLBACK_COMMAND = 'ax';
41
+ /** Node.js executable for running scripts */
42
+ const NODE_EXECUTABLE = 'node';
43
+ /** Conventions file name in context directory */
44
+ const CONVENTIONS_FILENAME = 'conventions.md';
45
+ /** Default error message when error type is unknown */
46
+ const FALLBACK_ERROR_MESSAGE = 'Unknown error';
47
+ /** Stderr redirect suffix for shell commands */
48
+ const STDERR_REDIRECT = '2>&1';
49
+ /** JSON formatting indentation */
50
+ const JSON_INDENT = 2;
51
+ /** Exit codes for CLI commands */
52
+ const EXIT_CODE = {
53
+ SUCCESS: 0,
54
+ FAILURE: 1,
55
+ };
56
+ /** Health check status values */
57
+ const HEALTH_STATUS = {
58
+ PASS: 'pass',
59
+ FAIL: 'fail',
60
+ };
61
+ /** CLI argument flags */
62
+ const CLI_FLAGS = {
63
+ force: ['--force', '-f'],
64
+ silent: ['--silent', '-s'],
65
+ skipMcp: ['--skip-mcp', '--no-mcp'],
66
+ };
67
+ /** Terminal color codes */
68
+ const COLORS = {
69
+ reset: '\x1b[0m',
70
+ green: '\x1b[32m',
71
+ red: '\x1b[31m',
72
+ yellow: '\x1b[33m',
73
+ cyan: '\x1b[36m',
74
+ bold: '\x1b[1m',
75
+ dim: '\x1b[2m',
76
+ };
77
+ /** Terminal output icons */
78
+ const ICONS = {
79
+ check: `${COLORS.green}\u2713${COLORS.reset}`,
80
+ cross: `${COLORS.red}\u2717${COLORS.reset}`,
81
+ warn: `${COLORS.yellow}\u26A0${COLORS.reset}`,
82
+ arrow: `${COLORS.cyan}\u2192${COLORS.reset}`,
83
+ };
84
+ const PROVIDER_MCP_CONFIGS = {
85
+ claude: { cliName: 'claude', format: 'claude' },
86
+ gemini: { cliName: 'gemini', format: 'standard' },
87
+ codex: { cliName: 'codex', format: 'standard' },
88
+ grok: { cliName: 'ax-grok', format: 'ax-wrapper' },
89
+ 'ax-cli': null,
90
+ };
91
+ function getCLIBinaryPath() {
92
+ const binaryPath = process.argv[1];
93
+ return binaryPath || CLI_FALLBACK_COMMAND;
94
+ }
95
+ function isAbsolutePath(filePath) {
96
+ return filePath.startsWith('/') || filePath.includes('\\');
97
+ }
98
+ function buildMCPServerCommand(binaryPath) {
99
+ if (isAbsolutePath(binaryPath)) {
100
+ return { executable: NODE_EXECUTABLE, arguments: `"${binaryPath}" ${MCP_COMMANDS.serverArgs}` };
101
+ }
102
+ return { executable: binaryPath, arguments: MCP_COMMANDS.serverArgs };
103
+ }
104
+ function buildMCPAddCommand(providerId) {
105
+ const mcpConfig = PROVIDER_MCP_CONFIGS[providerId];
106
+ if (!mcpConfig)
107
+ return null;
108
+ const binaryPath = getCLIBinaryPath();
109
+ const { executable, arguments: execArgs } = buildMCPServerCommand(binaryPath);
110
+ const { cliName, format } = mcpConfig;
111
+ switch (format) {
112
+ case 'standard':
113
+ return `${cliName} ${MCP_COMMANDS.add} ${MCP_SERVER_NAME} ${executable} ${execArgs}`;
114
+ case 'claude':
115
+ return `${cliName} ${MCP_COMMANDS.add} ${MCP_SERVER_NAME} ${MCP_FLAGS.claudeScope} ${executable} ${execArgs}`;
116
+ case 'ax-wrapper': {
117
+ const command = isAbsolutePath(binaryPath) ? NODE_EXECUTABLE : CLI_FALLBACK_COMMAND;
118
+ const commandArgs = isAbsolutePath(binaryPath) ? `${binaryPath} ${MCP_COMMANDS.serverArgs}` : MCP_COMMANDS.serverArgs;
119
+ return `${cliName} ${MCP_COMMANDS.add} ${MCP_SERVER_NAME} ${MCP_FLAGS.command} ${command} ${MCP_FLAGS.args} ${commandArgs}`;
120
+ }
121
+ default:
122
+ return null;
123
+ }
124
+ }
125
+ function buildMCPRemoveCommand(providerId) {
126
+ const mcpConfig = PROVIDER_MCP_CONFIGS[providerId];
127
+ if (!mcpConfig)
128
+ return null;
129
+ const scopeFlag = mcpConfig.format === 'claude' ? ` ${MCP_FLAGS.claudeScope}` : '';
130
+ return `${mcpConfig.cliName} ${MCP_COMMANDS.remove} ${MCP_SERVER_NAME}${scopeFlag}`;
131
+ }
132
+ function getAxWrapperSettingsPath(cliName) {
133
+ return join(process.cwd(), `.${cliName}`, 'settings.json');
134
+ }
135
+ async function configureAxWrapperMCP(cliName) {
136
+ const binaryPath = getCLIBinaryPath();
137
+ const settingsPath = getAxWrapperSettingsPath(cliName);
138
+ const settingsDir = join(process.cwd(), `.${cliName}`);
139
+ try {
140
+ await mkdir(settingsDir, { recursive: true });
141
+ let existingConfig = { mcpServers: {} };
142
+ try {
143
+ const content = await readFile(settingsPath, 'utf-8');
144
+ existingConfig = JSON.parse(content);
145
+ if (!existingConfig.mcpServers) {
146
+ existingConfig.mcpServers = {};
147
+ }
148
+ }
149
+ catch {
150
+ // File doesn't exist or is invalid
151
+ }
152
+ const args = isAbsolutePath(binaryPath)
153
+ ? [binaryPath, 'mcp', 'server']
154
+ : ['mcp', 'server'];
155
+ const command = isAbsolutePath(binaryPath) ? NODE_EXECUTABLE : binaryPath;
156
+ existingConfig.mcpServers[MCP_SERVER_NAME] = {
157
+ name: MCP_SERVER_NAME,
158
+ transport: {
159
+ type: 'stdio',
160
+ command,
161
+ args,
162
+ env: {},
163
+ framing: 'ndjson',
164
+ },
165
+ };
166
+ await writeFile(settingsPath, JSON.stringify(existingConfig, null, JSON_INDENT) + '\n');
167
+ return { success: true, skipped: false };
168
+ }
169
+ catch (err) {
170
+ return {
171
+ success: false,
172
+ skipped: false,
173
+ error: err instanceof Error ? err.message : FALLBACK_ERROR_MESSAGE,
174
+ };
175
+ }
176
+ }
177
+ function isMCPAdditionSuccessful(commandOutput) {
178
+ return MCP_SUCCESS_PATTERN.test(commandOutput);
179
+ }
180
+ function extractErrorMessage(rawError) {
181
+ if (rawError.includes('Command failed')) {
182
+ return rawError.split('\n').pop() || rawError;
183
+ }
184
+ return rawError;
185
+ }
186
+ async function configureMCPForProvider(providerId) {
187
+ const mcpConfig = PROVIDER_MCP_CONFIGS[providerId];
188
+ if (!mcpConfig) {
189
+ return { success: true, skipped: true };
190
+ }
191
+ if (mcpConfig.format === 'ax-wrapper') {
192
+ return configureAxWrapperMCP(mcpConfig.cliName);
193
+ }
194
+ const addCommand = buildMCPAddCommand(providerId);
195
+ const removeCommand = buildMCPRemoveCommand(providerId);
196
+ if (!addCommand) {
197
+ return { success: true, skipped: true };
198
+ }
199
+ try {
200
+ if (removeCommand) {
201
+ try {
202
+ await execAsync(`${removeCommand} ${STDERR_REDIRECT}`, { timeout: TIMEOUT_SETUP_REMOVE });
203
+ }
204
+ catch {
205
+ // Server might not exist
206
+ }
207
+ }
208
+ const { stdout, stderr } = await execAsync(`${addCommand} ${STDERR_REDIRECT}`, { timeout: TIMEOUT_SETUP_ADD });
209
+ const commandOutput = `${stdout}${stderr}`;
210
+ if (isMCPAdditionSuccessful(commandOutput)) {
211
+ return { success: true, skipped: false };
212
+ }
213
+ return { success: true, skipped: false };
214
+ }
215
+ catch (err) {
216
+ const execResult = err;
217
+ const errorMsg = execResult.message || FALLBACK_ERROR_MESSAGE;
218
+ const fullOutput = `${execResult.stdout || ''}${execResult.stderr || ''}${errorMsg}`;
219
+ if (isMCPAdditionSuccessful(fullOutput)) {
220
+ return { success: true, skipped: false };
221
+ }
222
+ return {
223
+ success: false,
224
+ skipped: false,
225
+ error: extractErrorMessage(errorMsg),
226
+ };
227
+ }
228
+ }
229
+ async function getInstalledProviderCLIs() {
230
+ const results = new Map();
231
+ for (const provider of PROVIDER_CHECKS) {
232
+ const checkResult = await checkProviderCLI(provider);
233
+ results.set(provider.id, checkResult);
234
+ }
235
+ return results;
236
+ }
237
+ async function configureMCPForAllProviders() {
238
+ const result = {
239
+ configured: [],
240
+ skipped: [],
241
+ notInstalled: [],
242
+ failed: [],
243
+ };
244
+ const installedProviders = await getInstalledProviderCLIs();
245
+ for (const [providerId, healthCheck] of installedProviders) {
246
+ if (healthCheck.status === HEALTH_STATUS.FAIL) {
247
+ result.notInstalled.push(providerId);
248
+ continue;
249
+ }
250
+ const configResult = await configureMCPForProvider(providerId);
251
+ if (configResult.skipped) {
252
+ result.skipped.push(providerId);
253
+ }
254
+ else if (configResult.success) {
255
+ result.configured.push(providerId);
256
+ }
257
+ else {
258
+ result.failed.push({
259
+ providerId,
260
+ error: configResult.error || FALLBACK_ERROR_MESSAGE,
261
+ });
262
+ }
263
+ }
264
+ return result;
265
+ }
266
+ // ============================================================================
267
+ // Project Structure Creation
268
+ // ============================================================================
269
+ const CONVENTIONS_TEMPLATE = `# Project Conventions
270
+
271
+ ## Code Style
272
+ <!-- Describe your coding standards -->
273
+ - Example: Use TypeScript strict mode
274
+ - Example: Prefer functional components over class components
275
+ - Example: Use named exports over default exports
276
+
277
+ ## Architecture
278
+ <!-- Describe your project structure -->
279
+ - Example: Domain-driven design with packages/core/*/
280
+ - Example: Contract-first: all types in packages/contracts/
281
+ - Example: No circular dependencies between packages
282
+
283
+ ## Testing
284
+ <!-- Describe testing practices -->
285
+ - Example: Use vitest for unit tests
286
+ - Example: Co-locate tests with source: *.test.ts
287
+ - Example: Mock external dependencies, not internal modules
288
+
289
+ ## Naming Conventions
290
+ <!-- Describe naming conventions -->
291
+ - Example: Use camelCase for variables and functions
292
+ - Example: Use PascalCase for types and classes
293
+ - Example: Prefix interfaces with I (e.g., IUserService)
294
+ `;
295
+ const PROJECT_CONFIG_TEMPLATE = {
296
+ version: DEFAULT_SCHEMA_VERSION,
297
+ iterate: {
298
+ maxIterations: ITERATE_MAX_DEFAULT,
299
+ maxTimeMs: ITERATE_TIMEOUT_DEFAULT,
300
+ autoConfirm: false,
301
+ },
302
+ };
303
+ async function fileExists(path) {
304
+ try {
305
+ await access(path);
306
+ return true;
307
+ }
308
+ catch {
309
+ return false;
310
+ }
311
+ }
312
+ async function createProjectStructure(projectDir, force) {
313
+ const created = [];
314
+ const skipped = [];
315
+ const automatosxDir = join(projectDir, DATA_DIR_NAME);
316
+ const contextDir = join(automatosxDir, CONTEXT_DIRECTORY);
317
+ const configPath = join(automatosxDir, CONFIG_FILENAME);
318
+ const conventionsPath = join(contextDir, CONVENTIONS_FILENAME);
319
+ try {
320
+ await mkdir(automatosxDir, { recursive: true });
321
+ }
322
+ catch {
323
+ // Directory may already exist
324
+ }
325
+ try {
326
+ await mkdir(contextDir, { recursive: true });
327
+ }
328
+ catch {
329
+ // Directory may already exist
330
+ }
331
+ const configExists = await fileExists(configPath);
332
+ if (!configExists || force) {
333
+ await writeFile(configPath, JSON.stringify(PROJECT_CONFIG_TEMPLATE, null, JSON_INDENT) + '\n');
334
+ created.push(`${DATA_DIR_NAME}/${CONFIG_FILENAME}`);
335
+ }
336
+ else {
337
+ skipped.push(`${DATA_DIR_NAME}/${CONFIG_FILENAME} (already exists)`);
338
+ }
339
+ const conventionsExists = await fileExists(conventionsPath);
340
+ if (!conventionsExists || force) {
341
+ await writeFile(conventionsPath, CONVENTIONS_TEMPLATE);
342
+ created.push(`${DATA_DIR_NAME}/${CONTEXT_DIRECTORY}/${CONVENTIONS_FILENAME}`);
343
+ }
344
+ else {
345
+ skipped.push(`${DATA_DIR_NAME}/${CONTEXT_DIRECTORY}/${CONVENTIONS_FILENAME} (already exists)`);
346
+ }
347
+ return { created, skipped };
348
+ }
349
+ function matchesFlag(arg, flags) {
350
+ return flags.includes(arg);
351
+ }
352
+ function parseInitArgs(args) {
353
+ let force = false;
354
+ let silent = false;
355
+ let skipMcp = false;
356
+ for (const arg of args) {
357
+ if (matchesFlag(arg, CLI_FLAGS.force)) {
358
+ force = true;
359
+ }
360
+ else if (matchesFlag(arg, CLI_FLAGS.silent)) {
361
+ silent = true;
362
+ }
363
+ else if (matchesFlag(arg, CLI_FLAGS.skipMcp)) {
364
+ skipMcp = true;
365
+ }
366
+ }
367
+ return { force, silent, skipMcp };
368
+ }
369
+ /**
370
+ * Init command handler
371
+ *
372
+ * Initializes AutomatosX for the current project:
373
+ * 1. Creates .automatosx/ project structure
374
+ * 2. Registers MCP with all detected provider CLIs
375
+ *
376
+ * Usage:
377
+ * ax init Initialize current project
378
+ * ax init --force Overwrite existing files
379
+ * ax init --skip-mcp Skip MCP registration
380
+ * ax init --silent Minimal output
381
+ */
382
+ export async function initCommand(args, options) {
383
+ const initOptions = parseInitArgs(args);
384
+ const isJsonFormat = options.format === 'json';
385
+ const isSilent = initOptions.silent;
386
+ const showOutput = !isJsonFormat && !isSilent;
387
+ const outputLines = [];
388
+ try {
389
+ // Check if global config exists (warning only, don't block)
390
+ const configStore = createConfigStore();
391
+ const globalConfigExists = await configStore.exists('global');
392
+ if (showOutput) {
393
+ outputLines.push('');
394
+ outputLines.push(`${COLORS.bold}AutomatosX Project Init${COLORS.reset}`);
395
+ outputLines.push(`${COLORS.dim}Initializing project: ${process.cwd()}${COLORS.reset}`);
396
+ outputLines.push('');
397
+ if (!globalConfigExists) {
398
+ outputLines.push(`${ICONS.warn} Global config not found. Consider running ${COLORS.cyan}ax setup${COLORS.reset} first.`);
399
+ outputLines.push('');
400
+ }
401
+ }
402
+ // Check if project is already initialized
403
+ const projectDir = process.cwd();
404
+ const automatosxDir = join(projectDir, DATA_DIR_NAME);
405
+ const projectAlreadyInitialized = await fileExists(join(automatosxDir, CONFIG_FILENAME));
406
+ // Step 1: Create project structure
407
+ if (showOutput) {
408
+ if (projectAlreadyInitialized && !initOptions.force) {
409
+ outputLines.push(`${COLORS.bold}Step 1: Project Structure${COLORS.reset} ${COLORS.dim}(already initialized)${COLORS.reset}`);
410
+ }
411
+ else {
412
+ outputLines.push(`${COLORS.bold}Step 1: Project Structure${COLORS.reset}`);
413
+ }
414
+ }
415
+ const projectStructure = await createProjectStructure(process.cwd(), initOptions.force);
416
+ if (showOutput) {
417
+ if (projectStructure.created.length > 0) {
418
+ for (const filePath of projectStructure.created) {
419
+ outputLines.push(` ${ICONS.check} Created ${filePath}`);
420
+ }
421
+ }
422
+ if (projectStructure.skipped.length > 0) {
423
+ for (const filePath of projectStructure.skipped) {
424
+ outputLines.push(` ${ICONS.check} Verified ${filePath.replace(' (already exists)', '')}`);
425
+ }
426
+ }
427
+ outputLines.push('');
428
+ }
429
+ // Step 2: Configure MCP for all detected providers
430
+ let mcpResult;
431
+ if (!initOptions.skipMcp) {
432
+ if (showOutput) {
433
+ outputLines.push(`${COLORS.bold}Step 2: MCP Registration${COLORS.reset}`);
434
+ outputLines.push(` ${COLORS.dim}Registering AutomatosX MCP server with provider CLIs...${COLORS.reset}`);
435
+ }
436
+ mcpResult = await configureMCPForAllProviders();
437
+ if (showOutput) {
438
+ for (const providerId of mcpResult.configured) {
439
+ outputLines.push(` ${ICONS.check} ${providerId}: MCP registered`);
440
+ }
441
+ for (const providerId of mcpResult.notInstalled) {
442
+ outputLines.push(` ${COLORS.dim} - ${providerId}: CLI not installed${COLORS.reset}`);
443
+ }
444
+ for (const { providerId, error } of mcpResult.failed) {
445
+ outputLines.push(` ${ICONS.warn} ${providerId}: ${error}`);
446
+ }
447
+ if (mcpResult.configured.length === 0 && mcpResult.failed.length === 0) {
448
+ outputLines.push(` ${ICONS.warn} No provider CLIs detected. Run 'ax doctor' to check.`);
449
+ }
450
+ outputLines.push('');
451
+ }
452
+ }
453
+ else if (showOutput) {
454
+ outputLines.push(`${COLORS.bold}Step 2: MCP Registration${COLORS.reset}`);
455
+ outputLines.push(` ${COLORS.dim}Skipped (--skip-mcp)${COLORS.reset}`);
456
+ outputLines.push('');
457
+ }
458
+ // Summary
459
+ if (showOutput) {
460
+ outputLines.push(`${COLORS.bold}Done!${COLORS.reset}`);
461
+ outputLines.push(` Project files: ${projectStructure.created.length} created, ${projectStructure.skipped.length} skipped`);
462
+ if (mcpResult) {
463
+ outputLines.push(` MCP registered: ${mcpResult.configured.length} provider(s)`);
464
+ }
465
+ outputLines.push('');
466
+ outputLines.push(`${COLORS.bold}Next Steps${COLORS.reset}`);
467
+ outputLines.push(` 1. Edit ${COLORS.cyan}${DATA_DIR_NAME}/${CONTEXT_DIRECTORY}/${CONVENTIONS_FILENAME}${COLORS.reset} to add your project conventions`);
468
+ outputLines.push(` 2. Run ${COLORS.cyan}ax doctor${COLORS.reset} to verify providers`);
469
+ outputLines.push(` 3. Use ${COLORS.cyan}ax call claude "your task"${COLORS.reset} to start`);
470
+ outputLines.push('');
471
+ }
472
+ if (isJsonFormat) {
473
+ return {
474
+ success: true,
475
+ message: undefined,
476
+ data: {
477
+ success: true,
478
+ projectDir: process.cwd(),
479
+ globalConfigExists,
480
+ alreadyInitialized: projectAlreadyInitialized,
481
+ projectStructure: {
482
+ created: projectStructure.created,
483
+ skipped: projectStructure.skipped,
484
+ },
485
+ mcpConfiguration: mcpResult
486
+ ? {
487
+ configured: mcpResult.configured,
488
+ skipped: mcpResult.skipped,
489
+ notInstalled: mcpResult.notInstalled,
490
+ failed: mcpResult.failed,
491
+ }
492
+ : undefined,
493
+ },
494
+ exitCode: EXIT_CODE.SUCCESS,
495
+ };
496
+ }
497
+ return {
498
+ success: true,
499
+ message: outputLines.join('\n'),
500
+ data: undefined,
501
+ exitCode: EXIT_CODE.SUCCESS,
502
+ };
503
+ }
504
+ catch (err) {
505
+ const errorMsg = err instanceof Error ? err.message : FALLBACK_ERROR_MESSAGE;
506
+ if (isJsonFormat) {
507
+ return {
508
+ success: false,
509
+ message: undefined,
510
+ data: { error: errorMsg },
511
+ exitCode: EXIT_CODE.FAILURE,
512
+ };
513
+ }
514
+ outputLines.push(`${ICONS.cross} Init failed: ${errorMsg}`);
515
+ outputLines.push('');
516
+ return {
517
+ success: false,
518
+ message: outputLines.join('\n'),
519
+ data: undefined,
520
+ exitCode: EXIT_CODE.FAILURE,
521
+ };
522
+ }
523
+ }
524
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EACL,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,GAExB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAoB,MAAM,aAAa,CAAC;AAElF,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,oDAAoD;AACpD,MAAM,eAAe,GAAG,YAAY,CAAC;AAErC,sBAAsB;AACtB,MAAM,YAAY,GAAG;IACnB,GAAG,EAAE,SAAS;IACd,MAAM,EAAE,YAAY;IACpB,UAAU,EAAE,YAAY;CAChB,CAAC;AAEX,8CAA8C;AAC9C,MAAM,SAAS,GAAG;IAChB,WAAW,EAAE,UAAU;IACvB,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,IAAI;CACF,CAAC;AAEX,iEAAiE;AACjE,MAAM,mBAAmB,GAAG,oDAAoD,CAAC;AAEjF,iEAAiE;AACjE,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAElC,6CAA6C;AAC7C,MAAM,eAAe,GAAG,MAAM,CAAC;AAE/B,iDAAiD;AACjD,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AAE9C,uDAAuD;AACvD,MAAM,sBAAsB,GAAG,eAAe,CAAC;AAE/C,gDAAgD;AAChD,MAAM,eAAe,GAAG,MAAM,CAAC;AAE/B,kCAAkC;AAClC,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB,kCAAkC;AAClC,MAAM,SAAS,GAAG;IAChB,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;CACF,CAAC;AAEX,iCAAiC;AACjC,MAAM,aAAa,GAAG;IACpB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;CACJ,CAAC;AAEX,yBAAyB;AACzB,MAAM,SAAS,GAAG;IAChB,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;IACxB,MAAM,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC;IAC1B,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC;CAC3B,CAAC;AAEX,2BAA2B;AAC3B,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,UAAU;IACjB,GAAG,EAAE,UAAU;IACf,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,SAAS;CACN,CAAC;AAEX,4BAA4B;AAC5B,MAAM,KAAK,GAAG;IACZ,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,SAAS,MAAM,CAAC,KAAK,EAAE;IAC7C,KAAK,EAAE,GAAG,MAAM,CAAC,GAAG,SAAS,MAAM,CAAC,KAAK,EAAE;IAC3C,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,SAAS,MAAM,CAAC,KAAK,EAAE;IAC7C,KAAK,EAAE,GAAG,MAAM,CAAC,IAAI,SAAS,MAAM,CAAC,KAAK,EAAE;CACpC,CAAC;AAaX,MAAM,oBAAoB,GAAiD;IACzE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;IAC/C,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE;IACjD,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE;IAC/C,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE;IAClD,QAAQ,EAAE,IAAI;CACf,CAAC;AAEF,SAAS,gBAAgB;IACvB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,UAAU,IAAI,oBAAoB,CAAC;AAC5C,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB;IACtC,OAAO,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,qBAAqB,CAAC,UAAkB;IAC/C,IAAI,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,UAAU,KAAK,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC;IAClG,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,CAAC,UAAU,EAAE,CAAC;AACxE,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAsB;IAChD,MAAM,SAAS,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACnD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;IACtC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IAC9E,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAEtC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,UAAU;YACb,OAAO,GAAG,OAAO,IAAI,YAAY,CAAC,GAAG,IAAI,eAAe,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC;QAEvF,KAAK,QAAQ;YACX,OAAO,GAAG,OAAO,IAAI,YAAY,CAAC,GAAG,IAAI,eAAe,IAAI,SAAS,CAAC,WAAW,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC;QAEhH,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,oBAAoB,CAAC;YACpF,MAAM,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC;YACtH,OAAO,GAAG,OAAO,IAAI,YAAY,CAAC,GAAG,IAAI,eAAe,IAAI,SAAS,CAAC,OAAO,IAAI,OAAO,IAAI,SAAS,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC;QAC9H,CAAC;QAED;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,UAAsB;IACnD,MAAM,SAAS,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACnD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,OAAO,GAAG,SAAS,CAAC,OAAO,IAAI,YAAY,CAAC,MAAM,IAAI,eAAe,GAAG,SAAS,EAAE,CAAC;AACtF,CAAC;AAuBD,SAAS,wBAAwB,CAAC,OAAe;IAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,OAAO,EAAE,EAAE,eAAe,CAAC,CAAC;AAC7D,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,OAAe;IAClD,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;IACtC,MAAM,YAAY,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC;IAEvD,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE9C,IAAI,cAAc,GAAuB,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QAC5D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACtD,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAuB,CAAC;YAC3D,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;gBAC/B,cAAc,CAAC,UAAU,GAAG,EAAE,CAAC;YACjC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,mCAAmC;QACrC,CAAC;QAED,MAAM,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC;YACrC,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC;YAC/B,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAEtB,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC;QAE1E,cAAc,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG;YAC3C,IAAI,EAAE,eAAe;YACrB,SAAS,EAAE;gBACT,IAAI,EAAE,OAAO;gBACb,OAAO;gBACP,IAAI;gBACJ,GAAG,EAAE,EAAE;gBACP,OAAO,EAAE,QAAQ;aAClB;SACF,CAAC;QAEF,MAAM,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;QAExF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB;SACnE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,aAAqB;IACpD,OAAO,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAgB;IAC3C,IAAI,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACxC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAC;IAChD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,UAAsB;IAC3D,MAAM,SAAS,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACnD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACtC,OAAO,qBAAqB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,UAAU,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IAExD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED,IAAI,CAAC;QACH,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC;gBACH,MAAM,SAAS,CAAC,GAAG,aAAa,IAAI,eAAe,EAAE,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;YAC5F,CAAC;YAAC,MAAM,CAAC;gBACP,yBAAyB;YAC3B,CAAC;QACH,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,UAAU,IAAI,eAAe,EAAE,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC/G,MAAM,aAAa,GAAG,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;QAE3C,IAAI,uBAAuB,CAAC,aAAa,CAAC,EAAE,CAAC;YAC3C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC3C,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,UAAU,GAAG,GAA6D,CAAC;QACjF,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,IAAI,sBAAsB,CAAC;QAC9D,MAAM,UAAU,GAAG,GAAG,UAAU,CAAC,MAAM,IAAI,EAAE,GAAG,UAAU,CAAC,MAAM,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAC;QAErF,IAAI,uBAAuB,CAAC,UAAU,CAAC,EAAE,CAAC;YACxC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC3C,CAAC;QAED,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,mBAAmB,CAAC,QAAQ,CAAC;SACrC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,wBAAwB;IACrC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;IAE/C,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AASD,KAAK,UAAU,2BAA2B;IACxC,MAAM,MAAM,GAAyB;QACnC,UAAU,EAAE,EAAE;QACd,OAAO,EAAE,EAAE;QACX,YAAY,EAAE,EAAE;QAChB,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,MAAM,kBAAkB,GAAG,MAAM,wBAAwB,EAAE,CAAC;IAE5D,KAAK,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,kBAAkB,EAAE,CAAC;QAC3D,IAAI,WAAW,CAAC,MAAM,KAAK,aAAa,CAAC,IAAI,EAAE,CAAC;YAC9C,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACrC,SAAS;QACX,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,uBAAuB,CAAC,UAAwB,CAAC,CAAC;QAE7E,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;YACzB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC;aAAM,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;YAChC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjB,UAAU;gBACV,KAAK,EAAE,YAAY,CAAC,KAAK,IAAI,sBAAsB;aACpD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyB5B,CAAC;AAEF,MAAM,uBAAuB,GAAG;IAC9B,OAAO,EAAE,sBAAsB;IAC/B,OAAO,EAAE;QACP,aAAa,EAAE,mBAAmB;QAClC,SAAS,EAAE,uBAAuB;QAClC,WAAW,EAAE,KAAK;KACnB;CACF,CAAC;AAEF,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,UAAkB,EAClB,KAAc;IAEd,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;IACxD,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;IAE/D,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,8BAA8B;IAChC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,8BAA8B;IAChC,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;IAClD,IAAI,CAAC,YAAY,IAAI,KAAK,EAAE,CAAC;QAC3B,MAAM,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;QAC/F,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,IAAI,eAAe,EAAE,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,IAAI,eAAe,mBAAmB,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,iBAAiB,GAAG,MAAM,UAAU,CAAC,eAAe,CAAC,CAAC;IAC5D,IAAI,CAAC,iBAAiB,IAAI,KAAK,EAAE,CAAC;QAChC,MAAM,SAAS,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,IAAI,iBAAiB,IAAI,oBAAoB,EAAE,CAAC,CAAC;IAChF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,IAAI,iBAAiB,IAAI,oBAAoB,mBAAmB,CAAC,CAAC;IACjG,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC;AAYD,SAAS,WAAW,CAAC,GAAW,EAAE,KAAwB;IACxD,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,aAAa,CAAC,IAAc;IACnC,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;aAAM,IAAI,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/C,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACpC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAc,EACd,OAAmB;IAEnB,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC;IAC/C,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC;IACpC,MAAM,UAAU,GAAG,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC;IAC9C,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,IAAI,CAAC;QACH,4DAA4D;QAC5D,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;QACxC,MAAM,kBAAkB,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAE9D,IAAI,UAAU,EAAE,CAAC;YACf,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrB,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,0BAA0B,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACzE,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,yBAAyB,OAAO,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACvF,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAErB,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACxB,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,8CAA8C,MAAM,CAAC,IAAI,WAAW,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC;gBACzH,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QACtD,MAAM,yBAAyB,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC,CAAC;QAEzF,mCAAmC;QACnC,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,yBAAyB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;gBACpD,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,4BAA4B,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,wBAAwB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/H,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,4BAA4B,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;QAExF,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,gBAAgB,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,KAAK,MAAM,QAAQ,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;oBAChD,WAAW,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,YAAY,QAAQ,EAAE,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;YACD,IAAI,gBAAgB,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,KAAK,MAAM,QAAQ,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;oBAChD,WAAW,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,aAAa,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC7F,CAAC;YACH,CAAC;YACD,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;QAED,mDAAmD;QACnD,IAAI,SAA2C,CAAC;QAEhD,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,UAAU,EAAE,CAAC;gBACf,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,2BAA2B,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC1E,WAAW,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,GAAG,0DAA0D,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5G,CAAC;YAED,SAAS,GAAG,MAAM,2BAA2B,EAAE,CAAC;YAEhD,IAAI,UAAU,EAAE,CAAC;gBACf,KAAK,MAAM,UAAU,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;oBAC9C,WAAW,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,IAAI,UAAU,kBAAkB,CAAC,CAAC;gBACrE,CAAC;gBACD,KAAK,MAAM,UAAU,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;oBAChD,WAAW,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,GAAG,OAAO,UAAU,sBAAsB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBACzF,CAAC;gBACD,KAAK,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;oBACrD,WAAW,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC,CAAC;gBAC9D,CAAC;gBACD,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvE,WAAW,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,uDAAuD,CAAC,CAAC;gBAC3F,CAAC;gBACD,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;aAAM,IAAI,UAAU,EAAE,CAAC;YACtB,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,2BAA2B,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC1E,WAAW,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,GAAG,uBAAuB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACvE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;QAED,UAAU;QACV,IAAI,UAAU,EAAE,CAAC;YACf,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,QAAQ,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACvD,WAAW,CAAC,IAAI,CAAC,oBAAoB,gBAAgB,CAAC,OAAO,CAAC,MAAM,aAAa,gBAAgB,CAAC,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;YAC5H,IAAI,SAAS,EAAE,CAAC;gBACd,WAAW,CAAC,IAAI,CAAC,qBAAqB,SAAS,CAAC,UAAU,CAAC,MAAM,cAAc,CAAC,CAAC;YACnF,CAAC;YACD,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrB,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,aAAa,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5D,WAAW,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,IAAI,GAAG,aAAa,IAAI,iBAAiB,IAAI,oBAAoB,GAAG,MAAM,CAAC,KAAK,kCAAkC,CAAC,CAAC;YACzJ,WAAW,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,IAAI,YAAY,MAAM,CAAC,KAAK,sBAAsB,CAAC,CAAC;YACxF,WAAW,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,IAAI,6BAA6B,MAAM,CAAC,KAAK,WAAW,CAAC,CAAC;YAC9F,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,SAAS;gBAClB,IAAI,EAAE;oBACJ,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE;oBACzB,kBAAkB;oBAClB,kBAAkB,EAAE,yBAAyB;oBAC7C,gBAAgB,EAAE;wBAChB,OAAO,EAAE,gBAAgB,CAAC,OAAO;wBACjC,OAAO,EAAE,gBAAgB,CAAC,OAAO;qBAClC;oBACD,gBAAgB,EAAE,SAAS;wBACzB,CAAC,CAAC;4BACE,UAAU,EAAE,SAAS,CAAC,UAAU;4BAChC,OAAO,EAAE,SAAS,CAAC,OAAO;4BAC1B,YAAY,EAAE,SAAS,CAAC,YAAY;4BACpC,MAAM,EAAE,SAAS,CAAC,MAAM;yBACzB;wBACH,CAAC,CAAC,SAAS;iBACd;gBACD,QAAQ,EAAE,SAAS,CAAC,OAAO;aAC5B,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/B,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,SAAS,CAAC,OAAO;SAC5B,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC;QAE7E,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,SAAS;gBAClB,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;gBACzB,QAAQ,EAAE,SAAS,CAAC,OAAO;aAC5B,CAAC;QACJ,CAAC;QAED,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,iBAAiB,QAAQ,EAAE,CAAC,CAAC;QAC5D,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAErB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/B,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,SAAS,CAAC,OAAO;SAC5B,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -20,7 +20,7 @@ Usage:
20
20
  ax iterate --max-iterations 50 <provider> <prompt>
21
21
 
22
22
  Arguments:
23
- <provider> AI provider to use (claude, gemini, codex, qwen, glm, grok)
23
+ <provider> AI provider to use (claude, gemini, codex, grok)
24
24
  <prompt> The task to complete autonomously
25
25
 
26
26
  Options:
@@ -1,14 +1,23 @@
1
1
  /**
2
- * Setup command - Interactive setup wizard for AutomatosX
2
+ * Setup command - Global setup wizard for AutomatosX
3
+ *
4
+ * Creates global configuration with detected providers.
5
+ * For per-project initialization (MCP registration), use `ax init`.
3
6
  *
4
7
  * Features:
5
8
  * - Provider detection
6
- * - Configuration creation
9
+ * - Global configuration creation
7
10
  * - Non-interactive mode for CI
8
11
  */
9
12
  import type { CommandResult, CLIOptions } from '../types.js';
10
13
  /**
11
14
  * Setup command handler
15
+ *
16
+ * Global setup for AutomatosX:
17
+ * 1. Detects installed provider CLIs
18
+ * 2. Creates global configuration
19
+ *
20
+ * For per-project initialization (MCP registration), use `ax init`.
12
21
  */
13
22
  export declare function setupCommand(args: string[], options: CLIOptions): Promise<CommandResult>;
14
23
  //# sourceMappingURL=setup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAoxB7D;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,aAAa,CAAC,CAkLxB"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAwT7D;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,aAAa,CAAC,CAwNxB"}