@tonyclaw/llm-inspector 1.9.5 → 1.9.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.output/nitro.json +1 -1
- package/.output/public/assets/index-Cc1oV0hF.css +1 -0
- package/.output/public/assets/index-DTjsqi6U.js +11 -0
- package/.output/public/assets/index-DrYcBTSK.js +122 -0
- package/.output/server/_chunks/ssr-renderer.mjs +1 -0
- package/.output/server/_libs/@radix-ui/react-use-controllable-state+[...].mjs +1 -1
- package/.output/server/_libs/ajv-formats.mjs +18 -18
- package/.output/server/_libs/ajv.mjs +196 -196
- package/.output/server/_libs/cookie-es.mjs +7 -21
- package/.output/server/_libs/h3-v2.mjs +18 -7
- package/.output/server/_libs/h3.mjs +24 -16
- package/.output/server/_libs/jszip.mjs +28 -28
- package/.output/server/_libs/pako.mjs +13 -13
- package/.output/server/_libs/radix-ui__react-collection.mjs +1 -1
- package/.output/server/_libs/radix-ui__react-id.mjs +1 -1
- package/.output/server/_libs/react-dom.mjs +5 -5
- package/.output/server/_libs/react.mjs +43 -43
- package/.output/server/_libs/readable-stream.mjs +15 -15
- package/.output/server/_libs/safe-buffer.mjs +3 -3
- package/.output/server/_libs/semver.mjs +10 -10
- package/.output/server/_libs/seroval-plugins.mjs +5 -5
- package/.output/server/_libs/seroval.mjs +606 -596
- package/.output/server/_libs/srvx.mjs +110 -46
- package/.output/server/_libs/swr.mjs +1 -1
- package/.output/server/_libs/tanstack__history.mjs +31 -44
- package/.output/server/_libs/tanstack__react-router.mjs +781 -1090
- package/.output/server/_libs/tanstack__router-core.mjs +2223 -2328
- package/.output/server/_libs/tslib.mjs +5 -5
- package/.output/server/_libs/use-sync-external-store.mjs +1 -1
- package/.output/server/_libs/zod.mjs +503 -205
- package/.output/server/_ssr/empty-plugin-adapters-BFgPZ6_d.mjs +6 -0
- package/.output/server/_ssr/{index-Ou5OlbF7.mjs → index-Lxfn0bBE.mjs} +53 -25
- package/.output/server/_ssr/index.mjs +1100 -777
- package/.output/server/_ssr/{router-pQnqiQaV.mjs → router-CXva8nm-.mjs} +26 -7
- package/.output/server/_tanstack-start-manifest_v-Cb2CDJtB.mjs +4 -0
- package/.output/server/index.mjs +23 -22
- package/README.md +50 -11
- package/package.json +1 -1
- package/src/components/providers/ProviderCard.tsx +26 -9
- package/src/components/proxy-viewer/formats/anthropic/ContentBlocks.tsx +35 -2
- package/src/components/proxy-viewer/formats/openai/ResponseView.tsx +25 -11
- package/src/proxy/formats/openai/schemas.ts +6 -0
- package/src/proxy/formats/openai/stream.ts +8 -0
- package/src/proxy/handler.ts +6 -2
- package/.output/public/assets/index-BrRzz6xk.js +0 -97
- package/.output/public/assets/index-DdJSLfxK.css +0 -1
- package/.output/public/assets/main-DlRlP_aH.js +0 -17
- package/.output/server/_libs/tiny-invariant.mjs +0 -12
- package/.output/server/_libs/tiny-warning.mjs +0 -5
- package/.output/server/_tanstack-start-manifest_v-DqXd4TXM.mjs +0 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as reactExports, j as jsxRuntimeExports,
|
|
2
|
-
import { C as CapturedLogSchema, a as parseRequest, p as parseOpenAIResponse, I as InspectorResponseSchema } from "./router-
|
|
1
|
+
import { r as reactExports, j as jsxRuntimeExports, R as React } from "../_libs/react.mjs";
|
|
2
|
+
import { C as CapturedLogSchema, a as parseRequest, p as parseOpenAIResponse, I as InspectorResponseSchema } from "./router-CXva8nm-.mjs";
|
|
3
3
|
import { u as useVirtualizer } from "../_libs/tanstack__react-virtual.mjs";
|
|
4
4
|
import { J as JSZip } from "../_libs/jszip.mjs";
|
|
5
5
|
import { c as clsx } from "../_libs/clsx.mjs";
|
|
@@ -8,7 +8,7 @@ import { c as cva } from "../_libs/class-variance-authority.mjs";
|
|
|
8
8
|
import { R as Root, T as Trigger$1, C as Content, a as Close, b as Title, P as Portal$1, O as Overlay } from "../_libs/radix-ui__react-dialog.mjs";
|
|
9
9
|
import { R as Root2, T as Trigger, I as Icon, V as Value, P as Portal, C as Content2, a as Viewport, b as Item, c as ItemIndicator, d as ItemText, S as ScrollUpButton, e as ScrollDownButton } from "../_libs/radix-ui__react-select.mjs";
|
|
10
10
|
import { u as useSWR } from "../_libs/swr.mjs";
|
|
11
|
-
import { D as Download, L as LayoutGrid, a as List, S as Settings, C as ChevronDown, b as Check, R as RotateCcw, X, U as Upload, P as Plus, c as Copy, d as CircleAlert, e as ChevronUp, f as ChevronRight, g as Clock, M as MessageSquare, Z as Zap, h as LoaderCircle, W as Wrench, G as Globe, i as User, F as FileTerminal, j as Radio, E as ExternalLink, k as EyeOff, l as Eye, m as RotateCw, n as Pencil, T as Trash2, o as TriangleAlert, p as Minus, q as CircleCheckBig, r as CircleStop, s as CircleQuestionMark, t as Server, u as Gauge, v as Lock, w as Wifi, x as WifiOff, y as ChevronsUp, z as ChevronsDown,
|
|
11
|
+
import { D as Download, L as LayoutGrid, a as List, S as Settings, C as ChevronDown, b as Check, R as RotateCcw, X, U as Upload, P as Plus, c as Copy, d as CircleAlert, e as ChevronUp, f as ChevronRight, g as Clock, M as MessageSquare, Z as Zap, h as LoaderCircle, W as Wrench, G as Globe, i as User, F as FileTerminal, j as Radio, E as ExternalLink, k as EyeOff, l as Eye, m as RotateCw, n as Pencil, T as Trash2, o as TriangleAlert, p as Minus, q as CircleCheckBig, r as CircleStop, s as CircleQuestionMark, t as Server, u as Gauge, v as Lock, w as Wifi, x as WifiOff, y as ChevronsUp, z as ChevronsDown, B as Brain, A as Terminal } from "../_libs/lucide-react.mjs";
|
|
12
12
|
import { M as Markdown } from "../_libs/react-markdown.mjs";
|
|
13
13
|
import { a as array, s as string, u as union, o as object, l as literal, n as number, b as boolean } from "../_libs/zod.mjs";
|
|
14
14
|
import { R as Root2$1, L as List$1, T as Trigger$2, C as Content$1 } from "../_libs/radix-ui__react-tabs.mjs";
|
|
@@ -18,11 +18,9 @@ import { R as Root$1 } from "../_libs/radix-ui__react-separator.mjs";
|
|
|
18
18
|
import { R as Root$2, C as CollapsibleTrigger$1, a as CollapsibleContent$1 } from "../_libs/radix-ui__react-collapsible.mjs";
|
|
19
19
|
import { R as Root$3, V as Viewport$1, C as Corner, S as ScrollAreaScrollbar, a as ScrollAreaThumb } from "../_libs/radix-ui__react-scroll-area.mjs";
|
|
20
20
|
import "../_libs/tanstack__react-router.mjs";
|
|
21
|
-
import "../_libs/tiny-warning.mjs";
|
|
22
21
|
import "../_libs/tanstack__router-core.mjs";
|
|
23
|
-
import "../_libs/cookie-es.mjs";
|
|
24
22
|
import "../_libs/tanstack__history.mjs";
|
|
25
|
-
import "../_libs/
|
|
23
|
+
import "../_libs/cookie-es.mjs";
|
|
26
24
|
import "../_libs/seroval.mjs";
|
|
27
25
|
import "../_libs/seroval-plugins.mjs";
|
|
28
26
|
import "node:stream/web";
|
|
@@ -199,7 +197,7 @@ async function exportLogsAsZip(logs) {
|
|
|
199
197
|
document.body.removeChild(anchor);
|
|
200
198
|
URL.revokeObjectURL(url);
|
|
201
199
|
}
|
|
202
|
-
const version = "1.9.
|
|
200
|
+
const version = "1.9.7";
|
|
203
201
|
const packageJson = {
|
|
204
202
|
version
|
|
205
203
|
};
|
|
@@ -1296,11 +1294,27 @@ function SystemReminderBlock({ text }) {
|
|
|
1296
1294
|
/* @__PURE__ */ jsxRuntimeExports.jsx(CollapsibleContent, { children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "pl-4 pt-1", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "prose prose-sm dark:prose-invert max-w-none [&_pre]:bg-muted [&_pre]:text-foreground [&_code]:text-[0.8em] [&_p]:my-1 [&_ul]:my-1 [&_ol]:my-1", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Markdown, { children: text }) }) }) })
|
|
1297
1295
|
] });
|
|
1298
1296
|
}
|
|
1297
|
+
const THINKING_TAG_REGEX = /<think>([\s\S]*?)<\/think>/gi;
|
|
1298
|
+
const THINKING_TAG_REGEX_SINGLE = /<think>([\s\S]*?)<\/think>/i;
|
|
1299
|
+
function extractThinkingFromContent(text) {
|
|
1300
|
+
const match = THINKING_TAG_REGEX_SINGLE.exec(text);
|
|
1301
|
+
if (!match || match[1] === void 0) {
|
|
1302
|
+
return { thinking: null, remainingText: text };
|
|
1303
|
+
}
|
|
1304
|
+
const thinking = match[1].trim();
|
|
1305
|
+
const remainingText = text.replace(THINKING_TAG_REGEX, "").trim();
|
|
1306
|
+
return { thinking, remainingText };
|
|
1307
|
+
}
|
|
1299
1308
|
function TextBlock({ text }) {
|
|
1300
1309
|
if (text.includes("<system-reminder>")) {
|
|
1301
1310
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(SystemReminderBlock, { text });
|
|
1302
1311
|
}
|
|
1303
|
-
|
|
1312
|
+
const { thinking, remainingText } = extractThinkingFromContent(text);
|
|
1313
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-2", children: [
|
|
1314
|
+
thinking !== null && /* @__PURE__ */ jsxRuntimeExports.jsx(ThinkingBlock, { thinking }),
|
|
1315
|
+
remainingText.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "prose prose-sm dark:prose-invert max-w-none [&_pre]:bg-muted [&_pre]:text-foreground [&_code]:text-[0.8em] [&_p]:my-1 [&_ul]:my-1 [&_ol]:my-1", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Markdown, { children: remainingText }) }),
|
|
1316
|
+
thinking === null && remainingText.length === 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-muted-foreground italic", children: "Empty text block" })
|
|
1317
|
+
] });
|
|
1304
1318
|
}
|
|
1305
1319
|
function ThinkingBlock({ thinking }) {
|
|
1306
1320
|
const [open, setOpen] = reactExports.useState(false);
|
|
@@ -1427,11 +1441,15 @@ function OpenAIResponseView({ response }) {
|
|
|
1427
1441
|
] }),
|
|
1428
1442
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Separator, { className: "opacity-50" }),
|
|
1429
1443
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-2", children: [
|
|
1430
|
-
message?.reasoning_content !== null && message?.reasoning_content !== void 0 && message.reasoning_content.length > 0 && /* @__PURE__ */ jsxRuntimeExports.
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1444
|
+
message?.reasoning_content !== null && message?.reasoning_content !== void 0 && message.reasoning_content.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(ThinkingBlock, { thinking: message.reasoning_content }),
|
|
1445
|
+
message?.content !== null && message?.content !== void 0 && message.content.length > 0 && (() => {
|
|
1446
|
+
const hasReasoningField = message.reasoning_content !== null && message.reasoning_content !== void 0 && message.reasoning_content.length > 0;
|
|
1447
|
+
const { thinking, remainingText } = extractThinkingFromContent(message.content);
|
|
1448
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-2", children: [
|
|
1449
|
+
thinking !== null && !hasReasoningField && /* @__PURE__ */ jsxRuntimeExports.jsx(ThinkingBlock, { thinking }),
|
|
1450
|
+
remainingText.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "prose prose-sm dark:prose-invert max-w-none [&_pre]:bg-muted [&_pre]:text-foreground [&_code]:text-[0.8em] [&_p]:my-1 [&_ul]:my-1 [&_ol]:my-1", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Markdown, { children: remainingText }) })
|
|
1451
|
+
] });
|
|
1452
|
+
})(),
|
|
1435
1453
|
message?.function_call !== null && message?.function_call !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "border border-blue-500/30 rounded-md p-3 bg-blue-500/5", children: [
|
|
1436
1454
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-xs text-blue-400 font-mono mb-1", children: "function_call" }),
|
|
1437
1455
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "font-mono text-xs", children: [
|
|
@@ -2190,6 +2208,7 @@ function getErrorIcon(type) {
|
|
|
2190
2208
|
}
|
|
2191
2209
|
}
|
|
2192
2210
|
function TestStatus({ result }) {
|
|
2211
|
+
const [showDetails, setShowDetails] = reactExports.useState(false);
|
|
2193
2212
|
if (!hasSuccessField(result)) {
|
|
2194
2213
|
if (isNotConfiguredState(result)) {
|
|
2195
2214
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1 text-xs text-muted-foreground shrink-0", children: [
|
|
@@ -2211,19 +2230,28 @@ function TestStatus({ result }) {
|
|
|
2211
2230
|
const error = result.error;
|
|
2212
2231
|
const errorMessage = error?.message ?? "Connection failed";
|
|
2213
2232
|
const errorHint = error?.hint;
|
|
2233
|
+
const errorDetails = error?.details;
|
|
2214
2234
|
const errorType = error?.type ?? "unknown";
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
|
|
2235
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-1 shrink-0", children: [
|
|
2236
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1 text-xs text-red-600 max-w-[200px]", children: [
|
|
2237
|
+
getErrorIcon(errorType),
|
|
2238
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: errorMessage }),
|
|
2239
|
+
errorDetails !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2240
|
+
"button",
|
|
2241
|
+
{
|
|
2242
|
+
type: "button",
|
|
2243
|
+
onClick: () => setShowDetails(!showDetails),
|
|
2244
|
+
className: "shrink-0 text-muted-foreground hover:text-foreground transition-colors",
|
|
2245
|
+
title: showDetails ? "Hide details" : "Show details",
|
|
2246
|
+
children: showDetails ? /* @__PURE__ */ jsxRuntimeExports.jsx(EyeOff, { className: "size-3" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Eye, { className: "size-3" })
|
|
2247
|
+
}
|
|
2248
|
+
)
|
|
2249
|
+
] }),
|
|
2250
|
+
showDetails && errorDetails !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-xs text-muted-foreground bg-muted/50 rounded p-2 max-w-[300px]", children: [
|
|
2251
|
+
errorHint !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mb-1", children: errorHint }),
|
|
2252
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "font-mono whitespace-pre-wrap break-all text-red-400/80", children: errorDetails })
|
|
2253
|
+
] })
|
|
2254
|
+
] });
|
|
2227
2255
|
}
|
|
2228
2256
|
function ProviderCard({
|
|
2229
2257
|
provider,
|