diff --git a/src/hooks/anthropic-context-window-limit-recovery/message-storage-directory.ts b/src/hooks/anthropic-context-window-limit-recovery/message-storage-directory.ts index 80bc6f116..a72b3d8bc 100644 --- a/src/hooks/anthropic-context-window-limit-recovery/message-storage-directory.ts +++ b/src/hooks/anthropic-context-window-limit-recovery/message-storage-directory.ts @@ -1,8 +1,29 @@ import { existsSync, readdirSync } from "node:fs" +import type { PluginInput } from "@opencode-ai/plugin" import { getMessageDir } from "../../shared/opencode-message-dir" export { getMessageDir } +type OpencodeClient = PluginInput["client"] + +interface SDKMessage { + info: { id: string } + parts: unknown[] +} + +export async function getMessageIdsFromSDK( + client: OpencodeClient, + sessionID: string +): Promise { + try { + const response = await client.session.messages({ path: { id: sessionID } }) + const messages = (response.data ?? []) as SDKMessage[] + return messages.map(msg => msg.info.id) + } catch { + return [] + } +} + export function getMessageIds(sessionID: string): string[] { const messageDir = getMessageDir(sessionID) if (!messageDir || !existsSync(messageDir)) return []