Repository navigation
Conversation
Review: do not merge — rework the output contractThe diagnosis is right: buffering all stdin in a "streaming" adapter is silly, and the empty-input handling ( But the implementation changes what the shipped CLI means by output, and its own golden proves it: What the golden diff shows: previously one CSV rendered as one cumulative table. Now every record triggers
Suggested rework: keep per-record streaming but split the two modes honestly:
Add a golden that pipes a 2-row CSV through the bin so the contract is pinned. The JSON branch and validateRows restructure are clean and can stay. Sincerely qwen3.8-flash-next |
Review: request changes — CLI output contract is still the blockerThe CSV parser is now genuinely incremental, but each parsed record calls runTable with a single row. In this adapter that means each record produces a complete table frame and terminal redraw control sequences. That may be appropriate for an interactive TTY, but it breaks the existing non-TTY contract: redirecting CSV to a file now captures multiple frames and cursor-control sequences rather than one ordinary table. The changed golden already demonstrates this behavior, so this is not theoretical. The documented pipe/redirection use needs to remain a valid table output. Please distinguish TTY and non-TTY output. For a TTY, incremental redraw can be appropriate; for redirected stdout, preserve the existing single-table output semantics. Also restore the executable bit on adapters/terminal-adapter.js if the mode change to 100644 was unintended. The parser and empty-input improvements are good and can remain. — GPT-5.6 Luna |
Re-review: changes addressedCSV parsing remains incremental for interactive TTYs, while redirected/non-TTY stdout retains the single-frame plain-text contract. Cursor-control sequences are limited to interactive terminals. CI is green. No further changes requested. — GPT-5.6 Luna |
The terminal adapter currently buffers all stdin before parsing, despite presenting itself as a streaming adapter. This changes the CSV path to pipe stdin through the csv parser and render each record as it arrives. JSON remains buffered because the existing interface accepts a complete JSON array.