fluxflow-cli 1.18.11 → 1.18.13
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/README.md +1 -0
- package/dist/fluxflow.js +222 -24
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -107,6 +107,7 @@ fluxflow [options]
|
|
|
107
107
|
- `--auto-del <1d|7d|30d>`: Set automated chat log deletion schedule.
|
|
108
108
|
- `--auto-exec <on|off>`: Toggle autonomous command execution permission.
|
|
109
109
|
- `--external-access <on|off>`: Toggle permission to let agent read files outside CWD.
|
|
110
|
+
- `--thinking <Fast|Medium|High|xHigh>`: Override default thinking level.
|
|
110
111
|
|
|
111
112
|
---
|
|
112
113
|
|
package/dist/fluxflow.js
CHANGED
|
@@ -1119,7 +1119,8 @@ var init_arg_parser = __esm({
|
|
|
1119
1119
|
import { execSync } from "child_process";
|
|
1120
1120
|
var _isPsAvailable, isPsAvailable, TOOL_PROTOCOL;
|
|
1121
1121
|
var init_main_tools = __esm({
|
|
1122
|
-
"src/data/main_tools.js"() {
|
|
1122
|
+
async "src/data/main_tools.js"() {
|
|
1123
|
+
await init_exec_command();
|
|
1123
1124
|
_isPsAvailable = null;
|
|
1124
1125
|
isPsAvailable = () => {
|
|
1125
1126
|
if (process.platform !== "win32") return false;
|
|
@@ -1149,10 +1150,10 @@ Suggest best options; don't ask for preferences
|
|
|
1149
1150
|
${mode === "Flux" ? `- PROJECT TOOLS (path = relative to CWD) -
|
|
1150
1151
|
1. [tool:functions.ReadFile(path="...", startLine=number, endLine=number)]. Supports images/docs. User gives image/doc: VIEW FIRST
|
|
1151
1152
|
2. [tool:functions.ReadFolder(path="...")]. Detailed DIR stats
|
|
1152
|
-
3. [tool:functions.PatchFile(path="...", replaceContent1="exact string", newContent1="...", ...MAX 8)]. Surgical Patch. Unsure? ReadFile > guessing. Multiple
|
|
1153
|
+
3. [tool:functions.PatchFile(path="...", replaceContent1="exact string", newContent1="...", ...MAX 8)]. Surgical Patch. Unsure? ReadFile > guessing. Multiple patch same file? Use replaceContent2, newContent2 etc >>> tool spamming
|
|
1153
1154
|
4. [tool:functions.WriteFile(path="...", content="...")]. Creates/Overwrites. File Exist? PatchFile >> WriteFile. Verify Imports
|
|
1154
|
-
5. [tool:functions.SearchKeyword(keyword="...", file="
|
|
1155
|
-
6. [tool:functions.Run(command="...")]. Runs ${osDetected === "Windows" ? isPsAvailable() ? "WINDOWS POWERSHELL ONLY" : "WINDOWS CMD" : "
|
|
1155
|
+
5. [tool:functions.SearchKeyword(keyword="...", file="optional")]. Global project search. If 'file' is provided, searches only that file. Finds definitions/logic without reading every file
|
|
1156
|
+
6. [tool:functions.Run(command="...")]. Runs ${osDetected === "Windows" ? isPsAvailable() ? `${isPtyAvailable ? "Interactive " : ""}WINDOWS POWERSHELL ONLY` : `${isPtyAvailable ? "Interactive " : ""}WINDOWS CMD` : `${isPtyAvailable ? "Interactive " : ""}BASH`} command. Destructive/Irreversible ops -> Ask user
|
|
1156
1157
|
7. [tool:functions.GenerateImage(path="... png", prompt="detailed", ratio="16:9, 9:16, 1:1")]. Usage: Mockups, PDF thumbnails, any visual content
|
|
1157
1158
|
8. [tool:functions.WritePDF(path="...", content="...", orientation="...")]. PROACTIVE A4 PAGE BREAKS MUST IN CSS. HTML/CSS for PREMIUM layout (100vh/vw)
|
|
1158
1159
|
9. [tool:functions.WriteDoc(path="...", content="...")]. A4 Word document
|
|
@@ -1175,7 +1176,7 @@ var pty, isPtyAvailable, stripAnsi, activeChildProcess, isActiveCommandPty, writ
|
|
|
1175
1176
|
var init_exec_command = __esm({
|
|
1176
1177
|
async "src/tools/exec_command.js"() {
|
|
1177
1178
|
init_arg_parser();
|
|
1178
|
-
init_main_tools();
|
|
1179
|
+
await init_main_tools();
|
|
1179
1180
|
pty = null;
|
|
1180
1181
|
try {
|
|
1181
1182
|
const ptyModule = await import("node-pty");
|
|
@@ -1525,11 +1526,22 @@ var init_exec_command = __esm({
|
|
|
1525
1526
|
activeChildProcess = ptyProcess;
|
|
1526
1527
|
isActiveCommandPty = true;
|
|
1527
1528
|
let output = "";
|
|
1529
|
+
let isResolved = false;
|
|
1528
1530
|
ptyProcess.onData((data) => {
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
+
if (!isResolved) {
|
|
1532
|
+
output += data;
|
|
1533
|
+
if (onChunk) onChunk(data);
|
|
1534
|
+
const cleanOut = stripAnsi(output);
|
|
1535
|
+
if (/(?:Network:\s+use\s+--host\s+to|Network:\s+Type\s+--host\s+to|Local:\s+http:\/\/localhost:\d+|ready in \d+\s*ms|Compiled successfully|Development server is running|Listening on:)/i.test(cleanOut)) {
|
|
1536
|
+
isResolved = true;
|
|
1537
|
+
setTimeout(() => resolve(`SUCCESS: Dev server started successfully in background.
|
|
1538
|
+
|
|
1539
|
+
${cleanOut}`), 500);
|
|
1540
|
+
}
|
|
1541
|
+
}
|
|
1531
1542
|
});
|
|
1532
1543
|
ptyProcess.onExit(({ exitCode }) => {
|
|
1544
|
+
if (isResolved) return;
|
|
1533
1545
|
activeChildProcess = null;
|
|
1534
1546
|
const normalizedOutput = (output || "").replace(/\r\n/g, "\n").replace(/\r/g, "\n");
|
|
1535
1547
|
const finalOutput = stripAnsi(normalizedOutput) || "Command executed with no output.";
|
|
@@ -1589,17 +1601,30 @@ ${finalOutput}`);
|
|
|
1589
1601
|
}
|
|
1590
1602
|
let stdout = "";
|
|
1591
1603
|
let stderr = "";
|
|
1604
|
+
let isResolved = false;
|
|
1592
1605
|
child.stdout.on("data", (data) => {
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1606
|
+
if (!isResolved) {
|
|
1607
|
+
const chunk = data.toString();
|
|
1608
|
+
stdout += chunk;
|
|
1609
|
+
if (onChunk) onChunk(chunk);
|
|
1610
|
+
const cleanOut = stripAnsi(stdout);
|
|
1611
|
+
if (/(?:Network:\s+use\s+--host\s+to|Network:\s+Type\s+--host\s+to|Local:\s+http:\/\/localhost:\d+|ready in \d+\s*ms|Compiled successfully|Development server is running|Listening on:)/i.test(cleanOut)) {
|
|
1612
|
+
isResolved = true;
|
|
1613
|
+
setTimeout(() => resolve(`SUCCESS: Dev server started successfully in background.
|
|
1614
|
+
|
|
1615
|
+
${cleanOut}`), 500);
|
|
1616
|
+
}
|
|
1617
|
+
}
|
|
1596
1618
|
});
|
|
1597
1619
|
child.stderr.on("data", (data) => {
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1620
|
+
if (!isResolved) {
|
|
1621
|
+
const chunk = data.toString();
|
|
1622
|
+
stderr += chunk;
|
|
1623
|
+
if (onChunk) onChunk(chunk);
|
|
1624
|
+
}
|
|
1601
1625
|
});
|
|
1602
1626
|
child.on("close", (code) => {
|
|
1627
|
+
if (isResolved) return;
|
|
1603
1628
|
activeChildProcess = null;
|
|
1604
1629
|
const result = [];
|
|
1605
1630
|
if (stdout) result.push(`STDOUT:
|
|
@@ -2332,8 +2357,8 @@ var init_thinking_prompts = __esm({
|
|
|
2332
2357
|
import fs4 from "fs";
|
|
2333
2358
|
var getMemoryPrompt, getSystemInstruction, getJanitorInstruction;
|
|
2334
2359
|
var init_prompts = __esm({
|
|
2335
|
-
"src/utils/prompts.js"() {
|
|
2336
|
-
init_main_tools();
|
|
2360
|
+
async "src/utils/prompts.js"() {
|
|
2361
|
+
await init_main_tools();
|
|
2337
2362
|
init_janitor_tools();
|
|
2338
2363
|
init_thinking_prompts();
|
|
2339
2364
|
getMemoryPrompt = (tempMemories = "", userMemories = "", isMemoryEnabled = true, isContext32k = false) => {
|
|
@@ -2393,7 +2418,7 @@ Identity: Flux Flow (by Kushal Roy Chowdhury). Sassy${mode === "Flux" ? ", No Fl
|
|
|
2393
2418
|
Mode: ${mode}${thinkingLevel !== "Fast" ? " (Thinking Mode)" : ""}. ${mode === "Flux" ? "Logical, Highly Detailed, Task-Driven. Prioritizes scalable file/folder structures, modular architecture, clean code abstractions, step-by-step execution. Industry standard latest coding practices/libraries, clean code, Double Check Imports, Client-Server Sync" : "Conversational, Concise"}
|
|
2394
2419
|
|
|
2395
2420
|
-- AGENT LOOP RULES (PRIORITY: HIGH) --
|
|
2396
|
-
- **MUST END WITH [turn: continue] to
|
|
2421
|
+
- **MUST END WITH [turn: continue] to CONTINUE loop OR [turn: finish] to END loop**
|
|
2397
2422
|
- Tool Called? No post tool response until [turn: continue]
|
|
2398
2423
|
- NEVER USE [turn: continue] [turn:finish] together
|
|
2399
2424
|
|
|
@@ -4792,7 +4817,7 @@ import fs16 from "fs";
|
|
|
4792
4817
|
var client, TERMINATION_SIGNAL, stripAnsi2, signalTermination, TOOL_LABELS2, getToolDetail, runJanitorTask, getActiveToolContext, getContextSafeText, contextSafeReplace, getSanitizedText, detectToolCalls, initAI, consolidatePastMemories, getAIStream;
|
|
4793
4818
|
var init_ai = __esm({
|
|
4794
4819
|
async "src/utils/ai.js"() {
|
|
4795
|
-
init_prompts();
|
|
4820
|
+
await init_prompts();
|
|
4796
4821
|
init_history();
|
|
4797
4822
|
init_usage();
|
|
4798
4823
|
await init_tools();
|
|
@@ -5348,7 +5373,159 @@ ${newMemoryListStr}
|
|
|
5348
5373
|
const isContext32k = (sessionStats?.tokens || 0) >= 32e3;
|
|
5349
5374
|
const memoryPrompt = getMemoryPrompt(otherMemories, mainUserMemories, isMemoryEnabled, isContext32k);
|
|
5350
5375
|
const dateTimeStr = (/* @__PURE__ */ new Date()).toLocaleString([], { year: "numeric", month: "numeric", day: "numeric", hour: "2-digit", minute: "2-digit", hour12: true });
|
|
5351
|
-
const COLLAPSED_DIRS_GLOBAL = [
|
|
5376
|
+
const COLLAPSED_DIRS_GLOBAL = [
|
|
5377
|
+
// --- The OG Clutter ---
|
|
5378
|
+
".git",
|
|
5379
|
+
"node_modules",
|
|
5380
|
+
".gemini",
|
|
5381
|
+
"dist",
|
|
5382
|
+
"build",
|
|
5383
|
+
".next",
|
|
5384
|
+
"out",
|
|
5385
|
+
".cache",
|
|
5386
|
+
"bin",
|
|
5387
|
+
"obj",
|
|
5388
|
+
"vendor",
|
|
5389
|
+
"venv",
|
|
5390
|
+
".idea",
|
|
5391
|
+
".gradle",
|
|
5392
|
+
".terraform",
|
|
5393
|
+
"target",
|
|
5394
|
+
"coverage",
|
|
5395
|
+
".vscode",
|
|
5396
|
+
// --- Version Control, Monorepos & CI/CD ---
|
|
5397
|
+
".svn",
|
|
5398
|
+
".hg",
|
|
5399
|
+
".fslckout",
|
|
5400
|
+
".github",
|
|
5401
|
+
".gitlab",
|
|
5402
|
+
".circleci",
|
|
5403
|
+
".gitea",
|
|
5404
|
+
".gitee",
|
|
5405
|
+
".lerna",
|
|
5406
|
+
".changeset",
|
|
5407
|
+
".nx",
|
|
5408
|
+
// --- JS / TS / Web Dev Armageddon ---
|
|
5409
|
+
".npm",
|
|
5410
|
+
".yarn",
|
|
5411
|
+
".pnpm-store",
|
|
5412
|
+
".expo",
|
|
5413
|
+
".nuxt",
|
|
5414
|
+
".svelte-kit",
|
|
5415
|
+
".docusaurus",
|
|
5416
|
+
".turbo",
|
|
5417
|
+
".vercel",
|
|
5418
|
+
"bower_components",
|
|
5419
|
+
".netlify",
|
|
5420
|
+
".vuepress",
|
|
5421
|
+
".quasar",
|
|
5422
|
+
".output",
|
|
5423
|
+
".angular",
|
|
5424
|
+
"jspm_packages",
|
|
5425
|
+
".parcel-cache",
|
|
5426
|
+
".rollup.cache",
|
|
5427
|
+
".rspack",
|
|
5428
|
+
".vitepress",
|
|
5429
|
+
// --- Python & Data Science Brain Melting ---
|
|
5430
|
+
"__pycache__",
|
|
5431
|
+
".pytest_cache",
|
|
5432
|
+
".mypy_cache",
|
|
5433
|
+
".tox",
|
|
5434
|
+
".poetry",
|
|
5435
|
+
"env",
|
|
5436
|
+
"vhdl",
|
|
5437
|
+
".ipynb_checkpoints",
|
|
5438
|
+
".jupyter",
|
|
5439
|
+
".conda",
|
|
5440
|
+
".pdm-build",
|
|
5441
|
+
// --- Ruby / PHP / Go / Rust / Java / C++ / C# ---
|
|
5442
|
+
".bundle",
|
|
5443
|
+
".yardoc",
|
|
5444
|
+
".metadata",
|
|
5445
|
+
"App_Data",
|
|
5446
|
+
"ClientBin",
|
|
5447
|
+
".cargo",
|
|
5448
|
+
".rustc_info",
|
|
5449
|
+
".go",
|
|
5450
|
+
"Godeps",
|
|
5451
|
+
"_vendor",
|
|
5452
|
+
".rake_tasks",
|
|
5453
|
+
"CMakefiles",
|
|
5454
|
+
".wakatime",
|
|
5455
|
+
// --- Mobile Dev Madness (Android / iOS / Flutter) ---
|
|
5456
|
+
".dart_tool",
|
|
5457
|
+
".fvm",
|
|
5458
|
+
".cocoapods",
|
|
5459
|
+
"Pods",
|
|
5460
|
+
".pub-cache",
|
|
5461
|
+
".symlinks",
|
|
5462
|
+
"DerivedData",
|
|
5463
|
+
".xcworkspace",
|
|
5464
|
+
// --- Containers, Cloud & Database Dumps ---
|
|
5465
|
+
".serverless",
|
|
5466
|
+
".aws",
|
|
5467
|
+
".gcloud",
|
|
5468
|
+
".azure",
|
|
5469
|
+
".kube",
|
|
5470
|
+
".vagrant",
|
|
5471
|
+
".docker",
|
|
5472
|
+
"postgres-data",
|
|
5473
|
+
"redis-data",
|
|
5474
|
+
"mongo-data",
|
|
5475
|
+
// --- OS & System Trash (The Ultimate Sinners) ---
|
|
5476
|
+
".Spotlight-V100",
|
|
5477
|
+
".Trashes",
|
|
5478
|
+
"$RECYCLE.BIN",
|
|
5479
|
+
"System Volume Information",
|
|
5480
|
+
".DocumentRevisions-V100",
|
|
5481
|
+
".fseventsd",
|
|
5482
|
+
// --- Windows AppData & System Clutter ---
|
|
5483
|
+
"AppData",
|
|
5484
|
+
"Application Data",
|
|
5485
|
+
"Local",
|
|
5486
|
+
"LocalLow",
|
|
5487
|
+
"Roaming",
|
|
5488
|
+
"$WinREAgent",
|
|
5489
|
+
"$WINDOWS.~BT",
|
|
5490
|
+
"$WINDOWS.~WS",
|
|
5491
|
+
"scw",
|
|
5492
|
+
"System32",
|
|
5493
|
+
"SysWOW64",
|
|
5494
|
+
// --- macOS Specific Garbage ---
|
|
5495
|
+
".AppleDouble",
|
|
5496
|
+
".AppleDB",
|
|
5497
|
+
".AppleDesktop",
|
|
5498
|
+
"_CodeSignature",
|
|
5499
|
+
".cmio",
|
|
5500
|
+
".LSOverride",
|
|
5501
|
+
".localized",
|
|
5502
|
+
".TemporaryItems",
|
|
5503
|
+
// --- Linux / Desktop Environment Junk ---
|
|
5504
|
+
".Trash",
|
|
5505
|
+
".Trash-0",
|
|
5506
|
+
".Trash-1000",
|
|
5507
|
+
".gvfs",
|
|
5508
|
+
".local",
|
|
5509
|
+
".config",
|
|
5510
|
+
".dbus",
|
|
5511
|
+
".fontconfig",
|
|
5512
|
+
".snap",
|
|
5513
|
+
".var",
|
|
5514
|
+
".lost+found",
|
|
5515
|
+
"lost+found",
|
|
5516
|
+
".thumb",
|
|
5517
|
+
".thumbnails",
|
|
5518
|
+
// --- Dual-Boot / Bootloader Stuff ---
|
|
5519
|
+
"EFI",
|
|
5520
|
+
"boot",
|
|
5521
|
+
"grub",
|
|
5522
|
+
// --- Linters, Formatters, Logs & QA ---
|
|
5523
|
+
"logs",
|
|
5524
|
+
"log",
|
|
5525
|
+
".nyc_output",
|
|
5526
|
+
".sonar",
|
|
5527
|
+
".ruff_cache"
|
|
5528
|
+
];
|
|
5352
5529
|
const safeReaddirWithTypes = (dir) => {
|
|
5353
5530
|
try {
|
|
5354
5531
|
return fs16.readdirSync(dir, { withFileTypes: true });
|
|
@@ -5424,13 +5601,16 @@ ${newMemoryListStr}
|
|
|
5424
5601
|
yield { type: "status", content: "Gathering Context..." };
|
|
5425
5602
|
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
5426
5603
|
const totalFolders = countFolders(process.cwd());
|
|
5427
|
-
let dynamicMaxDepth =
|
|
5604
|
+
let dynamicMaxDepth = 12;
|
|
5428
5605
|
if (totalFolders > 4096) dynamicMaxDepth = 1;
|
|
5429
5606
|
else if (totalFolders > 3072) dynamicMaxDepth = 2;
|
|
5430
5607
|
else if (totalFolders > 2048) dynamicMaxDepth = 3;
|
|
5431
5608
|
else if (totalFolders > 1024) dynamicMaxDepth = 4;
|
|
5432
5609
|
else if (totalFolders > 512) dynamicMaxDepth = 6;
|
|
5433
5610
|
else if (totalFolders > 256) dynamicMaxDepth = 7;
|
|
5611
|
+
else if (totalFolders > 128) dynamicMaxDepth = 8;
|
|
5612
|
+
else if (totalFolders > 64) dynamicMaxDepth = 9;
|
|
5613
|
+
else if (totalFolders > 32) dynamicMaxDepth = 10;
|
|
5434
5614
|
let dirStructure = totalFolders > 6144 ? `FileSystem length exceeded for indexing` : process.cwd() + "\n" + getDirTree(process.cwd(), dynamicMaxDepth);
|
|
5435
5615
|
const firstUserMsg = `[SYSTEM METADATA (PRIORITY: DYNAMIC)] Time: ${dateTimeStr} | v${versionFluxflow2}
|
|
5436
5616
|
CWD: ${process.cwd()}
|
|
@@ -6474,6 +6654,7 @@ var init_UpdateProcessor = __esm({
|
|
|
6474
6654
|
try {
|
|
6475
6655
|
const ptyModule = await import("node-pty");
|
|
6476
6656
|
pty2 = ptyModule.default || ptyModule;
|
|
6657
|
+
pty2 = false;
|
|
6477
6658
|
} catch (err) {
|
|
6478
6659
|
}
|
|
6479
6660
|
SPINNER_FRAMES = ["\u280B", "\u2819", "\u2839", "\u2838", "\u283C", "\u2834", "\u2826", "\u2827", "\u2807", "\u280F"];
|
|
@@ -6598,10 +6779,10 @@ var init_UpdateProcessor = __esm({
|
|
|
6598
6779
|
}, []);
|
|
6599
6780
|
if (status === "initializing" || status === "downloading") {
|
|
6600
6781
|
const frame = SPINNER_FRAMES[Math.floor(tick / 3) % SPINNER_FRAMES.length];
|
|
6601
|
-
return /* @__PURE__ */ React11.createElement(Box11, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1 }, /* @__PURE__ */ React11.createElement(Box11, null, /* @__PURE__ */ React11.createElement(Text11, { color: "magenta" }, frame), /* @__PURE__ */ React11.createElement(Text11, { marginLeft: 1, bold: true }, " Updating Flux Flow to v", latest, "...")), /* @__PURE__ */ React11.createElement(Box11, { marginTop: 1, paddingX: 1, borderStyle: "single", borderColor: "#333" }, /* @__PURE__ */ React11.createElement(Text11, { color: "gray",
|
|
6782
|
+
return /* @__PURE__ */ React11.createElement(Box11, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1 }, /* @__PURE__ */ React11.createElement(Box11, null, /* @__PURE__ */ React11.createElement(Text11, { color: "magenta" }, frame), /* @__PURE__ */ React11.createElement(Text11, { marginLeft: 1, bold: true }, " Updating Flux Flow to v", latest, "...")), /* @__PURE__ */ React11.createElement(Box11, { marginTop: 1, paddingX: 1, borderStyle: "single", borderColor: "#333" }, /* @__PURE__ */ React11.createElement(Text11, { color: "gray", italic: true }, log || "Preparing environment...")), /* @__PURE__ */ React11.createElement(Text11, { marginTop: 1, dimColor: true }, "(Please do not close the terminal)"));
|
|
6602
6783
|
}
|
|
6603
6784
|
if (status === "success") {
|
|
6604
|
-
return /* @__PURE__ */ React11.createElement(Box11, { flexDirection: "column", borderStyle: "round", borderColor: "green", paddingX: 2, paddingY: 1 }, /* @__PURE__ */ React11.createElement(Text11, { color: "green", bold: true }, "\u2705 UPDATE SUCCESSFUL!"), /* @__PURE__ */ React11.createElement(Text11, { marginTop: 1 }, "Flux Flow has been updated to ", /* @__PURE__ */ React11.createElement(Text11, { color: "cyan" }, "v", latest), "."), /* @__PURE__ */ React11.createElement(Text11, { marginTop: 1, color: "yellow", bold: true }, "
|
|
6785
|
+
return /* @__PURE__ */ React11.createElement(Box11, { flexDirection: "column", borderStyle: "round", borderColor: "green", paddingX: 2, paddingY: 1 }, /* @__PURE__ */ React11.createElement(Text11, { color: "green", bold: true }, "\u2705 UPDATE SUCCESSFUL!"), /* @__PURE__ */ React11.createElement(Text11, { marginTop: 1 }, "Flux Flow has been updated to ", /* @__PURE__ */ React11.createElement(Text11, { color: "cyan" }, "v", latest), "."), /* @__PURE__ */ React11.createElement(Text11, { marginTop: 1, color: "yellow", bold: true }, "Please restart your terminal session to apply changes."), /* @__PURE__ */ React11.createElement(Box11, { marginTop: 1 }, /* @__PURE__ */ React11.createElement(Text11, { dimColor: true }, "(Press ESC to return to chat)")));
|
|
6605
6786
|
}
|
|
6606
6787
|
if (status === "error") {
|
|
6607
6788
|
return /* @__PURE__ */ React11.createElement(Box11, { flexDirection: "column", borderStyle: "round", borderColor: "red", paddingX: 2, paddingY: 1 }, /* @__PURE__ */ React11.createElement(Text11, { color: "red", bold: true }, "\u274C UPDATE FAILED"), /* @__PURE__ */ React11.createElement(Box11, { marginTop: 1, paddingX: 1, borderStyle: "single", borderColor: "red" }, /* @__PURE__ */ React11.createElement(Text11, { color: "red" }, error)), /* @__PURE__ */ React11.createElement(Text11, { marginTop: 1 }, "Possible causes:"), /* @__PURE__ */ React11.createElement(Text11, null, "\u2022 Missing permissions (Try running as Administrator/Sudo)"), /* @__PURE__ */ React11.createElement(Text11, null, "\u2022 Package manager (", settings.updateManager, ") not found"), /* @__PURE__ */ React11.createElement(Text11, null, "\u2022 Network failure"), /* @__PURE__ */ React11.createElement(Box11, { marginTop: 1 }, /* @__PURE__ */ React11.createElement(Text11, { dimColor: true }, "(Press ESC to return to chat)")));
|
|
@@ -6796,6 +6977,19 @@ function App({ args = [] }) {
|
|
|
6796
6977
|
} else if (arg === "--external-access" && args[i + 1]) {
|
|
6797
6978
|
parsed.externalAccess = args[i + 1].toLowerCase();
|
|
6798
6979
|
i++;
|
|
6980
|
+
} else if (arg === "--thinking" && args[i + 1]) {
|
|
6981
|
+
const val = args[i + 1];
|
|
6982
|
+
const lower = val.toLowerCase();
|
|
6983
|
+
if (["fast", "low", "medium", "high", "xhigh"].includes(lower)) {
|
|
6984
|
+
let mapped = "Medium";
|
|
6985
|
+
if (lower === "fast") mapped = "Fast";
|
|
6986
|
+
else if (lower === "low") mapped = "Low";
|
|
6987
|
+
else if (lower === "medium") mapped = "Medium";
|
|
6988
|
+
else if (lower === "high") mapped = "High";
|
|
6989
|
+
else if (lower === "xhigh") mapped = "xHigh";
|
|
6990
|
+
parsed.thinking = mapped;
|
|
6991
|
+
}
|
|
6992
|
+
i++;
|
|
6799
6993
|
}
|
|
6800
6994
|
}
|
|
6801
6995
|
return parsed;
|
|
@@ -7193,7 +7387,11 @@ function App({ args = [] }) {
|
|
|
7193
7387
|
}
|
|
7194
7388
|
const saved = await loadSettings();
|
|
7195
7389
|
setMode(saved.mode);
|
|
7196
|
-
|
|
7390
|
+
if (parsedArgs.thinking) {
|
|
7391
|
+
setThinkingLevel(parsedArgs.thinking);
|
|
7392
|
+
} else {
|
|
7393
|
+
setThinkingLevel(saved.thinkingLevel);
|
|
7394
|
+
}
|
|
7197
7395
|
persistedModelRef.current = saved.activeModel;
|
|
7198
7396
|
if (parsedArgs.model) {
|
|
7199
7397
|
setActiveModel(parsedArgs.model);
|
|
@@ -8956,7 +9154,7 @@ Selection: ${val}`,
|
|
|
8956
9154
|
}
|
|
8957
9155
|
)));
|
|
8958
9156
|
default:
|
|
8959
|
-
return /* @__PURE__ */ React13.createElement(Box13, { flexDirection: "column", marginTop: 1, flexShrink: 0, width: "100%" }, /* @__PURE__ */ React13.createElement(Box13, { paddingX: 1, marginBottom: 0, justifyContent: "space-between", width: "100%" }, /* @__PURE__ */ React13.createElement(Box13, null, statusText ? /* @__PURE__ */ React13.createElement(Box13, null, isSpinnerActive && /* @__PURE__ */ React13.createElement(StatusSpinner, null), /* @__PURE__ */ React13.createElement(Text13, { color: "magenta", bold: true, italic: true }, isSpinnerActive ? " " : "", statusText.toUpperCase())) : /* @__PURE__ */ React13.createElement(Text13, { color: "cyan", dimColor: true, italic: true }, " ", input.length > 0 && escPressCount ? "Press ESC again to clear input" : "READY FOR COMMAND...")), /* @__PURE__ */ React13.createElement(Box13, null, /* @__PURE__ */ React13.createElement(Text13, { color: "gray", bold: true }, "[ "), /* @__PURE__ */ React13.createElement(Text13, { color: "white" }, tempModelOverride || activeModel), /* @__PURE__ */ React13.createElement(Text13, { color: "gray", bold: true }, " ]"))), /* @__PURE__ */ React13.createElement(
|
|
9157
|
+
return /* @__PURE__ */ React13.createElement(Box13, { flexDirection: "column", marginTop: 1, flexShrink: 0, width: "100%" }, /* @__PURE__ */ React13.createElement(Box13, { paddingX: 1, marginBottom: 0, justifyContent: "space-between", width: "100%" }, /* @__PURE__ */ React13.createElement(Box13, null, statusText ? /* @__PURE__ */ React13.createElement(Box13, null, isSpinnerActive && !isSpinnerActive && /* @__PURE__ */ React13.createElement(StatusSpinner, null), /* @__PURE__ */ React13.createElement(Text13, { color: "magenta", bold: true, italic: true }, isSpinnerActive && !isSpinnerActive ? " " : "", statusText.toUpperCase())) : /* @__PURE__ */ React13.createElement(Text13, { color: "cyan", dimColor: true, italic: true }, " ", input.length > 0 && escPressCount ? "Press ESC again to clear input" : "READY FOR COMMAND...")), /* @__PURE__ */ React13.createElement(Box13, null, /* @__PURE__ */ React13.createElement(Text13, { color: "gray", bold: true }, "[ "), /* @__PURE__ */ React13.createElement(Text13, { color: "white" }, tempModelOverride || activeModel), /* @__PURE__ */ React13.createElement(Text13, { color: "gray", bold: true }, " ]"))), /* @__PURE__ */ React13.createElement(
|
|
8960
9158
|
Box13,
|
|
8961
9159
|
{
|
|
8962
9160
|
borderStyle: "round",
|
|
@@ -8982,7 +9180,7 @@ Selection: ${val}`,
|
|
|
8982
9180
|
newline: (key) => key.return && key.shift || key.return && key.ctrl || key.return && key.leftAlt || key.return && key.rightAlt
|
|
8983
9181
|
}
|
|
8984
9182
|
}
|
|
8985
|
-
)))) : /* @__PURE__ */ React13.createElement(Box13, { flexDirection: "row", width: "100%", paddingY: 0 }, /* @__PURE__ */ React13.createElement(Box13, { flexShrink: 0, width: 4 }, /* @__PURE__ */ React13.createElement(Text13, { color: isProcessing ? "magenta" : "cyan", bold: true }, isProcessing ? "\u2726 " : "\u{1F4A0} ")), /* @__PURE__ */ React13.createElement(Box13, { flexGrow: 1 }, /* @__PURE__ */ React13.createElement(Box13, { flexGrow: 1, position: "relative" }, input === "" && /* @__PURE__ */ React13.createElement(Box13, { position: "absolute", paddingLeft: 0 }, activeCommand && !isTerminalFocused ? /* @__PURE__ */ React13.createElement(Text13, { color: "yellow" }, isTerminalWaitingForInput ? " Terminal is waiting for
|
|
9183
|
+
)))) : /* @__PURE__ */ React13.createElement(Box13, { flexDirection: "row", width: "100%", paddingY: 0 }, /* @__PURE__ */ React13.createElement(Box13, { flexShrink: 0, width: 4 }, /* @__PURE__ */ React13.createElement(Text13, { color: isProcessing ? "magenta" : "cyan", bold: true }, isProcessing ? "\u2726 " : "\u{1F4A0} ")), /* @__PURE__ */ React13.createElement(Box13, { flexGrow: 1 }, /* @__PURE__ */ React13.createElement(Box13, { flexGrow: 1, position: "relative" }, input === "" && /* @__PURE__ */ React13.createElement(Box13, { position: "absolute", paddingLeft: 0 }, activeCommand && !isTerminalFocused ? /* @__PURE__ */ React13.createElement(Text13, { color: "yellow" }, isTerminalWaitingForInput ? " Terminal is waiting for user input. Press TAB to interact" : " Press TAB to interact with terminal...") : activeCommand && isTerminalFocused ? /* @__PURE__ */ React13.createElement(Text13, { color: "yellow", bold: true }, " [ TERMINAL FOCUSED ] Type to interact, press TAB to exit...") : escPressCount === 1 ? /* @__PURE__ */ React13.createElement(Text13, { color: "cyan", bold: true }, " Press ESC again to ", input.length > 0 ? "clear input" : "revert codebase to checkpoint", "...") : /* @__PURE__ */ React13.createElement(Text13, { color: "gray" }, escPressed ? " Press ESC again to cancel the request." : !isProcessing ? ` Send message or /cmd... (${terminalEnv.shortcut} for newline)` : " Enter a prompt to steer the agent.")), /* @__PURE__ */ React13.createElement(
|
|
8986
9184
|
MultilineInput,
|
|
8987
9185
|
{
|
|
8988
9186
|
key: `input-${inputKey}`,
|