@cartanova/qgrid-cli 2.11.0 → 2.11.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.
Files changed (51) hide show
  1. package/bundle/web-dist/client/assets/index-C96h3feE.js +32 -0
  2. package/bundle/web-dist/client/assets/logs-DBM6U0QD.js +1 -0
  3. package/bundle/web-dist/client/assets/monit-BBjXa7vB.js +1 -0
  4. package/bundle/web-dist/client/assets/plus-BsQdY7PS.js +1 -0
  5. package/bundle/web-dist/client/assets/refresh-cw-D9IUmT23.js +1 -0
  6. package/bundle/web-dist/client/assets/request-model-Bpp_rkK8.js +1 -0
  7. package/bundle/web-dist/client/assets/routes-Crz_PQzi.js +5 -0
  8. package/bundle/web-dist/client/assets/{services.generated-CefiDXEv.js → services.generated-B5lc3aIC.js} +1 -1
  9. package/bundle/web-dist/client/assets/settings-Cdwm3OBB.js +1 -0
  10. package/bundle/web-dist/client/assets/show-DBUhALT1.js +2 -0
  11. package/bundle/web-dist/client/assets/tokens-CVQAVJTo.js +1 -0
  12. package/bundle/web-dist/client/assets/use-oauth-login-flow-BfxYI4Oh.js +1 -0
  13. package/bundle/web-dist/client/assets/use-update-token-mutation-qKBC2sn7.js +1 -0
  14. package/bundle/web-dist/client/assets/vendor-react-DH4kUfK2.js +9 -0
  15. package/bundle/web-dist/client/assets/vendor-tanstack-DRPs09ai.js +1 -0
  16. package/bundle/web-dist/client/index.html +4 -4
  17. package/bundle/web-dist/server/assets/{lazyRouteComponent-D8iTIHyn.js → lazyRouteComponent-AKiHfZWp.js} +2 -2
  18. package/bundle/web-dist/server/assets/logs-B7QmGJq3.js +513 -0
  19. package/bundle/web-dist/server/assets/{monit-B2hqorPe.js → monit-DFt7x3bh.js} +117 -375
  20. package/bundle/web-dist/server/assets/plus-DaYQRpBt.js +19 -0
  21. package/bundle/web-dist/server/assets/{react-dom-BIYQzBqG.js → react-dom-Cv23mm1K.js} +1 -1
  22. package/bundle/web-dist/server/assets/refresh-cw-BpXNsAy-.js +23 -0
  23. package/bundle/web-dist/server/assets/{request-model-I6OdODSH.js → request-model-eHE6YbaF.js} +6 -15
  24. package/bundle/web-dist/server/assets/{routes-B95YlUv2.js → routes-_Y-PJfgO.js} +203 -679
  25. package/bundle/web-dist/server/assets/{services.generated-DQATJ6qf.js → services.generated-CMJ8AHbO.js} +3796 -4012
  26. package/bundle/web-dist/server/assets/settings-JwJKxn2e.js +461 -0
  27. package/bundle/web-dist/server/assets/{show-Bxaj3rhH.js → show-BEv6z1v_.js} +368 -1270
  28. package/bundle/web-dist/server/assets/tokens-CNT4mI-f.js +560 -0
  29. package/bundle/web-dist/server/assets/{use-oauth-login-flow-CKDHgc3U.js → use-oauth-login-flow-jkAkT3X6.js} +16 -50
  30. package/bundle/web-dist/server/assets/{use-update-token-mutation-BEbgOzaa.js → use-update-token-mutation-Sm6kh02m.js} +1 -1
  31. package/bundle/web-dist/server/entry-server.generated.js +1130 -2626
  32. package/package.json +1 -1
  33. package/bundle/web-dist/client/assets/index-BA7uQ-6c.js +0 -31
  34. package/bundle/web-dist/client/assets/logs-C47OJGEI.js +0 -1
  35. package/bundle/web-dist/client/assets/monit-BS9no0dU.js +0 -4
  36. package/bundle/web-dist/client/assets/plus-sdACTfH0.js +0 -1
  37. package/bundle/web-dist/client/assets/refresh-cw-CY8o_1cT.js +0 -1
  38. package/bundle/web-dist/client/assets/request-model-BRtFuZvj.js +0 -1
  39. package/bundle/web-dist/client/assets/routes-kqgkUxE8.js +0 -5
  40. package/bundle/web-dist/client/assets/settings-DNDvFGSw.js +0 -1
  41. package/bundle/web-dist/client/assets/show-u8Np69q3.js +0 -2
  42. package/bundle/web-dist/client/assets/tokens-QvP410NW.js +0 -1
  43. package/bundle/web-dist/client/assets/use-oauth-login-flow-Bzdh28Ws.js +0 -1
  44. package/bundle/web-dist/client/assets/use-update-token-mutation-CfJKaxmR.js +0 -1
  45. package/bundle/web-dist/client/assets/vendor-react-CUFFrVN9.js +0 -244
  46. package/bundle/web-dist/client/assets/vendor-tanstack-Bf_jag9G.js +0 -1
  47. package/bundle/web-dist/server/assets/logs-B3OTd9hy.js +0 -825
  48. package/bundle/web-dist/server/assets/plus-DwG7h9kq.js +0 -28
  49. package/bundle/web-dist/server/assets/refresh-cw-mMBkwOq0.js +0 -44
  50. package/bundle/web-dist/server/assets/settings-C3gbGk0m.js +0 -830
  51. package/bundle/web-dist/server/assets/tokens-CZjH3cB7.js +0 -1038
@@ -1,8 +1,8 @@
1
- import { C as number, E as union, F as require_react, P as require_jsx_runtime, Q as __commonJSMin, S as looseObject, T as string, b as json, h as array, i as RequestLogStepService, j as useQuery, k as require_jsx_dev_runtime, l as isSonamuError, r as RequestLogService, tt as __toESM, w as object } from "./services.generated-DQATJ6qf.js";
2
- import { a as Link } from "./lazyRouteComponent-D8iTIHyn.js";
1
+ import { $ as __toESM, C as number, E as union, M as require_jsx_runtime, N as require_react, S as looseObject, T as string, X as __commonJSMin, b as json, h as array, i as RequestLogStepService, k as useQuery, l as isSonamuError, r as RequestLogService, w as object } from "./services.generated-CMJ8AHbO.js";
2
+ import { a as Link } from "./lazyRouteComponent-AKiHfZWp.js";
3
3
  import { c as remarkGfm, l as Markdown, o as lucideX, t as Route } from "../entry-server.generated.js";
4
4
  import { n as formatMicroUsd, t as cacheHitRate } from "./cost-BC9yzyA9.js";
5
- import { n as lucideZap, t as requestModelDisplay } from "./request-model-I6OdODSH.js";
5
+ import { n as lucideZap, t as requestModelDisplay } from "./request-model-eHE6YbaF.js";
6
6
  //#region ../../node_modules/.pnpm/@babel+runtime@7.29.2/node_modules/@babel/runtime/helpers/extends.js
7
7
  var require_extends = /* @__PURE__ */ __commonJSMin(((exports, module) => {
8
8
  function _extends() {
@@ -1835,130 +1835,80 @@ var lightTheme = {
1835
1835
  };
1836
1836
  //#endregion
1837
1837
  //#region ~icons/lucide/arrow-left.jsx
1838
- var import_jsx_dev_runtime = require_jsx_dev_runtime();
1839
- var _jsxFileName$4 = "~icons/lucide/arrow-left.jsx";
1840
- var lucideArrowLeft = (props) => /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("svg", {
1838
+ var lucideArrowLeft = (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", {
1841
1839
  viewBox: "0 0 24 24",
1842
1840
  width: "1.2em",
1843
1841
  height: "1.2em",
1844
1842
  ...props,
1845
- children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("path", {
1843
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
1846
1844
  fill: "none",
1847
1845
  stroke: "currentColor",
1848
1846
  strokeLinecap: "round",
1849
1847
  strokeLinejoin: "round",
1850
1848
  strokeWidth: 2,
1851
1849
  d: "m12 19l-7-7l7-7m7 7H5"
1852
- }, void 0, false, {
1853
- fileName: _jsxFileName$4,
1854
- lineNumber: 2,
1855
- columnNumber: 99
1856
- }, void 0)
1857
- }, void 0, false, {
1858
- fileName: _jsxFileName$4,
1859
- lineNumber: 2,
1860
- columnNumber: 34
1861
- }, void 0);
1850
+ })
1851
+ });
1862
1852
  //#endregion
1863
1853
  //#region ~icons/lucide/check.jsx
1864
- var _jsxFileName$3 = "~icons/lucide/check.jsx";
1865
- var lucideCheck = (props) => /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("svg", {
1854
+ var lucideCheck = (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", {
1866
1855
  viewBox: "0 0 24 24",
1867
1856
  width: "1.2em",
1868
1857
  height: "1.2em",
1869
1858
  ...props,
1870
- children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("path", {
1859
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
1871
1860
  fill: "none",
1872
1861
  stroke: "currentColor",
1873
1862
  strokeLinecap: "round",
1874
1863
  strokeLinejoin: "round",
1875
1864
  strokeWidth: 2,
1876
1865
  d: "M20 6L9 17l-5-5"
1877
- }, void 0, false, {
1878
- fileName: _jsxFileName$3,
1879
- lineNumber: 2,
1880
- columnNumber: 95
1881
- }, void 0)
1882
- }, void 0, false, {
1883
- fileName: _jsxFileName$3,
1884
- lineNumber: 2,
1885
- columnNumber: 30
1886
- }, void 0);
1866
+ })
1867
+ });
1887
1868
  //#endregion
1888
1869
  //#region ~icons/lucide/chevron-down.jsx
1889
- var _jsxFileName$2 = "~icons/lucide/chevron-down.jsx";
1890
- var lucideChevronDown = (props) => /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("svg", {
1870
+ var lucideChevronDown = (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", {
1891
1871
  viewBox: "0 0 24 24",
1892
1872
  width: "1.2em",
1893
1873
  height: "1.2em",
1894
1874
  ...props,
1895
- children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("path", {
1875
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
1896
1876
  fill: "none",
1897
1877
  stroke: "currentColor",
1898
1878
  strokeLinecap: "round",
1899
1879
  strokeLinejoin: "round",
1900
1880
  strokeWidth: 2,
1901
1881
  d: "m6 9l6 6l6-6"
1902
- }, void 0, false, {
1903
- fileName: _jsxFileName$2,
1904
- lineNumber: 2,
1905
- columnNumber: 101
1906
- }, void 0)
1907
- }, void 0, false, {
1908
- fileName: _jsxFileName$2,
1909
- lineNumber: 2,
1910
- columnNumber: 36
1911
- }, void 0);
1882
+ })
1883
+ });
1912
1884
  //#endregion
1913
1885
  //#region ~icons/lucide/copy.jsx
1914
- var _jsxFileName$1 = "~icons/lucide/copy.jsx";
1915
- var lucideCopy = (props) => /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("svg", {
1886
+ var lucideCopy = (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", {
1916
1887
  viewBox: "0 0 24 24",
1917
1888
  width: "1.2em",
1918
1889
  height: "1.2em",
1919
1890
  ...props,
1920
- children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("g", {
1891
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", {
1921
1892
  fill: "none",
1922
1893
  stroke: "currentColor",
1923
1894
  strokeLinecap: "round",
1924
1895
  strokeLinejoin: "round",
1925
1896
  strokeWidth: 2,
1926
- children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("rect", {
1897
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("rect", {
1927
1898
  width: 14,
1928
1899
  height: 14,
1929
1900
  x: 8,
1930
1901
  y: 8,
1931
1902
  rx: 2,
1932
1903
  ry: 2
1933
- }, void 0, false, {
1934
- fileName: _jsxFileName$1,
1935
- lineNumber: 2,
1936
- columnNumber: 192
1937
- }, void 0), /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2" }, void 0, false, {
1938
- fileName: _jsxFileName$1,
1939
- lineNumber: 2,
1940
- columnNumber: 249
1941
- }, void 0)]
1942
- }, void 0, true, {
1943
- fileName: _jsxFileName$1,
1944
- lineNumber: 2,
1945
- columnNumber: 94
1946
- }, void 0)
1947
- }, void 0, false, {
1948
- fileName: _jsxFileName$1,
1949
- lineNumber: 2,
1950
- columnNumber: 29
1951
- }, void 0);
1904
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2" })]
1905
+ })
1906
+ });
1952
1907
  //#endregion
1953
1908
  //#region src/routes/requests/show.tsx?tsr-split=component
