@tonyclaw/agent-inspector 2.0.22 → 2.0.23
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-NEdpe1wl.js → CompareDrawer-DnYQtd8R.js} +1 -1
- package/.output/public/assets/{ProxyViewerContainer-Dwhi4Q1c.js → ProxyViewerContainer-BTYGkg36.js} +4 -4
- package/.output/public/assets/{ReplayDialog-DijzJwaQ.js → ReplayDialog-B-3V95xT.js} +1 -1
- package/.output/public/assets/{RequestAnatomy-CYbosGYy.js → RequestAnatomy-CT8hLGLa.js} +1 -1
- package/.output/public/assets/{ResponseView-B3dPM63X.js → ResponseView-DK3CYom0.js} +1 -1
- package/.output/public/assets/{StreamingChunkSequence-DYDx3xRY.js → StreamingChunkSequence-D3jJutjp.js} +1 -1
- package/.output/public/assets/_sessionId-DpdfAzbo.js +1 -0
- package/.output/public/assets/index-BpJNbm9G.js +1 -0
- package/.output/public/assets/{main-N-sjHJUM.js → main-hF_572U6.js} +2 -2
- package/.output/server/{_sessionId-BR46y_bO.mjs → _sessionId-BqhNE2M8.mjs} +2 -2
- package/.output/server/_ssr/{CompareDrawer-DDxpmdPs.mjs → CompareDrawer-C4LQW4S1.mjs} +2 -2
- package/.output/server/_ssr/{ProxyViewerContainer-B1zAefzz.mjs → ProxyViewerContainer-BKInvawk.mjs} +7 -7
- package/.output/server/_ssr/{ReplayDialog-DleMFvMx.mjs → ReplayDialog-C3ZiRihL.mjs} +3 -3
- package/.output/server/_ssr/{RequestAnatomy-B-P9tC3D.mjs → RequestAnatomy-DlVAPIQZ.mjs} +2 -2
- package/.output/server/_ssr/{ResponseView-DWfGn0i3.mjs → ResponseView-nMS0rkxu.mjs} +2 -2
- package/.output/server/_ssr/{StreamingChunkSequence-C8kFF6xJ.mjs → StreamingChunkSequence-PDWqrNiO.mjs} +2 -2
- package/.output/server/_ssr/{index-DzENi2RO.mjs → index-Cd1zD-lo.mjs} +2 -2
- package/.output/server/_ssr/index.mjs +2 -2
- package/.output/server/_ssr/{router-Dy1VEjxy.mjs → router-R9gm7_sh.mjs} +150 -76
- package/.output/server/{_tanstack-start-manifest_v-CyzuAD8A.mjs → _tanstack-start-manifest_v-BnLVH_EX.mjs} +1 -1
- package/.output/server/index.mjs +57 -57
- package/package.json +1 -1
- package/src/proxy/store.ts +198 -135
- package/src/routes/api/logs.stream.ts +1 -1
- package/.output/public/assets/_sessionId-b1KDnByv.js +0 -1
- package/.output/public/assets/index-CUyRKgII.js +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { c as createRouter, a as createRootRoute, b as createFileRoute, l as lazyRouteComponent, O as Outlet, H as HeadContent, S as Scripts } from "../_libs/tanstack__react-router.mjs";
|
|
2
2
|
import { j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
3
3
|
import { S as SWRConfig } from "../_libs/swr.mjs";
|
|
4
|
-
import { existsSync, readFileSync, mkdirSync, writeFileSync, renameSync, copyFileSync, unlinkSync, readdirSync, statSync, createReadStream, cpSync, rmSync } from "node:fs";
|
|
5
|
-
import fs, { mkdir, appendFile, readFile, writeFile, readdir, open, stat, unlink } from "node:fs/promises";
|
|
4
|
+
import { existsSync, readFileSync, mkdirSync, writeFileSync, renameSync, copyFileSync, unlinkSync, readdirSync, statSync, createReadStream, cpSync, rmSync, createWriteStream } from "node:fs";
|
|
5
|
+
import fs, { mkdir, appendFile, readFile, writeFile, readdir, open, stat, unlink, rename } from "node:fs/promises";
|
|
6
6
|
import { createInterface } from "node:readline";
|
|
7
7
|
import { Buffer } from "node:buffer";
|
|
8
8
|
import path, { join, isAbsolute, dirname } from "node:path";
|
|
@@ -93,7 +93,7 @@ function RootDocument({ children }) {
|
|
|
93
93
|
] })
|
|
94
94
|
] });
|
|
95
95
|
}
|
|
96
|
-
const $$splitComponentImporter$1 = () => import("./index-
|
|
96
|
+
const $$splitComponentImporter$1 = () => import("./index-Cd1zD-lo.mjs");
|
|
97
97
|
const Route$r = createFileRoute("/")({
|
|
98
98
|
component: lazyRouteComponent($$splitComponentImporter$1, "component")
|
|
99
99
|
});
|
|
@@ -136,7 +136,7 @@ function decodeSessionIdFromPath(encoded) {
|
|
|
136
136
|
function getSessionPath(sessionId) {
|
|
137
137
|
return `/session/${encodeSessionIdForPath(sessionId)}`;
|
|
138
138
|
}
|
|
139
|
-
const $$splitComponentImporter = () => import("../_sessionId-
|
|
139
|
+
const $$splitComponentImporter = () => import("../_sessionId-BqhNE2M8.mjs");
|
|
140
140
|
const Route$q = createFileRoute("/session/$sessionId")({
|
|
141
141
|
component: lazyRouteComponent($$splitComponentImporter, "component"),
|
|
142
142
|
parseParams: (params) => ({
|
|
@@ -1458,30 +1458,7 @@ async function getLogById(id) {
|
|
|
1458
1458
|
}
|
|
1459
1459
|
return null;
|
|
1460
1460
|
}
|
|
1461
|
-
const
|
|
1462
|
-
const lines = content.split("\n");
|
|
1463
|
-
let lastMatch = null;
|
|
1464
|
-
for (const line of lines) {
|
|
1465
|
-
if (line.trim() === "") continue;
|
|
1466
|
-
try {
|
|
1467
|
-
const parsed = JSON.parse(line);
|
|
1468
|
-
if (typeof parsed === "object" && parsed !== null) {
|
|
1469
|
-
const desc = Object.getOwnPropertyDescriptor(parsed, "id");
|
|
1470
|
-
if (desc !== void 0 && typeof desc.value === "number" && desc.value === id) {
|
|
1471
|
-
const result = CapturedLogSchema.safeParse(parsed);
|
|
1472
|
-
if (result.success) {
|
|
1473
|
-
lastMatch = normalizeLogSession(result.data);
|
|
1474
|
-
if (result.data.responseStatus !== null) {
|
|
1475
|
-
addToCache(lastMatch);
|
|
1476
|
-
observeSessionLog(lastMatch);
|
|
1477
|
-
return lastMatch;
|
|
1478
|
-
}
|
|
1479
|
-
}
|
|
1480
|
-
}
|
|
1481
|
-
}
|
|
1482
|
-
} catch {
|
|
1483
|
-
}
|
|
1484
|
-
}
|
|
1461
|
+
const lastMatch = await scanLogFileForId(filePath, id);
|
|
1485
1462
|
if (lastMatch !== null) {
|
|
1486
1463
|
addToCache(lastMatch);
|
|
1487
1464
|
observeSessionLog(lastMatch);
|
|
@@ -1492,6 +1469,33 @@ async function getLogById(id) {
|
|
|
1492
1469
|
}
|
|
1493
1470
|
return null;
|
|
1494
1471
|
}
|
|
1472
|
+
async function scanLogFileForId(filePath, id) {
|
|
1473
|
+
let lastMatch = null;
|
|
1474
|
+
const fileStream = createInterface({
|
|
1475
|
+
input: createReadStream(filePath),
|
|
1476
|
+
crlfDelay: Infinity
|
|
1477
|
+
});
|
|
1478
|
+
for await (const line of fileStream) {
|
|
1479
|
+
if (line.trim() === "") continue;
|
|
1480
|
+
try {
|
|
1481
|
+
const parsed = JSON.parse(line);
|
|
1482
|
+
if (typeof parsed === "object" && parsed !== null) {
|
|
1483
|
+
const desc = Object.getOwnPropertyDescriptor(parsed, "id");
|
|
1484
|
+
if (desc !== void 0 && typeof desc.value === "number" && desc.value === id) {
|
|
1485
|
+
const result = CapturedLogSchema.safeParse(parsed);
|
|
1486
|
+
if (result.success) {
|
|
1487
|
+
lastMatch = normalizeLogSession(result.data);
|
|
1488
|
+
if (result.data.responseStatus !== null) {
|
|
1489
|
+
return lastMatch;
|
|
1490
|
+
}
|
|
1491
|
+
}
|
|
1492
|
+
}
|
|
1493
|
+
}
|
|
1494
|
+
} catch {
|
|
1495
|
+
}
|
|
1496
|
+
}
|
|
1497
|
+
return lastMatch;
|
|
1498
|
+
}
|
|
1495
1499
|
function getFilteredLogs(sessionId, model) {
|
|
1496
1500
|
return [...memoryCache.values()].filter((l) => {
|
|
1497
1501
|
return matchesLogFilters(l, sessionId, model);
|
|
@@ -1502,31 +1506,20 @@ function matchesLogFilters(log, sessionId, model) {
|
|
|
1502
1506
|
if (model !== void 0 && log.model !== model) return false;
|
|
1503
1507
|
return true;
|
|
1504
1508
|
}
|
|
1505
|
-
function
|
|
1506
|
-
return offset + limit <= filteredMemoryCount;
|
|
1507
|
-
}
|
|
1508
|
-
function paginateLogs(logs, offset, limit) {
|
|
1509
|
-
return logs.slice(offset, offset + limit);
|
|
1510
|
-
}
|
|
1511
|
-
async function readPersistedLogsById() {
|
|
1512
|
-
const byId = /* @__PURE__ */ new Map();
|
|
1509
|
+
async function visitPersistedLogs(visitor) {
|
|
1513
1510
|
const logDir = resolveLogDir();
|
|
1514
|
-
if (!existsSync(logDir)) return
|
|
1511
|
+
if (!existsSync(logDir)) return;
|
|
1515
1512
|
try {
|
|
1516
1513
|
const entries = await readdir(logDir);
|
|
1517
1514
|
const files = entries.filter((file) => file.endsWith(".jsonl")).sort();
|
|
1518
1515
|
for (const file of files) {
|
|
1519
|
-
await
|
|
1516
|
+
await visitPersistedLogFile(join(logDir, file), visitor);
|
|
1520
1517
|
}
|
|
1521
1518
|
} catch (err) {
|
|
1522
1519
|
logger.error("[store] Failed to list persisted logs:", String(err));
|
|
1523
1520
|
}
|
|
1524
|
-
for (const log of memoryCache.values()) {
|
|
1525
|
-
byId.set(log.id, log);
|
|
1526
|
-
}
|
|
1527
|
-
return byId;
|
|
1528
1521
|
}
|
|
1529
|
-
async function
|
|
1522
|
+
async function visitPersistedLogFile(filePath, visitor) {
|
|
1530
1523
|
if (!existsSync(filePath)) return;
|
|
1531
1524
|
try {
|
|
1532
1525
|
const fileStream = createInterface({
|
|
@@ -1540,8 +1533,7 @@ async function readPersistedLogFile(filePath, byId) {
|
|
|
1540
1533
|
const result = CapturedLogSchema.safeParse(parsed);
|
|
1541
1534
|
if (result.success) {
|
|
1542
1535
|
const log = normalizeLogSession(result.data);
|
|
1543
|
-
|
|
1544
|
-
observeSessionLog(log);
|
|
1536
|
+
visitor(log);
|
|
1545
1537
|
}
|
|
1546
1538
|
} catch {
|
|
1547
1539
|
}
|
|
@@ -1551,20 +1543,37 @@ async function readPersistedLogFile(filePath, byId) {
|
|
|
1551
1543
|
}
|
|
1552
1544
|
}
|
|
1553
1545
|
async function listLogsPage(options) {
|
|
1554
|
-
const
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1546
|
+
const seenIds = /* @__PURE__ */ new Set();
|
|
1547
|
+
const pageById = /* @__PURE__ */ new Map();
|
|
1548
|
+
const pageStart = options.offset;
|
|
1549
|
+
const pageEnd = options.offset + options.limit;
|
|
1550
|
+
let total = 0;
|
|
1551
|
+
const visitLog = (log) => {
|
|
1552
|
+
if (!matchesLogFilters(log, options.sessionId, options.model)) return;
|
|
1553
|
+
if (!seenIds.has(log.id)) {
|
|
1554
|
+
seenIds.add(log.id);
|
|
1555
|
+
const position = total;
|
|
1556
|
+
total += 1;
|
|
1557
|
+
if (position >= pageStart && position < pageEnd) {
|
|
1558
|
+
pageById.set(log.id, log);
|
|
1559
|
+
}
|
|
1560
|
+
return;
|
|
1561
|
+
}
|
|
1562
|
+
if (pageById.has(log.id)) {
|
|
1563
|
+
pageById.set(log.id, log);
|
|
1564
|
+
}
|
|
1565
|
+
};
|
|
1566
|
+
await visitPersistedLogs((log) => {
|
|
1567
|
+
observeSessionLog(log);
|
|
1568
|
+
visitLog(log);
|
|
1569
|
+
});
|
|
1570
|
+
for (const log of memoryCache.values()) {
|
|
1571
|
+
visitLog(log);
|
|
1562
1572
|
}
|
|
1563
|
-
const
|
|
1564
|
-
const persistedLogs = [...persistedById.values()].filter((log) => matchesLogFilters(log, options.sessionId, options.model)).sort((left, right) => left.id - right.id);
|
|
1573
|
+
const logs = [...pageById.values()].sort((left, right) => left.id - right.id);
|
|
1565
1574
|
return {
|
|
1566
|
-
logs
|
|
1567
|
-
total
|
|
1575
|
+
logs,
|
|
1576
|
+
total,
|
|
1568
1577
|
offset: options.offset,
|
|
1569
1578
|
limit: options.limit
|
|
1570
1579
|
};
|
|
@@ -1687,35 +1696,100 @@ function readLogIdFromLine(line) {
|
|
|
1687
1696
|
return null;
|
|
1688
1697
|
}
|
|
1689
1698
|
}
|
|
1699
|
+
function tempRewritePath(filePath) {
|
|
1700
|
+
return `${filePath}.rewrite-${String(process.pid)}-${String(Date.now())}.tmp`;
|
|
1701
|
+
}
|
|
1702
|
+
async function removeTempFile(filePath) {
|
|
1703
|
+
try {
|
|
1704
|
+
await unlink(filePath);
|
|
1705
|
+
} catch {
|
|
1706
|
+
}
|
|
1707
|
+
}
|
|
1708
|
+
function waitForWriterDrain(writer) {
|
|
1709
|
+
return new Promise((resolve) => {
|
|
1710
|
+
const cleanup = () => {
|
|
1711
|
+
writer.off("drain", onDrain);
|
|
1712
|
+
writer.off("error", onError);
|
|
1713
|
+
};
|
|
1714
|
+
const onDrain = () => {
|
|
1715
|
+
cleanup();
|
|
1716
|
+
resolve(true);
|
|
1717
|
+
};
|
|
1718
|
+
const onError = () => {
|
|
1719
|
+
cleanup();
|
|
1720
|
+
resolve(false);
|
|
1721
|
+
};
|
|
1722
|
+
writer.once("drain", onDrain);
|
|
1723
|
+
writer.once("error", onError);
|
|
1724
|
+
});
|
|
1725
|
+
}
|
|
1726
|
+
async function writeKeptLogLine(writer, line) {
|
|
1727
|
+
if (writer.write(`${line}
|
|
1728
|
+
`, "utf-8")) return true;
|
|
1729
|
+
return await waitForWriterDrain(writer);
|
|
1730
|
+
}
|
|
1731
|
+
function finishWriter(writer) {
|
|
1732
|
+
return new Promise((resolve) => {
|
|
1733
|
+
const cleanup = () => {
|
|
1734
|
+
writer.off("finish", onFinish);
|
|
1735
|
+
writer.off("error", onError);
|
|
1736
|
+
};
|
|
1737
|
+
const onFinish = () => {
|
|
1738
|
+
cleanup();
|
|
1739
|
+
resolve(true);
|
|
1740
|
+
};
|
|
1741
|
+
const onError = () => {
|
|
1742
|
+
cleanup();
|
|
1743
|
+
resolve(false);
|
|
1744
|
+
};
|
|
1745
|
+
writer.once("finish", onFinish);
|
|
1746
|
+
writer.once("error", onError);
|
|
1747
|
+
writer.end();
|
|
1748
|
+
});
|
|
1749
|
+
}
|
|
1690
1750
|
async function rewriteLogFileWithoutIds(filePath, ids) {
|
|
1691
|
-
|
|
1751
|
+
const tempPath = tempRewritePath(filePath);
|
|
1752
|
+
const writer = createWriteStream(tempPath, { encoding: "utf-8" });
|
|
1753
|
+
const removedIds = /* @__PURE__ */ new Set();
|
|
1754
|
+
let keptLineCount = 0;
|
|
1755
|
+
let writeOk = true;
|
|
1692
1756
|
try {
|
|
1693
|
-
|
|
1757
|
+
const fileStream = createInterface({
|
|
1758
|
+
input: createReadStream(filePath),
|
|
1759
|
+
crlfDelay: Infinity
|
|
1760
|
+
});
|
|
1761
|
+
for await (const line of fileStream) {
|
|
1762
|
+
if (line === "") continue;
|
|
1763
|
+
const id = readLogIdFromLine(line);
|
|
1764
|
+
if (id !== null && ids.has(id)) {
|
|
1765
|
+
removedIds.add(id);
|
|
1766
|
+
} else {
|
|
1767
|
+
keptLineCount += 1;
|
|
1768
|
+
writeOk = await writeKeptLogLine(writer, line);
|
|
1769
|
+
if (!writeOk) break;
|
|
1770
|
+
}
|
|
1771
|
+
}
|
|
1694
1772
|
} catch (err) {
|
|
1695
|
-
logger.warn("[store] Failed to
|
|
1773
|
+
logger.warn("[store] Failed to stream log file for deletion:", filePath, String(err));
|
|
1774
|
+
writeOk = false;
|
|
1775
|
+
}
|
|
1776
|
+
if (!await finishWriter(writer) || !writeOk) {
|
|
1777
|
+
await removeTempFile(tempPath);
|
|
1696
1778
|
return { rewritten: false, removedIds: /* @__PURE__ */ new Set() };
|
|
1697
1779
|
}
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
for (const line of lines) {
|
|
1702
|
-
if (line === "") continue;
|
|
1703
|
-
const id = readLogIdFromLine(line);
|
|
1704
|
-
if (id !== null && ids.has(id)) {
|
|
1705
|
-
removedIds.add(id);
|
|
1706
|
-
} else {
|
|
1707
|
-
keptLines.push(line);
|
|
1708
|
-
}
|
|
1780
|
+
if (removedIds.size === 0) {
|
|
1781
|
+
await removeTempFile(tempPath);
|
|
1782
|
+
return { rewritten: false, removedIds };
|
|
1709
1783
|
}
|
|
1710
|
-
if (removedIds.size === 0) return { rewritten: false, removedIds };
|
|
1711
1784
|
try {
|
|
1712
|
-
if (
|
|
1785
|
+
if (keptLineCount === 0) {
|
|
1786
|
+
await removeTempFile(tempPath);
|
|
1713
1787
|
await unlink(filePath);
|
|
1714
1788
|
} else {
|
|
1715
|
-
await
|
|
1716
|
-
`, "utf-8");
|
|
1789
|
+
await rename(tempPath, filePath);
|
|
1717
1790
|
}
|
|
1718
1791
|
} catch (err) {
|
|
1792
|
+
await removeTempFile(tempPath);
|
|
1719
1793
|
logger.warn("[store] Failed to rewrite log file after deletion:", filePath, String(err));
|
|
1720
1794
|
return { rewritten: false, removedIds: /* @__PURE__ */ new Set() };
|
|
1721
1795
|
}
|
|
@@ -5820,7 +5894,7 @@ const Route$e = createFileRoute("/api/providers/$providerId")({
|
|
|
5820
5894
|
}
|
|
5821
5895
|
}
|
|
5822
5896
|
});
|
|
5823
|
-
const INITIAL_STREAM_LOG_LIMIT =
|
|
5897
|
+
const INITIAL_STREAM_LOG_LIMIT = 100;
|
|
5824
5898
|
const Route$d = createFileRoute("/api/logs/stream")({
|
|
5825
5899
|
server: {
|
|
5826
5900
|
handlers: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const tsrStartManifest = () => ({ "routes": { "__root__": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/__root.tsx", "children": ["/", "/api/config", "/api/health", "/api/logs", "/api/mcp", "/api/models", "/api/providers", "/api/sessions", "/proxy/$", "/session/$sessionId", "/api/knowledge/candidates", "/api/knowledge/project-context", "/api/knowledge/search", "/api/knowledge/sessions/$sessionId/candidates"], "preloads": ["/assets/main-
|
|
1
|
+
const tsrStartManifest = () => ({ "routes": { "__root__": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/__root.tsx", "children": ["/", "/api/config", "/api/health", "/api/logs", "/api/mcp", "/api/models", "/api/providers", "/api/sessions", "/proxy/$", "/session/$sessionId", "/api/knowledge/candidates", "/api/knowledge/project-context", "/api/knowledge/search", "/api/knowledge/sessions/$sessionId/candidates"], "preloads": ["/assets/main-hF_572U6.js"], "assets": [] }, "/": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/index.tsx", "assets": [], "preloads": ["/assets/index-BpJNbm9G.js", "/assets/ProxyViewerContainer-BTYGkg36.js"] }, "/api/config": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/config.ts", "children": ["/api/config/paths"] }, "/api/health": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/health.ts" }, "/api/logs": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.ts", "children": ["/api/logs/$id", "/api/logs/stream"] }, "/api/mcp": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/mcp.ts" }, "/api/models": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/models.ts" }, "/api/providers": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.ts", "children": ["/api/providers/$providerId", "/api/providers/export", "/api/providers/import", "/api/providers/scan"] }, "/api/sessions": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/sessions.ts" }, "/proxy/$": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/proxy/$.ts" }, "/session/$sessionId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/session/$sessionId.tsx", "assets": [], "preloads": ["/assets/_sessionId-DpdfAzbo.js", "/assets/ProxyViewerContainer-BTYGkg36.js"] }, "/api/config/paths": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/config.paths.ts" }, "/api/knowledge/candidates": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.candidates.ts", "children": ["/api/knowledge/candidates/$candidateId"] }, "/api/knowledge/project-context": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.project-context.ts" }, "/api/knowledge/search": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.search.ts" }, "/api/logs/$id": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.$id.ts", "children": ["/api/logs/$id/chunks", "/api/logs/$id/replay"] }, "/api/logs/stream": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.stream.ts" }, "/api/providers/$providerId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.ts", "children": ["/api/providers/$providerId/model-metadata", "/api/providers/$providerId/test"] }, "/api/providers/export": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.export.ts" }, "/api/providers/import": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.import.ts" }, "/api/providers/scan": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.scan.ts" }, "/api/knowledge/candidates/$candidateId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.candidates.$candidateId.ts", "children": ["/api/knowledge/candidates/$candidateId/promote"] }, "/api/logs/$id/chunks": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.$id.chunks.ts" }, "/api/logs/$id/replay": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.$id.replay.ts" }, "/api/providers/$providerId/model-metadata": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.model-metadata.ts" }, "/api/providers/$providerId/test": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.test.ts", "children": ["/api/providers/$providerId/test/log"] }, "/api/knowledge/candidates/$candidateId/promote": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.candidates.$candidateId.promote.ts" }, "/api/knowledge/sessions/$sessionId/candidates": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.sessions.$sessionId.candidates.ts" }, "/api/providers/$providerId/test/log": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.test.log.ts" } }, "clientEntry": "/assets/main-hF_572U6.js" });
|
|
2
2
|
export {
|
|
3
3
|
tsrStartManifest
|
|
4
4
|
};
|
package/.output/server/index.mjs
CHANGED
|
@@ -38,100 +38,100 @@ const assets = {
|
|
|
38
38
|
"/assets/alibaba-TTwafVwX.svg": {
|
|
39
39
|
"type": "image/svg+xml",
|
|
40
40
|
"etag": '"171b-6dyV5K8QjiaY35sN9qNprh9zDIs"',
|
|
41
|
-
"mtime": "2026-06-29T10:
|
|
41
|
+
"mtime": "2026-06-29T10:57:03.958Z",
|
|
42
42
|
"size": 5915,
|
|
43
43
|
"path": "../public/assets/alibaba-TTwafVwX.svg"
|
|
44
44
|
},
|
|
45
|
-
"/assets/
|
|
45
|
+
"/assets/CompareDrawer-DnYQtd8R.js": {
|
|
46
46
|
"type": "text/javascript; charset=utf-8",
|
|
47
|
-
"etag": '"
|
|
48
|
-
"mtime": "2026-06-29T10:
|
|
49
|
-
"size":
|
|
50
|
-
"path": "../public/assets/
|
|
47
|
+
"etag": '"49fe-b7mmBTYljsLKWenrZlAtgJH1LOY"',
|
|
48
|
+
"mtime": "2026-06-29T10:57:03.958Z",
|
|
49
|
+
"size": 18942,
|
|
50
|
+
"path": "../public/assets/CompareDrawer-DnYQtd8R.js"
|
|
51
51
|
},
|
|
52
|
-
"/assets/
|
|
52
|
+
"/assets/index-BpJNbm9G.js": {
|
|
53
53
|
"type": "text/javascript; charset=utf-8",
|
|
54
|
-
"etag": '"
|
|
55
|
-
"mtime": "2026-06-29T10:
|
|
56
|
-
"size":
|
|
57
|
-
"path": "../public/assets/
|
|
54
|
+
"etag": '"74-5ny3SIFXNJjz8mYDJPqwGLMogII"',
|
|
55
|
+
"mtime": "2026-06-29T10:57:03.958Z",
|
|
56
|
+
"size": 116,
|
|
57
|
+
"path": "../public/assets/index-BpJNbm9G.js"
|
|
58
|
+
},
|
|
59
|
+
"/assets/index-780zTVwp.css": {
|
|
60
|
+
"type": "text/css; charset=utf-8",
|
|
61
|
+
"etag": '"1a380-Lz+Shs13XyKSlh9PTaGE50w/BpU"',
|
|
62
|
+
"mtime": "2026-06-29T10:57:03.958Z",
|
|
63
|
+
"size": 107392,
|
|
64
|
+
"path": "../public/assets/index-780zTVwp.css"
|
|
58
65
|
},
|
|
59
66
|
"/assets/minimax-BPMzvuL-.jpeg": {
|
|
60
67
|
"type": "image/jpeg",
|
|
61
68
|
"etag": '"1b06-IwivU89ko5UTMUM1/t7hn4sQK9A"',
|
|
62
|
-
"mtime": "2026-06-29T10:
|
|
69
|
+
"mtime": "2026-06-29T10:57:03.958Z",
|
|
63
70
|
"size": 6918,
|
|
64
71
|
"path": "../public/assets/minimax-BPMzvuL-.jpeg"
|
|
65
72
|
},
|
|
66
|
-
"/assets/ReplayDialog-
|
|
73
|
+
"/assets/ReplayDialog-B-3V95xT.js": {
|
|
67
74
|
"type": "text/javascript; charset=utf-8",
|
|
68
|
-
"etag": '"318c-
|
|
69
|
-
"mtime": "2026-06-29T10:
|
|
75
|
+
"etag": '"318c-1NLootFaQs7KDJvmrRBmp0zrGoY"',
|
|
76
|
+
"mtime": "2026-06-29T10:57:03.958Z",
|
|
70
77
|
"size": 12684,
|
|
71
|
-
"path": "../public/assets/ReplayDialog-
|
|
78
|
+
"path": "../public/assets/ReplayDialog-B-3V95xT.js"
|
|
72
79
|
},
|
|
73
|
-
"/assets/main-
|
|
80
|
+
"/assets/main-hF_572U6.js": {
|
|
74
81
|
"type": "text/javascript; charset=utf-8",
|
|
75
|
-
"etag": '"51726-
|
|
76
|
-
"mtime": "2026-06-29T10:
|
|
82
|
+
"etag": '"51726-eooZ68MhIVAdbT2A97BnHJuW5lM"',
|
|
83
|
+
"mtime": "2026-06-29T10:57:03.958Z",
|
|
77
84
|
"size": 333606,
|
|
78
|
-
"path": "../public/assets/main-
|
|
85
|
+
"path": "../public/assets/main-hF_572U6.js"
|
|
79
86
|
},
|
|
80
|
-
"/assets/
|
|
87
|
+
"/assets/ResponseView-DK3CYom0.js": {
|
|
81
88
|
"type": "text/javascript; charset=utf-8",
|
|
82
|
-
"etag": '"
|
|
83
|
-
"mtime": "2026-06-29T10:
|
|
84
|
-
"size":
|
|
85
|
-
"path": "../public/assets/
|
|
89
|
+
"etag": '"30d0-Cy0g09LS9VDwp/DlETvauFmcBFs"',
|
|
90
|
+
"mtime": "2026-06-29T10:57:03.958Z",
|
|
91
|
+
"size": 12496,
|
|
92
|
+
"path": "../public/assets/ResponseView-DK3CYom0.js"
|
|
86
93
|
},
|
|
87
|
-
"/assets/
|
|
94
|
+
"/assets/RequestAnatomy-CT8hLGLa.js": {
|
|
88
95
|
"type": "text/javascript; charset=utf-8",
|
|
89
|
-
"etag": '"
|
|
90
|
-
"mtime": "2026-06-29T10:
|
|
91
|
-
"size":
|
|
92
|
-
"path": "../public/assets/
|
|
96
|
+
"etag": '"4485-oTcemFMGh2ben0T+njg79IE1+H8"',
|
|
97
|
+
"mtime": "2026-06-29T10:57:03.958Z",
|
|
98
|
+
"size": 17541,
|
|
99
|
+
"path": "../public/assets/RequestAnatomy-CT8hLGLa.js"
|
|
93
100
|
},
|
|
94
|
-
"/assets/StreamingChunkSequence-
|
|
101
|
+
"/assets/StreamingChunkSequence-D3jJutjp.js": {
|
|
95
102
|
"type": "text/javascript; charset=utf-8",
|
|
96
|
-
"etag": '"d57-
|
|
97
|
-
"mtime": "2026-06-29T10:
|
|
103
|
+
"etag": '"d57-SqKRwuSq9h9H7zwcDkj5Lqd+u/Y"',
|
|
104
|
+
"mtime": "2026-06-29T10:57:03.958Z",
|
|
98
105
|
"size": 3415,
|
|
99
|
-
"path": "../public/assets/StreamingChunkSequence-
|
|
100
|
-
},
|
|
101
|
-
"/assets/index-780zTVwp.css": {
|
|
102
|
-
"type": "text/css; charset=utf-8",
|
|
103
|
-
"etag": '"1a380-Lz+Shs13XyKSlh9PTaGE50w/BpU"',
|
|
104
|
-
"mtime": "2026-06-29T10:13:59.057Z",
|
|
105
|
-
"size": 107392,
|
|
106
|
-
"path": "../public/assets/index-780zTVwp.css"
|
|
106
|
+
"path": "../public/assets/StreamingChunkSequence-D3jJutjp.js"
|
|
107
107
|
},
|
|
108
|
-
"/assets/_sessionId-
|
|
108
|
+
"/assets/_sessionId-DpdfAzbo.js": {
|
|
109
109
|
"type": "text/javascript; charset=utf-8",
|
|
110
|
-
"etag": '"d2-
|
|
111
|
-
"mtime": "2026-06-29T10:
|
|
110
|
+
"etag": '"d2-tBmz0AuKXPVen+wNzq7oGvD4J44"',
|
|
111
|
+
"mtime": "2026-06-29T10:57:03.958Z",
|
|
112
112
|
"size": 210,
|
|
113
|
-
"path": "../public/assets/_sessionId-
|
|
114
|
-
},
|
|
115
|
-
"/assets/zhipuai-BPNAnxo-.svg": {
|
|
116
|
-
"type": "image/svg+xml",
|
|
117
|
-
"etag": '"2bf8-hNaLCTi89nOFCsIIfWpP/jrfo0s"',
|
|
118
|
-
"mtime": "2026-06-29T10:13:59.057Z",
|
|
119
|
-
"size": 11256,
|
|
120
|
-
"path": "../public/assets/zhipuai-BPNAnxo-.svg"
|
|
113
|
+
"path": "../public/assets/_sessionId-DpdfAzbo.js"
|
|
121
114
|
},
|
|
122
115
|
"/assets/qwen-CONDcHqt.png": {
|
|
123
116
|
"type": "image/png",
|
|
124
117
|
"etag": '"572c3-cdJAPaHdOvFCGzuaQjagdgOu6XE"',
|
|
125
|
-
"mtime": "2026-06-29T10:
|
|
118
|
+
"mtime": "2026-06-29T10:57:03.958Z",
|
|
126
119
|
"size": 357059,
|
|
127
120
|
"path": "../public/assets/qwen-CONDcHqt.png"
|
|
128
121
|
},
|
|
129
|
-
"/assets/
|
|
122
|
+
"/assets/zhipuai-BPNAnxo-.svg": {
|
|
123
|
+
"type": "image/svg+xml",
|
|
124
|
+
"etag": '"2bf8-hNaLCTi89nOFCsIIfWpP/jrfo0s"',
|
|
125
|
+
"mtime": "2026-06-29T10:57:03.958Z",
|
|
126
|
+
"size": 11256,
|
|
127
|
+
"path": "../public/assets/zhipuai-BPNAnxo-.svg"
|
|
128
|
+
},
|
|
129
|
+
"/assets/ProxyViewerContainer-BTYGkg36.js": {
|
|
130
130
|
"type": "text/javascript; charset=utf-8",
|
|
131
|
-
"etag": '"adfba-
|
|
132
|
-
"mtime": "2026-06-29T10:
|
|
131
|
+
"etag": '"adfba-Leh4MRDOCIBADBcckDDDPe8s/NM"',
|
|
132
|
+
"mtime": "2026-06-29T10:57:03.958Z",
|
|
133
133
|
"size": 712634,
|
|
134
|
-
"path": "../public/assets/ProxyViewerContainer-
|
|
134
|
+
"path": "../public/assets/ProxyViewerContainer-BTYGkg36.js"
|
|
135
135
|
}
|
|
136
136
|
};
|
|
137
137
|
function readAsset(id) {
|