fluxflow-cli 2.15.1 → 2.15.3

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 +19 -7
  2. package/package.json +1 -1
package/dist/fluxflow.js CHANGED
@@ -2679,8 +2679,11 @@ var init_text = __esm({
2679
2679
  let activeBlock = null;
2680
2680
  let pendingChunk = [];
2681
2681
  let pendingChunkType = null;
2682
- const flushPending = () => {
2682
+ const flushPending = (force = false) => {
2683
2683
  if (!pendingChunk.length) return;
2684
+ if (msg.isStreaming && !force) {
2685
+ return;
2686
+ }
2684
2687
  const batch = pendingChunk;
2685
2688
  pendingChunk = [];
2686
2689
  pendingChunkType = null;
@@ -2692,10 +2695,10 @@ var init_text = __esm({
2692
2695
  });
2693
2696
  };
2694
2697
  const enqueue = (block) => {
2695
- if (pendingChunkType !== null && pendingChunkType !== block.type) flushPending();
2698
+ if (pendingChunkType !== null && pendingChunkType !== block.type) flushPending(true);
2696
2699
  pendingChunk.push(block);
2697
2700
  pendingChunkType = block.type;
2698
- if (pendingChunk.length >= CHUNK_SIZE) flushPending();
2701
+ if (pendingChunk.length >= CHUNK_SIZE) flushPending(false);
2699
2702
  };
2700
2703
  if (msg.role === "think") {
2701
2704
  completedBlocks.push(getBlock(`${msg.id}-header`, "think-header", ""));
@@ -4793,7 +4796,7 @@ var init_StatusBar = __esm({
4793
4796
  },
4794
4797
  /* @__PURE__ */ React5.createElement(Box4, null, /* @__PURE__ */ React5.createElement(Box4, { marginRight: 1 }, /* @__PURE__ */ React5.createElement(Text5, { color: "white", bold: true }, mode.toUpperCase())), /* @__PURE__ */ React5.createElement(Text5, { color: "gray", dimColor: true }, "\u2503"), /* @__PURE__ */ React5.createElement(Box4, { marginX: 1 }, /* @__PURE__ */ React5.createElement(Text5, { color: "white", bold: true }, thinkingLevel.toUpperCase())), /* @__PURE__ */ React5.createElement(Text5, { color: "gray", dimColor: true }, "\u2503"), /* @__PURE__ */ React5.createElement(Box4, { marginX: 1 }, /* @__PURE__ */ React5.createElement(Text5, { color: "gray", bold: true }, "MEM: "), /* @__PURE__ */ React5.createElement(Text5, { color: "white", bold: true }, isMemoryEnabled ? "ON" : "OFF"))),
4795
4798
  /* @__PURE__ */ React5.createElement(Box4, { flexGrow: 1, justifyContent: "center", paddingX: 2 }, /* @__PURE__ */ React5.createElement(Text5, { color: "white", italic: true }, truncatePath(process.cwd(), 35))),
4796
- /* @__PURE__ */ React5.createElement(Box4, null, /* @__PURE__ */ React5.createElement(Text5, { color: "gray", dimColor: true }, "\u2503"), /* @__PURE__ */ React5.createElement(Box4, { marginX: 1 }, /* @__PURE__ */ React5.createElement(Text5, { color: "white" }, formatTokens(tokensTotal), " ", /* @__PURE__ */ React5.createElement(Text5, { dimColor: true }, (tokens / maxLimit * 100).toFixed(0), "%"))), /* @__PURE__ */ React5.createElement(Text5, { color: "gray", dimColor: true }, "\u2503"), /* @__PURE__ */ React5.createElement(Box4, { marginX: 1 }, /* @__PURE__ */ React5.createElement(Text5, { color: "grey", bold: true }, memoryUsage, "/", memoryLimit, " ", memoryUnit)), /* @__PURE__ */ React5.createElement(Text5, { color: "gray", dimColor: true }, "\u2503"), /* @__PURE__ */ React5.createElement(Box4, { marginLeft: 1 }, /* @__PURE__ */ React5.createElement(Text5, { color: "gray", bold: true }, chatId), (apiTier === "Custom" || apiTier === "Paid") && /* @__PURE__ */ React5.createElement(Box4, null, /* @__PURE__ */ React5.createElement(Text5, { color: "gray", dimColor: true }, " \u2503 "), /* @__PURE__ */ React5.createElement(Text5, { color: "gray", bold: true }, "PAID"))))
4799
+ /* @__PURE__ */ React5.createElement(Box4, null, /* @__PURE__ */ React5.createElement(Box4, { marginX: 1 }, /* @__PURE__ */ React5.createElement(Text5, { color: "white" }, formatTokens(tokensTotal), " ", /* @__PURE__ */ React5.createElement(Text5, { dimColor: true }, (tokens / maxLimit * 100).toFixed(0), "%"))), /* @__PURE__ */ React5.createElement(Text5, { color: "gray", dimColor: true }, "\u2503"), /* @__PURE__ */ React5.createElement(Box4, { marginX: 1 }, /* @__PURE__ */ React5.createElement(Text5, { color: "grey", bold: true }, memoryUsage, "/", memoryLimit, " ", memoryUnit)), /* @__PURE__ */ React5.createElement(Text5, { color: "gray", dimColor: true }, "\u2503"), /* @__PURE__ */ React5.createElement(Box4, { marginLeft: 1 }, /* @__PURE__ */ React5.createElement(Text5, { color: "gray", bold: true }, chatId), (apiTier === "Custom" || apiTier === "Paid") && /* @__PURE__ */ React5.createElement(Box4, null, /* @__PURE__ */ React5.createElement(Text5, { color: "gray", dimColor: true }, " \u2503 "), /* @__PURE__ */ React5.createElement(Text5, { color: "gray", bold: true }, "PAID"))))
4797
4800
  );
4798
4801
  });
4799
4802
  StatusBar_default = StatusBar;
@@ -5015,7 +5018,7 @@ Internal tools. **MUST use the EXACT syntax** [tool:functions.ToolName(args)]. *
5015
5018
 
5016
5019
  **TOOL USAGE POLICY:**
5017
5020
  - **MAX 3 TOOL CALLS PER TURN${mode === "Flux" ? " (EXCEPTION FOR Todo TOOL: 3+ CALLS ALLOWED, Run: Limit 1 OR 2 CONSECUTIVE Run)" : ""}. Next Turn, verify tool results, plan next**
5018
- ${mode === "Flux" ? "- USE multiple search & replace on patch tool if editing same file/path with many changes \u2190 **HIGHLY RECOMMENDED**\n- Tool execution denied? MUST use 'Ask' tool immediately for user reason/changes. NEVER END RESPONSE OR PROCEED BLINDLY \u2190 **MANDATORY**\n- FileMap >> ReadFile to understand file efficiently\n- Want spefific STRING across project/file? SearchKeyword >> Guessing/ReadFile\n- HUGE FILES? SearchKeyword >> FileMap/Full File read\n- **MUST MARK DONE/APPEND Todos BASED ON REALTIME TASK PROGRESS ON *EACH TURN***" : ""}
5021
+ ${mode === "Flux" ? "- USE multiple search & replace on patch tool if editing same file/path with many changes \u2190 **HIGHLY RECOMMENDED**\n- Tool execution denied? MUST use 'Ask' tool immediately for user reason/changes. NEVER END RESPONSE OR PROCEED BLINDLY \u2190 **MANDATORY**\n- FileMap >> ReadFile to understand file efficiently\n- Want spefific STRING across project/file? SearchKeyword >> Guessing/ReadFile\n- HUGE FILES? SearchKeyword >> FileMap/Full File read\n- No tool spamming\n- **MUST MARK DONE/APPEND Todos BASED ON REALTIME TASK PROGRESS ON *EACH TURN***" : ""}
5019
5022
  ${mode === "Flux" ? "- **File Tools >> Code in chat**\n\n" : ""}- COMMUNICATION TOOLS -
5020
5023
  1. [tool:functions.Ask(question="...", optionA="option::description", ...MAX 4)]. Ambiguity Resolution. Mandatory Triggers: Path Divergence, Security, Risk Mitigation. ask >> finish. Suggest best options; don't ask for preferences
5021
5024
 
@@ -6361,8 +6364,8 @@ ${projectContextBlock}
6361
6364
  -- FORMATTING --
6362
6365
  - GFM Supported
6363
6366
  - NO CHAT **AFTER** FIRING TOOLS IN CURRENT TURN
6364
- - Short headsup about actions before firing tools
6365
- - Task Complete & Results Verified? End response with summary of changes made and files edited
6367
+ - Short headsup summary of actions before firing tools
6368
+ - Task Complete & Results Verified? End response with summary of changes made (why) and files edited
6366
6369
  - Basic LaTeX${mode === "Flux" ? "" : ". Kaomojis"}
6367
6370
  === END SYSTEM PROMPT ===`.trim();
6368
6371
  };
@@ -18029,9 +18032,18 @@ Selection: ${val}`,
18029
18032
  deleteChatSummary(chatId);
18030
18033
  if (stdout) {
18031
18034
  stdout.write("\x1B[2J\x1B[3J\x1B[H");
18035
+ if (stdout.isTTY) {
18036
+ stdout.write("\x1B[?2004h");
18037
+ }
18032
18038
  }
18033
18039
  setClearKey((prev) => prev + 1);
18034
18040
  clearBlocksCache();
18041
+ cachedHistoryRef.current = {
18042
+ completedIndex: 0,
18043
+ columns: 0,
18044
+ historicalBlocks: [],
18045
+ seenSelections: /* @__PURE__ */ new Set()
18046
+ };
18035
18047
  const targetIdx = messages.findLastIndex(
18036
18048
  (m) => m.role === "user" && m.text && (m.text.startsWith(targetPrompt) || m.text.includes(targetPrompt))
18037
18049
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fluxflow-cli",
3
- "version": "2.15.1",
3
+ "version": "2.15.3",
4
4
  "date": "2026-06-30",
5
5
  "description": "A high-fidelity agentic terminal assistant for the Flux Era.",
6
6
  "keywords": [