What's new in v0.14.9
Draft-only campaign responder groundwork
- Added a strict
responder_output_v1domain contract for future campaign-scoped agents. - Added campaign inbound attribution that can resolve replies via WhatsApp context, campaign payloads, or recent campaign outbounds while preserving ambiguous/unsolicited states.
- Added a draft-only finalizer that creates
message_draftsmetadata for operator review and never sends outbound WhatsApp messages.
Safety gates
- The finalizer blocks LLM execution before consent failures or existing human-handoff conversations.
- Caller-supplied campaign context is validated against workspace and inbound DB truth before any draft write.
- Draft idempotency uses a workspace/conversation/inbound/agent-version key with a full paged scan until a DB uniqueness migration is added.