@tonyclaw/agent-inspector 2.0.18 → 2.0.19

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 (72) hide show
  1. package/.output/cli.js +137 -8
  2. package/.output/nitro.json +1 -1
  3. package/.output/public/assets/{CompareDrawer-CepU-dLW.js → CompareDrawer-D-90PIPw.js} +1 -1
  4. package/.output/public/assets/ProxyViewerContainer-CxRDWacg.js +114 -0
  5. package/.output/public/assets/ReplayDialog-DzlLYoTO.js +1 -0
  6. package/.output/public/assets/{RequestAnatomy-C_C6ZU3T.js → RequestAnatomy-0hbyf6oa.js} +1 -1
  7. package/.output/public/assets/ResponseView-CKe0tNqr.js +1 -0
  8. package/.output/public/assets/StreamingChunkSequence-enhfdeNh.js +1 -0
  9. package/.output/public/assets/_sessionId-CJ-SusES.js +1 -0
  10. package/.output/public/assets/index-BbFsmQRC.js +1 -0
  11. package/.output/public/assets/index-BfBgrkgU.css +1 -0
  12. package/.output/public/assets/{main-BRXsrxtv.js → main-o9-hg8g1.js} +2 -2
  13. package/.output/server/_libs/lucide-react.mjs +141 -118
  14. package/.output/server/_libs/tanstack__react-virtual.mjs +13 -2
  15. package/.output/server/_libs/tanstack__virtual-core.mjs +24 -1
  16. package/.output/server/{_sessionId-B8Bbfs-v.mjs → _sessionId-F8lm6PIb.mjs} +3 -2
  17. package/.output/server/_ssr/{CompareDrawer-TgGZLf1J.mjs → CompareDrawer-Cf1yfwfd.mjs} +4 -3
  18. package/.output/server/_ssr/{ProxyViewerContainer-B_ppaNmQ.mjs → ProxyViewerContainer-Bmu9867L.mjs} +349 -74
  19. package/.output/server/_ssr/{ReplayDialog-BXlajnMC.mjs → ReplayDialog-DxZfLBOe.mjs} +199 -17
  20. package/.output/server/_ssr/{RequestAnatomy-CCrx09-i.mjs → RequestAnatomy-CbdERGZd.mjs} +4 -3
  21. package/.output/server/_ssr/{ResponseView-BxtMJrov.mjs → ResponseView-CvLd6qxI.mjs} +4 -3
  22. package/.output/server/_ssr/{StreamingChunkSequence-BlpdSPb8.mjs → StreamingChunkSequence-B_lkRB6o.mjs} +4 -3
  23. package/.output/server/_ssr/{index-BeTMNSJy.mjs → index-ejrSItfz.mjs} +3 -2
  24. package/.output/server/_ssr/index.mjs +2 -2
  25. package/.output/server/_ssr/{router-Ddl1tuU7.mjs → router-SbCnbDc2.mjs} +872 -232
  26. package/.output/server/{_tanstack-start-manifest_v-Bvdz_U0f.mjs → _tanstack-start-manifest_v-yx8ftqWz.mjs} +1 -1
  27. package/.output/server/index.mjs +54 -54
  28. package/README.md +11 -109
  29. package/package.json +2 -1
  30. package/src/cli/doctor.ts +150 -5
  31. package/src/components/OnboardingBanner.tsx +13 -13
  32. package/src/components/ProxyViewer.tsx +55 -38
  33. package/src/components/ProxyViewerContainer.tsx +5 -0
  34. package/src/components/providers/SettingsDialog.tsx +113 -2
  35. package/src/components/proxy-viewer/ConversationGroup.tsx +20 -3
  36. package/src/components/proxy-viewer/ConversationGroupList.tsx +144 -0
  37. package/src/components/proxy-viewer/ConversationHeader.tsx +0 -2
  38. package/src/components/proxy-viewer/ReplayDialog.tsx +200 -13
  39. package/src/components/proxy-viewer/index.ts +1 -1
  40. package/src/knowledge/openclawClient.ts +0 -8
  41. package/src/knowledge/types.ts +0 -2
  42. package/src/lib/export-logs.ts +72 -5
  43. package/src/lib/providerTestContract.ts +0 -1
  44. package/src/lib/useProviders.ts +1 -1
  45. package/src/mcp/server.ts +14 -6
  46. package/src/mcp/toolHandlers.ts +21 -4
  47. package/src/proxy/chunkStorage.ts +2 -4
  48. package/src/proxy/dataDir.ts +3 -3
  49. package/src/proxy/formats/anthropic/index.ts +0 -1
  50. package/src/proxy/formats/anthropic/schemas.ts +0 -2
  51. package/src/proxy/handler.ts +41 -29
  52. package/src/proxy/logFinalizer.ts +93 -11
  53. package/src/proxy/logger.ts +35 -10
  54. package/src/proxy/providers.ts +12 -5
  55. package/src/proxy/rawStreamCapture.ts +85 -0
  56. package/src/proxy/schemas.ts +1 -51
  57. package/src/proxy/sessionRuntime.ts +0 -9
  58. package/src/proxy/socketTracker.ts +15 -8
  59. package/src/proxy/store.ts +414 -13
  60. package/src/routes/api/logs.$id.replay.ts +66 -1
  61. package/src/routes/api/logs.stream.ts +11 -3
  62. package/src/routes/api/logs.ts +51 -17
  63. package/src/routes/api/providers.$providerId.ts +10 -3
  64. package/src/routes/api/providers.ts +6 -3
  65. package/.output/public/assets/ProxyViewerContainer-BG7rc33d.js +0 -114
  66. package/.output/public/assets/ReplayDialog-DK6SPv8X.js +0 -1
  67. package/.output/public/assets/ResponseView-Bqpra4Zw.js +0 -1
  68. package/.output/public/assets/StreamingChunkSequence-CdPbpprq.js +0 -1
  69. package/.output/public/assets/_sessionId-CsNARHj5.js +0 -1
  70. package/.output/public/assets/index-37NfO0zx.js +0 -1
  71. package/.output/public/assets/index-D_nZj9Vt.css +0 -1
  72. package/src/components/ui/json-expansion-button.tsx +0 -56
