← Public packages
@kody/agent-mail
AgentMail inboxes for agents: create/list inboxes, messages, threads, and Svix webhook ingress.
src/create-inbox.ts
45 lines · 1.5 KB · TypeScriptimport { agentMailRequest, clean } from './core.ts'
export type CreateInboxInput = {
username?: string
domain?: string
displayName?: string
/** Idempotency key for inbox creation (AgentMail client_id). */
clientId?: string
metadata?: Record<string, string | number | boolean>
}
/**
* Create an AgentMail inbox (no auto-send).
* Supports clientId for idempotent creates. Uses POST /v0/inboxes.
*
* @param input.username - Optional address username
* @param input.domain - Optional verified domain (default agentmail.to)
* @param input.displayName - Optional display name
* @param input.clientId - Optional client_id for idempotency
* @param input.metadata - Optional string/number/boolean metadata map
* @returns Created inbox from AgentMail
*
* @example
* import createInbox from 'kody:@kody/agent-mail/create-inbox'
* const { inbox } = await createInbox({
* displayName: 'Support Agent',
* clientId: 'support-agent-v1',
* })
*/
export default async function createInbox(input: CreateInboxInput = {}) {
const body: Record<string, unknown> = {}
if (clean(input.username)) body.username = clean(input.username)
if (clean(input.domain)) body.domain = clean(input.domain)
if (clean(input.displayName)) body.display_name = clean(input.displayName)
if (clean(input.clientId)) body.client_id = clean(input.clientId)
if (input.metadata && typeof input.metadata === 'object') body.metadata = input.metadata
const inbox = await agentMailRequest({
method: 'POST',
path: '/v0/inboxes',
body,
label: 'AgentMail create inbox',
})
return { inbox }
}