mirror of
https://bitbucket.org/siakitem/my-pi.git
synced 2026-10-26 10:45:22 +00:00
feat: unify context compaction
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
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)}`,
|
||||
`Semantic jobs: ${formatNumber(metrics.semanticJobs)}`,
|
||||
`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`);
|
||||
},
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user