import { GoogleGenAI, Type } from "@google/genai"; import type { ActionPlan, CaseData } from '../types'; if (!process.env.API_KEY) { throw new Error("API_KEY environment variable is not set"); } const ai = new GoogleGenAI({ apiKey: process.env.API_KEY }); const responseSchema = { type: Type.OBJECT, properties: { title: { type: Type.STRING, description: "A concise title for the action plan." }, summary: { type: Type.STRING, description: "A brief summary of the action plan and its goals." }, categories: { type: Type.ARRAY, description: "A list of categories for action items, e.g., 'Medical Documentation', 'Work History Evidence'.", items: { type: Type.OBJECT, properties: { category: { type: Type.STRING, description: "The name of the category." }, description: { type: Type.STRING, description: "A short description of this category's purpose." }, items: { type: Type.ARRAY, description: "A list of specific action items within this category.", items: { type: Type.OBJECT, properties: { item: { type: Type.STRING, description: "The specific action item or task to complete." }, description: { type: Type.STRING, description: "A detailed explanation of why this item is important and how to complete it." }, status: { type: Type.STRING, description: "The initial status, which should always be 'Not Started'." } }, required: ["item", "description", "status"] } } }, required: ["category", "description", "items"] } } }, required: ["title", "summary", "categories"] }; const createPrompt = (data: CaseData): string => { return ` Analyze the following Social Security Disability Insurance (SSDI) case details and generate a comprehensive, step-by-step action plan for the applicant. **Applicant's Case Details:** - **Age:** ${data.age} - **Diagnosed Medical Conditions:** ${data.medicalConditions} - **Summary of Work History (last 15 years):** ${data.workHistory} - **Daily Limitations and Difficulties:** ${data.limitations} **Your Task:** Create a detailed action plan in JSON format. The plan should be structured to guide the applicant in gathering the necessary evidence to build a strong SSDI claim. **Key areas to cover in the plan:** 1. **Medical Documentation:** Gathering records, doctor's statements, test results, etc. 2. **Work History Evidence:** Documenting past jobs, job duties, and why they can no longer be performed. 3. **Activities of Daily Living (ADL):** Creating logs or journals that detail daily struggles. 4. **Third-Party Evidence:** Obtaining statements from family, friends, or former colleagues. For each action item, provide a clear task ("item") and a detailed "description" explaining its importance and providing guidance. Every item's initial "status" must be "Not Started". Generate the output strictly following the provided JSON schema. `; }; export const generateActionPlan = async (data: CaseData): Promise => { const prompt = createPrompt(data); try { const response = await ai.models.generateContent({ model: "gemini-2.5-flash", contents: prompt, config: { responseMimeType: "application/json", responseSchema: responseSchema, temperature: 0.5, }, }); const jsonString = response.text.trim(); const plan: ActionPlan = JSON.parse(jsonString); return plan; } catch (error) { console.error("Error calling Gemini API:", error); throw new Error("Failed to generate action plan from Gemini API."); } };