@ajna-inc/webrtc 0.1.1 → 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/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 +90 -5
- package/build/webrtc/WebRTCApi.js +105 -2
- package/build/webrtc/WebRTCApi.js.map +1 -1
- package/build/webrtc/WebRTCEvents.d.ts +84 -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 +8 -0
- package/build/webrtc/messages/AnswerMessage.js +10 -0
- package/build/webrtc/messages/AnswerMessage.js.map +1 -1
- package/build/webrtc/messages/OfferMessage.d.ts +28 -1
- package/build/webrtc/messages/OfferMessage.js +36 -1
- 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 +64 -3
- package/build/webrtc/services/WebRTCService.js +115 -12
- package/build/webrtc/services/WebRTCService.js.map +1 -1
- package/package.json +1 -1
|
@@ -18,5 +18,6 @@ __exportStar(require("./ProposeMessage"), exports);
|
|
|
18
18
|
__exportStar(require("./OfferMessage"), exports);
|
|
19
19
|
__exportStar(require("./AnswerMessage"), exports);
|
|
20
20
|
__exportStar(require("./IceMessage"), exports);
|
|
21
|
+
__exportStar(require("./RenegotiateMessage"), exports);
|
|
21
22
|
__exportStar(require("./EndMessage"), exports);
|
|
22
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/webrtc/messages/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAgC;AAChC,iDAA8B;AAC9B,kDAA+B;AAC/B,+CAA4B;AAC5B,+CAA4B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/webrtc/messages/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAgC;AAChC,iDAA8B;AAC9B,kDAA+B;AAC/B,+CAA4B;AAC5B,uDAAoC;AACpC,+CAA4B"}
|
|
@@ -1,25 +1,86 @@
|
|
|
1
1
|
import type { AgentContext, InboundMessageContext } from '@credo-ts/core';
|
|
2
2
|
import type { ConnectionRecord } from '@credo-ts/core';
|
|
3
3
|
import { EventEmitter } from '@credo-ts/core';
|
|
4
|
-
import { AnswerMessage, EndMessage, IceMessage, OfferMessage, ProposeMessage } from '../messages';
|
|
4
|
+
import { AnswerMessage, EndMessage, IceMessage, OfferMessage, ProposeMessage, RenegotiateMessage } from '../messages';
|
|
5
|
+
import type { IcePolicy, IceServerConfig } from '../messages/OfferMessage';
|
|
6
|
+
import type { MediaType } from '../messages/ProposeMessage';
|
|
7
|
+
import type { RenegotiateReason } from '../messages/RenegotiateMessage';
|
|
5
8
|
import { WebRTCCallRecord } from '../repository/WebRTCCallRecord';
|
|
6
9
|
import { WebRTCCallRepository } from '../repository/WebRTCCallRepository';
|
|
7
10
|
export declare class WebRTCService {
|
|
8
11
|
private repo;
|
|
9
12
|
private events;
|
|
10
13
|
constructor(repo: WebRTCCallRepository, events: EventEmitter);
|
|
11
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Create a propose message to initiate a call
|
|
16
|
+
*/
|
|
17
|
+
createPropose(options: {
|
|
18
|
+
threadId?: string;
|
|
19
|
+
parentThreadId?: string;
|
|
20
|
+
media?: MediaType[];
|
|
21
|
+
data?: boolean;
|
|
22
|
+
topology?: 'mesh' | 'sfu';
|
|
23
|
+
trickle?: boolean;
|
|
24
|
+
policy?: IcePolicy;
|
|
25
|
+
iceServers?: IceServerConfig[];
|
|
26
|
+
reason?: string;
|
|
27
|
+
}): {
|
|
28
|
+
message: ProposeMessage;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Create an offer message with SDP
|
|
32
|
+
*/
|
|
33
|
+
createOffer(agentContext: AgentContext, connection: ConnectionRecord, threadId: string, parentThreadId: string | undefined, sdp: string, iceServers?: IceServerConfig[], policy?: IcePolicy, trickle?: boolean): {
|
|
12
34
|
message: OfferMessage;
|
|
13
35
|
record: WebRTCCallRecord;
|
|
14
36
|
};
|
|
15
|
-
|
|
37
|
+
/**
|
|
38
|
+
* Create an answer message with SDP
|
|
39
|
+
*/
|
|
40
|
+
createAnswer(agentContext: AgentContext, connection: ConnectionRecord, threadId: string, parentThreadId: string | undefined, sdp: string, iceServers?: IceServerConfig[]): {
|
|
16
41
|
message: AnswerMessage;
|
|
17
42
|
};
|
|
43
|
+
/**
|
|
44
|
+
* Create an ICE candidate message
|
|
45
|
+
*/
|
|
18
46
|
createIce(threadId: string, parentThreadId: string | undefined, candidate: Record<string, unknown> | undefined, endOfCandidates?: boolean): IceMessage;
|
|
47
|
+
/**
|
|
48
|
+
* Create a renegotiate message (for ICE restart, track changes, etc.)
|
|
49
|
+
*/
|
|
50
|
+
createRenegotiate(options: {
|
|
51
|
+
threadId: string;
|
|
52
|
+
parentThreadId?: string;
|
|
53
|
+
reason: RenegotiateReason | string;
|
|
54
|
+
iceRestart?: boolean;
|
|
55
|
+
iceServers?: IceServerConfig[];
|
|
56
|
+
policy?: IcePolicy;
|
|
57
|
+
}): RenegotiateMessage;
|
|
58
|
+
/**
|
|
59
|
+
* Create an end call message
|
|
60
|
+
*/
|
|
19
61
|
createEnd(threadId: string, parentThreadId: string | undefined, reason?: string): EndMessage;
|
|
62
|
+
/**
|
|
63
|
+
* Process incoming propose message
|
|
64
|
+
*/
|
|
20
65
|
processPropose(messageContext: InboundMessageContext<ProposeMessage>): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* Process incoming offer message
|
|
68
|
+
*/
|
|
21
69
|
processOffer(messageContext: InboundMessageContext<OfferMessage>): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Process incoming answer message
|
|
72
|
+
*/
|
|
22
73
|
processAnswer(messageContext: InboundMessageContext<AnswerMessage>): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* Process incoming ICE candidate message
|
|
76
|
+
*/
|
|
23
77
|
processIce(messageContext: InboundMessageContext<IceMessage>): Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* Process incoming renegotiate message
|
|
80
|
+
*/
|
|
81
|
+
processRenegotiate(messageContext: InboundMessageContext<RenegotiateMessage>): Promise<void>;
|
|
82
|
+
/**
|
|
83
|
+
* Process incoming end call message
|
|
84
|
+
*/
|
|
24
85
|
processEnd(messageContext: InboundMessageContext<EndMessage>): Promise<void>;
|
|
25
86
|
}
|
|
@@ -22,34 +22,94 @@ let WebRTCService = class WebRTCService {
|
|
|
22
22
|
this.events = events;
|
|
23
23
|
}
|
|
24
24
|
// Outbound creators
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Create a propose message to initiate a call
|
|
27
|
+
*/
|
|
28
|
+
createPropose(options) {
|
|
29
|
+
const message = new messages_1.ProposeMessage({
|
|
30
|
+
threadId: options.threadId,
|
|
31
|
+
parentThreadId: options.parentThreadId,
|
|
32
|
+
media: options.media,
|
|
33
|
+
data: options.data,
|
|
34
|
+
topology: options.topology,
|
|
35
|
+
trickle: options.trickle,
|
|
36
|
+
policy: options.policy,
|
|
37
|
+
iceServers: options.iceServers,
|
|
38
|
+
reason: options.reason,
|
|
39
|
+
});
|
|
40
|
+
return { message };
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Create an offer message with SDP
|
|
44
|
+
*/
|
|
45
|
+
createOffer(agentContext, connection, threadId, parentThreadId, sdp, iceServers, policy, trickle) {
|
|
46
|
+
const message = new messages_1.OfferMessage({ threadId, parentThreadId, sdp, iceServers, policy, trickle });
|
|
27
47
|
const record = new WebRTCCallRecord_1.WebRTCCallRecord({ connectionId: connection.id, threadId, state: 'offered', role: 'caller' });
|
|
28
48
|
return { message, record };
|
|
29
49
|
}
|
|
30
|
-
|
|
31
|
-
|
|
50
|
+
/**
|
|
51
|
+
* Create an answer message with SDP
|
|
52
|
+
*/
|
|
53
|
+
createAnswer(agentContext, connection, threadId, parentThreadId, sdp, iceServers) {
|
|
54
|
+
const message = new messages_1.AnswerMessage({ threadId, parentThreadId, sdp, iceServers });
|
|
32
55
|
return { message };
|
|
33
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Create an ICE candidate message
|
|
59
|
+
*/
|
|
34
60
|
createIce(threadId, parentThreadId, candidate, endOfCandidates) {
|
|
35
61
|
return new messages_1.IceMessage({ threadId, parentThreadId, candidate, endOfCandidates });
|
|
36
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Create a renegotiate message (for ICE restart, track changes, etc.)
|
|
65
|
+
*/
|
|
66
|
+
createRenegotiate(options) {
|
|
67
|
+
return new messages_1.RenegotiateMessage({
|
|
68
|
+
threadId: options.threadId,
|
|
69
|
+
parentThreadId: options.parentThreadId,
|
|
70
|
+
reason: options.reason,
|
|
71
|
+
iceRestart: options.iceRestart,
|
|
72
|
+
iceServers: options.iceServers,
|
|
73
|
+
policy: options.policy,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Create an end call message
|
|
78
|
+
*/
|
|
37
79
|
createEnd(threadId, parentThreadId, reason) {
|
|
38
80
|
return new messages_1.EndMessage({ threadId, parentThreadId, reason });
|
|
39
81
|
}
|
|
40
82
|
// Inbound processors
|
|
83
|
+
/**
|
|
84
|
+
* Process incoming propose message
|
|
85
|
+
*/
|
|
41
86
|
async processPropose(messageContext) {
|
|
42
|
-
// For now just emit; app decides to respond with offer
|
|
43
87
|
const thid = messageContext.message.threadId ?? messageContext.message.id;
|
|
88
|
+
const msg = messageContext.message;
|
|
44
89
|
this.events.emit(messageContext.agentContext, {
|
|
45
|
-
type: WebRTCEvents_1.WebRTCEvents.
|
|
46
|
-
payload: {
|
|
90
|
+
type: WebRTCEvents_1.WebRTCEvents.IncomingPropose,
|
|
91
|
+
payload: {
|
|
92
|
+
context: messageContext,
|
|
93
|
+
thid,
|
|
94
|
+
pthid: msg.thread?.parentThreadId,
|
|
95
|
+
media: msg.media,
|
|
96
|
+
data: msg.data,
|
|
97
|
+
topology: msg.topology,
|
|
98
|
+
trickle: msg.trickle,
|
|
99
|
+
policy: msg.policy,
|
|
100
|
+
iceServers: msg.iceServers,
|
|
101
|
+
reason: msg.reason,
|
|
102
|
+
},
|
|
47
103
|
});
|
|
48
104
|
return;
|
|
49
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Process incoming offer message
|
|
108
|
+
*/
|
|
50
109
|
async processOffer(messageContext) {
|
|
51
110
|
const connection = messageContext.assertReadyConnection();
|
|
52
111
|
const thid = messageContext.message.threadId;
|
|
112
|
+
const msg = messageContext.message;
|
|
53
113
|
const record = new WebRTCCallRecord_1.WebRTCCallRecord({
|
|
54
114
|
connectionId: connection.id,
|
|
55
115
|
threadId: thid,
|
|
@@ -62,16 +122,22 @@ let WebRTCService = class WebRTCService {
|
|
|
62
122
|
payload: {
|
|
63
123
|
context: messageContext,
|
|
64
124
|
thid,
|
|
65
|
-
pthid:
|
|
66
|
-
sdp:
|
|
67
|
-
iceServers:
|
|
125
|
+
pthid: msg.thread?.parentThreadId,
|
|
126
|
+
sdp: msg.sdp,
|
|
127
|
+
iceServers: msg.iceServers,
|
|
128
|
+
policy: msg.policy,
|
|
129
|
+
trickle: msg.trickle,
|
|
68
130
|
},
|
|
69
131
|
});
|
|
70
132
|
return;
|
|
71
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* Process incoming answer message
|
|
136
|
+
*/
|
|
72
137
|
async processAnswer(messageContext) {
|
|
73
138
|
const connection = messageContext.assertReadyConnection();
|
|
74
139
|
const thid = messageContext.message.threadId;
|
|
140
|
+
const msg = messageContext.message;
|
|
75
141
|
const [record] = await this.repo.findByQuery(messageContext.agentContext, {
|
|
76
142
|
connectionId: connection.id,
|
|
77
143
|
threadId: thid,
|
|
@@ -82,10 +148,19 @@ let WebRTCService = class WebRTCService {
|
|
|
82
148
|
}
|
|
83
149
|
this.events.emit(messageContext.agentContext, {
|
|
84
150
|
type: WebRTCEvents_1.WebRTCEvents.IncomingAnswer,
|
|
85
|
-
payload: {
|
|
151
|
+
payload: {
|
|
152
|
+
context: messageContext,
|
|
153
|
+
thid,
|
|
154
|
+
pthid: msg.thread?.parentThreadId,
|
|
155
|
+
sdp: msg.sdp,
|
|
156
|
+
iceServers: msg.iceServers,
|
|
157
|
+
},
|
|
86
158
|
});
|
|
87
159
|
return;
|
|
88
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* Process incoming ICE candidate message
|
|
163
|
+
*/
|
|
89
164
|
async processIce(messageContext) {
|
|
90
165
|
const thid = messageContext.message.threadId;
|
|
91
166
|
this.events.emit(messageContext.agentContext, {
|
|
@@ -100,6 +175,29 @@ let WebRTCService = class WebRTCService {
|
|
|
100
175
|
});
|
|
101
176
|
return;
|
|
102
177
|
}
|
|
178
|
+
/**
|
|
179
|
+
* Process incoming renegotiate message
|
|
180
|
+
*/
|
|
181
|
+
async processRenegotiate(messageContext) {
|
|
182
|
+
const thid = messageContext.message.threadId;
|
|
183
|
+
const msg = messageContext.message;
|
|
184
|
+
this.events.emit(messageContext.agentContext, {
|
|
185
|
+
type: WebRTCEvents_1.WebRTCEvents.RenegotiateRequested,
|
|
186
|
+
payload: {
|
|
187
|
+
context: messageContext,
|
|
188
|
+
thid,
|
|
189
|
+
pthid: msg.thread?.parentThreadId,
|
|
190
|
+
reason: msg.reason,
|
|
191
|
+
iceRestart: msg.iceRestart,
|
|
192
|
+
iceServers: msg.iceServers,
|
|
193
|
+
policy: msg.policy,
|
|
194
|
+
},
|
|
195
|
+
});
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Process incoming end call message
|
|
200
|
+
*/
|
|
103
201
|
async processEnd(messageContext) {
|
|
104
202
|
const connection = messageContext.assertReadyConnection();
|
|
105
203
|
const thid = messageContext.message.threadId;
|
|
@@ -113,7 +211,12 @@ let WebRTCService = class WebRTCService {
|
|
|
113
211
|
}
|
|
114
212
|
this.events.emit(messageContext.agentContext, {
|
|
115
213
|
type: WebRTCEvents_1.WebRTCEvents.CallEnded,
|
|
116
|
-
payload: {
|
|
214
|
+
payload: {
|
|
215
|
+
context: messageContext,
|
|
216
|
+
thid,
|
|
217
|
+
pthid: messageContext.message.thread?.parentThreadId,
|
|
218
|
+
reason: messageContext.message.reason,
|
|
219
|
+
},
|
|
117
220
|
});
|
|
118
221
|
return;
|
|
119
222
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebRTCService.js","sourceRoot":"","sources":["../../../src/webrtc/services/WebRTCService.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA,uCAAqC;AACrC,yCAA6C;AAE7C,
|
|
1
|
+
{"version":3,"file":"WebRTCService.js","sourceRoot":"","sources":["../../../src/webrtc/services/WebRTCService.ts"],"names":[],"mappings":"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"}
|