@@ -1,11 +1,11 @@
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-B_ppaNmQ.mjs";
3
- import { ResponseView } from "./ResponseView-BxtMJrov.mjs";
4
- import "./router-Ddl1tuU7.mjs";
5
- import "../_libs/modelcontextprotocol__server.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 Button, l as TooltipProvider, m as Tooltip, n as TooltipTrigger, o as TooltipContent, p as dispatchLogFocusRequest } from "./ProxyViewerContainer-Bmu9867L.mjs";
3
+ import { ResponseView } from "./ResponseView-CvLd6qxI.mjs";
4
+ import { C as CapturedLogSchema } from "./router-SbCnbDc2.mjs";
6
5
  import "../_libs/jszip.mjs";
7
- import { K as RotateCcw } from "../_libs/lucide-react.mjs";
8
- import { d as object, c as boolean, n as number, b as string } from "../_libs/zod.mjs";
6
+ import "../_libs/modelcontextprotocol__server.mjs";
7
+ import { $ as RotateCcw, ac as Braces, ad as Minimize2 } from "../_libs/lucide-react.mjs";
8
+ import { d as object, n as number, a as array, c as boolean, b as string } from "../_libs/zod.mjs";
9
9
  import "../_libs/swr.mjs";
10
10
  import "../_libs/use-sync-external-store.mjs";
11
11
  import "../_libs/dequal.mjs";
@@ -130,6 +130,7 @@ import "node:stream";
130
130
  import "../_libs/isbot.mjs";
131
131
  import "node:fs";
132
132
  import "node:fs/promises";
133
+ import "node:readline";
133
134
  import "node:buffer";
134
135
  import "node:child_process";
135
136
  import "../_libs/conf.mjs";
@@ -266,8 +267,40 @@ const ReplayResultSchema = object({
266
267
  inputTokens: number().nullable().optional(),
267
268
  outputTokens: number().nullable().optional(),
268
269
  elapsedMs: number().nullable().optional(),
269
- streaming: boolean().optional()
270
+ streaming: boolean().optional(),
271
+ replayLogId: number().optional()
272
+ });
273
+ const ReplayHistorySchema = object({
274
+ logs: array(CapturedLogSchema),
275
+ total: number()
270
276
  });
