fluxflow-cli 1.8.3 โ†’ 1.8.5

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 CHANGED
@@ -1,38 +1,14 @@
1
- # ๐ŸŒŠ Flux Flow
2
- ![Flux Flow Hero](./fluxflow.png)
1
+ # ๐ŸŒŒ Flux Flow (`fluxflow-cli`)
2
+ ![Flux Flow Logo](https://github.com/KushalRoyChowdhury/fluxflow-cli/blob/main/fluxflow.png)
3
3
 
4
- **A Beautiful, Autonomous Terminal AI Agent**
4
+ ### *The High-Fidelity Agentic Terminal for the Flux Era.*
5
5
 
6
- Flux Flow is an advanced, fully autonomous AI agent that lives directly in your terminal. Built with Node.js and [Ink](https://github.com/vadimdemedes/ink) (React for interactive command-line apps), it provides a highly responsive, component-based UI powered by a sophisticated dual-model AI architecture.
7
-
8
- Whether you need a conversational partner or an autonomous developer that can write code, run shell commands, and read your project files, Flux Flow adapts to your needs.
6
+ **Flux Flow** is not just another CLIโ€”it's a high-speed, sassy, and goal-oriented CLI AI Agent powered by the latest Gemini/Gemma frontier models. Designed for developers who demand a premium UI/UX while managing complex file-system tasks, web research, and autonomous workflows.
9
7
 
10
8
  ---
11
9
 
12
- ## โœจ Features
13
-
14
- - **Native Multimodality**: Flux Flow can now see! Analyze images (JPG, PNG) and PDF documents natively through the `view_file` tool with high-fidelity context retention.
15
- - **Document Engineering Suite**: Generate professional, branded PDF, DOCX, and PPTX documents on the fly. Features native HTML-to-Office translation for selectable text, high-performance rendering, and automatic watermarking.
16
- - **External Data Sanctuary**: Redirect your logs, history, and memories to any external path for maximum portability and privacy.
17
- - **Responsive Terminal UI**: A gorgeous, reactive interface built with React and Ink, featuring multi-line input, status bars, modals, and diff views.
18
- - **Dual-Model Architecture**: A primary agent interacts with you and executes tasks, while a silent background "Janitor" model handles chat summarization and long-term memory extraction without blocking the main UI.
19
- - **Two Operating Modes**:
20
- - **Flux (Dev Mode)**: Full system access. The agent can read/write files, execute shell commands, and run autonomous agentic loops (up to 45 iterations) to solve complex coding tasks.
21
- - **Flow (Chat Mode)**: Focused on conversation and web research, with limited agentic loops for faster response times.
22
- - **Advanced Memory System**: Features both temporary session context and persistent, cross-session user memories encrypted locally on your machine.
23
- - **Agentic Tooling**: Built-in tools for smart file patching, web scraping, web searching, terminal execution and high-fidelity Office document generation (PDF/DOCX/PPTX).
24
- - **Autonomous Project Alignment**: Automatically detects and adheres to project-specific instructions in `Agent.md`, `Skills.md`, and `Fluxflow.md` for high-fidelity coding standards and complex workflows.
25
- - **Customizable "Thinking" Levels**: Adjust the depth of the model's reasoning process (from Minimal to Max).
26
- - **High-Reliability Fallback**: Automatic failover to a lighter, high-concurrency model (Gemini 3.1 Flash Lite) during peak traffic to ensure 100% session persistence.
27
-
28
- ## ๐Ÿš€ Quick Start
29
-
30
- ### Prerequisites
31
- - [Node.js](https://nodejs.org/) (v18 or higher recommended)
32
- - `npm`, `yarn`, or `pnpm`
33
-
34
- ### Via NPM (Global & Instant)
35
- You can run the agent instantly or install it globally for high-speed access:
10
+ ## ๐Ÿš€ Instant Ignition (No Setup Required)
11
+ You don't even need to install it. Just fire up your terminal and run:
36
12
 
37
13
  ```bash
38
14
  # Run instantly (Zero Setup)
@@ -40,45 +16,69 @@ npx fluxflow-cli
40
16
 
41
17
  # OR Install Globally
42
18
  npm install -g fluxflow-cli
43
- fluxflow
19
+ fluxflow-cli
44
20
  ```
45
21
 
46
- ### From Source (Local Development)
47
- 1. Clone the repository and install dependencies:
48
- ```bash
49
- git clone <repository-url>
50
- cd Flux-Flow
51
- npm install
52
- ```
22
+ *The agent will prompt you for your Gemini API Key on the first run and store it securely in an XOR-encrypted vault.* Free API Key recomemded to use Gemma 4 (Default Model).
23
+
24
+ ---
25
+
26
+ ## โœจ Why Flux Flow?
27
+
28
+ ### ๐ŸŽจ **Premium Visual Sovereignty**
29
+ Experience a terminal UI that feels alive. Built with **Ink** and **React**, Flux Flow features:
30
+ - **Dynamic Status Bar**: Real-time telemetry showing your "Neural Headroom" (token usage), Thinking Level, and Session ID.
53
31
 
54
- 2. Start the agent:
55
- ```bash
56
- npm start
57
- ```
32
+ ### ๐Ÿ‘๏ธ **Native Multimodality**
33
+ Flux Flow can now see! Use the `view_file` tool to analyze images (JPG, PNG) or deep-dive into PDF technical papers. The agent extracts high-fidelity visual context natively, making it a true multimodal companion.
58
34
 
59
- ## ๐Ÿ“– Documentation
35
+ ### ๐Ÿ“‘ **Document Engineering Suite**
36
+ Need a report or a presentation? Just ask. Flux Flow features a high-fidelity "Printing Press" that generates professional, branded documents natively:
37
+ - **PDF**: Branded documents from HTML/CSS with automatic watermarking.
38
+ - **DOCX**: Native Word documents with multi-page support and automatic numbering.
39
+ - **PPTX**: High-fidelity PowerPoint presentations using native elements (selectable text, shapes) translated directly from HTML.
60
40
 
61
- To keep this README concise, detailed information about specific components of Flux Flow has been split into separate documents:
41
+ ### ๐Ÿš‘ **Self-Healing Infrastructure**
42
+ Zero setup means zero setup. On first run, Flux Flow performs an integrity check and autonomously installs its own Chromium engine if needed, ensuring features like PDF generation work 100% of the time without manual intervention.
62
43
 
63
- - **[Architecture & Design](./ARCHITECTURE.md)**: Deep dive into the React/Ink rendering, the Agentic Loop, and the Janitor background process.
64
- - **[Agent Tools & Capabilities](./TOOLS.md)**: A comprehensive list of the tools available to the agent (e.g., File I/O, Execution, Web tools).
65
- - **[UI & Interaction Features](./UI_FEATURES.md)**: Details on commands, thinking levels, and human-in-the-loop verification.
44
+ - **Archived Terminal Flow**: See execution outputs transform from live elements into permanent conversation records.
45
+ - **Rich Aesthetics**: High-contrast, sleek design with smooth transitions and micro-animations.
66
46
 
67
- ## ๐Ÿ”’ Security & Privacy
47
+ ### ๐Ÿง  **The Dual-Intelligence System**
48
+ - **Flux Mode (Dev)**: High-speed, agentic problem solving with a 50-turn persistent loop for massive coding tasks.
49
+ - **Flow Mode (Chat)**: Optimized for deep research, high-quality conversation, and web-assisted reasoning.
68
50
 
69
- Flux Flow runs entirely locally on your machine.
70
- - **Global Storage**: All history, memories, and API keys are stored securely in your home directory at `~/.fluxflow`. Sensitive data is encrypted.
71
- - **Nuclear Reset**: Use the `/reset` command to instantly purge all logs, secrets, and settings from the global storage directory.
72
- - **Configurable Boundaries**: In Flux mode, file access can be strictly confined to the Current Working Directory, or expanded globally via settings.
73
- - **API Keys**: You supply your own Gemini/Google AI Studio API keys.
51
+ ### ๐Ÿ›ก๏ธ **Digital Fortress Governance**
52
+ Security isn't an afterthought; it's a boundary.
53
+ - **External Path Hardlock**: Restricts the agent to your Current Working Directory (CWD) unless you explicitly unlock it.
54
+ - **Human-in-the-Loop (HITL)**: Every file write and terminal command requires your high-fidelity approval.
55
+ - **XOR Vaulting**: All local session histories, memories, and API keys are obfuscated and encrypted at rest.
56
+ - **Adaptive Failover**: Automatic multi-stage retry logic with high-concurrency fallback model switching (Gemini 3.1 Flash Lite) during peak API congestion.
74
57
 
75
- ## ๐Ÿ› ๏ธ Built With
58
+ ### ๐Ÿงน **The Background Janitor**
59
+ While you move at high speed, the Janitor follows behindโ€”refining session titles, compressing data, and ensuring your context window remains at absolute peak performance.
60
+
61
+ ---
62
+
63
+ ## ๐Ÿ› ๏ธ Key Capabilities
64
+ - **Deep File-System Interaction**: Edit, move, and refactor code across multiple files with atomic precision.
65
+ - **Real-Time Web Intelligence**: Autonomous web-searching via DuckDuckGo for live news and technical research.
66
+ - **Autonomous Project Alignment**: Automatically detects and adheres to project-specific instructions in `Agent.md`, `Skills.md`, and `Fluxflow.md` for high-fidelity alignment with your coding standards and custom workflows.
67
+ - **High-Reliability Fallback**: Automatic failover to a lighter, high-concurrency model during peak traffic to ensure zero session loss.
68
+ - **Persistent Memory**: The agent learns from your preferences and project requirements across sessions.
69
+
70
+ ---
71
+
72
+ ## โš™๏ธ Configuration
73
+ Type `/settings` in-app to live-configure:
74
+ - **Thinking Level**: Low, Medium, or High (Deep-Reasoning).
75
+ - **Auto-Execution**: For ultimate high-speed flow (Advanced users only).
76
+ - **Security Perimeter**: Toggle External Workspace access.
77
+
78
+ ---
76
79
 
77
- - **[React](https://react.dev/) & [Ink](https://github.com/vadimdemedes/ink)**: For the interactive CLI rendering.
78
- - **[@google/genai](https://www.npmjs.com/package/@google/genai)**: The core AI SDK powering the agent's intelligence.
79
- - **[chalk](https://www.npmjs.com/package/chalk) & [gradient-string](https://www.npmjs.com/package/gradient-string)**: For terminal styling and aesthetics.
80
- - **[fs-extra](https://www.npmjs.com/package/fs-extra)**: For robust file system operations.
81
- - **[pptxgenjs](https://www.npmjs.com/package/pptxgenjs) & [html-to-docx](https://www.npmjs.com/package/html-to-docx)**: For native Office document generation.
80
+ ## ๐Ÿ License
81
+ MIT ยฉ 2026 Flux Flow Team.
82
82
 
83
83
  ---
84
- *Created as a demonstration of highly capable AI tooling.*
84
+ *Forged with โšก and ๐Ÿงฌ. Welcome to the FluxFlow.*
package/dist/fluxflow.js CHANGED
@@ -116,21 +116,9 @@ var init_ChatLayout = __esm({
116
116
  };
117
117
  formatThinkText = (cleaned, columns = 80) => {
118
118
  if (!cleaned) return null;
119
- const lines = cleaned.split("\n");
120
119
  const availableWidth = columns - 10;
121
- return lines.map((line, i) => {
122
- const trimmed = line.trim();
123
- if (!trimmed) return /* @__PURE__ */ React2.createElement(Box2, { key: i, height: 1 });
124
- if (trimmed.startsWith("**") && trimmed.endsWith("**") || trimmed.startsWith("#")) {
125
- const hText = trimmed.replace(/\*|#/g, "").trim();
126
- return /* @__PURE__ */ React2.createElement(Box2, { key: i, marginTop: i === 0 ? 0 : 1, marginBottom: 0, width: "100%" }, /* @__PURE__ */ React2.createElement(Text2, { bold: true, color: "white" }, "\u25B8 ", wrapText(hText, availableWidth - 2)));
127
- }
128
- const isBullet = trimmed.startsWith("*");
129
- const bulletPrefix = isBullet ? "\u2022 " : "";
130
- const cleanText = trimmed.replace(/^\*|\s\*/g, "").trim();
131
- const wrapped = wrapText(cleanText, availableWidth - (isBullet ? 2 : 0));
132
- return /* @__PURE__ */ React2.createElement(Box2, { key: i, marginLeft: isBullet ? 2 : 0, width: "100%" }, /* @__PURE__ */ React2.createElement(Text2, { italic: true, color: "gray" }, bulletPrefix, wrapped.split("\n").join("\n" + " ".repeat(bulletPrefix.length))));
133
- });
120
+ const wrapped = wrapText(cleaned.trim(), availableWidth);
121
+ return /* @__PURE__ */ React2.createElement(Box2, { width: "100%" }, /* @__PURE__ */ React2.createElement(Text2, { italic: true, color: "gray" }, wrapped));
134
122
  };
135
123
  parseMathSymbols = (content) => {
136
124
  return content.replace(/\\multiply|\\mul|\\times/g, "\xD7").replace(/\\div/g, "\xF7").replace(/\\cdot/g, "\u22C5").replace(/\\infty/g, "\u221E").replace(/\\pm/g, "\xB1").replace(/\\leq/g, "\u2264").replace(/\\geq/g, "\u2265").replace(/\\neq/g, "\u2260").replace(/\\sqrt\{?(.*?)\}?/g, (_, p1) => `\u221A(${p1})`).replace(/\\alpha/g, "\u03B1").replace(/\\beta/g, "\u03B2").replace(/\\theta/g, "\u03B8").replace(/\\pi/g, "\u03C0").replace(/\\approx/g, "\u2248").replace(/\\Delta/g, "\u0394").replace(/\\sigma/g, "\u03C3").replace(/\\sum/g, "\u03A3").replace(/\\prod/g, "\u03A0").replace(/\\rightarrow|\\to/g, "\u2192").replace(/\\leftarrow/g, "\u2190").replace(/\\leftrightarrow/g, "\u2194").replace(/\\left\(|\\right\)/g, (match) => match.includes("left") ? "(" : ")").replace(/\\left\[|\\right\]/g, (match) => match.includes("left") ? "[" : "]").replace(/\\\{|\\\}/g, (match) => match.includes("{") ? "{" : "}").replace(/\\text\{?(.*?)\}?/g, "$1");
@@ -395,14 +383,7 @@ var init_ChatLayout = __esm({
395
383
  }, [msg.id]);
396
384
  const finalContent = React2.useMemo(() => {
397
385
  if (msg.role === "think" && !showFullThinking) {
398
- const lines = content.split("\n").filter((line) => {
399
- const trimmed = line.trim();
400
- const isHeading = trimmed.startsWith("# ");
401
- const isActionStep = trimmed.startsWith("**") && trimmed.endsWith("**");
402
- return isHeading || isActionStep;
403
- });
404
- if (lines.length === 0) return "*Reasoning...*";
405
- return lines.join("\n");
386
+ return "Thinking...";
406
387
  }
407
388
  return content;
408
389
  }, [content, msg.role, showFullThinking]);
@@ -1071,6 +1052,20 @@ var init_usage = __esm({
1071
1052
  if (!isDirty || !cachedUsage) return;
1072
1053
  try {
1073
1054
  await fs5.ensureDir(path5.dirname(USAGE_FILE));
1055
+ let diskData = null;
1056
+ try {
1057
+ if (await fs5.exists(USAGE_FILE)) {
1058
+ diskData = await fs5.readJson(USAGE_FILE);
1059
+ }
1060
+ } catch (e) {
1061
+ }
1062
+ if (diskData && diskData.date === cachedUsage.date && diskData.stats) {
1063
+ for (const key in cachedUsage.stats) {
1064
+ if (diskData.stats[key] !== void 0) {
1065
+ cachedUsage.stats[key] = Math.max(cachedUsage.stats[key], diskData.stats[key]);
1066
+ }
1067
+ }
1068
+ }
1074
1069
  const tempFile = USAGE_FILE + ".tmp";
1075
1070
  await fs5.writeJson(tempFile, cachedUsage, { spaces: 2 });
1076
1071
  const fd = await fs5.open(tempFile, "r+");
@@ -1091,6 +1086,7 @@ var init_usage = __esm({
1091
1086
  await flushUsage();
1092
1087
  writeTimeout = null;
1093
1088
  }, delay);
1089
+ if (writeTimeout.unref) writeTimeout.unref();
1094
1090
  };
1095
1091
  initUsage = async () => {
1096
1092
  cachedUsage = await loadUsageFromFile();
@@ -1615,7 +1611,11 @@ var init_view_file = __esm({
1615
1611
  "src/tools/view_file.js"() {
1616
1612
  init_arg_parser();
1617
1613
  view_file = async (args) => {
1618
- const { path: targetPath, start_line = 1, end_line = 500 } = parseArgs(args);
1614
+ let { path: targetPath, StartLine, EndLine, start_line, end_line } = parseArgs(args);
1615
+ const sLine = parseInt(StartLine || start_line);
1616
+ const eLine = parseInt(EndLine || end_line);
1617
+ const finalStart = sLine || 1;
1618
+ const finalEnd = eLine || (sLine ? sLine + 800 : 800);
1619
1619
  if (!targetPath) return 'ERROR: Missing "path" argument for view_file.';
1620
1620
  const absolutePath = path9.resolve(process.cwd(), targetPath);
1621
1621
  try {
@@ -1658,8 +1658,8 @@ var init_view_file = __esm({
1658
1658
  content = content.replace(/\\n/g, "[/n]");
1659
1659
  const lines = content.split("\n");
1660
1660
  const totalLines = lines.length;
1661
- const start = Math.max(0, start_line - 1);
1662
- const end = Math.min(totalLines, end_line);
1661
+ const start = Math.max(0, finalStart - 1);
1662
+ const end = Math.min(totalLines, finalEnd);
1663
1663
  const resultLines = lines.slice(start, end);
1664
1664
  const header = `File: [${targetPath}] (Showing lines ${start + 1}-${end} of ${totalLines})`;
1665
1665
  const code = resultLines.map((line, i) => `${String(start + i + 1).padStart(4)}: ${line}`).join("\n");
@@ -1809,15 +1809,20 @@ var init_update_file = __esm({
1809
1809
  let instances = 0;
1810
1810
  let startPos = -1;
1811
1811
  let matchRegex = null;
1812
- const escaped = content_to_replace.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
1812
+ const exactPattern = content_to_replace.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
1813
1813
  if (content_to_replace !== "" && currentContent.includes(content_to_replace)) {
1814
- matchRegex = new RegExp(escaped, "g");
1814
+ matchRegex = new RegExp(exactPattern, "g");
1815
1815
  } else {
1816
- const fuzzyPattern = escaped.trim().replace(/\s+/g, "\\s*");
1817
- try {
1818
- matchRegex = new RegExp(fuzzyPattern, "g");
1819
- } catch (e) {
1820
- matchRegex = new RegExp(escaped, "g");
1816
+ const fuzzyLines = content_to_replace.split("\n").map((line) => line.trim()).filter((line) => line.length > 0).map((line) => line.replace(/[.*+?^${}()|[\]\\]/g, "\\$&").replace(/\s+/g, "\\s*"));
1817
+ if (fuzzyLines.length > 0) {
1818
+ const fuzzyPattern = fuzzyLines.join("\\s*");
1819
+ try {
1820
+ matchRegex = new RegExp(fuzzyPattern, "g");
1821
+ } catch (e) {
1822
+ matchRegex = new RegExp(exactPattern, "g");
1823
+ }
1824
+ } else {
1825
+ matchRegex = new RegExp(exactPattern, "g");
1821
1826
  }
1822
1827
  }
1823
1828
  const matches = matchRegex ? [...currentContent.matchAll(matchRegex)] : [];
@@ -2650,9 +2655,11 @@ var init_ai = __esm({
2650
2655
  const url = parseArgs(toolCall.args).url || "...";
2651
2656
  label = `\u{1F4D6} READING SITE: ${url}`.toUpperCase();
2652
2657
  } else if (toolCall.toolName === "view_file") {
2653
- const { path: targetPath2, start_line = 1, end_line = 500 } = parseArgs(toolCall.args);
2658
+ const { path: targetPath2, StartLine, EndLine, start_line, end_line } = parseArgs(toolCall.args);
2659
+ const sLine = parseInt(StartLine || start_line) || 1;
2660
+ const eLine = parseInt(EndLine || end_line) || (StartLine || start_line ? sLine + 800 : 800);
2654
2661
  let totalLines = "...";
2655
- let actualEndLine = end_line;
2662
+ let actualEndLine = eLine;
2656
2663
  try {
2657
2664
  const absPath = path16.resolve(process.cwd(), targetPath2);
2658
2665
  if (fs16.existsSync(absPath)) {
@@ -2671,7 +2678,7 @@ var init_ai = __esm({
2671
2678
  } else if (isImage) {
2672
2679
  label = `\u{1F4F8} ANALYZING IMAGE: ${targetPath2}`.toUpperCase();
2673
2680
  } else {
2674
- label = `\u{1F4C4} READING FILE: ${targetPath2}. LINES ${start_line} - ${actualEndLine} FROM ${totalLines}`.toUpperCase();
2681
+ label = `\u{1F4C4} READING FILE: ${targetPath2}. LINES ${sLine} - ${actualEndLine} FROM ${totalLines}`.toUpperCase();
2675
2682
  }
2676
2683
  } else if (toolCall.toolName === "list_files" || toolCall.toolName === "read_folder") {
2677
2684
  const action = toolCall.toolName === "list_files" ? "LISTING" : "DISCOVERING";
@@ -3099,6 +3106,7 @@ var init_UpdateProcessor = __esm({
3099
3106
  const [log, setLog] = useState6("");
3100
3107
  const [error, setError] = useState6(null);
3101
3108
  useEffect4(() => {
3109
+ let child;
3102
3110
  const runUpdate = async () => {
3103
3111
  const manager = settings.updateManager || "npm";
3104
3112
  if (!settings.updateManager) {
@@ -3113,7 +3121,7 @@ var init_UpdateProcessor = __esm({
3113
3121
  else command = `npm install -g fluxflow-cli@${latest}`;
3114
3122
  setStatus("downloading");
3115
3123
  setLog(`Running: ${command}...`);
3116
- const child = exec2(command, (err, stdout, stderr) => {
3124
+ child = exec2(command, (err, stdout, stderr) => {
3117
3125
  if (err) {
3118
3126
  setError(stderr || err.message);
3119
3127
  setStatus("error");
@@ -3127,6 +3135,14 @@ var init_UpdateProcessor = __esm({
3127
3135
  });
3128
3136
  };
3129
3137
  runUpdate();
3138
+ return () => {
3139
+ if (child) {
3140
+ try {
3141
+ child.kill();
3142
+ } catch (e) {
3143
+ }
3144
+ }
3145
+ };
3130
3146
  }, []);
3131
3147
  if (status === "initializing" || status === "downloading") {
3132
3148
  return /* @__PURE__ */ React9.createElement(Box9, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1 }, /* @__PURE__ */ React9.createElement(Box9, null, /* @__PURE__ */ React9.createElement(Text9, { color: "cyan" }, /* @__PURE__ */ React9.createElement(Spinner, { type: "dots" })), /* @__PURE__ */ React9.createElement(Text9, { marginLeft: 1, bold: true }, " Updating Flux Flow to v", latest, "...")), /* @__PURE__ */ React9.createElement(Box9, { marginTop: 1, paddingX: 1, borderStyle: "single", borderColor: "#333" }, /* @__PURE__ */ React9.createElement(Text9, { color: "gray", dimColor: true, italic: true }, log || "Preparing environment...")), /* @__PURE__ */ React9.createElement(Text9, { marginTop: 1, dimColor: true }, "(Please do not close the terminal)"));
@@ -4809,8 +4825,8 @@ var init_app = __esm({
4809
4825
  init_text();
4810
4826
  SESSION_START_TIME = Date.now();
4811
4827
  CHANGELOG_URL = "https://fluxflow-cli.onrender.com/changelog.html";
4812
- versionFluxflow = "1.8.3";
4813
- updatedOn = "2026-05-07";
4828
+ versionFluxflow = "1.8.5";
4829
+ updatedOn = "2026-05-08";
4814
4830
  ResolutionModal = ({ data, onResolve, onEdit }) => /* @__PURE__ */ React10.createElement(Box10, { flexDirection: "column", borderStyle: "round", borderColor: "magenta", paddingX: 2, paddingY: 1, width: "100%" }, /* @__PURE__ */ React10.createElement(Text10, { color: "magenta", bold: true, underline: true }, "\u{1F7E3} STEERING HINT RESOLUTION"), /* @__PURE__ */ React10.createElement(Text10, { marginTop: 1 }, "The agent already finished the task before your hint was consumed."), /* @__PURE__ */ React10.createElement(Box10, { marginTop: 1, backgroundColor: "#222", paddingX: 1, width: "100%" }, /* @__PURE__ */ React10.createElement(Text10, { italic: true, color: "gray" }, '"', data, '"')), /* @__PURE__ */ React10.createElement(Box10, { marginTop: 1 }, /* @__PURE__ */ React10.createElement(Text10, { color: "cyan" }, "How would you like to proceed?")), /* @__PURE__ */ React10.createElement(Box10, { marginTop: 1 }, /* @__PURE__ */ React10.createElement(
4815
4831
  CommandMenu,
4816
4832
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fluxflow-cli",
3
- "version": "1.8.3",
3
+ "version": "1.8.5",
4
4
  "description": "A high-fidelity agentic terminal assistant for the Flux Era.",
5
5
  "keywords": [
6
6
  "ai",
@@ -21,7 +21,7 @@
21
21
  },
22
22
  "files": [
23
23
  "dist",
24
- "README-npm.md",
24
+ "README.md",
25
25
  "package.json",
26
26
  "ARCHITECTURE.md",
27
27
  "TOOLS.md",
package/README-npm.md DELETED
@@ -1,84 +0,0 @@
1
- # ๐ŸŒŒ Flux Flow (`fluxflow-cli`)
2
- ![Flux Flow Logo](https://github.com/KushalRoyChowdhury/fluxflow-cli/blob/main/fluxflow.png)
3
-
4
- ### *The High-Fidelity Agentic Terminal for the Flux Era.*
5
-
6
- **Flux Flow** is not just another CLIโ€”it's a high-speed, sassy, and goal-oriented CLI AI Agent powered by the latest Gemini/Gemma frontier models. Designed for developers who demand a premium UI/UX while managing complex file-system tasks, web research, and autonomous workflows.
7
-
8
- ---
9
-
10
- ## ๐Ÿš€ Instant Ignition (No Setup Required)
11
- You don't even need to install it. Just fire up your terminal and run:
12
-
13
- ```bash
14
- # Run instantly (Zero Setup)
15
- npx fluxflow-cli
16
-
17
- # OR Install Globally
18
- npm install -g fluxflow-cli
19
- fluxflow-cli
20
- ```
21
-
22
- *The agent will prompt you for your Gemini API Key on the first run and store it securely in an XOR-encrypted vault.* Free API Key recomemded to use Gemma 4 (Default Model).
23
-
24
- ---
25
-
26
- ## โœจ Why Flux Flow?
27
-
28
- ### ๐ŸŽจ **Premium Visual Sovereignty**
29
- Experience a terminal UI that feels alive. Built with **Ink** and **React**, Flux Flow features:
30
- - **Dynamic Status Bar**: Real-time telemetry showing your "Neural Headroom" (token usage), Thinking Level, and Session ID.
31
-
32
- ### ๐Ÿ‘๏ธ **Native Multimodality**
33
- Flux Flow can now see! Use the `view_file` tool to analyze images (JPG, PNG) or deep-dive into PDF technical papers. The agent extracts high-fidelity visual context natively, making it a true multimodal companion.
34
-
35
- ### ๐Ÿ“‘ **Document Engineering Suite**
36
- Need a report or a presentation? Just ask. Flux Flow features a high-fidelity "Printing Press" that generates professional, branded documents natively:
37
- - **PDF**: Branded documents from HTML/CSS with automatic watermarking.
38
- - **DOCX**: Native Word documents with multi-page support and automatic numbering.
39
- - **PPTX**: High-fidelity PowerPoint presentations using native elements (selectable text, shapes) translated directly from HTML.
40
-
41
- ### ๐Ÿš‘ **Self-Healing Infrastructure**
42
- Zero setup means zero setup. On first run, Flux Flow performs an integrity check and autonomously installs its own Chromium engine if needed, ensuring features like PDF generation work 100% of the time without manual intervention.
43
-
44
- - **Archived Terminal Flow**: See execution outputs transform from live elements into permanent conversation records.
45
- - **Rich Aesthetics**: High-contrast, sleek design with smooth transitions and micro-animations.
46
-
47
- ### ๐Ÿง  **The Dual-Intelligence System**
48
- - **Flux Mode (Dev)**: High-speed, agentic problem solving with a 50-turn persistent loop for massive coding tasks.
49
- - **Flow Mode (Chat)**: Optimized for deep research, high-quality conversation, and web-assisted reasoning.
50
-
51
- ### ๐Ÿ›ก๏ธ **Digital Fortress Governance**
52
- Security isn't an afterthought; it's a boundary.
53
- - **External Path Hardlock**: Restricts the agent to your Current Working Directory (CWD) unless you explicitly unlock it.
54
- - **Human-in-the-Loop (HITL)**: Every file write and terminal command requires your high-fidelity approval.
55
- - **XOR Vaulting**: All local session histories, memories, and API keys are obfuscated and encrypted at rest.
56
- - **Adaptive Failover**: Automatic multi-stage retry logic with high-concurrency fallback model switching (Gemini 3.1 Flash Lite) during peak API congestion.
57
-
58
- ### ๐Ÿงน **The Background Janitor**
59
- While you move at high speed, the Janitor follows behindโ€”refining session titles, compressing data, and ensuring your context window remains at absolute peak performance.
60
-
61
- ---
62
-
63
- ## ๐Ÿ› ๏ธ Key Capabilities
64
- - **Deep File-System Interaction**: Edit, move, and refactor code across multiple files with atomic precision.
65
- - **Real-Time Web Intelligence**: Autonomous web-searching via DuckDuckGo for live news and technical research.
66
- - **Autonomous Project Alignment**: Automatically detects and adheres to project-specific instructions in `Agent.md`, `Skills.md`, and `Fluxflow.md` for high-fidelity alignment with your coding standards and custom workflows.
67
- - **High-Reliability Fallback**: Automatic failover to a lighter, high-concurrency model during peak traffic to ensure zero session loss.
68
- - **Persistent Memory**: The agent learns from your preferences and project requirements across sessions.
69
-
70
- ---
71
-
72
- ## โš™๏ธ Configuration
73
- Type `/settings` in-app to live-configure:
74
- - **Thinking Level**: Low, Medium, or High (Deep-Reasoning).
75
- - **Auto-Execution**: For ultimate high-speed flow (Advanced users only).
76
- - **Security Perimeter**: Toggle External Workspace access.
77
-
78
- ---
79
-
80
- ## ๐Ÿ License
81
- MIT ยฉ 2026 Flux Flow Team.
82
-
83
- ---
84
- *Forged with โšก and ๐Ÿงฌ. Welcome to the FluxFlow.*