fluxflow-cli 2.16.3 → 2.16.5
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.
- package/dist/fluxflow.js +20 -9
- 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(
|
|
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",
|
|
@@ -11653,7 +11659,7 @@ ${activeSummaryBlock}${thinkingLevel !== "Fast" && thinkingLevel !== "xHigh" &&
|
|
|
11653
11659
|
}
|
|
11654
11660
|
if (TERMINATION_SIGNAL) {
|
|
11655
11661
|
yield { type: "status", content: "Request Cancelled" };
|
|
11656
|
-
yield { type: "text", content: "\n\n\x1B[33m\
|
|
11662
|
+
yield { type: "text", content: "\n\n\x1B[33m\u24D8 Request Cancelled\x1B[0m" };
|
|
11657
11663
|
break;
|
|
11658
11664
|
}
|
|
11659
11665
|
if (steeringCallback) {
|
|
@@ -12104,7 +12110,7 @@ ${ideErr} [/ERROR]`;
|
|
|
12104
12110
|
}
|
|
12105
12111
|
if (TERMINATION_SIGNAL) {
|
|
12106
12112
|
yield { type: "status", content: "Request Cancelled" };
|
|
12107
|
-
yield { type: "text", content: "\n\n\x1B[33m\
|
|
12113
|
+
yield { type: "text", content: "\n\n\x1B[33m\u24D8 Request Cancelled\x1B[0m" };
|
|
12108
12114
|
break;
|
|
12109
12115
|
}
|
|
12110
12116
|
let chunkText = "";
|
|
@@ -13242,7 +13248,7 @@ ${colorMainWords(output)}` };
|
|
|
13242
13248
|
} catch (err) {
|
|
13243
13249
|
if (TERMINATION_SIGNAL) {
|
|
13244
13250
|
yield { type: "status", content: "Request Cancelled" };
|
|
13245
|
-
yield { type: "text", content: "\n\n\x1B[33m\
|
|
13251
|
+
yield { type: "text", content: "\n\n\x1B[33m\u24D8 Request Cancelled\x1B[0m" };
|
|
13246
13252
|
break;
|
|
13247
13253
|
}
|
|
13248
13254
|
if (String(err).includes("Incomplete JSON segment at the end")) {
|
|
@@ -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
|
{
|
|
@@ -16760,7 +16771,7 @@ ${timestamp}` };
|
|
|
16760
16771
|
const newMsgs = [...updatedPrev, {
|
|
16761
16772
|
id: "cancel-" + Date.now(),
|
|
16762
16773
|
role: "system",
|
|
16763
|
-
text: "\n\n\x1B[33m\
|
|
16774
|
+
text: "\n\n\x1B[33m\u24D8 Request Cancelled\x1B[0m",
|
|
16764
16775
|
isMeta: true
|
|
16765
16776
|
}];
|
|
16766
16777
|
setCompletedIndex(newMsgs.length);
|
|
@@ -17375,7 +17386,7 @@ Selection: ${val}`,
|
|
|
17375
17386
|
}
|
|
17376
17387
|
return updated;
|
|
17377
17388
|
}).reverse();
|
|
17378
|
-
const historyToSave = newMsgs.filter((m) => !String(m.id).startsWith("welcome") && !m.isMeta);
|
|
17389
|
+
const historyToSave = newMsgs.filter((m) => !String(m.id).startsWith("welcome") && (!m.isMeta || m.text && m.text.includes("Request Cancelled")));
|
|
17379
17390
|
saveChat(chatId, null, historyToSave);
|
|
17380
17391
|
setCompletedIndex(newMsgs.length);
|
|
17381
17392
|
return newMsgs;
|
|
@@ -18114,7 +18125,7 @@ Selection: ${val}`,
|
|
|
18114
18125
|
setCompletedIndex(newMsgs.length);
|
|
18115
18126
|
setInput(targetPrompt);
|
|
18116
18127
|
setIsExpanded(targetPrompt.split("\n").length > 2);
|
|
18117
|
-
const historyToSave = newMsgs.filter((m) => !String(m.id).startsWith("welcome") && !m.isMeta);
|
|
18128
|
+
const historyToSave = newMsgs.filter((m) => !String(m.id).startsWith("welcome") && (!m.isMeta || m.text && m.text.includes("Request Cancelled")));
|
|
18118
18129
|
await saveChat(chatId, null, historyToSave);
|
|
18119
18130
|
const s = emojiSpace(2);
|
|
18120
18131
|
setMessages((prev) => {
|
|
@@ -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",
|