interscript 2.4.1 → 3.0.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 +30 -0
  68. package/dist/ml/imf/registry.d.ts.map +1 -0
  69. package/dist/ml/imf/registry.js +140 -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-guj-Gujr-Latn-1997.js +0 -50
  203. package/src/maps/alalc-guj-Gujr-Latn-2011.js +0 -7
  204. package/src/maps/alalc-hin-Deva-Latn-1997.js +0 -60
  205. package/src/maps/alalc-hin-Deva-Latn-2011.js +0 -7
  206. package/src/maps/alalc-kan-Kana-Latn-1997.js +0 -51
  207. package/src/maps/alalc-kan-Kana-Latn-2011.js +0 -7
  208. package/src/maps/alalc-kat-Geok-Latn-1997.js +0 -8
  209. package/src/maps/alalc-kat-Geok-Latn-2011.js +0 -7
  210. package/src/maps/alalc-kat-Geor-Latn-1997.js +0 -8
  211. package/src/maps/alalc-kat-Geor-Latn-2011.js +0 -7
  212. package/src/maps/alalc-kor-Hang-Latn-1997.js +0 -9
  213. package/src/maps/alalc-mal-Mlym-Latn-1997.js +0 -52
  214. package/src/maps/alalc-mal-Mlym-Latn-2012.js +0 -7
  215. package/src/maps/alalc-mar-Deva-Latn-1997.js +0 -13
  216. package/src/maps/alalc-mar-Deva-Latn-2011.js +0 -7
  217. package/src/maps/alalc-mkd-Cyrl-Latn-1997.js +0 -17
  218. package/src/maps/alalc-mkd-Cyrl-Latn-2013.js +0 -17
  219. package/src/maps/alalc-mon-Cyrl-Latn-1997.js +0 -8
  220. package/src/maps/alalc-ori-Orya-Latn-1997.js +0 -55
  221. package/src/maps/alalc-ori-Orya-Latn-2011.js +0 -7
  222. package/src/maps/alalc-pan-Guru-Latn-1997.js +0 -17
  223. package/src/maps/alalc-pan-Guru-Latn-2011.js +0 -7
  224. package/src/maps/alalc-per-Arab-Latn-1997.js +0 -11
  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,33 @@
