@solongate/proxy 0.81.71 → 0.81.72

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
@@ -6946,11 +6946,12 @@ function PaneTitle({ label, extra, width: width2 }) {
6946
6946
  /* @__PURE__ */ jsx(Text, { color: theme.dim, children: tail + "\u2500".repeat(Math.max(0, width2 - used)) })
6947
6947
  ] });
6948
6948
  }
6949
- function StreamLine({ e, loc, selected }) {
6949
+ function StreamLine({ e, loc, selected, date }) {
6950
6950
  return /* @__PURE__ */ jsxs(Text, { wrap: "truncate", backgroundColor: selected ? "#1c2f63" : void 0, children: [
6951
6951
  /* @__PURE__ */ jsx(Text, { color: selected ? theme.accentBright : theme.dim, children: selected ? "\u25B8" : " " }),
6952
6952
  /* @__PURE__ */ jsxs(Text, { color: theme.dim, children: [
6953
6953
  "[",
6954
+ date ? ymd(e.at) + " " : "",
6954
6955
  hhmmss(e.at),
6955
6956
  " "
6956
6957
  ] }),
@@ -7001,7 +7002,7 @@ function KeyHints({ hints }) {
7001
7002
  i < hints.length - 1 ? " " : ""
7002
7003
  ] }, i)) });
7003
7004
  }
7004
- var hhmmss;
7005
+ var hhmmss, ymd;
7005
7006
  var init_components = __esm({
7006
7007
  "src/tui/components.tsx"() {
7007
7008
  "use strict";
@@ -7010,6 +7011,12 @@ var init_components = __esm({
7010
7011
  const d = new Date(ts);
7011
7012
  return Number.isNaN(d.getTime()) ? "--:--:--" : d.toTimeString().slice(0, 8);
7012
7013
  };
7014
+ ymd = (ts) => {
7015
+ const d = new Date(ts);
7016
+ if (Number.isNaN(d.getTime())) return "----------";
7017
+ const p = (n) => String(n).padStart(2, "0");
7018
+ return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())}`;
7019
+ };
7013
7020
  }
7014
7021
  });
7015
7022
 
@@ -9973,7 +9980,7 @@ function AuditPanel({ active: active2, focused }) {
9973
9980
  )
9974
9981
  ] }) : null,
9975
9982
  /* @__PURE__ */ jsx6(Text6, { color: theme.dim, wrap: "truncate", children: `${total} matched \xB7 page ${Math.min(page + 1, pages)}/${pages} \xB7 ${PAGE}/page \xB7 ${pageRows.length ? selClamped + 1 : 0}/${pageRows.length}${start ? ` \xB7 \u25B2${start} newer` : ""}${start + listRows < pageRows.length ? ` \xB7 \u25BC${pageRows.length - start - listRows} older` : ""}` }),
9976
- /* @__PURE__ */ jsx6(Box6, { flexDirection: "column", overflow: "hidden", children: windowed.map((e, i) => /* @__PURE__ */ jsx6(StreamLine, { e: toStream(e), loc: source === "local", selected: start + i === selClamped && focused }, e.id)) }),
9983
+ /* @__PURE__ */ jsx6(Box6, { flexDirection: "column", overflow: "hidden", children: windowed.map((e, i) => /* @__PURE__ */ jsx6(StreamLine, { e: toStream(e), loc: source === "local", selected: start + i === selClamped && focused, date: true }, e.id)) }),
9977
9984
  pageRows.length === 0 ? /* @__PURE__ */ jsxs6(Text6, { color: theme.dim, children: [
9978
9985
  "(no entries",
9979
9986
  source === "local" ? " in the local file" : "",
@@ -1,6 +1,8 @@
1
1
  import type { ReactNode } from 'react';
2
2
  /** HH:MM:SS for a timestamp (ms or ISO); `--:--:--` when unparseable. */
3
3
  export declare const hhmmss: (ts: string | number) => string;
4
+ /** YYYY-MM-DD for a timestamp; `----------` when unparseable. */
5
+ export declare const ymd: (ts: string | number) => string;
4
6
  /** Section divider title used across the Live/Audit consoles. */
5
7
  export declare function PaneTitle({ label, extra, width }: {
6
8
  label: string;
@@ -25,10 +27,11 @@ export interface StreamRow {
25
27
  evalMs?: number | null;
26
28
  rule?: string | null;
27
29
  }
28
- export declare function StreamLine({ e, loc, selected }: {
30
+ export declare function StreamLine({ e, loc, selected, date }: {
29
31
  e: StreamRow;
30
32
  loc: boolean;
31
33
  selected?: boolean;
34
+ date?: boolean;
32
35
  }): JSX.Element;
33
36
  export declare function Panel({ title, subtitle, children }: {
34
37
  title: string;
package/dist/tui/index.js CHANGED
@@ -129,6 +129,12 @@ var hhmmss = (ts) => {
129
129
  const d = new Date(ts);
130
130
  return Number.isNaN(d.getTime()) ? "--:--:--" : d.toTimeString().slice(0, 8);
131
131
  };
132
+ var ymd = (ts) => {
133
+ const d = new Date(ts);
134
+ if (Number.isNaN(d.getTime())) return "----------";
135
+ const p = (n) => String(n).padStart(2, "0");
136
+ return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())}`;
137
+ };
132
138
  function PaneTitle({ label, extra, width }) {
133
139
  const tail = extra ? ` ${extra} ` : " ";
134
140
  const used = 2 + 1 + label.length + tail.length;
@@ -141,11 +147,12 @@ function PaneTitle({ label, extra, width }) {
141
147
  /* @__PURE__ */ jsx(Text, { color: theme.dim, children: tail + "\u2500".repeat(Math.max(0, width - used)) })
142
148
  ] });
143
149
  }
