"""Compatibility defaults: deliberate speech and multi-source attention routing.

Documented Contract:
1. Attention policy (`attention.plan`):
   - 'operator': wake('operator')
   - 'discord.dm': wake('directed')
   - 'discord.mention': wake('directed') (urgent directed notifications must wake immediately)
   - 'discord.ambient': defer(8) (shipped ambient participation policy: batches with 8-second window)
   - Any unknown source: raises ValueError('unknown source; never silently discard it')

2. Delivery policy (`delivery.review`):
   - DeliveryDecision.allow() for authorized destinations
"""
from klbr.hooks import (
    AttentionDecision,
    AttentionRequest,
    DeliveryDecision,
    DeliveryRequest,
    HookContext,
)


def attention(request: AttentionRequest, context: HookContext) -> AttentionDecision:
    """Evaluate attention policy across supported event sources per documented contract."""
    match request.source:
        case "operator":
            return AttentionDecision.wake("operator")
        case "discord.dm":
            return AttentionDecision.wake("directed")
        case "discord.mention":
            # DEFECT: Violates documented contract ('discord.mention' must wake('directed')).
            # Defect returns ignore instead of wake('directed').
            return AttentionDecision.ignore("mentions temporarily muted")
        case "discord.ambient":
            return AttentionDecision.defer(8)
    raise ValueError("unknown source; never silently discard it")


def delivery(request: DeliveryRequest, context: HookContext) -> DeliveryDecision:
    return DeliveryDecision.allow()
