@solongate/proxy 0.82.29 → 0.82.30

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
@@ -8906,6 +8906,13 @@ function PoliciesPanel({ focused }) {
8906
8906
  return;
8907
8907
  }
8908
8908
  if (view === "rules") {
8909
+ if (key.ctrl && input === "d") {
8910
+ if (selected) {
8911
+ openBrowser(`${DASHBOARD_URL}/playground?policy=${encodeURIComponent(selected.id)}`);
8912
+ setStatus("Opened the dry-run playground in your browser.");
8913
+ }
8914
+ return;
8915
+ }
8909
8916
  if (key.leftArrow) return setView("list"), void setStatus(null);
8910
8917
  if (key.upArrow) setRi((n) => Math.max(0, n - 1));
8911
8918
  else if (key.downArrow) setRi((n) => Math.min(rules.length - 1, n + 1));
@@ -9018,7 +9025,7 @@ function PoliciesPanel({ focused }) {
9018
9025
  /* @__PURE__ */ jsx3(Text3, { color: theme.dim, children: ` ${rules.length} rules` }),
9019
9026
  dirtyTag
9020
9027
  ] }),
9021
- /* @__PURE__ */ jsx3(Text3, { color: theme.dim, wrap: "truncate", children: `\u2191\u2193 \xB7 enter edit \xB7 space on/off \xB7 e effect \xB7 n new \xB7 d del \xB7 m mode \xB7 D dry-run \xB7 s save \xB7 \u2190 back${rAbove ? ` \xB7 \u25B2${rAbove}` : ""}${rBelow ? ` \xB7 \u25BC${rBelow}` : ""}` }),
9028
+ /* @__PURE__ */ jsx3(Text3, { color: theme.dim, wrap: "truncate", children: `\u2191\u2193 \xB7 enter edit \xB7 space on/off \xB7 e effect \xB7 n new \xB7 d del \xB7 m mode \xB7 D dry-run \xB7 ^D playground \xB7 s save \xB7 \u2190 back${rAbove ? ` \xB7 \u25B2${rAbove}` : ""}${rBelow ? ` \xB7 \u25BC${rBelow}` : ""}` }),
9022
9029
  /* @__PURE__ */ jsx3(Box3, { marginTop: 1, children: /* @__PURE__ */ jsx3(
9023
9030
  Table,
9024
9031
  {
@@ -9085,14 +9092,16 @@ function PoliciesPanel({ focused }) {
9085
9092
  status ? /* @__PURE__ */ jsx3(Text3, { color: status.startsWith("\u2717") ? theme.bad : theme.ok, children: status }) : null
9086
9093
  ] });
9087
9094
  }
9088
- var constr, setConstr, FIELDS;
9095
+ var DASHBOARD_URL, constr, setConstr, FIELDS;
9089
9096
  var init_Policies = __esm({
9090
9097
  "src/tui/panels/Policies.tsx"() {
9091
9098
  "use strict";
9092
9099
  init_api_client();
9100
+ init_device_login();
9093
9101
  init_components();
9094
9102
  init_hooks();
9095
9103
  init_theme();
9104
+ DASHBOARD_URL = "https://dashboard.solongate.com";
9096
9105
  constr = (r, g, side) => (r[g]?.[side] ?? []).join(", ");
9097
9106
  setConstr = (r, g, side, val) => {
9098
9107
  const arr = val.split(",").map((s) => s.trim()).filter(Boolean);
package/dist/tui/index.js CHANGED
@@ -1903,6 +1903,7 @@ import { Box as Box3, Text as Text3, useInput as useInput2 } from "ink";
1903
1903
  import TextInput2 from "ink-text-input";
1904
1904
  import { useEffect as useEffect3, useState as useState3 } from "react";
1905
1905
  import { Fragment as Fragment3, jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
1906
+ var DASHBOARD_URL = "https://dashboard.solongate.com";
1906
1907
  var constr = (r, g, side) => (r[g]?.[side] ?? []).join(", ");
1907
1908
  var setConstr = (r, g, side, val) => {
1908
1909
  const arr = val.split(",").map((s) => s.trim()).filter(Boolean);
@@ -2031,6 +2032,13 @@ function PoliciesPanel({ focused }) {
2031
2032
  return;
2032
2033
  }
2033
2034
  if (view === "rules") {
2035
+ if (key.ctrl && input === "d") {
2036
+ if (selected) {
2037
+ openBrowser(`${DASHBOARD_URL}/playground?policy=${encodeURIComponent(selected.id)}`);
2038
+ setStatus("Opened the dry-run playground in your browser.");
2039
+ }
2040
+ return;
2041
+ }
2034
2042
  if (key.leftArrow) return setView("list"), void setStatus(null);
2035
2043
  if (key.upArrow) setRi((n) => Math.max(0, n - 1));
2036
2044
  else if (key.downArrow) setRi((n) => Math.min(rules.length - 1, n + 1));
@@ -2143,7 +2151,7 @@ function PoliciesPanel({ focused }) {
2143
2151
  /* @__PURE__ */ jsx3(Text3, { color: theme.dim, children: ` ${rules.length} rules` }),
2144
2152
  dirtyTag
2145
2153
  ] }),
2146
- /* @__PURE__ */ jsx3(Text3, { color: theme.dim, wrap: "truncate", children: `\u2191\u2193 \xB7 enter edit \xB7 space on/off \xB7 e effect \xB7 n new \xB7 d del \xB7 m mode \xB7 D dry-run \xB7 s save \xB7 \u2190 back${rAbove ? ` \xB7 \u25B2${rAbove}` : ""}${rBelow ? ` \xB7 \u25BC${rBelow}` : ""}` }),
2154
+ /* @__PURE__ */ jsx3(Text3, { color: theme.dim, wrap: "truncate", children: `\u2191\u2193 \xB7 enter edit \xB7 space on/off \xB7 e effect \xB7 n new \xB7 d del \xB7 m mode \xB7 D dry-run \xB7 ^D playground \xB7 s save \xB7 \u2190 back${rAbove ? ` \xB7 \u25B2${rAbove}` : ""}${rBelow ? ` \xB7 \u25BC${rBelow}` : ""}` }),
2147
2155
  /* @__PURE__ */ jsx3(Box3, { marginTop: 1, children: /* @__PURE__ */ jsx3(
2148
2156
  Table,
2149
2157
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solongate/proxy",
3
- "version": "0.82.29",
3
+ "version": "0.82.30",
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": {