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_endwithrole = "assistant"contains the final assistant text.assistantMessageEventinmessage_updateprovides streaming deltas.tool_execution_*events map cleanly to Takopiactionevents.