fluxflow-cli 1.8.14 → 1.8.15

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 +44 -8
  2. package/package.json +1 -1
package/dist/fluxflow.js CHANGED
@@ -3601,6 +3601,20 @@ Check what's new using \`/changelog\` command.`,
3601
3601
  const [activeCommand, setActiveCommand] = useState7(null);
3602
3602
  const [execOutput, setExecOutput] = useState7("");
3603
3603
  const [isTerminalFocused, setIsTerminalFocused] = useState7(false);
3604
+ useEffect5(() => {
3605
+ if (apiTier !== "Free" && activeModel === "gemma-4-31b-it") {
3606
+ setActiveModel("gemini-3-flash-preview");
3607
+ setMessages((prev) => {
3608
+ setCompletedIndex(prev.length + 1);
3609
+ return [...prev, {
3610
+ id: "tier-switch-" + Date.now(),
3611
+ role: "system",
3612
+ text: `\u26A0\uFE0F **[TIER LIMIT]** Gemma is only available on Free API tier. Automatically switched to Gemini 3 Flash Preview.`,
3613
+ isMeta: true
3614
+ }];
3615
+ });
3616
+ }
3617
+ }, [apiTier, activeModel]);
3604
3618
  const terminalEnv = useMemo(() => {
3605
3619
  const isIDE = process.env.TERM_PROGRAM === "vscode" || !!process.env.VSC_TERMINAL_URL || !!process.env.INTELLIJ_TERMINAL_COMMAND_BLOCKS;
3606
3620
  return {
@@ -3878,7 +3892,7 @@ Check what's new using \`/changelog\` command.`,
3878
3892
  cmd: "/model",
3879
3893
  desc: "Switch AI model",
3880
3894
  subs: [
3881
- { cmd: "gemma-4-31b-it", desc: "Standard Default (Free, Recommended)" },
3895
+ { cmd: "gemma-4-31b-it", desc: apiTier === "Free" ? "Standard Default (Free, Recommended)" : "Standard Default (Free, Recommended) - Cannot use Gemma with paid API" },
3882
3896
  { cmd: "gemini-3.1-pro-preview", desc: "Most Capable (Paid)" },
3883
3897
  { cmd: "gemini-3-flash-preview", desc: "Fast & Lightweight (Paid, Free limited quota)" },
3884
3898
  { cmd: "gemini-3.1-flash-lite-preview", desc: "Ultra Fast (Paid, Free limited quota)" }
@@ -4045,11 +4059,24 @@ ${hintText}`, color: "magenta" }];
4045
4059
  case "/model": {
4046
4060
  if (parts[1]) {
4047
4061
  const mod = parts.slice(1).join(" ");
4048
- setActiveModel(mod);
4049
- setMessages((prev) => {
4050
- setCompletedIndex(prev.length + 1);
4051
- return [...prev, { id: Date.now(), role: "system", text: `\u2699\uFE0F [SYSTEM] Model switched to ${mod}`, isMeta: true }];
4052
- });
4062
+ if (mod === "gemma-4-31b-it" && apiTier !== "Free") {
4063
+ setMessages((prev) => {
4064
+ setCompletedIndex(prev.length + 1);
4065
+ return [...prev, {
4066
+ id: Date.now(),
4067
+ role: "system",
4068
+ text: `\u274C **[ACCESS DENIED]** Gemma is restricted to the Free API tier. Automatically switching you to **Gemini 3 Flash Preview** for optimal performance.`,
4069
+ isMeta: true
4070
+ }];
4071
+ });
4072
+ setActiveModel("gemini-3-flash-preview");
4073
+ } else {
4074
+ setActiveModel(mod);
4075
+ setMessages((prev) => {
4076
+ setCompletedIndex(prev.length + 1);
4077
+ return [...prev, { id: Date.now(), role: "system", text: `\u2699\uFE0F [SYSTEM] Model switched to ${mod}`, isMeta: true }];
4078
+ });
4079
+ }
4053
4080
  } else {
4054
4081
  setActiveView("model");
4055
4082
  }
@@ -5094,8 +5121,17 @@ Selection: ${val}`,
5094
5121
  visible.map((s, i) => {
5095
5122
  const actualIdx = startIdx + i;
5096
5123
  const isActive = actualIdx === selectedIndex;
5124
+ const isGemmaDisabled = s.cmd === "gemma-4-31b-it" && apiTier !== "Free";
5097
5125
  const cmdText = s.cmd.padEnd(32);
5098
- return /* @__PURE__ */ React10.createElement(Box10, { key: s.cmd, flexDirection: "row" }, /* @__PURE__ */ React10.createElement(Text10, { color: isActive ? "cyan" : "gray" }, isActive ? "\u276F " : " "), /* @__PURE__ */ React10.createElement(Text10, { color: isActive ? "yellow" : "gray", bold: isActive }, cmdText), /* @__PURE__ */ React10.createElement(Text10, { color: "gray", dimColor: true, italic: true }, s.desc));
5126
+ return /* @__PURE__ */ React10.createElement(Box10, { key: s.cmd, flexDirection: "row" }, /* @__PURE__ */ React10.createElement(Text10, { color: isActive ? "cyan" : "gray" }, isActive ? "\u276F " : " "), /* @__PURE__ */ React10.createElement(
5127
+ Text10,
5128
+ {
5129
+ color: isGemmaDisabled ? "gray" : isActive ? "yellow" : "gray",
5130
+ bold: isActive,
5131
+ dimColor: isGemmaDisabled
5132
+ },
5133
+ cmdText
5134
+ ), /* @__PURE__ */ React10.createElement(Text10, { color: "gray", dimColor: true, italic: true }, s.desc));
5099
5135
  }),
5100
5136
  suggestions.length > 5 && /* @__PURE__ */ React10.createElement(Box10, { height: 1 }, remaining > 0 && /* @__PURE__ */ React10.createElement(Text10, { color: "gray", dimColor: true }, " ...(", remaining, "more)"))
5101
5137
  );
@@ -5126,7 +5162,7 @@ var init_app = __esm({
5126
5162
  init_text();
5127
5163
  SESSION_START_TIME = Date.now();
5128
5164
  CHANGELOG_URL = "https://fluxflow-cli.onrender.com/changelog.html";
5129
- versionFluxflow = "1.8.14";
5165
+ versionFluxflow = "1.8.15";
5130
5166
  updatedOn = "2026-05-09";
5131
5167
  ResolutionModal = ({ data, onResolve, onEdit }) => /* @__PURE__ */ React10.createElement(Box10, { flexDirection: "column", borderStyle: "round", borderColor: "magenta", paddingX: 2, paddingY: 1, width: "100%" }, /* @__PURE__ */ React10.createElement(Text10, { color: "magenta", bold: true, underline: true }, "\u{1F7E3} STEERING HINT RESOLUTION"), /* @__PURE__ */ React10.createElement(Text10, { marginTop: 1 }, "The agent already finished the task before your hint was consumed."), /* @__PURE__ */ React10.createElement(Box10, { marginTop: 1, backgroundColor: "#222", paddingX: 1, width: "100%" }, /* @__PURE__ */ React10.createElement(Text10, { italic: true, color: "gray" }, '"', data, '"')), /* @__PURE__ */ React10.createElement(Box10, { marginTop: 1 }, /* @__PURE__ */ React10.createElement(Text10, { color: "cyan" }, "How would you like to proceed?")), /* @__PURE__ */ React10.createElement(Box10, { marginTop: 1 }, /* @__PURE__ */ React10.createElement(
5132
5168
  CommandMenu,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fluxflow-cli",
3
- "version": "1.8.14",
3
+ "version": "1.8.15",
4
4
  "description": "A high-fidelity agentic terminal assistant for the Flux Era.",
5
5
  "keywords": [
6
6
  "ai",