@zhivex-ai/openai 0.14.2 → 0.16.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.
- package/README.md +19 -0
- package/dist/decision.d.ts +8 -0
- package/dist/decision.d.ts.map +1 -0
- package/dist/decision.js +98 -0
- package/dist/decision.js.map +1 -0
- package/dist/index.d.ts +11 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/live-audio.d.ts +6 -0
- package/dist/live-audio.d.ts.map +1 -0
- package/dist/live-audio.js +23 -0
- package/dist/live-audio.js.map +1 -0
- package/dist/live-session.d.ts +85 -0
- package/dist/live-session.d.ts.map +1 -0
- package/dist/live-session.js +166 -0
- package/dist/live-session.js.map +1 -0
- package/dist/live-webrtc-browser.d.ts +31 -0
- package/dist/live-webrtc-browser.d.ts.map +1 -0
- package/dist/live-webrtc-browser.js +235 -0
- package/dist/live-webrtc-browser.js.map +1 -0
- package/dist/live-webrtc-protocol.d.ts +15 -0
- package/dist/live-webrtc-protocol.d.ts.map +1 -0
- package/dist/live-webrtc-protocol.js +21 -0
- package/dist/live-webrtc-protocol.js.map +1 -0
- package/dist/live-webrtc-server.d.ts +34 -0
- package/dist/live-webrtc-server.d.ts.map +1 -0
- package/dist/live-webrtc-server.js +79 -0
- package/dist/live-webrtc-server.js.map +1 -0
- package/dist/live.d.ts +4 -5
- package/dist/live.d.ts.map +1 -1
- package/dist/live.js +6 -150
- package/dist/live.js.map +1 -1
- package/package.json +10 -2
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { ConfigurationError, ProviderHTTPError, assertTrustedEndpoint, openWebSocketConnection, readJsonWithLimit, withTimeoutSignal } from "@zhivex-ai/core/provider";
|
|
2
|
+
import { liveAudioCallbacks } from "./live-audio.js";
|
|
3
|
+
import { createLiveSession, isOpenAILiveModel, resolveLiveWebRTCConfig } from "./live-session.js";
|
|
4
|
+
import { liveAnswer, liveSdp, liveSessionId } from "./live-webrtc-protocol.js";
|
|
5
|
+
const headers = (options) => {
|
|
6
|
+
if (typeof options.apiKey !== "string" || !options.apiKey.trim() || /[\r\n]/.test(options.apiKey))
|
|
7
|
+
throw new ConfigurationError("A server API key is required.");
|
|
8
|
+
if (options.safetyIdentifier !== undefined && (!/^[\x21-\x7e]{1,256}$/.test(options.safetyIdentifier)))
|
|
9
|
+
throw new ConfigurationError("Invalid safety identifier.");
|
|
10
|
+
return { authorization: `Bearer ${options.apiKey}`, ...(options.safetyIdentifier ? { "OpenAI-Safety-Identifier": options.safetyIdentifier } : {}) };
|
|
11
|
+
};
|
|
12
|
+
/** Experimental trusted-server SDP exchange. One request, no retries. */
|
|
13
|
+
export async function experimentalCreateOpenAILiveWebRTCSession(options) {
|
|
14
|
+
const modelId = options.modelId ?? "gpt-live-1";
|
|
15
|
+
if (!isOpenAILiveModel(modelId))
|
|
16
|
+
throw new ConfigurationError("A supported GPT-Live-1 model is required.");
|
|
17
|
+
const config = resolveLiveWebRTCConfig(options.session);
|
|
18
|
+
const requestHeaders = headers(options);
|
|
19
|
+
const body = JSON.stringify({ session: {
|
|
20
|
+
model: modelId, delegation: { type: "client" }, store: config.providerOptions?.store ?? false,
|
|
21
|
+
...(config.instructions !== undefined ? { instructions: config.instructions } : {}),
|
|
22
|
+
audio: { output: { voice: config.voice ?? "marin" } },
|
|
23
|
+
...(config.providerOptions?.input !== undefined ? { input: config.providerOptions.input } : {}),
|
|
24
|
+
// The browser may close/mute, but cannot append instructions or backend results.
|
|
25
|
+
client: { data_channel: {
|
|
26
|
+
allowed_client_events: ["session.close", "session.input_audio.mute", "session.input_audio.unmute"],
|
|
27
|
+
allowed_server_events: ["session.started", "session.closed", "session.input_transcript.delta", "session.output_transcript.delta", "session.usage.updated", "error"].map(type => ({ type }))
|
|
28
|
+
} }
|
|
29
|
+
}, transport: { type: "webrtc", sdp: liveSdp(options.offerSdp) } });
|
|
30
|
+
if (new TextEncoder().encode(body).length > 256 * 1024)
|
|
31
|
+
throw new ConfigurationError("GPT-Live session request exceeds 256 KiB.");
|
|
32
|
+
const deadline = withTimeoutSignal({ timeoutMs: options.timeoutMs ?? 15_000, abortSignal: options.signal });
|
|
33
|
+
try {
|
|
34
|
+
deadline.signal.throwIfAborted();
|
|
35
|
+
const response = await (options.fetch ?? fetch)("https://api.openai.com/v1/live/sessions", {
|
|
36
|
+
method: "POST", headers: { ...requestHeaders, "content-type": "application/json" }, body, signal: deadline.signal, redirect: "error"
|
|
37
|
+
});
|
|
38
|
+
if (!response.ok) {
|
|
39
|
+
await response.body?.cancel();
|
|
40
|
+
throw new ProviderHTTPError(`OpenAI Live session creation failed (${response.status}).`, response.status);
|
|
41
|
+
}
|
|
42
|
+
const raw = await readJsonWithLimit(response, { maxBytes: 128 * 1024, provider: "openai", endpoint: "live/sessions", abort: deadline.abort });
|
|
43
|
+
// Record a valid ID even if the remaining response is malformed or the caller aborted.
|
|
44
|
+
const sessionId = liveSessionId(raw?.session?.id);
|
|
45
|
+
await options.onSessionCreated?.({ sessionId });
|
|
46
|
+
deadline.signal.throwIfAborted();
|
|
47
|
+
return liveAnswer(raw);
|
|
48
|
+
}
|
|
49
|
+
finally {
|
|
50
|
+
deadline.cleanup();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/** Experimental sideband for runRealtimeDelegations. Does not start another paid session. */
|
|
54
|
+
export async function experimentalAttachOpenAILiveSession(options) {
|
|
55
|
+
const modelId = options.modelId ?? "gpt-live-1";
|
|
56
|
+
if (!isOpenAILiveModel(modelId))
|
|
57
|
+
throw new ConfigurationError("A supported GPT-Live-1 model is required.");
|
|
58
|
+
const config = resolveLiveWebRTCConfig(options.session);
|
|
59
|
+
const url = assertTrustedEndpoint(`wss://api.openai.com/v1/live/sessions/${encodeURIComponent(liveSessionId(options.sessionId))}/attach`, {
|
|
60
|
+
label: "OpenAI Live sideband", protocols: ["wss"], allowedHosts: ["api.openai.com"]
|
|
61
|
+
});
|
|
62
|
+
const connection = await (options.connectionFactory ?? openWebSocketConnection)(url.toString(), headers(options), { signal: options.signal, timeoutMs: options.timeoutMs ?? 15_000, maxIncomingFrameBytes: options.maxIncomingFrameBytes, subprotocols: options.subprotocols });
|
|
63
|
+
// Attachment observes an already-running session: no session.start or started wait.
|
|
64
|
+
const reflected = { ...config, outputAudioMediaType: "audio/pcm", outputSampleRateHz: 24000 };
|
|
65
|
+
const session = createLiveSession(modelId, reflected, connection, { expectedSessionId: options.sessionId, started: true, attached: true, parseOutputAudio: liveAudioCallbacks(reflected).parseOutputAudio });
|
|
66
|
+
try {
|
|
67
|
+
await session.initialize();
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
await connection.close();
|
|
71
|
+
throw error;
|
|
72
|
+
}
|
|
73
|
+
return Object.assign(session, {
|
|
74
|
+
sessionId: options.sessionId,
|
|
75
|
+
/** Detach only; the primary session continues billing. close() ends the shared session. */
|
|
76
|
+
disconnect: () => connection.close()
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=live-webrtc-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-webrtc-server.js","sourceRoot":"","sources":["../src/live-webrtc-server.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,iBAAiB,EAE5H,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAClG,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAA+B,MAAM,2BAA2B,CAAC;AAgB5G,MAAM,OAAO,GAAG,CAAC,OAAgC,EAAE,EAAE;IACnD,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,kBAAkB,CAAC,+BAA+B,CAAC,CAAC;IACjK,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,IAAI,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAAE,MAAM,IAAI,kBAAkB,CAAC,4BAA4B,CAAC,CAAC;IACnK,OAAO,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,0BAA0B,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACtJ,CAAC,CAAC;AACF,yEAAyE;AACzE,MAAM,CAAC,KAAK,UAAU,yCAAyC,CAAC,OAAsC;IACpG,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,YAAY,CAAC;IAChD,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,kBAAkB,CAAC,2CAA2C,CAAC,CAAC;IAC3G,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE;YACrC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,eAAe,EAAE,KAAK,IAAI,KAAK;YAC7F,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnF,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,OAAO,EAAE,EAAE;YACrD,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/F,iFAAiF;YACjF,MAAM,EAAE,EAAE,YAAY,EAAE;oBACtB,qBAAqB,EAAE,CAAC,eAAe,EAAE,0BAA0B,EAAE,4BAA4B,CAAC;oBAClG,qBAAqB,EAAE,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,gCAAgC,EAAE,iCAAiC,EAAE,uBAAuB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC5L,EAAE;SACJ,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;IACpE,IAAI,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI;QAAE,MAAM,IAAI,kBAAkB,CAAC,2CAA2C,CAAC,CAAC;IAClI,MAAM,QAAQ,GAAG,iBAAiB,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5G,IAAI,CAAC;QACH,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,yCAAyC,EAAE;YACzF,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO;SACrI,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YAC9B,MAAM,IAAI,iBAAiB,CAAC,wCAAwC,QAAQ,CAAC,MAAM,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5G,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAM,QAAQ,EAAE,EAAE,QAAQ,EAAE,GAAG,GAAG,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACnJ,uFAAuF;QACvF,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAClD,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QAChD,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QACjC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;YAAS,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AACnC,CAAC;AAQD,6FAA6F;AAC7F,MAAM,CAAC,KAAK,UAAU,mCAAmC,CAAC,OAAgC;IACxF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,YAAY,CAAC;IAChD,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,kBAAkB,CAAC,2CAA2C,CAAC,CAAC;IAC3G,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,qBAAqB,CAAC,yCAAyC,kBAAkB,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE;QACxI,KAAK,EAAE,sBAAsB,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC,gBAAgB,CAAC;KACpF,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,IAAI,uBAAuB,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,MAAM,EAAE,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAChR,oFAAoF;IACpF,MAAM,SAAS,GAAG,EAAE,GAAG,MAAM,EAAE,oBAAoB,EAAE,WAAW,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC;IAC9F,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,iBAAiB,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC7M,IAAI,CAAC;QAAC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;IAAC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAAC,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;QAAC,MAAM,KAAK,CAAC;IAAC,CAAC;IAC5F,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,2FAA2F;QAC3F,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE;KACrC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/live.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export
|
|
3
|
-
export declare const liveCapabilities: ModelCapabilities;
|
|
1
|
+
import { type RealtimeModel, type RealtimeConnectOptions, type RealtimeConnectionFactory, type RealtimeSessionConfig } from "@zhivex-ai/core/provider";
|
|
2
|
+
export { isOpenAILiveModel } from "./live-session.js";
|
|
4
3
|
/** Server WebSocket adapter. The application owns the delegated agent and its tools. */
|
|
5
4
|
export declare class OpenAILiveModel implements RealtimeModel {
|
|
6
5
|
readonly modelId: string;
|
|
@@ -10,9 +9,9 @@ export declare class OpenAILiveModel implements RealtimeModel {
|
|
|
10
9
|
private readonly realtimeURL?;
|
|
11
10
|
private readonly allowUnsafeEndpoints;
|
|
12
11
|
readonly provider = "openai";
|
|
13
|
-
readonly capabilities: ModelCapabilities;
|
|
12
|
+
readonly capabilities: import("@zhivex-ai/core/provider").ModelCapabilities;
|
|
14
13
|
constructor(modelId: string, baseURL: string, headers: (options: Record<string, unknown> | undefined) => Record<string, string>, connectionFactory: RealtimeConnectionFactory, realtimeURL?: string | undefined, allowUnsafeEndpoints?: boolean);
|
|
15
|
-
connect(config?: RealtimeSessionConfig, options?: RealtimeConnectOptions): Promise<CallbackRealtimeSession>;
|
|
14
|
+
connect(config?: RealtimeSessionConfig, options?: RealtimeConnectOptions): Promise<import("@zhivex-ai/core/provider").CallbackRealtimeSession>;
|
|
16
15
|
createBrowserToken(): Promise<never>;
|
|
17
16
|
}
|
|
18
17
|
//# sourceMappingURL=live.d.ts.map
|
package/dist/live.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsE,KAAK,aAAa,EAAE,KAAK,sBAAsB,EAAE,KAAK,yBAAyB,EAAE,KAAK,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAG3N,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,wFAAwF;AACxF,qBAAa,eAAgB,YAAW,aAAa;IAIjD,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IARvC,QAAQ,CAAC,QAAQ,YAAY;IAC7B,QAAQ,CAAC,YAAY,uDAAoB;IACzC,YACW,OAAO,EAAE,MAAM,EACP,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACjF,iBAAiB,EAAE,yBAAyB,EAC5C,WAAW,CAAC,EAAE,MAAM,YAAA,EACpB,oBAAoB,UAAQ,EAC3C;IAEE,OAAO,CAAC,MAAM,GAAE,qBAA0B,EAAE,OAAO,CAAC,EAAE,sBAAsB,uEAgBjF;IAEK,kBAAkB,IAAI,OAAO,CAAC,KAAK,CAAC,CAEzC;CACF"}
|
package/dist/live.js
CHANGED
|
@@ -1,67 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
toolChoice: false, parallelToolCalls: false, vision: false, files: false,
|
|
6
|
-
audioInput: true, audioOutput: true, embeddings: false, reasoning: false, webSearch: false,
|
|
7
|
-
realtime: {
|
|
8
|
-
sessions: true, audioInput: true, audioOutput: true, imageInput: false,
|
|
9
|
-
tools: false, browserTokens: false, fullDuplex: true, clientDelegation: true
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
const allowedConfig = new Set([
|
|
13
|
-
"mode", "instructions", "voice", "delegation", "inputAudioMediaType", "outputAudioMediaType",
|
|
14
|
-
"inputSampleRateHz", "outputSampleRateHz", "channels", "autoResponse", "providerOptions"
|
|
15
|
-
]);
|
|
16
|
-
const allowedOptions = new Set(["headers", "safety_identifier", "input", "store", "closeTimeoutMs"]);
|
|
17
|
-
function resolveConfig(config) {
|
|
18
|
-
for (const [key, value] of Object.entries(config)) {
|
|
19
|
-
if (value !== undefined && !allowedConfig.has(key))
|
|
20
|
-
throw new UnsupportedFeatureError(`GPT-Live client delegation does not support session option "${key}". Configure tools and reasoning in your backend agent.`);
|
|
21
|
-
}
|
|
22
|
-
if (config.mode !== undefined && config.mode !== "conversation")
|
|
23
|
-
throw new UnsupportedFeatureError("GPT-Live supports conversation mode only.");
|
|
24
|
-
if (config.autoResponse === true)
|
|
25
|
-
throw new UnsupportedFeatureError("GPT-Live does not support manual response triggers; stream audio continuously.");
|
|
26
|
-
if (config.delegation && (config.delegation.type !== "client" || Object.keys(config.delegation).some((key) => key !== "type"))) {
|
|
27
|
-
throw new UnsupportedFeatureError("This GPT-Live adapter supports client delegation only.");
|
|
28
|
-
}
|
|
29
|
-
const provider = config.providerOptions ?? {};
|
|
30
|
-
for (const [key, value] of Object.entries(provider)) {
|
|
31
|
-
if (value !== undefined && !allowedOptions.has(key))
|
|
32
|
-
throw new UnsupportedFeatureError(`Unsupported GPT-Live provider option "${key}".`);
|
|
33
|
-
}
|
|
34
|
-
if (provider.store !== undefined && typeof provider.store !== "boolean")
|
|
35
|
-
throw new ConfigurationError("GPT-Live store must be boolean.");
|
|
36
|
-
if (provider.closeTimeoutMs !== undefined && (!Number.isSafeInteger(provider.closeTimeoutMs) || Number(provider.closeTimeoutMs) <= 0))
|
|
37
|
-
throw new ConfigurationError("GPT-Live closeTimeoutMs must be a positive safe integer.");
|
|
38
|
-
if (provider.input !== undefined) {
|
|
39
|
-
if (!Array.isArray(provider.input) || provider.input.length > 128)
|
|
40
|
-
throw new ConfigurationError("GPT-Live input must contain at most 128 text messages.");
|
|
41
|
-
for (const item of provider.input) {
|
|
42
|
-
const part = item?.content?.[0];
|
|
43
|
-
if (item?.type !== "message" || !["developer", "user", "assistant"].includes(item.role) ||
|
|
44
|
-
!Array.isArray(item.content) || item.content.length !== 1 || typeof part?.text !== "string" ||
|
|
45
|
-
!(item.role === "assistant" ? ["text", "output_text"] : ["input_text"]).includes(part.type)) {
|
|
46
|
-
throw new ConfigurationError("GPT-Live history requires developer/user input_text or assistant output_text messages.");
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
const mediaType = config.inputAudioMediaType ?? config.outputAudioMediaType ?? "audio/pcm";
|
|
51
|
-
const rate = config.inputSampleRateHz ?? config.outputSampleRateHz ?? (mediaType === "audio/pcm" ? 24000 : 8000);
|
|
52
|
-
if ((mediaType !== "audio/pcm" || ![16000, 24000].includes(rate)) &&
|
|
53
|
-
(!["audio/pcmu", "audio/pcma"].includes(mediaType) || rate !== 8000))
|
|
54
|
-
throw new ConfigurationError("GPT-Live requires mono PCM16 at 16/24 kHz or G.711 at 8 kHz.");
|
|
55
|
-
if ((config.channels !== undefined && config.channels !== 1) ||
|
|
56
|
-
(config.outputAudioMediaType !== undefined && config.outputAudioMediaType !== mediaType) ||
|
|
57
|
-
(config.outputSampleRateHz !== undefined && config.outputSampleRateHz !== rate))
|
|
58
|
-
throw new ConfigurationError("GPT-Live requires the same mono audio format for input and output.");
|
|
59
|
-
return {
|
|
60
|
-
...config, delegation: { type: "client" }, autoResponse: false,
|
|
61
|
-
inputAudioMediaType: mediaType, outputAudioMediaType: mediaType,
|
|
62
|
-
inputSampleRateHz: rate, outputSampleRateHz: rate, channels: 1
|
|
63
|
-
};
|
|
64
|
-
}
|
|
1
|
+
import { ConfigurationError, UnsupportedFeatureError, assertTrustedEndpoint } from "@zhivex-ai/core/provider";
|
|
2
|
+
import { liveCapabilities, resolveLiveConfig, createLiveSession } from "./live-session.js";
|
|
3
|
+
import { liveAudioCallbacks } from "./live-audio.js";
|
|
4
|
+
export { isOpenAILiveModel } from "./live-session.js";
|
|
65
5
|
/** Server WebSocket adapter. The application owns the delegated agent and its tools. */
|
|
66
6
|
export class OpenAILiveModel {
|
|
67
7
|
modelId;
|
|
@@ -81,7 +21,7 @@ export class OpenAILiveModel {
|
|
|
81
21
|
this.allowUnsafeEndpoints = allowUnsafeEndpoints;
|
|
82
22
|
}
|
|
83
23
|
async connect(config = {}, options) {
|
|
84
|
-
const resolved =
|
|
24
|
+
const resolved = resolveLiveConfig(config);
|
|
85
25
|
const url = new URL(this.baseURL);
|
|
86
26
|
url.protocol = url.protocol === "https:" ? "wss:" : "ws:";
|
|
87
27
|
url.pathname = `${url.pathname.replace(/\/+$/, "")}/live/sessions`;
|
|
@@ -95,91 +35,7 @@ export class OpenAILiveModel {
|
|
|
95
35
|
if (options?.timeoutMs !== undefined && (!Number.isSafeInteger(options.timeoutMs) || options.timeoutMs <= 0))
|
|
96
36
|
throw new ConfigurationError("GPT-Live timeoutMs must be a positive safe integer.");
|
|
97
37
|
const connection = await this.connectionFactory(endpoint.toString(), this.headers(config.providerOptions), options);
|
|
98
|
-
const
|
|
99
|
-
const metadata = (payload) => payload;
|
|
100
|
-
const unsupported = (feature) => { throw new UnsupportedFeatureError(`GPT-Live ${feature}; use the backend agent or appendContext() as appropriate.`); };
|
|
101
|
-
const append = (update) => {
|
|
102
|
-
if (!["instructions", "context", "commentary"].includes(update.kind) || typeof update.content !== "string" || !update.content.trim())
|
|
103
|
-
throw new ValidationError("Live context updates require a kind and non-empty string content.");
|
|
104
|
-
if (update.delegationId !== undefined && !delegations.has(update.delegationId))
|
|
105
|
-
throw new ValidationError("Unknown GPT-Live client delegation ID.");
|
|
106
|
-
// Tokenization is provider-owned (500 tokens per append); never silently truncate a result.
|
|
107
|
-
return [{ type: `session.${update.kind === "context" ? "thinking" : update.kind}.append`,
|
|
108
|
-
content: update.content, delegation_id: update.delegationId ?? null,
|
|
109
|
-
...(update.eventId !== undefined ? { event_id: update.eventId } : {}) }];
|
|
110
|
-
};
|
|
111
|
-
const parseEvent = (payload) => {
|
|
112
|
-
const type = payload.type;
|
|
113
|
-
if (type === "session.started" || type === "session.updated")
|
|
114
|
-
return [{ type: "realtime-provider-data", provider: "openai", data: metadata(payload) }];
|
|
115
|
-
if (type === "session.output_audio.delta") {
|
|
116
|
-
if (typeof payload.delta !== "string")
|
|
117
|
-
throw new ValidationError("Invalid GPT-Live audio delta.");
|
|
118
|
-
const audio = decodeBase64WithLimit(payload.delta, { maxBytes: 16 * 1024 * 1024, provider: "openai", endpoint: "live/sessions" });
|
|
119
|
-
if (resolved.outputAudioMediaType === "audio/pcm" && audio.byteLength % 2)
|
|
120
|
-
throw new ValidationError("GPT-Live PCM output must contain complete 16-bit samples.");
|
|
121
|
-
return [{ type: "realtime-audio-output", audio, mediaType: resolved.outputAudioMediaType,
|
|
122
|
-
sampleRateHz: resolved.outputSampleRateHz, channels: 1 }];
|
|
123
|
-
}
|
|
124
|
-
if (type === "session.input_transcript.delta" || type === "session.output_transcript.delta") {
|
|
125
|
-
if (typeof payload.delta !== "string")
|
|
126
|
-
throw new ValidationError("Invalid GPT-Live transcript delta.");
|
|
127
|
-
return [{ type: "realtime-transcript", role: type === "session.input_transcript.delta" ? "user" : "assistant",
|
|
128
|
-
text: payload.delta, isFinal: false,
|
|
129
|
-
...(typeof payload.start_ms === "number" ? { startMs: payload.start_ms } : {}),
|
|
130
|
-
...(typeof payload.end_ms === "number" ? { endMs: payload.end_ms } : {}), providerMetadata: metadata(payload) }];
|
|
131
|
-
}
|
|
132
|
-
if (type === "session.delegation.created") {
|
|
133
|
-
const delegation = payload.delegation;
|
|
134
|
-
if (!delegation || typeof delegation.id !== "string" || !delegation.id || delegation.target !== "client")
|
|
135
|
-
throw new ValidationError("Invalid GPT-Live client delegation event.");
|
|
136
|
-
if (!delegations.has(delegation.id) && delegations.size >= 4096)
|
|
137
|
-
throw new ValidationError("GPT-Live session delegation limit exceeded.");
|
|
138
|
-
delegations.add(delegation.id);
|
|
139
|
-
return [{ type: "realtime-delegation", delegationId: delegation.id,
|
|
140
|
-
...(typeof payload.offset_ms === "number" ? { offsetMs: payload.offset_ms } : {}), providerMetadata: metadata(payload) }];
|
|
141
|
-
}
|
|
142
|
-
if (type === "session.closed")
|
|
143
|
-
return [{ type: "realtime-end", reason: "provider-close", providerMetadata: metadata(payload) }];
|
|
144
|
-
if (type === "error") {
|
|
145
|
-
const error = payload.error;
|
|
146
|
-
return [{ type: "realtime-error", message: typeof error?.message === "string" ? error.message : "GPT-Live session error", providerMetadata: metadata(payload) }];
|
|
147
|
-
}
|
|
148
|
-
// Usage snapshots, acknowledgements and future control events remain inspectable.
|
|
149
|
-
return [{ type: "realtime-provider-data", provider: "openai", data: metadata(payload) }];
|
|
150
|
-
};
|
|
151
|
-
const session = new CallbackRealtimeSession({
|
|
152
|
-
provider: this.provider, modelId: this.modelId, capabilities: this.capabilities,
|
|
153
|
-
config: resolved, connection, initializationTimeoutMs: options?.timeoutMs ?? 15_000,
|
|
154
|
-
closeTimeoutMs: config.providerOptions?.closeTimeoutMs,
|
|
155
|
-
callbacks: {
|
|
156
|
-
parseEvent,
|
|
157
|
-
isReadyPayload: (p) => p.type === "session.started",
|
|
158
|
-
shouldReplayEvent: (event) => event.type !== "realtime-audio-output",
|
|
159
|
-
isCloseAcknowledgementPayload: (p) => p.type === "session.closed",
|
|
160
|
-
buildInitialPayloads: () => [{ type: "session.start", session: {
|
|
161
|
-
model: this.modelId, ...(resolved.instructions !== undefined ? { instructions: resolved.instructions } : {}),
|
|
162
|
-
audio: { format: { type: resolved.inputAudioMediaType, rate: resolved.inputSampleRateHz }, output: { voice: resolved.voice ?? "marin" } },
|
|
163
|
-
delegation: { type: "client" }, store: resolved.providerOptions?.store ?? false,
|
|
164
|
-
...(resolved.providerOptions?.input !== undefined ? { input: resolved.providerOptions.input } : {})
|
|
165
|
-
} }],
|
|
166
|
-
buildAudioPayloads: (frame) => {
|
|
167
|
-
if (frame.mediaType !== resolved.inputAudioMediaType || (frame.sampleRateHz !== undefined && frame.sampleRateHz !== resolved.inputSampleRateHz) || (frame.channels !== undefined && frame.channels !== 1))
|
|
168
|
-
throw new ValidationError("Audio frame does not match the GPT-Live session format; resample it before sending.");
|
|
169
|
-
const audio = encodeAudioFrame(frame);
|
|
170
|
-
const bytes = decodeBase64WithLimit(audio, { maxBytes: 16 * 1024 * 1024, provider: "openai", endpoint: "live/sessions" });
|
|
171
|
-
if (resolved.inputAudioMediaType === "audio/pcm" && bytes.byteLength % 2)
|
|
172
|
-
throw new ValidationError("GPT-Live PCM input must contain complete 16-bit samples.");
|
|
173
|
-
return [{ type: "session.input_audio.append", audio }];
|
|
174
|
-
},
|
|
175
|
-
buildTextPayloads: () => unsupported("does not accept typed user input on the voice frontend"),
|
|
176
|
-
buildToolResultPayloads: () => unsupported("does not accept Realtime tool results"),
|
|
177
|
-
buildUpdatePayloads: () => unsupported("client sessions have immutable startup configuration"),
|
|
178
|
-
buildContextPayloads: append,
|
|
179
|
-
buildInputMutePayloads: (muted) => [{ type: muted ? "session.input_audio.mute" : "session.input_audio.unmute" }],
|
|
180
|
-
buildClosePayloads: () => [{ type: "session.close" }]
|
|
181
|
-
}
|
|
182
|
-
});
|
|
38
|
+
const session = createLiveSession(this.modelId, resolved, connection, { timeoutMs: options?.timeoutMs, ...liveAudioCallbacks(resolved) });
|
|
183
39
|
try {
|
|
184
40
|
await session.initialize();
|
|
185
41
|
}
|
package/dist/live.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live.js","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"live.js","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhivex-ai/openai",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"description": "OpenAI adapter for Zhivex AI SDK.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -14,6 +14,14 @@
|
|
|
14
14
|
".": {
|
|
15
15
|
"types": "./dist/index.d.ts",
|
|
16
16
|
"import": "./dist/index.js"
|
|
17
|
+
},
|
|
18
|
+
"./experimental/live-browser": {
|
|
19
|
+
"types": "./dist/live-webrtc-browser.d.ts",
|
|
20
|
+
"import": "./dist/live-webrtc-browser.js"
|
|
21
|
+
},
|
|
22
|
+
"./experimental/live-server": {
|
|
23
|
+
"types": "./dist/live-webrtc-server.d.ts",
|
|
24
|
+
"import": "./dist/live-webrtc-server.js"
|
|
17
25
|
}
|
|
18
26
|
},
|
|
19
27
|
"files": [
|
|
@@ -41,7 +49,7 @@
|
|
|
41
49
|
"access": "public"
|
|
42
50
|
},
|
|
43
51
|
"dependencies": {
|
|
44
|
-
"@zhivex-ai/core": "^1.
|
|
52
|
+
"@zhivex-ai/core": "^1.31.0",
|
|
45
53
|
"zod": "^4.6.3"
|
|
46
54
|
}
|
|
47
55
|
}
|