1954
- var _jsxFileName = "/home/runner/work/qgrid/qgrid/packages/web/src/routes/requests/show.tsx?tsr-split=component";
1955
1909
  function RequestShowPage() {
1956
1910
  const { id } = Route.useSearch();
1957
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(RequestDetail, { id }, void 0, false, {
1958
- fileName: _jsxFileName,
1959
- lineNumber: 28,
1960
- columnNumber: 10
1961
- }, this);
1911
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RequestDetail, { id });
1962
1912
  }
1963
1913
  function formatNum(n) {
1964
1914
  return n.toLocaleString();
@@ -1994,24 +1944,12 @@ function CopyButton({ text, dark }) {
1994
1944
  navigator.clipboard.writeText(text);
1995
1945
  setCopied(true);
1996
1946
  };
1997
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("button", {
1947
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
1998
1948
  type: "button",
1999
1949
  className: `absolute top-2 right-2 p-1 rounded transition-colors ${dark ? "text-sand-500 hover:text-sand-300" : "text-sand-400 hover:text-sand-600"}`,
2000
1950
  onClick: handleCopy,
2001
- children: copied ? /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(lucideCheck, { className: "size-3.5 text-sage-500" }, void 0, false, {
2002
- fileName: _jsxFileName,
2003
- lineNumber: 82,
2004
- columnNumber: 17
2005
- }, this) : /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(lucideCopy, { className: "size-3.5" }, void 0, false, {
2006
- fileName: _jsxFileName,
2007
- lineNumber: 82,
2008
- columnNumber: 68
2009
- }, this)
2010
- }, void 0, false, {
2011
- fileName: _jsxFileName,
2012
- lineNumber: 81,
2013
- columnNumber: 10
2014
- }, this);
1951
+ children: copied ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(lucideCheck, { className: "size-3.5 text-sage-500" }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(lucideCopy, { className: "size-3.5" })
1952
+ });
2015
1953
  }
2016
1954
  var DATA_IMAGE_TAG_RE = /<img\s+[^>]*src=["'](data:image\/[^"']+;base64,[^"']+)["'][^>]*(?:alt=["']([^"']*)["'][^>]*)?\/?>/gi;
2017
1955
  function parseImageSegments(text) {
@@ -2039,178 +1977,94 @@ function parseImageSegments(text) {
2039
1977
  function ImageAwareContent({ text, markdown }) {
2040
1978
  const [viewerSrc, setViewerSrc] = (0, import_react.useState)(null);
2041
1979
  const segments = parseImageSegments(text);
2042
- if (!segments.some((segment) => segment.type === "image")) return markdown ? /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
1980
+ if (!segments.some((segment) => segment.type === "image")) return markdown ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
2043
1981
  className: "prose prose-sm prose-qgrid max-w-none",
2044
- children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Markdown, {
1982
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Markdown, {
2045
1983
  remarkPlugins: [remarkGfm],
2046
1984
  children: text
2047
- }, void 0, false, {
2048
- fileName: _jsxFileName,
2049
- lineNumber: 128,
2050
- columnNumber: 9
2051
- }, this)
2052
- }, void 0, false, {
2053
- fileName: _jsxFileName,
2054
- lineNumber: 127,
2055
- columnNumber: 23
2056
- }, this) : /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("pre", {
1985
+ })
1986
+ }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("pre", {
2057
1987
  className: "text-sm text-sand-800 whitespace-pre-wrap wrap-break-word font-mono leading-relaxed",
2058
1988
  children: text
2059
- }, void 0, false, {
2060
- fileName: _jsxFileName,
2061
- lineNumber: 129,
2062
- columnNumber: 16
2063
- }, this);
2064
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
1989
+ });
1990
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
2065
1991
  className: "space-y-3",
2066
- children: [segments.map((segment, index) => segment.type === "text" ? markdown ? /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
1992
+ children: [segments.map((segment, index) => segment.type === "text" ? markdown ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
2067
1993
  className: "prose prose-sm prose-qgrid max-w-none",
2068
- children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Markdown, {
1994
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Markdown, {
2069
1995
  remarkPlugins: [remarkGfm],
2070
1996
  children: segment.text
2071
- }, void 0, false, {
2072
- fileName: _jsxFileName,
2073
- lineNumber: 135,
2074
- columnNumber: 15
2075
- }, this)
2076
- }, `text-${index}`, false, {
2077
- fileName: _jsxFileName,
2078
- lineNumber: 134,
2079
- columnNumber: 78
2080
- }, this) : /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("pre", {
1997
+ })
1998
+ }, `text-${index}`) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("pre", {
2081
1999
  className: "text-sm text-sand-800 whitespace-pre-wrap wrap-break-word font-mono leading-relaxed",
2082
2000
  children: segment.text
2083
- }, `text-${index}`, false, {
2084
- fileName: _jsxFileName,
2085
- lineNumber: 136,
2086
- columnNumber: 22
2087
- }, this) : /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("button", {
2001
+ }, `text-${index}`) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
2088
2002
  type: "button",
2089
2003
  className: "block max-w-full rounded-md border border-sand-200 overflow-hidden bg-white hover:border-sienna-300 transition-colors",
2090
2004
  onClick: () => setViewerSrc(segment.src),
2091
2005
  title: "Open image",
2092
- children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("img", {
2006
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
2093
2007
  src: segment.src,
2094
2008
  alt: segment.alt,
2095
2009
  className: "max-h-[520px] max-w-full object-contain",
2096
2010
  loading: "lazy"
2097
- }, void 0, false, {
2098
- fileName: _jsxFileName,
2099
- lineNumber: 139,
2100
- columnNumber: 13
2101
- }, this)
2102
- }, `image-${index}`, false, {
2103
- fileName: _jsxFileName,
2104
- lineNumber: 138,
2105
- columnNumber: 22
2106
- }, this)), viewerSrc && /* @__PURE__ */ (void 0)("div", {
2011
+ })
2012
+ }, `image-${index}`)), viewerSrc && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
2107
2013
  className: "fixed inset-0 z-50 bg-black/70 p-4 flex items-center justify-center",
2108
2014
  onClick: () => setViewerSrc(null),
2109
- children: [/* @__PURE__ */ (void 0)("button", {
2015
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
2110
2016
  type: "button",
2111
2017
  className: "absolute top-4 right-4 p-2 rounded-full bg-white/90 text-sand-700 hover:bg-white",
2112
2018
  onClick: () => setViewerSrc(null),
2113
2019
  title: "Close image",
2114
- children: /* @__PURE__ */ (void 0)(lucideX, { className: "size-5" }, void 0, false, {
2115
- fileName: _jsxFileName,
2116
- lineNumber: 143,
2117
- columnNumber: 13
2118
- }, this)
2119
- }, void 0, false, {
2120
- fileName: _jsxFileName,
2121
- lineNumber: 142,
2122
- columnNumber: 11
2123
- }, this), /* @__PURE__ */ (void 0)("img", {
2020
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(lucideX, { className: "size-5" })
2021
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
2124
2022
  src: viewerSrc,
2125
2023
  alt: "generated preview",
2126
2024
  className: "max-h-full max-w-full object-contain rounded-md bg-white",
2127
2025
  onClick: (e) => e.stopPropagation()
2128
- }, void 0, false, {
2129
- fileName: _jsxFileName,
2130
- lineNumber: 145,
2131
- columnNumber: 11
2132
- }, this)]
2133
- }, void 0, true, {
2134
- fileName: _jsxFileName,
2135
- lineNumber: 141,
2136
- columnNumber: 21
2137
- }, this)]
2138
- }, void 0, true, {
2139
- fileName: _jsxFileName,
2140
- lineNumber: 133,
2141
- columnNumber: 10
2142
- }, this);
2026
+ })]
2027
+ })]
2028
+ });
2143
2029
  }
2144
2030
  function FormattedContent({ text, markdown }) {
2145
2031
  const parsed = tryParseJson(text);
2146
2032
  const [mode, setMode] = (0, import_react.useState)("pretty");
2147
2033
  const jsonContainer = parsed.ok && parsed.value instanceof Object ? parsed.value : null;
2148
2034
  if (!parsed.ok || jsonContainer === null) {
2149
- if (markdown) return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(ImageAwareContent, {
2035
+ if (markdown) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ImageAwareContent, {
2150
2036
  text,
2151
2037
  markdown: true
2152
- }, void 0, false, {
2153
- fileName: _jsxFileName,
2154
- lineNumber: 163,
2155
- columnNumber: 14
2156
- }, this);
2157
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(ImageAwareContent, { text: parsed.ok ? JSON.stringify(parsed.value, null, 2) : text }, void 0, false, {
2158
- fileName: _jsxFileName,
2159
- lineNumber: 165,
2160
- columnNumber: 12
2161
- }, this);
2038
+ });
2039
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ImageAwareContent, { text: parsed.ok ? JSON.stringify(parsed.value, null, 2) : text });
2162
2040
  }
2163
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2041
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
2164
2042
  className: "flex gap-1 mb-2",
2165
- children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("button", {
2043
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
2166
2044
  type: "button",
2167
2045
  className: `px-2 py-0.5 text-[10px] rounded-md transition-colors ${mode === "plain" ? "bg-sand-200 text-sand-700" : "text-sand-400 hover:text-sand-600"}`,
2168
2046
  onClick: () => setMode("plain"),
2169
2047
  children: "Plain"
2170
- }, void 0, false, {
2171
- fileName: _jsxFileName,
2172
- lineNumber: 169,
2173
- columnNumber: 9
2174
- }, this), /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("button", {
2048
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
2175
2049
  type: "button",
2176
2050
  className: `px-2 py-0.5 text-[10px] rounded-md transition-colors ${mode === "pretty" ? "bg-sand-200 text-sand-700" : "text-sand-400 hover:text-sand-600"}`,
2177
2051
  onClick: () => setMode("pretty"),
2178
2052
  children: "Pretty"
2179
- }, void 0, false, {
2180
- fileName: _jsxFileName,
2181
- lineNumber: 172,
2182
- columnNumber: 9
2183
- }, this)]
2184
- }, void 0, true, {
2185
- fileName: _jsxFileName,
2186
- lineNumber: 168,
2187
- columnNumber: 7
2188
- }, this), mode === "pretty" ? /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(JsonView, {
2053
+ })]
2054
+ }), mode === "pretty" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(JsonView, {
2189
2055
  value: jsonContainer,
2190
2056
  style: lightTheme,
2191
2057
  displayDataTypes: false,
2192
2058
  enableClipboard: true,
2193
2059
  collapsed: false
2194
- }, void 0, false, {
2195
- fileName: _jsxFileName,
2196
- lineNumber: 176,
2197
- columnNumber: 28
2198
- }, this) : /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("pre", {
2060
+ }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("pre", {
2199
2061
  className: "text-sm text-sand-800 whitespace-pre-wrap wrap-break-word font-mono leading-relaxed",
2200
2062
  children: JSON.stringify(parsed.value, null, 2)
2201
- }, void 0, false, {
2202
- fileName: _jsxFileName,
2203
- lineNumber: 176,
2204
- columnNumber: 143
2205
- }, this)] }, void 0, true, {
2206
- fileName: _jsxFileName,
2207
- lineNumber: 167,
2208
- columnNumber: 10
2209
- }, this);
2063
+ })] });
2210
2064
  }
2211
2065
  function Section({ title, defaultOpen = true, headerMetadata, onOpenChange, children }) {
2212
2066
  const [open, setOpen] = (0, import_react.useState)(defaultOpen);
2213
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("details", {
2067
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("details", {
2214
2068
  open,
2215
2069
  className: "group panel overflow-hidden",
2216
2070
  onToggle: (event) => {
@@ -2218,72 +2072,36 @@ function Section({ title, defaultOpen = true, headerMetadata, onOpenChange, chil
2218
2072
  setOpen(nextOpen);
2219
2073
  onOpenChange?.(nextOpen);
2220
2074
  },
2221
- children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("summary", {
2075
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("summary", {
2222
2076
  className: "panel-header flex min-w-0 items-center gap-1.5 whitespace-nowrap cursor-pointer select-none list-none px-4 py-2.5",
2223
2077
  children: [
2224
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(lucideChevronDown, { className: "size-3.5 shrink-0 text-sand-400 transition-transform group-open:rotate-0 -rotate-90" }, void 0, false, {
2225
- fileName: _jsxFileName,
2226
- lineNumber: 201,
2227
- columnNumber: 9
2228
- }, this),
2229
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", {
2078
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(lucideChevronDown, { className: "size-3.5 shrink-0 text-sand-400 transition-transform group-open:rotate-0 -rotate-90" }),
2079
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
2230
2080
  className: "shrink-0 text-[11px] uppercase tracking-wider text-sand-500 font-medium",
2231
2081
  children: title
2232
- }, void 0, false, {
2233
- fileName: _jsxFileName,
2234
- lineNumber: 202,
2235
- columnNumber: 9
2236
- }, this),
2237
- headerMetadata && /* @__PURE__ */ (void 0)("span", {
2082
+ }),
2083
+ headerMetadata && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
2238
2084
  className: "flex min-w-0 flex-1 items-center gap-1.5 overflow-hidden whitespace-nowrap text-[11px] normal-case text-sand-400",
2239
2085
  children: headerMetadata
2240
- }, void 0, false, {
2241
- fileName: _jsxFileName,
2242
- lineNumber: 205,
2243
- columnNumber: 28
2244
- }, this)
2086
+ })
2245
2087
  ]
2246
- }, void 0, true, {
2247
- fileName: _jsxFileName,
2248
- lineNumber: 200,
2249
- columnNumber: 7
2250
- }, this), /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2088
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
2251
2089
  className: "p-4",
2252
2090
  children
2253
- }, void 0, false, {
2254
- fileName: _jsxFileName,
2255
- lineNumber: 209,
2256
- columnNumber: 7
2257
- }, this)]
2258
- }, void 0, true, {
2259
- fileName: _jsxFileName,
2260
- lineNumber: 195,
2261
- columnNumber: 10
2262
- }, this);
2091
+ })]
2092
+ });
2263
2093
  }
