@tonyclaw/agent-inspector 2.0.20 → 2.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/{CompareDrawer-CUqYtaH3.js → CompareDrawer-ztKMd-FE.js} +1 -1
  3. package/.output/public/assets/ProxyViewerContainer-BT8Ilsbs.js +114 -0
  4. package/.output/public/assets/{ReplayDialog-CPXNEqVg.js → ReplayDialog-RNhfLSsW.js} +1 -1
  5. package/.output/public/assets/{RequestAnatomy-qkj8QgkY.js → RequestAnatomy-fsUI5HhH.js} +1 -1
  6. package/.output/public/assets/{ResponseView-BPNLZpuw.js → ResponseView-B3YTDBBX.js} +1 -1
  7. package/.output/public/assets/{StreamingChunkSequence-DGs-YFXI.js → StreamingChunkSequence-CbGqQ0mO.js} +1 -1
  8. package/.output/public/assets/_sessionId-C9cpyfLX.js +1 -0
  9. package/.output/public/assets/index-0mTTpvA2.js +1 -0
  10. package/.output/public/assets/{main-j3vS8rmP.js → main-lTQKpxiU.js} +2 -2
  11. package/.output/server/{_sessionId-Bc5Nohhe.mjs → _sessionId-DsF6LFJG.mjs} +2 -2
  12. package/.output/server/_ssr/{CompareDrawer-D0UewydM.mjs → CompareDrawer-DgdZcMpg.mjs} +2 -2
  13. package/.output/server/_ssr/{ProxyViewerContainer-BEUWt2eX.mjs → ProxyViewerContainer-DaFW1IVu.mjs} +97 -21
  14. package/.output/server/_ssr/{ReplayDialog-zaN-xMOw.mjs → ReplayDialog-BOaTX1ir.mjs} +3 -3
  15. package/.output/server/_ssr/{RequestAnatomy-BMomYged.mjs → RequestAnatomy-C-2_dejd.mjs} +2 -2
  16. package/.output/server/_ssr/{ResponseView-DSoHCyAM.mjs → ResponseView-BtRVhgzy.mjs} +2 -2
  17. package/.output/server/_ssr/{StreamingChunkSequence-pt3pZOOL.mjs → StreamingChunkSequence-DZaerowX.mjs} +2 -2
  18. package/.output/server/_ssr/{index-BCTKxcgV.mjs → index-B3_fgwFy.mjs} +2 -2
  19. package/.output/server/_ssr/index.mjs +2 -2
  20. package/.output/server/_ssr/{router-DpaDa5q5.mjs → router-CDOnHAWy.mjs} +190 -5
  21. package/.output/server/{_tanstack-start-manifest_v-EsubwO0A.mjs → _tanstack-start-manifest_v-Brrx1NEa.mjs} +1 -1
  22. package/.output/server/index.mjs +54 -54
  23. package/package.json +1 -1
  24. package/src/components/providers/ProviderForm.tsx +107 -16
  25. package/src/lib/providerModelMetadata.ts +67 -3
  26. package/src/proxy/formats/index.ts +1 -0
  27. package/src/proxy/formats/openai/index.ts +1 -0
  28. package/src/proxy/formats/openai/zhipuProvider.ts +31 -0
  29. package/src/proxy/providerImporters.ts +47 -0
  30. package/src/proxy/providers.ts +55 -0
  31. package/src/proxy/upstream.ts +25 -0
  32. package/.output/public/assets/ProxyViewerContainer-CX0-R0nn.js +0 -114
  33. package/.output/public/assets/_sessionId-CXtbrFTj.js +0 -1
  34. package/.output/public/assets/index-DrppF281.js +0 -1
@@ -1,5 +1,5 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports, a as React } from "../_libs/react.mjs";
2
- import { C as CapturedLogSchema, D as DEFAULT_CAPTURE_MODE, a as DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS, b as DEFAULT_TIME_DISPLAY_FORMAT, c as RuntimeConfigSchema, P as ProviderConfigSchema, r as requestFormatForPath, i as createPendingProviderTestResults, j as ProviderTestResultsSchema, k as createFailedProviderTestResults, M as MAX_SLOW_RESPONSE_THRESHOLD_SECONDS, T as TimeDisplayFormatSchema, m as maskApiKey, f as providerHasContextMetadata, h as findProviderModelMetadata, g as getSessionPath, p as parseOpenAIResponse, O as OpenAIRequestSchema, A as AnthropicResponseSchema$1, d as AnthropicRequestSchema, s as safeGetOwnProperty, l as resolveProviderContextWindow, K as KnowledgeCandidateSchema, e as stripClaudeCodeBillingHeader, n as isPlainRecord } from "./router-DpaDa5q5.mjs";
2
+ import { C as CapturedLogSchema, D as DEFAULT_CAPTURE_MODE, a as DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS, b as DEFAULT_TIME_DISPLAY_FORMAT, c as RuntimeConfigSchema, P as ProviderConfigSchema, r as requestFormatForPath, i as createPendingProviderTestResults, j as ProviderTestResultsSchema, k as createFailedProviderTestResults, M as MAX_SLOW_RESPONSE_THRESHOLD_SECONDS, T as TimeDisplayFormatSchema, m as maskApiKey, f as providerHasContextMetadata, h as findProviderModelMetadata, g as getSessionPath, p as parseOpenAIResponse, O as OpenAIRequestSchema, A as AnthropicResponseSchema$1, d as AnthropicRequestSchema, s as safeGetOwnProperty, l as resolveProviderContextWindow, K as KnowledgeCandidateSchema, e as stripClaudeCodeBillingHeader, n as isPlainRecord } from "./router-CDOnHAWy.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";
@@ -420,7 +420,7 @@ function useProviders() {
420
420
  mutate: response.mutate
421
421
  };
422
422
  }
423
- const version = "2.0.20";
423
+ const version = "2.0.21";
424
424
  const packageJson = {
425
425
  version
426
426
  };
