@tonyclaw/llm-inspector 1.9.8 → 1.10.0

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 (93) hide show
  1. package/.output/nitro.json +3 -3
  2. package/.output/public/assets/{index-NIg9RFlA.js → index-BFuUQkWu.js} +3 -3
  3. package/.output/public/assets/index-F2ojFPJp.css +1 -0
  4. package/.output/public/assets/index-nKnhyW4Y.js +122 -0
  5. package/.output/server/_libs/@radix-ui/react-accessible-icon+[...].mjs +1 -1
  6. package/.output/server/_libs/@radix-ui/react-navigation-menu+[...].mjs +2 -1
  7. package/.output/server/_libs/@radix-ui/react-one-time-password-field+[...].mjs +2 -1
  8. package/.output/server/_libs/@radix-ui/react-password-toggle-field+[...].mjs +2 -1
  9. package/.output/server/_libs/@radix-ui/react-use-effect-event+[...].mjs +1 -1
  10. package/.output/server/_libs/@radix-ui/react-use-is-hydrated+[...].mjs +1 -1
  11. package/.output/server/_libs/ajv-formats.mjs +3 -3
  12. package/.output/server/_libs/ajv.mjs +819 -6183
  13. package/.output/server/_libs/extend.mjs +1 -1
  14. package/.output/server/_libs/fast-uri.mjs +3 -3
  15. package/.output/server/_libs/floating-ui__core.mjs +18 -17
  16. package/.output/server/_libs/floating-ui__dom.mjs +24 -20
  17. package/.output/server/_libs/floating-ui__react-dom.mjs +55 -28
  18. package/.output/server/_libs/floating-ui__utils.mjs +36 -36
  19. package/.output/server/_libs/inherits.mjs +1 -1
  20. package/.output/server/_libs/isbot.mjs +3 -2
  21. package/.output/server/_libs/json-schema-traverse.mjs +1 -90
  22. package/.output/server/_libs/jszip.mjs +103 -101
  23. package/.output/server/_libs/lie.mjs +1 -1
  24. package/.output/server/_libs/mdast-util-from-markdown.mjs +1 -1
  25. package/.output/server/_libs/pako.mjs +28 -28
  26. package/.output/server/_libs/property-information.mjs +13 -1
  27. package/.output/server/_libs/radix-ui__react-accordion.mjs +1 -1
  28. package/.output/server/_libs/radix-ui__react-alert-dialog.mjs +1 -1
  29. package/.output/server/_libs/radix-ui__react-aspect-ratio.mjs +1 -1
  30. package/.output/server/_libs/radix-ui__react-avatar.mjs +1 -1
  31. package/.output/server/_libs/radix-ui__react-checkbox.mjs +1 -1
  32. package/.output/server/_libs/radix-ui__react-context-menu.mjs +1 -1
  33. package/.output/server/_libs/radix-ui__react-dropdown-menu.mjs +1 -1
  34. package/.output/server/_libs/radix-ui__react-form.mjs +1 -1
  35. package/.output/server/_libs/radix-ui__react-hover-card.mjs +1 -1
  36. package/.output/server/_libs/radix-ui__react-label.mjs +1 -1
  37. package/.output/server/_libs/radix-ui__react-menu.mjs +1 -1
  38. package/.output/server/_libs/radix-ui__react-menubar.mjs +1 -1
  39. package/.output/server/_libs/radix-ui__react-popover.mjs +1 -1
  40. package/.output/server/_libs/radix-ui__react-progress.mjs +1 -1
  41. package/.output/server/_libs/radix-ui__react-radio-group.mjs +1 -1
  42. package/.output/server/_libs/radix-ui__react-slider.mjs +1 -1
  43. package/.output/server/_libs/radix-ui__react-switch.mjs +1 -1
  44. package/.output/server/_libs/radix-ui__react-toast.mjs +2 -1
  45. package/.output/server/_libs/radix-ui__react-toggle-group.mjs +1 -1
  46. package/.output/server/_libs/radix-ui__react-toggle.mjs +1 -1
  47. package/.output/server/_libs/radix-ui__react-toolbar.mjs +1 -1
  48. package/.output/server/_libs/react-dom.mjs +14 -14
  49. package/.output/server/_libs/react-remove-scroll.mjs +1 -1
  50. package/.output/server/_libs/react.mjs +5 -5
  51. package/.output/server/_libs/readable-stream.mjs +36 -36
  52. package/.output/server/_libs/semver.mjs +138 -125
  53. package/.output/server/_libs/setimmediate.mjs +152 -1
  54. package/.output/server/_libs/style-to-js.mjs +3 -3
  55. package/.output/server/_libs/style-to-object.mjs +1 -1
  56. package/.output/server/_libs/swr.mjs +1 -0
  57. package/.output/server/_libs/tailwind-merge.mjs +286 -41
  58. package/.output/server/_libs/tanstack__react-router.mjs +1 -1
  59. package/.output/server/_libs/tanstack__react-store.mjs +1 -1
  60. package/.output/server/_libs/tanstack__react-virtual.mjs +82 -7
  61. package/.output/server/_libs/tanstack__virtual-core.mjs +58 -17
  62. package/.output/server/_libs/tslib.mjs +1 -576
  63. package/.output/server/_libs/ungap__structured-clone.mjs +14 -2
  64. package/.output/server/_libs/use-sidecar.mjs +1 -1
  65. package/.output/server/_libs/use-sync-external-store.mjs +3 -3
  66. package/.output/server/_ssr/{index-BnKtV0Rq.mjs → index-XyU4WVWt.mjs} +270 -83
  67. package/.output/server/_ssr/index.mjs +4 -4
  68. package/.output/server/_ssr/{router-CQ7QyRWm.mjs → router-BR4XO8XJ.mjs} +231 -33
  69. package/.output/server/_tanstack-start-manifest_v-DFoSjBkb.mjs +4 -0
  70. package/.output/server/index.mjs +121 -137
  71. package/.output/server/node_modules/tslib/modules/index.js +70 -0
  72. package/.output/server/node_modules/tslib/modules/package.json +3 -0
  73. package/.output/server/node_modules/tslib/package.json +47 -0
  74. package/.output/server/node_modules/tslib/tslib.js +484 -0
  75. package/.output/server/package.json +9 -0
  76. package/package.json +3 -3
  77. package/src/components/providers/SettingsDialog.tsx +60 -0
  78. package/src/components/proxy-viewer/ConversationGroup.tsx +7 -2
  79. package/src/components/proxy-viewer/ConversationHeader.tsx +53 -0
  80. package/src/components/proxy-viewer/LogEntry.tsx +67 -7
  81. package/src/components/proxy-viewer/LogEntryHeader.tsx +21 -18
  82. package/src/components/proxy-viewer/ReplayDialog.tsx +3 -3
  83. package/src/lib/runtimeConfig.ts +15 -0
  84. package/src/lib/useStripConfig.ts +86 -0
  85. package/src/proxy/claudeCodeStrip.ts +102 -0
  86. package/src/proxy/config.ts +176 -0
  87. package/src/proxy/constants.ts +11 -0
  88. package/src/proxy/handler.ts +23 -1
  89. package/src/routes/api/config.ts +45 -0
  90. package/.output/public/assets/index-Cc1oV0hF.css +0 -1
  91. package/.output/public/assets/index-DuukpBQJ.js +0 -122
  92. package/.output/server/_tanstack-start-manifest_v-CKgCX0Gs.mjs +0 -4
  93. /package/.output/server/_libs/{unctx.mjs → ocache.mjs} +0 -0