277
+ function formatJsonForEdit(value) {
278
+ try {
279
+ const parsed = JSON.parse(value);
280
+ return JSON.stringify(parsed, null, 2);
281
+ } catch {
282
+ return value;
283
+ }
284
+ }
285
+ function compactJsonForEdit(value) {
286
+ try {
287
+ const parsed = JSON.parse(value);
288
+ return JSON.stringify(parsed);
289
+ } catch {
290
+ return value;
291
+ }
292
+ }
293
+ function readJsonEditState(value) {
294
+ try {
295
+ JSON.parse(value);
296
+ return { valid: true, message: "Valid JSON" };
297
+ } catch (err) {
298
+ return {
299
+ valid: false,
300
+ message: err instanceof Error ? err.message : "Invalid JSON"
301
+ };
302
+ }
303
+ }
271
304
  function formatElapsed(ms) {
272
305
  if (ms < 1e3) return `${String(ms)}ms`;
273
306
  return `${(ms / 1e3).toFixed(1)}s`;
@@ -335,13 +368,35 @@ function ReplayComparisonTable({
335
368
  }
336
369
  function ReplayDialog({ log, open, onOpenChange }) {
337
370
  const { providers } = useProviders();
371
+ const originalBody = log.rawRequestBody ?? "{}";
338
372
  const [modifiedBody, setModifiedBody] = reactExports.useState(() => {
339
- return log.rawRequestBody ?? "{}";
373
+ return formatJsonForEdit(originalBody);
340
374
  });
341
375
  const [replayResult, setReplayResult] = reactExports.useState(null);
376
+ const [replayHistory, setReplayHistory] = reactExports.useState([]);
342
377
  const [loading, setLoading] = reactExports.useState(false);
343
378
  const [error, setError] = reactExports.useState(null);
379
+ const jsonEditState = reactExports.useMemo(() => readJsonEditState(modifiedBody), [modifiedBody]);
380
+ const refreshReplayHistory = reactExports.useCallback(async () => {
381
+ if (!open) return;
382
+ try {
383
+ const response = await fetch(`/api/logs?replayOf=${String(log.id)}`);
384
+ if (!response.ok) return;
385
+ const data = await response.json();
386
+ const parsed = ReplayHistorySchema.safeParse(data);
387
+ if (!parsed.success) return;
388
+ setReplayHistory(parsed.data.logs);
389
+ } catch {
390
+ }
391
+ }, [log.id, open]);
392
+ reactExports.useEffect(() => {
393
+ void refreshReplayHistory();
394
+ }, [refreshReplayHistory]);
344
395
  async function handleReplay() {
396
+ if (!jsonEditState.valid) {
397
+ setError("Request body must be valid JSON before replay.");
398
+ return;
399
+ }
345
400
  setLoading(true);
346
401
  setError(null);
347
402
  setReplayResult(null);
@@ -360,6 +415,7 @@ function ReplayDialog({ log, open, onOpenChange }) {
360
415
  }
361
416
  const data = parsed.data;
362
417
  setReplayResult(data);
418
+ await refreshReplayHistory();
363
419
  if (!data.success) {
364
420
  setError(data.error ?? "Replay failed");
365
421
  }
@@ -374,6 +430,25 @@ function ReplayDialog({ log, open, onOpenChange }) {
374
430
  setError(null);
375
431
  onOpenChange(false);
376
432
  }
433
+ function handleBodyChange(value) {
434
+ setModifiedBody(value);
435
+ setReplayResult(null);
436
+ setError(null);
437
+ }
438
+ function handleFormatBody() {
439
+ handleBodyChange(formatJsonForEdit(modifiedBody));
440
+ }
441
+ function handleCompactBody() {
442
+ handleBodyChange(compactJsonForEdit(modifiedBody));
443
+ }
444
+ function handleResetBody() {
445
+ handleBodyChange(formatJsonForEdit(originalBody));
446
+ }
447
+ function handleOpenReplayLog(logId) {
448
+ window.location.hash = `log-${String(logId)}`;
449
+ dispatchLogFocusRequest({ logId, tab: "request" });
450
+ onOpenChange(false);
451
+ }
377
452
  const replayModelOptions = reactExports.useMemo(() => {
378
453
  const options = [];
379
454
  for (const provider of providers) {
@@ -395,9 +470,7 @@ function ReplayDialog({ log, open, onOpenChange }) {
395
470
  setError(result.error);
396
471
  return;
397
472
  }
398
- setModifiedBody(result.body);
399
- setReplayResult(null);
400
- setError(null);
473
+ handleBodyChange(formatJsonForEdit(result.body));
401
474
  }
402
475
  const originalMetrics = buildReplayMetrics({
403
476
  status: log.responseStatus,
@@ -416,6 +489,7 @@ function ReplayDialog({ log, open, onOpenChange }) {
416
489
  streaming: replayResult.streaming
417
490
  });
418
491
  const replayComparisons = replayMetrics === null ? [] : buildReplayComparisons(originalMetrics, replayMetrics);
492
+ const latestReplayHistory = replayHistory.slice(-5).reverse();
419
493
  return /* @__PURE__ */ jsxRuntimeExports.jsx(Dialog, { open, onOpenChange: handleClose, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogContent, { className: "max-w-4xl max-h-[85vh] overflow-auto", children: [
420
494
  /* @__PURE__ */ jsxRuntimeExports.jsx(DialogHeader, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogTitle, { className: "flex items-center gap-2", children: [
421
495
  /* @__PURE__ */ jsxRuntimeExports.jsx(RotateCcw, { className: "size-4" }),
@@ -451,19 +525,110 @@ function ReplayDialog({ log, open, onOpenChange }) {
451
525
  }
452
526
  )
453
527
  ] }),
454
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
455
- /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "text-sm font-medium mb-2 block", children: "Request Body (JSON)" }),
528
+ latestReplayHistory.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-2 rounded-md border border-border bg-muted/20 px-3 py-2", children: [
529
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
530
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-xs font-medium", children: "Replay history" }),
531
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
532
+ Button,
533
+ {
534
+ type: "button",
535
+ variant: "ghost",
536
+ size: "sm",
537
+ onClick: () => {
538
+ void refreshReplayHistory();
539
+ },
540
+ children: "Refresh"
541
+ }
542
+ )
543
+ ] }),
544
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid gap-1", children: latestReplayHistory.map((historyLog) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
545
+ "button",
546
+ {
547
+ type: "button",
548
+ onClick: () => handleOpenReplayLog(historyLog.id),
549
+ className: "grid grid-cols-[auto_1fr_auto_auto] items-center gap-2 rounded-sm px-2 py-1 text-left text-xs hover:bg-muted",
550
+ children: [
551
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "font-mono text-emerald-600", children: [
552
+ "#",
553
+ historyLog.id
554
+ ] }),
555
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate font-mono text-muted-foreground", children: historyLog.model ?? "unknown" }),
556
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono text-muted-foreground", children: historyLog.responseStatus ?? "-" }),
557
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono text-muted-foreground", children: historyLog.elapsedMs === null ? "-" : formatElapsed(historyLog.elapsedMs) })
558
+ ]
559
+ },
560
+ historyLog.id
561
+ )) })
562
+ ] }),
563
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-2", children: [
564
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2", children: [
565
+ /* @__PURE__ */ jsxRuntimeExports.jsx("label", { htmlFor: `replay-body-${String(log.id)}`, className: "text-sm font-medium", children: "Request Body" }),
566
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
567
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
568
+ "span",
569
+ {
570
+ className: jsonEditState.valid ? "text-xs text-emerald-500" : "text-xs text-destructive",
571
+ children: jsonEditState.message
572
+ }
573
+ ),
574
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
575
+ Button,
576
+ {
577
+ type: "button",
578
+ variant: "outline",
579
+ size: "sm",
580
+ onClick: handleFormatBody,
581
+ disabled: !jsonEditState.valid,
582
+ title: "Format JSON",
583
+ children: [
584
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Braces, { className: "size-3.5" }),
585
+ "Format"
586
+ ]
587
+ }
588
+ ),
589
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
590
+ Button,
591
+ {
592
+ type: "button",
593
+ variant: "outline",
594
+ size: "sm",
595
+ onClick: handleCompactBody,
596
+ disabled: !jsonEditState.valid,
597
+ title: "Compact JSON",
598
+ children: [
599
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Minimize2, { className: "size-3.5" }),
600
+ "Compact"
601
+ ]
602
+ }
603
+ ),
604
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
605
+ Button,
606
+ {
607
+ type: "button",
608
+ variant: "ghost",
609
+ size: "sm",
610
+ onClick: handleResetBody,
611
+ title: "Reset to original request",
612
+ children: [
613
+ /* @__PURE__ */ jsxRuntimeExports.jsx(RotateCcw, { className: "size-3.5" }),
614
+ "Reset"
615
+ ]
616
+ }
617
+ )
618
+ ] })
619
+ ] }),
456
620
  /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipProvider, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