2264
2094
  function Metric({ label, value }) {
2265
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2095
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
2266
2096
  className: "min-w-0",
2267
- children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("dt", {
2097
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("dt", {
2268
2098
  className: "text-[10px] uppercase tracking-wider text-sand-400 font-medium truncate",
2269
2099
  children: label
2270
- }, void 0, false, {
2271
- fileName: _jsxFileName,
2272
- lineNumber: 220,
2273
- columnNumber: 7
2274
- }, this), /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("dd", {
2100
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("dd", {
2275
2101
  className: "text-[15px] font-semibold text-sand-800 tabular-nums mt-0.5 truncate",
2276
2102
  children: value
2277
- }, void 0, false, {
2278
- fileName: _jsxFileName,
2279
- lineNumber: 223,
2280
- columnNumber: 7
2281
- }, this)]
2282
- }, void 0, true, {
2283
- fileName: _jsxFileName,
2284
- lineNumber: 219,
2285
- columnNumber: 10
2286
- }, this);
2103
+ })]
2104
+ });
2287
2105
  }
2288
2106
  var STATUS_STYLE = new Map([
2289
2107
  ["running", "bg-blue-100 text-blue-600"],
@@ -2292,42 +2110,22 @@ var STATUS_STYLE = new Map([
2292
2110
  ["aborted", "bg-caution-400/15 text-caution-500"]
2293
2111
  ]);
2294
2112
  function ErrorPanel({ message }) {
2295
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2113
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
2296
2114
  className: "panel overflow-hidden border border-red-200 bg-red-50/60",
2297
- children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2115
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
2298
2116
  className: "px-4 py-2.5 border-b border-red-100 flex items-center gap-1.5",
2299
- children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", {
2117
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
2300
2118
  className: "text-[11px] uppercase tracking-wider text-red-600 font-medium",
2301
2119
  children: "Error"
2302
- }, void 0, false, {
2303
- fileName: _jsxFileName,
2304
- lineNumber: 236,
2305
- columnNumber: 9
2306
- }, this)
2307
- }, void 0, false, {
2308
- fileName: _jsxFileName,
2309
- lineNumber: 235,
2310
- columnNumber: 7
2311
- }, this), /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2120
+ })
2121
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
2312
2122
  className: "p-4",
2313
- children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("pre", {
2123
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("pre", {
2314
2124
  className: "text-[12px] text-red-700 whitespace-pre-wrap break-words font-mono leading-relaxed max-h-80 overflow-auto",
2315
2125
  children: message
2316
- }, void 0, false, {
2317
- fileName: _jsxFileName,
2318
- lineNumber: 239,
2319
- columnNumber: 9
2320
- }, this)
2321
- }, void 0, false, {
2322
- fileName: _jsxFileName,
2323
- lineNumber: 238,
2324
- columnNumber: 7
2325
- }, this)]
2326
- }, void 0, true, {
2327
- fileName: _jsxFileName,
2328
- lineNumber: 234,
2329
- columnNumber: 10
2330
- }, this);
2126
+ })
2127
+ })]
2128
+ });
2331
2129
  }
2332
2130
  function HeaderBar({ data }) {
2333
2131
  const isRunning = data.status === "running";
@@ -2338,227 +2136,119 @@ function HeaderBar({ data }) {
2338
2136
  imageCostMethod: data.image_cost_method
2339
2137
  });
2340
2138
  const hasRequestedOnly = !isRunning && data.requested_model_name !== null && data.model_name === null;
2341
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2139
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
2342
2140
  className: "panel overflow-hidden px-4 py-3 flex flex-wrap items-center gap-x-2 gap-y-1.5 sm:px-5",
2343
2141
  children: [
2344
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", {
2142
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
2345
2143
  className: "text-[15px] font-semibold text-sand-900 break-all",
2346
2144
  children: modelDisplay.label === "—" ? "Unknown model" : modelDisplay.label
2347
- }, void 0, false, {
2348
- fileName: _jsxFileName,
2349
- lineNumber: 261,
2350
- columnNumber: 7
2351
- }, this),
2352
- hasRequestedOnly && /* @__PURE__ */ (void 0)("span", {
2145
+ }),
2146
+ hasRequestedOnly && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
2353
2147
  className: "text-[10px] text-sand-400",
2354
2148
  children: "요청"
2355
- }, void 0, false, {
2356
- fileName: _jsxFileName,
2357
- lineNumber: 264,
2358
- columnNumber: 28
2359
- }, this),
2360
- data.service_tier === "fast" && /* @__PURE__ */ (void 0)("span", {
2149
+ }),
2150
+ data.service_tier === "fast" && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
2361
2151
  title: "Fast 모드",
2362
2152
  className: "inline-flex shrink-0",
2363
- children: /* @__PURE__ */ (void 0)(lucideZap, {
2153
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(lucideZap, {
2364
2154
  "aria-label": "Fast 모드",
2365
2155
  className: "size-3.5 text-[#1877F2] [&_path]:fill-current"
2366
- }, void 0, false, {
2367
- fileName: _jsxFileName,
2368
- lineNumber: 266,
2369
- columnNumber: 11
2370
- }, this)
2371
- }, void 0, false, {
2372
- fileName: _jsxFileName,
2373
- lineNumber: 265,
2374
- columnNumber: 40
2375
- }, this),
2376
- !isRunning && (data.fallback_count ?? 0) > 0 && /* @__PURE__ */ (void 0)("span", {
2156
+ })
2157
+ }),
2158
+ !isRunning && (data.fallback_count ?? 0) > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
2377
2159
  className: "text-[10px] px-1.5 py-0.5 rounded-full bg-caution-400/15 text-caution-500 font-medium uppercase",
2378
2160
  children: ["fallback ×", data.fallback_count]
2379
- }, void 0, true, {
2380
- fileName: _jsxFileName,
2381
- lineNumber: 268,
2382
- columnNumber: 56
2383
- }, this),
2384
- !isRunning && data.status !== "succeeded" && /* @__PURE__ */ (void 0)("span", {
2161
+ }),
2162
+ !isRunning && data.status !== "succeeded" && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
2385
2163
  className: `text-[10px] px-1.5 py-0.5 rounded-full font-medium uppercase ${STATUS_STYLE.get(data.status) ?? "bg-sand-100 text-sand-500"}`,
2386
2164
  children: data.status
2387
- }, void 0, false, {
2388
- fileName: _jsxFileName,
2389
- lineNumber: 271,
2390
- columnNumber: 53
2391
- }, this),
2392
- data.response_json_ok === false && /* @__PURE__ */ (void 0)("span", {
2165
+ }),
2166
+ data.response_json_ok === false && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
2393
2167
  title: "structured 요청의 응답이 JSON 파싱에 실패했습니다",
2394
2168
  className: "text-[10px] px-1.5 py-0.5 rounded-full bg-caution-400/15 text-caution-500 font-medium uppercase",
2395
2169
  children: "broken json"
2396
- }, void 0, false, {
2397
- fileName: _jsxFileName,
2398
- lineNumber: 274,
2399
- columnNumber: 43
2400
- }, this),
2401
- data.effort && /* @__PURE__ */ (void 0)("span", {
2170
+ }),
2171
+ data.effort && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
2402
2172
  className: "text-[11px] px-1.5 py-0.5 rounded-md bg-sand-100 text-sand-500 font-mono",
2403
2173
  children: ["effort=", data.effort]
2404
- }, void 0, true, {
2405
- fileName: _jsxFileName,
2406
- lineNumber: 277,
2407
- columnNumber: 23
2408
- }, this),
2409
- data.project_name && /* @__PURE__ */ (void 0)("span", {
2174
+ }),
2175
+ data.project_name && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
2410
2176
  className: "text-[12px] text-sand-400",
2411
2177
  children: ["· project=", data.project_name]
2412
- }, void 0, true, {
2413
- fileName: _jsxFileName,
2414
- lineNumber: 280,
2415
- columnNumber: 29
2416
- }, this),
2417
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", {
2178
+ }),
2179
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
2418
2180
  className: "ml-auto text-[11px] text-sand-400",
2419
2181
  children: data.token_name
2420
- }, void 0, false, {
2421
- fileName: _jsxFileName,
2422
- lineNumber: 281,
2423
- columnNumber: 7
2424
- }, this)
2182
+ })
2425
2183
  ]
2426
- }, void 0, true, {
2427
- fileName: _jsxFileName,
2428
- lineNumber: 260,
2429
- columnNumber: 5
2430
- }, this);
2184
+ });
2431
2185
  }
2432
2186
  function MetricsPanel({ data, toolCallCount }) {
2433
2187
  const tokensPerSecEnabled = isTokensPerSecEnabled(data);
2434
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2188
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
2435
2189
  className: "panel overflow-hidden px-5 py-3 space-y-3",
2436
- children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2190
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
2437
2191
  className: "grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-x-6 gap-y-3",
2438
2192
  children: [
2439
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Metric, {
2193
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Metric, {
2440
2194
  label: "Duration",
2441
2195
  value: `${(data.duration_ms / 1e3).toFixed(1)}s`
2442
- }, void 0, false, {
2443
- fileName: _jsxFileName,
2444
- lineNumber: 295,
2445
- columnNumber: 9
2446
- }, this),
2447
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Metric, {
2196
+ }),
2197
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Metric, {
2448
2198
  label: "TTFT",
2449
2199
  value: formatRunTtftMs(data.ttft_ms)
2450
- }, void 0, false, {
2451
- fileName: _jsxFileName,
2452
- lineNumber: 296,
2453
- columnNumber: 9
2454
- }, this),
2455
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Metric, {
2200
+ }),
2201
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Metric, {
2456
2202
  label: "Tokens/sec",
2457
2203
  value: formatTokensPerSec(data.output_tokens, data.duration_ms, data.ttft_ms, tokensPerSecEnabled)
2458
- }, void 0, false, {
2459
- fileName: _jsxFileName,
2460
- lineNumber: 297,
2461
- columnNumber: 9
2462
- }, this),
2463
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Metric, {
2204
+ }),
2205
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Metric, {
2464
2206
  label: "Driver",
2465
2207
  value: data.cost_usd !== null ? formatMicroUsd(data.cost_usd) : "—"
2466
- }, void 0, false, {
2467
- fileName: _jsxFileName,
2468
- lineNumber: 298,
2469
- columnNumber: 9
2470
- }, this),
2471
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Metric, {
2208
+ }),
2209
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Metric, {
2472
2210
  label: "Image",
2473
2211
  value: data.image_cost_usd !== null ? formatMicroUsd(data.image_cost_usd) : "—"
2474
- }, void 0, false, {
2475
- fileName: _jsxFileName,
2476
- lineNumber: 299,
2477
- columnNumber: 9
2478
- }, this),
2479
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Metric, {
2212
+ }),
2213
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Metric, {
2480
2214
  label: "Tool Calls",
2481
2215
  value: `${toolCallCount}회`
2482
- }, void 0, false, {
2483
- fileName: _jsxFileName,
2484
- lineNumber: 300,
2485
- columnNumber: 9
2486
- }, this)
2216
+ })
2487
2217
  ]
2488
- }, void 0, true, {
2489
- fileName: _jsxFileName,
2490
- lineNumber: 294,
2491
- columnNumber: 7
2492
- }, this), /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2218
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
2493
2219
  className: "border-t border-sand-100/60 pt-3 grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-x-6 gap-y-3",
