From 90be61b45b88daf41a8be2c253b062443ceaacab Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Sun, 8 Mar 2026 02:23:11 +0900 Subject: [PATCH] fix(compaction): add checkpoint store for session agent config Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus --- .../compaction-agent-config-checkpoint.ts | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/shared/compaction-agent-config-checkpoint.ts 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) +}