@tonyclaw/agent-inspector 3.0.16 → 3.0.18

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 (88) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/{CompareDrawer-BJmxAiM0.js → CompareDrawer-Daj03-RL.js} +1 -1
  3. package/.output/public/assets/ProxyViewerContainer-BLCRQtU_.js +106 -0
  4. package/.output/public/assets/{ReplayDialog-CkLdOMJr.js → ReplayDialog-5FR5crdo.js} +1 -1
  5. package/.output/public/assets/{RequestAnatomy-DemOFfSc.js → RequestAnatomy-DF0hHdQY.js} +1 -1
  6. package/.output/public/assets/{ResponseView-9LhpuDo7.js → ResponseView-BwkMSsUa.js} +2 -2
  7. package/.output/public/assets/{StreamingChunkSequence-RRWYBOdz.js → StreamingChunkSequence-CKeUd58x.js} +1 -1
  8. package/.output/public/assets/{_sessionId-CWEh2Jsn.js → _sessionId-CThgXa41.js} +1 -1
  9. package/.output/public/assets/index-BHXN1Fsx.css +1 -0
  10. package/.output/public/assets/{index-Lwir70Rs.js → index-ClQ7Vi3J.js} +1 -1
  11. package/.output/public/assets/{index-hjNWJZGE.js → index-gm3A0idN.js} +1 -1
  12. package/.output/public/assets/{json-viewer-D8gvbDlB.js → json-viewer-BA-W-PZq.js} +1 -1
  13. package/.output/public/assets/{main-ovrz0tyD.js → main-BnRC1932.js} +2 -2
  14. package/.output/server/_libs/@opentelemetry/semantic-conventions+[...].mjs +2658 -0
  15. package/.output/server/_libs/agent-base.mjs +234 -0
  16. package/.output/server/_libs/anthropic-ai__sdk.mjs +6042 -0
  17. package/.output/server/_libs/atomically.mjs +3 -0
  18. package/.output/server/_libs/base64-js.mjs +102 -0
  19. package/.output/server/_libs/bignumber.js.mjs +1353 -0
  20. package/.output/server/_libs/buffer-equal-constant-time.mjs +38 -0
  21. package/.output/server/_libs/data-uri-to-buffer.mjs +39 -0
  22. package/.output/server/_libs/debug.mjs +547 -0
  23. package/.output/server/_libs/ecdsa-sig-formatter.mjs +162 -0
  24. package/.output/server/_libs/extend.mjs +2 -1
  25. package/.output/server/_libs/fetch-blob.mjs +287 -0
  26. package/.output/server/_libs/formdata-polyfill.mjs +88 -0
  27. package/.output/server/_libs/gaxios.mjs +927 -0
  28. package/.output/server/_libs/gcp-metadata.mjs +322 -0
  29. package/.output/server/_libs/google-auth-library.mjs +6339 -0
  30. package/.output/server/_libs/google-logging-utils.mjs +385 -0
  31. package/.output/server/_libs/google__genai.mjs +18034 -0
  32. package/.output/server/_libs/has-flag.mjs +16 -0
  33. package/.output/server/_libs/https-proxy-agent.mjs +280 -0
  34. package/.output/server/_libs/json-bigint.mjs +413 -0
  35. package/.output/server/_libs/jwa.mjs +233 -0
  36. package/.output/server/_libs/jws.mjs +298 -0
  37. package/.output/server/_libs/lucide-react.mjs +261 -226
  38. package/.output/server/_libs/mariozechner__pi-agent-core.mjs +824 -0
  39. package/.output/server/_libs/mariozechner__pi-ai.mjs +22889 -0
  40. package/.output/server/_libs/mistralai__mistralai.mjs +32045 -0
  41. package/.output/server/_libs/ms.mjs +120 -0
  42. package/.output/server/_libs/node-domexception.mjs +17 -0
  43. package/.output/server/_libs/node-fetch.mjs +1578 -0
  44. package/.output/server/_libs/ohash.mjs +1 -1
  45. package/.output/server/_libs/openai.mjs +6766 -0
  46. package/.output/server/_libs/opentelemetry__api.mjs +1678 -0
  47. package/.output/server/_libs/p-retry.mjs +87 -0
  48. package/.output/server/_libs/partial-json.mjs +244 -0
  49. package/.output/server/_libs/react-dom.mjs +5 -5
  50. package/.output/server/_libs/react-markdown.mjs +2 -2
  51. package/.output/server/_libs/react.mjs +30 -0
  52. package/.output/server/_libs/readable-stream.mjs +5 -5
  53. package/.output/server/_libs/retry.mjs +236 -0
  54. package/.output/server/_libs/safe-buffer.mjs +63 -1
  55. package/.output/server/_libs/srvx.mjs +2 -2
  56. package/.output/server/_libs/supports-color.mjs +108 -0
  57. package/.output/server/_libs/tanstack__router-core.mjs +1 -1
  58. package/.output/server/_libs/typebox.mjs +6596 -0
  59. package/.output/server/_libs/util-deprecate.mjs +2 -2
  60. package/.output/server/_libs/vfile.mjs +2 -2
  61. package/.output/server/_libs/web-streams-polyfill.mjs +4282 -0
  62. package/.output/server/_libs/ws.mjs +3715 -0
  63. package/.output/server/_libs/zod-to-json-schema.mjs +1207 -0
  64. package/.output/server/_libs/zod.mjs +597 -9
  65. package/.output/server/{_sessionId-zI_GFX_7.mjs → _sessionId-Bi3ZIrqT.mjs} +14 -13
  66. package/.output/server/_ssr/{CompareDrawer-Ckcx1RVu.mjs → CompareDrawer-BYZS_hCR.mjs} +14 -13
  67. package/.output/server/_ssr/{ProxyViewerContainer-BgXewlIr.mjs → ProxyViewerContainer-BE4umfVs.mjs} +205 -106
  68. package/.output/server/_ssr/{ReplayDialog-wx3nDtZn.mjs → ReplayDialog-BlID2ZH4.mjs} +15 -14
  69. package/.output/server/_ssr/{RequestAnatomy-DN80zt0G.mjs → RequestAnatomy-CGJ2lkzT.mjs} +14 -13
  70. package/.output/server/_ssr/{ResponseView-DD7rTu_l.mjs → ResponseView-DDjcGf7M.mjs} +14 -13
  71. package/.output/server/_ssr/{StreamingChunkSequence-DAgz6Vvw.mjs → StreamingChunkSequence-G7B8M5G2.mjs} +14 -13
  72. package/.output/server/_ssr/{index-dcTjp8du.mjs → index-ClQ9FvRJ.mjs} +13 -12
  73. package/.output/server/_ssr/index.mjs +4 -4
  74. package/.output/server/_ssr/{json-viewer-N2cuzGWR.mjs → json-viewer-CFbpkiBJ.mjs} +14 -13
  75. package/.output/server/_ssr/{router-BfQ0QsD5.mjs → router-Cq8LEvhE.mjs} +523 -97
  76. package/.output/server/_tanstack-start-manifest_v-p7J0QCMh.mjs +4 -0
  77. package/.output/server/index.mjs +75 -75
  78. package/package.json +4 -1
  79. package/src/components/ProxyViewer.tsx +3 -0
  80. package/src/components/pi-agent/PiAgentPanel.tsx +204 -0
  81. package/src/components/proxy-viewer/LogEntry.tsx +54 -19
  82. package/src/components/proxy-viewer/logEntryVisibility.ts +22 -0
  83. package/src/lib/piAgentContract.ts +21 -0
  84. package/src/routes/api/pi-agent.ts +29 -0
  85. package/src/services/piAgent.ts +390 -0
  86. package/.output/public/assets/ProxyViewerContainer-C40Nig73.js +0 -106
  87. package/.output/public/assets/index-HRfrFVYw.css +0 -1
  88. package/.output/server/_tanstack-start-manifest_v-BXnYrbcJ.mjs +0 -4
