import type { ExtensionAPI } from "@earendil-works/pi-coding-agent"; import { getCompactionService } from "../pi-compaction/src/service.js"; function formatNumber(value: number): string { return new Intl.NumberFormat("en-US").format(Math.round(value)); } export default function contextView(pi: ExtensionAPI): void { pi.registerCommand("context", { description: "Show the effective pi-compaction context projection", handler: async (_args, ctx) => { const sessionId = ctx.sessionManager.getSessionId(); const metrics = getCompactionService()?.getMetrics(sessionId); const text = metrics ? [ `Effective: ${formatNumber(metrics.effectiveTokens)} / ${formatNumber(metrics.contextWindow)} (${metrics.percent.toFixed(1)}%, ${metrics.confidence})`, `Raw: ${formatNumber(metrics.rawTokens)} / ${formatNumber(metrics.contextWindow)}`, `Reclaimed: ${formatNumber(metrics.reclaimedTokens)}`, `Segments: ${formatNumber(metrics.segmentCount)}`, `Masked tool results: ${formatNumber(metrics.maskedResults)}`, `Generation: ${formatNumber(metrics.generation)}`, ].join("\n") : "No pi-compaction projection is available yet. Send one message to build the first snapshot."; if (ctx.hasUI) ctx.ui.notify(text, "info"); else process.stderr.write(`${text}\n`); }, }); }