import { PurchaseList, purchaseListSchema } from './types'; import { Tool } from './tool'; import { BaseTool, makeRequest } from '@utils/aiGatewayClient'; import { generatePrompt } from './prompt'; import { Consumer } from '@consumer/types'; export async function generate(editedConsumer: Consumer, date: Date) { const consumerPrompt = await generatePrompt( editedConsumer, parseInt(process.env.PURCHASE_REFLECTION_THRESHOLD ?? '50'), date, parseInt(process.env.NUMBER_OF_WEEKS ?? '4') ); try { const result = (await makeRequest( consumerPrompt, Tool as BaseTool )) as PurchaseList; const validPurchases = purchaseListSchema.safeParse(result); if (validPurchases.error) { throw Error(`Invalid purchases: ${validPurchases.error.message}`); } const totalPurchases = validPurchases.data.weeks.reduce( (acc, week) => acc + week.purchases.length, 0 ); console.info( `Generated ${totalPurchases} purchases for new purchase list for consumer` ); return validPurchases.data; } catch (error) { console.error('Error generating purchases:', error); throw error; } }