Move setup callback handling from interactive/rpc modes into AgentSession.newSession(). After setup() runs, sync agent state via replaceMessages() so the LLM has context and the UI renders the messages properly. fixes #968