SIGN IN SIGN UP

fix(chat): steer a draft with image attachments instead of refusing it

The composer's "insert into current turn" entry went dark the moment an
image was staged, and a draft with file badges was silently rerouted to
the queue. The whole steering chain narrowed the draft to a bare string
(ConnectionCommand::Steer carried text, build_steer_params hardcoded a
single text block), so those gates were the honest option. The wire never
had that limit: the claude adapter's _session/steering handler feeds the
prompt array through the same conversion as session/prompt, images
included.

Steer now carries the draft's PromptInputBlocks end to end. The composer
sends the full block list whenever the draft holds more than plain text,
with the display text as the recorded note; the backend maps the blocks
with map_prompt_blocks, the exact session/prompt encoding, and re-hydrates
uploaded file:// markers like /acp_prompt does, so web and remote mode
work unchanged. The prompt ledger fingerprints the steered blocks the same
way a prompt's are, and a text-only steer stays byte-identical to before.

The pull channel still delivers plain text, so a blocks-bearing note on a
session that downgraded mid-race is rejected with NoActiveTurn and the
composer's existing fallback queues the whole draft, attachments included;
an attachment is never silently dropped. Steering while an upload is still
settling gets the same toast a plain send does, and the now-unused
steerAttachmentsUnsupported string is gone from all ten locales.
A
Adam Dalloul committed
b058ccbdda8c35b4a7e8305aac3d8ecebf4f65af
Parent: f497521