@defai.digital/automatosx 8.4.0 → 8.4.2

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.
Files changed (3) hide show
  1. package/README.md +1 -1
  2. package/dist/index.js +189 -30
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -13,7 +13,7 @@ AutomatosX is a pure CLI orchestration platform for AI agents. It wraps around `
13
13
  [![Windows](https://img.shields.io/badge/Windows-10+-blue.svg)](https://www.microsoft.com/windows)
14
14
  [![Ubuntu](https://img.shields.io/badge/Ubuntu-24.04-blue.svg)](https://ubuntu.com)
15
15
 
16
- **Status**: ✅ **Production Ready** | v8.3.0 | 20 Specialized Agents | Pure CLI Orchestration | Simplified Architecture
16
+ **Status**: ✅ **Production Ready** | v8.4.2 | 20 Specialized Agents | Pure CLI Orchestration | Simplified Architecture
17
17
 
18
18
  > 🎉 **NEW in v8.3.0**: Major simplification! Removed ~36,000 lines of code including policy routing, free-tier management, and SDK providers. AutomatosX is now a pure CLI orchestration wrapper around `claude`, `gemini`, and `codex` commands. Simpler, faster, easier to maintain. See [Migration Guide](MIGRATION.md) for upgrade details.
19
19
 
package/dist/index.js CHANGED
@@ -1266,13 +1266,13 @@ var init_base_provider = __esm({
1266
1266
  }
1267
1267
  try {
1268
1268
  const escapedPrompt = this.escapeShellArg(prompt);
1269
- const cliCommand = this.getCLICommand();
1270
- logger.debug(`Executing ${cliCommand} CLI`, {
1271
- command: cliCommand,
1269
+ const cliCommand2 = this.getCLICommand();
1270
+ logger.debug(`Executing ${cliCommand2} CLI`, {
1271
+ command: cliCommand2,
1272
1272
  promptLength: prompt.length
1273
1273
  });
1274
1274
  const { stdout, stderr } = await execAsync(
1275
- `${cliCommand} ${escapedPrompt}`,
1275
+ `${cliCommand2} ${escapedPrompt}`,
1276
1276
  {
1277
1277
  timeout: this.config.timeout || 12e4,
1278
1278
  maxBuffer: 10 * 1024 * 1024,
@@ -1294,12 +1294,12 @@ var init_base_provider = __esm({
1294
1294
  }
1295
1295
  );
1296
1296
  if (stderr) {
1297
- logger.warn(`${cliCommand} CLI stderr output`, { stderr: stderr.trim() });
1297
+ logger.warn(`${cliCommand2} CLI stderr output`, { stderr: stderr.trim() });
1298
1298
  }
1299
1299
  if (!stdout) {
1300
- throw new Error(`${cliCommand} CLI returned empty output. stderr: ${stderr || "none"}`);
1300
+ throw new Error(`${cliCommand2} CLI returned empty output. stderr: ${stderr || "none"}`);
1301
1301
  }
1302
- logger.debug(`${cliCommand} CLI execution successful`, {
1302
+ logger.debug(`${cliCommand2} CLI execution successful`, {
1303
1303
  responseLength: stdout.trim().length
1304
1304
  });
1305
1305
  return stdout.trim();
@@ -1314,10 +1314,10 @@ var init_base_provider = __esm({
1314
1314
  */
1315
1315
  async checkCLIAvailable() {
1316
1316
  try {
1317
- const cliCommand = this.getCLICommand();
1318
- const path6 = await findOnPath(cliCommand);
1317
+ const cliCommand2 = this.getCLICommand();
1318
+ const path6 = await findOnPath(cliCommand2);
1319
1319
  const available = path6 !== null;
1320
- logger.debug(`${cliCommand} CLI availability check`, {
1320
+ logger.debug(`${cliCommand2} CLI availability check`, {
1321
1321
  available,
1322
1322
  path: path6 || "not found"
1323
1323
  });
@@ -4113,6 +4113,9 @@ function validateConfigWithZod(config) {
4113
4113
  if (result.success) {
4114
4114
  return [];
4115
4115
  }
4116
+ if (!result.error?.issues || !Array.isArray(result.error.issues)) {
4117
+ return ["Configuration validation failed with unknown error structure"];
4118
+ }
4116
4119
  return result.error.issues.map((err) => {
4117
4120
  const path6 = err.path.join(".");
4118
4121
  return `${path6}: ${err.message}`;
@@ -5943,9 +5946,9 @@ async function initializeGitRepository(projectDir) {
5943
5946
  logger.info("Git repository already exists, skipping initialization");
5944
5947
  return;
5945
5948
  }
5946
- const { spawn: spawn5 } = await import('child_process');
5949
+ const { spawn: spawn6 } = await import('child_process');
5947
5950
  await new Promise((resolve13, reject) => {
5948
- const child = spawn5("git", ["init"], {
5951
+ const child = spawn6("git", ["init"], {
5949
5952
  cwd: projectDir,
5950
5953
  stdio: "pipe",
5951
5954
  shell: false
@@ -6831,7 +6834,7 @@ var initCommand = {
6831
6834
  console.log(chalk5.cyan("\u{1F916} AI-Powered Analysis Mode\n"));
6832
6835
  console.log(chalk5.white(" Using backend agent to analyze your project..."));
6833
6836
  console.log(chalk5.dim(" This will take 1-2 minutes\n"));
6834
- const { spawn: spawn5 } = await import('child_process');
6837
+ const { spawn: spawn6 } = await import('child_process');
6835
6838
  const { promisify: promisify5 } = await import('util');
6836
6839
  const execFile = promisify5((await import('child_process')).execFile);
6837
6840
  try {
@@ -6858,7 +6861,7 @@ Include sections:
6858
6861
  Make it comprehensive but scannable, similar to the AutomatosX ax.md example.`;
