Module handoff

Module handoff 

Source
Expand description

Warm handoff — transfer the conversation to a human with its context intact.

The single UX bar for an escalation is that the person picking up never asks the caller to repeat themselves. What the receiving desk needs is not the raw session but a compact, serializable packet: who is calling, what has been said, what the governed flow has established, and — when a summarizer is available — two sentences of “what they want and what was already tried”.

HandoffRecorder accumulates the final transcripts as the call runs (redacted upstream when redaction is installed, so a packet can never leak what the router already scrubbed). HandoffPacket is the snapshot the connector delivers however its platform wants — a screen-pop payload, SIP headers, a CRM note. Assembly is transport- agnostic by design; delivering it is the connector’s job.

let recorder = HandoffRecorder::attach(&handle, 40);
// … the call runs; escalation triggers …
let mut packet = recorder.packet(&handle, &["telephony:caller", "intent", "verified"]);
packet.summarize(&*flash_llm).await.ok();  // optional 2–3 sentence summary
let json = serde_json::to_string(&packet)?;  // hand this to the agent desktop

Structs§

HandoffFlowStatus
The flow’s standing at the moment of handoff.
HandoffPacket
The context packet handed to the receiving human.
HandoffRecorder
Accumulates the conversation as it happens, so a packet can be assembled at any moment without asking the caller to wait.
HandoffTurn
One finalized turn of the conversation.