Files
GEOAgentArticleOptimizer/src/lib/llm/trace-repository.ts
T
2026-07-16 12:03:12 +08:00

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());
}