fluxflow-cli 3.4.4 → 3.4.6

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 CHANGED
@@ -5019,7 +5019,7 @@ var init_StatusBar = __esm({
5019
5019
  }
5020
5020
  return "#ff0000";
5021
5021
  };
5022
- StatusBar = React5.memo(({ mode, thinkingLevel, tokens = "0.0k", tokensTotal = "0.0k", chatId = "NEW-SESSION", isMemoryEnabled = true, apiTier = "Free", aiProvider = "Google", activeModel = "", isProcessing = false, lastChunkTime = 0 }) => {
5022
+ StatusBar = React5.memo(({ mode, thinkingLevel, tokens = "0.0k", tokensTotal = "0.0k", chatId = "NEW-SESSION", isMemoryEnabled = true, apiTier = "Free", aiProvider = "Google", activeModel: activeModel2 = "", isProcessing = false, lastChunkTime = 0 }) => {
5023
5023
  const modeIcon = mode === "Flux" ? "" : "";
5024
5024
  const [memoryUsage, setMemoryUsage] = useState5(0);
5025
5025
  const [memoryLimit, setMemoryLimit] = useState5(0);
@@ -5094,9 +5094,9 @@ var init_StatusBar = __esm({
5094
5094
  };
5095
5095
  }, []);
5096
5096
  let maxLimit = 262144;
5097
- if (aiProvider === "NVIDIA" && (activeModel?.includes("glm") || activeModel?.includes("gpt") || activeModel?.includes("qwen"))) {
5097
+ if (aiProvider === "NVIDIA" && (activeModel2?.includes("glm") || activeModel2?.includes("gpt") || activeModel2?.includes("qwen"))) {
5098
5098
  maxLimit = 128e3;
5099
- } else if (aiProvider === "DeepSeek" || aiProvider === "Google" && apiTier === "Paid" || aiProvider === "NVIDIA" && activeModel.includes("deepseek")) {
5099
+ } else if (aiProvider === "DeepSeek" || aiProvider === "Google" && apiTier === "Paid" || aiProvider === "NVIDIA" && (activeModel2.includes("deepseek") || activeModel2.includes("seed"))) {
5100
5100
  maxLimit = 409600;
5101
5101
  }
5102
5102
  return /* @__PURE__ */ React5.createElement(
@@ -6633,7 +6633,13 @@ Explicit Triggers for permanent memory:
6633
6633
 
6634
6634
  Usage Rules:
6635
6635
  - Frequency for 'user' action: Based on explicit triggers.
6636
- - IF YOU WANT TO SAVE SOMETHING, BUT SIMILAR MEMORY ALREADY EXISTS, USE THE UPDATE METHOD NOT ADD` : ""}`.trim();
6636
+ - IF YOU WANT TO SAVE SOMETHING, BUT SIMILAR MEMORY ALREADY EXISTS, USE THE UPDATE METHOD NOT ADD
6637
+
6638
+ Usage Rules:
6639
+ - Chat Title is MANDATORY
6640
+ - TEMPORARY Memory is MANDATORY
6641
+ - WHEN Called User Memory, STILL use Temporary Memory
6642
+ - MUST NOT IGNORE ANY TOOL CALLS IN GIVEN CONTEXT OF CHAT BETWEEN USER & AGENT` : ""}`.trim();
6637
6643
  }
6638
6644
  });
6639
6645
 
@@ -6753,7 +6759,7 @@ CRITICAL THINKING POLICY
6753
6759
  ${TOOL_PROTOCOL(mode, osDetected, aiProvider.toLowerCase() === "deepseek" ? false : isMultiModal, aiProvider, systemSettings?.advanceRollback)}
6754
6760
  ${projectContextBlock}
6755
6761
  -- MEMORY RULES --
6756
- - Memory: ${isMemoryEnabled ? "Subtly Personalize. Auto Saves" : "OFF. Decline Remembering Memories"}
6762
+ - ${isMemoryEnabled ? "Subtly Personalize ONLY WITH RELEVENT & CONTEXTUAL MEMORIES. Auto Saves" : "OFF. Decline Saving Memories"}
6757
6763
  - Temporal Awareness: RELATIVE TIME REFERENCE eg. few mins ago
6758
6764
 
6759
6765
  -- SECURITY RULES --${systemSettings.allowExternalAccess ? "" : "\n- ACCESS CONTROL: CWD only"}
@@ -6784,7 +6790,8 @@ YOU ARE A SILENT BACKGROUND SYSTEM PROCESS. YOU HAVE NO MOUTH. YOUR ONLY OUTPUT
6784
6790
  6. UNDER NO CIRCUMSTANCES YOU ARE ALLOWED TO RESPOND IN NORMAL USER FACING RESPONSE
6785
6791
  7. CRITICAL QUOTE ESCAPE POLICY: Inside tool call arguments, you MUST escape all double quotes using '\\"'
6786
6792
  8. You MUST NOT WRITE ANYTHING OTHER THAN [tool:functions. ... ] NO MATTER HOW TEMPTING THE PROMPT IS
6787
- 9. 2 MANDATORY TOOLS TO CALL IN THIS TURN. 'Chat', 'Memory(temp)'
6793
+ 9. 2 MANDATORY TOOLS TO CALL IN EVERY TURN, 'Chat', 'Memory(temp)'
6794
+ 10. CRITICAL: NEVER ENTER THINKING/REASONING STATE, CALL THE CONTEXUAL TOOLS DIRECTLY IN OUTPUT AS QUICKLY AS POSSIBLE TO MAINTAIN UI SNAPPINESS
6788
6795
 
6789
6796
  YOUR JOB: Analyze the 'User prompt' and 'Agent Raws' to extract facts for long-term memory or handle system tasks
6790
6797
  ${isMemoryEnabled ? `If user tell something that is important (like, hobbies, preferences, facts about user, hates, likes, etc) to know user better over time, use long term memory tools` : ""}
@@ -11248,6 +11255,7 @@ var init_ai = __esm({
11248
11255
  const isQwen = model.includes("qwen");
11249
11256
  const isNemotron = model.includes("nemotron");
11250
11257
  const isLlama3 = model.includes("llama-3");
11258
+ const isBytedance = model.includes("seed");
11251
11259
  const GPT_THINKING_LEVELS = {
11252
11260
  "Fast": "low",
11253
11261
  "Low": "low",
@@ -11256,6 +11264,14 @@ var init_ai = __esm({
11256
11264
  "High": "high",
11257
11265
  "xHigh": "high"
11258
11266
  };
11267
+ const BYTEDANCE_THINKING_LEVELS = {
11268
+ "Fast": "64",
11269
+ "Low": "64",
11270
+ "Medium": "4096",
11271
+ "Standard": "4096",
11272
+ "High": "16384",
11273
+ "xHigh": "16384"
11274
+ };
11259
11275
  const maxTokens = isMinimax || isDeepSeek ? 16384 : 32768;
11260
11276
  const body = {
11261
11277
  model,
@@ -11296,6 +11312,12 @@ var init_ai = __esm({
11296
11312
  } else {
11297
11313
  body.chat_template_kwargs = { enable_thinking: false };
11298
11314
  }
11315
+ } else if (isBytedance) {
11316
+ if (isThinking) {
11317
+ body.extra_body = {
11318
+ thinking_budget: parseInt(BYTEDANCE_THINKING_LEVELS[apiLevel] ?? "4096")
11319
+ };
11320
+ }
11299
11321
  }
11300
11322
  let attempts = 0;
11301
11323
  const maxAttempts = 6;
@@ -11737,9 +11759,9 @@ ${originalTextProcessed.length > USER_CONTEXT_LENGTH ? "... (truncated) ...\n\n"
11737
11759
  let effectiveProvider = aiProvider;
11738
11760
  try {
11739
11761
  const timeoutPromise = new Promise(
11740
- (_, reject) => setTimeout(() => reject(new Error("JANITOR_TIMEOUT")), 5500)
11762
+ (_, reject) => setTimeout(() => reject(new Error("JANITOR_TIMEOUT")), 1e4)
11741
11763
  );
11742
- const useNvidiaFallbackForGoogle = aiProvider === "Google" && attempts >= 2 && attempts < 6 && nvidiaApiKey && isNvidiaFree;
11764
+ const useNvidiaFallbackForGoogle = aiProvider === "Google" && attempts >= 0 && attempts < 6 && nvidiaApiKey && isNvidiaFree;
11743
11765
  const useNvidiaFallbackForDeepSeek = aiProvider === "DeepSeek" && attempts < 4 && nvidiaApiKey && isNvidiaFree;
11744
11766
  useNvidiaFallback = useNvidiaFallbackForGoogle || useNvidiaFallbackForDeepSeek;
11745
11767
  effectiveProvider = useNvidiaFallback ? "NVIDIA" : aiProvider;
@@ -11781,7 +11803,7 @@ ${originalTextProcessed.length > USER_CONTEXT_LENGTH ? "... (truncated) ...\n\n"
11781
11803
  const stream = getNVIDIAStream(
11782
11804
  useNvidiaFallback ? nvidiaApiKey : apiKey,
11783
11805
  getFallbackValue("nvidia_janitor_fallback"),
11784
- // "mistralai/mistral-small-4-119b-2603", // [DEBUGGING POINT]
11806
+ // "mistralai/mistral-nemotron", // [DEBUGGING POINT]
11785
11807
  janitorContents,
11786
11808
  janitorPrompt,
11787
11809
  "Fast",
@@ -12491,7 +12513,7 @@ Provide a consolidated summary of the entire session.`;
12491
12513
  let targetModel = getFallbackValue("gemma_janitor_fallback_google");
12492
12514
  if (aiProvider === "OpenRouter") targetModel = getFallbackValue("janitor_open_router");
12493
12515
  if (aiProvider === "DeepSeek") targetModel = getFallbackValue("deepseek_level_1");
12494
- if (aiProvider === "NVIDIA") targetModel = getFallbackValue("nvidia_janitor_fallback");
12516
+ if (aiProvider === "NVIDIA") targetModel = getFallbackValue("nvidia_chat_summarizer_fallback");
12495
12517
  let attempts = 0;
12496
12518
  let success = false;
12497
12519
  let response = null;
@@ -12616,9 +12638,9 @@ Provide a consolidated summary of the entire session.`;
12616
12638
  if (aiProvider === "NVIDIA" && (modelName?.includes("glm") || modelName?.includes("gpt") || modelName?.includes("qwen"))) {
12617
12639
  contextCompressionCount = 122e3;
12618
12640
  contextTruncationCount = 126e3;
12619
- } else if (aiProvider === "DeepSeek" || aiProvider === "Google" && apiTier === "Paid") {
12620
- contextCompressionCount = 4e5;
12621
- contextTruncationCount = 405e3;
12641
+ } else if (aiProvider === "DeepSeek" || aiProvider === "Google" && apiTier === "Paid" || aiProvider === "NVIDIA" && (activeModel.includes("deepseek") || activeModel.includes("seed"))) {
12642
+ contextCompressionCount = 403e3;
12643
+ contextTruncationCount = 408e3;
12622
12644
  }
12623
12645
  if ((sessionStats?.tokens || 0) > contextCompressionCount) {
12624
12646
  yield { type: "status_history", content: "Context Limit Reached. Condensing session history..." };
@@ -13394,6 +13416,8 @@ ${ideErr} [/ERROR]`;
13394
13416
  reject(new DOMException("The user aborted a request.", "AbortError"));
13395
13417
  });
13396
13418
  });
13419
+ abortPromise.catch(() => {
13420
+ });
13397
13421
  let activeContents = contents;
13398
13422
  if (aiProvider === "OpenRouter") {
13399
13423
  stream = getOpenRouterStream(
@@ -16687,7 +16711,7 @@ function App({ args = [] }) {
16687
16711
  const [setupStep, setSetupStep] = useState15(0);
16688
16712
  const [latestVer, setLatestVer] = useState15(null);
16689
16713
  const [showFullThinking, setShowFullThinking] = useState15(false);
16690
- const [activeModel, setActiveModel] = useState15(getDefaultModel("Google", "Free") || "gemma-4-31b-it");
16714
+ const [activeModel2, setActiveModel] = useState15(getDefaultModel("Google", "Free") || "gemma-4-31b-it");
16691
16715
  const [janitorModel, setJanitorModel] = useState15(getFallbackValue("gemma_janitor_fallback_google") || "gemma-4-26b-a4b-it");
16692
16716
  const [isInitializing, setIsInitializing] = useState15(true);
16693
16717
  const [isAppFocused, setIsAppFocused] = useState15(true);
@@ -16818,12 +16842,12 @@ function App({ args = [] }) {
16818
16842
  setThinkingLevel(hasStandard ? "Standard" : "Medium");
16819
16843
  } else {
16820
16844
  if (aiProvider === "Google" && thinkingLevel === "xHigh") {
16821
- if (activeModel && activeModel.toLowerCase().startsWith("gemini-3")) {
16845
+ if (activeModel2 && activeModel2.toLowerCase().startsWith("gemini-3")) {
16822
16846
  setThinkingLevel("High");
16823
16847
  }
16824
16848
  }
16825
16849
  }
16826
- }, [aiProvider, activeModel, thinkingLevel]);
16850
+ }, [aiProvider, activeModel2, thinkingLevel]);
16827
16851
  useEffect12(() => {
16828
16852
  if (!apiKey) return;
16829
16853
  if (isFirstRender.current) {
@@ -17624,7 +17648,7 @@ function App({ args = [] }) {
17624
17648
  }, [confirmExit]);
17625
17649
  useEffect12(() => {
17626
17650
  if (!isInitializing) {
17627
- const modelToSave = parsedArgs.model && activeModel === parsedArgs.model ? persistedModelRef.current : activeModel;
17651
+ const modelToSave = parsedArgs.model && activeModel2 === parsedArgs.model ? persistedModelRef.current : activeModel2;
17628
17652
  let settingsToSave = systemSettings;
17629
17653
  if (parsedArgs.playground) {
17630
17654
  settingsToSave = {
@@ -17637,7 +17661,7 @@ function App({ args = [] }) {
17637
17661
  mode,
17638
17662
  thinkingLevel,
17639
17663
  aiProvider,
17640
- activeModel: modelToSave || activeModel,
17664
+ activeModel: modelToSave || activeModel2,
17641
17665
  showFullThinking,
17642
17666
  systemSettings: settingsToSave,
17643
17667
  profileData,
@@ -17645,7 +17669,7 @@ function App({ args = [] }) {
17645
17669
  apiTier
17646
17670
  });
17647
17671
  }
17648
- }, [mode, thinkingLevel, aiProvider, activeModel, showFullThinking, systemSettings, profileData, imageSettings, isInitializing, parsedArgs, apiTier]);
17672
+ }, [mode, thinkingLevel, aiProvider, activeModel2, showFullThinking, systemSettings, profileData, imageSettings, isInitializing, parsedArgs, apiTier]);
17649
17673
  const handleSetup = async (val) => {
17650
17674
  const key = val.trim();
17651
17675
  let minLength = 38;
@@ -17733,7 +17757,7 @@ function App({ args = [] }) {
17733
17757
  { cmd: "Medium", desc: "Balanced Reasoning" },
17734
17758
  { cmd: "High", desc: "Deep Reasoning" },
17735
17759
  { cmd: "xHigh", desc: "Extended Reasoning" }
17736
- ] : activeModel && activeModel.toLowerCase().startsWith("gemini-3") ? [
17760
+ ] : activeModel2 && activeModel2.toLowerCase().startsWith("gemini-3") ? [
17737
17761
  { cmd: "Fast", desc: "Fastest" },
17738
17762
  { cmd: "Low", desc: "Quick Reasoning" },
17739
17763
  { cmd: "Medium", desc: "Balanced Reasoning" },
@@ -17870,6 +17894,12 @@ ${cleanText}`, color: "magenta" }];
17870
17894
  const target = h[targetId] || Object.values(h).find((h2) => h2.name.toLowerCase() === targetId.toLowerCase());
17871
17895
  if (target) {
17872
17896
  stdout.write("\x1B[2J\x1B[3J\x1B[H");
17897
+ if (process.stdout.isTTY) {
17898
+ const chatName = target?.name || "";
17899
+ const title = chatName && !chatName.startsWith("flow-") && !chatName.startsWith("Session ") ? chatName : "FluxFlow | Resumed";
17900
+ process.stdout.write(`\x1B]0;${title}\x07`);
17901
+ process.stdout.write(`\x1B]633;P;TerminalTitle=${title}\x07`);
17902
+ }
17873
17903
  clearBlocksCache();
17874
17904
  chatLoadingRef.current = true;
17875
17905
  setChatId(targetId);
@@ -17949,6 +17979,8 @@ ${cleanText}`, color: "magenta" }];
17949
17979
  stdout.write("\x1B[2J\x1B[3J\x1B[H");
17950
17980
  if (stdout.isTTY) {
17951
17981
  stdout.write("\x1B[?2004h");
17982
+ process.stdout.write(`\x1B]0;FluxFlow\x07`);
17983
+ process.stdout.write(`\x1B]633;P;TerminalTitle=FluxFlow\x07`);
17952
17984
  }
17953
17985
  }
17954
17986
  setMessages([
@@ -18586,7 +18618,7 @@ ${list || "No saved chats found."}`, isMeta: true }];
18586
18618
  const s2 = emojiSpace(2);
18587
18619
  setMessages((prev) => {
18588
18620
  setCompletedIndex(prev.length + 1);
18589
- return [...prev, { id: Date.now(), role: "system", text: `[SYSTEM] Compressing session history...`, isMeta: true }];
18621
+ return [...prev, { id: Date.now(), role: "system", text: `[SYSTEM] Compacting session history...`, isMeta: true }];
18590
18622
  });
18591
18623
  try {
18592
18624
  const config = {
@@ -18606,7 +18638,7 @@ ${list || "No saved chats found."}`, isMeta: true }];
18606
18638
  const finalMsgs = [...prev, {
18607
18639
  id: Date.now(),
18608
18640
  role: "system",
18609
- text: `[SYSTEM] Chat History compressed saving tokens.`,
18641
+ text: `[SYSTEM] Chat History compacted saving tokens.`,
18610
18642
  isMeta: true
18611
18643
  }];
18612
18644
  setCompletedIndex(finalMsgs.length);
@@ -18615,13 +18647,13 @@ ${list || "No saved chats found."}`, isMeta: true }];
18615
18647
  } else {
18616
18648
  setMessages((prev) => {
18617
18649
  setCompletedIndex(prev.length + 1);
18618
- return [...prev, { id: Date.now(), role: "system", text: "[SYSTEM] Compression failed (no summary returned).", isMeta: true }];
18650
+ return [...prev, { id: Date.now(), role: "system", text: "[SYSTEM] Compaction failed.", isMeta: true }];
18619
18651
  });
18620
18652
  }
18621
18653
  } catch (err) {
18622
18654
  setMessages((prev) => {
18623
18655
  setCompletedIndex(prev.length + 1);
18624
- return [...prev, { id: Date.now(), role: "system", text: `[SYSTEM] Error during compression: ${err.message}`, isMeta: true }];
18656
+ return [...prev, { id: Date.now(), role: "system", text: `[SYSTEM] Error during compaction: ${err.message}`, isMeta: true }];
18625
18657
  });
18626
18658
  } finally {
18627
18659
  setIsCompressing(false);
@@ -18773,7 +18805,7 @@ ${timestamp}` };
18773
18805
  }
18774
18806
  }
18775
18807
  const stream = getAIStream(
18776
- activeModel,
18808
+ activeModel2,
18777
18809
  cleanHistoryForAI,
18778
18810
  {
18779
18811
  profile: profileData,
@@ -20182,6 +20214,12 @@ Selection: ${val}`,
20182
20214
  const h = await loadHistory();
20183
20215
  if (h[id]) {
20184
20216
  stdout.write("\x1B[2J\x1B[3J\x1B[H");
20217
+ if (process.stdout.isTTY) {
20218
+ const chatName = h[id]?.name || "";
20219
+ const title = chatName && !chatName.startsWith("flow-") && !chatName.startsWith("Session ") ? chatName : "FluxFlow | Resumed";
20220
+ process.stdout.write(`\x1B]0;${title}\x07`);
20221
+ process.stdout.write(`\x1B]633;P;TerminalTitle=${title}\x07`);
20222
+ }
20185
20223
  clearBlocksCache();
20186
20224
  chatLoadingRef.current = true;
20187
20225
  setChatId(id);
@@ -20410,7 +20448,7 @@ Selection: ${val}`,
20410
20448
  glintWidth: 2,
20411
20449
  typeSpeed: 10
20412
20450
  }
20413
- ), /* @__PURE__ */ React16.createElement(Text16, { color: "gray" }, activeTime > 0 ? `(${activeTime.toFixed(0)}s)` : "")) : /* @__PURE__ */ React16.createElement(Text16, { color: "grey", italic: true }, input.length > 0 && escPressCount ? "Press ESC again to clear input" : hasPasteBlock ? "Press CTRL + O to expand" : "Waiting for input...")), /* @__PURE__ */ React16.createElement(Box14, null, isProcessing && Date.now() - lastChunkTime > 15e3 && !activeSubagents.some((sa) => sa.status === "running" && !statusText.toLowerCase().includes("waiting")) ? /* @__PURE__ */ React16.createElement(Box14, null, /* @__PURE__ */ React16.createElement(GlintText_default, { text: "Waiting for API", baseColor: "white", glintColor: "gray", glintWidth: 4, speed: 80 }), /* @__PURE__ */ React16.createElement(Text16, { color: "gray", dimColor: true }, " \u2503 ")) : wittyPhrase ? /* @__PURE__ */ React16.createElement(Box14, null, /* @__PURE__ */ React16.createElement(GlintText_default, { text: wittyPhrase, italic: true, speed: 80, typeSpeed: 15 }), /* @__PURE__ */ React16.createElement(Text16, { color: "gray", dimColor: true }, " \u2503 ")) : null, /* @__PURE__ */ React16.createElement(GlintText_default, { text: tempModelOverride || activeModel.split("/")[1] || activeModel, baseColor: "white", glintColor: "gray", glintWidth: 3 }))), /* @__PURE__ */ React16.createElement(Box14, { flexDirection: "column", width: "100%" }, /* @__PURE__ */ React16.createElement(Box14, { width: "100%", height: 1, overflow: "hidden" }, /* @__PURE__ */ React16.createElement(Text16, { color: "#555555" }, "\u2584".repeat(Math.max(1, terminalSize.columns)))), /* @__PURE__ */ React16.createElement(
20451
+ ), /* @__PURE__ */ React16.createElement(Text16, { color: "gray" }, activeTime > 0 ? `(${activeTime.toFixed(0)}s)` : "")) : /* @__PURE__ */ React16.createElement(Text16, { color: "grey", italic: true }, input.length > 0 && escPressCount ? "Press ESC again to clear input" : hasPasteBlock ? "Press CTRL + O to expand" : "Waiting for input...")), /* @__PURE__ */ React16.createElement(Box14, null, isProcessing && Date.now() - lastChunkTime > 15e3 && !activeSubagents.some((sa) => sa.status === "running" && !statusText.toLowerCase().includes("waiting")) ? /* @__PURE__ */ React16.createElement(Box14, null, /* @__PURE__ */ React16.createElement(GlintText_default, { text: "Waiting for API", baseColor: "white", glintColor: "gray", glintWidth: 4, speed: 80 }), /* @__PURE__ */ React16.createElement(Text16, { color: "gray", dimColor: true }, " \u2503 ")) : wittyPhrase ? /* @__PURE__ */ React16.createElement(Box14, null, /* @__PURE__ */ React16.createElement(GlintText_default, { text: wittyPhrase, italic: true, speed: 80, typeSpeed: 15 }), /* @__PURE__ */ React16.createElement(Text16, { color: "gray", dimColor: true }, " \u2503 ")) : null, /* @__PURE__ */ React16.createElement(GlintText_default, { text: tempModelOverride || activeModel2.split("/")[1] || activeModel2, baseColor: "white", glintColor: "gray", glintWidth: 3 }))), /* @__PURE__ */ React16.createElement(Box14, { flexDirection: "column", width: "100%" }, /* @__PURE__ */ React16.createElement(Box14, { width: "100%", height: 1, overflow: "hidden" }, /* @__PURE__ */ React16.createElement(Text16, { color: "#555555" }, "\u2584".repeat(Math.max(1, terminalSize.columns)))), /* @__PURE__ */ React16.createElement(
20414
20452
  Box14,
20415
20453
  {
20416
20454
  backgroundColor: "#555555",
@@ -20419,7 +20457,7 @@ Selection: ${val}`,
20419
20457
  width: "100%",
20420
20458
  flexDirection: "column"
20421
20459
  },
20422
- /* @__PURE__ */ React16.createElement(Box14, { flexDirection: "column", width: "100%" }, /* @__PURE__ */ React16.createElement(Box14, { flexDirection: "row", width: "100%", paddingY: 0 }, /* @__PURE__ */ React16.createElement(Box14, { flexShrink: 0, width: 4 }, /* @__PURE__ */ React16.createElement(Text16, { color: "white", bold: true }, isProcessing || isCompressing ? "\u2726 " : " \u276F ")), /* @__PURE__ */ React16.createElement(Box14, { flexGrow: 1 }, /* @__PURE__ */ React16.createElement(Box14, { flexGrow: 1, position: "relative" }, input === "" && /* @__PURE__ */ React16.createElement(Box14, { position: "absolute", paddingLeft: 0 }, activeCommand && !isTerminalFocused ? /* @__PURE__ */ React16.createElement(Text16, { color: "yellow" }, isTerminalWaitingForInput ? " Terminal is waiting for user input. Press TAB to interact" : " Press TAB to interact with terminal...") : activeCommand && isTerminalFocused ? /* @__PURE__ */ React16.createElement(Text16, { color: "yellow", bold: true }, " [ TERMINAL FOCUSED ] Type to interact, press TAB to exit...") : escPressCount === 1 ? /* @__PURE__ */ React16.createElement(Text16, { color: "white", bold: true }, " Press ESC again to ", input.length > 0 ? "clear input" : "revert codebase to checkpoint", "...") : /* @__PURE__ */ React16.createElement(Text16, { color: "#cccccc" }, escPressed ? " Press ESC again to cancel the request." : isCompressing ? " Compressing session history, please wait..." : !isProcessing ? ` Send message, @file or /cmd ... (${terminalEnv.shortcut} for newline)` : " Enter a prompt to steer the agent.")), /* @__PURE__ */ React16.createElement(
20460
+ /* @__PURE__ */ React16.createElement(Box14, { flexDirection: "column", width: "100%" }, /* @__PURE__ */ React16.createElement(Box14, { flexDirection: "row", width: "100%", paddingY: 0 }, /* @__PURE__ */ React16.createElement(Box14, { flexShrink: 0, width: 4 }, /* @__PURE__ */ React16.createElement(Text16, { color: "white", bold: true }, isProcessing || isCompressing ? "\u2726 " : " \u276F ")), /* @__PURE__ */ React16.createElement(Box14, { flexGrow: 1 }, /* @__PURE__ */ React16.createElement(Box14, { flexGrow: 1, position: "relative" }, input === "" && /* @__PURE__ */ React16.createElement(Box14, { position: "absolute", paddingLeft: 0 }, activeCommand && !isTerminalFocused ? /* @__PURE__ */ React16.createElement(Text16, { color: "yellow" }, isTerminalWaitingForInput ? " Terminal is waiting for user input. Press TAB to interact" : " Press TAB to interact with terminal...") : activeCommand && isTerminalFocused ? /* @__PURE__ */ React16.createElement(Text16, { color: "yellow", bold: true }, " [ TERMINAL FOCUSED ] Type to interact, press TAB to exit...") : escPressCount === 1 ? /* @__PURE__ */ React16.createElement(Text16, { color: "white", bold: true }, " Press ESC again to ", input.length > 0 ? "clear input" : "revert codebase to checkpoint", "...") : /* @__PURE__ */ React16.createElement(Text16, { color: "#cccccc" }, escPressed ? " Press ESC again to cancel the request." : isCompressing ? " Compacting session history, please wait..." : !isProcessing ? ` Send message, @file or /cmd ... (${terminalEnv.shortcut} for newline)` : " Enter a prompt to steer the agent.")), /* @__PURE__ */ React16.createElement(
20423
20461
  MultilineInput,
20424
20462
  {
20425
20463
  key: `input-${inputKey}`,
@@ -20577,7 +20615,7 @@ Selection: ${val}`,
20577
20615
  isMemoryEnabled: systemSettings.memory,
20578
20616
  apiTier,
20579
20617
  aiProvider,
20580
- activeModel,
20618
+ activeModel: activeModel2,
20581
20619
  isProcessing,
20582
20620
  lastChunkTime
20583
20621
  }