2494
2220
  children: [
2495
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Metric, {
2221
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Metric, {
2496
2222
  label: "Input",
2497
2223
  value: formatNum(data.input_tokens)
2498
- }, void 0, false, {
2499
- fileName: _jsxFileName,
2500
- lineNumber: 303,
2501
- columnNumber: 9
2502
- }, this),
2503
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Metric, {
2224
+ }),
2225
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Metric, {
2504
2226
  label: "Output",
2505
2227
  value: formatNum(data.output_tokens)
2506
- }, void 0, false, {
2507
- fileName: _jsxFileName,
2508
- lineNumber: 304,
2509
- columnNumber: 9
2510
- }, this),
2511
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Metric, {
2228
+ }),
2229
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Metric, {
2512
2230
  label: "Cache Read",
2513
2231
  value: formatNum(data.cache_read_tokens)
2514
- }, void 0, false, {
2515
- fileName: _jsxFileName,
2516
- lineNumber: 305,
2517
- columnNumber: 9
2518
- }, this),
2519
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Metric, {
2232
+ }),
2233
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Metric, {
2520
2234
  label: "Cache Write",
2521
2235
  value: formatNum(data.cache_creation_tokens)
2522
- }, void 0, false, {
2523
- fileName: _jsxFileName,
2524
- lineNumber: 306,
2525
- columnNumber: 9
2526
- }, this),
2527
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Metric, {
2236
+ }),
2237
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Metric, {
2528
2238
  label: "Cache Write (5m)",
2529
2239
  value: data.cache_creation_5m_tokens === null ? "—" : formatNum(data.cache_creation_5m_tokens)
2530
- }, void 0, false, {
2531
- fileName: _jsxFileName,
2532
- lineNumber: 307,
2533
- columnNumber: 9
2534
- }, this),
2535
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Metric, {
2240
+ }),
2241
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Metric, {
2536
2242
  label: "Cache Write (1h)",
2537
2243
  value: data.cache_creation_1h_tokens === null ? "—" : formatNum(data.cache_creation_1h_tokens)
2538
- }, void 0, false, {
2539
- fileName: _jsxFileName,
2540
- lineNumber: 308,
2541
- columnNumber: 9
2542
- }, this),
2543
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Metric, {
2244
+ }),
2245
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Metric, {
2544
2246
  label: "Cache Hit",
2545
2247
  value: cacheHitRate(data)
2546
- }, void 0, false, {
2547
- fileName: _jsxFileName,
2548
- lineNumber: 309,
2549
- columnNumber: 9
2550
- }, this)
2248
+ })
2551
2249
  ]
2552
- }, void 0, true, {
2553
- fileName: _jsxFileName,
2554
- lineNumber: 302,
2555
- columnNumber: 7
2556
- }, this)]
2557
- }, void 0, true, {
2558
- fileName: _jsxFileName,
2559
- lineNumber: 293,
2560
- columnNumber: 10
2561
- }, this);
2250
+ })]
2251
+ });
2562
2252
  }
2563
2253
  var ToolInputImage = object({
2564
2254
  mediaType: string().optional(),
@@ -2606,28 +2296,16 @@ function formatTokensPerSec(outputTokens, durationMs, ttftMs, enabled) {
2606
2296
  return `${Math.round(outputTokens / (generationMs / 1e3)).toLocaleString()} tok/s`;
2607
2297
  }
2608
2298
  function CompactMetric({ label, value }) {
2609
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2299
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
2610
2300
  className: "min-w-0 self-end",
2611
- children: [label && /* @__PURE__ */ (void 0)("div", {
2301
+ children: [label && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
2612
2302
  className: "text-[10px] uppercase tracking-wider text-sand-400 font-medium truncate",
2613
2303
  children: label
2614
- }, void 0, false, {
2615
- fileName: _jsxFileName,
2616
- lineNumber: 419,
2617
- columnNumber: 17
2618
- }, this), /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2304
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
2619
2305
  className: "mt-0.5 text-[13px] font-semibold text-sand-800 tabular-nums truncate",
2620
2306
  children: value
2621
- }, void 0, false, {
2622
- fileName: _jsxFileName,
2623
- lineNumber: 422,
2624
- columnNumber: 7
2625
- }, this)]
2626
- }, void 0, true, {
2627
- fileName: _jsxFileName,
2628
- lineNumber: 418,
2629
- columnNumber: 5
2630
- }, this);
2307
+ })]
2308
+ });
2631
2309
  }
2632
2310
  function getToolInputImages(args) {
2633
2311
  const parsedArgs = ToolInputArgs.safeParse(args);
@@ -2674,28 +2352,20 @@ function ToolInputImages({ images }) {
2674
2352
  } : null;
2675
2353
  }).filter((item) => item !== null);
2676
2354
  if (renderableImages.length === 0) return null;
2677
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", {
2355
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
2678
2356
  className: "text-[10px] uppercase tracking-wider text-sand-400 font-medium px-2",
2679
2357
  children: "Input Images"
2680
- }, void 0, false, {
2681
- fileName: _jsxFileName,
2682
- lineNumber: 483,
2683
- columnNumber: 7
2684
- }, this), /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2358
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
2685
2359
  className: "mt-1 grid grid-cols-1 sm:grid-cols-2 gap-2",
2686
2360
  children: renderableImages.map(({ image, index, src }) => {
2687
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2361
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
2688
2362
  className: "rounded-md border border-sand-200 bg-white overflow-hidden",
2689
- children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("img", {
2363
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
2690
2364
  src,
2691
2365
  alt: `reference ${index + 1}`,
2692
2366
  className: "max-h-64 w-full object-contain bg-white",
2693
2367
  loading: "lazy"
2694
- }, void 0, false, {
2695
- fileName: _jsxFileName,
2696
- lineNumber: 493,
2697
- columnNumber: 15
2698
- }, this), /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2368
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
2699
2369
  className: "px-2 py-1 text-[10px] text-sand-500 font-mono border-t border-sand-100",
2700
2370
  children: [
2701
2371
  image.mediaType ?? "image",
@@ -2703,35 +2373,15 @@ function ToolInputImages({ images }) {
2703
2373
  " ",
2704
2374
  image.byteSize !== void 0 ? `${image.byteSize.toLocaleString()} bytes` : "url"
2705
2375
  ]
2706
- }, void 0, true, {
2707
- fileName: _jsxFileName,
2708
- lineNumber: 494,
2709
- columnNumber: 15
2710
- }, this)]
2711
- }, `${image.mediaType ?? "image"}-${index}`, true, {
2712
- fileName: _jsxFileName,
2713
- lineNumber: 492,
2714
- columnNumber: 16
2715
- }, this);
2376
+ })]
2377
+ }, `${image.mediaType ?? "image"}-${index}`);
2716
2378
  })
2717
- }, void 0, false, {
2718
- fileName: _jsxFileName,
2719
- lineNumber: 486,
2720
- columnNumber: 7
2721
- }, this)] }, void 0, true, {
2722
- fileName: _jsxFileName,
2723
- lineNumber: 482,
2724
- columnNumber: 10
2725
- }, this);
2379
+ })] });
2726
2380
  }
2727
2381
  function RequestInputImages({ images, stepId }) {
2728
2382
  const { data: detail } = RequestLogStepService.useRequestLogStep("I", stepId ?? 0, { enabled: images === null && stepId !== null });
2729
2383
  const args = detail ? safeParseJson(detail.tool_args) : null;
2730
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(ToolInputImages, { images: images ?? getToolInputImages(args) }, void 0, false, {
2731
- fileName: _jsxFileName,
2732
- lineNumber: 518,
2733
- columnNumber: 10
2734
- }, this);
2384
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ToolInputImages, { images: images ?? getToolInputImages(args) });
2735
2385
  }
2736
2386
  function ToolCallItem({ entry }) {
2737
2387
  const hasError = !!entry.error;
@@ -2742,427 +2392,199 @@ function ToolCallItem({ entry }) {
2742
2392
  const resultText = string().safeParse(result);
2743
2393
  const responseText = resultText.success ? resultText.data : JSON.stringify(result);
2744
2394
  const error = detail?.error ?? entry.error;
2745
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("details", {
2395
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("details", {
2746
2396
  className: "group/tool",
2747
2397
  onToggle: (e) => setOpened(e.currentTarget.open),
2748
- children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("summary", {
2398
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("summary", {
2749
2399
  className: "flex items-center gap-2 px-3 py-2 cursor-pointer select-none list-none hover:bg-sand-50 transition-colors rounded-md",
2750
2400
  children: [
2751
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(lucideChevronDown, { className: "size-3 text-sand-400 transition-transform group-open/tool:rotate-0 -rotate-90 shrink-0" }, void 0, false, {
2752
- fileName: _jsxFileName,
2753
- lineNumber: 540,
2754
- columnNumber: 9
2755
- }, this),
2756
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", {
2401
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(lucideChevronDown, { className: "size-3 text-sand-400 transition-transform group-open/tool:rotate-0 -rotate-90 shrink-0" }),
2402
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
2757
2403
  className: "text-[10px] px-1.5 py-0.5 rounded bg-sand-100 text-sand-500 font-mono shrink-0",
2758
2404
  children: ["call ", entry.callIndex + 1]
2759
- }, void 0, true, {
2760
- fileName: _jsxFileName,
2761
- lineNumber: 541,
2762
- columnNumber: 9
2763
- }, this),
2764
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", {
2405
+ }),
2406
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
2765
2407
  className: "text-[13px] font-medium text-sand-800 font-mono truncate",
2766
2408
  children: entry.toolName
2767
- }, void 0, false, {
2768
- fileName: _jsxFileName,
2769
- lineNumber: 544,
2770
- columnNumber: 9
2771
- }, this),
2772
- hasError && /* @__PURE__ */ (void 0)("span", {
2409
+ }),
2410
+ hasError && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
2773
2411
  className: "text-[10px] px-1.5 py-0.5 rounded-full bg-red-100 text-red-600 font-medium uppercase shrink-0",
2774
2412
  children: "error"
2775
- }, void 0, false, {
2776
- fileName: _jsxFileName,
2777
- lineNumber: 547,
2778
- columnNumber: 22
2779
- }, this),
2780
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", {
2413
+ }),
2414
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
2781
2415
  className: "ml-auto text-[11px] text-sand-400 tabular-nums shrink-0",
2782
2416
  children: formatDurationMs(entry.durationMs)
2783
- }, void 0, false, {
2784
- fileName: _jsxFileName,
2785
- lineNumber: 550,
2786
- columnNumber: 9
2787
- }, this)
2417
+ })
2788
2418
  ]
2789
- }, void 0, true, {
2790
- fileName: _jsxFileName,
2791
- lineNumber: 539,
2792
- columnNumber: 7
2793
- }, this), opened && /* @__PURE__ */ (void 0)("div", {
2419
+ }), opened && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
2794
2420
  className: "mt-1 mx-1 mb-3 space-y-2",
2795
2421
  children: [
2796
- /* @__PURE__ */ (void 0)("div", { children: [/* @__PURE__ */ (void 0)("span", {
2422
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
2797
2423
  className: "text-[10px] uppercase tracking-wider text-sand-400 font-medium px-2",
2798
2424
  children: "Request"
2799
- }, void 0, false, {
2800
- fileName: _jsxFileName,
2801
- lineNumber: 556,
2802
- columnNumber: 13
2803
- }, this), /* @__PURE__ */ (void 0)("div", {
2425
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
2804
2426
  className: "mt-1 rounded-md bg-sand-50 p-3 overflow-auto",
2805
- children: /* @__PURE__ */ (void 0)(FormattedContent, { text: detail ? JSON.stringify(displayArgs) : "Loading..." }, void 0, false, {
2806
- fileName: _jsxFileName,
2807
- lineNumber: 560,
2808
- columnNumber: 15
2809
- }, this)
2810
- }, void 0, false, {
2811
- fileName: _jsxFileName,
2812
- lineNumber: 559,
2813
- columnNumber: 13
2814
- }, this)] }, void 0, true, {
2815
- fileName: _jsxFileName,
2816
- lineNumber: 555,
2817
- columnNumber: 11
2818
- }, this),
2819
- error && /* @__PURE__ */ (void 0)("div", { children: [/* @__PURE__ */ (void 0)("span", {
2427
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FormattedContent, { text: detail ? JSON.stringify(displayArgs) : "Loading..." })
2428
+ })] }),
2429
+ error && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
2820
2430
  className: "text-[10px] uppercase tracking-wider text-red-500 font-medium px-2",
2821
2431
  children: "Error"
