fluxflow-cli 1.18.17 → 1.18.18

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 +10 -21
  2. package/package.json +1 -1
package/dist/fluxflow.js CHANGED
@@ -455,7 +455,7 @@ var init_TerminalBox = __esm({
455
455
  return parts[parts.length - 1];
456
456
  }).join("\n");
457
457
  };
458
- const cleanOutput = isPty ? output || "" : (output || "").replace(/\r\n/g, "\n").replace(/\n{3,}/g, "\n\n");
458
+ const cleanOutput = (isPty ? processPTY(output) : (output || "").replace(/\r\n/g, "\n")).replace(/\n{3,}/g, "\n\n");
459
459
  const displayOutput = isPty ? cleanOutput : cleanOutput ? wrapText(cleanOutput, columns - 6) : "";
460
460
  return /* @__PURE__ */ React2.createElement(Box2, { flexDirection: "column", borderStyle: isFocused ? "double" : "round", borderColor: completed ? "#334155" : isFocused ? "yellow" : "cyan", paddingX: 2, paddingY: completed ? 0 : 1, width: "100%" }, /* @__PURE__ */ React2.createElement(Box2, { marginBottom: 1, justifyContent: "space-between", width: "100%" }, /* @__PURE__ */ React2.createElement(Box2, { flexShrink: 1, paddingRight: 2 }, /* @__PURE__ */ React2.createElement(Text2, null, /* @__PURE__ */ React2.createElement(Text2, { color: completed ? "gray" : isFocused ? "yellow" : "cyan", bold: true }, completed ? "\u{1F3C1} FINISHED:" : "\u26A1 EXECUTING:", " "), /* @__PURE__ */ React2.createElement(Text2, { color: completed ? "gray" : "white" }, command))), isPty && /* @__PURE__ */ React2.createElement(Box2, { flexShrink: 0, paddingX: 1 }, /* @__PURE__ */ React2.createElement(Text2, { color: completed ? "gray" : "magenta", bold: true }, "ADVANCE"))), displayOutput ? /* @__PURE__ */ React2.createElement(Box2, { marginTop: completed ? 0 : 1, backgroundColor: isPty ? void 0 : "#0a0a0a", paddingX: 1 }, /* @__PURE__ */ React2.createElement(Text2, { color: completed ? "gray" : void 0 }, displayOutput)) : !completed && /* @__PURE__ */ React2.createElement(Box2, { marginTop: 1, backgroundColor: isPty ? void 0 : "#0a0a0a", paddingX: 1 }, /* @__PURE__ */ React2.createElement(Text2, { color: "gray", italic: true }, "Waiting for output...")), /* @__PURE__ */ React2.createElement(Box2, { justifyContent: "space-between", marginTop: 1 }, !completed ? /* @__PURE__ */ React2.createElement(Text2, { color: "gray", dimColor: true, italic: true }, isFocused ? "Press TAB to unfocus, then double-press ESC to terminate." : "Double-press ESC to terminate if hanging.") : /* @__PURE__ */ React2.createElement(Box2, null), /* @__PURE__ */ React2.createElement(Text2, { color: completed ? "#475569" : isFocused ? "yellow" : "cyan", bold: true }, completed ? "\u25CF ARCHIVED" : isFocused ? "\u25B6 TERMINAL FOCUSED" : "\u25CF LIVE (Press TAB to focus)")));
461
461
  });
@@ -1044,8 +1044,7 @@ var init_arg_parser = __esm({
1044
1044
  const afterRaw = argsString.substring(qIdx + 1);
1045
1045
  const after = afterRaw.trim();
1046
1046
  const isLogicalEnd = after === "" || // End of entire string
1047
- after.startsWith(",") || // Next argument separator
1048
- /^(\w+)\s*=/.test(after) || // Next argument key=
1047
+ /^,\s*\w+\s*=/.test(after) || // Next argument separator (comma followed by key=)
1049
1048
  after.startsWith(")") && (after.length === 1 || /^\)\s*([,\]\s]|tool:)/i.test(after));
1050
1049
  if (isLogicalEnd && afterRaw.startsWith("\n")) {
1051
1050
  const nextLine = after.split("\n")[0];
@@ -7682,16 +7681,16 @@ function App({ args = [] }) {
7682
7681
  subs: apiTier === "Free" ? [
7683
7682
  {
7684
7683
  cmd: "gemma-4-31b-it",
7685
- desc: "Standard Default (Free, Recommended)"
7684
+ desc: "Standard Default"
7686
7685
  }
7687
7686
  ] : [
7688
7687
  {
7689
7688
  cmd: "gemini-3-flash-preview",
7690
- desc: "Fast & Lightweight (Paid, Limited Free quota)"
7689
+ desc: "Fast & Lightweight"
7691
7690
  },
7692
7691
  {
7693
7692
  cmd: "gemini-3.5-flash",
7694
- desc: "New (Paid, Limited Free quota)"
7693
+ desc: "Latest"
7695
7694
  }
7696
7695
  ]
7697
7696
  },
@@ -8338,21 +8337,11 @@ ${timestamp}` };
8338
8337
  } else {
8339
8338
  normalizedOutput = rawOutput.replace(/\r\n/g, "\n");
8340
8339
  }
8341
- const finalStatusRaw = `[TERMINAL_RECORD]
8342
- COMMAND: ${activeCommandRef.current}
8343
- PTY: ${isActiveCommandPty}
8344
- OUTPUT: ${rawOutput}`;
8345
- const finalStatusNormalized = `[TERMINAL_RECORD]
8346
- COMMAND: ${activeCommandRef.current}
8347
- PTY: ${isActiveCommandPty}
8348
- OUTPUT: ${normalizedOutput.replace(/\n{3,}/g, "\n\n")}`;
8349
- return [...prev, {
8350
- id: "term-" + Date.now(),
8351
- role: "system",
8352
- text: finalStatusRaw,
8353
- fullText: finalStatusNormalized,
8354
- isTerminalRecord: true
8355
- }];
8340
+ const finalStatus = `[TERMINAL_RECORD]
8341
+ COMMAND: ${activeCommandRef.current}
8342
+ PTY: ${isActiveCommandPty}
8343
+ OUTPUT: ${normalizedOutput.replace(/\n{3,}/g, "\n\n")}`;
8344
+ return [...prev, { id: "term-" + Date.now(), role: "system", text: finalStatus, isTerminalRecord: true }];
8356
8345
  });
8357
8346
  setActiveCommand(null);
8358
8347
  setIsTerminalFocused(false);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fluxflow-cli",
3
- "version": "1.18.17",
3
+ "version": "1.18.18",
4
4
  "date": "2026-06-01",
5
5
  "description": "A high-fidelity agentic terminal assistant for the Flux Era.",
6
6
  "keywords": [