@ajna-inc/webrtc 0.1.0 → 0.2.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/LICENSE +202 -0
- package/README.md +143 -17
- package/build/index.d.ts +6 -2
- package/build/index.js +5 -1
- package/build/index.js.map +1 -1
- package/build/webrtc/WebRTCApi.d.ts +94 -5
- package/build/webrtc/WebRTCApi.js +107 -4
- package/build/webrtc/WebRTCApi.js.map +1 -1
- package/build/webrtc/WebRTCEvents.d.ts +87 -5
- package/build/webrtc/WebRTCEvents.js +8 -0
- package/build/webrtc/WebRTCEvents.js.map +1 -1
- package/build/webrtc/WebRTCModule.d.ts +50 -0
- package/build/webrtc/WebRTCModule.js +17 -2
- package/build/webrtc/WebRTCModule.js.map +1 -1
- package/build/webrtc/handlers/RenegotiateHandler.d.ts +9 -0
- package/build/webrtc/handlers/RenegotiateHandler.js +31 -0
- package/build/webrtc/handlers/RenegotiateHandler.js.map +1 -0
- package/build/webrtc/handlers/index.d.ts +1 -0
- package/build/webrtc/handlers/index.js +1 -0
- package/build/webrtc/handlers/index.js.map +1 -1
- package/build/webrtc/messages/AnswerMessage.d.ts +9 -0
- package/build/webrtc/messages/AnswerMessage.js +11 -1
- package/build/webrtc/messages/AnswerMessage.js.map +1 -1
- package/build/webrtc/messages/EndMessage.d.ts +1 -0
- package/build/webrtc/messages/EndMessage.js +1 -1
- package/build/webrtc/messages/EndMessage.js.map +1 -1
- package/build/webrtc/messages/IceMessage.d.ts +1 -0
- package/build/webrtc/messages/IceMessage.js +1 -1
- package/build/webrtc/messages/IceMessage.js.map +1 -1
- package/build/webrtc/messages/OfferMessage.d.ts +29 -1
- package/build/webrtc/messages/OfferMessage.js +37 -2
- package/build/webrtc/messages/OfferMessage.js.map +1 -1
- package/build/webrtc/messages/ProposeMessage.d.ts +51 -0
- package/build/webrtc/messages/ProposeMessage.js +48 -2
- package/build/webrtc/messages/ProposeMessage.js.map +1 -1
- package/build/webrtc/messages/RenegotiateMessage.d.ts +52 -0
- package/build/webrtc/messages/RenegotiateMessage.js +65 -0
- package/build/webrtc/messages/RenegotiateMessage.js.map +1 -0
- package/build/webrtc/messages/index.d.ts +1 -0
- package/build/webrtc/messages/index.js +1 -0
- package/build/webrtc/messages/index.js.map +1 -1
- package/build/webrtc/services/WebRTCService.d.ts +66 -5
- package/build/webrtc/services/WebRTCService.js +123 -15
- package/build/webrtc/services/WebRTCService.js.map +1 -1
- package/package.json +6 -7
|
@@ -15,6 +15,7 @@ const tsyringe_1 = require("tsyringe");
|
|
|
15
15
|
const core_2 = require("@credo-ts/core");
|
|
16
16
|
const WebRTCService_1 = require("./services/WebRTCService");
|
|
17
17
|
const handlers_1 = require("./handlers");
|
|
18
|
+
const WebRTCModule_1 = require("./WebRTCModule");
|
|
18
19
|
let WebRTCApi = class WebRTCApi {
|
|
19
20
|
constructor(connectionService, messageSender, webrtcService, agentContext) {
|
|
20
21
|
this.connectionService = connectionService;
|
|
@@ -27,15 +28,71 @@ let WebRTCApi = class WebRTCApi {
|
|
|
27
28
|
new handlers_1.OfferHandler(this.webrtcService),
|
|
28
29
|
new handlers_1.AnswerHandler(this.webrtcService),
|
|
29
30
|
new handlers_1.IceHandler(this.webrtcService),
|
|
31
|
+
new handlers_1.RenegotiateHandler(this.webrtcService),
|
|
30
32
|
new handlers_1.EndHandler(this.webrtcService),
|
|
31
33
|
new handlers_1.ProposeHandler(this.webrtcService),
|
|
32
34
|
]);
|
|
33
35
|
return true;
|
|
34
36
|
})();
|
|
37
|
+
// Get config from dependency manager, with fallback defaults
|
|
38
|
+
try {
|
|
39
|
+
this.config = this.agentContext.dependencyManager.resolve(WebRTCModule_1.WebRTCModuleConfigToken);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
this.config = {
|
|
43
|
+
iceServers: [
|
|
44
|
+
{ urls: 'stun:stun.l.google.com:19302' },
|
|
45
|
+
{ urls: 'stun:stun1.l.google.com:19302' },
|
|
46
|
+
],
|
|
47
|
+
defaultPolicy: 'all',
|
|
48
|
+
defaultTrickle: true,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
35
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Get the configured default ICE servers
|
|
54
|
+
*/
|
|
55
|
+
getDefaultIceServers() {
|
|
56
|
+
return this.config.iceServers;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Propose a call to a peer (before sending offer)
|
|
60
|
+
* This allows sharing ICE servers and negotiating capabilities before the SDP exchange
|
|
61
|
+
*/
|
|
62
|
+
async proposeCall(options) {
|
|
63
|
+
const connection = await this.connectionService.getById(this.agentContext, options.connectionId);
|
|
64
|
+
// Use module defaults for missing options
|
|
65
|
+
const iceServers = options.iceServers ?? this.config.iceServers;
|
|
66
|
+
const policy = options.policy ?? this.config.defaultPolicy;
|
|
67
|
+
const trickle = options.trickle ?? this.config.defaultTrickle;
|
|
68
|
+
const { message } = this.webrtcService.createPropose({
|
|
69
|
+
threadId: options.threadId,
|
|
70
|
+
parentThreadId: options.parentThreadId,
|
|
71
|
+
media: options.media,
|
|
72
|
+
data: options.data,
|
|
73
|
+
topology: options.topology ?? 'mesh',
|
|
74
|
+
trickle,
|
|
75
|
+
policy,
|
|
76
|
+
iceServers,
|
|
77
|
+
reason: options.reason,
|
|
78
|
+
});
|
|
79
|
+
const outbound = await (0, core_2.getOutboundMessageContext)(this.agentContext, {
|
|
80
|
+
message,
|
|
81
|
+
connectionRecord: connection,
|
|
82
|
+
});
|
|
83
|
+
await this.messageSender.sendMessage(outbound);
|
|
84
|
+
return { threadId: message.threadId ?? message.id };
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Start a call by sending an SDP offer
|
|
88
|
+
*/
|
|
36
89
|
async startCall(options) {
|
|
37
90
|
const connection = await this.connectionService.getById(this.agentContext, options.connectionId);
|
|
38
|
-
|
|
91
|
+
// Use module defaults for missing options
|
|
92
|
+
const iceServers = options.iceServers ?? this.config.iceServers;
|
|
93
|
+
const policy = options.policy ?? this.config.defaultPolicy;
|
|
94
|
+
const trickle = options.trickle ?? this.config.defaultTrickle;
|
|
95
|
+
const { message, record } = this.webrtcService.createOffer(this.agentContext, connection, options.threadId, options.parentThreadId, options.sdp, iceServers, policy, trickle);
|
|
39
96
|
const outbound = await (0, core_2.getOutboundMessageContext)(this.agentContext, {
|
|
40
97
|
message,
|
|
41
98
|
associatedRecord: record,
|
|
@@ -44,27 +101,73 @@ let WebRTCApi = class WebRTCApi {
|
|
|
44
101
|
await this.messageSender.sendMessage(outbound);
|
|
45
102
|
return record;
|
|
46
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Accept a call by sending an SDP answer
|
|
106
|
+
*/
|
|
47
107
|
async acceptCall(options) {
|
|
48
108
|
const connection = await this.connectionService.getById(this.agentContext, options.connectionId);
|
|
49
|
-
const { message } = this.webrtcService.createAnswer(this.agentContext, connection, options.threadId, options.sdp);
|
|
109
|
+
const { message } = this.webrtcService.createAnswer(this.agentContext, connection, options.threadId, options.parentThreadId, options.sdp, options.iceServers);
|
|
50
110
|
const outbound = await (0, core_2.getOutboundMessageContext)(this.agentContext, {
|
|
51
111
|
message,
|
|
52
112
|
connectionRecord: connection,
|
|
53
113
|
});
|
|
54
114
|
await this.messageSender.sendMessage(outbound);
|
|
55
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Send an ICE candidate
|
|
118
|
+
*/
|
|
56
119
|
async sendIce(options) {
|
|
57
120
|
const connection = await this.connectionService.getById(this.agentContext, options.connectionId);
|
|
58
|
-
const message = this.webrtcService.createIce(options.threadId, options.candidate, options.endOfCandidates);
|
|
121
|
+
const message = this.webrtcService.createIce(options.threadId, options.parentThreadId, options.candidate, options.endOfCandidates);
|
|
59
122
|
const outbound = await (0, core_2.getOutboundMessageContext)(this.agentContext, {
|
|
60
123
|
message,
|
|
61
124
|
connectionRecord: connection,
|
|
62
125
|
});
|
|
63
126
|
await this.messageSender.sendMessage(outbound);
|
|
64
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Request renegotiation (for ICE restart, adding/removing tracks, etc.)
|
|
130
|
+
*
|
|
131
|
+
* Use this when:
|
|
132
|
+
* - ICE connection failed and needs restart
|
|
133
|
+
* - Adding screenshare or switching cameras
|
|
134
|
+
* - Network changed (WiFi to cellular)
|
|
135
|
+
* - Changing codec or bandwidth settings
|
|
136
|
+
*/
|
|
137
|
+
async renegotiate(options) {
|
|
138
|
+
const connection = await this.connectionService.getById(this.agentContext, options.connectionId);
|
|
139
|
+
const message = this.webrtcService.createRenegotiate({
|
|
140
|
+
threadId: options.threadId,
|
|
141
|
+
parentThreadId: options.parentThreadId,
|
|
142
|
+
reason: options.reason,
|
|
143
|
+
iceRestart: options.iceRestart,
|
|
144
|
+
iceServers: options.iceServers,
|
|
145
|
+
policy: options.policy,
|
|
146
|
+
});
|
|
147
|
+
const outbound = await (0, core_2.getOutboundMessageContext)(this.agentContext, {
|
|
148
|
+
message,
|
|
149
|
+
connectionRecord: connection,
|
|
150
|
+
});
|
|
151
|
+
await this.messageSender.sendMessage(outbound);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Request ICE restart (convenience method for renegotiate with iceRestart=true)
|
|
155
|
+
*
|
|
156
|
+
* Use when the WebRTC connection has failed or disconnected
|
|
157
|
+
*/
|
|
158
|
+
async restartIce(options) {
|
|
159
|
+
return this.renegotiate({
|
|
160
|
+
...options,
|
|
161
|
+
reason: 'ice-restart',
|
|
162
|
+
iceRestart: true,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* End a call
|
|
167
|
+
*/
|
|
65
168
|
async endCall(options) {
|
|
66
169
|
const connection = await this.connectionService.getById(this.agentContext, options.connectionId);
|
|
67
|
-
const message = this.webrtcService.createEnd(options.threadId, options.reason);
|
|
170
|
+
const message = this.webrtcService.createEnd(options.threadId, options.parentThreadId, options.reason);
|
|
68
171
|
const outbound = await (0, core_2.getOutboundMessageContext)(this.agentContext, {
|
|
69
172
|
message,
|
|
70
173
|
connectionRecord: connection,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebRTCApi.js","sourceRoot":"","sources":["../../src/webrtc/WebRTCApi.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAA+E;AAE/E,uCAAqC;AACrC,yCAA0D;AAE1D,4DAAwD;
|
|
1
|
+
{"version":3,"file":"WebRTCApi.js","sourceRoot":"","sources":["../../src/webrtc/WebRTCApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +1,110 @@
|
|
|
1
1
|
import type { InboundMessageContext } from '@credo-ts/core';
|
|
2
|
+
import type { IcePolicy } from './messages/OfferMessage';
|
|
3
|
+
import type { MediaType } from './messages/ProposeMessage';
|
|
4
|
+
import type { RenegotiateReason } from './messages/RenegotiateMessage';
|
|
2
5
|
export declare enum WebRTCEvents {
|
|
6
|
+
/** Incoming call proposal (before offer) */
|
|
7
|
+
IncomingPropose = "WebRTCEvents.IncomingPropose",
|
|
8
|
+
/** Incoming SDP offer */
|
|
3
9
|
IncomingOffer = "WebRTCEvents.IncomingOffer",
|
|
10
|
+
/** Incoming SDP answer */
|
|
4
11
|
IncomingAnswer = "WebRTCEvents.IncomingAnswer",
|
|
12
|
+
/** Incoming ICE candidate */
|
|
5
13
|
IncomingIce = "WebRTCEvents.IncomingIce",
|
|
14
|
+
/** Renegotiation requested (track changes, ICE restart) */
|
|
15
|
+
RenegotiateRequested = "WebRTCEvents.RenegotiateRequested",
|
|
16
|
+
/** Call ended */
|
|
6
17
|
CallEnded = "WebRTCEvents.CallEnded"
|
|
7
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* ICE server configuration in events
|
|
21
|
+
*/
|
|
22
|
+
export interface IceServerEventConfig {
|
|
23
|
+
urls: string | string[];
|
|
24
|
+
username?: string;
|
|
25
|
+
credential?: string;
|
|
26
|
+
credentialType?: 'password' | 'oauth';
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Event emitted when a call proposal is received
|
|
30
|
+
*/
|
|
31
|
+
export interface IncomingProposeEvent {
|
|
32
|
+
context: InboundMessageContext;
|
|
33
|
+
thid: string;
|
|
34
|
+
pthid?: string;
|
|
35
|
+
/** Requested media types */
|
|
36
|
+
media?: MediaType[];
|
|
37
|
+
/** Whether data channel is requested */
|
|
38
|
+
data?: boolean;
|
|
39
|
+
/** Topology: 'mesh' or 'sfu' */
|
|
40
|
+
topology?: 'mesh' | 'sfu';
|
|
41
|
+
/** Whether trickle ICE is supported */
|
|
42
|
+
trickle?: boolean;
|
|
43
|
+
/** ICE policy */
|
|
44
|
+
policy?: IcePolicy;
|
|
45
|
+
/** ICE servers for NAT traversal */
|
|
46
|
+
iceServers?: IceServerEventConfig[];
|
|
47
|
+
/** Optional reason/context */
|
|
48
|
+
reason?: string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Event emitted when an SDP offer is received
|
|
52
|
+
*/
|
|
8
53
|
export interface IncomingOfferEvent {
|
|
9
54
|
context: InboundMessageContext;
|
|
10
55
|
thid: string;
|
|
56
|
+
pthid?: string;
|
|
11
57
|
sdp: string;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
58
|
+
/** ICE servers for NAT traversal */
|
|
59
|
+
iceServers?: IceServerEventConfig[];
|
|
60
|
+
/** ICE policy */
|
|
61
|
+
policy?: IcePolicy;
|
|
62
|
+
/** Whether trickle ICE is enabled */
|
|
63
|
+
trickle?: boolean;
|
|
17
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* Event emitted when an SDP answer is received
|
|
67
|
+
*/
|
|
18
68
|
export interface IncomingAnswerEvent {
|
|
19
69
|
context: InboundMessageContext;
|
|
20
70
|
thid: string;
|
|
71
|
+
pthid?: string;
|
|
21
72
|
sdp: string;
|
|
73
|
+
/** Optional ICE servers from callee */
|
|
74
|
+
iceServers?: IceServerEventConfig[];
|
|
22
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Event emitted when an ICE candidate is received
|
|
78
|
+
*/
|
|
23
79
|
export interface IncomingIceEvent {
|
|
24
80
|
context: InboundMessageContext;
|
|
25
81
|
thid: string;
|
|
82
|
+
pthid?: string;
|
|
26
83
|
candidate: Record<string, unknown>;
|
|
27
84
|
endOfCandidates?: boolean;
|
|
28
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Event emitted when renegotiation is requested
|
|
88
|
+
*/
|
|
89
|
+
export interface RenegotiateRequestedEvent {
|
|
90
|
+
context: InboundMessageContext;
|
|
91
|
+
thid: string;
|
|
92
|
+
pthid?: string;
|
|
93
|
+
/** Reason for renegotiation */
|
|
94
|
+
reason: RenegotiateReason | string;
|
|
95
|
+
/** Whether ICE restart is requested */
|
|
96
|
+
iceRestart?: boolean;
|
|
97
|
+
/** New ICE servers (if changed) */
|
|
98
|
+
iceServers?: IceServerEventConfig[];
|
|
99
|
+
/** Updated ICE policy */
|
|
100
|
+
policy?: IcePolicy;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Event emitted when a call ends
|
|
104
|
+
*/
|
|
105
|
+
export interface CallEndedEvent {
|
|
106
|
+
context: InboundMessageContext;
|
|
107
|
+
thid: string;
|
|
108
|
+
pthid?: string;
|
|
109
|
+
reason?: string;
|
|
110
|
+
}
|
|
@@ -3,9 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.WebRTCEvents = void 0;
|
|
4
4
|
var WebRTCEvents;
|
|
5
5
|
(function (WebRTCEvents) {
|
|
6
|
+
/** Incoming call proposal (before offer) */
|
|
7
|
+
WebRTCEvents["IncomingPropose"] = "WebRTCEvents.IncomingPropose";
|
|
8
|
+
/** Incoming SDP offer */
|
|
6
9
|
WebRTCEvents["IncomingOffer"] = "WebRTCEvents.IncomingOffer";
|
|
10
|
+
/** Incoming SDP answer */
|
|
7
11
|
WebRTCEvents["IncomingAnswer"] = "WebRTCEvents.IncomingAnswer";
|
|
12
|
+
/** Incoming ICE candidate */
|
|
8
13
|
WebRTCEvents["IncomingIce"] = "WebRTCEvents.IncomingIce";
|
|
14
|
+
/** Renegotiation requested (track changes, ICE restart) */
|
|
15
|
+
WebRTCEvents["RenegotiateRequested"] = "WebRTCEvents.RenegotiateRequested";
|
|
16
|
+
/** Call ended */
|
|
9
17
|
WebRTCEvents["CallEnded"] = "WebRTCEvents.CallEnded";
|
|
10
18
|
})(WebRTCEvents || (exports.WebRTCEvents = WebRTCEvents = {}));
|
|
11
19
|
//# sourceMappingURL=WebRTCEvents.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebRTCEvents.js","sourceRoot":"","sources":["../../src/webrtc/WebRTCEvents.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"WebRTCEvents.js","sourceRoot":"","sources":["../../src/webrtc/WebRTCEvents.ts"],"names":[],"mappings":";;;AAKA,IAAY,YAaX;AAbD,WAAY,YAAY;IACtB,4CAA4C;IAC5C,gEAAgD,CAAA;IAChD,yBAAyB;IACzB,4DAA4C,CAAA;IAC5C,0BAA0B;IAC1B,8DAA8C,CAAA;IAC9C,6BAA6B;IAC7B,wDAAwC,CAAA;IACxC,2DAA2D;IAC3D,0EAA0D,CAAA;IAC1D,iBAAiB;IACjB,oDAAoC,CAAA;AACtC,CAAC,EAbW,YAAY,4BAAZ,YAAY,QAavB"}
|
|
@@ -1,6 +1,56 @@
|
|
|
1
1
|
import type { DependencyManager, FeatureRegistry, Module } from '@credo-ts/core';
|
|
2
2
|
import { WebRTCApi } from './WebRTCApi';
|
|
3
|
+
import type { IcePolicy } from './messages/OfferMessage';
|
|
4
|
+
/**
|
|
5
|
+
* ICE server configuration for module-level defaults
|
|
6
|
+
*/
|
|
7
|
+
export interface WebRTCIceServerConfig {
|
|
8
|
+
/** STUN/TURN server URL(s) */
|
|
9
|
+
urls: string | string[];
|
|
10
|
+
/** Username for TURN authentication */
|
|
11
|
+
username?: string;
|
|
12
|
+
/** Credential for TURN authentication */
|
|
13
|
+
credential?: string;
|
|
14
|
+
/** Credential type */
|
|
15
|
+
credentialType?: 'password' | 'oauth';
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Configuration options for WebRTCModule
|
|
19
|
+
*/
|
|
20
|
+
export interface WebRTCModuleConfig {
|
|
21
|
+
/**
|
|
22
|
+
* Default ICE servers (STUN/TURN) to use for all calls
|
|
23
|
+
* These are used when no iceServers are provided in API calls
|
|
24
|
+
*
|
|
25
|
+
* Example:
|
|
26
|
+
* ```ts
|
|
27
|
+
* iceServers: [
|
|
28
|
+
* { urls: 'stun:stun.l.google.com:19302' },
|
|
29
|
+
* { urls: 'turn:turn.example.org:3478', username: 'user', credential: 'pass' }
|
|
30
|
+
* ]
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
iceServers?: WebRTCIceServerConfig[];
|
|
34
|
+
/**
|
|
35
|
+
* Default ICE policy for NAT traversal
|
|
36
|
+
* - 'all': Use all available candidates (default)
|
|
37
|
+
* - 'relay-preferred': Prefer relay candidates but allow others
|
|
38
|
+
* - 'relay-only': Only use relay (TURN) candidates - best for strict NAT/firewall
|
|
39
|
+
*/
|
|
40
|
+
defaultPolicy?: IcePolicy;
|
|
41
|
+
/**
|
|
42
|
+
* Whether to enable trickle ICE by default
|
|
43
|
+
* @default true
|
|
44
|
+
*/
|
|
45
|
+
defaultTrickle?: boolean;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Injection token for WebRTC module configuration
|
|
49
|
+
*/
|
|
50
|
+
export declare const WebRTCModuleConfigToken: unique symbol;
|
|
3
51
|
export declare class WebRTCModule implements Module {
|
|
4
52
|
readonly api: typeof WebRTCApi;
|
|
53
|
+
readonly config: WebRTCModuleConfig;
|
|
54
|
+
constructor(config?: WebRTCModuleConfig);
|
|
5
55
|
register(dependencyManager: DependencyManager, featureRegistry: FeatureRegistry): void;
|
|
6
56
|
}
|
|
@@ -1,15 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WebRTCModule = void 0;
|
|
3
|
+
exports.WebRTCModule = exports.WebRTCModuleConfigToken = void 0;
|
|
4
4
|
const core_1 = require("@credo-ts/core");
|
|
5
5
|
const WebRTCApi_1 = require("./WebRTCApi");
|
|
6
6
|
const WebRTCCallRepository_1 = require("./repository/WebRTCCallRepository");
|
|
7
7
|
const WebRTCService_1 = require("./services/WebRTCService");
|
|
8
|
+
/**
|
|
9
|
+
* Injection token for WebRTC module configuration
|
|
10
|
+
*/
|
|
11
|
+
exports.WebRTCModuleConfigToken = Symbol('WebRTCModuleConfig');
|
|
8
12
|
class WebRTCModule {
|
|
9
|
-
constructor() {
|
|
13
|
+
constructor(config = {}) {
|
|
10
14
|
this.api = WebRTCApi_1.WebRTCApi;
|
|
15
|
+
this.config = {
|
|
16
|
+
iceServers: config.iceServers ?? [
|
|
17
|
+
// Default public STUN servers
|
|
18
|
+
{ urls: 'stun:stun.l.google.com:19302' },
|
|
19
|
+
{ urls: 'stun:stun1.l.google.com:19302' },
|
|
20
|
+
],
|
|
21
|
+
defaultPolicy: config.defaultPolicy ?? 'all',
|
|
22
|
+
defaultTrickle: config.defaultTrickle ?? true,
|
|
23
|
+
};
|
|
11
24
|
}
|
|
12
25
|
register(dependencyManager, featureRegistry) {
|
|
26
|
+
// Register config for injection
|
|
27
|
+
dependencyManager.registerInstance(exports.WebRTCModuleConfigToken, this.config);
|
|
13
28
|
// Services & Repo
|
|
14
29
|
dependencyManager.registerSingleton(WebRTCService_1.WebRTCService);
|
|
15
30
|
dependencyManager.registerSingleton(WebRTCCallRepository_1.WebRTCCallRepository);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebRTCModule.js","sourceRoot":"","sources":["../../src/webrtc/WebRTCModule.ts"],"names":[],"mappings":";;;AAEA,yCAAyC;AAEzC,2CAAuC;AACvC,4EAAwE;AACxE,4DAAwD;
|
|
1
|
+
{"version":3,"file":"WebRTCModule.js","sourceRoot":"","sources":["../../src/webrtc/WebRTCModule.ts"],"names":[],"mappings":";;;AAEA,yCAAyC;AAEzC,2CAAuC;AACvC,4EAAwE;AACxE,4DAAwD;AAmDxD;;GAEG;AACU,QAAA,uBAAuB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAA;AAEnE,MAAa,YAAY;IAIvB,YAAmB,SAA6B,EAAE;QAHlC,QAAG,GAAG,qBAAS,CAAA;QAI7B,IAAI,CAAC,MAAM,GAAG;YACZ,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI;gBAC/B,8BAA8B;gBAC9B,EAAE,IAAI,EAAE,8BAA8B,EAAE;gBACxC,EAAE,IAAI,EAAE,+BAA+B,EAAE;aAC1C;YACD,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,KAAK;YAC5C,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,IAAI;SAC9C,CAAA;IACH,CAAC;IAEM,QAAQ,CAAC,iBAAoC,EAAE,eAAgC;QACpF,gCAAgC;QAChC,iBAAiB,CAAC,gBAAgB,CAAC,+BAAuB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAExE,kBAAkB;QAClB,iBAAiB,CAAC,iBAAiB,CAAC,6BAAa,CAAC,CAAA;QAClD,iBAAiB,CAAC,iBAAiB,CAAC,2CAAoB,CAAC,CAAA;QAEzD,2FAA2F;QAE3F,+CAA+C;QAC/C,eAAe,CAAC,QAAQ,CACtB,IAAI,eAAQ,CAAC;YACX,EAAE,EAAE,gCAAgC;YACpC,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;SAC5B,CAAC,CACH,CAAA;IACH,CAAC;CACF;AAlCD,oCAkCC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { MessageHandler, MessageHandlerInboundMessage } from '@credo-ts/core';
|
|
2
|
+
import { RenegotiateMessage } from '../messages';
|
|
3
|
+
import { WebRTCService } from '../services/WebRTCService';
|
|
4
|
+
export declare class RenegotiateHandler implements MessageHandler {
|
|
5
|
+
supportedMessages: (typeof RenegotiateMessage)[];
|
|
6
|
+
private service;
|
|
7
|
+
constructor(service: WebRTCService);
|
|
8
|
+
handle(inbound: MessageHandlerInboundMessage<RenegotiateHandler>): Promise<void>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.RenegotiateHandler = void 0;
|
|
13
|
+
const messages_1 = require("../messages");
|
|
14
|
+
const tsyringe_1 = require("tsyringe");
|
|
15
|
+
const WebRTCService_1 = require("../services/WebRTCService");
|
|
16
|
+
let RenegotiateHandler = class RenegotiateHandler {
|
|
17
|
+
constructor(service) {
|
|
18
|
+
this.supportedMessages = [messages_1.RenegotiateMessage];
|
|
19
|
+
this.service = service;
|
|
20
|
+
}
|
|
21
|
+
async handle(inbound) {
|
|
22
|
+
await this.service.processRenegotiate(inbound);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
exports.RenegotiateHandler = RenegotiateHandler;
|
|
27
|
+
exports.RenegotiateHandler = RenegotiateHandler = __decorate([
|
|
28
|
+
(0, tsyringe_1.injectable)(),
|
|
29
|
+
__metadata("design:paramtypes", [WebRTCService_1.WebRTCService])
|
|
30
|
+
], RenegotiateHandler);
|
|
31
|
+
//# sourceMappingURL=RenegotiateHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RenegotiateHandler.js","sourceRoot":"","sources":["../../../src/webrtc/handlers/RenegotiateHandler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,0CAAgD;AAChD,uCAAqC;AACrC,6DAAyD;AAGlD,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAI7B,YAAmB,OAAsB;QAHlC,sBAAiB,GAAG,CAAC,6BAAkB,CAAC,CAAA;QAI7C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,OAAyD;QAC3E,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;QAC9C,OAAM;IACR,CAAC;CACF,CAAA;AAZY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,qBAAU,GAAE;qCAKiB,6BAAa;GAJ9B,kBAAkB,CAY9B"}
|
|
@@ -17,6 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./OfferHandler"), exports);
|
|
18
18
|
__exportStar(require("./AnswerHandler"), exports);
|
|
19
19
|
__exportStar(require("./IceHandler"), exports);
|
|
20
|
+
__exportStar(require("./RenegotiateHandler"), exports);
|
|
20
21
|
__exportStar(require("./EndHandler"), exports);
|
|
21
22
|
__exportStar(require("./ProposeHandler"), exports);
|
|
22
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/webrtc/handlers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA8B;AAC9B,kDAA+B;AAC/B,+CAA4B;AAC5B,+CAA4B;AAC5B,mDAAgC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/webrtc/handlers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA8B;AAC9B,kDAA+B;AAC/B,+CAA4B;AAC5B,uDAAoC;AACpC,+CAA4B;AAC5B,mDAAgC"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { AgentMessage } from '@credo-ts/core';
|
|
2
|
+
import { IceServerConfig } from './OfferMessage';
|
|
2
3
|
export interface AnswerMessageOptions {
|
|
3
4
|
id?: string;
|
|
4
5
|
threadId: string;
|
|
6
|
+
parentThreadId?: string;
|
|
5
7
|
sdp: string;
|
|
8
|
+
/** Optional ICE servers from callee (e.g., if callee has better TURN access) */
|
|
9
|
+
iceServers?: IceServerConfig[];
|
|
6
10
|
jws?: Record<string, unknown>;
|
|
7
11
|
}
|
|
8
12
|
export declare class AnswerMessage extends AgentMessage {
|
|
@@ -10,5 +14,10 @@ export declare class AnswerMessage extends AgentMessage {
|
|
|
10
14
|
readonly type: string;
|
|
11
15
|
static readonly type: import("@credo-ts/core").ParsedMessageType;
|
|
12
16
|
sdp: string;
|
|
17
|
+
/**
|
|
18
|
+
* Optional ICE servers from callee
|
|
19
|
+
* Useful when callee has access to different/better TURN servers
|
|
20
|
+
*/
|
|
21
|
+
iceServers?: IceServerConfig[];
|
|
13
22
|
jws?: Record<string, unknown>;
|
|
14
23
|
}
|
|
@@ -12,6 +12,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.AnswerMessage = void 0;
|
|
13
13
|
const core_1 = require("@credo-ts/core");
|
|
14
14
|
const class_validator_1 = require("class-validator");
|
|
15
|
+
const class_transformer_1 = require("class-transformer");
|
|
16
|
+
const OfferMessage_1 = require("./OfferMessage");
|
|
15
17
|
class AnswerMessage extends core_1.AgentMessage {
|
|
16
18
|
constructor(options) {
|
|
17
19
|
super();
|
|
@@ -19,8 +21,9 @@ class AnswerMessage extends core_1.AgentMessage {
|
|
|
19
21
|
if (options) {
|
|
20
22
|
this.id = options.id ?? this.generateId();
|
|
21
23
|
this.sdp = options.sdp;
|
|
24
|
+
this.iceServers = options.iceServers;
|
|
22
25
|
this.jws = options.jws;
|
|
23
|
-
this.setThread({ threadId: options.threadId });
|
|
26
|
+
this.setThread({ threadId: options.threadId, parentThreadId: options.parentThreadId });
|
|
24
27
|
}
|
|
25
28
|
}
|
|
26
29
|
}
|
|
@@ -34,6 +37,13 @@ __decorate([
|
|
|
34
37
|
(0, class_validator_1.IsString)(),
|
|
35
38
|
__metadata("design:type", String)
|
|
36
39
|
], AnswerMessage.prototype, "sdp", void 0);
|
|
40
|
+
__decorate([
|
|
41
|
+
(0, class_validator_1.IsOptional)(),
|
|
42
|
+
(0, class_validator_1.ValidateNested)({ each: true }),
|
|
43
|
+
(0, class_transformer_1.Type)(() => OfferMessage_1.IceServerConfig),
|
|
44
|
+
(0, class_validator_1.IsArray)(),
|
|
45
|
+
__metadata("design:type", Array)
|
|
46
|
+
], AnswerMessage.prototype, "iceServers", void 0);
|
|
37
47
|
__decorate([
|
|
38
48
|
(0, class_validator_1.IsOptional)(),
|
|
39
49
|
(0, class_validator_1.IsObject)(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnswerMessage.js","sourceRoot":"","sources":["../../../src/webrtc/messages/AnswerMessage.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAmF;AACnF,
|
|
1
|
+
{"version":3,"file":"AnswerMessage.js","sourceRoot":"","sources":["../../../src/webrtc/messages/AnswerMessage.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAmF;AACnF,qDAAyF;AACzF,yDAAwC;AAExC,iDAAgD;AAYhD,MAAa,aAAc,SAAQ,mBAAY;IAC7C,YAAmB,OAA6B;QAC9C,KAAK,EAAE,CAAA;QAWO,SAAI,GAAG,aAAa,CAAC,IAAI,CAAC,cAAc,CAAA;QAVtD,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAA;YACzC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;YACtB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;YACpC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;YACtB,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAA;QACxF,CAAC;IACH,CAAC;;AAVH,sCAgCC;AAlBwB,kBAAI,GAAG,IAAA,uBAAgB,EAAC,uCAAuC,CAAC,AAA5D,CAA4D;AADvE;IADf,IAAA,yBAAkB,EAAC,aAAa,CAAC,IAAI,CAAC;;2CACiB;AAIjD;IADN,IAAA,0BAAQ,GAAE;;0CACQ;AAUZ;IAJN,IAAA,4BAAU,GAAE;IACZ,IAAA,gCAAc,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC9B,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,8BAAe,CAAC;IAC3B,IAAA,yBAAO,GAAE;;iDAC2B;AAI9B;IAFN,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;0CACyB"}
|
|
@@ -19,7 +19,7 @@ class EndMessage extends core_1.AgentMessage {
|
|
|
19
19
|
if (options) {
|
|
20
20
|
this.id = options.id ?? this.generateId();
|
|
21
21
|
this.reason = options.reason;
|
|
22
|
-
this.setThread({ threadId: options.threadId });
|
|
22
|
+
this.setThread({ threadId: options.threadId, parentThreadId: options.parentThreadId });
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EndMessage.js","sourceRoot":"","sources":["../../../src/webrtc/messages/EndMessage.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAmF;AACnF,qDAAsD;
|
|
1
|
+
{"version":3,"file":"EndMessage.js","sourceRoot":"","sources":["../../../src/webrtc/messages/EndMessage.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAmF;AACnF,qDAAsD;AAStD,MAAa,UAAW,SAAQ,mBAAY;IAC1C,YAAmB,OAA0B;QAC3C,KAAK,EAAE,CAAA;QASO,SAAI,GAAG,UAAU,CAAC,IAAI,CAAC,cAAc,CAAA;QARnD,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAA;YACzC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;YAC5B,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAA;QACxF,CAAC;IACH,CAAC;;AARH,gCAiBC;AALwB,eAAI,GAAG,IAAA,uBAAgB,EAAC,oCAAoC,CAAC,AAAzD,CAAyD;AADpE;IADf,IAAA,yBAAkB,EAAC,UAAU,CAAC,IAAI,CAAC;;wCACiB;AAK9C;IAFN,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;0CACW"}
|
|
@@ -20,7 +20,7 @@ class IceMessage extends core_1.AgentMessage {
|
|
|
20
20
|
this.id = options.id ?? this.generateId();
|
|
21
21
|
this.candidate = options.candidate;
|
|
22
22
|
this.endOfCandidates = options.endOfCandidates;
|
|
23
|
-
this.setThread({ threadId: options.threadId });
|
|
23
|
+
this.setThread({ threadId: options.threadId, parentThreadId: options.parentThreadId });
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IceMessage.js","sourceRoot":"","sources":["../../../src/webrtc/messages/IceMessage.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAmF;AACnF,qDAA2E;
|
|
1
|
+
{"version":3,"file":"IceMessage.js","sourceRoot":"","sources":["../../../src/webrtc/messages/IceMessage.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAmF;AACnF,qDAA2E;AAU3E,MAAa,UAAW,SAAQ,mBAAY;IAC1C,YAAmB,OAA0B;QAC3C,KAAK,EAAE,CAAA;QAUO,SAAI,GAAG,UAAU,CAAC,IAAI,CAAC,cAAc,CAAA;QATnD,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAA;YACzC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;YAClC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAA;YAC9C,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAA;QACxF,CAAC;IACH,CAAC;;AATH,gCAsBC;AATwB,eAAI,GAAG,IAAA,uBAAgB,EAAC,oCAAoC,CAAC,AAAzD,CAAyD;AADpE;IADf,IAAA,yBAAkB,EAAC,UAAU,CAAC,IAAI,CAAC;;wCACiB;AAK9C;IAFN,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;6CAC+B;AAInC;IAFN,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;;mDACoB"}
|