@tonyclaw/agent-inspector 3.0.5 → 3.0.6

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 (35) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/{CompareDrawer-Co-35_Xw.js → CompareDrawer-DsvO6QyJ.js} +1 -1
  3. package/.output/public/assets/{ProxyViewerContainer-DPv1rBo7.js → ProxyViewerContainer-CfP-komD.js} +26 -26
  4. package/.output/public/assets/{ReplayDialog-DghbvKdy.js → ReplayDialog-CQlLX1Uo.js} +1 -1
  5. package/.output/public/assets/{RequestAnatomy-CRXE5v8X.js → RequestAnatomy-m1q-uVTl.js} +1 -1
  6. package/.output/public/assets/{ResponseView-CzxoQRjp.js → ResponseView-DuLLeYSh.js} +2 -2
  7. package/.output/public/assets/{StreamingChunkSequence-DnFyF_Hr.js → StreamingChunkSequence-CN4aRFBx.js} +1 -1
  8. package/.output/public/assets/{_sessionId-DHRhWzKe.js → _sessionId-CWP4pxOU.js} +1 -1
  9. package/.output/public/assets/index-0pt1umWP.css +1 -0
  10. package/.output/public/assets/index-DSUEOPbC.js +1 -0
  11. package/.output/public/assets/{index-Dl1oki9E.js → index-zfZUz67K.js} +1 -1
  12. package/.output/public/assets/{json-viewer-B84f7oiG.js → json-viewer-_4r1LBBE.js} +1 -1
  13. package/.output/public/assets/{main-DViDnJ9X.js → main-C_nEHNUM.js} +2 -2
  14. package/.output/server/_libs/lucide-react.mjs +292 -203
  15. package/.output/server/{_sessionId-C43vEAWe.mjs → _sessionId-CTqCAmUF.mjs} +3 -3
  16. package/.output/server/_ssr/{CompareDrawer-DOL6q0jD.mjs → CompareDrawer-D6b6TZ-O.mjs} +3 -3
  17. package/.output/server/_ssr/{ProxyViewerContainer-S9izw3ND.mjs → ProxyViewerContainer-Dp7Va9_T.mjs} +340 -11
  18. package/.output/server/_ssr/{ReplayDialog-tqthwJh0.mjs → ReplayDialog-D_KWQ1GY.mjs} +4 -4
  19. package/.output/server/_ssr/{RequestAnatomy-CgWDjFPR.mjs → RequestAnatomy-CPubXjMX.mjs} +2 -2
  20. package/.output/server/_ssr/{ResponseView-Dk8Op622.mjs → ResponseView-CsTiNoOE.mjs} +3 -3
  21. package/.output/server/_ssr/{StreamingChunkSequence-AlS7PK8f.mjs → StreamingChunkSequence-Bgbzt23U.mjs} +2 -2
  22. package/.output/server/_ssr/{index-BGwvMN2M.mjs → index-P1gSpuM5.mjs} +2 -2
  23. package/.output/server/_ssr/index.mjs +2 -2
  24. package/.output/server/_ssr/{json-viewer-CKHkh5U3.mjs → json-viewer-10ciVGnc.mjs} +3 -3
  25. package/.output/server/_ssr/{router-BJMaHkr1.mjs → router-BJJ0VhsB.mjs} +357 -146
  26. package/.output/server/_tanstack-start-manifest_v-CltlYL3I.mjs +4 -0
  27. package/.output/server/index.mjs +71 -71
  28. package/package.json +1 -1
  29. package/src/components/ProxyViewer.tsx +19 -1
  30. package/src/components/ecosystem/AgentLabDialog.tsx +379 -0
  31. package/src/lib/ecosystemContract.ts +47 -0
  32. package/src/routes/api/ecosystem.packages.ts +263 -0
  33. package/.output/public/assets/index-D8cruW0P.css +0 -1
  34. package/.output/public/assets/index-DZyTpd2w.js +0 -1
  35. package/.output/server/_tanstack-start-manifest_v-C_HvRzgP.mjs +0 -4
@@ -1,6 +1,6 @@
1
1
  import { j as jsxRuntimeExports, r as reactExports } from "./_libs/react.mjs";
2
- import { P as ProxyViewerContainer } from "./_ssr/ProxyViewerContainer-S9izw3ND.mjs";
3
- import { R as Route$B } from "./_ssr/router-BJMaHkr1.mjs";
2
+ import { P as ProxyViewerContainer } from "./_ssr/ProxyViewerContainer-Dp7Va9_T.mjs";
3
+ import { R as Route$C } from "./_ssr/router-BJJ0VhsB.mjs";
4
4
  import "./_libs/jszip.mjs";
5
5
  import "./_libs/modelcontextprotocol__server.mjs";
6
6
  import "./_libs/swr.mjs";
@@ -118,7 +118,7 @@ import "./_libs/pako.mjs";
118
118
  function SessionViewerRoute() {
119
119
  const {
120
120
  sessionId
121
- } = Route$B.useParams();
121
+ } = Route$C.useParams();
122
122
  return /* @__PURE__ */ jsxRuntimeExports.jsx(ClientOnlySessionViewer, { sessionId });
123
123
  }
