import { z } from "zod"; import { LabelOutput } from "./label.ts"; /** Full provenance for a single API call annotation. */ export const Provenance = z.object({ modelId: z.string(), // OpenRouter model ID e.g. "google/gemini-3.1-flash-lite-preview" provider: z.string(), // Upstream provider e.g. "google", "xai", "anthropic" generationId: z.string(), // OpenRouter generation ID (response `id` field) stage: z.enum(["stage1", "stage2-judge", "benchmark"]), runId: z.uuid(), // UUID per batch run promptVersion: z.string(), // "v1.0" — tracks prompt iterations inputTokens: z.number().int(), outputTokens: z.number().int(), reasoningTokens: z.number().int(), // from completion_tokens_details.reasoning_tokens costUsd: z.number(), // REAL cost from OpenRouter usage.cost latencyMs: z.number().int(), // wall clock per request requestedAt: z.iso.datetime(), // ISO datetime }); export type Provenance = z.infer; /** A label with full provenance — one per (paragraph, model) pair. */ export const Annotation = z.object({ paragraphId: z.uuid(), label: LabelOutput, provenance: Provenance, }); export type Annotation = z.infer;