@tonyclaw/llm-inspector 1.18.0 → 1.18.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.
- package/.output/nitro.json +1 -1
- package/.output/public/assets/CompareDrawer-CAhlM_Gq.js +1 -0
- package/.output/public/assets/ProxyViewerContainer--miVHNPZ.js +101 -0
- package/.output/public/assets/ReplayDialog-Bqu2f5HE.js +1 -0
- package/.output/public/assets/RequestAnatomy-CpVNH0CD.js +1 -0
- package/.output/public/assets/ResponseView-B_Gg37Lr.js +1 -0
- package/.output/public/assets/StreamingChunkSequence-E2M_SS1A.js +1 -0
- package/.output/public/assets/_sessionId-P9LgC1bF.js +1 -0
- package/.output/public/assets/index-C0wv3YP9.css +1 -0
- package/.output/public/assets/index-kboKku6a.js +1 -0
- package/.output/public/assets/{json-viewer-D-z1r1Pp.js → json-viewer-DqhA-ODG.js} +1 -1
- package/.output/public/assets/{main-CZJ63sQh.js → main-DpH7JlHv.js} +8 -7
- package/.output/server/_libs/lucide-react.mjs +3 -3
- package/.output/server/_sessionId-DcJ0RDNl.mjs +122 -0
- package/.output/server/_ssr/{CompareDrawer-BJr-913n.mjs → CompareDrawer-DajC3x7u.mjs} +55 -55
- package/.output/server/_ssr/{index-C7I_Qgt0.mjs → ProxyViewerContainer-C2dnFXoC.mjs} +87 -139
- package/.output/server/_ssr/{ReplayDialog-BwmToGuR.mjs → ReplayDialog-BnCLuA5z.mjs} +56 -56
- package/.output/server/_ssr/{RequestAnatomy-BmMiPRPB.mjs → RequestAnatomy-OHE3iT-f.mjs} +2 -2
- package/.output/server/_ssr/{ResponseView-ZB9-8Raw.mjs → ResponseView-NPshHwOv.mjs} +3 -3
- package/.output/server/_ssr/{StreamingChunkSequence-DWm4CQWC.mjs → StreamingChunkSequence-BfukoR7F.mjs} +55 -55
- package/.output/server/_ssr/index-CF8M0tsv.mjs +117 -0
- package/.output/server/_ssr/index.mjs +2 -2
- package/.output/server/_ssr/{json-viewer-D9XETzwp.mjs → json-viewer-CHBa-Oas.mjs} +2 -2
- package/.output/server/_ssr/{router-711KpGkz.mjs → router-B5hOtKSn.mjs} +64 -22
- package/.output/server/_tanstack-start-manifest_v-CFyWvIH6.mjs +4 -0
- package/.output/server/index.mjs +73 -59
- package/package.json +1 -1
- package/src/components/ProxyViewer.tsx +44 -18
- package/src/components/ProxyViewerContainer.tsx +18 -2
- package/src/components/proxy-viewer/ConversationGroup.tsx +1 -8
- package/src/components/proxy-viewer/ConversationHeader.tsx +47 -4
- package/src/routes/session/$sessionId.tsx +75 -0
- package/.output/public/assets/CompareDrawer-BpwZCB6M.js +0 -1
- package/.output/public/assets/ReplayDialog-Clratkzl.js +0 -1
- package/.output/public/assets/RequestAnatomy-EtiX0r_G.js +0 -1
- package/.output/public/assets/ResponseView-CJqxo-EN.js +0 -1
- package/.output/public/assets/StreamingChunkSequence-BIbRqQiV.js +0 -1
- package/.output/public/assets/index-B-0F9n1w.js +0 -101
- package/.output/public/assets/index-DoGvsnbA.css +0 -1
- package/.output/server/_tanstack-start-manifest_v-noQw0Vmw.mjs +0 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports, a as React } from "../_libs/react.mjs";
|
|
2
|
-
import { C as CapturedLogSchema, D as DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS,
|
|
2
|
+
import { C as CapturedLogSchema, D as DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS, a as RuntimeConfigSchema, r as requestFormatForPath, c as createPendingProviderTestResults, P as ProviderTestResultsSchema, d as createFailedProviderTestResults, M as MAX_SLOW_RESPONSE_THRESHOLD_SECONDS, e as ProviderConfigSchema, s as stripClaudeCodeBillingHeader, p as parseOpenAIResponse, O as OpenAIRequestSchema, A as AnthropicResponseSchema$1, b as AnthropicRequestSchema } from "./router-B5hOtKSn.mjs";
|
|
3
3
|
import { u as useSWR, a as useSWRConfig } from "../_libs/swr.mjs";
|
|
4
4
|
import { J as JSZip } from "../_libs/jszip.mjs";
|
|
5
5
|
import { c as clsx } from "../_libs/clsx.mjs";
|
|
@@ -9,107 +9,11 @@ import { R as Root, T as Trigger$1, C as Content, a as Close, b as Title, P as P
|
|
|
9
9
|
import { d as diffJson, a as diffLines } from "../_libs/diff.mjs";
|
|
10
10
|
import { u as useVirtualizer } from "../_libs/tanstack__react-virtual.mjs";
|
|
11
11
|
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";
|
|
12
|
-
import { C as Check, X, D as Download, S as Settings, a as ChevronDown, U as Upload, b as Scan, P as Plus, c as Copy, d as CircleAlert, e as ChevronUp, L as LoaderCircle, f as ChevronRight, g as User, h as Clock, M as MessageSquare, Z as Zap,
|
|
12
|
+
import { C as Check, X, D as Download, S as Settings, a as ChevronDown, U as Upload, b as Scan, P as Plus, c as Copy, d as CircleAlert, e as ChevronUp, L as LoaderCircle, f as ChevronRight, g as User, h as Clock, M as MessageSquare, Z as Zap, E as ExternalLink, T as Trash2, i as TriangleAlert, j as EyeOff, k as Eye, R as RotateCw, l as Pencil, G as GitCompareArrows, m as Minus, n as CircleCheckBig, O as OctagonAlert, W as Wrench, o as Globe, F as FileTerminal, p as Radio, q as ChevronsUp, r as ChevronsDown, s as RotateCcw, t as CircleQuestionMark, u as Server, v as Gauge, w as Lock, x as Wifi, y as WifiOff, A as ArrowUp, z as ArrowDown, B as Rows3, H as Columns2 } from "../_libs/lucide-react.mjs";
|
|
13
13
|
import { u as union, d as object, a as array, l as literal, b as string, n as number, c as boolean, _ as _enum } from "../_libs/zod.mjs";
|
|
14
14
|
import { R as Root2$1, L as List, T as Trigger$2, C as Content$1 } from "../_libs/radix-ui__react-tabs.mjs";
|
|
15
15
|
import { P as Provider, R as Root3, T as Trigger$3, a as Portal$2, C as Content2$1, A as Arrow2 } from "../_libs/radix-ui__react-tooltip.mjs";
|
|
16
16
|
import { S as Slot } from "../_libs/radix-ui__react-slot.mjs";
|
|
17
|
-
import "../_libs/tanstack__react-router.mjs";
|
|
18
|
-
import "../_libs/tiny-warning.mjs";
|
|
19
|
-
import "../_libs/tanstack__router-core.mjs";
|
|
20
|
-
import "../_libs/cookie-es.mjs";
|
|
21
|
-
import "../_libs/tanstack__history.mjs";
|
|
22
|
-
import "../_libs/tiny-invariant.mjs";
|
|
23
|
-
import "../_libs/seroval.mjs";
|
|
24
|
-
import "../_libs/seroval-plugins.mjs";
|
|
25
|
-
import "node:stream/web";
|
|
26
|
-
import "node:stream";
|
|
27
|
-
import "../_libs/react-dom.mjs";
|
|
28
|
-
import "util";
|
|
29
|
-
import "async_hooks";
|
|
30
|
-
import "stream";
|
|
31
|
-
import "crypto";
|
|
32
|
-
import "../_libs/isbot.mjs";
|
|
33
|
-
import "node:fs";
|
|
34
|
-
import "node:fs/promises";
|
|
35
|
-
import "node:buffer";
|
|
36
|
-
import "node:path";
|
|
37
|
-
import "../_libs/conf.mjs";
|
|
38
|
-
import "node:util";
|
|
39
|
-
import "node:process";
|
|
40
|
-
import "node:crypto";
|
|
41
|
-
import "node:assert";
|
|
42
|
-
import "../_libs/dot-prop.mjs";
|
|
43
|
-
import "../_libs/env-paths.mjs";
|
|
44
|
-
import "node:os";
|
|
45
|
-
import "../_libs/atomically.mjs";
|
|
46
|
-
import "../_libs/stubborn-fs.mjs";
|
|
47
|
-
import "../_libs/stubborn-utils.mjs";
|
|
48
|
-
import "../_libs/when-exit.mjs";
|
|
49
|
-
import "../_libs/ajv.mjs";
|
|
50
|
-
import "../_libs/fast-deep-equal.mjs";
|
|
51
|
-
import "../_libs/json-schema-traverse.mjs";
|
|
52
|
-
import "../_libs/fast-uri.mjs";
|
|
53
|
-
import "../_libs/ajv-formats.mjs";
|
|
54
|
-
import "../_libs/debounce-fn.mjs";
|
|
55
|
-
import "../_libs/mimic-function.mjs";
|
|
56
|
-
import "../_libs/semver.mjs";
|
|
57
|
-
import "../_libs/uint8array-extras.mjs";
|
|
58
|
-
import "node:child_process";
|
|
59
|
-
import "node:worker_threads";
|
|
60
|
-
import "../_libs/modelcontextprotocol__server.mjs";
|
|
61
|
-
import "../_libs/use-sync-external-store.mjs";
|
|
62
|
-
import "../_libs/dequal.mjs";
|
|
63
|
-
import "../_libs/readable-stream.mjs";
|
|
64
|
-
import "events";
|
|
65
|
-
import "node:string_decoder";
|
|
66
|
-
import "../_libs/process-nextick-args.mjs";
|
|
67
|
-
import "../_libs/isarray.mjs";
|
|
68
|
-
import "../_libs/safe-buffer.mjs";
|
|
69
|
-
import "buffer";
|
|
70
|
-
import "../_libs/core-util-is.mjs";
|
|
71
|
-
import "../_libs/inherits.mjs";
|
|
72
|
-
import "../_libs/util-deprecate.mjs";
|
|
73
|
-
import "../_libs/lie.mjs";
|
|
74
|
-
import "../_libs/immediate.mjs";
|
|
75
|
-
import "../_libs/setimmediate.mjs";
|
|
76
|
-
import "../_libs/pako.mjs";
|
|
77
|
-
import "../_libs/radix-ui__primitive.mjs";
|
|
78
|
-
import "../_libs/radix-ui__react-compose-refs.mjs";
|
|
79
|
-
import "../_libs/radix-ui__react-context.mjs";
|
|
80
|
-
import "../_libs/radix-ui__react-id.mjs";
|
|
81
|
-
import "../_libs/@radix-ui/react-use-layout-effect+[...].mjs";
|
|
82
|
-
import "../_libs/@radix-ui/react-use-controllable-state+[...].mjs";
|
|
83
|
-
import "../_libs/@radix-ui/react-dismissable-layer+[...].mjs";
|
|
84
|
-
import "../_libs/radix-ui__react-primitive.mjs";
|
|
85
|
-
import "../_libs/@radix-ui/react-use-callback-ref+[...].mjs";
|
|
86
|
-
import "../_libs/@radix-ui/react-use-escape-keydown+[...].mjs";
|
|
87
|
-
import "../_libs/radix-ui__react-focus-scope.mjs";
|
|
88
|
-
import "../_libs/radix-ui__react-portal.mjs";
|
|
89
|
-
import "../_libs/radix-ui__react-presence.mjs";
|
|
90
|
-
import "../_libs/radix-ui__react-focus-guards.mjs";
|
|
91
|
-
import "../_libs/react-remove-scroll.mjs";
|
|
92
|
-
import "tslib";
|
|
93
|
-
import "../_libs/react-remove-scroll-bar.mjs";
|
|
94
|
-
import "../_libs/react-style-singleton.mjs";
|
|
95
|
-
import "../_libs/get-nonce.mjs";
|
|
96
|
-
import "../_libs/use-sidecar.mjs";
|
|
97
|
-
import "../_libs/use-callback-ref.mjs";
|
|
98
|
-
import "../_libs/aria-hidden.mjs";
|
|
99
|
-
import "../_libs/tanstack__virtual-core.mjs";
|
|
100
|
-
import "../_libs/radix-ui__number.mjs";
|
|
101
|
-
import "../_libs/radix-ui__react-collection.mjs";
|
|
102
|
-
import "../_libs/radix-ui__react-direction.mjs";
|
|
103
|
-
import "../_libs/radix-ui__react-popper.mjs";
|
|
104
|
-
import "../_libs/floating-ui__react-dom.mjs";
|
|
105
|
-
import "../_libs/floating-ui__dom.mjs";
|
|
106
|
-
import "../_libs/floating-ui__core.mjs";
|
|
107
|
-
import "../_libs/floating-ui__utils.mjs";
|
|
108
|
-
import "../_libs/radix-ui__react-arrow.mjs";
|
|
109
|
-
import "../_libs/radix-ui__react-use-size.mjs";
|
|
110
|
-
import "../_libs/radix-ui__react-use-previous.mjs";
|
|
111
|
-
import "../_libs/@radix-ui/react-visually-hidden+[...].mjs";
|
|
112
|
-
import "../_libs/radix-ui__react-roving-focus.mjs";
|
|
113
17
|
const ApiErrorSchema = object({
|
|
114
18
|
error: string()
|
|
115
19
|
});
|
|
@@ -371,7 +275,7 @@ function getStatusCategory(status) {
|
|
|
371
275
|
if (status >= 500) return "server_error";
|
|
372
276
|
return "pending";
|
|
373
277
|
}
|
|
374
|
-
const version = "1.18.
|
|
278
|
+
const version = "1.18.1";
|
|
375
279
|
const packageJson = {
|
|
376
280
|
version
|
|
377
281
|
};
|
|
@@ -590,6 +494,20 @@ function ConversationHeader({
|
|
|
590
494
|
if (onClear === void 0) return;
|
|
591
495
|
setConfirmOpen(true);
|
|
592
496
|
};
|
|
497
|
+
const handleOpenInNewTab = reactExports.useCallback(
|
|
498
|
+
(e) => {
|
|
499
|
+
e.stopPropagation();
|
|
500
|
+
let encoded;
|
|
501
|
+
try {
|
|
502
|
+
encoded = btoa(conversationId).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
503
|
+
} catch {
|
|
504
|
+
encoded = encodeURIComponent(conversationId);
|
|
505
|
+
}
|
|
506
|
+
const url = `/session/${encoded}`;
|
|
507
|
+
window.open(url, "_blank", "noopener,noreferrer");
|
|
508
|
+
},
|
|
509
|
+
[conversationId]
|
|
510
|
+
);
|
|
593
511
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
594
512
|
"div",
|
|
595
513
|
{
|
|
@@ -619,7 +537,7 @@ function ConversationHeader({
|
|
|
619
537
|
{
|
|
620
538
|
className: "text-purple-400/90 font-mono text-xs font-semibold shrink-0",
|
|
621
539
|
title: conversationId,
|
|
622
|
-
children: conversationId.length > 24 ? conversationId.slice(0, 12) + "…" + conversationId.slice(-12) : conversationId
|
|
540
|
+
children: conversationId.startsWith("PID:") || conversationId.includes("|") ? conversationId : conversationId.length > 24 ? conversationId.slice(0, 12) + "…" + conversationId.slice(-12) : conversationId
|
|
623
541
|
}
|
|
624
542
|
),
|
|
625
543
|
userAgent !== null && userAgent !== void 0 && userAgent !== "" && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
@@ -671,6 +589,22 @@ function ConversationHeader({
|
|
|
671
589
|
] })
|
|
672
590
|
] }),
|
|
673
591
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "flex-1 min-w-0" }),
|
|
592
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
593
|
+
"button",
|
|
594
|
+
{
|
|
595
|
+
type: "button",
|
|
596
|
+
onClick: handleOpenInNewTab,
|
|
597
|
+
onKeyDown: (e) => {
|
|
598
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
599
|
+
handleOpenInNewTab(e);
|
|
600
|
+
}
|
|
601
|
+
},
|
|
602
|
+
"aria-label": `Open session ${conversationId} in a new tab`,
|
|
603
|
+
title: "Open this session in a new tab",
|
|
604
|
+
className: "text-muted-foreground hover:text-foreground transition-colors shrink-0 inline-flex items-center justify-center size-8 rounded hover:bg-muted cursor-pointer",
|
|
605
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(ExternalLink, { className: "size-3.5" })
|
|
606
|
+
}
|
|
607
|
+
),
|
|
674
608
|
onClear !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
675
609
|
"button",
|
|
676
610
|
{
|
|
@@ -1120,8 +1054,8 @@ const crabVariants = [
|
|
|
1120
1054
|
Crab11,
|
|
1121
1055
|
Crab12
|
|
1122
1056
|
];
|
|
1123
|
-
function getCrabVariant(
|
|
1124
|
-
return crabVariants[Math.abs(
|
|
1057
|
+
function getCrabVariant(index) {
|
|
1058
|
+
return crabVariants[Math.abs(index) % crabVariants.length] ?? Crab1;
|
|
1125
1059
|
}
|
|
1126
1060
|
function getInteriorCrabVariantIndex(seed) {
|
|
1127
1061
|
const interiorCount = crabVariants.length - 2;
|
|
@@ -1424,27 +1358,27 @@ function TabsContent({
|
|
|
1424
1358
|
);
|
|
1425
1359
|
}
|
|
1426
1360
|
const LazyCompareDrawer = reactExports.lazy(
|
|
1427
|
-
() => import("./CompareDrawer-
|
|
1361
|
+
() => import("./CompareDrawer-DajC3x7u.mjs").then((m) => ({ default: m.CompareDrawer }))
|
|
1428
1362
|
);
|
|
1429
1363
|
const LazyReplayDialog = reactExports.lazy(
|
|
1430
|
-
() => import("./ReplayDialog-
|
|
1364
|
+
() => import("./ReplayDialog-BnCLuA5z.mjs").then((m) => ({ default: m.ReplayDialog }))
|
|
1431
1365
|
);
|
|
1432
1366
|
const LazyRequestAnatomy = reactExports.lazy(
|
|
1433
|
-
() => import("./RequestAnatomy-
|
|
1367
|
+
() => import("./RequestAnatomy-OHE3iT-f.mjs").then((m) => ({ default: m.RequestAnatomy }))
|
|
1434
1368
|
);
|
|
1435
1369
|
const LazyResponseView = reactExports.lazy(
|
|
1436
|
-
() => import("./ResponseView-
|
|
1370
|
+
() => import("./ResponseView-NPshHwOv.mjs").then((m) => ({ default: m.ResponseView }))
|
|
1437
1371
|
);
|
|
1438
1372
|
const LazyStreamingChunkSequence = reactExports.lazy(
|
|
1439
|
-
() => import("./StreamingChunkSequence-
|
|
1373
|
+
() => import("./StreamingChunkSequence-BfukoR7F.mjs").then((m) => ({
|
|
1440
1374
|
default: m.StreamingChunkSequence
|
|
1441
1375
|
}))
|
|
1442
1376
|
);
|
|
1443
1377
|
const LazyJsonViewer = reactExports.lazy(
|
|
1444
|
-
() => import("./json-viewer-
|
|
1378
|
+
() => import("./json-viewer-CHBa-Oas.mjs").then((m) => ({ default: m.JsonViewer }))
|
|
1445
1379
|
);
|
|
1446
1380
|
const LazyJsonViewerFromString = reactExports.lazy(
|
|
1447
|
-
() => import("./json-viewer-
|
|
1381
|
+
() => import("./json-viewer-CHBa-Oas.mjs").then((m) => ({ default: m.JsonViewerFromString }))
|
|
1448
1382
|
);
|
|
1449
1383
|
const HIGHLIGHT_DURATION_MS = 1200;
|
|
1450
1384
|
const MAX_HIGHLIGHT_ATTEMPTS = 12;
|
|
@@ -2244,12 +2178,12 @@ const anthropicLogFormatAdapter = {
|
|
|
2244
2178
|
}
|
|
2245
2179
|
}
|
|
2246
2180
|
if (Array.isArray(body.messages)) {
|
|
2247
|
-
body.messages.forEach((message,
|
|
2181
|
+
body.messages.forEach((message, index) => {
|
|
2248
2182
|
if (message === null || typeof message !== "object") return;
|
|
2249
2183
|
const m = message;
|
|
2250
2184
|
const role = m.role === "user" || m.role === "assistant" ? m.role : "user";
|
|
2251
2185
|
const text = contentToText$1(m.content);
|
|
2252
|
-
segments.push(segment$1(role, `[${
|
|
2186
|
+
segments.push(segment$1(role, `[${index}] ${role}`, text, `/messages/${index}`));
|
|
2253
2187
|
});
|
|
2254
2188
|
}
|
|
2255
2189
|
if (Array.isArray(body.tools) && body.tools.length > 0) {
|
|
@@ -2350,12 +2284,12 @@ const openAILogFormatAdapter = {
|
|
|
2350
2284
|
const body = parsed;
|
|
2351
2285
|
const segments = [];
|
|
2352
2286
|
if (Array.isArray(body.messages)) {
|
|
2353
|
-
body.messages.forEach((message,
|
|
2287
|
+
body.messages.forEach((message, index) => {
|
|
2354
2288
|
if (message === null || typeof message !== "object") return;
|
|
2355
2289
|
const m = message;
|
|
2356
2290
|
const role = m.role === "user" || m.role === "assistant" || m.role === "system" || m.role === "tool" ? m.role : "user";
|
|
2357
2291
|
const text = messageToText(m);
|
|
2358
|
-
segments.push(segment(role, `[${
|
|
2292
|
+
segments.push(segment(role, `[${index}] ${role}`, text, `/messages/${index}`));
|
|
2359
2293
|
});
|
|
2360
2294
|
}
|
|
2361
2295
|
if (Array.isArray(body.tools) && body.tools.length > 0) {
|
|
@@ -2859,9 +2793,9 @@ function buildTurnGroups(logs) {
|
|
|
2859
2793
|
function buildValidPredecessors(groups) {
|
|
2860
2794
|
const predecessors = /* @__PURE__ */ new Map();
|
|
2861
2795
|
for (const group of groups) {
|
|
2862
|
-
for (let
|
|
2863
|
-
const current = group.logs[
|
|
2864
|
-
const previous = group.logs[
|
|
2796
|
+
for (let index = 1; index < group.logs.length; index += 1) {
|
|
2797
|
+
const current = group.logs[index];
|
|
2798
|
+
const previous = group.logs[index - 1];
|
|
2865
2799
|
if (current === void 0 || previous === void 0) continue;
|
|
2866
2800
|
const currentFormat = resolveLogFormat(current);
|
|
2867
2801
|
const previousFormat = resolveLogFormat(previous);
|
|
@@ -3166,12 +3100,11 @@ const ConversationGroup = reactExports.memo(function({
|
|
|
3166
3100
|
const mixed = hasMixedApiFormat(group.logs);
|
|
3167
3101
|
const isLoading = group.logs.some((log) => log.responseStatus === null);
|
|
3168
3102
|
const turnGroups = reactExports.useMemo(() => buildTurnGroups(group.logs), [group.logs]);
|
|
3169
|
-
const displayId = group.conversationId.startsWith("PID:") || group.conversationId.includes("|") ? group.conversationId : group.conversationId.length > 24 ? group.conversationId.slice(0, 12) + "…" + group.conversationId.slice(-12) : group.conversationId;
|
|
3170
3103
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mb-2", children: [
|
|
3171
3104
|
!standalone && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3172
3105
|
ConversationHeader,
|
|
3173
3106
|
{
|
|
3174
|
-
conversationId:
|
|
3107
|
+
conversationId: group.conversationId,
|
|
3175
3108
|
startTime,
|
|
3176
3109
|
endTime,
|
|
3177
3110
|
totalCalls: group.logs.length,
|
|
@@ -3489,13 +3422,13 @@ function ImportWizardDialog({
|
|
|
3489
3422
|
scan();
|
|
3490
3423
|
}
|
|
3491
3424
|
}, [open, scan]);
|
|
3492
|
-
const toggleProvider = reactExports.useCallback((
|
|
3425
|
+
const toggleProvider = reactExports.useCallback((index) => {
|
|
3493
3426
|
setSelected((prev) => {
|
|
3494
3427
|
const next = new Set(prev);
|
|
3495
|
-
if (next.has(
|
|
3496
|
-
next.delete(
|
|
3428
|
+
if (next.has(index)) {
|
|
3429
|
+
next.delete(index);
|
|
3497
3430
|
} else {
|
|
3498
|
-
next.add(
|
|
3431
|
+
next.add(index);
|
|
3499
3432
|
}
|
|
3500
3433
|
return next;
|
|
3501
3434
|
});
|
|
@@ -4020,10 +3953,10 @@ function ProviderForm({ provider, onSubmit, onCancel }) {
|
|
|
4020
3953
|
const modelRowRefs = reactExports.useRef([]);
|
|
4021
3954
|
reactExports.useEffect(() => {
|
|
4022
3955
|
if (openModelDropdown === null) return;
|
|
4023
|
-
const
|
|
3956
|
+
const index = openModelDropdown;
|
|
4024
3957
|
function handleClick(e) {
|
|
4025
3958
|
if (!(e.target instanceof Node)) return;
|
|
4026
|
-
const ref = modelRowRefs.current[
|
|
3959
|
+
const ref = modelRowRefs.current[index];
|
|
4027
3960
|
if (ref !== null && ref !== void 0 && !ref.contains(e.target)) {
|
|
4028
3961
|
setOpenModelDropdown(null);
|
|
4029
3962
|
}
|
|
@@ -5132,8 +5065,8 @@ function focusAndScroll(el) {
|
|
|
5132
5065
|
el.focus({ preventScroll: true });
|
|
5133
5066
|
el.scrollIntoView({ block: "nearest", behavior: "smooth" });
|
|
5134
5067
|
}
|
|
5135
|
-
function safeItemAt(items,
|
|
5136
|
-
const el = items[
|
|
5068
|
+
function safeItemAt(items, index) {
|
|
5069
|
+
const el = items[index];
|
|
5137
5070
|
return el ?? null;
|
|
5138
5071
|
}
|
|
5139
5072
|
function isEditableTarget(target) {
|
|
@@ -5327,7 +5260,8 @@ function ProxyViewer({
|
|
|
5327
5260
|
viewMode,
|
|
5328
5261
|
onViewModeChange,
|
|
5329
5262
|
strip,
|
|
5330
|
-
slowResponseThresholdSeconds
|
|
5263
|
+
slowResponseThresholdSeconds,
|
|
5264
|
+
hideSessionFilter = false
|
|
5331
5265
|
}) {
|
|
5332
5266
|
const { totalIn, totalOut } = reactExports.useMemo(() => computeTokenSummary(logs), [logs]);
|
|
5333
5267
|
const [exporting, setExporting] = reactExports.useState(false);
|
|
@@ -5418,7 +5352,7 @@ function ProxyViewer({
|
|
|
5418
5352
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ml-auto", children: /* @__PURE__ */ jsxRuntimeExports.jsx(SettingsDialog, {}) })
|
|
5419
5353
|
] }),
|
|
5420
5354
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3 mb-4", children: [
|
|
5421
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(Select, { value: selectedSession, onValueChange: onSessionChange, children: [
|
|
5355
|
+
!hideSessionFilter && /* @__PURE__ */ jsxRuntimeExports.jsxs(Select, { value: selectedSession, onValueChange: onSessionChange, children: [
|
|
5422
5356
|
/* @__PURE__ */ jsxRuntimeExports.jsx(SelectTrigger, { className: "flex-1 max-w-[350px] text-xs", children: /* @__PURE__ */ jsxRuntimeExports.jsx(SelectValue, { placeholder: "All sessions" }) }),
|
|
5423
5357
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(SelectContent, { children: [
|
|
5424
5358
|
/* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: "__all__", children: "All sessions" }),
|
|
@@ -5486,7 +5420,23 @@ function ProxyViewer({
|
|
|
5486
5420
|
}
|
|
5487
5421
|
)
|
|
5488
5422
|
] }),
|
|
5489
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: logs.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center text-muted-foreground py-16 space-y-4", children: [
|
|
5423
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: logs.length === 0 ? selectedSession !== "__all__" ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center text-muted-foreground py-16 space-y-4", children: [
|
|
5424
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm font-medium", children: "Session not found" }),
|
|
5425
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs font-mono bg-muted px-3 py-1 rounded inline-block max-w-[500px] break-all", children: truncateSessionId(selectedSession) }),
|
|
5426
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-xs", children: [
|
|
5427
|
+
"This session may have been cleared or never existed.",
|
|
5428
|
+
" ",
|
|
5429
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
5430
|
+
"button",
|
|
5431
|
+
{
|
|
5432
|
+
type: "button",
|
|
5433
|
+
onClick: () => onSessionChange("__all__"),
|
|
5434
|
+
className: "underline hover:text-foreground transition-colors",
|
|
5435
|
+
children: "Show all sessions"
|
|
5436
|
+
}
|
|
5437
|
+
)
|
|
5438
|
+
] })
|
|
5439
|
+
] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center text-muted-foreground py-16 space-y-4", children: [
|
|
5490
5440
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm", children: "No requests captured yet." }),
|
|
5491
5441
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs", children: "Route AI coding tools through the proxy:" }),
|
|
5492
5442
|
/* @__PURE__ */ jsxRuntimeExports.jsx(CopyableCommand, { command: "LLM_BASE_URL=http://localhost:25947/proxy <your-tool>" })
|
|
@@ -5549,9 +5499,11 @@ function filterLogs(logs, selectedSession, selectedModel) {
|
|
|
5549
5499
|
});
|
|
5550
5500
|
}
|
|
5551
5501
|
const DEBOUNCE_MS = 50;
|
|
5552
|
-
function ProxyViewerContainer(
|
|
5502
|
+
function ProxyViewerContainer({
|
|
5503
|
+
initialSessionId
|
|
5504
|
+
} = {}) {
|
|
5553
5505
|
const [allLogs, setAllLogs] = reactExports.useState([]);
|
|
5554
|
-
const [selectedSession, setSelectedSession] = reactExports.useState("__all__");
|
|
5506
|
+
const [selectedSession, setSelectedSession] = reactExports.useState(initialSessionId ?? "__all__");
|
|
5555
5507
|
const [selectedModel, setSelectedModel] = reactExports.useState("__all__");
|
|
5556
5508
|
const [viewMode, setViewMode] = reactExports.useState("simple");
|
|
5557
5509
|
const [error, setError] = reactExports.useState(null);
|
|
@@ -5722,19 +5674,16 @@ function ProxyViewerContainer() {
|
|
|
5722
5674
|
viewMode,
|
|
5723
5675
|
onViewModeChange: setViewMode,
|
|
5724
5676
|
strip,
|
|
5725
|
-
slowResponseThresholdSeconds
|
|
5677
|
+
slowResponseThresholdSeconds,
|
|
5678
|
+
hideSessionFilter: initialSessionId !== void 0
|
|
5726
5679
|
}
|
|
5727
5680
|
)
|
|
5728
5681
|
] });
|
|
5729
5682
|
}
|
|
5730
|
-
const SplitComponent = ProxyViewerContainer;
|
|
5731
|
-
const index = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
5732
|
-
__proto__: null,
|
|
5733
|
-
component: SplitComponent
|
|
5734
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
5735
5683
|
export {
|
|
5736
5684
|
Badge as B,
|
|
5737
5685
|
Dialog as D,
|
|
5686
|
+
ProxyViewerContainer as P,
|
|
5738
5687
|
Tabs as T,
|
|
5739
5688
|
getConversationId as a,
|
|
5740
5689
|
DialogContent as b,
|
|
@@ -5754,6 +5703,5 @@ export {
|
|
|
5754
5703
|
getStatusCategory as p,
|
|
5755
5704
|
parseJsonText as q,
|
|
5756
5705
|
resolveLogFormat as r,
|
|
5757
|
-
safeJsonValue as s
|
|
5758
|
-
index as t
|
|
5706
|
+
safeJsonValue as s
|
|
5759
5707
|
};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { D as Dialog, b as DialogContent, d as DialogHeader, e as DialogTitle, T as Tabs, h as TabsList, i as TabsTrigger, j as TabsContent, k as TooltipProvider, l as Tooltip, m as TooltipTrigger, n as TooltipContent, o as Button } from "./
|
|
3
|
-
import { ResponseView } from "./ResponseView-
|
|
4
|
-
import "./router-
|
|
2
|
+
import { D as Dialog, b as DialogContent, d as DialogHeader, e as DialogTitle, T as Tabs, h as TabsList, i as TabsTrigger, j as TabsContent, k as TooltipProvider, l as Tooltip, m as TooltipTrigger, n as TooltipContent, o as Button } from "./ProxyViewerContainer-C2dnFXoC.mjs";
|
|
3
|
+
import { ResponseView } from "./ResponseView-NPshHwOv.mjs";
|
|
4
|
+
import "./router-B5hOtKSn.mjs";
|
|
5
5
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
6
6
|
import "../_libs/jszip.mjs";
|
|
7
|
-
import "./json-viewer-
|
|
7
|
+
import "./json-viewer-CHBa-Oas.mjs";
|
|
8
8
|
import { s as RotateCcw } from "../_libs/lucide-react.mjs";
|
|
9
9
|
import { d as object, c as boolean, n as number, b as string } from "../_libs/zod.mjs";
|
|
10
10
|
import "../_libs/swr.mjs";
|
|
@@ -61,58 +61,6 @@ import "../_libs/@radix-ui/react-visually-hidden+[...].mjs";
|
|
|
61
61
|
import "../_libs/radix-ui__react-tabs.mjs";
|
|
62
62
|
import "../_libs/radix-ui__react-roving-focus.mjs";
|
|
63
63
|
import "../_libs/radix-ui__react-tooltip.mjs";
|
|
64
|
-
import "../_libs/tanstack__react-router.mjs";
|
|
65
|
-
import "../_libs/tiny-warning.mjs";
|
|
66
|
-
import "../_libs/tanstack__router-core.mjs";
|
|
67
|
-
import "../_libs/cookie-es.mjs";
|
|
68
|
-
import "../_libs/tanstack__history.mjs";
|
|
69
|
-
import "../_libs/tiny-invariant.mjs";
|
|
70
|
-
import "../_libs/seroval.mjs";
|
|
71
|
-
import "../_libs/seroval-plugins.mjs";
|
|
72
|
-
import "node:stream/web";
|
|
73
|
-
import "node:stream";
|
|
74
|
-
import "../_libs/isbot.mjs";
|
|
75
|
-
import "node:fs";
|
|
76
|
-
import "node:fs/promises";
|
|
77
|
-
import "node:buffer";
|
|
78
|
-
import "node:path";
|
|
79
|
-
import "../_libs/conf.mjs";
|
|
80
|
-
import "node:util";
|
|
81
|
-
import "node:process";
|
|
82
|
-
import "node:crypto";
|
|
83
|
-
import "node:assert";
|
|
84
|
-
import "../_libs/dot-prop.mjs";
|
|
85
|
-
import "../_libs/env-paths.mjs";
|
|
86
|
-
import "node:os";
|
|
87
|
-
import "../_libs/atomically.mjs";
|
|
88
|
-
import "../_libs/stubborn-fs.mjs";
|
|
89
|
-
import "../_libs/stubborn-utils.mjs";
|
|
90
|
-
import "../_libs/when-exit.mjs";
|
|
91
|
-
import "../_libs/ajv.mjs";
|
|
92
|
-
import "../_libs/fast-deep-equal.mjs";
|
|
93
|
-
import "../_libs/json-schema-traverse.mjs";
|
|
94
|
-
import "../_libs/fast-uri.mjs";
|
|
95
|
-
import "../_libs/ajv-formats.mjs";
|
|
96
|
-
import "../_libs/debounce-fn.mjs";
|
|
97
|
-
import "../_libs/mimic-function.mjs";
|
|
98
|
-
import "../_libs/semver.mjs";
|
|
99
|
-
import "../_libs/uint8array-extras.mjs";
|
|
100
|
-
import "node:child_process";
|
|
101
|
-
import "node:worker_threads";
|
|
102
|
-
import "../_libs/readable-stream.mjs";
|
|
103
|
-
import "events";
|
|
104
|
-
import "node:string_decoder";
|
|
105
|
-
import "../_libs/process-nextick-args.mjs";
|
|
106
|
-
import "../_libs/isarray.mjs";
|
|
107
|
-
import "../_libs/safe-buffer.mjs";
|
|
108
|
-
import "buffer";
|
|
109
|
-
import "../_libs/core-util-is.mjs";
|
|
110
|
-
import "../_libs/inherits.mjs";
|
|
111
|
-
import "../_libs/util-deprecate.mjs";
|
|
112
|
-
import "../_libs/lie.mjs";
|
|
113
|
-
import "../_libs/immediate.mjs";
|
|
114
|
-
import "../_libs/setimmediate.mjs";
|
|
115
|
-
import "../_libs/pako.mjs";
|
|
116
64
|
import "../_libs/react-markdown.mjs";
|
|
117
65
|
import "../_libs/devlop.mjs";
|
|
118
66
|
import "../_libs/unified.mjs";
|
|
@@ -123,6 +71,8 @@ import "../_libs/trough.mjs";
|
|
|
123
71
|
import "../_libs/vfile.mjs";
|
|
124
72
|
import "../_libs/vfile-message.mjs";
|
|
125
73
|
import "../_libs/unist-util-stringify-position.mjs";
|
|
74
|
+
import "node:process";
|
|
75
|
+
import "node:path";
|
|
126
76
|
import "node:url";
|
|
127
77
|
import "../_libs/remark-parse.mjs";
|
|
128
78
|
import "../_libs/mdast-util-from-markdown.mjs";
|
|
@@ -168,6 +118,56 @@ import "../_libs/html-url-attributes.mjs";
|
|
|
168
118
|
import "../_libs/radix-ui__react-separator.mjs";
|
|
169
119
|
import "../_libs/radix-ui__react-collapsible.mjs";
|
|
170
120
|
import "../_libs/radix-ui__react-scroll-area.mjs";
|
|
121
|
+
import "../_libs/tanstack__react-router.mjs";
|
|
122
|
+
import "../_libs/tiny-warning.mjs";
|
|
123
|
+
import "../_libs/tanstack__router-core.mjs";
|
|
124
|
+
import "../_libs/cookie-es.mjs";
|
|
125
|
+
import "../_libs/tanstack__history.mjs";
|
|
126
|
+
import "../_libs/tiny-invariant.mjs";
|
|
127
|
+
import "../_libs/seroval.mjs";
|
|
128
|
+
import "../_libs/seroval-plugins.mjs";
|
|
129
|
+
import "node:stream/web";
|
|
130
|
+
import "node:stream";
|
|
131
|
+
import "../_libs/isbot.mjs";
|
|
132
|
+
import "node:fs";
|
|
133
|
+
import "node:fs/promises";
|
|
134
|
+
import "node:buffer";
|
|
135
|
+
import "../_libs/conf.mjs";
|
|
136
|
+
import "node:util";
|
|
137
|
+
import "node:crypto";
|
|
138
|
+
import "node:assert";
|
|
139
|
+
import "../_libs/dot-prop.mjs";
|
|
140
|
+
import "../_libs/env-paths.mjs";
|
|
141
|
+
import "node:os";
|
|
142
|
+
import "../_libs/atomically.mjs";
|
|
143
|
+
import "../_libs/stubborn-fs.mjs";
|
|
144
|
+
import "../_libs/stubborn-utils.mjs";
|
|
145
|
+
import "../_libs/when-exit.mjs";
|
|
146
|
+
import "../_libs/ajv.mjs";
|
|
147
|
+
import "../_libs/fast-deep-equal.mjs";
|
|
148
|
+
import "../_libs/json-schema-traverse.mjs";
|
|
149
|
+
import "../_libs/fast-uri.mjs";
|
|
150
|
+
import "../_libs/ajv-formats.mjs";
|
|
151
|
+
import "../_libs/debounce-fn.mjs";
|
|
152
|
+
import "../_libs/mimic-function.mjs";
|
|
153
|
+
import "../_libs/semver.mjs";
|
|
154
|
+
import "../_libs/uint8array-extras.mjs";
|
|
155
|
+
import "node:child_process";
|
|
156
|
+
import "node:worker_threads";
|
|
157
|
+
import "../_libs/readable-stream.mjs";
|
|
158
|
+
import "events";
|
|
159
|
+
import "node:string_decoder";
|
|
160
|
+
import "../_libs/process-nextick-args.mjs";
|
|
161
|
+
import "../_libs/isarray.mjs";
|
|
162
|
+
import "../_libs/safe-buffer.mjs";
|
|
163
|
+
import "buffer";
|
|
164
|
+
import "../_libs/core-util-is.mjs";
|
|
165
|
+
import "../_libs/inherits.mjs";
|
|
166
|
+
import "../_libs/util-deprecate.mjs";
|
|
167
|
+
import "../_libs/lie.mjs";
|
|
168
|
+
import "../_libs/immediate.mjs";
|
|
169
|
+
import "../_libs/setimmediate.mjs";
|
|
170
|
+
import "../_libs/pako.mjs";
|
|
171
171
|
const ReplayResultSchema = object({
|
|
172
172
|
success: boolean(),
|
|
173
173
|
error: string().optional(),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { k as TooltipProvider, f as formatTokens, c as cn, l as Tooltip, m as TooltipTrigger, n as TooltipContent } from "./
|
|
3
|
-
import "./router-
|
|
2
|
+
import { k as TooltipProvider, f as formatTokens, c as cn, l as Tooltip, m as TooltipTrigger, n as TooltipContent } from "./ProxyViewerContainer-C2dnFXoC.mjs";
|
|
3
|
+
import "./router-B5hOtKSn.mjs";
|
|
4
4
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
5
5
|
import "../_libs/jszip.mjs";
|
|
6
6
|
import { J as Info } from "../_libs/lucide-react.mjs";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { g as getLogFormatAdapter, f as formatTokens, c as cn, p as getStatusCategory, B as Badge, s as safeJsonValue } from "./
|
|
3
|
-
import { JsonViewer } from "./json-viewer-
|
|
4
|
-
import "./router-
|
|
2
|
+
import { g as getLogFormatAdapter, f as formatTokens, c as cn, p as getStatusCategory, B as Badge, s as safeJsonValue } from "./ProxyViewerContainer-C2dnFXoC.mjs";
|
|
3
|
+
import { JsonViewer } from "./json-viewer-CHBa-Oas.mjs";
|
|
4
|
+
import "./router-B5hOtKSn.mjs";
|
|
5
5
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
6
6
|
import "../_libs/jszip.mjs";
|
|
7
7
|
import { Z as Zap, i as TriangleAlert, K as CircleStop, N as Brain, a as ChevronDown, f as ChevronRight, Q as Terminal } from "../_libs/lucide-react.mjs";
|