interscript 2.4.5 → 3.1.0

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.
Files changed (478) hide show
  1. package/LICENSE +25 -0
  2. package/README.md +90 -41
  3. package/dist/cli.d.ts +25 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +327 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/detector.d.ts +22 -0
  8. package/dist/detector.d.ts.map +1 -0
  9. package/dist/detector.js +73 -0
  10. package/dist/detector.js.map +1 -0
  11. package/dist/errors.d.ts +26 -0
  12. package/dist/errors.d.ts.map +1 -0
  13. package/dist/errors.js +34 -0
  14. package/dist/errors.js.map +1 -0
  15. package/dist/http-loader.d.ts +42 -0
  16. package/dist/http-loader.d.ts.map +1 -0
  17. package/dist/http-loader.js +95 -0
  18. package/dist/http-loader.js.map +1 -0
  19. package/dist/index.d.ts +49 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +182 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/isc/converter.d.ts +11 -0
  24. package/dist/isc/converter.d.ts.map +1 -0
  25. package/dist/isc/converter.js +177 -0
  26. package/dist/isc/converter.js.map +1 -0
  27. package/dist/isc/index.d.ts +16 -0
  28. package/dist/isc/index.d.ts.map +1 -0
  29. package/dist/isc/index.js +15 -0
  30. package/dist/isc/index.js.map +1 -0
  31. package/dist/isc/loader.d.ts +22 -0
  32. package/dist/isc/loader.d.ts.map +1 -0
  33. package/dist/isc/loader.js +47 -0
  34. package/dist/isc/loader.js.map +1 -0
  35. package/dist/isc/parser.d.ts +14 -0
  36. package/dist/isc/parser.d.ts.map +1 -0
  37. package/dist/isc/parser.js +734 -0
  38. package/dist/isc/parser.js.map +1 -0
  39. package/dist/isc/types.d.ts +110 -0
  40. package/dist/isc/types.d.ts.map +1 -0
  41. package/dist/isc/types.js +19 -0
  42. package/dist/isc/types.js.map +1 -0
  43. package/dist/loader.d.ts +49 -0
  44. package/dist/loader.d.ts.map +1 -0
  45. package/dist/loader.js +93 -0
  46. package/dist/loader.js.map +1 -0
  47. package/dist/loaders.d.ts +23 -0
  48. package/dist/loaders.d.ts.map +1 -0
  49. package/dist/loaders.js +40 -0
  50. package/dist/loaders.js.map +1 -0
  51. package/dist/loaders.node.d.ts +25 -0
  52. package/dist/loaders.node.d.ts.map +1 -0
  53. package/dist/loaders.node.js +42 -0
  54. package/dist/loaders.node.js.map +1 -0
  55. package/dist/ml/imf/index.d.ts +6 -0
  56. package/dist/ml/imf/index.d.ts.map +1 -0
  57. package/dist/ml/imf/index.js +6 -0
  58. package/dist/ml/imf/index.js.map +1 -0
  59. package/dist/ml/imf/loader.d.ts +19 -0
  60. package/dist/ml/imf/loader.d.ts.map +1 -0
  61. package/dist/ml/imf/loader.js +59 -0
  62. package/dist/ml/imf/loader.js.map +1 -0
  63. package/dist/ml/imf/model.d.ts +28 -0
  64. package/dist/ml/imf/model.d.ts.map +1 -0
  65. package/dist/ml/imf/model.js +181 -0
  66. package/dist/ml/imf/model.js.map +1 -0
  67. package/dist/ml/imf/registry.d.ts +34 -0
  68. package/dist/ml/imf/registry.d.ts.map +1 -0
  69. package/dist/ml/imf/registry.js +167 -0
  70. package/dist/ml/imf/registry.js.map +1 -0
  71. package/dist/ml/imf/tokens.d.ts +13 -0
  72. package/dist/ml/imf/tokens.d.ts.map +1 -0
  73. package/dist/ml/imf/tokens.js +32 -0
  74. package/dist/ml/imf/tokens.js.map +1 -0
  75. package/dist/ml/index.d.ts +24 -0
  76. package/dist/ml/index.d.ts.map +1 -0
  77. package/dist/ml/index.js +25 -0
  78. package/dist/ml/index.js.map +1 -0
  79. package/dist/ml/models/rababa/cleaner.d.ts +11 -0
  80. package/dist/ml/models/rababa/cleaner.d.ts.map +1 -0
  81. package/dist/ml/models/rababa/cleaner.js +21 -0
  82. package/dist/ml/models/rababa/cleaner.js.map +1 -0
  83. package/dist/ml/models/rababa/diacritizer.d.ts +37 -0
  84. package/dist/ml/models/rababa/diacritizer.d.ts.map +1 -0
  85. package/dist/ml/models/rababa/diacritizer.js +172 -0
  86. package/dist/ml/models/rababa/diacritizer.js.map +1 -0
  87. package/dist/ml/models/rababa/encoder.d.ts +40 -0
  88. package/dist/ml/models/rababa/encoder.d.ts.map +1 -0
  89. package/dist/ml/models/rababa/encoder.js +57 -0
  90. package/dist/ml/models/rababa/encoder.js.map +1 -0
  91. package/dist/ml/models/rababa/haraqat.d.ts +49 -0
  92. package/dist/ml/models/rababa/haraqat.d.ts.map +1 -0
  93. package/dist/ml/models/rababa/haraqat.js +89 -0
  94. package/dist/ml/models/rababa/haraqat.js.map +1 -0
  95. package/dist/ml/models/rababa/index.d.ts +12 -0
  96. package/dist/ml/models/rababa/index.d.ts.map +1 -0
  97. package/dist/ml/models/rababa/index.js +14 -0
  98. package/dist/ml/models/rababa/index.js.map +1 -0
  99. package/dist/ml/models/rababa/reconciler.d.ts +29 -0
  100. package/dist/ml/models/rababa/reconciler.d.ts.map +1 -0
  101. package/dist/ml/models/rababa/reconciler.js +81 -0
  102. package/dist/ml/models/rababa/reconciler.js.map +1 -0
  103. package/dist/ml/models/secryst/index.d.ts +10 -0
  104. package/dist/ml/models/secryst/index.d.ts.map +1 -0
  105. package/dist/ml/models/secryst/index.js +12 -0
  106. package/dist/ml/models/secryst/index.js.map +1 -0
  107. package/dist/ml/models/secryst/masks.d.ts +33 -0
  108. package/dist/ml/models/secryst/masks.d.ts.map +1 -0
  109. package/dist/ml/models/secryst/masks.js +73 -0
  110. package/dist/ml/models/secryst/masks.js.map +1 -0
  111. package/dist/ml/models/secryst/translator.d.ts +31 -0
  112. package/dist/ml/models/secryst/translator.d.ts.map +1 -0
  113. package/dist/ml/models/secryst/translator.js +112 -0
  114. package/dist/ml/models/secryst/translator.js.map +1 -0
  115. package/dist/ml/models/secryst/vocab.d.ts +39 -0
  116. package/dist/ml/models/secryst/vocab.d.ts.map +1 -0
  117. package/dist/ml/models/secryst/vocab.js +85 -0
  118. package/dist/ml/models/secryst/vocab.js.map +1 -0
  119. package/dist/ml/provision/base.d.ts +14 -0
  120. package/dist/ml/provision/base.d.ts.map +1 -0
  121. package/dist/ml/provision/base.js +19 -0
  122. package/dist/ml/provision/base.js.map +1 -0
  123. package/dist/ml/provision/index.d.ts +62 -0
  124. package/dist/ml/provision/index.d.ts.map +1 -0
  125. package/dist/ml/provision/index.js +107 -0
  126. package/dist/ml/provision/index.js.map +1 -0
  127. package/dist/ml/provision/manifest.d.ts +79 -0
  128. package/dist/ml/provision/manifest.d.ts.map +1 -0
  129. package/dist/ml/provision/manifest.js +122 -0
  130. package/dist/ml/provision/manifest.js.map +1 -0
  131. package/dist/ml/registry.d.ts +35 -0
  132. package/dist/ml/registry.d.ts.map +1 -0
  133. package/dist/ml/registry.js +76 -0
  134. package/dist/ml/registry.js.map +1 -0
  135. package/dist/ml/session/index.d.ts +55 -0
  136. package/dist/ml/session/index.d.ts.map +1 -0
  137. package/dist/ml/session/index.js +57 -0
  138. package/dist/ml/session/index.js.map +1 -0
  139. package/dist/ml/session/litert-web.d.ts +50 -0
  140. package/dist/ml/session/litert-web.d.ts.map +1 -0
  141. package/dist/ml/session/litert-web.js +146 -0
  142. package/dist/ml/session/litert-web.js.map +1 -0
  143. package/dist/ml/session/onnx-node.d.ts +10 -0
  144. package/dist/ml/session/onnx-node.d.ts.map +1 -0
  145. package/dist/ml/session/onnx-node.js +62 -0
  146. package/dist/ml/session/onnx-node.js.map +1 -0
  147. package/dist/ml/session/onnx-web.d.ts +23 -0
  148. package/dist/ml/session/onnx-web.d.ts.map +1 -0
  149. package/dist/ml/session/onnx-web.js +74 -0
  150. package/dist/ml/session/onnx-web.js.map +1 -0
  151. package/dist/ml/types.d.ts +113 -0
  152. package/dist/ml/types.d.ts.map +1 -0
  153. package/dist/ml/types.js +7 -0
  154. package/dist/ml/types.js.map +1 -0
  155. package/dist/runtime/compile-item.d.ts +53 -0
  156. package/dist/runtime/compile-item.d.ts.map +1 -0
  157. package/dist/runtime/compile-item.js +278 -0
  158. package/dist/runtime/compile-item.js.map +1 -0
  159. package/dist/runtime/context.d.ts +33 -0
  160. package/dist/runtime/context.d.ts.map +1 -0
  161. package/dist/runtime/context.js +67 -0
  162. package/dist/runtime/context.js.map +1 -0
  163. package/dist/runtime/executor.d.ts +18 -0
  164. package/dist/runtime/executor.d.ts.map +1 -0
  165. package/dist/runtime/executor.js +228 -0
  166. package/dist/runtime/executor.js.map +1 -0
  167. package/dist/runtime/interpreter.d.ts +30 -0
  168. package/dist/runtime/interpreter.d.ts.map +1 -0
  169. package/dist/runtime/interpreter.js +130 -0
  170. package/dist/runtime/interpreter.js.map +1 -0
  171. package/dist/stdlib/ml.d.ts +55 -0
  172. package/dist/stdlib/ml.d.ts.map +1 -0
  173. package/dist/stdlib/ml.js +114 -0
  174. package/dist/stdlib/ml.js.map +1 -0
  175. package/dist/stdlib.d.ts +96 -0
  176. package/dist/stdlib.d.ts.map +1 -0
  177. package/dist/stdlib.js +160 -0
  178. package/dist/stdlib.js.map +1 -0
  179. package/dist/types.d.ts +167 -0
  180. package/dist/types.d.ts.map +1 -0
  181. package/dist/types.js +13 -0
  182. package/dist/types.js.map +1 -0
  183. package/package.json +78 -18
  184. package/LICENSE.md +0 -31
  185. package/README.adoc +0 -78
  186. package/src/maps/acadsin-zho-Hani-Latn-2002.js +0 -9
  187. package/src/maps/alalc-amh-Ethi-Latn-1997.js +0 -8
  188. package/src/maps/alalc-amh-Ethi-Latn-2011.js +0 -7
  189. package/src/maps/alalc-ara-Arab-Latn-1997.js +0 -8
  190. package/src/maps/alalc-asm-Deva-Latn-1997.js +0 -50
  191. package/src/maps/alalc-asm-Deva-Latn-2012.js +0 -7
  192. package/src/maps/alalc-aze-Arab-Latn-1997.js +0 -11
  193. package/src/maps/alalc-aze-Cyrl-Latn-1997.js +0 -9
  194. package/src/maps/alalc-bel-Cyrl-Latn-1997.js +0 -8
  195. package/src/maps/alalc-ben-Beng-Latn-1997.js +0 -52
  196. package/src/maps/alalc-ben-Beng-Latn-2017.js +0 -9
  197. package/src/maps/alalc-bul-Cyrl-Latn-1997.js +0 -10
  198. package/src/maps/alalc-div-Thaa-Latn-1997.js +0 -38
  199. package/src/maps/alalc-div-Thaa-Latn-2012.js +0 -7
  200. package/src/maps/alalc-ell-Grek-Latn-1997.js +0 -25
  201. package/src/maps/alalc-ell-Grek-Latn-2010.js +0 -27
  202. package/src/maps/alalc-fas-Arab-Latn-1997.js +0 -11
  203. package/src/maps/alalc-guj-Gujr-Latn-1997.js +0 -50
  204. package/src/maps/alalc-guj-Gujr-Latn-2011.js +0 -7
  205. package/src/maps/alalc-hin-Deva-Latn-1997.js +0 -60
  206. package/src/maps/alalc-hin-Deva-Latn-2011.js +0 -7
  207. package/src/maps/alalc-kan-Kana-Latn-1997.js +0 -51
  208. package/src/maps/alalc-kan-Kana-Latn-2011.js +0 -7
  209. package/src/maps/alalc-kat-Geok-Latn-1997.js +0 -8
  210. package/src/maps/alalc-kat-Geok-Latn-2011.js +0 -7
  211. package/src/maps/alalc-kat-Geor-Latn-1997.js +0 -8
  212. package/src/maps/alalc-kat-Geor-Latn-2011.js +0 -7
  213. package/src/maps/alalc-kor-Hang-Latn-1997.js +0 -9
  214. package/src/maps/alalc-mal-Mlym-Latn-1997.js +0 -52
  215. package/src/maps/alalc-mal-Mlym-Latn-2012.js +0 -7
  216. package/src/maps/alalc-mar-Deva-Latn-1997.js +0 -13
  217. package/src/maps/alalc-mar-Deva-Latn-2011.js +0 -7
  218. package/src/maps/alalc-mkd-Cyrl-Latn-1997.js +0 -17
  219. package/src/maps/alalc-mkd-Cyrl-Latn-2013.js +0 -17
  220. package/src/maps/alalc-mon-Cyrl-Latn-1997.js +0 -8
  221. package/src/maps/alalc-ori-Orya-Latn-1997.js +0 -55
  222. package/src/maps/alalc-ori-Orya-Latn-2011.js +0 -7
  223. package/src/maps/alalc-pan-Guru-Latn-1997.js +0 -17
  224. package/src/maps/alalc-pan-Guru-Latn-2011.js +0 -7
  225. package/src/maps/alalc-pli-Deva-Latn-2012.js +0 -13
  226. package/src/maps/alalc-pra-Deva-Latn-2012.js +0 -7
  227. package/src/maps/alalc-rus-Cyrl-Latn-1997.js +0 -9
  228. package/src/maps/alalc-rus-Cyrl-Latn-2012.js +0 -9
  229. package/src/maps/alalc-san-Deva-Latn-2012.js +0 -49
  230. package/src/maps/alalc-sin-Sinh-Latn-1997.js +0 -54
  231. package/src/maps/alalc-sin-Sinh-Latn-2011.js +0 -7
  232. package/src/maps/alalc-srp-Cyrl-Latn-1997.js +0 -17
  233. package/src/maps/alalc-srp-Cyrl-Latn-2013.js +0 -15
  234. package/src/maps/alalc-tam-Taml-Latn-1997.js +0 -9
  235. package/src/maps/alalc-tam-Taml-Latn-2011.js +0 -7
  236. package/src/maps/alalc-tel-Telu-Latn-1997.js +0 -54
  237. package/src/maps/alalc-tel-Telu-Latn-2011.js +0 -7
  238. package/src/maps/alalc-tir-Ethi-Latn-1997.js +0 -8
  239. package/src/maps/alalc-tir-Ethi-Latn-2011.js +0 -7
  240. package/src/maps/alalc-ukr-Cyrl-Latn-1997.js +0 -9
  241. package/src/maps/alalc-ukr-Cyrl-Latn-2011.js +0 -7
  242. package/src/maps/apcbg-bul-Cyrl-Latn-1995.js +0 -8
  243. package/src/maps/az-aze-Cyrl-Latn-1939.js +0 -8
  244. package/src/maps/az-aze-Cyrl-Latn-1958.js +0 -11
  245. package/src/maps/bas-rus-Cyrl-Latn-2017-bss.js +0 -10
  246. package/src/maps/bas-rus-Cyrl-Latn-2017-oss.js +0 -10
  247. package/src/maps/bgn-jpn-Hrkt-Latn-1962.js +0 -10
  248. package/src/maps/bgn-kor-Hang-Latn-1943.js +0 -9
  249. package/src/maps/bgn-kor-Kore-Latn-1943.js +0 -10
  250. package/src/maps/bgna-bul-Cyrl-Latn-2006.js +0 -7
  251. package/src/maps/bgna-bul-Cyrl-Latn-2009.js +0 -7
  252. package/src/maps/bgnpcgn-amh-Ethi-Latn-1967.js +0 -8
  253. package/src/maps/bgnpcgn-ara-Arab-Latn-1956.js +0 -25
  254. package/src/maps/bgnpcgn-arm-Armn-Latn-1981.js +0 -8
  255. package/src/maps/bgnpcgn-aze-Cyrl-Latn-1993.js +0 -8
  256. package/src/maps/bgnpcgn-bak-Cyrl-Latn-2007.js +0 -16
  257. package/src/maps/bgnpcgn-bal-Arab-Latn-2008.js +0 -9
  258. package/src/maps/bgnpcgn-bel-Cyrl-Latn-1979.js +0 -12
  259. package/src/maps/bgnpcgn-bul-Cyrl-Latn-1952.js +0 -12
  260. package/src/maps/bgnpcgn-bul-Cyrl-Latn-2013.js +0 -10
  261. package/src/maps/bgnpcgn-che-Cyrl-Latn-2008.js +0 -15
  262. package/src/maps/bgnpcgn-deu-Latn-Latn-2000.js +0 -12
  263. package/src/maps/bgnpcgn-div-Thaa-Latn-1972.js +0 -13
  264. package/src/maps/bgnpcgn-div-Thaa-Latn-1988.js +0 -9
  265. package/src/maps/bgnpcgn-ell-Grek-Latn-1962.js +0 -52
  266. package/src/maps/bgnpcgn-ell-Grek-Latn-1996.js +0 -7
  267. package/src/maps/bgnpcgn-fao-Latn-Latn-1964.js +0 -11
  268. package/src/maps/bgnpcgn-fao-Latn-Latn-1968.js +0 -7
  269. package/src/maps/bgnpcgn-fas-Arab-Latn-1956.js +0 -8
  270. package/src/maps/bgnpcgn-isl-Latn-Latn-1964.js +0 -10
  271. package/src/maps/bgnpcgn-isl-Latn-Latn-1968.js +0 -7
  272. package/src/maps/bgnpcgn-jpn-Hrkt-Latn-1976.js +0 -10
  273. package/src/maps/bgnpcgn-kat-Geor-Latn-1981.js +0 -8
  274. package/src/maps/bgnpcgn-kat-Geor-Latn-2009.js +0 -7
  275. package/src/maps/bgnpcgn-kaz-Cyrl-Latn-1979.js +0 -8
  276. package/src/maps/bgnpcgn-kir-Cyrl-Latn-1979.js +0 -8
  277. package/src/maps/bgnpcgn-kor-Hang-Latn-kn-1945.js +0 -52
  278. package/src/maps/bgnpcgn-kor-Hang-Latn-rok-2011.js +0 -8
  279. package/src/maps/bgnpcgn-kor-Kore-Latn-rok-2011.js +0 -8
  280. package/src/maps/bgnpcgn-kur-Arab-Latn-2007.js +0 -9
  281. package/src/maps/bgnpcgn-mkd-Cyrl-Latn-1981.js +0 -15
  282. package/src/maps/bgnpcgn-mkd-Cyrl-Latn-2013.js +0 -17
  283. package/src/maps/bgnpcgn-mon-Cyrl-Latn-1964.js +0 -12
  284. package/src/maps/bgnpcgn-nep-Deva-Latn-2011.js +0 -13
  285. package/src/maps/bgnpcgn-per-Arab-Latn-1958.js +0 -10
  286. package/src/maps/bgnpcgn-prs-Arab-Latn-2007.js +0 -25
  287. package/src/maps/bgnpcgn-prs-Arab-Latn-yaghoubi.js +0 -8
  288. package/src/maps/bgnpcgn-pus-Arab-Latn-1968.js +0 -26
  289. package/src/maps/bgnpcgn-ron-Cyrl-Latn-2002.js +0 -23
  290. package/src/maps/bgnpcgn-rue-Cyrl-Latn-2016.js +0 -8
  291. package/src/maps/bgnpcgn-rus-Cyrl-Latn-1947.js +0 -52
  292. package/src/maps/bgnpcgn-sme-Latn-Latn-1984.js +0 -8
  293. package/src/maps/bgnpcgn-srp-Cyrl-Latn-1962.js +0 -7
  294. package/src/maps/bgnpcgn-srp-Cyrl-Latn-2005.js +0 -15
  295. package/src/maps/bgnpcgn-tat-Cyrl-Latn-2007.js +0 -27
  296. package/src/maps/bgnpcgn-tgk-Cyrl-Latn-1994.js +0 -12
  297. package/src/maps/bgnpcgn-tir-Ethi-Latn-2007.js +0 -8
  298. package/src/maps/bgnpcgn-ukr-Cyrl-Latn-1965.js +0 -9
  299. package/src/maps/bgnpcgn-ukr-Cyrl-Latn-2019.js +0 -9
  300. package/src/maps/bgnpcgn-urd-Arab-Latn-2007.js +0 -25
  301. package/src/maps/bgnpcgn-uzb-Cyrl-Latn-1979.js +0 -12
  302. package/src/maps/bgnpcgn-uzb-Cyrl-Latn-2000.js +0 -11
  303. package/src/maps/bgnpcgn-zho-Hans-Latn-1979.js +0 -8
  304. package/src/maps/bis-asm-Beng-Latn-13194-1991.js +0 -14
  305. package/src/maps/bis-ben-Beng-Latn-13194-1991.js +0 -14
  306. package/src/maps/bis-dev-Deva-Latn-13194-1991.js +0 -14
  307. package/src/maps/bis-guj-Gujr-Latn-13194-1991.js +0 -14
  308. package/src/maps/bis-kan-Kana-Latn-13194-1991.js +0 -14
  309. package/src/maps/bis-mlm-Mlym-Latn-13194-1991.js +0 -14
  310. package/src/maps/bis-ori-Orya-Latn-13194-1991.js +0 -14
  311. package/src/maps/bis-pnj-Guru-Latn-13194-1991.js +0 -14
  312. package/src/maps/bis-tel-Telu-Latn-13194-1991.js +0 -14
  313. package/src/maps/bis-tml-Taml-Latn-13194-1991.js +0 -14
  314. package/src/maps/by-bel-Cyrl-Latn-1998.js +0 -19
  315. package/src/maps/by-bel-Cyrl-Latn-2007.js +0 -7
  316. package/src/maps/din-grc-Grek-Latn-31634-2011-t1.js +0 -23
  317. package/src/maps/din-hin-Deva-Latn-33904-2018.js +0 -9
  318. package/src/maps/din-kat-Geor-Latn-32707-2010.js +0 -8
  319. package/src/maps/din-mar-Deva-Latn-33904-2018.js +0 -9
  320. package/src/maps/din-nep-Deva-Latn-33904-2018.js +0 -9
  321. package/src/maps/din-pli-Deva-Latn-33904-2018.js +0 -7
  322. package/src/maps/din-pra-Deva-Latn-33904-2018.js +0 -7
  323. package/src/maps/din-san-Deva-Latn-33904-2018.js +0 -51
  324. package/src/maps/din-tam-Taml-Latn-33903-2016.js +0 -34
  325. package/src/maps/dos-nep-Deva-Latn-1997.js +0 -9
  326. package/src/maps/elot-ell-Grek-Latn-743-1982-tl.js +0 -53
  327. package/src/maps/elot-ell-Grek-Latn-743-1982-ts.js +0 -53
  328. package/src/maps/elot-ell-Grek-Latn-743-2001-tl.js +0 -7
  329. package/src/maps/elot-ell-Grek-Latn-743-2001-ts.js +0 -7
  330. package/src/maps/ggg-kat-Geor-Latn-2002.js +0 -8
  331. package/src/maps/gki-bel-Cyrl-Latn-1992.js +0 -9
  332. package/src/maps/gki-bel-Cyrl-Latn-2000.js +0 -18
  333. package/src/maps/gost-rus-Cyrl-Latn-16876-71-1983.js +0 -10
  334. package/src/maps/gost-rus-Cyrl-Latn-7.79-2000-2002.js +0 -9
  335. package/src/maps/hk-yue-Hani-Latn-1888.js +0 -10
  336. package/src/maps/icao-bel-Cyrl-Latn-9303.js +0 -8
  337. package/src/maps/icao-bul-Cyrl-Latn-9303.js +0 -8
  338. package/src/maps/icao-fas-Arab-Latn-9303.js +0 -8
  339. package/src/maps/icao-heb-Hebr-Latn-9303.js +0 -8
  340. package/src/maps/icao-mkd-Cyrl-Latn-9303.js +0 -8
  341. package/src/maps/icao-rus-Cyrl-Latn-9303.js +0 -8
  342. package/src/maps/icao-srp-Cyrl-Latn-9303.js +0 -8
  343. package/src/maps/icao-ukr-Cyrl-Latn-9303.js +0 -8
  344. package/src/maps/index.json +0 -1
  345. package/src/maps/iso-ara-Arab-Latn-233-1984.js +0 -24
  346. package/src/maps/iso-ara-Arab-Latn-233-2-1993.js +0 -12
  347. package/src/maps/iso-asm-Beng-Latn-15919-2001.js +0 -9
  348. package/src/maps/iso-ben-Beng-Latn-15919-2001.js +0 -9
  349. package/src/maps/iso-ell-Grek-Latn-843-1997-t1.js +0 -15
  350. package/src/maps/iso-ell-Grek-Latn-843-1997-t2.js +0 -9
  351. package/src/maps/iso-guj-Gujr-Latn-15919-2001.js +0 -9
  352. package/src/maps/iso-hin-Deva-Latn-15919-2001.js +0 -7
  353. package/src/maps/iso-inc-Deva-Latn-15919-2001.js +0 -7
  354. package/src/maps/iso-jpn-Hrkt-Latn-3602-1989.js +0 -10
  355. package/src/maps/iso-kan-Kana-Latn-15919-2001.js +0 -9
  356. package/src/maps/iso-kat-Geor-Latn-9984-1996.js +0 -8
  357. package/src/maps/iso-kor-Hang-Latn-1996-method1.js +0 -14
  358. package/src/maps/iso-kor-Hang-Latn-1996-method2.js +0 -13
  359. package/src/maps/iso-mal-Mlym-Latn-15919-2001.js +0 -12
  360. package/src/maps/iso-mar-Deva-Latn-15919-2001.js +0 -7
  361. package/src/maps/iso-nep-Deva-Latn-15919-2001.js +0 -7
  362. package/src/maps/iso-ori-Orya-Latn-15919-2001.js +0 -9
  363. package/src/maps/iso-pan-Guru-Latn-15919-2001.js +0 -9
  364. package/src/maps/iso-pli-Beng-Latn-15919-2001.js +0 -7
  365. package/src/maps/iso-pli-Deva-Latn-15919-2001.js +0 -7
  366. package/src/maps/iso-pli-Sinh-Latn-15919-2001.js +0 -9
  367. package/src/maps/iso-pli-Thai-Latn-15919-2001.js +0 -7
  368. package/src/maps/iso-pra-Deva-Latn-15919-2001.js +0 -7
  369. package/src/maps/iso-prs-Arab-Latn-233-3-1999.js +0 -8
  370. package/src/maps/iso-rus-Cyrl-Latn-9-1995.js +0 -8
  371. package/src/maps/iso-san-Deva-Latn-15919-2001.js +0 -9
  372. package/src/maps/iso-tam-Taml-Latn-15919-2001.js +0 -9
  373. package/src/maps/iso-tel-Telu-Latn-15919-2001.js +0 -9
  374. package/src/maps/iso-tha-Thai-Latn-11940-1998.js +0 -9
  375. package/src/maps/kp-kor-Hang-Latn-2002.js +0 -78
  376. package/src/maps/lshk-yue-Hani-Latn-jyutping-1993.js +0 -8
  377. package/src/maps/masm-mon-Cyrl-Latn-5217-2012.js +0 -8
  378. package/src/maps/masm-mon-Latn-Cyrl-5217-2012.js +0 -18
  379. package/src/maps/mext-jpn-Hrkt-Latn-1954.js +0 -16
  380. package/src/maps/moct-kor-Hang-Latn-2000.js +0 -112
  381. package/src/maps/mofa-jpn-Hrkt-Latn-1989.js +0 -14
  382. package/src/maps/mv-div-Thaa-Latn-1987.js +0 -58
  383. package/src/maps/mvd-bel-Cyrl-Latn-2008.js +0 -36
  384. package/src/maps/mvd-bel-Cyrl-Latn-2010.js +0 -11
  385. package/src/maps/mvd-rus-Cyrl-Latn-2008.js +0 -19
  386. package/src/maps/mvd-rus-Cyrl-Latn-2010.js +0 -9
  387. package/src/maps/odni-ara-Arab-Latn-2004.js +0 -7
  388. package/src/maps/odni-ara-Arab-Latn-2015.js +0 -10
  389. package/src/maps/odni-aze-Cyrl-Latn-2015.js +0 -18
  390. package/src/maps/odni-bel-Cyrl-Latn-2015.js +0 -8
  391. package/src/maps/odni-bul-Cyrl-Latn-2005.js +0 -8
  392. package/src/maps/odni-bul-Cyrl-Latn-2015.js +0 -13
  393. package/src/maps/odni-che-Cyrl-Latn-2015.js +0 -13
  394. package/src/maps/odni-fas-Arab-Latn-2004.js +0 -8
  395. package/src/maps/odni-fas-Arab-Latn-2015.js +0 -8
  396. package/src/maps/odni-hin-Deva-Latn-2004.js +0 -8
  397. package/src/maps/odni-hin-Deva-Latn-2015.js +0 -8
  398. package/src/maps/odni-kat-Geor-Latn-2015.js +0 -8
  399. package/src/maps/odni-kaz-Cyrl-Latn-2015.js +0 -20
  400. package/src/maps/odni-kir-Cyrl-Latn-2015.js +0 -18
  401. package/src/maps/odni-kor-Hang-Latn-2015.js +0 -92
  402. package/src/maps/odni-mkd-Cyrl-Latn-2005.js +0 -7
  403. package/src/maps/odni-mkd-Cyrl-Latn-2015.js +0 -8
  404. package/src/maps/odni-prs-Arab-Latn-2004.js +0 -9
  405. package/src/maps/odni-prs-Arab-Latn-2015.js +0 -9
  406. package/src/maps/odni-pus-Arab-Latn-2011.js +0 -10
  407. package/src/maps/odni-rus-Cyrl-Latn-2015.js +0 -8
  408. package/src/maps/odni-srp-Cyrl-Latn-2005.js +0 -7
  409. package/src/maps/odni-srp-Cyrl-Latn-2015.js +0 -8
  410. package/src/maps/odni-tat-Cyrl-Latn-2015.js +0 -19
  411. package/src/maps/odni-tgk-Cyrl-Latn-2015.js +0 -21
  412. package/src/maps/odni-tuk-Cyrl-Latn-2015.js +0 -13
  413. package/src/maps/odni-uig-Cyrl-Latn-2015.js +0 -17
  414. package/src/maps/odni-ukr-Cyrl-Latn-2015.js +0 -9
  415. package/src/maps/odni-urd-Arab-Latn-2015.js +0 -8
  416. package/src/maps/odni-uzb-Cyrl-Latn-2015.js +0 -13
  417. package/src/maps/posix.js +0 -5
  418. package/src/maps/sac-zho-Hans-Latn-1979.js +0 -8
  419. package/src/maps/sasm-mon-Mong-Latn-general-1978.js +0 -8
  420. package/src/maps/sasm-mon-Mong-Latn-phonetic-1978.js +0 -9
  421. package/src/maps/ses-ara-Arab-Latn-1930.js +0 -10
  422. package/src/maps/stategeocadastre-ukr-Cyrl-Latn-1993.js +0 -19
  423. package/src/maps/ua-ukr-Cyrl-Latn-1996.js +0 -21
  424. package/src/maps/ua-ukr-Cyrl-Latn-2007.js +0 -16
  425. package/src/maps/ua-ukr-Cyrl-Latn-2010.js +0 -11
  426. package/src/maps/un-amh-Ethi-Latn-2016.js +0 -9
  427. package/src/maps/un-ara-Arab-Latn-1971.js +0 -13
  428. package/src/maps/un-ara-Arab-Latn-1972.js +0 -13
  429. package/src/maps/un-ara-Arab-Latn-2017.js +0 -24
  430. package/src/maps/un-asm-Beng-Latn-1972.js +0 -50
  431. package/src/maps/un-bel-Cyrl-Latn-2007.js +0 -7
  432. package/src/maps/un-ben-Beng-Latn-2016.js +0 -8
  433. package/src/maps/un-bul-Cyrl-Latn-1977.js +0 -14
  434. package/src/maps/un-ell-Grek-Latn-1987-phonetic.js +0 -83
  435. package/src/maps/un-ell-Grek-Latn-1987-tl.js +0 -7
  436. package/src/maps/un-ell-Grek-Latn-1987-ts.js +0 -7
  437. package/src/maps/un-guj-Gujr-Latn-1972.js +0 -45
  438. package/src/maps/un-hin-Deva-Latn-2016.js +0 -91
  439. package/src/maps/un-kan-Kana-Latn-2016.js +0 -45
  440. package/src/maps/un-mal-Mlym-Latn-1972.js +0 -48
  441. package/src/maps/un-mar-Deva-Latn-2016.js +0 -11
  442. package/src/maps/un-mkd-Cyrl-Latn-1977.js +0 -21
  443. package/src/maps/un-mon-Mong-Latn-general-2013.js +0 -7
  444. package/src/maps/un-mon-Mong-Latn-phonetic-2013.js +0 -7
  445. package/src/maps/un-nep-Deva-Latn-1972.js +0 -91
  446. package/src/maps/un-nep-Deva-Latn-2013.js +0 -7
  447. package/src/maps/un-ori-Orya-Latn-1972.js +0 -48
  448. package/src/maps/un-pan-Guru-Latn-1972.js +0 -87
  449. package/src/maps/un-prs-Arab-Latn-1967.js +0 -11
  450. package/src/maps/un-rus-Cyrl-Latn-1987.js +0 -9
  451. package/src/maps/un-sin-Sinh-Latn-1972.js +0 -46
  452. package/src/maps/un-srp-Cyrl-Latn-1997.js +0 -7
  453. package/src/maps/un-tam-Taml-Latn-1972.js +0 -34
  454. package/src/maps/un-tel-Telu-Latn-1972.js +0 -46
  455. package/src/maps/un-ukr-Cyrl-Latn-1998.js +0 -10
  456. package/src/maps/un-ukr-Cyrl-Latn-2012.js +0 -7
  457. package/src/maps/un-urd-Arab-Latn-1972.js +0 -25
  458. package/src/maps/unicode.js +0 -7
  459. package/src/maps/var-Cyrl.js +0 -7
  460. package/src/maps/var-amh-Ethi-Latn-eae-2003.js +0 -8
  461. package/src/maps/var-gez-Ethi-Latn-eae-2003.js +0 -7
  462. package/src/maps/var-hin-Deva-Latn-hunterian-1872.js +0 -12
  463. package/src/maps/var-jpn-Hrkt-Latn-hepburn-1886.js +0 -18
  464. package/src/maps/var-jpn-Hrkt-Latn-hepburn-1954.js +0 -17
  465. package/src/maps/var-kor-Hang-Hang-jamo.js +0 -8
  466. package/src/maps/var-kor-Hang-Latn-mr-1939.js +0 -355
  467. package/src/maps/var-kor-Kore-Hang-2013.js +0 -8
  468. package/src/maps/var-kor-Kore-Latn-mr-1939.js +0 -10
  469. package/src/maps/var-kor.js +0 -19
  470. package/src/maps/var-mar-Deva-Latn-hunterian-1872.js +0 -7
  471. package/src/maps/var-mon-Mong-Latn-1930.js +0 -8
  472. package/src/maps/var-mon-Mong-Latn-lessing.js +0 -14
  473. package/src/maps/var-mon-Mong-Latn-vpmc.js +0 -10
  474. package/src/maps/var-pra-Deva-Latn-iast-1912.js +0 -7
  475. package/src/maps/var-san-Deva-Latn-iast-1912.js +0 -9
  476. package/src/maps/var-zho-Hani-Latn-wd-1979.js +0 -13
  477. package/src/stdlib.js +0 -294
  478. package/test/test.js +0 -26
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Manifest-driven model resolution.
3
+ *
4
+ * The source of truth for "what model version is current" lives in
5
+ * the `@interscript/models` npm package (a tiny JSON manifest kept
6
+ * in lockstep with GH Releases in `interscript/ml-models`).
7
+ *
8
+ * Resolution order for the manifest itself:
9
+ * 1. Programmatically injected via `setManifestUrl()` or
10
+ * `setInlineManifest()` (tests, air-gapped envs).
11
+ * 2. The `@interscript/models` package, when installed.
12
+ * 3. A remote JSON URL on the CDN (`manifest.json` next to the
13
+ * release assets).
14
+ *
15
+ * See `ml-models/TODO.distribution/04-npm-packages.md` for the
16
+ * full MECE breakdown of who owns what.
17
+ */
18
+ /**
19
+ * Per-task manifest entry. Matches `npm/models/manifest.json` shape.
20
+ */
21
+ export interface ManifestModelEntry {
22
+ readonly status: "preview" | "stable" | "deprecated";
23
+ readonly version: string;
24
+ readonly note?: string;
25
+ readonly cdn_base: string;
26
+ readonly github_base: string;
27
+ }
28
+ export interface Manifest {
29
+ readonly schema_version: number;
30
+ readonly models: Readonly<Record<string, ManifestModelEntry>>;
31
+ }
32
+ /**
33
+ * Asset variants a release may ship. `fp32` (no suffix) is the
34
+ * default; q8 is the browser-optimized default.
35
+ */
36
+ export type AssetVariant = "fp32" | "q8" | "q4" | "fp16";
37
+ /**
38
+ * Serialization format. ONNX is the historical default; LiteRT (.tflite)
39
+ * is the 2026 alternative backed by Google's LiteRT.js runtime.
40
+ *
41
+ * The two formats are orthogonal to `AssetVariant` — both can be
42
+ * quantized to q8, both can be fp32. The runtime that loads the file
43
+ * is what differs.
44
+ */
45
+ export type AssetFormat = "onnx" | "tflite";
46
+ export declare function setInlineManifest(m: Manifest | null): void;
47
+ export declare function setManifestUrl(url: string | null): void;
48
+ /**
49
+ * Load the manifest. Cached after first call; bust the cache with
50
+ * `setInlineManifest()` or `setManifestUrl()`.
51
+ */
52
+ export declare function loadManifest(): Promise<Manifest>;
53
+ /**
54
+ * Resolve a `(kind, id)` ref to a manifest entry. The `id` field on
55
+ * a ModelRef carries the task name (e.g. "rababa_arabic"); the kind
56
+ * is redundant but kept for backwards compatibility.
57
+ *
58
+ * Returns `null` if the task isn't in the manifest. Callers decide
59
+ * whether that's an error or a "use bundled fallback" signal.
60
+ */
61
+ export declare function resolveManifestEntry(kind: string, id: string): Promise<ManifestModelEntry | null>;
62
+ /**
63
+ * Build concrete artifact URLs for a model. Prefers the CDN base;
64
+ * GitHub Releases base is the fallback (slower, but no CDN cache).
65
+ *
66
+ * Both URLs use the same asset naming convention so a downloader
67
+ * can verify checksums identically against either source.
68
+ */
69
+ export declare function artifactUrls(entry: ManifestModelEntry, variant?: AssetVariant, format?: AssetFormat): {
70
+ primary: string;
71
+ fallback: string;
72
+ assetName: string;
73
+ };
74
+ /**
75
+ * Sidecar artifacts that ship with every release. These names match
76
+ * the release pipeline in `ml-models/.github/workflows/release.yml`.
77
+ */
78
+ export declare function sidecarFilenames(entry: ManifestModelEntry, variant?: AssetVariant, format?: AssetFormat): readonly string[];
79
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/ml/provision/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,YAAY,CAAA;IACpD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAA;CAC9D;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAA;AAExD;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAA;AAkB3C,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAG1D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAGvD;AAWD;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,QAAQ,CAAC,CAetD;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAIpC;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE,YAAmB,EAC5B,MAAM,GAAE,WAAoB,GAC3B;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAS1D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE,YAAmB,EAC5B,MAAM,GAAE,WAAoB,GAC3B,SAAS,MAAM,EAAE,CAGnB"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Manifest-driven model resolution.
3
+ *
4
+ * The source of truth for "what model version is current" lives in
5
+ * the `@interscript/models` npm package (a tiny JSON manifest kept
6
+ * in lockstep with GH Releases in `interscript/ml-models`).
7
+ *
8
+ * Resolution order for the manifest itself:
9
+ * 1. Programmatically injected via `setManifestUrl()` or
10
+ * `setInlineManifest()` (tests, air-gapped envs).
11
+ * 2. The `@interscript/models` package, when installed.
12
+ * 3. A remote JSON URL on the CDN (`manifest.json` next to the
13
+ * release assets).
14
+ *
15
+ * See `ml-models/TODO.distribution/04-npm-packages.md` for the
16
+ * full MECE breakdown of who owns what.
17
+ */
18
+ import { getModelBase } from "./base.js";
19
+ const VARIANT_SUFFIX = {
20
+ fp32: "",
21
+ q8: "-q8",
22
+ q4: "-q4",
23
+ fp16: "-fp16",
24
+ };
25
+ const FORMAT_EXTENSION = {
26
+ onnx: ".onnx",
27
+ tflite: ".tflite",
28
+ };
29
+ let cachedManifest = null;
30
+ let inlineManifest = null;
31
+ let manifestUrlOverride = null;
32
+ export function setInlineManifest(m) {
33
+ inlineManifest = m;
34
+ cachedManifest = null;
35
+ }
36
+ export function setManifestUrl(url) {
37
+ manifestUrlOverride = url;
38
+ cachedManifest = null;
39
+ }
40
+ /**
41
+ * Default manifest URL — sits next to release assets on the CDN.
42
+ * Points at the jsDelivr mirror of the ml-models repo so it works
43
+ * with zero npm install.
44
+ */
45
+ function defaultManifestUrl() {
46
+ return `${getModelBase()}/npm/models/manifest.json`;
47
+ }
48
+ /**
49
+ * Load the manifest. Cached after first call; bust the cache with
50
+ * `setInlineManifest()` or `setManifestUrl()`.
51
+ */
52
+ export async function loadManifest() {
53
+ if (cachedManifest)
54
+ return cachedManifest;
55
+ if (inlineManifest) {
56
+ cachedManifest = inlineManifest;
57
+ return cachedManifest;
58
+ }
59
+ const url = manifestUrlOverride ?? defaultManifestUrl();
60
+ const res = await fetch(url);
61
+ if (!res.ok) {
62
+ throw new Error(`Failed to load model manifest from ${url}: ${res.status} ${res.statusText}`);
63
+ }
64
+ const json = (await res.json());
65
+ cachedManifest = json;
66
+ return json;
67
+ }
68
+ /**
69
+ * Resolve a `(kind, id)` ref to a manifest entry. The `id` field on
70
+ * a ModelRef carries the task name (e.g. "rababa_arabic"); the kind
71
+ * is redundant but kept for backwards compatibility.
72
+ *
73
+ * Returns `null` if the task isn't in the manifest. Callers decide
74
+ * whether that's an error or a "use bundled fallback" signal.
75
+ */
76
+ export async function resolveManifestEntry(kind, id) {
77
+ const manifest = await loadManifest();
78
+ const taskKey = id.startsWith(`${kind}_`) ? id : `${kind}_${id}`;
79
+ return manifest.models[taskKey] ?? manifest.models[id] ?? null;
80
+ }
81
+ /**
82
+ * Build concrete artifact URLs for a model. Prefers the CDN base;
83
+ * GitHub Releases base is the fallback (slower, but no CDN cache).
84
+ *
85
+ * Both URLs use the same asset naming convention so a downloader
86
+ * can verify checksums identically against either source.
87
+ */
88
+ export function artifactUrls(entry, variant = "q8", format = "onnx") {
89
+ const assetName = assetNameFor(entry, variant, format);
90
+ const versionedCdn = entry.cdn_base.replace("{version}", entry.version);
91
+ const versionedGithub = entry.github_base.replace("{version}", entry.version);
92
+ return {
93
+ primary: `${versionedCdn}${assetName}`,
94
+ fallback: `${versionedGithub}${assetName}`,
95
+ assetName,
96
+ };
97
+ }
98
+ /**
99
+ * Sidecar artifacts that ship with every release. These names match
100
+ * the release pipeline in `ml-models/.github/workflows/release.yml`.
101
+ */
102
+ export function sidecarFilenames(entry, variant = "q8", format = "onnx") {
103
+ const asset = assetNameFor(entry, variant, format);
104
+ return [`${asset}.sha256`, "vocab.json", "config.json"];
105
+ }
106
+ function assetNameFor(entry, variant, format = "onnx") {
107
+ const task = taskNameFromBases(entry);
108
+ return `${task}${VARIANT_SUFFIX[variant]}${FORMAT_EXTENSION[format]}`;
109
+ }
110
+ /**
111
+ * Best-effort task name extraction from `cdn_base`/`github_base`.
112
+ * Both bases end with `<task>-v{version}/`, so we slice off the
113
+ * trailing version segment.
114
+ */
115
+ function taskNameFromBases(entry) {
116
+ const lastSegment = entry.github_base.split("/").filter(Boolean).pop() ?? "";
117
+ const suffix = "-v{version}";
118
+ if (lastSegment.endsWith(suffix))
119
+ return lastSegment.slice(0, -suffix.length);
120
+ throw new Error(`Cannot extract task name from manifest entry. github_base=${entry.github_base}`);
121
+ }
122
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/ml/provision/manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Model registry — adding a new ML model kind is purely additive.
3
+ *
4
+ * Adding ByT5 / Mamba / etc. later = new file in `src/ml/models/<name>/`
5
+ * that calls `registerModel`. Existing code never changes.
6
+ *
7
+ * MECE: every model kind lives in exactly one factory function.
8
+ * OCP: registry is open for extension, closed for modification.
9
+ * DRY: shared infrastructure (session creation, provisioning) is
10
+ * reused by every model.
11
+ */
12
+ import type { MLModel, ModelFactory, ModelKind, ModelRef } from "./types.js";
13
+ /**
14
+ * Register a factory for a model kind. Call once per kind at module
15
+ * load time.
16
+ */
17
+ export declare function registerModel(kind: ModelKind, factory: ModelFactory): void;
18
+ /**
19
+ * Load (or return cached) model for a given ref. The factory is
20
+ * dispatched by `kind`; the session and artifacts are provisioned
21
+ * by the provisioner.
22
+ *
23
+ * Lazy: models load only when first requested. Subsequent calls
24
+ * return the cached instance.
25
+ */
26
+ export declare function loadModel(ref: ModelRef): Promise<MLModel>;
27
+ /**
28
+ * List registered model kinds (useful for diagnostics).
29
+ */
30
+ export declare function registeredKinds(): readonly ModelKind[];
31
+ /**
32
+ * Free all cached models. Used in tests.
33
+ */
34
+ export declare function resetModels(): Promise<void>;
35
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/ml/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAK5E;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAK1E;AAQD;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAqB/D;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,SAAS,SAAS,EAAE,CAEtD;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAajD"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Model registry — adding a new ML model kind is purely additive.
3
+ *
4
+ * Adding ByT5 / Mamba / etc. later = new file in `src/ml/models/<name>/`
5
+ * that calls `registerModel`. Existing code never changes.
6
+ *
7
+ * MECE: every model kind lives in exactly one factory function.
8
+ * OCP: registry is open for extension, closed for modification.
9
+ * DRY: shared infrastructure (session creation, provisioning) is
10
+ * reused by every model.
11
+ */
12
+ import { provisionModel } from "./provision/index.js";
13
+ const factories = new Map();
14
+ /**
15
+ * Register a factory for a model kind. Call once per kind at module
16
+ * load time.
17
+ */
18
+ export function registerModel(kind, factory) {
19
+ if (factories.has(kind)) {
20
+ throw new Error(`Model kind "${kind}" is already registered`);
21
+ }
22
+ factories.set(kind, factory);
23
+ }
24
+ const cache = new Map();
25
+ function cacheKey(ref) {
26
+ return `${ref.kind}/${ref.id}/${ref.url ?? "_default"}`;
27
+ }
28
+ /**
29
+ * Load (or return cached) model for a given ref. The factory is
30
+ * dispatched by `kind`; the session and artifacts are provisioned
31
+ * by the provisioner.
32
+ *
33
+ * Lazy: models load only when first requested. Subsequent calls
34
+ * return the cached instance.
35
+ */
36
+ export async function loadModel(ref) {
37
+ const key = cacheKey(ref);
38
+ const cached = cache.get(key);
39
+ if (cached)
40
+ return cached;
41
+ const factory = factories.get(ref.kind);
42
+ if (!factory) {
43
+ throw new Error(`Unknown model kind: "${ref.kind}". Register a factory via registerModel("${ref.kind}", factory).`);
44
+ }
45
+ const promise = (async () => {
46
+ const { session, artifacts } = await provisionModel(ref);
47
+ return factory({ session, artifacts });
48
+ })();
49
+ cache.set(key, promise);
50
+ // On failure, drop the cached rejection so callers can retry.
51
+ promise.catch(() => cache.delete(key));
52
+ return promise;
53
+ }
54
+ /**
55
+ * List registered model kinds (useful for diagnostics).
56
+ */
57
+ export function registeredKinds() {
58
+ return [...factories.keys()];
59
+ }
60
+ /**
61
+ * Free all cached models. Used in tests.
62
+ */
63
+ export async function resetModels() {
64
+ const pending = [...cache.values()];
65
+ cache.clear();
66
+ await Promise.allSettled(pending.map(async (p) => {
67
+ try {
68
+ const m = await p;
69
+ await m.dispose();
70
+ }
71
+ catch {
72
+ // already rejected; ignore
73
+ }
74
+ }));
75
+ }
76
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/ml/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,MAAM,SAAS,GAAG,IAAI,GAAG,EAA2B,CAAA;AAEpD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,IAAe,EAAE,OAAqB;IAClE,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,yBAAyB,CAAC,CAAA;IAC/D,CAAC;IACD,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AAC9B,CAAC;AAED,MAAM,KAAK,GAAG,IAAI,GAAG,EAA4B,CAAA;AAEjD,SAAS,QAAQ,CAAC,GAAa;IAC7B,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,IAAI,UAAU,EAAE,CAAA;AACzD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAa;IAC3C,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;IACzB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IAEzB,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,wBAAwB,GAAG,CAAC,IAAI,4CAA4C,GAAG,CAAC,IAAI,cAAc,CACnG,CAAA;IACH,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;QAC1B,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAA;QACxD,OAAO,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAA;IACxC,CAAC,CAAC,EAAE,CAAA;IAEJ,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IACvB,8DAA8D;IAC9D,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IACtC,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAA;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;IACnC,KAAK,CAAC,KAAK,EAAE,CAAA;IACb,MAAM,OAAO,CAAC,UAAU,CACtB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,CAAC,CAAA;YACjB,MAAM,CAAC,CAAC,OAAO,EAAE,CAAA;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,2BAA2B;QAC7B,CAAC;IACH,CAAC,CAAC,CACH,CAAA;AACH,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * InferenceSession — abstract interface for running ML models.
3
+ *
4
+ * Three backends implement this:
5
+ * - onnx-node: native ONNX Runtime via onnxruntime-node (Node.js only)
6
+ * - onnx-web: WASM/WebGPU ONNX Runtime via onnxruntime-web (browser)
7
+ * - litert-web: LiteRT.js for .tflite models (browser)
8
+ *
9
+ * Adding a new backend = adding a new file here + exporting a factory.
10
+ * Existing code never changes (OCP).
11
+ *
12
+ * Backends are loaded lazily — only the one needed is imported, keeping
13
+ * the bundle size minimal.
14
+ */
15
+ import type { InferenceSession, InferenceInputs, InferenceOutputs } from "../types.js";
16
+ export type { InferenceSession, InferenceInputs, InferenceOutputs };
17
+ export type { WebSessionOptions } from "./onnx-web.js";
18
+ export type { LitertSessionOptions } from "./litert-web.js";
19
+ /**
20
+ * Detect environment. Browser backends work in `window`, Node backends
21
+ * work in `process.versions.node`. Some environments (Cloudflare
22
+ * Workers, Deno) might prefer Web.
23
+ */
24
+ export declare function detectBackend(): "node" | "web" | "unknown";
25
+ /**
26
+ * Options for `createSession`.
27
+ */
28
+ export interface SessionOptions {
29
+ /** Force a specific backend. Auto-detected by default. */
30
+ backend?: "node" | "web";
31
+ /**
32
+ * Which runtime to use. ONNX is the default; "litert" selects
33
+ * Google's LiteRT.js for .tflite models. The runtime choice must
34
+ * match the model artifact being loaded (.onnx vs .tflite).
35
+ */
36
+ runtime?: "onnx" | "litert";
37
+ /** ONNX-web only: enable WebGPU with WASM fallback. Default: true. */
38
+ webgpu?: boolean;
39
+ /** LiteRT-web only: accelerator preference. Default: "webgpu". */
40
+ litertAccelerator?: "webgpu" | "webnn" | "wasm";
41
+ /**
42
+ * LiteRT-web only: input/output tensor names. ONNX reads these from
43
+ * the model graph; LiteRT's auto-generated names are not user-facing,
44
+ * so the caller must supply them.
45
+ */
46
+ inputNames?: readonly string[];
47
+ outputNames?: readonly string[];
48
+ }
49
+ /**
50
+ * Create an InferenceSession from a model file. Auto-picks the backend.
51
+ * Backend choice can be overridden via opts.backend; runtime choice
52
+ * via opts.runtime.
53
+ */
54
+ export declare function createSession(modelData: ArrayBuffer | Uint8Array, opts?: SessionOptions): Promise<InferenceSession>;
55
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ml/session/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEtF,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAA;AACnE,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACtD,YAAY,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAE3D;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,GAAG,KAAK,GAAG,SAAS,CAS1D;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IACxB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;IAC3B,sEAAsE;IACtE,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;IAC/C;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9B,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAChC;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,WAAW,GAAG,UAAU,EACnC,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,gBAAgB,CAAC,CAoB3B"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * InferenceSession — abstract interface for running ML models.
3
+ *
4
+ * Three backends implement this:
5
+ * - onnx-node: native ONNX Runtime via onnxruntime-node (Node.js only)
6
+ * - onnx-web: WASM/WebGPU ONNX Runtime via onnxruntime-web (browser)
7
+ * - litert-web: LiteRT.js for .tflite models (browser)
8
+ *
9
+ * Adding a new backend = adding a new file here + exporting a factory.
10
+ * Existing code never changes (OCP).
11
+ *
12
+ * Backends are loaded lazily — only the one needed is imported, keeping
13
+ * the bundle size minimal.
14
+ */
15
+ /**
16
+ * Detect environment. Browser backends work in `window`, Node backends
17
+ * work in `process.versions.node`. Some environments (Cloudflare
18
+ * Workers, Deno) might prefer Web.
19
+ */
20
+ export function detectBackend() {
21
+ const g = globalThis;
22
+ if (g.process?.versions?.node) {
23
+ return "node";
24
+ }
25
+ if (g.self !== undefined) {
26
+ return "web";
27
+ }
28
+ return "unknown";
29
+ }
30
+ /**
31
+ * Create an InferenceSession from a model file. Auto-picks the backend.
32
+ * Backend choice can be overridden via opts.backend; runtime choice
33
+ * via opts.runtime.
34
+ */
35
+ export async function createSession(modelData, opts = {}) {
36
+ const runtime = opts.runtime ?? "onnx";
37
+ // LiteRT runs in the browser only (for now — no Node.js build).
38
+ if (runtime === "litert") {
39
+ const litertOpts = {};
40
+ if (opts.litertAccelerator !== undefined)
41
+ litertOpts.accelerator = opts.litertAccelerator;
42
+ if (opts.inputNames !== undefined)
43
+ litertOpts.inputNames = opts.inputNames;
44
+ if (opts.outputNames !== undefined)
45
+ litertOpts.outputNames = opts.outputNames;
46
+ return (await import("./litert-web.js")).createLitertSession(modelData, litertOpts);
47
+ }
48
+ const backend = (opts.backend ?? detectBackend() === "node") ? "node" : "web";
49
+ if (backend === "node") {
50
+ return (await import("./onnx-node.js")).createNodeSession(modelData);
51
+ }
52
+ // Pass through webgpu only when explicitly set — exactOptionalPropertyTypes
53
+ // distinguishes missing vs undefined, and we want missing = use default.
54
+ const webOpts = opts.webgpu === undefined ? {} : { webgpu: opts.webgpu };
55
+ return (await import("./onnx-web.js")).createWebSession(modelData, webOpts);
56
+ }
57
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ml/session/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,CAAC,GAAG,UAA4E,CAAA;IACtF,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAA;IACf,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AA2BD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,SAAmC,EACnC,OAAuB,EAAE;IAEzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM,CAAA;IAEtC,gEAAgE;IAChE,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,UAAU,GAA4B,EAAE,CAAA;QAC9C,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS;YAAE,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAA;QACzF,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;YAAE,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QAC1E,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAAE,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;QAC7E,OAAO,CAAC,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,mBAAmB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IACrF,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,aAAa,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAA;IAC7E,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;IACtE,CAAC;IACD,4EAA4E;IAC5E,yEAAyE;IACzE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAA;IACxE,OAAO,CAAC,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AAC7E,CAAC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * LiteRT.js backend — runs .tflite models via Google's runtime.
3
+ *
4
+ * Parallel to onnx-web.ts. Same InferenceSession interface. Lazy-loaded
5
+ * so bundlers exclude it from builds that don't use LiteRT.
6
+ *
7
+ * `@litertjs/core` is a peer dep — users install it if they want the
8
+ * LiteRT runtime. Without it, calling with `runtime: 'litert'` throws
9
+ * a clear error.
10
+ *
11
+ * Note: as of v2.5.2 (released July 9, 2026), the LiteRT.js API is
12
+ * still settling. This wrapper isolates users from API churn — when
13
+ * Google ships breaking changes, we absorb them here.
14
+ *
15
+ * Known API gaps to verify with real models (deferred until v0.1.0
16
+ * produces a real .tflite artifact):
17
+ * - Multi-input: example shows `model.run(singleTensor)`. We pass an
18
+ * array when inputNames.length > 1; will adjust if API differs.
19
+ * - Multi-output: result object shape unknown until we have a real
20
+ * multi-head .tflite.
21
+ * - Int64 inputs: our model has int64 src/lengths. Tensor constructor
22
+ * accepts TypedArray; BigInt64Array should work but untested.
23
+ */
24
+ import type { InferenceSession } from "../types.js";
25
+ export interface LitertSessionOptions {
26
+ /**
27
+ * Accelerator preference. Default: 'webgpu' (falls back to 'wasm'
28
+ * automatically inside LiteRT.js if WebGPU is unavailable).
29
+ */
30
+ accelerator?: "webgpu" | "webnn" | "wasm";
31
+ /**
32
+ * URL prefix serving the LiteRT.js WASM files. Default: jsdelivr CDN.
33
+ * Override for self-hosted deployments or offline use.
34
+ */
35
+ wasmPath?: string;
36
+ }
37
+ /**
38
+ * Create a LiteRT.js session from a .tflite model blob.
39
+ *
40
+ * Caller supplies input/output names because the .tflite default
41
+ * signature names are auto-generated (e.g. "args_0"). For our rababa
42
+ * models, use:
43
+ * - single-head: inputNames=["src","lengths"], outputNames=["output"]
44
+ * - multi-head: inputNames=["src","lengths"], outputNames=["niqqud","dagesh","sin"]
45
+ */
46
+ export declare function createLitertSession(modelData: ArrayBuffer | Uint8Array, opts?: LitertSessionOptions & {
47
+ inputNames?: readonly string[];
48
+ outputNames?: readonly string[];
49
+ }): Promise<InferenceSession>;
50
+ //# sourceMappingURL=litert-web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"litert-web.d.ts","sourceRoot":"","sources":["../../../src/ml/session/litert-web.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAKjB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;IACzC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AA+CD;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,WAAW,GAAG,UAAU,EACnC,IAAI,GAAE,oBAAoB,GAAG;IAC3B,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9B,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC3B,GACL,OAAO,CAAC,gBAAgB,CAAC,CAuB3B"}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * LiteRT.js backend — runs .tflite models via Google's runtime.
3
+ *
4
+ * Parallel to onnx-web.ts. Same InferenceSession interface. Lazy-loaded
5
+ * so bundlers exclude it from builds that don't use LiteRT.
6
+ *
7
+ * `@litertjs/core` is a peer dep — users install it if they want the
8
+ * LiteRT runtime. Without it, calling with `runtime: 'litert'` throws
9
+ * a clear error.
10
+ *
11
+ * Note: as of v2.5.2 (released July 9, 2026), the LiteRT.js API is
12
+ * still settling. This wrapper isolates users from API churn — when
13
+ * Google ships breaking changes, we absorb them here.
14
+ *
15
+ * Known API gaps to verify with real models (deferred until v0.1.0
16
+ * produces a real .tflite artifact):
17
+ * - Multi-input: example shows `model.run(singleTensor)`. We pass an
18
+ * array when inputNames.length > 1; will adjust if API differs.
19
+ * - Multi-output: result object shape unknown until we have a real
20
+ * multi-head .tflite.
21
+ * - Int64 inputs: our model has int64 src/lengths. Tensor constructor
22
+ * accepts TypedArray; BigInt64Array should work but untested.
23
+ */
24
+ const DEFAULT_WASM_PATH = "https://cdn.jsdelivr.net/npm/@litertjs/core@2.5.2/wasm/";
25
+ let cached;
26
+ async function loadLitertCore() {
27
+ if (!cached) {
28
+ cached = (async () => {
29
+ try {
30
+ return (await import("@litertjs/core"));
31
+ }
32
+ catch (e) {
33
+ cached = undefined;
34
+ throw new Error("@litertjs/core is required for LiteRT inference. Install with: npm install @litertjs/core", { cause: e });
35
+ }
36
+ })();
37
+ }
38
+ return cached;
39
+ }
40
+ /**
41
+ * Create a LiteRT.js session from a .tflite model blob.
42
+ *
43
+ * Caller supplies input/output names because the .tflite default
44
+ * signature names are auto-generated (e.g. "args_0"). For our rababa
45
+ * models, use:
46
+ * - single-head: inputNames=["src","lengths"], outputNames=["output"]
47
+ * - multi-head: inputNames=["src","lengths"], outputNames=["niqqud","dagesh","sin"]
48
+ */
49
+ export async function createLitertSession(modelData, opts = {}) {
50
+ const accelerator = opts.accelerator ?? "webgpu";
51
+ const wasmPath = opts.wasmPath ?? DEFAULT_WASM_PATH;
52
+ const inputNames = opts.inputNames ?? ["src", "lengths"];
53
+ const outputNames = opts.outputNames ?? ["output"];
54
+ const core = await loadLitertCore();
55
+ await core.loadLiteRt(wasmPath, { jspi: accelerator === "webnn" });
56
+ // LiteRT.js takes a URL; create a blob URL from the bytes.
57
+ // (In Node 18+, Blob + URL.createObjectURL are available globally.)
58
+ const blob = new Blob([new Uint8Array(modelData)], { type: "application/octet-stream" });
59
+ const url = URL.createObjectURL(blob);
60
+ let model;
61
+ try {
62
+ model = await core.loadAndCompile(url, { accelerator });
63
+ }
64
+ finally {
65
+ // Model is compiled; the URL can be revoked. If LiteRT keeps lazy
66
+ // references to the URL, we'd need to defer this to dispose(). Be
67
+ // conservative and revoke on dispose instead.
68
+ }
69
+ return new LitertInferenceSession(model, core, inputNames, outputNames, url);
70
+ }
71
+ class LitertInferenceSession {
72
+ inputNames;
73
+ outputNames;
74
+ model;
75
+ core;
76
+ blobUrl;
77
+ disposed = false;
78
+ constructor(model, core, inputNames, outputNames, blobUrl) {
79
+ this.model = model;
80
+ this.core = core;
81
+ this.inputNames = inputNames;
82
+ this.outputNames = outputNames;
83
+ this.blobUrl = blobUrl;
84
+ }
85
+ async run(inputs) {
86
+ if (this.disposed)
87
+ throw new Error("Session disposed");
88
+ // Convert named inputs to LiteRT Tensors, in inputNames order.
89
+ const tensors = [];
90
+ for (const name of this.inputNames) {
91
+ const t = inputs[name];
92
+ if (!t)
93
+ throw new Error(`Missing LiteRT input: ${name}`);
94
+ tensors.push(new this.core.Tensor(t.data, t.dims));
95
+ }
96
+ // Pass single tensor directly; pass array for multi-input. The
97
+ // LiteRT.js v2.5.2 example shows single-tensor `run()`, but the
98
+ // underlying signature accepts either form. Empirical verification
99
+ // pending a real multi-input model.
100
+ const results = await this.model.run(tensors.length === 1 ? tensors[0] : tensors);
101
+ const out = {};
102
+ try {
103
+ for (let i = 0; i < this.outputNames.length; i++) {
104
+ const name = this.outputNames[i];
105
+ const resultTensor = results[i];
106
+ if (!resultTensor) {
107
+ throw new Error(`LiteRT produced no output at index ${i} (expected ${name})`);
108
+ }
109
+ // Move to wasm-backed readable buffer; safe regardless of where
110
+ // the tensor currently lives (webgpu or wasm).
111
+ const moved = await resultTensor.moveTo("wasm");
112
+ const data = await moved.toTypedArray();
113
+ out[name] = {
114
+ name,
115
+ type: dtypeFromTypedArray(data),
116
+ data,
117
+ dims: [...resultTensor.dims],
118
+ };
119
+ await moved.delete();
120
+ }
121
+ }
122
+ finally {
123
+ await results.delete();
124
+ }
125
+ return out;
126
+ }
127
+ async dispose() {
128
+ if (this.disposed)
129
+ return;
130
+ this.disposed = true;
131
+ await this.model.delete();
132
+ URL.revokeObjectURL(this.blobUrl);
133
+ }
134
+ }
135
+ function dtypeFromTypedArray(arr) {
136
+ if (arr instanceof Float32Array)
137
+ return "float32";
138
+ if (arr instanceof Int32Array)
139
+ return "int32";
140
+ if (arr instanceof BigInt64Array)
141
+ return "int64";
142
+ if (arr instanceof Uint8Array)
143
+ return "uint8";
144
+ return "float32";
145
+ }
146
+ //# sourceMappingURL=litert-web.js.map