@ariaflowagents/livekit-plugin-transport-sip 0.9.9 → 0.9.11
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/dist/audio_input.d.ts +6 -4
- package/dist/audio_input.d.ts.map +1 -1
- package/dist/audio_input.js +9 -6
- package/dist/audio_input.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +86 -12
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +202 -32
- package/dist/server.js.map +1 -1
- package/dist/transport_adapter.d.ts +9 -1
- package/dist/transport_adapter.d.ts.map +1 -1
- package/dist/transport_adapter.js +9 -8
- package/dist/transport_adapter.js.map +1 -1
- package/package.json +12 -12
package/dist/audio_input.d.ts
CHANGED
|
@@ -2,10 +2,12 @@ import { AudioInput } from '@ariaflowagents/livekit-plugin';
|
|
|
2
2
|
import type { RtpSession } from './rtp/rtp_session.js';
|
|
3
3
|
/**
|
|
4
4
|
* Receives audio from an RTP stream and provides it as a
|
|
5
|
-
* ReadableStream<AudioFrame> for the
|
|
5
|
+
* ReadableStream<AudioFrame> for the voice pipeline.
|
|
6
6
|
*
|
|
7
|
-
* RTP delivers G.711 at 8kHz. After decode, we upsample to
|
|
8
|
-
*
|
|
7
|
+
* RTP delivers G.711 at 8kHz. After decode, we upsample to the
|
|
8
|
+
* configured output sample rate (default 24kHz, matching Twilio and
|
|
9
|
+
* other transports). Cascaded callers can pass 16kHz for
|
|
10
|
+
* GeminiLiveSTT backward compatibility.
|
|
9
11
|
*
|
|
10
12
|
* The resampler is allocated once and reused across all frames
|
|
11
13
|
* for the lifetime of this input (Sox sinc via local Rust FFI).
|
|
@@ -16,7 +18,7 @@ export declare class SIPAudioInput extends AudioInput {
|
|
|
16
18
|
private closed;
|
|
17
19
|
private numChannels;
|
|
18
20
|
private resampler;
|
|
19
|
-
constructor(rtpSession: RtpSession, sampleRate?: number, numChannels?: number);
|
|
21
|
+
constructor(rtpSession: RtpSession, sampleRate?: number, numChannels?: number, outputSampleRate?: number);
|
|
20
22
|
private startStream;
|
|
21
23
|
private setupListener;
|
|
22
24
|
close(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio_input.d.ts","sourceRoot":"","sources":["../src/audio_input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAc,MAAM,gCAAgC,CAAC;AAGxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAKvD
|
|
1
|
+
{"version":3,"file":"audio_input.d.ts","sourceRoot":"","sources":["../src/audio_input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAc,MAAM,gCAAgC,CAAC;AAGxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAKvD;;;;;;;;;;;GAWG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAOzC,OAAO,CAAC,UAAU;IANpB,OAAO,CAAC,MAAM,CAAwD;IACtE,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAC;gBAGR,UAAU,EAAE,UAAU,EAC9B,UAAU,GAAE,MAAwB,EACpC,WAAW,GAAE,MAAU,EACvB,gBAAgB,GAAE,MAAmC;IAUvD,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,aAAa;IAiBf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAc7B"}
|
package/dist/audio_input.js
CHANGED
|
@@ -2,13 +2,15 @@ import { AudioInput, AudioFrame } from '@ariaflowagents/livekit-plugin';
|
|
|
2
2
|
import { createResampler } from '@ariaflowagents/livekit-plugin/utils/resample';
|
|
3
3
|
import { TransformStream } from 'node:stream/web';
|
|
4
4
|
const RTP_SAMPLE_RATE = 8000;
|
|
5
|
-
const
|
|
5
|
+
const DEFAULT_OUTPUT_SAMPLE_RATE = 24000;
|
|
6
6
|
/**
|
|
7
7
|
* Receives audio from an RTP stream and provides it as a
|
|
8
|
-
* ReadableStream<AudioFrame> for the
|
|
8
|
+
* ReadableStream<AudioFrame> for the voice pipeline.
|
|
9
9
|
*
|
|
10
|
-
* RTP delivers G.711 at 8kHz. After decode, we upsample to
|
|
11
|
-
*
|
|
10
|
+
* RTP delivers G.711 at 8kHz. After decode, we upsample to the
|
|
11
|
+
* configured output sample rate (default 24kHz, matching Twilio and
|
|
12
|
+
* other transports). Cascaded callers can pass 16kHz for
|
|
13
|
+
* GeminiLiveSTT backward compatibility.
|
|
12
14
|
*
|
|
13
15
|
* The resampler is allocated once and reused across all frames
|
|
14
16
|
* for the lifetime of this input (Sox sinc via local Rust FFI).
|
|
@@ -18,12 +20,13 @@ export class SIPAudioInput extends AudioInput {
|
|
|
18
20
|
writer = null;
|
|
19
21
|
closed = false;
|
|
20
22
|
numChannels;
|
|
21
|
-
resampler
|
|
22
|
-
constructor(rtpSession, sampleRate = RTP_SAMPLE_RATE, numChannels = 1) {
|
|
23
|
+
resampler;
|
|
24
|
+
constructor(rtpSession, sampleRate = RTP_SAMPLE_RATE, numChannels = 1, outputSampleRate = DEFAULT_OUTPUT_SAMPLE_RATE) {
|
|
23
25
|
super();
|
|
24
26
|
this.rtpSession = rtpSession;
|
|
25
27
|
void sampleRate;
|
|
26
28
|
this.numChannels = numChannels;
|
|
29
|
+
this.resampler = createResampler(RTP_SAMPLE_RATE, outputSampleRate);
|
|
27
30
|
this.startStream();
|
|
28
31
|
this.setupListener();
|
|
29
32
|
}
|
package/dist/audio_input.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio_input.js","sourceRoot":"","sources":["../src/audio_input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,
|
|
1
|
+
{"version":3,"file":"audio_input.js","sourceRoot":"","sources":["../src/audio_input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAEzC;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,aAAc,SAAQ,UAAU;IAOjC;IANF,MAAM,GAAmD,IAAI,CAAC;IAC9D,MAAM,GAAY,KAAK,CAAC;IACxB,WAAW,CAAS;IACpB,SAAS,CAAC;IAElB,YACU,UAAsB,EAC9B,aAAqB,eAAe,EACpC,cAAsB,CAAC,EACvB,mBAA2B,0BAA0B;QAErD,KAAK,EAAE,CAAC;QALA,eAAU,GAAV,UAAU,CAAY;QAM9B,KAAK,UAAU,CAAC;QAChB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;QACpE,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,WAAW;QACjB,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,eAAe,EAAc,CAAC;QACjE,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;QACnC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAe,EAAE,EAAE;YAC9C,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YAExC,MAAM,UAAU,GAAG,IAAI,UAAU,CAC/B,GAAG,EACH,eAAe,EACf,IAAI,CAAC,WAAW,EAChB,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAC9B,CAAC;YAEF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,sDAAsD;QACtD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC3C,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACjD,CAAC;YACD,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;QAED,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { SIPAgentServer } from './server.js';
|
|
2
|
+
export type { SIPNativeSessionOptions, SIPRealtimeSessionOptions, SIPAgentEventSink, } from './server.js';
|
|
2
3
|
export { SIPSignaling } from './sip_signaling.js';
|
|
3
4
|
export type { SIPServerOptions, SIPTransport } from './types.js';
|
|
4
5
|
export { SIPTransportAdapter } from './transport_adapter.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,KAAK,EAAE,MAAM,2CAA2C,CAAC;AAEnF,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EACV,uBAAuB,EACvB,yBAAyB,EACzB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,KAAK,EAAE,MAAM,2CAA2C,CAAC;AAEnF,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAM7C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAc,MAAM,2CAA2C,CAAC;AAEnF,OAAO,EAAE,UAAU,EAA0B,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAkB,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/server.d.ts
CHANGED
|
@@ -8,27 +8,79 @@
|
|
|
8
8
|
* - Works with PBX systems and SIP gateways
|
|
9
9
|
* - G.711 codec negotiation
|
|
10
10
|
*
|
|
11
|
+
* Supports three session modes:
|
|
12
|
+
* - Cascaded: startSession() — STT → LLM → TTS pipeline
|
|
13
|
+
* - Native: startNativeSession() — RealtimeRuntime + RealtimeAudioClient
|
|
14
|
+
* - Realtime: startRealtimeSession() — LiveKit AgentSession + provider RealtimeModel
|
|
15
|
+
*
|
|
11
16
|
* For WebSocket/WebRTC SIP signaling, use
|
|
12
17
|
* `@ariaflow/livekit-plugin-transport-sip-jssip`.
|
|
13
18
|
*/
|
|
14
19
|
import { SessionManager, type AriaFlowVoiceSession } from '@ariaflowagents/livekit-plugin';
|
|
15
|
-
import
|
|
20
|
+
import { voice } from '@livekit/agents';
|
|
21
|
+
import type { RealtimeRuntime, RealtimeAudioClient, RealtimeSessionHandle } from '@ariaflowagents/core/realtime';
|
|
16
22
|
import { SIPTransportAdapter } from './transport_adapter.js';
|
|
17
23
|
import type { SIPServerOptions } from './types.js';
|
|
24
|
+
/**
|
|
25
|
+
* Optional event sink for AgentSession events in realtime mode.
|
|
26
|
+
* SIP has no text channel — use this callback for observability.
|
|
27
|
+
*/
|
|
28
|
+
export type SIPAgentEventSink = (event: {
|
|
29
|
+
type: string;
|
|
30
|
+
callId: string;
|
|
31
|
+
timestamp: number;
|
|
32
|
+
data: unknown;
|
|
33
|
+
}) => void;
|
|
34
|
+
/**
|
|
35
|
+
* Options for starting a native audio session through RealtimeRuntime.
|
|
36
|
+
*/
|
|
37
|
+
export interface SIPNativeSessionOptions {
|
|
38
|
+
runtime: RealtimeRuntime;
|
|
39
|
+
createModelClient: () => RealtimeAudioClient;
|
|
40
|
+
sessionId?: string;
|
|
41
|
+
userId?: string;
|
|
42
|
+
agentId?: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Options for starting a direct AgentSession backed by a LiveKit realtime LLM.
|
|
46
|
+
*/
|
|
47
|
+
export interface SIPRealtimeSessionOptions {
|
|
48
|
+
model: NonNullable<voice.AgentSessionOptions['llm']>;
|
|
49
|
+
agent: voice.Agent;
|
|
50
|
+
maxToolSteps?: number;
|
|
51
|
+
sessionId?: string;
|
|
52
|
+
onSessionEnd?: (reason: string) => void;
|
|
53
|
+
onEvent?: SIPAgentEventSink;
|
|
54
|
+
}
|
|
18
55
|
/**
|
|
19
56
|
* A SIP server that accepts incoming calls and creates agent sessions.
|
|
20
57
|
*
|
|
21
|
-
*
|
|
22
|
-
* RTP sessions for audio transmission.
|
|
58
|
+
* Supports three session modes:
|
|
23
59
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* sipPort: 5060,
|
|
29
|
-
* rtpPortStart: 10000,
|
|
60
|
+
* **Cascaded** (startSession):
|
|
61
|
+
* server.onCall(async (transport, callId) => {
|
|
62
|
+
* const voiceSession = new AriaFlowVoiceSession({ runtime, stt, tts });
|
|
63
|
+
* await server.startSession(callId, voiceSession);
|
|
30
64
|
* });
|
|
31
65
|
*
|
|
66
|
+
* **Native** (startNativeSession):
|
|
67
|
+
* server.onCall(async (transport, callId) => {
|
|
68
|
+
* await server.startNativeSession(callId, {
|
|
69
|
+
* runtime: realtimeRuntime,
|
|
70
|
+
* createModelClient: () => new GeminiLiveSession({ apiKey, model }),
|
|
71
|
+
* });
|
|
72
|
+
* });
|
|
73
|
+
*
|
|
74
|
+
* **Realtime** (startRealtimeSession):
|
|
75
|
+
* server.onCall(async (transport, callId) => {
|
|
76
|
+
* const binding = await createAriaFlowRealtimeAgent({ authority, agentId });
|
|
77
|
+
* const session = await server.startRealtimeSession(callId, {
|
|
78
|
+
* model: new google.beta.realtime.RealtimeModel({ apiKey }),
|
|
79
|
+
* agent: binding.agent,
|
|
80
|
+
* onSessionEnd: (reason) => binding.controller.detach(reason),
|
|
81
|
+
* });
|
|
82
|
+
* binding.controller.attach(session);
|
|
83
|
+
* });
|
|
32
84
|
*/
|
|
33
85
|
export declare class SIPAgentServer {
|
|
34
86
|
private options;
|
|
@@ -39,9 +91,30 @@ export declare class SIPAgentServer {
|
|
|
39
91
|
private activeTransports;
|
|
40
92
|
private transportType;
|
|
41
93
|
private activeVoiceSessions;
|
|
94
|
+
private nativeSessions;
|
|
95
|
+
private realtimeSessions;
|
|
42
96
|
constructor(options: SIPServerOptions);
|
|
43
97
|
onCall(handler: (adapter: SIPTransportAdapter, callId: string) => void | Promise<void>): void;
|
|
98
|
+
/**
|
|
99
|
+
* Start a cascaded voice session (STT → LLM → TTS).
|
|
100
|
+
*/
|
|
44
101
|
startSession(callId: string, voiceSession: AriaFlowVoiceSession): Promise<voice.AgentSession>;
|
|
102
|
+
/**
|
|
103
|
+
* Start a native audio session that routes audio directly through
|
|
104
|
+
* RealtimeRuntime (e.g., Gemini Live, OpenAI Realtime).
|
|
105
|
+
*
|
|
106
|
+
* Uses the SIP native audio bridge to convert RTP 8kHz ↔ 24kHz PCM
|
|
107
|
+
* for the realtime model client.
|
|
108
|
+
*/
|
|
109
|
+
startNativeSession(callId: string, options: SIPNativeSessionOptions): Promise<RealtimeSessionHandle>;
|
|
110
|
+
/**
|
|
111
|
+
* Start a direct LiveKit AgentSession over the SIP transport.
|
|
112
|
+
*
|
|
113
|
+
* This path is for native realtime models such as
|
|
114
|
+
* @livekit/agents-plugin-google's RealtimeModel. It wires the transport's
|
|
115
|
+
* AudioInput/AudioOutput/TextOutput directly into AgentSession.
|
|
116
|
+
*/
|
|
117
|
+
startRealtimeSession(callId: string, options: SIPRealtimeSessionOptions): Promise<voice.AgentSession>;
|
|
45
118
|
/**
|
|
46
119
|
* Allocate a local RTP port and create a transport adapter.
|
|
47
120
|
* This is called internally when a SIP INVITE is received.
|
|
@@ -49,11 +122,12 @@ export declare class SIPAgentServer {
|
|
|
49
122
|
private createTransport;
|
|
50
123
|
/**
|
|
51
124
|
* Start listening for SIP INVITE requests.
|
|
52
|
-
*
|
|
53
|
-
* For UDP transport: Binds UDP socket and listens for SIP messages.
|
|
54
|
-
* For WebSocket transport: Connects to WebSocket server and listens for SIP messages.
|
|
55
125
|
*/
|
|
56
126
|
listen(): Promise<void>;
|
|
127
|
+
/**
|
|
128
|
+
* Clean up all resources for a call across all three session modes.
|
|
129
|
+
*/
|
|
130
|
+
private cleanupCall;
|
|
57
131
|
/**
|
|
58
132
|
* Hang up an active call.
|
|
59
133
|
*/
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -8,13 +8,20 @@
|
|
|
8
8
|
* - Works with PBX systems and SIP gateways
|
|
9
9
|
* - G.711 codec negotiation
|
|
10
10
|
*
|
|
11
|
+
* Supports three session modes:
|
|
12
|
+
* - Cascaded: startSession() — STT → LLM → TTS pipeline
|
|
13
|
+
* - Native: startNativeSession() — RealtimeRuntime + RealtimeAudioClient
|
|
14
|
+
* - Realtime: startRealtimeSession() — LiveKit AgentSession + provider RealtimeModel
|
|
15
|
+
*
|
|
11
16
|
* For WebSocket/WebRTC SIP signaling, use
|
|
12
17
|
* `@ariaflow/livekit-plugin-transport-sip-jssip`.
|
|
13
18
|
*/
|
|
14
19
|
import { SessionManager } from '@ariaflowagents/livekit-plugin';
|
|
20
|
+
import { voice } from '@livekit/agents';
|
|
15
21
|
import { SIPTransportAdapter } from './transport_adapter.js';
|
|
16
22
|
import { RtpSession } from './rtp/rtp_session.js';
|
|
17
23
|
import { SIPSignaling } from './sip_signaling.js';
|
|
24
|
+
import { createSipNativeAudioTransport } from './native_bridge.js';
|
|
18
25
|
/**
|
|
19
26
|
* Parse the remote RTP endpoint from an SDP body.
|
|
20
27
|
* Extracts the connection address (c= line) and audio port (m= line).
|
|
@@ -35,17 +42,32 @@ function parseSdpRemoteEndpoint(sdp) {
|
|
|
35
42
|
/**
|
|
36
43
|
* A SIP server that accepts incoming calls and creates agent sessions.
|
|
37
44
|
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
45
|
+
* Supports three session modes:
|
|
46
|
+
*
|
|
47
|
+
* **Cascaded** (startSession):
|
|
48
|
+
* server.onCall(async (transport, callId) => {
|
|
49
|
+
* const voiceSession = new AriaFlowVoiceSession({ runtime, stt, tts });
|
|
50
|
+
* await server.startSession(callId, voiceSession);
|
|
51
|
+
* });
|
|
40
52
|
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
53
|
+
* **Native** (startNativeSession):
|
|
54
|
+
* server.onCall(async (transport, callId) => {
|
|
55
|
+
* await server.startNativeSession(callId, {
|
|
56
|
+
* runtime: realtimeRuntime,
|
|
57
|
+
* createModelClient: () => new GeminiLiveSession({ apiKey, model }),
|
|
58
|
+
* });
|
|
47
59
|
* });
|
|
48
60
|
*
|
|
61
|
+
* **Realtime** (startRealtimeSession):
|
|
62
|
+
* server.onCall(async (transport, callId) => {
|
|
63
|
+
* const binding = await createAriaFlowRealtimeAgent({ authority, agentId });
|
|
64
|
+
* const session = await server.startRealtimeSession(callId, {
|
|
65
|
+
* model: new google.beta.realtime.RealtimeModel({ apiKey }),
|
|
66
|
+
* agent: binding.agent,
|
|
67
|
+
* onSessionEnd: (reason) => binding.controller.detach(reason),
|
|
68
|
+
* });
|
|
69
|
+
* binding.controller.attach(session);
|
|
70
|
+
* });
|
|
49
71
|
*/
|
|
50
72
|
export class SIPAgentServer {
|
|
51
73
|
options;
|
|
@@ -56,6 +78,8 @@ export class SIPAgentServer {
|
|
|
56
78
|
activeTransports = new Map();
|
|
57
79
|
transportType;
|
|
58
80
|
activeVoiceSessions = new Map();
|
|
81
|
+
nativeSessions = new Map();
|
|
82
|
+
realtimeSessions = new Map();
|
|
59
83
|
constructor(options) {
|
|
60
84
|
this.options = options;
|
|
61
85
|
this.transportType = options.transport ?? 'udp';
|
|
@@ -69,6 +93,9 @@ export class SIPAgentServer {
|
|
|
69
93
|
onCall(handler) {
|
|
70
94
|
this.callHandler = handler;
|
|
71
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* Start a cascaded voice session (STT → LLM → TTS).
|
|
98
|
+
*/
|
|
72
99
|
async startSession(callId, voiceSession) {
|
|
73
100
|
const transport = this.activeTransports.get(callId);
|
|
74
101
|
if (!transport) {
|
|
@@ -78,6 +105,123 @@ export class SIPAgentServer {
|
|
|
78
105
|
this.activeVoiceSessions.set(callId, voiceSession);
|
|
79
106
|
return agentSession;
|
|
80
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Start a native audio session that routes audio directly through
|
|
110
|
+
* RealtimeRuntime (e.g., Gemini Live, OpenAI Realtime).
|
|
111
|
+
*
|
|
112
|
+
* Uses the SIP native audio bridge to convert RTP 8kHz ↔ 24kHz PCM
|
|
113
|
+
* for the realtime model client.
|
|
114
|
+
*/
|
|
115
|
+
async startNativeSession(callId, options) {
|
|
116
|
+
const adapter = this.activeTransports.get(callId);
|
|
117
|
+
if (!adapter) {
|
|
118
|
+
throw new Error(`Transport not found for call: ${callId}`);
|
|
119
|
+
}
|
|
120
|
+
const nativeTransport = createSipNativeAudioTransport(adapter.rtpSession);
|
|
121
|
+
const modelClient = options.createModelClient();
|
|
122
|
+
let handle;
|
|
123
|
+
try {
|
|
124
|
+
handle = await options.runtime.startSession({
|
|
125
|
+
modelClient,
|
|
126
|
+
transport: nativeTransport,
|
|
127
|
+
sessionId: options.sessionId ?? callId,
|
|
128
|
+
userId: options.userId,
|
|
129
|
+
agentId: options.agentId,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
catch (err) {
|
|
133
|
+
nativeTransport.close();
|
|
134
|
+
throw err;
|
|
135
|
+
}
|
|
136
|
+
this.nativeSessions.set(callId, { handle, transport: nativeTransport });
|
|
137
|
+
console.log(`[SIPAgentServer] native session started for call: ${callId}`);
|
|
138
|
+
return handle;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Start a direct LiveKit AgentSession over the SIP transport.
|
|
142
|
+
*
|
|
143
|
+
* This path is for native realtime models such as
|
|
144
|
+
* @livekit/agents-plugin-google's RealtimeModel. It wires the transport's
|
|
145
|
+
* AudioInput/AudioOutput/TextOutput directly into AgentSession.
|
|
146
|
+
*/
|
|
147
|
+
async startRealtimeSession(callId, options) {
|
|
148
|
+
const adapter = this.activeTransports.get(callId);
|
|
149
|
+
if (!adapter) {
|
|
150
|
+
throw new Error(`Transport not found for call: ${callId}`);
|
|
151
|
+
}
|
|
152
|
+
const sessionId = options.sessionId ?? callId;
|
|
153
|
+
let sessionEnded = false;
|
|
154
|
+
const session = new voice.AgentSession({
|
|
155
|
+
llm: options.model,
|
|
156
|
+
maxToolSteps: options.maxToolSteps,
|
|
157
|
+
});
|
|
158
|
+
// Wire I/O directly
|
|
159
|
+
session.input.audio = adapter.audioInput;
|
|
160
|
+
session.output.audio = adapter.audioOutput;
|
|
161
|
+
session.output.transcription = adapter.textOutput;
|
|
162
|
+
const emitEvent = options.onEvent
|
|
163
|
+
? (type, data) => {
|
|
164
|
+
options.onEvent({ type, callId, timestamp: Date.now(), data });
|
|
165
|
+
}
|
|
166
|
+
: undefined;
|
|
167
|
+
session.on(voice.AgentSessionEventTypes.AgentStateChanged, (event) => {
|
|
168
|
+
emitEvent?.('agent_state', event.newState);
|
|
169
|
+
});
|
|
170
|
+
session.on(voice.AgentSessionEventTypes.UserStateChanged, (event) => {
|
|
171
|
+
emitEvent?.('user_state', event.newState);
|
|
172
|
+
});
|
|
173
|
+
session.on(voice.AgentSessionEventTypes.UserInputTranscribed, (event) => {
|
|
174
|
+
emitEvent?.('user_transcription', { text: event.transcript, isFinal: event.isFinal });
|
|
175
|
+
});
|
|
176
|
+
session.on(voice.AgentSessionEventTypes.FunctionToolsExecuted, (event) => {
|
|
177
|
+
event.functionCalls.forEach((call, index) => {
|
|
178
|
+
emitEvent?.('tool_result', {
|
|
179
|
+
toolName: call.name,
|
|
180
|
+
success: Boolean(event.functionCallOutputs[index]),
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
session.on(voice.AgentSessionEventTypes.MetricsCollected, (event) => {
|
|
185
|
+
emitEvent?.('metrics_collected', {
|
|
186
|
+
metricsType: typeof event.metrics?.type === 'string' ? event.metrics.type : undefined,
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
session.on(voice.AgentSessionEventTypes.Close, () => {
|
|
190
|
+
if (sessionEnded)
|
|
191
|
+
return;
|
|
192
|
+
sessionEnded = true;
|
|
193
|
+
this.realtimeSessions.delete(callId);
|
|
194
|
+
options.onSessionEnd?.('session_close');
|
|
195
|
+
});
|
|
196
|
+
session.on(voice.AgentSessionEventTypes.Error, (event) => {
|
|
197
|
+
const msg = event.error instanceof Error ? event.error.message : String(event.error);
|
|
198
|
+
console.error(`[SIPAgentServer] realtime session error for ${callId}: ${msg}`);
|
|
199
|
+
emitEvent?.('error', { message: msg });
|
|
200
|
+
});
|
|
201
|
+
const closeRealtimeSession = (reason) => {
|
|
202
|
+
if (sessionEnded)
|
|
203
|
+
return;
|
|
204
|
+
sessionEnded = true;
|
|
205
|
+
this.realtimeSessions.delete(callId);
|
|
206
|
+
options.onSessionEnd?.(reason);
|
|
207
|
+
session.close().catch((err) => {
|
|
208
|
+
console.error(`[SIPAgentServer] realtime session close error for ${callId}:`, err instanceof Error ? err.message : String(err));
|
|
209
|
+
});
|
|
210
|
+
};
|
|
211
|
+
try {
|
|
212
|
+
await session.start({ agent: options.agent });
|
|
213
|
+
}
|
|
214
|
+
catch (err) {
|
|
215
|
+
try {
|
|
216
|
+
await session.close();
|
|
217
|
+
}
|
|
218
|
+
catch { /* swallow cleanup errors */ }
|
|
219
|
+
throw err;
|
|
220
|
+
}
|
|
221
|
+
this.realtimeSessions.set(callId, { session, close: closeRealtimeSession });
|
|
222
|
+
console.log(`[SIPAgentServer] realtime session started for call: ${callId}`);
|
|
223
|
+
return session;
|
|
224
|
+
}
|
|
81
225
|
/**
|
|
82
226
|
* Allocate a local RTP port and create a transport adapter.
|
|
83
227
|
* This is called internally when a SIP INVITE is received.
|
|
@@ -103,9 +247,6 @@ export class SIPAgentServer {
|
|
|
103
247
|
}
|
|
104
248
|
/**
|
|
105
249
|
* Start listening for SIP INVITE requests.
|
|
106
|
-
*
|
|
107
|
-
* For UDP transport: Binds UDP socket and listens for SIP messages.
|
|
108
|
-
* For WebSocket transport: Connects to WebSocket server and listens for SIP messages.
|
|
109
250
|
*/
|
|
110
251
|
async listen() {
|
|
111
252
|
const transportName = this.transportType === 'websocket' ? 'WebSocket' : 'UDP';
|
|
@@ -131,33 +272,50 @@ export class SIPAgentServer {
|
|
|
131
272
|
}, async (callId) => {
|
|
132
273
|
// Handle BYE from remote party
|
|
133
274
|
console.log(`[SIPAgentServer] Remote party hung up call: ${callId}`);
|
|
134
|
-
|
|
135
|
-
if (transport) {
|
|
136
|
-
await transport.close();
|
|
137
|
-
this.activeTransports.delete(callId);
|
|
138
|
-
}
|
|
139
|
-
const voiceSession = this.activeVoiceSessions.get(callId);
|
|
140
|
-
if (voiceSession) {
|
|
141
|
-
await voiceSession.close();
|
|
142
|
-
this.activeVoiceSessions.delete(callId);
|
|
143
|
-
}
|
|
275
|
+
await this.cleanupCall(callId, 'remote_hangup');
|
|
144
276
|
});
|
|
145
277
|
console.log(`[SIPAgentServer] Listening for calls (${transportName})`);
|
|
146
278
|
}
|
|
147
279
|
/**
|
|
148
|
-
*
|
|
280
|
+
* Clean up all resources for a call across all three session modes.
|
|
149
281
|
*/
|
|
150
|
-
async
|
|
151
|
-
|
|
152
|
-
if (transport) {
|
|
153
|
-
await transport.close();
|
|
154
|
-
this.activeTransports.delete(callId);
|
|
155
|
-
}
|
|
282
|
+
async cleanupCall(callId, reason) {
|
|
283
|
+
// Cascaded cleanup
|
|
156
284
|
const voiceSession = this.activeVoiceSessions.get(callId);
|
|
157
285
|
if (voiceSession) {
|
|
158
|
-
await voiceSession.close();
|
|
159
286
|
this.activeVoiceSessions.delete(callId);
|
|
287
|
+
await voiceSession.close().catch((err) => {
|
|
288
|
+
console.error(`[SIPAgentServer] voice session close error for ${callId}:`, err instanceof Error ? err.message : String(err));
|
|
289
|
+
});
|
|
160
290
|
}
|
|
291
|
+
// Native cleanup
|
|
292
|
+
const nativeEntry = this.nativeSessions.get(callId);
|
|
293
|
+
if (nativeEntry) {
|
|
294
|
+
this.nativeSessions.delete(callId);
|
|
295
|
+
await nativeEntry.handle.stop().catch((err) => {
|
|
296
|
+
console.error(`[SIPAgentServer] native session stop error for ${callId}:`, err instanceof Error ? err.message : String(err));
|
|
297
|
+
});
|
|
298
|
+
nativeEntry.transport.close();
|
|
299
|
+
}
|
|
300
|
+
// Realtime cleanup
|
|
301
|
+
const realtimeEntry = this.realtimeSessions.get(callId);
|
|
302
|
+
if (realtimeEntry) {
|
|
303
|
+
realtimeEntry.close(reason);
|
|
304
|
+
}
|
|
305
|
+
// Transport cleanup (last — sessions may still be using it)
|
|
306
|
+
const transport = this.activeTransports.get(callId);
|
|
307
|
+
if (transport) {
|
|
308
|
+
this.activeTransports.delete(callId);
|
|
309
|
+
await transport.close().catch((err) => {
|
|
310
|
+
console.error(`[SIPAgentServer] transport close error for ${callId}:`, err instanceof Error ? err.message : String(err));
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Hang up an active call.
|
|
316
|
+
*/
|
|
317
|
+
async hangup(callId) {
|
|
318
|
+
await this.cleanupCall(callId, 'local_hangup');
|
|
161
319
|
await this.signaling.hangup(callId);
|
|
162
320
|
}
|
|
163
321
|
get sessions() {
|
|
@@ -182,12 +340,24 @@ export class SIPAgentServer {
|
|
|
182
340
|
return 'connected';
|
|
183
341
|
}
|
|
184
342
|
async close() {
|
|
185
|
-
// Close all
|
|
186
|
-
const voiceSessionPromises = Array.from(this.activeVoiceSessions.values()).map((s) => s.close());
|
|
343
|
+
// Close all cascaded voice sessions
|
|
344
|
+
const voiceSessionPromises = Array.from(this.activeVoiceSessions.values()).map((s) => s.close().catch(() => { }));
|
|
187
345
|
await Promise.allSettled(voiceSessionPromises);
|
|
188
346
|
this.activeVoiceSessions.clear();
|
|
347
|
+
// Stop all native sessions
|
|
348
|
+
const nativeStops = Array.from(this.nativeSessions.values()).map(async (entry) => {
|
|
349
|
+
await entry.handle.stop().catch(() => { });
|
|
350
|
+
entry.transport.close();
|
|
351
|
+
});
|
|
352
|
+
await Promise.allSettled(nativeStops);
|
|
353
|
+
this.nativeSessions.clear();
|
|
354
|
+
// Close all realtime sessions
|
|
355
|
+
for (const [, entry] of this.realtimeSessions) {
|
|
356
|
+
entry.close('server_shutdown');
|
|
357
|
+
}
|
|
358
|
+
this.realtimeSessions.clear();
|
|
189
359
|
// Close all active transports
|
|
190
|
-
const closePromises = Array.from(this.activeTransports.values()).map((t) => t.close());
|
|
360
|
+
const closePromises = Array.from(this.activeTransports.values()).map((t) => t.close().catch(() => { }));
|
|
191
361
|
await Promise.allSettled(closePromises);
|
|
192
362
|
this.activeTransports.clear();
|
|
193
363
|
await this.sessionManager.closeAll();
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,17 +5,25 @@ import { SIPTextOutput } from './text_output.js';
|
|
|
5
5
|
import type { RtpSession } from './rtp/rtp_session.js';
|
|
6
6
|
import type { Codec } from '@ariaflowagents/livekit-plugin/codec/g711';
|
|
7
7
|
export declare class SIPTransportAdapter extends TransportAdapter {
|
|
8
|
-
private rtpSession;
|
|
9
8
|
readonly id: string;
|
|
10
9
|
readonly audioInput: SIPAudioInput;
|
|
11
10
|
readonly audioOutput: SIPAudioOutput;
|
|
12
11
|
readonly textOutput: SIPTextOutput;
|
|
13
12
|
readonly config: TransportAdapterConfig;
|
|
13
|
+
private _rtpSession;
|
|
14
14
|
private _isOpen;
|
|
15
15
|
constructor(rtpSession: RtpSession, codec: Codec, options: {
|
|
16
16
|
id: string;
|
|
17
17
|
packetDurationMs?: number;
|
|
18
|
+
/**
|
|
19
|
+
* Output sample rate for SIPAudioInput. Default 24kHz (matching
|
|
20
|
+
* Twilio and all other transports). Pass 16000 for cascaded mode
|
|
21
|
+
* with GeminiLiveSTT backward compatibility.
|
|
22
|
+
*/
|
|
23
|
+
outputSampleRate?: number;
|
|
18
24
|
});
|
|
25
|
+
/** The underlying RTP session (for native bridge access). */
|
|
26
|
+
get rtpSession(): RtpSession;
|
|
19
27
|
get isOpen(): boolean;
|
|
20
28
|
close(): Promise<void>;
|
|
21
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport_adapter.d.ts","sourceRoot":"","sources":["../src/transport_adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,KAAK,sBAAsB,EAC5B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2CAA2C,CAAC;AAEvE,qBAAa,mBAAoB,SAAQ,gBAAgB;
|
|
1
|
+
{"version":3,"file":"transport_adapter.d.ts","sourceRoot":"","sources":["../src/transport_adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,KAAK,sBAAsB,EAC5B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2CAA2C,CAAC;AAEvE,qBAAa,mBAAoB,SAAQ,gBAAgB;IACvD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IAExC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,OAAO,CAAiB;gBAG9B,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B;;;;WAIG;QACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B;IA8BH,6DAA6D;IAC7D,IAAI,UAAU,IAAI,UAAU,CAE3B;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ7B"}
|
|
@@ -3,32 +3,33 @@ import { SIPAudioInput } from './audio_input.js';
|
|
|
3
3
|
import { SIPAudioOutput } from './audio_output.js';
|
|
4
4
|
import { SIPTextOutput } from './text_output.js';
|
|
5
5
|
export class SIPTransportAdapter extends TransportAdapter {
|
|
6
|
-
rtpSession;
|
|
7
6
|
id;
|
|
8
7
|
audioInput;
|
|
9
8
|
audioOutput;
|
|
10
9
|
textOutput;
|
|
11
10
|
config;
|
|
11
|
+
_rtpSession;
|
|
12
12
|
_isOpen = true;
|
|
13
13
|
constructor(rtpSession, codec, options) {
|
|
14
14
|
super();
|
|
15
|
-
this.
|
|
15
|
+
this._rtpSession = rtpSession;
|
|
16
16
|
this.id = options.id;
|
|
17
17
|
const packetDurationMs = options.packetDurationMs ?? 20;
|
|
18
|
-
|
|
19
|
-
// Report the actual output rate so AriaFlowVoiceSession forwards
|
|
20
|
-
// the correct sample rate to the STT engine.
|
|
21
|
-
const outputSampleRate = 16000;
|
|
18
|
+
const outputSampleRate = options.outputSampleRate ?? 24000;
|
|
22
19
|
this.config = {
|
|
23
20
|
sampleRate: outputSampleRate,
|
|
24
21
|
numChannels: codec.channels,
|
|
25
22
|
encoding: codec.name === 'PCMU' ? 'mulaw' : 'alaw',
|
|
26
23
|
samplesPerChannel: (outputSampleRate * packetDurationMs) / 1000,
|
|
27
24
|
};
|
|
28
|
-
this.audioInput = new SIPAudioInput(rtpSession, codec.sampleRate, codec.channels);
|
|
25
|
+
this.audioInput = new SIPAudioInput(rtpSession, codec.sampleRate, codec.channels, outputSampleRate);
|
|
29
26
|
this.audioOutput = new SIPAudioOutput(rtpSession, codec.sampleRate, packetDurationMs);
|
|
30
27
|
this.textOutput = new SIPTextOutput();
|
|
31
28
|
}
|
|
29
|
+
/** The underlying RTP session (for native bridge access). */
|
|
30
|
+
get rtpSession() {
|
|
31
|
+
return this._rtpSession;
|
|
32
|
+
}
|
|
32
33
|
get isOpen() {
|
|
33
34
|
return this._isOpen;
|
|
34
35
|
}
|
|
@@ -38,7 +39,7 @@ export class SIPTransportAdapter extends TransportAdapter {
|
|
|
38
39
|
this._isOpen = false;
|
|
39
40
|
await this.audioInput.close();
|
|
40
41
|
await this.audioOutput.close();
|
|
41
|
-
this.
|
|
42
|
+
this._rtpSession.close();
|
|
42
43
|
}
|
|
43
44
|
}
|
|
44
45
|
//# sourceMappingURL=transport_adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport_adapter.js","sourceRoot":"","sources":["../src/transport_adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,GAEjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,MAAM,OAAO,mBAAoB,SAAQ,gBAAgB;
|
|
1
|
+
{"version":3,"file":"transport_adapter.js","sourceRoot":"","sources":["../src/transport_adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,GAEjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,MAAM,OAAO,mBAAoB,SAAQ,gBAAgB;IAC9C,EAAE,CAAS;IACX,UAAU,CAAgB;IAC1B,WAAW,CAAiB;IAC5B,UAAU,CAAgB;IAC1B,MAAM,CAAyB;IAEhC,WAAW,CAAa;IACxB,OAAO,GAAY,IAAI,CAAC;IAEhC,YACE,UAAsB,EACtB,KAAY,EACZ,OASC;QAED,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QACrB,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,EAAE,CAAC;QACxD,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,KAAK,CAAC;QAE3D,IAAI,CAAC,MAAM,GAAG;YACZ,UAAU,EAAE,gBAAgB;YAC5B,WAAW,EAAE,KAAK,CAAC,QAAQ;YAC3B,QAAQ,EAAE,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;YAClD,iBAAiB,EAAE,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,IAAI;SAChE,CAAC;QAEF,IAAI,CAAC,UAAU,GAAG,IAAI,aAAa,CACjC,UAAU,EACV,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,QAAQ,EACd,gBAAgB,CACjB,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,IAAI,cAAc,CACnC,UAAU,EACV,KAAK,CAAC,UAAU,EAChB,gBAAgB,CACjB,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,IAAI,aAAa,EAAE,CAAC;IACxC,CAAC;IAED,6DAA6D;IAC7D,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAErB,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ariaflowagents/livekit-plugin-transport-sip",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.11",
|
|
4
4
|
"description": "SIP/RTP transport adapter for LiveKit Agents. Run voice agents over traditional telephony with G.711 codec support.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -14,23 +14,23 @@
|
|
|
14
14
|
"files": [
|
|
15
15
|
"dist"
|
|
16
16
|
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsc",
|
|
19
|
+
"clean": "rm -rf dist",
|
|
20
|
+
"typecheck": "tsc --noEmit",
|
|
21
|
+
"test": "bun test test",
|
|
22
|
+
"test:typecheck": "tsc -p test/tsconfig.json --noEmit"
|
|
23
|
+
},
|
|
17
24
|
"dependencies": {
|
|
18
25
|
"node.js-sip": "^1.0.9"
|
|
19
26
|
},
|
|
20
27
|
"peerDependencies": {
|
|
21
|
-
"@livekit
|
|
22
|
-
"@
|
|
28
|
+
"@ariaflowagents/livekit-plugin": "workspace:*",
|
|
29
|
+
"@livekit/agents": ">=1.0.0"
|
|
23
30
|
},
|
|
24
31
|
"devDependencies": {
|
|
25
32
|
"@types/node": "^22.10.0",
|
|
26
33
|
"typescript": "^5.5.0"
|
|
27
34
|
},
|
|
28
|
-
"license": "Apache-2.0"
|
|
29
|
-
|
|
30
|
-
"build": "tsc",
|
|
31
|
-
"clean": "rm -rf dist",
|
|
32
|
-
"typecheck": "tsc --noEmit",
|
|
33
|
-
"test": "bun test test",
|
|
34
|
-
"test:typecheck": "tsc -p test/tsconfig.json --noEmit"
|
|
35
|
-
}
|
|
36
|
-
}
|
|
35
|
+
"license": "Apache-2.0"
|
|
36
|
+
}
|