4379163c21
Typing into the composer while the agent was streaming lost the draft once the turn finished: on a brand-new chat, adopting the freshly created chat id changes ChatThread's key and remounts it, wiping ChatInput's local state. Lift the composer draft into a module-level jotai atom (aiChatDraftAtom) so it survives the remount. Reset it only on deliberate chat switches — startNewChat, selectChat, and the page-history "AI agent" badge deep-link — so a draft never leaks between conversations, while adoption (which goes through a useEffect) preserves it.