@tonyclaw/agent-inspector 2.0.14 → 2.0.15

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 (37) hide show
  1. package/.output/cli.js +84 -0
  2. package/.output/nitro.json +1 -1
  3. package/.output/public/assets/{CompareDrawer-BR_kCD7Q.js → CompareDrawer-B6WCFRJq.js} +1 -1
  4. package/.output/public/assets/{ProxyViewerContainer-vc50msJj.js → ProxyViewerContainer-CofGRJoO.js} +31 -31
  5. package/.output/public/assets/{ReplayDialog-DsAYQBHZ.js → ReplayDialog-O_53zkX8.js} +1 -1
  6. package/.output/public/assets/{RequestAnatomy-B4uqyUt8.js → RequestAnatomy-CqBSMZv5.js} +1 -1
  7. package/.output/public/assets/{ResponseView-C1vQL-fM.js → ResponseView-BvbA6zot.js} +1 -1
  8. package/.output/public/assets/{StreamingChunkSequence-BECMV-xf.js → StreamingChunkSequence-Bnf6djjc.js} +1 -1
  9. package/.output/public/assets/_sessionId-9ICCw6YA.js +1 -0
  10. package/.output/public/assets/index-DVkMYH8H.js +1 -0
  11. package/.output/public/assets/{main-D6wegveF.js → main-Biir9ZGe.js} +2 -2
  12. package/.output/server/{_sessionId-CeHY-3xa.mjs → _sessionId-B77Gh4IL.mjs} +2 -2
  13. package/.output/server/_ssr/{CompareDrawer-blWGaGiT.mjs → CompareDrawer-D4-RHFqW.mjs} +2 -2
  14. package/.output/server/_ssr/{ProxyViewerContainer-Dt_9BuM9.mjs → ProxyViewerContainer-YP28-_2H.mjs} +31 -10
  15. package/.output/server/_ssr/{ReplayDialog-mzsq7AjW.mjs → ReplayDialog-D9rQlrcY.mjs} +3 -3
  16. package/.output/server/_ssr/{RequestAnatomy-CDAcXMBK.mjs → RequestAnatomy-BXCRWD9H.mjs} +2 -2
  17. package/.output/server/_ssr/{ResponseView-B__xXCsZ.mjs → ResponseView-DEwWMqSS.mjs} +2 -2
  18. package/.output/server/_ssr/{StreamingChunkSequence-BnJkTdXF.mjs → StreamingChunkSequence-CdrTPf5v.mjs} +2 -2
  19. package/.output/server/_ssr/{index-B2-uF9XT.mjs → index-Chf1DYqT.mjs} +2 -2
  20. package/.output/server/_ssr/index.mjs +2 -2
  21. package/.output/server/_ssr/{router-BpEBhA7S.mjs → router-BHXU5jWm.mjs} +89 -46
  22. package/.output/server/{_tanstack-start-manifest_v-CHekFSzj.mjs → _tanstack-start-manifest_v-D1dtacWy.mjs} +1 -1
  23. package/.output/server/index.mjs +63 -63
  24. package/README.md +31 -1
  25. package/package.json +1 -1
  26. package/src/cli.ts +91 -0
  27. package/src/components/ProxyViewer.tsx +32 -24
  28. package/src/components/ProxyViewerContainer.tsx +2 -1
  29. package/src/components/providers/SettingsDialog.tsx +10 -0
  30. package/src/lib/runtimeConfig.ts +4 -0
  31. package/src/lib/useStripConfig.ts +10 -2
  32. package/src/proxy/config.ts +33 -3
  33. package/src/proxy/handler.ts +30 -13
  34. package/src/proxy/logFinalizer.ts +4 -2
  35. package/src/routes/api/providers.$providerId.test.log.ts +17 -7
  36. package/.output/public/assets/_sessionId-3bjQPmHl.js +0 -1
  37. package/.output/public/assets/index-_7blCOK0.js +0 -1
