@ariaflowagents/livekit-plugin-transport-sip 0.9.10 → 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.
@@ -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 STT pipeline.
5
+ * ReadableStream<AudioFrame> for the voice pipeline.
6
6
  *
7
- * RTP delivers G.711 at 8kHz. After decode, we upsample to 16kHz
8
- * to match GeminiLiveSTT's default sample rate expectation.
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;;;;;;;;;GASG;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,CAAqD;gBAG5D,UAAU,EAAE,UAAU,EAC9B,UAAU,GAAE,MAAwB,EACpC,WAAW,GAAE,MAAU;IASzB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,aAAa;IAiBf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAc7B"}
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"}
@@ -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 STT_SAMPLE_RATE = 16000;
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 STT pipeline.
8
+ * ReadableStream<AudioFrame> for the voice pipeline.
9
9
  *
10
- * RTP delivers G.711 at 8kHz. After decode, we upsample to 16kHz
11
- * to match GeminiLiveSTT's default sample rate expectation.
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 = createResampler(RTP_SAMPLE_RATE, STT_SAMPLE_RATE);
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
  }
@@ -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,eAAe,GAAG,KAAK,CAAC;AAE9B;;;;;;;;;GASG;AACH,MAAM,OAAO,aAAc,SAAQ,UAAU;IAOjC;IANF,MAAM,GAAmD,IAAI,CAAC;IAC9D,MAAM,GAAY,KAAK,CAAC;IACxB,WAAW,CAAS;IACpB,SAAS,GAAG,eAAe,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAEtE,YACU,UAAsB,EAC9B,aAAqB,eAAe,EACpC,cAAsB,CAAC;QAEvB,KAAK,EAAE,CAAC;QAJA,eAAU,GAAV,UAAU,CAAY;QAK9B,KAAK,UAAU,CAAC;QAChB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,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"}
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';
@@ -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;AAC7C,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"}
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 type { voice } from '@livekit/agents';
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
- * This server handles SIP signaling (via UDP or WebSocket) and manages
22
- * RTP sessions for audio transmission.
58
+ * Supports three session modes:
23
59
  *
24
- * UDP Example:
25
- * const server = new SIPAgentServer({
26
- * transport: 'udp',
27
- * localAddress: '10.0.0.5',
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
  */
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAC3F,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAI7D,OAAO,KAAK,EAAE,gBAAgB,EAAgB,MAAM,YAAY,CAAC;AAoBjE;;;;;;;;;;;;;;GAcG;AACH,qBAAa,cAAc;IAWb,OAAO,CAAC,OAAO;IAV3B,OAAO,CAAC,cAAc,CAAwC;IAC9D,OAAO,CAAC,WAAW,CAEH;IAChB,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,gBAAgB,CAA+C;IACvE,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,mBAAmB,CAAgD;gBAEvD,OAAO,EAAE,gBAAgB;IAa7C,MAAM,CACJ,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAC9E,IAAI;IAID,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,oBAAoB,GACjC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC;IAU9B;;;OAGG;IACH,OAAO,CAAC,eAAe;IA4BvB;;;;;OAKG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAiD7B;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc3C,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAED;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI9C;;OAEG;IACH,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,cAAc,GAAG,YAAY,GAAG,WAAW,CAExD;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAc7B"}
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
- * This server handles SIP signaling (via UDP or WebSocket) and manages
39
- * RTP sessions for audio transmission.
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
- * UDP Example:
42
- * const server = new SIPAgentServer({
43
- * transport: 'udp',
44
- * localAddress: '10.0.0.5',
45
- * sipPort: 5060,
46
- * rtpPortStart: 10000,
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
- const transport = this.activeTransports.get(callId);
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
- * Hang up an active call.
280
+ * Clean up all resources for a call across all three session modes.
149
281
  */
150
- async hangup(callId) {
151
- const transport = this.activeTransports.get(callId);
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 active voice sessions
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();
@@ -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;IAUrD,OAAO,CAAC,UAAU;IATpB,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,OAAO,CAAiB;gBAGtB,UAAU,EAAE,UAAU,EAC9B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B;IAgCH,IAAI,MAAM,IAAI,OAAO,CAEpB;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ7B"}
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.rtpSession = rtpSession;
15
+ this._rtpSession = rtpSession;
16
16
  this.id = options.id;
17
17
  const packetDurationMs = options.packetDurationMs ?? 20;
18
- // SIPAudioInput upsamples decoded G.711 (8kHz) to 16kHz for STT.
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.rtpSession.close();
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;IAU7C;IATD,EAAE,CAAS;IACX,UAAU,CAAgB;IAC1B,WAAW,CAAiB;IAC5B,UAAU,CAAgB;IAC1B,MAAM,CAAyB;IAEhC,OAAO,GAAY,IAAI,CAAC;IAEhC,YACU,UAAsB,EAC9B,KAAY,EACZ,OAGC;QAED,KAAK,EAAE,CAAC;QAPA,eAAU,GAAV,UAAU,CAAY;QAS9B,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QACrB,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,EAAE,CAAC;QAExD,iEAAiE;QACjE,iEAAiE;QACjE,6CAA6C;QAC7C,MAAM,gBAAgB,GAAG,KAAK,CAAC;QAE/B,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,CACf,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,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,UAAU,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACF"}
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.10",
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",