25 lines
1.0 KiB
TypeScript
25 lines
1.0 KiB
TypeScript
import { getDefaultDatabasePath } from "../db/connection";
|
|
import { getAppCloudflareEnv } from "../runtime/cloudflare";
|
|
import { createD1TraceRepository } from "./d1-trace-repository";
|
|
import { createSqliteTraceRepository } from "./sqlite-trace-repository";
|
|
import type { LlmTraceCall, LlmTraceRun } from "./trace-types";
|
|
|
|
export interface LlmTraceRepository {
|
|
putRun(run: LlmTraceRun): Promise<void>;
|
|
putCall(call: LlmTraceCall): Promise<void>;
|
|
getRun(jobId: string): Promise<LlmTraceRun | null>;
|
|
getLatestRun(): Promise<LlmTraceRun | null>;
|
|
listCalls(jobId: string): Promise<LlmTraceCall[]>;
|
|
listTerminalRunsExcept(jobId: string): Promise<LlmTraceRun[]>;
|
|
deleteRun(jobId: string): Promise<void>;
|
|
}
|
|
|
|
export function getLlmTraceRepositoryFromRuntime(): LlmTraceRepository {
|
|
if (process.env.APP_RUNTIME === "cloudflare") {
|
|
const env = getAppCloudflareEnv();
|
|
if (!env?.DB) throw new Error("Cloudflare D1 binding DB is required");
|
|
return createD1TraceRepository(env.DB);
|
|
}
|
|
return createSqliteTraceRepository(getDefaultDatabasePath());
|
|
}
|