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.
- package/dist/bin.js +68 -64
- 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
|
|
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
|
|
55
|
-
|
|
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
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
const openaiKey = await
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
const googleKey = await
|
|
73
|
-
|
|
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
|
|
80
|
-
|
|
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.
|
|
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
|
|
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
|
|
636
|
+
const rl2 = readline2.createInterface({
|
|
633
637
|
input: process.stdin,
|
|
634
638
|
output: process.stdout
|
|
635
639
|
});
|
|
636
|
-
const ask = (question) => new Promise((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
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
2395
|
+
const confirm2 = await input({
|
|
2392
2396
|
message: 'Type "destroy" to confirm:'
|
|
2393
2397
|
});
|
|
2394
|
-
if (
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
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
|
-
|
|
2926
|
-
|
|
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:
|
|
3248
|
-
const idea = await
|
|
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
|
|
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:
|
|
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
|
|
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.
|
|
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.
|
|
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);
|