Skip to content
Concepts

Concepts

Optional Herdr activity reporting for Shiitake clients

Corral reports a Shiitake client’s current activity in the active Herdr pane. It is an optional client extension: the client supplies activity, and Herdr owns the pane and its lifecycle.

The activity stream contains idle, working, blocked, or unknown. Corral reports changes from that stream. It does not open another Session watch or read a Session database. The client remains responsible for producing activity. The default entry borrows an AsyncIterable with an independent sliding latest-value subscription per iterator and a detach signal. attachCorral accepts an Effect stream, including a stream with typed Error failures. Source and socket errors reach onError; closing the scope still releases the pane report. Fungi borrows its existing Session observation and command interaction store. An open agent question, a pending command question or a browser hand-off reports blocked. Answering it restores the current activity. An agent question may add its short header to the blocked message; question bodies, answer choices, answers and credentials are never included in reports.

Herdr derives done when an unseen background turn returns to idle. It owns whether the user has seen that completion. Corral never guesses completion from an unavailable observation.

attachCorral needs an Effect scope. When that scope closes, Corral cancels its reporter, closes any in-flight socket, and releases the current pane report. It sends pane.report_agent and pane.release_agent over Herdr’s API socket with the fungi:agent:v1 source and fungi agent label. A monotone timestamp sequence orders reports across attachments and process restarts.