Sync main (backfill script 827647c + churn)

This commit is contained in:
amosblomqvist
2026-09-08 22:42:14 +03:00
2 changed files with 38 additions and 2 deletions
+2 -2
View File
@@ -1,7 +1,7 @@
/// <reference types="next" />
/// <reference types="next/image-types/global" />
import "./.next/types/routes.d.ts";
import "./.next/types/root-params.d.ts";
import "./.next/dev/types/routes.d.ts";
import "./.next/dev/types/root-params.d.ts";
// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
+36
View File
@@ -0,0 +1,36 @@
/**
* One-time backfill: wipe the legacy ledgers and re-extract every chat with
* the redesigned pipeline (vision §1, commit b07c907). Run from the master
* tree only — data never crosses trees:
*
* npx tsx --env-file=.env.local scripts/backfill-graph.ts
*/
import { chatStore } from "../src/store/chats.ts";
import { graphStore } from "../src/store/graph.ts";
import { createExtractionPipeline } from "../src/agent/subagents/extraction.ts";
import { getGraph } from "../src/core/graph.ts";
async function main() {
const only = process.argv[2]; // optional: extract just one chat id
const chats = only ? chatStore.listChats().filter((c) => c.id === only) : chatStore.listChats();
console.log(`[backfill] ${chats.length} chats to extract`);
const pipeline = createExtractionPipeline({ chatStore, graphStore });
for (const chat of chats) {
const t0 = Date.now();
try {
const stats = await pipeline.runExtraction(chat.id);
console.log(
`[backfill] ${chat.id} (${chat.title.slice(0, 40)}): ` +
`${stats.nodes} nodes, ${stats.edges} edges, ${stats.events} events in ${((Date.now() - t0) / 1000).toFixed(1)}s`,
);
} catch (err) {
console.error(`[backfill] ${chat.id} FAILED:`, err);
}
}
const graph = getGraph(graphStore);
console.log(
`[backfill] done: ${graph.nodes.length} nodes, ${graph.edges.length} edges, ${graph.events.length} events`,
);
}
main();