@tonyclaw/agent-inspector 3.0.6 → 3.0.8
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/cli.js +245 -171
- package/.output/nitro.json +1 -1
- package/.output/public/assets/{CompareDrawer-DsvO6QyJ.js → CompareDrawer-Bth_Ywyt.js} +1 -1
- package/.output/public/assets/ProxyViewerContainer-C73EU9Jq.js +106 -0
- package/.output/public/assets/ReplayDialog-C2YYAuTe.js +1 -0
- package/.output/public/assets/{RequestAnatomy-m1q-uVTl.js → RequestAnatomy-8k9dAX2j.js} +1 -1
- package/.output/public/assets/ResponseView-DEL6JcXm.js +3 -0
- package/.output/public/assets/StreamingChunkSequence-DngmoR9j.js +1 -0
- package/.output/public/assets/{_sessionId-CWP4pxOU.js → _sessionId-4vk9RMZ5.js} +1 -1
- package/.output/public/assets/index-DBEB1rHe.css +1 -0
- package/.output/public/assets/{index-zfZUz67K.js → index-DINLvnm9.js} +1 -1
- package/.output/public/assets/index-LPIGiUMP.js +1 -0
- package/.output/public/assets/{json-viewer-_4r1LBBE.js → json-viewer-CH5dvS2Y.js} +1 -1
- package/.output/public/assets/{main-C_nEHNUM.js → main-GWkZn4xy.js} +2 -2
- package/.output/server/{_sessionId-CTqCAmUF.mjs → _sessionId-EgsjdkN7.mjs} +3 -3
- package/.output/server/_ssr/{CompareDrawer-D6b6TZ-O.mjs → CompareDrawer-CaM8FYuD.mjs} +3 -3
- package/.output/server/_ssr/{ProxyViewerContainer-Dp7Va9_T.mjs → ProxyViewerContainer-EJIogcGd.mjs} +580 -344
- package/.output/server/_ssr/{ReplayDialog-D_KWQ1GY.mjs → ReplayDialog-BPpJ2-q8.mjs} +58 -23
- package/.output/server/_ssr/{RequestAnatomy-CPubXjMX.mjs → RequestAnatomy-DeQAWnZx.mjs} +2 -2
- package/.output/server/_ssr/{ResponseView-CsTiNoOE.mjs → ResponseView-Dshm8iQ7.mjs} +2 -2
- package/.output/server/_ssr/{StreamingChunkSequence-Bgbzt23U.mjs → StreamingChunkSequence-32yIU2hn.mjs} +30 -20
- package/.output/server/_ssr/{index-P1gSpuM5.mjs → index-XRcx9blU.mjs} +2 -2
- package/.output/server/_ssr/index.mjs +2 -2
- package/.output/server/_ssr/{json-viewer-10ciVGnc.mjs → json-viewer-C0aX5rqC.mjs} +2 -2
- package/.output/server/_ssr/{router-BJJ0VhsB.mjs → router-BI-Mvxz9.mjs} +441 -172
- package/.output/server/_tanstack-start-manifest_v-jKScklL_.mjs +4 -0
- package/.output/server/index.mjs +73 -73
- package/package.json +1 -1
- package/src/assets/IDE/opencode.svg +1 -1
- package/src/assets/IDE/xiaomimimo.svg +1 -1
- package/src/cli/detect-tools.ts +2 -27
- package/src/cli/templates/codex-skill-onboard.ts +1 -1
- package/src/cli/templates/skill-onboard.ts +2 -3
- package/src/cli.ts +9 -86
- package/src/components/ProxyViewer.tsx +68 -21
- package/src/components/ProxyViewerContainer.tsx +30 -19
- package/src/components/alerts/AlertsDialog.tsx +3 -3
- package/src/components/clients/ClientLogo.tsx +22 -2
- package/src/components/ecosystem/AgentLabDialog.tsx +215 -12
- package/src/components/groups/GroupsDialog.tsx +31 -43
- package/src/components/providers/ImportWizardDialog.tsx +52 -102
- package/src/components/providers/ProviderCard.tsx +4 -4
- package/src/components/providers/ProvidersPanel.tsx +82 -68
- package/src/components/providers/SettingsDialog.tsx +11 -12
- package/src/components/proxy-viewer/AgentTraceSummary.tsx +15 -23
- package/src/components/proxy-viewer/CompareDrawer.tsx +1 -1
- package/src/components/proxy-viewer/ConversationHeader.tsx +2 -2
- package/src/components/proxy-viewer/ReplayDialog.tsx +65 -22
- package/src/components/proxy-viewer/StreamingChunkSequence.tsx +33 -20
- package/src/lib/apiClient.ts +43 -10
- package/src/lib/ecosystemContract.ts +32 -0
- package/src/lib/export-logs.ts +37 -3
- package/src/proxy/ecosystemRegistry.ts +244 -0
- package/src/proxy/ecosystemTasks.ts +153 -0
- package/src/proxy/platformCommands.ts +212 -0
- package/src/proxy/socketTracker.ts +84 -143
- package/src/routes/api/ecosystem.packages.$packageId.help.ts +16 -0
- package/src/routes/api/ecosystem.packages.$packageId.install.ts +16 -0
- package/src/routes/api/ecosystem.packages.$packageId.runner-presets.ts +19 -0
- package/src/routes/api/ecosystem.packages.$packageId.upgrade.ts +16 -0
- package/src/routes/api/ecosystem.packages.ts +1 -248
- package/src/routes/api/ecosystem.tasks.$taskId.ts +16 -0
- package/src/routes/api/ecosystem.tasks.ts +12 -0
- package/.output/public/assets/ProxyViewerContainer-CfP-komD.js +0 -106
- package/.output/public/assets/ReplayDialog-CQlLX1Uo.js +0 -1
- package/.output/public/assets/ResponseView-DuLLeYSh.js +0 -3
- package/.output/public/assets/StreamingChunkSequence-CN4aRFBx.js +0 -1
- package/.output/public/assets/index-0pt1umWP.css +0 -1
- package/.output/public/assets/index-DSUEOPbC.js +0 -1
- package/.output/server/_tanstack-start-manifest_v-CltlYL3I.mjs +0 -4
|
@@ -2,15 +2,15 @@ import { c as createRouter, a as createRootRoute, b as createFileRoute, l as laz
|
|
|
2
2
|
import { j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
3
3
|
import { S as SWRConfig } from "../_libs/swr.mjs";
|
|
4
4
|
import { existsSync, readFileSync, mkdirSync, writeFileSync, renameSync, copyFileSync, unlinkSync, createReadStream, readdirSync, statSync, rmSync, cpSync, createWriteStream } from "node:fs";
|
|
5
|
-
import fs, {
|
|
5
|
+
import fs, { mkdir, appendFile, readFile, writeFile, readdir, open, stat, unlink, rm, rename } from "node:fs/promises";
|
|
6
6
|
import { createInterface } from "node:readline";
|
|
7
7
|
import { Buffer } from "node:buffer";
|
|
8
|
-
import path, {
|
|
9
|
-
import { randomUUID
|
|
10
|
-
import {
|
|
8
|
+
import path, { basename, join, dirname, isAbsolute, resolve, relative } from "node:path";
|
|
9
|
+
import { randomUUID, createHash } from "node:crypto";
|
|
10
|
+
import { spawn, execFile } from "node:child_process";
|
|
11
11
|
import { fileURLToPath } from "node:url";
|
|
12
12
|
import { C as Conf } from "../_libs/conf.mjs";
|
|
13
|
-
import { randomUUID } from "crypto";
|
|
13
|
+
import { randomUUID as randomUUID$1 } from "crypto";
|
|
14
14
|
import { promisify } from "node:util";
|
|
15
15
|
import { Worker } from "node:worker_threads";
|
|
16
16
|
import { M as McpServer, W as WebStandardStreamableHTTPServerTransport, R as ResourceTemplate } from "../_libs/modelcontextprotocol__server.mjs";
|
|
@@ -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-DBEB1rHe.css";
|
|
69
|
+
const Route$K = 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-XRcx9blU.mjs");
|
|
112
|
+
const Route$J = 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-EgsjdkN7.mjs");
|
|
155
|
+
const Route$I = createFileRoute("/session/$sessionId")({
|
|
156
156
|
component: lazyRouteComponent($$splitComponentImporter, "component"),
|
|
157
157
|
parseParams: (params) => ({
|
|
158
158
|
sessionId: decodeSessionIdFromPath(params.sessionId)
|
|
@@ -5147,7 +5147,7 @@ function migrateLegacyProvider(provider, index, now) {
|
|
|
5147
5147
|
const openaiBaseUrl = provider.openaiBaseUrl ?? (format === "openai" && baseUrl !== void 0 ? baseUrl : "");
|
|
5148
5148
|
const openaiResponsesBaseUrl = provider.openaiResponsesBaseUrl ?? "";
|
|
5149
5149
|
const candidate = {
|
|
5150
|
-
id: provider.id ?? randomUUID(),
|
|
5150
|
+
id: provider.id ?? randomUUID$1(),
|
|
5151
5151
|
name: name2,
|
|
5152
5152
|
apiKey,
|
|
5153
5153
|
model: provider.model,
|
|
@@ -5384,7 +5384,7 @@ function addProvider(name2, apiKey, format, baseUrl, models, authHeader, apiDocs
|
|
|
5384
5384
|
}
|
|
5385
5385
|
const newProvider = withBuiltinProviderModelMetadata(
|
|
5386
5386
|
{
|
|
5387
|
-
id: randomUUID(),
|
|
5387
|
+
id: randomUUID$1(),
|
|
5388
5388
|
name: name2,
|
|
5389
5389
|
apiKey: normalizedKey,
|
|
5390
5390
|
format: format ?? (anthropicBaseUrl !== void 0 ? "anthropic" : openaiBaseUrl !== void 0 || openaiResponsesBaseUrl !== void 0 ? "openai" : void 0),
|
|
@@ -5499,7 +5499,7 @@ function importProviders(json) {
|
|
|
5499
5499
|
const newProvider = withBuiltinProviderModelMetadata(
|
|
5500
5500
|
{
|
|
5501
5501
|
...provider,
|
|
5502
|
-
id: randomUUID(),
|
|
5502
|
+
id: randomUUID$1(),
|
|
5503
5503
|
createdAt: now,
|
|
5504
5504
|
updatedAt: now
|
|
5505
5505
|
},
|
|
@@ -5603,7 +5603,6 @@ function findProviderByModel(model) {
|
|
|
5603
5603
|
}
|
|
5604
5604
|
return null;
|
|
5605
5605
|
}
|
|
5606
|
-
const execAsync = promisify(exec);
|
|
5607
5606
|
const execFileAsync = promisify(execFile);
|
|
5608
5607
|
const cache = /* @__PURE__ */ new Map();
|
|
5609
5608
|
const CACHE_TTL_MS = 5 * 60 * 1e3;
|
|
@@ -5706,38 +5705,34 @@ async function lookupProcessInfo(pid) {
|
|
|
5706
5705
|
const platform = process.platform;
|
|
5707
5706
|
try {
|
|
5708
5707
|
if (platform === "win32") {
|
|
5708
|
+
const psScript = [
|
|
5709
|
+
`$proc = Get-CimInstance Win32_Process -Filter "ProcessId=${pid}" -ErrorAction SilentlyContinue`,
|
|
5710
|
+
`if ($proc) { Write-Output $proc.CommandLine }`
|
|
5711
|
+
].join("; ");
|
|
5709
5712
|
const { stdout } = await execFileAsync(
|
|
5710
|
-
"
|
|
5711
|
-
["
|
|
5713
|
+
"powershell.exe",
|
|
5714
|
+
["-NoProfile", "-NonInteractive", "-ExecutionPolicy", "Bypass", "-Command", psScript],
|
|
5712
5715
|
{
|
|
5713
5716
|
windowsHide: true,
|
|
5714
5717
|
timeout: 3e3,
|
|
5715
5718
|
maxBuffer: 64 * 1024
|
|
5716
5719
|
}
|
|
5717
5720
|
);
|
|
5718
|
-
const
|
|
5719
|
-
|
|
5720
|
-
if (line.includes("=")) {
|
|
5721
|
-
const commandLine = (line.split("=")[1] ?? "").trim();
|
|
5722
|
-
if (commandLine) {
|
|
5723
|
-
return parseCommandLine(commandLine, "\\");
|
|
5724
|
-
}
|
|
5725
|
-
}
|
|
5726
|
-
}
|
|
5721
|
+
const commandLine = stdout.trim();
|
|
5722
|
+
if (commandLine.length > 0) return parseCommandLine(commandLine, "\\");
|
|
5727
5723
|
} else {
|
|
5728
5724
|
try {
|
|
5729
|
-
const
|
|
5730
|
-
|
|
5731
|
-
});
|
|
5732
|
-
const commandLine = stdout.trim();
|
|
5725
|
+
const raw = await readFile(`/proc/${String(pid)}/cmdline`, "utf8");
|
|
5726
|
+
const commandLine = raw.replace(/\0/g, " ").trim();
|
|
5733
5727
|
if (commandLine) {
|
|
5734
5728
|
return parseCommandLine(commandLine, "/");
|
|
5735
5729
|
}
|
|
5736
5730
|
} catch {
|
|
5737
5731
|
}
|
|
5738
5732
|
if (platform === "darwin") {
|
|
5739
|
-
const { stdout } = await
|
|
5740
|
-
|
|
5733
|
+
const { stdout } = await execFileAsync("ps", ["-p", String(pid), "-o", "comm="], {
|
|
5734
|
+
timeout: 3e3,
|
|
5735
|
+
maxBuffer: 64 * 1024
|
|
5741
5736
|
});
|
|
5742
5737
|
const exePath = stdout.trim();
|
|
5743
5738
|
if (exePath) {
|
|
@@ -5755,12 +5750,12 @@ async function lookupRecentClient() {
|
|
|
5755
5750
|
const platform = process.platform;
|
|
5756
5751
|
try {
|
|
5757
5752
|
if (platform === "win32") {
|
|
5758
|
-
const { stdout
|
|
5753
|
+
const { stdout } = await execFileAsync("netstat.exe", ["-ano", "-p", "TCP"], {
|
|
5759
5754
|
windowsHide: true,
|
|
5760
5755
|
timeout: 2e3,
|
|
5761
5756
|
maxBuffer: 2 * 1024 * 1024
|
|
5762
5757
|
});
|
|
5763
|
-
const client = pickNewestClientFromWindowsNetstat(
|
|
5758
|
+
const client = pickNewestClientFromWindowsNetstat(stdout.split("\n"), port);
|
|
5764
5759
|
if (client === null) {
|
|
5765
5760
|
return { port: null, pid: null, cwd: null, projectFolder: null };
|
|
5766
5761
|
}
|
|
@@ -5772,11 +5767,7 @@ async function lookupRecentClient() {
|
|
|
5772
5767
|
projectFolder: projectFolder2
|
|
5773
5768
|
};
|
|
5774
5769
|
}
|
|
5775
|
-
const
|
|
5776
|
-
`netstat -tanp 2>/dev/null | grep ':${port}' | grep ESTAB || ss -tanp 2>/dev/null | grep ':${port}' | grep ESTAB`,
|
|
5777
|
-
{ shell: "/bin/sh" }
|
|
5778
|
-
);
|
|
5779
|
-
const lines = stdout.trim().split("\n").filter((line) => line.includes("ESTAB"));
|
|
5770
|
+
const lines = await readUnixEstablishedConnectionLines(port);
|
|
5780
5771
|
const clientPid = pickNewestClientPidFromNetstat(lines, port);
|
|
5781
5772
|
if (clientPid === null) {
|
|
5782
5773
|
return { port: null, pid: null, cwd: null, projectFolder: null };
|
|
@@ -5795,12 +5786,12 @@ function pickNewestClientPidFromNetstat(lines, proxyPort) {
|
|
|
5795
5786
|
for (const line of lines) {
|
|
5796
5787
|
order++;
|
|
5797
5788
|
const cols = line.trim().split(/\s+/);
|
|
5798
|
-
if (cols.length <
|
|
5789
|
+
if (cols.length < 5) continue;
|
|
5799
5790
|
const localAddr = cols[3] ?? "";
|
|
5800
5791
|
const remoteAddr = cols[4] ?? "";
|
|
5801
5792
|
const pidField = cols[6] ?? "";
|
|
5802
5793
|
if (!remoteAddr.endsWith(proxyToken)) continue;
|
|
5803
|
-
const pidMatch = pidField.match(/^(\d+)/);
|
|
5794
|
+
const pidMatch = pidField.match(/^(\d+)/) ?? line.match(/pid=(\d+)/);
|
|
5804
5795
|
if (pidMatch === null) continue;
|
|
5805
5796
|
const pid = parseInt(pidMatch[1] ?? "", 10);
|
|
5806
5797
|
if (!Number.isInteger(pid) || pid <= 0) continue;
|
|
@@ -5812,6 +5803,25 @@ function pickNewestClientPidFromNetstat(lines, proxyPort) {
|
|
|
5812
5803
|
candidates2.sort((a, b) => b.localPort - a.localPort || b.order - a.order);
|
|
5813
5804
|
return candidates2[0]?.pid ?? null;
|
|
5814
5805
|
}
|
|
5806
|
+
async function readUnixEstablishedConnectionLines(port) {
|
|
5807
|
+
const commands = [
|
|
5808
|
+
{ command: "netstat", args: ["-tanp"] },
|
|
5809
|
+
{ command: "ss", args: ["-tanp"] }
|
|
5810
|
+
];
|
|
5811
|
+
for (const spec of commands) {
|
|
5812
|
+
try {
|
|
5813
|
+
const { stdout } = await execFileAsync(spec.command, spec.args, {
|
|
5814
|
+
timeout: 2e3,
|
|
5815
|
+
maxBuffer: 2 * 1024 * 1024
|
|
5816
|
+
});
|
|
5817
|
+
const portToken = `:${port}`;
|
|
5818
|
+
const lines = stdout.trim().split("\n").filter((line) => line.includes(portToken) && line.includes("ESTAB"));
|
|
5819
|
+
if (lines.length > 0) return lines;
|
|
5820
|
+
} catch {
|
|
5821
|
+
}
|
|
5822
|
+
}
|
|
5823
|
+
return [];
|
|
5824
|
+
}
|
|
5815
5825
|
function parseAddressPort(address) {
|
|
5816
5826
|
const match = address.match(/:(\d+)$/);
|
|
5817
5827
|
if (match === null) return null;
|
|
@@ -5950,10 +5960,11 @@ async function lookupPidByLocalPort(clientPort) {
|
|
|
5950
5960
|
const platform = process.platform;
|
|
5951
5961
|
try {
|
|
5952
5962
|
if (platform === "win32") {
|
|
5953
|
-
const { stdout } = await
|
|
5954
|
-
|
|
5955
|
-
|
|
5956
|
-
|
|
5963
|
+
const { stdout } = await execFileAsync("netstat.exe", ["-ano", "-p", "TCP"], {
|
|
5964
|
+
windowsHide: true,
|
|
5965
|
+
timeout: 2e3,
|
|
5966
|
+
maxBuffer: 2 * 1024 * 1024
|
|
5967
|
+
});
|
|
5957
5968
|
const clientToken = `:${clientPort}`;
|
|
5958
5969
|
for (const rawLine of stdout.split("\n")) {
|
|
5959
5970
|
const line = rawLine.trim();
|
|
@@ -5961,6 +5972,8 @@ async function lookupPidByLocalPort(clientPort) {
|
|
|
5961
5972
|
const cols = line.split(/\s+/);
|
|
5962
5973
|
if (cols.length < 5) continue;
|
|
5963
5974
|
const localAddr = cols[1] ?? "";
|
|
5975
|
+
const state = cols[3] ?? "";
|
|
5976
|
+
if (state !== "ESTABLISHED") continue;
|
|
5964
5977
|
if (!localAddr.endsWith(clientToken)) continue;
|
|
5965
5978
|
const pidStr = cols[cols.length - 1] ?? "";
|
|
5966
5979
|
const parsed = parseInt(pidStr, 10);
|
|
@@ -5969,9 +5982,13 @@ async function lookupPidByLocalPort(clientPort) {
|
|
|
5969
5982
|
return null;
|
|
5970
5983
|
}
|
|
5971
5984
|
try {
|
|
5972
|
-
const { stdout } = await
|
|
5973
|
-
|
|
5974
|
-
|
|
5985
|
+
const { stdout } = await execFileAsync(
|
|
5986
|
+
"ss",
|
|
5987
|
+
["-tanp", "state", "established", "sport", `= :${clientPort}`],
|
|
5988
|
+
{
|
|
5989
|
+
timeout: 2e3,
|
|
5990
|
+
maxBuffer: 2 * 1024 * 1024
|
|
5991
|
+
}
|
|
5975
5992
|
);
|
|
5976
5993
|
const match = stdout.match(/pid=(\d+)/);
|
|
5977
5994
|
if (match !== null) {
|
|
@@ -5981,10 +5998,12 @@ async function lookupPidByLocalPort(clientPort) {
|
|
|
5981
5998
|
} catch {
|
|
5982
5999
|
}
|
|
5983
6000
|
try {
|
|
5984
|
-
const { stdout } = await
|
|
5985
|
-
|
|
6001
|
+
const { stdout } = await execFileAsync(
|
|
6002
|
+
"lsof",
|
|
6003
|
+
["-ti", `tcp:${clientPort}`, "-sTCP:ESTABLISHED"],
|
|
5986
6004
|
{
|
|
5987
|
-
|
|
6005
|
+
timeout: 2e3,
|
|
6006
|
+
maxBuffer: 64 * 1024
|
|
5988
6007
|
}
|
|
5989
6008
|
);
|
|
5990
6009
|
const trimmed = stdout.trim().split("\n")[0] ?? "";
|
|
@@ -7135,7 +7154,7 @@ function getRawStreamDir() {
|
|
|
7135
7154
|
return join(getDataDir(), "raw-streams");
|
|
7136
7155
|
}
|
|
7137
7156
|
function createRawStreamPath() {
|
|
7138
|
-
return join(getRawStreamDir(), `${Date.now()}-${randomUUID
|
|
7157
|
+
return join(getRawStreamDir(), `${Date.now()}-${randomUUID()}.stream.tmp`);
|
|
7139
7158
|
}
|
|
7140
7159
|
class RawStreamCapture {
|
|
7141
7160
|
memoryLimitBytes;
|
|
@@ -7562,7 +7581,7 @@ async function handleProxy(req) {
|
|
|
7562
7581
|
}
|
|
7563
7582
|
return handleStreamingResponse(upstreamRes, req, startTime, upstreamUrl, log, captureFullDetails);
|
|
7564
7583
|
}
|
|
7565
|
-
const Route$
|
|
7584
|
+
const Route$H = createFileRoute("/proxy/$")({
|
|
7566
7585
|
server: {
|
|
7567
7586
|
handlers: {
|
|
7568
7587
|
GET: ({ request }) => handleProxy(request),
|
|
@@ -7583,7 +7602,7 @@ function parsePositiveInt$4(value) {
|
|
|
7583
7602
|
function parseBooleanFlag(value) {
|
|
7584
7603
|
return value === "1" || value === "true";
|
|
7585
7604
|
}
|
|
7586
|
-
const Route$
|
|
7605
|
+
const Route$G = createFileRoute("/api/sessions")({
|
|
7587
7606
|
server: {
|
|
7588
7607
|
handlers: {
|
|
7589
7608
|
GET: async ({ request }) => {
|
|
@@ -8369,17 +8388,17 @@ const GroupsFileSchema = object({
|
|
|
8369
8388
|
function groupsFilePath() {
|
|
8370
8389
|
return join(getDataDir(), "groups.json");
|
|
8371
8390
|
}
|
|
8372
|
-
function nowIso$
|
|
8391
|
+
function nowIso$2() {
|
|
8373
8392
|
return (/* @__PURE__ */ new Date()).toISOString();
|
|
8374
8393
|
}
|
|
8375
8394
|
function stableId$1(input) {
|
|
8376
8395
|
return input.trim().replace(/[^A-Za-z0-9_.-]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 80);
|
|
8377
8396
|
}
|
|
8378
8397
|
function createGroupId() {
|
|
8379
|
-
return `grp_${Date.now().toString(36)}_${randomUUID
|
|
8398
|
+
return `grp_${Date.now().toString(36)}_${randomUUID().slice(0, 8)}`;
|
|
8380
8399
|
}
|
|
8381
8400
|
function createMemberId() {
|
|
8382
|
-
return `mem_${Date.now().toString(36)}_${randomUUID
|
|
8401
|
+
return `mem_${Date.now().toString(36)}_${randomUUID().slice(0, 8)}`;
|
|
8383
8402
|
}
|
|
8384
8403
|
function normalizeGroupId$1(input) {
|
|
8385
8404
|
if (input === void 0) return createGroupId();
|
|
@@ -8449,7 +8468,7 @@ function createGroup(input) {
|
|
|
8449
8468
|
const groupId = normalizeGroupId$1(parsed?.groupId);
|
|
8450
8469
|
const existing = getGroup(groupId);
|
|
8451
8470
|
if (existing !== null) return existing;
|
|
8452
|
-
const timestamp = nowIso$
|
|
8471
|
+
const timestamp = nowIso$2();
|
|
8453
8472
|
const group = {
|
|
8454
8473
|
id: groupId,
|
|
8455
8474
|
title: parsed?.title ?? `Inspector Group ${groupId}`,
|
|
@@ -8471,7 +8490,7 @@ function updateGroup(groupId, input) {
|
|
|
8471
8490
|
const parsed = UpdateInspectorGroupInputSchema.parse(input);
|
|
8472
8491
|
const groups = readGroups();
|
|
8473
8492
|
let updatedGroup = null;
|
|
8474
|
-
const updatedAt = nowIso$
|
|
8493
|
+
const updatedAt = nowIso$2();
|
|
8475
8494
|
const updatedGroups = groups.map((group) => {
|
|
8476
8495
|
if (group.id !== groupId) return group;
|
|
8477
8496
|
updatedGroup = {
|
|
@@ -8571,7 +8590,7 @@ function upsertMember(group, input, updatedAt) {
|
|
|
8571
8590
|
function addGroupSession(groupId, input) {
|
|
8572
8591
|
const groups = readGroups();
|
|
8573
8592
|
let updatedGroup = null;
|
|
8574
|
-
const updatedAt = nowIso$
|
|
8593
|
+
const updatedAt = nowIso$2();
|
|
8575
8594
|
const updatedGroups = groups.map((group) => {
|
|
8576
8595
|
if (group.id !== groupId) return group;
|
|
8577
8596
|
updatedGroup = upsertMember(group, input, updatedAt);
|
|
@@ -8603,14 +8622,14 @@ const RunsFileSchema = object({
|
|
|
8603
8622
|
function runsFilePath() {
|
|
8604
8623
|
return join(getDataDir(), "runs.json");
|
|
8605
8624
|
}
|
|
8606
|
-
function nowIso() {
|
|
8625
|
+
function nowIso$1() {
|
|
8607
8626
|
return (/* @__PURE__ */ new Date()).toISOString();
|
|
8608
8627
|
}
|
|
8609
8628
|
function stableId(input) {
|
|
8610
8629
|
return input.trim().replace(/[^A-Za-z0-9_.-]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 80);
|
|
8611
8630
|
}
|
|
8612
8631
|
function createRunId() {
|
|
8613
|
-
return `run_${Date.now().toString(36)}_${randomUUID
|
|
8632
|
+
return `run_${Date.now().toString(36)}_${randomUUID().slice(0, 8)}`;
|
|
8614
8633
|
}
|
|
8615
8634
|
function normalizeRunId(input) {
|
|
8616
8635
|
if (input === void 0) return createRunId();
|
|
@@ -8687,7 +8706,7 @@ function createRun(input) {
|
|
|
8687
8706
|
const runId = normalizeRunId(parsed?.runId);
|
|
8688
8707
|
const existing = getRun(runId);
|
|
8689
8708
|
if (existing !== null) return existing;
|
|
8690
|
-
const timestamp = nowIso();
|
|
8709
|
+
const timestamp = nowIso$1();
|
|
8691
8710
|
const sessionId = normalizeSessionId(parsed?.sessionId, runId);
|
|
8692
8711
|
const groupId = normalizeGroupId(parsed?.groupId);
|
|
8693
8712
|
const run = {
|
|
@@ -8729,7 +8748,7 @@ function updateRun(runId, input) {
|
|
|
8729
8748
|
const parsed = UpdateInspectorRunInputSchema.parse(input);
|
|
8730
8749
|
const runs = readRuns();
|
|
8731
8750
|
const run = runs.find((candidate) => candidate.id === runId) ?? null;
|
|
8732
|
-
const updatedAt = nowIso();
|
|
8751
|
+
const updatedAt = nowIso$1();
|
|
8733
8752
|
if (run === null) return null;
|
|
8734
8753
|
const updatedRun = {
|
|
8735
8754
|
...run,
|
|
@@ -9048,7 +9067,7 @@ function parsePositiveInt$3(value, fallback) {
|
|
|
9048
9067
|
if (!Number.isInteger(parsed) || parsed < 1) return fallback;
|
|
9049
9068
|
return parsed;
|
|
9050
9069
|
}
|
|
9051
|
-
const Route$
|
|
9070
|
+
const Route$F = createFileRoute("/api/runs")({
|
|
9052
9071
|
server: {
|
|
9053
9072
|
handlers: {
|
|
9054
9073
|
GET: ({ request }) => {
|
|
@@ -9094,7 +9113,7 @@ const ProviderInputSchema = object({
|
|
|
9094
9113
|
modelMetadata: array(ProviderModelMetadataSchema).optional(),
|
|
9095
9114
|
source: _enum(["company", "personal"]).optional()
|
|
9096
9115
|
});
|
|
9097
|
-
const Route$
|
|
9116
|
+
const Route$E = createFileRoute("/api/providers")({
|
|
9098
9117
|
server: {
|
|
9099
9118
|
handlers: {
|
|
9100
9119
|
GET: ({ request }) => {
|
|
@@ -9129,7 +9148,7 @@ const Route$y = createFileRoute("/api/providers")({
|
|
|
9129
9148
|
}
|
|
9130
9149
|
}
|
|
9131
9150
|
});
|
|
9132
|
-
const Route$
|
|
9151
|
+
const Route$D = createFileRoute("/api/models")({
|
|
9133
9152
|
server: {
|
|
9134
9153
|
handlers: {
|
|
9135
9154
|
GET: () => Response.json(getModels())
|
|
@@ -9137,7 +9156,7 @@ const Route$x = createFileRoute("/api/models")({
|
|
|
9137
9156
|
}
|
|
9138
9157
|
});
|
|
9139
9158
|
const name = "@tonyclaw/agent-inspector";
|
|
9140
|
-
const version = "3.0.
|
|
9159
|
+
const version = "3.0.8";
|
|
9141
9160
|
const packageJson = {
|
|
9142
9161
|
name,
|
|
9143
9162
|
version
|
|
@@ -12244,7 +12263,7 @@ const PROMPT_NAMES = [
|
|
|
12244
12263
|
"inspector_generate_group_report",
|
|
12245
12264
|
"inspector_extract_repro_steps"
|
|
12246
12265
|
];
|
|
12247
|
-
const Route$
|
|
12266
|
+
const Route$C = createFileRoute("/api/mcp")({
|
|
12248
12267
|
server: {
|
|
12249
12268
|
handlers: {
|
|
12250
12269
|
// The SDK may issue either POST, GET, or DELETE. TanStack Start only
|
|
@@ -12363,7 +12382,7 @@ function parseOptionalPositiveInt(value) {
|
|
|
12363
12382
|
if (!Number.isInteger(parsed) || parsed < 1) return { ok: false };
|
|
12364
12383
|
return { ok: true, value: parsed };
|
|
12365
12384
|
}
|
|
12366
|
-
const Route$
|
|
12385
|
+
const Route$B = createFileRoute("/api/logs")({
|
|
12367
12386
|
server: {
|
|
12368
12387
|
handlers: {
|
|
12369
12388
|
GET: async ({ request }) => {
|
|
@@ -12472,7 +12491,7 @@ const Route$v = createFileRoute("/api/logs")({
|
|
|
12472
12491
|
}
|
|
12473
12492
|
});
|
|
12474
12493
|
logger.debug("Health endpoint loaded");
|
|
12475
|
-
const Route$
|
|
12494
|
+
const Route$A = createFileRoute("/api/health")({
|
|
12476
12495
|
server: {
|
|
12477
12496
|
handlers: {
|
|
12478
12497
|
GET: () => {
|
|
@@ -12509,7 +12528,7 @@ function readDeleteEvidenceFlag$1(request) {
|
|
|
12509
12528
|
return { ok: false };
|
|
12510
12529
|
}
|
|
12511
12530
|
}
|
|
12512
|
-
const Route$
|
|
12531
|
+
const Route$z = createFileRoute("/api/groups")({
|
|
12513
12532
|
server: {
|
|
12514
12533
|
handlers: {
|
|
12515
12534
|
GET: () => Response.json(listInspectorGroups()),
|
|
@@ -12553,7 +12572,7 @@ const RuntimeConfigPatchSchema = object({
|
|
|
12553
12572
|
}).strict().refine((v) => Object.keys(v).length > 0, {
|
|
12554
12573
|
message: "At least one field must be provided"
|
|
12555
12574
|
});
|
|
12556
|
-
const Route$
|
|
12575
|
+
const Route$y = createFileRoute("/api/config")({
|
|
12557
12576
|
server: {
|
|
12558
12577
|
handlers: {
|
|
12559
12578
|
GET: () => {
|
|
@@ -13162,7 +13181,7 @@ function parseFilters(url) {
|
|
|
13162
13181
|
source: sourceResult.success ? sourceResult.data : void 0
|
|
13163
13182
|
};
|
|
13164
13183
|
}
|
|
13165
|
-
const Route$
|
|
13184
|
+
const Route$x = createFileRoute("/api/alerts")({
|
|
13166
13185
|
server: {
|
|
13167
13186
|
handlers: {
|
|
13168
13187
|
GET: async ({ request }) => {
|
|
@@ -13187,7 +13206,7 @@ async function readJsonBody$4(request) {
|
|
|
13187
13206
|
return { ok: false };
|
|
13188
13207
|
}
|
|
13189
13208
|
}
|
|
13190
|
-
const Route$
|
|
13209
|
+
const Route$w = createFileRoute("/api/runs/$runId")({
|
|
13191
13210
|
server: {
|
|
13192
13211
|
handlers: {
|
|
13193
13212
|
GET: ({ params }) => {
|
|
@@ -13662,7 +13681,7 @@ function scanExternalProviders() {
|
|
|
13662
13681
|
}
|
|
13663
13682
|
return { providers: filteredProviders, warnings };
|
|
13664
13683
|
}
|
|
13665
|
-
const Route$
|
|
13684
|
+
const Route$v = createFileRoute("/api/providers/scan")({
|
|
13666
13685
|
server: {
|
|
13667
13686
|
handlers: {
|
|
13668
13687
|
GET: () => {
|
|
@@ -13683,7 +13702,7 @@ const Route$p = createFileRoute("/api/providers/scan")({
|
|
|
13683
13702
|
}
|
|
13684
13703
|
});
|
|
13685
13704
|
union([string(), object({ providers: unknown() })]);
|
|
13686
|
-
const Route$
|
|
13705
|
+
const Route$u = createFileRoute("/api/providers/import")({
|
|
13687
13706
|
server: {
|
|
13688
13707
|
handlers: {
|
|
13689
13708
|
POST: async ({ request }) => {
|
|
@@ -13716,7 +13735,7 @@ const Route$o = createFileRoute("/api/providers/import")({
|
|
|
13716
13735
|
}
|
|
13717
13736
|
}
|
|
13718
13737
|
});
|
|
13719
|
-
const Route$
|
|
13738
|
+
const Route$t = createFileRoute("/api/providers/export")({
|
|
13720
13739
|
server: {
|
|
13721
13740
|
handlers: {
|
|
13722
13741
|
GET: ({ request }) => {
|
|
@@ -13750,7 +13769,7 @@ const ProviderUpdateSchema = object({
|
|
|
13750
13769
|
modelMetadata: array(ProviderModelMetadataSchema).optional(),
|
|
13751
13770
|
source: _enum(["company", "personal"]).optional()
|
|
13752
13771
|
});
|
|
13753
|
-
const Route$
|
|
13772
|
+
const Route$s = createFileRoute("/api/providers/$providerId")({
|
|
13754
13773
|
server: {
|
|
13755
13774
|
handlers: {
|
|
13756
13775
|
GET: ({ params, request }) => {
|
|
@@ -13785,7 +13804,7 @@ const Route$m = createFileRoute("/api/providers/$providerId")({
|
|
|
13785
13804
|
}
|
|
13786
13805
|
});
|
|
13787
13806
|
const INITIAL_STREAM_LOG_LIMIT = 100;
|
|
13788
|
-
const Route$
|
|
13807
|
+
const Route$r = createFileRoute("/api/logs/stream")({
|
|
13789
13808
|
server: {
|
|
13790
13809
|
handlers: {
|
|
13791
13810
|
GET: ({ request }) => {
|
|
@@ -14225,7 +14244,7 @@ function sessionNameFromImportFileName(fileName) {
|
|
|
14225
14244
|
function isUploadedFile(value) {
|
|
14226
14245
|
return value instanceof File;
|
|
14227
14246
|
}
|
|
14228
|
-
const Route$
|
|
14247
|
+
const Route$q = createFileRoute("/api/logs/import")({
|
|
14229
14248
|
server: {
|
|
14230
14249
|
handlers: {
|
|
14231
14250
|
POST: async ({ request }) => {
|
|
@@ -14262,7 +14281,7 @@ const Route$k = createFileRoute("/api/logs/import")({
|
|
|
14262
14281
|
}
|
|
14263
14282
|
}
|
|
14264
14283
|
});
|
|
14265
|
-
const Route$
|
|
14284
|
+
const Route$p = createFileRoute("/api/logs/$id")({
|
|
14266
14285
|
server: {
|
|
14267
14286
|
handlers: {
|
|
14268
14287
|
GET: async ({ params }) => {
|
|
@@ -14799,7 +14818,7 @@ const SearchBodySchema = object({
|
|
|
14799
14818
|
query: string().min(1),
|
|
14800
14819
|
project: string().optional()
|
|
14801
14820
|
});
|
|
14802
|
-
const Route$
|
|
14821
|
+
const Route$o = createFileRoute("/api/knowledge/search")({
|
|
14803
14822
|
server: {
|
|
14804
14823
|
handlers: {
|
|
14805
14824
|
GET: async ({ request }) => {
|
|
@@ -14821,7 +14840,7 @@ const Route$i = createFileRoute("/api/knowledge/search")({
|
|
|
14821
14840
|
}
|
|
14822
14841
|
}
|
|
14823
14842
|
});
|
|
14824
|
-
const Route$
|
|
14843
|
+
const Route$n = createFileRoute("/api/knowledge/project-context")({
|
|
14825
14844
|
server: {
|
|
14826
14845
|
handlers: {
|
|
14827
14846
|
GET: async ({ request }) => {
|
|
@@ -14903,7 +14922,7 @@ function updateCandidateDraft(id, updates) {
|
|
|
14903
14922
|
candidates.set(id, updated);
|
|
14904
14923
|
return updated;
|
|
14905
14924
|
}
|
|
14906
|
-
const Route$
|
|
14925
|
+
const Route$m = createFileRoute("/api/knowledge/candidates")({
|
|
14907
14926
|
server: {
|
|
14908
14927
|
handlers: {
|
|
14909
14928
|
GET: () => Response.json({ candidates: listCandidates() })
|
|
@@ -14938,7 +14957,7 @@ function readDeleteEvidenceFlag(request) {
|
|
|
14938
14957
|
return { ok: false };
|
|
14939
14958
|
}
|
|
14940
14959
|
}
|
|
14941
|
-
const Route$
|
|
14960
|
+
const Route$l = createFileRoute("/api/groups/$groupId")({
|
|
14942
14961
|
server: {
|
|
14943
14962
|
handlers: {
|
|
14944
14963
|
GET: ({ params }) => {
|
|
@@ -14985,6 +15004,16 @@ const Route$f = createFileRoute("/api/groups/$groupId")({
|
|
|
14985
15004
|
}
|
|
14986
15005
|
}
|
|
14987
15006
|
});
|
|
15007
|
+
function platformCommand(command, args, platform = process.platform) {
|
|
15008
|
+
if (platform !== "win32") return { command, args: [...args] };
|
|
15009
|
+
return { command: "cmd.exe", args: ["/d", "/s", "/c", command, ...args] };
|
|
15010
|
+
}
|
|
15011
|
+
function npmCommand(platform = process.platform) {
|
|
15012
|
+
return platform === "win32" ? "npm.cmd" : "npm";
|
|
15013
|
+
}
|
|
15014
|
+
function npmSpawnCommand(args, platform = process.platform) {
|
|
15015
|
+
return platformCommand(npmCommand(platform), args, platform);
|
|
15016
|
+
}
|
|
14988
15017
|
const ECOSYSTEM_PACKAGES = [
|
|
14989
15018
|
{
|
|
14990
15019
|
id: "inspector",
|
|
@@ -15065,15 +15094,13 @@ const RUNNER_PRESETS = [
|
|
|
15065
15094
|
}
|
|
15066
15095
|
];
|
|
15067
15096
|
const NPM_TIMEOUT_MS = 4e3;
|
|
15068
|
-
function npmCommand() {
|
|
15069
|
-
return process.platform === "win32" ? "npm.cmd" : "npm";
|
|
15070
|
-
}
|
|
15071
15097
|
function runNpm(args) {
|
|
15072
15098
|
return new Promise((resolve2) => {
|
|
15099
|
+
const command = npmSpawnCommand(args);
|
|
15073
15100
|
try {
|
|
15074
15101
|
execFile(
|
|
15075
|
-
|
|
15076
|
-
|
|
15102
|
+
command.command,
|
|
15103
|
+
command.args,
|
|
15077
15104
|
{ timeout: NPM_TIMEOUT_MS, windowsHide: true },
|
|
15078
15105
|
(error, stdout) => {
|
|
15079
15106
|
resolve2({
|
|
@@ -15175,7 +15202,138 @@ async function listEcosystemPackages() {
|
|
|
15175
15202
|
ECOSYSTEM_PACKAGES.map((definition) => describePackage(definition, globalRoot))
|
|
15176
15203
|
);
|
|
15177
15204
|
}
|
|
15178
|
-
|
|
15205
|
+
function findEcosystemPackage(packageId) {
|
|
15206
|
+
return ECOSYSTEM_PACKAGES.find((definition) => definition.id === packageId) ?? null;
|
|
15207
|
+
}
|
|
15208
|
+
const MAX_TASKS = 50;
|
|
15209
|
+
const OUTPUT_LIMIT = 4e4;
|
|
15210
|
+
const INSTALL_TIMEOUT_MS = 12e4;
|
|
15211
|
+
const HELP_TIMEOUT_MS = 3e4;
|
|
15212
|
+
const tasks = /* @__PURE__ */ new Map();
|
|
15213
|
+
function nowIso() {
|
|
15214
|
+
return (/* @__PURE__ */ new Date()).toISOString();
|
|
15215
|
+
}
|
|
15216
|
+
function trimOutput(output) {
|
|
15217
|
+
if (output.length <= OUTPUT_LIMIT) return output;
|
|
15218
|
+
return output.slice(output.length - OUTPUT_LIMIT);
|
|
15219
|
+
}
|
|
15220
|
+
function appendTaskOutput(task, chunk) {
|
|
15221
|
+
task.output = trimOutput(`${task.output}${chunk}`);
|
|
15222
|
+
}
|
|
15223
|
+
function rememberTask(task) {
|
|
15224
|
+
tasks.set(task.id, task);
|
|
15225
|
+
while (tasks.size > MAX_TASKS) {
|
|
15226
|
+
const oldest = tasks.keys().next().value;
|
|
15227
|
+
if (typeof oldest !== "string") return;
|
|
15228
|
+
tasks.delete(oldest);
|
|
15229
|
+
}
|
|
15230
|
+
}
|
|
15231
|
+
function packageActionArgs(action, npmName) {
|
|
15232
|
+
switch (action) {
|
|
15233
|
+
case "install":
|
|
15234
|
+
case "upgrade":
|
|
15235
|
+
return ["install", "-g", npmName];
|
|
15236
|
+
case "help":
|
|
15237
|
+
return ["exec", "--yes", npmName, "--", "--help"];
|
|
15238
|
+
case "runner-presets":
|
|
15239
|
+
return ["exec", "--yes", "@tonyclaw/eval-harness", "--", "runner-presets"];
|
|
15240
|
+
}
|
|
15241
|
+
}
|
|
15242
|
+
function packageActionTimeout(action) {
|
|
15243
|
+
switch (action) {
|
|
15244
|
+
case "install":
|
|
15245
|
+
case "upgrade":
|
|
15246
|
+
return INSTALL_TIMEOUT_MS;
|
|
15247
|
+
case "help":
|
|
15248
|
+
case "runner-presets":
|
|
15249
|
+
return HELP_TIMEOUT_MS;
|
|
15250
|
+
}
|
|
15251
|
+
}
|
|
15252
|
+
function taskCommand(args) {
|
|
15253
|
+
return `${npmCommand()} ${args.join(" ")}`;
|
|
15254
|
+
}
|
|
15255
|
+
function completeTask(task, status, exitCode, error) {
|
|
15256
|
+
task.status = status;
|
|
15257
|
+
task.exitCode = exitCode;
|
|
15258
|
+
task.error = error;
|
|
15259
|
+
task.finishedAt = nowIso();
|
|
15260
|
+
}
|
|
15261
|
+
function getEcosystemTask(taskId) {
|
|
15262
|
+
return tasks.get(taskId) ?? null;
|
|
15263
|
+
}
|
|
15264
|
+
function listEcosystemTasks() {
|
|
15265
|
+
return [...tasks.values()].sort((left, right) => right.createdAt.localeCompare(left.createdAt));
|
|
15266
|
+
}
|
|
15267
|
+
function startEcosystemTask(packageId, action) {
|
|
15268
|
+
const definition = action === "runner-presets" ? findEcosystemPackage("eval-harness") : findEcosystemPackage(packageId);
|
|
15269
|
+
if (definition === null) return null;
|
|
15270
|
+
if (action === "runner-presets" && packageId !== "eval-harness") return null;
|
|
15271
|
+
const args = packageActionArgs(action, definition.npmName);
|
|
15272
|
+
const task = {
|
|
15273
|
+
id: randomUUID(),
|
|
15274
|
+
packageId: definition.id,
|
|
15275
|
+
npmName: definition.npmName,
|
|
15276
|
+
action,
|
|
15277
|
+
status: "queued",
|
|
15278
|
+
command: taskCommand(args),
|
|
15279
|
+
output: "",
|
|
15280
|
+
createdAt: nowIso(),
|
|
15281
|
+
startedAt: null,
|
|
15282
|
+
finishedAt: null,
|
|
15283
|
+
exitCode: null,
|
|
15284
|
+
error: null
|
|
15285
|
+
};
|
|
15286
|
+
rememberTask(task);
|
|
15287
|
+
const spawnCommand = npmSpawnCommand(args);
|
|
15288
|
+
const child = spawn(spawnCommand.command, spawnCommand.args, {
|
|
15289
|
+
windowsHide: true,
|
|
15290
|
+
shell: false,
|
|
15291
|
+
stdio: ["ignore", "pipe", "pipe"]
|
|
15292
|
+
});
|
|
15293
|
+
const timeout = setTimeout(() => {
|
|
15294
|
+
child.kill();
|
|
15295
|
+
appendTaskOutput(task, `
|
|
15296
|
+
Timed out after ${String(packageActionTimeout(action) / 1e3)}s.
|
|
15297
|
+
`);
|
|
15298
|
+
}, packageActionTimeout(action));
|
|
15299
|
+
task.status = "running";
|
|
15300
|
+
task.startedAt = nowIso();
|
|
15301
|
+
appendTaskOutput(task, `$ ${task.command}
|
|
15302
|
+
`);
|
|
15303
|
+
child.stdout.on("data", (chunk) => {
|
|
15304
|
+
appendTaskOutput(task, chunk.toString("utf8"));
|
|
15305
|
+
});
|
|
15306
|
+
child.stderr.on("data", (chunk) => {
|
|
15307
|
+
appendTaskOutput(task, chunk.toString("utf8"));
|
|
15308
|
+
});
|
|
15309
|
+
child.on("error", (error) => {
|
|
15310
|
+
clearTimeout(timeout);
|
|
15311
|
+
appendTaskOutput(task, `
|
|
15312
|
+
${error.message}
|
|
15313
|
+
`);
|
|
15314
|
+
completeTask(task, "failed", null, error.message);
|
|
15315
|
+
});
|
|
15316
|
+
child.on("close", (code) => {
|
|
15317
|
+
clearTimeout(timeout);
|
|
15318
|
+
if (task.status === "failed") return;
|
|
15319
|
+
if (code === 0) {
|
|
15320
|
+
completeTask(task, "succeeded", code, null);
|
|
15321
|
+
return;
|
|
15322
|
+
}
|
|
15323
|
+
completeTask(task, "failed", code, `Command exited with code ${String(code ?? "unknown")}`);
|
|
15324
|
+
});
|
|
15325
|
+
return task;
|
|
15326
|
+
}
|
|
15327
|
+
const Route$k = createFileRoute("/api/ecosystem/tasks")({
|
|
15328
|
+
server: {
|
|
15329
|
+
handlers: {
|
|
15330
|
+
GET: () => {
|
|
15331
|
+
return Response.json({ tasks: listEcosystemTasks() });
|
|
15332
|
+
}
|
|
15333
|
+
}
|
|
15334
|
+
}
|
|
15335
|
+
});
|
|
15336
|
+
const Route$j = createFileRoute("/api/ecosystem/packages")({
|
|
15179
15337
|
server: {
|
|
15180
15338
|
handlers: {
|
|
15181
15339
|
GET: async () => {
|
|
@@ -15188,7 +15346,7 @@ const Route$e = createFileRoute("/api/ecosystem/packages")({
|
|
|
15188
15346
|
}
|
|
15189
15347
|
}
|
|
15190
15348
|
});
|
|
15191
|
-
const Route$
|
|
15349
|
+
const Route$i = createFileRoute("/api/config/paths")({
|
|
15192
15350
|
server: {
|
|
15193
15351
|
handlers: {
|
|
15194
15352
|
GET: () => {
|
|
@@ -15205,7 +15363,7 @@ function parsePositiveInt(value) {
|
|
|
15205
15363
|
if (!Number.isInteger(parsed) || parsed < 1) return void 0;
|
|
15206
15364
|
return parsed;
|
|
15207
15365
|
}
|
|
15208
|
-
const Route$
|
|
15366
|
+
const Route$h = createFileRoute("/api/alerts/summary")({
|
|
15209
15367
|
server: {
|
|
15210
15368
|
handlers: {
|
|
15211
15369
|
GET: async ({ request }) => {
|
|
@@ -15228,7 +15386,7 @@ async function readJsonBody$2(request) {
|
|
|
15228
15386
|
return { ok: false };
|
|
15229
15387
|
}
|
|
15230
15388
|
}
|
|
15231
|
-
const Route$
|
|
15389
|
+
const Route$g = createFileRoute("/api/runs/$runId/evidence")({
|
|
15232
15390
|
server: {
|
|
15233
15391
|
handlers: {
|
|
15234
15392
|
GET: ({ params }) => {
|
|
@@ -15958,7 +16116,7 @@ async function testStreamingEndpoint(baseUrl, provider, path2, model, protocol)
|
|
|
15958
16116
|
clearTimeout(timeoutId);
|
|
15959
16117
|
}
|
|
15960
16118
|
}
|
|
15961
|
-
const Route$
|
|
16119
|
+
const Route$f = createFileRoute("/api/providers/$providerId/test")({
|
|
15962
16120
|
server: {
|
|
15963
16121
|
handlers: {
|
|
15964
16122
|
POST: async ({ params }) => {
|
|
@@ -16003,9 +16161,9 @@ const Route$a = createFileRoute("/api/providers/$providerId/test")({
|
|
|
16003
16161
|
openaiChat: { nonStreaming: notConfigured, streaming: notConfigured },
|
|
16004
16162
|
openaiResponses: { nonStreaming: notConfigured, streaming: notConfigured }
|
|
16005
16163
|
};
|
|
16006
|
-
const
|
|
16164
|
+
const tasks2 = [];
|
|
16007
16165
|
if (anthropicUrl !== void 0) {
|
|
16008
|
-
|
|
16166
|
+
tasks2.push(
|
|
16009
16167
|
testEndpoint(anthropicUrl, p, "/v1/messages", usageModel, "anthropic").then((r) => {
|
|
16010
16168
|
modelResults.anthropic.nonStreaming = r;
|
|
16011
16169
|
}),
|
|
@@ -16017,7 +16175,7 @@ const Route$a = createFileRoute("/api/providers/$providerId/test")({
|
|
|
16017
16175
|
);
|
|
16018
16176
|
}
|
|
16019
16177
|
if (openaiUrl !== void 0) {
|
|
16020
|
-
|
|
16178
|
+
tasks2.push(
|
|
16021
16179
|
testEndpoint(openaiUrl, p, "/v1/chat/completions", usageModel, "openaiChat").then(
|
|
16022
16180
|
(r) => {
|
|
16023
16181
|
modelResults.openai.nonStreaming = r;
|
|
@@ -16037,7 +16195,7 @@ const Route$a = createFileRoute("/api/providers/$providerId/test")({
|
|
|
16037
16195
|
);
|
|
16038
16196
|
}
|
|
16039
16197
|
if (openaiResponsesUrl !== void 0) {
|
|
16040
|
-
|
|
16198
|
+
tasks2.push(
|
|
16041
16199
|
testEndpoint(
|
|
16042
16200
|
openaiResponsesUrl,
|
|
16043
16201
|
p,
|
|
@@ -16058,7 +16216,7 @@ const Route$a = createFileRoute("/api/providers/$providerId/test")({
|
|
|
16058
16216
|
})
|
|
16059
16217
|
);
|
|
16060
16218
|
}
|
|
16061
|
-
await Promise.all(
|
|
16219
|
+
await Promise.all(tasks2);
|
|
16062
16220
|
results.models[displayName] = modelResults;
|
|
16063
16221
|
}
|
|
16064
16222
|
await Promise.all(modelsToTest.map((displayName) => testOneModel(displayName)));
|
|
@@ -16099,7 +16257,7 @@ async function readRegistryJson(response) {
|
|
|
16099
16257
|
return null;
|
|
16100
16258
|
}
|
|
16101
16259
|
}
|
|
16102
|
-
const Route$
|
|
16260
|
+
const Route$e = createFileRoute("/api/providers/$providerId/model-metadata")({
|
|
16103
16261
|
server: {
|
|
16104
16262
|
handlers: {
|
|
16105
16263
|
POST: async ({ params, request }) => {
|
|
@@ -16189,7 +16347,7 @@ const Route$9 = createFileRoute("/api/providers/$providerId/model-metadata")({
|
|
|
16189
16347
|
const ReplayRequestSchema = object({
|
|
16190
16348
|
modifiedBody: string()
|
|
16191
16349
|
});
|
|
16192
|
-
const Route$
|
|
16350
|
+
const Route$d = createFileRoute("/api/logs/$id/replay")({
|
|
16193
16351
|
server: {
|
|
16194
16352
|
handlers: {
|
|
16195
16353
|
POST: async ({ params, request }) => {
|
|
@@ -16390,7 +16548,7 @@ const Route$8 = createFileRoute("/api/logs/$id/replay")({
|
|
|
16390
16548
|
}
|
|
16391
16549
|
}
|
|
16392
16550
|
});
|
|
16393
|
-
const Route$
|
|
16551
|
+
const Route$c = createFileRoute("/api/logs/$id/chunks")({
|
|
16394
16552
|
server: {
|
|
16395
16553
|
handlers: {
|
|
16396
16554
|
GET: async ({ params }) => {
|
|
@@ -16497,7 +16655,7 @@ function parseIntegerParam(value, fallback) {
|
|
|
16497
16655
|
if (!Number.isInteger(parsed)) return fallback;
|
|
16498
16656
|
return parsed;
|
|
16499
16657
|
}
|
|
16500
|
-
const Route$
|
|
16658
|
+
const Route$b = createFileRoute("/api/logs/$id/body")({
|
|
16501
16659
|
server: {
|
|
16502
16660
|
handlers: {
|
|
16503
16661
|
GET: async ({ params, request }) => {
|
|
@@ -16535,7 +16693,7 @@ const CandidateUpdateSchema = object({
|
|
|
16535
16693
|
object({
|
|
16536
16694
|
candidate: KnowledgeCandidateSchema
|
|
16537
16695
|
});
|
|
16538
|
-
const Route$
|
|
16696
|
+
const Route$a = createFileRoute("/api/knowledge/candidates/$candidateId")({
|
|
16539
16697
|
server: {
|
|
16540
16698
|
handlers: {
|
|
16541
16699
|
PATCH: async ({ params, request }) => {
|
|
@@ -16572,7 +16730,7 @@ async function readJsonBody$1(request) {
|
|
|
16572
16730
|
return { ok: false };
|
|
16573
16731
|
}
|
|
16574
16732
|
}
|
|
16575
|
-
const Route$
|
|
16733
|
+
const Route$9 = createFileRoute("/api/groups/$groupId/sessions")({
|
|
16576
16734
|
server: {
|
|
16577
16735
|
handlers: {
|
|
16578
16736
|
GET: ({ params }) => {
|
|
@@ -16612,7 +16770,7 @@ async function readJsonBody(request) {
|
|
|
16612
16770
|
return { ok: false };
|
|
16613
16771
|
}
|
|
16614
16772
|
}
|
|
16615
|
-
const Route$
|
|
16773
|
+
const Route$8 = createFileRoute("/api/groups/$groupId/evidence")({
|
|
16616
16774
|
server: {
|
|
16617
16775
|
handlers: {
|
|
16618
16776
|
GET: ({ params }) => {
|
|
@@ -16647,6 +16805,19 @@ const Route$3 = createFileRoute("/api/groups/$groupId/evidence")({
|
|
|
16647
16805
|
}
|
|
16648
16806
|
}
|
|
16649
16807
|
});
|
|
16808
|
+
const Route$7 = createFileRoute("/api/ecosystem/tasks/$taskId")({
|
|
16809
|
+
server: {
|
|
16810
|
+
handlers: {
|
|
16811
|
+
GET: ({ params }) => {
|
|
16812
|
+
const task = getEcosystemTask(params.taskId);
|
|
16813
|
+
if (task === null) {
|
|
16814
|
+
return Response.json({ error: "Unknown ecosystem task" }, { status: 404 });
|
|
16815
|
+
}
|
|
16816
|
+
return Response.json({ task });
|
|
16817
|
+
}
|
|
16818
|
+
}
|
|
16819
|
+
}
|
|
16820
|
+
});
|
|
16650
16821
|
const ProviderTestErrorTypeSchema = _enum([
|
|
16651
16822
|
"timeout",
|
|
16652
16823
|
"network_unreachable",
|
|
@@ -17002,7 +17173,7 @@ async function logModelResults(displayName, providerName, providerSessionId, ant
|
|
|
17002
17173
|
}
|
|
17003
17174
|
}
|
|
17004
17175
|
}
|
|
17005
|
-
const Route$
|
|
17176
|
+
const Route$6 = createFileRoute("/api/providers/$providerId/test/log")({
|
|
17006
17177
|
server: {
|
|
17007
17178
|
handlers: {
|
|
17008
17179
|
POST: async ({ params, request }) => {
|
|
@@ -17142,7 +17313,7 @@ function getLogsForCandidateScope(scopeId) {
|
|
|
17142
17313
|
if (direct.length > 0) return direct;
|
|
17143
17314
|
return getFilteredLogs().filter((log) => getCandidateScopeId(log) === scopeId);
|
|
17144
17315
|
}
|
|
17145
|
-
const Route$
|
|
17316
|
+
const Route$5 = createFileRoute("/api/knowledge/sessions/$sessionId/candidates")({
|
|
17146
17317
|
server: {
|
|
17147
17318
|
handlers: {
|
|
17148
17319
|
POST: ({ params }) => {
|
|
@@ -17153,7 +17324,7 @@ const Route$1 = createFileRoute("/api/knowledge/sessions/$sessionId/candidates")
|
|
|
17153
17324
|
}
|
|
17154
17325
|
}
|
|
17155
17326
|
});
|
|
17156
|
-
const Route = createFileRoute("/api/knowledge/candidates/$candidateId/promote")({
|
|
17327
|
+
const Route$4 = createFileRoute("/api/knowledge/candidates/$candidateId/promote")({
|
|
17157
17328
|
server: {
|
|
17158
17329
|
handlers: {
|
|
17159
17330
|
POST: async ({ params }) => {
|
|
@@ -17175,206 +17346,291 @@ const Route = createFileRoute("/api/knowledge/candidates/$candidateId/promote")(
|
|
|
17175
17346
|
}
|
|
17176
17347
|
}
|
|
17177
17348
|
});
|
|
17178
|
-
const
|
|
17349
|
+
const Route$3 = createFileRoute("/api/ecosystem/packages/$packageId/upgrade")({
|
|
17350
|
+
server: {
|
|
17351
|
+
handlers: {
|
|
17352
|
+
POST: ({ params }) => {
|
|
17353
|
+
const task = startEcosystemTask(params.packageId, "upgrade");
|
|
17354
|
+
if (task === null) {
|
|
17355
|
+
return Response.json({ error: "Unknown ecosystem package" }, { status: 404 });
|
|
17356
|
+
}
|
|
17357
|
+
return Response.json({ task });
|
|
17358
|
+
}
|
|
17359
|
+
}
|
|
17360
|
+
}
|
|
17361
|
+
});
|
|
17362
|
+
const Route$2 = createFileRoute("/api/ecosystem/packages/$packageId/runner-presets")({
|
|
17363
|
+
server: {
|
|
17364
|
+
handlers: {
|
|
17365
|
+
POST: ({ params }) => {
|
|
17366
|
+
const task = startEcosystemTask(params.packageId, "runner-presets");
|
|
17367
|
+
if (task === null) {
|
|
17368
|
+
return Response.json(
|
|
17369
|
+
{ error: "Runner presets are only available for Eval Harness" },
|
|
17370
|
+
{ status: 404 }
|
|
17371
|
+
);
|
|
17372
|
+
}
|
|
17373
|
+
return Response.json({ task });
|
|
17374
|
+
}
|
|
17375
|
+
}
|
|
17376
|
+
}
|
|
17377
|
+
});
|
|
17378
|
+
const Route$1 = createFileRoute("/api/ecosystem/packages/$packageId/install")({
|
|
17379
|
+
server: {
|
|
17380
|
+
handlers: {
|
|
17381
|
+
POST: ({ params }) => {
|
|
17382
|
+
const task = startEcosystemTask(params.packageId, "install");
|
|
17383
|
+
if (task === null) {
|
|
17384
|
+
return Response.json({ error: "Unknown ecosystem package" }, { status: 404 });
|
|
17385
|
+
}
|
|
17386
|
+
return Response.json({ task });
|
|
17387
|
+
}
|
|
17388
|
+
}
|
|
17389
|
+
}
|
|
17390
|
+
});
|
|
17391
|
+
const Route = createFileRoute("/api/ecosystem/packages/$packageId/help")({
|
|
17392
|
+
server: {
|
|
17393
|
+
handlers: {
|
|
17394
|
+
POST: ({ params }) => {
|
|
17395
|
+
const task = startEcosystemTask(params.packageId, "help");
|
|
17396
|
+
if (task === null) {
|
|
17397
|
+
return Response.json({ error: "Unknown ecosystem package" }, { status: 404 });
|
|
17398
|
+
}
|
|
17399
|
+
return Response.json({ task });
|
|
17400
|
+
}
|
|
17401
|
+
}
|
|
17402
|
+
}
|
|
17403
|
+
});
|
|
17404
|
+
const IndexRoute = Route$J.update({
|
|
17179
17405
|
id: "/",
|
|
17180
17406
|
path: "/",
|
|
17181
|
-
getParentRoute: () => Route$
|
|
17407
|
+
getParentRoute: () => Route$K
|
|
17182
17408
|
});
|
|
17183
|
-
const SessionSessionIdRoute = Route$
|
|
17409
|
+
const SessionSessionIdRoute = Route$I.update({
|
|
17184
17410
|
id: "/session/$sessionId",
|
|
17185
17411
|
path: "/session/$sessionId",
|
|
17186
|
-
getParentRoute: () => Route$
|
|
17412
|
+
getParentRoute: () => Route$K
|
|
17187
17413
|
});
|
|
17188
|
-
const ProxySplatRoute = Route$
|
|
17414
|
+
const ProxySplatRoute = Route$H.update({
|
|
17189
17415
|
id: "/proxy/$",
|
|
17190
17416
|
path: "/proxy/$",
|
|
17191
|
-
getParentRoute: () => Route$
|
|
17417
|
+
getParentRoute: () => Route$K
|
|
17192
17418
|
});
|
|
17193
|
-
const ApiSessionsRoute = Route$
|
|
17419
|
+
const ApiSessionsRoute = Route$G.update({
|
|
17194
17420
|
id: "/api/sessions",
|
|
17195
17421
|
path: "/api/sessions",
|
|
17196
|
-
getParentRoute: () => Route$
|
|
17422
|
+
getParentRoute: () => Route$K
|
|
17197
17423
|
});
|
|
17198
|
-
const ApiRunsRoute = Route$
|
|
17424
|
+
const ApiRunsRoute = Route$F.update({
|
|
17199
17425
|
id: "/api/runs",
|
|
17200
17426
|
path: "/api/runs",
|
|
17201
|
-
getParentRoute: () => Route$
|
|
17427
|
+
getParentRoute: () => Route$K
|
|
17202
17428
|
});
|
|
17203
|
-
const ApiProvidersRoute = Route$
|
|
17429
|
+
const ApiProvidersRoute = Route$E.update({
|
|
17204
17430
|
id: "/api/providers",
|
|
17205
17431
|
path: "/api/providers",
|
|
17206
|
-
getParentRoute: () => Route$
|
|
17432
|
+
getParentRoute: () => Route$K
|
|
17207
17433
|
});
|
|
17208
|
-
const ApiModelsRoute = Route$
|
|
17434
|
+
const ApiModelsRoute = Route$D.update({
|
|
17209
17435
|
id: "/api/models",
|
|
17210
17436
|
path: "/api/models",
|
|
17211
|
-
getParentRoute: () => Route$
|
|
17437
|
+
getParentRoute: () => Route$K
|
|
17212
17438
|
});
|
|
17213
|
-
const ApiMcpRoute = Route$
|
|
17439
|
+
const ApiMcpRoute = Route$C.update({
|
|
17214
17440
|
id: "/api/mcp",
|
|
17215
17441
|
path: "/api/mcp",
|
|
17216
|
-
getParentRoute: () => Route$
|
|
17442
|
+
getParentRoute: () => Route$K
|
|
17217
17443
|
});
|
|
17218
|
-
const ApiLogsRoute = Route$
|
|
17444
|
+
const ApiLogsRoute = Route$B.update({
|
|
17219
17445
|
id: "/api/logs",
|
|
17220
17446
|
path: "/api/logs",
|
|
17221
|
-
getParentRoute: () => Route$
|
|
17447
|
+
getParentRoute: () => Route$K
|
|
17222
17448
|
});
|
|
17223
|
-
const ApiHealthRoute = Route$
|
|
17449
|
+
const ApiHealthRoute = Route$A.update({
|
|
17224
17450
|
id: "/api/health",
|
|
17225
17451
|
path: "/api/health",
|
|
17226
|
-
getParentRoute: () => Route$
|
|
17452
|
+
getParentRoute: () => Route$K
|
|
17227
17453
|
});
|
|
17228
|
-
const ApiGroupsRoute = Route$
|
|
17454
|
+
const ApiGroupsRoute = Route$z.update({
|
|
17229
17455
|
id: "/api/groups",
|
|
17230
17456
|
path: "/api/groups",
|
|
17231
|
-
getParentRoute: () => Route$
|
|
17457
|
+
getParentRoute: () => Route$K
|
|
17232
17458
|
});
|
|
17233
|
-
const ApiConfigRoute = Route$
|
|
17459
|
+
const ApiConfigRoute = Route$y.update({
|
|
17234
17460
|
id: "/api/config",
|
|
17235
17461
|
path: "/api/config",
|
|
17236
|
-
getParentRoute: () => Route$
|
|
17462
|
+
getParentRoute: () => Route$K
|
|
17237
17463
|
});
|
|
17238
|
-
const ApiAlertsRoute = Route$
|
|
17464
|
+
const ApiAlertsRoute = Route$x.update({
|
|
17239
17465
|
id: "/api/alerts",
|
|
17240
17466
|
path: "/api/alerts",
|
|
17241
|
-
getParentRoute: () => Route$
|
|
17467
|
+
getParentRoute: () => Route$K
|
|
17242
17468
|
});
|
|
17243
|
-
const ApiRunsRunIdRoute = Route$
|
|
17469
|
+
const ApiRunsRunIdRoute = Route$w.update({
|
|
17244
17470
|
id: "/$runId",
|
|
17245
17471
|
path: "/$runId",
|
|
17246
17472
|
getParentRoute: () => ApiRunsRoute
|
|
17247
17473
|
});
|
|
17248
|
-
const ApiProvidersScanRoute = Route$
|
|
17474
|
+
const ApiProvidersScanRoute = Route$v.update({
|
|
17249
17475
|
id: "/scan",
|
|
17250
17476
|
path: "/scan",
|
|
17251
17477
|
getParentRoute: () => ApiProvidersRoute
|
|
17252
17478
|
});
|
|
17253
|
-
const ApiProvidersImportRoute = Route$
|
|
17479
|
+
const ApiProvidersImportRoute = Route$u.update({
|
|
17254
17480
|
id: "/import",
|
|
17255
17481
|
path: "/import",
|
|
17256
17482
|
getParentRoute: () => ApiProvidersRoute
|
|
17257
17483
|
});
|
|
17258
|
-
const ApiProvidersExportRoute = Route$
|
|
17484
|
+
const ApiProvidersExportRoute = Route$t.update({
|
|
17259
17485
|
id: "/export",
|
|
17260
17486
|
path: "/export",
|
|
17261
17487
|
getParentRoute: () => ApiProvidersRoute
|
|
17262
17488
|
});
|
|
17263
|
-
const ApiProvidersProviderIdRoute = Route$
|
|
17489
|
+
const ApiProvidersProviderIdRoute = Route$s.update({
|
|
17264
17490
|
id: "/$providerId",
|
|
17265
17491
|
path: "/$providerId",
|
|
17266
17492
|
getParentRoute: () => ApiProvidersRoute
|
|
17267
17493
|
});
|
|
17268
|
-
const ApiLogsStreamRoute = Route$
|
|
17494
|
+
const ApiLogsStreamRoute = Route$r.update({
|
|
17269
17495
|
id: "/stream",
|
|
17270
17496
|
path: "/stream",
|
|
17271
17497
|
getParentRoute: () => ApiLogsRoute
|
|
17272
17498
|
});
|
|
17273
|
-
const ApiLogsImportRoute = Route$
|
|
17499
|
+
const ApiLogsImportRoute = Route$q.update({
|
|
17274
17500
|
id: "/import",
|
|
17275
17501
|
path: "/import",
|
|
17276
17502
|
getParentRoute: () => ApiLogsRoute
|
|
17277
17503
|
});
|
|
17278
|
-
const ApiLogsIdRoute = Route$
|
|
17504
|
+
const ApiLogsIdRoute = Route$p.update({
|
|
17279
17505
|
id: "/$id",
|
|
17280
17506
|
path: "/$id",
|
|
17281
17507
|
getParentRoute: () => ApiLogsRoute
|
|
17282
17508
|
});
|
|
17283
|
-
const ApiKnowledgeSearchRoute = Route$
|
|
17509
|
+
const ApiKnowledgeSearchRoute = Route$o.update({
|
|
17284
17510
|
id: "/api/knowledge/search",
|
|
17285
17511
|
path: "/api/knowledge/search",
|
|
17286
|
-
getParentRoute: () => Route$
|
|
17512
|
+
getParentRoute: () => Route$K
|
|
17287
17513
|
});
|
|
17288
|
-
const ApiKnowledgeProjectContextRoute = Route$
|
|
17514
|
+
const ApiKnowledgeProjectContextRoute = Route$n.update({
|
|
17289
17515
|
id: "/api/knowledge/project-context",
|
|
17290
17516
|
path: "/api/knowledge/project-context",
|
|
17291
|
-
getParentRoute: () => Route$
|
|
17517
|
+
getParentRoute: () => Route$K
|
|
17292
17518
|
});
|
|
17293
|
-
const ApiKnowledgeCandidatesRoute = Route$
|
|
17519
|
+
const ApiKnowledgeCandidatesRoute = Route$m.update({
|
|
17294
17520
|
id: "/api/knowledge/candidates",
|
|
17295
17521
|
path: "/api/knowledge/candidates",
|
|
17296
|
-
getParentRoute: () => Route$
|
|
17522
|
+
getParentRoute: () => Route$K
|
|
17297
17523
|
});
|
|
17298
|
-
const ApiGroupsGroupIdRoute = Route$
|
|
17524
|
+
const ApiGroupsGroupIdRoute = Route$l.update({
|
|
17299
17525
|
id: "/$groupId",
|
|
17300
17526
|
path: "/$groupId",
|
|
17301
17527
|
getParentRoute: () => ApiGroupsRoute
|
|
17302
17528
|
});
|
|
17303
|
-
const
|
|
17529
|
+
const ApiEcosystemTasksRoute = Route$k.update({
|
|
17530
|
+
id: "/api/ecosystem/tasks",
|
|
17531
|
+
path: "/api/ecosystem/tasks",
|
|
17532
|
+
getParentRoute: () => Route$K
|
|
17533
|
+
});
|
|
17534
|
+
const ApiEcosystemPackagesRoute = Route$j.update({
|
|
17304
17535
|
id: "/api/ecosystem/packages",
|
|
17305
17536
|
path: "/api/ecosystem/packages",
|
|
17306
|
-
getParentRoute: () => Route$
|
|
17537
|
+
getParentRoute: () => Route$K
|
|
17307
17538
|
});
|
|
17308
|
-
const ApiConfigPathsRoute = Route$
|
|
17539
|
+
const ApiConfigPathsRoute = Route$i.update({
|
|
17309
17540
|
id: "/paths",
|
|
17310
17541
|
path: "/paths",
|
|
17311
17542
|
getParentRoute: () => ApiConfigRoute
|
|
17312
17543
|
});
|
|
17313
|
-
const ApiAlertsSummaryRoute = Route$
|
|
17544
|
+
const ApiAlertsSummaryRoute = Route$h.update({
|
|
17314
17545
|
id: "/summary",
|
|
17315
17546
|
path: "/summary",
|
|
17316
17547
|
getParentRoute: () => ApiAlertsRoute
|
|
17317
17548
|
});
|
|
17318
|
-
const ApiRunsRunIdEvidenceRoute = Route$
|
|
17549
|
+
const ApiRunsRunIdEvidenceRoute = Route$g.update({
|
|
17319
17550
|
id: "/evidence",
|
|
17320
17551
|
path: "/evidence",
|
|
17321
17552
|
getParentRoute: () => ApiRunsRunIdRoute
|
|
17322
17553
|
});
|
|
17323
|
-
const ApiProvidersProviderIdTestRoute = Route$
|
|
17554
|
+
const ApiProvidersProviderIdTestRoute = Route$f.update({
|
|
17324
17555
|
id: "/test",
|
|
17325
17556
|
path: "/test",
|
|
17326
17557
|
getParentRoute: () => ApiProvidersProviderIdRoute
|
|
17327
17558
|
});
|
|
17328
|
-
const ApiProvidersProviderIdModelMetadataRoute = Route$
|
|
17559
|
+
const ApiProvidersProviderIdModelMetadataRoute = Route$e.update({
|
|
17329
17560
|
id: "/model-metadata",
|
|
17330
17561
|
path: "/model-metadata",
|
|
17331
17562
|
getParentRoute: () => ApiProvidersProviderIdRoute
|
|
17332
17563
|
});
|
|
17333
|
-
const ApiLogsIdReplayRoute = Route$
|
|
17564
|
+
const ApiLogsIdReplayRoute = Route$d.update({
|
|
17334
17565
|
id: "/replay",
|
|
17335
17566
|
path: "/replay",
|
|
17336
17567
|
getParentRoute: () => ApiLogsIdRoute
|
|
17337
17568
|
});
|
|
17338
|
-
const ApiLogsIdChunksRoute = Route$
|
|
17569
|
+
const ApiLogsIdChunksRoute = Route$c.update({
|
|
17339
17570
|
id: "/chunks",
|
|
17340
17571
|
path: "/chunks",
|
|
17341
17572
|
getParentRoute: () => ApiLogsIdRoute
|
|
17342
17573
|
});
|
|
17343
|
-
const ApiLogsIdBodyRoute = Route$
|
|
17574
|
+
const ApiLogsIdBodyRoute = Route$b.update({
|
|
17344
17575
|
id: "/body",
|
|
17345
17576
|
path: "/body",
|
|
17346
17577
|
getParentRoute: () => ApiLogsIdRoute
|
|
17347
17578
|
});
|
|
17348
|
-
const ApiKnowledgeCandidatesCandidateIdRoute = Route$
|
|
17579
|
+
const ApiKnowledgeCandidatesCandidateIdRoute = Route$a.update({
|
|
17349
17580
|
id: "/$candidateId",
|
|
17350
17581
|
path: "/$candidateId",
|
|
17351
17582
|
getParentRoute: () => ApiKnowledgeCandidatesRoute
|
|
17352
17583
|
});
|
|
17353
|
-
const ApiGroupsGroupIdSessionsRoute = Route$
|
|
17584
|
+
const ApiGroupsGroupIdSessionsRoute = Route$9.update({
|
|
17354
17585
|
id: "/sessions",
|
|
17355
17586
|
path: "/sessions",
|
|
17356
17587
|
getParentRoute: () => ApiGroupsGroupIdRoute
|
|
17357
17588
|
});
|
|
17358
|
-
const ApiGroupsGroupIdEvidenceRoute = Route$
|
|
17589
|
+
const ApiGroupsGroupIdEvidenceRoute = Route$8.update({
|
|
17359
17590
|
id: "/evidence",
|
|
17360
17591
|
path: "/evidence",
|
|
17361
17592
|
getParentRoute: () => ApiGroupsGroupIdRoute
|
|
17362
17593
|
});
|
|
17363
|
-
const
|
|
17594
|
+
const ApiEcosystemTasksTaskIdRoute = Route$7.update({
|
|
17595
|
+
id: "/$taskId",
|
|
17596
|
+
path: "/$taskId",
|
|
17597
|
+
getParentRoute: () => ApiEcosystemTasksRoute
|
|
17598
|
+
});
|
|
17599
|
+
const ApiProvidersProviderIdTestLogRoute = Route$6.update({
|
|
17364
17600
|
id: "/log",
|
|
17365
17601
|
path: "/log",
|
|
17366
17602
|
getParentRoute: () => ApiProvidersProviderIdTestRoute
|
|
17367
17603
|
});
|
|
17368
|
-
const ApiKnowledgeSessionsSessionIdCandidatesRoute = Route$
|
|
17604
|
+
const ApiKnowledgeSessionsSessionIdCandidatesRoute = Route$5.update({
|
|
17369
17605
|
id: "/api/knowledge/sessions/$sessionId/candidates",
|
|
17370
17606
|
path: "/api/knowledge/sessions/$sessionId/candidates",
|
|
17371
|
-
getParentRoute: () => Route$
|
|
17607
|
+
getParentRoute: () => Route$K
|
|
17372
17608
|
});
|
|
17373
|
-
const ApiKnowledgeCandidatesCandidateIdPromoteRoute = Route.update({
|
|
17609
|
+
const ApiKnowledgeCandidatesCandidateIdPromoteRoute = Route$4.update({
|
|
17374
17610
|
id: "/promote",
|
|
17375
17611
|
path: "/promote",
|
|
17376
17612
|
getParentRoute: () => ApiKnowledgeCandidatesCandidateIdRoute
|
|
17377
17613
|
});
|
|
17614
|
+
const ApiEcosystemPackagesPackageIdUpgradeRoute = Route$3.update({
|
|
17615
|
+
id: "/$packageId/upgrade",
|
|
17616
|
+
path: "/$packageId/upgrade",
|
|
17617
|
+
getParentRoute: () => ApiEcosystemPackagesRoute
|
|
17618
|
+
});
|
|
17619
|
+
const ApiEcosystemPackagesPackageIdRunnerPresetsRoute = Route$2.update({
|
|
17620
|
+
id: "/$packageId/runner-presets",
|
|
17621
|
+
path: "/$packageId/runner-presets",
|
|
17622
|
+
getParentRoute: () => ApiEcosystemPackagesRoute
|
|
17623
|
+
});
|
|
17624
|
+
const ApiEcosystemPackagesPackageIdInstallRoute = Route$1.update({
|
|
17625
|
+
id: "/$packageId/install",
|
|
17626
|
+
path: "/$packageId/install",
|
|
17627
|
+
getParentRoute: () => ApiEcosystemPackagesRoute
|
|
17628
|
+
});
|
|
17629
|
+
const ApiEcosystemPackagesPackageIdHelpRoute = Route.update({
|
|
17630
|
+
id: "/$packageId/help",
|
|
17631
|
+
path: "/$packageId/help",
|
|
17632
|
+
getParentRoute: () => ApiEcosystemPackagesRoute
|
|
17633
|
+
});
|
|
17378
17634
|
const ApiAlertsRouteChildren = {
|
|
17379
17635
|
ApiAlertsSummaryRoute
|
|
17380
17636
|
};
|
|
@@ -17444,6 +17700,17 @@ const ApiRunsRouteChildren = {
|
|
|
17444
17700
|
ApiRunsRunIdRoute: ApiRunsRunIdRouteWithChildren
|
|
17445
17701
|
};
|
|
17446
17702
|
const ApiRunsRouteWithChildren = ApiRunsRoute._addFileChildren(ApiRunsRouteChildren);
|
|
17703
|
+
const ApiEcosystemPackagesRouteChildren = {
|
|
17704
|
+
ApiEcosystemPackagesPackageIdHelpRoute,
|
|
17705
|
+
ApiEcosystemPackagesPackageIdInstallRoute,
|
|
17706
|
+
ApiEcosystemPackagesPackageIdRunnerPresetsRoute,
|
|
17707
|
+
ApiEcosystemPackagesPackageIdUpgradeRoute
|
|
17708
|
+
};
|
|
17709
|
+
const ApiEcosystemPackagesRouteWithChildren = ApiEcosystemPackagesRoute._addFileChildren(ApiEcosystemPackagesRouteChildren);
|
|
17710
|
+
const ApiEcosystemTasksRouteChildren = {
|
|
17711
|
+
ApiEcosystemTasksTaskIdRoute
|
|
17712
|
+
};
|
|
17713
|
+
const ApiEcosystemTasksRouteWithChildren = ApiEcosystemTasksRoute._addFileChildren(ApiEcosystemTasksRouteChildren);
|
|
17447
17714
|
const ApiKnowledgeCandidatesCandidateIdRouteChildren = {
|
|
17448
17715
|
ApiKnowledgeCandidatesCandidateIdPromoteRoute
|
|
17449
17716
|
};
|
|
@@ -17470,13 +17737,14 @@ const rootRouteChildren = {
|
|
|
17470
17737
|
ApiSessionsRoute,
|
|
17471
17738
|
ProxySplatRoute,
|
|
17472
17739
|
SessionSessionIdRoute,
|
|
17473
|
-
ApiEcosystemPackagesRoute,
|
|
17740
|
+
ApiEcosystemPackagesRoute: ApiEcosystemPackagesRouteWithChildren,
|
|
17741
|
+
ApiEcosystemTasksRoute: ApiEcosystemTasksRouteWithChildren,
|
|
17474
17742
|
ApiKnowledgeCandidatesRoute: ApiKnowledgeCandidatesRouteWithChildren,
|
|
17475
17743
|
ApiKnowledgeProjectContextRoute,
|
|
17476
17744
|
ApiKnowledgeSearchRoute,
|
|
17477
17745
|
ApiKnowledgeSessionsSessionIdCandidatesRoute
|
|
17478
17746
|
};
|
|
17479
|
-
const routeTree = Route$
|
|
17747
|
+
const routeTree = Route$K._addFileChildren(rootRouteChildren)._addFileTypes();
|
|
17480
17748
|
function getRouter() {
|
|
17481
17749
|
const router2 = createRouter({
|
|
17482
17750
|
routeTree,
|
|
@@ -17518,7 +17786,8 @@ export {
|
|
|
17518
17786
|
router as N,
|
|
17519
17787
|
OpenAIRequestSchema as O,
|
|
17520
17788
|
ProviderConfigSchema as P,
|
|
17521
|
-
Route$
|
|
17789
|
+
Route$I as R,
|
|
17790
|
+
StreamingChunkSchema$1 as S,
|
|
17522
17791
|
TimeDisplayFormatSchema as T,
|
|
17523
17792
|
DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS as a,
|
|
17524
17793
|
DEFAULT_PROVIDER_TEST_TIMEOUT_SECONDS as b,
|