fluxflow-cli 2.16.3 → 2.16.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 +14 -3
  2. package/package.json +1 -1
package/dist/fluxflow.js CHANGED
@@ -6738,7 +6738,9 @@ var init_history = __esm({
6738
6738
  await fs7.ensureDir(HISTORY_DIR);
6739
6739
  const history = await loadHistory();
6740
6740
  const existingChat = history[id];
6741
- const persistentMessages = (messages || []).filter((m) => !m.isUpdateNotification && !m.isMeta);
6741
+ const persistentMessages = (messages || []).filter(
6742
+ (m) => !m.isUpdateNotification && (!m.isMeta || m.text && m.text.includes("Request Cancelled"))
6743
+ );
6742
6744
  const finalName = name || (existingChat ? existingChat.name : `Session ${id.slice(-6)}`);
6743
6745
  const chatFile = path6.join(HISTORY_DIR, `${id}.json`);
6744
6746
  writeEncryptedJson(chatFile, persistentMessages);
@@ -9690,7 +9692,8 @@ var init_ai = __esm({
9690
9692
  "moonshotai/kimi-k2.6",
9691
9693
  "stepfun-ai/step-3.7-flash",
9692
9694
  "google/gemma-4-31b-it",
9693
- "mistralai/mistral-medium-3.5-128b"
9695
+ "mistralai/mistral-medium-3.5-128b",
9696
+ "qwen/qwen3.5-397b-a17b"
9694
9697
  // Google models
9695
9698
  // No need. All models on Gemini API is Multimodal
9696
9699
  ];
@@ -9937,6 +9940,7 @@ var init_ai = __esm({
9937
9940
  const isMistral = model.includes("mistral");
9938
9941
  const isMinimax = model.includes("minimax");
9939
9942
  const isGPT = model.includes("gpt");
9943
+ const isQwen = model.includes("qwen");
9940
9944
  const GPT_THINKING_LEVELS = {
9941
9945
  "Fast": "low",
9942
9946
  "Low": "low",
@@ -9972,6 +9976,8 @@ var init_ai = __esm({
9972
9976
  body.reasoning_effort = isThinking ? "high" : "none";
9973
9977
  } else if (isMinimax && model.includes("minimax-m3")) {
9974
9978
  body.chat_template_kwargs = { thinking_mode: isThinking ? "enabled" : "disabled" };
9979
+ } else if (isQwen) {
9980
+ body.chat_template_kwargs = { enable_thinking: isThinking };
9975
9981
  }
9976
9982
  const response = await fetchWithBackoff("https://integrate.api.nvidia.com/v1/chat/completions", {
9977
9983
  method: "POST",
@@ -15789,6 +15795,11 @@ function App({ args = [] }) {
15789
15795
  {
15790
15796
  cmd: "minimaxai/minimax-m3",
15791
15797
  desc: "Text Only"
15798
+ },
15799
+ // QWEN
15800
+ {
15801
+ cmd: "qwen/qwen3.5-397b-a17b",
15802
+ desc: "Multimodal"
15792
15803
  }
15793
15804
  ] : apiTier === "Free" ? [
15794
15805
  {
@@ -18372,7 +18383,7 @@ Selection: ${val}`,
18372
18383
  }
18373
18384
  )));
18374
18385
  default:
18375
- 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 }))), /* @__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, wittyPhrase && /* @__PURE__ */ React15.createElement(Text15, { color: "gray", italic: true }, wittyPhrase, " "), /* @__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(
18386
+ 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 }))), /* @__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, wittyPhrase && /* @__PURE__ */ React15.createElement(Box14, null, /* @__PURE__ */ React15.createElement(Text15, { color: "gray", italic: true }, wittyPhrase), /* @__PURE__ */ React15.createElement(Text15, { color: "gray", dimColor: true }, " \u2503 ")), /* @__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(
18376
18387
  Box14,
18377
18388
  {
18378
18389
  backgroundColor: "#555555",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fluxflow-cli",
3
- "version": "2.16.3",
3
+ "version": "2.16.4",
4
4
  "date": "2026-07-01",
5
5
  "description": "A high-fidelity agentic terminal assistant for the Flux Era.",
6
6
  "keywords": [