@@ -1,8 +1,17 @@
1
1
  import { j as jsxRuntimeExports, r as reactExports } from "./_libs/react.mjs";
2
- import { P as ProxyViewerContainer } from "./_ssr/ProxyViewerContainer-BgXewlIr.mjs";
3
- import { R as Route$J } from "./_ssr/router-BfQ0QsD5.mjs";
2
+ import { P as ProxyViewerContainer } from "./_ssr/ProxyViewerContainer-BE4umfVs.mjs";
3
+ import { R as Route$K } from "./_ssr/router-Cq8LEvhE.mjs";
4
4
  import "./_libs/jszip.mjs";
5
+ import "node:fs";
6
+ import "node:buffer";
7
+ import "node:path";
8
+ import "node:crypto";
9
+ import "node:child_process";
10
+ import "node:url";
11
+ import "crypto";
12
+ import "node:util";
5
13
  import "./_libs/modelcontextprotocol__server.mjs";
14
+ import "node:os";
6
15
  import "./_libs/swr.mjs";
7
16
  import "./_libs/use-sync-external-store.mjs";
8
17
  import "./_libs/dequal.mjs";
@@ -21,7 +30,6 @@ import "./_libs/react-dom.mjs";
21
30
  import "util";
22
31
  import "async_hooks";
23
32
  import "stream";
24
- import "crypto";
25
33
  import "./_libs/radix-ui__react-slot.mjs";
26
34
  import "./_libs/@radix-ui/react-use-callback-ref+[...].mjs";
27
35
  import "./_libs/@radix-ui/react-use-escape-keydown+[...].mjs";
@@ -67,27 +75,20 @@ import "./_libs/tanstack__router-core.mjs";
67
75
  import "./_libs/cookie-es.mjs";
68
76
  import "./_libs/seroval.mjs";
69
77
  import "./_libs/seroval-plugins.mjs";
78
+ import "node:stream";
70
79
  import "./_libs/tanstack__history.mjs";
71
80
  import "./_libs/tiny-invariant.mjs";
72
81
  import "node:stream/web";
73
- import "node:stream";
74
82
  import "./_libs/isbot.mjs";
75
- import "node:fs";
76
83
  import "node:fs/promises";
77
84
  import "node:readline";
78
- import "node:buffer";
79
- import "node:path";
80
- import "node:crypto";
81
- import "node:child_process";
82
- import "node:url";
83
85
  import "./_libs/conf.mjs";
84
- import "node:util";
85
86
  import "node:process";
86
87
  import "node:assert";
87
88
  import "./_libs/dot-prop.mjs";
88
89
  import "./_libs/env-paths.mjs";
89
- import "node:os";
90
90
  import "./_libs/atomically.mjs";
91
+ import "node:events";
91
92
  import "./_libs/stubborn-fs.mjs";
92
93
  import "./_libs/stubborn-utils.mjs";
93
94
  import "./_libs/when-exit.mjs";
@@ -118,7 +119,7 @@ import "./_libs/pako.mjs";
118
119
  function SessionViewerRoute() {
119
120
  const {
120
121
  sessionId
121
- } = Route$J.useParams();
122
+ } = Route$K.useParams();
122
123
  return /* @__PURE__ */ jsxRuntimeExports.jsx(ClientOnlySessionViewer, { sessionId });
123
124
  }
