Skip to content

@twilic/ai-openai

Normalize OpenAI Responses API events into Twilic AI canonical events and sessions.

Package: @twilic/ai-openai
Peer dependency: @twilic/core
Depends on: @twilic/ai
Source: github.com/twilic/ai

Install

bash
pnpm add @twilic/ai-openai @twilic/ai @twilic/core

Quick start

ts
import {
ensureTwilicInit,
inspectSession,
sessionFromEvents,
writeSession,
} from "@twilic/ai";
import { recordOpenAIResponses } from "@twilic/ai-openai";

await ensureTwilicInit();

const rawEvents = [
{ type: "response.created", response: { id: "resp_1", model: "gpt-4.1" } },
{ type: "response.output_text.delta", delta: "Hello" },
{ type: "response.completed", response: { id: "resp_1" } },
];

const events = await recordOpenAIResponses(rawEvents, {
sessionId: "openai-demo",
model: "gpt-4.1",
});

const session = sessionFromEvents(events, {
sessionId: "openai-demo",
provider: "openai",
model: "gpt-4.1",
});

await writeSession("openai-session.twai", session);
console.log(inspectSession(session));

Exports

normalizeOpenAIResponseEvent(raw, context)

Map a single OpenAI Responses event to a canonical AIEvent.

ts
function normalizeOpenAIResponseEvent(
raw: OpenAIRawEvent,
context: NormalizeContext,
): AIEvent;

normalizeOpenAIResponseStream(rawEvents, context)

Normalize an array of raw events with increasing sequence values.

recordOpenAIResponses(rawEvents, options)

Normalize a stream and return canonical events ready for sessionFromEvents.

ts
interface RecordOpenAIResponsesOptions {
sessionId: string;
provider?: string;
model?: string;
}

Type mapping

OpenAI Responses typeCanonical type
response.createdrequest.created
response.output_text.deltatext.delta
response.reasoning_summary_text.deltareasoning.delta
response.function_call_arguments.deltatool.input.delta
response.output_item.addedtool.started
response.function_call_arguments.donetool.output
response.file_search_call.completedretrieval.result
response.completed / response.doneresponse.completed
(other)custom

Provider-specific details are preserved under event.extensions.openai.

Released under the CC-BY-4.0 License.