6859
6862
  const axCommand = process.platform === "win32" ? "ax.cmd" : "ax";
6860
6863
  console.log(chalk5.dim(' Running: ax run backend "analyze project"\n'));
6861
- const child = spawn5(axCommand, ["run", "backend", analysisTask], {
6864
+ const child = spawn6(axCommand, ["run", "backend", analysisTask], {
6862
6865
  stdio: "inherit",
6863
6866
  shell: false,
6864
6867
  // SECURITY: Prevent command injection via analysis task
@@ -7271,12 +7274,12 @@ var listCommand = {
7271
7274
  };
7272
7275
  async function listAgents(pathResolver, format) {
7273
7276
  const agentsDir = pathResolver.getAgentsDirectory();
7274
- const { existsSync: existsSync21 } = await import('fs');
7277
+ const { existsSync: existsSync22 } = await import('fs');
7275
7278
  const projectDir = await detectProjectRoot();
7276
7279
  const examplesDir = join(projectDir, "examples", "agents");
7277
7280
  try {
7278
7281
  const agentFiles = [];
7279
- if (existsSync21(agentsDir)) {
7282
+ if (existsSync22(agentsDir)) {
7280
7283
  const files = await readdir(agentsDir);
7281
7284
  for (const file of files) {
7282
7285
  if (file.endsWith(".yaml") || file.endsWith(".yml")) {
@@ -7288,7 +7291,7 @@ async function listAgents(pathResolver, format) {
7288
7291
  }
7289
7292
  }
7290
7293
  }
7291
- if (existsSync21(examplesDir)) {
7294
+ if (existsSync22(examplesDir)) {
7292
7295
  const files = await readdir(examplesDir);
7293
7296
  for (const file of files) {
7294
7297
  if (file.endsWith(".yaml") || file.endsWith(".yml")) {
@@ -21285,8 +21288,8 @@ Complexity Score: ${complexity.score}/10
21285
21288
  rl.close();
21286
21289
  if (executeAnswer.toLowerCase() !== "n" && executeAnswer.toLowerCase() !== "no") {
21287
21290
  console.log(chalk5.blue("\n\u{1F680} Executing spec-driven workflow...\n"));
21288
- const { spawn: spawn5 } = await import('child_process');
21289
- const child = spawn5("ax", ["spec", "run", "--parallel"], {
21291
+ const { spawn: spawn6 } = await import('child_process');
21292
+ const child = spawn6("ax", ["spec", "run", "--parallel"], {
21290
21293
  stdio: "inherit",
21291
21294
  shell: false
21292
21295
  // FIXED Bug #140: Removed shell:true for security
@@ -22684,11 +22687,11 @@ async function getCurrentVersion() {
22684
22687
  return result.dependencies["@defai.digital/automatosx"]?.version || "unknown";
22685
22688
  } catch (error) {
22686
22689
  const { readFile: readFile14 } = await import('fs/promises');
22687
- const { dirname: dirname18, join: join41 } = await import('path');
22690
+ const { dirname: dirname18, join: join42 } = await import('path');
22688
22691
  const { fileURLToPath: fileURLToPath11 } = await import('url');
22689
22692
  const __filename8 = fileURLToPath11(import.meta.url);
22690
22693
  const __dirname9 = dirname18(__filename8);
22691
- const pkgPath = join41(__dirname9, "../../../package.json");
22694
+ const pkgPath = join42(__dirname9, "../../../package.json");
22692
22695
  const content = await readFile14(pkgPath, "utf-8");
22693
22696
  const pkg = JSON.parse(content);
22694
22697
  return pkg.version;
@@ -41293,10 +41296,10 @@ async function handleReset() {
41293
41296
  `));
41294
41297
  }
41295
41298
  async function handleTrace(workspacePath, argv) {
41296
- const { existsSync: existsSync21, readFileSync: readFileSync8, watchFile } = await import('fs');
41297
- const { join: join41 } = await import('path');
41298
- const traceFile = join41(workspacePath, ".automatosx/logs/router.trace.jsonl");
41299
- if (!existsSync21(traceFile)) {
41299
+ const { existsSync: existsSync22, readFileSync: readFileSync9, watchFile } = await import('fs');
41300
+ const { join: join42 } = await import('path');
41301
+ const traceFile = join42(workspacePath, ".automatosx/logs/router.trace.jsonl");
41302
+ if (!existsSync22(traceFile)) {
41300
41303
  console.log(chalk5.yellow("\n\u26A0\uFE0F No trace log found\n"));
41301
41304
  console.log(chalk5.gray(`Expected location: ${traceFile}
41302
41305
  `));
@@ -41313,7 +41316,7 @@ async function handleTrace(workspacePath, argv) {
41313
41316
  `));
41314
41317
  if (argv.follow) {
41315
41318
  console.log(chalk5.gray("Following trace log (Ctrl+C to exit)...\n"));
41316
- const content = readFileSync8(traceFile, "utf-8");
41319
+ const content = readFileSync9(traceFile, "utf-8");
41317
41320
  const lines = content.split("\n").filter((l) => l.trim());
41318
41321
  const recentLines = lines.slice(-(argv.lines || 20));
41319
41322
  for (const line of recentLines) {
@@ -41323,7 +41326,7 @@ async function handleTrace(workspacePath, argv) {
41323
41326
  const { unwatchFile } = await import('fs');
41324
41327
  watchFile(traceFile, { interval: 500 }, (curr, prev) => {
41325
41328
  if (curr.size > lastSize) {
41326
- const newContent = readFileSync8(traceFile, "utf-8");
41329
+ const newContent = readFileSync9(traceFile, "utf-8");
41327
41330
  const newLines = newContent.slice(lastSize).split("\n").filter((l) => l.trim());
41328
41331
  for (const line of newLines) {
41329
41332
  displayTraceEvent(line);
@@ -41341,7 +41344,7 @@ async function handleTrace(workspacePath, argv) {
41341
41344
  await new Promise(() => {
41342
41345
  });
41343
41346
  } else {
41344
- const content = readFileSync8(traceFile, "utf-8");
41347
+ const content = readFileSync9(traceFile, "utf-8");
41345
41348
  const lines = content.split("\n").filter((l) => l.trim());
41346
41349
  const recentLines = lines.slice(-(argv.lines || 20));
41347
41350
  if (recentLines.length === 0) {
@@ -43575,6 +43578,162 @@ async function handleKill(argv) {
43575
43578
  }
43576
43579
  }
43577
43580
 
43581
+ // src/cli/commands/cli.ts
43582
+ init_esm_shims();
43583
+ init_logger();
43584
+ var cliCommand = {
43585
+ command: "cli [prompt]",
43586
+ describe: "Launch Grok CLI with AutomatosX integration",
43587
+ builder: (yargs2) => {
43588
+ return yargs2.positional("prompt", {
43589
+ type: "string",
43590
+ describe: "Optional initial prompt to send to Grok"
43591
+ }).option("model", {
43592
+ type: "string",
43593
+ alias: "m",
43594
+ describe: "Grok model to use (e.g., grok-2)"
43595
+ }).option("config", {
43596
+ type: "string",
43597
+ alias: "c",
43598
+ describe: "Path to Grok settings file (default: ./.grok/settings.json or ~/.grok/settings.json)"
43599
+ }).example("$0 cli", "Launch Grok CLI interactively").example('$0 cli "Design a REST API"', "Send prompt directly to Grok").example("$0 cli --model grok-2", "Use specific Grok model");
43600
+ },
43601
+ handler: async (argv) => {
43602
+ try {
43603
+ let configPath = argv.config;
43604
+ if (!configPath) {
43605
+ const locations = [
43606
+ // 1. Project-specific .grok directory (current directory)
43607
+ join(process.cwd(), ".grok", "settings.json"),
43608
+ // 2. User home directory .grok
43609
+ join(homedir(), ".grok", "settings.json")
43610
+ ];
43611
+ for (const location of locations) {
43612
+ if (existsSync(location)) {
43613
+ configPath = location;
43614
+ break;
43615
+ }
43616
+ }
43617
+ if (!configPath) {
43618
+ configPath = join(homedir(), ".grok", "settings.json");
43619
+ }
43620
+ }
43621
+ const grokCommand = process.platform === "win32" ? "grok.cmd" : "grok";
43622
+ logger.info("Launching Grok CLI", {
43623
+ configPath,
43624
+ hasPrompt: !!argv.prompt,
43625
+ model: argv.model
43626
+ });
43627
+ if (!existsSync(configPath)) {
43628
+ console.log(chalk5.yellow("\n\u26A0\uFE0F Grok settings not found"));
43629
+ console.log(chalk5.gray(" Checked:"));
43630
+ console.log(chalk5.gray(" - ./.grok/settings.json (project)"));
43631
+ console.log(chalk5.gray(" - ~/.grok/settings.json (home)"));
43632
+ console.log(chalk5.blue("\n\u{1F4A1} To set up Grok:"));
43633
+ console.log(chalk5.gray(" 1. Install Grok CLI: npm install -g @grok/cli"));
43634
+ console.log(chalk5.gray(" 2. Configure API key: grok config set api-key YOUR_KEY"));
43635
+ console.log(chalk5.gray(" 3. This will create ~/.grok/settings.json"));
43636
+ console.log(chalk5.gray(" 4. Run ax cli again\n"));
43637
+ process.exit(1);
43638
+ }
43639
+ try {
43640
+ const configContent = readFileSync(configPath, "utf-8");
43641
+ const config = JSON.parse(configContent);
43642
+ const isPlaceholder = config.apiKey && (config.apiKey.includes("YOUR_") || config.apiKey.includes("_KEY_HERE") || config.apiKey === "YOUR_XAI_API_KEY_HERE" || config.apiKey === "YOUR_ZAI_API_KEY_HERE");
43643
+ if (!config.apiKey || isPlaceholder) {
43644
+ if (!process.env.GROK_API_KEY) {
43645
+ console.log(chalk5.yellow("\n\u26A0\uFE0F No valid API key found in Grok config"));
43646
+ console.log(chalk5.gray(" Config path:"), chalk5.white(configPath));
43647
+ if (isPlaceholder) {
43648
+ console.log(chalk5.gray(" Issue: API key is still a placeholder"));
43649
+ }
43650
+ console.log(chalk5.blue("\n\u{1F4A1} To configure your API key:"));
43651
+ console.log(chalk5.gray(" Option 1: Set environment variable:"));
43652
+ console.log(chalk5.gray(' export GROK_API_KEY="your-actual-key"'));
43653
+ console.log(chalk5.gray(" Option 2: Update settings.json with real API key"));
43654
+ console.log(chalk5.gray(" Option 3: Use grok CLI directly:"));
43655
+ console.log(chalk5.gray(" grok config set api-key YOUR_KEY\n"));
43656
+ process.exit(1);
43657
+ }
43658
+ }
43659
+ logger.debug("Grok config loaded", {
43660
+ hasApiKey: !!config.apiKey,
43661
+ model: config.defaultModel || "not set",
43662
+ server: config.server || "default"
43663
+ });
43664
+ } catch (error) {
43665
+ console.log(chalk5.red("\n\u274C Invalid Grok settings file at:"), chalk5.gray(configPath));
43666
+ console.log(chalk5.gray(" Error:"), error instanceof Error ? error.message : String(error));
43667
+ console.log(chalk5.blue("\n\u{1F4A1} Try recreating your settings:"));
43668
+ console.log(chalk5.gray(" grok config set api-key YOUR_KEY"));
43669
+ console.log(chalk5.gray(" This will recreate ~/.grok/settings.json\n"));
43670
+ process.exit(1);
43671
+ }
43672
+ const grokArgs = [];
43673
+ if (argv.model) {
43674
+ grokArgs.push("--model", argv.model);
43675
+ }
43676
+ if (argv.config) {
43677
+ grokArgs.push("--config", argv.config);
43678
+ }
43679
+ if (argv.prompt) {
43680
+ grokArgs.push(argv.prompt);
43681
+ }
43682
+ console.log(chalk5.blue("\n\u{1F680} Launching Grok CLI..."));
43683
+ if (argv.prompt) {
43684
+ console.log(chalk5.gray(" Prompt:"), chalk5.white(argv.prompt));
43685
+ }
43686
+ if (argv.model) {
43687
+ console.log(chalk5.gray(" Model:"), chalk5.white(argv.model));
43688
+ }
43689
+ console.log(chalk5.gray(" Config:"), chalk5.white(configPath));
43690
+ console.log(chalk5.gray("\n Press Ctrl+C to exit\n"));
43691
+ const grokProcess = spawn(grokCommand, grokArgs, {
43692
+ stdio: "inherit",
43693
+ shell: true,
43694
+ env: {
43695
+ ...process.env,
43696
+ GROK_CONFIG_PATH: configPath
43697
+ }
43698
+ });
43699
+ grokProcess.on("error", (error) => {
43700
+ if (error.code === "ENOENT") {
43701
+ console.log(chalk5.red("\n\u274C Grok CLI not found"));
43702
+ console.log(chalk5.blue("\n\u{1F4A1} To install Grok CLI:"));
43703
+ console.log(chalk5.gray(" npm install -g @grok/cli"));
43704
+ console.log(chalk5.gray("\n Or visit: https://grok.x.ai/cli\n"));
43705
+ } else {
43706
+ console.log(chalk5.red("\n\u274C Error launching Grok CLI:"), error.message);
43707
+ }
43708
+ process.exit(1);
43709
+ });
43710
+ grokProcess.on("exit", (code) => {
43711
+ if (code !== 0 && code !== null) {
43712
+ logger.debug("Grok CLI exited with code", { code });
43713
+ }
43714
+ process.exit(code || 0);
43715
+ });
43716
+ const cleanup = () => {
43717
+ if (!grokProcess.killed) {
43718
+ grokProcess.kill("SIGTERM");
43719
+ }
43720
+ };
43721
+ process.on("SIGINT", cleanup);
43722
+ process.on("SIGTERM", cleanup);
43723
+ process.on("exit", cleanup);
43724
+ } catch (error) {
43725
+ logger.error("Failed to launch Grok CLI", { error });
43726
+ console.log(chalk5.red("\n\u274C Failed to launch Grok CLI"));
43727
+ if (error instanceof Error) {
43728
+ console.log(chalk5.gray(" Error:"), error.message);
43729
+ }
43730
+ console.log(chalk5.blue("\n\u{1F4A1} Try running Grok directly:"));
43731
+ console.log(chalk5.gray(' grok "your prompt"\n'));
43732
+ process.exit(1);
43733
+ }
43734
+ }
43735
+ };
43736
+
43578
43737
  // src/cli/index.ts
43579
43738
  installExitHandlers();
43580
43739
  var VERSION2 = getVersion();
@@ -43582,7 +43741,7 @@ globalTracker.mark("cli_start");
43582
43741
  (async () => {
43583
43742
  try {
43584
43743
  globalTracker.mark("yargs_parse_start");
43585
- const argv = await yargs(hideBin(process.argv)).scriptName("automatosx").usage("$0 <command> [options]").usage("\nAI Agent Orchestration Platform").example("$0 setup", "Set up project").example("$0 init", "Initialize ax.md project context").example("$0 agent create backend --template developer", "Create agent from template").example("$0 agent list", "List all agents").example('$0 run assistant "Hello"', "Run assistant agent").example('$0 run backend "task" --interactive', "Run with interactive checkpoints").example("$0 resume <run-id>", "Resume from checkpoint").example("$0 runs list", "List checkpoint runs").example('$0 session create "Build API" backend', "Create multi-agent session").example("$0 session list", "List all sessions").example("$0 workspace stats", "Show workspace statistics").example("$0 list agents", "List available agents").example('$0 memory search "topic"', "Search memory").example("$0 cache status", "View cache statistics").example("$0 config --list", "View configuration").example("$0 provider-limits", "Show provider usage limits").example("$0 mcp", "Start MCP server for Claude Code").example("$0 update", "Update to latest version").example("$0 gemini status", "Show Gemini CLI integration status").example("$0 spec run", "Execute spec-driven tasks").example("$0 spec status", "Show spec task status").example("$0 providers list", "List all providers").example("$0 providers info openai", "Show provider details").example("$0 gen plan workflow.ax.yaml", "Generate execution plan").example("$0 gen dag workflow.ax.yaml", "Generate DAG JSON").example("$0 doctor", "Run diagnostic checks").example("$0 doctor openai", "Check OpenAI provider setup").example("$0 configure", "Configure provider integration mode").example("$0 cleanup", "Clean up orphaned processes").example("$0 cleanup openai --force", "Force cleanup OpenAI processes").example("$0 analytics summary", "Show usage analytics summary").example("$0 analytics optimize", "Show optimization recommendations").example("$0 flags list", "List all feature flags").example("$0 flags rollout gemini_streaming 10", "Increase feature rollout to 10%").example("$0 free-tier status", "Show free tier quota status").example("$0 free-tier history gemini-cli", "Show Gemini free tier history").option("debug", {
43744
+ const argv = await yargs(hideBin(process.argv)).scriptName("automatosx").usage("$0 <command> [options]").usage("\nAI Agent Orchestration Platform").example("$0 setup", "Set up project").example("$0 init", "Initialize ax.md project context").example("$0 agent create backend --template developer", "Create agent from template").example("$0 agent list", "List all agents").example('$0 run assistant "Hello"', "Run assistant agent").example('$0 run backend "task" --interactive', "Run with interactive checkpoints").example("$0 resume <run-id>", "Resume from checkpoint").example("$0 runs list", "List checkpoint runs").example('$0 session create "Build API" backend', "Create multi-agent session").example("$0 session list", "List all sessions").example("$0 workspace stats", "Show workspace statistics").example("$0 list agents", "List available agents").example('$0 memory search "topic"', "Search memory").example("$0 cache status", "View cache statistics").example("$0 config --list", "View configuration").example("$0 provider-limits", "Show provider usage limits").example("$0 mcp", "Start MCP server for Claude Code").example("$0 update", "Update to latest version").example("$0 cli", "Launch Grok CLI with project context").example('$0 cli "Design API"', "Send prompt to Grok CLI").example("$0 gemini status", "Show Gemini CLI integration status").example("$0 spec run", "Execute spec-driven tasks").example("$0 spec status", "Show spec task status").example("$0 providers list", "List all providers").example("$0 providers info openai", "Show provider details").example("$0 gen plan workflow.ax.yaml", "Generate execution plan").example("$0 gen dag workflow.ax.yaml", "Generate DAG JSON").example("$0 doctor", "Run diagnostic checks").example("$0 doctor openai", "Check OpenAI provider setup").example("$0 configure", "Configure provider integration mode").example("$0 cleanup", "Clean up orphaned processes").example("$0 cleanup openai --force", "Force cleanup OpenAI processes").example("$0 analytics summary", "Show usage analytics summary").example("$0 analytics optimize", "Show optimization recommendations").example("$0 flags list", "List all feature flags").example("$0 flags rollout gemini_streaming 10", "Increase feature rollout to 10%").example("$0 free-tier status", "Show free tier quota status").example("$0 free-tier history gemini-cli", "Show Gemini free tier history").option("debug", {
43586
43745
  alias: "D",
43587
43746
  type: "boolean",
43588
43747
  description: "Enable debug mode with verbose output",
@@ -43597,7 +43756,7 @@ globalTracker.mark("cli_start");
43597
43756
  type: "string",
43598
43757
  description: "Path to custom config file",
43599
43758
  global: true
43600
- }).command(setupCommand).command(initCommand).command(configureCommand).command(agentCommand).command(listCommand).command(runCommand).command(resumeCommand).command(runsCommand).command(sessionCommand).command(workspaceCommand).command(cacheCommand).command(configCommand).command(statusCommand3).command(doctorCommand2).command(cleanupCommand2).command(analyticsCommand).command(memoryCommand).command(mcpCommand).command(geminiCommand).command(providerLimitsCommand).command(providersCommand).command(flagsCommand).command(specCommand).command(genCommand).command(updateCommand).demandCommand(1, "You must provide a command. Run --help for usage.").help().version(VERSION2).alias("h", "help").alias("v", "version").strict().wrap(Math.min(120, yargs().terminalWidth())).parse();
43759
+ }).command(setupCommand).command(initCommand).command(configureCommand).command(cliCommand).command(agentCommand).command(listCommand).command(runCommand).command(resumeCommand).command(runsCommand).command(sessionCommand).command(workspaceCommand).command(cacheCommand).command(configCommand).command(statusCommand3).command(doctorCommand2).command(cleanupCommand2).command(analyticsCommand).command(memoryCommand).command(mcpCommand).command(geminiCommand).command(providerLimitsCommand).command(providersCommand).command(flagsCommand).command(specCommand).command(genCommand).command(updateCommand).demandCommand(1, "You must provide a command. Run --help for usage.").help().version(VERSION2).alias("h", "help").alias("v", "version").strict().wrap(Math.min(120, yargs().terminalWidth())).parse();
43601
43760
  globalTracker.mark("yargs_parse_end");
43602
43761
  globalTracker.measure("yargs_parsing", "yargs_parse_start", "yargs_parse_end");
43603
43762
  globalTracker.mark("options_setup_start");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defai.digital/automatosx",
3
- "version": "8.4.0",
3
+ "version": "8.4.2",
4
4
  "description": "AI Agent Orchestration Platform",
5
5
  "type": "module",
6
6
  "publishConfig": {