OptionalflowsDSL 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.
OptionalfallbackConversations 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;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).
Optionalnotify'notify' text. Default: the localized built-in CORE_MESSAGES.conversationInterrupted.
OptionalttlHow 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.
OptionalmaxDurability 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.
coordination.handover: conversation hand-over between replicas.