import { PrismaClient } from '@prisma/client'; declare global { var prisma: PrismaClient | undefined; namespace PrismaJson { // you can use classes, interfaces, types, etc. interface StructuredError { name: string; value: string; traceback_raw: string[]; } type StructuredResult = { logs: { stderr: string[]; stdout: string[]; }; results: Array<{ png?: string; mp4?: string; text: string; is_main_result: boolean; }>; error?: StructuredError; }; interface PlanAndToolsBody { type: 'plans' | 'tools'; status: 'started' | 'completed'; payload?: Array>; } interface CodeBody { type: 'code'; status: 'completed' | 'failed' | 'started' | 'running'; payload?: { code: string; test: string; result?: StructuredResult | string; }; } interface FinalCodeBody { type: 'final_code'; status: 'completed' | 'failed'; payload: { code: string; test: string; result: StructuredResult | string; }; } interface FinalErrorBody { type: 'final_error'; status: 'failed'; payload: StructuredError; } type MessageBody = | PlanAndToolsBody | CodeBody | FinalErrorBody | FinalCodeBody; type AgentResponseBodies = Array< PlanAndToolsBody | CodeBody | FinalErrorBody >; } } const db = globalThis.prisma || new PrismaClient(); if (process.env.NODE_ENV != 'production') globalThis.prisma = db; export default db;