@@ -1,7 +1,7 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
2
- import { u as useProviders, 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-Dt_9BuM9.mjs";
3
- import { ResponseView } from "./ResponseView-B__xXCsZ.mjs";
4
- import "./router-BpEBhA7S.mjs";
2
+ import { u as useProviders, 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-YP28-_2H.mjs";
3
+ import { ResponseView } from "./ResponseView-DEwWMqSS.mjs";
4
+ import "./router-BHXU5jWm.mjs";
5
5
  import "../_libs/modelcontextprotocol__server.mjs";
6
6
  import "../_libs/jszip.mjs";
7
7
  import { K as RotateCcw } from "../_libs/lucide-react.mjs";
@@ -1,6 +1,6 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
2
- import { u as useProviders, p as analyzeContextIntelligence, f as formatTokens, k as TooltipProvider, c as cn, l as Tooltip, m as TooltipTrigger, n as TooltipContent, S as SegmentBar, R as ROLE_COLOR_CLASSES, A as ANATOMY_ROLE_LABELS, q as formatContextWindowTokens, C as CONTEXT_USAGE_THRESHOLDS } from "./ProxyViewerContainer-Dt_9BuM9.mjs";
3
- import "./router-BpEBhA7S.mjs";
2
+ import { u as useProviders, p as analyzeContextIntelligence, f as formatTokens, k as TooltipProvider, c as cn, l as Tooltip, m as TooltipTrigger, n as TooltipContent, S as SegmentBar, R as ROLE_COLOR_CLASSES, A as ANATOMY_ROLE_LABELS, q as formatContextWindowTokens, C as CONTEXT_USAGE_THRESHOLDS } from "./ProxyViewerContainer-YP28-_2H.mjs";
3
+ import "./router-BHXU5jWm.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import { ac as Info, b as ChevronDown, f as ChevronRight } from "../_libs/lucide-react.mjs";
@@ -1,6 +1,6 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
2
- import { g as getLogFormatAdapter, f as formatTokens, c as cn, s as getStatusCategory, B as Badge, t as Collapsible, v as CollapsibleTrigger, w as CollapsibleContent, x as ScrollArea, y as JsonViewer, z as safeJsonValue } from "./ProxyViewerContainer-Dt_9BuM9.mjs";
3
- import "./router-BpEBhA7S.mjs";
2
+ import { g as getLogFormatAdapter, f as formatTokens, c as cn, s as getStatusCategory, B as Badge, t as Collapsible, v as CollapsibleTrigger, w as CollapsibleContent, x as ScrollArea, y as JsonViewer, z as safeJsonValue } from "./ProxyViewerContainer-YP28-_2H.mjs";
3
+ import "./router-BHXU5jWm.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import { Z as Zap, j as TriangleAlert, ad as CircleStop, B as Brain, b as ChevronDown, f as ChevronRight, T as Terminal } from "../_libs/lucide-react.mjs";
@@ -1,6 +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, y as JsonViewer } from "./ProxyViewerContainer-Dt_9BuM9.mjs";
3
- import "./router-BpEBhA7S.mjs";
2
+ import { k as TooltipProvider, l as Tooltip, m as TooltipTrigger, B as Badge, n as TooltipContent, y as JsonViewer } from "./ProxyViewerContainer-YP28-_2H.mjs";
3
+ import "./router-BHXU5jWm.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import { b as ChevronDown, f as ChevronRight, L as LoaderCircle } from "../_libs/lucide-react.mjs";
@@ -1,6 +1,6 @@
1
- import { P as ProxyViewerContainer } from "./ProxyViewerContainer-Dt_9BuM9.mjs";
1
+ import { P as ProxyViewerContainer } from "./ProxyViewerContainer-YP28-_2H.mjs";
2
2
  import "../_libs/react.mjs";
3
- import "./router-BpEBhA7S.mjs";
3
+ import "./router-BHXU5jWm.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import "../_libs/swr.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-CHekFSzj.mjs");
201
+ const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-D1dtacWy.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-BpEBhA7S.mjs").then((n) => n.m);
770
+ const routerEntry = await import("./router-BHXU5jWm.mjs").then((n) => n.n);
771
771
  const startEntry = await import("./start-HYkvq4Ni.mjs");
772
772
  return { startEntry, routerEntry };
773
773
  }
@@ -92,7 +92,7 @@ function RootDocument({ children }) {
92
92
  ] })
93
93
  ] });
94
94
  }
95
- const $$splitComponentImporter$1 = () => import("./index-B2-uF9XT.mjs");
95
+ const $$splitComponentImporter$1 = () => import("./index-Chf1DYqT.mjs");
96
96
  const Route$r = createFileRoute("/")({
97
97
  component: lazyRouteComponent($$splitComponentImporter$1, "component")
98
98
  });
