effect-uai-streaming-tool-output
Installation
SKILL.md
effect-uai streaming-tool-output
A tool's run is an Effect that computes the model-facing Output, plus an
emit side channel for intermediate events. Emitted events flow to the user as
ToolEvent.Progress in real time; the model only ever sees the Output that
run returns. There is no separate finalize: fold the events into the output
inside run as they stream by.
Reach for this when the user says any of:
- "Show progress while a tool runs"
- "Stream sub-agent reasoning to the UI but give the parent model the final answer"
- "I want a download / search tool with live progress and a clean structured result"
Pattern 1: progress + terminal result
emit is (event) => Effect<void>, so it drops straight into
Stream.runForEach/Stream.runFoldEffect. Fold the events into the output in a
single pass (no buffering of the whole event log):