457
621
  /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
458
622
  "textarea",
459
623
  {
460
- className: "w-full h-64 p-3 font-mono text-xs bg-muted rounded-md border border-input resize-none focus:outline-none focus:ring-2 focus:ring-ring",
624
+ id: `replay-body-${String(log.id)}`,
625
+ className: "w-full min-h-80 p-3 font-mono text-xs leading-5 bg-muted rounded-md border border-input resize-y tabular-nums focus:outline-none focus:ring-2 focus:ring-ring",
461
626
  value: modifiedBody,
462
- onChange: (e) => setModifiedBody(e.target.value),
627
+ onChange: (e) => handleBodyChange(e.target.value),
463
628
  spellCheck: false
464
629
  }
465
630
  ) }),
466
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: "Edit the request body before re-sending to the provider" })
631
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: "Edit formatted JSON before re-sending to the provider" })
467
632
  ] }) })
468
633
  ] }),
469
634
  error !== null && error !== "" && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-sm text-destructive bg-destructive/10 px-3 py-2 rounded-md", children: error }),
@@ -473,11 +638,28 @@ function ReplayDialog({ log, open, onOpenChange }) {
473
638
  onClick: () => {
474
639
  void handleReplay();
475
640
  },
476
- disabled: loading,
641
+ disabled: loading || !jsonEditState.valid,
477
642
  children: loading ? "Replaying..." : "Replay"
478
643
  }
