A message as an app supplies it to setMessages, initial messages or
sendMessage. It is a {@link Message} whose id is optional: Hashbrown
keeps a supplied id, so a saved transcript restores with the same ids, and
mints one only when the id is absent. An {@link ActivityMessageInput} keeps
its required id; its optional links are recomputed from position,
except subagentRunId, which is kept.
API
export type MessageInput<
Output,
Tools extends AnyTool ,
> =
| UserMessageInput
| AssistantMessageInput <Output, Tools>
| ErrorMessage
| ActivityMessageInput; MessageInput
@typeOutput@typeToolsAnyTool