fluxflow-cli 3.1.2 → 3.1.4

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/fluxflow.js +25 -26
  2. package/package.json +1 -1
package/dist/fluxflow.js CHANGED
@@ -3989,14 +3989,14 @@ var init_terminal = __esm({
3989
3989
  getFluxLogo = (version = "2.0.0", provider = "Google") => {
3990
3990
  const quote = STARTUP_QUOTES[Math.floor(Math.random() * STARTUP_QUOTES.length)];
3991
3991
  const art = [
3992
- " \u2588\u2588\u2588 ",
3993
- " \u2591\u2591\u2591\u2588\u2588\u2588 ",
3994
- " \u2591\u2591\u2591\u2588\u2588\u2588 ",
3995
- " \u2591\u2591\u2591\u2588\u2588\u2588 ",
3996
- " \u2588\u2588\u2588\u2591 ",
3997
- " \u2588\u2588\u2588\u2591 ",
3998
- " \u2588\u2588\u2588\u2591 ",
3999
- " \u2591\u2591\u2591 "
3992
+ " \u2588\u2588\u2588 ",
3993
+ " \u2591\u2591\u2591\u2588\u2588\u2588 ",
3994
+ " \u2591\u2591\u2591\u2588\u2588\u2588 ",
3995
+ " \u2591\u2591\u2591\u2588\u2588\u2588 ",
3996
+ " \u2588\u2588\u2588\u2591 ",
3997
+ " \u2588\u2588\u2588\u2591 ",
3998
+ " \u2588\u2588\u2588\u2591 ",
3999
+ " \u2591\u2591\u2591 "
4000
4000
  ];
4001
4001
  const coloredArt = gradient(["#0077ff", "#ff00ff"]).multiline(art.join("\n")).split("\n");
4002
4002
  const grey = (t) => `\x1B[90m${t}\x1B[0m`;
@@ -5193,7 +5193,7 @@ ${mode === "Flux" ? `- WORKSPACE TOOLS (path = relative to CWD & WILL BE FIRST A
5193
5193
  ${advanceRollback ? `
5194
5194
  - EMERGENCY SAFETY TOOLS -
5195
5195
  Info: 'initial' = user prompted for THIS active task, revert 'id' should be a turn BEFORE the disaster tool ran eg. Disaster Tool: "turn_3", Revert ID: "turn_2" (do explicit reasoning if needed)
5196
- 1. [tool:functions.EmergencyRollback(method="getCheckpoint/forceRevert", id="...")]. Rollback workspace during execution to a specific turn checkpoint. Usage: ONLY in catastrophic codebase error/deletions. Verify nothing catastrophic happened in codebase before ending agent loop. 'id' not needed with getCheckPoint
5196
+ 1. [tool:functions.EmergencyRollback(method="getCheckpoint/forceRevert", id="...")]. Rollback workspace to a specific checkpoint in THIS agent loop. Usage: ONLY in catastrophic situations. Verify nothing catastrophic happened in codebase before ending agent loop. 'id' not needed with getCheckPoint
5197
5197
  ` : ""}
5198
5198
  -- SUB AGENTS DEFINITIONS --
5199
5199
  **PROACTIVE USE OF SUB AGENTS HIGHLY RECOMMENDED, PREFER USING FOR ALL TASK WHERE PLAUSIBLE & BENEFICIAL, EVEN WITHOUT EXPLICIT USER NUDGE**
@@ -12702,7 +12702,7 @@ ${activeSummaryBlock}${thinkingLevel !== "Fast" && thinkingLevel !== "xHigh" &&
12702
12702
  yield { type: "summary_injected", content: { id: history[history.length - 1].id, text: firstUserMsg } };
12703
12703
  }
12704
12704
  let lastUsage = null;
12705
- const MAX_LOOPS = mode === "Flux" ? 70 : 7;
12705
+ const MAX_LOOPS = mode === "Flux" ? 100 : 10;
12706
12706
  const MAX_RETRIES = 16;
12707
12707
  yield { type: "status", content: "Connecting..." };
12708
12708
  TERMINATION_SIGNAL = false;
@@ -12895,7 +12895,7 @@ ${ideErr} [/ERROR]`;
12895
12895
  }
12896
12896
  }
12897
12897
  if (isGemma) {
12898
- const stepThreshold = Math.floor(MAX_LOOPS * (mode === "Flux" ? 0.98 : 0.7));
12898
+ const stepThreshold = Math.floor(MAX_LOOPS * (mode === "Flux" ? 0.98 : 0.8));
12899
12899
  const currentStep = loop + 1;
12900
12900
  if (currentStep >= stepThreshold && lastUserMsg && lastUserMsg.parts?.[0]) {
12901
12901
  lastUserMsg.parts[0].text += `
@@ -18506,19 +18506,18 @@ Selection: ${val}`,
18506
18506
  continue;
18507
18507
  }
18508
18508
  if (packet.type === "visual_feedback") {
18509
- setTimeout(() => {
18510
- setMessages((prev) => {
18511
- const updatedPrev = prev.map((m) => m.isStreaming ? { ...m, isStreaming: false } : m);
18512
- const newMsgs = [...updatedPrev, {
18513
- id: "feedback-" + Date.now() + "-" + Math.random().toString(36).substring(2, 9),
18514
- role: "system",
18515
- text: packet.content,
18516
- isVisualFeedback: true
18517
- }];
18518
- setCompletedIndex(newMsgs.length);
18519
- return newMsgs;
18520
- });
18521
- }, 75);
18509
+ await new Promise((r) => setTimeout(r, 75));
18510
+ setMessages((prev) => {
18511
+ const updatedPrev = prev.map((m) => m.isStreaming ? { ...m, isStreaming: false } : m);
18512
+ const newMsgs = [...updatedPrev, {
18513
+ id: "feedback-" + Date.now() + "-" + Math.random().toString(36).substring(2, 9),
18514
+ role: "system",
18515
+ text: packet.content,
18516
+ isVisualFeedback: true
18517
+ }];
18518
+ setCompletedIndex(newMsgs.length);
18519
+ return newMsgs;
18520
+ });
18522
18521
  continue;
18523
18522
  }
18524
18523
  if (packet.type === "exec_start") {
@@ -19822,7 +19821,7 @@ Selection: ${val}`,
19822
19821
  }
19823
19822
  )));
19824
19823
  default:
19825
- return /* @__PURE__ */ React15.createElement(Box14, { flexDirection: "column", marginTop: 1, flexShrink: 0, width: "100%" }, showBtwBox && btwResponse && /* @__PURE__ */ React15.createElement(Box14, { flexDirection: "column", borderStyle: "round", borderColor: "grey", paddingX: 2, paddingY: 1, width: "100%", marginBottom: 1 }, /* @__PURE__ */ React15.createElement(Box14, { justifyContent: "space-between", width: "100%" }, /* @__PURE__ */ React15.createElement(Text15, { color: "white", bold: true, underline: true }, "INQUIRY RESPONSE"), /* @__PURE__ */ React15.createElement(Text15, { color: "gray" }, "[ ESC to Close ]")), /* @__PURE__ */ React15.createElement(Box14, { marginTop: 1, width: "100%" }, /* @__PURE__ */ React15.createElement(CodeRenderer, { text: btwResponse, columns: terminalSize.columns - 6 }))), activeSubagents.filter((sa) => sa.status === "running").length > 0 && /* @__PURE__ */ React15.createElement(Box14, { flexDirection: "column", borderStyle: "round", borderColor: "gray", paddingX: 2, paddingY: 0, width: "100%", marginBottom: 1 }, /* @__PURE__ */ React15.createElement(Box14, { justifyContent: "space-between", width: "100%" }, /* @__PURE__ */ React15.createElement(Text15, { color: "white", bold: true }, "ACTIVE SUBAGENTS")), /* @__PURE__ */ React15.createElement(Box14, { flexDirection: "column", marginTop: 1, width: "100%" }, activeSubagents.filter((sa) => sa.status === "running").map((sa) => /* @__PURE__ */ React15.createElement(SubagentRow, { key: sa.id, sa })))), /* @__PURE__ */ React15.createElement(Box14, { paddingX: 1, marginBottom: 0, justifyContent: "space-between", width: "100%" }, /* @__PURE__ */ React15.createElement(Box14, null, statusText ? /* @__PURE__ */ React15.createElement(Box14, { gap: 1 }, /* @__PURE__ */ React15.createElement(build_default, null), /* @__PURE__ */ React15.createElement(Text15, { color: "white", bold: true, italic: true }, statusText.trimEnd()), /* @__PURE__ */ React15.createElement(Text15, { color: "gray" }, activeTime > 0 ? `[${activeTime.toFixed(0)}s]` : "")) : /* @__PURE__ */ React15.createElement(Text15, { color: "white", italic: true }, input.length > 0 && escPressCount ? "Press ESC again to clear input" : hasPasteBlock ? "Press CTRL + O to expand" : "Waiting for input...")), /* @__PURE__ */ React15.createElement(Box14, null, isProcessing && Date.now() - lastChunkTime > 15e3 && !activeSubagents.some((sa) => sa.status === "running") ? /* @__PURE__ */ React15.createElement(Box14, null, /* @__PURE__ */ React15.createElement(Text15, { color: "white", bold: true }, "Waiting for API"), /* @__PURE__ */ React15.createElement(Text15, { color: "gray", dimColor: true }, " \u2503 ")) : wittyPhrase ? /* @__PURE__ */ React15.createElement(Box14, null, /* @__PURE__ */ React15.createElement(Text15, { color: "gray", italic: true }, wittyPhrase), /* @__PURE__ */ React15.createElement(Text15, { color: "gray", dimColor: true }, " \u2503 ")) : null, /* @__PURE__ */ React15.createElement(Text15, { color: "white" }, tempModelOverride || activeModel))), /* @__PURE__ */ React15.createElement(Box14, { flexDirection: "column", width: "100%" }, /* @__PURE__ */ React15.createElement(Box14, { width: "100%", height: 1, overflow: "hidden" }, /* @__PURE__ */ React15.createElement(Text15, { color: "#555555" }, "\u2584".repeat(Math.max(1, terminalSize.columns)))), /* @__PURE__ */ React15.createElement(
19824
+ return /* @__PURE__ */ React15.createElement(Box14, { flexDirection: "column", marginTop: 1, flexShrink: 0, width: "100%" }, showBtwBox && btwResponse && /* @__PURE__ */ React15.createElement(Box14, { flexDirection: "column", borderStyle: "round", borderColor: "grey", paddingX: 2, paddingY: 1, width: "100%", marginBottom: 1 }, /* @__PURE__ */ React15.createElement(Box14, { justifyContent: "space-between", width: "100%" }, /* @__PURE__ */ React15.createElement(Text15, { color: "white", bold: true, underline: true }, "INQUIRY RESPONSE"), /* @__PURE__ */ React15.createElement(Text15, { color: "gray" }, "[ ESC to Close ]")), /* @__PURE__ */ React15.createElement(Box14, { marginTop: 1, width: "100%" }, /* @__PURE__ */ React15.createElement(CodeRenderer, { text: btwResponse, columns: terminalSize.columns - 6 }))), activeSubagents.filter((sa) => sa.status === "running").length > 0 && /* @__PURE__ */ React15.createElement(Box14, { flexDirection: "column", borderStyle: "round", borderColor: "gray", paddingX: 2, paddingY: 0, width: "100%", marginBottom: 1 }, /* @__PURE__ */ React15.createElement(Box14, { justifyContent: "space-between", width: "100%" }, /* @__PURE__ */ React15.createElement(Text15, { color: "white", bold: true }, "ACTIVE SUBAGENTS")), /* @__PURE__ */ React15.createElement(Box14, { flexDirection: "column", marginTop: 1, width: "100%" }, activeSubagents.filter((sa) => sa.status === "running").map((sa) => /* @__PURE__ */ React15.createElement(SubagentRow, { key: sa.id, sa })))), /* @__PURE__ */ React15.createElement(Box14, { paddingX: 1, marginBottom: 0, justifyContent: "space-between", width: "100%" }, /* @__PURE__ */ React15.createElement(Box14, null, statusText ? /* @__PURE__ */ React15.createElement(Box14, { gap: 1 }, /* @__PURE__ */ React15.createElement(build_default, null), /* @__PURE__ */ React15.createElement(Text15, { color: "white", bold: true, italic: true }, statusText.trimEnd()), /* @__PURE__ */ React15.createElement(Text15, { color: "gray" }, activeTime > 0 ? `[${activeTime.toFixed(0)}s]` : "")) : /* @__PURE__ */ React15.createElement(Text15, { color: "white", italic: true }, input.length > 0 && escPressCount ? "Press ESC again to clear input" : hasPasteBlock ? "Press CTRL + O to expand" : "Waiting for input...")), /* @__PURE__ */ React15.createElement(Box14, null, isProcessing && Date.now() - lastChunkTime > 15e3 && !activeSubagents.some((sa) => sa.status === "running" && !statusText.toLowerCase().includes("waiting")) ? /* @__PURE__ */ React15.createElement(Box14, null, /* @__PURE__ */ React15.createElement(Text15, { color: "white", bold: true }, "Waiting for API"), /* @__PURE__ */ React15.createElement(Text15, { color: "gray", dimColor: true }, " \u2503 ")) : wittyPhrase ? /* @__PURE__ */ React15.createElement(Box14, null, /* @__PURE__ */ React15.createElement(Text15, { color: "gray", italic: true }, wittyPhrase), /* @__PURE__ */ React15.createElement(Text15, { color: "gray", dimColor: true }, " \u2503 ")) : null, /* @__PURE__ */ React15.createElement(Text15, { color: "white" }, tempModelOverride || activeModel))), /* @__PURE__ */ React15.createElement(Box14, { flexDirection: "column", width: "100%" }, /* @__PURE__ */ React15.createElement(Box14, { width: "100%", height: 1, overflow: "hidden" }, /* @__PURE__ */ React15.createElement(Text15, { color: "#555555" }, "\u2584".repeat(Math.max(1, terminalSize.columns)))), /* @__PURE__ */ React15.createElement(
19826
19825
  Box14,
19827
19826
  {
19828
19827
  backgroundColor: "#555555",
@@ -20245,7 +20244,7 @@ var init_app = __esm({
20245
20244
  return fileList;
20246
20245
  };
20247
20246
  })();
20248
- cachedShortcut = "\\ + Enter";
20247
+ cachedShortcut = "Ctrl + Enter";
20249
20248
  getLatencyColor2 = (delay) => {
20250
20249
  if (delay <= 400) return "#00a564";
20251
20250
  if (delay >= 5e3) return "#ff0000";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fluxflow-cli",
3
- "version": "3.1.2",
3
+ "version": "3.1.4",
4
4
  "date": "2026-07-05",
5
5
  "description": "A High-Fidelity Agentic CLI with Sub-Agents for the Flux Era.",
6
6
  "keywords": [