144
- function StreamLine({ e, loc, selected }) {
150
+ function StreamLine({ e, loc, selected, date }) {
145
151
  return /* @__PURE__ */ jsxs(Text, { wrap: "truncate", backgroundColor: selected ? "#1c2f63" : void 0, children: [
146
152
  /* @__PURE__ */ jsx(Text, { color: selected ? theme.accentBright : theme.dim, children: selected ? "\u25B8" : " " }),
147
153
  /* @__PURE__ */ jsxs(Text, { color: theme.dim, children: [
148
154
  "[",
155
+ date ? ymd(e.at) + " " : "",
149
156
  hhmmss(e.at),
150
157
  " "
151
158
  ] }),
@@ -3093,7 +3100,7 @@ function AuditPanel({ active: active2, focused }) {
3093
3100
  )
3094
3101
  ] }) : null,
3095
3102
  /* @__PURE__ */ jsx6(Text6, { color: theme.dim, wrap: "truncate", children: `${total} matched \xB7 page ${Math.min(page + 1, pages)}/${pages} \xB7 ${PAGE}/page \xB7 ${pageRows.length ? selClamped + 1 : 0}/${pageRows.length}${start ? ` \xB7 \u25B2${start} newer` : ""}${start + listRows < pageRows.length ? ` \xB7 \u25BC${pageRows.length - start - listRows} older` : ""}` }),
3096
- /* @__PURE__ */ jsx6(Box6, { flexDirection: "column", overflow: "hidden", children: windowed.map((e, i) => /* @__PURE__ */ jsx6(StreamLine, { e: toStream(e), loc: source === "local", selected: start + i === selClamped && focused }, e.id)) }),
3103
+ /* @__PURE__ */ jsx6(Box6, { flexDirection: "column", overflow: "hidden", children: windowed.map((e, i) => /* @__PURE__ */ jsx6(StreamLine, { e: toStream(e), loc: source === "local", selected: start + i === selClamped && focused, date: true }, e.id)) }),
3097
3104
  pageRows.length === 0 ? /* @__PURE__ */ jsxs6(Text6, { color: theme.dim, children: [
3098
3105
  "(no entries",
3099
3106
  source === "local" ? " in the local file" : "",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solongate/proxy",
3
- "version": "0.81.71",
3
+ "version": "0.81.72",
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": {