import { discoverRepoAgents } from "/mnt/storage/src/mosaic-stack/packages/control-board/src/scan.mjs"; import { rootsFromSpecs, createReader } from "/mnt/storage/src/mosaic-stack/packages/conversation/src/reader.mjs"; import { readRegistration, LAYOUTS } from "/mnt/storage/src/mosaic-stack/packages/seat/src/seat.mjs"; import { readdirSync, writeFileSync } from "node:fs"; import { homedir } from "node:os"; const seats = homedir() + "/.mosaic-dev/seats"; const regs = []; import { loadRegistrations } from "/mnt/storage/src/mosaic-stack/packages/control-board/src/scan.mjs"; regs.push(...loadRegistrations(seats).registrations); const roots = rootsFromSpecs(discoverRepoAgents("/mnt/storage/src/mosaic-stack"), regs); console.log(roots.map(r => `${r.seat} ${r.harness} ${r.unsupportedReason} ${r.engineStartedAt}`).join("\n")); const reader = createReader({ roots }); let t = Date.now(); const cat = reader.catalogue(); console.log("catalogue", cat.conversations.length, "ms", Date.now() - t, "refusedRoots", JSON.stringify(cat.refusedRoots)); const byAvail = {}; for (const c of cat.conversations) byAvail[c.availability + ":" + c.refusal] = (byAvail[c.availability + ":" + c.refusal] ?? 0) + 1; console.log(byAvail); console.log(cat.conversations.slice(0, 3)); const pages = []; let stats = { convs: 0, pages: 0, entries: 0, refusals: {} , maxMs: 0}; for (const c of cat.conversations.filter(c => c.availability === "available")) { t = Date.now(); let r = reader.open({ conversation: c.conversation }); if (!r.ok) { stats.refusals[r.refusal.code] = (stats.refusals[r.refusal.code] ?? 0) + 1; continue; } stats.convs++; let n = 0; while (true) { stats.pages++; stats.entries += r.page.entries.length; n++; if (pages.length < 400) pages.push(r.page); if (r.cursor) pages.length < 400 && pages.push(r.cursor); if (!r.page.hasMore) break; r = reader.next({ cursor: r.page.nextCursor, conversation: c.conversation, branch: r.page.branch }); if (!r.ok) { console.log("next refused", r.refusal); break; } } stats.maxMs = Math.max(stats.maxMs, Date.now() - t); } console.log(stats); writeFileSync("/tmp/dewey-chat02/pages.json", JSON.stringify(pages));