124
125
  function ClientOnlySessionViewer({
@@ -1,9 +1,18 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
2
- import { g as getLogFormatAdapter, r as resolveLogFormat, a as getConversationId, c as cn, B as Badge, f as formatTokens, b as copyTextToClipboard, L as LazyJsonViewerFromString } from "./ProxyViewerContainer-BgXewlIr.mjs";
3
- import "./router-BfQ0QsD5.mjs";
2
+ import { g as getLogFormatAdapter, r as resolveLogFormat, a as getConversationId, c as cn, B as Badge, f as formatTokens, b as copyTextToClipboard, L as LazyJsonViewerFromString } from "./ProxyViewerContainer-BE4umfVs.mjs";
3
+ import "./router-Cq8LEvhE.mjs";
4
+ import "node:fs";
5
+ import "node:buffer";
6
+ import "node:path";
7
+ import "node:crypto";
8
+ import "node:child_process";
9
+ import "node:url";
10
+ import "crypto";
11
+ import "node:util";
4
12
  import "../_libs/modelcontextprotocol__server.mjs";
5
13
  import "../_libs/jszip.mjs";
6
- import { X, ax as Rows3, ay as Columns2, a6 as Minus, e as Plus, a0 as Pencil, j as ChevronRight, az as Equal, b as Check, g as Copy } from "../_libs/lucide-react.mjs";
14
+ import "node:os";
15
+ import { X, az as Rows3, aA as Columns2, a8 as Minus, e as Plus, a2 as Pencil, k as ChevronRight, aB as Equal, b as Check, h as Copy } from "../_libs/lucide-react.mjs";
7
16
  import "../_libs/swr.mjs";
8
17
  import "../_libs/use-sync-external-store.mjs";
9
18
  import "../_libs/dequal.mjs";
@@ -22,7 +31,6 @@ import "../_libs/react-dom.mjs";
22
31
  import "util";
23
32
  import "async_hooks";
24
33
  import "stream";
25
- import "crypto";
26
34
  import "../_libs/radix-ui__react-slot.mjs";
27
35
  import "../_libs/@radix-ui/react-use-callback-ref+[...].mjs";
28
36
  import "../_libs/@radix-ui/react-use-escape-keydown+[...].mjs";
@@ -67,27 +75,20 @@ import "../_libs/tanstack__router-core.mjs";
67
75
  import "../_libs/cookie-es.mjs";
68
76
  import "../_libs/seroval.mjs";
69
77
  import "../_libs/seroval-plugins.mjs";
78
+ import "node:stream";
70
79
  import "../_libs/tanstack__history.mjs";
71
80
  import "../_libs/tiny-invariant.mjs";
72
81
  import "node:stream/web";
73
- import "node:stream";
74
82
  import "../_libs/isbot.mjs";
75
- import "node:fs";
76
83
  import "node:fs/promises";
77
84
  import "node:readline";
78
- import "node:buffer";
79
- import "node:path";
80
- import "node:crypto";
81
- import "node:child_process";
82
- import "node:url";
83
85
  import "../_libs/conf.mjs";
84
- import "node:util";
85
86
  import "node:process";
86
87
  import "node:assert";
87
88
  import "../_libs/dot-prop.mjs";
88
89
  import "../_libs/env-paths.mjs";
89
- import "node:os";
90
90
  import "../_libs/atomically.mjs";
91
+ import "node:events";
91
92
  import "../_libs/stubborn-fs.mjs";
92
93
  import "../_libs/stubborn-utils.mjs";
93
94
  import "../_libs/when-exit.mjs";
@@ -1,5 +1,5 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports, a as React } from "../_libs/react.mjs";
2
- import { C as CapturedLogSchema, n as DeleteInspectorGroupsResponseSchema, D as DEFAULT_CAPTURE_MODE, a as DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS, b as DEFAULT_PROVIDER_TEST_TIMEOUT_SECONDS, c as DEFAULT_TIME_DISPLAY_FORMAT, d as RuntimeConfigSchema, p as packageJson, P as ProviderConfigSchema, i as apiFormatForPath, o as GroupEvidenceExportResultSchema, q as DeleteInspectorGroupResponseSchema, l as AlertSummarySchema, m as AlertListResponseSchema, I as InspectorGroupsListResponseSchema, G as GroupEvidenceReadResponseSchema, z as createPendingProviderTestResults, B as ProviderTestResultsSchema, E as createFailedProviderTestResults, M as MAX_SLOW_RESPONSE_THRESHOLD_SECONDS, F as MAX_PROVIDER_TEST_TIMEOUT_SECONDS, T as TimeDisplayFormatSchema, t as maskApiKey, v as PATH_V1_MESSAGES, w as PATH_V1_CHAT_COMPLETIONS, x as PATH_V1_RESPONSES, r as providerHasContextMetadata, f as parseOpenAIResponse, g as parseOpenAIResponsesResponse, O as OpenAIRequestSchema, h as OpenAIResponsesRequestSchema, A as AnthropicResponseSchema$1, e as AnthropicRequestSchema, s as safeGetOwnProperty, H as resolveProviderContextWindow, j as getSessionPath, u as findProviderModelMetadata, y as previewUpstreamUrl, K as KnowledgeCandidateSchema, J as isPlainRecord, k as stripClaudeCodeBillingHeader, L as LogBodyChunkSchema } from "./router-BfQ0QsD5.mjs";
2
+ import { C as CapturedLogSchema, q as DeleteInspectorGroupsResponseSchema, D as DEFAULT_CAPTURE_MODE, a as DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS, b as DEFAULT_PROVIDER_TEST_TIMEOUT_SECONDS, c as DEFAULT_TIME_DISPLAY_FORMAT, d as RuntimeConfigSchema, m as extractStopReason, p as packageJson, P as ProviderConfigSchema, i as apiFormatForPath, r as GroupEvidenceExportResultSchema, t as DeleteInspectorGroupResponseSchema, N as PiAgentResponseSchema, l as isTurnBoundary, n as AlertSummarySchema, o as AlertListResponseSchema, I as InspectorGroupsListResponseSchema, G as GroupEvidenceReadResponseSchema, E as createPendingProviderTestResults, F as ProviderTestResultsSchema, H as createFailedProviderTestResults, M as MAX_SLOW_RESPONSE_THRESHOLD_SECONDS, J as MAX_PROVIDER_TEST_TIMEOUT_SECONDS, T as TimeDisplayFormatSchema, v as maskApiKey, x as PATH_V1_MESSAGES, y as PATH_V1_CHAT_COMPLETIONS, z as PATH_V1_RESPONSES, u as providerHasContextMetadata, f as parseOpenAIResponse, g as parseOpenAIResponsesResponse, O as OpenAIRequestSchema, h as OpenAIResponsesRequestSchema, A as AnthropicResponseSchema$1, e as AnthropicRequestSchema, s as safeGetOwnProperty, Q as resolveProviderContextWindow, j as getSessionPath, w as findProviderModelMetadata, B as previewUpstreamUrl, K as KnowledgeCandidateSchema, S as isPlainRecord, k as stripClaudeCodeBillingHeader, L as LogBodyChunkSchema } from "./router-Cq8LEvhE.mjs";
3
3
  import { u as useSWR, a as useSWRConfig } from "../_libs/swr.mjs";
4
4
  import { J as JSZip } from "../_libs/jszip.mjs";
5
5
  import { c as clsx } from "../_libs/clsx.mjs";
@@ -9,7 +9,7 @@ import { c as cva } from "../_libs/class-variance-authority.mjs";
9
9
  import { u as useWindowVirtualizer, a as useVirtualizer } from "../_libs/tanstack__react-virtual.mjs";
10
10
  import { d as diffJson, a as diffLines } from "../_libs/diff.mjs";
11
11
  import { R as Root2, T as Trigger, I as Icon, V as Value, P as Portal, C as Content2, a as Viewport, b as Item, c as ItemIndicator, d as ItemText, S as ScrollUpButton, e as ScrollDownButton } from "../_libs/radix-ui__react-select.mjs";
12
- import { T as TriangleAlert, C as CircleCheck, X, I as Info, a as ChevronDown, b as Check, P as PanelRightOpen, c as PanelRightClose, S as Search, U as Upload, D as Download, F as FileBraces, R as RefreshCw, d as Trash2, e as Plus, A as ArrowLeft, f as ChevronUp, g as Copy, h as ChevronsLeft, i as ChevronLeft, j as ChevronRight, k as ChevronsRight, l as Clapperboard, m as Flag, n as Siren, o as Timer, G as Gauge, L as LoaderCircle, p as Layers, q as FlaskConical, r as Sparkles, s as Activity, B as Beaker, N as Network, t as Terminal, u as Settings, M as Monitor, v as Rocket, w as PackageCheck, H as History, x as Scan, y as CircleAlert, z as ArrowUpRight, E as ArrowDownRight, J as Cpu, K as FolderOpen, O as Bell, Q as Clock3, V as ShieldAlert, W as EyeOff, Y as Eye, Z as ExternalLink, _ as Clock, $ as RotateCw, a0 as Pencil, a1 as MessageSquare, a2 as Zap, a3 as Wrench, a4 as Brain, a5 as CircleCheckBig, a6 as Minus, a7 as CircleQuestionMark, a8 as Server, a9 as Lock, aa as Wifi, ab as WifiOff, ac as CircleX, ad as ShieldCheck, ae as Save, af as FileSearch, ag as CloudUpload, ah as OctagonAlert, ai as Radio, aj as Globe, ak as FileTerminal, al as ChevronsUp, am as ChevronsDown, an as FileDiff, ao as RotateCcw, ap as GitCompareArrows, aq as ArrowUp, ar as ArrowDown, as as Ellipsis, at as CodeXml, au as Blocks, av as MousePointerClick, aw as FileText, ax as Rows3, ay as Columns2 } from "../_libs/lucide-react.mjs";
12
+ import { T as TriangleAlert, C as CircleCheck, X, I as Info, a as ChevronDown, b as Check, P as PanelRightOpen, c as PanelRightClose, S as Search, U as Upload, D as Download, F as FileBraces, R as RefreshCw, d as Trash2, e as Plus, B as BrainCircuit, L as LoaderCircle, f as Send, A as ArrowLeft, g as ChevronUp, h as Copy, i as ChevronsLeft, j as ChevronLeft, k as ChevronRight, l as ChevronsRight, m as Clapperboard, n as Flag, o as Siren, p as Timer, G as Gauge, q as Layers, r as FlaskConical, s as Sparkles, t as Activity, u as Beaker, N as Network, v as Terminal, w as Settings, M as Monitor, x as Rocket, y as PackageCheck, H as History, z as Scan, E as CircleAlert, J as ArrowUpRight, K as ArrowDownRight, O as Cpu, Q as FolderOpen, V as Bell, W as Clock3, Y as ShieldAlert, Z as EyeOff, _ as Eye, $ as ExternalLink, a0 as Clock, a1 as RotateCw, a2 as Pencil, a3 as MessageSquare, a4 as Zap, a5 as Wrench, a6 as Brain, a7 as CircleCheckBig, a8 as Minus, a9 as CircleQuestionMark, aa as Server, ab as Lock, ac as Wifi, ad as WifiOff, ae as CircleX, af as ShieldCheck, ag as Save, ah as FileSearch, ai as CloudUpload, aj as OctagonAlert, ak as Radio, al as Globe, am as FileTerminal, an as ChevronsUp, ao as ChevronsDown, ap as FileDiff, aq as RotateCcw, ar as GitCompareArrows, as as ArrowUp, at as ArrowDown, au as Ellipsis, av as CodeXml, aw as Blocks, ax as MousePointerClick, ay as FileText, az as Rows3, aA as Columns2 } from "../_libs/lucide-react.mjs";
13
13
  import { u as union, d as object, a as array, l as literal, n as number, c as boolean, b as string, _ as _enum } from "../_libs/zod.mjs";
14
14
  import { S as Slot } from "../_libs/radix-ui__react-slot.mjs";
15
15
  import { R as Root2$1, L as List, T as Trigger$2, C as Content$1 } from "../_libs/radix-ui__react-tabs.mjs";
@@ -389,12 +389,12 @@ async function fetchStreamingChunks(logId, signal) {
389
389
  return null;
390
390
  }
391
391
  }
