OptionalAgentThe first moment of the conversation this turn may read. Sent to the server only when set; the server then loads the agent's history from there and skips its summary of earlier messages.
OptionalAllowedThe agents the conversation manager may delegate to. When set, ALL_AVAILABLE_AGENTS
(the list the manager routes from) is narrowed to these. Null or omitted keeps every agent
the user can run.
OptionalappApplication context to inject into the agent's system prompt. Used by embedders (Form Builder cockpit, Component Studio AI Assistant, future LXP) to ground the agent in their UI state.
OptionalapplicationApplication context for default-agent resolution. App-scoped Application Settings beat the global default.
The conversation this message belongs to.
OptionalexplicitOptional explicit agent ID. When set, wins over the DefaultAgentResolver
chain. Mirrors the widget's [DefaultAgentId] input.
The just-sent user message. The turn answers it: the server loads the history around it and creates the agent's reply row for it (only the server writes agent replies).
OptionalonOptional progress callback. Mirrors the original service's signature — embedders forward this through to the widget's progress UI.
OptionalonCalled once the server accepts the run, before any progress, with the reply row it created. Its ID keys the run's progress and completion; its creation time starts the reply's timer.
OptionalplanPer-request Plan Mode toggle. When true (and the resolved agent's SupportsPlanMode capability is on), the root agent must present a plan for human approval before it may execute Actions/Sub-Agents. Defaults off — no behavior change unless set.
OptionalReplyThe fork the reply and history run on, when the turn forks from message (such as Regenerate).
Null or omitted uses message.BranchID.
OptionalrequestedSkill IDs the user requested via /skill-name mentions in the composer. Forwarded to the
server, which intersects them with the agent's accepted skills AND the user's Run permission
before any activate. Defaults to none.
Inputs to ConversationAgentRunner.processMessage. Replaces the original service's positional parameter list with a typed struct so call sites don't silently break when fields are added or reordered.