@@ -1481,19 +1481,19 @@ function useCopyFeedback(text) {
1481
1481
  return { copied, copy };
1482
1482
  }
1483
1483
  const LazyCompareDrawer = reactExports.lazy(
1484
- () => import("./CompareDrawer-D0UewydM.mjs").then((m) => ({ default: m.CompareDrawer }))
1484
+ () => import("./CompareDrawer-DgdZcMpg.mjs").then((m) => ({ default: m.CompareDrawer }))
1485
1485
  );
1486
1486
  const LazyReplayDialog = reactExports.lazy(
1487
- () => import("./ReplayDialog-zaN-xMOw.mjs").then((m) => ({ default: m.ReplayDialog }))
1487
+ () => import("./ReplayDialog-BOaTX1ir.mjs").then((m) => ({ default: m.ReplayDialog }))
1488
1488
  );
1489
1489
  const LazyRequestAnatomy = reactExports.lazy(
1490
- () => import("./RequestAnatomy-BMomYged.mjs").then((m) => ({ default: m.RequestAnatomy }))
1490
+ () => import("./RequestAnatomy-C-2_dejd.mjs").then((m) => ({ default: m.RequestAnatomy }))
1491
1491
  );
1492
1492
  const LazyResponseView = reactExports.lazy(
1493
- () => import("./ResponseView-DSoHCyAM.mjs").then((m) => ({ default: m.ResponseView }))
1493
+ () => import("./ResponseView-BtRVhgzy.mjs").then((m) => ({ default: m.ResponseView }))
1494
1494
  );
