@@ -2,6 +2,97 @@ const assert = require("node:assert/strict");
22
33process . env . MIRROR_NOTE_TEST_EXPORTS = "1" ;
44
5- const { nativeHelperWorkingDirectory } = require ( "../main.cjs" ) ;
5+ const {
6+ latestFailedSTTChunks,
7+ latestRetryableSTTChunks,
8+ nativeHelperWorkingDirectory,
9+ normalizeTranscriptSegments,
10+ parseSTTChunkLedgerJSONL,
11+ parseTranscriptJSONL,
12+ serializeTranscriptJSONL,
13+ } = require ( "../main.cjs" ) ;
614
715assert . equal ( nativeHelperWorkingDirectory ( ) , process . cwd ( ) ) ;
16+
17+ const runtimeSegment = {
18+ id : "seg-1" ,
19+ sessionID : "session-a" ,
20+ chunkID : "session-a:chunk:0" ,
21+ eventType : "final_segment" ,
22+ retryState : "completed" ,
23+ startTimeSeconds : 1 ,
24+ endTimeSeconds : 2 ,
25+ text : "hello" ,
26+ source : "microphone" ,
27+ } ;
28+ assert . deepEqual ( normalizeTranscriptSegments ( [ runtimeSegment ] ) [ 0 ] , runtimeSegment ) ;
29+ assert . deepEqual ( parseTranscriptJSONL ( serializeTranscriptJSONL ( [ runtimeSegment ] ) ) [ 0 ] , runtimeSegment ) ;
30+
31+ const ledgerRecords = parseSTTChunkLedgerJSONL ( [
32+ JSON . stringify ( {
33+ sessionID : "session-a" ,
34+ chunkID : "session-a:microphone:0" ,
35+ source : "microphone" ,
36+ chunkIndex : 0 ,
37+ status : "queued" ,
38+ startTimeSeconds : 1 ,
39+ endTimeSeconds : 2 ,
40+ sampleCount : 16000 ,
41+ } ) ,
42+ JSON . stringify ( {
43+ sessionID : "session-a" ,
44+ chunkID : "session-a:microphone:0" ,
45+ source : "microphone" ,
46+ chunkIndex : 0 ,
47+ status : "failed" ,
48+ startTimeSeconds : 1 ,
49+ endTimeSeconds : 2 ,
50+ sampleCount : 16000 ,
51+ error : "boom" ,
52+ } ) ,
53+ JSON . stringify ( {
54+ sessionID : "session-a" ,
55+ chunkID : "session-a:system:1" ,
56+ source : "system" ,
57+ chunkIndex : 1 ,
58+ status : "completed" ,
59+ startTimeSeconds : 3 ,
60+ endTimeSeconds : 4 ,
61+ sampleCount : 16000 ,
62+ segmentCount : 1 ,
63+ } ) ,
64+ ] . join ( "\n" ) ) ;
65+ assert . deepEqual ( latestFailedSTTChunks ( ledgerRecords ) . map ( ( record ) => record . chunkID ) , [
66+ "session-a:microphone:0" ,
67+ ] ) ;
68+ assert . deepEqual (
69+ latestRetryableSTTChunks ( ledgerRecords , new Set ( [ "session-a:system:1" ] ) ) . map ( ( record ) => record . chunkID ) ,
70+ [ "session-a:system:1" ] ,
71+ ) ;
72+
73+ const interruptedLedgerRecords = parseSTTChunkLedgerJSONL ( [
74+ JSON . stringify ( {
75+ sessionID : "session-a" ,
76+ chunkID : "session-a:microphone:2" ,
77+ source : "microphone" ,
78+ chunkIndex : 2 ,
79+ status : "running" ,
80+ startTimeSeconds : 5 ,
81+ endTimeSeconds : 10 ,
82+ sampleCount : 80000 ,
83+ } ) ,
84+ JSON . stringify ( {
85+ sessionID : "session-a" ,
86+ chunkID : "session-a:system:3" ,
87+ source : "system" ,
88+ chunkIndex : 3 ,
89+ status : "queued" ,
90+ startTimeSeconds : 12 ,
91+ endTimeSeconds : 17 ,
92+ sampleCount : 80000 ,
93+ } ) ,
94+ ] . join ( "\n" ) ) ;
95+ assert . deepEqual ( latestRetryableSTTChunks ( interruptedLedgerRecords , new Set ( ) ) . map ( ( record ) => record . chunkID ) , [
96+ "session-a:microphone:2" ,
97+ "session-a:system:3" ,
98+ ] ) ;
0 commit comments