2822
- }, void 0, false, {
2823
- fileName: _jsxFileName,
2824
- lineNumber: 564,
2825
- columnNumber: 15
2826
- }, this), /* @__PURE__ */ (void 0)("div", {
2432
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
2827
2433
  className: "mt-1 rounded-md bg-red-50 border border-red-100 p-3 overflow-auto",
2828
- children: /* @__PURE__ */ (void 0)(FormattedContent, { text: error }, void 0, false, {
2829
- fileName: _jsxFileName,
2830
- lineNumber: 568,
2831
- columnNumber: 17
2832
- }, this)
2833
- }, void 0, false, {
2834
- fileName: _jsxFileName,
2835
- lineNumber: 567,
2836
- columnNumber: 15
2837
- }, this)] }, void 0, true, {
2838
- fileName: _jsxFileName,
2839
- lineNumber: 563,
2840
- columnNumber: 21
2841
- }, this),
2842
- /* @__PURE__ */ (void 0)("div", { children: [/* @__PURE__ */ (void 0)("span", {
2434
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FormattedContent, { text: error })
2435
+ })] }),
2436
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
2843
2437
  className: "text-[10px] uppercase tracking-wider text-sand-400 font-medium px-2",
2844
2438
  children: "Response"
2845
- }, void 0, false, {
2846
- fileName: _jsxFileName,
2847
- lineNumber: 572,
2848
- columnNumber: 13
2849
- }, this), /* @__PURE__ */ (void 0)("div", {
2439
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
2850
2440
  className: "mt-1 rounded-md bg-sand-50 p-3 overflow-auto",
2851
- children: /* @__PURE__ */ (void 0)(FormattedContent, {
2441
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FormattedContent, {
2852
2442
  text: detail ? responseText : "Loading...",
2853
2443
  markdown: true
2854
- }, void 0, false, {
2855
- fileName: _jsxFileName,
2856
- lineNumber: 576,
2857
- columnNumber: 15
2858
- }, this)
2859
- }, void 0, false, {
2860
- fileName: _jsxFileName,
2861
- lineNumber: 575,
2862
- columnNumber: 13
2863
- }, this)] }, void 0, true, {
2864
- fileName: _jsxFileName,
2865
- lineNumber: 571,
2866
- columnNumber: 11
2867
- }, this)
2444
+ })
2445
+ })] })
2868
2446
  ]
2869
- }, void 0, true, {
2870
- fileName: _jsxFileName,
2871
- lineNumber: 554,
2872
- columnNumber: 18
2873
- }, this)]
2874
- }, void 0, true, {
2875
- fileName: _jsxFileName,
2876
- lineNumber: 538,
2877
- columnNumber: 10
2878
- }, this);
2447
+ })]
2448
+ });
2879
2449
  }
2880
2450
  function ReasoningBlock({ stepId }) {
2881
2451
  const [opened, setOpened] = (0, import_react.useState)(false);
2882
2452
  const { data: detail } = RequestLogStepService.useRequestLogStep("A", stepId, { enabled: opened });
2883
2453
  const reasoningText = detail?.reasoning_text ?? null;
2884
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("details", {
2454
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("details", {
2885
2455
  className: "group/reason mt-3",
2886
2456
  onToggle: (e) => setOpened(e.currentTarget.open),
2887
- children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("summary", {
2457
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("summary", {
2888
2458
  className: "flex items-center gap-2 cursor-pointer select-none list-none",
2889
- children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(lucideChevronDown, { className: "size-3 text-sand-400 transition-transform group-open/reason:rotate-0 -rotate-90 shrink-0" }, void 0, false, {
2890
- fileName: _jsxFileName,
2891
- lineNumber: 596,
2892
- columnNumber: 9
2893
- }, this), /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", {
2459
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(lucideChevronDown, { className: "size-3 text-sand-400 transition-transform group-open/reason:rotate-0 -rotate-90 shrink-0" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
2894
2460
  className: "text-[10px] uppercase tracking-wider text-sand-500 font-medium",
2895
2461
  children: "Reasoning"
2896
- }, void 0, false, {
2897
- fileName: _jsxFileName,
2898
- lineNumber: 597,
2899
- columnNumber: 9
2900
- }, this)]
2901
- }, void 0, true, {
2902
- fileName: _jsxFileName,
2903
- lineNumber: 595,
2904
- columnNumber: 7
2905
- }, this), opened && /* @__PURE__ */ (void 0)("div", {
2462
+ })]
2463
+ }), opened && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
2906
2464
  className: "mt-2 rounded-md bg-white/70 border border-sand-100 p-3 overflow-auto",
2907
- children: reasoningText ? /* @__PURE__ */ (void 0)(FormattedContent, {
2465
+ children: reasoningText ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FormattedContent, {
2908
2466
  text: reasoningText,
2909
2467
  markdown: true
2910
- }, void 0, false, {
2911
- fileName: _jsxFileName,
2912
- lineNumber: 602,
2913
- columnNumber: 28
2914
- }, this) : !detail ? /* @__PURE__ */ (void 0)("p", {
2468
+ }) : !detail ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
2915
2469
  className: "text-sm text-sand-400",
2916
2470
  children: "Loading..."
2917
- }, void 0, false, {
2918
- fileName: _jsxFileName,
2919
- lineNumber: 602,
2920
- columnNumber: 91
2921
- }, this) : /* @__PURE__ */ (void 0)("p", {
2471
+ }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
2922
2472
  className: "text-sm text-sand-400",
2923
2473
  children: "No reasoning text captured."
2924
- }, void 0, false, {
2925
- fileName: _jsxFileName,
2926
- lineNumber: 602,
2927
- columnNumber: 145
2928
- }, this)
2929
- }, void 0, false, {
2930
- fileName: _jsxFileName,
2931
- lineNumber: 601,
2932
- columnNumber: 18
2933
- }, this)]
2934
- }, void 0, true, {
2935
- fileName: _jsxFileName,
2936
- lineNumber: 594,
2937
- columnNumber: 10
2938
- }, this);
2474
+ })
2475
+ })]
2476
+ });
2939
2477
  }
2940
2478
  function StepTreeItem({ entry, tokensPerSecEnabled }) {
2941
2479
  const generate = entry.generate;
2942
2480
  const hasReasoning = generate !== null && generate.reasoningTokens !== null && generate.reasoningTokens !== void 0 && generate.reasoningTokens > 0;
2943
2481
  const errorCount = entry.toolCalls.filter((toolCall) => toolCall.error).length;
2944
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("details", {
2482
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("details", {
2945
2483
  open: true,
2946
2484
  className: "group/step border-l border-sand-200 pl-3",
2947
- children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("summary", {
2485
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("summary", {
2948
2486
  className: "flex items-center gap-2 py-2 cursor-pointer select-none list-none",
2949
2487
  children: [
2950
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(lucideChevronDown, { className: "size-3.5 text-sand-400 transition-transform group-open/step:rotate-0 -rotate-90 shrink-0" }, void 0, false, {
2951
- fileName: _jsxFileName,
2952
- lineNumber: 618,
2953
- columnNumber: 9
2954
- }, this),
2955
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", {
2488
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(lucideChevronDown, { className: "size-3.5 text-sand-400 transition-transform group-open/step:rotate-0 -rotate-90 shrink-0" }),
2489
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
2956
2490
  className: "text-[10px] px-1.5 py-0.5 rounded bg-sienna-100 text-sienna-700 font-mono shrink-0",
2957
2491
  children: ["step ", entry.stepIndex + 1]
2958
- }, void 0, true, {
2959
- fileName: _jsxFileName,
2960
- lineNumber: 619,
2961
- columnNumber: 9
2962
- }, this),
2963
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", {
2492
+ }),
2493
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
2964
2494
  className: "text-[13px] font-semibold text-sand-900",
2965
2495
  children: "LLM call"
2966
- }, void 0, false, {
2967
- fileName: _jsxFileName,
2968
- lineNumber: 622,
2969
- columnNumber: 9
2970
- }, this),
2971
- generate?.finishReason && /* @__PURE__ */ (void 0)("span", {
2496
+ }),
2497
+ generate?.finishReason && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
2972
2498
  className: "text-[10px] px-1.5 py-0.5 rounded bg-sand-100 text-sand-500 font-mono shrink-0",
2973
2499
  children: generate.finishReason
2974
- }, void 0, false, {
2975
- fileName: _jsxFileName,
2976
- lineNumber: 623,
2977
- columnNumber: 36
2978
- }, this),
2979
- generate && (generate.fallbackCount ?? 0) > 0 && /* @__PURE__ */ (void 0)("span", {
2500
+ }),
2501
+ generate && (generate.fallbackCount ?? 0) > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
2980
2502
  className: "text-[10px] px-1.5 py-0.5 rounded-full bg-caution-400/15 text-caution-500 font-medium uppercase shrink-0",
2981
2503
  children: [
2982
2504
  generate.requestedModelName,
2983
2505
  " → ",
2984
2506
  generate.modelName
2985
2507
  ]
2986
- }, void 0, true, {
2987
- fileName: _jsxFileName,
2988
- lineNumber: 626,
2989
- columnNumber: 59
2990
- }, this),
2991
- hasReasoning && /* @__PURE__ */ (void 0)("span", {
2508
+ }),
2509
+ hasReasoning && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
2992
2510
  className: "text-[10px] px-1.5 py-0.5 rounded bg-blue-100 text-blue-600 font-medium shrink-0",
2993
2511
  children: "reasoning"
2994
- }, void 0, false, {
2995
- fileName: _jsxFileName,
2996
- lineNumber: 629,
2997
- columnNumber: 26
2998
- }, this),
2999
- errorCount > 0 && /* @__PURE__ */ (void 0)("span", {
2512
+ }),
2513
+ errorCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
3000
2514
  className: "text-[10px] px-1.5 py-0.5 rounded-full bg-red-100 text-red-600 font-medium uppercase shrink-0",
3001
2515
  children: [errorCount, " error"]
3002
- }, void 0, true, {
3003
- fileName: _jsxFileName,
3004
- lineNumber: 632,
3005
- columnNumber: 28
3006
- }, this),
3007
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", {
2516
+ }),
2517
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
3008
2518
  className: "ml-auto text-[11px] text-sand-400 tabular-nums shrink-0",
3009
2519
  children: [entry.toolCalls.length, " tools"]
3010
- }, void 0, true, {
3011
- fileName: _jsxFileName,
3012
- lineNumber: 635,
3013
- columnNumber: 9
3014
- }, this)
2520
+ })
3015
2521
  ]
3016
- }, void 0, true, {
3017
- fileName: _jsxFileName,
3018
- lineNumber: 617,
3019
- columnNumber: 7
3020
- }, this), /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2522
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
3021
2523
  className: "ml-4 mb-4 space-y-3",
3022
- children: [generate && /* @__PURE__ */ (void 0)("div", {
2524
+ children: [generate && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
3023
2525
  className: "rounded-md border border-sand-100 bg-sand-50/70 p-3",
3024
- children: [/* @__PURE__ */ (void 0)("div", {
2526
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
3025
2527
  className: "grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 xl:grid-cols-8 gap-x-4 gap-y-3",
3026
2528
  children: [
3027
- /* @__PURE__ */ (void 0)(CompactMetric, {
2529
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompactMetric, {
3028
2530
  label: "Duration",
3029
2531
  value: formatDurationMs(generate.durationMs)
3030
- }, void 0, false, {
3031
- fileName: _jsxFileName,
3032
- lineNumber: 643,
3033
- columnNumber: 15
3034
- }, this),
3035
- /* @__PURE__ */ (void 0)(CompactMetric, {
2532
+ }),
2533
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompactMetric, {
3036
2534
  label: "TTFT",
3037
2535
  value: formatRunTtftMs(generate.ttftMs)
3038
- }, void 0, false, {
3039
- fileName: _jsxFileName,
3040
- lineNumber: 644,
3041
- columnNumber: 15
3042
- }, this),
3043
- /* @__PURE__ */ (void 0)(CompactMetric, {
2536
+ }),
2537
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompactMetric, {
3044
2538
  label: "Tokens/sec",
3045
2539
  value: formatTokensPerSec(generate.outputTokens, generate.durationMs, generate.ttftMs, tokensPerSecEnabled)
3046
- }, void 0, false, {
3047
- fileName: _jsxFileName,
3048
- lineNumber: 645,
3049
- columnNumber: 15
3050
- }, this),
3051
- /* @__PURE__ */ (void 0)(CompactMetric, {
2540
+ }),
2541
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompactMetric, {
3052
2542
  label: "Input",
3053
2543
  value: formatNum(generate.inputTokens ?? 0)
3054
- }, void 0, false, {
3055
- fileName: _jsxFileName,
3056
- lineNumber: 646,
3057
- columnNumber: 15
3058
- }, this),
3059
- /* @__PURE__ */ (void 0)(CompactMetric, {
2544
+ }),
2545
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompactMetric, {
3060
2546
  label: "Output",
3061
2547
  value: formatNum(generate.outputTokens ?? 0)
3062
- }, void 0, false, {
3063
- fileName: _jsxFileName,
3064
- lineNumber: 647,
3065
- columnNumber: 15
3066
- }, this),
3067
- /* @__PURE__ */ (void 0)(CompactMetric, {
2548
+ }),
2549
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompactMetric, {
3068
2550
  label: "Cache Read",
3069
2551
  value: formatNum(generate.cacheReadTokens ?? 0)
3070
- }, void 0, false, {
3071
- fileName: _jsxFileName,
3072
- lineNumber: 648,
3073
- columnNumber: 15
3074
- }, this),
3075
- /* @__PURE__ */ (void 0)(CompactMetric, {
2552
+ }),
2553
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompactMetric, {
3076
2554
  label: "Cache Write",
3077
2555
  value: formatNum(generate.cacheCreationTokens ?? 0)
3078
- }, void 0, false, {
3079
- fileName: _jsxFileName,
3080
- lineNumber: 649,
3081
- columnNumber: 15
3082
- }, this),
3083
- /* @__PURE__ */ (void 0)(CompactMetric, {
2556
+ }),
2557
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompactMetric, {
3084
2558
  label: "Cache 5m / 1h",
3085
2559
  value: `${generate.cacheCreation5mTokens === null ? "—" : formatNum(generate.cacheCreation5mTokens)} / ${generate.cacheCreation1hTokens === null ? "—" : formatNum(generate.cacheCreation1hTokens)}`
3086
- }, void 0, false, {
3087
- fileName: _jsxFileName,
3088
- lineNumber: 650,
3089
- columnNumber: 15
3090
- }, this),
3091
- /* @__PURE__ */ (void 0)(CompactMetric, { value: generate.costUsd === null ? "—" : formatMicroUsd(generate.costUsd) }, void 0, false, {
3092
- fileName: _jsxFileName,
3093
- lineNumber: 651,
3094
- columnNumber: 15
3095
- }, this),
3096
- /* @__PURE__ */ (void 0)(CompactMetric, {
2560
+ }),
2561
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompactMetric, { value: generate.costUsd === null ? "—" : formatMicroUsd(generate.costUsd) }),
2562
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompactMetric, {
3097
2563
  label: "Reasoning",
3098
2564
  value: generate.reasoningTokens !== null && generate.reasoningTokens !== void 0 ? formatNum(generate.reasoningTokens) : "—"
3099
- }, void 0, false, {
3100
- fileName: _jsxFileName,
3101
- lineNumber: 652,
3102
- columnNumber: 15
3103
- }, this)
2565
+ })
3104
2566
  ]
