@solongate/proxy 0.81.94 → 0.81.95

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
@@ -8849,7 +8849,7 @@ function PoliciesPanel({ focused }) {
8849
8849
  usePoll(() => {
8850
8850
  list6.reloadQuiet();
8851
8851
  activeQ.reloadQuiet();
8852
- }, 6e3);
8852
+ }, 3e3);
8853
8853
  const mutate = (nextRules, nextMode = mode) => {
8854
8854
  setRules(nextRules);
8855
8855
  setMode(nextMode);
@@ -8890,7 +8890,7 @@ function PoliciesPanel({ focused }) {
8890
8890
  list6.reload();
8891
8891
  activeQ.reload();
8892
8892
  detail.reload();
8893
- setStatus("refreshed");
8893
+ setStatus(`\u27F3 refreshed ${(/* @__PURE__ */ new Date()).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", second: "2-digit", hour12: false })}`);
8894
8894
  return;
8895
8895
  }
8896
8896
  if (view === "list") {
@@ -9103,7 +9103,7 @@ var init_Policies = __esm({
9103
9103
  // src/tui/panels/RateLimit.tsx
9104
9104
  import { Box as Box4, Text as Text4, useInput as useInput3 } from "ink";
9105
9105
  import { useEffect as useEffect4, useState as useState4 } from "react";
9106
- import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
9106
+ import { Fragment as Fragment4, jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
9107
9107
  function RateLimitPanel({ focused }) {
9108
9108
  const { cols, rows } = usePanelSize();
9109
9109
  const layersQ = useLoader(() => api.settings.getSecurityLayers());
@@ -9118,9 +9118,11 @@ function RateLimitPanel({ focused }) {
9118
9118
  }, [layersQ.data]);
9119
9119
  usePoll(() => {
9120
9120
  if (!dirty) layersQ.reloadQuiet();
9121
+ }, 3e3);
9122
+ usePoll(() => {
9121
9123
  historyQ.reloadQuiet();
9122
9124
  insightsQ.reloadQuiet();
9123
- }, 6e3);
9125
+ }, 1e4);
9124
9126
  const adjust = (dir, step) => {
9125
9127
  if (!draft) return;
9126
9128
  const field = FIELDS2[fi];
@@ -9156,7 +9158,7 @@ function RateLimitPanel({ focused }) {
9156
9158
  layersQ.reload();
9157
9159
  historyQ.reload();
9158
9160
  insightsQ.reload();
9159
- setStatus("refreshed");
9161
+ setStatus(`\u27F3 refreshed ${when(Date.now())}`);
9160
9162
  }
9161
9163
  },
9162
9164
  { isActive: focused }
@@ -9171,7 +9173,8 @@ function RateLimitPanel({ focused }) {
9171
9173
  const loadPct = lim > 0 ? Math.min(100, Math.round(now / lim * 100)) : 0;
9172
9174
  const last24h = (insightsQ.data?.["activity"]?.hour ?? []).reduce((s, b) => s + b.count, 0);
9173
9175
  const hasLoad = lim > 0;
9174
- const fixed = 1 + 4 + (hasLoad ? 1 : 0) + 5 + 1 + 1 + 1 + 1 + (dirty || status ? 1 : 0) + 1;
9176
+ const showExtras = rows >= 20;
9177
+ const fixed = 1 + 4 + (showExtras ? (hasLoad ? 1 : 0) + 5 : 0) + 1 + 1 + 1;
9175
9178
  const burstBudget = Math.max(1, rows - fixed);
9176
9179
  const shown = anomalies2.slice(0, burstBudget);
9177
9180
  const bw = Math.max(10, cols - 30);
@@ -9184,20 +9187,22 @@ function RateLimitPanel({ focused }) {
9184
9187
  /* @__PURE__ */ jsx4(FieldRow, { label: "Per minute", active: focused && fi === 1, children: /* @__PURE__ */ jsx4(Text4, { bold: true, children: draft.perMinute || "off" }) }),
9185
9188
  /* @__PURE__ */ jsx4(FieldRow, { label: "Per hour", active: focused && fi === 2, children: /* @__PURE__ */ jsx4(Text4, { bold: true, children: draft.perHour || "off" }) }),
9186
9189
  /* @__PURE__ */ jsx4(FieldRow, { label: "Per day", active: focused && fi === 3, children: /* @__PURE__ */ jsx4(Text4, { bold: true, children: draft.perDay || "off" }) }),
9187
- hasLoad ? /* @__PURE__ */ jsxs4(Text4, { wrap: "truncate", children: [
9188
- /* @__PURE__ */ jsx4(Text4, { color: theme.dim, children: "load now".padEnd(13) }),
9189
- /* @__PURE__ */ jsx4(Text4, { color: loadPct >= 100 ? theme.bad : loadPct >= 80 ? theme.warn : theme.ok, children: "\u2588".repeat(Math.min(18, Math.round(now / lim * 18))) }),
9190
- /* @__PURE__ */ jsx4(Text4, { color: "#233457", children: "\u2591".repeat(Math.max(0, 18 - Math.round(now / lim * 18))) }),
9191
- /* @__PURE__ */ jsx4(Text4, { color: theme.dim, children: ` ${now}/${lim} this minute (${loadPct}%)` })
9192
- ] }) : null,
9193
- /* @__PURE__ */ jsxs4(Text4, { color: theme.accentBright, bold: true, wrap: "truncate", children: [
9194
- "Busiest 7d",
9195
- /* @__PURE__ */ jsx4(Text4, { color: theme.dim, children: " most calls in one window vs your limit" })
9190
+ showExtras && /* @__PURE__ */ jsxs4(Fragment4, { children: [
9191
+ hasLoad ? /* @__PURE__ */ jsxs4(Text4, { wrap: "truncate", children: [
9192
+ /* @__PURE__ */ jsx4(Text4, { color: theme.dim, children: "load now".padEnd(13) }),
9193
+ /* @__PURE__ */ jsx4(Text4, { color: loadPct >= 100 ? theme.bad : loadPct >= 80 ? theme.warn : theme.ok, children: "\u2588".repeat(Math.min(18, Math.round(now / lim * 18))) }),
9194
+ /* @__PURE__ */ jsx4(Text4, { color: "#233457", children: "\u2591".repeat(Math.max(0, 18 - Math.round(now / lim * 18))) }),
9195
+ /* @__PURE__ */ jsx4(Text4, { color: theme.dim, children: ` ${now}/${lim} this minute (${loadPct}%)` })
9196
+ ] }) : null,
9197
+ /* @__PURE__ */ jsxs4(Text4, { color: theme.accentBright, bold: true, wrap: "truncate", children: [
9198
+ "Busiest 7d",
9199
+ /* @__PURE__ */ jsx4(Text4, { color: theme.dim, children: " most calls in one window vs your limit" })
9200
+ ] }),
9201
+ /* @__PURE__ */ jsx4(BusiestRow, { label: "minute", peak: peaks.minute, limit: draft.perMinute }),
9202
+ /* @__PURE__ */ jsx4(BusiestRow, { label: "hour", peak: peaks.hour, limit: draft.perHour }),
9203
+ /* @__PURE__ */ jsx4(BusiestRow, { label: "day", peak: peaks.day, limit: draft.perDay }),
9204
+ /* @__PURE__ */ jsx4(Text4, { color: theme.dim, wrap: "truncate", children: `activity`.padEnd(11) + ` last 24h \xB7 ${last24h} calls \xB7 busiest hour ${peaks.hour}/hr` })
9196
9205
  ] }),
9197
- /* @__PURE__ */ jsx4(BusiestRow, { label: "minute", peak: peaks.minute, limit: draft.perMinute }),
9198
- /* @__PURE__ */ jsx4(BusiestRow, { label: "hour", peak: peaks.hour, limit: draft.perHour }),
9199
- /* @__PURE__ */ jsx4(BusiestRow, { label: "day", peak: peaks.day, limit: draft.perDay }),
9200
- /* @__PURE__ */ jsx4(Text4, { color: theme.dim, wrap: "truncate", children: `activity`.padEnd(11) + ` last 24h \xB7 ${last24h} calls \xB7 busiest hour ${peaks.hour}/hr` }),
9201
9206
  /* @__PURE__ */ jsxs4(Box4, { flexDirection: "column", children: [
9202
9207
  /* @__PURE__ */ jsxs4(Text4, { color: theme.accentBright, bold: true, wrap: "truncate", children: [
9203
9208
  `Recent bursts 7d${anomalies2.length ? ` (${anomalies2.length})` : ""}`,
@@ -9289,7 +9294,7 @@ function DlpPanel({ focused }) {
9289
9294
  }, [q.data]);
9290
9295
  usePoll(() => {
9291
9296
  if (!dirty && !adding) q.reloadQuiet();
9292
- }, 6e3);
9297
+ }, 3e3);
9293
9298
  const mutate = (next) => {
9294
9299
  setDlp(next);
9295
9300
  setDirty(true);
@@ -9331,7 +9336,7 @@ function DlpPanel({ focused }) {
9331
9336
  if (!dlp) return;
9332
9337
  if (key.ctrl && input2 === "r") {
9333
9338
  q.reload();
9334
- setStatus("refreshed");
9339
+ setStatus(`\u27F3 refreshed ${(/* @__PURE__ */ new Date()).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", second: "2-digit", hour12: false })}`);
9335
9340
  return;
9336
9341
  }
9337
9342
  if (key.upArrow) setSel(() => Math.max(0, selC - 1));
@@ -9667,7 +9672,7 @@ function AuditPanel({ active: active2, focused }) {
9667
9672
  agentsQ.reload();
9668
9673
  statsQ.reloadQuiet();
9669
9674
  } else localQ.reload();
9670
- setMsg({ text: "refreshed", level: "ok" });
9675
+ setMsg({ text: `\u27F3 refreshed ${(/* @__PURE__ */ new Date()).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", second: "2-digit", hour12: false })}`, level: "ok" });
9671
9676
  return;
9672
9677
  }
9673
9678
  if (showHelp) {
@@ -10360,7 +10365,7 @@ var init_global_install = __esm({
10360
10365
  import { Box as Box7, Text as Text7, useInput as useInput6 } from "ink";
10361
10366
  import TextInput5 from "ink-text-input";
10362
10367
  import { useEffect as useEffect6, useRef as useRef3, useState as useState7 } from "react";
10363
- import { Fragment as Fragment4, jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
10368
+ import { Fragment as Fragment5, jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
10364
10369
  function SettingsPanel({
10365
10370
  active: active2,
10366
10371
  focused,
@@ -10831,11 +10836,11 @@ function SettingsPanel({
10831
10836
  return /* @__PURE__ */ jsxs7(Text7, { wrap: "truncate", children: [
10832
10837
  cursor(r),
10833
10838
  /* @__PURE__ */ jsx7(Text7, { color: theme.dim, children: "guard".padEnd(11) }),
10834
- !guardHere ? /* @__PURE__ */ jsxs7(Fragment4, { children: [
10839
+ !guardHere ? /* @__PURE__ */ jsxs7(Fragment5, { children: [
10835
10840
  /* @__PURE__ */ jsx7(Text7, { color: theme.bad, bold: true, children: "removed" }),
10836
10841
  /* @__PURE__ */ jsx7(Text7, { color: theme.dim, children: " \xB7 " }),
10837
10842
  /* @__PURE__ */ jsx7(Text7, { color: theme.accentBright, children: "enter to install" })
10838
- ] }) : /* @__PURE__ */ jsxs7(Fragment4, { children: [
10843
+ ] }) : /* @__PURE__ */ jsxs7(Fragment5, { children: [
10839
10844
  /* @__PURE__ */ jsx7(Text7, { color: guardOld ? theme.warn : theme.ok, children: `v${guardVer ?? "?"}` }),
10840
10845
  /* @__PURE__ */ jsx7(Text7, { color: theme.dim, children: guardOld ? " \xB7 update available \xB7 enter update" : " (latest) \xB7 enter reinstall" }),
10841
10846
  /* @__PURE__ */ jsx7(Text7, { color: theme.dim, children: " \xB7 d remove" })
package/dist/tui/index.js CHANGED
@@ -1962,7 +1962,7 @@ function PoliciesPanel({ focused }) {
1962
1962
  usePoll(() => {
1963
1963
  list5.reloadQuiet();
1964
1964
  activeQ.reloadQuiet();
1965
- }, 6e3);
1965
+ }, 3e3);
1966
1966
  const mutate = (nextRules, nextMode = mode) => {
1967
1967
  setRules(nextRules);
1968
1968
  setMode(nextMode);
@@ -2003,7 +2003,7 @@ function PoliciesPanel({ focused }) {
2003
2003
  list5.reload();
2004
2004
  activeQ.reload();
2005
2005
  detail.reload();
2006
- setStatus("refreshed");
2006
+ setStatus(`\u27F3 refreshed ${(/* @__PURE__ */ new Date()).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", second: "2-digit", hour12: false })}`);
2007
2007
  return;
2008
2008
  }
2009
2009
  if (view === "list") {
@@ -2185,7 +2185,7 @@ function PoliciesPanel({ focused }) {
2185
2185
  // src/tui/panels/RateLimit.tsx
2186
2186
  import { Box as Box4, Text as Text4, useInput as useInput3 } from "ink";
2187
2187
  import { useEffect as useEffect4, useState as useState4 } from "react";
2188
- import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
2188
+ import { Fragment as Fragment4, jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
2189
2189
  var MODES = ["off", "detect", "block"];
2190
2190
  var FIELDS2 = ["mode", "perMinute", "perHour", "perDay"];
2191
2191
  var when = (ms) => {
@@ -2206,9 +2206,11 @@ function RateLimitPanel({ focused }) {
2206
2206
  }, [layersQ.data]);
2207
2207
  usePoll(() => {
2208
2208
  if (!dirty) layersQ.reloadQuiet();
2209
+ }, 3e3);
2210
+ usePoll(() => {
2209
2211
  historyQ.reloadQuiet();
2210
2212
  insightsQ.reloadQuiet();
2211
- }, 6e3);
2213
+ }, 1e4);
2212
2214
  const adjust = (dir, step) => {
2213
2215
  if (!draft) return;
2214
2216
  const field = FIELDS2[fi];
@@ -2244,7 +2246,7 @@ function RateLimitPanel({ focused }) {
2244
2246
  layersQ.reload();
2245
2247
  historyQ.reload();
2246
2248
  insightsQ.reload();
2247
- setStatus("refreshed");
2249
+ setStatus(`\u27F3 refreshed ${when(Date.now())}`);
2248
2250
  }
2249
2251
  },
2250
2252
  { isActive: focused }
@@ -2259,7 +2261,8 @@ function RateLimitPanel({ focused }) {
2259
2261
  const loadPct = lim > 0 ? Math.min(100, Math.round(now / lim * 100)) : 0;
2260
2262
  const last24h = (insightsQ.data?.["activity"]?.hour ?? []).reduce((s, b) => s + b.count, 0);
2261
2263
  const hasLoad = lim > 0;
2262
- const fixed = 1 + 4 + (hasLoad ? 1 : 0) + 5 + 1 + 1 + 1 + 1 + (dirty || status ? 1 : 0) + 1;
2264
+ const showExtras = rows >= 20;
2265
+ const fixed = 1 + 4 + (showExtras ? (hasLoad ? 1 : 0) + 5 : 0) + 1 + 1 + 1;
2263
2266
  const burstBudget = Math.max(1, rows - fixed);
2264
2267
  const shown = anomalies2.slice(0, burstBudget);
2265
2268
  const bw = Math.max(10, cols - 30);
@@ -2272,20 +2275,22 @@ function RateLimitPanel({ focused }) {
2272
2275
  /* @__PURE__ */ jsx4(FieldRow, { label: "Per minute", active: focused && fi === 1, children: /* @__PURE__ */ jsx4(Text4, { bold: true, children: draft.perMinute || "off" }) }),
2273
2276
  /* @__PURE__ */ jsx4(FieldRow, { label: "Per hour", active: focused && fi === 2, children: /* @__PURE__ */ jsx4(Text4, { bold: true, children: draft.perHour || "off" }) }),
2274
2277
  /* @__PURE__ */ jsx4(FieldRow, { label: "Per day", active: focused && fi === 3, children: /* @__PURE__ */ jsx4(Text4, { bold: true, children: draft.perDay || "off" }) }),
2275
- hasLoad ? /* @__PURE__ */ jsxs4(Text4, { wrap: "truncate", children: [
2276
- /* @__PURE__ */ jsx4(Text4, { color: theme.dim, children: "load now".padEnd(13) }),
2277
- /* @__PURE__ */ jsx4(Text4, { color: loadPct >= 100 ? theme.bad : loadPct >= 80 ? theme.warn : theme.ok, children: "\u2588".repeat(Math.min(18, Math.round(now / lim * 18))) }),
2278
- /* @__PURE__ */ jsx4(Text4, { color: "#233457", children: "\u2591".repeat(Math.max(0, 18 - Math.round(now / lim * 18))) }),
2279
- /* @__PURE__ */ jsx4(Text4, { color: theme.dim, children: ` ${now}/${lim} this minute (${loadPct}%)` })
2280
- ] }) : null,
2281
- /* @__PURE__ */ jsxs4(Text4, { color: theme.accentBright, bold: true, wrap: "truncate", children: [
2282
- "Busiest 7d",
2283
- /* @__PURE__ */ jsx4(Text4, { color: theme.dim, children: " most calls in one window vs your limit" })
2278
+ showExtras && /* @__PURE__ */ jsxs4(Fragment4, { children: [
2279
+ hasLoad ? /* @__PURE__ */ jsxs4(Text4, { wrap: "truncate", children: [
2280
+ /* @__PURE__ */ jsx4(Text4, { color: theme.dim, children: "load now".padEnd(13) }),
2281
+ /* @__PURE__ */ jsx4(Text4, { color: loadPct >= 100 ? theme.bad : loadPct >= 80 ? theme.warn : theme.ok, children: "\u2588".repeat(Math.min(18, Math.round(now / lim * 18))) }),
2282
+ /* @__PURE__ */ jsx4(Text4, { color: "#233457", children: "\u2591".repeat(Math.max(0, 18 - Math.round(now / lim * 18))) }),
2283
+ /* @__PURE__ */ jsx4(Text4, { color: theme.dim, children: ` ${now}/${lim} this minute (${loadPct}%)` })
2284
+ ] }) : null,
2285
+ /* @__PURE__ */ jsxs4(Text4, { color: theme.accentBright, bold: true, wrap: "truncate", children: [
2286
+ "Busiest 7d",
2287
+ /* @__PURE__ */ jsx4(Text4, { color: theme.dim, children: " most calls in one window vs your limit" })
2288
+ ] }),
2289
+ /* @__PURE__ */ jsx4(BusiestRow, { label: "minute", peak: peaks.minute, limit: draft.perMinute }),
2290
+ /* @__PURE__ */ jsx4(BusiestRow, { label: "hour", peak: peaks.hour, limit: draft.perHour }),
2291
+ /* @__PURE__ */ jsx4(BusiestRow, { label: "day", peak: peaks.day, limit: draft.perDay }),
2292
+ /* @__PURE__ */ jsx4(Text4, { color: theme.dim, wrap: "truncate", children: `activity`.padEnd(11) + ` last 24h \xB7 ${last24h} calls \xB7 busiest hour ${peaks.hour}/hr` })
2284
2293
  ] }),
2285
- /* @__PURE__ */ jsx4(BusiestRow, { label: "minute", peak: peaks.minute, limit: draft.perMinute }),
2286
- /* @__PURE__ */ jsx4(BusiestRow, { label: "hour", peak: peaks.hour, limit: draft.perHour }),
2287
- /* @__PURE__ */ jsx4(BusiestRow, { label: "day", peak: peaks.day, limit: draft.perDay }),
2288
- /* @__PURE__ */ jsx4(Text4, { color: theme.dim, wrap: "truncate", children: `activity`.padEnd(11) + ` last 24h \xB7 ${last24h} calls \xB7 busiest hour ${peaks.hour}/hr` }),
2289
2294
  /* @__PURE__ */ jsxs4(Box4, { flexDirection: "column", children: [
2290
2295
  /* @__PURE__ */ jsxs4(Text4, { color: theme.accentBright, bold: true, wrap: "truncate", children: [
2291
2296
  `Recent bursts 7d${anomalies2.length ? ` (${anomalies2.length})` : ""}`,
@@ -2362,7 +2367,7 @@ function DlpPanel({ focused }) {
2362
2367
  }, [q.data]);
2363
2368
  usePoll(() => {
2364
2369
  if (!dirty && !adding) q.reloadQuiet();
2365
- }, 6e3);
2370
+ }, 3e3);
2366
2371
  const mutate = (next) => {
2367
2372
  setDlp(next);
2368
2373
  setDirty(true);
@@ -2404,7 +2409,7 @@ function DlpPanel({ focused }) {
2404
2409
  if (!dlp) return;
2405
2410
  if (key.ctrl && input2 === "r") {
2406
2411
  q.reload();
2407
- setStatus("refreshed");
2412
+ setStatus(`\u27F3 refreshed ${(/* @__PURE__ */ new Date()).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", second: "2-digit", hour12: false })}`);
2408
2413
  return;
2409
2414
  }
2410
2415
  if (key.upArrow) setSel(() => Math.max(0, selC - 1));
@@ -2812,7 +2817,7 @@ function AuditPanel({ active: active2, focused }) {
2812
2817
  agentsQ.reload();
2813
2818
  statsQ.reloadQuiet();
2814
2819
  } else localQ.reload();
2815
- setMsg({ text: "refreshed", level: "ok" });
2820
+ setMsg({ text: `\u27F3 refreshed ${(/* @__PURE__ */ new Date()).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", second: "2-digit", hour12: false })}`, level: "ok" });
2816
2821
  return;
2817
2822
  }
2818
2823
  if (showHelp) {
@@ -3588,7 +3593,7 @@ async function tuiUpdateFlow(onStatus) {
3588
3593
  }
3589
3594
 
3590
3595
  // src/tui/panels/Settings.tsx
3591
- import { Fragment as Fragment4, jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
3596
+ import { Fragment as Fragment5, jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
3592
3597
  var EVENTS = ["denials", "allowed", "all"];
3593
3598
  var SPIN2 = ["\u280B", "\u2819", "\u2839", "\u2838", "\u283C", "\u2834", "\u2826", "\u2827", "\u2807", "\u280F"];
3594
3599
  var SIGNALS2 = ["any", "deny", "dlp", "ratelimit"];
@@ -4075,11 +4080,11 @@ function SettingsPanel({
4075
4080
  return /* @__PURE__ */ jsxs7(Text7, { wrap: "truncate", children: [
4076
4081
  cursor(r),
4077
4082
  /* @__PURE__ */ jsx7(Text7, { color: theme.dim, children: "guard".padEnd(11) }),
4078
- !guardHere ? /* @__PURE__ */ jsxs7(Fragment4, { children: [
4083
+ !guardHere ? /* @__PURE__ */ jsxs7(Fragment5, { children: [
4079
4084
  /* @__PURE__ */ jsx7(Text7, { color: theme.bad, bold: true, children: "removed" }),
4080
4085
  /* @__PURE__ */ jsx7(Text7, { color: theme.dim, children: " \xB7 " }),
4081
4086
  /* @__PURE__ */ jsx7(Text7, { color: theme.accentBright, children: "enter to install" })
4082
- ] }) : /* @__PURE__ */ jsxs7(Fragment4, { children: [
4087
+ ] }) : /* @__PURE__ */ jsxs7(Fragment5, { children: [
4083
4088
  /* @__PURE__ */ jsx7(Text7, { color: guardOld ? theme.warn : theme.ok, children: `v${guardVer ?? "?"}` }),
4084
4089
  /* @__PURE__ */ jsx7(Text7, { color: theme.dim, children: guardOld ? " \xB7 update available \xB7 enter update" : " (latest) \xB7 enter reinstall" }),
4085
4090
  /* @__PURE__ */ jsx7(Text7, { color: theme.dim, children: " \xB7 d remove" })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solongate/proxy",
3
- "version": "0.81.94",
3
+ "version": "0.81.95",
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": {