import type { ExtensionAPI } from "@mariozechner/pi-coding-agent"; import { runCompaction } from "./compaction"; import { loadCompactionConfig } from "./config"; import { restoreSessionOverride } from "./state"; import { DEFAULT_CONFIG } from "./config"; import type { CompactionState } from "./types"; export default function compaction(pi: ExtensionAPI) { const state: CompactionState = { config: DEFAULT_CONFIG, configSource: "defaults", sessionOverride: null, lastRun: null, }; function loadState(ctx: any): void { const loaded = loadCompactionConfig(ctx.cwd); state.config = loaded.config; state.configSource = loaded.source; state.sessionOverride = restoreSessionOverride(ctx.sessionManager); state.lastRun = null; } pi.on("session_start", async (_event, ctx) => { loadState(ctx); }); pi.on("session_switch", async (_event, ctx) => { loadState(ctx); }); pi.on("session_before_compact", async (event, ctx) => { return await runCompaction(event, ctx, state); }); }