sera-ai 1.0.29 → 1.0.30
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/index.js +34 -44
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +34 -44
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -422,7 +422,7 @@ var useAudioRecovery = (reprocessSession) => {
|
|
|
422
422
|
const DB_VERSION = 1;
|
|
423
423
|
const createAudioEncodingWorker = () => {
|
|
424
424
|
const workerCode = `
|
|
425
|
-
console.log("Audio encoding worker loaded");
|
|
425
|
+
console.log("[SERA] Audio encoding worker loaded");
|
|
426
426
|
|
|
427
427
|
self.onmessage = function (e) {
|
|
428
428
|
const { command, data, id } = e.data;
|
|
@@ -441,11 +441,7 @@ var useAudioRecovery = (reprocessSession) => {
|
|
|
441
441
|
const float32Array =
|
|
442
442
|
audioData instanceof Float32Array ? audioData : new Float32Array(audioData);
|
|
443
443
|
|
|
444
|
-
console.log("Worker encoding audio
|
|
445
|
-
length: float32Array.length,
|
|
446
|
-
firstSamples: Array.from(float32Array.slice(0, 10)),
|
|
447
|
-
hasValidData: Array.from(float32Array).some((sample) => sample !== 0),
|
|
448
|
-
});
|
|
444
|
+
console.log("[SERA] Worker encoding audio | samples=" + float32Array.length);
|
|
449
445
|
|
|
450
446
|
const buffer = new ArrayBuffer(float32Array.length * 4);
|
|
451
447
|
const view = new Float32Array(buffer);
|
|
@@ -499,11 +495,7 @@ var useAudioRecovery = (reprocessSession) => {
|
|
|
499
495
|
|
|
500
496
|
const float32Result = new Float32Array(bytes.buffer);
|
|
501
497
|
|
|
502
|
-
console.log("Worker decoded audio
|
|
503
|
-
length: float32Result.length,
|
|
504
|
-
firstSamples: Array.from(float32Result.slice(0, 10)),
|
|
505
|
-
hasValidData: Array.from(float32Result).some((sample) => sample !== 0),
|
|
506
|
-
});
|
|
498
|
+
console.log("[SERA] Worker decoded audio | samples=" + float32Result.length);
|
|
507
499
|
|
|
508
500
|
self.postMessage({
|
|
509
501
|
type: "complete",
|
|
@@ -528,7 +520,7 @@ var useAudioRecovery = (reprocessSession) => {
|
|
|
528
520
|
});
|
|
529
521
|
}
|
|
530
522
|
} catch (error) {
|
|
531
|
-
console.error("
|
|
523
|
+
console.error("[SERA] Audio encoding worker error:", error);
|
|
532
524
|
self.postMessage({
|
|
533
525
|
type: "error",
|
|
534
526
|
id,
|
|
@@ -539,7 +531,7 @@ var useAudioRecovery = (reprocessSession) => {
|
|
|
539
531
|
};
|
|
540
532
|
|
|
541
533
|
self.onerror = function (error) {
|
|
542
|
-
console.error("
|
|
534
|
+
console.error("[SERA] Audio encoding worker script error:", error);
|
|
543
535
|
self.postMessage({
|
|
544
536
|
type: "error",
|
|
545
537
|
error: error.message || "Unknown worker error",
|
|
@@ -559,7 +551,7 @@ var useAudioRecovery = (reprocessSession) => {
|
|
|
559
551
|
const { type, id, result, error, progress, message } = e.data;
|
|
560
552
|
const operation = pendingOperations.current.get(id);
|
|
561
553
|
if (!operation) {
|
|
562
|
-
console.warn(`No pending operation found
|
|
554
|
+
console.warn(`[SERA] No pending worker operation found | id=${id}`);
|
|
563
555
|
return;
|
|
564
556
|
}
|
|
565
557
|
switch (type) {
|
|
@@ -576,16 +568,16 @@ var useAudioRecovery = (reprocessSession) => {
|
|
|
576
568
|
}
|
|
577
569
|
};
|
|
578
570
|
workerRef.current.onerror = (error) => {
|
|
579
|
-
console.error("Audio encoding worker error:", error);
|
|
571
|
+
console.error("[SERA] Audio encoding worker error:", error);
|
|
580
572
|
for (const [id, operation] of pendingOperations.current) {
|
|
581
573
|
operation.reject(new Error("Worker crashed"));
|
|
582
574
|
}
|
|
583
575
|
pendingOperations.current.clear();
|
|
584
576
|
workerRef.current = null;
|
|
585
577
|
};
|
|
586
|
-
console.log("
|
|
578
|
+
console.log("[SERA] Audio encoding worker initialized");
|
|
587
579
|
} catch (error) {
|
|
588
|
-
console.error("
|
|
580
|
+
console.error("[SERA] Audio encoding worker initialization failed:", error);
|
|
589
581
|
workerRef.current = null;
|
|
590
582
|
}
|
|
591
583
|
}
|
|
@@ -595,7 +587,7 @@ var useAudioRecovery = (reprocessSession) => {
|
|
|
595
587
|
async (audioData) => {
|
|
596
588
|
const worker = initWorker();
|
|
597
589
|
if (!worker) {
|
|
598
|
-
console.warn("Worker not available, falling back to main thread encoding");
|
|
590
|
+
console.warn("[SERA] Worker not available, falling back to main thread encoding");
|
|
599
591
|
return float32ArrayToBase64(audioData);
|
|
600
592
|
}
|
|
601
593
|
const operationId = `encode_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
@@ -635,7 +627,7 @@ var useAudioRecovery = (reprocessSession) => {
|
|
|
635
627
|
async (base64Data) => {
|
|
636
628
|
const worker = initWorker();
|
|
637
629
|
if (!worker) {
|
|
638
|
-
console.warn("Worker not available, falling back to main thread decoding");
|
|
630
|
+
console.warn("[SERA] Worker not available, falling back to main thread decoding");
|
|
639
631
|
return base64ToFloat32Array(base64Data);
|
|
640
632
|
}
|
|
641
633
|
const operationId = `decode_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
@@ -677,7 +669,7 @@ var useAudioRecovery = (reprocessSession) => {
|
|
|
677
669
|
return new Promise((resolve, reject) => {
|
|
678
670
|
const request = indexedDB.open(DB_NAME, DB_VERSION);
|
|
679
671
|
request.onerror = () => {
|
|
680
|
-
console.error("Failed to open IndexedDB:", request.error);
|
|
672
|
+
console.error("[SERA] Failed to open IndexedDB:", request.error);
|
|
681
673
|
reject(request.error);
|
|
682
674
|
};
|
|
683
675
|
request.onsuccess = () => {
|
|
@@ -735,16 +727,16 @@ var useAudioRecovery = (reprocessSession) => {
|
|
|
735
727
|
await new Promise((resolve, reject) => {
|
|
736
728
|
const request = store.add(session);
|
|
737
729
|
request.onsuccess = () => {
|
|
738
|
-
console.log(`
|
|
730
|
+
console.log(`[SERA] Audio session created | sessionId=${sessionId}`);
|
|
739
731
|
resolve();
|
|
740
732
|
};
|
|
741
733
|
request.onerror = () => {
|
|
742
|
-
console.error("Failed to create session:", request.error);
|
|
734
|
+
console.error("[SERA] Failed to create audio session:", request.error);
|
|
743
735
|
reject(request.error);
|
|
744
736
|
};
|
|
745
737
|
});
|
|
746
738
|
} catch (error) {
|
|
747
|
-
console.error("Error creating session:", error);
|
|
739
|
+
console.error("[SERA] Error creating audio session:", error);
|
|
748
740
|
throw error;
|
|
749
741
|
}
|
|
750
742
|
},
|
|
@@ -785,7 +777,7 @@ var useAudioRecovery = (reprocessSession) => {
|
|
|
785
777
|
getRequest.onerror = () => reject(getRequest.error);
|
|
786
778
|
});
|
|
787
779
|
} catch (error) {
|
|
788
|
-
console.error(`Failed to append chunk
|
|
780
|
+
console.error(`[SERA] Failed to append audio chunk | sequence=${sequence}:`, error);
|
|
789
781
|
}
|
|
790
782
|
},
|
|
791
783
|
[initDB, encodeInWorker]
|
|
@@ -804,26 +796,24 @@ var useAudioRecovery = (reprocessSession) => {
|
|
|
804
796
|
if (!session) return false;
|
|
805
797
|
const audioChunks = [];
|
|
806
798
|
const chunkIndices = Object.keys(session.audioChunks).map(Number).sort((a, b) => a - b);
|
|
807
|
-
console.log(
|
|
808
|
-
`Found ${chunkIndices.length} chunks with indices: ${chunkIndices.slice(0, 10)}...`
|
|
809
|
-
);
|
|
799
|
+
console.log(`[SERA] Retrying session | sessionId=${sessionId}, chunks=${chunkIndices.length}`);
|
|
810
800
|
for (const index of chunkIndices) {
|
|
811
801
|
try {
|
|
812
802
|
const base64Data = session.audioChunks[index];
|
|
813
803
|
const float32Array = await decodeInWorker(base64Data);
|
|
814
804
|
audioChunks.push(float32Array);
|
|
815
805
|
} catch (error) {
|
|
816
|
-
console.error(`Failed to decode chunk
|
|
806
|
+
console.error(`[SERA] Failed to decode audio chunk | index=${index}:`, error);
|
|
817
807
|
}
|
|
818
808
|
}
|
|
819
809
|
if (audioChunks.length === 0) {
|
|
820
|
-
console.error("No valid chunks found");
|
|
810
|
+
console.error("[SERA] No valid audio chunks found for retry");
|
|
821
811
|
return false;
|
|
822
812
|
}
|
|
823
813
|
await reprocessSession(audioChunks, session.metadata);
|
|
824
814
|
return true;
|
|
825
815
|
} catch (error) {
|
|
826
|
-
console.error("
|
|
816
|
+
console.error("[SERA] Session retry failed:", error);
|
|
827
817
|
return false;
|
|
828
818
|
}
|
|
829
819
|
},
|
|
@@ -838,16 +828,16 @@ var useAudioRecovery = (reprocessSession) => {
|
|
|
838
828
|
await new Promise((resolve, reject) => {
|
|
839
829
|
const request = store.delete(sessionId);
|
|
840
830
|
request.onsuccess = () => {
|
|
841
|
-
console.log(`Deleted completed session
|
|
831
|
+
console.log(`[SERA] Deleted completed session | sessionId=${sessionId}`);
|
|
842
832
|
resolve();
|
|
843
833
|
};
|
|
844
834
|
request.onerror = () => {
|
|
845
|
-
console.error("Failed to delete session:", request.error);
|
|
835
|
+
console.error("[SERA] Failed to delete session:", request.error);
|
|
846
836
|
reject(request.error);
|
|
847
837
|
};
|
|
848
838
|
});
|
|
849
839
|
} catch (error) {
|
|
850
|
-
console.error("Error marking session complete:", error);
|
|
840
|
+
console.error("[SERA] Error marking session complete:", error);
|
|
851
841
|
throw error;
|
|
852
842
|
}
|
|
853
843
|
},
|
|
@@ -871,7 +861,7 @@ var useAudioRecovery = (reprocessSession) => {
|
|
|
871
861
|
session.lastError = error;
|
|
872
862
|
const updateRequest = store.put(session);
|
|
873
863
|
updateRequest.onsuccess = () => {
|
|
874
|
-
console.log(`
|
|
864
|
+
console.log(`[SERA] Session marked as failed | sessionId=${sessionId}`);
|
|
875
865
|
resolve();
|
|
876
866
|
};
|
|
877
867
|
updateRequest.onerror = () => reject(updateRequest.error);
|
|
@@ -879,7 +869,7 @@ var useAudioRecovery = (reprocessSession) => {
|
|
|
879
869
|
getRequest.onerror = () => reject(getRequest.error);
|
|
880
870
|
});
|
|
881
871
|
} catch (error2) {
|
|
882
|
-
console.error("Error marking session failed:", error2);
|
|
872
|
+
console.error("[SERA] Error marking session failed:", error2);
|
|
883
873
|
throw error2;
|
|
884
874
|
}
|
|
885
875
|
},
|
|
@@ -894,16 +884,16 @@ var useAudioRecovery = (reprocessSession) => {
|
|
|
894
884
|
await new Promise((resolve, reject) => {
|
|
895
885
|
const request = store.delete(sessionId);
|
|
896
886
|
request.onsuccess = () => {
|
|
897
|
-
console.log(`Deleted session
|
|
887
|
+
console.log(`[SERA] Deleted session | sessionId=${sessionId}`);
|
|
898
888
|
resolve();
|
|
899
889
|
};
|
|
900
890
|
request.onerror = () => {
|
|
901
|
-
console.error("Failed to delete session:", request.error);
|
|
891
|
+
console.error("[SERA] Failed to delete session:", request.error);
|
|
902
892
|
reject(request.error);
|
|
903
893
|
};
|
|
904
894
|
});
|
|
905
895
|
} catch (error) {
|
|
906
|
-
console.error("Error deleting session:", error);
|
|
896
|
+
console.error("[SERA] Error deleting session:", error);
|
|
907
897
|
throw error;
|
|
908
898
|
}
|
|
909
899
|
},
|
|
@@ -921,12 +911,12 @@ var useAudioRecovery = (reprocessSession) => {
|
|
|
921
911
|
resolve(request.result[0]);
|
|
922
912
|
};
|
|
923
913
|
request.onerror = () => {
|
|
924
|
-
console.error("Failed to get failed sessions:", request.error);
|
|
914
|
+
console.error("[SERA] Failed to get failed sessions:", request.error);
|
|
925
915
|
reject(request.error);
|
|
926
916
|
};
|
|
927
917
|
});
|
|
928
918
|
} catch (error) {
|
|
929
|
-
console.error("Error getting failed sessions:", error);
|
|
919
|
+
console.error("[SERA] Error getting failed sessions:", error);
|
|
930
920
|
return null;
|
|
931
921
|
}
|
|
932
922
|
}, [initDB]);
|
|
@@ -942,22 +932,22 @@ var useAudioRecovery = (reprocessSession) => {
|
|
|
942
932
|
await new Promise((resolve, reject) => {
|
|
943
933
|
const request = store.clear();
|
|
944
934
|
request.onsuccess = () => {
|
|
945
|
-
console.log("Cleared all audio sessions");
|
|
935
|
+
console.log("[SERA] Cleared all audio sessions");
|
|
946
936
|
resolve();
|
|
947
937
|
};
|
|
948
938
|
request.onerror = () => {
|
|
949
|
-
console.error("Failed to clear sessions:", request.error);
|
|
939
|
+
console.error("[SERA] Failed to clear sessions:", request.error);
|
|
950
940
|
reject(request.error);
|
|
951
941
|
};
|
|
952
942
|
});
|
|
953
943
|
} catch (error) {
|
|
954
|
-
console.error("Error clearing sessions:", error);
|
|
944
|
+
console.error("[SERA] Error clearing sessions:", error);
|
|
955
945
|
throw error;
|
|
956
946
|
}
|
|
957
947
|
}, [initDB]);
|
|
958
948
|
const cleanup = React3.useCallback(() => {
|
|
959
949
|
if (workerRef.current) {
|
|
960
|
-
console.log("
|
|
950
|
+
console.log("[SERA] Cleaning up audio encoding worker");
|
|
961
951
|
workerRef.current.terminate();
|
|
962
952
|
workerRef.current = null;
|
|
963
953
|
}
|