← Public packages
@kody/agent-mail
AgentMail inboxes for agents: create/list inboxes, messages, threads, and Svix webhook ingress.
src/list-messages.ts
43 lines · 1.5 KB · TypeScriptimport { agentMailRequest, clean, encodePathSegment } from './core.ts'
export type ListMessagesInput = {
inboxId: string
limit?: number
pageToken?: string
ascending?: boolean
}
/**
* List messages in an AgentMail inbox.
* Read-only; uses GET /v0/inboxes/{inbox_id}/messages.
*
* @param input.inboxId - AgentMail inbox id (required)
* @param input.limit - Max items to return
* @param input.pageToken - Pagination cursor
* @param input.ascending - Sort ascending when true
* @returns Message list payload from AgentMail
*
* @example
* import listMessages from 'kody:@kody/agent-mail/list-messages'
* const { messages } = await listMessages({ inboxId: 'inbox_123', limit: 20 })
*/
export default async function listMessages(input: ListMessagesInput) {
const inboxId = encodePathSegment(input.inboxId, 'inboxId')
const query: Record<string, unknown> = {}
if (input.limit !== undefined && input.limit !== null) query.limit = Number(input.limit)
if (clean(input.pageToken)) query.page_token = clean(input.pageToken)
if (input.ascending !== undefined) query.ascending = Boolean(input.ascending)
const result = (await agentMailRequest({
path: `/v0/inboxes/${inboxId}/messages`,
query,
label: 'AgentMail list messages',
})) as { messages?: unknown[]; count?: number; next_page_token?: string }
return {
inboxId: clean(input.inboxId),
count: result.count ?? (Array.isArray(result.messages) ? result.messages.length : 0),
messages: Array.isArray(result.messages) ? result.messages : [],
nextPageToken: result.next_page_token ?? null,
}
}