Files
clawdbot/src/agents/pi-settings.ts
2026-01-12 05:29:18 +00:00

40 lines
1.2 KiB
TypeScript

import type { ClawdbotConfig } from "../config/config.js";
export const DEFAULT_PI_COMPACTION_RESERVE_TOKENS_FLOOR = 20_000;
type PiSettingsManagerLike = {
getCompactionReserveTokens: () => number;
applyOverrides: (overrides: {
compaction: { reserveTokens: number };
}) => void;
};
export function ensurePiCompactionReserveTokens(params: {
settingsManager: PiSettingsManagerLike;
minReserveTokens?: number;
}): { didOverride: boolean; reserveTokens: number } {
const minReserveTokens =
params.minReserveTokens ?? DEFAULT_PI_COMPACTION_RESERVE_TOKENS_FLOOR;
const current = params.settingsManager.getCompactionReserveTokens();
if (current >= minReserveTokens) {
return { didOverride: false, reserveTokens: current };
}
params.settingsManager.applyOverrides({
compaction: { reserveTokens: minReserveTokens },
});
return { didOverride: true, reserveTokens: minReserveTokens };
}
export function resolveCompactionReserveTokensFloor(
cfg?: ClawdbotConfig,
): number {
const raw = cfg?.agents?.defaults?.compaction?.reserveTokensFloor;
if (typeof raw === "number" && Number.isFinite(raw) && raw >= 0) {
return Math.floor(raw);
}
return DEFAULT_PI_COMPACTION_RESERVE_TOKENS_FLOOR;
}