From 6a4a3322c1e3ab2044ca051a0cc71e96efde6ce4 Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Thu, 12 Mar 2026 11:31:58 +0900 Subject: [PATCH] fix(runtime-fallback): add session messages extractor Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus --- .../runtime-fallback/session-messages.ts | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/hooks/runtime-fallback/session-messages.ts diff --git a/src/hooks/runtime-fallback/session-messages.ts b/src/hooks/runtime-fallback/session-messages.ts new file mode 100644 index 000000000..9e5a194bf --- /dev/null +++ b/src/hooks/runtime-fallback/session-messages.ts @@ -0,0 +1,38 @@ +export type SessionMessagePart = { + type?: string + text?: string +} + +export type SessionMessage = { + info?: Record + parts?: SessionMessagePart[] +} + +function isRecord(value: unknown): value is Record { + return typeof value === "object" && value !== null +} + +function isSessionMessage(value: unknown): value is SessionMessage { + return isRecord(value) +} + +function isSessionMessageArray(value: unknown): value is SessionMessage[] { + return Array.isArray(value) && value.every(isSessionMessage) +} + +export function extractSessionMessages(messagesResponse: unknown): SessionMessage[] | undefined { + if (isSessionMessageArray(messagesResponse)) { + return messagesResponse + } + + if (!isRecord(messagesResponse)) { + return undefined + } + + const data = messagesResponse.data + if (isSessionMessageArray(data)) { + return data + } + + return undefined +}