@tonyclaw/agent-inspector 3.0.4 → 3.0.5
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-Bs2kzUSp.js → CompareDrawer-Co-35_Xw.js} +1 -1
- package/.output/public/assets/{ProxyViewerContainer-BUnlrfiS.js → ProxyViewerContainer-DPv1rBo7.js} +28 -28
- package/.output/public/assets/{ReplayDialog-B6xy7pl5.js → ReplayDialog-DghbvKdy.js} +1 -1
- package/.output/public/assets/{RequestAnatomy-BSvSmpCO.js → RequestAnatomy-CRXE5v8X.js} +1 -1
- package/.output/public/assets/{ResponseView-BFnUva7Z.js → ResponseView-CzxoQRjp.js} +2 -2
- package/.output/public/assets/{StreamingChunkSequence-u7ZaJOqn.js → StreamingChunkSequence-DnFyF_Hr.js} +1 -1
- package/.output/public/assets/{_sessionId-CH4nsMOA.js → _sessionId-DHRhWzKe.js} +1 -1
- package/.output/public/assets/index-D8cruW0P.css +1 -0
- package/.output/public/assets/index-DZyTpd2w.js +1 -0
- package/.output/public/assets/{index-B5HS6AxR.js → index-Dl1oki9E.js} +1 -1
- package/.output/public/assets/{json-viewer-5Tj5vkqe.js → json-viewer-B84f7oiG.js} +1 -1
- package/.output/public/assets/{main-ChxZWG8K.js → main-DViDnJ9X.js} +2 -2
- package/.output/server/_libs/lucide-react.mjs +2 -2
- package/.output/server/{_sessionId-B3r-VBdM.mjs → _sessionId-C43vEAWe.mjs} +2 -2
- package/.output/server/_ssr/{CompareDrawer-DAYrKHKe.mjs → CompareDrawer-DOL6q0jD.mjs} +2 -2
- package/.output/server/_ssr/{ProxyViewerContainer-CYmNmQK9.mjs → ProxyViewerContainer-S9izw3ND.mjs} +262 -146
- package/.output/server/_ssr/{ReplayDialog-CdKvdXxk.mjs → ReplayDialog-tqthwJh0.mjs} +3 -3
- package/.output/server/_ssr/{RequestAnatomy-BtmTUq7O.mjs → RequestAnatomy-CgWDjFPR.mjs} +2 -2
- package/.output/server/_ssr/{ResponseView-DuD_z5hd.mjs → ResponseView-Dk8Op622.mjs} +2 -2
- package/.output/server/_ssr/{StreamingChunkSequence-DpIV2wt_.mjs → StreamingChunkSequence-AlS7PK8f.mjs} +2 -2
- package/.output/server/_ssr/{index-B4_8vH8k.mjs → index-BGwvMN2M.mjs} +2 -2
- package/.output/server/_ssr/index.mjs +2 -2
- package/.output/server/_ssr/{json-viewer-gcNJEB7y.mjs → json-viewer-CKHkh5U3.mjs} +2 -2
- package/.output/server/_ssr/{router-CYjIsElo.mjs → router-BJMaHkr1.mjs} +9 -9
- package/.output/server/{_tanstack-start-manifest_v-BRdOxY6q.mjs → _tanstack-start-manifest_v-C_HvRzgP.mjs} +1 -1
- package/.output/server/index.mjs +65 -65
- package/package.json +1 -1
- package/src/components/providers/ProviderCard.tsx +342 -206
- package/src/lib/stopReason.ts +4 -0
- package/.output/public/assets/index-BqVL284D.js +0 -1
- package/.output/public/assets/index-DJW6qbnH.css +0 -1
package/.output/server/_ssr/{ProxyViewerContainer-CYmNmQK9.mjs → ProxyViewerContainer-S9izw3ND.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,
|
|
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";
|
|
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
|
|
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";
|
|
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";
|
|
@@ -530,6 +530,8 @@ function normalizeAnthropicStopReason(value) {
|
|
|
530
530
|
case "end_turn":
|
|
531
531
|
case "tool_use":
|
|
532
532
|
return value;
|
|
533
|
+
case "max_tokens":
|
|
534
|
+
return "length";
|
|
533
535
|
default:
|
|
534
536
|
return null;
|
|
535
537
|
}
|
|
@@ -539,6 +541,8 @@ function normalizeOpenAIFinishReason(value) {
|
|
|
539
541
|
case "stop":
|
|
540
542
|
case "length":
|
|
541
543
|
return value;
|
|
544
|
+
case "max_tokens":
|
|
545
|
+
return "length";
|
|
542
546
|
default:
|
|
543
547
|
return null;
|
|
544
548
|
}
|
|
@@ -2302,27 +2306,27 @@ function useCopyFeedback(text) {
|
|
|
2302
2306
|
return { copied, copy };
|
|
2303
2307
|
}
|
|
2304
2308
|
const LazyCompareDrawer = reactExports.lazy(
|
|
2305
|
-
() => import("./CompareDrawer-
|
|
2309
|
+
() => import("./CompareDrawer-DOL6q0jD.mjs").then((m) => ({ default: m.CompareDrawer }))
|
|
2306
2310
|
);
|
|
2307
2311
|
const LazyReplayDialog = reactExports.lazy(
|
|
2308
|
-
() => import("./ReplayDialog-
|
|
2312
|
+
() => import("./ReplayDialog-tqthwJh0.mjs").then((m) => ({ default: m.ReplayDialog }))
|
|
2309
2313
|
);
|
|
2310
2314
|
const LazyRequestAnatomy = reactExports.lazy(
|
|
2311
|
-
() => import("./RequestAnatomy-
|
|
2315
|
+
() => import("./RequestAnatomy-CgWDjFPR.mjs").then((m) => ({ default: m.RequestAnatomy }))
|
|
2312
2316
|
);
|
|
2313
2317
|
const LazyResponseView = reactExports.lazy(
|
|
2314
|
-
() => import("./ResponseView-
|
|
2318
|
+
() => import("./ResponseView-Dk8Op622.mjs").then((m) => ({ default: m.ResponseView }))
|
|
2315
2319
|
);
|
|
2316
2320
|
const LazyStreamingChunkSequence = reactExports.lazy(
|
|
2317
|
-
() => import("./StreamingChunkSequence-
|
|
2321
|
+
() => import("./StreamingChunkSequence-AlS7PK8f.mjs").then((m) => ({
|
|
2318
2322
|
default: m.StreamingChunkSequence
|
|
2319
2323
|
}))
|
|
2320
2324
|
);
|
|
2321
2325
|
const LazyJsonViewer = reactExports.lazy(
|
|
2322
|
-
() => import("./json-viewer-
|
|
2326
|
+
() => import("./json-viewer-CKHkh5U3.mjs").then((m) => ({ default: m.JsonViewer }))
|
|
2323
2327
|
);
|
|
2324
2328
|
const LazyJsonViewerFromString = reactExports.lazy(
|
|
2325
|
-
() => import("./json-viewer-
|
|
2329
|
+
() => import("./json-viewer-CKHkh5U3.mjs").then((m) => ({ default: m.JsonViewerFromString }))
|
|
2326
2330
|
);
|
|
2327
2331
|
const HIGHLIGHT_DURATION_MS = 1200;
|
|
2328
2332
|
const MAX_HIGHLIGHT_ATTEMPTS = 12;
|
|
@@ -8361,6 +8365,119 @@ function ProviderTestCoverage({ provider }) {
|
|
|
8361
8365
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "non-stream + stream" })
|
|
8362
8366
|
] });
|
|
8363
8367
|
}
|
|
8368
|
+
function configuredFormatResults(provider, testResults) {
|
|
8369
|
+
if (testResults === void 0) return [];
|
|
8370
|
+
const results = [];
|
|
8371
|
+
if (providerHasEndpoint(provider.anthropicBaseUrl)) {
|
|
8372
|
+
results.push(testResults.anthropic);
|
|
8373
|
+
}
|
|
8374
|
+
if (providerHasEndpoint(provider.openaiBaseUrl)) {
|
|
8375
|
+
results.push(testResults.openaiChat);
|
|
8376
|
+
}
|
|
8377
|
+
if (providerHasEndpoint(provider.openaiResponsesBaseUrl)) {
|
|
8378
|
+
results.push(testResults.openaiResponses);
|
|
8379
|
+
}
|
|
8380
|
+
return results;
|
|
8381
|
+
}
|
|
8382
|
+
function summarizeTestResults(provider, testResults) {
|
|
8383
|
+
const summary = { total: 0, passed: 0, failed: 0, testing: 0 };
|
|
8384
|
+
for (const results of configuredFormatResults(provider, testResults)) {
|
|
8385
|
+
for (const state of [results.nonStreaming, results.streaming]) {
|
|
8386
|
+
if (isNotConfiguredState(state)) continue;
|
|
8387
|
+
summary.total += 1;
|
|
8388
|
+
if (hasSuccessField(state)) {
|
|
8389
|
+
if (state.success) {
|
|
8390
|
+
summary.passed += 1;
|
|
8391
|
+
} else {
|
|
8392
|
+
summary.failed += 1;
|
|
8393
|
+
}
|
|
8394
|
+
} else {
|
|
8395
|
+
summary.testing += 1;
|
|
8396
|
+
}
|
|
8397
|
+
}
|
|
8398
|
+
}
|
|
8399
|
+
return summary;
|
|
8400
|
+
}
|
|
8401
|
+
function ProviderTestPill({
|
|
8402
|
+
provider,
|
|
8403
|
+
testResults,
|
|
8404
|
+
isTesting
|
|
8405
|
+
}) {
|
|
8406
|
+
const targets = providerTestTargets(provider);
|
|
8407
|
+
const summary = summarizeTestResults(provider, testResults);
|
|
8408
|
+
if (isTesting) {
|
|
8409
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "inline-flex items-center gap-1 rounded border border-cyan-300/25 bg-cyan-300/[0.08] px-2 py-1 text-xs text-cyan-100", children: [
|
|
8410
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(RotateCw, { className: "size-3 animate-spin" }),
|
|
8411
|
+
"Testing"
|
|
8412
|
+
] });
|
|
8413
|
+
}
|
|
8414
|
+
if (targets.length === 0) {
|
|
8415
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "rounded border border-border/70 bg-muted/20 px-2 py-1 text-xs text-muted-foreground", children: "No endpoint" });
|
|
8416
|
+
}
|
|
8417
|
+
if (testResults === void 0 || summary.total === 0) {
|
|
8418
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "rounded border border-border/70 bg-muted/20 px-2 py-1 text-xs text-muted-foreground", children: "Not tested" });
|
|
8419
|
+
}
|
|
8420
|
+
if (summary.failed > 0) {
|
|
8421
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "inline-flex items-center gap-1 rounded border border-red-400/25 bg-red-500/[0.08] px-2 py-1 text-xs text-red-200", children: [
|
|
8422
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { className: "size-3" }),
|
|
8423
|
+
summary.passed,
|
|
8424
|
+
"/",
|
|
8425
|
+
summary.total,
|
|
8426
|
+
" passed"
|
|
8427
|
+
] });
|
|
8428
|
+
}
|
|
8429
|
+
if (summary.testing > 0 || summary.passed < summary.total) {
|
|
8430
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "rounded border border-amber-300/25 bg-amber-400/[0.08] px-2 py-1 text-xs text-amber-100", children: [
|
|
8431
|
+
"Partial ",
|
|
8432
|
+
summary.passed,
|
|
8433
|
+
"/",
|
|
8434
|
+
summary.total
|
|
8435
|
+
] });
|
|
8436
|
+
}
|
|
8437
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "inline-flex items-center gap-1 rounded border border-cyan-300/25 bg-cyan-300/[0.08] px-2 py-1 text-xs text-cyan-100", children: [
|
|
8438
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleCheckBig, { className: "size-3" }),
|
|
8439
|
+
"OK ",
|
|
8440
|
+
summary.passed,
|
|
8441
|
+
"/",
|
|
8442
|
+
summary.total
|
|
8443
|
+
] });
|
|
8444
|
+
}
|
|
8445
|
+
function compactModelLabel(provider) {
|
|
8446
|
+
const models = provider.models ?? [];
|
|
8447
|
+
if (models.length === 0) return "No models configured";
|
|
8448
|
+
const visible = models.slice(0, 2).join(", ");
|
|
8449
|
+
const hiddenCount = models.length - 2;
|
|
8450
|
+
return hiddenCount > 0 ? `${visible} +${hiddenCount} more` : visible;
|
|
8451
|
+
}
|
|
8452
|
+
function ModelChip({ provider, model }) {
|
|
8453
|
+
const metadata = findProviderModelMetadata(provider, model);
|
|
8454
|
+
const sourceLink = getModelSourceLink(metadata?.sourceUrl);
|
|
8455
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "inline-flex items-center gap-1 rounded bg-muted px-1.5 py-0.5 text-xs text-muted-foreground", children: [
|
|
8456
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: model }),
|
|
8457
|
+
metadata !== null && metadata.contextWindow !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono text-foreground/80", children: formatContextWindowTokens(metadata.contextWindow) }),
|
|
8458
|
+
sourceLink !== null && /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipProvider, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
|
|
8459
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
8460
|
+
"a",
|
|
8461
|
+
{
|
|
8462
|
+
href: sourceLink.url,
|
|
8463
|
+
target: "_blank",
|
|
8464
|
+
rel: "noopener noreferrer",
|
|
8465
|
+
className: "inline-flex items-center gap-0.5 rounded border border-border/70 bg-background/70 px-1 font-mono text-[10px] leading-4 text-muted-foreground transition-colors hover:text-foreground",
|
|
8466
|
+
"aria-label": sourceLink.title,
|
|
8467
|
+
children: sourceLink.label
|
|
8468
|
+
}
|
|
8469
|
+
) }),
|
|
8470
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: sourceLink.title })
|
|
8471
|
+
] }) })
|
|
8472
|
+
] });
|
|
8473
|
+
}
|
|
8474
|
+
function modelResultsLabel(testResults) {
|
|
8475
|
+
const models = testResults?.models;
|
|
8476
|
+
if (models === void 0) return null;
|
|
8477
|
+
const count = Object.keys(models).length;
|
|
8478
|
+
if (count === 0) return null;
|
|
8479
|
+
return `${count} model${count === 1 ? "" : "s"} tested`;
|
|
8480
|
+
}
|
|
8364
8481
|
function getErrorIcon(type) {
|
|
8365
8482
|
const iconProps = { className: "size-3", strokeWidth: 2 };
|
|
8366
8483
|
switch (type) {
|
|
@@ -8547,6 +8664,7 @@ function ProviderCard({
|
|
|
8547
8664
|
}) {
|
|
8548
8665
|
const [showApiKey, setShowApiKey] = reactExports.useState(false);
|
|
8549
8666
|
const [copied, setCopied] = reactExports.useState(false);
|
|
8667
|
+
const [showDetails, setShowDetails] = reactExports.useState(false);
|
|
8550
8668
|
const [showModelResults, setShowModelResults] = reactExports.useState(false);
|
|
8551
8669
|
function handleCopy() {
|
|
8552
8670
|
void copyTextToClipboard(provider.apiKey).then((success) => {
|
|
@@ -8561,6 +8679,8 @@ function ProviderCard({
|
|
|
8561
8679
|
const hasContextMetadata = providerHasContextMetadata(provider);
|
|
8562
8680
|
const canRefreshMetadata = provider.modelMetadataUrl !== void 0 && provider.modelMetadataUrl.trim() !== "";
|
|
8563
8681
|
const metadataImportLabel = canRefreshMetadata ? "Refresh" : "Import defaults";
|
|
8682
|
+
const isTestingValue = isTesting ?? false;
|
|
8683
|
+
const testedModelsLabel = modelResultsLabel(testResults);
|
|
8564
8684
|
const providerSourceBadge = provider.source === "company" ? /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipProvider, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
|
|
8565
8685
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "shrink-0 rounded border border-cyan-300/20 bg-cyan-300/[0.08] px-1.5 py-0.5 text-xs text-cyan-100", children: "Company" }) }),
|
|
8566
8686
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: "Company-provided API key" })
|
|
@@ -8571,65 +8691,53 @@ function ProviderCard({
|
|
|
8571
8691
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
8572
8692
|
"div",
|
|
8573
8693
|
{
|
|
8574
|
-
className: `
|
|
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" : ""}`,
|
|
8575
8695
|
children: [
|
|
8576
8696
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start justify-between gap-2", children: [
|
|
8577
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "
|
|
8578
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
8579
|
-
|
|
8580
|
-
|
|
8581
|
-
|
|
8582
|
-
|
|
8583
|
-
] }) }),
|
|
8584
|
-
providerSourceBadge === null && provider.source === "personal" && /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipProvider, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
|
|
8585
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs px-1.5 py-0.5 rounded bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400 shrink-0", children: "个人" }) }),
|
|
8586
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: "Your personal API key" })
|
|
8587
|
-
] }) })
|
|
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: "truncate font-medium", children: provider.name }),
|
|
8700
|
+
providerSourceBadge
|
|
8701
|
+
] }),
|
|
8702
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "truncate text-xs text-muted-foreground", children: compactModelLabel(provider) })
|
|
8588
8703
|
] }),
|
|
8589
|
-
|
|
8590
|
-
|
|
8591
|
-
|
|
8592
|
-
|
|
8593
|
-
|
|
8594
|
-
|
|
8595
|
-
|
|
8596
|
-
|
|
8597
|
-
|
|
8598
|
-
|
|
8599
|
-
|
|
8600
|
-
|
|
8601
|
-
|
|
8602
|
-
|
|
8704
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex shrink-0 items-center gap-2", children: [
|
|
8705
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
8706
|
+
ProviderTestPill,
|
|
8707
|
+
{
|
|
8708
|
+
provider,
|
|
8709
|
+
testResults,
|
|
8710
|
+
isTesting: isTestingValue
|
|
8711
|
+
}
|
|
8712
|
+
),
|
|
8713
|
+
docsUrl !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
8714
|
+
"a",
|
|
8715
|
+
{
|
|
8716
|
+
href: docsUrl,
|
|
8717
|
+
target: "_blank",
|
|
8718
|
+
rel: "noopener noreferrer",
|
|
8719
|
+
className: "flex items-center gap-1 text-xs text-muted-foreground transition-colors hover:text-foreground",
|
|
8720
|
+
title: "View API documentation",
|
|
8721
|
+
children: [
|
|
8722
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ExternalLink, { className: "size-3" }),
|
|
8723
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "sr-only", children: "Docs" })
|
|
8724
|
+
]
|
|
8725
|
+
}
|
|
8726
|
+
)
|
|
8727
|
+
] })
|
|
8728
|
+
] }),
|
|
8729
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-2 text-xs text-muted-foreground sm:flex-row sm:items-center sm:justify-between", children: [
|
|
8730
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ProviderTestCoverage, { provider }),
|
|
8731
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
8732
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Key configured" }),
|
|
8733
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: provider.authHeader === "x-api-key" ? "x-api-key" : "Bearer" }),
|
|
8734
|
+
testedModelsLabel !== null && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: testedModelsLabel }),
|
|
8735
|
+
testResults?.testedAt !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "inline-flex items-center gap-1", children: [
|
|
8736
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Clock, { className: "size-3" }),
|
|
8737
|
+
formatTimeAgo(testResults.testedAt)
|
|
8738
|
+
] })
|
|
8739
|
+
] })
|
|
8603
8740
|
] }),
|
|
8604
|
-
provider.models !== void 0 && provider.models.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-wrap gap-1", children: provider.models.map((m) => {
|
|
8605
|
-
const metadata = findProviderModelMetadata(provider, m);
|
|
8606
|
-
const sourceLink = getModelSourceLink(metadata?.sourceUrl);
|
|
8607
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
8608
|
-
"span",
|
|
8609
|
-
{
|
|
8610
|
-
className: "inline-flex items-center gap-1 text-xs px-1.5 py-0.5 rounded bg-muted text-muted-foreground",
|
|
8611
|
-
children: [
|
|
8612
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: m }),
|
|
8613
|
-
metadata !== null && metadata.contextWindow !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono text-foreground/80", children: formatContextWindowTokens(metadata.contextWindow) }),
|
|
8614
|
-
sourceLink !== null && /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipProvider, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
|
|
8615
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
8616
|
-
"a",
|
|
8617
|
-
{
|
|
8618
|
-
href: sourceLink.url,
|
|
8619
|
-
target: "_blank",
|
|
8620
|
-
rel: "noopener noreferrer",
|
|
8621
|
-
className: "inline-flex items-center gap-0.5 rounded border border-border/70 bg-background/70 px-1 font-mono text-[10px] leading-4 text-muted-foreground transition-colors hover:text-foreground",
|
|
8622
|
-
"aria-label": sourceLink.title,
|
|
8623
|
-
children: sourceLink.label
|
|
8624
|
-
}
|
|
8625
|
-
) }),
|
|
8626
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: sourceLink.title })
|
|
8627
|
-
] }) })
|
|
8628
|
-
]
|
|
8629
|
-
},
|
|
8630
|
-
m
|
|
8631
|
-
);
|
|
8632
|
-
}) }),
|
|
8633
8741
|
!hasContextMetadata && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between gap-2 rounded-md border border-amber-500/25 bg-amber-500/6 px-2 py-1.5 text-xs text-muted-foreground", children: [
|
|
8634
8742
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Context window metadata missing" }),
|
|
8635
8743
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [
|
|
@@ -8661,98 +8769,106 @@ function ProviderCard({
|
|
|
8661
8769
|
)
|
|
8662
8770
|
] })
|
|
8663
8771
|
] }),
|
|
8664
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "
|
|
8665
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
8666
|
-
|
|
8667
|
-
|
|
8772
|
+
showDetails && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-3 border-t border-border/60 pt-3", children: [
|
|
8773
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
8774
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "flex-1 truncate rounded bg-muted px-2 py-1 text-xs text-muted-foreground", children: showApiKey ? provider.apiKey : maskApiKey(provider.apiKey) }),
|
|
8775
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
8776
|
+
"button",
|
|
8777
|
+
{
|
|
8778
|
+
type: "button",
|
|
8779
|
+
onClick: () => setShowApiKey((s) => !s),
|
|
8780
|
+
className: "p-1 text-muted-foreground transition-colors hover:text-foreground",
|
|
8781
|
+
"aria-label": showApiKey ? "Hide API key" : "Show API key",
|
|
8782
|
+
children: showApiKey ? /* @__PURE__ */ jsxRuntimeExports.jsx(EyeOff, { className: "size-4" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Eye, { className: "size-4" })
|
|
8783
|
+
}
|
|
8784
|
+
),
|
|
8785
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
8786
|
+
"button",
|
|
8787
|
+
{
|
|
8788
|
+
type: "button",
|
|
8789
|
+
onClick: handleCopy,
|
|
8790
|
+
className: "p-1 text-muted-foreground transition-colors hover:text-foreground",
|
|
8791
|
+
"aria-label": "Copy API key",
|
|
8792
|
+
children: copied ? /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "size-4 text-cyan-300" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Copy, { className: "size-4" })
|
|
8793
|
+
}
|
|
8794
|
+
)
|
|
8795
|
+
] }),
|
|
8796
|
+
provider.models !== void 0 && provider.models.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-wrap gap-1", children: provider.models.map((model) => /* @__PURE__ */ jsxRuntimeExports.jsx(ModelChip, { provider, model }, model)) }),
|
|
8797
|
+
providerHasEndpoint(provider.anthropicBaseUrl) && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
8798
|
+
ProviderEndpointSummary,
|
|
8668
8799
|
{
|
|
8669
|
-
|
|
8670
|
-
|
|
8671
|
-
|
|
8672
|
-
|
|
8673
|
-
children:
|
|
8800
|
+
label: "Anthropic",
|
|
8801
|
+
baseUrl: provider.anthropicBaseUrl,
|
|
8802
|
+
endpoint: PATH_V1_MESSAGES,
|
|
8803
|
+
providerName: provider.name,
|
|
8804
|
+
children: testResults !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(ProviderFormatTestStatus, { results: testResults.anthropic })
|
|
8674
8805
|
}
|
|
8675
8806
|
),
|
|
8676
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
8677
|
-
|
|
8807
|
+
providerHasEndpoint(provider.openaiBaseUrl) && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
8808
|
+
ProviderEndpointSummary,
|
|
8678
8809
|
{
|
|
8679
|
-
|
|
8680
|
-
|
|
8681
|
-
|
|
8682
|
-
|
|
8683
|
-
children:
|
|
8810
|
+
label: "Chat",
|
|
8811
|
+
baseUrl: provider.openaiBaseUrl,
|
|
8812
|
+
endpoint: PATH_V1_CHAT_COMPLETIONS,
|
|
8813
|
+
providerName: provider.name,
|
|
8814
|
+
children: testResults !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(ProviderFormatTestStatus, { results: testResults.openaiChat })
|
|
8684
8815
|
}
|
|
8685
|
-
)
|
|
8686
|
-
|
|
8687
|
-
|
|
8688
|
-
|
|
8689
|
-
|
|
8690
|
-
|
|
8691
|
-
|
|
8692
|
-
|
|
8693
|
-
|
|
8694
|
-
|
|
8695
|
-
|
|
8696
|
-
|
|
8697
|
-
|
|
8698
|
-
|
|
8699
|
-
|
|
8700
|
-
|
|
8701
|
-
|
|
8702
|
-
|
|
8703
|
-
|
|
8704
|
-
|
|
8705
|
-
|
|
8706
|
-
|
|
8707
|
-
|
|
8708
|
-
|
|
8709
|
-
|
|
8710
|
-
|
|
8711
|
-
|
|
8712
|
-
|
|
8713
|
-
|
|
8714
|
-
|
|
8715
|
-
|
|
8716
|
-
|
|
8717
|
-
|
|
8718
|
-
|
|
8719
|
-
|
|
8720
|
-
|
|
8721
|
-
|
|
8816
|
+
),
|
|
8817
|
+
providerHasEndpoint(provider.openaiResponsesBaseUrl) && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
8818
|
+
ProviderEndpointSummary,
|
|
8819
|
+
{
|
|
8820
|
+
label: "Responses",
|
|
8821
|
+
baseUrl: provider.openaiResponsesBaseUrl,
|
|
8822
|
+
endpoint: PATH_V1_RESPONSES,
|
|
8823
|
+
providerName: provider.name,
|
|
8824
|
+
children: testResults !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(ProviderFormatTestStatus, { results: testResults.openaiResponses })
|
|
8825
|
+
}
|
|
8826
|
+
),
|
|
8827
|
+
testResults?.models !== void 0 && Object.keys(testResults.models).length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
8828
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
8829
|
+
"button",
|
|
8830
|
+
{
|
|
8831
|
+
type: "button",
|
|
8832
|
+
onClick: () => setShowModelResults((value) => !value),
|
|
8833
|
+
className: "flex items-center gap-1 text-xs text-muted-foreground transition-colors hover:text-foreground",
|
|
8834
|
+
children: [
|
|
8835
|
+
showModelResults ? /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronDown, { className: "size-3" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronRight, { className: "size-3" }),
|
|
8836
|
+
"Model Test Results (",
|
|
8837
|
+
Object.keys(testResults.models).length,
|
|
8838
|
+
")"
|
|
8839
|
+
]
|
|
8840
|
+
}
|
|
8841
|
+
),
|
|
8842
|
+
showModelResults && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-2 overflow-x-auto", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("table", { className: "w-full border-collapse text-xs", children: [
|
|
8843
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("thead", { children: /* @__PURE__ */ jsxRuntimeExports.jsxs("tr", { className: "border-b border-border", children: [
|
|
8844
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("th", { className: "px-2 py-1 text-left font-medium text-muted-foreground", children: "Model" }),
|
|
8845
|
+
providerHasEndpoint(provider.anthropicBaseUrl) && /* @__PURE__ */ jsxRuntimeExports.jsx("th", { className: "px-2 py-1 text-left font-medium text-muted-foreground", children: "Anthropic" }),
|
|
8846
|
+
providerHasEndpoint(provider.openaiBaseUrl) && /* @__PURE__ */ jsxRuntimeExports.jsx("th", { className: "px-2 py-1 text-left font-medium text-muted-foreground", children: "Chat" }),
|
|
8847
|
+
providerHasEndpoint(provider.openaiResponsesBaseUrl) && /* @__PURE__ */ jsxRuntimeExports.jsx("th", { className: "px-2 py-1 text-left font-medium text-muted-foreground", children: "Responses" })
|
|
8848
|
+
] }) }),
|
|
8849
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("tbody", { children: Object.entries(testResults.models).map(([modelName, modelResult]) => /* @__PURE__ */ jsxRuntimeExports.jsxs("tr", { className: "border-b border-border/50 last:border-0", children: [
|
|
8850
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: "px-2 py-1 font-medium", children: modelName }),
|
|
8851
|
+
providerHasEndpoint(provider.anthropicBaseUrl) && /* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: "px-2 py-1 align-top", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ProviderFormatTestStatus, { results: modelResult.anthropic }) }),
|
|
8852
|
+
providerHasEndpoint(provider.openaiBaseUrl) && /* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: "px-2 py-1 align-top", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ProviderFormatTestStatus, { results: modelResult.openaiChat }) }),
|
|
8853
|
+
providerHasEndpoint(provider.openaiResponsesBaseUrl) && /* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: "px-2 py-1 align-top", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ProviderFormatTestStatus, { results: modelResult.openaiResponses }) })
|
|
8854
|
+
] }, modelName)) })
|
|
8855
|
+
] }) })
|
|
8722
8856
|
] })
|
|
8723
8857
|
] }),
|
|
8724
|
-
|
|
8858
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-2 border-t pt-1 sm:flex-row sm:items-center sm:justify-between", children: [
|
|
8725
8859
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
8726
8860
|
"button",
|
|
8727
8861
|
{
|
|
8728
8862
|
type: "button",
|
|
8729
|
-
onClick: () =>
|
|
8730
|
-
className: "text-xs text-muted-foreground hover:text-foreground
|
|
8863
|
+
onClick: () => setShowDetails((value) => !value),
|
|
8864
|
+
className: "inline-flex items-center gap-1 text-xs text-muted-foreground transition-colors hover:text-foreground",
|
|
8865
|
+
"aria-expanded": showDetails,
|
|
8731
8866
|
children: [
|
|
8732
|
-
|
|
8733
|
-
"
|
|
8734
|
-
Object.keys(testResults.models).length,
|
|
8735
|
-
")"
|
|
8867
|
+
showDetails ? /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronDown, { className: "size-3" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronRight, { className: "size-3" }),
|
|
8868
|
+
"Details"
|
|
8736
8869
|
]
|
|
8737
8870
|
}
|
|
8738
8871
|
),
|
|
8739
|
-
showModelResults && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-2 overflow-x-auto", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("table", { className: "w-full text-xs border-collapse", children: [
|
|
8740
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("thead", { children: /* @__PURE__ */ jsxRuntimeExports.jsxs("tr", { className: "border-b border-border", children: [
|
|
8741
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("th", { className: "text-left py-1 px-2 font-medium text-muted-foreground", children: "Model" }),
|
|
8742
|
-
provider.anthropicBaseUrl !== void 0 && provider.anthropicBaseUrl !== "" && /* @__PURE__ */ jsxRuntimeExports.jsx("th", { className: "text-left py-1 px-2 font-medium text-muted-foreground", children: "Anthropic" }),
|
|
8743
|
-
provider.openaiBaseUrl !== void 0 && provider.openaiBaseUrl !== "" && /* @__PURE__ */ jsxRuntimeExports.jsx("th", { className: "text-left py-1 px-2 font-medium text-muted-foreground", children: "Chat" }),
|
|
8744
|
-
provider.openaiResponsesBaseUrl !== void 0 && provider.openaiResponsesBaseUrl !== "" && /* @__PURE__ */ jsxRuntimeExports.jsx("th", { className: "text-left py-1 px-2 font-medium text-muted-foreground", children: "Responses" })
|
|
8745
|
-
] }) }),
|
|
8746
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("tbody", { children: Object.entries(testResults.models).map(([modelName, modelResult]) => /* @__PURE__ */ jsxRuntimeExports.jsxs("tr", { className: "border-b border-border/50 last:border-0", children: [
|
|
8747
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: "py-1 px-2 font-medium", children: modelName }),
|
|
8748
|
-
provider.anthropicBaseUrl !== void 0 && provider.anthropicBaseUrl !== "" && /* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: "py-1 px-2 align-top", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ProviderFormatTestStatus, { results: modelResult.anthropic }) }),
|
|
8749
|
-
provider.openaiBaseUrl !== void 0 && provider.openaiBaseUrl !== "" && /* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: "py-1 px-2 align-top", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ProviderFormatTestStatus, { results: modelResult.openaiChat }) }),
|
|
8750
|
-
provider.openaiResponsesBaseUrl !== void 0 && provider.openaiResponsesBaseUrl !== "" && /* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: "py-1 px-2 align-top", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ProviderFormatTestStatus, { results: modelResult.openaiResponses }) })
|
|
8751
|
-
] }, modelName)) })
|
|
8752
|
-
] }) })
|
|
8753
|
-
] }),
|
|
8754
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-2 pt-1 border-t sm:flex-row sm:items-center sm:justify-between", children: [
|
|
8755
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(ProviderTestCoverage, { provider }),
|
|
8756
8872
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex gap-2", children: [
|
|
8757
8873
|
onTest !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
8758
8874
|
Button,
|
|
@@ -8761,10 +8877,10 @@ function ProviderCard({
|
|
|
8761
8877
|
size: "sm",
|
|
8762
8878
|
onClick: () => onTest(provider.id),
|
|
8763
8879
|
className: "text-xs h-7 gap-1",
|
|
8764
|
-
disabled:
|
|
8880
|
+
disabled: isTestingValue,
|
|
8765
8881
|
children: [
|
|
8766
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(RotateCw, { className: `size-3 ${
|
|
8767
|
-
|
|
8882
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(RotateCw, { className: `size-3 ${isTestingValue ? "animate-spin" : ""}` }),
|
|
8883
|
+
isTestingValue ? testingTimeLeft !== void 0 ? `Testing (${testingTimeLeft}s)` : "Testing..." : "Test"
|
|
8768
8884
|
]
|
|
8769
8885
|
}
|
|
8770
8886
|
),
|
|
@@ -8775,7 +8891,7 @@ function ProviderCard({
|
|
|
8775
8891
|
size: "sm",
|
|
8776
8892
|
onClick: () => onEdit(provider),
|
|
8777
8893
|
className: "text-xs h-7 gap-1",
|
|
8778
|
-
disabled:
|
|
8894
|
+
disabled: isTestingValue,
|
|
8779
8895
|
children: [
|
|
8780
8896
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Pencil, { className: "size-3" }),
|
|
8781
8897
|
"Edit"
|
|
@@ -8789,7 +8905,7 @@ function ProviderCard({
|
|
|
8789
8905
|
size: "sm",
|
|
8790
8906
|
onClick: () => onDelete(provider.id),
|
|
8791
8907
|
className: "text-xs h-7 gap-1 text-destructive hover:text-destructive",
|
|
8792
|
-
disabled:
|
|
8908
|
+
disabled: isTestingValue,
|
|
8793
8909
|
children: [
|
|
8794
8910
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Trash2, { className: "size-3" }),
|
|
8795
8911
|
"Delete"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { u as useProviders, D as Dialog, 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-S9izw3ND.mjs";
|
|
3
|
+
import { ResponseView } from "./ResponseView-Dk8Op622.mjs";
|
|
4
|
+
import { C as CapturedLogSchema } from "./router-BJMaHkr1.mjs";
|
|
5
5
|
import "../_libs/jszip.mjs";
|
|
6
6
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
7
7
|
import { af as RotateCcw, ar as Braces, as as Minimize2 } from "../_libs/lucide-react.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { u as useProviders, 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-
|
|
3
|
-
import "./router-
|
|
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";
|
|
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,6 +1,6 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { g as getLogFormatAdapter, f as formatTokens, c as cn, 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-
|
|
3
|
-
import { s as safeGetOwnProperty } from "./router-
|
|
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";
|
|
4
4
|
import "../_libs/jszip.mjs";
|
|
5
5
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
6
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";
|
|
@@ -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-
|
|
3
|
-
import "./router-
|
|
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";
|
|
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-
|
|
1
|
+
import { P as ProxyViewerContainer } from "./ProxyViewerContainer-S9izw3ND.mjs";
|
|
2
2
|
import "../_libs/react.mjs";
|
|
3
|
-
import "./router-
|
|
3
|
+
import "./router-BJMaHkr1.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-
|
|
201
|
+
const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-C_HvRzgP.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-
|
|
779
|
+
const routerEntry = await import("./router-BJMaHkr1.mjs").then((n) => n.N);
|
|
780
780
|
const startEntry = await import("./start-HYkvq4Ni.mjs");
|
|
781
781
|
return { startEntry, routerEntry };
|
|
782
782
|
}
|