392
- function isRecord$1(value) {
392
+ function isRecord(value) {
393
393
  return typeof value === "object" && value !== null && !Array.isArray(value);
394
394
  }
395
395
  function redactValue(value) {
396
396
  if (Array.isArray(value)) return value.map((item) => redactValue(item));
397
- if (!isRecord$1(value)) return value;
397
+ if (!isRecord(value)) return value;
398
398
  const result = {};
399
399
  for (const [key, item] of Object.entries(value)) {
400
400
  result[key] = SECRET_KEY_PATTERN.test(key) ? REDACTED : redactValue(item);
@@ -563,82 +563,6 @@ function formatTimestamp$2(iso, format) {
563
563
  function formatTimestampRange(startedAt, endedAt, format) {
564
564
  return `${formatTimestamp$2(startedAt, format)} - ${formatTimestamp$2(endedAt, format)}`;
565
565
  }
566
- function isRecord(value) {
567
- return typeof value === "object" && value !== null && !Array.isArray(value);
568
- }
569
- function normalizeAnthropicStopReason(value) {
570
- switch (value) {
571
- case "end_turn":
572
- case "tool_use":
573
- return value;
574
- case "max_tokens":
575
- return "length";
576
- default:
577
- return null;
578
- }
579
- }
580
- function normalizeOpenAIFinishReason(value) {
581
- switch (value) {
582
- case "stop":
583
- case "length":
584
- return value;
585
- case "max_tokens":
586
- return "length";
587
- default:
588
- return null;
589
- }
590
- }
591
- function isResponsesLengthLimitReason(value) {
592
- switch (value) {
593
- case "max_output_tokens":
594
- case "max_tokens":
595
- return true;
596
- default:
597
- return false;
598
- }
599
- }
600
- function extractStopReason(log) {
601
- if (log.responseText === null) return null;
602
- try {
603
- let json = JSON.parse(log.responseText);
604
- if (typeof json === "string") {
605
- json = JSON.parse(json);
606
- }
607
- if (!isRecord(json)) return null;
608
- if (typeof json.stop_reason === "string") {
609
- return normalizeAnthropicStopReason(json.stop_reason);
610
- }
611
- if (Array.isArray(json.choices)) {
612
- for (const choice of json.choices) {
613
- if (!isRecord(choice) || typeof choice.finish_reason !== "string") continue;
614
- const reason = normalizeOpenAIFinishReason(choice.finish_reason);
615
- if (reason !== null) return reason;
616
- }
617
- }
618
- if (Array.isArray(json.output)) {
619
- for (const item of json.output) {
620
- if (isRecord(item) && item.type === "function_call") {
621
- return "tool_use";
622
- }
623
- }
624
- if (json.status === "completed") {
625
- return "stop";
626
- }
627
- }
628
- if (json.status === "incomplete" && isRecord(json.incomplete_details)) {
629
- const reason = json.incomplete_details.reason;
630
- if (typeof reason === "string" && isResponsesLengthLimitReason(reason)) {
631
- return "length";
632
- }
633
- }
634
- return null;
635
- } catch {
636
- return null;
637
- }
638
- }
639
- function isTurnBoundary(stopReason) {
640
- return stopReason === "end_turn" || stopReason === "stop" || stopReason === "length";
641
- }
642
566
  function cn(...inputs) {
643
567
  return twMerge(clsx(inputs));
644
568
  }
@@ -2546,27 +2470,27 @@ function useCopyFeedback(text) {
2546
2470
  return { copied, copy };
2547
2471
  }
2548
2472
  const LazyCompareDrawer = reactExports.lazy(
2549
- () => import("./CompareDrawer-Ckcx1RVu.mjs").then((m) => ({ default: m.CompareDrawer }))
2473
+ () => import("./CompareDrawer-BYZS_hCR.mjs").then((m) => ({ default: m.CompareDrawer }))
2550
2474
  );
2551
2475
  const LazyReplayDialog = reactExports.lazy(
2552
- () => import("./ReplayDialog-wx3nDtZn.mjs").then((m) => ({ default: m.ReplayDialog }))
2476
+ () => import("./ReplayDialog-BlID2ZH4.mjs").then((m) => ({ default: m.ReplayDialog }))
2553
2477
  );
2554
2478
  const LazyRequestAnatomy = reactExports.lazy(
2555
- () => import("./RequestAnatomy-DN80zt0G.mjs").then((m) => ({ default: m.RequestAnatomy }))
2479
+ () => import("./RequestAnatomy-CGJ2lkzT.mjs").then((m) => ({ default: m.RequestAnatomy }))
2556
2480
  );
2557
2481
  const LazyResponseView = reactExports.lazy(
2558
- () => import("./ResponseView-DD7rTu_l.mjs").then((m) => ({ default: m.ResponseView }))
2482
+ () => import("./ResponseView-DDjcGf7M.mjs").then((m) => ({ default: m.ResponseView }))
2559
2483
  );
2560
2484
  const LazyStreamingChunkSequence = reactExports.lazy(
2561
- () => import("./StreamingChunkSequence-DAgz6Vvw.mjs").then((m) => ({
2485
+ () => import("./StreamingChunkSequence-G7B8M5G2.mjs").then((m) => ({
2562
2486
  default: m.StreamingChunkSequence
2563
2487
  }))
2564
2488
  );
2565
2489
  const LazyJsonViewer = reactExports.lazy(
2566
- () => import("./json-viewer-N2cuzGWR.mjs").then((m) => ({ default: m.JsonViewer }))
2490
+ () => import("./json-viewer-CFbpkiBJ.mjs").then((m) => ({ default: m.JsonViewer }))
2567
2491
  );
2568
2492
  const LazyJsonViewerFromString = reactExports.lazy(
2569
- () => import("./json-viewer-N2cuzGWR.mjs").then((m) => ({ default: m.JsonViewerFromString }))
2493
+ () => import("./json-viewer-CFbpkiBJ.mjs").then((m) => ({ default: m.JsonViewerFromString }))
2570
2494
  );
2571
2495
  const HIGHLIGHT_DURATION_MS = 1200;
2572
2496
  const MAX_HIGHLIGHT_ATTEMPTS = 12;
@@ -3692,6 +3616,12 @@ function shouldShowRawRequestTab(apiFormat, viewMode, strip) {
3692
3616
  function shouldShowHeadersDiffButton(viewMode, hasRawHeaders) {
3693
3617
  return viewMode === "full" && hasRawHeaders;
3694
3618
  }
3619
+ function shouldShowRawHeadersTab(viewMode, hasRawHeaders) {
3620
+ return viewMode === "full" && hasRawHeaders;
3621
+ }
3622
+ function shouldShowHeadersTab(viewMode, hasHeaders) {
3623
+ return viewMode === "full" && hasHeaders;
3624
+ }
3695
3625
  function shouldShowRequestDiffButton(apiFormat, viewMode, strip, hasRawRequest) {
3696
3626
  return apiFormat === "anthropic" && viewMode === "full" && strip && hasRawRequest;
3697
3627
  }
@@ -4049,21 +3979,36 @@ const LogEntry = reactExports.memo(function({
4049
3979
  onToggle: rawRequestExpansion.toggle
4050
3980
  } : null
4051
3981
  },
4052
- headers: {
4053
- copyLabel: "Copy headers",
4054
- copyText: headersText,
4055
- copyCopied: headersCopy.copied,
4056
- onCopy: headersCopy.copy,
4057
- // Headers are a flat dict, no JSON tree to expand.
4058
- expansion: null
4059
- },
4060
- "raw-headers": {
4061
- copyLabel: "Copy raw headers",
4062
- copyText: rawHeadersText,
4063
- copyCopied: rawHeadersCopy.copied,
4064
- onCopy: rawHeadersCopy.copy,
4065
- expansion: null
4066
- },
3982
+ // Tab-level actions mirror the visibility rules in logEntryVisibility:
3983
+ // when the corresponding tab is hidden because the log has no captured
3984
+ // headers, the header bar must not surface a Copy button either. We
3985
+ // therefore omit the key entirely (header renders no actions) instead
3986
+ // of returning a bundle with `copyText: null`.
3987
+ ...shouldShowHeadersTab(
3988
+ viewMode,
3989
+ displayLog.headers !== void 0 && Object.keys(displayLog.headers).length > 0
3990
+ ) ? {
3991
+ headers: {
3992
+ copyLabel: "Copy headers",
3993
+ copyText: headersText,
3994
+ copyCopied: headersCopy.copied,
3995
+ onCopy: headersCopy.copy,
3996
+ // Headers are a flat dict, no JSON tree to expand.
3997
+ expansion: null
3998
+ }
3999
+ } : {},
4000
+ ...shouldShowRawHeadersTab(
4001
+ viewMode,
4002
+ displayLog.rawHeaders !== void 0 && Object.keys(displayLog.rawHeaders).length > 0
4003
+ ) ? {
4004
+ "raw-headers": {
4005
+ copyLabel: "Copy raw headers",
4006
+ copyText: rawHeadersText,
4007
+ copyCopied: rawHeadersCopy.copied,
4008
+ onCopy: rawHeadersCopy.copy,
4009
+ expansion: null
4010
+ }
4011
+ } : {},
4067
4012
  raw: {
4068
4013
  copyLabel: responsePreviewIsActive ? "Copy loaded response preview" : "Copy response",
4069
4014
  copyText: responseTextForView,
@@ -4304,8 +4249,14 @@ const LogEntry = reactExports.memo(function({
4304
4249
  variant: "line",
4305
4250
  className: "bg-white/[0.04] inspector-scrollbar relative mx-3 h-auto w-[calc(100%-1.5rem)] justify-start overflow-x-auto rounded-[8px] p-1",
4306
4251
  children: [
4307
- viewMode === "full" && /* @__PURE__ */ jsxRuntimeExports.jsx(TabsTrigger, { className: TAB_TRIGGER_CLASS, value: "raw-headers", children: "Raw Headers" }),
4308
- viewMode === "full" && /* @__PURE__ */ jsxRuntimeExports.jsx(TabsTrigger, { className: TAB_TRIGGER_CLASS, value: "headers", children: "Headers" }),
4252
+ shouldShowRawHeadersTab(
4253
+ viewMode,
4254
+ displayLog.rawHeaders !== void 0 && Object.keys(displayLog.rawHeaders).length > 0
4255
+ ) && /* @__PURE__ */ jsxRuntimeExports.jsx(TabsTrigger, { className: TAB_TRIGGER_CLASS, value: "raw-headers", children: "Raw Headers" }),
4256
+ shouldShowHeadersTab(
4257
+ viewMode,
4258
+ displayLog.headers !== void 0 && Object.keys(displayLog.headers).length > 0
4259
+ ) && /* @__PURE__ */ jsxRuntimeExports.jsx(TabsTrigger, { className: TAB_TRIGGER_CLASS, value: "headers", children: "Headers" }),
4309
4260
  anatomySegments !== null && /* @__PURE__ */ jsxRuntimeExports.jsx(TabsTrigger, { className: TAB_TRIGGER_CLASS, value: "anatomy", children: "Context" }),
4310
4261
  shouldShowRawRequestTab(resolvedFormat, viewMode, strip) && /* @__PURE__ */ jsxRuntimeExports.jsx(TabsTrigger, { className: TAB_TRIGGER_CLASS, value: "raw-request", children: "Raw Request" }),
4311
4262
  /* @__PURE__ */ jsxRuntimeExports.jsx(TabsTrigger, { className: TAB_TRIGGER_CLASS, value: "request", children: "Request" }),
@@ -4403,7 +4354,10 @@ const LogEntry = reactExports.memo(function({
4403
4354
  onSegmentActivate: jumpToAnatomySegment
4404
4355
  }
4405
4356
  ) }) }) }),
4406
- viewMode === "full" && /* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: "headers", children: activeTab === "headers" && /* @__PURE__ */ jsxRuntimeExports.jsxs(ExpandedPanel, { children: [
4357
+ shouldShowHeadersTab(
4358
+ viewMode,
4359
+ displayLog.headers !== void 0 && Object.keys(displayLog.headers).length > 0
4360
+ ) && /* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: "headers", children: activeTab === "headers" && /* @__PURE__ */ jsxRuntimeExports.jsxs(ExpandedPanel, { children: [
4407
4361
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex justify-end gap-2 mb-2", children: shouldShowHeadersDiffButton(
4408
4362
  viewMode,
4409
4363
  displayLog.rawHeaders !== void 0 && Object.keys(displayLog.rawHeaders).length > 0
@@ -4426,7 +4380,10 @@ const LogEntry = reactExports.memo(function({
4426
4380
  }
4427
4381
  ) : /* @__PURE__ */ jsxRuntimeExports.jsx(HeaderRows, { headers: displayLog.headers, emptyLabel: "No headers captured" })
4428
4382
  ] }) }),
4429
- viewMode === "full" && /* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: "raw-headers", children: activeTab === "raw-headers" && /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandedPanel, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
4383
+ shouldShowRawHeadersTab(
4384
+ viewMode,
4385
+ displayLog.rawHeaders !== void 0 && Object.keys(displayLog.rawHeaders).length > 0
4386
+ ) && /* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: "raw-headers", children: activeTab === "raw-headers" && /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandedPanel, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
4430
4387
  HeaderRows,
4431
4388
  {
4432
4389
  headers: displayLog.rawHeaders,
@@ -11777,6 +11734,147 @@ function AgentLabDialog({ currentSessionId, logCount }) {
11777
11734
  ] })
11778
11735
  ] });
11779
11736
  }
11737
+ const DEFAULT_QUESTION = "Analyze the current Inspector session. What looks abnormal, slow, or likely to hang?";
11738
+ function providerSupportsPiAgent(provider) {
11739
+ return provider.openaiResponsesBaseUrl !== void 0 || provider.openaiBaseUrl !== void 0 || provider.anthropicBaseUrl !== void 0;
11740
+ }
11741
+ function providerProtocolLabel(provider) {
11742
+ if (provider.openaiResponsesBaseUrl !== void 0 && provider.openaiResponsesBaseUrl !== "") {
11743
+ return "Responses";
11744
+ }
11745
+ if (provider.openaiBaseUrl !== void 0 && provider.openaiBaseUrl !== "") {
11746
+ return "Chat";
11747
+ }
11748
+ return "Anthropic";
11749
+ }
11750
+ function sortProviderBySource(providers) {
11751
+ return providers.toSorted((left, right) => {
11752
+ const leftCompanyRank = left.source === "company" ? 0 : 1;
11753
+ const rightCompanyRank = right.source === "company" ? 0 : 1;
11754
+ if (leftCompanyRank !== rightCompanyRank) return leftCompanyRank - rightCompanyRank;
11755
+ return left.name.localeCompare(right.name);
11756
+ });
11757
+ }
11758
+ function PiAgentPanel({ currentSessionId, logCount }) {
11759
+ const { providers } = useProviders();
11760
+ const piProviders = reactExports.useMemo(
11761
+ () => sortProviderBySource(providers.filter(providerSupportsPiAgent)),
11762
+ [providers]
11763
+ );
11764
+ const [question, setQuestion] = reactExports.useState(DEFAULT_QUESTION);
11765
+ const [providerId, setProviderId] = reactExports.useState("__auto__");
11766
+ const [model, setModel] = reactExports.useState("__auto__");
11767
+ const [answer, setAnswer] = reactExports.useState("");
11768
+ const [status, setStatus] = reactExports.useState("");
11769
+ const [loading, setLoading] = reactExports.useState(false);
11770
+ const selectedProvider = piProviders.find((provider) => provider.id === providerId);
11771
+ const modelOptions = selectedProvider?.models ?? [];
11772
+ const canAsk = question.trim() !== "" && piProviders.length > 0 && !loading;
11773
+ const handleQuestionChange = (event) => {
11774
+ setQuestion(event.currentTarget.value);
11775
+ };
11776
+ const handleProviderChange = (value) => {
11777
+ setProviderId(value);
11778
+ setModel("__auto__");
11779
+ };
11780
+ const askPiAgent = () => {
11781
+ if (!canAsk) return;
11782
+ setLoading(true);
11783
+ setStatus("");
11784
+ setAnswer("");
11785
+ const body = {
11786
+ question: question.trim(),
11787
+ ...currentSessionId !== null ? { sessionId: currentSessionId } : {},
11788
+ ...providerId !== "__auto__" ? { providerId } : {},
11789
+ ...model !== "__auto__" ? { model } : {},
11790
+ logLimit: 24
11791
+ };
11792
+ void fetch("/api/pi-agent", {
11793
+ method: "POST",
11794
+ headers: { "content-type": "application/json" },
11795
+ body: JSON.stringify(body)
11796
+ }).then(async (response) => {
11797
+ const raw = await response.text();
11798
+ if (!response.ok) {
11799
+ setStatus(`Pi Agent failed: HTTP ${String(response.status)}`);
11800
+ setAnswer(raw);
11801
+ return;
11802
+ }
11803
+ const parsedJson = JSON.parse(raw);
11804
+ const parsed = PiAgentResponseSchema.safeParse(parsedJson);
11805
+ if (!parsed.success) {
11806
+ setStatus("Pi Agent returned an unexpected response.");
11807
+ setAnswer(raw);
11808
+ return;
11809
+ }
11810
+ setStatus(
11811
+ `${parsed.data.providerName} / ${parsed.data.model} / ${parsed.data.protocol} / ${String(
11812
+ parsed.data.logCount
11813
+ )} logs`
11814
+ );
11815
+ setAnswer(parsed.data.answer);
11816
+ }).catch((err) => {
11817
+ setStatus(err instanceof Error ? err.message : "Pi Agent request failed.");
11818
+ }).finally(() => {
11819
+ setLoading(false);
11820
+ });
11821
+ };
11822
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("section", { className: "rounded-md bg-black/20 px-3 py-3 shadow-[inset_0_0_0_1px_rgba(255,255,255,0.045)]", children: [
11823
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
11824
+ /* @__PURE__ */ jsxRuntimeExports.jsx(BrainCircuit, { className: "size-4 text-cyan-200" }),
11825
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-w-0 flex-1", children: [
11826
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-xs font-semibold text-foreground", children: "Pi Agent" }),
11827
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-[11px] text-muted-foreground", children: currentSessionId === null ? "Inspector-wide analysis" : "Session analysis" })
11828
+ ] })
11829
+ ] }),
11830
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-3 grid grid-cols-2 gap-2", children: [
11831
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Select, { value: providerId, onValueChange: handleProviderChange, children: [
11832
+ /* @__PURE__ */ jsxRuntimeExports.jsx(SelectTrigger, { className: "h-8 border-0 bg-black/25 text-xs shadow-[inset_0_0_0_1px_rgba(255,255,255,0.06)]", children: /* @__PURE__ */ jsxRuntimeExports.jsx(SelectValue, { placeholder: "Provider" }) }),
11833
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(SelectContent, { children: [
11834
+ /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: "__auto__", children: "Auto provider" }),
11835
+ piProviders.map((provider) => /* @__PURE__ */ jsxRuntimeExports.jsxs(SelectItem, { value: provider.id, children: [
11836
+ provider.name,
11837
+ " / ",
11838
+ providerProtocolLabel(provider)
11839
+ ] }, provider.id))
11840
+ ] })
11841
+ ] }),
11842
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Select, { value: model, onValueChange: setModel, children: [
11843
+ /* @__PURE__ */ jsxRuntimeExports.jsx(SelectTrigger, { className: "h-8 border-0 bg-black/25 text-xs shadow-[inset_0_0_0_1px_rgba(255,255,255,0.06)]", children: /* @__PURE__ */ jsxRuntimeExports.jsx(SelectValue, { placeholder: "Model" }) }),
11844
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(SelectContent, { children: [
11845
+ /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: "__auto__", children: "Auto model" }),
11846
+ modelOptions.map((modelName) => /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: modelName, children: modelName }, modelName))
11847
+ ] })
11848
+ ] })
11849
+ ] }),
11850
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
11851
+ "textarea",
11852
+ {
11853
+ value: question,
11854
+ onChange: handleQuestionChange,
11855
+ className: "mt-2 min-h-24 w-full resize-y rounded-md bg-black/25 px-3 py-2 text-xs leading-5 text-foreground outline-none shadow-[inset_0_0_0_1px_rgba(255,255,255,0.06)] transition-colors placeholder:text-muted-foreground focus-visible:ring-1 focus-visible:ring-ring",
11856
+ placeholder: "Ask Pi Agent about this session..."
11857
+ }
11858
+ ),
11859
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
11860
+ "button",
11861
+ {
11862
+ type: "button",
11863
+ onClick: askPiAgent,
11864
+ disabled: !canAsk,
11865
+ className: "mt-2 inline-flex h-8 w-full items-center justify-center gap-2 rounded-md bg-cyan-400/12 px-3 text-xs font-medium text-cyan-100 shadow-[inset_0_0_0_1px_rgba(103,232,249,0.18)] transition-colors hover:bg-cyan-400/18 disabled:cursor-not-allowed disabled:opacity-50",
11866
+ children: [
11867
+ loading ? /* @__PURE__ */ jsxRuntimeExports.jsx(LoaderCircle, { className: "size-3.5 animate-spin" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Send, { className: "size-3.5" }),
11868
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: loading ? "Thinking..." : "Ask Pi" })
11869
+ ]
11870
+ }
11871
+ ),
11872
+ piProviders.length === 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "mt-2 text-[11px] leading-5 text-muted-foreground", children: "Configure a Provider with Responses, Chat, or Anthropic URL to enable Pi Agent." }),
11873
+ status !== "" && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "mt-2 break-words font-mono text-[10px] text-cyan-100/70", children: status }),
11874
+ answer !== "" && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-3 max-h-64 overflow-y-auto whitespace-pre-wrap rounded-md bg-black/25 p-3 text-xs leading-5 text-foreground shadow-[inset_0_0_0_1px_rgba(255,255,255,0.05)]", children: answer }),
11875
+ logCount === 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "mt-2 text-[11px] leading-5 text-muted-foreground", children: "No logs are visible in this scope yet; Pi Agent can still answer Provider setup questions." })
11876
+ ] });
11877
+ }
11780
11878
  function computeCacheTrends(groups) {
11781
11879
  const result = /* @__PURE__ */ new Map();
11782
11880
  for (const group of groups) {
@@ -15110,6 +15208,7 @@ function ProxyViewer({
15110
15208
  ),
15111
15209
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-1 text-[11px] text-muted-foreground", children: isPinnedSessionPage ? "Session workspace" : "Live workspace" })
15112
15210
  ] }) }),
