"""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()