vision-agent / lib /db /prisma.ts
wuyiqunLu
feat: update final_error to result and add cancel callback (#103)
7286745 unverified
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<Record<string, string>>;
}
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 FinalResultBody = FinalCodeBody | FinalErrorBody;
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;