env('AI_EDITING_DEFAULT_PROVIDER', 'runware'), 'entitlements' => [ 'package_feature' => env('AI_EDITING_PACKAGE_FEATURE', 'ai_styling'), 'addon_keys' => array_values(array_filter(array_map( 'trim', explode(',', (string) env('AI_EDITING_ADDON_KEYS', 'ai_styling_unlock')) ))), 'locked_message' => env( 'AI_EDITING_LOCKED_MESSAGE', 'AI editing requires the Premium package or the AI Styling add-on.' ), ], 'safety' => [ 'prompt' => [ 'blocked_terms' => array_filter(array_map('trim', explode(',', (string) env('AI_EDITING_BLOCKED_TERMS', '')))), ], ], 'abuse' => [ 'guest_submit_per_minute' => (int) env('AI_EDITING_GUEST_SUBMIT_PER_MINUTE', 8), 'guest_submit_per_hour' => (int) env('AI_EDITING_GUEST_SUBMIT_PER_HOUR', 40), 'guest_submit_per_event_per_minute' => (int) env('AI_EDITING_GUEST_SUBMIT_PER_EVENT_PER_MINUTE', 40), 'guest_status_per_minute' => (int) env('AI_EDITING_GUEST_STATUS_PER_MINUTE', 60), 'tenant_submit_per_minute' => (int) env('AI_EDITING_TENANT_SUBMIT_PER_MINUTE', 30), 'tenant_submit_per_hour' => (int) env('AI_EDITING_TENANT_SUBMIT_PER_HOUR', 240), 'tenant_submit_per_event_per_minute' => (int) env('AI_EDITING_TENANT_SUBMIT_PER_EVENT_PER_MINUTE', 120), 'tenant_status_per_minute' => (int) env('AI_EDITING_TENANT_STATUS_PER_MINUTE', 120), 'escalation_threshold_per_hour' => (int) env('AI_EDITING_ESCALATION_THRESHOLD_PER_HOUR', 25), 'escalation_cooldown_minutes' => (int) env('AI_EDITING_ESCALATION_COOLDOWN_MINUTES', 30), ], 'queue' => [ 'name' => env('AI_EDITING_QUEUE', 'default'), 'auto_dispatch' => env('AI_EDITING_AUTO_DISPATCH', false), 'max_polls' => (int) env('AI_EDITING_MAX_POLLS', 6), ], 'billing' => [ 'default_unit_cost_usd' => (float) env('AI_EDITING_DEFAULT_UNIT_COST_USD', 0.01), 'budget' => [ 'soft_cap_usd' => env('AI_EDITING_BUDGET_SOFT_CAP_USD'), 'hard_cap_usd' => env('AI_EDITING_BUDGET_HARD_CAP_USD'), 'hard_stop_enabled' => (bool) env('AI_EDITING_BUDGET_HARD_STOP_ENABLED', true), 'alert_cooldown_minutes' => (int) env('AI_EDITING_BUDGET_ALERT_COOLDOWN_MINUTES', 30), ], ], 'retention' => [ 'request_days' => (int) env('AI_EDITING_REQUEST_RETENTION_DAYS', 90), 'usage_ledger_days' => (int) env('AI_EDITING_USAGE_LEDGER_RETENTION_DAYS', 365), ], 'providers' => [ 'runware' => [ 'mode' => env('AI_EDITING_RUNWARE_MODE', 'live'), ], ], 'observability' => [ 'failure_rate_alert_threshold' => (float) env('AI_EDITING_FAILURE_RATE_ALERT_THRESHOLD', 0.35), 'failure_rate_min_samples' => (int) env('AI_EDITING_FAILURE_RATE_MIN_SAMPLES', 10), 'latency_warning_ms' => (int) env('AI_EDITING_LATENCY_WARNING_MS', 15000), ], ];