@absolutejs/voice 0.0.22-beta.26 → 0.0.22-beta.28
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/angular/index.js +48 -2
- package/dist/angular/voice-stream.service.d.ts +2 -0
- package/dist/client/actions.d.ts +22 -0
- package/dist/client/connection.d.ts +3 -0
- package/dist/client/htmxBootstrap.js +44 -2
- package/dist/client/index.js +44 -2
- package/dist/index.js +63 -0
- package/dist/react/index.js +48 -2
- package/dist/react/useVoiceController.d.ts +2 -0
- package/dist/react/useVoiceStream.d.ts +2 -0
- package/dist/svelte/index.js +44 -2
- package/dist/testing/index.js +63 -2
- package/dist/types.d.ts +23 -2
- package/dist/vue/index.js +48 -2
- package/dist/vue/useVoiceStream.d.ts +2 -0
- package/package.json +1 -1
package/dist/vue/index.js
CHANGED
|
@@ -120,6 +120,12 @@ var serverMessageToAction = (message) => {
|
|
|
120
120
|
sessionId: message.sessionId,
|
|
121
121
|
type: "complete"
|
|
122
122
|
};
|
|
123
|
+
case "call_lifecycle":
|
|
124
|
+
return {
|
|
125
|
+
event: message.event,
|
|
126
|
+
sessionId: message.sessionId,
|
|
127
|
+
type: "call_lifecycle"
|
|
128
|
+
};
|
|
123
129
|
case "error":
|
|
124
130
|
return {
|
|
125
131
|
message: normalizeErrorMessage(message.message),
|
|
@@ -163,7 +169,7 @@ var DEFAULT_SCENARIO_QUERY_PARAM = "scenarioId";
|
|
|
163
169
|
var noop = () => {};
|
|
164
170
|
var noopUnsubscribe = () => noop;
|
|
165
171
|
var NOOP_CONNECTION = {
|
|
166
|
-
|
|
172
|
+
callControl: noop,
|
|
167
173
|
close: noop,
|
|
168
174
|
endTurn: noop,
|
|
169
175
|
getReadyState: () => WS_CLOSED,
|
|
@@ -171,6 +177,7 @@ var NOOP_CONNECTION = {
|
|
|
171
177
|
getSessionId: () => "",
|
|
172
178
|
send: noop,
|
|
173
179
|
sendAudio: noop,
|
|
180
|
+
start: () => {},
|
|
174
181
|
subscribe: noopUnsubscribe
|
|
175
182
|
};
|
|
176
183
|
var createSessionId = () => crypto.randomUUID();
|
|
@@ -192,6 +199,7 @@ var isVoiceServerMessage = (value) => {
|
|
|
192
199
|
switch (value.type) {
|
|
193
200
|
case "audio":
|
|
194
201
|
case "assistant":
|
|
202
|
+
case "call_lifecycle":
|
|
195
203
|
case "complete":
|
|
196
204
|
case "error":
|
|
197
205
|
case "final":
|
|
@@ -332,6 +340,12 @@ var createVoiceConnection = (path, options = {}) => {
|
|
|
332
340
|
const endTurn = () => {
|
|
333
341
|
send({ type: "end_turn" });
|
|
334
342
|
};
|
|
343
|
+
const callControl = (message) => {
|
|
344
|
+
send({
|
|
345
|
+
...message,
|
|
346
|
+
type: "call_control"
|
|
347
|
+
});
|
|
348
|
+
};
|
|
335
349
|
const close = () => {
|
|
336
350
|
clearTimers();
|
|
337
351
|
if (state.ws) {
|
|
@@ -349,7 +363,7 @@ var createVoiceConnection = (path, options = {}) => {
|
|
|
349
363
|
};
|
|
350
364
|
connect();
|
|
351
365
|
return {
|
|
352
|
-
|
|
366
|
+
callControl,
|
|
353
367
|
close,
|
|
354
368
|
endTurn,
|
|
355
369
|
getReadyState: () => state.ws?.readyState ?? WS_CLOSED,
|
|
@@ -357,6 +371,7 @@ var createVoiceConnection = (path, options = {}) => {
|
|
|
357
371
|
getSessionId: () => state.sessionId,
|
|
358
372
|
send,
|
|
359
373
|
sendAudio,
|
|
374
|
+
start,
|
|
360
375
|
subscribe
|
|
361
376
|
};
|
|
362
377
|
};
|
|
@@ -365,6 +380,7 @@ var createVoiceConnection = (path, options = {}) => {
|
|
|
365
380
|
var createInitialState = () => ({
|
|
366
381
|
assistantAudio: [],
|
|
367
382
|
assistantTexts: [],
|
|
383
|
+
call: null,
|
|
368
384
|
error: null,
|
|
369
385
|
isConnected: false,
|
|
370
386
|
scenarioId: null,
|
|
@@ -408,6 +424,20 @@ var createVoiceStreamStore = () => {
|
|
|
408
424
|
status: "completed"
|
|
409
425
|
};
|
|
410
426
|
break;
|
|
427
|
+
case "call_lifecycle":
|
|
428
|
+
state = {
|
|
429
|
+
...state,
|
|
430
|
+
call: {
|
|
431
|
+
...state.call,
|
|
432
|
+
disposition: action.event.type === "end" ? action.event.disposition : state.call?.disposition,
|
|
433
|
+
endedAt: action.event.type === "end" ? action.event.at : state.call?.endedAt,
|
|
434
|
+
events: [...state.call?.events ?? [], action.event],
|
|
435
|
+
lastEventAt: action.event.at,
|
|
436
|
+
startedAt: state.call?.startedAt ?? action.event.at
|
|
437
|
+
},
|
|
438
|
+
sessionId: action.sessionId
|
|
439
|
+
};
|
|
440
|
+
break;
|
|
411
441
|
case "connected":
|
|
412
442
|
state = {
|
|
413
443
|
...state,
|
|
@@ -494,6 +524,9 @@ var createVoiceStream = (path, options = {}) => {
|
|
|
494
524
|
}
|
|
495
525
|
});
|
|
496
526
|
return {
|
|
527
|
+
callControl(message) {
|
|
528
|
+
connection.callControl(message);
|
|
529
|
+
},
|
|
497
530
|
close() {
|
|
498
531
|
unsubscribeConnection();
|
|
499
532
|
connection.close();
|
|
@@ -537,6 +570,9 @@ var createVoiceStream = (path, options = {}) => {
|
|
|
537
570
|
get assistantAudio() {
|
|
538
571
|
return store.getSnapshot().assistantAudio;
|
|
539
572
|
},
|
|
573
|
+
get call() {
|
|
574
|
+
return store.getSnapshot().call;
|
|
575
|
+
},
|
|
540
576
|
sendAudio(audio) {
|
|
541
577
|
connection.sendAudio(audio);
|
|
542
578
|
},
|
|
@@ -554,6 +590,7 @@ var useVoiceStream = (path, options = {}) => {
|
|
|
554
590
|
const stream = createVoiceStream(path, options);
|
|
555
591
|
const assistantAudio = shallowRef([]);
|
|
556
592
|
const assistantTexts = shallowRef([]);
|
|
593
|
+
const call = shallowRef(null);
|
|
557
594
|
const error = ref(null);
|
|
558
595
|
const isConnected = ref(false);
|
|
559
596
|
const partial = ref("");
|
|
@@ -563,6 +600,7 @@ var useVoiceStream = (path, options = {}) => {
|
|
|
563
600
|
const sync = () => {
|
|
564
601
|
assistantAudio.value = [...stream.assistantAudio];
|
|
565
602
|
assistantTexts.value = [...stream.assistantTexts];
|
|
603
|
+
call.value = stream.call;
|
|
566
604
|
error.value = stream.error;
|
|
567
605
|
isConnected.value = stream.isConnected;
|
|
568
606
|
partial.value = stream.partial;
|
|
@@ -580,6 +618,8 @@ var useVoiceStream = (path, options = {}) => {
|
|
|
580
618
|
return {
|
|
581
619
|
assistantAudio,
|
|
582
620
|
assistantTexts,
|
|
621
|
+
call,
|
|
622
|
+
callControl: (message) => stream.callControl(message),
|
|
583
623
|
close: () => destroy(),
|
|
584
624
|
endTurn: () => stream.endTurn(),
|
|
585
625
|
error,
|
|
@@ -1056,6 +1096,7 @@ var resolveVoiceRuntimePreset = (name = "default") => {
|
|
|
1056
1096
|
var createInitialState2 = (stream) => ({
|
|
1057
1097
|
assistantAudio: [...stream.assistantAudio],
|
|
1058
1098
|
assistantTexts: [...stream.assistantTexts],
|
|
1099
|
+
call: stream.call,
|
|
1059
1100
|
error: stream.error,
|
|
1060
1101
|
isConnected: stream.isConnected,
|
|
1061
1102
|
isRecording: false,
|
|
@@ -1085,6 +1126,7 @@ var createVoiceController = (path, options = {}) => {
|
|
|
1085
1126
|
...state,
|
|
1086
1127
|
assistantAudio: [...stream.assistantAudio],
|
|
1087
1128
|
assistantTexts: [...stream.assistantTexts],
|
|
1129
|
+
call: stream.call,
|
|
1088
1130
|
error: stream.error,
|
|
1089
1131
|
isConnected: stream.isConnected,
|
|
1090
1132
|
partial: stream.partial,
|
|
@@ -1162,6 +1204,7 @@ var createVoiceController = (path, options = {}) => {
|
|
|
1162
1204
|
bindHTMX(bindingOptions) {
|
|
1163
1205
|
return bindVoiceHTMX(stream, bindingOptions);
|
|
1164
1206
|
},
|
|
1207
|
+
callControl: (message) => stream.callControl(message),
|
|
1165
1208
|
close,
|
|
1166
1209
|
endTurn: () => stream.endTurn(),
|
|
1167
1210
|
get error() {
|
|
@@ -1214,6 +1257,9 @@ var createVoiceController = (path, options = {}) => {
|
|
|
1214
1257
|
},
|
|
1215
1258
|
get assistantAudio() {
|
|
1216
1259
|
return state.assistantAudio;
|
|
1260
|
+
},
|
|
1261
|
+
get call() {
|
|
1262
|
+
return state.call;
|
|
1217
1263
|
}
|
|
1218
1264
|
};
|
|
1219
1265
|
};
|
|
@@ -12,6 +12,8 @@ export declare const useVoiceStream: <TResult = unknown>(path: string, options?:
|
|
|
12
12
|
turnId?: string;
|
|
13
13
|
}[]>;
|
|
14
14
|
assistantTexts: import("vue").ShallowRef<string[], string[]>;
|
|
15
|
+
call: import("vue").ShallowRef<import("..").VoiceCallLifecycleState | null, import("..").VoiceCallLifecycleState | null>;
|
|
16
|
+
callControl: (message: Parameters<(message: Omit<import("..").VoiceClientCallControlMessage, "type">) => void>[0]) => void;
|
|
15
17
|
close: () => void;
|
|
16
18
|
endTurn: () => void;
|
|
17
19
|
error: import("vue").Ref<string | null, string | null>;
|