@@ -8,7 +8,7 @@ import { C as Conf } from "../_libs/conf.mjs";
8
8
  import { randomUUID } from "crypto";
9
9
  import { exec } from "node:child_process";
10
10
  import { promisify } from "node:util";
11
- import { o as object, s as string, _ as _enum, u as union, a as array, n as number, d as discriminatedUnion, l as literal, b as boolean, r as record, c as lazy, e as _null, f as unknown } from "../_libs/zod.mjs";
11
+ import { o as object, s as string, _ as _enum, u as union, a as array, b as boolean, n as number, d as discriminatedUnion, l as literal, r as record, c as lazy, e as _null, f as unknown } from "../_libs/zod.mjs";
12
12
  import "../_libs/tanstack__router-core.mjs";
13
13
  import "../_libs/tanstack__history.mjs";
14
14
  import "../_libs/cookie-es.mjs";
@@ -42,8 +42,8 @@ import "../_libs/debounce-fn.mjs";
42
42
  import "../_libs/mimic-function.mjs";
43
43
  import "../_libs/semver.mjs";
44
44
  import "../_libs/uint8array-extras.mjs";
45
- const appCss = "/assets/index-Cc1oV0hF.css";
46
- const Route$g = createRootRoute({
45
+ const appCss = "/assets/index-F2ojFPJp.css";
46
+ const Route$h = createRootRoute({
47
47
  head: () => ({
48
48
  meta: [
49
49
  { charSet: "utf-8" },
@@ -66,8 +66,8 @@ function RootDocument({ children }) {
66
66
  ] })
67
67
  ] });
68
68
  }
69
- const $$splitComponentImporter = () => import("./index-BnKtV0Rq.mjs");
70
- const Route$f = createFileRoute("/")({
69
+ const $$splitComponentImporter = () => import("./index-XyU4WVWt.mjs");
70
+ const Route$g = createFileRoute("/")({
71
71
  component: lazyRouteComponent($$splitComponentImporter, "component")
72
72
  });
73
73
  const LOG_DIR_ENV = process.env["LOG_DIR"];
@@ -1927,6 +1927,147 @@ async function getClientInfo(request) {
1927
1927
  setCache(port, info);
1928
1928
  return info;
1929
1929
  }
1930
+ const RuntimeConfigSchema = object({
1931
+ stripClaudeCodeBillingHeader: boolean()
1932
+ });
1933
+ function getDataDir() {
1934
+ const isWindows = process.platform === "win32";
1935
+ const base = isWindows ? process.env["APPDATA"] ?? join(process.env["USERPROFILE"] ?? "C:\\", ".llm-inspector") : process.env["HOME"] ?? "/tmp";
1936
+ const configDirEnv = process.env["LLM_INSPECTOR_CONFIG_DIR"];
1937
+ if (configDirEnv !== void 0) {
1938
+ return isAbsolute(configDirEnv) ? configDirEnv : join(base, configDirEnv);
1939
+ }
1940
+ return join(base, ".llm-inspector");
1941
+ }
1942
+ function getConfigFilePath() {
1943
+ return join(getDataDir(), "config.json");
1944
+ }
1945
+ function getConfigTempPath() {
1946
+ return join(getDataDir(), "config.json.tmp");
1947
+ }
1948
+ let currentConfig = resolveInitialConfig();
1949
+ function resolveInitialConfig() {
1950
+ const filePath = getConfigFilePath();
1951
+ if (existsSync(filePath)) {
1952
+ try {
1953
+ const content = readFileSync(filePath, "utf-8");
1954
+ const parsed = JSON.parse(content);
1955
+ const result = RuntimeConfigSchema.safeParse(parsed);
1956
+ if (result.success) {
1957
+ logger.info(`[config] Loaded persisted config from ${filePath}`);
1958
+ return result.data;
1959
+ }
1960
+ logger.warn(
1961
+ `[config] Persisted config at ${filePath} is invalid; falling back to env/default`
1962
+ );
1963
+ } catch (err) {
1964
+ logger.warn(
1965
+ `[config] Failed to read persisted config at ${filePath}: ${String(err)}; falling back to env/default`
1966
+ );
1967
+ }
1968
+ }
1969
+ if (process.env["LLM_INSPECTOR_STRIP_CLAUDE_CODE_BILLING_HEADER"] === "1") {
1970
+ return { stripClaudeCodeBillingHeader: true };
1971
+ }
1972
+ return { stripClaudeCodeBillingHeader: false };
1973
+ }
1974
+ function getConfig() {
1975
+ return currentConfig;
1976
+ }
1977
+ function setConfig(patch) {
1978
+ const next = {
1979
+ ...currentConfig,
1980
+ ...patch
1981
+ };
1982
+ currentConfig = next;
1983
+ persistConfig(next);
1984
+ return next;
1985
+ }
1986
+ function persistConfig(value) {
1987
+ const dir = getDataDir();
1988
+ const targetPath = getConfigFilePath();
1989
+ const tempPath = getConfigTempPath();
1990
+ try {
1991
+ mkdirSync(dir, { recursive: true });
1992
+ } catch (err) {
1993
+ logger.error(`[config] Failed to create data directory ${dir}: ${String(err)}`);
1994
+ return false;
1995
+ }
1996
+ try {
1997
+ writeFileSync(tempPath, JSON.stringify(value), "utf-8");
1998
+ } catch (err) {
1999
+ logger.error(`[config] Failed to write config temp file: ${String(err)}`);
2000
+ return false;
2001
+ }
2002
+ try {
2003
+ renameSync(tempPath, targetPath);
2004
+ return true;
2005
+ } catch (err) {
2006
+ logger.warn(`[config] Rename failed, falling back to copy+delete: ${String(err)}`);
2007
+ try {
2008
+ copyFileSync(tempPath, targetPath);
2009
+ unlinkSync(tempPath);
2010
+ return true;
2011
+ } catch (copyErr) {
2012
+ logger.error(`[config] Failed to copy config file: ${String(copyErr)}`);
2013
+ return false;
2014
+ }
2015
+ }
2016
+ }
2017
+ const BILLING_HEADER_PREFIX = "x-anthropic-billing-header:";
2018
+ function isClaudeCodeBillingHeaderBlock(text) {
2019
+ const trimmed = text.trimStart();
2020
+ return trimmed.toLowerCase().startsWith(BILLING_HEADER_PREFIX);
2021
+ }
2022
+ function getOwnProperty(obj, key) {
2023
+ const desc = Object.getOwnPropertyDescriptor(obj, key);
2024
+ return desc?.value;
2025
+ }
2026
+ function isObjectWithSystem(value) {
2027
+ if (typeof value !== "object" || value === null || Array.isArray(value)) return false;
2028
+ return Object.prototype.hasOwnProperty.call(value, "system");
2029
+ }
2030
+ function isBillingHeaderTextBlock(block) {
2031
+ if (block === null || typeof block !== "object" || Array.isArray(block)) return false;
2032
+ const typeVal = getOwnProperty(block, "type");
2033
+ const textVal = getOwnProperty(block, "text");
2034
+ if (typeof typeVal !== "string" || typeVal !== "text") return false;
2035
+ if (typeof textVal !== "string") return false;
2036
+ return isClaudeCodeBillingHeaderBlock(textVal);
2037
+ }
2038
+ function stripClaudeCodeBillingHeader(rawBody) {
2039
+ let parsed;
2040
+ try {
2041
+ parsed = JSON.parse(rawBody);
2042
+ } catch {
2043
+ return { body: rawBody, removed: 0 };
2044
+ }
2045
+ if (!isObjectWithSystem(parsed)) {
2046
+ return { body: rawBody, removed: 0 };
2047
+ }
2048
+ const system = parsed.system;
2049
+ if (!Array.isArray(system) || system.length === 0) {
2050
+ return { body: rawBody, removed: 0 };
2051
+ }
2052
+ const kept = [];
2053
+ let removed = 0;
2054
+ for (const block of system) {
2055
+ if (isBillingHeaderTextBlock(block)) {
2056
+ removed += 1;
2057
+ continue;
2058
+ }
2059
+ kept.push(block);
2060
+ }
2061
+ if (removed === 0) {
2062
+ return { body: rawBody, removed: 0 };
2063
+ }
2064
+ if (kept.length === 0) {
2065
+ delete parsed.system;
2066
+ } else {
2067
+ parsed.system = kept;
2068
+ }
2069
+ return { body: JSON.stringify(parsed), removed };
2070
+ }
1930
2071
  function buildProxyHeaders(originalHeaders) {
1931
2072
  const rawHeaders = {};
1932
2073
  const headers = new Headers();
@@ -2114,6 +2255,16 @@ async function handleProxy(req) {
2114
2255
  if (req.body && req.method !== "GET" && req.method !== "HEAD") {
2115
2256
  requestBody = await req.text();
2116
2257
  }
2258
+ let bodyToForward = requestBody;
2259
+ if (getConfig().stripClaudeCodeBillingHeader && requestBody !== null && parsed.isMessages) {
2260
+ const stripped = stripClaudeCodeBillingHeader(requestBody);
2261
+ if (stripped.removed > 0) {
2262
+ logger.info(
2263
+ `[handler] Stripped ${stripped.removed} Claude Code billing-header block(s) from system prompt`
2264
+ );
2265
+ bodyToForward = stripped.body;
2266
+ }
2267
+ }
2117
2268
  const model = requestBody !== null ? extractModelFromBody(requestBody) : null;
2118
2269
  const matchedProviderConfig = model !== null ? findProviderByModel(model) : null;
2119
2270
  const upstreamBase = selectUpstreamBase$1(parsed.isChatCompletions, matchedProviderConfig);
@@ -2159,7 +2310,7 @@ async function handleProxy(req) {
2159
2310
  upstreamRes = await fetch(upstreamUrl, {
2160
2311
  method: req.method,
2161
2312
  headers: upstreamHeaders,
2162
- body: requestBody,
2313
+ body: bodyToForward,
2163
2314
  signal: req.signal
2164
2315
  });
2165
2316
  } catch (err) {
@@ -2191,7 +2342,7 @@ async function handleProxy(req) {
2191
2342
  }
2192
2343
  return handleStreamingResponse(upstreamRes, req, startTime, formatHandler, upstreamUrl, log);
2193
2344
  }
2194
- const Route$e = createFileRoute("/proxy/$")({
2345
+ const Route$f = createFileRoute("/proxy/$")({
2195
2346
  server: {
2196
2347
  handlers: {
2197
2348
  GET: ({ request }) => handleProxy(request),
@@ -2203,7 +2354,7 @@ const Route$e = createFileRoute("/proxy/$")({
2203
2354
  }
2204
2355
  }
2205
2356
  });
2206
- const Route$d = createFileRoute("/api/sessions")({
2357
+ const Route$e = createFileRoute("/api/sessions")({
2207
2358
  server: {
2208
2359
  handlers: {
2209
2360
  GET: () => Response.json(getSessions())
@@ -2219,7 +2370,7 @@ const ProviderInputSchema = object({
2219
2370
  authHeader: _enum(["bearer", "x-api-key"]).optional().default("bearer"),
2220
2371
  apiDocsUrl: string().optional()
2221
2372
  });
2222
- const Route$c = createFileRoute("/api/providers")({
2373
+ const Route$d = createFileRoute("/api/providers")({
2223
2374
  server: {
2224
2375
  handlers: {
2225
2376
  GET: () => {
@@ -2244,14 +2395,14 @@ const Route$c = createFileRoute("/api/providers")({
2244
2395
  }
2245
2396
  }
2246
2397
  });
2247
- const Route$b = createFileRoute("/api/models")({
2398
+ const Route$c = createFileRoute("/api/models")({
2248
2399
  server: {
2249
2400
  handlers: {
2250
2401
  GET: () => Response.json(getModels())
2251
2402
  }
2252
2403
  }
2253
2404
  });
2254
- const Route$a = createFileRoute("/api/logs")({
2405
+ const Route$b = createFileRoute("/api/logs")({
2255
2406
  server: {
2256
2407
  handlers: {
2257
2408
  GET: ({ request }) => {
@@ -2277,7 +2428,7 @@ const Route$a = createFileRoute("/api/logs")({
2277
2428
  }
2278
2429
  });
2279
2430
  logger.debug("Health endpoint loaded");
2280
- const Route$9 = createFileRoute("/api/health")({
2431
+ const Route$a = createFileRoute("/api/health")({
2281
2432
  server: {
2282
2433
  handlers: {
2283
2434
  GET: () => {
@@ -2286,6 +2437,40 @@ const Route$9 = createFileRoute("/api/health")({
2286
2437
  }
2287
2438
  }
2288
2439
  });
2440
+ const RuntimeConfigPatchSchema = object({
2441
+ stripClaudeCodeBillingHeader: boolean().optional()
2442
+ }).strict().refine((v) => Object.keys(v).length > 0, {
2443
+ message: "At least one field must be provided"
2444
+ });
2445
+ const Route$9 = createFileRoute("/api/config")({
2446
+ server: {
2447
+ handlers: {
2448
+ GET: () => {
2449
+ return Response.json(getConfig());
2450
+ },
2451
+ PATCH: async ({ request }) => {
2452
+ let body;
2453
+ try {
2454
+ body = await request.json();
2455
+ } catch {
2456
+ return Response.json({ error: "Invalid JSON body" }, { status: 400 });
2457
+ }
2458
+ const result = RuntimeConfigPatchSchema.safeParse(body);
2459
+ if (!result.success) {
2460
+ return Response.json(
2461
+ {
2462
+ error: "Invalid config payload",
2463
+ issues: result.error.issues
2464
+ },
2465
+ { status: 400 }
2466
+ );
2467
+ }
2468
+ const updated = setConfig(result.data);
2469
+ return Response.json(updated);
2470
+ }
2471
+ }
2472
+ }
2473
+ });
2289
2474
  union([string(), object({ providers: unknown() })]);
2290
2475
  const Route$8 = createFileRoute("/api/providers/import")({
2291
2476
  server: {
@@ -3285,40 +3470,45 @@ const Route = createFileRoute("/api/logs/$id/chunks")({
3285
3470
  }
3286
3471
  }
3287
3472
  });
3288
- const IndexRoute = Route$f.update({
3473
+ const IndexRoute = Route$g.update({
3289
3474
  id: "/",
3290
3475
  path: "/",
3291
- getParentRoute: () => Route$g
3476
+ getParentRoute: () => Route$h
3292
3477
  });
3293
- const ProxySplatRoute = Route$e.update({
3478
+ const ProxySplatRoute = Route$f.update({
3294
3479
  id: "/proxy/$",
3295
3480
  path: "/proxy/$",
3296
- getParentRoute: () => Route$g
3481
+ getParentRoute: () => Route$h
3297
3482
  });
3298
- const ApiSessionsRoute = Route$d.update({
3483
+ const ApiSessionsRoute = Route$e.update({
3299
3484
  id: "/api/sessions",
3300
3485
  path: "/api/sessions",
3301
- getParentRoute: () => Route$g
3486
+ getParentRoute: () => Route$h
3302
3487
  });
3303
- const ApiProvidersRoute = Route$c.update({
3488
+ const ApiProvidersRoute = Route$d.update({
3304
3489
  id: "/api/providers",
3305
3490
  path: "/api/providers",
3306
- getParentRoute: () => Route$g
3491
+ getParentRoute: () => Route$h
3307
3492
  });
3308
- const ApiModelsRoute = Route$b.update({
3493
+ const ApiModelsRoute = Route$c.update({
3309
3494
  id: "/api/models",
3310
3495
  path: "/api/models",
3311
- getParentRoute: () => Route$g
3496
+ getParentRoute: () => Route$h
3312
3497
  });
3313
- const ApiLogsRoute = Route$a.update({
3498
+ const ApiLogsRoute = Route$b.update({
3314
3499
  id: "/api/logs",
3315
3500
  path: "/api/logs",
3316
- getParentRoute: () => Route$g
3501
+ getParentRoute: () => Route$h
3317
3502
  });
3318
- const ApiHealthRoute = Route$9.update({
3503
+ const ApiHealthRoute = Route$a.update({
3319
3504
  id: "/api/health",
3320
3505
  path: "/api/health",
3321
- getParentRoute: () => Route$g
3506
+ getParentRoute: () => Route$h
3507
+ });
3508
+ const ApiConfigRoute = Route$9.update({
3509
+ id: "/api/config",
3510
+ path: "/api/config",
3511
+ getParentRoute: () => Route$h
3322
3512
  });
3323
3513
  const ApiProvidersImportRoute = Route$8.update({
3324
3514
  id: "/import",
@@ -3346,9 +3536,9 @@ const ApiLogsIdRoute = Route$4.update({
3346
3536
  getParentRoute: () => ApiLogsRoute
3347
3537
  });
3348
3538
  const ApiConfigPathsRoute = Route$3.update({
3349
- id: "/api/config/paths",
3350
- path: "/api/config/paths",
3351
- getParentRoute: () => Route$g
3539
+ id: "/paths",
3540
+ path: "/paths",
3541
+ getParentRoute: () => ApiConfigRoute
3352
3542
  });
3353
3543
  const ApiProvidersProviderIdTestRoute = Route$2.update({
3354
3544
  id: "/test",
@@ -3365,6 +3555,12 @@ const ApiLogsIdChunksRoute = Route.update({
3365
3555
  path: "/chunks",
3366
3556
  getParentRoute: () => ApiLogsIdRoute
3367
3557
  });
3558
+ const ApiConfigRouteChildren = {
3559
+ ApiConfigPathsRoute
3560
+ };
3561
+ const ApiConfigRouteWithChildren = ApiConfigRoute._addFileChildren(
3562
+ ApiConfigRouteChildren
3563
+ );
3368
3564
  const ApiLogsIdRouteChildren = {
3369
3565
  ApiLogsIdChunksRoute,
3370
3566
  ApiLogsIdReplayRoute
@@ -3393,15 +3589,15 @@ const ApiProvidersRouteWithChildren = ApiProvidersRoute._addFileChildren(
3393
3589
  );
3394
3590
  const rootRouteChildren = {
3395
3591
  IndexRoute,
3592
+ ApiConfigRoute: ApiConfigRouteWithChildren,
3396
3593
  ApiHealthRoute,
3397
3594
  ApiLogsRoute: ApiLogsRouteWithChildren,
3398
3595
  ApiModelsRoute,
3399
3596
  ApiProvidersRoute: ApiProvidersRouteWithChildren,
3400
3597
  ApiSessionsRoute,
3401
- ProxySplatRoute,
3402
- ApiConfigPathsRoute
3598
+ ProxySplatRoute
3403
3599
  };
3404
- const routeTree = Route$g._addFileChildren(rootRouteChildren)._addFileTypes();
3600
+ const routeTree = Route$h._addFileChildren(rootRouteChildren)._addFileTypes();
3405
3601
  function getRouter() {
3406
3602
  const router2 = createRouter({
3407
3603
  routeTree,
@@ -3416,7 +3612,9 @@ const router = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
3416
3612
  export {
3417
3613
  CapturedLogSchema as C,
3418
3614
  InspectorResponseSchema as I,
3615
+ RuntimeConfigSchema as R,
3419
3616
  parseRequest as a,
3420
3617
  parseOpenAIResponse as p,
3421
- router as r
3618
+ router as r,
3619
+ stripClaudeCodeBillingHeader as s
3422
3620
  };
@@ -0,0 +1,4 @@
1
+ const tsrStartManifest = () => ({ routes: { __root__: { filePath: "C:/Users/claw/workspace/llm-inspector/src/routes/__root.tsx", children: ["/", "/api/config", "/api/health", "/api/logs", "/api/models", "/api/providers", "/api/sessions", "/proxy/$"], preloads: ["/assets/index-BFuUQkWu.js"], scripts: [{ attrs: { type: "module", async: true, src: "/assets/index-BFuUQkWu.js" } }] }, "/": { filePath: "C:/Users/claw/workspace/llm-inspector/src/routes/index.tsx", children: void 0, preloads: ["/assets/index-nKnhyW4Y.js"] } } });
2
+ export {
3
+ tsrStartManifest
4
+ };