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) {
  // The dev bridge forwards `tasklens-cli --agent-server` lines verbatim:
  // {"event":"agent","data":<pi event>} or {"event":"status"|"error",...}
  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)");