diff --git a/src/shared/compaction-agent-config-checkpoint.ts b/src/shared/compaction-agent-config-checkpoint.ts new file mode 100644 index 000000000..47a3cabb3 --- /dev/null +++ b/src/shared/compaction-agent-config-checkpoint.ts @@ -0,0 +1,42 @@ +export type CompactionAgentConfigCheckpoint = { + agent?: string + model?: { providerID: string; modelID: string } + tools?: Record +} + +const checkpoints = new Map() + +function cloneCheckpoint( + checkpoint: CompactionAgentConfigCheckpoint, +): CompactionAgentConfigCheckpoint { + return { + ...(checkpoint.agent ? { agent: checkpoint.agent } : {}), + ...(checkpoint.model + ? { + model: { + providerID: checkpoint.model.providerID, + modelID: checkpoint.model.modelID, + }, + } + : {}), + ...(checkpoint.tools ? { tools: { ...checkpoint.tools } } : {}), + } +} + +export function setCompactionAgentConfigCheckpoint( + sessionID: string, + checkpoint: CompactionAgentConfigCheckpoint, +): void { + checkpoints.set(sessionID, cloneCheckpoint(checkpoint)) +} + +export function getCompactionAgentConfigCheckpoint( + sessionID: string, +): CompactionAgentConfigCheckpoint | undefined { + const checkpoint = checkpoints.get(sessionID) + return checkpoint ? cloneCheckpoint(checkpoint) : undefined +} + +export function clearCompactionAgentConfigCheckpoint(sessionID: string): void { + checkpoints.delete(sessionID) +}