124
124
  function ClientOnlySessionViewer({
@@ -1,9 +1,9 @@
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-S9izw3ND.mjs";
3
- import "./router-BJMaHkr1.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-Dp7Va9_T.mjs";
3
+ import "./router-BJJ0VhsB.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
- import { X, ao as Rows3, ap as Columns2, Q as Minus, P as Plus, K as Pencil, h as ChevronRight, aq as Equal, b as Check, e as Copy } from "../_libs/lucide-react.mjs";
6
+ import { X, av as Rows3, aw as Columns2, a2 as Minus, P as Plus, Z as Pencil, h as ChevronRight, ax as Equal, b as Check, e as Copy } 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";
@@ -1,5 +1,5 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports, a as React } from "../_libs/react.mjs";
2
- import { I as InspectorGroupsListResponseSchema, C as CapturedLogSchema, 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, n as DeleteInspectorGroupsResponseSchema, o as GroupEvidenceExportResultSchema, q as DeleteInspectorGroupResponseSchema, 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, l as AlertSummarySchema, m as AlertListResponseSchema, G as GroupEvidenceReadResponseSchema, t as maskApiKey, u as PATH_V1_MESSAGES, v as PATH_V1_CHAT_COMPLETIONS, w 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, x as findProviderModelMetadata, y as previewUpstreamUrl, K as KnowledgeCandidateSchema, J as isPlainRecord, k as stripClaudeCodeBillingHeader, L as LogBodyChunkSchema } from "./router-BJMaHkr1.mjs";
2
+ import { I as InspectorGroupsListResponseSchema, C as CapturedLogSchema, 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, n as DeleteInspectorGroupsResponseSchema, o as GroupEvidenceExportResultSchema, q as DeleteInspectorGroupResponseSchema, 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, l as AlertSummarySchema, m as AlertListResponseSchema, G as GroupEvidenceReadResponseSchema, t as maskApiKey, u as PATH_V1_MESSAGES, v as PATH_V1_CHAT_COMPLETIONS, w 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, x as findProviderModelMetadata, y as previewUpstreamUrl, K as KnowledgeCandidateSchema, J as isPlainRecord, k as stripClaudeCodeBillingHeader, L as LogBodyChunkSchema } from "./router-BJJ0VhsB.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, R as RefreshCw, c as Trash2, S as Search, U as Upload, D as Download, F as FileBraces, P as Plus, A as ArrowLeft, d as ChevronUp, e as Copy, f as ChevronsLeft, g as ChevronLeft, h as ChevronRight, i as ChevronsRight, j as Clapperboard, k as Flag, l as Siren, m as Timer, G as Gauge, L as LoaderCircle, n as Layers, o as Settings, M as Monitor, p as Scan, q as CircleAlert, r as Terminal, s as ArrowUpRight, t as ArrowDownRight, u as Cpu, v as FolderOpen, B as Bell, w as Clock3, x as ShieldAlert, E as EyeOff, y as Eye, z as ExternalLink, H as Clock, J as RotateCw, K as Pencil, N as MessageSquare, Z as Zap, W as Wrench, O as Brain, Q as Minus, V as CircleCheckBig, Y as CircleQuestionMark, _ as Server, $ as Lock, a0 as Wifi, a1 as WifiOff, a2 as CircleX, a3 as ShieldCheck, a4 as Save, a5 as FileSearch, a6 as CloudUpload, a7 as OctagonAlert, a8 as Radio, a9 as Globe, aa as FileTerminal, ab as ChevronsUp, ac as ChevronsDown, ad as FileDiff, ae as History, af as RotateCcw, ag as GitCompareArrows, ah as ArrowUp, ai as ArrowDown, aj as Ellipsis, ak as CodeXml, al as Blocks, am as MousePointerClick, an as FileText, ao as Rows3, ap 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, R as RefreshCw, c as Trash2, S as Search, U as Upload, D as Download, F as FileBraces, P as Plus, A as ArrowLeft, d as ChevronUp, e as Copy, f as ChevronsLeft, g as ChevronLeft, h as ChevronRight, i as ChevronsRight, j as Clapperboard, k as Flag, l as Siren, m as Timer, G as Gauge, L as LoaderCircle, n as Layers, o as FlaskConical, p as Sparkles, q as Activity, B as Beaker, N as Network, r as Terminal, s as Settings, M as Monitor, t as Rocket, u as PackageCheck, v as Scan, w as CircleAlert, x as ArrowUpRight, y as ArrowDownRight, z as Cpu, E as FolderOpen, H as Bell, J as Clock3, K as ShieldAlert, O as EyeOff, Q as Eye, V as ExternalLink, W as Clock, Y as RotateCw, Z as Pencil, _ as MessageSquare, $ as Zap, a0 as Wrench, a1 as Brain, a2 as Minus, a3 as CircleCheckBig, a4 as CircleQuestionMark, a5 as Server, a6 as Lock, a7 as Wifi, a8 as WifiOff, a9 as CircleX, aa as ShieldCheck, ab as Save, ac as FileSearch, ad as CloudUpload, ae as OctagonAlert, af as Radio, ag as Globe, ah as FileTerminal, ai as ChevronsUp, aj as ChevronsDown, ak as FileDiff, al as History, am as RotateCcw, an as GitCompareArrows, ao as ArrowUp, ap as ArrowDown, aq as Ellipsis, ar as CodeXml, as as Blocks, at as MousePointerClick, au as FileText, av as Rows3, aw as Columns2 } from "../_libs/lucide-react.mjs";
13
13
  import { u as union, d as object, a as array, l as literal, b as string, n as number, c as boolean, _ as _enum } from "../_libs/zod.mjs";
14
14
  import { 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";
@@ -2306,27 +2306,27 @@ function useCopyFeedback(text) {
2306
2306
  return { copied, copy };
2307
2307
  }
2308
2308
  const LazyCompareDrawer = reactExports.lazy(
2309
- () => import("./CompareDrawer-DOL6q0jD.mjs").then((m) => ({ default: m.CompareDrawer }))
2309
+ () => import("./CompareDrawer-D6b6TZ-O.mjs").then((m) => ({ default: m.CompareDrawer }))
2310
2310
  );
2311
2311
  const LazyReplayDialog = reactExports.lazy(
2312
- () => import("./ReplayDialog-tqthwJh0.mjs").then((m) => ({ default: m.ReplayDialog }))
2312
+ () => import("./ReplayDialog-D_KWQ1GY.mjs").then((m) => ({ default: m.ReplayDialog }))
2313
2313
  );
2314
2314
  const LazyRequestAnatomy = reactExports.lazy(
2315
- () => import("./RequestAnatomy-CgWDjFPR.mjs").then((m) => ({ default: m.RequestAnatomy }))
2315
+ () => import("./RequestAnatomy-CPubXjMX.mjs").then((m) => ({ default: m.RequestAnatomy }))
2316
2316
  );
2317
2317
  const LazyResponseView = reactExports.lazy(
2318
- () => import("./ResponseView-Dk8Op622.mjs").then((m) => ({ default: m.ResponseView }))
2318
+ () => import("./ResponseView-CsTiNoOE.mjs").then((m) => ({ default: m.ResponseView }))
2319
2319
  );
2320
2320
  const LazyStreamingChunkSequence = reactExports.lazy(
2321
- () => import("./StreamingChunkSequence-AlS7PK8f.mjs").then((m) => ({
2321
+ () => import("./StreamingChunkSequence-Bgbzt23U.mjs").then((m) => ({
2322
2322
  default: m.StreamingChunkSequence
2323
2323
  }))
2324
2324
  );
2325
2325
  const LazyJsonViewer = reactExports.lazy(
2326
- () => import("./json-viewer-CKHkh5U3.mjs").then((m) => ({ default: m.JsonViewer }))
2326
+ () => import("./json-viewer-10ciVGnc.mjs").then((m) => ({ default: m.JsonViewer }))
2327
2327
  );
2328
2328
  const LazyJsonViewerFromString = reactExports.lazy(
2329
- () => import("./json-viewer-CKHkh5U3.mjs").then((m) => ({ default: m.JsonViewerFromString }))
2329
+ () => import("./json-viewer-10ciVGnc.mjs").then((m) => ({ default: m.JsonViewerFromString }))
2330
2330
  );
2331
2331
  const HIGHLIGHT_DURATION_MS = 1200;
2332
2332
  const MAX_HIGHLIGHT_ATTEMPTS = 12;
@@ -11116,6 +11116,322 @@ function ProxySettingsTab() {
11116
11116
  ] })
11117
11117
  ] });