1
+ /**
2
+ * Attention masks for the Secryst transformer.
3
+ *
4
+ * Port of the mask construction logic from
5
+ * `secryst/lib/secryst/translator.rb`.
6
+ *
7
+ * The transformer needs three mask types:
8
+ * - tgt_mask: causal mask (lower-triangular) prevents attending to future positions
9
+ * - src_key_padding_mask: marks padding tokens in the source
10
+ * - tgt_key_padding_mask: marks padding tokens in the target
11
+ * - memory_key_padding_mask: same as src_key_padding_mask
12
+ */
13
+ import type { Tensor } from "../../types.js";
14
+ /**
15
+ * Build a causal (lower-triangular) attention mask.
16
+ * Shape: [seq_len, seq_len]. 1 = allowed, 0 = masked.
17
+ *
18
+ * Port of: Numo::DFloat.ones(n,n).triu.transpose.eq(0)
19
+ * → upper triangular of ones → transpose → lower triangular → negate
20
+ */
21
+ export declare function causalMask(seqLen: number): Uint8Array;
22
+ /**
23
+ * Build a padding mask from a token ID sequence.
24
+ * Pad ID = 1 in secryst (matching the Ruby code).
25
+ * Shape: [batch, seq_len]. 1 = real token, 0 = padding.
26
+ */
27
+ export declare function paddingMask(tokens: readonly number[], padId?: number): Uint8Array;
28
+ /**
29
+ * Construct all masks needed for one inference step.
30
+ * Returns tensors in the format the ONNX model expects.
31
+ */
32
+ export declare function buildMasks(srcLen: number, tgtLen: number, srcIds: readonly number[], tgtIds: readonly number[]): Record<string, Tensor>;
33
+ //# sourceMappingURL=masks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masks.d.ts","sourceRoot":"","sources":["../../../../src/ml/models/secryst/masks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAE5C;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CASrD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,GAAE,MAAU,GAAG,UAAU,CAEpF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,MAAM,EAAE,SAAS,MAAM,EAAE,GACxB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA+BxB"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Attention masks for the Secryst transformer.
3
+ *
4
+ * Port of the mask construction logic from
5
+ * `secryst/lib/secryst/translator.rb`.
6
+ *
7
+ * The transformer needs three mask types:
8
+ * - tgt_mask: causal mask (lower-triangular) prevents attending to future positions
9
+ * - src_key_padding_mask: marks padding tokens in the source
10
+ * - tgt_key_padding_mask: marks padding tokens in the target
11
+ * - memory_key_padding_mask: same as src_key_padding_mask
12
+ */
13
+ /**
14
+ * Build a causal (lower-triangular) attention mask.
15
+ * Shape: [seq_len, seq_len]. 1 = allowed, 0 = masked.
16
+ *
17
+ * Port of: Numo::DFloat.ones(n,n).triu.transpose.eq(0)
18
+ * → upper triangular of ones → transpose → lower triangular → negate
19
+ */
20
+ export function causalMask(seqLen) {
21
+ const mask = new Uint8Array(seqLen * seqLen);
22
+ for (let i = 0; i < seqLen; i++) {
23
+ for (let j = 0; j < seqLen; j++) {
24
+ // Allow attention to positions ≤ current position (causal)
25
+ mask[i * seqLen + j] = j <= i ? 1 : 0;
26
+ }
27
+ }
28
+ return mask;
29
+ }
30
+ /**
31
+ * Build a padding mask from a token ID sequence.
32
+ * Pad ID = 1 in secryst (matching the Ruby code).
33
+ * Shape: [batch, seq_len]. 1 = real token, 0 = padding.
34
+ */
35
+ export function paddingMask(tokens, padId = 1) {
36
+ return new Uint8Array(tokens.map((t) => (t === padId ? 0 : 1)));
37
+ }
38
+ /**
39
+ * Construct all masks needed for one inference step.
40
+ * Returns tensors in the format the ONNX model expects.
41
+ */
42
+ export function buildMasks(srcLen, tgtLen, srcIds, tgtIds) {
43
+ const tgt = causalMask(tgtLen);
44
+ const srcPad = paddingMask(srcIds);
45
+ const tgtPad = paddingMask(tgtIds);
46
+ return {
47
+ tgt_mask: {
48
+ name: "tgt_mask",
49
+ type: "int8",
50
+ data: tgt,
51
+ dims: [tgtLen, tgtLen],
52
+ },
53
+ src_key_padding_mask: {
54
+ name: "src_key_padding_mask",
55
+ type: "int8",
56
+ data: srcPad,
57
+ dims: [1, srcLen],
58
+ },
59
+ tgt_key_padding_mask: {
60
+ name: "tgt_key_padding_mask",
61
+ type: "int8",
62
+ data: tgtPad,
63
+ dims: [1, tgtLen],
64
+ },
65
+ memory_key_padding_mask: {
66
+ name: "memory_key_padding_mask",
67
+ type: "int8",
68
+ data: srcPad,
69
+ dims: [1, srcLen],
70
+ },
71
+ };
72
+ }
73
+ //# sourceMappingURL=masks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masks.js","sourceRoot":"","sources":["../../../../src/ml/models/secryst/masks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,2DAA2D;YAC3D,IAAI,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,MAAyB,EAAE,QAAgB,CAAC;IACtE,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACjE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CACxB,MAAc,EACd,MAAc,EACd,MAAyB,EACzB,MAAyB;IAEzB,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAC9B,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;IAClC,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;IAElC,OAAO;QACL,QAAQ,EAAE;YACR,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;SACvB;QACD,oBAAoB,EAAE;YACpB,IAAI,EAAE,sBAAsB;YAC5B,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC;SAClB;QACD,oBAAoB,EAAE;YACpB,IAAI,EAAE,sBAAsB;YAC5B,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC;SAClB;QACD,uBAAuB,EAAE;YACvB,IAAI,EAAE,yBAAyB;YAC/B,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC;SAClB;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Secryst translator — autoregressive seq2seq decode loop.
3
+ *
4
+ * Port of `secryst/lib/secryst/translator.rb:translate`.
5
+ *
6
+ * The transformer generates output one token at a time:
7
+ * 1. Encode input: chars → vocab IDs, wrap with <sos>/<eos>
8
+ * 2. Initialize output: [<sos>]
9
+ * 3. Loop (max_seq_length times):
10
+ * a. Build masks for current src + tgt lengths
11
+ * b. Run ONNX inference
12
+ * c. Argmax → next token ID
13
+ * d. If <eos>: break
14
+ * e. Append to output
15
+ * 4. Decode output IDs → string
16
+ */
17
+ import type { InferenceSession, MLModel, ModelArtifacts, ModelKind } from "../../types.js";
18
+ export interface SecrystModel extends MLModel {
19
+ readonly kind: ModelKind;
20
+ translate(text: string, maxSeqLength?: number): Promise<string>;
21
+ transform(input: string): Promise<string>;
22
+ dispose(): Promise<void>;
23
+ }
24
+ /**
25
+ * Factory: builds a SecrystModel from a session + artifacts.
26
+ */
27
+ export declare function createSecrystModel(params: {
28
+ readonly session: InferenceSession;
29
+ readonly artifacts: ModelArtifacts;
30
+ }): Promise<SecrystModel>;
31
+ //# sourceMappingURL=translator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translator.d.ts","sourceRoot":"","sources":["../../../../src/ml/models/secryst/translator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAU,MAAM,gBAAgB,CAAA;AAKlG,MAAM,WAAW,YAAa,SAAQ,OAAO;IAC3C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC/D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACzC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACzB;AA+FD;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAC/C,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAA;IAClC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAA;CACnC,GAAG,OAAO,CAAC,YAAY,CAAC,CASxB"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Secryst translator — autoregressive seq2seq decode loop.
3
+ *
4
+ * Port of `secryst/lib/secryst/translator.rb:translate`.
5
+ *
6
+ * The transformer generates output one token at a time:
7
+ * 1. Encode input: chars → vocab IDs, wrap with <sos>/<eos>
8
+ * 2. Initialize output: [<sos>]
9
+ * 3. Loop (max_seq_length times):
10
+ * a. Build masks for current src + tgt lengths
11
+ * b. Run ONNX inference
12
+ * c. Argmax → next token ID
13
+ * d. If <eos>: break
14
+ * e. Append to output
15
+ * 4. Decode output IDs → string
16
+ */
17
+ import { buildVocabs, parseVocabYaml } from "./vocab.js";
18
+ import { buildMasks } from "./masks.js";
19
+ const DEFAULT_MAX_SEQ = 100;
20
+ const SOS_TOKEN = "<sos>";
21
+ const EOS_TOKEN = "<eos>";
22
+ class SecrystModelImpl {
23
+ kind = "secryst";
24
+ session;
25
+ inputVocab;
26
+ targetVocab;
27
+ constructor(session, inputVocab, targetVocab) {
28
+ this.session = session;
29
+ this.inputVocab = inputVocab;
30
+ this.targetVocab = targetVocab;
31
+ }
32
+ async translate(text, maxSeqLength = DEFAULT_MAX_SEQ) {
33
+ // Encode input: <sos> + chars + <eos>
34
+ const srcIds = [
35
+ this.inputVocab.encode(SOS_TOKEN),
36
+ ...this.inputVocab.encodeSequence(text),
37
+ this.inputVocab.encode(EOS_TOKEN),
38
+ ].filter((id) => id >= 0);
39
+ // Initialize output with <sos>
40
+ const tgtIds = [this.targetVocab.encode(SOS_TOKEN)];
41
+ const eosId = this.targetVocab.encode(EOS_TOKEN);
42
+ for (let step = 0; step < maxSeqLength; step++) {
43
+ const masks = buildMasks(srcIds.length, tgtIds.length, srcIds, tgtIds);
44
+ const feeds = {
45
+ src: {
46
+ name: "src",
47
+ type: "int64",
48
+ data: new BigInt64Array(srcIds.map((n) => BigInt(n))),
49
+ dims: [1, srcIds.length],
50
+ },
51
+ tgt: {
52
+ name: "tgt",
53
+ type: "int64",
54
+ data: new BigInt64Array(tgtIds.map((n) => BigInt(n))),
55
+ dims: [1, tgtIds.length],
56
+ },
57
+ ...masks,
58
+ };
59
+ const outputs = await this.session.run(feeds);
60
+ const out = outputs[this.session.outputNames[0]];
61
+ if (!out)
62
+ throw new Error("Secryst model produced no output");
63
+ // Argmax over the last position's class dimension
64
+ const dims = out.dims;
65
+ const classCount = dims[dims.length - 1];
66
+ const data = out.data;
67
+ const lastPosBase = step * classCount;
68
+ let bestId = 0;
69
+ let bestVal = -Infinity;
70
+ for (let c = 0; c < classCount; c++) {
71
+ const v = typeof data[lastPosBase + c] === "bigint"
72
+ ? Number(data[lastPosBase + c])
73
+ : data[lastPosBase + c];
74
+ if (v > bestVal) {
75
+ bestVal = v;
76
+ bestId = c;
77
+ }
78
+ }
79
+ if (bestId === eosId)
80
+ break;
81
+ tgtIds.push(bestId);
82
+ }
83
+ // Drop the <sos> and return decoded text
84
+ return this.targetVocab.decodeSequence(tgtIds.slice(1));
85
+ }
86
+ /** Unified MLModel interface — processes line by line (matching Ruby). */
87
+ async transform(input) {
88
+ const lines = input.split("\n");
89
+ const results = [];
90
+ for (const line of lines) {
91
+ results.push(await this.translate(line));
92
+ }
93
+ return results.join("\n");
94
+ }
95
+ async dispose() {
96
+ await this.session.dispose();
97
+ }
98
+ }
99
+ /**
100
+ * Factory: builds a SecrystModel from a session + artifacts.
101
+ */
102
+ export async function createSecrystModel(params) {
103
+ const vocabsRaw = params.artifacts["vocabs.yaml"];
104
+ if (!vocabsRaw) {
105
+ throw new Error("Secryst model missing vocabs.yaml");
106
+ }
107
+ const yamlStr = typeof vocabsRaw === "string" ? vocabsRaw : new TextDecoder().decode(vocabsRaw);
108
+ const data = parseVocabYaml(yamlStr);
109
+ const { input, target } = buildVocabs(data);
110
+ return new SecrystModelImpl(params.session, input, target);
111
+ }
112
+ //# sourceMappingURL=translator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translator.js","sourceRoot":"","sources":["../../../../src/ml/models/secryst/translator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Secryst vocabulary — port of `secryst/lib/secryst/vocab.rb`.
3
+ *
4
+ * Maps tokens to integer IDs (stoi) and back (itos). Supports
5
+ * special tokens (<sos>, <eos>, <pad>) alongside character-level
6
+ * vocab.
7
+ */
8
+ export interface VocabData {
9
+ readonly input: readonly string[];
10
+ readonly target: readonly string[];
11
+ }
12
+ export declare class Vocab {
13
+ readonly stoi: Readonly<Record<string, number>>;
14
+ readonly itos: readonly string[];
15
+ readonly length: number;
16
+ constructor(tokens: readonly string[], specials?: readonly string[]);
17
+ /** String to ID. Returns -1 for unknown tokens. */
18
+ encode(token: string): number;
19
+ /** ID to string. Returns "" for unknown IDs. */
20
+ decode(id: number): string;
21
+ /** Encode a string into a sequence of token IDs. */
22
+ encodeSequence(text: string): number[];
23
+ /** Decode a sequence of token IDs back into a string. */
24
+ decodeSequence(ids: readonly number[]): string;
25
+ }
26
+ /**
27
+ * Parse vocab data from YAML format (as stored in the model zip).
28
+ * Uses js-yaml if available, otherwise a minimal YAML parser for
29
+ * the simple list format secryst uses.
30
+ */
31
+ export declare function parseVocabYaml(yaml: string): VocabData;
32
+ /**
33
+ * Build Vocab instances from parsed data.
34
+ */
35
+ export declare function buildVocabs(data: VocabData): {
36
+ input: Vocab;
37
+ target: Vocab;
38
+ };
39
+ //# sourceMappingURL=vocab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vocab.d.ts","sourceRoot":"","sources":["../../../../src/ml/models/secryst/vocab.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CACnC;AAED,qBAAa,KAAK;IAChB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAC/C,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;gBAEX,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,GAAE,SAAS,MAAM,EAAO;IAOvE,mDAAmD;IACnD,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI7B,gDAAgD;IAChD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAI1B,oDAAoD;IACpD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAItC,yDAAyD;IACzD,cAAc,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM;CAG/C;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAmCtD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,KAAK,CAAA;CAAE,CAK5E"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Secryst vocabulary — port of `secryst/lib/secryst/vocab.rb`.
3
+ *
4
+ * Maps tokens to integer IDs (stoi) and back (itos). Supports
5
+ * special tokens (<sos>, <eos>, <pad>) alongside character-level
6
+ * vocab.
7
+ */
8
+ export class Vocab {
9
+ stoi;
10
+ itos;
11
+ length;
12
+ constructor(tokens, specials = []) {
13
+ const all = [...specials, ...tokens];
14
+ this.itos = all;
15
+ this.stoi = Object.freeze(Object.fromEntries(all.map((t, i) => [t, i])));
16
+ this.length = all.length;
17
+ }
18
+ /** String to ID. Returns -1 for unknown tokens. */
19
+ encode(token) {
20
+ return this.stoi[token] ?? -1;
21
+ }
22
+ /** ID to string. Returns "" for unknown IDs. */
23
+ decode(id) {
24
+ return this.itos[id] ?? "";
25
+ }
26
+ /** Encode a string into a sequence of token IDs. */
27
+ encodeSequence(text) {
28
+ return Array.from(text).map((c) => this.encode(c));
29
+ }
30
+ /** Decode a sequence of token IDs back into a string. */
31
+ decodeSequence(ids) {
32
+ return ids.map((id) => this.decode(id)).join("");
33
+ }
34
+ }
35
+ /**
36
+ * Parse vocab data from YAML format (as stored in the model zip).
37
+ * Uses js-yaml if available, otherwise a minimal YAML parser for
38
+ * the simple list format secryst uses.
39
+ */
40
+ export function parseVocabYaml(yaml) {
41
+ // Secryst vocabs are simple YAML:
42
+ // input:
43
+ // - "<sos>"
44
+ // - "<eos>"
45
+ // - "a"
46
+ // target:
47
+ // - "<sos>"
48
+ // - ...
49
+ //
50
+ // We use a minimal parser instead of requiring js-yaml as a dep.
51
+ const lines = yaml.split("\n");
52
+ let section = null;
53
+ const input = [];
54
+ const target = [];
55
+ for (const line of lines) {
56
+ const trimmed = line.trimEnd();
57
+ if (trimmed === "input:") {
58
+ section = "input";
59
+ continue;
60
+ }
61
+ if (trimmed === "target:") {
62
+ section = "target";
63
+ continue;
64
+ }
65
+ const match = trimmed.match(/^\s+-\s+"?(.+?)"?\s*$/);
66
+ if (match && section) {
67
+ const token = match[1];
68
+ if (section === "input")
69
+ input.push(token);
70
+ else
71
+ target.push(token);
72
+ }
73
+ }
74
+ return { input, target };
75
+ }
76
+ /**
77
+ * Build Vocab instances from parsed data.
78
+ */
79
+ export function buildVocabs(data) {
80
+ return {
81
+ input: new Vocab(data.input),
82
+ target: new Vocab(data.target),
83
+ };
84
+ }
85
+ //# sourceMappingURL=vocab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vocab.js","sourceRoot":"","sources":["../../../../src/ml/models/secryst/vocab.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Base URL for model artifacts. Owned here so every provisioner
3
+ * (HTTP fetcher, manifest loader, future IPFS/Bittorrent) reads
4
+ * from the same source. No circular deps.
5
+ *
6
+ * Default points at the jsDelivr mirror of `interscript/ml-models`
7
+ * — works without npm install, edge-cached globally.
8
+ *
9
+ * Override at runtime with `setModelBase()` for self-hosted mirrors,
10
+ * air-gapped envs, or staging deployments.
11
+ */
12
+ export declare function setModelBase(url: string): void;
13
+ export declare function getModelBase(): string;
14
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/ml/provision/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Base URL for model artifacts. Owned here so every provisioner
3
+ * (HTTP fetcher, manifest loader, future IPFS/Bittorrent) reads
4
+ * from the same source. No circular deps.
5
+ *
6
+ * Default points at the jsDelivr mirror of `interscript/ml-models`
7
+ * — works without npm install, edge-cached globally.
8
+ *
9
+ * Override at runtime with `setModelBase()` for self-hosted mirrors,
10
+ * air-gapped envs, or staging deployments.
11
+ */
12
+ let modelBase = "https://cdn.jsdelivr.net/gh/interscript/ml-models@main/npm/models";
13
+ export function setModelBase(url) {
14
+ modelBase = url.replace(/\/$/, "");
15
+ }
16
+ export function getModelBase() {
17
+ return modelBase;
18
+ }
19
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/ml/provision/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,IAAI,SAAS,GAAG,mEAAmE,CAAA;AAEnF,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,SAAS,CAAA;AAClB,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Model provisioner — fetch + cache model files.
3
+ *
4
+ * Used by the registry to materialize a ModelRef into a session +
5
+ * auxiliary artifacts. Reuses fetch (works in Node 18+ and modern
6
+ * browsers); falls back to filesystem reads in Node when given a
7
+ * `file:` or relative URL.
8
+ *
9
+ * The manifest (version → URL mapping) lives in `./manifest.ts`.
10
+ * The base URL (CDN mirror override) lives in `./base.ts`.
11
+ *
12
+ * Adding a new provision source (e.g. IPFS, BitTorrent) = adding a
13
+ * new provisioner file. Existing code never changes (OCP).
14
+ */
15
+ import type { ModelArtifacts, ModelRef } from "../types.js";
16
+ import type { InferenceSession } from "../session/index.js";
17
+ import { type AssetFormat, type AssetVariant } from "./manifest.js";
18
+ export interface ProvisionedModel {
19
+ readonly session: InferenceSession;
20
+ readonly artifacts: ModelArtifacts;
21
+ }
22
+ /**
23
+ * Which ONNX variant to download. `q8` is the browser default —
24
+ * 8-bit quantized, ~25% the size of fp32 with negligible accuracy
25
+ * loss for character-level transformers. Override per-call via
26
+ * `provisionModel(ref, { variant: "fp32" })`.
27
+ */
28
+ export interface ProvisionOptions {
29
+ readonly variant?: AssetVariant;
30
+ /**
31
+ * Model serialization format. `onnx` (default) selects the
32
+ * Microsoft runtime path; `tflite` selects Google's LiteRT.js.
33
+ * Both formats can be shipped for the same model — provisioner
34
+ * picks based on this option.
35
+ */
36
+ readonly format?: AssetFormat;
37
+ /** Browser only: enable WebGPU with WASM fallback. Default: true. */
38
+ readonly webgpu?: boolean;
39
+ /**
40
+ * LiteRT only: accelerator preference. Default: "webgpu".
41
+ * No-op for ONNX runtime.
42
+ */
43
+ readonly litertAccelerator?: "webgpu" | "webnn" | "wasm";
44
+ /**
45
+ * LiteRT only: input/output tensor names. ONNX reads these from
46
+ * the model graph; LiteRT needs them supplied by the caller.
47
+ * Defaults are correct for rababa models.
48
+ */
49
+ readonly inputNames?: readonly string[];
50
+ readonly outputNames?: readonly string[];
51
+ }
52
+ /**
53
+ * Provision a model from the manifest. Resolves the task version,
54
+ * downloads the model file from the CDN (falls back to GitHub
55
+ * Releases), opens an inference session, and fetches sidecar
56
+ * artifacts (vocab, config, checksum) in parallel.
57
+ *
58
+ * In Node, can read from the filesystem if `url` starts with `file:`
59
+ * or is a relative path.
60
+ */
61
+ export declare function provisionModel(ref: ModelRef, opts?: ProvisionOptions): Promise<ProvisionedModel>;
62
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ml/provision/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAE3D,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,eAAe,CAAA;AAEtB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAA;IAClC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAA;CACnC;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAA;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;IAC7B,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;IACzB;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;IACxD;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACzC;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,QAAQ,EACb,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CAwC3B"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Model provisioner — fetch + cache model files.
3
+ *
4
+ * Used by the registry to materialize a ModelRef into a session +
5
+ * auxiliary artifacts. Reuses fetch (works in Node 18+ and modern
6
+ * browsers); falls back to filesystem reads in Node when given a
7
+ * `file:` or relative URL.
8
+ *
9
+ * The manifest (version → URL mapping) lives in `./manifest.ts`.
10
+ * The base URL (CDN mirror override) lives in `./base.ts`.
11
+ *
12
+ * Adding a new provision source (e.g. IPFS, BitTorrent) = adding a
13
+ * new provisioner file. Existing code never changes (OCP).
14
+ */
15
+ import { createSession } from "../session/index.js";
16
+ import { artifactUrls, resolveManifestEntry, sidecarFilenames, } from "./manifest.js";
17
+ /**
18
+ * Provision a model from the manifest. Resolves the task version,
19
+ * downloads the model file from the CDN (falls back to GitHub
20
+ * Releases), opens an inference session, and fetches sidecar
21
+ * artifacts (vocab, config, checksum) in parallel.
22
+ *
23
+ * In Node, can read from the filesystem if `url` starts with `file:`
24
+ * or is a relative path.
25
+ */
26
+ export async function provisionModel(ref, opts = {}) {
27
+ const variant = opts.variant ?? "q8";
28
+ const format = opts.format ?? "onnx";
29
+ const webgpu = opts.webgpu ?? true;
30
+ const modelUrl = ref.url ?? (await resolveModelUrl(ref, variant, format));
31
+ const modelBuffer = await fetchBytesWithFallback(modelUrl);
32
+ const sidecars = await resolveSidecarUrls(ref, variant, format);
33
+ const artifacts = {};
34
+ await Promise.all(sidecars.map(async ({ filename, url }) => {
35
+ try {
36
+ const bytes = await fetchBytesWithFallback(url);
37
+ if (filename.endsWith(".json") ||
38
+ filename.endsWith(".yaml") ||
39
+ filename.endsWith(".yml") ||
40
+ filename.endsWith(".sha256")) {
41
+ artifacts[filename] = new TextDecoder().decode(bytes);
42
+ }
43
+ else {
44
+ artifacts[filename] = bytes;
45
+ }
46
+ }
47
+ catch {
48
+ // Sidecars are optional; missing ones are skipped.
49
+ }
50
+ }));
51
+ const sessionOpts = { webgpu };
52
+ if (format === "tflite") {
53
+ sessionOpts.runtime = "litert";
54
+ if (opts.litertAccelerator !== undefined)
55
+ sessionOpts.litertAccelerator = opts.litertAccelerator;
56
+ if (opts.inputNames !== undefined)
57
+ sessionOpts.inputNames = opts.inputNames;
58
+ if (opts.outputNames !== undefined)
59
+ sessionOpts.outputNames = opts.outputNames;
60
+ }
61
+ const session = await createSession(modelBuffer, sessionOpts);
62
+ return { session, artifacts };
63
+ }
64
+ async function resolveModelUrl(ref, variant, format) {
65
+ const entry = await resolveManifestEntry(ref.kind, ref.id);
66
+ if (!entry) {
67
+ throw new Error(`No manifest entry for kind=${ref.kind} id=${ref.id}. ` +
68
+ `Pass an explicit \`url\` on the ModelRef or pin a task version in the manifest.`);
69
+ }
70
+ const { primary } = artifactUrls(entry, variant, format);
71
+ return primary;
72
+ }
73
+ async function resolveSidecarUrls(ref, variant, format) {
74
+ // If the caller provided an explicit URL, skip manifest-based sidecar
75
+ // resolution — they've taken control of provisioning.
76
+ if (ref.url)
77
+ return [];
78
+ const entry = await resolveManifestEntry(ref.kind, ref.id);
79
+ if (!entry)
80
+ return [];
81
+ const { primary, assetName } = artifactUrls(entry, variant, format);
82
+ const base = primary.slice(0, primary.lastIndexOf("/") + 1);
83
+ return sidecarFilenames(entry, variant, format).map((filename) => ({
84
+ filename,
85
+ url: `${base}${filename.startsWith(assetName) ? filename : filename}`,
86
+ }));
87
+ }
88
+ /**
89
+ * Fetch bytes from a URL. Tries the URL as-given; if it's the CDN
90
+ * primary and fails, the caller can supply a fallback URL via the
91
+ * `url` field on the ModelRef.
92
+ */
93
+ async function fetchBytesWithFallback(url) {
94
+ // Node filesystem path
95
+ if (url.startsWith("file:") ||
96
+ (url.startsWith(".") && typeof process !== "undefined" && process.versions?.node)) {
97
+ const { readFile } = await import("node:fs/promises");
98
+ const path = url.startsWith("file:") ? url.slice(5) : url;
99
+ return new Uint8Array(await readFile(path));
100
+ }
101
+ const res = await fetch(url);
102
+ if (!res.ok) {
103
+ throw new Error(`Failed to fetch ${url}: ${res.status} ${res.statusText}`);
104
+ }
105
+ return new Uint8Array(await res.arrayBuffer());
106
+ }
107
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ml/provision/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,GAGjB,MAAM,eAAe,CAAA;AAsCtB;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAa,EACb,OAAyB,EAAE;IAE3B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAA;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAA;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAA;IAElC,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;IAEzE,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,QAAQ,CAAC,CAAA;IAE1D,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IAC/D,MAAM,SAAS,GAAwC,EAAE,CAAA;IACzD,MAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC,GAAG,CAAC,CAAA;YAC/C,IACE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC1B,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC1B,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACzB,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAC5B,CAAC;gBACD,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACvD,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAA;YAC7B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,mDAAmD;QACrD,CAAC;IACH,CAAC,CAAC,CACH,CAAA;IAED,MAAM,WAAW,GAA4B,EAAE,MAAM,EAAE,CAAA;IACvD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAA;QAC9B,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS;YAAE,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAA;QAChG,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;YAAE,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QAC3E,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAAE,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;IAChF,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;IAC7D,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;AAC/B,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,GAAa,EACb,OAAqB,EACrB,MAAmB;IAEnB,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;IAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,8BAA8B,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,IAAI;YACrD,iFAAiF,CACpF,CAAA;IACH,CAAC;IACD,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IACxD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,GAAa,EACb,OAAqB,EACrB,MAAmB;IAEnB,sEAAsE;IACtE,sDAAsD;IACtD,IAAI,GAAG,CAAC,GAAG;QAAE,OAAO,EAAE,CAAA;IACtB,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;IAC1D,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAA;IACrB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IACnE,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IAC3D,OAAO,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACjE,QAAQ;QACR,GAAG,EAAE,GAAG,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;KACtE,CAAC,CAAC,CAAA;AACL,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,sBAAsB,CAAC,GAAW;IAC/C,uBAAuB;IACvB,IACE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;QACvB,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,EACjF,CAAC;QACD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;QACrD,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QACzD,OAAO,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7C,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;IAC5B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,KAAK,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAA;IAC5E,CAAC;IACD,OAAO,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAA;AAChD,CAAC"}