Skip to content
← Public packages

@kody/mailroom

Offline-first PWA for your Kody mailbox: sent and received threads, copy-prompt for agents, no send.

src/list.ts

27 lines · 898 B · TypeScript
import { listMail } from './mail.ts'
import { filterThreads, groupMessages } from './threads.ts'
import type { MailDirection, MailThread } from './types.ts'

/**
 * List the package owner's mailbox as threads, newest first.
 * Received uses inbound messages; Sent uses outbound. No send.
 *
 * @example
 * import list from 'kody:@kody/mailroom/list'
 *
 * const { threads } = await list({ direction: 'inbound', limit: 50 })
 */
export default async function list(input: {
	direction?: MailDirection
	query?: string
	limit?: number
} = {}): Promise<{ direction: MailDirection; threads: Array<MailThread> }> {
	const direction = input.direction === 'outbound' ? 'outbound' : 'inbound'
	const messages = await listMail({
		direction,
		query: input.query,
		limit: input.limit,
	})
	const threads = filterThreads(groupMessages(messages, direction), input.query || '')
	return { direction, threads }
}