@tonyclaw/agent-inspector 3.0.5 → 3.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.output/nitro.json +1 -1
- package/.output/public/assets/{CompareDrawer-Co-35_Xw.js → CompareDrawer-C0Kbsm-Q.js} +1 -1
- package/.output/public/assets/ProxyViewerContainer-p-rpYyiF.js +106 -0
- package/.output/public/assets/{ReplayDialog-DghbvKdy.js → ReplayDialog-CM3dhP8v.js} +1 -1
- package/.output/public/assets/{RequestAnatomy-CRXE5v8X.js → RequestAnatomy-fa0JXy5p.js} +1 -1
- package/.output/public/assets/{ResponseView-CzxoQRjp.js → ResponseView-Bq6sC7Ay.js} +2 -2
- package/.output/public/assets/{StreamingChunkSequence-DnFyF_Hr.js → StreamingChunkSequence-CGOun3Df.js} +1 -1
- package/.output/public/assets/{_sessionId-DHRhWzKe.js → _sessionId-D5fYH2C0.js} +1 -1
- package/.output/public/assets/{index-Dl1oki9E.js → index-BEsqvywM.js} +1 -1
- package/.output/public/assets/index-C29Olfzt.js +1 -0
- package/.output/public/assets/index-DgANE0r3.css +1 -0
- package/.output/public/assets/{json-viewer-B84f7oiG.js → json-viewer-B0QRbMSf.js} +1 -1
- package/.output/public/assets/{main-DViDnJ9X.js → main-CuKZD7n0.js} +2 -2
- package/.output/server/_libs/lucide-react.mjs +292 -203
- package/.output/server/{_sessionId-C43vEAWe.mjs → _sessionId-DdBTK3qm.mjs} +3 -3
- package/.output/server/_ssr/{CompareDrawer-DOL6q0jD.mjs → CompareDrawer-m82cVZ73.mjs} +4 -4
- package/.output/server/_ssr/{ProxyViewerContainer-S9izw3ND.mjs → ProxyViewerContainer-7geuf78f.mjs} +366 -37
- package/.output/server/_ssr/{ReplayDialog-tqthwJh0.mjs → ReplayDialog-B8RlWLLH.mjs} +4 -4
- package/.output/server/_ssr/{RequestAnatomy-CgWDjFPR.mjs → RequestAnatomy-BE7pmwpv.mjs} +2 -2
- package/.output/server/_ssr/{ResponseView-Dk8Op622.mjs → ResponseView-D-sDsdQr.mjs} +3 -3
- package/.output/server/_ssr/{StreamingChunkSequence-AlS7PK8f.mjs → StreamingChunkSequence-DU_hThJr.mjs} +2 -2
- package/.output/server/_ssr/{index-BGwvMN2M.mjs → index-D0sV8UbE.mjs} +2 -2
- package/.output/server/_ssr/index.mjs +2 -2
- package/.output/server/_ssr/{json-viewer-CKHkh5U3.mjs → json-viewer-CaDh1zrw.mjs} +3 -3
- package/.output/server/_ssr/{router-BJMaHkr1.mjs → router-Zh2iZ_u0.mjs} +357 -146
- package/.output/server/_tanstack-start-manifest_v-LCE-2AaF.mjs +4 -0
- package/.output/server/index.mjs +71 -71
- package/package.json +1 -1
- package/src/components/ProxyViewer.tsx +32 -14
- package/src/components/alerts/AlertsDialog.tsx +3 -3
- package/src/components/ecosystem/AgentLabDialog.tsx +381 -0
- package/src/components/groups/GroupsDialog.tsx +3 -3
- package/src/components/providers/ImportWizardDialog.tsx +1 -1
- package/src/components/providers/ProviderCard.tsx +4 -4
- package/src/components/proxy-viewer/CompareDrawer.tsx +1 -1
- package/src/components/proxy-viewer/ConversationHeader.tsx +2 -2
- package/src/lib/ecosystemContract.ts +47 -0
- package/src/routes/api/ecosystem.packages.ts +263 -0
- package/.output/public/assets/ProxyViewerContainer-DPv1rBo7.js +0 -106
- package/.output/public/assets/index-D8cruW0P.css +0 -1
- package/.output/public/assets/index-DZyTpd2w.js +0 -1
- 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-
|
|
3
|
-
import { R as Route$
|
|
2
|
+
import { P as ProxyViewerContainer } from "./_ssr/ProxyViewerContainer-7geuf78f.mjs";
|
|
3
|
+
import { R as Route$C } from "./_ssr/router-Zh2iZ_u0.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$
|
|
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-
|
|
3
|
-
import "./router-
|
|
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-7geuf78f.mjs";
|
|
3
|
+
import "./router-Zh2iZ_u0.mjs";
|
|
4
4
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
5
5
|
import "../_libs/jszip.mjs";
|
|
6
|
-
import { X,
|
|
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";
|
|
@@ -696,7 +696,7 @@ function SideSummary({
|
|
|
696
696
|
"#",
|
|
697
697
|
displayNumber
|
|
698
698
|
] }),
|
|
699
|
-
log.model !== null && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono text-muted-foreground
|
|
699
|
+
log.model !== null && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono leading-snug text-muted-foreground", children: log.model })
|
|
700
700
|
] }),
|
|
701
701
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3 text-muted-foreground font-mono", children: [
|
|
702
702
|
log.cacheCreationInputTokens !== null && log.cacheCreationInputTokens > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-emerald-400", children: [
|
package/.output/server/_ssr/{ProxyViewerContainer-S9izw3ND.mjs → ProxyViewerContainer-7geuf78f.mjs}
RENAMED
|
@@ -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-
|
|
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-Zh2iZ_u0.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
|
|
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";
|
|
@@ -1611,11 +1611,11 @@ function ConversationHeader({
|
|
|
1611
1611
|
showClientIdentity && clientDisplayLabel !== null && clientDisplayLabel !== "" && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1612
1612
|
"span",
|
|
1613
1613
|
{
|
|
1614
|
-
className: "bg-white/[0.045] inline-flex h-6
|
|
1614
|
+
className: "bg-white/[0.045] inline-flex min-h-6 shrink-0 flex-wrap items-center gap-1 rounded-md px-1.5 py-0.5 text-xs text-muted-foreground",
|
|
1615
1615
|
title: clientTooltip ?? clientDisplayLabel,
|
|
1616
1616
|
children: [
|
|
1617
1617
|
/* @__PURE__ */ jsxRuntimeExports.jsx(ClientLogo, { client: clientApp, className: "size-4 shrink-0" }),
|
|
1618
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "
|
|
1618
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono leading-snug tabular-nums", children: clientDisplayLabel })
|
|
1619
1619
|
]
|
|
1620
1620
|
}
|
|
1621
1621
|
),
|
|
@@ -2306,27 +2306,27 @@ function useCopyFeedback(text) {
|
|
|
2306
2306
|
return { copied, copy };
|
|
2307
2307
|
}
|
|
2308
2308
|
const LazyCompareDrawer = reactExports.lazy(
|
|
2309
|
-
() => import("./CompareDrawer-
|
|
2309
|
+
() => import("./CompareDrawer-m82cVZ73.mjs").then((m) => ({ default: m.CompareDrawer }))
|
|
2310
2310
|
);
|
|
2311
2311
|
const LazyReplayDialog = reactExports.lazy(
|
|
2312
|
-
() => import("./ReplayDialog-
|
|
2312
|
+
() => import("./ReplayDialog-B8RlWLLH.mjs").then((m) => ({ default: m.ReplayDialog }))
|
|
2313
2313
|
);
|
|
2314
2314
|
const LazyRequestAnatomy = reactExports.lazy(
|
|
2315
|
-
() => import("./RequestAnatomy-
|
|
2315
|
+
() => import("./RequestAnatomy-BE7pmwpv.mjs").then((m) => ({ default: m.RequestAnatomy }))
|
|
2316
2316
|
);
|
|
2317
2317
|
const LazyResponseView = reactExports.lazy(
|
|
2318
|
-
() => import("./ResponseView-
|
|
2318
|
+
() => import("./ResponseView-D-sDsdQr.mjs").then((m) => ({ default: m.ResponseView }))
|
|
2319
2319
|
);
|
|
2320
2320
|
const LazyStreamingChunkSequence = reactExports.lazy(
|
|
2321
|
-
() => import("./StreamingChunkSequence-
|
|
2321
|
+
() => import("./StreamingChunkSequence-DU_hThJr.mjs").then((m) => ({
|
|
2322
2322
|
default: m.StreamingChunkSequence
|
|
2323
2323
|
}))
|
|
2324
2324
|
);
|
|
2325
2325
|
const LazyJsonViewer = reactExports.lazy(
|
|
2326
|
-
() => import("./json-viewer-
|
|
2326
|
+
() => import("./json-viewer-CaDh1zrw.mjs").then((m) => ({ default: m.JsonViewer }))
|
|
2327
2327
|
);
|
|
2328
2328
|
const LazyJsonViewerFromString = reactExports.lazy(
|
|
2329
|
-
() => import("./json-viewer-
|
|
2329
|
+
() => import("./json-viewer-CaDh1zrw.mjs").then((m) => ({ default: m.JsonViewerFromString }))
|
|
2330
2330
|
);
|
|
2331
2331
|
const HIGHLIGHT_DURATION_MS = 1200;
|
|
2332
2332
|
const MAX_HIGHLIGHT_ATTEMPTS = 12;
|
|
@@ -6556,7 +6556,7 @@ function AlertList({
|
|
|
6556
6556
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: cn("text-xs font-semibold", severityText(alert.severity)), children: severityLabel(alert.severity) }),
|
|
6557
6557
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate text-xs text-muted-foreground", children: categoryLabel(alert.category) })
|
|
6558
6558
|
] }),
|
|
6559
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-1
|
|
6559
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-1 text-sm font-semibold leading-snug", children: alert.title }),
|
|
6560
6560
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-1 line-clamp-2 text-xs text-muted-foreground", children: alert.message })
|
|
6561
6561
|
] }),
|
|
6562
6562
|
alert.count > 1 ? /* @__PURE__ */ jsxRuntimeExports.jsxs(Badge, { variant: "outline", className: "shrink-0", children: [
|
|
@@ -6564,8 +6564,8 @@ function AlertList({
|
|
|
6564
6564
|
formatCount(alert.count)
|
|
6565
6565
|
] }) : null
|
|
6566
6566
|
] }),
|
|
6567
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-2 flex min-w-0 items-
|
|
6568
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "
|
|
6567
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-2 flex min-w-0 items-start justify-between gap-2 text-[11px] text-muted-foreground", children: [
|
|
6568
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "min-w-0 leading-snug", children: providerModel$1(alert) }),
|
|
6569
6569
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "shrink-0", children: formatTimestamp$1(alert.lastSeenAt) })
|
|
6570
6570
|
] })
|
|
6571
6571
|
]
|
|
@@ -7380,7 +7380,7 @@ function GroupList({
|
|
|
7380
7380
|
),
|
|
7381
7381
|
children: [
|
|
7382
7382
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 items-center justify-between gap-2", children: [
|
|
7383
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "min-w-0
|
|
7383
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "min-w-0 text-sm font-medium leading-snug", children: group.title }),
|
|
7384
7384
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Badge, { variant: "outline", className: statusClassName(group.status), children: statusLabel(group.status) })
|
|
7385
7385
|
] }),
|
|
7386
7386
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-1 flex items-center gap-2 text-muted-foreground", children: [
|
|
@@ -7429,7 +7429,7 @@ function GroupDetails({
|
|
|
7429
7429
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 flex-col gap-3 sm:flex-row sm:items-start sm:justify-between", children: [
|
|
7430
7430
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-w-0 space-y-1", children: [
|
|
7431
7431
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 flex-wrap items-center gap-2", children: [
|
|
7432
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "min-w-0
|
|
7432
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "min-w-0 text-base font-semibold leading-snug", children: group.title }),
|
|
7433
7433
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Badge, { variant: "outline", className: statusClassName(group.status), children: statusLabel(group.status) }),
|
|
7434
7434
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Badge, { variant: "outline", children: group.kind })
|
|
7435
7435
|
] }),
|
|
@@ -7787,7 +7787,7 @@ function MemberRow({
|
|
|
7787
7787
|
] }),
|
|
7788
7788
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-0.5 truncate text-[11px] text-muted-foreground", children: displayText(member.agent) })
|
|
7789
7789
|
] }),
|
|
7790
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: "max-w-52 px-3 py-2", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "block
|
|
7790
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: "max-w-52 px-3 py-2", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "block whitespace-normal leading-snug", children: providerModel(member) }) }),
|
|
7791
7791
|
/* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: "px-3 py-2", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Badge, { variant: "outline", className: statusClassName(member.status), children: statusLabel(member.status) }) }),
|
|
7792
7792
|
/* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: "px-3 py-2 font-mono", children: requests === null ? "-" : formatNumber(requests) }),
|
|
7793
7793
|
/* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: "px-3 py-2 font-mono", children: errors === null ? "-" : formatNumber(errors) }),
|
|
@@ -8177,7 +8177,7 @@ function ImportWizardDialog({
|
|
|
8177
8177
|
})(),
|
|
8178
8178
|
p.alreadyExists && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[10px] text-muted-foreground", children: "Already added" })
|
|
8179
8179
|
] }),
|
|
8180
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-xs text-muted-foreground
|
|
8180
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-1 text-xs leading-snug text-muted-foreground", children: [
|
|
8181
8181
|
p.models.slice(0, 4).join(", "),
|
|
8182
8182
|
p.models.length > 4 ? ` +${p.models.length - 4} more` : ""
|
|
8183
8183
|
] }),
|
|
@@ -8693,13 +8693,13 @@ function ProviderCard({
|
|
|
8693
8693
|
{
|
|
8694
8694
|
className: `flex flex-col gap-3 rounded-[8px] border border-border bg-card p-4 shadow-sm transition-all duration-500 ${isHighlighted === true ? "ring-2 ring-primary shadow-md" : ""}`,
|
|
8695
8695
|
children: [
|
|
8696
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start justify-between gap-2", children: [
|
|
8696
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-wrap items-start justify-between gap-2", children: [
|
|
8697
8697
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-w-0 space-y-1", children: [
|
|
8698
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [
|
|
8699
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "
|
|
8698
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 flex-wrap items-center gap-2", children: [
|
|
8699
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-medium leading-snug", children: provider.name }),
|
|
8700
8700
|
providerSourceBadge
|
|
8701
8701
|
] }),
|
|
8702
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "
|
|
8702
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-xs leading-snug text-muted-foreground", children: compactModelLabel(provider) })
|
|
8703
8703
|
] }),
|
|
8704
8704
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex shrink-0 items-center gap-2", children: [
|
|
8705
8705
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -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 flex-wrap 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-start gap-2", children: [
|
|
11240
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(PackageCheck, { className: "size-4 shrink-0 text-white/55" }),
|
|
11241
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-sm font-semibold leading-snug", children: pkg.name })
|
|
11242
|
+
] }),
|
|
11243
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-1 break-all font-mono text-[11px] leading-snug 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: "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 flex-wrap 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-start gap-2", children: [
|
|
11280
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Rocket, { className: "size-4 shrink-0 text-cyan-200/75" }),
|
|
11281
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-sm font-semibold leading-snug", children: preset.name })
|
|
11282
|
+
] }),
|
|
11283
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-1 break-all font-mono text-[11px] leading-snug 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,16 +13824,18 @@ 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: [
|
|
13515
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start justify-between gap-3", children: [
|
|
13516
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-w-
|
|
13833
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-wrap items-start justify-between gap-3", children: [
|
|
13834
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-w-fit items-start gap-2", children: [
|
|
13517
13835
|
/* @__PURE__ */ jsxRuntimeExports.jsx(CrabFamily, { compact: true, entrancePhase: crabEntrancePhase }),
|
|
13518
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-w-
|
|
13519
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-w-
|
|
13520
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "
|
|
13836
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-w-fit", children: [
|
|
13837
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-w-fit flex-wrap items-baseline gap-x-2 gap-y-0.5", children: [
|
|
13838
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "whitespace-nowrap text-base font-bold", children: "Agent Inspector" }),
|
|
13521
13839
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "hidden shrink-0 font-mono text-[11px] font-semibold text-muted-foreground sm:inline", children: [
|
|
13522
13840
|
"v",
|
|
13523
13841
|
packageJson.version
|
|
@@ -13529,19 +13847,20 @@ 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
|
] }),
|
|
13535
13854
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-2 hidden sm:block", children: /* @__PURE__ */ jsxRuntimeExports.jsx(McpReadyBadge, {}) })
|
|
13536
13855
|
] });
|
|
13537
13856
|
}
|
|
13538
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "
|
|
13539
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", {}),
|
|
13540
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("h1", { className: "flex min-w-
|
|
13541
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "flex max-w-
|
|
13857
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-wrap items-start justify-between gap-x-4 gap-y-3 pb-6", children: [
|
|
13858
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "min-w-10 flex-1", "aria-hidden": "true" }),
|
|
13859
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("h1", { className: "flex min-w-fit flex-col items-center gap-2 text-center", children: [
|
|
13860
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "flex max-w-full flex-wrap items-end justify-center gap-x-2 gap-y-1", children: [
|
|
13542
13861
|
/* @__PURE__ */ jsxRuntimeExports.jsx(CrabFamily, { compact: false, entrancePhase: crabEntrancePhase }),
|
|
13543
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "flex min-w-
|
|
13544
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "
|
|
13862
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "flex min-w-fit flex-wrap items-baseline justify-center gap-x-2 gap-y-0.5 pl-1", children: [
|
|
13863
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "whitespace-nowrap text-lg font-bold", children: "Agent Inspector" }),
|
|
13545
13864
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "shrink-0 font-mono text-xs font-semibold text-muted-foreground", children: [
|
|
13546
13865
|
"v",
|
|
13547
13866
|
packageJson.version
|
|
@@ -13550,12 +13869,13 @@ function BrandHeader({
|
|
|
13550
13869
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Plus, { className: "size-4 shrink-0 text-muted-foreground/70", "aria-hidden": "true" }),
|
|
13551
13870
|
/* @__PURE__ */ jsxRuntimeExports.jsx(McpLogo, { className: "size-10 shrink-0" })
|
|
13552
13871
|
] }),
|
|
13553
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "max-w-
|
|
13872
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "max-w-full text-sm font-semibold text-muted-foreground", children: "Local First. Evidence First." }),
|
|
13554
13873
|
/* @__PURE__ */ jsxRuntimeExports.jsx(McpReadyBadge, {})
|
|
13555
13874
|
] }),
|
|
13556
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "
|
|
13875
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-1 justify-end 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(
|
|
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-
|
|
3
|
-
import { ResponseView } from "./ResponseView-
|
|
4
|
-
import { C as CapturedLogSchema } from "./router-
|
|
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-7geuf78f.mjs";
|
|
3
|
+
import { ResponseView } from "./ResponseView-D-sDsdQr.mjs";
|
|
4
|
+
import { C as CapturedLogSchema } from "./router-Zh2iZ_u0.mjs";
|
|
5
5
|
import "../_libs/jszip.mjs";
|
|
6
6
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
7
|
-
import {
|
|
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";
|