stream_prompt returns a Ruby Enumerator. Events are string-keyed hashes that mirror JSON-RPC payloads and include snake-case aliases for common camel-case fields.
sdk.stream_prompt("Run the tests and summarize failures").each do |event|
case event["type"]
when "message_update"
print event["delta"]
when "tool_start"
warn "Running #{event["tool_name"]}"
when "permission_request"
sdk.allow_permission(event["request_id"], scope: :once)
end
endCommon event types:
agent_startagent_endturn_startturn_endmessage_startmessage_updatemessage_endtool_starttool_updatetool_endpermission_requestdirectory_access_requestfile_modifiedchanges_batch_startchanges_batch_updatechanges_batch_enderror
The SDK emits an agent_end event after turn_end so stream consumers have a stable completion marker.