@botmesh/core - v2.0.0-alpha.2
    Preparing search index...

    Interface ConversationHandoverConfig

    coordination.handover: conversation hand-over between replicas.

    interface ConversationHandoverConfig {
        flows?: "forward" | "drop";
        fallback?: "drop" | "notify" | "restart" | HandoverFallback;
        notifyMessage?: string;
        ttl?: string | number;
        maxAnswerBytes?: number;
    }
    Index
    flows?: "forward" | "drop"

    DSL flows WITHOUT .persistent(): 'forward' keeps a TTL-bound ("ephemeral") checkpoint of them, one write per step, so the replica that takes the chat — or this one after a rolling restart within the TTL — continues the flow. Needs plain-JSON c.state; a flow whose state is not plain JSON is handled by fallback. 'drop' (default): they live in memory only.

    fallback?: "drop" | "notify" | "restart" | HandoverFallback

    Conversations that cannot be forwarded (async bot.conversation functions, flows not forwarded, a forwarded flow whose definition changed on the new replica):

    • 'notify': the replica that takes the chat tells the user the conversation was interrupted (it consumes the waking message);
    • 'restart': it re-enters the conversation by name, from the beginning, with its initial state (side effects before its first wait run again); falls back to 'notify' when the name is not registered there;
    • 'drop' (default): today's behaviour — the waking message routes normally;
    • a function: a custom migration; resolve true when it consumed the waking message.

    Costs two store writes per such conversation (a stub when it first waits, its clear at the end).

    notifyMessage?: string

    'notify' text. Default: the localized built-in CORE_MESSAGES.conversationInterrupted.

    ttl?: string | number

    How long an ephemeral checkpoint stays resumable after its last write (stubs: twice that), as a duration ('10m') or ms. Default: conversation.timeout, else '5m'. While the conversation waits, never shorter than that wait's explicit timeout (ask({ timeout }), flow().timeout()); refreshed at every wait.

    maxAnswerBytes?: number

    Durability off: the largest encoded answer (bytes) embedded in a checkpoint so a step cut short mid-way can be continued with it (with durability the journal holds it instead). Default 16_384; 0 never embeds one.