fix(runtime-fallback): add session messages extractor
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
export type SessionMessagePart = {
|
||||
type?: string
|
||||
text?: string
|
||||
}
|
||||
|
||||
export type SessionMessage = {
|
||||
info?: Record<string, unknown>
|
||||
parts?: SessionMessagePart[]
|
||||
}
|
||||
|
||||
function isRecord(value: unknown): value is Record<string, unknown> {
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user