@kernl-sdk/openai 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,398 @@
1
+ import { randomID } from "@kernl-sdk/shared/lib";
2
+ /**
3
+ * Codec for turn detection config.
4
+ */
5
+ export const TURN_DETECTION = {
6
+ /**
7
+ * Convert kernl turn detection to OpenAI format.
8
+ */
9
+ encode(config) {
10
+ return {
11
+ type: config.mode === "manual" ? "none" : config.mode,
12
+ threshold: config.threshold,
13
+ silence_duration_ms: config.silenceDurationMs,
14
+ prefix_padding_ms: config.prefixPaddingMs,
15
+ create_response: config.createResponse,
16
+ interrupt_response: config.interruptResponse,
17
+ };
18
+ },
19
+ /**
20
+ * Convert OpenAI turn detection to kernl format.
21
+ */
22
+ decode(config) {
23
+ return {
24
+ mode: config.type === "none" ? "manual" : config.type,
25
+ threshold: config.threshold,
26
+ silenceDurationMs: config.silence_duration_ms,
27
+ prefixPaddingMs: config.prefix_padding_ms,
28
+ createResponse: config.create_response,
29
+ interruptResponse: config.interrupt_response,
30
+ };
31
+ },
32
+ };
33
+ /**
34
+ * Codec for session config.
35
+ */
36
+ export const SESSION_CONFIG = {
37
+ /**
38
+ * Convert kernl session config to OpenAI format.
39
+ */
40
+ encode(config) {
41
+ return {
42
+ instructions: config.instructions,
43
+ modalities: config.modalities,
44
+ voice: config.voice?.voiceId,
45
+ input_audio_format: config.audio?.inputFormat?.mimeType,
46
+ output_audio_format: config.audio?.outputFormat?.mimeType,
47
+ turn_detection: config.turnDetection
48
+ ? TURN_DETECTION.encode(config.turnDetection)
49
+ : undefined,
50
+ tools: config.tools
51
+ ?.filter((t) => t.kind === "function")
52
+ .map((t) => ({
53
+ type: "function",
54
+ name: t.name,
55
+ description: t.description,
56
+ parameters: t.parameters,
57
+ })),
58
+ };
59
+ },
60
+ /**
61
+ * Convert OpenAI session config to kernl format.
62
+ */
63
+ decode(config) {
64
+ return {
65
+ instructions: config.instructions,
66
+ modalities: config.modalities,
67
+ voice: config.voice ? { voiceId: config.voice } : undefined,
68
+ turnDetection: config.turn_detection
69
+ ? TURN_DETECTION.decode(config.turn_detection)
70
+ : undefined,
71
+ };
72
+ },
73
+ };
74
+ /**
75
+ * Codec for conversation items.
76
+ */
77
+ export const ITEM = {
78
+ /**
79
+ * Convert kernl item to OpenAI format.
80
+ */
81
+ encode(item) {
82
+ switch (item.kind) {
83
+ case "message": {
84
+ const content = item.content.map((c) => {
85
+ switch (c.kind) {
86
+ case "text":
87
+ return item.role === "assistant"
88
+ ? { type: "output_text", text: c.text }
89
+ : { type: "input_text", text: c.text };
90
+ case "file":
91
+ // audio files get sent as input_audio
92
+ if (c.mimeType.startsWith("audio/") &&
93
+ "data" in c &&
94
+ typeof c.data === "string") {
95
+ return { type: "input_audio", audio: c.data };
96
+ }
97
+ return { type: "input_text", text: "" };
98
+ default:
99
+ return { type: "input_text", text: "" };
100
+ }
101
+ });
102
+ return { type: "message", role: item.role, content };
103
+ }
104
+ case "tool-call":
105
+ return {
106
+ type: "function_call",
107
+ call_id: item.callId,
108
+ name: item.toolId,
109
+ arguments: item.arguments,
110
+ };
111
+ case "tool-result":
112
+ return {
113
+ type: "function_call_output",
114
+ call_id: item.callId,
115
+ output: item.error ?? JSON.stringify(item.result) ?? "",
116
+ };
117
+ default:
118
+ throw new Error(`Unsupported item kind: ${item.kind}`);
119
+ }
120
+ },
121
+ /**
122
+ * Convert OpenAI item to kernl format.
123
+ */
124
+ decode(item) {
125
+ switch (item.type) {
126
+ case "message":
127
+ return {
128
+ kind: "message",
129
+ id: randomID(),
130
+ role: item.role,
131
+ content: item.content.map((c) => ({
132
+ kind: "text",
133
+ text: "text" in c ? c.text : "",
134
+ })),
135
+ };
136
+ case "function_call":
137
+ return {
138
+ kind: "tool-call",
139
+ callId: item.call_id,
140
+ toolId: item.name,
141
+ state: "completed",
142
+ arguments: item.arguments,
143
+ };
144
+ case "function_call_output":
145
+ return {
146
+ kind: "tool-result",
147
+ callId: item.call_id,
148
+ toolId: "",
149
+ state: "completed",
150
+ result: item.output,
151
+ error: null,
152
+ };
153
+ default:
154
+ throw new Error(`Unsupported OpenAI item type: ${item.type}`);
155
+ }
156
+ },
157
+ };
158
+ /**
159
+ * Codec for client events (kernl → OpenAI).
160
+ */
161
+ export const CLIENT_EVENT = {
162
+ /**
163
+ * Convert kernl client event to OpenAI wire format.
164
+ */
165
+ encode(event) {
166
+ switch (event.kind) {
167
+ case "session.update":
168
+ return {
169
+ type: "session.update",
170
+ session: SESSION_CONFIG.encode(event.config),
171
+ };
172
+ case "audio.input.append":
173
+ return { type: "input_audio_buffer.append", audio: event.audio };
174
+ case "audio.input.commit":
175
+ return { type: "input_audio_buffer.commit" };
176
+ case "audio.input.clear":
177
+ return { type: "input_audio_buffer.clear" };
178
+ case "item.create":
179
+ return {
180
+ type: "conversation.item.create",
181
+ item: ITEM.encode(event.item),
182
+ previous_item_id: event.previousItemId,
183
+ };
184
+ case "item.delete":
185
+ return { type: "conversation.item.delete", item_id: event.itemId };
186
+ case "item.truncate":
187
+ return {
188
+ type: "conversation.item.truncate",
189
+ item_id: event.itemId,
190
+ content_index: 0,
191
+ audio_end_ms: event.audioEndMs,
192
+ };
193
+ case "response.create":
194
+ return {
195
+ type: "response.create",
196
+ response: event.config
197
+ ? {
198
+ instructions: event.config.instructions,
199
+ modalities: event.config.modalities,
200
+ }
201
+ : undefined,
202
+ };
203
+ case "response.cancel":
204
+ return { type: "response.cancel", response_id: event.responseId };
205
+ case "tool.result":
206
+ return {
207
+ type: "conversation.item.create",
208
+ item: {
209
+ type: "function_call_output",
210
+ call_id: event.callId,
211
+ output: event.error ?? event.result ?? "",
212
+ },
213
+ };
214
+ case "activity.start":
215
+ case "activity.end":
216
+ return null;
217
+ default:
218
+ return null;
219
+ }
220
+ },
221
+ /**
222
+ * Not implemented - use SERVER_EVENT.decode instead.
223
+ */
224
+ decode() {
225
+ throw new Error("CLIENT_EVENT.decode: use SERVER_EVENT instead");
226
+ },
227
+ };
228
+ /**
229
+ * Codec for server events (OpenAI → kernl).
230
+ */
231
+ export const SERVER_EVENT = {
232
+ /**
233
+ * Not implemented - use CLIENT_EVENT.encode instead.
234
+ */
235
+ encode() {
236
+ throw new Error("SERVER_EVENT.encode: use CLIENT_EVENT instead");
237
+ },
238
+ /**
239
+ * Convert OpenAI server event to kernl format.
240
+ */
241
+ decode(event) {
242
+ switch (event.type) {
243
+ case "session.created":
244
+ return {
245
+ kind: "session.created",
246
+ session: {
247
+ id: event.session.id,
248
+ config: SESSION_CONFIG.decode(event.session),
249
+ },
250
+ };
251
+ case "session.updated":
252
+ return {
253
+ kind: "session.updated",
254
+ session: {
255
+ id: event.session.id,
256
+ config: SESSION_CONFIG.decode(event.session),
257
+ },
258
+ };
259
+ case "error":
260
+ return {
261
+ kind: "session.error",
262
+ error: { code: event.error.code, message: event.error.message },
263
+ };
264
+ case "input_audio_buffer.committed":
265
+ return { kind: "audio.input.committed", itemId: event.item_id };
266
+ case "input_audio_buffer.cleared":
267
+ return { kind: "audio.input.cleared" };
268
+ case "input_audio_buffer.speech_started":
269
+ return {
270
+ kind: "speech.started",
271
+ audioStartMs: event.audio_start_ms,
272
+ itemId: event.item_id,
273
+ };
274
+ case "input_audio_buffer.speech_stopped":
275
+ return {
276
+ kind: "speech.stopped",
277
+ audioEndMs: event.audio_end_ms,
278
+ itemId: event.item_id,
279
+ };
280
+ case "conversation.item.created":
281
+ return {
282
+ kind: "item.created",
283
+ item: ITEM.decode(event.item),
284
+ previousItemId: event.previous_item_id,
285
+ };
286
+ case "conversation.item.done":
287
+ return null;
288
+ case "conversation.item.deleted":
289
+ return { kind: "item.deleted", itemId: event.item_id };
290
+ case "conversation.item.truncated":
291
+ return {
292
+ kind: "item.truncated",
293
+ itemId: event.item_id,
294
+ audioEndMs: event.audio_end_ms,
295
+ };
296
+ case "response.created":
297
+ return { kind: "response.created", responseId: event.response.id };
298
+ case "response.done": {
299
+ const status = event.response.status === "incomplete" ||
300
+ event.response.status === "in_progress"
301
+ ? "failed"
302
+ : event.response.status;
303
+ return {
304
+ kind: "response.done",
305
+ responseId: event.response.id,
306
+ status,
307
+ usage: event.response.usage
308
+ ? {
309
+ inputTokens: event.response.usage.input_tokens,
310
+ outputTokens: event.response.usage.output_tokens,
311
+ totalTokens: event.response.usage.total_tokens,
312
+ }
313
+ : undefined,
314
+ };
315
+ }
316
+ case "response.output_audio.delta":
317
+ return {
318
+ kind: "audio.output.delta",
319
+ responseId: event.response_id,
320
+ itemId: event.item_id,
321
+ audio: event.delta,
322
+ };
323
+ case "response.output_audio.done":
324
+ return {
325
+ kind: "audio.output.done",
326
+ responseId: event.response_id,
327
+ itemId: event.item_id,
328
+ };
329
+ case "response.text.delta":
330
+ return {
331
+ kind: "text.output.delta",
332
+ responseId: event.response_id,
333
+ itemId: event.item_id,
334
+ delta: event.delta,
335
+ };
336
+ case "response.text.done":
337
+ return {
338
+ kind: "text.output",
339
+ responseId: event.response_id,
340
+ itemId: event.item_id,
341
+ text: event.text,
342
+ };
343
+ case "conversation.item.input_audio_transcription.delta":
344
+ return {
345
+ kind: "transcript.input.delta",
346
+ itemId: event.item_id,
347
+ delta: event.delta,
348
+ };
349
+ case "conversation.item.input_audio_transcription.completed":
350
+ return {
351
+ kind: "transcript.input",
352
+ itemId: event.item_id,
353
+ text: event.transcript,
354
+ };
355
+ case "response.output_audio_transcript.delta":
356
+ return {
357
+ kind: "transcript.output.delta",
358
+ responseId: event.response_id,
359
+ itemId: event.item_id,
360
+ delta: event.delta,
361
+ };
362
+ case "response.output_audio_transcript.done":
363
+ return {
364
+ kind: "transcript.output",
365
+ responseId: event.response_id,
366
+ itemId: event.item_id,
367
+ text: event.transcript,
368
+ };
369
+ case "response.output_item.added":
370
+ if (event.item.type === "function_call") {
371
+ return {
372
+ kind: "tool.start",
373
+ responseId: event.response_id,
374
+ callId: event.item.call_id,
375
+ toolId: event.item.name,
376
+ };
377
+ }
378
+ return null;
379
+ case "response.output_item.done":
380
+ return null;
381
+ case "response.function_call_arguments.delta":
382
+ return {
383
+ kind: "tool.delta",
384
+ callId: event.call_id,
385
+ delta: event.delta,
386
+ };
387
+ case "response.function_call_arguments.done":
388
+ return {
389
+ kind: "tool.call",
390
+ callId: event.call_id,
391
+ toolId: event.name,
392
+ arguments: event.arguments,
393
+ };
394
+ default:
395
+ return null;
396
+ }
397
+ },
398
+ };
@@ -0,0 +1,259 @@
1
+ import type { JSONSchema7 } from "json-schema";
2
+ /**
3
+ * OpenAI Realtime API wire types (GA).
4
+ */
5
+ export type OpenAIClientEvent = OpenAISessionUpdate | OpenAIInputAudioBufferAppend | OpenAIInputAudioBufferCommit | OpenAIInputAudioBufferClear | OpenAIConversationItemCreate | OpenAIConversationItemDelete | OpenAIConversationItemTruncate | OpenAIResponseCreate | OpenAIResponseCancel;
6
+ export interface OpenAISessionUpdate {
7
+ type: "session.update";
8
+ session: OpenAISessionConfig;
9
+ }
10
+ export interface OpenAIInputAudioBufferAppend {
11
+ type: "input_audio_buffer.append";
12
+ audio: string;
13
+ }
14
+ export interface OpenAIInputAudioBufferCommit {
15
+ type: "input_audio_buffer.commit";
16
+ }
17
+ export interface OpenAIInputAudioBufferClear {
18
+ type: "input_audio_buffer.clear";
19
+ }
20
+ export interface OpenAIConversationItemCreate {
21
+ type: "conversation.item.create";
22
+ item: OpenAIItem;
23
+ previous_item_id?: string;
24
+ }
25
+ export interface OpenAIConversationItemDelete {
26
+ type: "conversation.item.delete";
27
+ item_id: string;
28
+ }
29
+ export interface OpenAIConversationItemTruncate {
30
+ type: "conversation.item.truncate";
31
+ item_id: string;
32
+ content_index: number;
33
+ audio_end_ms: number;
34
+ }
35
+ export interface OpenAIResponseCreate {
36
+ type: "response.create";
37
+ response?: {
38
+ instructions?: string;
39
+ modalities?: ("text" | "audio")[];
40
+ };
41
+ }
42
+ export interface OpenAIResponseCancel {
43
+ type: "response.cancel";
44
+ response_id?: string;
45
+ }
46
+ export type OpenAIServerEvent = OpenAISessionCreated | OpenAISessionUpdated | OpenAIError | OpenAIInputAudioBufferCommitted | OpenAIInputAudioBufferCleared | OpenAIInputAudioBufferSpeechStarted | OpenAIInputAudioBufferSpeechStopped | OpenAIConversationItemCreated | OpenAIConversationItemDone | OpenAIConversationItemDeleted | OpenAIConversationItemTruncated | OpenAIResponseCreated | OpenAIResponseDone | OpenAIResponseOutputAudioDelta | OpenAIResponseOutputAudioDone | OpenAIResponseTextDelta | OpenAIResponseTextDone | OpenAIInputAudioTranscriptionDelta | OpenAIInputAudioTranscriptionCompleted | OpenAIResponseOutputAudioTranscriptDelta | OpenAIResponseOutputAudioTranscriptDone | OpenAIResponseOutputItemAdded | OpenAIResponseOutputItemDone | OpenAIResponseFunctionCallArgumentsDelta | OpenAIResponseFunctionCallArgumentsDone;
47
+ export interface OpenAISessionCreated {
48
+ type: "session.created";
49
+ session: OpenAISession;
50
+ }
51
+ export interface OpenAISessionUpdated {
52
+ type: "session.updated";
53
+ session: OpenAISession;
54
+ }
55
+ export interface OpenAIError {
56
+ type: "error";
57
+ error: {
58
+ code: string;
59
+ message: string;
60
+ };
61
+ }
62
+ export interface OpenAIInputAudioBufferCommitted {
63
+ type: "input_audio_buffer.committed";
64
+ item_id: string;
65
+ }
66
+ export interface OpenAIInputAudioBufferCleared {
67
+ type: "input_audio_buffer.cleared";
68
+ }
69
+ export interface OpenAIInputAudioBufferSpeechStarted {
70
+ type: "input_audio_buffer.speech_started";
71
+ audio_start_ms: number;
72
+ item_id: string;
73
+ }
74
+ export interface OpenAIInputAudioBufferSpeechStopped {
75
+ type: "input_audio_buffer.speech_stopped";
76
+ audio_end_ms: number;
77
+ item_id: string;
78
+ }
79
+ export interface OpenAIConversationItemCreated {
80
+ type: "conversation.item.created";
81
+ item: OpenAIItem;
82
+ previous_item_id?: string;
83
+ }
84
+ export interface OpenAIConversationItemDone {
85
+ type: "conversation.item.done";
86
+ item: OpenAIItem;
87
+ }
88
+ export interface OpenAIConversationItemDeleted {
89
+ type: "conversation.item.deleted";
90
+ item_id: string;
91
+ }
92
+ export interface OpenAIConversationItemTruncated {
93
+ type: "conversation.item.truncated";
94
+ item_id: string;
95
+ audio_end_ms: number;
96
+ content_index: number;
97
+ }
98
+ export interface OpenAIResponseCreated {
99
+ type: "response.created";
100
+ response: {
101
+ id: string;
102
+ };
103
+ }
104
+ export interface OpenAIResponseDone {
105
+ type: "response.done";
106
+ response: {
107
+ id: string;
108
+ status: "completed" | "cancelled" | "failed" | "incomplete" | "in_progress";
109
+ usage?: {
110
+ input_tokens: number;
111
+ output_tokens: number;
112
+ total_tokens?: number;
113
+ };
114
+ };
115
+ }
116
+ export interface OpenAIResponseOutputAudioDelta {
117
+ type: "response.output_audio.delta";
118
+ response_id: string;
119
+ item_id: string;
120
+ content_index: number;
121
+ delta: string;
122
+ }
123
+ export interface OpenAIResponseOutputAudioDone {
124
+ type: "response.output_audio.done";
125
+ response_id: string;
126
+ item_id: string;
127
+ content_index: number;
128
+ }
129
+ export interface OpenAIResponseTextDelta {
130
+ type: "response.text.delta";
131
+ response_id: string;
132
+ item_id: string;
133
+ content_index: number;
134
+ delta: string;
135
+ }
136
+ export interface OpenAIResponseTextDone {
137
+ type: "response.text.done";
138
+ response_id: string;
139
+ item_id: string;
140
+ content_index: number;
141
+ text: string;
142
+ }
143
+ export interface OpenAIInputAudioTranscriptionDelta {
144
+ type: "conversation.item.input_audio_transcription.delta";
145
+ item_id: string;
146
+ content_index?: number;
147
+ delta: string;
148
+ }
149
+ export interface OpenAIInputAudioTranscriptionCompleted {
150
+ type: "conversation.item.input_audio_transcription.completed";
151
+ item_id: string;
152
+ content_index: number;
153
+ transcript: string;
154
+ }
155
+ export interface OpenAIResponseOutputAudioTranscriptDelta {
156
+ type: "response.output_audio_transcript.delta";
157
+ response_id: string;
158
+ item_id: string;
159
+ content_index: number;
160
+ delta: string;
161
+ }
162
+ export interface OpenAIResponseOutputAudioTranscriptDone {
163
+ type: "response.output_audio_transcript.done";
164
+ response_id: string;
165
+ item_id: string;
166
+ content_index: number;
167
+ transcript: string;
168
+ }
169
+ export interface OpenAIResponseOutputItemAdded {
170
+ type: "response.output_item.added";
171
+ response_id: string;
172
+ output_index: number;
173
+ item: OpenAIFunctionCallItem | OpenAIItem;
174
+ }
175
+ export interface OpenAIResponseOutputItemDone {
176
+ type: "response.output_item.done";
177
+ response_id: string;
178
+ output_index: number;
179
+ item: OpenAIFunctionCallItem | OpenAIItem;
180
+ }
181
+ export interface OpenAIResponseFunctionCallArgumentsDelta {
182
+ type: "response.function_call_arguments.delta";
183
+ response_id: string;
184
+ item_id: string;
185
+ call_id: string;
186
+ delta: string;
187
+ }
188
+ export interface OpenAIResponseFunctionCallArgumentsDone {
189
+ type: "response.function_call_arguments.done";
190
+ response_id: string;
191
+ item_id: string;
192
+ call_id: string;
193
+ name: string;
194
+ arguments: string;
195
+ }
196
+ export interface OpenAISession {
197
+ id: string;
198
+ instructions?: string;
199
+ voice?: string;
200
+ modalities?: ("text" | "audio")[];
201
+ turn_detection?: OpenAITurnDetection;
202
+ input_audio_format?: string;
203
+ output_audio_format?: string;
204
+ }
205
+ export interface OpenAISessionConfig {
206
+ instructions?: string;
207
+ voice?: string;
208
+ modalities?: ("text" | "audio")[];
209
+ tools?: OpenAITool[];
210
+ turn_detection?: OpenAITurnDetection;
211
+ input_audio_format?: string;
212
+ output_audio_format?: string;
213
+ }
214
+ export interface OpenAITurnDetection {
215
+ type: "server_vad" | "none";
216
+ threshold?: number;
217
+ silence_duration_ms?: number;
218
+ prefix_padding_ms?: number;
219
+ create_response?: boolean;
220
+ interrupt_response?: boolean;
221
+ }
222
+ export interface OpenAITool {
223
+ type: "function";
224
+ name: string;
225
+ description?: string;
226
+ parameters?: JSONSchema7;
227
+ }
228
+ export type OpenAIItem = OpenAIMessageItem | OpenAIFunctionCallItem | OpenAIFunctionCallOutputItem;
229
+ export interface OpenAIMessageItem {
230
+ type: "message";
231
+ role: "user" | "assistant" | "system";
232
+ content: OpenAIContentPart[];
233
+ }
234
+ export interface OpenAIFunctionCallItem {
235
+ type: "function_call";
236
+ call_id: string;
237
+ name: string;
238
+ arguments: string;
239
+ }
240
+ export interface OpenAIFunctionCallOutputItem {
241
+ type: "function_call_output";
242
+ call_id: string;
243
+ output: string;
244
+ }
245
+ export type OpenAIContentPart = {
246
+ type: "input_text";
247
+ text: string;
248
+ } | {
249
+ type: "input_audio";
250
+ audio: string;
251
+ } | {
252
+ type: "output_text";
253
+ text: string;
254
+ } | {
255
+ type: "output_audio";
256
+ audio: string;
257
+ transcript?: string;
258
+ };
259
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/convert/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};