@absolutejs/voice 0.0.11 → 0.0.13
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 +6 -0
- package/dist/client/index.js +14 -1
- package/dist/react/index.js +16 -17
- package/dist/react/useVoiceStream.d.ts +4 -4
- package/dist/svelte/index.js +6 -0
- package/dist/types.d.ts +2 -0
- package/dist/vue/index.js +6 -0
- package/package.json +1 -1
package/dist/angular/index.js
CHANGED
|
@@ -422,6 +422,12 @@ var createVoiceStream = (path, options = {}) => {
|
|
|
422
422
|
get error() {
|
|
423
423
|
return store.getSnapshot().error;
|
|
424
424
|
},
|
|
425
|
+
getServerSnapshot() {
|
|
426
|
+
return store.getServerSnapshot();
|
|
427
|
+
},
|
|
428
|
+
getSnapshot() {
|
|
429
|
+
return store.getSnapshot();
|
|
430
|
+
},
|
|
425
431
|
get isConnected() {
|
|
426
432
|
return store.getSnapshot().isConnected;
|
|
427
433
|
},
|
package/dist/client/index.js
CHANGED
|
@@ -418,6 +418,12 @@ var createVoiceStream = (path, options = {}) => {
|
|
|
418
418
|
get error() {
|
|
419
419
|
return store.getSnapshot().error;
|
|
420
420
|
},
|
|
421
|
+
getServerSnapshot() {
|
|
422
|
+
return store.getServerSnapshot();
|
|
423
|
+
},
|
|
424
|
+
getSnapshot() {
|
|
425
|
+
return store.getSnapshot();
|
|
426
|
+
},
|
|
421
427
|
get isConnected() {
|
|
422
428
|
return store.getSnapshot().isConnected;
|
|
423
429
|
},
|
|
@@ -533,12 +539,19 @@ var createMicrophoneCapture = (options) => {
|
|
|
533
539
|
let processorNode = null;
|
|
534
540
|
let mediaStream = null;
|
|
535
541
|
const start = async () => {
|
|
542
|
+
if (typeof navigator === "undefined" || !navigator.mediaDevices?.getUserMedia) {
|
|
543
|
+
throw new Error("Browser microphone capture requires navigator.mediaDevices.getUserMedia.");
|
|
544
|
+
}
|
|
545
|
+
const AudioContextCtor = (typeof window !== "undefined" ? window.AudioContext ?? window.webkitAudioContext : undefined) ?? AudioContext;
|
|
546
|
+
if (!AudioContextCtor) {
|
|
547
|
+
throw new Error("Browser microphone capture requires AudioContext support.");
|
|
548
|
+
}
|
|
536
549
|
mediaStream = await navigator.mediaDevices.getUserMedia({
|
|
537
550
|
audio: {
|
|
538
551
|
channelCount: options.channelCount ?? 1
|
|
539
552
|
}
|
|
540
553
|
});
|
|
541
|
-
audioContext = new
|
|
554
|
+
audioContext = new AudioContextCtor;
|
|
542
555
|
sourceNode = audioContext.createMediaStreamSource(mediaStream);
|
|
543
556
|
processorNode = audioContext.createScriptProcessor(4096, 1, 1);
|
|
544
557
|
processorNode.onaudioprocess = (event) => {
|
package/dist/react/index.js
CHANGED
|
@@ -422,6 +422,12 @@ var createVoiceStream = (path, options = {}) => {
|
|
|
422
422
|
get error() {
|
|
423
423
|
return store.getSnapshot().error;
|
|
424
424
|
},
|
|
425
|
+
getServerSnapshot() {
|
|
426
|
+
return store.getServerSnapshot();
|
|
427
|
+
},
|
|
428
|
+
getSnapshot() {
|
|
429
|
+
return store.getSnapshot();
|
|
430
|
+
},
|
|
425
431
|
get isConnected() {
|
|
426
432
|
return store.getSnapshot().isConnected;
|
|
427
433
|
},
|
|
@@ -453,6 +459,15 @@ var createVoiceStream = (path, options = {}) => {
|
|
|
453
459
|
};
|
|
454
460
|
|
|
455
461
|
// src/react/useVoiceStream.tsx
|
|
462
|
+
var EMPTY_SNAPSHOT = {
|
|
463
|
+
assistantTexts: [],
|
|
464
|
+
error: null,
|
|
465
|
+
isConnected: false,
|
|
466
|
+
partial: "",
|
|
467
|
+
sessionId: "",
|
|
468
|
+
status: "idle",
|
|
469
|
+
turns: []
|
|
470
|
+
};
|
|
456
471
|
var useVoiceStream = (path, options = {}) => {
|
|
457
472
|
const streamRef = useRef(null);
|
|
458
473
|
if (!streamRef.current) {
|
|
@@ -460,23 +475,7 @@ var useVoiceStream = (path, options = {}) => {
|
|
|
460
475
|
}
|
|
461
476
|
const stream = streamRef.current;
|
|
462
477
|
useEffect(() => () => stream.close(), [stream]);
|
|
463
|
-
const snapshot = useSyncExternalStore(stream.subscribe,
|
|
464
|
-
assistantTexts: stream.assistantTexts,
|
|
465
|
-
error: stream.error,
|
|
466
|
-
isConnected: stream.isConnected,
|
|
467
|
-
partial: stream.partial,
|
|
468
|
-
sessionId: stream.sessionId,
|
|
469
|
-
status: stream.status,
|
|
470
|
-
turns: stream.turns
|
|
471
|
-
}), () => ({
|
|
472
|
-
assistantTexts: [],
|
|
473
|
-
error: null,
|
|
474
|
-
isConnected: false,
|
|
475
|
-
partial: "",
|
|
476
|
-
sessionId: "",
|
|
477
|
-
status: "idle",
|
|
478
|
-
turns: []
|
|
479
|
-
}));
|
|
478
|
+
const snapshot = useSyncExternalStore(stream.subscribe, stream.getSnapshot, stream.getServerSnapshot) ?? EMPTY_SNAPSHOT;
|
|
480
479
|
return {
|
|
481
480
|
...snapshot,
|
|
482
481
|
close: () => stream.close(),
|
|
@@ -3,11 +3,11 @@ export declare const useVoiceStream: <TResult = unknown>(path: string, options?:
|
|
|
3
3
|
close: () => void;
|
|
4
4
|
endTurn: () => void;
|
|
5
5
|
sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
|
|
6
|
-
assistantTexts: string[];
|
|
7
|
-
error: string | null;
|
|
8
|
-
isConnected: boolean;
|
|
9
|
-
partial: string;
|
|
10
6
|
sessionId: string | null;
|
|
11
7
|
status: import("..").VoiceSessionStatus | "idle";
|
|
8
|
+
partial: string;
|
|
12
9
|
turns: import("..").VoiceTurnRecord<TResult>[];
|
|
10
|
+
assistantTexts: string[];
|
|
11
|
+
error: string | null;
|
|
12
|
+
isConnected: boolean;
|
|
13
13
|
};
|
package/dist/svelte/index.js
CHANGED
|
@@ -419,6 +419,12 @@ var createVoiceStream = (path, options = {}) => {
|
|
|
419
419
|
get error() {
|
|
420
420
|
return store.getSnapshot().error;
|
|
421
421
|
},
|
|
422
|
+
getServerSnapshot() {
|
|
423
|
+
return store.getServerSnapshot();
|
|
424
|
+
},
|
|
425
|
+
getSnapshot() {
|
|
426
|
+
return store.getSnapshot();
|
|
427
|
+
},
|
|
422
428
|
get isConnected() {
|
|
423
429
|
return store.getSnapshot().isConnected;
|
|
424
430
|
},
|
package/dist/types.d.ts
CHANGED
|
@@ -330,6 +330,8 @@ export type VoiceStream<TResult = unknown> = {
|
|
|
330
330
|
close: () => void;
|
|
331
331
|
endTurn: () => void;
|
|
332
332
|
error: string | null;
|
|
333
|
+
getServerSnapshot: () => VoiceStreamState<TResult>;
|
|
334
|
+
getSnapshot: () => VoiceStreamState<TResult>;
|
|
333
335
|
isConnected: boolean;
|
|
334
336
|
partial: string;
|
|
335
337
|
sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
|
package/dist/vue/index.js
CHANGED
|
@@ -422,6 +422,12 @@ var createVoiceStream = (path, options = {}) => {
|
|
|
422
422
|
get error() {
|
|
423
423
|
return store.getSnapshot().error;
|
|
424
424
|
},
|
|
425
|
+
getServerSnapshot() {
|
|
426
|
+
return store.getServerSnapshot();
|
|
427
|
+
},
|
|
428
|
+
getSnapshot() {
|
|
429
|
+
return store.getSnapshot();
|
|
430
|
+
},
|
|
425
431
|
get isConnected() {
|
|
426
432
|
return store.getSnapshot().isConnected;
|
|
427
433
|
},
|