for await (const event of client.chatStream({ ... })) {
switch (event.type) {
case "tool.execution.started":
// 1. The agent decides to call a tool
console.log(`Running tool: ${event.data.name}`, event.data.arguments);
break;
case "tool.execution.completed":
// 2. The backend executes the tool and streams back the result
console.log(`Tool ${event.data.name} completed. OK: ${event.data.ok}`);
console.log(`Result: ${event.data.result}`);
break;
case "agent.response.delta":
// 3. The agent reasons about the tool response and streams text
process.stdout.write(event.data.delta);
break;
case "agent.response.completed":
// 4. Final completion payload with full metadata
console.log("Response complete. Tools used:", event.data.tool_calls);
break;
}
}