fluxflow-cli 2.11.1 → 2.11.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 +50 -10
  2. package/package.json +2 -2
package/dist/fluxflow.js CHANGED
@@ -3146,8 +3146,7 @@ function SettingsMenu({
3146
3146
  Text6,
3147
3147
  {
3148
3148
  color: isSelected ? "white" : "grey",
3149
- bold: isSelected,
3150
- underline: isParserDownload
3149
+ bold: isSelected
3151
3150
  },
3152
3151
  isSelected ? "\u276F " : " ",
3153
3152
  item.label
@@ -8741,7 +8740,9 @@ ${ideErr} [/ERROR]`;
8741
8740
  if (splitPoint !== -1) break;
8742
8741
  }
8743
8742
  if (splitPoint !== -1) {
8744
- if (splitPoint > 0) msgs.push({ type: "text", content: remaining.substring(0, splitPoint) });
8743
+ if (splitPoint > 0) {
8744
+ msgs.push({ type: "text", content: remaining.substring(0, splitPoint) });
8745
+ }
8745
8746
  isBufferingToolCall = true;
8746
8747
  toolCallBuffer = remaining.substring(splitPoint);
8747
8748
  remaining = "";
@@ -8853,6 +8854,7 @@ ${ideErr} [/ERROR]`;
8853
8854
  if (aiProvider === "Google") {
8854
8855
  pendingGoogleText += dedupeClean;
8855
8856
  } else {
8857
+ yield* flushGoogleBuffer2();
8856
8858
  const msgs = getBufferedMessages(dedupeClean);
8857
8859
  for (const m of msgs) yield m;
8858
8860
  }
@@ -8867,6 +8869,7 @@ ${ideErr} [/ERROR]`;
8867
8869
  if (aiProvider === "Google") {
8868
8870
  pendingGoogleText += chunkText;
8869
8871
  } else {
8872
+ yield* flushGoogleBuffer2();
8870
8873
  const msgs = getBufferedMessages(chunkText);
8871
8874
  for (const m of msgs) yield m;
8872
8875
  }
@@ -9878,6 +9881,7 @@ ${boxBottom}` };
9878
9881
  toolCallPointer++;
9879
9882
  }
