Who sets each field of a message
A table of the eight Message fields across three messages of the review in 06-input-required.http, which appear one column at a time in the order they were sent. The planner first message 14a03569 has no contextId and no taskId. The code-reviewer question 46494a30 carries contextId 49c5a238 and taskId e5c95b09. The planner answer 096d3737 echoes both ids. Roles are ROLE_USER, ROLE_AGENT and ROLE_USER. metadata, extensions and referenceTaskIds are not set in any of them. A right column says who sets each field, and a last note says the server writes both ids into its stored copy of the first message.
FIELD
WHO SETS IT
messageId
minted by the sender
for every message
contextId
minted by the server,
echoed by the client
taskId
minted by the server,
echoed to continue a task
role
the direction:
client to server is USER
parts
the sender, at least
one part
metadata
not set in any kit capture
the sender: a JSON object
extensions
not set in any kit capture
the sender: extension URIs
referenceTaskIds
not set in any kit capture
the sender: related tasks
REQUIRED in proto Message
planner
first message
14a03569
omitted
omitted
ROLE_USER
text, raw
code-reviewer
its question
46494a30
49c5a238
e5c95b09
ROLE_AGENT
text
planner
the answer
096d3737
49c5a238
e5c95b09
ROLE_USER
text "main"
The server writes contextId 49c5a238 and taskId e5c95b09 into its stored copy
of the first message, which the planner sent without them.