Scheduled pushes deliver silently (no streaming) #30
Labels
No labels
in-review
ready-for-agent
ready-for-human
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
weiwen/evie#30
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What to build
Scheduled/proactive pushes (the
scheduler_task→delivery_consumerpath) should deliver a single, clean message instead of streaming. Today they run the same pipeline as interactive messages: an immediate…placeholder (which fires a Telegram notification with no content), a typing indicator, and live throttled edits aspistreams.Scheduled pushes should instead be fully silent until
pifinishes — no placeholder, no typing indicator, no live edits — then send one fresh message with the final answer (or the error). Interactive messages are unchanged: they keep streaming exactly as they do now.Structure the shared delivery pipeline as two entry points plus a shared tail:
deliver_streaming— interactive path, current behavior unchanged.deliver_silent— scheduled path. Awaitspiinline with a throwaway snapshot channel (drop the receiver up front;pi's snapshot sends already fail harmlessly), so notokio::spawn/select!/ edit loop. Renders into an emptyMessageViewso pages send fresh; errors send fresh too.render_final— shared tail taking the already-awaited result: paginate → send pages → source buttons on the last page on success, or the plain error notice on failure (respectingexpose_errors).delivery_consumercallsdeliver_silent; the interactive handler callsdeliver_streaming.No trait or
enum DeliveryMode— the mode is a structural fact of the call site, not a per-message runtime choice. An enum can be introduced later if a runtime mode decision (e.g. a per-schedulestreamflag) ever appears.Acceptance criteria
…placeholder and no typing indicator; nothing appears in the chat untilpicompletes.expose_errors(verbatim vs. "Something went wrong. Your session has been reset.").delivery_consumerdescription and the pi.rs/telegram architecture notes reflect that scheduled pushes deliver silently rather than via the streaming pipeline.Blocked by
None - can start immediately
Implemented on branch sandcastle/issue-30 (commit
c069297).Changes:
No enum/trait for delivery mode — the mode is structural at the call site as specified. CI must validate compilation (no Rust toolchain in sandbox).