35 lines
1.2 KiB
TypeScript
35 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;
|
|
}
|