@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.
- package/.output/nitro.json +3 -3
- package/.output/public/assets/{index-NIg9RFlA.js → index-BFuUQkWu.js} +3 -3
- package/.output/public/assets/index-F2ojFPJp.css +1 -0
- package/.output/public/assets/index-nKnhyW4Y.js +122 -0
- package/.output/server/_libs/@radix-ui/react-accessible-icon+[...].mjs +1 -1
- package/.output/server/_libs/@radix-ui/react-navigation-menu+[...].mjs +2 -1
- package/.output/server/_libs/@radix-ui/react-one-time-password-field+[...].mjs +2 -1
- package/.output/server/_libs/@radix-ui/react-password-toggle-field+[...].mjs +2 -1
- package/.output/server/_libs/@radix-ui/react-use-effect-event+[...].mjs +1 -1
- package/.output/server/_libs/@radix-ui/react-use-is-hydrated+[...].mjs +1 -1
- package/.output/server/_libs/ajv-formats.mjs +3 -3
- package/.output/server/_libs/ajv.mjs +819 -6183
- package/.output/server/_libs/extend.mjs +1 -1
- package/.output/server/_libs/fast-uri.mjs +3 -3
- package/.output/server/_libs/floating-ui__core.mjs +18 -17
- package/.output/server/_libs/floating-ui__dom.mjs +24 -20
- package/.output/server/_libs/floating-ui__react-dom.mjs +55 -28
- package/.output/server/_libs/floating-ui__utils.mjs +36 -36
- package/.output/server/_libs/inherits.mjs +1 -1
- package/.output/server/_libs/isbot.mjs +3 -2
- package/.output/server/_libs/json-schema-traverse.mjs +1 -90
- package/.output/server/_libs/jszip.mjs +103 -101
- package/.output/server/_libs/lie.mjs +1 -1
- package/.output/server/_libs/mdast-util-from-markdown.mjs +1 -1
- package/.output/server/_libs/pako.mjs +28 -28
- package/.output/server/_libs/property-information.mjs +13 -1
- package/.output/server/_libs/radix-ui__react-accordion.mjs +1 -1
- package/.output/server/_libs/radix-ui__react-alert-dialog.mjs +1 -1
- package/.output/server/_libs/radix-ui__react-aspect-ratio.mjs +1 -1
- package/.output/server/_libs/radix-ui__react-avatar.mjs +1 -1
- package/.output/server/_libs/radix-ui__react-checkbox.mjs +1 -1
- package/.output/server/_libs/radix-ui__react-context-menu.mjs +1 -1
- package/.output/server/_libs/radix-ui__react-dropdown-menu.mjs +1 -1
- package/.output/server/_libs/radix-ui__react-form.mjs +1 -1
- package/.output/server/_libs/radix-ui__react-hover-card.mjs +1 -1
- package/.output/server/_libs/radix-ui__react-label.mjs +1 -1
- package/.output/server/_libs/radix-ui__react-menu.mjs +1 -1
- package/.output/server/_libs/radix-ui__react-menubar.mjs +1 -1
- package/.output/server/_libs/radix-ui__react-popover.mjs +1 -1
- package/.output/server/_libs/radix-ui__react-progress.mjs +1 -1
- package/.output/server/_libs/radix-ui__react-radio-group.mjs +1 -1
- package/.output/server/_libs/radix-ui__react-slider.mjs +1 -1
- package/.output/server/_libs/radix-ui__react-switch.mjs +1 -1
- package/.output/server/_libs/radix-ui__react-toast.mjs +2 -1
- package/.output/server/_libs/radix-ui__react-toggle-group.mjs +1 -1
- package/.output/server/_libs/radix-ui__react-toggle.mjs +1 -1
- package/.output/server/_libs/radix-ui__react-toolbar.mjs +1 -1
- package/.output/server/_libs/react-dom.mjs +14 -14
- package/.output/server/_libs/react-remove-scroll.mjs +1 -1
- package/.output/server/_libs/react.mjs +5 -5
- package/.output/server/_libs/readable-stream.mjs +36 -36
- package/.output/server/_libs/semver.mjs +138 -125
- package/.output/server/_libs/setimmediate.mjs +152 -1
- package/.output/server/_libs/style-to-js.mjs +3 -3
- package/.output/server/_libs/style-to-object.mjs +1 -1
- package/.output/server/_libs/swr.mjs +1 -0
- package/.output/server/_libs/tailwind-merge.mjs +286 -41
- package/.output/server/_libs/tanstack__react-router.mjs +1 -1
- package/.output/server/_libs/tanstack__react-store.mjs +1 -1
- package/.output/server/_libs/tanstack__react-virtual.mjs +82 -7
- package/.output/server/_libs/tanstack__virtual-core.mjs +58 -17
- package/.output/server/_libs/tslib.mjs +1 -576
- package/.output/server/_libs/ungap__structured-clone.mjs +14 -2
- package/.output/server/_libs/use-sidecar.mjs +1 -1
- package/.output/server/_libs/use-sync-external-store.mjs +3 -3
- package/.output/server/_ssr/{index-BnKtV0Rq.mjs → index-XyU4WVWt.mjs} +270 -83
- package/.output/server/_ssr/index.mjs +4 -4
- package/.output/server/_ssr/{router-CQ7QyRWm.mjs → router-BR4XO8XJ.mjs} +231 -33
- package/.output/server/_tanstack-start-manifest_v-DFoSjBkb.mjs +4 -0
- package/.output/server/index.mjs +121 -137
- package/.output/server/node_modules/tslib/modules/index.js +70 -0
- package/.output/server/node_modules/tslib/modules/package.json +3 -0
- package/.output/server/node_modules/tslib/package.json +47 -0
- package/.output/server/node_modules/tslib/tslib.js +484 -0
- package/.output/server/package.json +9 -0
- package/package.json +3 -3
- package/src/components/providers/SettingsDialog.tsx +60 -0
- package/src/components/proxy-viewer/ConversationGroup.tsx +7 -2
- package/src/components/proxy-viewer/ConversationHeader.tsx +53 -0
- package/src/components/proxy-viewer/LogEntry.tsx +67 -7
- package/src/components/proxy-viewer/LogEntryHeader.tsx +21 -18
- package/src/components/proxy-viewer/ReplayDialog.tsx +3 -3
- package/src/lib/runtimeConfig.ts +15 -0
- package/src/lib/useStripConfig.ts +86 -0
- package/src/proxy/claudeCodeStrip.ts +102 -0
- package/src/proxy/config.ts +176 -0
- package/src/proxy/constants.ts +11 -0
- package/src/proxy/handler.ts +23 -1
- package/src/routes/api/config.ts +45 -0
- package/.output/public/assets/index-Cc1oV0hF.css +0 -1
- package/.output/public/assets/index-DuukpBQJ.js +0 -122
- package/.output/server/_tanstack-start-manifest_v-CKgCX0Gs.mjs +0 -4
- /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,
|
|
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-
|
|
46
|
-
const Route$
|
|
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-
|
|
70
|
-
const Route$
|
|
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:
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
3473
|
+
const IndexRoute = Route$g.update({
|
|
3289
3474
|
id: "/",
|
|
3290
3475
|
path: "/",
|
|
3291
|
-
getParentRoute: () => Route$
|
|
3476
|
+
getParentRoute: () => Route$h
|
|
3292
3477
|
});
|
|
3293
|
-
const ProxySplatRoute = Route$
|
|
3478
|
+
const ProxySplatRoute = Route$f.update({
|
|
3294
3479
|
id: "/proxy/$",
|
|
3295
3480
|
path: "/proxy/$",
|
|
3296
|
-
getParentRoute: () => Route$
|
|
3481
|
+
getParentRoute: () => Route$h
|
|
3297
3482
|
});
|
|
3298
|
-
const ApiSessionsRoute = Route$
|
|
3483
|
+
const ApiSessionsRoute = Route$e.update({
|
|
3299
3484
|
id: "/api/sessions",
|
|
3300
3485
|
path: "/api/sessions",
|
|
3301
|
-
getParentRoute: () => Route$
|
|
3486
|
+
getParentRoute: () => Route$h
|
|
3302
3487
|
});
|
|
3303
|
-
const ApiProvidersRoute = Route$
|
|
3488
|
+
const ApiProvidersRoute = Route$d.update({
|
|
3304
3489
|
id: "/api/providers",
|
|
3305
3490
|
path: "/api/providers",
|
|
3306
|
-
getParentRoute: () => Route$
|
|
3491
|
+
getParentRoute: () => Route$h
|
|
3307
3492
|
});
|
|
3308
|
-
const ApiModelsRoute = Route$
|
|
3493
|
+
const ApiModelsRoute = Route$c.update({
|
|
3309
3494
|
id: "/api/models",
|
|
3310
3495
|
path: "/api/models",
|
|
3311
|
-
getParentRoute: () => Route$
|
|
3496
|
+
getParentRoute: () => Route$h
|
|
3312
3497
|
});
|
|
3313
|
-
const ApiLogsRoute = Route$
|
|
3498
|
+
const ApiLogsRoute = Route$b.update({
|
|
3314
3499
|
id: "/api/logs",
|
|
3315
3500
|
path: "/api/logs",
|
|
3316
|
-
getParentRoute: () => Route$
|
|
3501
|
+
getParentRoute: () => Route$h
|
|
3317
3502
|
});
|
|
3318
|
-
const ApiHealthRoute = Route$
|
|
3503
|
+
const ApiHealthRoute = Route$a.update({
|
|
3319
3504
|
id: "/api/health",
|
|
3320
3505
|
path: "/api/health",
|
|
3321
|
-
getParentRoute: () => Route$
|
|
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: "/
|
|
3350
|
-
path: "/
|
|
3351
|
-
getParentRoute: () =>
|
|
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$
|
|
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
|
+
};
|