1495
1495
  const LazyStreamingChunkSequence = reactExports.lazy(
1496
- () => import("./StreamingChunkSequence-pt3pZOOL.mjs").then((m) => ({
1496
+ () => import("./StreamingChunkSequence-DZaerowX.mjs").then((m) => ({
1497
1497
  default: m.StreamingChunkSequence
1498
1498
  }))
1499
1499
  );
@@ -5985,19 +5985,73 @@ function ProviderCard({
5985
5985
  }
5986
5986
  );
5987
5987
  }
5988
+ const ZHIPU_PROVIDER_KEYWORDS = ["zhipu", "zhipuai", "bigmodel", "z.ai", "zai", "glm"];
5989
+ const ZHIPU_CODING_PROVIDER_KEYWORDS = [
5990
+ "zhipu coding",
5991
+ "glm coding",
5992
+ "bigmodel coding",
5993
+ "z.ai coding",
5994
+ "zai coding"
5995
+ ];
5988
5996
  const KNOWN_PROVIDER_PRESETS = {
5989
5997
  deepseek: {
5990
- format: "openai",
5991
- baseUrl: "https://api.deepseek.com"
5998
+ openaiBaseUrl: "https://api.deepseek.com"
5992
5999
  },
5993
6000
  minimax: {
5994
- format: "anthropic",
5995
- baseUrl: "https://api.minimaxi.com/anthropic",
6001
+ anthropicBaseUrl: "https://api.minimaxi.com/anthropic",
5996
6002
  apiDocsUrl: "https://platform.minimaxi.com/docs/api-reference/api-overview"
5997
6003
  },
6004
+ "zhipu coding": {
6005
+ anthropicBaseUrl: "https://open.bigmodel.cn/api/anthropic",
6006
+ openaiBaseUrl: "https://open.bigmodel.cn/api/coding/paas/v4",
6007
+ apiDocsUrl: "https://docs.bigmodel.cn/cn/coding-plan/quick-start"
6008
+ },
6009
+ "glm coding": {
6010
+ anthropicBaseUrl: "https://open.bigmodel.cn/api/anthropic",
6011
+ openaiBaseUrl: "https://open.bigmodel.cn/api/coding/paas/v4",
6012
+ apiDocsUrl: "https://docs.bigmodel.cn/cn/coding-plan/quick-start"
6013
+ },
6014
+ "bigmodel coding": {
6015
+ anthropicBaseUrl: "https://open.bigmodel.cn/api/anthropic",
6016
+ openaiBaseUrl: "https://open.bigmodel.cn/api/coding/paas/v4",
6017
+ apiDocsUrl: "https://docs.bigmodel.cn/cn/coding-plan/quick-start"
6018
+ },
6019
+ "z.ai coding": {
6020
+ anthropicBaseUrl: "https://open.bigmodel.cn/api/anthropic",
6021
+ openaiBaseUrl: "https://open.bigmodel.cn/api/coding/paas/v4",
6022
+ apiDocsUrl: "https://docs.bigmodel.cn/cn/coding-plan/quick-start"
6023
+ },
6024
+ "zai coding": {
6025
+ anthropicBaseUrl: "https://open.bigmodel.cn/api/anthropic",
6026
+ openaiBaseUrl: "https://open.bigmodel.cn/api/coding/paas/v4",
6027
+ apiDocsUrl: "https://docs.bigmodel.cn/cn/coding-plan/quick-start"
6028
+ },
6029
+ zhipu: {
6030
+ openaiBaseUrl: "https://open.bigmodel.cn/api/paas/v4",
6031
+ apiDocsUrl: "https://docs.bigmodel.cn/cn/guide/develop/openai/introduction"
6032
+ },
6033
+ zhipuai: {
6034
+ openaiBaseUrl: "https://open.bigmodel.cn/api/paas/v4",
6035
+ apiDocsUrl: "https://docs.bigmodel.cn/cn/guide/develop/openai/introduction"
6036
+ },
6037
+ bigmodel: {
6038
+ openaiBaseUrl: "https://open.bigmodel.cn/api/paas/v4",
6039
+ apiDocsUrl: "https://docs.bigmodel.cn/cn/guide/develop/openai/introduction"
6040
+ },
6041
+ "z.ai": {
6042
+ openaiBaseUrl: "https://open.bigmodel.cn/api/paas/v4",
6043
+ apiDocsUrl: "https://docs.bigmodel.cn/cn/guide/develop/openai/introduction"
6044
+ },
6045
+ zai: {
6046
+ openaiBaseUrl: "https://open.bigmodel.cn/api/paas/v4",
6047
+ apiDocsUrl: "https://docs.bigmodel.cn/cn/guide/develop/openai/introduction"
6048
+ },
6049
+ glm: {
6050
+ openaiBaseUrl: "https://open.bigmodel.cn/api/paas/v4",
6051
+ apiDocsUrl: "https://docs.bigmodel.cn/cn/guide/develop/openai/introduction"
6052
+ },
5998
6053
  alibaba: {
5999
- format: "openai",
6000
- baseUrl: "https://dashscope.aliyuncs.com/compatible-mode"
6054
+ openaiBaseUrl: "https://dashscope.aliyuncs.com/compatible-mode"
6001
6055
  }
6002
6056
  };
6003
6057
  const MINIMAX_MODELS = [
@@ -6011,6 +6065,20 @@ const MINIMAX_MODELS = [
6011
6065
  "MiniMax M2"
6012
6066
  ];
6013
6067
  const ALIBABA_MODELS = ["glm-5", "glm-5.1", "glm-5.2", "qwen3.6-plus", "qwen3.7-max"];
6068
+ const ZHIPU_MODELS = [
6069
+ "glm-5.2",
6070
+ "glm-5.1",
6071
+ "glm-5",
6072
+ "glm-5-turbo",
6073
+ "glm-4.7",
6074
+ "glm-4.7-flashx",
6075
+ "glm-4.6",
6076
+ "glm-4.5",
6077
+ "glm-4.5-air",
6078
+ "glm-4.5-x",
6079
+ "glm-4.5-airx",
6080
+ "glm-4.5-flash"
6081
+ ];
6014
6082
  function emptyMetadataDraft() {
6015
6083
  return { contextWindow: "", outputLimit: "" };
6016
6084
  }
@@ -6081,6 +6149,10 @@ function ProviderForm({ provider, onSubmit, onCancel }) {
6081
6149
  const [manualOpenaiUrlOverride, setManualOpenaiUrlOverride] = reactExports.useState(false);
6082
6150
  const isMiniMax = name.toLowerCase().includes("minimax");
6083
6151
  const isAlibaba = name.toLowerCase().includes("alibaba");
6152
+ const isZhipu = [...ZHIPU_PROVIDER_KEYWORDS, ...ZHIPU_CODING_PROVIDER_KEYWORDS].some(
6153
+ (keyword) => name.toLowerCase().includes(keyword)
6154
+ );
6155
+ const suggestedModels = isMiniMax ? MINIMAX_MODELS : isZhipu ? ZHIPU_MODELS : isAlibaba ? ALIBABA_MODELS : [];
6084
6156
  const hasContextMetadata = provider?.modelMetadata?.some((metadata) => metadata.contextWindow !== void 0) ?? false;
6085
6157
  function handleCopy() {
6086
6158
  navigator.clipboard.writeText(apiKey).catch(() => {
@@ -6108,10 +6180,11 @@ function ProviderForm({ provider, onSubmit, onCancel }) {
6108
6180
  const lowerName = name.toLowerCase();
6109
6181
  for (const [keyword, preset] of Object.entries(KNOWN_PROVIDER_PRESETS)) {
6110
6182
  if (lowerName.includes(keyword)) {
6111
- if (preset.format === "anthropic" && !manualAnthropicUrlOverride) {
6112
- setAnthropicBaseUrl(preset.baseUrl);
6113
- } else if (preset.format === "openai" && !manualOpenaiUrlOverride) {
6114
- setOpenaiBaseUrl(preset.baseUrl);
6183
+ if (preset.anthropicBaseUrl !== void 0 && !manualAnthropicUrlOverride) {
6184
+ setAnthropicBaseUrl(preset.anthropicBaseUrl);
6185
+ }
6186
+ if (preset.openaiBaseUrl !== void 0 && !manualOpenaiUrlOverride) {
6187
+ setOpenaiBaseUrl(preset.openaiBaseUrl);
6115
6188
  }
6116
6189
  if (preset.apiDocsUrl !== void 0 && !apiDocsUrl) {
6117
6190
  setApiDocsUrl(preset.apiDocsUrl);
@@ -6122,6 +6195,9 @@ function ProviderForm({ provider, onSubmit, onCancel }) {
6122
6195
  if (keyword === "alibaba" && models.length === 1 && models[0] === "") {
6123
6196
  setModels([ALIBABA_MODELS[0] ?? ""]);
6124
6197
  }
6198
+ if ((ZHIPU_PROVIDER_KEYWORDS.includes(keyword) || ZHIPU_CODING_PROVIDER_KEYWORDS.includes(keyword)) && models.length === 1 && models[0] === "") {
6199
+ setModels([ZHIPU_MODELS[0] ?? ""]);
6200
+ }
6125
6201
  break;
6126
6202
  }
6127
6203
  }
@@ -6295,7 +6371,7 @@ function ProviderForm({ provider, onSubmit, onCancel }) {
6295
6371
  }
6296
6372
  ),
6297
6373
  errors.modelMetadataUrl !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-destructive", children: errors.modelMetadataUrl }),
6298
- modelMetadataUrl.trim() === "" && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "rounded-md border border-border bg-muted/20 px-3 py-2 text-xs text-muted-foreground", children: "Built-in limits cover DeepSeek v4 pro/flash and MiniMax M3/M2.7/M2.5/M2.1. Use a registry URL for private or custom model limits." }),
6374
+ modelMetadataUrl.trim() === "" && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "rounded-md border border-border bg-muted/20 px-3 py-2 text-xs text-muted-foreground", children: "Built-in limits cover DeepSeek v4 pro/flash, MiniMax M3/M2.7/M2.5/M2.1, and GLM coding models. Use a registry URL for private or custom model limits." }),
6299
6375
  provider !== void 0 && !hasContextMetadata && modelMetadataUrl.trim() === "" && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-amber-400", children: "This provider has no matching context metadata yet." }),
6300
6376
  modelMetadataUrl.trim() !== "" && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-muted-foreground", children: "Agent Inspector will refresh model limits from this JSON registry after save." })
6301
6377
  ] }),
@@ -6368,11 +6444,11 @@ function ProviderForm({ provider, onSubmit, onCancel }) {
6368
6444
  type: "text",
6369
6445
  value: m,
6370
6446
  onChange: (e) => updateModel(i, e.target.value),
6371
- placeholder: isMiniMax || isAlibaba ? "Type or select a model..." : "Model name",
6447
+ placeholder: suggestedModels.length > 0 ? "Type or select a model..." : "Model name",
6372
6448
  className: "w-full rounded-md border border-input bg-background px-4 py-3 pr-8 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:border-ring focus-visible:outline-ring focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50"
6373
6449
  }
6374
6450
  ),
6375
- (isMiniMax || isAlibaba) && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
6451
+ suggestedModels.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
6376
6452
  /* @__PURE__ */ jsxRuntimeExports.jsx(
6377
6453
  "button",
6378
6454
  {
@@ -6383,7 +6459,7 @@ function ProviderForm({ provider, onSubmit, onCancel }) {
6383
6459
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronDown, { className: "size-4" })
6384
6460
  }
6385
6461
  ),
6386
- openModelDropdown === i && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute left-0 right-0 top-full mt-1 z-50 bg-popover border border-border rounded-md shadow-md max-h-48 overflow-y-auto", children: (isMiniMax ? MINIMAX_MODELS : ALIBABA_MODELS).map((opt) => /* @__PURE__ */ jsxRuntimeExports.jsx(
6462
+ openModelDropdown === i && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute left-0 right-0 top-full mt-1 z-50 bg-popover border border-border rounded-md shadow-md max-h-48 overflow-y-auto", children: suggestedModels.map((opt) => /* @__PURE__ */ jsxRuntimeExports.jsx(
6387
6463
  "button",
6388
6464
  {
6389
6465
  type: "button",
@@ -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, b as DialogContent, d as DialogHeader, e as DialogTitle, T as Tabs, h as TabsList, i as TabsTrigger, j as TabsContent, k as Button, l as TooltipProvider, m as Tooltip, n as TooltipTrigger, o as TooltipContent, p as dispatchLogFocusRequest } from "./ProxyViewerContainer-BEUWt2eX.mjs";
3
- import { ResponseView } from "./ResponseView-DSoHCyAM.mjs";
4
- import { C as CapturedLogSchema } from "./router-DpaDa5q5.mjs";
2
+ import { u as useProviders, D as Dialog, b as DialogContent, d as DialogHeader, e as DialogTitle, T as Tabs, h as TabsList, i as TabsTrigger, j as TabsContent, k as Button, l as TooltipProvider, m as Tooltip, n as TooltipTrigger, o as TooltipContent, p as dispatchLogFocusRequest } from "./ProxyViewerContainer-DaFW1IVu.mjs";
3
+ import { ResponseView } from "./ResponseView-BtRVhgzy.mjs";
4
+ import { C as CapturedLogSchema } from "./router-CDOnHAWy.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import "../_libs/modelcontextprotocol__server.mjs";
7
7
  import { $ as RotateCcw, ac as Braces, ad 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, q as analyzeContextIntelligence, f as formatTokens, l as TooltipProvider, c as cn, m as Tooltip, n as TooltipTrigger, o as TooltipContent, S as SegmentBar, R as ROLE_COLOR_CLASSES, A as ANATOMY_ROLE_LABELS, s as formatContextWindowTokens, C as CONTEXT_USAGE_THRESHOLDS } from "./ProxyViewerContainer-BEUWt2eX.mjs";
3
- import "./router-DpaDa5q5.mjs";
2
+ import { u as useProviders, q as analyzeContextIntelligence, f as formatTokens, l as TooltipProvider, c as cn, m as Tooltip, n as TooltipTrigger, o as TooltipContent, S as SegmentBar, R as ROLE_COLOR_CLASSES, A as ANATOMY_ROLE_LABELS, s as formatContextWindowTokens, C as CONTEXT_USAGE_THRESHOLDS } from "./ProxyViewerContainer-DaFW1IVu.mjs";
3
+ import "./router-CDOnHAWy.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import { ae as Info, b as ChevronDown, m 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, t as getStatusCategory, B as Badge, v as Collapsible, w as CollapsibleTrigger, x as CollapsibleContent, y as ScrollArea, z as JsonViewer, E as safeJsonValue } from "./ProxyViewerContainer-BEUWt2eX.mjs";
3
- import "./router-DpaDa5q5.mjs";
2
+ import { g as getLogFormatAdapter, f as formatTokens, c as cn, t as getStatusCategory, B as Badge, v as Collapsible, w as CollapsibleTrigger, x as CollapsibleContent, y as ScrollArea, z as JsonViewer, E as safeJsonValue } from "./ProxyViewerContainer-DaFW1IVu.mjs";
3
+ import "./router-CDOnHAWy.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import { Z as Zap, o as TriangleAlert, af as CircleStop, B as Brain, b as ChevronDown, m as ChevronRight, T as Terminal } from "../_libs/lucide-react.mjs";
@@ -1,6 +1,6 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
2
- import { l as TooltipProvider, m as Tooltip, n as TooltipTrigger, B as Badge, o as TooltipContent, z as JsonViewer } from "./ProxyViewerContainer-BEUWt2eX.mjs";
3
- import "./router-DpaDa5q5.mjs";
2
+ import { l as TooltipProvider, m as Tooltip, n as TooltipTrigger, B as Badge, o as TooltipContent, z as JsonViewer } from "./ProxyViewerContainer-DaFW1IVu.mjs";
3
+ import "./router-CDOnHAWy.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import { b as ChevronDown, m as ChevronRight, L as LoaderCircle } from "../_libs/lucide-react.mjs";
@@ -1,6 +1,6 @@
1
- import { P as ProxyViewerContainer } from "./ProxyViewerContainer-BEUWt2eX.mjs";
1
+ import { P as ProxyViewerContainer } from "./ProxyViewerContainer-DaFW1IVu.mjs";
2
2
  import "../_libs/react.mjs";
3
- import "./router-DpaDa5q5.mjs";
3
+ import "./router-CDOnHAWy.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-EsubwO0A.mjs");
201
+ const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-Brrx1NEa.mjs");
202
202
  const startManifest = tsrStartManifest();
203
203
  const rootRoute = startManifest.routes[rootRouteId] = startManifest.routes[rootRouteId] || {};
204
204
  rootRoute.assets = rootRoute.assets || [];
@@ -767,7 +767,7 @@ let entriesPromise;
767
767
  let baseManifestPromise;
768
768
  let cachedFinalManifestPromise;
769
769
  async function loadEntries() {
770
- const routerEntry = await import("./router-DpaDa5q5.mjs").then((n) => n.o);
770
+ const routerEntry = await import("./router-CDOnHAWy.mjs").then((n) => n.o);
771
771
  const startEntry = await import("./start-HYkvq4Ni.mjs");
772
772
  return { startEntry, routerEntry };
773
773
  }
@@ -93,7 +93,7 @@ function RootDocument({ children }) {
93
93
  ] })