479
644
  ) }),
480
645
  replayResult !== null && /* @__PURE__ */ jsxRuntimeExports.jsx(ReplayComparisonTable, { comparisons: replayComparisons.slice(0, 4) }),
646
+ replayResult?.success === true && replayResult.replayLogId !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2 rounded-md border border-emerald-500/25 bg-emerald-500/10 px-3 py-2 text-xs text-emerald-600", children: [
647
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { children: [
648
+ "Replay saved as test log #",
649
+ replayResult.replayLogId,
650
+ "."
651
+ ] }),
652
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
653
+ Button,
654
+ {
655
+ type: "button",
656
+ variant: "outline",
657
+ size: "sm",
658
+ onClick: () => handleOpenReplayLog(replayResult.replayLogId ?? log.id),
659
+ children: "Open saved log"
660
+ }
661
+ )
662
+ ] }),
481
663
  replayResult && replayResult.success && /* @__PURE__ */ jsxRuntimeExports.jsxs(Tabs, { defaultValue: "parsed", children: [
482
664
  /* @__PURE__ */ jsxRuntimeExports.jsxs(TabsList, { children: [
483
665
  /* @__PURE__ */ jsxRuntimeExports.jsx(TabsTrigger, { value: "parsed", children: "Response" }),
@@ -1,9 +1,9 @@
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-B_ppaNmQ.mjs";
3
- import "./router-Ddl1tuU7.mjs";
2
+ import { u as useProviders, q as analyzeContextIntelligence, f as formatTokens, l as TooltipProvider, c as cn, m as Tooltip, n as TooltipTrigger, o as TooltipContent, S as SegmentBar, R as ROLE_COLOR_CLASSES, A as ANATOMY_ROLE_LABELS, s as formatContextWindowTokens, C as CONTEXT_USAGE_THRESHOLDS } from "./ProxyViewerContainer-Bmu9867L.mjs";
3
+ import "./router-SbCnbDc2.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
- import { ac as Info, b as ChevronDown, f as ChevronRight } from "../_libs/lucide-react.mjs";
6
+ import { ae as Info, b as ChevronDown, m as ChevronRight } from "../_libs/lucide-react.mjs";
7
7
  import "../_libs/swr.mjs";
8
8
  import "../_libs/use-sync-external-store.mjs";
9
9
  import "../_libs/dequal.mjs";
@@ -128,6 +128,7 @@ import "node:stream";
128
128
  import "../_libs/isbot.mjs";
129
129
  import "node:fs";
130
130
  import "node:fs/promises";
131
+ import "node:readline";
131
132
  import "node:buffer";
132
133
  import "node:child_process";
133
134
  import "../_libs/conf.mjs";
@@ -1,9 +1,9 @@
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-B_ppaNmQ.mjs";
3
- import "./router-Ddl1tuU7.mjs";
2
+ import { g as getLogFormatAdapter, f as formatTokens, c as cn, t as getStatusCategory, B as Badge, v as Collapsible, w as CollapsibleTrigger, x as CollapsibleContent, y as ScrollArea, z as JsonViewer, E as safeJsonValue } from "./ProxyViewerContainer-Bmu9867L.mjs";
3
+ import "./router-SbCnbDc2.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
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";
6
+ import { Z as Zap, o as TriangleAlert, af as CircleStop, B as Brain, b as ChevronDown, m as ChevronRight, T as Terminal } from "../_libs/lucide-react.mjs";
7
7
  import { M as Markdown } from "../_libs/react-markdown.mjs";
8
8
  import { R as Root } from "../_libs/radix-ui__react-separator.mjs";
9
9
  import "../_libs/swr.mjs";
@@ -76,6 +76,7 @@ import "node:stream";
76
76
  import "../_libs/isbot.mjs";
77
77
  import "node:fs";
78
78
  import "node:fs/promises";
79
+ import "node:readline";
79
80
  import "node:buffer";
80
81
  import "node:path";
81
82
  import "node:child_process";
@@ -1,9 +1,9 @@
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-B_ppaNmQ.mjs";
3
- import "./router-Ddl1tuU7.mjs";
2
+ import { l as TooltipProvider, m as Tooltip, n as TooltipTrigger, B as Badge, o as TooltipContent, z as JsonViewer } from "./ProxyViewerContainer-Bmu9867L.mjs";
3
+ import "./router-SbCnbDc2.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
- import { b as ChevronDown, f as ChevronRight, L as LoaderCircle } from "../_libs/lucide-react.mjs";
6
+ import { b as ChevronDown, m as ChevronRight, L as LoaderCircle } from "../_libs/lucide-react.mjs";
7
7
  import "../_libs/swr.mjs";
8
8
  import "../_libs/use-sync-external-store.mjs";
9
9
  import "../_libs/dequal.mjs";
@@ -128,6 +128,7 @@ import "node:stream";
128
128
  import "../_libs/isbot.mjs";
129
129
  import "node:fs";
130
130
  import "node:fs/promises";
131
+ import "node:readline";
131
132
  import "node:buffer";
132
133
  import "node:child_process";
133
134
  import "../_libs/conf.mjs";
@@ -1,6 +1,6 @@
1
- import { P as ProxyViewerContainer } from "./ProxyViewerContainer-B_ppaNmQ.mjs";
1
+ import { P as ProxyViewerContainer } from "./ProxyViewerContainer-Bmu9867L.mjs";
2
2
  import "../_libs/react.mjs";
3
- import "./router-Ddl1tuU7.mjs";
3
+ import "./router-SbCnbDc2.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import "../_libs/swr.mjs";
@@ -128,6 +128,7 @@ import "node:stream";
128
128
  import "../_libs/isbot.mjs";
129
129
  import "node:fs";
130
130
  import "node:fs/promises";
131
+ import "node:readline";
131
132
  import "node:buffer";
132
133
  import "node:child_process";
133
134
  import "../_libs/conf.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-Bvdz_U0f.mjs");
201
+ const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-yx8ftqWz.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-Ddl1tuU7.mjs").then((n) => n.n);
770
+ const routerEntry = await import("./router-SbCnbDc2.mjs").then((n) => n.o);
771
771
  const startEntry = await import("./start-HYkvq4Ni.mjs");
772
772
  return { startEntry, routerEntry };
773
773
  }