11118
11118
  }
11119
+ const EcosystemPackageStateSchema = _enum([
11120
+ "installed",
11121
+ "update-available",
11122
+ "available",
11123
+ "planned",
11124
+ "unknown"
11125
+ ]);
11126
+ const EcosystemPackageSchema = object({
11127
+ id: string(),
11128
+ name: string(),
11129
+ npmName: string(),
11130
+ capability: string(),
11131
+ description: string(),
11132
+ workflow: string(),
11133
+ installCommand: string(),
11134
+ state: EcosystemPackageStateSchema,
11135
+ installedVersion: string().nullable(),
11136
+ latestVersion: string().nullable(),
11137
+ primary: boolean()
11138
+ });
11139
+ const EcosystemRunnerPresetSchema = object({
11140
+ id: string(),
11141
+ name: string(),
11142
+ validatedVersion: string(),
11143
+ binary: string(),
11144
+ modelFlag: string(),
11145
+ variantFlag: string().nullable(),
11146
+ tools: array(string()),
11147
+ logDir: string(),
11148
+ skillsDir: string(),
11149
+ agentsDir: string()
11150
+ });
11151
+ const EcosystemPackagesResponseSchema = object({
11152
+ checkedAt: string(),
11153
+ packages: array(EcosystemPackageSchema),
11154
+ runnerPresets: array(EcosystemRunnerPresetSchema)
11155
+ });
11156
+ const WORKFLOWS = [
11157
+ {
11158
+ id: "observe",
11159
+ title: "Observe",
11160
+ label: "Live",
11161
+ description: "Capture IDE, process, session, turn, request, response, tools, and providers.",
11162
+ metric: "Inspector core",
11163
+ icon: Activity
11164
+ },
11165
+ {
11166
+ id: "replay",
11167
+ title: "Replay",
11168
+ label: "Ready",
11169
+ description: "Promote real logs into repeatable replay evidence without losing the raw context.",
11170
+ metric: "Session asset",
11171
+ icon: RefreshCw
11172
+ },
11173
+ {
11174
+ id: "evaluate",
11175
+ title: "Evaluate",
11176
+ label: "Next",
11177
+ description: "Use eval-harness to turn sessions into regression cases and provider bakeoffs.",
11178
+ metric: "Eval loop",
11179
+ icon: Beaker
11180
+ },
11181
+ {
11182
+ id: "connect",
11183
+ title: "Connect",
11184
+ label: "MCP",
11185
+ description: "Expose Inspector state to coding agents as queryable context and durable evidence.",
11186
+ metric: "/api/mcp",
11187
+ icon: Network
11188
+ }
11189
+ ];
11190
+ async function fetchEcosystemPackages(url) {
11191
+ return fetchJson(
11192
+ url,
11193
+ EcosystemPackagesResponseSchema,
11194
+ void 0,
11195
+ (response) => `Failed to load ecosystem packages: ${String(response.status)}`
11196
+ );
11197
+ }
11198
+ function stateLabel(state) {
11199
+ switch (state) {
11200
+ case "installed":
11201
+ return "Installed";
11202
+ case "update-available":
11203
+ return "Update";
11204
+ case "available":
11205
+ return "Available";
11206
+ case "planned":
11207
+ return "Planned";
11208
+ case "unknown":
11209
+ return "Unknown";
11210
+ }
11211
+ }
11212
+ function stateClassName(state) {
11213
+ switch (state) {
11214
+ case "installed":
11215
+ return "border-emerald-400/20 bg-emerald-400/8 text-emerald-200";
11216
+ case "update-available":
11217
+ return "border-amber-400/20 bg-amber-400/8 text-amber-200";
11218
+ case "available":
11219
+ return "border-sky-400/20 bg-sky-400/8 text-sky-200";
11220
+ case "planned":
11221
+ return "border-white/10 bg-white/[0.04] text-white/55";
11222
+ case "unknown":
11223
+ return "border-white/10 bg-white/[0.04] text-white/45";
11224
+ }
11225
+ }
11226
+ function versionLabel(pkg) {
11227
+ if (pkg.installedVersion !== null && pkg.latestVersion !== null) {
11228
+ if (pkg.installedVersion === pkg.latestVersion) return `v${pkg.installedVersion}`;
11229
+ return `v${pkg.installedVersion} -> v${pkg.latestVersion}`;
11230
+ }
11231
+ if (pkg.installedVersion !== null) return `v${pkg.installedVersion}`;
11232
+ if (pkg.latestVersion !== null) return `latest v${pkg.latestVersion}`;
11233
+ return "not published";
11234
+ }
11235
+ function PackageStatusCard({ pkg }) {
11236
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "rounded-lg bg-white/[0.025] p-3 shadow-[inset_0_0_0_1px_rgba(255,255,255,0.055)]", children: [
11237
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start justify-between gap-3", children: [
11238
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-w-0", children: [
11239
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [
11240
+ /* @__PURE__ */ jsxRuntimeExports.jsx(PackageCheck, { className: "size-4 shrink-0 text-white/55" }),
11241
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "truncate text-sm font-semibold", children: pkg.name })
11242
+ ] }),
11243
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-1 truncate font-mono text-[11px] text-white/35", children: pkg.npmName })
11244
+ ] }),
11245
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Badge, { className: cn("shrink-0", stateClassName(pkg.state)), variant: "outline", children: stateLabel(pkg.state) })
11246
+ ] }),
11247
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-3 text-xs leading-5 text-muted-foreground", children: pkg.description }),
11248
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-3 flex flex-wrap items-center gap-2 text-[11px]", children: [
11249
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "rounded bg-white/[0.035] px-2 py-1 font-mono text-white/50", children: versionLabel(pkg) }),
11250
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "rounded bg-white/[0.035] px-2 py-1 text-white/45", children: pkg.capability }),
11251
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "rounded bg-white/[0.035] px-2 py-1 font-mono text-white/35", children: pkg.installCommand })
11252
+ ] })
11253
+ ] });
11254
+ }
11255
+ function WorkflowTile({ workflow }) {
11256
+ const Icon2 = workflow.icon;
11257
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "rounded-lg bg-white/[0.025] p-3 shadow-[inset_0_0_0_1px_rgba(255,255,255,0.055)]", children: [
11258
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start justify-between gap-3", children: [
11259
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [
11260
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Icon2, { className: "size-4 shrink-0 text-cyan-200/75" }),
11261
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "truncate text-sm font-semibold", children: workflow.title })
11262
+ ] }),
11263
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "rounded bg-white/[0.04] px-2 py-0.5 font-mono text-[10px] text-white/45", children: workflow.label })
11264
+ ] }),
11265
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-2 min-h-10 text-xs leading-5 text-muted-foreground", children: workflow.description }),
11266
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-3 font-mono text-[11px] text-white/35", children: workflow.metric })
11267
+ ] });
11268
+ }
11269
+ function buildSessionCommand(sessionId) {
11270
+ if (sessionId === null) {
11271
+ return 'npx @tonyclaw/eval-harness inspector-smoke --title "TonyClaw Lab smoke" --latest-log-limit 5';
11272
+ }
11273
+ return `npx @tonyclaw/eval-harness inspector-smoke --title "TonyClaw Lab smoke ${sessionId}" --latest-log-limit 5`;
11274
+ }
11275
+ function RunnerPresetCard({ preset }) {
11276
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "rounded-lg bg-white/[0.025] p-3 shadow-[inset_0_0_0_1px_rgba(255,255,255,0.055)]", children: [
11277
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start justify-between gap-3", children: [
11278
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-w-0", children: [
11279
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [
11280
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Rocket, { className: "size-4 shrink-0 text-cyan-200/75" }),
11281
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "truncate text-sm font-semibold", children: preset.name })
11282
+ ] }),
11283
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-1 font-mono text-[11px] text-white/35", children: [
11284
+ preset.binary,
11285
+ " ",
11286
+ preset.modelFlag,
11287
+ preset.variantFlag !== null ? ` ${preset.variantFlag}` : ""
11288
+ ] })
11289
+ ] }),
11290
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Badge, { variant: "outline", className: "border-white/10 bg-white/[0.04] text-white/55", children: [
11291
+ "v",
11292
+ preset.validatedVersion
11293
+ ] })
11294
+ ] }),
11295
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-3 grid grid-cols-2 gap-2 text-[11px]", children: [
11296
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "rounded bg-black/15 px-2 py-1 text-white/45", children: [
11297
+ "logs/",
11298
+ preset.logDir
11299
+ ] }),
11300
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "rounded bg-black/15 px-2 py-1 text-white/45", children: preset.tools.join(", ") }),
11301
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "rounded bg-black/15 px-2 py-1 font-mono text-white/35", children: preset.skillsDir }),
11302
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "rounded bg-black/15 px-2 py-1 font-mono text-white/35", children: preset.agentsDir })
11303
+ ] })
11304
+ ] });
11305
+ }
11306
+ function AgentLabDialog({ currentSessionId, logCount }) {
11307
+ const [open, setOpen] = reactExports.useState(false);
11308
+ const [copied, setCopied] = reactExports.useState(false);
11309
+ const [copiedPresets, setCopiedPresets] = reactExports.useState(false);
11310
+ const response = useSWR("/api/ecosystem/packages", fetchEcosystemPackages, {
11311
+ revalidateOnFocus: false,
11312
+ revalidateIfStale: false
11313
+ });
11314
+ const packages = response.data?.packages ?? [];
11315
+ const runnerPresets = response.data?.runnerPresets ?? [];
11316
+ const installedCount = reactExports.useMemo(
11317
+ () => packages.filter((pkg) => pkg.state === "installed" || pkg.state === "update-available").length,
11318
+ [packages]
11319
+ );
11320
+ const sessionCommand = buildSessionCommand(currentSessionId);
11321
+ const presetsCommand = "npx @tonyclaw/eval-harness runner-presets";
11322
+ const copySessionCommand = () => {
11323
+ void copyTextToClipboard(sessionCommand).then(() => {
11324
+ setCopied(true);
11325
+ window.setTimeout(() => setCopied(false), 1200);
11326
+ });
11327
+ };
11328
+ const copyPresetsCommand = () => {
11329
+ void copyTextToClipboard(presetsCommand).then(() => {
11330
+ setCopiedPresets(true);
11331
+ window.setTimeout(() => setCopiedPresets(false), 1200);
11332
+ });
11333
+ };
11334
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(Dialog, { open, onOpenChange: setOpen, children: [
11335
+ /* @__PURE__ */ jsxRuntimeExports.jsx(DialogTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
11336
+ Button,
11337
+ {
11338
+ variant: "ghost",
11339
+ size: "icon",
11340
+ className: INSPECTOR_ICON_TRIGGER_CLASS,
11341
+ "aria-label": "TonyClaw Lab",
11342
+ title: "TonyClaw Lab",
11343
+ children: [
11344
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FlaskConical, { className: "size-4" }),
11345
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "sr-only", children: "TonyClaw Lab" })
11346
+ ]
11347
+ }
11348
+ ) }),
11349
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogContent, { className: "flex max-h-[84vh] max-w-5xl flex-col overflow-hidden", children: [
11350
+ /* @__PURE__ */ jsxRuntimeExports.jsx(DialogHeader, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogTitle, { className: "flex items-center gap-2", children: [
11351
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Sparkles, { className: "size-4 text-cyan-200/80" }),
11352
+ "TonyClaw Lab"
11353
+ ] }) }),
11354
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "overflow-y-auto pr-2", children: [
11355
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid gap-3 lg:grid-cols-[1.1fr_0.9fr]", children: [
11356
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("section", { className: "rounded-lg bg-white/[0.025] p-4 shadow-[inset_0_0_0_1px_rgba(255,255,255,0.055)]", children: [
11357
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-wrap items-start justify-between gap-3", children: [
11358
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
11359
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-sm font-semibold", children: "Session asset pipeline" }),
11360
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-1 max-w-2xl text-xs leading-5 text-muted-foreground", children: "Treat captured traffic as durable assets: observe it, replay it, evaluate it, and expose it back to agents through MCP." })
11361
+ ] }),
11362
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Badge, { variant: "outline", className: "border-cyan-300/20 bg-cyan-300/8 text-cyan-100", children: [
11363
+ String(installedCount),
11364
+ "/",
11365
+ String(packages.length),
11366
+ " packages"
11367
+ ] })
11368
+ ] }),
11369
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-4 grid gap-3 sm:grid-cols-2", children: WORKFLOWS.map((workflow) => /* @__PURE__ */ jsxRuntimeExports.jsx(WorkflowTile, { workflow }, workflow.id)) })
11370
+ ] }),
11371
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("section", { className: "rounded-lg bg-white/[0.025] p-4 shadow-[inset_0_0_0_1px_rgba(255,255,255,0.055)]", children: [
11372
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start justify-between gap-3", children: [
11373
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
11374
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-sm font-semibold", children: "Current session" }),
11375
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-1 text-xs text-muted-foreground", children: currentSessionId === null ? "MCP smoke command" : currentSessionId })
11376
+ ] }),
11377
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Badge, { variant: "outline", className: "border-white/10 bg-white/[0.04] text-white/55", children: [
11378
+ String(logCount),
11379
+ " logs"
11380
+ ] })
11381
+ ] }),
11382
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-4 rounded-md bg-black/20 p-3 font-mono text-[11px] leading-5 text-white/55 shadow-[inset_0_0_0_1px_rgba(255,255,255,0.045)]", children: sessionCommand }),
11383
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-3 flex flex-wrap items-center gap-2", children: [
11384
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Button, { size: "sm", variant: "secondary", onClick: copySessionCommand, children: [
11385
+ copied ? /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "size-3.5" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Copy, { className: "size-3.5" }),
11386
+ copied ? "Copied" : "Copy"
11387
+ ] }),
11388
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Button, { size: "sm", variant: "outline", onClick: copyPresetsCommand, children: [
11389
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Beaker, { className: "size-3.5" }),
11390
+ copiedPresets ? "Presets copied" : "Runner Presets"
11391
+ ] })
11392
+ ] })
11393
+ ] })
11394
+ ] }),
11395
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("section", { className: "mt-3", children: [
11396
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mb-2 flex items-center justify-between gap-3", children: [
11397
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-sm font-semibold", children: "Runner presets" }),
11398
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "hidden items-center gap-1 font-mono text-[11px] text-muted-foreground sm:flex", children: [
11399
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Terminal, { className: "size-3.5" }),
11400
+ presetsCommand
11401
+ ] })
11402
+ ] }),
11403
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid gap-3 md:grid-cols-2 xl:grid-cols-4", children: [
11404
+ runnerPresets.map((preset) => /* @__PURE__ */ jsxRuntimeExports.jsx(RunnerPresetCard, { preset }, preset.id)),
11405
+ response.isLoading && runnerPresets.length === 0 && [0, 1, 2, 3].map((index) => /* @__PURE__ */ jsxRuntimeExports.jsx(
11406
+ "div",
11407
+ {
11408
+ className: "h-32 animate-pulse rounded-lg bg-white/[0.025] shadow-[inset_0_0_0_1px_rgba(255,255,255,0.055)]"
11409
+ },
11410
+ index
11411
+ ))
11412
+ ] })
11413
+ ] }),
11414
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("section", { className: "mt-3", children: [
11415
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mb-2 flex items-center justify-between gap-3", children: [
11416
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-sm font-semibold", children: "TonyClaw packages" }),
11417
+ response.isLoading && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "font-mono text-[11px] text-muted-foreground", children: "checking npm..." })
11418
+ ] }),
11419
+ response.error !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "rounded-lg bg-red-500/8 p-3 text-xs text-red-100 shadow-[inset_0_0_0_1px_rgba(248,113,113,0.16)]", children: "Package status is temporarily unavailable." }),
11420
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid gap-3 md:grid-cols-3", children: [
11421
+ packages.map((pkg) => /* @__PURE__ */ jsxRuntimeExports.jsx(PackageStatusCard, { pkg }, pkg.id)),
11422
+ response.isLoading && packages.length === 0 && [0, 1, 2].map((index) => /* @__PURE__ */ jsxRuntimeExports.jsx(
11423
+ "div",
11424
+ {
11425
+ className: "h-36 animate-pulse rounded-lg bg-white/[0.025] shadow-[inset_0_0_0_1px_rgba(255,255,255,0.055)]"
11426
+ },
11427
+ index
11428
+ ))
11429
+ ] })
11430
+ ] })
11431
+ ] })
11432
+ ] })
11433
+ ] });
11434
+ }
11119
11435
  function computeCacheTrends(groups) {
11120
11436
  const result = /* @__PURE__ */ new Map();
11121
11437
  for (const group of groups) {
@@ -13508,7 +13824,9 @@ function CrabFamily({
13508
13824
  }
13509
13825
  function BrandHeader({
13510
13826
  compact,
13511
- crabEntrancePhase
13827
+ crabEntrancePhase,
13828
+ currentSessionId,
13829
+ logCount
13512
13830
  }) {
13513
13831
  if (compact) {
13514
13832
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-white/[0.035] shadow-[inset_0_1px_0_rgba(255,255,255,0.045),0_16px_44px_rgba(0,0,0,0.18)] rounded-[8px] p-3", children: [
@@ -13529,6 +13847,7 @@ function BrandHeader({
13529
13847
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [
13530
13848
  /* @__PURE__ */ jsxRuntimeExports.jsx(AlertsDialog, {}),
13531
13849
  /* @__PURE__ */ jsxRuntimeExports.jsx(GroupsDialog, {}),
13850
+ /* @__PURE__ */ jsxRuntimeExports.jsx(AgentLabDialog, { currentSessionId, logCount }),
13532
13851
  /* @__PURE__ */ jsxRuntimeExports.jsx(SettingsDialog, {})
13533
13852
  ] })
13534
13853
  ] }),
@@ -13556,6 +13875,7 @@ function BrandHeader({
13556
13875
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "justify-self-end flex items-center gap-1", children: [
13557
13876
  /* @__PURE__ */ jsxRuntimeExports.jsx(AlertsDialog, {}),
13558
13877
  /* @__PURE__ */ jsxRuntimeExports.jsx(GroupsDialog, {}),
13878
+ /* @__PURE__ */ jsxRuntimeExports.jsx(AgentLabDialog, { currentSessionId, logCount }),
13559
13879
  /* @__PURE__ */ jsxRuntimeExports.jsx(SettingsDialog, {})
13560
13880
  ] })
13561
13881
  ] });
