@@ -25,19 +25,6 @@ let processor = null;
2525self . postMessage ( { type : "status" , message : `[Gemma4] Loading transformers.js ${ TRANSFORMERS_URL . split ( '@' ) . pop ( ) } ...` } ) ;
2626console . log ( `[Gemma4 worker] TRANSFORMERS_URL = ${ TRANSFORMERS_URL } ` ) ;
2727
28- // ── Global safety net ────────────────────────────────────────────────────────
29- // Catch any uncaught async rejection (e.g. from the message handler's async fn)
30- // and convert it to a postMessage error so the UI shows a readable status
31- // instead of firing worker.onerror → "AI Worker error: Event".
32- self . addEventListener ( 'unhandledrejection' , ( event ) => {
33- const msg = event . reason && event . reason . message
34- ? event . reason . message
35- : String ( event . reason || 'Unknown error in Gemma4 worker' ) ;
36- console . error ( '[Gemma4 worker] Unhandled rejection:' , msg ) ;
37- self . postMessage ( { type : 'error' , message : `Gemma 4 worker error: ${ msg } ` } ) ;
38- event . preventDefault ( ) ;
39- } ) ;
40-
4128// ============================================
4229// Progress callback factory
4330// ============================================
@@ -86,16 +73,6 @@ async function loadModel() {
8673 read_audio = transformers . read_audio ;
8774 TextStreamer = transformers . TextStreamer ;
8875
89- // ── Verify Gemma 4 classes are available in this version ──
90- if ( ! Gemma4ForConditionalGeneration || ! Gemma4Processor ) {
91- const ver = TRANSFORMERS_URL . split ( '@' ) . pop ( ) ;
92- throw new Error (
93- `Gemma 4 classes not found in transformers.js@${ ver } . ` +
94- `The loaded version does not support Gemma 4 yet. ` +
95- `Try clearing site data and reloading.`
96- ) ;
97- }
98-
9976 // 2. WebGPU detection
10077 let device = "wasm" ;
10178 if ( typeof navigator !== "undefined" && navigator . gpu ) {
@@ -261,47 +238,36 @@ async function generate({ userPrompt, prompt, attachments = [], context, chatHis
261238self . addEventListener ( "message" , async ( event ) => {
262239 const { type } = event . data ;
263240
264- try {
265- switch ( type ) {
266- case "setModelId" :
267- MODEL_ID = event . data . modelId || MODEL_ID ;
268- MODEL_LABEL = event . data . modelLabel || MODEL_LABEL ;
269- break ;
270-
271- case "load" :
272- await loadModel ( ) ;
273- break ;
274-
275- case "generate" :
276- await generate ( event . data ) ;
277- break ;
278-
279- // Compatibility alias used by ai-docgen-generate.js
280- case "process" :
281- await generate ( {
282- prompt : event . data . prompt || event . data . task ,
283- attachments : event . data . attachments || [ ] ,
284- context : event . data . context ,
285- messageId : event . data . messageId ,
286- options : event . data . options || { } ,
287- } ) ;
288- break ;
289-
290- case "ping" :
291- self . postMessage ( { type : "pong" } ) ;
292- break ;
293-
294- default :
295- console . warn ( "Gemma4 worker — unknown message type:" , type ) ;
296- }
297- } catch ( err ) {
298- // Catch synchronous throws from any case and route them as error messages
299- // so they don't escape to worker.onerror (which shows generic "Model unavailable")
300- console . error ( '[Gemma4 worker] Uncaught in message handler:' , err ) ;
301- self . postMessage ( {
302- type : 'error' ,
303- message : `Gemma 4 worker error (${ type } ): ${ err . message } ` ,
304- messageId : event . data . messageId ,
305- } ) ;
241+ switch ( type ) {
242+ case "setModelId" :
243+ MODEL_ID = event . data . modelId || MODEL_ID ;
244+ MODEL_LABEL = event . data . modelLabel || MODEL_LABEL ;
245+ break ;
246+
247+ case "load" :
248+ await loadModel ( ) ;
249+ break ;
250+
251+ case "generate" :
252+ await generate ( event . data ) ;
253+ break ;
254+
255+ // Compatibility alias used by ai-docgen-generate.js
256+ case "process" :
257+ await generate ( {
258+ prompt : event . data . prompt || event . data . task ,
259+ attachments : event . data . attachments || [ ] ,
260+ context : event . data . context ,
261+ messageId : event . data . messageId ,
262+ options : event . data . options || { } ,
263+ } ) ;
264+ break ;
265+
266+ case "ping" :
267+ self . postMessage ( { type : "pong" } ) ;
268+ break ;
269+
270+ default :
271+ console . warn ( "Gemma4 worker — unknown message type:" , type ) ;
306272 }
307273} ) ;
0 commit comments