3105
- }, void 0, true, {
3106
- fileName: _jsxFileName,
3107
- lineNumber: 642,
3108
- columnNumber: 13
3109
- }, this), hasReasoning && /* @__PURE__ */ (void 0)(ReasoningBlock, { stepId: generate.id }, void 0, false, {
3110
- fileName: _jsxFileName,
3111
- lineNumber: 655,
3112
- columnNumber: 30
3113
- }, this)]
3114
- }, void 0, true, {
3115
- fileName: _jsxFileName,
3116
- lineNumber: 641,
3117
- columnNumber: 22
3118
- }, this), entry.toolCalls.length > 0 && /* @__PURE__ */ (void 0)("div", {
2567
+ }), hasReasoning && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ReasoningBlock, { stepId: generate.id })]
2568
+ }), entry.toolCalls.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
3119
2569
  className: "space-y-0.5",
3120
- children: entry.toolCalls.map((toolCall) => /* @__PURE__ */ (void 0)(ToolCallItem, { entry: toolCall }, `${toolCall.stepIndex}-${toolCall.callIndex}-${toolCall.toolCallId}`, false, {
3121
- fileName: _jsxFileName,
3122
- lineNumber: 659,
3123
- columnNumber: 46
3124
- }, this))
3125
- }, void 0, false, {
3126
- fileName: _jsxFileName,
3127
- lineNumber: 658,
3128
- columnNumber: 40
3129
- }, this)]
3130
- }, void 0, true, {
3131
- fileName: _jsxFileName,
3132
- lineNumber: 640,
3133
- columnNumber: 7
3134
- }, this)]
3135
- }, void 0, true, {
3136
- fileName: _jsxFileName,
3137
- lineNumber: 616,
3138
- columnNumber: 10
3139
- }, this);
2570
+ children: entry.toolCalls.map((toolCall) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ToolCallItem, { entry: toolCall }, `${toolCall.stepIndex}-${toolCall.callIndex}-${toolCall.toolCallId}`))
2571
+ })]
2572
+ })]
2573
+ });
3140
2574
  }
3141
2575
  function StepTreeSection({ steps, tokensPerSecEnabled }) {
3142
2576
  const toolCallCount = steps.reduce((sum, step) => sum + step.toolCalls.length, 0);
3143
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Section, {
2577
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Section, {
3144
2578
  title: `Steps (${steps.length} steps · ${toolCallCount} tool calls)`,
3145
2579
  defaultOpen: true,
3146
- children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2580
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
3147
2581
  className: "space-y-1",
3148
- children: steps.map((step) => /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(StepTreeItem, {
2582
+ children: steps.map((step) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StepTreeItem, {
3149
2583
  entry: step,
3150
2584
  tokensPerSecEnabled
3151
- }, step.stepIndex, false, {
3152
- fileName: _jsxFileName,
3153
- lineNumber: 674,
3154
- columnNumber: 28
3155
- }, this))
3156
- }, void 0, false, {
3157
- fileName: _jsxFileName,
3158
- lineNumber: 673,
3159
- columnNumber: 7
3160
- }, this)
3161
- }, void 0, false, {
3162
- fileName: _jsxFileName,
3163
- lineNumber: 672,
3164
- columnNumber: 10
3165
- }, this);
2585
+ }, step.stepIndex))
2586
+ })
2587
+ });
3166
2588
  }
3167
2589
  function buildStepTree(steps) {
3168
2590
  const grouped = /* @__PURE__ */ new Map();
@@ -3242,66 +2664,34 @@ function extractText(content) {
3242
2664
  return JSON.stringify(content);
3243
2665
  }
3244
2666
  function MonoPre({ className, children }) {
3245
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("pre", {
2667
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("pre", {
3246
2668
  className: `text-[12px] text-sand-700 whitespace-pre-wrap wrap-break-word font-mono leading-relaxed max-h-40 overflow-auto ${className ?? ""}`,
3247
2669
  children
3248
- }, void 0, false, {
3249
- fileName: _jsxFileName,
3250
- lineNumber: 774,
3251
- columnNumber: 10
3252
- }, this);
2670
+ });
3253
2671
  }
3254
2672
  function HistorySection({ history }) {
3255
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Section, {
2673
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Section, {
3256
2674
  title: "History",
3257
2675
  defaultOpen: false,
3258
- children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2676
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
3259
2677
  className: "space-y-1.5",
3260
2678
  children: history.map((item, i) => {
3261
2679
  const content = HistoryContent.safeParse(item.content);
3262
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2680
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
3263
2681
  className: `rounded-md px-3 py-2 ${historyItemBg(item)}`,
3264
2682
  children: [
3265
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2683
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
3266
2684
  className: "text-[10px] uppercase tracking-wider text-sand-500 font-medium mb-1",
3267
2685
  children: historyItemLabel(item)
3268
- }, void 0, false, {
3269
- fileName: _jsxFileName,
3270
- lineNumber: 788,
3271
- columnNumber: 15
3272
- }, this),
3273
- item.content !== null && item.content !== void 0 && /* @__PURE__ */ (void 0)(MonoPre, { children: content.success ? extractText(content.data) : JSON.stringify(item.content) }, void 0, false, {
3274
- fileName: _jsxFileName,
3275
- lineNumber: 791,
3276
- columnNumber: 71
3277
- }, this),
3278
- item.arguments && /* @__PURE__ */ (void 0)(MonoPre, { children: item.arguments }, void 0, false, {
3279
- fileName: _jsxFileName,
3280
- lineNumber: 794,
3281
- columnNumber: 34
3282
- }, this),
3283
- item.output && /* @__PURE__ */ (void 0)(MonoPre, { children: item.output }, void 0, false, {
3284
- fileName: _jsxFileName,
3285
- lineNumber: 795,
3286
- columnNumber: 31
3287
- }, this)
2686
+ }),
2687
+ item.content !== null && item.content !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MonoPre, { children: content.success ? extractText(content.data) : JSON.stringify(item.content) }),
2688
+ item.arguments && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MonoPre, { children: item.arguments }),
2689
+ item.output && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MonoPre, { children: item.output })
3288
2690
  ]
3289
- }, `hist-${i}`, true, {
3290
- fileName: _jsxFileName,
3291
- lineNumber: 787,
3292
- columnNumber: 16
3293
- }, this);
2691
+ }, `hist-${i}`);
3294
2692
  })
3295
- }, void 0, false, {
3296
- fileName: _jsxFileName,
3297
- lineNumber: 784,
3298
- columnNumber: 7
3299
- }, this)
3300
- }, void 0, false, {
3301
- fileName: _jsxFileName,
3302
- lineNumber: 783,
3303
- columnNumber: 10
3304
- }, this);
2693
+ })
2694
+ });
3305
2695
  }
3306
2696
  var TOOL_NAME_PREVIEW_CHARACTERS = 60;
3307
2697
  var TOOL_NAME_COMPACT_PREVIEW_CHARACTERS = 30;
@@ -3321,145 +2711,81 @@ function ToolsHeaderMetadata({ tools }) {
3321
2711
  const wide = toolNamePreview(tools);
3322
2712
  const compact = toolNamePreview(tools, TOOL_NAME_COMPACT_PREVIEW_CHARACTERS);
3323
2713
  const mobile = toolNamePreview(tools, TOOL_NAME_MOBILE_PREVIEW_CHARACTERS);
3324
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(import_jsx_dev_runtime.Fragment, { children: [
3325
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", {
2714
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
2715
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
3326
2716
  className: "shrink-0",
3327
2717
  children: "·"
3328
- }, void 0, false, {
3329
- fileName: _jsxFileName,
3330
- lineNumber: 829,
3331
- columnNumber: 7
3332
- }, this),
3333
- wide.names.length > 0 && /* @__PURE__ */ (void 0)("span", {
2718
+ }),
2719
+ wide.names.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
3334
2720
  className: "hidden shrink-0 xl:inline",
3335
2721
  children: wide.names.join(", ")
3336
- }, void 0, false, {
3337
- fileName: _jsxFileName,
3338
- lineNumber: 830,
3339
- columnNumber: 33
3340
- }, this),
3341
- wide.omittedCount > 0 && /* @__PURE__ */ (void 0)("span", {
2722
+ }),
2723
+ wide.omittedCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
3342
2724
  className: "hidden shrink-0 xl:inline",
3343
2725
  children: ["+", wide.omittedCount]
3344
- }, void 0, true, {
3345
- fileName: _jsxFileName,
3346
- lineNumber: 831,
3347
- columnNumber: 33
3348
- }, this),
3349
- compact.names.length > 0 && /* @__PURE__ */ (void 0)("span", {
2726
+ }),
2727
+ compact.names.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
3350
2728
  className: "hidden shrink-0 sm:inline xl:hidden",
3351
2729
  children: compact.names.join(", ")
3352
- }, void 0, false, {
3353
- fileName: _jsxFileName,
3354
- lineNumber: 832,
3355
- columnNumber: 36
3356
- }, this),
3357
- compact.omittedCount > 0 && /* @__PURE__ */ (void 0)("span", {
2730
+ }),
2731
+ compact.omittedCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
3358
2732
  className: "hidden shrink-0 sm:inline xl:hidden",
3359
2733
  children: ["+", compact.omittedCount]
3360
- }, void 0, true, {
3361
- fileName: _jsxFileName,
3362
- lineNumber: 833,
3363
- columnNumber: 36
3364
- }, this),
3365
- mobile.names.length > 0 && /* @__PURE__ */ (void 0)("span", {
2734
+ }),
2735
+ mobile.names.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
3366
2736
  className: "shrink-0 sm:hidden",
3367
2737
  children: mobile.names.join(", ")
3368
- }, void 0, false, {
3369
- fileName: _jsxFileName,
3370
- lineNumber: 834,
3371
- columnNumber: 35
3372
- }, this),
3373
- mobile.omittedCount > 0 && /* @__PURE__ */ (void 0)("span", {
2738
+ }),
2739
+ mobile.omittedCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
3374
2740
  className: "shrink-0 sm:hidden",
3375
2741
  children: ["+", mobile.omittedCount]
3376
- }, void 0, true, {
3377
- fileName: _jsxFileName,
3378
- lineNumber: 835,
3379
- columnNumber: 35
3380
- }, this)
3381
- ] }, void 0, true);
2742
+ })
2743
+ ] });
3382
2744
  }