15211
+ /* @__PURE__ */ jsxRuntimeExports.jsx(PiAgentPanel, { currentSessionId: labSessionId, logCount: logs.length }),
15113
15212
  hasSessionContext && sessionContextScope !== null && /* @__PURE__ */ jsxRuntimeExports.jsx(
15114
15213
  SessionContextBar,
15115
15214
  {
@@ -1,10 +1,19 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
2
- import { u as useProviders, d as fetchJsonWithTimeout, D as Dialog, e as DialogContent, h as DialogHeader, i as DialogTitle, T as Tabs, j as TabsList, k as TabsTrigger, l as TabsContent, m as Button, n as TooltipProvider, o as Tooltip, p as TooltipTrigger, q as TooltipContent, s as dispatchLogFocusRequest, A as ApiTimeoutError } from "./ProxyViewerContainer-BgXewlIr.mjs";
3
- import { ResponseView } from "./ResponseView-DD7rTu_l.mjs";
4
- import { C as CapturedLogSchema } from "./router-BfQ0QsD5.mjs";
2
+ import { u as useProviders, d as fetchJsonWithTimeout, D as Dialog, e as DialogContent, h as DialogHeader, i as DialogTitle, T as Tabs, j as TabsList, k as TabsTrigger, l as TabsContent, m as Button, n as TooltipProvider, o as Tooltip, p as TooltipTrigger, q as TooltipContent, s as dispatchLogFocusRequest, A as ApiTimeoutError } from "./ProxyViewerContainer-BE4umfVs.mjs";
3
+ import { ResponseView } from "./ResponseView-DDjcGf7M.mjs";
4
+ import { C as CapturedLogSchema } from "./router-Cq8LEvhE.mjs";
5
5
  import "../_libs/jszip.mjs";
6
+ import "node:fs";
7
+ import "node:buffer";
8
+ import "node:path";
9
+ import "node:crypto";
10
+ import "node:child_process";
11
+ import "node:url";
12
+ import "crypto";
13
+ import "node:util";
6
14
  import "../_libs/modelcontextprotocol__server.mjs";
7
- import { ao as RotateCcw, aA as Braces, aB as Minimize2 } from "../_libs/lucide-react.mjs";
15
+ import "node:os";
16
+ import { aq as RotateCcw, aC as Braces, aD as Minimize2 } from "../_libs/lucide-react.mjs";
8
17
  import { d as object, n as number, a as array, c as boolean, b as string } from "../_libs/zod.mjs";
9
18
  import "../_libs/swr.mjs";
10
19
  import "../_libs/use-sync-external-store.mjs";
@@ -24,7 +33,6 @@ import "../_libs/react-dom.mjs";
24
33
  import "util";
25
34
  import "async_hooks";
26
35
  import "stream";
27
- import "crypto";
28
36
  import "../_libs/radix-ui__react-slot.mjs";
29
37
  import "../_libs/@radix-ui/react-use-callback-ref+[...].mjs";
30
38
  import "../_libs/@radix-ui/react-use-escape-keydown+[...].mjs";
@@ -69,27 +77,20 @@ import "../_libs/tanstack__router-core.mjs";
69
77
  import "../_libs/cookie-es.mjs";
70
78
  import "../_libs/seroval.mjs";
71
79
  import "../_libs/seroval-plugins.mjs";
80
+ import "node:stream";
72
81
  import "../_libs/tanstack__history.mjs";
73
82
  import "../_libs/tiny-invariant.mjs";
74
83
  import "node:stream/web";
75
- import "node:stream";
76
84
  import "../_libs/isbot.mjs";
77
- import "node:fs";
78
85
  import "node:fs/promises";
79
86
  import "node:readline";
80
- import "node:buffer";
81
- import "node:path";
82
- import "node:crypto";
83
- import "node:child_process";
84
- import "node:url";
85
87
  import "../_libs/conf.mjs";
86
- import "node:util";
87
88
  import "node:process";
88
89
  import "node:assert";
89
90
  import "../_libs/dot-prop.mjs";
90
91
  import "../_libs/env-paths.mjs";
91
- import "node:os";
92
92
  import "../_libs/atomically.mjs";
93
+ import "node:events";
93
94
  import "../_libs/stubborn-fs.mjs";
94
95
  import "../_libs/stubborn-utils.mjs";
95
96
  import "../_libs/when-exit.mjs";