From 0c6fe3873c5cd40f0c9cc42cd120ac5b11313e50 Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Sun, 15 Feb 2026 14:50:15 +0900 Subject: [PATCH] feat: add SDK path for getMessageIds in context-window recovery --- .../message-storage-directory.ts | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) 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 80bc6f11..a72b3d8b 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 []