JSON Etkinlik Akışı Modu
pi --mode json "Your prompt"Tüm oturum olaylarını JSON satırlardan stdout'ye çıkarır. Pi'yi diğer araçlara veya özel kullanıcı arayüzlerine entegre etmek için kullanışlıdır.
Etkinlik Türleri
Wire olayları JsonAgentSessionEvent kullanır. Eşleşiyor
AgentSessionEvent
akış mesajı güncellemelerinin kümülatif anlık görüntüleri hariç tutması dışında:
type WithoutPartial<T> = T extends { partial: unknown } ? Omit<T, "partial"> : T;
type JsonAgentSessionEvent =
| Exclude<AgentSessionEvent, { type: "message_update" }>
| {
type: "message_update";
assistantMessageEvent: WithoutPartial<AssistantMessageEvent>;
};queue_update değiştiklerinde bekleyen yönlendirme ve takip kuyruklarının tamamını yayınlar. compaction_start ve compaction_end hem manuel hem de otomatik sıkıştırmayı kapsar.
Diğer temel olaylar
AgentEvent:
type AgentEvent =
// Agent lifecycle
| { type: "agent_start" }
| { type: "agent_end"; messages: AgentMessage[] }
// Turn lifecycle
| { type: "turn_start" }
| { type: "turn_end"; message: AgentMessage; toolResults: ToolResultMessage[] }
// Message lifecycle
| { type: "message_start"; message: AgentMessage }
| { type: "message_update"; message: AgentMessage; assistantMessageEvent: AssistantMessageEvent }
| { type: "message_end"; message: AgentMessage }
// Tool execution
| { type: "tool_execution_start"; toolCallId: string; toolName: string; args: any }
| { type: "tool_execution_update"; toolCallId: string; toolName: string; args: any; partialResult: any }
| { type: "tool_execution_end"; toolCallId: string; toolName: string; result: any; isError: boolean };Mesaj Türleri
packages/ai/src/types.ts'den gelen temel mesajlar:
UserMessage(satır 134)AssistantMessage(satır 140)ToolResultMessage(satır 152)
packages/coding-agent/src/core/messages.ts'den gelen genişletilmiş mesajlar:
BashExecutionMessage(satır 29)CustomMessage(satır 46)BranchSummaryMessage(satır 55)CompactionSummaryMessage(satır 62)
Çıkış Formatı
Her satır bir JSON nesnesidir. İlk satır oturum başlığıdır:
{"type":"session","version":3,"id":"uuid","timestamp":"...","cwd":"/path"}Olaylar meydana geldikçe takip edilir:
{"type":"agent_start"}
{"type":"turn_start"}
{"type":"message_start","message":{"role":"assistant","content":[],...}}
{"type":"message_update","assistantMessageEvent":{"type":"text_delta","contentIndex":0,"delta":"Hello"}}
{"type":"message_end","message":{...}}
{"type":"turn_end","message":{...},"toolResults":[]}
{"type":"agent_end","messages":[...]}message_update kayıtlar yalnızca deltadır. Hem kümülatif message alanını hem de
assistantMessageEvent.partial akış boyutunu doğrusal tutmak için. contentIndex ve delta tuşlarını kullanın
Gerekirse canlı metni, düşünmeyi veya araç çağrısı argümanlarını bir araya getirmek. message_end içerir
son yetkili mesaj.
Örnek
pi --mode json "List files" 2>/dev/null | jq -c 'select(.type == "message_end")'