@tonyclaw/agent-inspector 3.1.19 → 3.1.20
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/backend/nitro.json +1 -1
- package/.output/cli.js +7 -4
- package/.output/server/_ssr/index.mjs +1 -1
- package/.output/server/_ssr/{router-0qlvqhVh.mjs → router-DpXchCXm.mjs} +123 -4
- package/.output/server/index.mjs +1 -1
- package/.output/ui/assets/{CompareDrawer-BOk9hd-Z.js → CompareDrawer-4i1QHaQf.js} +1 -1
- package/.output/ui/assets/{InspectorPet-DhHDBpk7.js → InspectorPet-Cw6VJLr7.js} +1 -1
- package/.output/ui/assets/{ProxyViewerContainer-BRYf987G.js → ProxyViewerContainer-BST0B7lY.js} +22 -21
- package/.output/ui/assets/{ReplayDialog-DJhKtuNB.js → ReplayDialog-DTs575iW.js} +1 -1
- package/.output/ui/assets/{RequestAnatomy-hP0tsqDC.js → RequestAnatomy-Cl6Es3gv.js} +1 -1
- package/.output/ui/assets/{ResponseView-BSiUkwCb.js → ResponseView-DNCCLkzG.js} +1 -1
- package/.output/ui/assets/{StreamingChunkSequence-CzQqwv4X.js → StreamingChunkSequence-DKaxRL9U.js} +1 -1
- package/.output/ui/assets/{_sessionId-BU-i6h0V.js → _sessionId-C-YjWz50.js} +1 -1
- package/.output/ui/assets/{_sessionId-C2Pq4Jb0.js → _sessionId-rkR3WgRq.js} +1 -1
- package/.output/ui/assets/{index-B7NeIBDf.js → index-B48RD1-5.js} +2 -2
- package/.output/ui/assets/{index-UUnRwbOJ.js → index-D0d-V67x.js} +1 -1
- package/.output/ui/assets/{index-zHpVF0jk.js → index-DYbzZTDM.js} +1 -1
- package/.output/ui/assets/{index-D8C-t-2U.js → index-DxiecWHw.js} +1 -1
- package/.output/ui/assets/{json-viewer-DOzS5rUT.js → json-viewer-CjAwZhHA.js} +1 -1
- package/.output/ui/assets/{jszip.min-CCCY7qNk.js → jszip.min-DEGEN1HP.js} +1 -1
- package/.output/ui/index.html +1 -1
- package/.output/workers/logFinalizer.worker.js +3 -0
- package/.output/workers/sessionWorkerEntry.js +3 -0
- package/package.json +4 -4
- package/src/contracts/index.ts +2 -0
- package/src/contracts/log.ts +5 -0
- package/src/lib/stopReason.ts +66 -39
- package/src/proxy/logIndex.ts +19 -0
- package/src/proxy/schemas.ts +2 -0
- package/src/proxy/sqliteLogIndex.ts +27 -2
- package/src/proxy/store.ts +7 -1
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { existsSync } from "node:fs";
|
|
2
2
|
import { dirname, join } from "node:path";
|
|
3
3
|
import { logger, resolveLogDir } from "./logger";
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
ToolTraceEventSchema,
|
|
6
|
+
type ApiFormat,
|
|
7
|
+
type CaptureIncompleteReason,
|
|
8
|
+
type StopReason,
|
|
9
|
+
} from "./schemas";
|
|
5
10
|
import type { LogIndexEntry, LogIndexSummary } from "./logIndex";
|
|
6
11
|
import { ensurePrivateDirectorySync, securePrivateFileSync } from "./privateDataPath";
|
|
7
12
|
|
|
@@ -52,6 +57,7 @@ CREATE TABLE IF NOT EXISTS log_index (
|
|
|
52
57
|
dropped_bytes INTEGER NOT NULL DEFAULT 0,
|
|
53
58
|
capture_incomplete_reason TEXT,
|
|
54
59
|
warnings_json TEXT,
|
|
60
|
+
stop_reason TEXT,
|
|
55
61
|
tool_trace_events_json TEXT,
|
|
56
62
|
error TEXT
|
|
57
63
|
);
|
|
@@ -99,10 +105,11 @@ INSERT INTO log_index (
|
|
|
99
105
|
dropped_bytes,
|
|
100
106
|
capture_incomplete_reason,
|
|
101
107
|
warnings_json,
|
|
108
|
+
stop_reason,
|
|
102
109
|
tool_trace_events_json,
|
|
103
110
|
error
|
|
104
111
|
) VALUES (
|
|
105
|
-
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
|
|
112
|
+
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
|
|
106
113
|
)
|
|
107
114
|
ON CONFLICT(id) DO UPDATE SET
|
|
108
115
|
file = excluded.file,
|
|
@@ -141,6 +148,7 @@ ON CONFLICT(id) DO UPDATE SET
|
|
|
141
148
|
dropped_bytes = excluded.dropped_bytes,
|
|
142
149
|
capture_incomplete_reason = excluded.capture_incomplete_reason,
|
|
143
150
|
warnings_json = excluded.warnings_json,
|
|
151
|
+
stop_reason = excluded.stop_reason,
|
|
144
152
|
tool_trace_events_json = excluded.tool_trace_events_json,
|
|
145
153
|
error = excluded.error
|
|
146
154
|
`;
|
|
@@ -235,6 +243,7 @@ const REQUIRED_SCHEMA_COLUMNS = [
|
|
|
235
243
|
{ name: "dropped_chunks", definition: "INTEGER NOT NULL DEFAULT 0" },
|
|
236
244
|
{ name: "dropped_bytes", definition: "INTEGER NOT NULL DEFAULT 0" },
|
|
237
245
|
{ name: "capture_incomplete_reason", definition: "TEXT" },
|
|
246
|
+
{ name: "stop_reason", definition: "TEXT" },
|
|
238
247
|
{ name: "tool_trace_events_json", definition: "TEXT" },
|
|
239
248
|
];
|
|
240
249
|
|
|
@@ -446,6 +455,7 @@ function entryParams(entry: LogIndexEntry): readonly unknown[] {
|
|
|
446
455
|
summary?.droppedBytes ?? 0,
|
|
447
456
|
summary?.captureIncompleteReason ?? null,
|
|
448
457
|
warningJson(summary?.warnings),
|
|
458
|
+
summary?.stopReason ?? null,
|
|
449
459
|
toolTraceEventsJson(summary),
|
|
450
460
|
summary?.error ?? null,
|
|
451
461
|
];
|
|
@@ -496,6 +506,20 @@ function readCaptureIncompleteReason(row: unknown): CaptureIncompleteReason | nu
|
|
|
496
506
|
}
|
|
497
507
|
}
|
|
498
508
|
|
|
509
|
+
function readStopReason(row: unknown): StopReason | null {
|
|
510
|
+
const value = readString(row, "stop_reason");
|
|
511
|
+
switch (value) {
|
|
512
|
+
case "end_turn":
|
|
513
|
+
case "tool_use":
|
|
514
|
+
case "stop":
|
|
515
|
+
case "length":
|
|
516
|
+
return value;
|
|
517
|
+
case null:
|
|
518
|
+
default:
|
|
519
|
+
return null;
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
|
|
499
523
|
function readWarnings(row: unknown): string[] | undefined {
|
|
500
524
|
const value = readString(row, "warnings_json");
|
|
501
525
|
if (value === null) return undefined;
|
|
@@ -566,6 +590,7 @@ function summaryFromRow(row: unknown, id: number): LogIndexSummary {
|
|
|
566
590
|
droppedBytes: readNumber(row, "dropped_bytes") ?? 0,
|
|
567
591
|
captureIncompleteReason: readCaptureIncompleteReason(row),
|
|
568
592
|
warnings: readWarnings(row),
|
|
593
|
+
stopReason: readStopReason(row),
|
|
569
594
|
toolTraceEvents: readToolTraceEvents(row),
|
|
570
595
|
error: readString(row, "error"),
|
|
571
596
|
};
|
package/src/proxy/store.ts
CHANGED
|
@@ -37,6 +37,7 @@ import { writeChunks } from "./chunkStorage";
|
|
|
37
37
|
import { closeSqliteLogIndex } from "./sqliteLogIndex";
|
|
38
38
|
import type { SessionInfo, SessionLogSummary } from "../lib/sessionInfoContract";
|
|
39
39
|
import { extractToolTraceEvents } from "../lib/toolTrace";
|
|
40
|
+
import { extractStopReason } from "../lib/stopReason";
|
|
40
41
|
import { textByteLength } from "../lib/unknown";
|
|
41
42
|
import { buildSessionInfo, buildSessionLogSummary } from "./sessionInfo";
|
|
42
43
|
import type { CapturedLog } from "./schemas";
|
|
@@ -277,13 +278,15 @@ function normalizeLog(log: CapturedLog): CapturedLog {
|
|
|
277
278
|
const droppedChunks = log.droppedChunks ?? 0;
|
|
278
279
|
const droppedBytes = log.droppedBytes ?? 0;
|
|
279
280
|
const captureIncompleteReason = log.captureIncompleteReason ?? null;
|
|
281
|
+
const stopReason = log.stopReason ?? extractStopReason(log);
|
|
280
282
|
if (
|
|
281
283
|
sessionId === log.sessionId &&
|
|
282
284
|
apiFormat === log.apiFormat &&
|
|
283
285
|
log.captureIncomplete !== undefined &&
|
|
284
286
|
log.droppedChunks !== undefined &&
|
|
285
287
|
log.droppedBytes !== undefined &&
|
|
286
|
-
log.captureIncompleteReason !== undefined
|
|
288
|
+
log.captureIncompleteReason !== undefined &&
|
|
289
|
+
log.stopReason !== undefined
|
|
287
290
|
) {
|
|
288
291
|
return log;
|
|
289
292
|
}
|
|
@@ -295,6 +298,7 @@ function normalizeLog(log: CapturedLog): CapturedLog {
|
|
|
295
298
|
droppedChunks,
|
|
296
299
|
droppedBytes,
|
|
297
300
|
captureIncompleteReason,
|
|
301
|
+
stopReason,
|
|
298
302
|
};
|
|
299
303
|
}
|
|
300
304
|
|
|
@@ -339,6 +343,7 @@ export function compactLogForList(log: CapturedLog): CapturedLog {
|
|
|
339
343
|
rawHeaders: undefined,
|
|
340
344
|
headers: undefined,
|
|
341
345
|
streamingChunks: undefined,
|
|
346
|
+
stopReason: log.stopReason ?? extractStopReason(log),
|
|
342
347
|
toolTraceEvents: log.toolTraceEvents ?? extractToolTraceEvents(log),
|
|
343
348
|
rawRequestBodyBytes: log.rawRequestBodyBytes ?? textByteLength(log.rawRequestBody),
|
|
344
349
|
responseTextBytes: log.responseTextBytes ?? textByteLength(log.responseText),
|
|
@@ -385,6 +390,7 @@ function compactLogFromIndexSummary(summary: LogIndexSummary): CapturedLog {
|
|
|
385
390
|
droppedBytes: summary.droppedBytes,
|
|
386
391
|
captureIncompleteReason: summary.captureIncompleteReason,
|
|
387
392
|
warnings: summary.warnings,
|
|
393
|
+
stopReason: summary.stopReason,
|
|
388
394
|
toolTraceEvents: summary.toolTraceEvents,
|
|
389
395
|
error: summary.error,
|
|
390
396
|
});
|