Skip to content
← Public packages

@kody/agent-mail

AgentMail inboxes for agents: create/list inboxes, messages, threads, and Svix webhook ingress.

src/smoke-test.ts

47 lines · 1.2 KB · TypeScript
import { agentMailRequest } from './core.ts'
import listInboxes from './list-inboxes.ts'

/**
 * Read-only AgentMail auth smoke test: whoami plus list inboxes.
 * Use after saving agentmailApiKey (and host approval for api.agentmail.to).
 *
 * @returns `{ ok, whoami?, inboxCount, inboxesSample }`
 *
 * @example
 * import smokeTest from 'kody:@kody/agent-mail/smoke-test'
 * const result = await smokeTest()
 * // => { ok: true, inboxCount: 2, ... }
 */
export default async function smokeTest(_input: Record<string, never> = {}) {
	let whoami: unknown = null
	try {
		whoami = await agentMailRequest({
			path: '/v0/auth/me',
			label: 'AgentMail whoami',
		})
	} catch (error) {
		whoami = {
			error: error instanceof Error ? error.message.slice(0, 200) : 'whoami failed',
		}
	}

	const listed = await listInboxes({ limit: 5 })
	return {
		ok: true,
		whoami,
		inboxCount: listed.count,
		inboxesSample: listed.inboxes.slice(0, 5).map((inbox) => {
			const row = inbox as {
				inbox_id?: string
				email?: string
				display_name?: string
			}
			return {
				inboxId: row.inbox_id ?? null,
				email: row.email ?? null,
				displayName: row.display_name ?? null,
			}
		}),
		nextPageToken: listed.nextPageToken,
	}
}