A3S Docs
A3S CodeExamples

Streaming

Real-time event stream with AgentEvent

Streaming

Subscribe to AgentEvent for real-time visibility into what the agent is doing — text deltas, tool calls, token usage, and more.

Event Types

Prop

Type

Example

const session = agent.session('/my-project', { permissive: true });

const stream = await session.stream('Refactor the auth module');

while (true) {
  const { value: event, done } = await stream.next();
  if (!event || done) break;
  switch (event.type) {
    case 'text_delta':
      process.stdout.write(event.text);
      break;
    case 'tool_start':
      process.stdout.write(`\n🔧 ${event.toolName}...`);
      break;
    case 'tool_end':
      console.log(` ✓ (exit=${event.exitCode})`);
      break;
    case 'turn_end':
      console.log(`\n└─ Turn ${event.turn} done (${event.totalTokens} tokens)`);
      break;
    case 'end':
      console.log(`\n■ Done — ${event.totalTokens} tokens total`);
      break;
  }
}

Source: sdk/node/examples/agentic_loop_demo.ts

session = agent.session("/my-project", permissive=True)

for event in session.stream("Refactor the auth module"):
    t = event.event_type
    if t == "text_delta":
        print(event.text, end="", flush=True)
    elif t == "tool_start":
        print(f"\n🔧 {event.tool_name}...", end="")
    elif t == "tool_end":
        print(f" ✓ (exit={event.exit_code})")
    elif t == "turn_end":
        print(f"\n└─ Turn {event.turn} done ({event.total_tokens} tokens)")
    elif t == "end":
        print(f"\n■ Done — {event.total_tokens} tokens total")
        break

Source: sdk/python/examples/agentic_loop_demo.py

Sample Output

┌─ Turn 1
🔧 read... ✓ (exit=0)
🔧 write... ✓ (exit=0)
└─ Turn 1 done (1842 tokens)
┌─ Turn 2
The auth module has been refactored. Key changes:
- Extracted JWT validation into a separate function
- Added proper error types
- Improved test coverage
└─ Turn 2 done (2103 tokens)
■ Done — 3945 tokens total

API Reference

stream()

Prop

Type

AgentEvent types

Prop

Type

On this page