opencode-visual-cache 1.6.0 → 1.6.1

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/tui.js CHANGED
@@ -13,7 +13,7 @@ import { createElement as _$createElement } from "@opentui/solid";
13
13
  import { createMemo, createSignal, createEffect, onMount, onCleanup, Show, untrack } from "solid-js";
14
14
 
15
15
  // src/_version.ts
16
- var PLUGIN_VERSION = "1.6.0";
16
+ var PLUGIN_VERSION = "1.6.1";
17
17
 
18
18
  // src/balance-providers.ts
19
19
  var BalanceError = class extends Error {
@@ -140,11 +140,11 @@ var ZH_T = {
140
140
  distTitle: "\u4F30\u7B97 Token \u5206\u5E03",
141
141
  distSys: "\u7CFB\u7EDF\u63D0\u793A:",
142
142
  distUser: "\u7528\u6237:",
143
- distAgent: "Agent \u6307\u4EE4:",
143
+ distAgent: "\u5B50\u4EE3\u7406\u6307\u4EE4:",
144
144
  distTool: "Tool \u8C03\u7528:",
145
145
  distRes: "Tool \u7ED3\u679C:",
146
- distTotal: "\u603B\u8BA1:",
147
- distOut: "\u8F93\u51FA:",
146
+ distReason: "\u63A8\u7406:",
147
+ stepsCount: "\u672C\u56DE\u5408 {n} \u6B21\u8C03\u7528:",
148
148
  secDetail: "\u660E\u7EC6",
149
149
  secModel: "\u6A21\u578B",
150
150
  secSkills: "\u5DF2\u52A0\u8F7D\u6280\u80FD",
@@ -221,11 +221,11 @@ var EN_T = {
221
221
  distTitle: "Estimated Token Dist.",
222
222
  distSys: "System:",
223
223
  distUser: "User:",
224
- distAgent: "Agent Instr:",
224
+ distAgent: "Sub-Agent Instr:",
225
225
  distTool: "Tool Call:",
226
226
  distRes: "Tool Result:",
227
- distTotal: "Total:",
228
- distOut: "Output:",
227
+ distReason: "Reasoning:",
228
+ stepsCount: "Turn #{n} calls:",
229
229
  secDetail: "Detail",
230
230
  secModel: "Model",
231
231
  secSkills: "Loaded Skills",
@@ -302,11 +302,11 @@ var JA_T = {
302
302
  distTitle: "Token \u5206\u5E03\uFF08\u63A8\u5B9A\uFF09",
303
303
  distSys: "\u30B7\u30B9\u30C6\u30E0:",
304
304
  distUser: "\u30E6\u30FC\u30B6\u30FC:",
305
- distAgent: "Agent \u6307\u793A:",
305
+ distAgent: "\u30B5\u30D6\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u6307\u793A:",
306
306
  distTool: "Tool \u547C\u3073\u51FA\u3057:",
307
307
  distRes: "Tool \u7D50\u679C:",
308
- distTotal: "\u5408\u8A08:",
309
- distOut: "\u51FA\u529B:",
308
+ distReason: "\u63A8\u8AD6:",
309
+ stepsCount: "\u4ECA\u56DE {n} \u56DE\u547C\u51FA:",
310
310
  secDetail: "\u660E\u7D30",
311
311
  secModel: "\u30E2\u30C7\u30EB",
312
312
  secSkills: "\u8AAD\u307F\u8FBC\u307F\u6E08\u307F\u30B9\u30AD\u30EB",
@@ -383,11 +383,11 @@ var KO_T = {
383
383
  distTitle: "Token \uBD84\uD3EC(\uCD94\uC815)",
384
384
  distSys: "\uC2DC\uC2A4\uD15C:",
385
385
  distUser: "\uC0AC\uC6A9\uC790:",
386
- distAgent: "Agent \uC9C0\uC2DC:",
386
+ distAgent: "\uC11C\uBE0C \uC5D0\uC774\uC804\uD2B8 \uC9C0\uC2DC:",
387
387
  distTool: "Tool \uD638\uCD9C:",
388
388
  distRes: "Tool \uACB0\uACFC:",
389
- distTotal: "\uD569\uACC4:",
390
- distOut: "\uCD9C\uB825:",
389
+ distReason: "\uCD94\uB860:",
390
+ stepsCount: "\uC774\uBC88 \uD134 {n}\uD68C \uD638\uCD9C:",
391
391
  secDetail: "\uC0C1\uC138",
392
392
  secModel: "\uBAA8\uB378",
393
393
  secSkills: "\uB85C\uB4DC\uB41C \uC2A4\uD0AC",
@@ -744,9 +744,11 @@ function TokenCachePanel(props) {
744
744
  toolCall: 0,
745
745
  toolResult: 0,
746
746
  output: 0,
747
+ reasoning: 0,
747
748
  apiOutput: 0,
748
749
  apiInput: 0,
749
- stepCost: 0
750
+ stepCost: 0,
751
+ stepCount: 0
750
752
  });
751
753
  const [lastHasDist, setLastHasDist] = createSignal(false);
752
754
  const [dataSignal, setDataSignal] = createSignal({
@@ -774,9 +776,11 @@ function TokenCachePanel(props) {
774
776
  toolCall: 0,
775
777
  toolResult: 0,
776
778
  output: 0,
779
+ reasoning: 0,
777
780
  apiOutput: 0,
778
781
  apiInput: 0,
779
- stepCost: 0
782
+ stepCost: 0,
783
+ stepCount: 0
780
784
  },
781
785
  hasDistData: false,
782
786
  skills: [],
@@ -890,9 +894,11 @@ function TokenCachePanel(props) {
890
894
  toolCall: 0,
891
895
  toolResult: 0,
892
896
  output: 0,
897
+ reasoning: 0,
893
898
  apiOutput: 0,
894
899
  apiInput: 0,
895
- stepCost: 0
900
+ stepCost: 0,
901
+ stepCount: 0
896
902
  };
897
903
  let hasDistData = false;
898
904
  const loadedSkills = /* @__PURE__ */ new Map();
@@ -923,6 +929,7 @@ function TokenCachePanel(props) {
923
929
  } else if (msg.role === "assistant") {
924
930
  const am = msg;
925
931
  dist.output += num(am.tokens?.output);
932
+ dist.reasoning += num(am.tokens?.reasoning);
926
933
  let parts = [];
927
934
  try {
928
935
  parts = props.api.state.part(msg.id);
@@ -937,6 +944,12 @@ function TokenCachePanel(props) {
937
944
  } catch {
938
945
  }
939
946
  if (rawInput) dist.toolCall += estimateTokens(rawInput);
947
+ if (tp.tool === "task" && tp.state?.input) {
948
+ const ti = tp.state.input;
949
+ const prompt = typeof ti.prompt === "string" ? ti.prompt : "";
950
+ const desc = typeof ti.description === "string" ? ti.description : "";
951
+ dist.agent += estimateTokens(prompt || desc);
952
+ }
940
953
  if (tp.state.status === "completed") {
941
954
  const c = tp.state;
942
955
  if (c.output) dist.toolResult += estimateTokens(c.output);
@@ -961,8 +974,7 @@ function TokenCachePanel(props) {
961
974
  }
962
975
  }
963
976
  }
964
- } else if (p.type === "reasoning") dist.agent += estimateTokens(p.text);
965
- else if (p.type === "subtask") {
977
+ } else if (p.type === "subtask") {
966
978
  const sub = p;
967
979
  dist.agent += estimateTokens(sub.prompt || sub.description || "");
968
980
  }
@@ -979,7 +991,28 @@ function TokenCachePanel(props) {
979
991
  }
980
992
  dist.apiInput = num(lastAssMsg?.tokens?.input) + num(lastAssMsg?.tokens?.cache?.read) + num(lastAssMsg?.tokens?.cache?.write);
981
993
  dist.apiOutput = num(lastAssMsg?.tokens?.output);
982
- hasDistData = dist.system + dist.user + dist.agent + dist.toolCall + dist.toolResult > 0 || dist.apiOutput > 0 || dist.apiInput > 0;
994
+ if (lastAssMsg) {
995
+ const roundParent = lastAssMsg.parentID;
996
+ let lastCost;
997
+ for (let i = msgs.length - 1; i >= 0; i--) {
998
+ const m = msgs[i];
999
+ if (m.role !== "assistant") continue;
1000
+ if (m.parentID !== roundParent) break;
1001
+ let parts = [];
1002
+ try {
1003
+ parts = props.api.state.part(m.id);
1004
+ } catch {
1005
+ }
1006
+ for (const p of parts) {
1007
+ if (p.type !== "step-finish") continue;
1008
+ dist.stepCount++;
1009
+ const sc = p.cost;
1010
+ if (lastCost === void 0 && typeof sc === "number" && Number.isFinite(sc)) lastCost = sc;
1011
+ }
1012
+ }
1013
+ if (lastCost !== void 0) dist.stepCost = lastCost;
1014
+ }
1015
+ hasDistData = dist.system + dist.user + dist.agent + dist.toolCall + dist.toolResult > 0 || dist.apiOutput > 0 || dist.apiInput > 0 || dist.reasoning > 0;
983
1016
  } catch {
984
1017
  }
985
1018
  const finalDist = hasDistData ? dist : lastDist(), finalHasDist = hasDistData || lastHasDist();
@@ -1298,25 +1331,25 @@ function TokenCachePanel(props) {
1298
1331
  const prefix = " \u21B3 " + t("subPrefix");
1299
1332
  const maxSidW = Math.max(6, panelWidth() - visualWidth(prefix));
1300
1333
  return (() => {
1301
- var _el$69 = _$createElement("text"), _el$70 = _$createElement("span"), _el$71 = _$createElement("span");
1302
- _$insertNode(_el$69, _el$70);
1303
- _$insertNode(_el$69, _el$71);
1304
- _$insert(_el$70, prefix);
1305
- _$insert(_el$71, () => truncateVisual(props.signals.overrideSessionId(), maxSidW));
1334
+ var _el$70 = _$createElement("text"), _el$71 = _$createElement("span"), _el$72 = _$createElement("span");
1335
+ _$insertNode(_el$70, _el$71);
1336
+ _$insertNode(_el$70, _el$72);
1337
+ _$insert(_el$71, prefix);
1338
+ _$insert(_el$72, () => truncateVisual(props.signals.overrideSessionId(), maxSidW));
1306
1339
  _$effect((_p$) => {
1307
1340
  var _v$17 = {
1308
1341
  fg: pal().muted
1309
1342
  }, _v$18 = {
1310
1343
  fg: pal().text
1311
1344
  };
1312
- _v$17 !== _p$.e && (_p$.e = _$setProp(_el$70, "style", _v$17, _p$.e));
1313
- _v$18 !== _p$.t && (_p$.t = _$setProp(_el$71, "style", _v$18, _p$.t));
1345
+ _v$17 !== _p$.e && (_p$.e = _$setProp(_el$71, "style", _v$17, _p$.e));
1346
+ _v$18 !== _p$.t && (_p$.t = _$setProp(_el$72, "style", _v$18, _p$.t));
1314
1347
  return _p$;
1315
1348
  }, {
1316
1349
  e: void 0,
1317
1350
  t: void 0
1318
1351
  });
1319
- return _el$69;
1352
+ return _el$70;
1320
1353
  })();
1321
1354
  })();
1322
1355
  }
@@ -1326,30 +1359,30 @@ function TokenCachePanel(props) {
1326
1359
  },
1327
1360
  get fallback() {
1328
1361
  return [(() => {
1329
- var _el$72 = _$createElement("text");
1330
- _$insert(_el$72, sep);
1331
- _$effect((_$p) => _$setProp(_el$72, "fg", pal().muted, _$p));
1332
- return _el$72;
1362
+ var _el$73 = _$createElement("text");
1363
+ _$insert(_el$73, sep);
1364
+ _$effect((_$p) => _$setProp(_el$73, "fg", pal().muted, _$p));
1365
+ return _el$73;
1333
1366
  })(), (() => {
1334
- var _el$73 = _$createElement("text"), _el$74 = _$createElement("span"), _el$76 = _$createElement("span");
1335
- _$insertNode(_el$73, _el$74);
1336
- _$insertNode(_el$73, _el$76);
1337
- _$insertNode(_el$74, _$createTextNode(`> `));
1338
- _$insert(_el$76, () => t("noData"));
1367
+ var _el$74 = _$createElement("text"), _el$75 = _$createElement("span"), _el$77 = _$createElement("span");
1368
+ _$insertNode(_el$74, _el$75);
1369
+ _$insertNode(_el$74, _el$77);
1370
+ _$insertNode(_el$75, _$createTextNode(`> `));
1371
+ _$insert(_el$77, () => t("noData"));
1339
1372
  _$effect((_p$) => {
1340
1373
  var _v$19 = {
1341
1374
  fg: pal().muted
1342
1375
  }, _v$20 = {
1343
1376
  fg: pal().muted
1344
1377
  };
1345
- _v$19 !== _p$.e && (_p$.e = _$setProp(_el$74, "style", _v$19, _p$.e));
1346
- _v$20 !== _p$.t && (_p$.t = _$setProp(_el$76, "style", _v$20, _p$.t));
1378
+ _v$19 !== _p$.e && (_p$.e = _$setProp(_el$75, "style", _v$19, _p$.e));
1379
+ _v$20 !== _p$.t && (_p$.t = _$setProp(_el$77, "style", _v$20, _p$.t));
1347
1380
  return _p$;
1348
1381
  }, {
1349
1382
  e: void 0,
1350
1383
  t: void 0
1351
1384
  });
1352
- return _el$73;
1385
+ return _el$74;
1353
1386
  })()];
1354
1387
  },
1355
1388
  get children() {
@@ -1479,32 +1512,44 @@ function TokenCachePanel(props) {
1479
1512
  _$effect((_$p) => _$setProp(_el$33, "fg", pal().muted, _$p));
1480
1513
  return _el$33;
1481
1514
  })(), _$createComponent(Show, {
1515
+ get when() {
1516
+ return data().dist.stepCount >= 2;
1517
+ },
1518
+ get children() {
1519
+ var _el$34 = _$createElement("text");
1520
+ _$insert(_el$34, () => justify(t("stepsCount", {
1521
+ n: data().dist.stepCount
1522
+ }), fmtCost(data().dist.stepCost, currencySymbol(), exchangeRate())));
1523
+ _$effect((_$p) => _$setProp(_el$34, "fg", pal().muted, _$p));
1524
+ return _el$34;
1525
+ }
1526
+ }), _$createComponent(Show, {
1482
1527
  get when() {
1483
1528
  return data().saved > 0;
1484
1529
  },
1485
1530
  get children() {
1486
- var _el$34 = _$createElement("text"), _el$35 = _$createElement("span"), _el$36 = _$createElement("span"), _el$37 = _$createElement("span"), _el$38 = _$createTextNode(`~`);
1487
- _$insertNode(_el$34, _el$35);
1488
- _$insertNode(_el$34, _el$36);
1489
- _$insertNode(_el$34, _el$37);
1490
- _$insert(_el$35, () => t("saved"));
1491
- _$insert(_el$36, () => " ".repeat(Math.max(1, panelWidth() - gutter() - visualWidth(t("saved")) - visualWidth("~" + fmtCost(data().saved, currencySymbol(), exchangeRate())))));
1492
- _$insertNode(_el$37, _el$38);
1493
- _$insert(_el$37, () => fmtCost(data().saved, currencySymbol(), exchangeRate()), null);
1531
+ var _el$35 = _$createElement("text"), _el$36 = _$createElement("span"), _el$37 = _$createElement("span"), _el$38 = _$createElement("span"), _el$39 = _$createTextNode(`~`);
1532
+ _$insertNode(_el$35, _el$36);
1533
+ _$insertNode(_el$35, _el$37);
1534
+ _$insertNode(_el$35, _el$38);
1535
+ _$insert(_el$36, () => t("saved"));
1536
+ _$insert(_el$37, () => " ".repeat(Math.max(1, panelWidth() - gutter() - visualWidth(t("saved")) - visualWidth("~" + fmtCost(data().saved, currencySymbol(), exchangeRate())))));
1537
+ _$insertNode(_el$38, _el$39);
1538
+ _$insert(_el$38, () => fmtCost(data().saved, currencySymbol(), exchangeRate()), null);
1494
1539
  _$effect((_p$) => {
1495
1540
  var _v$7 = {
1496
1541
  fg: pal().muted
1497
1542
  }, _v$8 = {
1498
1543
  fg: pal().success
1499
1544
  };
1500
- _v$7 !== _p$.e && (_p$.e = _$setProp(_el$35, "style", _v$7, _p$.e));
1501
- _v$8 !== _p$.t && (_p$.t = _$setProp(_el$37, "style", _v$8, _p$.t));
1545
+ _v$7 !== _p$.e && (_p$.e = _$setProp(_el$36, "style", _v$7, _p$.e));
1546
+ _v$8 !== _p$.t && (_p$.t = _$setProp(_el$38, "style", _v$8, _p$.t));
1502
1547
  return _p$;
1503
1548
  }, {
1504
1549
  e: void 0,
1505
1550
  t: void 0
1506
1551
  });
1507
- return _el$34;
1552
+ return _el$35;
1508
1553
  }
1509
1554
  })];
1510
1555
  }
@@ -1516,19 +1561,19 @@ function TokenCachePanel(props) {
1516
1561
  },
1517
1562
  get children() {
1518
1563
  return [_$memo(() => (() => {
1519
- var _el$77 = _$createElement("text"), _el$78 = _$createElement("span"), _el$79 = _$createElement("span"), _el$80 = _$createElement("b"), _el$81 = _$createElement("span");
1520
- _$insertNode(_el$77, _el$78);
1521
- _$insertNode(_el$77, _el$79);
1522
- _$insertNode(_el$77, _el$81);
1523
- _$setProp(_el$77, "onMouseUp", () => setModelOpen((o) => {
1564
+ var _el$78 = _$createElement("text"), _el$79 = _$createElement("span"), _el$80 = _$createElement("span"), _el$81 = _$createElement("b"), _el$82 = _$createElement("span");
1565
+ _$insertNode(_el$78, _el$79);
1566
+ _$insertNode(_el$78, _el$80);
1567
+ _$insertNode(_el$78, _el$82);
1568
+ _$setProp(_el$78, "onMouseUp", () => setModelOpen((o) => {
1524
1569
  const n = !o;
1525
1570
  persistFold("model", n);
1526
1571
  return n;
1527
1572
  }));
1528
- _$insert(_el$78, () => modelOpen() ? "\u25BC " : "\u25B6 ");
1529
- _$insertNode(_el$79, _el$80);
1530
- _$insert(_el$80, () => t("secModel"));
1531
- _$insert(_el$81, () => sep().slice(visualWidth((modelOpen() ? "\u25BC " : "\u25B6 ") + t("secModel"))));
1573
+ _$insert(_el$79, () => modelOpen() ? "\u25BC " : "\u25B6 ");
1574
+ _$insertNode(_el$80, _el$81);
1575
+ _$insert(_el$81, () => t("secModel"));
1576
+ _$insert(_el$82, () => sep().slice(visualWidth((modelOpen() ? "\u25BC " : "\u25B6 ") + t("secModel"))));
1532
1577
  _$effect((_p$) => {
1533
1578
  var _v$21 = {
1534
1579
  fg: pal().muted
@@ -1537,70 +1582,70 @@ function TokenCachePanel(props) {
1537
1582
  }, _v$23 = {
1538
1583
  fg: pal().muted
1539
1584
  };
1540
- _v$21 !== _p$.e && (_p$.e = _$setProp(_el$78, "style", _v$21, _p$.e));
1541
- _v$22 !== _p$.t && (_p$.t = _$setProp(_el$79, "style", _v$22, _p$.t));
1542
- _v$23 !== _p$.a && (_p$.a = _$setProp(_el$81, "style", _v$23, _p$.a));
1585
+ _v$21 !== _p$.e && (_p$.e = _$setProp(_el$79, "style", _v$21, _p$.e));
1586
+ _v$22 !== _p$.t && (_p$.t = _$setProp(_el$80, "style", _v$22, _p$.t));
1587
+ _v$23 !== _p$.a && (_p$.a = _$setProp(_el$82, "style", _v$23, _p$.a));
1543
1588
  return _p$;
1544
1589
  }, {
1545
1590
  e: void 0,
1546
1591
  t: void 0,
1547
1592
  a: void 0
1548
1593
  });
1549
- return _el$77;
1594
+ return _el$78;
1550
1595
  })()), _$createComponent(Show, {
1551
1596
  get when() {
1552
1597
  return modelOpen();
1553
1598
  },
1554
1599
  get children() {
1555
1600
  return [(() => {
1556
- var _el$39 = _$createElement("text");
1557
- _$insert(_el$39, () => justify(t("cost"), fmtCost(data().cost, currencySymbol(), exchangeRate())));
1558
- _$effect((_$p) => _$setProp(_el$39, "fg", pal().text, _$p));
1559
- return _el$39;
1601
+ var _el$40 = _$createElement("text");
1602
+ _$insert(_el$40, () => justify(t("cost"), fmtCost(data().cost, currencySymbol(), exchangeRate())));
1603
+ _$effect((_$p) => _$setProp(_el$40, "fg", pal().text, _$p));
1604
+ return _el$40;
1560
1605
  })(), _$createComponent(Show, {
1561
1606
  get when() {
1562
1607
  return data().providerName;
1563
1608
  },
1564
1609
  get children() {
1565
- var _el$40 = _$createElement("text");
1566
- _$insert(_el$40, () => justify(t("provider"), data().providerName));
1567
- _$effect((_$p) => _$setProp(_el$40, "fg", pal().muted, _$p));
1568
- return _el$40;
1610
+ var _el$41 = _$createElement("text");
1611
+ _$insert(_el$41, () => justify(t("provider"), data().providerName));
1612
+ _$effect((_$p) => _$setProp(_el$41, "fg", pal().muted, _$p));
1613
+ return _el$41;
1569
1614
  }
1570
1615
  }), (() => {
1571
- var _el$41 = _$createElement("text");
1572
- _$insert(_el$41, () => justify(t("model"), data().model));
1573
- _$effect((_$p) => _$setProp(_el$41, "fg", pal().muted, _$p));
1574
- return _el$41;
1616
+ var _el$42 = _$createElement("text");
1617
+ _$insert(_el$42, () => justify(t("model"), data().model));
1618
+ _$effect((_$p) => _$setProp(_el$42, "fg", pal().muted, _$p));
1619
+ return _el$42;
1575
1620
  })(), _$createComponent(Show, {
1576
1621
  get when() {
1577
1622
  return data().hasPricing;
1578
1623
  },
1579
1624
  get children() {
1580
1625
  return [(() => {
1581
- var _el$42 = _$createElement("text");
1582
- _$insert(_el$42, () => justify(t("rate"), currencySymbol() + (data().inputRate * exchangeRate()).toFixed(2) + "/M " + t("inputRate")));
1583
- _$effect((_$p) => _$setProp(_el$42, "fg", pal().muted, _$p));
1584
- return _el$42;
1626
+ var _el$43 = _$createElement("text");
1627
+ _$insert(_el$43, () => justify(t("rate"), currencySymbol() + (data().inputRate * exchangeRate()).toFixed(2) + "/M " + t("inputRate")));
1628
+ _$effect((_$p) => _$setProp(_el$43, "fg", pal().muted, _$p));
1629
+ return _el$43;
1585
1630
  })(), _$createComponent(Show, {
1586
1631
  get when() {
1587
1632
  return data().cacheReadRate > 0;
1588
1633
  },
1589
1634
  get children() {
1590
- var _el$43 = _$createElement("text");
1591
- _$insert(_el$43, () => justify("", currencySymbol() + (data().cacheReadRate * exchangeRate()).toFixed(2) + "/M " + t("cacheRate")));
1592
- _$effect((_$p) => _$setProp(_el$43, "fg", pal().muted, _$p));
1593
- return _el$43;
1635
+ var _el$44 = _$createElement("text");
1636
+ _$insert(_el$44, () => justify("", currencySymbol() + (data().cacheReadRate * exchangeRate()).toFixed(2) + "/M " + t("cacheRate")));
1637
+ _$effect((_$p) => _$setProp(_el$44, "fg", pal().muted, _$p));
1638
+ return _el$44;
1594
1639
  }
1595
1640
  }), _$createComponent(Show, {
1596
1641
  get when() {
1597
1642
  return data().cacheWriteRate > 0;
1598
1643
  },
1599
1644
  get children() {
1600
- var _el$44 = _$createElement("text");
1601
- _$insert(_el$44, () => justify("", currencySymbol() + (data().cacheWriteRate * exchangeRate()).toFixed(2) + "/M " + t("writeRate")));
1602
- _$effect((_$p) => _$setProp(_el$44, "fg", pal().muted, _$p));
1603
- return _el$44;
1645
+ var _el$45 = _$createElement("text");
1646
+ _$insert(_el$45, () => justify("", currencySymbol() + (data().cacheWriteRate * exchangeRate()).toFixed(2) + "/M " + t("writeRate")));
1647
+ _$effect((_$p) => _$setProp(_el$45, "fg", pal().muted, _$p));
1648
+ return _el$45;
1604
1649
  }
1605
1650
  })];
1606
1651
  }
@@ -1619,19 +1664,19 @@ function TokenCachePanel(props) {
1619
1664
  },
1620
1665
  get children() {
1621
1666
  return [_$memo(() => (() => {
1622
- var _el$82 = _$createElement("text"), _el$83 = _$createElement("span"), _el$84 = _$createElement("span"), _el$85 = _$createElement("b"), _el$86 = _$createElement("span");
1623
- _$insertNode(_el$82, _el$83);
1624
- _$insertNode(_el$82, _el$84);
1625
- _$insertNode(_el$82, _el$86);
1626
- _$setProp(_el$82, "onMouseUp", () => setDistOpen((o) => {
1667
+ var _el$83 = _$createElement("text"), _el$84 = _$createElement("span"), _el$85 = _$createElement("span"), _el$86 = _$createElement("b"), _el$87 = _$createElement("span");
1668
+ _$insertNode(_el$83, _el$84);
1669
+ _$insertNode(_el$83, _el$85);
1670
+ _$insertNode(_el$83, _el$87);
1671
+ _$setProp(_el$83, "onMouseUp", () => setDistOpen((o) => {
1627
1672
  const n = !o;
1628
1673
  persistFold("dist", n);
1629
1674
  return n;
1630
1675
  }));
1631
- _$insert(_el$83, () => distOpen() ? "\u25BC " : "\u25B6 ");
1632
- _$insertNode(_el$84, _el$85);
1633
- _$insert(_el$85, () => t("distTitle"));
1634
- _$insert(_el$86, () => sep().slice(visualWidth((distOpen() ? "\u25BC " : "\u25B6 ") + t("distTitle"))));
1676
+ _$insert(_el$84, () => distOpen() ? "\u25BC " : "\u25B6 ");
1677
+ _$insertNode(_el$85, _el$86);
1678
+ _$insert(_el$86, () => t("distTitle"));
1679
+ _$insert(_el$87, () => sep().slice(visualWidth((distOpen() ? "\u25BC " : "\u25B6 ") + t("distTitle"))));
1635
1680
  _$effect((_p$) => {
1636
1681
  var _v$24 = {
1637
1682
  fg: pal().muted
@@ -1640,16 +1685,16 @@ function TokenCachePanel(props) {
1640
1685
  }, _v$26 = {
1641
1686
  fg: pal().muted
1642
1687
  };
1643
- _v$24 !== _p$.e && (_p$.e = _$setProp(_el$83, "style", _v$24, _p$.e));
1644
- _v$25 !== _p$.t && (_p$.t = _$setProp(_el$84, "style", _v$25, _p$.t));
1645
- _v$26 !== _p$.a && (_p$.a = _$setProp(_el$86, "style", _v$26, _p$.a));
1688
+ _v$24 !== _p$.e && (_p$.e = _$setProp(_el$84, "style", _v$24, _p$.e));
1689
+ _v$25 !== _p$.t && (_p$.t = _$setProp(_el$85, "style", _v$25, _p$.t));
1690
+ _v$26 !== _p$.a && (_p$.a = _$setProp(_el$87, "style", _v$26, _p$.a));
1646
1691
  return _p$;
1647
1692
  }, {
1648
1693
  e: void 0,
1649
1694
  t: void 0,
1650
1695
  a: void 0
1651
1696
  });
1652
- return _el$82;
1697
+ return _el$83;
1653
1698
  })()), _$createComponent(Show, {
1654
1699
  get when() {
1655
1700
  return distOpen();
@@ -1659,58 +1704,63 @@ function TokenCachePanel(props) {
1659
1704
  get when() {
1660
1705
  return data().dist.system > 0;
1661
1706
  },
1662
- get children() {
1663
- var _el$45 = _$createElement("text");
1664
- _$insert(_el$45, () => justify(t("distSys"), fmt(data().dist.system), t("tok")));
1665
- _$effect((_$p) => _$setProp(_el$45, "fg", pal().muted, _$p));
1666
- return _el$45;
1667
- }
1668
- }), _$createComponent(Show, {
1669
- get when() {
1670
- return data().dist.user > 0;
1671
- },
1672
1707
  get children() {
1673
1708
  var _el$46 = _$createElement("text");
1674
- _$insert(_el$46, () => justify(t("distUser"), fmt(data().dist.user), t("tok")));
1709
+ _$insert(_el$46, () => justify(t("distSys"), fmt(data().dist.system), t("tok")));
1675
1710
  _$effect((_$p) => _$setProp(_el$46, "fg", pal().muted, _$p));
1676
1711
  return _el$46;
1677
1712
  }
1678
1713
  }), _$createComponent(Show, {
1679
1714
  get when() {
1680
- return data().dist.agent > 0;
1715
+ return data().dist.user > 0;
1681
1716
  },
1682
1717
  get children() {
1683
1718
  var _el$47 = _$createElement("text");
1684
- _$insert(_el$47, () => justify(t("distAgent"), fmt(data().dist.agent), t("tok")));
1719
+ _$insert(_el$47, () => justify(t("distUser"), fmt(data().dist.user), t("tok")));
1685
1720
  _$effect((_$p) => _$setProp(_el$47, "fg", pal().muted, _$p));
1686
1721
  return _el$47;
1687
1722
  }
1688
1723
  }), _$createComponent(Show, {
1689
1724
  get when() {
1690
- return data().dist.toolCall > 0;
1725
+ return data().dist.agent > 0;
1691
1726
  },
1692
1727
  get children() {
1693
1728
  var _el$48 = _$createElement("text");
1694
- _$insert(_el$48, () => justify(t("distTool"), fmt(data().dist.toolCall), t("tok")));
1729
+ _$insert(_el$48, () => justify(t("distAgent"), fmt(data().dist.agent), t("tok")));
1695
1730
  _$effect((_$p) => _$setProp(_el$48, "fg", pal().muted, _$p));
1696
1731
  return _el$48;
1697
1732
  }
1698
1733
  }), _$createComponent(Show, {
1699
1734
  get when() {
1700
- return data().dist.toolResult > 0;
1735
+ return data().dist.toolCall > 0;
1701
1736
  },
1702
1737
  get children() {
1703
1738
  var _el$49 = _$createElement("text");
1704
- _$insert(_el$49, () => justify(t("distRes"), fmt(data().dist.toolResult), t("tok")));
1739
+ _$insert(_el$49, () => justify(t("distTool"), fmt(data().dist.toolCall), t("tok")));
1705
1740
  _$effect((_$p) => _$setProp(_el$49, "fg", pal().muted, _$p));
1706
1741
  return _el$49;
1707
1742
  }
1708
- }), (() => {
1709
- var _el$50 = _$createElement("text");
1710
- _$insert(_el$50, () => justify(t("distTotal"), fmt(data().dist.apiInput), t("tok")));
1711
- _$effect((_$p) => _$setProp(_el$50, "fg", pal().text, _$p));
1712
- return _el$50;
1713
- })()];
1743
+ }), _$createComponent(Show, {
1744
+ get when() {
1745
+ return data().dist.toolResult > 0;
1746
+ },
1747
+ get children() {
1748
+ var _el$50 = _$createElement("text");
1749
+ _$insert(_el$50, () => justify(t("distRes"), fmt(data().dist.toolResult), t("tok")));
1750
+ _$effect((_$p) => _$setProp(_el$50, "fg", pal().muted, _$p));
1751
+ return _el$50;
1752
+ }
1753
+ }), _$createComponent(Show, {
1754
+ get when() {
1755
+ return data().dist.reasoning > 0;
1756
+ },
1757
+ get children() {
1758
+ var _el$51 = _$createElement("text");
1759
+ _$insert(_el$51, () => justify(t("distReason"), fmt(data().dist.reasoning), t("tok")));
1760
+ _$effect((_$p) => _$setProp(_el$51, "fg", pal().muted, _$p));
1761
+ return _el$51;
1762
+ }
1763
+ })];
1714
1764
  }
1715
1765
  })];
1716
1766
  }
@@ -1727,23 +1777,23 @@ function TokenCachePanel(props) {
1727
1777
  },
1728
1778
  get children() {
1729
1779
  return [_$memo(() => (() => {
1730
- var _el$87 = _$createElement("text"), _el$88 = _$createElement("span"), _el$89 = _$createElement("span"), _el$90 = _$createElement("b"), _el$91 = _$createElement("span"), _el$92 = _$createTextNode(` (`), _el$93 = _$createTextNode(`)`), _el$94 = _$createElement("span");
1731
- _$insertNode(_el$87, _el$88);
1732
- _$insertNode(_el$87, _el$89);
1733
- _$insertNode(_el$87, _el$91);
1734
- _$insertNode(_el$87, _el$94);
1735
- _$setProp(_el$87, "onMouseUp", () => setSkillsOpen((o) => {
1780
+ var _el$88 = _$createElement("text"), _el$89 = _$createElement("span"), _el$90 = _$createElement("span"), _el$91 = _$createElement("b"), _el$92 = _$createElement("span"), _el$93 = _$createTextNode(` (`), _el$94 = _$createTextNode(`)`), _el$95 = _$createElement("span");
1781
+ _$insertNode(_el$88, _el$89);
1782
+ _$insertNode(_el$88, _el$90);
1783
+ _$insertNode(_el$88, _el$92);
1784
+ _$insertNode(_el$88, _el$95);
1785
+ _$setProp(_el$88, "onMouseUp", () => setSkillsOpen((o) => {
1736
1786
  const n = !o;
1737
1787
  persistFold("skills", n);
1738
1788
  return n;
1739
1789
  }));
1740
- _$insert(_el$88, () => skillsOpen() ? "\u25BC " : "\u25B6 ");
1741
- _$insertNode(_el$89, _el$90);
1742
- _$insert(_el$90, () => t("secSkills"));
1743
- _$insertNode(_el$91, _el$92);
1744
- _$insertNode(_el$91, _el$93);
1745
- _$insert(_el$91, () => data().skills.length, _el$93);
1746
- _$insert(_el$94, () => sep().slice(visualWidth((skillsOpen() ? "\u25BC " : "\u25B6 ") + t("secSkills") + ` (${data().skills.length})`)));
1790
+ _$insert(_el$89, () => skillsOpen() ? "\u25BC " : "\u25B6 ");
1791
+ _$insertNode(_el$90, _el$91);
1792
+ _$insert(_el$91, () => t("secSkills"));
1793
+ _$insertNode(_el$92, _el$93);
1794
+ _$insertNode(_el$92, _el$94);
1795
+ _$insert(_el$92, () => data().skills.length, _el$94);
1796
+ _$insert(_el$95, () => sep().slice(visualWidth((skillsOpen() ? "\u25BC " : "\u25B6 ") + t("secSkills") + ` (${data().skills.length})`)));
1747
1797
  _$effect((_p$) => {
1748
1798
  var _v$27 = {
1749
1799
  fg: pal().muted
@@ -1754,10 +1804,10 @@ function TokenCachePanel(props) {
1754
1804
  }, _v$30 = {
1755
1805
  fg: pal().muted
1756
1806
  };
1757
- _v$27 !== _p$.e && (_p$.e = _$setProp(_el$88, "style", _v$27, _p$.e));
1758
- _v$28 !== _p$.t && (_p$.t = _$setProp(_el$89, "style", _v$28, _p$.t));
1759
- _v$29 !== _p$.a && (_p$.a = _$setProp(_el$91, "style", _v$29, _p$.a));
1760
- _v$30 !== _p$.o && (_p$.o = _$setProp(_el$94, "style", _v$30, _p$.o));
1807
+ _v$27 !== _p$.e && (_p$.e = _$setProp(_el$89, "style", _v$27, _p$.e));
1808
+ _v$28 !== _p$.t && (_p$.t = _$setProp(_el$90, "style", _v$28, _p$.t));
1809
+ _v$29 !== _p$.a && (_p$.a = _$setProp(_el$92, "style", _v$29, _p$.a));
1810
+ _v$30 !== _p$.o && (_p$.o = _$setProp(_el$95, "style", _v$30, _p$.o));
1761
1811
  return _p$;
1762
1812
  }, {
1763
1813
  e: void 0,
@@ -1765,7 +1815,7 @@ function TokenCachePanel(props) {
1765
1815
  a: void 0,
1766
1816
  o: void 0
1767
1817
  });
1768
- return _el$87;
1818
+ return _el$88;
1769
1819
  })()), _$createComponent(Show, {
1770
1820
  get when() {
1771
1821
  return skillsOpen();
@@ -1776,10 +1826,10 @@ function TokenCachePanel(props) {
1776
1826
  const maxLabel = Math.max(4, panelWidth() - gutter() - rightW - 1);
1777
1827
  const label = truncateVisual(sk.name, maxLabel);
1778
1828
  return (() => {
1779
- var _el$95 = _$createElement("text");
1780
- _$insert(_el$95, () => justify(label, fmt(sk.tokens), t("tok")));
1781
- _$effect((_$p) => _$setProp(_el$95, "fg", pal().muted, _$p));
1782
- return _el$95;
1829
+ var _el$96 = _$createElement("text");
1830
+ _$insert(_el$96, () => justify(label, fmt(sk.tokens), t("tok")));
1831
+ _$effect((_$p) => _$setProp(_el$96, "fg", pal().muted, _$p));
1832
+ return _el$96;
1783
1833
  })();
1784
1834
  });
1785
1835
  }
@@ -1793,32 +1843,32 @@ function TokenCachePanel(props) {
1793
1843
  },
1794
1844
  get children() {
1795
1845
  return [(() => {
1796
- var _el$51 = _$createElement("text");
1797
- _$insert(_el$51, sep);
1798
- _$effect((_$p) => _$setProp(_el$51, "fg", pal().muted, _$p));
1799
- return _el$51;
1846
+ var _el$52 = _$createElement("text");
1847
+ _$insert(_el$52, sep);
1848
+ _$effect((_$p) => _$setProp(_el$52, "fg", pal().muted, _$p));
1849
+ return _el$52;
1800
1850
  })(), _$createComponent(Show, {
1801
1851
  get when() {
1802
1852
  return balanceUnsupported();
1803
1853
  },
1804
1854
  get children() {
1805
- var _el$52 = _$createElement("text"), _el$53 = _$createElement("span"), _el$55 = _$createElement("span");
1806
- _$insertNode(_el$52, _el$53);
1807
- _$insertNode(_el$52, _el$55);
1808
- _$insertNode(_el$53, _$createTextNode(`> `));
1809
- _$insert(_el$55, () => t("balUnsupported"));
1855
+ var _el$53 = _$createElement("text"), _el$54 = _$createElement("span"), _el$56 = _$createElement("span");
1856
+ _$insertNode(_el$53, _el$54);
1857
+ _$insertNode(_el$53, _el$56);
1858
+ _$insertNode(_el$54, _$createTextNode(`> `));
1859
+ _$insert(_el$56, () => t("balUnsupported"));
1810
1860
  _$effect((_p$) => {
1811
1861
  var _v$9 = pal().muted, _v$0 = {
1812
1862
  fg: pal().muted
1813
1863
  };
1814
- _v$9 !== _p$.e && (_p$.e = _$setProp(_el$52, "fg", _v$9, _p$.e));
1815
- _v$0 !== _p$.t && (_p$.t = _$setProp(_el$53, "style", _v$0, _p$.t));
1864
+ _v$9 !== _p$.e && (_p$.e = _$setProp(_el$53, "fg", _v$9, _p$.e));
1865
+ _v$0 !== _p$.t && (_p$.t = _$setProp(_el$54, "style", _v$0, _p$.t));
1816
1866
  return _p$;
1817
1867
  }, {
1818
1868
  e: void 0,
1819
1869
  t: void 0
1820
1870
  });
1821
- return _el$52;
1871
+ return _el$53;
1822
1872
  }
1823
1873
  }), _$createComponent(Show, {
1824
1874
  get when() {
@@ -1830,59 +1880,59 @@ function TokenCachePanel(props) {
1830
1880
  return balanceState().status === "idle";
1831
1881
  },
1832
1882
  get children() {
1833
- var _el$56 = _$createElement("text"), _el$57 = _$createElement("span"), _el$59 = _$createElement("span");
1834
- _$insertNode(_el$56, _el$57);
1835
- _$insertNode(_el$56, _el$59);
1836
- _$insertNode(_el$57, _$createTextNode(`> `));
1837
- _$insert(_el$59, () => t("balNoKey", {
1883
+ var _el$57 = _$createElement("text"), _el$58 = _$createElement("span"), _el$60 = _$createElement("span");
1884
+ _$insertNode(_el$57, _el$58);
1885
+ _$insertNode(_el$57, _el$60);
1886
+ _$insertNode(_el$58, _$createTextNode(`> `));
1887
+ _$insert(_el$60, () => t("balNoKey", {
1838
1888
  p: providerName()
1839
1889
  }));
1840
1890
  _$effect((_p$) => {
1841
1891
  var _v$1 = pal().muted, _v$10 = {
1842
1892
  fg: pal().muted
1843
1893
  };
1844
- _v$1 !== _p$.e && (_p$.e = _$setProp(_el$56, "fg", _v$1, _p$.e));
1845
- _v$10 !== _p$.t && (_p$.t = _$setProp(_el$57, "style", _v$10, _p$.t));
1894
+ _v$1 !== _p$.e && (_p$.e = _$setProp(_el$57, "fg", _v$1, _p$.e));
1895
+ _v$10 !== _p$.t && (_p$.t = _$setProp(_el$58, "style", _v$10, _p$.t));
1846
1896
  return _p$;
1847
1897
  }, {
1848
1898
  e: void 0,
1849
1899
  t: void 0
1850
1900
  });
1851
- return _el$56;
1901
+ return _el$57;
1852
1902
  }
1853
1903
  }), _$createComponent(Show, {
1854
1904
  get when() {
1855
1905
  return balanceState().status === "loading";
1856
1906
  },
1857
1907
  get children() {
1858
- var _el$60 = _$createElement("text"), _el$61 = _$createElement("span"), _el$63 = _$createElement("span");
1859
- _$insertNode(_el$60, _el$61);
1860
- _$insertNode(_el$60, _el$63);
1861
- _$insertNode(_el$61, _$createTextNode(`> `));
1862
- _$insert(_el$63, () => t("balLoading"));
1908
+ var _el$61 = _$createElement("text"), _el$62 = _$createElement("span"), _el$64 = _$createElement("span");
1909
+ _$insertNode(_el$61, _el$62);
1910
+ _$insertNode(_el$61, _el$64);
1911
+ _$insertNode(_el$62, _$createTextNode(`> `));
1912
+ _$insert(_el$64, () => t("balLoading"));
1863
1913
  _$effect((_p$) => {
1864
1914
  var _v$11 = pal().muted, _v$12 = {
1865
1915
  fg: pal().muted
1866
1916
  };
1867
- _v$11 !== _p$.e && (_p$.e = _$setProp(_el$60, "fg", _v$11, _p$.e));
1868
- _v$12 !== _p$.t && (_p$.t = _$setProp(_el$61, "style", _v$12, _p$.t));
1917
+ _v$11 !== _p$.e && (_p$.e = _$setProp(_el$61, "fg", _v$11, _p$.e));
1918
+ _v$12 !== _p$.t && (_p$.t = _$setProp(_el$62, "style", _v$12, _p$.t));
1869
1919
  return _p$;
1870
1920
  }, {
1871
1921
  e: void 0,
1872
1922
  t: void 0
1873
1923
  });
1874
- return _el$60;
1924
+ return _el$61;
1875
1925
  }
1876
1926
  }), _$createComponent(Show, {
1877
1927
  get when() {
1878
1928
  return balanceState().status === "error";
1879
1929
  },
1880
1930
  get children() {
1881
- var _el$64 = _$createElement("text"), _el$65 = _$createElement("span"), _el$67 = _$createElement("span");
1882
- _$insertNode(_el$64, _el$65);
1883
- _$insertNode(_el$64, _el$67);
1884
- _$insertNode(_el$65, _$createTextNode(`> `));
1885
- _$insert(_el$67, () => {
1931
+ var _el$65 = _$createElement("text"), _el$66 = _$createElement("span"), _el$68 = _$createElement("span");
1932
+ _$insertNode(_el$65, _el$66);
1933
+ _$insertNode(_el$65, _el$68);
1934
+ _$insertNode(_el$66, _$createTextNode(`> `));
1935
+ _$insert(_el$68, () => {
1886
1936
  const code = balanceState().error;
1887
1937
  if (code === "401") return t("balErr401");
1888
1938
  if (code === "403") return t("balErr403");
@@ -1894,24 +1944,24 @@ function TokenCachePanel(props) {
1894
1944
  var _v$13 = pal().error, _v$14 = {
1895
1945
  fg: pal().muted
1896
1946
  };
1897
- _v$13 !== _p$.e && (_p$.e = _$setProp(_el$64, "fg", _v$13, _p$.e));
1898
- _v$14 !== _p$.t && (_p$.t = _$setProp(_el$65, "style", _v$14, _p$.t));
1947
+ _v$13 !== _p$.e && (_p$.e = _$setProp(_el$65, "fg", _v$13, _p$.e));
1948
+ _v$14 !== _p$.t && (_p$.t = _$setProp(_el$66, "style", _v$14, _p$.t));
1899
1949
  return _p$;
1900
1950
  }, {
1901
1951
  e: void 0,
1902
1952
  t: void 0
1903
1953
  });
1904
- return _el$64;
1954
+ return _el$65;
1905
1955
  }
1906
1956
  }), _$createComponent(Show, {
1907
1957
  get when() {
1908
1958
  return _$memo(() => balanceState().status === "ok")() && balanceState().data;
1909
1959
  },
1910
1960
  get children() {
1911
- var _el$68 = _$createElement("text");
1912
- _$insert(_el$68, () => justify(t("balTotal"), formatBalanceText(balanceState().data, balanceCurrency(), exchangeRate())));
1913
- _$effect((_$p) => _$setProp(_el$68, "fg", pal().text, _$p));
1914
- return _el$68;
1961
+ var _el$69 = _$createElement("text");
1962
+ _$insert(_el$69, () => justify(t("balTotal"), formatBalanceText(balanceState().data, balanceCurrency(), exchangeRate())));
1963
+ _$effect((_$p) => _$setProp(_el$69, "fg", pal().text, _$p));
1964
+ return _el$69;
1915
1965
  }
1916
1966
  })];
1917
1967
  }
@@ -2066,76 +2116,76 @@ function BottomStatusBar(props) {
2066
2116
  },
2067
2117
  get fallback() {
2068
2118
  return (() => {
2069
- var _el$110 = _$createElement("text");
2070
- _$insert(_el$110, directory);
2071
- _$effect((_$p) => _$setProp(_el$110, "fg", pal().muted, _$p));
2072
- return _el$110;
2119
+ var _el$111 = _$createElement("text");
2120
+ _$insert(_el$111, directory);
2121
+ _$effect((_$p) => _$setProp(_el$111, "fg", pal().muted, _$p));
2122
+ return _el$111;
2073
2123
  })();
2074
2124
  },
2075
2125
  get children() {
2076
- var _el$96 = _$createElement("box"), _el$97 = _$createElement("text"), _el$98 = _$createElement("box"), _el$99 = _$createElement("text"), _el$100 = _$createElement("span"), _el$101 = _$createTextNode(` `), _el$102 = _$createElement("span"), _el$104 = _$createElement("span"), _el$105 = _$createElement("span"), _el$108 = _$createElement("text");
2077
- _$insertNode(_el$96, _el$97);
2078
- _$insertNode(_el$96, _el$98);
2079
- _$setProp(_el$96, "marginLeft", 1);
2080
- _$setProp(_el$96, "flexGrow", 1);
2081
- _$setProp(_el$96, "flexShrink", 0);
2082
- _$setProp(_el$96, "flexDirection", "row");
2083
- _$setProp(_el$96, "justifyContent", "space-between");
2084
- _$insert(_el$97, directory);
2085
- _$insertNode(_el$98, _el$99);
2086
- _$insertNode(_el$98, _el$108);
2087
- _$setProp(_el$98, "flexDirection", "row");
2126
+ var _el$97 = _$createElement("box"), _el$98 = _$createElement("text"), _el$99 = _$createElement("box"), _el$100 = _$createElement("text"), _el$101 = _$createElement("span"), _el$102 = _$createTextNode(` `), _el$103 = _$createElement("span"), _el$105 = _$createElement("span"), _el$106 = _$createElement("span"), _el$109 = _$createElement("text");
2127
+ _$insertNode(_el$97, _el$98);
2128
+ _$insertNode(_el$97, _el$99);
2129
+ _$setProp(_el$97, "marginLeft", 1);
2130
+ _$setProp(_el$97, "flexGrow", 1);
2131
+ _$setProp(_el$97, "flexShrink", 0);
2132
+ _$setProp(_el$97, "flexDirection", "row");
2133
+ _$setProp(_el$97, "justifyContent", "space-between");
2134
+ _$insert(_el$98, directory);
2088
2135
  _$insertNode(_el$99, _el$100);
2089
- _$insertNode(_el$99, _el$102);
2090
- _$insertNode(_el$99, _el$104);
2091
- _$insertNode(_el$99, _el$105);
2136
+ _$insertNode(_el$99, _el$109);
2137
+ _$setProp(_el$99, "flexDirection", "row");
2092
2138
  _$insertNode(_el$100, _el$101);
2093
- _$insert(_el$100, () => t("barHit"), _el$101);
2094
- _$insert(_el$102, (() => {
2139
+ _$insertNode(_el$100, _el$103);
2140
+ _$insertNode(_el$100, _el$105);
2141
+ _$insertNode(_el$100, _el$106);
2142
+ _$insertNode(_el$101, _el$102);
2143
+ _$insert(_el$101, () => t("barHit"), _el$102);
2144
+ _$insert(_el$103, (() => {
2095
2145
  var _c$ = _$memo(() => (stats()?.hitRate ?? -1) >= 0);
2096
2146
  return () => _c$() ? (Math.floor(stats().hitRate * 10) / 10).toFixed(1) + "%" : "--";
2097
2147
  })());
2098
- _$insert(_el$99, _$createComponent(Show, {
2148
+ _$insert(_el$100, _$createComponent(Show, {
2099
2149
  get when() {
2100
2150
  return trend() !== null;
2101
2151
  },
2102
2152
  get children() {
2103
- var _el$103 = _$createElement("span");
2104
- _$insert(_el$103, () => " " + (trend() > 0 ? "\u2191" : "\u2193") + Math.abs(trend()).toFixed(1) + "%");
2105
- _$effect((_$p) => _$setProp(_el$103, "style", {
2153
+ var _el$104 = _$createElement("span");
2154
+ _$insert(_el$104, () => " " + (trend() > 0 ? "\u2191" : "\u2193") + Math.abs(trend()).toFixed(1) + "%");
2155
+ _$effect((_$p) => _$setProp(_el$104, "style", {
2106
2156
  fg: trend() > 0 ? pal().success : pal().error
2107
2157
  }, _$p));
2108
- return _el$103;
2158
+ return _el$104;
2109
2159
  }
2110
- }), _el$104);
2111
- _$insert(_el$104, () => " \xB7 " + t("barTok") + " ");
2112
- _$insert(_el$105, (() => {
2160
+ }), _el$105);
2161
+ _$insert(_el$105, () => " \xB7 " + t("barTok") + " ");
2162
+ _$insert(_el$106, (() => {
2113
2163
  var _c$2 = _$memo(() => !!stats());
2114
2164
  return () => _c$2() ? fmtCompact(stats().input + stats().read + stats().write) : "--";
2115
2165
  })());
2116
- _$insert(_el$99, _$createComponent(Show, {
2166
+ _$insert(_el$100, _$createComponent(Show, {
2117
2167
  get when() {
2118
2168
  return !props.signals.balanceUnsupported();
2119
2169
  },
2120
2170
  get children() {
2121
2171
  return [(() => {
2122
- var _el$106 = _$createElement("span");
2123
- _$insert(_el$106, () => " \xB7 " + t("barBal") + " ");
2124
- _$effect((_$p) => _$setProp(_el$106, "style", {
2172
+ var _el$107 = _$createElement("span");
2173
+ _$insert(_el$107, () => " \xB7 " + t("barBal") + " ");
2174
+ _$effect((_$p) => _$setProp(_el$107, "style", {
2125
2175
  fg: pal().muted
2126
2176
  }, _$p));
2127
- return _el$106;
2177
+ return _el$107;
2128
2178
  })(), (() => {
2129
- var _el$107 = _$createElement("span");
2130
- _$insert(_el$107, balanceText);
2131
- _$effect((_$p) => _$setProp(_el$107, "style", {
2179
+ var _el$108 = _$createElement("span");
2180
+ _$insert(_el$108, balanceText);
2181
+ _$effect((_$p) => _$setProp(_el$108, "style", {
2132
2182
  fg: pal().text
2133
2183
  }, _$p));
2134
- return _el$107;
2184
+ return _el$108;
2135
2185
  })()];
2136
2186
  }
2137
2187
  }), null);
2138
- _$insertNode(_el$108, _$createTextNode(` \xB7 `));
2188
+ _$insertNode(_el$109, _$createTextNode(` \xB7 `));
2139
2189
  _$effect((_p$) => {
2140
2190
  var _v$31 = pal().muted, _v$32 = {
2141
2191
  fg: pal().muted
@@ -2146,12 +2196,12 @@ function BottomStatusBar(props) {
2146
2196
  }, _v$35 = {
2147
2197
  fg: pal().text
2148
2198
  }, _v$36 = pal().muted;
2149
- _v$31 !== _p$.e && (_p$.e = _$setProp(_el$97, "fg", _v$31, _p$.e));
2150
- _v$32 !== _p$.t && (_p$.t = _$setProp(_el$100, "style", _v$32, _p$.t));
2151
- _v$33 !== _p$.a && (_p$.a = _$setProp(_el$102, "style", _v$33, _p$.a));
2152
- _v$34 !== _p$.o && (_p$.o = _$setProp(_el$104, "style", _v$34, _p$.o));
2153
- _v$35 !== _p$.i && (_p$.i = _$setProp(_el$105, "style", _v$35, _p$.i));
2154
- _v$36 !== _p$.n && (_p$.n = _$setProp(_el$108, "fg", _v$36, _p$.n));
2199
+ _v$31 !== _p$.e && (_p$.e = _$setProp(_el$98, "fg", _v$31, _p$.e));
2200
+ _v$32 !== _p$.t && (_p$.t = _$setProp(_el$101, "style", _v$32, _p$.t));
2201
+ _v$33 !== _p$.a && (_p$.a = _$setProp(_el$103, "style", _v$33, _p$.a));
2202
+ _v$34 !== _p$.o && (_p$.o = _$setProp(_el$105, "style", _v$34, _p$.o));
2203
+ _v$35 !== _p$.i && (_p$.i = _$setProp(_el$106, "style", _v$35, _p$.i));
2204
+ _v$36 !== _p$.n && (_p$.n = _$setProp(_el$109, "fg", _v$36, _p$.n));
2155
2205
  return _p$;
2156
2206
  }, {
2157
2207
  e: void 0,
@@ -2161,7 +2211,7 @@ function BottomStatusBar(props) {
2161
2211
  i: void 0,
2162
2212
  n: void 0
2163
2213
  });
2164
- return _el$96;
2214
+ return _el$97;
2165
2215
  }
2166
2216
  });
2167
2217
  }
@@ -2391,11 +2441,11 @@ var tui = async (api) => {
2391
2441
  return provider.name;
2392
2442
  },
2393
2443
  description: () => (() => {
2394
- var _el$111 = _$createElement("text");
2395
- _$insert(_el$111, () => t("balKeyPrompt", {
2444
+ var _el$112 = _$createElement("text");
2445
+ _$insert(_el$112, () => t("balKeyPrompt", {
2396
2446
  p: provider.name
2397
2447
  }));
2398
- return _el$111;
2448
+ return _el$112;
2399
2449
  })(),
2400
2450
  get placeholder() {
2401
2451
  return provider.keyPlaceholder ?? "sk-...";
@@ -2475,9 +2525,9 @@ var tui = async (api) => {
2475
2525
  dialog?.replace(() => _$createComponent(api.ui.DialogPrompt, {
2476
2526
  title: "Exchange Rate",
2477
2527
  description: () => (() => {
2478
- var _el$112 = _$createElement("text");
2479
- _$insertNode(_el$112, _$createTextNode(`Enter the exchange rate from USD to your currency (e.g. 7.2 for CNY)`));
2480
- return _el$112;
2528
+ var _el$113 = _$createElement("text");
2529
+ _$insertNode(_el$113, _$createTextNode(`Enter the exchange rate from USD to your currency (e.g. 7.2 for CNY)`));
2530
+ return _el$113;
2481
2531
  })(),
2482
2532
  placeholder: "1.0",
2483
2533
  get value() {
@@ -2889,9 +2939,9 @@ var tui = async (api) => {
2889
2939
  return _$memo(() => !!signals.overrideSessionId())() ? t("subSwitchTitle") : t("subViewTitle");
2890
2940
  },
2891
2941
  description: () => (() => {
2892
- var _el$114 = _$createElement("text");
2893
- _$insert(_el$114, () => t("subNoFound"));
2894
- return _el$114;
2942
+ var _el$115 = _$createElement("text");
2943
+ _$insert(_el$115, () => t("subNoFound"));
2944
+ return _el$115;
2895
2945
  })(),
2896
2946
  placeholder: "ses_...",
2897
2947
  get value() {