@solongate/proxy 0.81.41 → 0.81.42

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/index.js CHANGED
@@ -7704,11 +7704,14 @@ function LivePanel({ active: active2 }) {
7704
7704
  return () => clearInterval(t);
7705
7705
  }, [active2, frozen]);
7706
7706
  const startRef = useRef2(Date.now());
7707
+ const lastNotifyAt = useRef2(0);
7707
7708
  const fireAlert = useCallback2(
7708
7709
  (id, title, msg, level = "warn") => {
7709
7710
  pushLog(`${level === "bad" ? "\u26D4" : "\u23F8"} ${msg}`, level);
7710
7711
  setAlerts((a) => [...a.filter((x) => x.id !== id), { id, msg, level, until: Date.now() + 15e3 }].slice(-4));
7711
7712
  if (!CONFIG.notifications) return;
7713
+ if (Date.now() - lastNotifyAt.current < 3e3) return;
7714
+ lastNotifyAt.current = Date.now();
7712
7715
  try {
7713
7716
  process.stdout.write("\x07");
7714
7717
  } catch {
@@ -7820,7 +7823,7 @@ function LivePanel({ active: active2 }) {
7820
7823
  const bannerRows = (activeAlert ? 1 : 0) + (activeAction ? 1 : 0);
7821
7824
  const chartH = rows >= 36 ? 6 : 4;
7822
7825
  const colH = rows >= 32 ? 7 : 5;
7823
- const streamRows = Math.max(4, rows - 5 - (1 + chartH) - colH - bannerRows);
7826
+ const streamRows = Math.max(4, rows - 6 - (1 + chartH) - colH - bannerRows);
7824
7827
  const innerW = cols - 2;
7825
7828
  const leftW = Math.floor(innerW * 0.55);
7826
7829
  const rightW = innerW - leftW - 2;
@@ -10068,7 +10071,7 @@ function App() {
10068
10071
  const current = SECTIONS[effectiveSection];
10069
10072
  if (help) return /* @__PURE__ */ jsx9(HelpOverlay, { cols, rows });
10070
10073
  if (current.label === "Live" && focus === "panel") {
10071
- return /* @__PURE__ */ jsx9(Box9, { flexDirection: "column", width: cols, height: rows, children: /* @__PURE__ */ jsx9(LivePanel, { active: true, focused: true }, viewNonce) });
10074
+ return /* @__PURE__ */ jsx9(Box9, { flexDirection: "column", width: cols, height: rows - 1, overflow: "hidden", children: /* @__PURE__ */ jsx9(LivePanel, { active: true, focused: true }, viewNonce) });
10072
10075
  }
10073
10076
  const Panel = current.Panel;
10074
10077
  const panelBody = current.label === "Accounts" ? /* @__PURE__ */ jsx9(AccountsPanel, { active: true, focused: focus === "panel", viewApiKey: viewKey, onView: viewAccount }) : /* @__PURE__ */ jsx9(Panel, { active: focus === "panel" || current.label !== "Live", focused: focus === "panel" });
package/dist/tui/index.js CHANGED
@@ -1137,11 +1137,14 @@ function LivePanel({ active: active2 }) {
1137
1137
  return () => clearInterval(t);
1138
1138
  }, [active2, frozen]);
1139
1139
  const startRef = useRef2(Date.now());
1140
+ const lastNotifyAt = useRef2(0);
1140
1141
  const fireAlert = useCallback2(
1141
1142
  (id, title, msg, level = "warn") => {
1142
1143
  pushLog(`${level === "bad" ? "\u26D4" : "\u23F8"} ${msg}`, level);
1143
1144
  setAlerts((a) => [...a.filter((x) => x.id !== id), { id, msg, level, until: Date.now() + 15e3 }].slice(-4));
1144
1145
  if (!CONFIG.notifications) return;
1146
+ if (Date.now() - lastNotifyAt.current < 3e3) return;
1147
+ lastNotifyAt.current = Date.now();
1145
1148
  try {
1146
1149
  process.stdout.write("\x07");
1147
1150
  } catch {
@@ -1253,7 +1256,7 @@ function LivePanel({ active: active2 }) {
1253
1256
  const bannerRows = (activeAlert ? 1 : 0) + (activeAction ? 1 : 0);
1254
1257
  const chartH = rows >= 36 ? 6 : 4;
1255
1258
  const colH = rows >= 32 ? 7 : 5;
1256
- const streamRows = Math.max(4, rows - 5 - (1 + chartH) - colH - bannerRows);
1259
+ const streamRows = Math.max(4, rows - 6 - (1 + chartH) - colH - bannerRows);
1257
1260
  const innerW = cols - 2;
1258
1261
  const leftW = Math.floor(innerW * 0.55);
1259
1262
  const rightW = innerW - leftW - 2;
@@ -3378,7 +3381,7 @@ function App() {
3378
3381
  const current = SECTIONS[effectiveSection];
3379
3382
  if (help) return /* @__PURE__ */ jsx9(HelpOverlay, { cols, rows });
3380
3383
  if (current.label === "Live" && focus === "panel") {
3381
- return /* @__PURE__ */ jsx9(Box9, { flexDirection: "column", width: cols, height: rows, children: /* @__PURE__ */ jsx9(LivePanel, { active: true, focused: true }, viewNonce) });
3384
+ return /* @__PURE__ */ jsx9(Box9, { flexDirection: "column", width: cols, height: rows - 1, overflow: "hidden", children: /* @__PURE__ */ jsx9(LivePanel, { active: true, focused: true }, viewNonce) });
3382
3385
  }
3383
3386
  const Panel = current.Panel;
3384
3387
  const panelBody = current.label === "Accounts" ? /* @__PURE__ */ jsx9(AccountsPanel, { active: true, focused: focus === "panel", viewApiKey: viewKey, onView: viewAccount }) : /* @__PURE__ */ jsx9(Panel, { active: focus === "panel" || current.label !== "Live", focused: focus === "panel" });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solongate/proxy",
3
- "version": "0.81.41",
3
+ "version": "0.81.42",
4
4
  "description": "AI tool security proxy: protect any AI tool server with customizable policies, path/command constraints, rate limiting, and audit logging. No code changes required.",
5
5
  "type": "module",
6
6
  "bin": {