import { randomUUID } from 'crypto'; import { GuardrailContext, CreateContextOptions } from './types.js'; /** * Create a new guardrail context with defaults */ export function createGuardrailContext(options: CreateContextOptions = {}): GuardrailContext { return { requestId: options.requestId || randomUUID(), provider: options.provider || 'unknown', model: options.model || 'unknown', timestamp: new Date(), messages: options.messages || [], prompt: options.prompt, response: options.response, toolName: options.toolName, toolArgs: options.toolArgs, toolResult: options.toolResult, metadata: new Map(), violations: [], modifications: [], }; } /** * Clone a guardrail context (deep copy metadata but shallow copy violations/modifications) */ export function cloneContext(context: GuardrailContext): GuardrailContext { return { ...context, messages: [...context.messages], toolArgs: context.toolArgs ? { ...context.toolArgs } : undefined, metadata: new Map(context.metadata), violations: [...context.violations], modifications: [...context.modifications], }; }