/** * Scar Variant Assignment Service * Integrates variant assignment into enforcement engine * Switched from issue-keyed to agent-keyed assignment * * Handles: * - Random variant assignment for scars with variants * - Idempotent assignment (same agent+scar always gets same variant) * - Legacy scar fallback (scars without variants use original description) * - Blind testing (agent doesn't know which variant they received) */ /** * Variant record from database */ export interface ScarVariant { id: string; variant_name: string; variant_version: string; description: string; enforcement_config: { type: "imperative" | "declarative"; show_counter_arguments?: boolean; steps?: string[]; success_state?: string; verification_tests?: string[]; constraints?: string[]; }; active: boolean; } /** * Assignment record * Primary key is (agent_id, scar_id), issue_id/session_id are metadata */ export interface VariantAssignment { id: string; agent_id: string; scar_id: string; variant_id: string; assigned_at: string; issue_id?: string; session_id?: string; } /** * Result of variant retrieval for a scar */ export interface ScarWithVariant { scar_id: string; has_variants: boolean; variant?: ScarVariant; assignment?: VariantAssignment; } /** * Get active variants for a scar */ export declare function getActiveVariants(scarId: string): Promise; /** * Get existing assignment for an agent + scar pair * Changed from issue-keyed to agent-keyed lookup */ export declare function getExistingAssignment(agentId: string, scarId: string): Promise; /** * Create random variant assignment * Agent-keyed with optional issue/session metadata */ export declare function createVariantAssignment(agentId: string, scarId: string, variants: ScarVariant[], metadata?: { issueId?: string; sessionId?: string; }): Promise; /** * Get or create variant assignment for a scar * This is the main entry point for enforcement integration * * Changed from issue-keyed to agent-keyed assignment. * Agent identity is always available, so variants are always assigned. * * @param agentId - Agent identity (e.g., 'CLI', 'DAC', 'CODA-1') * @param scarId - UUID of the scar * @param metadata - Optional issue_id and session_id for triple traversals * @returns Scar with variant info, or has_variants=false for legacy scars */ export declare function getOrAssignVariant(agentId: string, scarId: string, metadata?: { issueId?: string; sessionId?: string; }): Promise; /** * Format enforcement text based on variant type * Returns formatted description with variant-specific structure * * This is BLIND - agent never sees variant name or type indicator */ export declare function formatVariantEnforcement(variant: ScarVariant, scarTitle: string): string; //# sourceMappingURL=variant-assignment.d.ts.map