Skip to content

Pi --mode json event cheatsheet

pi --print --mode json writes one JSON object per line (JSONL) with a required type field. These are AgentSessionEvent objects from @mariozechner/pi-agent-core.

Top-level event lines

agent_start

{"type":"agent_start"}

agent_end

{"type":"agent_end","messages":[{"role":"assistant","content":[{"type":"text","text":"Done."}],"stopReason":"stop","timestamp":123}]} 

turn_start / turn_end

{"type":"turn_start"}
{"type":"turn_end","message":{...},"toolResults":[...]} 

message_start / message_update / message_end

{"type":"message_start","message":{"role":"assistant","content":[{"type":"text","text":"Working..."}]}}
{"type":"message_update","message":{...},"assistantMessageEvent":{"type":"text_delta","delta":"...","contentIndex":0}} 
{"type":"message_end","message":{"role":"assistant","content":[{"type":"text","text":"Done."}],"stopReason":"stop"}}

tool_execution_start

{"type":"tool_execution_start","toolCallId":"tool_1","toolName":"bash","args":{"command":"ls"}}

tool_execution_update

{"type":"tool_execution_update","toolCallId":"tool_1","toolName":"bash","args":{"command":"ls"},"partialResult":{"content":[{"type":"text","text":"..."}]}} 

tool_execution_end

{"type":"tool_execution_end","toolCallId":"tool_1","toolName":"bash","result":{"content":[{"type":"text","text":"ok"}],"details":{}},"isError":false}

Notes

  • message_end with role = "assistant" contains the final assistant text.
  • assistantMessageEvent in message_update provides streaming deltas.
  • tool_execution_* events map cleanly to Takopi action events.