@@ -14019,10 +14339,19 @@ function ProxyViewer({
14019
14339
  },
14020
14340
  [onSessionChange]
14021
14341
  );
14342
+ const labSessionId = pinnedSessionId !== void 0 ? pinnedSessionId : selectedSession === "__all__" ? null : selectedSession;
14022
14343
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-background min-h-screen w-full text-foreground", children: [
14023
14344
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid min-h-screen w-full grid-cols-1 lg:grid-cols-[minmax(0,1fr)_340px] xl:grid-cols-[minmax(0,1fr)_360px]", children: [
14024
14345
  /* @__PURE__ */ jsxRuntimeExports.jsx("aside", { className: "bg-background/95 order-1 border-b border-white/[0.045] lg:sticky lg:top-0 lg:order-2 lg:h-screen lg:overflow-y-auto lg:border-b-0 lg:border-l lg:border-white/[0.055]", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-4 p-4", children: [
14025
- /* @__PURE__ */ jsxRuntimeExports.jsx(BrandHeader, { compact: true, crabEntrancePhase }),
14346
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
14347
+ BrandHeader,
14348
+ {
14349
+ compact: true,
14350
+ crabEntrancePhase,
14351
+ currentSessionId: labSessionId,
14352
+ logCount: logs.length
14353
+ }
14354
+ ),
14026
14355
  /* @__PURE__ */ jsxRuntimeExports.jsxs(SidebarPanel, { label: "Session", children: [
14027
14356
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-2 gap-2", children: [
14028
14357
  /* @__PURE__ */ jsxRuntimeExports.jsx(SidebarMetric, { label: "Requests", value: logs.length }),
@@ -1,10 +1,10 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
2
- import { u as useProviders, D as Dialog, d as DialogContent, e as DialogHeader, h as DialogTitle, T as Tabs, i as TabsList, j as TabsTrigger, k as TabsContent, l as Button, m as TooltipProvider, n as Tooltip, o as TooltipTrigger, p as TooltipContent, q as dispatchLogFocusRequest } from "./ProxyViewerContainer-S9izw3ND.mjs";
3
- import { ResponseView } from "./ResponseView-Dk8Op622.mjs";
4
- import { C as CapturedLogSchema } from "./router-BJMaHkr1.mjs";
2
+ import { u as useProviders, D as Dialog, d as DialogContent, e as DialogHeader, h as DialogTitle, T as Tabs, i as TabsList, j as TabsTrigger, k as TabsContent, l as Button, m as TooltipProvider, n as Tooltip, o as TooltipTrigger, p as TooltipContent, q as dispatchLogFocusRequest } from "./ProxyViewerContainer-Dp7Va9_T.mjs";
3
+ import { ResponseView } from "./ResponseView-CsTiNoOE.mjs";
4
+ import { C as CapturedLogSchema } from "./router-BJJ0VhsB.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import "../_libs/modelcontextprotocol__server.mjs";
7
- import { af as RotateCcw, ar as Braces, as as Minimize2 } from "../_libs/lucide-react.mjs";
7
+ import { am as RotateCcw, ay as Braces, az as Minimize2 } from "../_libs/lucide-react.mjs";
8
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";
@@ -1,6 +1,6 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
2
- import { u as useProviders, s as analyzeContextIntelligence, f as formatTokens, m as TooltipProvider, c as cn, n as Tooltip, o as TooltipTrigger, p as TooltipContent, S as SegmentBar, R as ROLE_COLOR_CLASSES, A as ANATOMY_ROLE_LABELS, t as formatContextWindowTokens, C as CONTEXT_USAGE_THRESHOLDS } from "./ProxyViewerContainer-S9izw3ND.mjs";
3
- import "./router-BJMaHkr1.mjs";
2
+ import { u as useProviders, s as analyzeContextIntelligence, f as formatTokens, m as TooltipProvider, c as cn, n as Tooltip, o as TooltipTrigger, p as TooltipContent, S as SegmentBar, R as ROLE_COLOR_CLASSES, A as ANATOMY_ROLE_LABELS, t as formatContextWindowTokens, C as CONTEXT_USAGE_THRESHOLDS } from "./ProxyViewerContainer-Dp7Va9_T.mjs";
3
+ import "./router-BJJ0VhsB.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import { I as Info, a as ChevronDown, h as ChevronRight } from "../_libs/lucide-react.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, v as getStatusCategory, B as Badge, w as Collapsible, x as CollapsibleTrigger, y as CollapsibleContent, z as ScrollArea, E as LazyJsonViewer, F as safeJsonValue } from "./ProxyViewerContainer-S9izw3ND.mjs";
3
- import { s as safeGetOwnProperty } from "./router-BJMaHkr1.mjs";
2
+ import { g as getLogFormatAdapter, f as formatTokens, c as cn, v as getStatusCategory, B as Badge, w as Collapsible, x as CollapsibleTrigger, y as CollapsibleContent, z as ScrollArea, E as LazyJsonViewer, F as safeJsonValue } from "./ProxyViewerContainer-Dp7Va9_T.mjs";
3
+ import { s as safeGetOwnProperty } from "./router-BJJ0VhsB.mjs";
4
4
  import "../_libs/jszip.mjs";
5
5
  import "../_libs/modelcontextprotocol__server.mjs";
6
- import { Z as Zap, T as TriangleAlert, at as CircleStop, O as Brain, a as ChevronDown, h as ChevronRight, r as Terminal } from "../_libs/lucide-react.mjs";
6
+ import { $ as Zap, T as TriangleAlert, aA as CircleStop, a1 as Brain, a as ChevronDown, h as ChevronRight, r as Terminal } from "../_libs/lucide-react.mjs";
7
7
  import { R as Root } from "../_libs/radix-ui__react-separator.mjs";
8
8
  import "../_libs/swr.mjs";
9
9
  import "../_libs/use-sync-external-store.mjs";
@@ -1,6 +1,6 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
2
- import { m as TooltipProvider, n as Tooltip, o as TooltipTrigger, B as Badge, p as TooltipContent, E as LazyJsonViewer } from "./ProxyViewerContainer-S9izw3ND.mjs";
3
- import "./router-BJMaHkr1.mjs";
2
+ import { m as TooltipProvider, n as Tooltip, o as TooltipTrigger, B as Badge, p as TooltipContent, E as LazyJsonViewer } from "./ProxyViewerContainer-Dp7Va9_T.mjs";
3
+ import "./router-BJJ0VhsB.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import { a as ChevronDown, h as ChevronRight, L as LoaderCircle } from "../_libs/lucide-react.mjs";
@@ -1,6 +1,6 @@
1
- import { P as ProxyViewerContainer } from "./ProxyViewerContainer-S9izw3ND.mjs";
1
+ import { P as ProxyViewerContainer } from "./ProxyViewerContainer-Dp7Va9_T.mjs";
2
2
  import "../_libs/react.mjs";
3
- import "./router-BJMaHkr1.mjs";
3
+ import "./router-BJJ0VhsB.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-C_HvRzgP.mjs");
201
+ const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-CltlYL3I.mjs");
202
202
  const startManifest = tsrStartManifest();
203
203
  const rootRoute = startManifest.routes[rootRouteId] = startManifest.routes[rootRouteId] || {};
204
204
  rootRoute.assets = rootRoute.assets || [];
@@ -776,7 +776,7 @@ let entriesPromise;
776
776
  let baseManifestPromise;
777
777
  let cachedFinalManifestPromise;
778
778
  async function loadEntries() {
779
- const routerEntry = await import("./router-BJMaHkr1.mjs").then((n) => n.N);
779
+ const routerEntry = await import("./router-BJJ0VhsB.mjs").then((n) => n.N);
780
780
  const startEntry = await import("./start-HYkvq4Ni.mjs");
781
781
  return { startEntry, routerEntry };
782
782
  }
@@ -1,9 +1,9 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
2
- import { G as parseJsonText, c as cn, m as TooltipProvider, n as Tooltip, o as TooltipTrigger, p as TooltipContent, b as copyTextToClipboard } from "./ProxyViewerContainer-S9izw3ND.mjs";
3
- import "./router-BJMaHkr1.mjs";
2
+ import { G as parseJsonText, c as cn, m as TooltipProvider, n as Tooltip, o as TooltipTrigger, p as TooltipContent, b as copyTextToClipboard } from "./ProxyViewerContainer-Dp7Va9_T.mjs";
3
+ import "./router-BJJ0VhsB.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
- import { b as Check, e as Copy, a as ChevronDown, h as ChevronRight, ac as ChevronsDown } from "../_libs/lucide-react.mjs";
6
+ import { b as Check, e as Copy, a as ChevronDown, h as ChevronRight, aj as ChevronsDown } 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";