Documentation/Streaming
v2.0.0-beta.1Snapshot bebdcd1Markdown ↗

Streaming

Streaming

Basic Streaming

typescript
import { Agent, isOutputTextDelta } from 'oneringai';

const agent = Agent.create({
  connector: 'openai',
  model: 'gpt-4.1',
});

// Stream response
for await (const event of agent.stream('Tell me a story')) {
  if (isOutputTextDelta(event)) {
    process.stdout.write(event.delta);
  }
}

Stream Helpers

typescript
import { StreamHelpers } from 'oneringai';

// Text only (filters to just text deltas)
for await (const text of StreamHelpers.textOnly(agent.stream('Hello'))) {
  process.stdout.write(text);
}

// All events
for await (const event of agent.stream('Hello')) {
  switch (event.type) {
    case 'response.created':
      console.log('🔄 Starting...');
      break;

    case 'response.output_text.delta':
      process.stdout.write(event.delta);
      break;

    case 'response.tool_call.start':
      console.log(`\n🔧 Calling ${event.tool_name}...`);
      break;

    case 'response.tool_execution.done':
      console.log(`✅ Tool complete`);
      break;

    case 'response.complete':
      console.log('\n✓ Done');
      break;

    case 'response.error':
      console.error('Error:', event.error);
      break;
  }
}

Streaming with Tools

typescript
const agent = Agent.create({
  connector: 'openai',
  model: 'gpt-4.1',
  tools: [weatherTool, calculatorTool],
});

for await (const event of agent.stream('What is the weather in Paris?')) {
  if (event.type === 'response.tool_call.start') {
    console.log(`🔧 Calling ${event.tool_name}...`);
  }

  if (event.type === 'response.tool_execution.done') {
    console.log(`✅ Tool result: ${JSON.stringify(event.result)}`);
  }

  if (event.type === 'response.output_text.delta') {
    process.stdout.write(event.delta);
  }
}

Documentation snapshot · 2026-11-02Suggest a correction ↗

Search documentation

Type to search the v2 documentation.