@@ -135,7 +135,7 @@ function decodeSessionIdFromPath(encoded) {
135
135
  function getSessionPath(sessionId) {
136
136
  return `/session/${encodeSessionIdForPath(sessionId)}`;
137
137
  }
138
- const $$splitComponentImporter = () => import("../_sessionId-CeHY-3xa.mjs");
138
+ const $$splitComponentImporter = () => import("../_sessionId-B77Gh4IL.mjs");
139
139
  const Route$q = createFileRoute("/session/$sessionId")({
140
140
  component: lazyRouteComponent($$splitComponentImporter, "component"),
141
141
  parseParams: (params) => ({
@@ -3008,12 +3008,15 @@ async function getClientInfo(request) {
3008
3008
  const DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS = 10;
3009
3009
  const MAX_SLOW_RESPONSE_THRESHOLD_SECONDS = 600;
3010
3010
  const DEFAULT_TIME_DISPLAY_FORMAT = "time";
3011
+ const DEFAULT_CAPTURE_MODE = "simple";
3011
3012
  const TimeDisplayFormatSchema = _enum(["time", "full"]);
3013
+ const CaptureModeSchema = _enum(["simple", "full"]);
3012
3014
  const RuntimeConfigSchema = object({
3013
3015
  stripClaudeCodeBillingHeader: boolean(),
3014
3016
  hasSeenOnboarding: boolean().default(false),
3015
3017
  slowResponseThresholdSeconds: number().int().min(0).max(MAX_SLOW_RESPONSE_THRESHOLD_SECONDS).default(DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS),
3016
- timeDisplayFormat: TimeDisplayFormatSchema.default(DEFAULT_TIME_DISPLAY_FORMAT)
3018
+ timeDisplayFormat: TimeDisplayFormatSchema.default(DEFAULT_TIME_DISPLAY_FORMAT),
3019
+ captureMode: CaptureModeSchema.default(DEFAULT_CAPTURE_MODE)
3017
3020
  });
3018
3021
  function getConfigFilePath() {
3019
3022
  return join(getDataDir(), "config.json");
@@ -3022,7 +3025,16 @@ function getConfigTempPath() {
3022
3025
  return join(getDataDir(), "config.json.tmp");
3023
3026
  }
3024
3027
  let currentConfig = resolveInitialConfig();
3028
+ function resolveInitialCaptureMode() {
3029
+ const value = process.env["AGENT_INSPECTOR_CAPTURE_MODE"] ?? process.env["AGENT_INSPECTOR_MODE"];
3030
+ if (value === void 0 || value === "") return DEFAULT_CAPTURE_MODE;
3031
+ const result = CaptureModeSchema.safeParse(value);
3032
+ if (result.success) return result.data;
3033
+ logger.warn(`[config] Invalid capture mode ${value}; falling back to ${DEFAULT_CAPTURE_MODE}`);
3034
+ return DEFAULT_CAPTURE_MODE;
3035
+ }
3025
3036
  function resolveInitialConfig() {
3037
+ const captureMode = resolveInitialCaptureMode();
3026
3038
  const filePath = getConfigFilePath();
3027
3039
  if (existsSync(filePath)) {
3028
3040
  try {
@@ -3031,7 +3043,7 @@ function resolveInitialConfig() {
3031
3043
  const result = RuntimeConfigSchema.safeParse(parsed);
3032
3044
  if (result.success) {
3033
3045
  logger.info(`[config] Loaded persisted config from ${filePath}`);
3034
- return result.data;
3046
+ return { ...result.data, captureMode };
3035
3047
  }
3036
3048
  logger.warn(
3037
3049
  `[config] Persisted config at ${filePath} is invalid; falling back to env/default`
@@ -3047,14 +3059,16 @@ function resolveInitialConfig() {
3047
3059
  stripClaudeCodeBillingHeader: true,
3048
3060
  hasSeenOnboarding: false,
3049
3061
  slowResponseThresholdSeconds: DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS,
3050
- timeDisplayFormat: DEFAULT_TIME_DISPLAY_FORMAT
3062
+ timeDisplayFormat: DEFAULT_TIME_DISPLAY_FORMAT,
3063
+ captureMode
3051
3064
  };
3052
3065
  }
3053
3066
  return {
3054
3067
  stripClaudeCodeBillingHeader: false,
3055
3068
  hasSeenOnboarding: false,
3056
3069
  slowResponseThresholdSeconds: DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS,
3057
- timeDisplayFormat: DEFAULT_TIME_DISPLAY_FORMAT
3070
+ timeDisplayFormat: DEFAULT_TIME_DISPLAY_FORMAT,
3071
+ captureMode
3058
3072
  };
3059
3073
  }
3060
3074
  function getConfig() {
@@ -3063,7 +3077,8 @@ function getConfig() {
3063
3077
  function setConfig(patch) {
3064
3078
  const next = {
3065
3079
  ...currentConfig,
3066
- ...patch
3080
+ ...patch,
3081
+ captureMode: currentConfig.captureMode
3067
3082
  };
3068
3083
  currentConfig = next;
3069
3084
  persistConfig(next);
@@ -3080,7 +3095,7 @@ function persistConfig(value) {
3080
3095
  return false;
3081
3096
  }
3082
3097
  try {
3083
- writeFileSync(tempPath, JSON.stringify(value), "utf-8");
3098
+ writeFileSync(tempPath, JSON.stringify(toPersistedConfig(value)), "utf-8");
3084
3099
  } catch (err) {
3085
3100
  logger.error(`[config] Failed to write config temp file: ${String(err)}`);
3086
3101
  return false;
@@ -3100,6 +3115,14 @@ function persistConfig(value) {
3100
3115
  }
3101
3116
  }
3102
3117
  }
3118
+ function toPersistedConfig(value) {
3119
+ return {
3120
+ stripClaudeCodeBillingHeader: value.stripClaudeCodeBillingHeader,
3121
+ hasSeenOnboarding: value.hasSeenOnboarding,
3122
+ slowResponseThresholdSeconds: value.slowResponseThresholdSeconds,
3123
+ timeDisplayFormat: value.timeDisplayFormat
3124
+ };
3125
+ }
3103
3126
  const BILLING_HEADER_PREFIX = "x-anthropic-billing-header:";
3104
3127
  function isClaudeCodeBillingHeaderBlock(text) {
3105
3128
  const trimmed = text.trimStart();
@@ -3305,7 +3328,7 @@ function finalizeStreaming(job, log) {
3305
3328
  job.rawStream,
3306
3329
  log,
3307
3330
  log.model ?? void 0,
3308
- true
3331
+ job.collectStreamingChunks
3309
3332
  );
3310
3333
  persistStreamingChunks(log);
3311
3334
  return { log, upstreamUrl: job.upstreamUrl, error: null };
@@ -3325,7 +3348,7 @@ function finalizeStreamAbort(job, log) {
3325
3348
  job.rawStream,
3326
3349
  log,
3327
3350
  log.model ?? void 0,
3328
- true
3351
+ job.collectStreamingChunks
3329
3352
  );
3330
3353
  persistStreamingChunks(log);
3331
3354
  } else {
@@ -3518,12 +3541,14 @@ function injectProviderAuth(headers, provider) {
3518
3541
  }
3519
3542
  headers.set(HEADER_AUTHORIZATION, `Bearer ${apiKey}`);
3520
3543
  }
3521
- function buildProxyHeaders(originalHeaders) {
3522
- const rawHeaders = {};
3544
+ function buildProxyHeaders(originalHeaders, captureRawHeaders) {
3545
+ const rawHeaders = captureRawHeaders ? {} : void 0;
3523
3546
  const headers = new Headers();
3524
- originalHeaders.forEach((value, key) => {
3525
- rawHeaders[key.toLowerCase()] = value;
3526
- });
3547
+ if (rawHeaders !== void 0) {
3548
+ originalHeaders.forEach((value, key) => {
3549
+ rawHeaders[key.toLowerCase()] = value;
3550
+ });
3551
+ }
3527
3552
  headers.set(HEADER_USER_AGENT, PROXY_IDENTITY);
3528
3553
  headers.set(HEADER_X_PROXY_IDENTITY, PROXY_IDENTITY);
3529
3554
  for (const name of PRESERVE_HEADERS) {
@@ -3575,7 +3600,7 @@ function handleNonStreamingResponse(upstreamRes, responseBody, startTime, upstre
3575
3600
  headers: responseHeaders
3576
3601
  });
3577
3602
  }
3578
- function handleStreamingResponse(upstreamRes, req, startTime, upstreamUrl, log) {
3603
+ function handleStreamingResponse(upstreamRes, req, startTime, upstreamUrl, log, collectStreamingChunks) {
3579
3604
  log.streaming = true;
3580
3605
  log.responseStatus = upstreamRes.status;
3581
3606
  const chunks = [];
@@ -3594,7 +3619,8 @@ function handleStreamingResponse(upstreamRes, req, startTime, upstreamUrl, log)
3594
3619
  upstreamUrl,
3595
3620
  elapsedMs,
3596
3621
  responseStatus: upstreamRes.status,
3597
- rawStream: full
3622
+ rawStream: full,
3623
+ collectStreamingChunks
3598
3624
  });
3599
3625
  }
3600
3626
  });
@@ -3614,7 +3640,8 @@ function handleStreamingResponse(upstreamRes, req, startTime, upstreamUrl, log)
3614
3640
  upstreamUrl,
3615
3641
  elapsedMs,
3616
3642
  rawStream: full,
3617
- hasChunks
3643
+ hasChunks,
3644
+ collectStreamingChunks
3618
3645
  });
3619
3646
  }
3620
3647
  });
@@ -3633,8 +3660,9 @@ async function handleProxy(req) {
3633
3660
  if (req.body && req.method !== "GET" && req.method !== "HEAD") {
3634
3661
  requestBody = await req.text();
3635
3662
  }
3663
+ const config = getConfig();
3636
3664
  let bodyToForward = requestBody;
3637
- if (getConfig().stripClaudeCodeBillingHeader && requestBody !== null && parsed.isMessages) {
3665
+ if (config.stripClaudeCodeBillingHeader && requestBody !== null && parsed.isMessages) {
3638
3666
  const stripped = stripClaudeCodeBillingHeader(requestBody);
3639
3667
  if (stripped.removed > 0) {
3640
3668
  logger.info(
@@ -3658,7 +3686,11 @@ async function handleProxy(req) {
3658
3686
  const upstreamBase = selectUpstreamBase(route, matchedProviderConfig);
3659
3687
  const upstreamUrl = buildUpstreamUrl(upstreamBase, parsed.normalizedPath);
3660
3688
  const startTime = Date.now();
3661
- const { headers: upstreamHeaders, rawHeaders } = buildProxyHeaders(req.headers);
3689
+ const captureFullDetails = config.captureMode === "full";
3690
+ const { headers: upstreamHeaders, rawHeaders } = buildProxyHeaders(
3691
+ req.headers,
3692
+ captureFullDetails
3693
+ );
3662
3694
  setUpstreamHost(upstreamHeaders, upstreamBase);
3663
3695
  injectProviderAuth(upstreamHeaders, matchedProviderConfig);
3664
3696
  const provider = model !== null ? registry.findProvider(model) : null;
@@ -3671,10 +3703,12 @@ async function handleProxy(req) {
3671
3703
  return new Response("Forbidden: unsupported format", { status: STATUS_FORBIDDEN });
3672
3704
  }
3673
3705
  const [clientInfo, preAcquiredId] = await Promise.all([getClientInfo(req), getNextLogId()]);
3674
- const upstreamHeadersObj = {};
3675
- upstreamHeaders.forEach((value, key) => {
3676
- upstreamHeadersObj[key.toLowerCase()] = value;
3677
- });
3706
+ const upstreamHeadersObj = captureFullDetails ? {} : void 0;
3707
+ if (upstreamHeadersObj !== void 0) {
3708
+ upstreamHeaders.forEach((value, key) => {
3709
+ upstreamHeadersObj[key.toLowerCase()] = value;
3710
+ });
3711
+ }
3678
3712
  const log = await createLog(
3679
3713
  req.method,
3680
3714
  parsed.apiPath,
@@ -3718,7 +3752,7 @@ async function handleProxy(req) {
3718
3752
  const responseBody = await upstreamRes.text();
3719
3753
  return handleNonStreamingResponse(upstreamRes, responseBody, startTime, upstreamUrl, log);
3720
3754
  }
3721
- return handleStreamingResponse(upstreamRes, req, startTime, upstreamUrl, log);
3755
+ return handleStreamingResponse(upstreamRes, req, startTime, upstreamUrl, log, captureFullDetails);
3722
3756
  }
3723
3757
  const Route$p = createFileRoute("/proxy/$")({
3724
3758
  server: {
@@ -6642,7 +6676,7 @@ function createFailedProviderTestResults(message, type) {
6642
6676
  function hasSuccessField(result) {
6643
6677
  return Object.prototype.hasOwnProperty.call(result, "success");
6644
6678
  }
6645
- async function logModelResults(displayName, providerName, anthropicUrl, openaiUrl, modelResults) {
6679
+ async function logModelResults(displayName, providerName, anthropicUrl, openaiUrl, modelResults, captureFullDetails) {
6646
6680
  const usageModel = getModelUsageName(displayName, providerName);
6647
6681
  if (anthropicUrl !== void 0) {
6648
6682
  const nsResult = modelResults.anthropic.nonStreaming;
@@ -6671,7 +6705,7 @@ async function logModelResults(displayName, providerName, anthropicUrl, openaiUr
6671
6705
  apiFormat: "anthropic",
6672
6706
  isTest: true,
6673
6707
  providerName,
6674
- headers: nonStreamingResult.requestHeaders ?? {}
6708
+ headers: captureFullDetails ? nonStreamingResult.requestHeaders ?? {} : void 0
6675
6709
  });
6676
6710
  const streamingRequestBody = JSON.stringify(
6677
6711
  buildProviderTestRequestBody(usageModel, "streaming")
@@ -6691,13 +6725,13 @@ async function logModelResults(displayName, providerName, anthropicUrl, openaiUr
6691
6725
  cacheReadInputTokens: streamingResult.cacheReadInputTokens ?? null,
6692
6726
  elapsedMs: streamingResult.latencyMs ?? 0,
6693
6727
  streaming: true,
6694
- streamingChunks: streamingResult.streamingChunks,
6728
+ streamingChunks: captureFullDetails ? streamingResult.streamingChunks : void 0,
6695
6729
  userAgent: "provider-test",
6696
6730
  origin: null,
6697
6731
  apiFormat: "anthropic",
6698
6732
  isTest: true,
6699
6733
  providerName,
6700
- headers: streamingResult.requestHeaders ?? {}
6734
+ headers: captureFullDetails ? streamingResult.requestHeaders ?? {} : void 0
6701
6735
  });
6702
6736
  }
6703
6737
  }
@@ -6728,7 +6762,7 @@ async function logModelResults(displayName, providerName, anthropicUrl, openaiUr
6728
6762
  apiFormat: "openai",
6729
6763
  isTest: true,
6730
6764
  providerName,
6731
- headers: nonStreamingResult.requestHeaders ?? {}
6765
+ headers: captureFullDetails ? nonStreamingResult.requestHeaders ?? {} : void 0
6732
6766
  });
6733
6767
  const streamingRequestBody = JSON.stringify(
6734
6768
  buildProviderTestRequestBody(usageModel, "streaming")
@@ -6748,13 +6782,13 @@ async function logModelResults(displayName, providerName, anthropicUrl, openaiUr
6748
6782
  cacheReadInputTokens: null,
6749
6783
  elapsedMs: streamingResult.latencyMs ?? 0,
6750
6784
  streaming: true,
6751
- streamingChunks: streamingResult.streamingChunks,
6785
+ streamingChunks: captureFullDetails ? streamingResult.streamingChunks : void 0,
6752
6786
  userAgent: "provider-test",
6753
6787
  origin: null,
6754
6788
  apiFormat: "openai",
6755
6789
  isTest: true,
6756
6790
  providerName,
6757
- headers: streamingResult.requestHeaders ?? {}
6791
+ headers: captureFullDetails ? streamingResult.requestHeaders ?? {} : void 0
6758
6792
  });
6759
6793
  }
6760
6794
  }
@@ -6781,13 +6815,21 @@ const Route$2 = createFileRoute("/api/providers/$providerId/test/log")({
6781
6815
  );
6782
6816
  }
6783
6817
  const results = parsed.data;
6818
+ const captureFullDetails = getConfig().captureMode === "full";
6784
6819
  const anthropicUrl = provider.anthropicBaseUrl !== void 0 && provider.anthropicBaseUrl.length > 0 ? provider.anthropicBaseUrl : void 0;
6785
6820
  const openaiUrl = provider.openaiBaseUrl !== void 0 && provider.openaiBaseUrl.length > 0 ? provider.openaiBaseUrl : void 0;
6786
6821
  const entries = [];
6787
6822
  if (results.models !== void 0) {
6788
6823
  for (const [modelName, modelResult] of Object.entries(results.models)) {
6789
6824
  entries.push(
6790
- logModelResults(modelName, provider.name, anthropicUrl, openaiUrl, modelResult)
6825
+ logModelResults(
6826
+ modelName,
6827
+ provider.name,
6828
+ anthropicUrl,
6829
+ openaiUrl,
6830
+ modelResult,
6831
+ captureFullDetails
6832
+ )
6791
6833
  );
6792
6834
  }
6793
6835
  }
@@ -7143,26 +7185,27 @@ const router = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
7143
7185
  export {
7144
7186
  AnthropicResponseSchema$1 as A,
7145
7187
  CapturedLogSchema as C,
7146
- DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS as D,
7188
+ DEFAULT_CAPTURE_MODE as D,
7147
7189
  KnowledgeCandidateSchema as K,
7148
7190
  MAX_SLOW_RESPONSE_THRESHOLD_SECONDS as M,
7149
7191
  OpenAIRequestSchema as O,
7150
7192
  ProviderConfigSchema as P,
7151
7193
  Route$q as R,
7152
7194
  TimeDisplayFormatSchema as T,
7153
- DEFAULT_TIME_DISPLAY_FORMAT as a,
7154
- RuntimeConfigSchema as b,
7155
- AnthropicRequestSchema as c,
7156
- stripClaudeCodeBillingHeader as d,
7157
- providerHasContextMetadata as e,
7158
- findProviderModelMetadata as f,
7195
+ DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS as a,
7196
+ DEFAULT_TIME_DISPLAY_FORMAT as b,
7197
+ RuntimeConfigSchema as c,
7198
+ AnthropicRequestSchema as d,
7199
+ stripClaudeCodeBillingHeader as e,
7200
+ providerHasContextMetadata as f,
7159
7201
  getSessionPath as g,
7160
- createPendingProviderTestResults as h,
7161
- ProviderTestResultsSchema as i,
7162
- createFailedProviderTestResults as j,
7163
- resolveProviderContextWindow as k,
7164
- isPlainRecord as l,
7165
- router as m,
7202
+ findProviderModelMetadata as h,
7203
+ createPendingProviderTestResults as i,
7204
+ ProviderTestResultsSchema as j,
7205
+ createFailedProviderTestResults as k,
7206
+ resolveProviderContextWindow as l,
7207
+ isPlainRecord as m,
7208
+ router as n,
7166
7209
  parseOpenAIResponse as p,
7167
7210
  requestFormatForPath as r,
7168
7211
  safeGetOwnProperty as s
@@ -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-D6wegveF.js"], "assets": [] }, "/": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/index.tsx", "assets": [], "preloads": ["/assets/index-_7blCOK0.js", "/assets/ProxyViewerContainer-vc50msJj.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-3bjQPmHl.js", "/assets/ProxyViewerContainer-vc50msJj.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/model-metadata", "/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/model-metadata": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.model-metadata.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-D6wegveF.js" });
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-Biir9ZGe.js"], "assets": [] }, "/": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/index.tsx", "assets": [], "preloads": ["/assets/index-DVkMYH8H.js", "/assets/ProxyViewerContainer-CofGRJoO.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-9ICCw6YA.js", "/assets/ProxyViewerContainer-CofGRJoO.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/model-metadata", "/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/model-metadata": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.model-metadata.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-Biir9ZGe.js" });
2
2
  export {
3
3
  tsrStartManifest
4
4
  };
@@ -35,103 +35,103 @@ const headers = ((m) => function headersRouteRule(event) {
35
35
  }
36
36
  });
37
37
  const assets = {
38
- "/assets/CompareDrawer-BR_kCD7Q.js": {
38
+ "/assets/index-DVkMYH8H.js": {
39
39
  "type": "text/javascript; charset=utf-8",
40
- "etag": '"49fe-h2V2O7V6W/qLlUGdYpKUldvpjWs"',
41
- "mtime": "2026-06-27T01:00:07.209Z",
42
- "size": 18942,
43
- "path": "../public/assets/CompareDrawer-BR_kCD7Q.js"
44
- },
45
- "/assets/index-_7blCOK0.js": {
46
- "type": "text/javascript; charset=utf-8",
47
- "etag": '"74-QxBCxL6xnKy+9Y7QZcRvqsp/t4g"',
48
- "mtime": "2026-06-27T01:00:07.209Z",
40
+ "etag": '"74-GBmxRerueSBHr5Yf7dUOgBYydpU"',
41
+ "mtime": "2026-06-27T01:33:17.528Z",
49
42
  "size": 116,
50
- "path": "../public/assets/index-_7blCOK0.js"
43
+ "path": "../public/assets/index-DVkMYH8H.js"
51
44
  },
52
- "/assets/ReplayDialog-DsAYQBHZ.js": {
45
+ "/assets/alibaba-TTwafVwX.svg": {
46
+ "type": "image/svg+xml",
47
+ "etag": '"171b-6dyV5K8QjiaY35sN9qNprh9zDIs"',
48
+ "mtime": "2026-06-27T01:33:17.528Z",
49
+ "size": 5915,
50
+ "path": "../public/assets/alibaba-TTwafVwX.svg"
51
+ },
52
+ "/assets/CompareDrawer-B6WCFRJq.js": {
53
53
  "type": "text/javascript; charset=utf-8",
54
- "etag": '"2361-2SJPnlXCUj030vkvF0obKqO2ww4"',
55
- "mtime": "2026-06-27T01:00:07.209Z",
56
- "size": 9057,
57
- "path": "../public/assets/ReplayDialog-DsAYQBHZ.js"
54
+ "etag": '"49fe-H23nTYJE6lXgq0srel66pBNsVds"',
55
+ "mtime": "2026-06-27T01:33:17.528Z",
56
+ "size": 18942,
57
+ "path": "../public/assets/CompareDrawer-B6WCFRJq.js"
58
58
  },
59
59
  "/assets/index-D_nZj9Vt.css": {
60
60
  "type": "text/css; charset=utf-8",
61
61
  "etag": '"1a275-7T1iSNG2p6BSsqLwdpfky+9evLw"',
62
- "mtime": "2026-06-27T01:00:07.209Z",
62
+ "mtime": "2026-06-27T01:33:17.528Z",
63
63
  "size": 107125,
64
64
  "path": "../public/assets/index-D_nZj9Vt.css"
65
65
  },
66
- "/assets/alibaba-TTwafVwX.svg": {
67
- "type": "image/svg+xml",
68
- "etag": '"171b-6dyV5K8QjiaY35sN9qNprh9zDIs"',
69
- "mtime": "2026-06-27T01:00:07.209Z",
70
- "size": 5915,
71
- "path": "../public/assets/alibaba-TTwafVwX.svg"
66
+ "/assets/minimax-BPMzvuL-.jpeg": {
67
+ "type": "image/jpeg",
68
+ "etag": '"1b06-IwivU89ko5UTMUM1/t7hn4sQK9A"',
69
+ "mtime": "2026-06-27T01:33:17.528Z",
70
+ "size": 6918,
71
+ "path": "../public/assets/minimax-BPMzvuL-.jpeg"
72
72
  },
73
- "/assets/RequestAnatomy-B4uqyUt8.js": {
73
+ "/assets/RequestAnatomy-CqBSMZv5.js": {
74
74
  "type": "text/javascript; charset=utf-8",
75
- "etag": '"4485-He+g7fOqSzn4yv1CcgVk+VCluMQ"',
76
- "mtime": "2026-06-27T01:00:07.209Z",
75
+ "etag": '"4485-ASH0McTixuSChPgRJXtw7959sE8"',
76
+ "mtime": "2026-06-27T01:33:17.528Z",
77
77
  "size": 17541,
78
- "path": "../public/assets/RequestAnatomy-B4uqyUt8.js"
78
+ "path": "../public/assets/RequestAnatomy-CqBSMZv5.js"
79
79
  },
80
- "/assets/StreamingChunkSequence-BECMV-xf.js": {
80
+ "/assets/ReplayDialog-O_53zkX8.js": {
81
81
  "type": "text/javascript; charset=utf-8",
82
- "etag": '"d5b-Gb7t7c7o7NuJl7mOyiJKP6Wyw8Q"',
83
- "mtime": "2026-06-27T01:00:07.211Z",
82
+ "etag": '"2361-UXCD85zY35ZMpI4MCvWGIBGRqsM"',
83
+ "mtime": "2026-06-27T01:33:17.528Z",
84
+ "size": 9057,
85
+ "path": "../public/assets/ReplayDialog-O_53zkX8.js"
86
+ },
87
+ "/assets/ResponseView-BvbA6zot.js": {
88
+ "type": "text/javascript; charset=utf-8",
89
+ "etag": '"30cd-kBNUcY62rE797/1oAWUgva5ZP3E"',
90
+ "mtime": "2026-06-27T01:33:17.528Z",
91
+ "size": 12493,
92
+ "path": "../public/assets/ResponseView-BvbA6zot.js"
93
+ },
94
+ "/assets/StreamingChunkSequence-Bnf6djjc.js": {
95
+ "type": "text/javascript; charset=utf-8",
96
+ "etag": '"d5b-H23wfjS024K950LRNDcnoBMbvZk"',
97
+ "mtime": "2026-06-27T01:33:17.528Z",
84
98
  "size": 3419,
85
- "path": "../public/assets/StreamingChunkSequence-BECMV-xf.js"
99
+ "path": "../public/assets/StreamingChunkSequence-Bnf6djjc.js"
86
100
  },
87
- "/assets/main-D6wegveF.js": {
101
+ "/assets/_sessionId-9ICCw6YA.js": {
88
102
  "type": "text/javascript; charset=utf-8",
89
- "etag": '"51726-8FmBhflOXcjuOjvtwi9jMU4uXjU"',
90
- "mtime": "2026-06-27T01:00:07.209Z",
103
+ "etag": '"d2-uFVaRacf7cf25NZ3tVGQAaJ9s1U"',
104
+ "mtime": "2026-06-27T01:33:17.528Z",
105
+ "size": 210,
106
+ "path": "../public/assets/_sessionId-9ICCw6YA.js"
107
+ },
108
+ "/assets/main-Biir9ZGe.js": {
109
+ "type": "text/javascript; charset=utf-8",
110
+ "etag": '"51726-FJBttDIDcSV3cKBP0p/i3W2xLZs"',
111
+ "mtime": "2026-06-27T01:33:17.528Z",
91
112
  "size": 333606,
92
- "path": "../public/assets/main-D6wegveF.js"
113
+ "path": "../public/assets/main-Biir9ZGe.js"
93
114
  },
94
115
  "/assets/zhipuai-BPNAnxo-.svg": {
95
116
  "type": "image/svg+xml",
96
117
  "etag": '"2bf8-hNaLCTi89nOFCsIIfWpP/jrfo0s"',
97
- "mtime": "2026-06-27T01:00:07.209Z",
118
+ "mtime": "2026-06-27T01:33:17.528Z",
98
119
  "size": 11256,
99
120
  "path": "../public/assets/zhipuai-BPNAnxo-.svg"
100
121
  },
101
- "/assets/_sessionId-3bjQPmHl.js": {
102
- "type": "text/javascript; charset=utf-8",
103
- "etag": '"d2-OsIEVGbAQp+p9USHQURDEp0WwIc"',
104
- "mtime": "2026-06-27T01:00:07.209Z",
105
- "size": 210,
106
- "path": "../public/assets/_sessionId-3bjQPmHl.js"
107
- },
108
- "/assets/ResponseView-C1vQL-fM.js": {
109
- "type": "text/javascript; charset=utf-8",
110
- "etag": '"30cd-nQBYXVNim5cyoGVYNnBURUkaZhE"',
111
- "mtime": "2026-06-27T01:00:07.211Z",
112
- "size": 12493,
113
- "path": "../public/assets/ResponseView-C1vQL-fM.js"
114
- },
115
122
  "/assets/qwen-CONDcHqt.png": {
116
123
  "type": "image/png",
117
124
  "etag": '"572c3-cdJAPaHdOvFCGzuaQjagdgOu6XE"',
118
- "mtime": "2026-06-27T01:00:07.209Z",
125
+ "mtime": "2026-06-27T01:33:17.528Z",
119
126
  "size": 357059,
120
127
  "path": "../public/assets/qwen-CONDcHqt.png"
121
128
  },
122
- "/assets/minimax-BPMzvuL-.jpeg": {
123
- "type": "image/jpeg",
124
- "etag": '"1b06-IwivU89ko5UTMUM1/t7hn4sQK9A"',
125
- "mtime": "2026-06-27T01:00:07.209Z",
126
- "size": 6918,
127
- "path": "../public/assets/minimax-BPMzvuL-.jpeg"
128
- },
129
- "/assets/ProxyViewerContainer-vc50msJj.js": {
129
+ "/assets/ProxyViewerContainer-CofGRJoO.js": {
130
130
  "type": "text/javascript; charset=utf-8",
131
- "etag": '"a9ec5-5Nw0Ue/3Bsh3sQUrw5wRg6ihYpI"',
132
- "mtime": "2026-06-27T01:00:07.211Z",
133
- "size": 696005,
134
- "path": "../public/assets/ProxyViewerContainer-vc50msJj.js"
131
+ "etag": '"aa18a-0PYHI8TBpyPCvr+xLRTgvxnmB4M"',
132
+ "mtime": "2026-06-27T01:33:17.528Z",
133
+ "size": 696714,
134
+ "path": "../public/assets/ProxyViewerContainer-CofGRJoO.js"
135
135
  }
136
136
  };
137
137
  function readAsset(id) {