3383
2745
  function ToolInputZod({ code, fullCode }) {
3384
2746
  const highlighted = (0, import_react.useMemo)(() => highlightTypeText(code), [code]);
3385
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("pre", {
2747
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("pre", {
3386
2748
  "data-zod-parameter-schema": true,
3387
2749
  className: `max-h-64 overflow-auto rounded-md bg-sand-900 px-3 py-2.5 font-mono text-[11px] leading-relaxed whitespace-pre text-sand-200 ${fullCode ? "cursor-help outline-none focus-visible:ring-2 focus-visible:ring-sienna-300" : ""}`,
3388
2750
  tabIndex: fullCode ? 0 : void 0,
3389
2751
  title: fullCode,
3390
- children: fullCode ? /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(import_jsx_dev_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", {
2752
+ children: fullCode ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
3391
2753
  "aria-hidden": "true",
3392
2754
  children: highlighted
3393
- }, void 0, false, {
3394
- fileName: _jsxFileName,
3395
- lineNumber: 848,
3396
- columnNumber: 11
3397
- }, this), /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", {
2755
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
3398
2756
  className: "sr-only",
3399
2757
  children: fullCode
3400
- }, void 0, false, {
3401
- fileName: _jsxFileName,
3402
- lineNumber: 849,
3403
- columnNumber: 11
3404
- }, this)] }, void 0, true) : highlighted
3405
- }, void 0, false, {
3406
- fileName: _jsxFileName,
3407
- lineNumber: 846,
3408
- columnNumber: 10
3409
- }, this);
2758
+ })] }) : highlighted
2759
+ });
3410
2760
  }
3411
2761
  function ToolCard({ tool }) {
3412
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2762
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
3413
2763
  className: "min-w-0 rounded-md border border-sand-100 bg-sand-50/70 p-3",
3414
2764
  children: [
3415
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2765
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
3416
2766
  className: "break-all font-mono text-[13px] font-semibold text-sand-900",
3417
2767
  children: tool.name
3418
- }, void 0, false, {
3419
- fileName: _jsxFileName,
3420
- lineNumber: 859,
3421
- columnNumber: 7
3422
- }, this),
3423
- tool.description && /* @__PURE__ */ (void 0)("p", {
2768
+ }),
2769
+ tool.description && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
3424
2770
  className: "mt-2 text-[12px] leading-relaxed text-sand-700",
3425
2771
  children: tool.description
3426
- }, void 0, false, {
3427
- fileName: _jsxFileName,
3428
- lineNumber: 860,
3429
- columnNumber: 28
3430
- }, this),
3431
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2772
+ }),
2773
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
3432
2774
  className: "mt-3",
3433
- children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2775
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
3434
2776
  className: "mb-1.5 text-[10px] font-medium uppercase tracking-wider text-sand-400",
3435
2777
  children: [
3436
2778
  "Parameters (",
3437
2779
  tool.parameterCount,
3438
2780
  ")"
3439
2781
  ]
3440
- }, void 0, true, {
3441
- fileName: _jsxFileName,
3442
- lineNumber: 862,
3443
- columnNumber: 9
3444
- }, this), /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(ToolInputZod, {
2782
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ToolInputZod, {
3445
2783
  code: tool.inputZod,
3446
2784
  fullCode: tool.fullInputZod
3447
- }, void 0, false, {
3448
- fileName: _jsxFileName,
3449
- lineNumber: 865,
3450
- columnNumber: 9
3451
- }, this)]
3452
- }, void 0, true, {
3453
- fileName: _jsxFileName,
3454
- lineNumber: 861,
3455
- columnNumber: 7
3456
- }, this)
2785
+ })]
2786
+ })
3457
2787
  ]
3458
- }, void 0, true, {
3459
- fileName: _jsxFileName,
3460
- lineNumber: 858,
3461
- columnNumber: 10
3462
- }, this);
2788
+ });
3463
2789
  }
3464
2790
  function ToolsPanel({ id, tools }) {
3465
2791
  const [open, setOpen] = (0, import_react.useState)(false);
@@ -3471,46 +2797,22 @@ function ToolsPanel({ id, tools }) {
3471
2797
  refetchOnReconnect: false
3472
2798
  });
3473
2799
  const hasView = query.data !== void 0 && query.data.length > 0;
3474
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Section, {
2800
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Section, {
3475
2801
  title: `Tools (${tools.length})`,
3476
2802
  defaultOpen: false,
3477
- headerMetadata: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(ToolsHeaderMetadata, { tools }, void 0, false, {
3478
- fileName: _jsxFileName,
3479
- lineNumber: 885,
3480
- columnNumber: 89
3481
- }, this),
2803
+ headerMetadata: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ToolsHeaderMetadata, { tools }),
3482
2804
  onOpenChange: setOpen,
3483
- children: query.isFetching && !hasView ? /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("p", {
2805
+ children: query.isFetching && !hasView ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
3484
2806
  className: "text-[12px] text-sand-400",
3485
2807
  children: "Loading tool contracts…"
3486
- }, void 0, false, {
3487
- fileName: _jsxFileName,
3488
- lineNumber: 886,
3489
- columnNumber: 39
3490
- }, this) : query.isError || !hasView ? /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("p", {
2808
+ }) : query.isError || !hasView ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
3491
2809
  className: "text-[12px] text-sand-400",
3492
2810
  children: "Tool contracts could not be loaded."
3493
- }, void 0, false, {
3494
- fileName: _jsxFileName,
3495
- lineNumber: 886,
3496
- columnNumber: 138
3497
- }, this) : /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2811
+ }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
3498
2812
  className: "space-y-2",
3499
- children: query.data.map((tool, index) => /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(ToolCard, { tool }, `${tool.name}-${index}`, false, {
3500
- fileName: _jsxFileName,
3501
- lineNumber: 887,
3502
- columnNumber: 44
3503
- }, this))
3504
- }, void 0, false, {
3505
- fileName: _jsxFileName,
3506
- lineNumber: 886,
3507
- columnNumber: 221
3508
- }, this)
3509
- }, void 0, false, {
3510
- fileName: _jsxFileName,
3511
- lineNumber: 885,
3512
- columnNumber: 10
3513
- }, this);
2813
+ children: query.data.map((tool, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ToolCard, { tool }, `${tool.name}-${index}`))
2814
+ })
2815
+ });
3514
2816
  }
3515
2817
  var TYPE_TOKEN_RE = /("(?:[^"\\]|\\.)*")|(\b\d+(?:\.\d+)?\b)|(\btype\b|\bz\b(?=\.))|(\b(?:string|number|boolean|null|unknown|Record)\b)|([{}[\]()<>|?:,.=])|([A-Za-z_$][\w$]*)|(\s+|.)/g;
3516
2818
  function highlightTypeText(text) {
@@ -3519,50 +2821,30 @@ function highlightTypeText(text) {
3519
2821
  for (const match of text.matchAll(TYPE_TOKEN_RE)) {
3520
2822
  const [token, str, num, kw, builtin, punct, ident] = match;
3521
2823
  const key = `${match.index}-${token}`;
3522
- if (str || num) nodes.push(/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", {
2824
+ if (str || num) nodes.push(/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
3523
2825
  className: "text-sage-400",
3524
2826
  children: token
3525
- }, key, false, {
3526
- fileName: _jsxFileName,
3527
- lineNumber: 902,
3528
- columnNumber: 18
3529
- }, this));
2827
+ }, key));
3530
2828
  else if (kw) {
3531
2829
  afterTypeKeyword = token === "type";
3532
- nodes.push(/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", {
2830
+ nodes.push(/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
3533
2831
  className: "text-sienna-400",
3534
2832
  children: token
3535
- }, key, false, {
3536
- fileName: _jsxFileName,
3537
- lineNumber: 908,
3538
- columnNumber: 18
3539
- }, this));
3540
- } else if (builtin) nodes.push(/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", {
2833
+ }, key));
2834
+ } else if (builtin) nodes.push(/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
3541
2835
  className: "text-blue-300",
3542
2836
  children: token
3543
- }, key, false, {
3544
- fileName: _jsxFileName,
3545
- lineNumber: 912,
3546
- columnNumber: 18
3547
- }, this));
3548
- else if (punct) nodes.push(/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", {
2837
+ }, key));
2838
+ else if (punct) nodes.push(/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
3549
2839
  className: "text-sand-500",
3550
2840
  children: token
3551
- }, key, false, {
3552
- fileName: _jsxFileName,
3553
- lineNumber: 916,
3554
- columnNumber: 18
3555
- }, this));
2841
+ }, key));
3556
2842
  else if (ident && afterTypeKeyword) {
3557
2843
  afterTypeKeyword = false;
3558
- nodes.push(/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", {
2844
+ nodes.push(/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
3559
2845
  className: "font-semibold text-sand-50",
3560
2846
  children: token
3561
- }, key, false, {
3562
- fileName: _jsxFileName,
3563
- lineNumber: 922,
3564
- columnNumber: 18
3565
- }, this));
2847
+ }, key));
3566
2848
  } else nodes.push(token);
3567
2849
  }
3568
2850
  return nodes;
@@ -3574,18 +2856,14 @@ function ResponseTypePanel({ id }) {
3574
2856
  const code = mode === "zod" ? zod ?? typescript : typescript ?? zod;
3575
2857
  const highlighted = (0, import_react.useMemo)(() => code === null ? null : highlightTypeText(code), [code]);
3576
2858
  if (!data || code === null || highlighted === null) return null;
3577
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2859
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
3578
2860
  className: "panel overflow-hidden",
3579
- children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2861
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
3580
2862
  className: "panel-header flex items-center px-4 py-2",
3581
- children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", {
2863
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
3582
2864
  className: "text-[11px] uppercase tracking-wider text-sand-500 font-medium",
3583
2865
  children: "Response Type"
3584
- }, void 0, false, {
3585
- fileName: _jsxFileName,
3586
- lineNumber: 954,
3587
- columnNumber: 9
3588
- }, this), /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2866
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
3589
2867
  className: "ml-auto flex gap-1",
3590
2868
  children: [{
3591
2869
  value: "zod",
@@ -3595,53 +2873,25 @@ function ResponseTypePanel({ id }) {
3595
2873
  value: "ts",
3596
2874
  label: "ts",
3597
2875
  available: typescript !== null
3598
- }].map((option) => /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("button", {
2876
+ }].map((option) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
3599
2877
  type: "button",
3600
2878
  disabled: !option.available,
3601
2879
  className: `px-3 py-1 text-[12px] font-mono rounded-md transition-colors ${mode === option.value ? "bg-sand-200 text-sand-700" : "text-sand-400 hover:text-sand-600 disabled:text-sand-300 disabled:cursor-not-allowed"}`,
3602
2880
  onClick: () => setMode(option.value),
3603
2881
  children: option.label
3604
- }, option.value, false, {
3605
- fileName: _jsxFileName,
3606
- lineNumber: 966,
3607
- columnNumber: 36
3608
- }, this))
3609
- }, void 0, false, {
3610
- fileName: _jsxFileName,
3611
- lineNumber: 957,
3612
- columnNumber: 9
3613
- }, this)]
3614
- }, void 0, true, {
3615
- fileName: _jsxFileName,
3616
- lineNumber: 953,
3617
- columnNumber: 7
3618
- }, this), /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2882
+ }, option.value))
2883
+ })]
2884
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
3619
2885
  className: "relative",
3620
- children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(CopyButton, {
2886
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(CopyButton, {
3621
2887
  text: code,
3622
2888
  dark: true
3623
- }, void 0, false, {
3624
- fileName: _jsxFileName,
3625
- lineNumber: 972,
3626
- columnNumber: 9
3627
- }, this), /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("pre", {
2889
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("pre", {
3628
2890
  className: "bg-sand-900 px-4 py-3 text-[12px] text-sand-200 whitespace-pre-wrap wrap-break-word font-mono leading-relaxed max-h-64 overflow-auto",
3629
2891
  children: highlighted
3630
- }, void 0, false, {
3631
- fileName: _jsxFileName,
3632
- lineNumber: 974,
3633
- columnNumber: 9
3634
- }, this)]
3635
- }, void 0, true, {
3636
- fileName: _jsxFileName,
3637
- lineNumber: 971,
3638
- columnNumber: 7
3639
- }, this)]
3640
- }, void 0, true, {
3641
- fileName: _jsxFileName,
3642
- lineNumber: 952,
3643
- columnNumber: 10
3644
- }, this);
2892
+ })]
2893
+ })]
2894
+ });
3645
2895
  }
3646
2896
  function RequestDetail({ id }) {
3647
2897
  const { data, isLoading, error, isError } = RequestLogService.useRequestLog("A", id);
@@ -3652,58 +2902,26 @@ function RequestDetail({ id }) {
3652
2902
  orderBy: "id-asc"
3653
2903
  });
3654
2904
  const stepTree = buildStepTree(stepsData?.rows ?? []);
3655
- if (isLoading || isStepsLoading) return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2905
+ if (isLoading || isStepsLoading) return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
3656
2906
  className: "max-w-6xl mx-auto space-y-4",
