/* The whole chain as engine.js runs it: split -> liturgy-or-NLLB -> guard. */ import { pipeline, env } from '@huggingface/transformers'; import { createRequire } from 'module'; import os from 'os'; import path from 'path'; import fs from 'fs'; import vm from 'vm'; const require = createRequire(import.meta.url); const Liturgy = require('./liturgy.js'); const Guard = require('./mt-guard.js'); const src = fs.readFileSync('engine.js','utf8'); const sb={console}; vm.createContext(sb); vm.runInContext(src.match(/^const ABBREV_TAIL = .*$/m)[0], sb); const grab=(n)=>{const i=src.indexOf('function '+n+'(');let d=0;for(let k=src.indexOf('{',i);k '+JSON.stringify(sb.splitSentences(text))); for (const lang of LANGS) { const parts=[]; for (const s of sb.splitSentences(text)) { const set=Liturgy.lookup(s,lang); if (set) { parts.push(set+' [liturgy]'); continue; } const o=await pipe(s,{src_lang:'eng_Latn',tgt_lang:lang}); const raw=(Array.isArray(o)?o[0]:o).translation_text.trim(); const g=Guard.clean(s,raw); parts.push(g.text + (g.trimmed?' [guard: '+g.reason.slice(0,40)+']':'')); } console.log(' '+lang+' '+parts.join(' | ')); } }