class

Smith::PlainPresentation

Inherits Smith::Presentation < Reference < Object

The line-based presentation, wrapped around whichever renderer the run asked for: human text, or JSONL. Both prompt on the terminal, and both keep that prompt off stdout — in JSON mode a question printed there would corrupt the stream mid-line, which is what prompt_io exists to avoid.

Constructors

new(renderer : Output::Renderer)
Source

Instance methods

approver(allowlist : Array(String), rules : Tools::RuleSet) : Tools::Approver
Source
notice_io

Where diagnostics that are nobody's event go — a hook warning, an MCP server that would not start.

Source
plan_gate
Source
renderer
Source
say(text : String) : Nil

Both go to prompt_io for the reason a question does: in JSON mode a line on stdout lands in the middle of the JSONL stream and breaks the record it interrupts. In human mode prompt_io is stdout, so this is the ordinary place either way.

say indents, because plain output has no block structure to set a stray line apart from the transcript around it.

Source
say_block(lines : Array(String)) : Nil

Lines that are already laid out — a table, a breakdown — and must be shown as they are.

Source
trust_prompt(store : TrustStore, preapproved : Bool) : TrustPrompt
Source