94
94
  ] });
95
95
  }
96
- const $$splitComponentImporter$1 = () => import("./index-BCTKxcgV.mjs");
96
+ const $$splitComponentImporter$1 = () => import("./index-B3_fgwFy.mjs");
97
97
  const Route$r = createFileRoute("/")({
98
98
  component: lazyRouteComponent($$splitComponentImporter$1, "component")
99
99
  });
@@ -136,7 +136,7 @@ function decodeSessionIdFromPath(encoded) {
136
136
  function getSessionPath(sessionId) {
137
137
  return `/session/${encodeSessionIdForPath(sessionId)}`;
138
138
  }
139
- const $$splitComponentImporter = () => import("../_sessionId-Bc5Nohhe.mjs");
139
+ const $$splitComponentImporter = () => import("../_sessionId-DsF6LFJG.mjs");
140
140
  const Route$q = createFileRoute("/session/$sessionId")({
141
141
  component: lazyRouteComponent($$splitComponentImporter, "component"),
142
142
  parseParams: (params) => ({
@@ -2406,6 +2406,22 @@ const openaiProvider = {
2406
2406
  }
2407
2407
  };
2408
2408
  registry.register(openaiProvider);
2409
+ const DEFAULT_ZHIPU_UPSTREAM = "https://open.bigmodel.cn/api/paas/v4";
2410
+ const ZHIPU_MODEL_PREFIXES$1 = ["glm-", "charglm-", "cogview-", "embedding-", "rerank-"];
2411
+ const zhipuProvider = {
2412
+ name: "zhipu",
2413
+ matches(model) {
2414
+ const normalized = model.toLowerCase().replace(/\s+/g, "-");
2415
+ return ZHIPU_MODEL_PREFIXES$1.some((prefix) => normalized.startsWith(prefix));
2416
+ },
2417
+ getUpstreamBase(_isChatCompletions, providerConfig) {
2418
+ return providerConfig?.baseUrl ?? DEFAULT_ZHIPU_UPSTREAM;
2419
+ },
2420
+ extractStream(raw, log, fallbackModel, collectChunks) {
2421
+ return extractOpenAIStream(raw, log, fallbackModel, collectChunks);
2422
+ }
2423
+ };
2424
+ registry.register(zhipuProvider);
2409
2425
  const DEFAULT_ALIBABA_UPSTREAM = "https://dashscope.aliyuncs.com/compatible-mode/v1";
2410
2426
  const alibabaProvider = {
2411
2427
  name: "alibaba",
@@ -2483,6 +2499,10 @@ const HF_MINIMAX_M3_URL = "https://huggingface.co/MiniMaxAI/MiniMax-M3";
2483
2499
  const HF_MINIMAX_M2_7_URL = "https://huggingface.co/MiniMaxAI/MiniMax-M2.7";
2484
2500
  const HF_MINIMAX_M2_5_URL = "https://huggingface.co/MiniMaxAI/MiniMax-M2.5";
2485
2501
  const HF_MINIMAX_M2_1_URL = "https://huggingface.co/MiniMaxAI/MiniMax-M2.1";
2502
+ const ZHIPU_GLM_4_5_URL = "https://docs.bigmodel.cn/cn/guide/models/text/glm-4.5";
2503
+ const ZHIPU_GLM_4_6_URL = "https://docs.bigmodel.cn/cn/guide/models/text/glm-4.6";
2504
+ const ZHIPU_GLM_4_7_URL = "https://docs.bigmodel.cn/cn/guide/models/text/glm-4.7";
2505
+ const ZHIPU_GLM_5_TURBO_URL = "https://docs.bigmodel.cn/cn/guide/models/text/glm-5-turbo";
2486
2506
  const HF_GLM_5_URL = "https://huggingface.co/zai-org/GLM-5";
2487
2507
  const HF_GLM_5_1_URL = "https://huggingface.co/zai-org/GLM-5.1";
2488
2508
  const HF_GLM_5_2_URL = "https://huggingface.co/zai-org/GLM-5.2";
@@ -2557,10 +2577,63 @@ const BUILTIN_PROVIDER_MODEL_REGISTRY = {
2557
2577
  ]
2558
2578
  },
2559
2579
  {
2560
- name: "GLM",
2561
- aliases: ["glm", "zai", "zhipu", "bigmodel"],
2562
- baseUrls: [],
2580
+ name: "ZhipuAI",
2581
+ aliases: ["glm", "zai", "zhipu", "zhipuai", "bigmodel"],
2582
+ baseUrls: [
2583
+ "https://open.bigmodel.cn/api/paas/v4",
2584
+ "https://open.bigmodel.cn/api/coding/paas/v4",
2585
+ "https://open.bigmodel.cn/api/anthropic"
2586
+ ],
2563
2587
  models: [
2588
+ {
2589
+ id: "glm-4.5",
2590
+ aliases: ["GLM-4.5"],
2591
+ contextWindow: 131072,
2592
+ outputLimit: 98304,
2593
+ sourceUrl: ZHIPU_GLM_4_5_URL
2594
+ },
2595
+ {
2596
+ id: "glm-4.5-air",
2597
+ aliases: ["GLM-4.5-Air"],
2598
+ contextWindow: 131072,
2599
+ outputLimit: 98304,
2600
+ sourceUrl: ZHIPU_GLM_4_5_URL
2601
+ },
2602
+ {
2603
+ id: "glm-4.5-x",
2604
+ aliases: ["GLM-4.5-X"],
2605
+ contextWindow: 131072,
2606
+ outputLimit: 98304,
2607
+ sourceUrl: ZHIPU_GLM_4_5_URL
2608
+ },
2609
+ {
2610
+ id: "glm-4.5-airx",
2611
+ aliases: ["GLM-4.5-AirX"],
2612
+ contextWindow: 131072,
2613
+ outputLimit: 98304,
2614
+ sourceUrl: ZHIPU_GLM_4_5_URL
2615
+ },
2616
+ {
2617
+ id: "glm-4.5-flash",
2618
+ aliases: ["GLM-4.5-Flash"],
2619
+ contextWindow: 131072,
2620
+ outputLimit: 98304,
2621
+ sourceUrl: ZHIPU_GLM_4_5_URL
2622
+ },
2623
+ {
2624
+ id: "glm-4.6",
2625
+ aliases: ["GLM-4.6"],
2626
+ contextWindow: 202752,
2627
+ outputLimit: 65536,
2628
+ sourceUrl: ZHIPU_GLM_4_6_URL
2629
+ },
2630
+ {
2631
+ id: "glm-4.7",
2632
+ aliases: ["GLM-4.7"],
2633
+ contextWindow: 202752,
2634
+ outputLimit: 131072,
2635
+ sourceUrl: ZHIPU_GLM_4_7_URL
2636
+ },
2564
2637
  {
2565
2638
  id: "glm-5",
2566
2639
  aliases: ["GLM-5"],
@@ -2578,6 +2651,13 @@ const BUILTIN_PROVIDER_MODEL_REGISTRY = {
2578
2651
  aliases: ["GLM-5.2"],
2579
2652
  contextWindow: 1048576,
2580
2653
  sourceUrl: HF_GLM_5_2_URL
2654
+ },
2655
+ {
2656
+ id: "glm-5-turbo",
2657
+ aliases: ["GLM-5-Turbo"],
2658
+ contextWindow: 202752,
2659
+ outputLimit: 131072,
2660
+ sourceUrl: ZHIPU_GLM_5_TURBO_URL
2581
2661
  }
2582
2662
  ]
2583
2663
  }
@@ -3181,6 +3261,47 @@ function getModelUsageName(model, providerName) {
3181
3261
  function normalizeModelName(name) {
3182
3262
  return name.toLowerCase().replace(/\s+/g, "-");
3183
3263
  }
3264
+ const ZHIPU_MODEL_PREFIXES = ["glm-", "charglm-", "cogview-", "embedding-", "rerank-"];
3265
+ const ZHIPU_PROVIDER_ALIASES = ["zhipu", "zhipuai", "bigmodel", "zai", "glm"];
3266
+ const ZHIPU_BASE_URL_MARKERS = [
3267
+ "open.bigmodel.cn/api/paas/v4",
3268
+ "open.bigmodel.cn/api/coding/paas/v4",
3269
+ "open.bigmodel.cn/api/anthropic"
3270
+ ];
3271
+ function normalizeProviderAlias(name) {
3272
+ return name.toLowerCase().replace(/[^a-z0-9]/g, "");
3273
+ }
3274
+ function providerRoutingUrls(provider) {
3275
+ const urls = [];
3276
+ if (provider.anthropicBaseUrl !== void 0 && provider.anthropicBaseUrl.trim() !== "") {
3277
+ urls.push(provider.anthropicBaseUrl);
3278
+ }
3279
+ if (provider.openaiBaseUrl !== void 0 && provider.openaiBaseUrl.trim() !== "") {
3280
+ urls.push(provider.openaiBaseUrl);
3281
+ }
3282
+ if (provider.baseUrl !== void 0 && provider.baseUrl.trim() !== "") {
3283
+ urls.push(provider.baseUrl);
3284
+ }
3285
+ return urls;
3286
+ }
3287
+ function isZhipuProvider(provider) {
3288
+ const normalizedName = normalizeProviderAlias(provider.name);
3289
+ const nameMatches = ZHIPU_PROVIDER_ALIASES.some((alias) => {
3290
+ const normalizedAlias = normalizeProviderAlias(alias);
3291
+ return normalizedName.includes(normalizedAlias) || normalizedAlias.includes(normalizedName);
3292
+ });
3293
+ if (nameMatches) return true;
3294
+ return providerRoutingUrls(provider).some((url) => {
3295
+ const normalizedUrl = url.toLowerCase().replace(/\/+$/, "");
3296
+ return ZHIPU_BASE_URL_MARKERS.some((marker) => normalizedUrl.includes(marker));
3297
+ });
3298
+ }
3299
+ function modelMatchesKnownProviderPrefix(modelNormalized, provider) {
3300
+ if (isZhipuProvider(provider)) {
3301
+ return ZHIPU_MODEL_PREFIXES.some((prefix) => modelNormalized.startsWith(prefix));
3302
+ }
3303
+ return false;
3304
+ }
3184
3305
  function findProviderByModel(model) {
3185
3306
  const providers = getProviders();
3186
3307
  const modelLower = model.toLowerCase();
@@ -3190,6 +3311,9 @@ function findProviderByModel(model) {
3190
3311
  if (modelLower.startsWith(providerPrefix)) {
3191
3312
  return provider;
3192
3313
  }
3314
+ if (modelMatchesKnownProviderPrefix(modelNormalized, provider)) {
3315
+ return provider;
3316
+ }
3193
3317
  const modelList = provider.models ?? (provider.model !== void 0 ? [provider.model] : []);
3194
3318
  for (const m of modelList) {
3195
3319
  if (m !== "" && modelNormalized === normalizeModelName(m)) {
@@ -4052,11 +4176,26 @@ function selectUpstreamBase(route, provider) {
4052
4176
  }
4053
4177
  function buildUpstreamUrl(upstreamBase, normalizedPath) {
4054
4178
  const base = upstreamBase.endsWith("/") ? upstreamBase.slice(0, -1) : upstreamBase;
4179
+ if (isZhipuVersionedOpenAIBase(base) && isVersionedChatCompletionsPath(normalizedPath)) {
4180
+ return base + normalizedPath.slice(3);
4181
+ }
4055
4182
  if (base.endsWith("/v1") && normalizedPath.startsWith("/v1/")) {
4056
4183
  return base + normalizedPath.slice(3);
4057
4184
  }
4058
4185
  return base + normalizedPath;
4059
4186
  }
4187
+ function isVersionedChatCompletionsPath(normalizedPath) {
4188
+ return normalizedPath === PATH_V1_CHAT_COMPLETIONS || normalizedPath.startsWith(`${PATH_V1_CHAT_COMPLETIONS}?`) || normalizedPath.startsWith(`${PATH_V1_CHAT_COMPLETIONS}/`);
4189
+ }
4190
+ function isZhipuVersionedOpenAIBase(base) {
4191
+ try {
4192
+ const parsed = new URL(base);
4193
+ const path2 = parsed.pathname.replace(/\/+$/, "");
4194
+ return parsed.hostname === "open.bigmodel.cn" && (path2 === "/api/paas/v4" || path2 === "/api/coding/paas/v4");
4195
+ } catch {
4196
+ return false;
4197
+ }
4198
+ }
4060
4199
  function setUpstreamHost(headers, upstreamBase) {
4061
4200
  try {
4062
4201
  headers.set(HEADER_HOST, new URL(upstreamBase).host);
@@ -5127,6 +5266,9 @@ const Route$i = createFileRoute("/api/config")({
5127
5266
  }
5128
5267
  }
5129
5268
  });
5269
+ const ZHIPU_OPENAI_BASE_URL = "https://open.bigmodel.cn/api/paas/v4";
5270
+ const ZHIPU_CODING_OPENAI_BASE_URL = "https://open.bigmodel.cn/api/coding/paas/v4";
5271
+ const ZHIPU_CODING_ANTHROPIC_BASE_URL = "https://open.bigmodel.cn/api/anthropic";
5130
5272
  function readJsonSafe(filePath) {
5131
5273
  try {
5132
5274
  if (!existsSync(filePath)) return null;
@@ -5156,6 +5298,9 @@ const KNOWN_PROVIDER_NAMES = {
5156
5298
  azure: "Azure",
5157
5299
  moonshot: "Moonshot",
5158
5300
  zhipu: "ZhipuAI",
5301
+ zhipuai: "ZhipuAI",
5302
+ bigmodel: "ZhipuAI",
5303
+ zai: "Z.AI",
5159
5304
  qwen: "Qwen",
5160
5305
  baichuan: "Baichuan",
5161
5306
  iflytek: "iFlytek",
@@ -5435,6 +5580,46 @@ function detectMiMoCodeProviders() {
5435
5580
  anthropicBaseUrl: "",
5436
5581
  openaiBaseUrl: "https://api.together.xyz",
5437
5582
  format: "openai"
5583
+ },
5584
+ zhipu: {
5585
+ anthropicBaseUrl: "",
5586
+ openaiBaseUrl: ZHIPU_OPENAI_BASE_URL,
5587
+ format: "openai"
5588
+ },
5589
+ zhipuai: {
5590
+ anthropicBaseUrl: "",
5591
+ openaiBaseUrl: ZHIPU_OPENAI_BASE_URL,
5592
+ format: "openai"
5593
+ },
5594
+ bigmodel: {
5595
+ anthropicBaseUrl: "",
5596
+ openaiBaseUrl: ZHIPU_OPENAI_BASE_URL,
5597
+ format: "openai"
5598
+ },
5599
+ zai: {
5600
+ anthropicBaseUrl: "",
5601
+ openaiBaseUrl: ZHIPU_OPENAI_BASE_URL,
5602
+ format: "openai"
5603
+ },
5604
+ glm: {
5605
+ anthropicBaseUrl: ZHIPU_CODING_ANTHROPIC_BASE_URL,
5606
+ openaiBaseUrl: ZHIPU_CODING_OPENAI_BASE_URL,
5607
+ format: "anthropic"
5608
+ },
5609
+ "glm-coding-plan": {
5610
+ anthropicBaseUrl: ZHIPU_CODING_ANTHROPIC_BASE_URL,
5611
+ openaiBaseUrl: ZHIPU_CODING_OPENAI_BASE_URL,
5612
+ format: "anthropic"
5613
+ },
5614
+ "zhipu-coding-plan": {
5615
+ anthropicBaseUrl: ZHIPU_CODING_ANTHROPIC_BASE_URL,
5616
+ openaiBaseUrl: ZHIPU_CODING_OPENAI_BASE_URL,
5617
+ format: "anthropic"
5618
+ },
5619
+ "zai-coding-plan": {
5620
+ anthropicBaseUrl: ZHIPU_CODING_ANTHROPIC_BASE_URL,
5621
+ openaiBaseUrl: ZHIPU_CODING_OPENAI_BASE_URL,
5622
+ format: "anthropic"
5438
5623
  }
5439
5624
  };
5440
5625
  for (const [key, cred] of Object.entries(auth)) {
@@ -1,4 +1,4 @@
1
- const tsrStartManifest = () => ({ "routes": { "__root__": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/__root.tsx", "children": ["/", "/api/config", "/api/health", "/api/logs", "/api/mcp", "/api/models", "/api/providers", "/api/sessions", "/proxy/$", "/session/$sessionId", "/api/knowledge/candidates", "/api/knowledge/project-context", "/api/knowledge/search", "/api/knowledge/sessions/$sessionId/candidates"], "preloads": ["/assets/main-j3vS8rmP.js"], "assets": [] }, "/": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/index.tsx", "assets": [], "preloads": ["/assets/index-DrppF281.js", "/assets/ProxyViewerContainer-CX0-R0nn.js"] }, "/api/config": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/config.ts", "children": ["/api/config/paths"] }, "/api/health": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/health.ts" }, "/api/logs": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.ts", "children": ["/api/logs/$id", "/api/logs/stream"] }, "/api/mcp": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/mcp.ts" }, "/api/models": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/models.ts" }, "/api/providers": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.ts", "children": ["/api/providers/$providerId", "/api/providers/export", "/api/providers/import", "/api/providers/scan"] }, "/api/sessions": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/sessions.ts" }, "/proxy/$": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/proxy/$.ts" }, "/session/$sessionId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/session/$sessionId.tsx", "assets": [], "preloads": ["/assets/_sessionId-CXtbrFTj.js", "/assets/ProxyViewerContainer-CX0-R0nn.js"] }, "/api/config/paths": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/config.paths.ts" }, "/api/knowledge/candidates": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.candidates.ts", "children": ["/api/knowledge/candidates/$candidateId"] }, "/api/knowledge/project-context": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.project-context.ts" }, "/api/knowledge/search": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.search.ts" }, "/api/logs/$id": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.$id.ts", "children": ["/api/logs/$id/chunks", "/api/logs/$id/replay"] }, "/api/logs/stream": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.stream.ts" }, "/api/providers/$providerId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.ts", "children": ["/api/providers/$providerId/model-metadata", "/api/providers/$providerId/test"] }, "/api/providers/export": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.export.ts" }, "/api/providers/import": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.import.ts" }, "/api/providers/scan": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.scan.ts" }, "/api/knowledge/candidates/$candidateId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.candidates.$candidateId.ts", "children": ["/api/knowledge/candidates/$candidateId/promote"] }, "/api/logs/$id/chunks": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.$id.chunks.ts" }, "/api/logs/$id/replay": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.$id.replay.ts" }, "/api/providers/$providerId/model-metadata": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.model-metadata.ts" }, "/api/providers/$providerId/test": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.test.ts", "children": ["/api/providers/$providerId/test/log"] }, "/api/knowledge/candidates/$candidateId/promote": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.candidates.$candidateId.promote.ts" }, "/api/knowledge/sessions/$sessionId/candidates": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.sessions.$sessionId.candidates.ts" }, "/api/providers/$providerId/test/log": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.test.log.ts" } }, "clientEntry": "/assets/main-j3vS8rmP.js" });
1
+ const tsrStartManifest = () => ({ "routes": { "__root__": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/__root.tsx", "children": ["/", "/api/config", "/api/health", "/api/logs", "/api/mcp", "/api/models", "/api/providers", "/api/sessions", "/proxy/$", "/session/$sessionId", "/api/knowledge/candidates", "/api/knowledge/project-context", "/api/knowledge/search", "/api/knowledge/sessions/$sessionId/candidates"], "preloads": ["/assets/main-lTQKpxiU.js"], "assets": [] }, "/": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/index.tsx", "assets": [], "preloads": ["/assets/index-0mTTpvA2.js", "/assets/ProxyViewerContainer-BT8Ilsbs.js"] }, "/api/config": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/config.ts", "children": ["/api/config/paths"] }, "/api/health": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/health.ts" }, "/api/logs": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.ts", "children": ["/api/logs/$id", "/api/logs/stream"] }, "/api/mcp": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/mcp.ts" }, "/api/models": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/models.ts" }, "/api/providers": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.ts", "children": ["/api/providers/$providerId", "/api/providers/export", "/api/providers/import", "/api/providers/scan"] }, "/api/sessions": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/sessions.ts" }, "/proxy/$": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/proxy/$.ts" }, "/session/$sessionId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/session/$sessionId.tsx", "assets": [], "preloads": ["/assets/_sessionId-C9cpyfLX.js", "/assets/ProxyViewerContainer-BT8Ilsbs.js"] }, "/api/config/paths": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/config.paths.ts" }, "/api/knowledge/candidates": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.candidates.ts", "children": ["/api/knowledge/candidates/$candidateId"] }, "/api/knowledge/project-context": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.project-context.ts" }, "/api/knowledge/search": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.search.ts" }, "/api/logs/$id": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.$id.ts", "children": ["/api/logs/$id/chunks", "/api/logs/$id/replay"] }, "/api/logs/stream": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.stream.ts" }, "/api/providers/$providerId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.ts", "children": ["/api/providers/$providerId/model-metadata", "/api/providers/$providerId/test"] }, "/api/providers/export": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.export.ts" }, "/api/providers/import": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.import.ts" }, "/api/providers/scan": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.scan.ts" }, "/api/knowledge/candidates/$candidateId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.candidates.$candidateId.ts", "children": ["/api/knowledge/candidates/$candidateId/promote"] }, "/api/logs/$id/chunks": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.$id.chunks.ts" }, "/api/logs/$id/replay": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.$id.replay.ts" }, "/api/providers/$providerId/model-metadata": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.model-metadata.ts" }, "/api/providers/$providerId/test": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.test.ts", "children": ["/api/providers/$providerId/test/log"] }, "/api/knowledge/candidates/$candidateId/promote": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.candidates.$candidateId.promote.ts" }, "/api/knowledge/sessions/$sessionId/candidates": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.sessions.$sessionId.candidates.ts" }, "/api/providers/$providerId/test/log": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.test.log.ts" } }, "clientEntry": "/assets/main-lTQKpxiU.js" });
2
2
  export {
3
3
  tsrStartManifest
4
4
  };