@tonyclaw/llm-inspector 1.14.3 → 1.14.4
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/index-5yrjXc3u.js +105 -0
- package/.output/public/assets/index-o0Ui96SM.css +1 -0
- package/.output/public/assets/{main-BcEfx6FM.js → main-CC0TDCAo.js} +1 -1
- package/.output/server/_libs/lucide-react.mjs +113 -105
- package/.output/server/_ssr/{index-BbJkYeb-.mjs → index-Cz6oxzsy.mjs} +237 -5
- package/.output/server/_ssr/index.mjs +2 -2
- package/.output/server/_ssr/{router-Cz7UcQ5N.mjs → router-Bl3OCdGC.mjs} +229 -33
- package/.output/server/_tanstack-start-manifest_v-Oekf1osO.mjs +4 -0
- package/.output/server/index.mjs +18 -18
- package/package.json +1 -1
- package/src/components/providers/ImportWizardDialog.tsx +281 -0
- package/src/components/providers/ProviderCard.tsx +2 -0
- package/src/components/providers/ProvidersPanel.tsx +22 -1
- package/src/proxy/providerImporters.ts +235 -0
- package/src/routes/api/providers.scan.ts +23 -0
- package/.output/public/assets/index-6F6Tf88s.js +0 -105
- package/.output/public/assets/index-CzrT_ZB_.css +0 -1
- package/.output/server/_tanstack-start-manifest_v-DxqMZv-B.mjs +0 -4
|
@@ -9,6 +9,7 @@ import { randomUUID } from "crypto";
|
|
|
9
9
|
import { exec } from "node:child_process";
|
|
10
10
|
import { promisify } from "node:util";
|
|
11
11
|
import { M as McpServer, W as WebStandardStreamableHTTPServerTransport } from "../_libs/modelcontextprotocol__server.mjs";
|
|
12
|
+
import { homedir } from "node:os";
|
|
12
13
|
import { d as object, _ as _enum, b as string, a as array, u as union, c as boolean, r as record, n as number, g as discriminatedUnion, l as literal, h as _null, k as lazy, e as unknown } from "../_libs/zod.mjs";
|
|
13
14
|
import "../_libs/tiny-warning.mjs";
|
|
14
15
|
import "../_libs/tanstack__router-core.mjs";
|
|
@@ -31,7 +32,6 @@ import "node:crypto";
|
|
|
31
32
|
import "node:assert";
|
|
32
33
|
import "../_libs/dot-prop.mjs";
|
|
33
34
|
import "../_libs/env-paths.mjs";
|
|
34
|
-
import "node:os";
|
|
35
35
|
import "../_libs/atomically.mjs";
|
|
36
36
|
import "../_libs/stubborn-fs.mjs";
|
|
37
37
|
import "../_libs/stubborn-utils.mjs";
|
|
@@ -45,8 +45,8 @@ import "../_libs/debounce-fn.mjs";
|
|
|
45
45
|
import "../_libs/mimic-function.mjs";
|
|
46
46
|
import "../_libs/semver.mjs";
|
|
47
47
|
import "../_libs/uint8array-extras.mjs";
|
|
48
|
-
const appCss = "/assets/index-
|
|
49
|
-
const Route$
|
|
48
|
+
const appCss = "/assets/index-o0Ui96SM.css";
|
|
49
|
+
const Route$k = createRootRoute({
|
|
50
50
|
head: () => ({
|
|
51
51
|
meta: [
|
|
52
52
|
{ charSet: "utf-8" },
|
|
@@ -69,8 +69,8 @@ function RootDocument({ children }) {
|
|
|
69
69
|
] })
|
|
70
70
|
] });
|
|
71
71
|
}
|
|
72
|
-
const $$splitComponentImporter = () => import("./index-
|
|
73
|
-
const Route$
|
|
72
|
+
const $$splitComponentImporter = () => import("./index-Cz6oxzsy.mjs");
|
|
73
|
+
const Route$j = createFileRoute("/")({
|
|
74
74
|
component: lazyRouteComponent($$splitComponentImporter, "component")
|
|
75
75
|
});
|
|
76
76
|
const LOG_DIR_ENV = process.env["LOG_DIR"];
|
|
@@ -2554,7 +2554,7 @@ async function handleProxy(req) {
|
|
|
2554
2554
|
}
|
|
2555
2555
|
return handleStreamingResponse(upstreamRes, req, startTime, formatHandler, upstreamUrl, log);
|
|
2556
2556
|
}
|
|
2557
|
-
const Route$
|
|
2557
|
+
const Route$i = createFileRoute("/proxy/$")({
|
|
2558
2558
|
server: {
|
|
2559
2559
|
handlers: {
|
|
2560
2560
|
GET: ({ request }) => handleProxy(request),
|
|
@@ -2566,7 +2566,7 @@ const Route$h = createFileRoute("/proxy/$")({
|
|
|
2566
2566
|
}
|
|
2567
2567
|
}
|
|
2568
2568
|
});
|
|
2569
|
-
const Route$
|
|
2569
|
+
const Route$h = createFileRoute("/api/sessions")({
|
|
2570
2570
|
server: {
|
|
2571
2571
|
handlers: {
|
|
2572
2572
|
GET: () => Response.json(getSessions())
|
|
@@ -2585,7 +2585,7 @@ const ProviderInputSchema = object({
|
|
|
2585
2585
|
apiDocsUrl: string().optional(),
|
|
2586
2586
|
source: _enum(["company", "personal"]).optional()
|
|
2587
2587
|
});
|
|
2588
|
-
const Route$
|
|
2588
|
+
const Route$g = createFileRoute("/api/providers")({
|
|
2589
2589
|
server: {
|
|
2590
2590
|
handlers: {
|
|
2591
2591
|
GET: () => {
|
|
@@ -2614,7 +2614,7 @@ const Route$f = createFileRoute("/api/providers")({
|
|
|
2614
2614
|
}
|
|
2615
2615
|
}
|
|
2616
2616
|
});
|
|
2617
|
-
const Route$
|
|
2617
|
+
const Route$f = createFileRoute("/api/models")({
|
|
2618
2618
|
server: {
|
|
2619
2619
|
handlers: {
|
|
2620
2620
|
GET: () => Response.json(getModels())
|
|
@@ -3124,7 +3124,7 @@ PATCH-style update: only the fields you supply are changed. Returns the updated
|
|
|
3124
3124
|
({ id }) => safeCall(() => testProviderImpl(callApi, id))
|
|
3125
3125
|
);
|
|
3126
3126
|
}
|
|
3127
|
-
const Route$
|
|
3127
|
+
const Route$e = createFileRoute("/api/mcp")({
|
|
3128
3128
|
server: {
|
|
3129
3129
|
handlers: {
|
|
3130
3130
|
// The SDK may issue either POST, GET, or DELETE. TanStack Start only
|
|
@@ -3136,7 +3136,7 @@ const Route$d = createFileRoute("/api/mcp")({
|
|
|
3136
3136
|
}
|
|
3137
3137
|
}
|
|
3138
3138
|
});
|
|
3139
|
-
const Route$
|
|
3139
|
+
const Route$d = createFileRoute("/api/logs")({
|
|
3140
3140
|
server: {
|
|
3141
3141
|
handlers: {
|
|
3142
3142
|
GET: ({ request }) => {
|
|
@@ -3162,7 +3162,7 @@ const Route$c = createFileRoute("/api/logs")({
|
|
|
3162
3162
|
}
|
|
3163
3163
|
});
|
|
3164
3164
|
logger.debug("Health endpoint loaded");
|
|
3165
|
-
const Route$
|
|
3165
|
+
const Route$c = createFileRoute("/api/health")({
|
|
3166
3166
|
server: {
|
|
3167
3167
|
handlers: {
|
|
3168
3168
|
GET: () => {
|
|
@@ -3176,7 +3176,7 @@ const RuntimeConfigPatchSchema = object({
|
|
|
3176
3176
|
}).strict().refine((v) => Object.keys(v).length > 0, {
|
|
3177
3177
|
message: "At least one field must be provided"
|
|
3178
3178
|
});
|
|
3179
|
-
const Route$
|
|
3179
|
+
const Route$b = createFileRoute("/api/config")({
|
|
3180
3180
|
server: {
|
|
3181
3181
|
handlers: {
|
|
3182
3182
|
GET: () => {
|
|
@@ -3205,6 +3205,196 @@ const Route$a = createFileRoute("/api/config")({
|
|
|
3205
3205
|
}
|
|
3206
3206
|
}
|
|
3207
3207
|
});
|
|
3208
|
+
function isRecord(val) {
|
|
3209
|
+
return val !== null && typeof val === "object" && !Array.isArray(val);
|
|
3210
|
+
}
|
|
3211
|
+
function readJsonSafe(filePath) {
|
|
3212
|
+
try {
|
|
3213
|
+
if (!existsSync(filePath)) return null;
|
|
3214
|
+
const raw = readFileSync(filePath, "utf-8");
|
|
3215
|
+
const parsed = JSON.parse(raw);
|
|
3216
|
+
return isRecord(parsed) ? parsed : null;
|
|
3217
|
+
} catch {
|
|
3218
|
+
return null;
|
|
3219
|
+
}
|
|
3220
|
+
}
|
|
3221
|
+
function getEnvValue(envObj, key) {
|
|
3222
|
+
if (!isRecord(envObj)) return void 0;
|
|
3223
|
+
const val = envObj[key];
|
|
3224
|
+
return typeof val === "string" ? val.trim() : void 0;
|
|
3225
|
+
}
|
|
3226
|
+
function deriveNameFromUrl(url) {
|
|
3227
|
+
try {
|
|
3228
|
+
const hostname = new URL(url).hostname;
|
|
3229
|
+
const parts = hostname.split(".");
|
|
3230
|
+
const domain = parts.length >= 2 ? parts[parts.length - 2] ?? hostname : hostname;
|
|
3231
|
+
return domain.charAt(0).toUpperCase() + domain.slice(1);
|
|
3232
|
+
} catch {
|
|
3233
|
+
return "Imported Provider";
|
|
3234
|
+
}
|
|
3235
|
+
}
|
|
3236
|
+
function detectClaudeCodeProviders() {
|
|
3237
|
+
const home = homedir();
|
|
3238
|
+
const results = [];
|
|
3239
|
+
const globalConfig = readJsonSafe(join(home, ".claude", "settings.json"));
|
|
3240
|
+
const localConfig = readJsonSafe(join(home, ".claude", "settings.local.json"));
|
|
3241
|
+
const mergedEnv = {};
|
|
3242
|
+
if (isRecord(globalConfig)) {
|
|
3243
|
+
const env = globalConfig["env"];
|
|
3244
|
+
if (isRecord(env)) {
|
|
3245
|
+
Object.assign(mergedEnv, env);
|
|
3246
|
+
}
|
|
3247
|
+
}
|
|
3248
|
+
if (isRecord(localConfig)) {
|
|
3249
|
+
const env = localConfig["env"];
|
|
3250
|
+
if (isRecord(env)) {
|
|
3251
|
+
Object.assign(mergedEnv, env);
|
|
3252
|
+
}
|
|
3253
|
+
}
|
|
3254
|
+
const baseUrl = getEnvValue(mergedEnv, "ANTHROPIC_BASE_URL");
|
|
3255
|
+
const authToken = getEnvValue(mergedEnv, "ANTHROPIC_AUTH_TOKEN") ?? getEnvValue(mergedEnv, "ANTHROPIC_API_KEY");
|
|
3256
|
+
if (baseUrl === void 0 || baseUrl === "" || authToken === void 0 || authToken === "") {
|
|
3257
|
+
return results;
|
|
3258
|
+
}
|
|
3259
|
+
const modelSet = /* @__PURE__ */ new Set();
|
|
3260
|
+
const modelKeys = [
|
|
3261
|
+
"ANTHROPIC_MODEL",
|
|
3262
|
+
"ANTHROPIC_DEFAULT_OPUS_MODEL",
|
|
3263
|
+
"ANTHROPIC_DEFAULT_SONNET_MODEL",
|
|
3264
|
+
"ANTHROPIC_DEFAULT_HAIKU_MODEL"
|
|
3265
|
+
];
|
|
3266
|
+
for (const key of modelKeys) {
|
|
3267
|
+
const val = getEnvValue(mergedEnv, key);
|
|
3268
|
+
if (val !== void 0 && val !== "") modelSet.add(val);
|
|
3269
|
+
}
|
|
3270
|
+
const models = modelSet.size > 0 ? [...modelSet] : ["default"];
|
|
3271
|
+
results.push({
|
|
3272
|
+
name: deriveNameFromUrl(baseUrl),
|
|
3273
|
+
apiKey: normalizeApiKey(authToken),
|
|
3274
|
+
format: "anthropic",
|
|
3275
|
+
anthropicBaseUrl: baseUrl,
|
|
3276
|
+
openaiBaseUrl: "",
|
|
3277
|
+
models,
|
|
3278
|
+
sourceTool: "claude-code",
|
|
3279
|
+
alreadyExists: false
|
|
3280
|
+
// filled in later
|
|
3281
|
+
});
|
|
3282
|
+
return results;
|
|
3283
|
+
}
|
|
3284
|
+
function detectOpenCodeProviders() {
|
|
3285
|
+
const home = homedir();
|
|
3286
|
+
const results = [];
|
|
3287
|
+
const config = readJsonSafe(join(home, ".config", "opencode", "opencode.json"));
|
|
3288
|
+
if (config === null) return results;
|
|
3289
|
+
const auth = readJsonSafe(join(home, ".local", "share", "opencode", "auth.json"));
|
|
3290
|
+
const providersVal = config["provider"];
|
|
3291
|
+
if (!isRecord(providersVal)) {
|
|
3292
|
+
return results;
|
|
3293
|
+
}
|
|
3294
|
+
const providers = providersVal;
|
|
3295
|
+
for (const [providerId, providerObj] of Object.entries(providers)) {
|
|
3296
|
+
if (!isRecord(providerObj)) continue;
|
|
3297
|
+
const options = providerObj["options"];
|
|
3298
|
+
const npm = providerObj["npm"];
|
|
3299
|
+
const npmStr = typeof npm === "string" ? npm : "";
|
|
3300
|
+
const format = npmStr === "@ai-sdk/anthropic" ? "anthropic" : "openai";
|
|
3301
|
+
let baseURL = "";
|
|
3302
|
+
let apiKey = "";
|
|
3303
|
+
if (isRecord(options)) {
|
|
3304
|
+
baseURL = typeof options["baseURL"] === "string" ? options["baseURL"].trim() : "";
|
|
3305
|
+
apiKey = typeof options["apiKey"] === "string" ? options["apiKey"].trim() : "";
|
|
3306
|
+
}
|
|
3307
|
+
if (apiKey === "" && isRecord(auth)) {
|
|
3308
|
+
const cred = auth[providerId];
|
|
3309
|
+
if (isRecord(cred)) {
|
|
3310
|
+
const key = cred["key"];
|
|
3311
|
+
if (typeof key === "string" && key !== "") apiKey = key;
|
|
3312
|
+
}
|
|
3313
|
+
}
|
|
3314
|
+
if (baseURL === "" || apiKey === "") continue;
|
|
3315
|
+
const modelSet = /* @__PURE__ */ new Set();
|
|
3316
|
+
const modelsObj = providerObj["models"];
|
|
3317
|
+
if (isRecord(modelsObj)) {
|
|
3318
|
+
for (const [modelId, modelDef] of Object.entries(modelsObj)) {
|
|
3319
|
+
if (typeof modelDef === "string") {
|
|
3320
|
+
modelSet.add(modelDef);
|
|
3321
|
+
} else if (isRecord(modelDef)) {
|
|
3322
|
+
const name = modelDef["name"];
|
|
3323
|
+
modelSet.add(typeof name === "string" && name !== "" ? name : modelId);
|
|
3324
|
+
} else {
|
|
3325
|
+
modelSet.add(modelId);
|
|
3326
|
+
}
|
|
3327
|
+
}
|
|
3328
|
+
}
|
|
3329
|
+
const models = modelSet.size > 0 ? [...modelSet] : ["default"];
|
|
3330
|
+
results.push({
|
|
3331
|
+
name: providerId,
|
|
3332
|
+
apiKey: normalizeApiKey(apiKey),
|
|
3333
|
+
format,
|
|
3334
|
+
anthropicBaseUrl: format === "anthropic" ? baseURL : "",
|
|
3335
|
+
openaiBaseUrl: format === "openai" ? baseURL : "",
|
|
3336
|
+
models,
|
|
3337
|
+
sourceTool: "opencode",
|
|
3338
|
+
alreadyExists: false
|
|
3339
|
+
});
|
|
3340
|
+
}
|
|
3341
|
+
return results;
|
|
3342
|
+
}
|
|
3343
|
+
function scanExternalProviders() {
|
|
3344
|
+
const warnings = [];
|
|
3345
|
+
let claudeProviders = [];
|
|
3346
|
+
try {
|
|
3347
|
+
claudeProviders = detectClaudeCodeProviders();
|
|
3348
|
+
} catch (err) {
|
|
3349
|
+
warnings.push(`Claude Code: ${err instanceof Error ? err.message : String(err)}`);
|
|
3350
|
+
}
|
|
3351
|
+
let opencodeProviders = [];
|
|
3352
|
+
try {
|
|
3353
|
+
opencodeProviders = detectOpenCodeProviders();
|
|
3354
|
+
} catch (err) {
|
|
3355
|
+
warnings.push(`OpenCode: ${err instanceof Error ? err.message : String(err)}`);
|
|
3356
|
+
}
|
|
3357
|
+
const allProviders = [...claudeProviders, ...opencodeProviders];
|
|
3358
|
+
const filteredProviders = allProviders.filter((p) => {
|
|
3359
|
+
const url = p.anthropicBaseUrl || p.openaiBaseUrl;
|
|
3360
|
+
return !/(?:localhost|127\.0\.0\.1)/.test(url);
|
|
3361
|
+
});
|
|
3362
|
+
let existing = [];
|
|
3363
|
+
try {
|
|
3364
|
+
existing = getProviders();
|
|
3365
|
+
} catch {
|
|
3366
|
+
}
|
|
3367
|
+
for (const ext of filteredProviders) {
|
|
3368
|
+
ext.alreadyExists = existing.some((p) => {
|
|
3369
|
+
if (p.apiKey !== ext.apiKey) return false;
|
|
3370
|
+
if (ext.format === "anthropic") {
|
|
3371
|
+
return (p.anthropicBaseUrl ?? "") === ext.anthropicBaseUrl;
|
|
3372
|
+
}
|
|
3373
|
+
return (p.openaiBaseUrl ?? "") === ext.openaiBaseUrl;
|
|
3374
|
+
});
|
|
3375
|
+
}
|
|
3376
|
+
return { providers: filteredProviders, warnings };
|
|
3377
|
+
}
|
|
3378
|
+
const Route$a = createFileRoute("/api/providers/scan")({
|
|
3379
|
+
server: {
|
|
3380
|
+
handlers: {
|
|
3381
|
+
GET: () => {
|
|
3382
|
+
try {
|
|
3383
|
+
const result = scanExternalProviders();
|
|
3384
|
+
return Response.json({
|
|
3385
|
+
providers: result.providers,
|
|
3386
|
+
warnings: result.warnings
|
|
3387
|
+
});
|
|
3388
|
+
} catch (err) {
|
|
3389
|
+
return Response.json(
|
|
3390
|
+
{ error: `Scan failed: ${err instanceof Error ? err.message : String(err)}` },
|
|
3391
|
+
{ status: 500 }
|
|
3392
|
+
);
|
|
3393
|
+
}
|
|
3394
|
+
}
|
|
3395
|
+
}
|
|
3396
|
+
}
|
|
3397
|
+
});
|
|
3208
3398
|
union([string(), object({ providers: unknown() })]);
|
|
3209
3399
|
const Route$9 = createFileRoute("/api/providers/import")({
|
|
3210
3400
|
server: {
|
|
@@ -4336,50 +4526,55 @@ const Route = createFileRoute("/api/providers/$providerId/test/log")({
|
|
|
4336
4526
|
}
|
|
4337
4527
|
}
|
|
4338
4528
|
});
|
|
4339
|
-
const IndexRoute = Route$
|
|
4529
|
+
const IndexRoute = Route$j.update({
|
|
4340
4530
|
id: "/",
|
|
4341
4531
|
path: "/",
|
|
4342
|
-
getParentRoute: () => Route$
|
|
4532
|
+
getParentRoute: () => Route$k
|
|
4343
4533
|
});
|
|
4344
|
-
const ProxySplatRoute = Route$
|
|
4534
|
+
const ProxySplatRoute = Route$i.update({
|
|
4345
4535
|
id: "/proxy/$",
|
|
4346
4536
|
path: "/proxy/$",
|
|
4347
|
-
getParentRoute: () => Route$
|
|
4537
|
+
getParentRoute: () => Route$k
|
|
4348
4538
|
});
|
|
4349
|
-
const ApiSessionsRoute = Route$
|
|
4539
|
+
const ApiSessionsRoute = Route$h.update({
|
|
4350
4540
|
id: "/api/sessions",
|
|
4351
4541
|
path: "/api/sessions",
|
|
4352
|
-
getParentRoute: () => Route$
|
|
4542
|
+
getParentRoute: () => Route$k
|
|
4353
4543
|
});
|
|
4354
|
-
const ApiProvidersRoute = Route$
|
|
4544
|
+
const ApiProvidersRoute = Route$g.update({
|
|
4355
4545
|
id: "/api/providers",
|
|
4356
4546
|
path: "/api/providers",
|
|
4357
|
-
getParentRoute: () => Route$
|
|
4547
|
+
getParentRoute: () => Route$k
|
|
4358
4548
|
});
|
|
4359
|
-
const ApiModelsRoute = Route$
|
|
4549
|
+
const ApiModelsRoute = Route$f.update({
|
|
4360
4550
|
id: "/api/models",
|
|
4361
4551
|
path: "/api/models",
|
|
4362
|
-
getParentRoute: () => Route$
|
|
4552
|
+
getParentRoute: () => Route$k
|
|
4363
4553
|
});
|
|
4364
|
-
const ApiMcpRoute = Route$
|
|
4554
|
+
const ApiMcpRoute = Route$e.update({
|
|
4365
4555
|
id: "/api/mcp",
|
|
4366
4556
|
path: "/api/mcp",
|
|
4367
|
-
getParentRoute: () => Route$
|
|
4557
|
+
getParentRoute: () => Route$k
|
|
4368
4558
|
});
|
|
4369
|
-
const ApiLogsRoute = Route$
|
|
4559
|
+
const ApiLogsRoute = Route$d.update({
|
|
4370
4560
|
id: "/api/logs",
|
|
4371
4561
|
path: "/api/logs",
|
|
4372
|
-
getParentRoute: () => Route$
|
|
4562
|
+
getParentRoute: () => Route$k
|
|
4373
4563
|
});
|
|
4374
|
-
const ApiHealthRoute = Route$
|
|
4564
|
+
const ApiHealthRoute = Route$c.update({
|
|
4375
4565
|
id: "/api/health",
|
|
4376
4566
|
path: "/api/health",
|
|
4377
|
-
getParentRoute: () => Route$
|
|
4567
|
+
getParentRoute: () => Route$k
|
|
4378
4568
|
});
|
|
4379
|
-
const ApiConfigRoute = Route$
|
|
4569
|
+
const ApiConfigRoute = Route$b.update({
|
|
4380
4570
|
id: "/api/config",
|
|
4381
4571
|
path: "/api/config",
|
|
4382
|
-
getParentRoute: () => Route$
|
|
4572
|
+
getParentRoute: () => Route$k
|
|
4573
|
+
});
|
|
4574
|
+
const ApiProvidersScanRoute = Route$a.update({
|
|
4575
|
+
id: "/scan",
|
|
4576
|
+
path: "/scan",
|
|
4577
|
+
getParentRoute: () => ApiProvidersRoute
|
|
4383
4578
|
});
|
|
4384
4579
|
const ApiProvidersImportRoute = Route$9.update({
|
|
4385
4580
|
id: "/import",
|
|
@@ -4464,7 +4659,8 @@ const ApiProvidersProviderIdRouteWithChildren = ApiProvidersProviderIdRoute._add
|
|
|
4464
4659
|
const ApiProvidersRouteChildren = {
|
|
4465
4660
|
ApiProvidersProviderIdRoute: ApiProvidersProviderIdRouteWithChildren,
|
|
4466
4661
|
ApiProvidersExportRoute,
|
|
4467
|
-
ApiProvidersImportRoute
|
|
4662
|
+
ApiProvidersImportRoute,
|
|
4663
|
+
ApiProvidersScanRoute
|
|
4468
4664
|
};
|
|
4469
4665
|
const ApiProvidersRouteWithChildren = ApiProvidersRoute._addFileChildren(
|
|
4470
4666
|
ApiProvidersRouteChildren
|
|
@@ -4480,7 +4676,7 @@ const rootRouteChildren = {
|
|
|
4480
4676
|
ApiSessionsRoute,
|
|
4481
4677
|
ProxySplatRoute
|
|
4482
4678
|
};
|
|
4483
|
-
const routeTree = Route$
|
|
4679
|
+
const routeTree = Route$k._addFileChildren(rootRouteChildren)._addFileTypes();
|
|
4484
4680
|
function getRouter() {
|
|
4485
4681
|
const router2 = createRouter({
|
|
4486
4682
|
routeTree,
|
|
@@ -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/mcp", "/api/models", "/api/providers", "/api/sessions", "/proxy/$"], "preloads": ["/assets/main-CC0TDCAo.js"], "assets": [] }, "/": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/index.tsx", "assets": [], "preloads": ["/assets/index-5yrjXc3u.js"] }, "/api/config": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/config.ts", "children": ["/api/config/paths"] }, "/api/health": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/health.ts" }, "/api/logs": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/logs.ts", "children": ["/api/logs/$id", "/api/logs/stream"] }, "/api/mcp": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/mcp.ts" }, "/api/models": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/models.ts" }, "/api/providers": { "filePath": "C:/Users/claw/workspace/llm-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/llm-inspector/src/routes/api/sessions.ts" }, "/proxy/$": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/proxy/$.ts" }, "/api/config/paths": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/config.paths.ts" }, "/api/logs/$id": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/logs.$id.ts", "children": ["/api/logs/$id/chunks", "/api/logs/$id/replay"] }, "/api/logs/stream": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/logs.stream.ts" }, "/api/providers/$providerId": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/providers.$providerId.ts", "children": ["/api/providers/$providerId/test"] }, "/api/providers/export": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/providers.export.ts" }, "/api/providers/import": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/providers.import.ts" }, "/api/providers/scan": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/providers.scan.ts" }, "/api/logs/$id/chunks": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/logs.$id.chunks.ts" }, "/api/logs/$id/replay": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/logs.$id.replay.ts" }, "/api/providers/$providerId/test": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/providers.$providerId.test.ts", "children": ["/api/providers/$providerId/test/log"] }, "/api/providers/$providerId/test/log": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/providers.$providerId.test.log.ts" } }, "clientEntry": "/assets/main-CC0TDCAo.js" });
|
|
2
|
+
export {
|
|
3
|
+
tsrStartManifest
|
|
4
|
+
};
|
package/.output/server/index.mjs
CHANGED
|
@@ -38,51 +38,51 @@ const assets = {
|
|
|
38
38
|
"/assets/alibaba-TTwafVwX.svg": {
|
|
39
39
|
"type": "image/svg+xml",
|
|
40
40
|
"etag": '"171b-6dyV5K8QjiaY35sN9qNprh9zDIs"',
|
|
41
|
-
"mtime": "2026-06-
|
|
41
|
+
"mtime": "2026-06-11T03:31:39.286Z",
|
|
42
42
|
"size": 5915,
|
|
43
43
|
"path": "../public/assets/alibaba-TTwafVwX.svg"
|
|
44
44
|
},
|
|
45
|
-
"/assets/index-
|
|
45
|
+
"/assets/index-o0Ui96SM.css": {
|
|
46
46
|
"type": "text/css; charset=utf-8",
|
|
47
|
-
"etag": '"
|
|
48
|
-
"mtime": "2026-06-
|
|
49
|
-
"size":
|
|
50
|
-
"path": "../public/assets/index-
|
|
47
|
+
"etag": '"14568-DGeUZ4EU9c5XMjbSk2O4NNGHJuM"',
|
|
48
|
+
"mtime": "2026-06-11T03:31:39.287Z",
|
|
49
|
+
"size": 83304,
|
|
50
|
+
"path": "../public/assets/index-o0Ui96SM.css"
|
|
51
51
|
},
|
|
52
52
|
"/assets/minimax-BPMzvuL-.jpeg": {
|
|
53
53
|
"type": "image/jpeg",
|
|
54
54
|
"etag": '"1b06-IwivU89ko5UTMUM1/t7hn4sQK9A"',
|
|
55
|
-
"mtime": "2026-06-
|
|
55
|
+
"mtime": "2026-06-11T03:31:39.287Z",
|
|
56
56
|
"size": 6918,
|
|
57
57
|
"path": "../public/assets/minimax-BPMzvuL-.jpeg"
|
|
58
58
|
},
|
|
59
|
-
"/assets/main-
|
|
59
|
+
"/assets/main-CC0TDCAo.js": {
|
|
60
60
|
"type": "text/javascript; charset=utf-8",
|
|
61
|
-
"etag": '"50599-
|
|
62
|
-
"mtime": "2026-06-
|
|
61
|
+
"etag": '"50599-yA/9KX8Mg2eWotoKunAltiZazRk"',
|
|
62
|
+
"mtime": "2026-06-11T03:31:39.288Z",
|
|
63
63
|
"size": 329113,
|
|
64
|
-
"path": "../public/assets/main-
|
|
64
|
+
"path": "../public/assets/main-CC0TDCAo.js"
|
|
65
65
|
},
|
|
66
66
|
"/assets/zhipuai-BPNAnxo-.svg": {
|
|
67
67
|
"type": "image/svg+xml",
|
|
68
68
|
"etag": '"2bf8-hNaLCTi89nOFCsIIfWpP/jrfo0s"',
|
|
69
|
-
"mtime": "2026-06-
|
|
69
|
+
"mtime": "2026-06-11T03:31:39.287Z",
|
|
70
70
|
"size": 11256,
|
|
71
71
|
"path": "../public/assets/zhipuai-BPNAnxo-.svg"
|
|
72
72
|
},
|
|
73
73
|
"/assets/qwen-CONDcHqt.png": {
|
|
74
74
|
"type": "image/png",
|
|
75
75
|
"etag": '"572c3-cdJAPaHdOvFCGzuaQjagdgOu6XE"',
|
|
76
|
-
"mtime": "2026-06-
|
|
76
|
+
"mtime": "2026-06-11T03:31:39.288Z",
|
|
77
77
|
"size": 357059,
|
|
78
78
|
"path": "../public/assets/qwen-CONDcHqt.png"
|
|
79
79
|
},
|
|
80
|
-
"/assets/index-
|
|
80
|
+
"/assets/index-5yrjXc3u.js": {
|
|
81
81
|
"type": "text/javascript; charset=utf-8",
|
|
82
|
-
"etag": '"
|
|
83
|
-
"mtime": "2026-06-
|
|
84
|
-
"size":
|
|
85
|
-
"path": "../public/assets/index-
|
|
82
|
+
"etag": '"93a3b-bQxOUGLPCMn+pCON1CPT+YUlLVo"',
|
|
83
|
+
"mtime": "2026-06-11T03:31:39.288Z",
|
|
84
|
+
"size": 604731,
|
|
85
|
+
"path": "../public/assets/index-5yrjXc3u.js"
|
|
86
86
|
}
|
|
87
87
|
};
|
|
88
88
|
function readAsset(id) {
|
package/package.json
CHANGED