buildwithnexus 0.6.13 → 0.6.15

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 (2) hide show
  1. package/dist/bin.js +68 -64
  2. package/package.json +1 -1
package/dist/bin.js CHANGED
@@ -41,7 +41,14 @@ __export(init_command_exports, {
41
41
  import fs from "fs";
42
42
  import path2 from "path";
43
43
  import os2 from "os";
44
- import { input, confirm, password } from "@inquirer/prompts";
44
+ import * as readline from "readline";
45
+ function readFromStdin(prompt) {
46
+ return new Promise((resolve) => {
47
+ rl.question(prompt, (answer) => {
48
+ resolve(answer);
49
+ });
50
+ });
51
+ }
45
52
  async function deepAgentsInitCommand() {
46
53
  console.log(`
47
54
  \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557
@@ -51,11 +58,8 @@ async function deepAgentsInitCommand() {
51
58
  const envPath = path2.join(os2.homedir(), ".env.local");
52
59
  const hasEnv = fs.existsSync(envPath);
53
60
  if (hasEnv) {
54
- const shouldReset = await confirm({
55
- message: ".env.local already exists. Reconfigure?",
56
- default: false
57
- });
58
- if (!shouldReset) {
61
+ const answer = await readFromStdin(".env.local already exists. Reconfigure? (y/n) [n]: ");
62
+ if (answer.toLowerCase() !== "y" && answer.toLowerCase() !== "yes") {
59
63
  console.log("Setup complete -- using existing configuration.");
60
64
  return;
61
65
  }
@@ -63,27 +67,21 @@ async function deepAgentsInitCommand() {
63
67
  console.log(
64
68
  "Please provide your LLM API keys:\n(You can set these later by editing .env.local)\n"
65
69
  );
66
- const anthropicKey = await password({
67
- message: "ANTHROPIC_API_KEY (Claude - optional, press Enter to skip)"
68
- });
69
- const openaiKey = await password({
70
- message: "OPENAI_API_KEY (GPT - optional, press Enter to skip)"
71
- });
72
- const googleKey = await password({
73
- message: "GOOGLE_API_KEY (Gemini - optional, press Enter to skip)"
74
- });
70
+ const anthropicKey = await readFromStdin(
71
+ "ANTHROPIC_API_KEY (Claude - optional, press Enter to skip): "
72
+ );
73
+ const openaiKey = await readFromStdin(
74
+ "OPENAI_API_KEY (GPT - optional, press Enter to skip): "
75
+ );
76
+ const googleKey = await readFromStdin(
77
+ "GOOGLE_API_KEY (Gemini - optional, press Enter to skip): "
78
+ );
75
79
  if (!anthropicKey && !openaiKey && !googleKey) {
76
80
  console.log("Error: At least one API key must be provided.");
77
81
  return;
78
82
  }
79
- const backendUrl = await input({
80
- message: "Backend URL",
81
- default: "http://localhost:4200"
82
- });
83
- const dashboardPort = await input({
84
- message: "Dashboard port",
85
- default: "4201"
86
- });
83
+ const backendUrl = await readFromStdin("Backend URL (http://localhost:4200): ") || "http://localhost:4200";
84
+ const dashboardPort = await readFromStdin("Dashboard port (4201): ") || "4201";
87
85
  const envContent = `# Deep Agents Configuration
88
86
  # Generated by buildwithnexus init
89
87
 
@@ -102,11 +100,17 @@ DASHBOARD_PORT=${dashboardPort}
102
100
  fs.writeFileSync(envPath, envContent, { mode: 384 });
103
101
  reloadEnv(envPath);
104
102
  console.log("Configuration saved to .env.local and loaded into environment.");
103
+ rl.close();
105
104
  }
105
+ var rl;
106
106
  var init_init_command = __esm({
107
107
  "src/cli/init-command.ts"() {
108
108
  "use strict";
109
109
  init_config();
110
+ rl = readline.createInterface({
111
+ input: process.stdin,
112
+ output: process.stdout
113
+ });
110
114
  }
111
115
  });
112
116
 
@@ -129,7 +133,7 @@ function getVersion() {
129
133
  const packageJson = JSON.parse(readFileSync(packagePath, "utf-8"));
130
134
  return packageJson.version;
131
135
  } catch {
132
- return true ? "0.6.13" : "0.0.0-unknown";
136
+ return true ? "0.6.15" : "0.0.0-unknown";
133
137
  }
134
138
  }
135
139
  function showBanner() {
@@ -515,7 +519,7 @@ async function dashboardCommand(options) {
515
519
  }
516
520
 
517
521
  // src/cli/interactive.ts
518
- import * as readline from "readline";
522
+ import * as readline2 from "readline";
519
523
  import chalk2 from "chalk";
520
524
 
521
525
  // src/cli/intent-classifier.ts
@@ -629,11 +633,11 @@ async function interactiveMode() {
629
633
  console.error(chalk2.red("\u274C Cannot connect to backend at " + backendUrl));
630
634
  process.exit(1);
631
635
  }
632
- const rl = readline.createInterface({
636
+ const rl2 = readline2.createInterface({
633
637
  input: process.stdin,
634
638
  output: process.stdout
635
639
  });
636
- const ask = (question) => new Promise((resolve) => rl.question(question, resolve));
640
+ const ask = (question) => new Promise((resolve) => rl2.question(question, resolve));
637
641
  console.clear();
638
642
  console.log(chalk2.cyan("\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557"));
639
643
  console.log(
@@ -647,7 +651,7 @@ async function interactiveMode() {
647
651
  const task = await ask(chalk2.bold.blue("\u{1F4DD} Task: "));
648
652
  if (task.toLowerCase() === "exit") {
649
653
  console.log(chalk2.yellow("\nGoodbye! \u{1F44B}\n"));
650
- rl.close();
654
+ rl2.close();
651
655
  process.exit(0);
652
656
  }
653
657
  if (!task.trim()) {
@@ -657,7 +661,7 @@ async function interactiveMode() {
657
661
  const suggestedMode = classifyIntent(task).toUpperCase();
658
662
  tui.displaySuggestedMode(suggestedMode, task);
659
663
  const currentMode = await selectMode(suggestedMode, ask);
660
- await runModeLoop(currentMode, task, backendUrl, rl, ask);
664
+ await runModeLoop(currentMode, task, backendUrl, rl2, ask);
661
665
  console.log("");
662
666
  }
663
667
  }
@@ -678,7 +682,7 @@ async function selectMode(suggested, ask) {
678
682
  if (lower === "br" || lower === "brainstorm") return "BRAINSTORM";
679
683
  return suggested;
680
684
  }
681
- async function runModeLoop(mode, task, backendUrl, rl, ask) {
685
+ async function runModeLoop(mode, task, backendUrl, rl2, ask) {
682
686
  let currentMode = mode;
683
687
  while (true) {
684
688
  console.clear();
@@ -686,7 +690,7 @@ async function runModeLoop(mode, task, backendUrl, rl, ask) {
686
690
  tui.displayModeBar(currentMode);
687
691
  tui.displayModeHeader(currentMode);
688
692
  if (currentMode === "PLAN") {
689
- const next = await planModeLoop(task, backendUrl, rl, ask);
693
+ const next = await planModeLoop(task, backendUrl, rl2, ask);
690
694
  if (next === "BUILD") {
691
695
  currentMode = "BUILD";
692
696
  continue;
@@ -698,7 +702,7 @@ async function runModeLoop(mode, task, backendUrl, rl, ask) {
698
702
  return;
699
703
  }
700
704
  if (currentMode === "BUILD") {
701
- const next = await buildModeLoop(task, backendUrl, rl, ask);
705
+ const next = await buildModeLoop(task, backendUrl, rl2, ask);
702
706
  if (next === "switch") {
703
707
  currentMode = await promptModeSwitch(currentMode, ask);
704
708
  continue;
@@ -706,7 +710,7 @@ async function runModeLoop(mode, task, backendUrl, rl, ask) {
706
710
  return;
707
711
  }
708
712
  if (currentMode === "BRAINSTORM") {
709
- const next = await brainstormModeLoop(task, backendUrl, rl, ask);
713
+ const next = await brainstormModeLoop(task, backendUrl, rl2, ask);
710
714
  if (next === "switch") {
711
715
  currentMode = await promptModeSwitch(currentMode, ask);
712
716
  continue;
@@ -735,7 +739,7 @@ async function promptModeSwitch(current, ask) {
735
739
  if (n === 2) return others[1];
736
740
  return current;
737
741
  }
738
- async function planModeLoop(task, backendUrl, rl, ask) {
742
+ async function planModeLoop(task, backendUrl, rl2, ask) {
739
743
  console.log(chalk2.bold("Task:"), chalk2.white(task));
740
744
  console.log("");
741
745
  console.log(chalk2.yellow("\u23F3 Fetching plan from backend..."));
@@ -840,7 +844,7 @@ async function editPlanSteps(steps, ask) {
840
844
  }
841
845
  return steps;
842
846
  }
843
- async function buildModeLoop(task, backendUrl, rl, ask) {
847
+ async function buildModeLoop(task, backendUrl, rl2, ask) {
844
848
  console.log(chalk2.bold("Task:"), chalk2.white(task));
845
849
  tui.displayConnecting();
846
850
  const keys = loadApiKeys();
@@ -907,7 +911,7 @@ async function buildModeLoop(task, backendUrl, rl, ask) {
907
911
  if (answer === "s" || answer === "switch") return "switch";
908
912
  return "done";
909
913
  }
910
- async function brainstormModeLoop(task, backendUrl, rl, ask) {
914
+ async function brainstormModeLoop(task, backendUrl, rl2, ask) {
911
915
  console.log(chalk2.bold("Starting topic:"), chalk2.white(task));
912
916
  console.log(chalk2.gray('Ask follow-up questions. Type "done" to exit, "switch" to change mode.\n'));
913
917
  let currentQuestion = task;
@@ -1508,7 +1512,7 @@ import { Command as Command2 } from "commander";
1508
1512
  import chalk7 from "chalk";
1509
1513
 
1510
1514
  // src/ui/prompts.ts
1511
- import { confirm as confirm2, password as password2 } from "@inquirer/prompts";
1515
+ import { confirm, password } from "@inquirer/prompts";
1512
1516
  import chalk6 from "chalk";
1513
1517
 
1514
1518
  // src/core/dlp.ts
@@ -1654,7 +1658,7 @@ function audit(event, detail = "") {
1654
1658
  // src/ui/prompts.ts
1655
1659
  async function promptInitConfig() {
1656
1660
  console.log(chalk6.bold("\n API Keys\n"));
1657
- const anthropicKey = await password2({
1661
+ const anthropicKey = await password({
1658
1662
  message: "Anthropic API key (required):",
1659
1663
  mask: "*",
1660
1664
  validate: (val) => {
@@ -1668,7 +1672,7 @@ async function promptInitConfig() {
1668
1672
  return true;
1669
1673
  }
1670
1674
  });
1671
- const openaiKey = await password2({
1675
+ const openaiKey = await password({
1672
1676
  message: "OpenAI API key (optional, press Enter to skip):",
1673
1677
  mask: "*",
1674
1678
  validate: (val) => {
@@ -1681,7 +1685,7 @@ async function promptInitConfig() {
1681
1685
  return true;
1682
1686
  }
1683
1687
  });
1684
- const googleKey = await password2({
1688
+ const googleKey = await password({
1685
1689
  message: "Google AI API key (optional, press Enter to skip):",
1686
1690
  mask: "*",
1687
1691
  validate: (val) => {
@@ -1694,7 +1698,7 @@ async function promptInitConfig() {
1694
1698
  return true;
1695
1699
  }
1696
1700
  });
1697
- const enableTunnel = await confirm2({
1701
+ const enableTunnel = await confirm({
1698
1702
  message: "Enable Cloudflare tunnel for remote access?",
1699
1703
  default: true
1700
1704
  });
@@ -2377,7 +2381,7 @@ var updateCommand = new Command8("update").description("Update NEXUS to the late
2377
2381
  import { Command as Command9 } from "commander";
2378
2382
  import chalk10 from "chalk";
2379
2383
  import fs6 from "fs";
2380
- import { input as input2 } from "@inquirer/prompts";
2384
+ import { input } from "@inquirer/prompts";
2381
2385
  import path8 from "path";
2382
2386
  var destroyCommand = new Command9("destroy").description("Remove NEXUS VM and all data").option("--force", "Skip confirmation").action(async (opts) => {
2383
2387
  const config = loadConfig();
@@ -2388,10 +2392,10 @@ var destroyCommand = new Command9("destroy").description("Remove NEXUS VM and al
2388
2392
  console.log(chalk10.red(" - SSH keys"));
2389
2393
  console.log(chalk10.red(" - Configuration and API keys"));
2390
2394
  console.log("");
2391
- const confirm3 = await input2({
2395
+ const confirm2 = await input({
2392
2396
  message: 'Type "destroy" to confirm:'
2393
2397
  });
2394
- if (confirm3 !== "destroy") {
2398
+ if (confirm2 !== "destroy") {
2395
2399
  log.warn("Aborted");
2396
2400
  return;
2397
2401
  }
@@ -2429,7 +2433,7 @@ var destroyCommand = new Command9("destroy").description("Remove NEXUS VM and al
2429
2433
 
2430
2434
  // src/commands/keys.ts
2431
2435
  import { Command as Command10 } from "commander";
2432
- import { password as password3 } from "@inquirer/prompts";
2436
+ import { password as password2 } from "@inquirer/prompts";
2433
2437
  import chalk11 from "chalk";
2434
2438
  var keysCommand = new Command10("keys").description("Manage API keys");
2435
2439
  keysCommand.command("list").description("Show configured API keys (masked)").action(() => {
@@ -2464,7 +2468,7 @@ keysCommand.command("set <key>").description("Set or update an API key (e.g. ANT
2464
2468
  log.dim(`Valid keys: ${validKeys.join(", ")}`);
2465
2469
  process.exit(1);
2466
2470
  }
2467
- const value = await password3({ message: `Enter value for ${upper}:`, mask: "*" });
2471
+ const value = await password2({ message: `Enter value for ${upper}:`, mask: "*" });
2468
2472
  if (!value) {
2469
2473
  log.warn("Empty value \u2014 key not changed");
2470
2474
  return;
@@ -2501,7 +2505,7 @@ var sshCommand = new Command11("ssh").description("Open an interactive shell ins
2501
2505
  // src/commands/brainstorm.ts
2502
2506
  import { Command as Command12 } from "commander";
2503
2507
  import chalk12 from "chalk";
2504
- import { input as input3 } from "@inquirer/prompts";
2508
+ import { input as input2 } from "@inquirer/prompts";
2505
2509
  var COS_PREFIX = chalk12.bold.cyan(" Chief of Staff");
2506
2510
  var YOU_PREFIX = chalk12.bold.white(" You");
2507
2511
  var DIVIDER = chalk12.dim(" " + "\u2500".repeat(56));
@@ -2563,7 +2567,7 @@ var brainstormCommand = new Command12("brainstorm").description("Brainstorm an i
2563
2567
  console.log("");
2564
2568
  let idea = ideaWords.length > 0 ? ideaWords.join(" ") : "";
2565
2569
  if (!idea) {
2566
- idea = await input3({
2570
+ idea = await input2({
2567
2571
  message: "What would you like to brainstorm?"
2568
2572
  });
2569
2573
  if (!idea.trim()) {
@@ -2593,7 +2597,7 @@ var brainstormCommand = new Command12("brainstorm").description("Brainstorm an i
2593
2597
  console.log(`${COS_PREFIX}:`);
2594
2598
  console.log(formatResponse(redact(response)));
2595
2599
  console.log(DIVIDER);
2596
- const followUp = await input3({
2600
+ const followUp = await input2({
2597
2601
  message: chalk12.bold("You:")
2598
2602
  });
2599
2603
  const trimmed = followUp.trim().toLowerCase();
@@ -2622,7 +2626,7 @@ var brainstormCommand = new Command12("brainstorm").description("Brainstorm an i
2622
2626
  // src/commands/ninety-nine.ts
2623
2627
  import { Command as Command13 } from "commander";
2624
2628
  import chalk13 from "chalk";
2625
- import { input as input4 } from "@inquirer/prompts";
2629
+ import { input as input3 } from "@inquirer/prompts";
2626
2630
  var AGENT_PREFIX = chalk13.bold.green(" 99 \u276F");
2627
2631
  var YOU_PREFIX2 = chalk13.bold.white(" You");
2628
2632
  var DIVIDER2 = chalk13.dim(" " + "\u2500".repeat(56));
@@ -2701,7 +2705,7 @@ var ninetyNineCommand = new Command13("99").description("AI pair-programming ses
2701
2705
  console.log("");
2702
2706
  const cwd = process.cwd();
2703
2707
  if (opts.edit) {
2704
- const instruction = instructionWords.join(" ") || await input4({
2708
+ const instruction = instructionWords.join(" ") || await input3({
2705
2709
  message: `What change should be made to ${opts.edit}?`
2706
2710
  });
2707
2711
  const { cleaned, files, rules } = parsePrefixes(instruction);
@@ -2748,7 +2752,7 @@ var ninetyNineCommand = new Command13("99").description("AI pair-programming ses
2748
2752
  }
2749
2753
  let initialInstruction = instructionWords.length > 0 ? instructionWords.join(" ") : "";
2750
2754
  if (!initialInstruction) {
2751
- initialInstruction = await input4({
2755
+ initialInstruction = await input3({
2752
2756
  message: chalk13.green("99 \u276F")
2753
2757
  });
2754
2758
  if (!initialInstruction.trim()) {
@@ -2783,7 +2787,7 @@ var ninetyNineCommand = new Command13("99").description("AI pair-programming ses
2783
2787
  console.log(`${AGENT_PREFIX}`);
2784
2788
  console.log(formatAgentActivity(redact(response)));
2785
2789
  console.log(DIVIDER2);
2786
- const followUp = await input4({
2790
+ const followUp = await input3({
2787
2791
  message: chalk13.green("99 \u276F")
2788
2792
  });
2789
2793
  const trimmed = followUp.trim().toLowerCase();
@@ -2814,7 +2818,7 @@ import { Command as Command14 } from "commander";
2814
2818
  import chalk16 from "chalk";
2815
2819
 
2816
2820
  // src/ui/repl.ts
2817
- import readline2 from "readline";
2821
+ import readline3 from "readline";
2818
2822
  import fs7 from "fs";
2819
2823
  import path9 from "path";
2820
2824
  import chalk14 from "chalk";
@@ -2849,7 +2853,7 @@ var Repl = class {
2849
2853
  }
2850
2854
  }
2851
2855
  async start() {
2852
- this.rl = readline2.createInterface({
2856
+ this.rl = readline3.createInterface({
2853
2857
  input: process.stdin,
2854
2858
  output: process.stdout,
2855
2859
  prompt: chalk14.bold.cyan("nexus") + chalk14.dim(" \u276F "),
@@ -2922,8 +2926,8 @@ var Repl = class {
2922
2926
  }
2923
2927
  write(text) {
2924
2928
  if (this.rl) {
2925
- readline2.clearLine(process.stdout, 0);
2926
- readline2.cursorTo(process.stdout, 0);
2929
+ readline3.clearLine(process.stdout, 0);
2930
+ readline3.cursorTo(process.stdout, 0);
2927
2931
  console.log(text);
2928
2932
  this.rl.prompt(true);
2929
2933
  } else {
@@ -3244,8 +3248,8 @@ var shellCommand2 = new Command14("shell").description("Launch the interactive N
3244
3248
  console.log(chalk16.bold(" \u2551 ") + chalk16.dim("Type 'exit' to end brainstorm. Type 'plan' to hand off.".padEnd(55)) + chalk16.bold("\u2551"));
3245
3249
  console.log(chalk16.bold(" \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D"));
3246
3250
  console.log("");
3247
- const { input: input5 } = await import("@inquirer/prompts");
3248
- const idea = await input5({ message: "What would you like to brainstorm?" });
3251
+ const { input: input4 } = await import("@inquirer/prompts");
3252
+ const idea = await input4({ message: "What would you like to brainstorm?" });
3249
3253
  if (!idea.trim()) return;
3250
3254
  let currentMessage = `[BRAINSTORM] The CEO wants to brainstorm the following idea. As Chief of Staff, facilitate a discussion with the entire NEXUS organization \u2014 involve VPs, engineers, QA, security, and any relevant specialists. Gather diverse perspectives, identify risks and opportunities, and help refine the idea. Do NOT execute \u2014 only discuss, analyze, and recommend. Idea: ${idea}`;
3251
3255
  while (true) {
@@ -3260,7 +3264,7 @@ var shellCommand2 = new Command14("shell").description("Launch the interactive N
3260
3264
  console.log(chalk16.white(" " + line));
3261
3265
  }
3262
3266
  console.log("");
3263
- const followUp = await input5({ message: chalk16.bold("You:") });
3267
+ const followUp = await input4({ message: chalk16.bold("You:") });
3264
3268
  const trimmed = followUp.trim().toLowerCase();
3265
3269
  if (!trimmed || trimmed === "exit" || trimmed === "quit") {
3266
3270
  console.log("");
@@ -3380,7 +3384,7 @@ var shellCommand2 = new Command14("shell").description("Launch the interactive N
3380
3384
  name: "tutorial",
3381
3385
  description: "Guided walkthrough of NEXUS capabilities",
3382
3386
  handler: async () => {
3383
- const { input: input5 } = await import("@inquirer/prompts");
3387
+ const { input: input4 } = await import("@inquirer/prompts");
3384
3388
  const steps = [
3385
3389
  {
3386
3390
  title: "Welcome to NEXUS",
@@ -3460,7 +3464,7 @@ var shellCommand2 = new Command14("shell").description("Launch the interactive N
3460
3464
  }
3461
3465
  console.log("");
3462
3466
  if (i < steps.length - 1) {
3463
- const next = await input5({ message: chalk16.dim("Press Enter to continue (or 'skip' to exit)") });
3467
+ const next = await input4({ message: chalk16.dim("Press Enter to continue (or 'skip' to exit)") });
3464
3468
  if (next.trim().toLowerCase() === "skip") {
3465
3469
  log.success("Tutorial ended. Type /help to see all commands.");
3466
3470
  return;
@@ -3497,7 +3501,7 @@ function getVersionStatic() {
3497
3501
  const packageJson = JSON.parse(readFileSync2(packagePath, "utf-8"));
3498
3502
  return packageJson.version;
3499
3503
  } catch {
3500
- return true ? "0.6.13" : "0.0.0-unknown";
3504
+ return true ? "0.6.15" : "0.0.0-unknown";
3501
3505
  }
3502
3506
  }
3503
3507
  var cli = new Command15().name("buildwithnexus").description("Auto-scaffold and launch a fully autonomous NEXUS runtime").version(getVersionStatic());
@@ -3618,7 +3622,7 @@ import os5 from "os";
3618
3622
  import path11 from "path";
3619
3623
  var homeEnvPath = path11.join(os5.homedir(), ".env.local");
3620
3624
  dotenv2.config({ path: homeEnvPath });
3621
- var version = true ? "0.6.13" : "0.5.17";
3625
+ var version = true ? "0.6.15" : "0.5.17";
3622
3626
  checkForUpdates(version);
3623
3627
  program.name("buildwithnexus").description("Deep Agents - AI-Powered Task Execution").version(version);
3624
3628
  program.command("da-init").description("Initialize Deep Agents (set up API keys and .env.local)").action(deepAgentsInitCommand);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "buildwithnexus",
3
- "version": "0.6.13",
3
+ "version": "0.6.15",
4
4
  "description": "Interactive AI agent orchestrator with intent-based planning, execution, and brainstorming modes",
5
5
  "type": "module",
6
6
  "bin": {