@tonyclaw/agent-inspector 3.0.13 → 3.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.output/nitro.json +1 -1
- package/.output/public/assets/{CompareDrawer-BRV9ztWd.js → CompareDrawer-UaIxykqz.js} +1 -1
- package/.output/public/assets/ProxyViewerContainer-DlpfcX56.js +106 -0
- package/.output/public/assets/{ReplayDialog-B4b6aD0q.js → ReplayDialog-BFFomU1m.js} +1 -1
- package/.output/public/assets/{RequestAnatomy-ybH1l2Bp.js → RequestAnatomy-DKQJBt_c.js} +1 -1
- package/.output/public/assets/{ResponseView-DpPKgH-Y.js → ResponseView-D7yotmne.js} +2 -2
- package/.output/public/assets/{StreamingChunkSequence-9f_rtMzz.js → StreamingChunkSequence-Da-6WNFG.js} +1 -1
- package/.output/public/assets/{_sessionId-gEmO-b2f.js → _sessionId-ByTXLS-w.js} +1 -1
- package/.output/public/assets/{index-JgHKqbP1.js → index-BrM8t5mc.js} +1 -1
- package/.output/public/assets/index-CGpPRty8.js +1 -0
- package/.output/public/assets/index-HRfrFVYw.css +1 -0
- package/.output/public/assets/{json-viewer-DFpIPmLo.js → json-viewer-DyjXQdVu.js} +1 -1
- package/.output/public/assets/{main-YvdO47OP.js → main-Zv_gjZMb.js} +2 -2
- package/.output/server/_libs/lucide-react.mjs +216 -202
- package/.output/server/{_sessionId-wSX-l7m2.mjs → _sessionId-GcFhWT0i.mjs} +3 -3
- package/.output/server/_ssr/{CompareDrawer-R4d8V0Rv.mjs → CompareDrawer-BV7dw1TN.mjs} +3 -3
- package/.output/server/_ssr/{ProxyViewerContainer-CDtJhGg8.mjs → ProxyViewerContainer-CcgfvaS4.mjs} +931 -393
- package/.output/server/_ssr/{ReplayDialog-BvmLERpW.mjs → ReplayDialog-B7sBKxIO.mjs} +4 -4
- package/.output/server/_ssr/{RequestAnatomy-CH-oO6mY.mjs → RequestAnatomy-s_9Veje2.mjs} +3 -3
- package/.output/server/_ssr/{ResponseView-D7shbJw0.mjs → ResponseView-DsOFPCvF.mjs} +3 -3
- package/.output/server/_ssr/{StreamingChunkSequence-DB2YHGJj.mjs → StreamingChunkSequence-CyA1XtiF.mjs} +3 -3
- package/.output/server/_ssr/{index-CS4QLxuv.mjs → index-CDDRt201.mjs} +2 -2
- package/.output/server/_ssr/index.mjs +2 -2
- package/.output/server/_ssr/{json-viewer-HxOn73kS.mjs → json-viewer-BFV-xtRM.mjs} +3 -3
- package/.output/server/_ssr/{router-l4O3mQ4T.mjs → router-B2Q7vHPM.mjs} +321 -121
- package/.output/server/_tanstack-start-manifest_v-Dm_GmuRz.mjs +4 -0
- package/.output/server/index.mjs +73 -73
- package/README.md +24 -0
- package/package.json +1 -1
- package/src/components/ProxyViewer.tsx +470 -197
- package/src/components/ProxyViewerContainer.tsx +145 -17
- package/src/components/ecosystem/AgentLabDialog.tsx +221 -10
- package/src/components/proxy-viewer/ToolTraceEvents.tsx +36 -10
- package/src/components/proxy-viewer/TurnGroup.tsx +4 -1
- package/src/lib/ecosystemContract.ts +21 -1
- package/src/proxy/ecosystemRegistry.ts +52 -0
- package/src/proxy/ecosystemTasks.ts +95 -1
- package/src/proxy/formats/openai/codexMetadata.ts +61 -0
- package/src/proxy/formats/openai/handler.ts +8 -2
- package/src/routes/api/ecosystem.packages.ts +2 -1
- package/src/routes/api/ecosystem.recipes.$recipeId.run.ts +16 -0
- package/styles/globals.css +54 -0
- package/.output/public/assets/ProxyViewerContainer-BVsv8OFb.js +0 -106
- package/.output/public/assets/index-BIgsQvaF.css +0 -1
- package/.output/public/assets/index-CF3MPYb3.js +0 -1
- package/.output/server/_tanstack-start-manifest_v-Dckf_NHV.mjs +0 -4
|
@@ -65,8 +65,8 @@ import "../_libs/immediate.mjs";
|
|
|
65
65
|
import "../_libs/setimmediate.mjs";
|
|
66
66
|
import "../_libs/pako.mjs";
|
|
67
67
|
const faviconSvg = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20role='img'%20aria-label='Agent%20Inspector'%3e%3cg%20fill='none'%20stroke='%23f59e0b'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'%20%3e%3cpath%20d='M5%2013%20C5%209%208%207%2012%207%20C16%207%2019%209%2019%2013%20C19%2016%2016%2018%2012%2018%20C8%2018%205%2016%205%2013%20Z'%20/%3e%3cpath%20d='M5%2011%20C3.5%209.5%201.5%2010%202%2012.5%20C2.5%2014%204%2013.5%205%2012.5'%20/%3e%3cpath%20d='M19%2011%20C20.5%209.5%2022.5%2010%2022%2012.5%20C21.5%2014%2020%2013.5%2019%2012.5'%20/%3e%3cline%20x1='10'%20y1='7'%20x2='9.5'%20y2='5'%20/%3e%3cline%20x1='14'%20y1='7'%20x2='14.5'%20y2='5'%20/%3e%3cline%20x1='6.5'%20y1='16'%20x2='4.5'%20y2='19.5'%20/%3e%3cline%20x1='9'%20y1='17.5'%20x2='8'%20y2='20.5'%20/%3e%3cline%20x1='15'%20y1='17.5'%20x2='16'%20y2='20.5'%20/%3e%3cline%20x1='17.5'%20y1='16'%20x2='19.5'%20y2='19.5'%20/%3e%3c/g%3e%3ccircle%20cx='9.5'%20cy='4.5'%20r='0.9'%20fill='%23f59e0b'%20/%3e%3ccircle%20cx='14.5'%20cy='4.5'%20r='0.9'%20fill='%23f59e0b'%20/%3e%3c/svg%3e";
|
|
68
|
-
const appCss = "/assets/index-
|
|
69
|
-
const Route$
|
|
68
|
+
const appCss = "/assets/index-HRfrFVYw.css";
|
|
69
|
+
const Route$L = createRootRoute({
|
|
70
70
|
head: () => ({
|
|
71
71
|
meta: [
|
|
72
72
|
{ charSet: "utf-8" },
|
|
@@ -108,8 +108,8 @@ function RootDocument({ children }) {
|
|
|
108
108
|
] })
|
|
109
109
|
] });
|
|
110
110
|
}
|
|
111
|
-
const $$splitComponentImporter$1 = () => import("./index-
|
|
112
|
-
const Route$
|
|
111
|
+
const $$splitComponentImporter$1 = () => import("./index-CDDRt201.mjs");
|
|
112
|
+
const Route$K = createFileRoute("/")({
|
|
113
113
|
component: lazyRouteComponent($$splitComponentImporter$1, "component")
|
|
114
114
|
});
|
|
115
115
|
const B64URL_RE = /^[A-Za-z0-9_-]+$/;
|
|
@@ -151,8 +151,8 @@ function decodeSessionIdFromPath(encoded) {
|
|
|
151
151
|
function getSessionPath(sessionId) {
|
|
152
152
|
return `/session/${encodeSessionIdForPath(sessionId)}`;
|
|
153
153
|
}
|
|
154
|
-
const $$splitComponentImporter = () => import("../_sessionId-
|
|
155
|
-
const Route$
|
|
154
|
+
const $$splitComponentImporter = () => import("../_sessionId-GcFhWT0i.mjs");
|
|
155
|
+
const Route$J = createFileRoute("/session/$sessionId")({
|
|
156
156
|
component: lazyRouteComponent($$splitComponentImporter, "component"),
|
|
157
157
|
parseParams: (params) => ({
|
|
158
158
|
sessionId: decodeSessionIdFromPath(params.sessionId)
|
|
@@ -844,20 +844,20 @@ function extractSessionIdFromHeaders(headers) {
|
|
|
844
844
|
return headers.get("x-agent-inspector-session-id") ?? headers.get("x-session-affinity");
|
|
845
845
|
}
|
|
846
846
|
function extractRequestMetadata(body, headers) {
|
|
847
|
-
const
|
|
848
|
-
if (body === null) return { model: null, sessionId:
|
|
847
|
+
const headerSessionId2 = extractSessionIdFromHeaders(headers);
|
|
848
|
+
if (body === null) return { model: null, sessionId: headerSessionId2 };
|
|
849
849
|
try {
|
|
850
850
|
const json = JSON.parse(body);
|
|
851
851
|
const loose = LooseRequestSchema.safeParse(json);
|
|
852
852
|
if (loose.success) {
|
|
853
853
|
return {
|
|
854
854
|
model: loose.data.model ?? null,
|
|
855
|
-
sessionId: loose.data.metadata?.user_id ??
|
|
855
|
+
sessionId: loose.data.metadata?.user_id ?? headerSessionId2
|
|
856
856
|
};
|
|
857
857
|
}
|
|
858
858
|
} catch {
|
|
859
859
|
}
|
|
860
|
-
return { model: null, sessionId:
|
|
860
|
+
return { model: null, sessionId: headerSessionId2 };
|
|
861
861
|
}
|
|
862
862
|
const StreamingChunkSchema = object({
|
|
863
863
|
index: number(),
|
|
@@ -1625,7 +1625,7 @@ function readStringOrNullField(entry, field) {
|
|
|
1625
1625
|
if (typeof desc.value === "string") return desc.value;
|
|
1626
1626
|
return null;
|
|
1627
1627
|
}
|
|
1628
|
-
function readStringField(entry, field) {
|
|
1628
|
+
function readStringField$1(entry, field) {
|
|
1629
1629
|
return readStringOrNullField(entry, field) ?? "";
|
|
1630
1630
|
}
|
|
1631
1631
|
function readNumberOrNullField(entry, field) {
|
|
@@ -1670,9 +1670,9 @@ function readTextByteLength(entry, bytesField, textField) {
|
|
|
1670
1670
|
function readLogIndexSummary(entry, id) {
|
|
1671
1671
|
return {
|
|
1672
1672
|
id,
|
|
1673
|
-
timestamp: readStringField(entry, "timestamp"),
|
|
1674
|
-
method: readStringField(entry, "method"),
|
|
1675
|
-
path: readStringField(entry, "path"),
|
|
1673
|
+
timestamp: readStringField$1(entry, "timestamp"),
|
|
1674
|
+
method: readStringField$1(entry, "method"),
|
|
1675
|
+
path: readStringField$1(entry, "path"),
|
|
1676
1676
|
model: readStringOrNullField(entry, "model"),
|
|
1677
1677
|
sessionId: readStringOrNullField(entry, "sessionId"),
|
|
1678
1678
|
responseStatus: readNumberOrNullField(entry, "responseStatus"),
|
|
@@ -4551,6 +4551,46 @@ function extractOpenAIStream(raw, log, fallbackModel, collectChunks = true) {
|
|
|
4551
4551
|
}
|
|
4552
4552
|
return extractChatCompletionsStream(events, log, fallbackModel, collectChunks);
|
|
4553
4553
|
}
|
|
4554
|
+
const EMPTY_CODEX_CLIENT_METADATA = {
|
|
4555
|
+
sessionId: null,
|
|
4556
|
+
threadId: null,
|
|
4557
|
+
turnId: null,
|
|
4558
|
+
installationId: null,
|
|
4559
|
+
windowId: null
|
|
4560
|
+
};
|
|
4561
|
+
function readObjectField(value, field) {
|
|
4562
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) return void 0;
|
|
4563
|
+
return Object.getOwnPropertyDescriptor(value, field)?.value;
|
|
4564
|
+
}
|
|
4565
|
+
function readStringField(value, field) {
|
|
4566
|
+
const fieldValue = readObjectField(value, field);
|
|
4567
|
+
return typeof fieldValue === "string" && fieldValue.length > 0 ? fieldValue : null;
|
|
4568
|
+
}
|
|
4569
|
+
function parseNestedTurnMetadata(value) {
|
|
4570
|
+
if (typeof value !== "string" || value.length === 0) return null;
|
|
4571
|
+
try {
|
|
4572
|
+
return JSON.parse(value);
|
|
4573
|
+
} catch {
|
|
4574
|
+
return null;
|
|
4575
|
+
}
|
|
4576
|
+
}
|
|
4577
|
+
function extractCodexClientMetadata(rawRequest) {
|
|
4578
|
+
const clientMetadata = readObjectField(rawRequest, "client_metadata");
|
|
4579
|
+
if (clientMetadata === void 0) return EMPTY_CODEX_CLIENT_METADATA;
|
|
4580
|
+
const turnMetadata = parseNestedTurnMetadata(
|
|
4581
|
+
readObjectField(clientMetadata, "x-codex-turn-metadata")
|
|
4582
|
+
);
|
|
4583
|
+
return {
|
|
4584
|
+
sessionId: readStringField(clientMetadata, "session_id") ?? readStringField(turnMetadata, "session_id"),
|
|
4585
|
+
threadId: readStringField(clientMetadata, "thread_id") ?? readStringField(turnMetadata, "thread_id"),
|
|
4586
|
+
turnId: readStringField(clientMetadata, "turn_id") ?? readStringField(turnMetadata, "turn_id"),
|
|
4587
|
+
installationId: readStringField(clientMetadata, "x-codex-installation-id") ?? readStringField(turnMetadata, "installation_id"),
|
|
4588
|
+
windowId: readStringField(clientMetadata, "x-codex-window-id") ?? readStringField(turnMetadata, "window_id")
|
|
4589
|
+
};
|
|
4590
|
+
}
|
|
4591
|
+
function extractCodexSessionId(rawRequest) {
|
|
4592
|
+
return extractCodexClientMetadata(rawRequest).sessionId;
|
|
4593
|
+
}
|
|
4554
4594
|
function emptyTokens() {
|
|
4555
4595
|
return {
|
|
4556
4596
|
inputTokens: null,
|
|
@@ -4559,6 +4599,10 @@ function emptyTokens() {
|
|
|
4559
4599
|
cacheReadInputTokens: null
|
|
4560
4600
|
};
|
|
4561
4601
|
}
|
|
4602
|
+
function headerSessionId(headers) {
|
|
4603
|
+
if (headers === void 0) return null;
|
|
4604
|
+
return headers.get("x-agent-inspector-session-id") ?? headers.get("x-session-affinity");
|
|
4605
|
+
}
|
|
4562
4606
|
const OpenAIFormatHandler = {
|
|
4563
4607
|
format: "openai",
|
|
4564
4608
|
parseRequest(rawBody, headers) {
|
|
@@ -4568,14 +4612,14 @@ const OpenAIFormatHandler = {
|
|
|
4568
4612
|
if (result.success) {
|
|
4569
4613
|
return {
|
|
4570
4614
|
model: result.data.model,
|
|
4571
|
-
sessionId:
|
|
4615
|
+
sessionId: extractCodexSessionId(json) ?? headerSessionId(headers)
|
|
4572
4616
|
};
|
|
4573
4617
|
}
|
|
4574
4618
|
const responsesResult = OpenAIResponsesRequestSchema.safeParse(json);
|
|
4575
4619
|
if (responsesResult.success) {
|
|
4576
4620
|
return {
|
|
4577
4621
|
model: responsesResult.data.model,
|
|
4578
|
-
sessionId:
|
|
4622
|
+
sessionId: extractCodexSessionId(json) ?? headerSessionId(headers)
|
|
4579
4623
|
};
|
|
4580
4624
|
}
|
|
4581
4625
|
return null;
|
|
@@ -7581,7 +7625,7 @@ async function handleProxy(req) {
|
|
|
7581
7625
|
}
|
|
7582
7626
|
return handleStreamingResponse(upstreamRes, req, startTime, upstreamUrl, log, captureFullDetails);
|
|
7583
7627
|
}
|
|
7584
|
-
const Route$
|
|
7628
|
+
const Route$I = createFileRoute("/proxy/$")({
|
|
7585
7629
|
server: {
|
|
7586
7630
|
handlers: {
|
|
7587
7631
|
GET: ({ request }) => handleProxy(request),
|
|
@@ -7602,7 +7646,7 @@ function parsePositiveInt$4(value) {
|
|
|
7602
7646
|
function parseBooleanFlag(value) {
|
|
7603
7647
|
return value === "1" || value === "true";
|
|
7604
7648
|
}
|
|
7605
|
-
const Route$
|
|
7649
|
+
const Route$H = createFileRoute("/api/sessions")({
|
|
7606
7650
|
server: {
|
|
7607
7651
|
handlers: {
|
|
7608
7652
|
GET: async ({ request }) => {
|
|
@@ -9067,7 +9111,7 @@ function parsePositiveInt$3(value, fallback) {
|
|
|
9067
9111
|
if (!Number.isInteger(parsed) || parsed < 1) return fallback;
|
|
9068
9112
|
return parsed;
|
|
9069
9113
|
}
|
|
9070
|
-
const Route$
|
|
9114
|
+
const Route$G = createFileRoute("/api/runs")({
|
|
9071
9115
|
server: {
|
|
9072
9116
|
handlers: {
|
|
9073
9117
|
GET: ({ request }) => {
|
|
@@ -9113,7 +9157,7 @@ const ProviderInputSchema = object({
|
|
|
9113
9157
|
modelMetadata: array(ProviderModelMetadataSchema).optional(),
|
|
9114
9158
|
source: _enum(["company", "personal"]).optional()
|
|
9115
9159
|
});
|
|
9116
|
-
const Route$
|
|
9160
|
+
const Route$F = createFileRoute("/api/providers")({
|
|
9117
9161
|
server: {
|
|
9118
9162
|
handlers: {
|
|
9119
9163
|
GET: ({ request }) => {
|
|
@@ -9148,7 +9192,7 @@ const Route$E = createFileRoute("/api/providers")({
|
|
|
9148
9192
|
}
|
|
9149
9193
|
}
|
|
9150
9194
|
});
|
|
9151
|
-
const Route$
|
|
9195
|
+
const Route$E = createFileRoute("/api/models")({
|
|
9152
9196
|
server: {
|
|
9153
9197
|
handlers: {
|
|
9154
9198
|
GET: () => Response.json(getModels())
|
|
@@ -9156,7 +9200,7 @@ const Route$D = createFileRoute("/api/models")({
|
|
|
9156
9200
|
}
|
|
9157
9201
|
});
|
|
9158
9202
|
const name = "@tonyclaw/agent-inspector";
|
|
9159
|
-
const version = "3.0.
|
|
9203
|
+
const version = "3.0.15";
|
|
9160
9204
|
const packageJson = {
|
|
9161
9205
|
name,
|
|
9162
9206
|
version
|
|
@@ -12263,7 +12307,7 @@ const PROMPT_NAMES = [
|
|
|
12263
12307
|
"inspector_generate_group_report",
|
|
12264
12308
|
"inspector_extract_repro_steps"
|
|
12265
12309
|
];
|
|
12266
|
-
const Route$
|
|
12310
|
+
const Route$D = createFileRoute("/api/mcp")({
|
|
12267
12311
|
server: {
|
|
12268
12312
|
handlers: {
|
|
12269
12313
|
// The SDK may issue either POST, GET, or DELETE. TanStack Start only
|
|
@@ -12382,7 +12426,7 @@ function parseOptionalPositiveInt(value) {
|
|
|
12382
12426
|
if (!Number.isInteger(parsed) || parsed < 1) return { ok: false };
|
|
12383
12427
|
return { ok: true, value: parsed };
|
|
12384
12428
|
}
|
|
12385
|
-
const Route$
|
|
12429
|
+
const Route$C = createFileRoute("/api/logs")({
|
|
12386
12430
|
server: {
|
|
12387
12431
|
handlers: {
|
|
12388
12432
|
GET: async ({ request }) => {
|
|
@@ -12500,7 +12544,7 @@ const Route$B = createFileRoute("/api/logs")({
|
|
|
12500
12544
|
}
|
|
12501
12545
|
});
|
|
12502
12546
|
logger.debug("Health endpoint loaded");
|
|
12503
|
-
const Route$
|
|
12547
|
+
const Route$B = createFileRoute("/api/health")({
|
|
12504
12548
|
server: {
|
|
12505
12549
|
handlers: {
|
|
12506
12550
|
GET: () => {
|
|
@@ -12537,7 +12581,7 @@ function readDeleteEvidenceFlag$1(request) {
|
|
|
12537
12581
|
return { ok: false };
|
|
12538
12582
|
}
|
|
12539
12583
|
}
|
|
12540
|
-
const Route$
|
|
12584
|
+
const Route$A = createFileRoute("/api/groups")({
|
|
12541
12585
|
server: {
|
|
12542
12586
|
handlers: {
|
|
12543
12587
|
GET: () => Response.json(listInspectorGroups()),
|
|
@@ -12581,7 +12625,7 @@ const RuntimeConfigPatchSchema = object({
|
|
|
12581
12625
|
}).strict().refine((v) => Object.keys(v).length > 0, {
|
|
12582
12626
|
message: "At least one field must be provided"
|
|
12583
12627
|
});
|
|
12584
|
-
const Route$
|
|
12628
|
+
const Route$z = createFileRoute("/api/config")({
|
|
12585
12629
|
server: {
|
|
12586
12630
|
handlers: {
|
|
12587
12631
|
GET: () => {
|
|
@@ -13190,7 +13234,7 @@ function parseFilters(url) {
|
|
|
13190
13234
|
source: sourceResult.success ? sourceResult.data : void 0
|
|
13191
13235
|
};
|
|
13192
13236
|
}
|
|
13193
|
-
const Route$
|
|
13237
|
+
const Route$y = createFileRoute("/api/alerts")({
|
|
13194
13238
|
server: {
|
|
13195
13239
|
handlers: {
|
|
13196
13240
|
GET: async ({ request }) => {
|
|
@@ -13215,7 +13259,7 @@ async function readJsonBody$4(request) {
|
|
|
13215
13259
|
return { ok: false };
|
|
13216
13260
|
}
|
|
13217
13261
|
}
|
|
13218
|
-
const Route$
|
|
13262
|
+
const Route$x = createFileRoute("/api/runs/$runId")({
|
|
13219
13263
|
server: {
|
|
13220
13264
|
handlers: {
|
|
13221
13265
|
GET: ({ params }) => {
|
|
@@ -13690,7 +13734,7 @@ function scanExternalProviders() {
|
|
|
13690
13734
|
}
|
|
13691
13735
|
return { providers: filteredProviders, warnings };
|
|
13692
13736
|
}
|
|
13693
|
-
const Route$
|
|
13737
|
+
const Route$w = createFileRoute("/api/providers/scan")({
|
|
13694
13738
|
server: {
|
|
13695
13739
|
handlers: {
|
|
13696
13740
|
GET: () => {
|
|
@@ -13711,7 +13755,7 @@ const Route$v = createFileRoute("/api/providers/scan")({
|
|
|
13711
13755
|
}
|
|
13712
13756
|
});
|
|
13713
13757
|
union([string(), object({ providers: unknown() })]);
|
|
13714
|
-
const Route$
|
|
13758
|
+
const Route$v = createFileRoute("/api/providers/import")({
|
|
13715
13759
|
server: {
|
|
13716
13760
|
handlers: {
|
|
13717
13761
|
POST: async ({ request }) => {
|
|
@@ -13744,7 +13788,7 @@ const Route$u = createFileRoute("/api/providers/import")({
|
|
|
13744
13788
|
}
|
|
13745
13789
|
}
|
|
13746
13790
|
});
|
|
13747
|
-
const Route$
|
|
13791
|
+
const Route$u = createFileRoute("/api/providers/export")({
|
|
13748
13792
|
server: {
|
|
13749
13793
|
handlers: {
|
|
13750
13794
|
GET: ({ request }) => {
|
|
@@ -13778,7 +13822,7 @@ const ProviderUpdateSchema = object({
|
|
|
13778
13822
|
modelMetadata: array(ProviderModelMetadataSchema).optional(),
|
|
13779
13823
|
source: _enum(["company", "personal"]).optional()
|
|
13780
13824
|
});
|
|
13781
|
-
const Route$
|
|
13825
|
+
const Route$t = createFileRoute("/api/providers/$providerId")({
|
|
13782
13826
|
server: {
|
|
13783
13827
|
handlers: {
|
|
13784
13828
|
GET: ({ params, request }) => {
|
|
@@ -13813,7 +13857,7 @@ const Route$s = createFileRoute("/api/providers/$providerId")({
|
|
|
13813
13857
|
}
|
|
13814
13858
|
});
|
|
13815
13859
|
const INITIAL_STREAM_LOG_LIMIT = 100;
|
|
13816
|
-
const Route$
|
|
13860
|
+
const Route$s = createFileRoute("/api/logs/stream")({
|
|
13817
13861
|
server: {
|
|
13818
13862
|
handlers: {
|
|
13819
13863
|
GET: ({ request }) => {
|
|
@@ -14253,7 +14297,7 @@ function sessionNameFromImportFileName(fileName) {
|
|
|
14253
14297
|
function isUploadedFile(value) {
|
|
14254
14298
|
return value instanceof File;
|
|
14255
14299
|
}
|
|
14256
|
-
const Route$
|
|
14300
|
+
const Route$r = createFileRoute("/api/logs/import")({
|
|
14257
14301
|
server: {
|
|
14258
14302
|
handlers: {
|
|
14259
14303
|
POST: async ({ request }) => {
|
|
@@ -14290,7 +14334,7 @@ const Route$q = createFileRoute("/api/logs/import")({
|
|
|
14290
14334
|
}
|
|
14291
14335
|
}
|
|
14292
14336
|
});
|
|
14293
|
-
const Route$
|
|
14337
|
+
const Route$q = createFileRoute("/api/logs/$id")({
|
|
14294
14338
|
server: {
|
|
14295
14339
|
handlers: {
|
|
14296
14340
|
GET: async ({ params }) => {
|
|
@@ -14827,7 +14871,7 @@ const SearchBodySchema = object({
|
|
|
14827
14871
|
query: string().min(1),
|
|
14828
14872
|
project: string().optional()
|
|
14829
14873
|
});
|
|
14830
|
-
const Route$
|
|
14874
|
+
const Route$p = createFileRoute("/api/knowledge/search")({
|
|
14831
14875
|
server: {
|
|
14832
14876
|
handlers: {
|
|
14833
14877
|
GET: async ({ request }) => {
|
|
@@ -14849,7 +14893,7 @@ const Route$o = createFileRoute("/api/knowledge/search")({
|
|
|
14849
14893
|
}
|
|
14850
14894
|
}
|
|
14851
14895
|
});
|
|
14852
|
-
const Route$
|
|
14896
|
+
const Route$o = createFileRoute("/api/knowledge/project-context")({
|
|
14853
14897
|
server: {
|
|
14854
14898
|
handlers: {
|
|
14855
14899
|
GET: async ({ request }) => {
|
|
@@ -14931,7 +14975,7 @@ function updateCandidateDraft(id, updates) {
|
|
|
14931
14975
|
candidates.set(id, updated);
|
|
14932
14976
|
return updated;
|
|
14933
14977
|
}
|
|
14934
|
-
const Route$
|
|
14978
|
+
const Route$n = createFileRoute("/api/knowledge/candidates")({
|
|
14935
14979
|
server: {
|
|
14936
14980
|
handlers: {
|
|
14937
14981
|
GET: () => Response.json({ candidates: listCandidates() })
|
|
@@ -14966,7 +15010,7 @@ function readDeleteEvidenceFlag(request) {
|
|
|
14966
15010
|
return { ok: false };
|
|
14967
15011
|
}
|
|
14968
15012
|
}
|
|
14969
|
-
const Route$
|
|
15013
|
+
const Route$m = createFileRoute("/api/groups/$groupId")({
|
|
14970
15014
|
server: {
|
|
14971
15015
|
handlers: {
|
|
14972
15016
|
GET: ({ params }) => {
|
|
@@ -15102,6 +15146,48 @@ const RUNNER_PRESETS = [
|
|
|
15102
15146
|
agentsDir: ".claude/agents"
|
|
15103
15147
|
}
|
|
15104
15148
|
];
|
|
15149
|
+
const LAB_RECIPES = [
|
|
15150
|
+
{
|
|
15151
|
+
id: "inspector-mcp-smoke",
|
|
15152
|
+
title: "Inspector MCP smoke",
|
|
15153
|
+
stage: "Validate",
|
|
15154
|
+
packageId: "eval-harness",
|
|
15155
|
+
description: "Check that the running Inspector exposes the MCP tools eval-harness expects.",
|
|
15156
|
+
command: "npx @tonyclaw/eval-harness check-inspector-mcp",
|
|
15157
|
+
requiresSession: false,
|
|
15158
|
+
runnable: true
|
|
15159
|
+
},
|
|
15160
|
+
{
|
|
15161
|
+
id: "session-evidence-smoke",
|
|
15162
|
+
title: "Session evidence smoke",
|
|
15163
|
+
stage: "Capture",
|
|
15164
|
+
packageId: "eval-harness",
|
|
15165
|
+
description: "Create a lightweight Inspector evidence run from the latest captured logs or selected session.",
|
|
15166
|
+
command: 'npx @tonyclaw/eval-harness inspector-smoke --title "TonyClaw Lab smoke" --latest-log-limit 5',
|
|
15167
|
+
requiresSession: false,
|
|
15168
|
+
runnable: true
|
|
15169
|
+
},
|
|
15170
|
+
{
|
|
15171
|
+
id: "runner-presets-json",
|
|
15172
|
+
title: "Runner presets JSON",
|
|
15173
|
+
stage: "Connect",
|
|
15174
|
+
packageId: "eval-harness",
|
|
15175
|
+
description: "Export runner adapter baselines as machine-readable JSON for CI or docs.",
|
|
15176
|
+
command: "npx @tonyclaw/eval-harness runner-presets --format json",
|
|
15177
|
+
requiresSession: false,
|
|
15178
|
+
runnable: true
|
|
15179
|
+
},
|
|
15180
|
+
{
|
|
15181
|
+
id: "local-smoke-batch",
|
|
15182
|
+
title: "Local smoke batch",
|
|
15183
|
+
stage: "Evaluate",
|
|
15184
|
+
packageId: "eval-harness",
|
|
15185
|
+
description: "Run one short local Jenkins-like evaluation using explicit project/work directories.",
|
|
15186
|
+
command: "npx @tonyclaw/eval-harness run-once --smoke --project-source <project> --work-source <work> --count 1 --parallel 1",
|
|
15187
|
+
requiresSession: false,
|
|
15188
|
+
runnable: false
|
|
15189
|
+
}
|
|
15190
|
+
];
|
|
15105
15191
|
const NPM_TIMEOUT_MS = 4e3;
|
|
15106
15192
|
function runNpm(args) {
|
|
15107
15193
|
return new Promise((resolve2) => {
|
|
@@ -15214,10 +15300,14 @@ async function listEcosystemPackages() {
|
|
|
15214
15300
|
function findEcosystemPackage(packageId) {
|
|
15215
15301
|
return ECOSYSTEM_PACKAGES.find((definition) => definition.id === packageId) ?? null;
|
|
15216
15302
|
}
|
|
15303
|
+
function findEcosystemRecipe(recipeId) {
|
|
15304
|
+
return LAB_RECIPES.find((recipe) => recipe.id === recipeId) ?? null;
|
|
15305
|
+
}
|
|
15217
15306
|
const MAX_TASKS = 50;
|
|
15218
15307
|
const OUTPUT_LIMIT = 4e4;
|
|
15219
15308
|
const INSTALL_TIMEOUT_MS = 12e4;
|
|
15220
15309
|
const HELP_TIMEOUT_MS = 3e4;
|
|
15310
|
+
const RECIPE_TIMEOUT_MS = 9e4;
|
|
15221
15311
|
const tasks = /* @__PURE__ */ new Map();
|
|
15222
15312
|
function nowIso() {
|
|
15223
15313
|
return (/* @__PURE__ */ new Date()).toISOString();
|
|
@@ -15246,7 +15336,30 @@ function packageActionArgs(action, npmName) {
|
|
|
15246
15336
|
return ["exec", "--yes", npmName, "--", "--help"];
|
|
15247
15337
|
case "runner-presets":
|
|
15248
15338
|
return ["exec", "--yes", "@tonyclaw/eval-harness", "--", "runner-presets"];
|
|
15339
|
+
case "recipe":
|
|
15340
|
+
return ["exec", "--yes", npmName, "--", "--help"];
|
|
15341
|
+
}
|
|
15342
|
+
}
|
|
15343
|
+
function recipeActionArgs(recipeId) {
|
|
15344
|
+
const execPrefix = ["exec", "--yes", "@tonyclaw/eval-harness", "--"];
|
|
15345
|
+
switch (recipeId) {
|
|
15346
|
+
case "inspector-mcp-smoke":
|
|
15347
|
+
return [...execPrefix, "check-inspector-mcp"];
|
|
15348
|
+
case "session-evidence-smoke":
|
|
15349
|
+
return [
|
|
15350
|
+
...execPrefix,
|
|
15351
|
+
"inspector-smoke",
|
|
15352
|
+
"--title",
|
|
15353
|
+
"TonyClaw Lab smoke",
|
|
15354
|
+
"--latest-log-limit",
|
|
15355
|
+
"5"
|
|
15356
|
+
];
|
|
15357
|
+
case "runner-presets-json":
|
|
15358
|
+
return [...execPrefix, "runner-presets", "--format", "json"];
|
|
15359
|
+
case "local-smoke-batch":
|
|
15360
|
+
return null;
|
|
15249
15361
|
}
|
|
15362
|
+
return null;
|
|
15250
15363
|
}
|
|
15251
15364
|
function packageActionTimeout(action) {
|
|
15252
15365
|
switch (action) {
|
|
@@ -15256,6 +15369,8 @@ function packageActionTimeout(action) {
|
|
|
15256
15369
|
case "help":
|
|
15257
15370
|
case "runner-presets":
|
|
15258
15371
|
return HELP_TIMEOUT_MS;
|
|
15372
|
+
case "recipe":
|
|
15373
|
+
return RECIPE_TIMEOUT_MS;
|
|
15259
15374
|
}
|
|
15260
15375
|
}
|
|
15261
15376
|
function taskCommand(args) {
|
|
@@ -15282,6 +15397,7 @@ function startEcosystemTask(packageId, action) {
|
|
|
15282
15397
|
id: randomUUID(),
|
|
15283
15398
|
packageId: definition.id,
|
|
15284
15399
|
npmName: definition.npmName,
|
|
15400
|
+
recipeId: null,
|
|
15285
15401
|
action,
|
|
15286
15402
|
status: "queued",
|
|
15287
15403
|
command: taskCommand(args),
|
|
@@ -15333,7 +15449,71 @@ ${error.message}
|
|
|
15333
15449
|
});
|
|
15334
15450
|
return task;
|
|
15335
15451
|
}
|
|
15336
|
-
|
|
15452
|
+
function startEcosystemRecipeTask(recipeId) {
|
|
15453
|
+
const recipe = findEcosystemRecipe(recipeId);
|
|
15454
|
+
if (recipe === null) return null;
|
|
15455
|
+
if (!recipe.runnable) return null;
|
|
15456
|
+
const definition = findEcosystemPackage(recipe.packageId);
|
|
15457
|
+
if (definition === null) return null;
|
|
15458
|
+
const args = recipeActionArgs(recipe.id);
|
|
15459
|
+
if (args === null) return null;
|
|
15460
|
+
const task = {
|
|
15461
|
+
id: randomUUID(),
|
|
15462
|
+
packageId: definition.id,
|
|
15463
|
+
npmName: definition.npmName,
|
|
15464
|
+
recipeId: recipe.id,
|
|
15465
|
+
action: "recipe",
|
|
15466
|
+
status: "queued",
|
|
15467
|
+
command: taskCommand(args),
|
|
15468
|
+
output: "",
|
|
15469
|
+
createdAt: nowIso(),
|
|
15470
|
+
startedAt: null,
|
|
15471
|
+
finishedAt: null,
|
|
15472
|
+
exitCode: null,
|
|
15473
|
+
error: null
|
|
15474
|
+
};
|
|
15475
|
+
rememberTask(task);
|
|
15476
|
+
const spawnCommand = npmSpawnCommand(args);
|
|
15477
|
+
const child = spawn(spawnCommand.command, spawnCommand.args, {
|
|
15478
|
+
windowsHide: true,
|
|
15479
|
+
shell: false,
|
|
15480
|
+
stdio: ["ignore", "pipe", "pipe"]
|
|
15481
|
+
});
|
|
15482
|
+
const timeout = setTimeout(() => {
|
|
15483
|
+
child.kill();
|
|
15484
|
+
appendTaskOutput(task, `
|
|
15485
|
+
Timed out after ${String(RECIPE_TIMEOUT_MS / 1e3)}s.
|
|
15486
|
+
`);
|
|
15487
|
+
}, RECIPE_TIMEOUT_MS);
|
|
15488
|
+
task.status = "running";
|
|
15489
|
+
task.startedAt = nowIso();
|
|
15490
|
+
appendTaskOutput(task, `$ ${task.command}
|
|
15491
|
+
`);
|
|
15492
|
+
child.stdout.on("data", (chunk) => {
|
|
15493
|
+
appendTaskOutput(task, chunk.toString("utf8"));
|
|
15494
|
+
});
|
|
15495
|
+
child.stderr.on("data", (chunk) => {
|
|
15496
|
+
appendTaskOutput(task, chunk.toString("utf8"));
|
|
15497
|
+
});
|
|
15498
|
+
child.on("error", (error) => {
|
|
15499
|
+
clearTimeout(timeout);
|
|
15500
|
+
appendTaskOutput(task, `
|
|
15501
|
+
${error.message}
|
|
15502
|
+
`);
|
|
15503
|
+
completeTask(task, "failed", null, error.message);
|
|
15504
|
+
});
|
|
15505
|
+
child.on("close", (code) => {
|
|
15506
|
+
clearTimeout(timeout);
|
|
15507
|
+
if (task.status === "failed") return;
|
|
15508
|
+
if (code === 0) {
|
|
15509
|
+
completeTask(task, "succeeded", code, null);
|
|
15510
|
+
return;
|
|
15511
|
+
}
|
|
15512
|
+
completeTask(task, "failed", code, `Command exited with code ${String(code ?? "unknown")}`);
|
|
15513
|
+
});
|
|
15514
|
+
return task;
|
|
15515
|
+
}
|
|
15516
|
+
const Route$l = createFileRoute("/api/ecosystem/tasks")({
|
|
15337
15517
|
server: {
|
|
15338
15518
|
handlers: {
|
|
15339
15519
|
GET: () => {
|
|
@@ -15342,20 +15522,21 @@ const Route$k = createFileRoute("/api/ecosystem/tasks")({
|
|
|
15342
15522
|
}
|
|
15343
15523
|
}
|
|
15344
15524
|
});
|
|
15345
|
-
const Route$
|
|
15525
|
+
const Route$k = createFileRoute("/api/ecosystem/packages")({
|
|
15346
15526
|
server: {
|
|
15347
15527
|
handlers: {
|
|
15348
15528
|
GET: async () => {
|
|
15349
15529
|
return Response.json({
|
|
15350
15530
|
checkedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
15351
15531
|
packages: await listEcosystemPackages(),
|
|
15352
|
-
runnerPresets: RUNNER_PRESETS
|
|
15532
|
+
runnerPresets: RUNNER_PRESETS,
|
|
15533
|
+
recipes: LAB_RECIPES
|
|
15353
15534
|
});
|
|
15354
15535
|
}
|
|
15355
15536
|
}
|
|
15356
15537
|
}
|
|
15357
15538
|
});
|
|
15358
|
-
const Route$
|
|
15539
|
+
const Route$j = createFileRoute("/api/config/paths")({
|
|
15359
15540
|
server: {
|
|
15360
15541
|
handlers: {
|
|
15361
15542
|
GET: () => {
|
|
@@ -15372,7 +15553,7 @@ function parsePositiveInt(value) {
|
|
|
15372
15553
|
if (!Number.isInteger(parsed) || parsed < 1) return void 0;
|
|
15373
15554
|
return parsed;
|
|
15374
15555
|
}
|
|
15375
|
-
const Route$
|
|
15556
|
+
const Route$i = createFileRoute("/api/alerts/summary")({
|
|
15376
15557
|
server: {
|
|
15377
15558
|
handlers: {
|
|
15378
15559
|
GET: async ({ request }) => {
|
|
@@ -15395,7 +15576,7 @@ async function readJsonBody$2(request) {
|
|
|
15395
15576
|
return { ok: false };
|
|
15396
15577
|
}
|
|
15397
15578
|
}
|
|
15398
|
-
const Route$
|
|
15579
|
+
const Route$h = createFileRoute("/api/runs/$runId/evidence")({
|
|
15399
15580
|
server: {
|
|
15400
15581
|
handlers: {
|
|
15401
15582
|
GET: ({ params }) => {
|
|
@@ -16125,7 +16306,7 @@ async function testStreamingEndpoint(baseUrl, provider, path2, model, protocol)
|
|
|
16125
16306
|
clearTimeout(timeoutId);
|
|
16126
16307
|
}
|
|
16127
16308
|
}
|
|
16128
|
-
const Route$
|
|
16309
|
+
const Route$g = createFileRoute("/api/providers/$providerId/test")({
|
|
16129
16310
|
server: {
|
|
16130
16311
|
handlers: {
|
|
16131
16312
|
POST: async ({ params }) => {
|
|
@@ -16266,7 +16447,7 @@ async function readRegistryJson(response) {
|
|
|
16266
16447
|
return null;
|
|
16267
16448
|
}
|
|
16268
16449
|
}
|
|
16269
|
-
const Route$
|
|
16450
|
+
const Route$f = createFileRoute("/api/providers/$providerId/model-metadata")({
|
|
16270
16451
|
server: {
|
|
16271
16452
|
handlers: {
|
|
16272
16453
|
POST: async ({ params, request }) => {
|
|
@@ -16356,7 +16537,7 @@ const Route$e = createFileRoute("/api/providers/$providerId/model-metadata")({
|
|
|
16356
16537
|
const ReplayRequestSchema = object({
|
|
16357
16538
|
modifiedBody: string()
|
|
16358
16539
|
});
|
|
16359
|
-
const Route$
|
|
16540
|
+
const Route$e = createFileRoute("/api/logs/$id/replay")({
|
|
16360
16541
|
server: {
|
|
16361
16542
|
handlers: {
|
|
16362
16543
|
POST: async ({ params, request }) => {
|
|
@@ -16557,7 +16738,7 @@ const Route$d = createFileRoute("/api/logs/$id/replay")({
|
|
|
16557
16738
|
}
|
|
16558
16739
|
}
|
|
16559
16740
|
});
|
|
16560
|
-
const Route$
|
|
16741
|
+
const Route$d = createFileRoute("/api/logs/$id/chunks")({
|
|
16561
16742
|
server: {
|
|
16562
16743
|
handlers: {
|
|
16563
16744
|
GET: async ({ params }) => {
|
|
@@ -16664,7 +16845,7 @@ function parseIntegerParam(value, fallback) {
|
|
|
16664
16845
|
if (!Number.isInteger(parsed)) return fallback;
|
|
16665
16846
|
return parsed;
|
|
16666
16847
|
}
|
|
16667
|
-
const Route$
|
|
16848
|
+
const Route$c = createFileRoute("/api/logs/$id/body")({
|
|
16668
16849
|
server: {
|
|
16669
16850
|
handlers: {
|
|
16670
16851
|
GET: async ({ params, request }) => {
|
|
@@ -16702,7 +16883,7 @@ const CandidateUpdateSchema = object({
|
|
|
16702
16883
|
object({
|
|
16703
16884
|
candidate: KnowledgeCandidateSchema
|
|
16704
16885
|
});
|
|
16705
|
-
const Route$
|
|
16886
|
+
const Route$b = createFileRoute("/api/knowledge/candidates/$candidateId")({
|
|
16706
16887
|
server: {
|
|
16707
16888
|
handlers: {
|
|
16708
16889
|
PATCH: async ({ params, request }) => {
|
|
@@ -16739,7 +16920,7 @@ async function readJsonBody$1(request) {
|
|
|
16739
16920
|
return { ok: false };
|
|
16740
16921
|
}
|
|
16741
16922
|
}
|
|
16742
|
-
const Route$
|
|
16923
|
+
const Route$a = createFileRoute("/api/groups/$groupId/sessions")({
|
|
16743
16924
|
server: {
|
|
16744
16925
|
handlers: {
|
|
16745
16926
|
GET: ({ params }) => {
|
|
@@ -16779,7 +16960,7 @@ async function readJsonBody(request) {
|
|
|
16779
16960
|
return { ok: false };
|
|
16780
16961
|
}
|
|
16781
16962
|
}
|
|
16782
|
-
const Route$
|
|
16963
|
+
const Route$9 = createFileRoute("/api/groups/$groupId/evidence")({
|
|
16783
16964
|
server: {
|
|
16784
16965
|
handlers: {
|
|
16785
16966
|
GET: ({ params }) => {
|
|
@@ -16814,7 +16995,7 @@ const Route$8 = createFileRoute("/api/groups/$groupId/evidence")({
|
|
|
16814
16995
|
}
|
|
16815
16996
|
}
|
|
16816
16997
|
});
|
|
16817
|
-
const Route$
|
|
16998
|
+
const Route$8 = createFileRoute("/api/ecosystem/tasks/$taskId")({
|
|
16818
16999
|
server: {
|
|
16819
17000
|
handlers: {
|
|
16820
17001
|
GET: ({ params }) => {
|
|
@@ -17176,7 +17357,7 @@ async function logModelResults(displayName, providerName, providerSessionId, ant
|
|
|
17176
17357
|
}
|
|
17177
17358
|
}
|
|
17178
17359
|
}
|
|
17179
|
-
const Route$
|
|
17360
|
+
const Route$7 = createFileRoute("/api/providers/$providerId/test/log")({
|
|
17180
17361
|
server: {
|
|
17181
17362
|
handlers: {
|
|
17182
17363
|
POST: async ({ params, request }) => {
|
|
@@ -17316,7 +17497,7 @@ function getLogsForCandidateScope(scopeId) {
|
|
|
17316
17497
|
if (direct.length > 0) return direct;
|
|
17317
17498
|
return getFilteredLogs().filter((log) => getCandidateScopeId(log) === scopeId);
|
|
17318
17499
|
}
|
|
17319
|
-
const Route$
|
|
17500
|
+
const Route$6 = createFileRoute("/api/knowledge/sessions/$sessionId/candidates")({
|
|
17320
17501
|
server: {
|
|
17321
17502
|
handlers: {
|
|
17322
17503
|
POST: ({ params }) => {
|
|
@@ -17327,7 +17508,7 @@ const Route$5 = createFileRoute("/api/knowledge/sessions/$sessionId/candidates")
|
|
|
17327
17508
|
}
|
|
17328
17509
|
}
|
|
17329
17510
|
});
|
|
17330
|
-
const Route$
|
|
17511
|
+
const Route$5 = createFileRoute("/api/knowledge/candidates/$candidateId/promote")({
|
|
17331
17512
|
server: {
|
|
17332
17513
|
handlers: {
|
|
17333
17514
|
POST: async ({ params }) => {
|
|
@@ -17349,6 +17530,19 @@ const Route$4 = createFileRoute("/api/knowledge/candidates/$candidateId/promote"
|
|
|
17349
17530
|
}
|
|
17350
17531
|
}
|
|
17351
17532
|
});
|
|
17533
|
+
const Route$4 = createFileRoute("/api/ecosystem/recipes/$recipeId/run")({
|
|
17534
|
+
server: {
|
|
17535
|
+
handlers: {
|
|
17536
|
+
POST: ({ params }) => {
|
|
17537
|
+
const task = startEcosystemRecipeTask(params.recipeId);
|
|
17538
|
+
if (task === null) {
|
|
17539
|
+
return Response.json({ error: "Unknown ecosystem recipe" }, { status: 404 });
|
|
17540
|
+
}
|
|
17541
|
+
return Response.json({ task });
|
|
17542
|
+
}
|
|
17543
|
+
}
|
|
17544
|
+
}
|
|
17545
|
+
});
|
|
17352
17546
|
const Route$3 = createFileRoute("/api/ecosystem/packages/$packageId/upgrade")({
|
|
17353
17547
|
server: {
|
|
17354
17548
|
handlers: {
|
|
@@ -17404,216 +17598,221 @@ const Route = createFileRoute("/api/ecosystem/packages/$packageId/help")({
|
|
|
17404
17598
|
}
|
|
17405
17599
|
}
|
|
17406
17600
|
});
|
|
17407
|
-
const IndexRoute = Route$
|
|
17601
|
+
const IndexRoute = Route$K.update({
|
|
17408
17602
|
id: "/",
|
|
17409
17603
|
path: "/",
|
|
17410
|
-
getParentRoute: () => Route$
|
|
17604
|
+
getParentRoute: () => Route$L
|
|
17411
17605
|
});
|
|
17412
|
-
const SessionSessionIdRoute = Route$
|
|
17606
|
+
const SessionSessionIdRoute = Route$J.update({
|
|
17413
17607
|
id: "/session/$sessionId",
|
|
17414
17608
|
path: "/session/$sessionId",
|
|
17415
|
-
getParentRoute: () => Route$
|
|
17609
|
+
getParentRoute: () => Route$L
|
|
17416
17610
|
});
|
|
17417
|
-
const ProxySplatRoute = Route$
|
|
17611
|
+
const ProxySplatRoute = Route$I.update({
|
|
17418
17612
|
id: "/proxy/$",
|
|
17419
17613
|
path: "/proxy/$",
|
|
17420
|
-
getParentRoute: () => Route$
|
|
17614
|
+
getParentRoute: () => Route$L
|
|
17421
17615
|
});
|
|
17422
|
-
const ApiSessionsRoute = Route$
|
|
17616
|
+
const ApiSessionsRoute = Route$H.update({
|
|
17423
17617
|
id: "/api/sessions",
|
|
17424
17618
|
path: "/api/sessions",
|
|
17425
|
-
getParentRoute: () => Route$
|
|
17619
|
+
getParentRoute: () => Route$L
|
|
17426
17620
|
});
|
|
17427
|
-
const ApiRunsRoute = Route$
|
|
17621
|
+
const ApiRunsRoute = Route$G.update({
|
|
17428
17622
|
id: "/api/runs",
|
|
17429
17623
|
path: "/api/runs",
|
|
17430
|
-
getParentRoute: () => Route$
|
|
17624
|
+
getParentRoute: () => Route$L
|
|
17431
17625
|
});
|
|
17432
|
-
const ApiProvidersRoute = Route$
|
|
17626
|
+
const ApiProvidersRoute = Route$F.update({
|
|
17433
17627
|
id: "/api/providers",
|
|
17434
17628
|
path: "/api/providers",
|
|
17435
|
-
getParentRoute: () => Route$
|
|
17629
|
+
getParentRoute: () => Route$L
|
|
17436
17630
|
});
|
|
17437
|
-
const ApiModelsRoute = Route$
|
|
17631
|
+
const ApiModelsRoute = Route$E.update({
|
|
17438
17632
|
id: "/api/models",
|
|
17439
17633
|
path: "/api/models",
|
|
17440
|
-
getParentRoute: () => Route$
|
|
17634
|
+
getParentRoute: () => Route$L
|
|
17441
17635
|
});
|
|
17442
|
-
const ApiMcpRoute = Route$
|
|
17636
|
+
const ApiMcpRoute = Route$D.update({
|
|
17443
17637
|
id: "/api/mcp",
|
|
17444
17638
|
path: "/api/mcp",
|
|
17445
|
-
getParentRoute: () => Route$
|
|
17639
|
+
getParentRoute: () => Route$L
|
|
17446
17640
|
});
|
|
17447
|
-
const ApiLogsRoute = Route$
|
|
17641
|
+
const ApiLogsRoute = Route$C.update({
|
|
17448
17642
|
id: "/api/logs",
|
|
17449
17643
|
path: "/api/logs",
|
|
17450
|
-
getParentRoute: () => Route$
|
|
17644
|
+
getParentRoute: () => Route$L
|
|
17451
17645
|
});
|
|
17452
|
-
const ApiHealthRoute = Route$
|
|
17646
|
+
const ApiHealthRoute = Route$B.update({
|
|
17453
17647
|
id: "/api/health",
|
|
17454
17648
|
path: "/api/health",
|
|
17455
|
-
getParentRoute: () => Route$
|
|
17649
|
+
getParentRoute: () => Route$L
|
|
17456
17650
|
});
|
|
17457
|
-
const ApiGroupsRoute = Route$
|
|
17651
|
+
const ApiGroupsRoute = Route$A.update({
|
|
17458
17652
|
id: "/api/groups",
|
|
17459
17653
|
path: "/api/groups",
|
|
17460
|
-
getParentRoute: () => Route$
|
|
17654
|
+
getParentRoute: () => Route$L
|
|
17461
17655
|
});
|
|
17462
|
-
const ApiConfigRoute = Route$
|
|
17656
|
+
const ApiConfigRoute = Route$z.update({
|
|
17463
17657
|
id: "/api/config",
|
|
17464
17658
|
path: "/api/config",
|
|
17465
|
-
getParentRoute: () => Route$
|
|
17659
|
+
getParentRoute: () => Route$L
|
|
17466
17660
|
});
|
|
17467
|
-
const ApiAlertsRoute = Route$
|
|
17661
|
+
const ApiAlertsRoute = Route$y.update({
|
|
17468
17662
|
id: "/api/alerts",
|
|
17469
17663
|
path: "/api/alerts",
|
|
17470
|
-
getParentRoute: () => Route$
|
|
17664
|
+
getParentRoute: () => Route$L
|
|
17471
17665
|
});
|
|
17472
|
-
const ApiRunsRunIdRoute = Route$
|
|
17666
|
+
const ApiRunsRunIdRoute = Route$x.update({
|
|
17473
17667
|
id: "/$runId",
|
|
17474
17668
|
path: "/$runId",
|
|
17475
17669
|
getParentRoute: () => ApiRunsRoute
|
|
17476
17670
|
});
|
|
17477
|
-
const ApiProvidersScanRoute = Route$
|
|
17671
|
+
const ApiProvidersScanRoute = Route$w.update({
|
|
17478
17672
|
id: "/scan",
|
|
17479
17673
|
path: "/scan",
|
|
17480
17674
|
getParentRoute: () => ApiProvidersRoute
|
|
17481
17675
|
});
|
|
17482
|
-
const ApiProvidersImportRoute = Route$
|
|
17676
|
+
const ApiProvidersImportRoute = Route$v.update({
|
|
17483
17677
|
id: "/import",
|
|
17484
17678
|
path: "/import",
|
|
17485
17679
|
getParentRoute: () => ApiProvidersRoute
|
|
17486
17680
|
});
|
|
17487
|
-
const ApiProvidersExportRoute = Route$
|
|
17681
|
+
const ApiProvidersExportRoute = Route$u.update({
|
|
17488
17682
|
id: "/export",
|
|
17489
17683
|
path: "/export",
|
|
17490
17684
|
getParentRoute: () => ApiProvidersRoute
|
|
17491
17685
|
});
|
|
17492
|
-
const ApiProvidersProviderIdRoute = Route$
|
|
17686
|
+
const ApiProvidersProviderIdRoute = Route$t.update({
|
|
17493
17687
|
id: "/$providerId",
|
|
17494
17688
|
path: "/$providerId",
|
|
17495
17689
|
getParentRoute: () => ApiProvidersRoute
|
|
17496
17690
|
});
|
|
17497
|
-
const ApiLogsStreamRoute = Route$
|
|
17691
|
+
const ApiLogsStreamRoute = Route$s.update({
|
|
17498
17692
|
id: "/stream",
|
|
17499
17693
|
path: "/stream",
|
|
17500
17694
|
getParentRoute: () => ApiLogsRoute
|
|
17501
17695
|
});
|
|
17502
|
-
const ApiLogsImportRoute = Route$
|
|
17696
|
+
const ApiLogsImportRoute = Route$r.update({
|
|
17503
17697
|
id: "/import",
|
|
17504
17698
|
path: "/import",
|
|
17505
17699
|
getParentRoute: () => ApiLogsRoute
|
|
17506
17700
|
});
|
|
17507
|
-
const ApiLogsIdRoute = Route$
|
|
17701
|
+
const ApiLogsIdRoute = Route$q.update({
|
|
17508
17702
|
id: "/$id",
|
|
17509
17703
|
path: "/$id",
|
|
17510
17704
|
getParentRoute: () => ApiLogsRoute
|
|
17511
17705
|
});
|
|
17512
|
-
const ApiKnowledgeSearchRoute = Route$
|
|
17706
|
+
const ApiKnowledgeSearchRoute = Route$p.update({
|
|
17513
17707
|
id: "/api/knowledge/search",
|
|
17514
17708
|
path: "/api/knowledge/search",
|
|
17515
|
-
getParentRoute: () => Route$
|
|
17709
|
+
getParentRoute: () => Route$L
|
|
17516
17710
|
});
|
|
17517
|
-
const ApiKnowledgeProjectContextRoute = Route$
|
|
17711
|
+
const ApiKnowledgeProjectContextRoute = Route$o.update({
|
|
17518
17712
|
id: "/api/knowledge/project-context",
|
|
17519
17713
|
path: "/api/knowledge/project-context",
|
|
17520
|
-
getParentRoute: () => Route$
|
|
17714
|
+
getParentRoute: () => Route$L
|
|
17521
17715
|
});
|
|
17522
|
-
const ApiKnowledgeCandidatesRoute = Route$
|
|
17716
|
+
const ApiKnowledgeCandidatesRoute = Route$n.update({
|
|
17523
17717
|
id: "/api/knowledge/candidates",
|
|
17524
17718
|
path: "/api/knowledge/candidates",
|
|
17525
|
-
getParentRoute: () => Route$
|
|
17719
|
+
getParentRoute: () => Route$L
|
|
17526
17720
|
});
|
|
17527
|
-
const ApiGroupsGroupIdRoute = Route$
|
|
17721
|
+
const ApiGroupsGroupIdRoute = Route$m.update({
|
|
17528
17722
|
id: "/$groupId",
|
|
17529
17723
|
path: "/$groupId",
|
|
17530
17724
|
getParentRoute: () => ApiGroupsRoute
|
|
17531
17725
|
});
|
|
17532
|
-
const ApiEcosystemTasksRoute = Route$
|
|
17726
|
+
const ApiEcosystemTasksRoute = Route$l.update({
|
|
17533
17727
|
id: "/api/ecosystem/tasks",
|
|
17534
17728
|
path: "/api/ecosystem/tasks",
|
|
17535
|
-
getParentRoute: () => Route$
|
|
17729
|
+
getParentRoute: () => Route$L
|
|
17536
17730
|
});
|
|
17537
|
-
const ApiEcosystemPackagesRoute = Route$
|
|
17731
|
+
const ApiEcosystemPackagesRoute = Route$k.update({
|
|
17538
17732
|
id: "/api/ecosystem/packages",
|
|
17539
17733
|
path: "/api/ecosystem/packages",
|
|
17540
|
-
getParentRoute: () => Route$
|
|
17734
|
+
getParentRoute: () => Route$L
|
|
17541
17735
|
});
|
|
17542
|
-
const ApiConfigPathsRoute = Route$
|
|
17736
|
+
const ApiConfigPathsRoute = Route$j.update({
|
|
17543
17737
|
id: "/paths",
|
|
17544
17738
|
path: "/paths",
|
|
17545
17739
|
getParentRoute: () => ApiConfigRoute
|
|
17546
17740
|
});
|
|
17547
|
-
const ApiAlertsSummaryRoute = Route$
|
|
17741
|
+
const ApiAlertsSummaryRoute = Route$i.update({
|
|
17548
17742
|
id: "/summary",
|
|
17549
17743
|
path: "/summary",
|
|
17550
17744
|
getParentRoute: () => ApiAlertsRoute
|
|
17551
17745
|
});
|
|
17552
|
-
const ApiRunsRunIdEvidenceRoute = Route$
|
|
17746
|
+
const ApiRunsRunIdEvidenceRoute = Route$h.update({
|
|
17553
17747
|
id: "/evidence",
|
|
17554
17748
|
path: "/evidence",
|
|
17555
17749
|
getParentRoute: () => ApiRunsRunIdRoute
|
|
17556
17750
|
});
|
|
17557
|
-
const ApiProvidersProviderIdTestRoute = Route$
|
|
17751
|
+
const ApiProvidersProviderIdTestRoute = Route$g.update({
|
|
17558
17752
|
id: "/test",
|
|
17559
17753
|
path: "/test",
|
|
17560
17754
|
getParentRoute: () => ApiProvidersProviderIdRoute
|
|
17561
17755
|
});
|
|
17562
|
-
const ApiProvidersProviderIdModelMetadataRoute = Route$
|
|
17756
|
+
const ApiProvidersProviderIdModelMetadataRoute = Route$f.update({
|
|
17563
17757
|
id: "/model-metadata",
|
|
17564
17758
|
path: "/model-metadata",
|
|
17565
17759
|
getParentRoute: () => ApiProvidersProviderIdRoute
|
|
17566
17760
|
});
|
|
17567
|
-
const ApiLogsIdReplayRoute = Route$
|
|
17761
|
+
const ApiLogsIdReplayRoute = Route$e.update({
|
|
17568
17762
|
id: "/replay",
|
|
17569
17763
|
path: "/replay",
|
|
17570
17764
|
getParentRoute: () => ApiLogsIdRoute
|
|
17571
17765
|
});
|
|
17572
|
-
const ApiLogsIdChunksRoute = Route$
|
|
17766
|
+
const ApiLogsIdChunksRoute = Route$d.update({
|
|
17573
17767
|
id: "/chunks",
|
|
17574
17768
|
path: "/chunks",
|
|
17575
17769
|
getParentRoute: () => ApiLogsIdRoute
|
|
17576
17770
|
});
|
|
17577
|
-
const ApiLogsIdBodyRoute = Route$
|
|
17771
|
+
const ApiLogsIdBodyRoute = Route$c.update({
|
|
17578
17772
|
id: "/body",
|
|
17579
17773
|
path: "/body",
|
|
17580
17774
|
getParentRoute: () => ApiLogsIdRoute
|
|
17581
17775
|
});
|
|
17582
|
-
const ApiKnowledgeCandidatesCandidateIdRoute = Route$
|
|
17776
|
+
const ApiKnowledgeCandidatesCandidateIdRoute = Route$b.update({
|
|
17583
17777
|
id: "/$candidateId",
|
|
17584
17778
|
path: "/$candidateId",
|
|
17585
17779
|
getParentRoute: () => ApiKnowledgeCandidatesRoute
|
|
17586
17780
|
});
|
|
17587
|
-
const ApiGroupsGroupIdSessionsRoute = Route$
|
|
17781
|
+
const ApiGroupsGroupIdSessionsRoute = Route$a.update({
|
|
17588
17782
|
id: "/sessions",
|
|
17589
17783
|
path: "/sessions",
|
|
17590
17784
|
getParentRoute: () => ApiGroupsGroupIdRoute
|
|
17591
17785
|
});
|
|
17592
|
-
const ApiGroupsGroupIdEvidenceRoute = Route$
|
|
17786
|
+
const ApiGroupsGroupIdEvidenceRoute = Route$9.update({
|
|
17593
17787
|
id: "/evidence",
|
|
17594
17788
|
path: "/evidence",
|
|
17595
17789
|
getParentRoute: () => ApiGroupsGroupIdRoute
|
|
17596
17790
|
});
|
|
17597
|
-
const ApiEcosystemTasksTaskIdRoute = Route$
|
|
17791
|
+
const ApiEcosystemTasksTaskIdRoute = Route$8.update({
|
|
17598
17792
|
id: "/$taskId",
|
|
17599
17793
|
path: "/$taskId",
|
|
17600
17794
|
getParentRoute: () => ApiEcosystemTasksRoute
|
|
17601
17795
|
});
|
|
17602
|
-
const ApiProvidersProviderIdTestLogRoute = Route$
|
|
17796
|
+
const ApiProvidersProviderIdTestLogRoute = Route$7.update({
|
|
17603
17797
|
id: "/log",
|
|
17604
17798
|
path: "/log",
|
|
17605
17799
|
getParentRoute: () => ApiProvidersProviderIdTestRoute
|
|
17606
17800
|
});
|
|
17607
|
-
const ApiKnowledgeSessionsSessionIdCandidatesRoute = Route$
|
|
17801
|
+
const ApiKnowledgeSessionsSessionIdCandidatesRoute = Route$6.update({
|
|
17608
17802
|
id: "/api/knowledge/sessions/$sessionId/candidates",
|
|
17609
17803
|
path: "/api/knowledge/sessions/$sessionId/candidates",
|
|
17610
|
-
getParentRoute: () => Route$
|
|
17804
|
+
getParentRoute: () => Route$L
|
|
17611
17805
|
});
|
|
17612
|
-
const ApiKnowledgeCandidatesCandidateIdPromoteRoute = Route$
|
|
17806
|
+
const ApiKnowledgeCandidatesCandidateIdPromoteRoute = Route$5.update({
|
|
17613
17807
|
id: "/promote",
|
|
17614
17808
|
path: "/promote",
|
|
17615
17809
|
getParentRoute: () => ApiKnowledgeCandidatesCandidateIdRoute
|
|
17616
17810
|
});
|
|
17811
|
+
const ApiEcosystemRecipesRecipeIdRunRoute = Route$4.update({
|
|
17812
|
+
id: "/api/ecosystem/recipes/$recipeId/run",
|
|
17813
|
+
path: "/api/ecosystem/recipes/$recipeId/run",
|
|
17814
|
+
getParentRoute: () => Route$L
|
|
17815
|
+
});
|
|
17617
17816
|
const ApiEcosystemPackagesPackageIdUpgradeRoute = Route$3.update({
|
|
17618
17817
|
id: "/$packageId/upgrade",
|
|
17619
17818
|
path: "/$packageId/upgrade",
|
|
@@ -17745,9 +17944,10 @@ const rootRouteChildren = {
|
|
|
17745
17944
|
ApiKnowledgeCandidatesRoute: ApiKnowledgeCandidatesRouteWithChildren,
|
|
17746
17945
|
ApiKnowledgeProjectContextRoute,
|
|
17747
17946
|
ApiKnowledgeSearchRoute,
|
|
17947
|
+
ApiEcosystemRecipesRecipeIdRunRoute,
|
|
17748
17948
|
ApiKnowledgeSessionsSessionIdCandidatesRoute
|
|
17749
17949
|
};
|
|
17750
|
-
const routeTree = Route$
|
|
17950
|
+
const routeTree = Route$L._addFileChildren(rootRouteChildren)._addFileTypes();
|
|
17751
17951
|
function getRouter() {
|
|
17752
17952
|
const router2 = createRouter({
|
|
17753
17953
|
routeTree,
|
|
@@ -17789,7 +17989,7 @@ export {
|
|
|
17789
17989
|
router as N,
|
|
17790
17990
|
OpenAIRequestSchema as O,
|
|
17791
17991
|
ProviderConfigSchema as P,
|
|
17792
|
-
Route$
|
|
17992
|
+
Route$J as R,
|
|
17793
17993
|
StreamingChunkSchema$1 as S,
|
|
17794
17994
|
TimeDisplayFormatSchema as T,
|
|
17795
17995
|
DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS as a,
|