9880
9883
  if (aiProvider === "Google" && pendingGoogleText && Date.now() - lastGoogleFlushTime >= 150) {
9884
+ yield* flushGoogleBuffer2();
9881
9885
  const msgs = getBufferedMessages(pendingGoogleText);
9882
9886
  for (const m of msgs) yield m;
9883
9887
  pendingGoogleText = "";
@@ -9922,6 +9926,7 @@ ${boxBottom}` };
9922
9926
  if (aiProvider === "Google") {
9923
9927
  pendingGoogleText += dedupeClean;
9924
9928
  } else {
9929
+ yield* flushGoogleBuffer2();
9925
9930
  const msgs = getBufferedMessages(dedupeClean);
9926
9931
  for (const m of msgs) yield m;
9927
9932
  }
@@ -10289,8 +10294,10 @@ var init_ResumeModal = __esm({
10289
10294
 
10290
10295
  // src/components/MemoryModal.jsx
10291
10296
  import React10, { useState as useState7, useEffect as useEffect5 } from "react";
10292
- import { Box as Box10, Text as Text10, useInput as useInput5 } from "ink";
10297
+ import { Box as Box10, Text as Text10, useInput as useInput5, useStdout } from "ink";
10293
10298
  function MemoryModal({ onClose }) {
10299
+ const { stdout } = useStdout();
10300
+ const columns = stdout?.columns || 80;
10294
10301
  const [memories, setMemories] = useState7([]);
10295
10302
  const [selectedIndex, setSelectedIndex] = useState7(0);
10296
10303
  const [isMemoryOn, setIsMemoryOn] = useState7(true);
@@ -10322,9 +10329,42 @@ function MemoryModal({ onClose }) {
10322
10329
  }
10323
10330
  }
10324
10331
  });
10325
- const cleanDisplay = (text) => {
10332
+ const formatMemory = (text, idx, isSelected) => {
10326
10333
  if (!text) return "";
10327
- return text.replace(/\[Saved on: .*?\]/g, "").replace(/\\+'/g, "'").trim();
10334
+ const clean = text.replace(/\[Saved on: .*?\]/g, "").replace(/\\+'/g, "'").trim();
10335
+ const prefix = `${isSelected ? "\u276F " : " "}${idx + 1}. `;
10336
+ const prefixLen = prefix.length;
10337
+ const rightPadding = isSelected ? 22 : 2;
10338
+ const parts = clean.split("\n");
10339
+ return parts.map((part, partIdx) => {
10340
+ const isFirstPart = partIdx === 0;
10341
+ const firstLineMax = Math.max(10, columns - 4 - (isFirstPart ? prefixLen : 3) - rightPadding);
10342
+ const subLineMax = Math.max(10, columns - 4 - 3 - rightPadding);
10343
+ const words = part.split(/(\s+)/);
10344
+ const lines = [];
10345
+ let currentLine = "";
10346
+ words.forEach((word) => {
10347
+ if (word.length === 0) return;
10348
+ const currentLimit = lines.length === 0 ? firstLineMax : subLineMax;
10349
+ if (currentLine.length + word.length > currentLimit) {
10350
+ if (currentLine.trim().length > 0) {
10351
+ lines.push(currentLine.trimEnd());
10352
+ currentLine = word;
10353
+ } else {
10354
+ lines.push(word.substring(0, currentLimit));
10355
+ currentLine = word.substring(currentLimit);
10356
+ }
10357
+ } else {
10358
+ currentLine += word;
10359
+ }
10360
+ });
10361
+ if (currentLine.trimEnd().length > 0) {
10362
+ lines.push(currentLine.trimEnd());
10363
+ }
10364
+ if (lines.length === 0) return "";
10365
+ const wrapped = lines.join("\n ");
10366
+ return isFirstPart ? wrapped : " " + wrapped;
10367
+ }).join("\n");
10328
10368
  };
10329
10369
  const totalCapacity = 4 * 1024 * 2;
10330
10370
  const currentLength = memories.reduce((acc, m) => acc + (m.memory?.length || 0), 0);
@@ -10348,8 +10388,8 @@ function MemoryModal({ onClose }) {
10348
10388
  backgroundColor: isSelected ? "#2a2a2a" : void 0,
10349
10389
  width: "100%"
10350
10390
  },
10351
- /* @__PURE__ */ React10.createElement(Box10, { flexGrow: 1 }, /* @__PURE__ */ React10.createElement(Text10, { color: isSelected ? "white" : "grey", bold: isSelected }, isSelected ? "\u276F " : " ", idx + 1, ". ", cleanDisplay(mem.memory))),
10352
- isSelected && /* @__PURE__ */ React10.createElement(Box10, { flexShrink: 0 }, /* @__PURE__ */ React10.createElement(Text10, { color: "grey", dimColor: true }, "[ "), " ", /* @__PURE__ */ React10.createElement(Text10, { color: "grey", dimColor: true, italic: true }, mem.score), /* @__PURE__ */ React10.createElement(Text10, { color: "grey", dimColor: true }, " ]"), /* @__PURE__ */ React10.createElement(Text10, { color: "grey", bold: true }, "[X] WIPE "))
10391
+ /* @__PURE__ */ React10.createElement(Box10, { flexGrow: 1 }, /* @__PURE__ */ React10.createElement(Text10, { color: isSelected ? "white" : "grey", bold: isSelected }, isSelected ? "\u276F " : " ", idx + 1, ". ", formatMemory(mem.memory, idx, isSelected))),
10392
+ isSelected && /* @__PURE__ */ React10.createElement(Box10, { flexShrink: 0 }, /* @__PURE__ */ React10.createElement(Text10, { color: "grey", dimColor: true }, " [", /* @__PURE__ */ React10.createElement(Text10, { italic: true }, mem.score), "] "), /* @__PURE__ */ React10.createElement(Text10, { color: "grey", bold: true }, "[X] WIPE "))
10353
10393
  );
10354
10394
  })), /* @__PURE__ */ React10.createElement(
10355
10395
  Box10,
@@ -11015,7 +11055,7 @@ __export(app_exports, {
11015
11055
  });
11016
11056
  import os4 from "os";
11017
11057
  import React14, { useState as useState11, useEffect as useEffect8, useRef as useRef3, useMemo as useMemo2 } from "react";
11018
- import { Box as Box14, Text as Text14, useInput as useInput8, useStdout } from "ink";
11058
+ import { Box as Box14, Text as Text14, useInput as useInput8, useStdout as useStdout2 } from "ink";
11019
11059
  import fs22 from "fs-extra";
11020
11060
  import path20 from "path";
11021
11061
  import { exec as exec2 } from "child_process";
@@ -11026,7 +11066,7 @@ import gradient2 from "gradient-string";
11026
11066
  function App({ args = [] }) {
11027
11067
  const [confirmExit, setConfirmExit] = useState11(false);
11028
11068
  const [exitCountdown, setExitCountdown] = useState11(10);
11029
- const { stdout } = useStdout();
11069
+ const { stdout } = useStdout2();
11030
11070
  const [input, setInput] = useState11("");
11031
11071
  const [inputKey, setInputKey] = useState11(0);
11032
11072
  const [isExpanded, setIsExpanded] = useState11(false);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "fluxflow-cli",
3
- "version": "2.11.1",
4
- "date": "2026-06-22",
3
+ "version": "2.11.3",
4
+ "date": "2026-06-23",
5
5
  "description": "A high-fidelity agentic terminal assistant for the Flux Era.",
6
6
  "keywords": [
7
7
  "ai",