fix(chat): bound the steered-copy match by when the message was injected
The persisted copy could only be recognized by its content, and the scope that kept the match off history — the turn's own prompt, located through `detail.in_flight_user_turn_id` — is gone precisely when it is needed: the backend stamps that id by matching the pending prompt against the transcript TAIL, and once the agent has written the steered message the tail IS that message. So the guard was dead in the shape it exists for, and the version before it reached back through the whole window instead. The `steering` block now carries the note's `created_at`, the instant the backend injected the text, stamped on the machine the agent runs on. A persisted user turn older than that cannot be a copy of it — including this round's prompt, written before the user steered — so the match needs no prompt anchor and cannot touch history. Candidates stay limited to what the detail projected, keeping every compared timestamp on the agent's clock, and anything unreadable suppresses nothing. The message also shows the time it was actually sent rather than the turn's start, which is the same stamp read for display.
X
xintaofei committed
dcedd99e54b15b7539e879f34df5cd267db820b8
Parent: d65deb3