@tonyclaw/agent-inspector 2.0.5 → 2.0.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/CompareDrawer-BhRYPp6T.js +1 -0
- package/.output/public/assets/ProxyViewerContainer-BHq0dkQG.js +114 -0
- package/.output/public/assets/ReplayDialog-Ch0gwg6B.js +1 -0
- package/.output/public/assets/RequestAnatomy-CKbvIgaN.js +1 -0
- package/.output/public/assets/ResponseView-hRLar32x.js +1 -0
- package/.output/public/assets/StreamingChunkSequence-DCJ_gUHa.js +1 -0
- package/.output/public/assets/_sessionId-BJTz6t5l.js +1 -0
- package/.output/public/assets/index-Cf9U0Ekq.js +1 -0
- package/.output/public/assets/index-DTdv7nzl.css +1 -0
- package/.output/public/assets/{main-2NlGzgOe.js → main-BlDtK0Nn.js} +2 -2
- package/.output/server/_libs/lucide-react.mjs +170 -108
- package/.output/server/_libs/radix-ui__react-collapsible.mjs +2 -2
- package/.output/server/{_sessionId-DWCTasJU.mjs → _sessionId-Dy7rsLS4.mjs} +58 -5
- package/.output/server/_ssr/{CompareDrawer-DhrN1uC2.mjs → CompareDrawer-CkVX-ARV.mjs} +9 -8
- package/.output/server/_ssr/{ProxyViewerContainer-DRl51s_n.mjs → ProxyViewerContainer-B5a9p3j5.mjs} +856 -32
- package/.output/server/_ssr/{ReplayDialog-BQT_ygxC.mjs → ReplayDialog-hXY6H9fB.mjs} +7 -8
- package/.output/server/_ssr/RequestAnatomy-B6MS7VvA.mjs +576 -0
- package/.output/server/_ssr/{ResponseView-e0kL2C3x.mjs → ResponseView-ByjxwUnp.mjs} +5 -74
- package/.output/server/_ssr/{StreamingChunkSequence-BJG-m7xs.mjs → StreamingChunkSequence-C5Kb8siT.mjs} +8 -7
- package/.output/server/_ssr/{index-Dea3OeRw.mjs → index-BZXtj42m.mjs} +58 -5
- package/.output/server/_ssr/index.mjs +2 -2
- package/.output/server/_ssr/{router-Dl7oh0zx.mjs → router-CVQaVF_3.mjs} +5 -5
- package/.output/server/{_tanstack-start-manifest_v-m-FJNBVf.mjs → _tanstack-start-manifest_v-Bpe5ZC56.mjs} +1 -1
- package/.output/server/index.mjs +58 -65
- package/package.json +1 -1
- package/src/components/proxy-viewer/LogEntry.tsx +18 -4
- package/src/components/proxy-viewer/LogEntryHeader.tsx +3 -3
- package/src/components/proxy-viewer/RequestToolsPanel.tsx +292 -0
- package/src/components/proxy-viewer/anatomy/RequestAnatomy.tsx +196 -45
- package/src/components/proxy-viewer/anatomy/SegmentBar.tsx +92 -67
- package/src/components/proxy-viewer/anatomy/types.ts +15 -13
- package/src/components/proxy-viewer/log-formats/anthropic.ts +1 -1
- package/src/components/proxy-viewer/log-formats/openai.ts +1 -1
- package/src/components/proxy-viewer/log-formats/types.ts +1 -1
- package/src/components/proxy-viewer/requestTools.ts +213 -0
- package/src/components/ui/json-viewer.tsx +1 -1
- package/.output/public/assets/CompareDrawer-3nRwtk8J.js +0 -1
- package/.output/public/assets/ProxyViewerContainer-CbW5VRER.js +0 -101
- package/.output/public/assets/ReplayDialog-Cl62N9PI.js +0 -1
- package/.output/public/assets/RequestAnatomy-DgQWGvjs.js +0 -1
- package/.output/public/assets/ResponseView-Cvc-ct4E.js +0 -1
- package/.output/public/assets/StreamingChunkSequence-BCQaCAIe.js +0 -1
- package/.output/public/assets/_sessionId-CcD_aLGq.js +0 -1
- package/.output/public/assets/index-B_dffD3u.js +0 -1
- package/.output/public/assets/index-CX796gvi.css +0 -1
- package/.output/public/assets/json-viewer-IXejqXB0.js +0 -14
- package/.output/server/_ssr/RequestAnatomy-DS2tZOgq.mjs +0 -353
- package/.output/server/_ssr/json-viewer-DDU55MLK.mjs +0 -515
|
@@ -1,14 +1,11 @@
|
|
|
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 "./ProxyViewerContainer-
|
|
3
|
-
import
|
|
4
|
-
import "./router-Dl7oh0zx.mjs";
|
|
2
|
+
import { g as getLogFormatAdapter, f as formatTokens, c as cn, p as getStatusCategory, B as Badge, C as Collapsible, q as CollapsibleTrigger, s as CollapsibleContent, S as ScrollArea, t as JsonViewer, v as safeJsonValue } from "./ProxyViewerContainer-B5a9p3j5.mjs";
|
|
3
|
+
import "./router-CVQaVF_3.mjs";
|
|
5
4
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
6
5
|
import "../_libs/jszip.mjs";
|
|
7
|
-
import { Z as Zap, j as TriangleAlert,
|
|
6
|
+
import { Z as Zap, j as TriangleAlert, ab as CircleStop, B as Brain, b as ChevronDown, f as ChevronRight, T as Terminal } from "../_libs/lucide-react.mjs";
|
|
8
7
|
import { M as Markdown } from "../_libs/react-markdown.mjs";
|
|
9
8
|
import { R as Root } from "../_libs/radix-ui__react-separator.mjs";
|
|
10
|
-
import { R as Root$1, C as CollapsibleTrigger$1, a as CollapsibleContent$1 } from "../_libs/radix-ui__react-collapsible.mjs";
|
|
11
|
-
import { R as Root$2, V as Viewport, C as Corner, S as ScrollAreaScrollbar, a as ScrollAreaThumb } from "../_libs/radix-ui__react-scroll-area.mjs";
|
|
12
9
|
import "../_libs/swr.mjs";
|
|
13
10
|
import "../_libs/use-sync-external-store.mjs";
|
|
14
11
|
import "../_libs/dequal.mjs";
|
|
@@ -64,6 +61,8 @@ import "../_libs/zod.mjs";
|
|
|
64
61
|
import "../_libs/radix-ui__react-tooltip.mjs";
|
|
65
62
|
import "../_libs/radix-ui__react-tabs.mjs";
|
|
66
63
|
import "../_libs/radix-ui__react-roving-focus.mjs";
|
|
64
|
+
import "../_libs/radix-ui__react-collapsible.mjs";
|
|
65
|
+
import "../_libs/radix-ui__react-scroll-area.mjs";
|
|
67
66
|
import "../_libs/tanstack__react-router.mjs";
|
|
68
67
|
import "../_libs/tiny-warning.mjs";
|
|
69
68
|
import "../_libs/tanstack__router-core.mjs";
|
|
@@ -191,74 +190,6 @@ function Separator({
|
|
|
191
190
|
}
|
|
192
191
|
);
|
|
193
192
|
}
|
|
194
|
-
function Collapsible({
|
|
195
|
-
...props
|
|
196
|
-
}) {
|
|
197
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(Root$1, { "data-slot": "collapsible", ...props });
|
|
198
|
-
}
|
|
199
|
-
function CollapsibleTrigger({
|
|
200
|
-
...props
|
|
201
|
-
}) {
|
|
202
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(CollapsibleTrigger$1, { "data-slot": "collapsible-trigger", ...props });
|
|
203
|
-
}
|
|
204
|
-
function CollapsibleContent({
|
|
205
|
-
...props
|
|
206
|
-
}) {
|
|
207
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(CollapsibleContent$1, { "data-slot": "collapsible-content", ...props });
|
|
208
|
-
}
|
|
209
|
-
function ScrollArea({
|
|
210
|
-
className,
|
|
211
|
-
children,
|
|
212
|
-
...props
|
|
213
|
-
}) {
|
|
214
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
215
|
-
Root$2,
|
|
216
|
-
{
|
|
217
|
-
"data-slot": "scroll-area",
|
|
218
|
-
className: cn("relative", className),
|
|
219
|
-
...props,
|
|
220
|
-
children: [
|
|
221
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
222
|
-
Viewport,
|
|
223
|
-
{
|
|
224
|
-
"data-slot": "scroll-area-viewport",
|
|
225
|
-
className: "focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",
|
|
226
|
-
children
|
|
227
|
-
}
|
|
228
|
-
),
|
|
229
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(ScrollBar, {}),
|
|
230
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Corner, {})
|
|
231
|
-
]
|
|
232
|
-
}
|
|
233
|
-
);
|
|
234
|
-
}
|
|
235
|
-
function ScrollBar({
|
|
236
|
-
className,
|
|
237
|
-
orientation = "vertical",
|
|
238
|
-
...props
|
|
239
|
-
}) {
|
|
240
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
241
|
-
ScrollAreaScrollbar,
|
|
242
|
-
{
|
|
243
|
-
"data-slot": "scroll-area-scrollbar",
|
|
244
|
-
orientation,
|
|
245
|
-
className: cn(
|
|
246
|
-
"flex touch-none p-px transition-colors select-none",
|
|
247
|
-
orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent",
|
|
248
|
-
orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent",
|
|
249
|
-
className
|
|
250
|
-
),
|
|
251
|
-
...props,
|
|
252
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
253
|
-
ScrollAreaThumb,
|
|
254
|
-
{
|
|
255
|
-
"data-slot": "scroll-area-thumb",
|
|
256
|
-
className: "bg-border relative flex-1 rounded-full"
|
|
257
|
-
}
|
|
258
|
-
)
|
|
259
|
-
}
|
|
260
|
-
);
|
|
261
|
-
}
|
|
262
193
|
const THINKING_TAG_REGEX = /<think>([\s\S]*?)<\/think>/gi;
|
|
263
194
|
const THINKING_TAG_REGEX_SINGLE = /<think>([\s\S]*?)<\/think>/i;
|
|
264
195
|
function extractThinkingFromContent(text) {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { k as TooltipProvider, l as Tooltip, m as TooltipTrigger, B as Badge, n as TooltipContent } from "./ProxyViewerContainer-
|
|
3
|
-
import
|
|
4
|
-
import "./router-Dl7oh0zx.mjs";
|
|
2
|
+
import { k as TooltipProvider, l as Tooltip, m as TooltipTrigger, B as Badge, n as TooltipContent, t as JsonViewer } from "./ProxyViewerContainer-B5a9p3j5.mjs";
|
|
3
|
+
import "./router-CVQaVF_3.mjs";
|
|
5
4
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
6
5
|
import "../_libs/jszip.mjs";
|
|
7
6
|
import { b as ChevronDown, f as ChevronRight, L as LoaderCircle } from "../_libs/lucide-react.mjs";
|
|
@@ -56,10 +55,6 @@ import "../_libs/radix-ui__react-arrow.mjs";
|
|
|
56
55
|
import "../_libs/radix-ui__react-use-size.mjs";
|
|
57
56
|
import "../_libs/radix-ui__react-use-previous.mjs";
|
|
58
57
|
import "../_libs/@radix-ui/react-visually-hidden+[...].mjs";
|
|
59
|
-
import "../_libs/zod.mjs";
|
|
60
|
-
import "../_libs/radix-ui__react-tooltip.mjs";
|
|
61
|
-
import "../_libs/radix-ui__react-tabs.mjs";
|
|
62
|
-
import "../_libs/radix-ui__react-roving-focus.mjs";
|
|
63
58
|
import "../_libs/react-markdown.mjs";
|
|
64
59
|
import "../_libs/devlop.mjs";
|
|
65
60
|
import "../_libs/unified.mjs";
|
|
@@ -114,6 +109,12 @@ import "../_libs/inline-style-parser.mjs";
|
|
|
114
109
|
import "../_libs/hast-util-whitespace.mjs";
|
|
115
110
|
import "../_libs/estree-util-is-identifier-name.mjs";
|
|
116
111
|
import "../_libs/html-url-attributes.mjs";
|
|
112
|
+
import "../_libs/zod.mjs";
|
|
113
|
+
import "../_libs/radix-ui__react-tooltip.mjs";
|
|
114
|
+
import "../_libs/radix-ui__react-tabs.mjs";
|
|
115
|
+
import "../_libs/radix-ui__react-roving-focus.mjs";
|
|
116
|
+
import "../_libs/radix-ui__react-collapsible.mjs";
|
|
117
|
+
import "../_libs/radix-ui__react-scroll-area.mjs";
|
|
117
118
|
import "../_libs/tanstack__react-router.mjs";
|
|
118
119
|
import "../_libs/tiny-warning.mjs";
|
|
119
120
|
import "../_libs/tanstack__router-core.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { P as ProxyViewerContainer } from "./ProxyViewerContainer-
|
|
1
|
+
import { P as ProxyViewerContainer } from "./ProxyViewerContainer-B5a9p3j5.mjs";
|
|
2
2
|
import "../_libs/react.mjs";
|
|
3
|
-
import "./router-
|
|
3
|
+
import "./router-CVQaVF_3.mjs";
|
|
4
4
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
5
5
|
import "../_libs/jszip.mjs";
|
|
6
6
|
import "../_libs/swr.mjs";
|
|
@@ -55,10 +55,66 @@ import "../_libs/radix-ui__react-use-size.mjs";
|
|
|
55
55
|
import "../_libs/radix-ui__react-use-previous.mjs";
|
|
56
56
|
import "../_libs/@radix-ui/react-visually-hidden+[...].mjs";
|
|
57
57
|
import "../_libs/lucide-react.mjs";
|
|
58
|
+
import "../_libs/react-markdown.mjs";
|
|
59
|
+
import "../_libs/devlop.mjs";
|
|
60
|
+
import "../_libs/unified.mjs";
|
|
61
|
+
import "../_libs/bail.mjs";
|
|
62
|
+
import "../_libs/extend.mjs";
|
|
63
|
+
import "../_libs/is-plain-obj.mjs";
|
|
64
|
+
import "../_libs/trough.mjs";
|
|
65
|
+
import "../_libs/vfile.mjs";
|
|
66
|
+
import "../_libs/vfile-message.mjs";
|
|
67
|
+
import "../_libs/unist-util-stringify-position.mjs";
|
|
68
|
+
import "node:process";
|
|
69
|
+
import "node:path";
|
|
70
|
+
import "node:url";
|
|
71
|
+
import "../_libs/remark-parse.mjs";
|
|
72
|
+
import "../_libs/mdast-util-from-markdown.mjs";
|
|
73
|
+
import "../_libs/micromark-util-decode-numeric-character-reference+[...].mjs";
|
|
74
|
+
import "../_libs/micromark-util-decode-string.mjs";
|
|
75
|
+
import "../_libs/decode-named-character-reference+[...].mjs";
|
|
76
|
+
import "../_libs/character-entities.mjs";
|
|
77
|
+
import "../_libs/micromark-util-normalize-identifier+[...].mjs";
|
|
78
|
+
import "../_libs/micromark.mjs";
|
|
79
|
+
import "../_libs/micromark-util-combine-extensions+[...].mjs";
|
|
80
|
+
import "../_libs/micromark-util-chunked.mjs";
|
|
81
|
+
import "../_libs/micromark-factory-space.mjs";
|
|
82
|
+
import "../_libs/micromark-util-character.mjs";
|
|
83
|
+
import "../_libs/micromark-core-commonmark.mjs";
|
|
84
|
+
import "../_libs/micromark-util-classify-character+[...].mjs";
|
|
85
|
+
import "../_libs/micromark-util-resolve-all.mjs";
|
|
86
|
+
import "../_libs/micromark-util-subtokenize.mjs";
|
|
87
|
+
import "../_libs/micromark-factory-destination.mjs";
|
|
88
|
+
import "../_libs/micromark-factory-label.mjs";
|
|
89
|
+
import "../_libs/micromark-factory-title.mjs";
|
|
90
|
+
import "../_libs/micromark-factory-whitespace.mjs";
|
|
91
|
+
import "../_libs/micromark-util-html-tag-name.mjs";
|
|
92
|
+
import "../_libs/mdast-util-to-string.mjs";
|
|
93
|
+
import "../_libs/remark-rehype.mjs";
|
|
94
|
+
import "../_libs/mdast-util-to-hast.mjs";
|
|
95
|
+
import "../_libs/ungap__structured-clone.mjs";
|
|
96
|
+
import "../_libs/micromark-util-sanitize-uri.mjs";
|
|
97
|
+
import "../_libs/unist-util-position.mjs";
|
|
98
|
+
import "../_libs/trim-lines.mjs";
|
|
99
|
+
import "../_libs/unist-util-visit.mjs";
|
|
100
|
+
import "../_libs/unist-util-visit-parents.mjs";
|
|
101
|
+
import "../_libs/unist-util-is.mjs";
|
|
102
|
+
import "../_libs/hast-util-to-jsx-runtime.mjs";
|
|
103
|
+
import "../_libs/comma-separated-tokens.mjs";
|
|
104
|
+
import "../_libs/property-information.mjs";
|
|
105
|
+
import "../_libs/space-separated-tokens.mjs";
|
|
106
|
+
import "../_libs/style-to-js.mjs";
|
|
107
|
+
import "../_libs/style-to-object.mjs";
|
|
108
|
+
import "../_libs/inline-style-parser.mjs";
|
|
109
|
+
import "../_libs/hast-util-whitespace.mjs";
|
|
110
|
+
import "../_libs/estree-util-is-identifier-name.mjs";
|
|
111
|
+
import "../_libs/html-url-attributes.mjs";
|
|
58
112
|
import "../_libs/zod.mjs";
|
|
59
113
|
import "../_libs/radix-ui__react-tooltip.mjs";
|
|
60
114
|
import "../_libs/radix-ui__react-tabs.mjs";
|
|
61
115
|
import "../_libs/radix-ui__react-roving-focus.mjs";
|
|
116
|
+
import "../_libs/radix-ui__react-collapsible.mjs";
|
|
117
|
+
import "../_libs/radix-ui__react-scroll-area.mjs";
|
|
62
118
|
import "../_libs/tanstack__react-router.mjs";
|
|
63
119
|
import "../_libs/tiny-warning.mjs";
|
|
64
120
|
import "../_libs/tanstack__router-core.mjs";
|
|
@@ -73,12 +129,9 @@ import "../_libs/isbot.mjs";
|
|
|
73
129
|
import "node:fs";
|
|
74
130
|
import "node:fs/promises";
|
|
75
131
|
import "node:buffer";
|
|
76
|
-
import "node:path";
|
|
77
132
|
import "node:child_process";
|
|
78
|
-
import "node:url";
|
|
79
133
|
import "../_libs/conf.mjs";
|
|
80
134
|
import "node:util";
|
|
81
|
-
import "node:process";
|
|
82
135
|
import "node:crypto";
|
|
83
136
|
import "node:assert";
|
|
84
137
|
import "../_libs/dot-prop.mjs";
|
|
@@ -198,7 +198,7 @@ function getResponse() {
|
|
|
198
198
|
return event.res;
|
|
199
199
|
}
|
|
200
200
|
async function getStartManifest(matchedRoutes) {
|
|
201
|
-
const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-
|
|
201
|
+
const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-Bpe5ZC56.mjs");
|
|
202
202
|
const startManifest = tsrStartManifest();
|
|
203
203
|
const rootRoute = startManifest.routes[rootRouteId] = startManifest.routes[rootRouteId] || {};
|
|
204
204
|
rootRoute.assets = rootRoute.assets || [];
|
|
@@ -767,7 +767,7 @@ let entriesPromise;
|
|
|
767
767
|
let baseManifestPromise;
|
|
768
768
|
let cachedFinalManifestPromise;
|
|
769
769
|
async function loadEntries() {
|
|
770
|
-
const routerEntry = await import("./router-
|
|
770
|
+
const routerEntry = await import("./router-CVQaVF_3.mjs").then((n) => n.i);
|
|
771
771
|
const startEntry = await import("./start-HYkvq4Ni.mjs");
|
|
772
772
|
return { startEntry, routerEntry };
|
|
773
773
|
}
|
|
@@ -49,7 +49,7 @@ import "../_libs/mimic-function.mjs";
|
|
|
49
49
|
import "../_libs/semver.mjs";
|
|
50
50
|
import "../_libs/uint8array-extras.mjs";
|
|
51
51
|
const faviconSvg = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2064%2064'%20role='img'%20aria-label='Agent%20Inspector'%3e%3crect%20width='64'%20height='64'%20rx='14'%20fill='%23111827'%20/%3e%3cg%20fill='none'%20stroke='%23f59e0b'%20stroke-width='4.2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20fill='%23f59e0b'%20d='M15%2036c0-11%207-18%2017-18s17%207%2017%2018c0%208-7%2013-17%2013s-17-5-17-13z'%20/%3e%3cpath%20d='M16%2031c-6-5-12-3-12%204%200%205%206%206%2011%202'%20/%3e%3cpath%20d='M48%2031c6-5%2012-3%2012%204%200%205-6%206-11%202'%20/%3e%3cpath%20d='M27%2019l-3-7'%20/%3e%3cpath%20d='M37%2019l3-7'%20/%3e%3cpath%20d='M19%2045l-6%209'%20/%3e%3cpath%20d='M27%2048l-3%209'%20/%3e%3cpath%20d='M37%2048l3%209'%20/%3e%3cpath%20d='M45%2045l6%209'%20/%3e%3c/g%3e%3cpath%20d='M14%2047l9-8%208%209c-5%203.5-12%203-17-1z'%20fill='%232f6b3f'%20opacity='.95'%20/%3e%3cpath%20d='M18%2046l5-5%205%206c-3%201.6-7%201.4-10-1z'%20fill='%236fb36f'%20opacity='.95'%20/%3e%3cpath%20d='M23%2041v10'%20fill='none'%20stroke='%23d6b45f'%20stroke-width='1.6'%20stroke-linecap='round'%20/%3e%3ccircle%20cx='31'%20cy='48'%20r='1.8'%20fill='%23c2412d'%20/%3e%3cpath%20d='M24%2044l13-11%2014%2013c-8%205.8-18%205.3-27-2z'%20fill='%232f6b3f'%20opacity='.97'%20/%3e%3cpath%20d='M30%2043l7-7%209%209c-5%202.7-11%202.5-16-2z'%20fill='%236fb36f'%20opacity='.95'%20/%3e%3cpath%20d='M37%2036v14'%20fill='none'%20stroke='%23d6b45f'%20stroke-width='2'%20stroke-linecap='round'%20/%3e%3cpath%20d='M30%2043c5-2%2011-1.5%2016%202'%20fill='none'%20stroke='%239fca78'%20stroke-width='1.8'%20stroke-linecap='round'%20/%3e%3ccircle%20cx='51'%20cy='46'%20r='2'%20fill='%23c2412d'%20/%3e%3cpath%20d='M40%2050l8-8%207%208c-4.2%203.2-10%203-15%200z'%20fill='%232f6b3f'%20opacity='.95'%20/%3e%3cpath%20d='M43%2049l5-5%204.5%205.5c-3%201.5-6%201.2-9.5-.5z'%20fill='%236fb36f'%20opacity='.95'%20/%3e%3cpath%20d='M48%2044v9'%20fill='none'%20stroke='%23d6b45f'%20stroke-width='1.5'%20stroke-linecap='round'%20/%3e%3ccircle%20cx='55'%20cy='50'%20r='1.7'%20fill='%23c2412d'%20/%3e%3ccircle%20cx='24'%20cy='11'%20r='3.2'%20fill='%23f59e0b'%20/%3e%3ccircle%20cx='40'%20cy='11'%20r='3.2'%20fill='%23f59e0b'%20/%3e%3ccircle%20cx='25'%20cy='34'%20r='2.1'%20fill='%23111827'%20/%3e%3ccircle%20cx='39'%20cy='34'%20r='2.1'%20fill='%23111827'%20/%3e%3c/svg%3e";
|
|
52
|
-
const appCss = "/assets/index-
|
|
52
|
+
const appCss = "/assets/index-DTdv7nzl.css";
|
|
53
53
|
const Route$r = createRootRoute({
|
|
54
54
|
head: () => ({
|
|
55
55
|
meta: [
|
|
@@ -76,7 +76,7 @@ function RootDocument({ children }) {
|
|
|
76
76
|
] })
|
|
77
77
|
] });
|
|
78
78
|
}
|
|
79
|
-
const $$splitComponentImporter$1 = () => import("./index-
|
|
79
|
+
const $$splitComponentImporter$1 = () => import("./index-BZXtj42m.mjs");
|
|
80
80
|
const Route$q = createFileRoute("/")({
|
|
81
81
|
component: lazyRouteComponent($$splitComponentImporter$1, "component")
|
|
82
82
|
});
|
|
@@ -119,7 +119,7 @@ function decodeSessionIdFromPath(encoded) {
|
|
|
119
119
|
function getSessionPath(sessionId) {
|
|
120
120
|
return `/session/${encodeSessionIdForPath(sessionId)}`;
|
|
121
121
|
}
|
|
122
|
-
const $$splitComponentImporter = () => import("../_sessionId-
|
|
122
|
+
const $$splitComponentImporter = () => import("../_sessionId-Dy7rsLS4.mjs");
|
|
123
123
|
const Route$p = createFileRoute("/session/$sessionId")({
|
|
124
124
|
component: lazyRouteComponent($$splitComponentImporter, "component"),
|
|
125
125
|
parseParams: (params) => ({
|
|
@@ -6658,7 +6658,7 @@ export {
|
|
|
6658
6658
|
DEFAULT_TIME_DISPLAY_FORMAT as a,
|
|
6659
6659
|
RuntimeConfigSchema as b,
|
|
6660
6660
|
AnthropicRequestSchema as c,
|
|
6661
|
-
|
|
6661
|
+
stripClaudeCodeBillingHeader as d,
|
|
6662
6662
|
createPendingProviderTestResults as e,
|
|
6663
6663
|
createFailedProviderTestResults as f,
|
|
6664
6664
|
getSessionPath as g,
|
|
@@ -6666,5 +6666,5 @@ export {
|
|
|
6666
6666
|
router as i,
|
|
6667
6667
|
parseOpenAIResponse as p,
|
|
6668
6668
|
requestFormatForPath as r,
|
|
6669
|
-
|
|
6669
|
+
safeGetOwnProperty as s
|
|
6670
6670
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const tsrStartManifest = () => ({ "routes": { "__root__": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/__root.tsx", "children": ["/", "/api/config", "/api/health", "/api/logs", "/api/mcp", "/api/models", "/api/providers", "/api/sessions", "/proxy/$", "/session/$sessionId", "/api/knowledge/candidates", "/api/knowledge/project-context", "/api/knowledge/search", "/api/knowledge/sessions/$sessionId/candidates"], "preloads": ["/assets/main-
|
|
1
|
+
const tsrStartManifest = () => ({ "routes": { "__root__": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/__root.tsx", "children": ["/", "/api/config", "/api/health", "/api/logs", "/api/mcp", "/api/models", "/api/providers", "/api/sessions", "/proxy/$", "/session/$sessionId", "/api/knowledge/candidates", "/api/knowledge/project-context", "/api/knowledge/search", "/api/knowledge/sessions/$sessionId/candidates"], "preloads": ["/assets/main-BlDtK0Nn.js"], "assets": [] }, "/": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/index.tsx", "assets": [], "preloads": ["/assets/index-Cf9U0Ekq.js", "/assets/ProxyViewerContainer-BHq0dkQG.js"] }, "/api/config": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/config.ts", "children": ["/api/config/paths"] }, "/api/health": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/health.ts" }, "/api/logs": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.ts", "children": ["/api/logs/$id", "/api/logs/stream"] }, "/api/mcp": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/mcp.ts" }, "/api/models": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/models.ts" }, "/api/providers": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.ts", "children": ["/api/providers/$providerId", "/api/providers/export", "/api/providers/import", "/api/providers/scan"] }, "/api/sessions": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/sessions.ts" }, "/proxy/$": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/proxy/$.ts" }, "/session/$sessionId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/session/$sessionId.tsx", "assets": [], "preloads": ["/assets/_sessionId-BJTz6t5l.js", "/assets/ProxyViewerContainer-BHq0dkQG.js"] }, "/api/config/paths": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/config.paths.ts" }, "/api/knowledge/candidates": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.candidates.ts", "children": ["/api/knowledge/candidates/$candidateId"] }, "/api/knowledge/project-context": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.project-context.ts" }, "/api/knowledge/search": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.search.ts" }, "/api/logs/$id": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.$id.ts", "children": ["/api/logs/$id/chunks", "/api/logs/$id/replay"] }, "/api/logs/stream": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.stream.ts" }, "/api/providers/$providerId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.ts", "children": ["/api/providers/$providerId/test"] }, "/api/providers/export": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.export.ts" }, "/api/providers/import": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.import.ts" }, "/api/providers/scan": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.scan.ts" }, "/api/knowledge/candidates/$candidateId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.candidates.$candidateId.ts", "children": ["/api/knowledge/candidates/$candidateId/promote"] }, "/api/logs/$id/chunks": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.$id.chunks.ts" }, "/api/logs/$id/replay": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.$id.replay.ts" }, "/api/providers/$providerId/test": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.test.ts", "children": ["/api/providers/$providerId/test/log"] }, "/api/knowledge/candidates/$candidateId/promote": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.candidates.$candidateId.promote.ts" }, "/api/knowledge/sessions/$sessionId/candidates": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.sessions.$sessionId.candidates.ts" }, "/api/providers/$providerId/test/log": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.test.log.ts" } }, "clientEntry": "/assets/main-BlDtK0Nn.js" });
|
|
2
2
|
export {
|
|
3
3
|
tsrStartManifest
|
|
4
4
|
};
|
package/.output/server/index.mjs
CHANGED
|
@@ -38,107 +38,100 @@ const assets = {
|
|
|
38
38
|
"/assets/alibaba-TTwafVwX.svg": {
|
|
39
39
|
"type": "image/svg+xml",
|
|
40
40
|
"etag": '"171b-6dyV5K8QjiaY35sN9qNprh9zDIs"',
|
|
41
|
-
"mtime": "2026-06-
|
|
41
|
+
"mtime": "2026-06-22T08:00:19.450Z",
|
|
42
42
|
"size": 5915,
|
|
43
43
|
"path": "../public/assets/alibaba-TTwafVwX.svg"
|
|
44
44
|
},
|
|
45
|
+
"/assets/index-Cf9U0Ekq.js": {
|
|
46
|
+
"type": "text/javascript; charset=utf-8",
|
|
47
|
+
"etag": '"74-xEOmMI8UrD1JoLsCUcOURuvg1RI"',
|
|
48
|
+
"mtime": "2026-06-22T08:00:19.450Z",
|
|
49
|
+
"size": 116,
|
|
50
|
+
"path": "../public/assets/index-Cf9U0Ekq.js"
|
|
51
|
+
},
|
|
52
|
+
"/assets/CompareDrawer-BhRYPp6T.js": {
|
|
53
|
+
"type": "text/javascript; charset=utf-8",
|
|
54
|
+
"etag": '"49fe-PMQYhnaFlcJwZxqT6Vpg/f0JQTM"',
|
|
55
|
+
"mtime": "2026-06-22T08:00:19.451Z",
|
|
56
|
+
"size": 18942,
|
|
57
|
+
"path": "../public/assets/CompareDrawer-BhRYPp6T.js"
|
|
58
|
+
},
|
|
45
59
|
"/assets/minimax-BPMzvuL-.jpeg": {
|
|
46
60
|
"type": "image/jpeg",
|
|
47
61
|
"etag": '"1b06-IwivU89ko5UTMUM1/t7hn4sQK9A"',
|
|
48
|
-
"mtime": "2026-06-
|
|
62
|
+
"mtime": "2026-06-22T08:00:19.450Z",
|
|
49
63
|
"size": 6918,
|
|
50
64
|
"path": "../public/assets/minimax-BPMzvuL-.jpeg"
|
|
51
65
|
},
|
|
52
|
-
"/assets/
|
|
53
|
-
"type": "text/javascript; charset=utf-8",
|
|
54
|
-
"etag": '"4a25-urgvq4zVkJNkh48bDzRCZpmV0XU"',
|
|
55
|
-
"mtime": "2026-06-21T02:55:38.893Z",
|
|
56
|
-
"size": 18981,
|
|
57
|
-
"path": "../public/assets/CompareDrawer-3nRwtk8J.js"
|
|
58
|
-
},
|
|
59
|
-
"/assets/index-B_dffD3u.js": {
|
|
60
|
-
"type": "text/javascript; charset=utf-8",
|
|
61
|
-
"etag": '"74-G34R32wRb35yFy01Xx5+tisQpbk"',
|
|
62
|
-
"mtime": "2026-06-21T02:55:38.892Z",
|
|
63
|
-
"size": 116,
|
|
64
|
-
"path": "../public/assets/index-B_dffD3u.js"
|
|
65
|
-
},
|
|
66
|
-
"/assets/index-CX796gvi.css": {
|
|
66
|
+
"/assets/index-DTdv7nzl.css": {
|
|
67
67
|
"type": "text/css; charset=utf-8",
|
|
68
|
-
"etag": '"
|
|
69
|
-
"mtime": "2026-06-
|
|
70
|
-
"size":
|
|
71
|
-
"path": "../public/assets/index-
|
|
68
|
+
"etag": '"18983-TRWmqsHw7W8cvkbG8DLftLqrfdk"',
|
|
69
|
+
"mtime": "2026-06-22T08:00:19.450Z",
|
|
70
|
+
"size": 100739,
|
|
71
|
+
"path": "../public/assets/index-DTdv7nzl.css"
|
|
72
72
|
},
|
|
73
|
-
"/assets/
|
|
73
|
+
"/assets/main-BlDtK0Nn.js": {
|
|
74
74
|
"type": "text/javascript; charset=utf-8",
|
|
75
|
-
"etag": '"
|
|
76
|
-
"mtime": "2026-06-
|
|
77
|
-
"size":
|
|
78
|
-
"path": "../public/assets/
|
|
75
|
+
"etag": '"5138c-ij2nRLRbIl6cPFBzJLHVSsai1cQ"',
|
|
76
|
+
"mtime": "2026-06-22T08:00:19.450Z",
|
|
77
|
+
"size": 332684,
|
|
78
|
+
"path": "../public/assets/main-BlDtK0Nn.js"
|
|
79
79
|
},
|
|
80
|
-
"/assets/
|
|
80
|
+
"/assets/ReplayDialog-Ch0gwg6B.js": {
|
|
81
81
|
"type": "text/javascript; charset=utf-8",
|
|
82
|
-
"etag": '"
|
|
83
|
-
"mtime": "2026-06-
|
|
84
|
-
"size":
|
|
85
|
-
"path": "../public/assets/
|
|
82
|
+
"etag": '"2361-9kpJuXbOb9cGd0DdpQzWtIgsmxA"',
|
|
83
|
+
"mtime": "2026-06-22T08:00:19.451Z",
|
|
84
|
+
"size": 9057,
|
|
85
|
+
"path": "../public/assets/ReplayDialog-Ch0gwg6B.js"
|
|
86
86
|
},
|
|
87
|
-
"/assets/
|
|
87
|
+
"/assets/StreamingChunkSequence-DCJ_gUHa.js": {
|
|
88
88
|
"type": "text/javascript; charset=utf-8",
|
|
89
|
-
"etag": '"
|
|
90
|
-
"mtime": "2026-06-
|
|
91
|
-
"size":
|
|
92
|
-
"path": "../public/assets/
|
|
89
|
+
"etag": '"d5a-6yxw99IEj6YNxQ5KDZBaoDdLnuc"',
|
|
90
|
+
"mtime": "2026-06-22T08:00:19.452Z",
|
|
91
|
+
"size": 3418,
|
|
92
|
+
"path": "../public/assets/StreamingChunkSequence-DCJ_gUHa.js"
|
|
93
93
|
},
|
|
94
|
-
"/assets/RequestAnatomy-
|
|
94
|
+
"/assets/RequestAnatomy-CKbvIgaN.js": {
|
|
95
95
|
"type": "text/javascript; charset=utf-8",
|
|
96
|
-
"etag": '"
|
|
97
|
-
"mtime": "2026-06-
|
|
98
|
-
"size":
|
|
99
|
-
"path": "../public/assets/RequestAnatomy-
|
|
96
|
+
"etag": '"21df-6Gc0zWlW2mnPWrccJEuLrGd6Dyc"',
|
|
97
|
+
"mtime": "2026-06-22T08:00:19.451Z",
|
|
98
|
+
"size": 8671,
|
|
99
|
+
"path": "../public/assets/RequestAnatomy-CKbvIgaN.js"
|
|
100
100
|
},
|
|
101
|
-
"/assets/
|
|
101
|
+
"/assets/ResponseView-hRLar32x.js": {
|
|
102
102
|
"type": "text/javascript; charset=utf-8",
|
|
103
|
-
"etag": '"
|
|
104
|
-
"mtime": "2026-06-
|
|
105
|
-
"size":
|
|
106
|
-
"path": "../public/assets/
|
|
103
|
+
"etag": '"30c5-dfn2k+6jf56jyWWG5aOTnuM6tzM"',
|
|
104
|
+
"mtime": "2026-06-22T08:00:19.452Z",
|
|
105
|
+
"size": 12485,
|
|
106
|
+
"path": "../public/assets/ResponseView-hRLar32x.js"
|
|
107
107
|
},
|
|
108
|
-
"/assets/
|
|
108
|
+
"/assets/_sessionId-BJTz6t5l.js": {
|
|
109
109
|
"type": "text/javascript; charset=utf-8",
|
|
110
|
-
"etag": '"
|
|
111
|
-
"mtime": "2026-06-
|
|
112
|
-
"size":
|
|
113
|
-
"path": "../public/assets/
|
|
110
|
+
"etag": '"d2-9Vn7vkBxIyXzmcuMuxvTdhm9y50"',
|
|
111
|
+
"mtime": "2026-06-22T08:00:19.450Z",
|
|
112
|
+
"size": 210,
|
|
113
|
+
"path": "../public/assets/_sessionId-BJTz6t5l.js"
|
|
114
114
|
},
|
|
115
115
|
"/assets/qwen-CONDcHqt.png": {
|
|
116
116
|
"type": "image/png",
|
|
117
117
|
"etag": '"572c3-cdJAPaHdOvFCGzuaQjagdgOu6XE"',
|
|
118
|
-
"mtime": "2026-06-
|
|
118
|
+
"mtime": "2026-06-22T08:00:19.450Z",
|
|
119
119
|
"size": 357059,
|
|
120
120
|
"path": "../public/assets/qwen-CONDcHqt.png"
|
|
121
121
|
},
|
|
122
122
|
"/assets/zhipuai-BPNAnxo-.svg": {
|
|
123
123
|
"type": "image/svg+xml",
|
|
124
124
|
"etag": '"2bf8-hNaLCTi89nOFCsIIfWpP/jrfo0s"',
|
|
125
|
-
"mtime": "2026-06-
|
|
125
|
+
"mtime": "2026-06-22T08:00:19.450Z",
|
|
126
126
|
"size": 11256,
|
|
127
127
|
"path": "../public/assets/zhipuai-BPNAnxo-.svg"
|
|
128
128
|
},
|
|
129
|
-
"/assets/
|
|
129
|
+
"/assets/ProxyViewerContainer-BHq0dkQG.js": {
|
|
130
130
|
"type": "text/javascript; charset=utf-8",
|
|
131
|
-
"etag": '"
|
|
132
|
-
"mtime": "2026-06-
|
|
133
|
-
"size":
|
|
134
|
-
"path": "../public/assets/
|
|
135
|
-
},
|
|
136
|
-
"/assets/_sessionId-CcD_aLGq.js": {
|
|
137
|
-
"type": "text/javascript; charset=utf-8",
|
|
138
|
-
"etag": '"d2-ELNVvbTmYkGjU2wEF0iGQm6YfmM"',
|
|
139
|
-
"mtime": "2026-06-21T02:55:38.892Z",
|
|
140
|
-
"size": 210,
|
|
141
|
-
"path": "../public/assets/_sessionId-CcD_aLGq.js"
|
|
131
|
+
"etag": '"a2352-gdvRbHXbPGRttPU1DgQ7eHEkZDE"',
|
|
132
|
+
"mtime": "2026-06-22T08:00:19.451Z",
|
|
133
|
+
"size": 664402,
|
|
134
|
+
"path": "../public/assets/ProxyViewerContainer-BHq0dkQG.js"
|
|
142
135
|
}
|
|
143
136
|
};
|
|
144
137
|
function readAsset(id) {
|
package/package.json
CHANGED
|
@@ -22,6 +22,7 @@ import type { AnatomySegment } from "./anatomy/types";
|
|
|
22
22
|
import { useAnatomyJump } from "./anatomy/useAnatomyJump";
|
|
23
23
|
import { computeHeadersDiff, computeRequestDiff, DiffView } from "./diff";
|
|
24
24
|
import { LogEntryHeader } from "./LogEntryHeader";
|
|
25
|
+
import { RequestTools } from "./RequestToolsPanel";
|
|
25
26
|
import type { CacheTrendEntry } from "./cacheTrend";
|
|
26
27
|
import { getLogFormatAdapter, resolveLogFormat } from "./log-formats";
|
|
27
28
|
import {
|
|
@@ -29,6 +30,7 @@ import {
|
|
|
29
30
|
shouldShowRawRequestTab,
|
|
30
31
|
shouldShowRequestDiffButton,
|
|
31
32
|
} from "./logEntryVisibility";
|
|
33
|
+
import { parseRequestTools } from "./requestTools";
|
|
32
34
|
|
|
33
35
|
/**
|
|
34
36
|
* Lightweight fallback for lazy-loaded tabs. Renders an empty 1px-tall row so
|
|
@@ -139,6 +141,10 @@ export const LogEntry = memo(function ({
|
|
|
139
141
|
() => adapter.analyzeRequest(log.rawRequestBody),
|
|
140
142
|
[adapter, log.rawRequestBody],
|
|
141
143
|
);
|
|
144
|
+
const responseAnalysis = useMemo(
|
|
145
|
+
() => adapter.analyzeResponse(log.responseText),
|
|
146
|
+
[adapter, log.responseText],
|
|
147
|
+
);
|
|
142
148
|
const strippedRequestBody = useMemo(() => {
|
|
143
149
|
if (!strip || resolvedFormat !== "anthropic" || log.rawRequestBody === null) {
|
|
144
150
|
return null;
|
|
@@ -177,7 +183,7 @@ export const LogEntry = memo(function ({
|
|
|
177
183
|
const responseCopy = useCopyFeedback(log.responseText);
|
|
178
184
|
|
|
179
185
|
// Per-tab action bundles consumed by the header. The header renders the
|
|
180
|
-
// entry whose key matches `activeTab`. Tabs without an entry (
|
|
186
|
+
// entry whose key matches `activeTab`. Tabs without an entry (Context,
|
|
181
187
|
// Parsed Response) render no header buttons.
|
|
182
188
|
const tabActions: HeaderTabActions = useMemo(
|
|
183
189
|
() => ({
|
|
@@ -275,6 +281,10 @@ export const LogEntry = memo(function ({
|
|
|
275
281
|
: null,
|
|
276
282
|
[adapter, requestExpansion.parsedData],
|
|
277
283
|
);
|
|
284
|
+
const requestTools = useMemo(
|
|
285
|
+
() => parseRequestTools(requestExpansion.parsedData),
|
|
286
|
+
[requestExpansion.parsedData],
|
|
287
|
+
);
|
|
278
288
|
const anatomyPaths = useMemo(() => {
|
|
279
289
|
if (anatomySegments === null) return undefined;
|
|
280
290
|
return new Set(anatomySegments.map((s) => s.path));
|
|
@@ -316,11 +326,11 @@ export const LogEntry = memo(function ({
|
|
|
316
326
|
<TabsList className="mx-4 mt-2">
|
|
317
327
|
{viewMode === "full" && <TabsTrigger value="raw-headers">Raw Headers</TabsTrigger>}
|
|
318
328
|
{viewMode === "full" && <TabsTrigger value="headers">Headers</TabsTrigger>}
|
|
329
|
+
{anatomySegments !== null && <TabsTrigger value="anatomy">Context</TabsTrigger>}
|
|
319
330
|
{shouldShowRawRequestTab(resolvedFormat, viewMode, strip) && (
|
|
320
331
|
<TabsTrigger value="raw-request">Raw Request</TabsTrigger>
|
|
321
332
|
)}
|
|
322
333
|
<TabsTrigger value="request">Request</TabsTrigger>
|
|
323
|
-
{anatomySegments !== null && <TabsTrigger value="anatomy">Anatomy</TabsTrigger>}
|
|
324
334
|
{viewMode === "full" && <TabsTrigger value="raw">Raw Response</TabsTrigger>}
|
|
325
335
|
<TabsTrigger value="parsed">Response</TabsTrigger>
|
|
326
336
|
</TabsList>
|
|
@@ -352,6 +362,10 @@ export const LogEntry = memo(function ({
|
|
|
352
362
|
<TabsContent value="request">
|
|
353
363
|
{activeTab === "request" && (
|
|
354
364
|
<div className="px-4 pt-1 pb-3">
|
|
365
|
+
<RequestTools
|
|
366
|
+
summary={requestTools}
|
|
367
|
+
calledToolNames={responseAnalysis.toolNames ?? []}
|
|
368
|
+
/>
|
|
355
369
|
{/* All tab actions (Copy, Expand, Diff with Raw, Diff with
|
|
356
370
|
Previous) live in the log header. The body is just
|
|
357
371
|
the diff or JSON view, depending on toggle state. */}
|
|
@@ -359,7 +373,7 @@ export const LogEntry = memo(function ({
|
|
|
359
373
|
<RequestDiffContent
|
|
360
374
|
rawBody={log.rawRequestBody}
|
|
361
375
|
displayedBody={displayedRequestBody}
|
|
362
|
-
emptyLabel="No transformation applied
|
|
376
|
+
emptyLabel="No transformation applied; raw and sent request bodies are identical."
|
|
363
377
|
/>
|
|
364
378
|
) : (
|
|
365
379
|
<div ref={requestJsonRef}>
|
|
@@ -424,7 +438,7 @@ export const LogEntry = memo(function ({
|
|
|
424
438
|
<HeadersDiffContent
|
|
425
439
|
rawHeaders={log.rawHeaders}
|
|
426
440
|
headers={log.headers}
|
|
427
|
-
emptyLabel="No transformation applied
|
|
441
|
+
emptyLabel="No transformation applied; raw and processed headers are identical."
|
|
428
442
|
/>
|
|
429
443
|
) : log.headers && Object.keys(log.headers).length > 0 ? (
|
|
430
444
|
<div className="space-y-1 font-mono text-xs">
|
|
@@ -92,7 +92,7 @@ export type HeaderTabAction = {
|
|
|
92
92
|
};
|
|
93
93
|
|
|
94
94
|
/**
|
|
95
|
-
* Tab actions keyed by Tabs value. Tabs without an entry (
|
|
95
|
+
* Tab actions keyed by Tabs value. Tabs without an entry (Context, Parsed
|
|
96
96
|
* Response) leave the corresponding key unset, so the header renders no
|
|
97
97
|
* action buttons for them. Typed as a record (rather than a `Partial<...>`
|
|
98
98
|
* union) so the per-tab lookup in the header is type-safe.
|
|
@@ -109,14 +109,14 @@ export type LogEntryHeaderProps = {
|
|
|
109
109
|
onToggle: () => void;
|
|
110
110
|
/** Per-log cache token trend (creation + read) relative to the previous log
|
|
111
111
|
* in the same conversation group. When `undefined` or a field is `null`,
|
|
112
|
-
* the corresponding cache span renders as it did before
|
|
112
|
+
* the corresponding cache span renders as it did before: no arrow.
|
|
113
113
|
*/
|
|
114
114
|
cacheTrend?: { creation: CacheTrend | null; read: CacheTrend | null } | null;
|
|
115
115
|
/** Currently-active tab value (matches the `Tabs` value prop). The header
|
|
116
116
|
* uses this to pick the right entry from `tabActions`. */
|
|
117
117
|
activeTab?: string;
|
|
118
118
|
/** Per-tab Copy + Expand-all actions. Only tabs with an entry will show
|
|
119
|
-
* buttons when active. Tabs without an entry (
|
|
119
|
+
* buttons when active. Tabs without an entry (Context, Parsed Response)
|
|
120
120
|
* render no header buttons. */
|
|
121
121
|
tabActions?: HeaderTabActions;
|
|
122
122
|
/** Re-send this request to the provider. Rendered in the header row when
|