import type { ProvenanceBlock } from '../receipts/schema'; import { inferCompliance, inferHosting, inferModelIdentity, inferProviderRoute, type ProviderRegistryConfig, type ProviderRegistryRequest, } from './provider-registry'; export interface AgentRequest extends ProviderRegistryRequest { headers?: Record; } export interface AgentGuardContext { config?: ProviderRegistryConfig; now?: () => Date; } export function captureProvenance(req: AgentRequest, ctx: AgentGuardContext = {}): ProvenanceBlock { const route = inferProviderRoute({ ...req, providerRoute: ctx.config?.providerRoute ?? req.providerRoute }); const model = inferModelIdentity(String(req.model || 'unknown'), route); const hosting = inferHosting(route, ctx.config); const compliance = inferCompliance(route, model, ctx.config); return { model_identity: model, hosting, compliance, captured_at: (ctx.now ? ctx.now() : new Date()).toISOString(), }; }