import { readFileSync } from "node:fs";
const path = process.argv[2];
const lines = readFileSync(path, "utf8")
.split("\n")
.filter((line) => line.startsWith("data: "))
.map((line) => {
try {
return JSON.parse(line.slice(6));
} catch {
return null;
}
})
.filter(Boolean);
const events = {};
const tools = [];
let text = "";
let status = "";
for (const raw of lines) {
const payload = raw.event === "agent" ? raw.data : raw;
const type = payload.type ?? "?";
if (raw.event === "status") status = `${raw.state ?? ""} ${raw.command ?? ""} ${raw.vault ?? ""}`.trim();
if (raw.event === "error") console.log("bridge error:", raw.message);
events[type] = (events[type] ?? 0) + 1;
if (type === "tool_execution_start") tools.push(payload.toolName);
if (type === "message_update" && payload.assistantMessageEvent?.type === "text_delta") {
text += payload.assistantMessageEvent.delta;
}
if (type === "message_end" && payload.message?.role === "assistant") {
const blocks = Array.isArray(payload.message.content) ? payload.message.content : [];
const joined = blocks.map((block) => block?.text ?? "").join("");
if (joined.trim()) text = joined;
}
}
console.log("lines:", lines.length);
console.log("status:", status || "(none)");
console.log("events:", JSON.stringify(events));
console.log("tools:", tools.join(", ") || "(none)");
console.log("answer:", text.trim().slice(0, 400) || "(no text)");