3657
2907
  children: [
3658
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "h-4 w-32 bg-sand-200 rounded animate-pulse" }, void 0, false, {
3659
- fileName: _jsxFileName,
3660
- lineNumber: 1005,
3661
- columnNumber: 9
3662
- }, this),
3663
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "h-40 panel animate-pulse" }, void 0, false, {
3664
- fileName: _jsxFileName,
3665
- lineNumber: 1006,
3666
- columnNumber: 9
3667
- }, this),
3668
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "h-32 panel animate-pulse" }, void 0, false, {
3669
- fileName: _jsxFileName,
3670
- lineNumber: 1007,
3671
- columnNumber: 9
3672
- }, this)
2908
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-4 w-32 bg-sand-200 rounded animate-pulse" }),
2909
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-40 panel animate-pulse" }),
2910
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-32 panel animate-pulse" })
3673
2911
  ]
3674
- }, void 0, true, {
3675
- fileName: _jsxFileName,
3676
- lineNumber: 1004,
3677
- columnNumber: 12
3678
- }, this);
3679
- if (isError || isStepsError || !data) return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2912
+ });
2913
+ if (isError || isStepsError || !data) return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
3680
2914
  className: "max-w-6xl mx-auto",
3681
- children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Link, {
2915
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Link, {
3682
2916
  to: "/logs",
3683
2917
  className: "flex items-center gap-1 text-[13px] text-sand-500 hover:text-sienna-500 mb-4",
3684
- children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(lucideArrowLeft, { className: "size-3.5" }, void 0, false, {
3685
- fileName: _jsxFileName,
3686
- lineNumber: 1013,
3687
- columnNumber: 11
3688
- }, this), "Back to Logs"]
3689
- }, void 0, true, {
3690
- fileName: _jsxFileName,
3691
- lineNumber: 1012,
3692
- columnNumber: 9
3693
- }, this), /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("p", {
2918
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(lucideArrowLeft, { className: "size-3.5" }), "Back to Logs"]
2919
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
3694
2920
  role: "alert",
3695
2921
  className: "text-danger-500 text-sm",
3696
2922
  children: isError ? isSonamuError(error) && error.code === 404 ? "Request not found." : "Failed to load request." : isStepsError ? "Failed to load request steps." : "Request not found."
3697
- }, void 0, false, {
3698
- fileName: _jsxFileName,
3699
- lineNumber: 1016,
3700
- columnNumber: 9
3701
- }, this)]
3702
- }, void 0, true, {
3703
- fileName: _jsxFileName,
3704
- lineNumber: 1011,
3705
- columnNumber: 12
3706
- }, this);
2923
+ })]
2924
+ });
3707
2925
  const toolCalls = stepTree.flatMap((step) => step.toolCalls);
3708
2926
  const firstImageGenerationStepId = toolCalls.find((toolCall) => toolCall.toolName === "image_generation")?.id ?? null;
3709
2927
  const hasSteps = stepTree.length > 0;
@@ -3712,210 +2930,90 @@ function RequestDetail({ id }) {
3712
2930
  const hasHistory = history !== null && history.length > 0;
3713
2931
  const tools = data.tools ?? null;
3714
2932
  const hasTools = tools !== null && tools.length > 0;
3715
- const responseTypePanel = data.is_structured ? /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(ResponseTypePanel, { id }, void 0, false, {
3716
- fileName: _jsxFileName,
3717
- lineNumber: 1031,
3718
- columnNumber: 50
3719
- }, this) : null;
3720
- const promptSections = /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2933
+ const responseTypePanel = data.is_structured ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ResponseTypePanel, { id }) : null;
2934
+ const promptSections = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
3721
2935
  className: "space-y-4",
3722
- children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Section, {
2936
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Section, {
3723
2937
  title: "System",
3724
- children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2938
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
3725
2939
  className: "relative",
3726
- children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(CopyButton, { text: data.system_prompt ?? "null" }, void 0, false, {
3727
- fileName: _jsxFileName,
3728
- lineNumber: 1035,
3729
- columnNumber: 11
3730
- }, this), /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(FormattedContent, {
2940
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(CopyButton, { text: data.system_prompt ?? "null" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FormattedContent, {
3731
2941
  text: data.system_prompt ?? "null",
3732
2942
  markdown: true
3733
- }, void 0, false, {
3734
- fileName: _jsxFileName,
3735
- lineNumber: 1036,
3736
- columnNumber: 11
3737
- }, this)]
3738
- }, void 0, true, {
3739
- fileName: _jsxFileName,
3740
- lineNumber: 1034,
3741
- columnNumber: 9
3742
- }, this)
3743
- }, void 0, false, {
3744
- fileName: _jsxFileName,
3745
- lineNumber: 1033,
3746
- columnNumber: 7
3747
- }, this), /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Section, {
2943
+ })]
2944
+ })
2945
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Section, {
3748
2946
  title: "User",
3749
- children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2947
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
3750
2948
  className: "space-y-3",
3751
- children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2949
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
3752
2950
  className: "relative",
3753
- children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(CopyButton, { text: data.user_prompt ?? "null" }, void 0, false, {
3754
- fileName: _jsxFileName,
3755
- lineNumber: 1042,
3756
- columnNumber: 13
3757
- }, this), /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(FormattedContent, {
2951
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(CopyButton, { text: data.user_prompt ?? "null" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FormattedContent, {
3758
2952
  text: data.user_prompt ?? "null",
3759
2953
  markdown: true
3760
- }, void 0, false, {
3761
- fileName: _jsxFileName,
3762
- lineNumber: 1043,
3763
- columnNumber: 13
3764
- }, this)]
3765
- }, void 0, true, {
3766
- fileName: _jsxFileName,
3767
- lineNumber: 1041,
3768
- columnNumber: 11
3769
- }, this), /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(RequestInputImages, {
2954
+ })]
2955
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RequestInputImages, {
3770
2956
  images: data.input_images,
3771
2957
  stepId: firstImageGenerationStepId
3772
- }, void 0, false, {
3773
- fileName: _jsxFileName,
3774
- lineNumber: 1045,
3775
- columnNumber: 11
3776
- }, this)]
3777
- }, void 0, true, {
3778
- fileName: _jsxFileName,
3779
- lineNumber: 1040,
3780
- columnNumber: 9
3781
- }, this)
3782
- }, void 0, false, {
3783
- fileName: _jsxFileName,
3784
- lineNumber: 1039,
3785
- columnNumber: 7
3786
- }, this)]
3787
- }, void 0, true, {
3788
- fileName: _jsxFileName,
3789
- lineNumber: 1032,
3790
- columnNumber: 26
3791
- }, this);
3792
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2958
+ })]
2959
+ })
2960
+ })]
2961
+ });
2962
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
3793
2963
  className: `mx-auto space-y-4 ${hasSteps ? "max-w-[120rem]" : "max-w-6xl"}`,
3794
2964
  children: [
3795
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Link, {
2965
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Link, {
3796
2966
  to: "/logs",
3797
2967
  className: "inline-flex items-center gap-1 text-[13px] text-sand-500 hover:text-sienna-500 transition-colors",
3798
- children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(lucideArrowLeft, { className: "size-3.5" }, void 0, false, {
3799
- fileName: _jsxFileName,
3800
- lineNumber: 1051,
3801
- columnNumber: 9
3802
- }, this), "Back to Logs"]
3803
- }, void 0, true, {
3804
- fileName: _jsxFileName,
3805
- lineNumber: 1050,
3806
- columnNumber: 7
3807
- }, this),
3808
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(HeaderBar, { data }, void 0, false, {
3809
- fileName: _jsxFileName,
3810
- lineNumber: 1055,
3811
- columnNumber: 7
3812
- }, this),
3813
- data.error_message && /* @__PURE__ */ (void 0)(ErrorPanel, { message: data.error_message }, void 0, false, {
3814
- fileName: _jsxFileName,
3815
- lineNumber: 1057,
3816
- columnNumber: 30
3817
- }, this),
3818
- hasHistory && /* @__PURE__ */ (void 0)(HistorySection, { history }, void 0, false, {
3819
- fileName: _jsxFileName,
3820
- lineNumber: 1059,
3821
- columnNumber: 22
3822
- }, this),
3823
- hasSteps ? /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2968
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(lucideArrowLeft, { className: "size-3.5" }), "Back to Logs"]
2969
+ }),
2970
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(HeaderBar, { data }),
2971
+ data.error_message && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ErrorPanel, { message: data.error_message }),
2972
+ hasHistory && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(HistorySection, { history }),
2973
+ hasSteps ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
3824
2974
  className: "flex flex-col lg:flex-row gap-4 items-stretch lg:items-start",
3825
- children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2975
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
3826
2976
  className: "order-1 lg:order-2 flex-1 min-w-0 space-y-4",
3827
2977
  children: [
3828
2978
  responseTypePanel,
3829
- hasTools && /* @__PURE__ */ (void 0)(ToolsPanel, {
2979
+ hasTools && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ToolsPanel, {
3830
2980
  id,
3831
2981
  tools
3832
- }, void 0, false, {
3833
- fileName: _jsxFileName,
3834
- lineNumber: 1067,
3835
- columnNumber: 26
3836
- }, this),
3837
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(StepTreeSection, {
2982
+ }),
2983
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StepTreeSection, {
3838
2984
  steps: stepTree,
3839
2985
  tokensPerSecEnabled
3840
- }, void 0, false, {
3841
- fileName: _jsxFileName,
3842
- lineNumber: 1068,
3843
- columnNumber: 13
3844
- }, this)
2986
+ })
3845
2987
  ]
3846
- }, void 0, true, {
3847
- fileName: _jsxFileName,
3848
- lineNumber: 1065,
3849
- columnNumber: 11
3850
- }, this), /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
2988
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
3851
2989
  className: "order-2 lg:order-1 flex-1 min-w-0",
3852
2990
  children: promptSections
3853
- }, void 0, false, {
3854
- fileName: _jsxFileName,
3855
- lineNumber: 1070,
3856
- columnNumber: 11
3857
- }, this)]
3858
- }, void 0, true, {
3859
- fileName: _jsxFileName,
3860
- lineNumber: 1064,
3861
- columnNumber: 5
3862
- }, this) : /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(import_jsx_dev_runtime.Fragment, { children: [
2991
+ })]
2992
+ }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
3863
2993
  responseTypePanel,
3864
- hasTools && /* @__PURE__ */ (void 0)(ToolsPanel, {
2994
+ hasTools && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ToolsPanel, {
3865
2995
  id,
3866
2996
  tools
3867
- }, void 0, false, {
3868
- fileName: _jsxFileName,
3869
- lineNumber: 1073,
3870
- columnNumber: 24
3871
- }, this),
2997
+ }),
3872
2998
  promptSections
3873
- ] }, void 0, true),
3874
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Section, {
2999
+ ] }),
3000
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Section, {
3875
3001
  title: "Response",
3876
- children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", {
3002
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
3877
3003
  className: "relative",
3878
- children: [/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(CopyButton, { text: data.response }, void 0, false, {
3879
- fileName: _jsxFileName,
3880
- lineNumber: 1079,
3881
- columnNumber: 11
3882
- }, this), /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(FormattedContent, {
3004
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(CopyButton, { text: data.response }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FormattedContent, {
3883
3005
  text: data.response,
3884
3006
  markdown: true
3885
- }, void 0, false, {
3886
- fileName: _jsxFileName,
3887
- lineNumber: 1080,
3888
- columnNumber: 11
3889
- }, this)]
3890
- }, void 0, true, {
3891
- fileName: _jsxFileName,
3892
- lineNumber: 1078,
3893
- columnNumber: 9
3894
- }, this)
3895
- }, void 0, false, {
3896
- fileName: _jsxFileName,
3897
- lineNumber: 1077,
3898
- columnNumber: 7
3899
- }, this),
3900
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(MetricsPanel, {
3007
+ })]
3008
+ })
3009
+ }),
3010
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MetricsPanel, {
3901
3011
  data,
3902
3012
  toolCallCount: toolCalls.length
3903
- }, void 0, false, {
3904
- fileName: _jsxFileName,
3905
- lineNumber: 1084,
3906
- columnNumber: 7
3907
- }, this),
3908
- /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "pb-8" }, void 0, false, {
3909
- fileName: _jsxFileName,
3910
- lineNumber: 1086,
3911
- columnNumber: 7
3912
- }, this)
3013
+ }),
3014
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "pb-8" })
3913
3015
  ]
3914
- }, void 0, true, {
3915
- fileName: _jsxFileName,
3916
- lineNumber: 1049,
3917
- columnNumber: 10
3918
- }, this);
3016
+ });
3919
3017
  }
3920
3018
  //#endregion
3921
3019
  export { RequestShowPage as component };