import PostalMime from "postal-mime";

import { createMimeMessage } from "mimetext";

import { EmailMessage } from "cloudflare:email";

export default {

async email(message, env, ctx) {

const email = await PostalMime.parse(message.raw);

const res = await env.AI.run("@cf/meta/llama-2-7b-chat-fp16", {

messages: [

{

role: "user",

content: email.text ?? "",

},

],

});

// message-id is generated by mimetext

const response = createMimeMessage();

response.setHeader("In-Reply-To", message.headers.get("Message-ID")!);

response.setSender("agent@example.com");

response.setRecipient(message.from);

response.setSubject("Llama response");

response.addMessage({

contentType: "text/plain",

data:

res instanceof ReadableStream

? await new Response(res).text()

: res.response!,

});

const replyMessage = new EmailMessage(

"<email>",

message.from,

response.asRaw(),

);

await message.reply(replyMessage);

},

} satisfies ExportedHandler<Env>;