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.
Core concepts
Section titled “Core concepts”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.