onbuzz 3.9.6 → 3.9.8

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 (943) hide show
  1. package/package.json +1 -1
  2. package/src/__tests__/resolvePreferredModel.test.js +59 -101
  3. package/src/interfaces/__tests__/remoteSessionAuth.test.js +46 -0
  4. package/src/interfaces/webServer.js +10 -2
  5. package/src/tools/__tests__/visionTool.modelSelection.test.js +86 -0
  6. package/src/tools/__tests__/webTool.visionModel.test.js +75 -0
  7. package/src/tools/visionTool.js +18 -24
  8. package/src/tools/webTool.js +27 -2
  9. package/web-ui/build/index.html +1 -1
  10. package/web-ui/build/static/1c-CbzecjHi.js +1 -0
  11. package/web-ui/build/static/abap-B64Rmd3x.js +1 -0
  12. package/web-ui/build/static/abnf-0eZ1ofqG.js +1 -0
  13. package/web-ui/build/static/abnf-BhANbO1L.js +1 -0
  14. package/web-ui/build/static/accesslog-clFlGMX1.js +1 -0
  15. package/web-ui/build/static/actionscript-DXab4IMG.js +1 -0
  16. package/web-ui/build/static/actionscript-RFf8wL8w.js +1 -0
  17. package/web-ui/build/static/ada-Bm94vJQR.js +1 -0
  18. package/web-ui/build/static/ada-zNbObSyu.js +1 -0
  19. package/web-ui/build/static/agda-K3kQv8iy.js +1 -0
  20. package/web-ui/build/static/al-B3t1K-du.js +1 -0
  21. package/web-ui/build/static/angelscript-CnHodqV_.js +1 -0
  22. package/web-ui/build/static/antlr4-BZgY7Twd.js +1 -0
  23. package/web-ui/build/static/apache-C12AF3ev.js +1 -0
  24. package/web-ui/build/static/apacheconf-DkOEqFh0.js +1 -0
  25. package/web-ui/build/static/apex-BDpgbClJ.js +1 -0
  26. package/web-ui/build/static/apl-Dh1dt5kw.js +1 -0
  27. package/web-ui/build/static/applescript-Bg_fqdWd.js +1 -0
  28. package/web-ui/build/static/applescript-ByhrvNiG.js +1 -0
  29. package/web-ui/build/static/aql-QIblVVYJ.js +1 -0
  30. package/web-ui/build/static/arcade-Cm4e2zMb.js +1 -0
  31. package/web-ui/build/static/arduino-CGkuSXzN.js +1 -0
  32. package/web-ui/build/static/arduino-OsL_Nhym.js +1 -0
  33. package/web-ui/build/static/arff-B4JSuA76.js +1 -0
  34. package/web-ui/build/static/armasm-DdbgiOrV.js +1 -0
  35. package/web-ui/build/static/asciidoc-0lb-Ko8S.js +1 -0
  36. package/web-ui/build/static/asciidoc-BYRGLnED.js +1 -0
  37. package/web-ui/build/static/asm6502-DG0RlvQN.js +1 -0
  38. package/web-ui/build/static/asmatmel-DWT2_REW.js +1 -0
  39. package/web-ui/build/static/aspectj-MEt9NeRB.js +1 -0
  40. package/web-ui/build/static/aspnet-DR3hLqcA.js +1 -0
  41. package/web-ui/build/static/autohotkey-B6JJ6A0n.js +1 -0
  42. package/web-ui/build/static/autohotkey-BCqVAmnV.js +1 -0
  43. package/web-ui/build/static/autoit-BqyLjnUK.js +1 -0
  44. package/web-ui/build/static/autoit-D3OL2ya6.js +1 -0
  45. package/web-ui/build/static/avisynth-CFYPlhWF.js +1 -0
  46. package/web-ui/build/static/avrasm-BvoWo5z1.js +1 -0
  47. package/web-ui/build/static/avro-idl-Dmt54kEx.js +1 -0
  48. package/web-ui/build/static/awk-DKHI_UvD.js +1 -0
  49. package/web-ui/build/static/axapta-jgtqYlu1.js +1 -0
  50. package/web-ui/build/static/bash-CM-bsVnP.js +1 -0
  51. package/web-ui/build/static/bash-rbX0rKbK.js +1 -0
  52. package/web-ui/build/static/basic-B31B3k7x.js +1 -0
  53. package/web-ui/build/static/basic-Gu99ccWS.js +1 -0
  54. package/web-ui/build/static/batch-Dxt_s5aG.js +1 -0
  55. package/web-ui/build/static/bbcode-C0kmzu6X.js +1 -0
  56. package/web-ui/build/static/bicep-BsOEq_j9.js +1 -0
  57. package/web-ui/build/static/birb-CtTYWirD.js +1 -0
  58. package/web-ui/build/static/bison-D50hClIy.js +1 -0
  59. package/web-ui/build/static/bnf-CZQ0tN86.js +1 -0
  60. package/web-ui/build/static/bnf-keJM21-h.js +1 -0
  61. package/web-ui/build/static/brainfuck-BYsdquiy.js +1 -0
  62. package/web-ui/build/static/brainfuck-ChqXjCJ9.js +1 -0
  63. package/web-ui/build/static/brightscript-C2Wd5Kft.js +1 -0
  64. package/web-ui/build/static/bro-Cg2wy26n.js +1 -0
  65. package/web-ui/build/static/bsl-KPpKnfiJ.js +1 -0
  66. package/web-ui/build/static/c-DngIvZ7L.js +1 -0
  67. package/web-ui/build/static/c-Iq8EIPIe.js +1 -0
  68. package/web-ui/build/static/c-like-Bec9Rkda.js +1 -0
  69. package/web-ui/build/static/cal-BS26ucSy.js +1 -0
  70. package/web-ui/build/static/capnproto-W0IWf2FW.js +1 -0
  71. package/web-ui/build/static/ceylon-ujPry_yR.js +1 -0
  72. package/web-ui/build/static/cfscript-806779CY.js +1 -0
  73. package/web-ui/build/static/chaiscript-D9HG2WFc.js +1 -0
  74. package/web-ui/build/static/cil-BDNzOY3h.js +1 -0
  75. package/web-ui/build/static/clean-DoE0KPLU.js +1 -0
  76. package/web-ui/build/static/clojure-B-nWTi09.js +1 -0
  77. package/web-ui/build/static/clojure-BIPQIlEM.js +1 -0
  78. package/web-ui/build/static/clojure-repl-C6Xgw1BL.js +1 -0
  79. package/web-ui/build/static/cmake-BCUVXGkd.js +1 -0
  80. package/web-ui/build/static/cmake-DoEfzWcx.js +1 -0
  81. package/web-ui/build/static/cobol-DyuJRPLj.js +1 -0
  82. package/web-ui/build/static/coffeescript-CzPUmFhd.js +1 -0
  83. package/web-ui/build/static/coffeescript-cxIqfyb2.js +1 -0
  84. package/web-ui/build/static/concurnas-YafoHwhS.js +1 -0
  85. package/web-ui/build/static/coq-DtAS2_j-.js +1 -0
  86. package/web-ui/build/static/coq-sa9vsIqd.js +1 -0
  87. package/web-ui/build/static/cos-nEV8XIfx.js +1 -0
  88. package/web-ui/build/static/cpp-CcKjDXtx.js +1 -0
  89. package/web-ui/build/static/cpp-CcxmwIS8.js +1 -0
  90. package/web-ui/build/static/crmsh-BCZKA2g2.js +1 -0
  91. package/web-ui/build/static/crystal-CI7ryNid.js +1 -0
  92. package/web-ui/build/static/crystal-DpjmCsWq.js +1 -0
  93. package/web-ui/build/static/csharp-BJEFr34Q.js +1 -0
  94. package/web-ui/build/static/csharp-Di8gXUl6.js +1 -0
  95. package/web-ui/build/static/cshtml-CM5kdsbL.js +1 -0
  96. package/web-ui/build/static/csp-CCUatC8F.js +1 -0
  97. package/web-ui/build/static/csp-CQMJNBVX.js +1 -0
  98. package/web-ui/build/static/css-Ca1P3y8D.js +1 -0
  99. package/web-ui/build/static/css-extras-B-WsWoLG.js +1 -0
  100. package/web-ui/build/static/csv-Dp2D1vNQ.js +1 -0
  101. package/web-ui/build/static/cypher-C2lTf63v.js +1 -0
  102. package/web-ui/build/static/d-BpN31fsJ.js +1 -0
  103. package/web-ui/build/static/d-DF2Z_5Y5.js +1 -0
  104. package/web-ui/build/static/dart-D2xFtNlR.js +1 -0
  105. package/web-ui/build/static/dart-D_CllGe8.js +1 -0
  106. package/web-ui/build/static/dataweave-D0S0J-fB.js +1 -0
  107. package/web-ui/build/static/dax-LFApbZ_c.js +1 -0
  108. package/web-ui/build/static/delphi-BwOo_vb0.js +1 -0
  109. package/web-ui/build/static/dhall-Bdnii7zv.js +1 -0
  110. package/web-ui/build/static/diff-BkC59Drj.js +1 -0
  111. package/web-ui/build/static/diff-Ft7pVJ9X.js +1 -0
  112. package/web-ui/build/static/django-CBZk8JcH.js +1 -0
  113. package/web-ui/build/static/django-WTsadJGk.js +1 -0
  114. package/web-ui/build/static/dns-DiL3BhcP.js +1 -0
  115. package/web-ui/build/static/dns-zone-file-pi6xeovf.js +1 -0
  116. package/web-ui/build/static/docker-DyQR3JA7.js +1 -0
  117. package/web-ui/build/static/dockerfile-BE207Z5W.js +1 -0
  118. package/web-ui/build/static/dos-BhnpGRsK.js +1 -0
  119. package/web-ui/build/static/dot-Dhy7kpoM.js +1 -0
  120. package/web-ui/build/static/dsconfig-DzkFGUpr.js +1 -0
  121. package/web-ui/build/static/dts-BhMOwHm3.js +1 -0
  122. package/web-ui/build/static/dust-DkbHh2Pg.js +1 -0
  123. package/web-ui/build/static/ebnf-C3wm6ooH.js +1 -0
  124. package/web-ui/build/static/ebnf-DqOIsQzW.js +1 -0
  125. package/web-ui/build/static/editorconfig-D2EbTZsp.js +1 -0
  126. package/web-ui/build/static/eiffel-C_xptgK8.js +1 -0
  127. package/web-ui/build/static/ejs-CcONaJS0.js +1 -0
  128. package/web-ui/build/static/elixir-CagtfrW4.js +1 -0
  129. package/web-ui/build/static/elixir-CyP-nJp8.js +1 -0
  130. package/web-ui/build/static/elm-BkimtfCC.js +1 -0
  131. package/web-ui/build/static/elm-Cy0zy-Wk.js +1 -0
  132. package/web-ui/build/static/erb-CKfVidCX.js +1 -0
  133. package/web-ui/build/static/erb-Di0rdfuA.js +1 -0
  134. package/web-ui/build/static/erlang-C9YmoUs7.js +1 -0
  135. package/web-ui/build/static/erlang-DRED-UWJ.js +1 -0
  136. package/web-ui/build/static/erlang-repl-DeR_2uii.js +1 -0
  137. package/web-ui/build/static/etlua-B6Z-QQtE.js +1 -0
  138. package/web-ui/build/static/excel-DYqxHaXE.js +1 -0
  139. package/web-ui/build/static/excel-formula-BreCIdiF.js +1 -0
  140. package/web-ui/build/static/factor-jyOxALZ3.js +1 -0
  141. package/web-ui/build/static/false-BNO0FXoK.js +1 -0
  142. package/web-ui/build/static/firestore-security-rules-8OJaVJPI.js +1 -0
  143. package/web-ui/build/static/fix-DxdEj5oc.js +1 -0
  144. package/web-ui/build/static/flix-Dz2xZZH5.js +1 -0
  145. package/web-ui/build/static/flow-DpzKZb4e.js +1 -0
  146. package/web-ui/build/static/fortran-CtfIFIgp.js +1 -0
  147. package/web-ui/build/static/fortran-Cv6ED2BG.js +1 -0
  148. package/web-ui/build/static/fsharp-BC6e3hD1.js +1 -0
  149. package/web-ui/build/static/fsharp-CMyk8GxQ.js +1 -0
  150. package/web-ui/build/static/ftl-DZnBCzfq.js +1 -0
  151. package/web-ui/build/static/gams-ClY69INi.js +1 -0
  152. package/web-ui/build/static/gap-DYeEWwoE.js +1 -0
  153. package/web-ui/build/static/gauss-CCHXytat.js +1 -0
  154. package/web-ui/build/static/gcode-DoWDPjLg.js +1 -0
  155. package/web-ui/build/static/gcode-N6PPDTDT.js +1 -0
  156. package/web-ui/build/static/gdscript-agxR9uG0.js +1 -0
  157. package/web-ui/build/static/gedcom-BvBAgJXG.js +1 -0
  158. package/web-ui/build/static/gherkin-BW8CWXxJ.js +1 -0
  159. package/web-ui/build/static/gherkin-CqawSkQY.js +1 -0
  160. package/web-ui/build/static/git-99C9UE-e.js +1 -0
  161. package/web-ui/build/static/glsl-CQEuDShu.js +1 -0
  162. package/web-ui/build/static/glsl-DuhoPpCv.js +1 -0
  163. package/web-ui/build/static/gml-Bsn22WsK.js +1 -0
  164. package/web-ui/build/static/gml-BvXK6GGq.js +1 -0
  165. package/web-ui/build/static/gn-BUoYUPzm.js +1 -0
  166. package/web-ui/build/static/go-CvTv9DUi.js +1 -0
  167. package/web-ui/build/static/go-module-Dwpq3Jsg.js +1 -0
  168. package/web-ui/build/static/go-sGZzTvuq.js +1 -0
  169. package/web-ui/build/static/golo-C6DHxID0.js +1 -0
  170. package/web-ui/build/static/gradle-D7XVSr1y.js +1 -0
  171. package/web-ui/build/static/graphql-DIIA3EdJ.js +1 -0
  172. package/web-ui/build/static/groovy-B5TJuGtQ.js +1 -0
  173. package/web-ui/build/static/groovy-BVf2VudZ.js +1 -0
  174. package/web-ui/build/static/haml-B0dZKFFV.js +1 -0
  175. package/web-ui/build/static/haml-B5rD_eqj.js +1 -0
  176. package/web-ui/build/static/handlebars-Db8etm3q.js +1 -0
  177. package/web-ui/build/static/handlebars-Qm9HXVGH.js +1 -0
  178. package/web-ui/build/static/haskell-BbTqR78v.js +1 -0
  179. package/web-ui/build/static/haskell-cf6URQ36.js +1 -0
  180. package/web-ui/build/static/haxe-4ugxCu3z.js +1 -0
  181. package/web-ui/build/static/haxe-BscBu1yx.js +1 -0
  182. package/web-ui/build/static/hcl-QK-f8vU5.js +1 -0
  183. package/web-ui/build/static/hlsl-BnQDpabJ.js +1 -0
  184. package/web-ui/build/static/hoon-VPMuvItP.js +1 -0
  185. package/web-ui/build/static/hpkp-VpqLQgGP.js +1 -0
  186. package/web-ui/build/static/hsp-DTlBvyyT.js +1 -0
  187. package/web-ui/build/static/hsts-B6Dishdu.js +1 -0
  188. package/web-ui/build/static/htmlbars-Byn3Paw0.js +1 -0
  189. package/web-ui/build/static/http-CM7a2429.js +1 -0
  190. package/web-ui/build/static/http-QOmRJ4Jd.js +1 -0
  191. package/web-ui/build/static/hy-D3_6scbm.js +1 -0
  192. package/web-ui/build/static/ichigojam-Os0-Gxpc.js +1 -0
  193. package/web-ui/build/static/icon-DAjjoH9X.js +1 -0
  194. package/web-ui/build/static/icu-message-format-CCtlXoOl.js +1 -0
  195. package/web-ui/build/static/idris-BLmLcq2C.js +1 -0
  196. package/web-ui/build/static/iecst-CL0FD1hF.js +1 -0
  197. package/web-ui/build/static/ignore-Bcd-tuGH.js +1 -0
  198. package/web-ui/build/static/index-BPqTB5k7.js +1 -0
  199. package/web-ui/build/static/index-ClWUfRkv.js +13 -0
  200. package/web-ui/build/static/index-DY0DLa8y.js +831 -0
  201. package/web-ui/build/static/inform7-ChnghUc9.js +1 -0
  202. package/web-ui/build/static/inform7-DFioFNVH.js +1 -0
  203. package/web-ui/build/static/ini-B7Qqa2Hv.js +1 -0
  204. package/web-ui/build/static/ini-CFmmlUla.js +1 -0
  205. package/web-ui/build/static/io-C5MldizL.js +1 -0
  206. package/web-ui/build/static/irpf90-Co951JRw.js +1 -0
  207. package/web-ui/build/static/isbl-BlVCsoVY.js +1 -0
  208. package/web-ui/build/static/j-BfpCTQLT.js +1 -0
  209. package/web-ui/build/static/java-B8eLTuI_.js +1 -0
  210. package/web-ui/build/static/java-Cp73UB-4.js +1 -0
  211. package/web-ui/build/static/javadoc-sKuB5y9S.js +1 -0
  212. package/web-ui/build/static/javadoclike-0oCrjeqP.js +1 -0
  213. package/web-ui/build/static/javascript-DhJRIVbT.js +1 -0
  214. package/web-ui/build/static/javastacktrace-34av_07D.js +1 -0
  215. package/web-ui/build/static/jboss-cli-B3LjD57q.js +1 -0
  216. package/web-ui/build/static/jexl-DjeCXh3R.js +1 -0
  217. package/web-ui/build/static/jolie-DSguA0co.js +1 -0
  218. package/web-ui/build/static/jq-CrNdtEVM.js +1 -0
  219. package/web-ui/build/static/js-extras-DRiGHN_t.js +1 -0
  220. package/web-ui/build/static/js-templates-BOAGBe4G.js +1 -0
  221. package/web-ui/build/static/jsdoc-BD9HPtj-.js +1 -0
  222. package/web-ui/build/static/json-DWyPfZ7N.js +1 -0
  223. package/web-ui/build/static/json-ZOqNWxv3.js +1 -0
  224. package/web-ui/build/static/json5-CtFHocU-.js +1 -0
  225. package/web-ui/build/static/jsonp-D6qQgfvt.js +1 -0
  226. package/web-ui/build/static/jsstacktrace-4V_XcjuT.js +1 -0
  227. package/web-ui/build/static/jsx-BEPywbwa.js +1 -0
  228. package/web-ui/build/static/julia-BMbPnK5h.js +1 -0
  229. package/web-ui/build/static/julia-DdAob-5L.js +1 -0
  230. package/web-ui/build/static/julia-repl-D8h3n5ls.js +1 -0
  231. package/web-ui/build/static/keepalived-DMtuOIPi.js +1 -0
  232. package/web-ui/build/static/keyman-BYoKRL3H.js +1 -0
  233. package/web-ui/build/static/kotlin-DKSAAlR0.js +1 -0
  234. package/web-ui/build/static/kotlin-av8HkILL.js +1 -0
  235. package/web-ui/build/static/kumir-DKW-dbIw.js +1 -0
  236. package/web-ui/build/static/kusto-CmM_Dgdi.js +1 -0
  237. package/web-ui/build/static/lasso-UpwhKAGW.js +1 -0
  238. package/web-ui/build/static/latex--o0dGgqN.js +1 -0
  239. package/web-ui/build/static/latex-BDYUhb2n.js +1 -0
  240. package/web-ui/build/static/latte-BIQdMLZM.js +1 -0
  241. package/web-ui/build/static/ldif-BHZbj1Gt.js +1 -0
  242. package/web-ui/build/static/leaf-tKJVpCFa.js +1 -0
  243. package/web-ui/build/static/less-BWc29iML.js +1 -0
  244. package/web-ui/build/static/less-Cbs0Yz51.js +1 -0
  245. package/web-ui/build/static/lilypond-B5_XQXAT.js +1 -0
  246. package/web-ui/build/static/liquid-BUBwhbDU.js +1 -0
  247. package/web-ui/build/static/lisp-ConZsrCa.js +1 -0
  248. package/web-ui/build/static/lisp-CyghfRqh.js +1 -0
  249. package/web-ui/build/static/livecodeserver-BdtmjzpM.js +1 -0
  250. package/web-ui/build/static/livescript-CbEttWiK.js +1 -0
  251. package/web-ui/build/static/livescript-DlaJUNpa.js +1 -0
  252. package/web-ui/build/static/llvm-CljEFNfy.js +1 -0
  253. package/web-ui/build/static/llvm-OEx8ipzf.js +1 -0
  254. package/web-ui/build/static/log-CtjresKJ.js +1 -0
  255. package/web-ui/build/static/lolcode-CbZB03Q-.js +1 -0
  256. package/web-ui/build/static/lsl-TsKq2mca.js +1 -0
  257. package/web-ui/build/static/lua-1Rx_tY_z.js +1 -0
  258. package/web-ui/build/static/lua-CrgLvyqs.js +1 -0
  259. package/web-ui/build/static/magma-BK5awswf.js +1 -0
  260. package/web-ui/build/static/makefile-6SJJhsz5.js +1 -0
  261. package/web-ui/build/static/makefile-DXokzicL.js +1 -0
  262. package/web-ui/build/static/markdown-Bzf4rNiL.js +1 -0
  263. package/web-ui/build/static/markdown-D2e-R2p5.js +1 -0
  264. package/web-ui/build/static/markup-templating-Brr7NCtI.js +1 -0
  265. package/web-ui/build/static/mathematica-BHdsgRlV.js +1 -0
  266. package/web-ui/build/static/matlab-D_t3IZfZ.js +1 -0
  267. package/web-ui/build/static/matlab-cKsG1reI.js +1 -0
  268. package/web-ui/build/static/maxima-cBBBfxwc.js +1 -0
  269. package/web-ui/build/static/maxscript-C1ulETQI.js +1 -0
  270. package/web-ui/build/static/mel-Bi5R0sfT.js +1 -0
  271. package/web-ui/build/static/mel-CExeAiGY.js +1 -0
  272. package/web-ui/build/static/mercury-BQmKWkZv.js +1 -0
  273. package/web-ui/build/static/mermaid-n5nH0--1.js +1 -0
  274. package/web-ui/build/static/mipsasm-B5MOlnt9.js +1 -0
  275. package/web-ui/build/static/mizar-BOKt_6pu.js +1 -0
  276. package/web-ui/build/static/mizar-BQn40NA6.js +1 -0
  277. package/web-ui/build/static/mojolicious-B9lAb6C9.js +1 -0
  278. package/web-ui/build/static/mongodb-DBaQzUEE.js +1 -0
  279. package/web-ui/build/static/monkey-FadeXREo.js +1 -0
  280. package/web-ui/build/static/monkey-HfvbiXjN.js +1 -0
  281. package/web-ui/build/static/moonscript-CNC9qFDz.js +1 -0
  282. package/web-ui/build/static/moonscript-Cin88noO.js +1 -0
  283. package/web-ui/build/static/n1ql-Dr9Yo8b-.js +1 -0
  284. package/web-ui/build/static/n1ql-DzlVOUYJ.js +1 -0
  285. package/web-ui/build/static/n4js-DTmfxRT4.js +1 -0
  286. package/web-ui/build/static/nand2tetris-hdl-Bod-DCUu.js +1 -0
  287. package/web-ui/build/static/naniscript-CfiXCI4Z.js +1 -0
  288. package/web-ui/build/static/nasm-BXYRoY2W.js +1 -0
  289. package/web-ui/build/static/neon-D2krcpRE.js +1 -0
  290. package/web-ui/build/static/nevod-BQHDBMPo.js +1 -0
  291. package/web-ui/build/static/nginx-C_9KHeCP.js +1 -0
  292. package/web-ui/build/static/nginx-KL5tR7Jx.js +1 -0
  293. package/web-ui/build/static/nim-37p-xSET.js +1 -0
  294. package/web-ui/build/static/nim-D6PBji9h.js +1 -0
  295. package/web-ui/build/static/nix-CKra7X1P.js +1 -0
  296. package/web-ui/build/static/nix-CvbOGPFE.js +1 -0
  297. package/web-ui/build/static/node-repl-Cgo-gZ2g.js +1 -0
  298. package/web-ui/build/static/nsis-CtJDG2rE.js +1 -0
  299. package/web-ui/build/static/nsis-Cyt_6huf.js +1 -0
  300. package/web-ui/build/static/objectivec-Dy3dfqtz.js +1 -0
  301. package/web-ui/build/static/objectivec-QkHVj_us.js +1 -0
  302. package/web-ui/build/static/ocaml-C6TUnerY.js +1 -0
  303. package/web-ui/build/static/ocaml-c_egR_d6.js +1 -0
  304. package/web-ui/build/static/opencl-B9yN9nWN.js +1 -0
  305. package/web-ui/build/static/openqasm-BklslFAf.js +1 -0
  306. package/web-ui/build/static/openscad-C0AzYzEM.js +1 -0
  307. package/web-ui/build/static/oxygene-D2P6nG-V.js +1 -0
  308. package/web-ui/build/static/oz-CITL0kRx.js +1 -0
  309. package/web-ui/build/static/parigp-B9QyF2Nn.js +1 -0
  310. package/web-ui/build/static/parser-bpYn2eF8.js +1 -0
  311. package/web-ui/build/static/parser3-COZ5BGpE.js +1 -0
  312. package/web-ui/build/static/pascal-CjnX24jl.js +1 -0
  313. package/web-ui/build/static/pascaligo-BACCpo1a.js +1 -0
  314. package/web-ui/build/static/pcaxis-BoQE7JGE.js +1 -0
  315. package/web-ui/build/static/peoplecode-CgLXg57_.js +1 -0
  316. package/web-ui/build/static/perl-CJpIvn7i.js +1 -0
  317. package/web-ui/build/static/perl-DfM-sqCy.js +1 -0
  318. package/web-ui/build/static/pf-BF6Acu_U.js +1 -0
  319. package/web-ui/build/static/pgsql-08w-3mdC.js +1 -0
  320. package/web-ui/build/static/php-CSic_Yu4.js +1 -0
  321. package/web-ui/build/static/php-DFxYbY5N.js +1 -0
  322. package/web-ui/build/static/php-extras-DnRPSllm.js +1 -0
  323. package/web-ui/build/static/php-template-1kNXCBCk.js +1 -0
  324. package/web-ui/build/static/phpdoc-CLUTjtz4.js +1 -0
  325. package/web-ui/build/static/plaintext-dz7_1xmX.js +1 -0
  326. package/web-ui/build/static/plsql-BGMyKYzB.js +1 -0
  327. package/web-ui/build/static/pony-B1lWEmkm.js +1 -0
  328. package/web-ui/build/static/powerquery-iafim1FR.js +1 -0
  329. package/web-ui/build/static/powershell-Bum4b4hl.js +1 -0
  330. package/web-ui/build/static/powershell-CuB2b8w1.js +1 -0
  331. package/web-ui/build/static/processing-BpLaX01w.js +1 -0
  332. package/web-ui/build/static/processing-dUSz33TD.js +1 -0
  333. package/web-ui/build/static/profile-C7sg9dHs.js +1 -0
  334. package/web-ui/build/static/prolog-BBCiPfqc.js +1 -0
  335. package/web-ui/build/static/prolog-nGaUTvbS.js +1 -0
  336. package/web-ui/build/static/promql-BBDfFLGg.js +1 -0
  337. package/web-ui/build/static/properties-BlRMM1Ox.js +1 -0
  338. package/web-ui/build/static/properties-BxuonvJH.js +1 -0
  339. package/web-ui/build/static/protobuf-COJo2eGP.js +1 -0
  340. package/web-ui/build/static/protobuf-Jz8_e3Gc.js +1 -0
  341. package/web-ui/build/static/psl-aKlFbB2o.js +1 -0
  342. package/web-ui/build/static/pug-B3kgkOaV.js +1 -0
  343. package/web-ui/build/static/puppet-Bn-ilWOt.js +1 -0
  344. package/web-ui/build/static/puppet-CAYrNHnV.js +1 -0
  345. package/web-ui/build/static/pure-Dae3dENv.js +1 -0
  346. package/web-ui/build/static/purebasic-BUc1d9bO.js +1 -0
  347. package/web-ui/build/static/purebasic-Ts3KCWkR.js +1 -0
  348. package/web-ui/build/static/purescript-DpsJiDL7.js +1 -0
  349. package/web-ui/build/static/python-C1ydkjn5.js +1 -0
  350. package/web-ui/build/static/python-CGJhIYP9.js +1 -0
  351. package/web-ui/build/static/python-repl-B_OutDuW.js +1 -0
  352. package/web-ui/build/static/q-DhLYm0oH.js +1 -0
  353. package/web-ui/build/static/q-Dj9Ezde0.js +1 -0
  354. package/web-ui/build/static/qml-BdSL3VMg.js +1 -0
  355. package/web-ui/build/static/qml-CjHJFscZ.js +1 -0
  356. package/web-ui/build/static/qore-CI3GTUtJ.js +1 -0
  357. package/web-ui/build/static/qsharp-CIibh84F.js +1 -0
  358. package/web-ui/build/static/r-BwwEbG-u.js +1 -0
  359. package/web-ui/build/static/r-C3s_ZZZQ.js +1 -0
  360. package/web-ui/build/static/racket-BcskASd8.js +1 -0
  361. package/web-ui/build/static/reason-DPziNH3U.js +1 -0
  362. package/web-ui/build/static/reasonml-D8R2Q19F.js +1 -0
  363. package/web-ui/build/static/regex-GzOZXBr2.js +1 -0
  364. package/web-ui/build/static/rego-l3gotT8l.js +1 -0
  365. package/web-ui/build/static/renpy-A19Zs8lh.js +1 -0
  366. package/web-ui/build/static/rest-wpzEKBJX.js +1 -0
  367. package/web-ui/build/static/rib-D_1KUGxh.js +1 -0
  368. package/web-ui/build/static/rip-8I3EGZnx.js +1 -0
  369. package/web-ui/build/static/roboconf-BSDIosSS.js +1 -0
  370. package/web-ui/build/static/roboconf-kHnsbEMa.js +1 -0
  371. package/web-ui/build/static/robotframework-De413her.js +1 -0
  372. package/web-ui/build/static/routeros-CF8DUMUu.js +1 -0
  373. package/web-ui/build/static/rsl-BSdv82fF.js +1 -0
  374. package/web-ui/build/static/ruby-7_GfbcxC.js +1 -0
  375. package/web-ui/build/static/ruby-BBYtzWvG.js +1 -0
  376. package/web-ui/build/static/ruleslanguage-CXhlU3tA.js +1 -0
  377. package/web-ui/build/static/rust-C2zLvQSk.js +1 -0
  378. package/web-ui/build/static/rust-CA-fq6LB.js +1 -0
  379. package/web-ui/build/static/sas-B-Yl0xMb.js +1 -0
  380. package/web-ui/build/static/sas-fjwRLuAQ.js +1 -0
  381. package/web-ui/build/static/sass-BUQ0WSOP.js +1 -0
  382. package/web-ui/build/static/scala-CJGiisP_.js +1 -0
  383. package/web-ui/build/static/scala-D15Fs72E.js +1 -0
  384. package/web-ui/build/static/scheme-CUk9mzNj.js +1 -0
  385. package/web-ui/build/static/scheme-CpvRWrML.js +1 -0
  386. package/web-ui/build/static/scilab-CdjikQAK.js +1 -0
  387. package/web-ui/build/static/scss-Bei63J7g.js +1 -0
  388. package/web-ui/build/static/scss-DbyTXjpl.js +1 -0
  389. package/web-ui/build/static/shell-CnHgXkIR.js +1 -0
  390. package/web-ui/build/static/shell-session-6lXCFDCO.js +1 -0
  391. package/web-ui/build/static/smali-BWdSwwzU.js +1 -0
  392. package/web-ui/build/static/smali-Bbc5YAcf.js +1 -0
  393. package/web-ui/build/static/smalltalk-BJDkU3rO.js +1 -0
  394. package/web-ui/build/static/smalltalk-Dm14AAUR.js +1 -0
  395. package/web-ui/build/static/smarty-CjCz5oQD.js +1 -0
  396. package/web-ui/build/static/sml-4QhxjTg1.js +1 -0
  397. package/web-ui/build/static/sml-BzhtSqHU.js +1 -0
  398. package/web-ui/build/static/solidity-BkXRM40v.js +1 -0
  399. package/web-ui/build/static/solution-file-BFJbqEWI.js +1 -0
  400. package/web-ui/build/static/soy-BWsRHx_l.js +1 -0
  401. package/web-ui/build/static/sparql-BmnAgU1w.js +1 -0
  402. package/web-ui/build/static/splunk-spl-BHQ0Zdjq.js +1 -0
  403. package/web-ui/build/static/sqf-BgRLbdp_.js +1 -0
  404. package/web-ui/build/static/sqf-DLLI0el0.js +1 -0
  405. package/web-ui/build/static/sql-2q54nPNH.js +1 -0
  406. package/web-ui/build/static/sql-DlC3YX66.js +1 -0
  407. package/web-ui/build/static/sql_more-BQKcXmJ0.js +1 -0
  408. package/web-ui/build/static/squirrel-DmebN_EL.js +1 -0
  409. package/web-ui/build/static/stan-BDGrHwEo.js +1 -0
  410. package/web-ui/build/static/stan-BasdJxfJ.js +1 -0
  411. package/web-ui/build/static/stata-DAcZR0XQ.js +1 -0
  412. package/web-ui/build/static/step21-RptXxSDX.js +1 -0
  413. package/web-ui/build/static/stylus-BtiAI269.js +1 -0
  414. package/web-ui/build/static/stylus-CbjAOV1A.js +1 -0
  415. package/web-ui/build/static/subunit-CNB_tt3p.js +1 -0
  416. package/web-ui/build/static/swift-BV3DOlYX.js +1 -0
  417. package/web-ui/build/static/swift-Bi-kz7aa.js +1 -0
  418. package/web-ui/build/static/systemd-CG-NuWtk.js +1 -0
  419. package/web-ui/build/static/t4-cs-DUThZgjr.js +1 -0
  420. package/web-ui/build/static/t4-templating-C7ED6iGj.js +1 -0
  421. package/web-ui/build/static/t4-vb-CT2spCQD.js +1 -0
  422. package/web-ui/build/static/taggerscript-CIWvWwRH.js +1 -0
  423. package/web-ui/build/static/tap-B-OZQ_98.js +1 -0
  424. package/web-ui/build/static/tap-ULV7YBw-.js +1 -0
  425. package/web-ui/build/static/tcl-DarZx3V_.js +1 -0
  426. package/web-ui/build/static/tcl-FAfHZOuK.js +1 -0
  427. package/web-ui/build/static/textile-YIaZ55lg.js +1 -0
  428. package/web-ui/build/static/thrift-Cw-lC7xb.js +1 -0
  429. package/web-ui/build/static/toml-CrMkp-dJ.js +1 -0
  430. package/web-ui/build/static/tp-DCzAu7jW.js +1 -0
  431. package/web-ui/build/static/tremor-CFDwS8vd.js +1 -0
  432. package/web-ui/build/static/tsx-DEeAlDW6.js +1 -0
  433. package/web-ui/build/static/tt2-BzFfu8wk.js +1 -0
  434. package/web-ui/build/static/turtle-84Pa71hh.js +1 -0
  435. package/web-ui/build/static/twig-BayQvHS_.js +1 -0
  436. package/web-ui/build/static/twig-BsjBtlDh.js +1 -0
  437. package/web-ui/build/static/typescript-Cnjvfmxu.js +1 -0
  438. package/web-ui/build/static/typescript-DtikLyM7.js +1 -0
  439. package/web-ui/build/static/typoscript-zFoMPUtV.js +1 -0
  440. package/web-ui/build/static/unrealscript-BD0AGGE4.js +1 -0
  441. package/web-ui/build/static/uorazor-DEt_IzcG.js +1 -0
  442. package/web-ui/build/static/uri-CIvm0_Br.js +1 -0
  443. package/web-ui/build/static/v-BQoK7-a7.js +1 -0
  444. package/web-ui/build/static/vala-BDiY-0iU.js +1 -0
  445. package/web-ui/build/static/vala-CoUXbdfw.js +1 -0
  446. package/web-ui/build/static/vbnet-BahQpBvh.js +1 -0
  447. package/web-ui/build/static/vbnet-CTFmJ_tD.js +1 -0
  448. package/web-ui/build/static/vbscript-RIjZOgm7.js +1 -0
  449. package/web-ui/build/static/vbscript-html-etVtdRUU.js +1 -0
  450. package/web-ui/build/static/velocity-k8t18OIQ.js +1 -0
  451. package/web-ui/build/static/verilog-BkuqYQQS.js +1 -0
  452. package/web-ui/build/static/verilog-CO7q-Nx8.js +1 -0
  453. package/web-ui/build/static/vhdl-F9maVm1z.js +1 -0
  454. package/web-ui/build/static/vhdl-jHowTwXP.js +1 -0
  455. package/web-ui/build/static/vim-5tQiPYrt.js +1 -0
  456. package/web-ui/build/static/vim-B6g6AlZK.js +1 -0
  457. package/web-ui/build/static/visual-basic-BVe6araH.js +1 -0
  458. package/web-ui/build/static/warpscript-DpWoozOM.js +1 -0
  459. package/web-ui/build/static/wasm-BVySa5nz.js +1 -0
  460. package/web-ui/build/static/web-idl-Cx8PIp9r.js +1 -0
  461. package/web-ui/build/static/wiki-CnAy151p.js +1 -0
  462. package/web-ui/build/static/wolfram-CJHJcKVC.js +1 -0
  463. package/web-ui/build/static/wren-C2PAcX7s.js +1 -0
  464. package/web-ui/build/static/x86asm-C1SuPV6P.js +1 -0
  465. package/web-ui/build/static/xeora-l6fZzLIy.js +1 -0
  466. package/web-ui/build/static/xl-CkVwYUVn.js +1 -0
  467. package/web-ui/build/static/xml-DLjQp4KT.js +1 -0
  468. package/web-ui/build/static/xml-doc-Dawa4cLr.js +1 -0
  469. package/web-ui/build/static/xojo-Da05ByLG.js +1 -0
  470. package/web-ui/build/static/xquery-CS7xhikd.js +1 -0
  471. package/web-ui/build/static/xquery-DFbsJTQt.js +1 -0
  472. package/web-ui/build/static/yaml-BGwGJYFK.js +1 -0
  473. package/web-ui/build/static/yaml-OtITZEUe.js +1 -0
  474. package/web-ui/build/static/yang-o4P5TRpK.js +1 -0
  475. package/web-ui/build/static/zephir-B7zGXFYj.js +1 -0
  476. package/web-ui/build/static/zig-DtRlHrbt.js +1 -0
  477. package/web-ui/build/static/1c-BU43ZrVw.js +0 -1
  478. package/web-ui/build/static/abap-AoL-lRFD.js +0 -1
  479. package/web-ui/build/static/abnf-96OFWMCD.js +0 -1
  480. package/web-ui/build/static/abnf-C41Cofd6.js +0 -1
  481. package/web-ui/build/static/accesslog-BcnAo7ES.js +0 -1
  482. package/web-ui/build/static/actionscript-BFOz5mA2.js +0 -1
  483. package/web-ui/build/static/actionscript-DJGQt8u5.js +0 -1
  484. package/web-ui/build/static/ada-CwKeODqT.js +0 -1
  485. package/web-ui/build/static/ada-DchU8VGZ.js +0 -1
  486. package/web-ui/build/static/agda-BiNn9WvW.js +0 -1
  487. package/web-ui/build/static/al-BV88nGgg.js +0 -1
  488. package/web-ui/build/static/angelscript-COMetbQf.js +0 -1
  489. package/web-ui/build/static/antlr4-DcxHPzCP.js +0 -1
  490. package/web-ui/build/static/apache-DBeh3rw8.js +0 -1
  491. package/web-ui/build/static/apacheconf-CMIBfQ9p.js +0 -1
  492. package/web-ui/build/static/apex-Cs5QQM6z.js +0 -1
  493. package/web-ui/build/static/apl-Dx-K9gOV.js +0 -1
  494. package/web-ui/build/static/applescript--9cY-_M0.js +0 -1
  495. package/web-ui/build/static/applescript-BcsYpX4C.js +0 -1
  496. package/web-ui/build/static/aql-B6_wZJ19.js +0 -1
  497. package/web-ui/build/static/arcade-ML5yo01k.js +0 -1
  498. package/web-ui/build/static/arduino-CXGPdWdX.js +0 -1
  499. package/web-ui/build/static/arduino-Dg8nk7Ia.js +0 -1
  500. package/web-ui/build/static/arff-gVSLqgST.js +0 -1
  501. package/web-ui/build/static/armasm-DAsE4rEm.js +0 -1
  502. package/web-ui/build/static/asciidoc-C5znngFU.js +0 -1
  503. package/web-ui/build/static/asciidoc-DYALRNYZ.js +0 -1
  504. package/web-ui/build/static/asm6502-DDgAH1tv.js +0 -1
  505. package/web-ui/build/static/asmatmel-DOphTD2l.js +0 -1
  506. package/web-ui/build/static/aspectj-CulZkr51.js +0 -1
  507. package/web-ui/build/static/aspnet-CNX6-Mkw.js +0 -1
  508. package/web-ui/build/static/autohotkey-D0vVKqB7.js +0 -1
  509. package/web-ui/build/static/autohotkey-DDYXV6Yq.js +0 -1
  510. package/web-ui/build/static/autoit-CxUJueRz.js +0 -1
  511. package/web-ui/build/static/autoit-D9JFllVP.js +0 -1
  512. package/web-ui/build/static/avisynth-BenZbKzO.js +0 -1
  513. package/web-ui/build/static/avrasm-uYahqQ8h.js +0 -1
  514. package/web-ui/build/static/avro-idl-CfbM7gLn.js +0 -1
  515. package/web-ui/build/static/awk-Ca723U04.js +0 -1
  516. package/web-ui/build/static/axapta-Bd89lJnD.js +0 -1
  517. package/web-ui/build/static/bash-9j3v2pHC.js +0 -1
  518. package/web-ui/build/static/bash-D3FWVCYG.js +0 -1
  519. package/web-ui/build/static/basic-DdNa7MnE.js +0 -1
  520. package/web-ui/build/static/basic-E4QxjXCY.js +0 -1
  521. package/web-ui/build/static/batch-CfCADUvD.js +0 -1
  522. package/web-ui/build/static/bbcode-WshNX5WN.js +0 -1
  523. package/web-ui/build/static/bicep-D8FjRewr.js +0 -1
  524. package/web-ui/build/static/birb-88EdZvI2.js +0 -1
  525. package/web-ui/build/static/bison-D_FuD8Pc.js +0 -1
  526. package/web-ui/build/static/bnf-CbP5W98L.js +0 -1
  527. package/web-ui/build/static/bnf-Cml6OuCd.js +0 -1
  528. package/web-ui/build/static/brainfuck-BAX8RtaB.js +0 -1
  529. package/web-ui/build/static/brainfuck-C6aQP1EH.js +0 -1
  530. package/web-ui/build/static/brightscript-CQvzUDkK.js +0 -1
  531. package/web-ui/build/static/bro-D1TUGEOB.js +0 -1
  532. package/web-ui/build/static/bsl-Cz666_jX.js +0 -1
  533. package/web-ui/build/static/c-Br3hSof9.js +0 -1
  534. package/web-ui/build/static/c-CnhEGx2K.js +0 -1
  535. package/web-ui/build/static/c-like-8ph3qbGh.js +0 -1
  536. package/web-ui/build/static/cal-IgRtvJyR.js +0 -1
  537. package/web-ui/build/static/capnproto-Brw1rI-t.js +0 -1
  538. package/web-ui/build/static/ceylon-DZhLRlUy.js +0 -1
  539. package/web-ui/build/static/cfscript-DQGyJKwK.js +0 -1
  540. package/web-ui/build/static/chaiscript-C4OGz_un.js +0 -1
  541. package/web-ui/build/static/cil-DicjcGqk.js +0 -1
  542. package/web-ui/build/static/clean-DALZvuMV.js +0 -1
  543. package/web-ui/build/static/clojure-DPpZu94_.js +0 -1
  544. package/web-ui/build/static/clojure-Wr_wuwna.js +0 -1
  545. package/web-ui/build/static/clojure-repl-BDrvmjMJ.js +0 -1
  546. package/web-ui/build/static/cmake-B14DY3nI.js +0 -1
  547. package/web-ui/build/static/cmake-SYFQC59q.js +0 -1
  548. package/web-ui/build/static/cobol-abUH09OX.js +0 -1
  549. package/web-ui/build/static/coffeescript-Bky52ZtC.js +0 -1
  550. package/web-ui/build/static/coffeescript-zCTO0lvd.js +0 -1
  551. package/web-ui/build/static/concurnas-CU2vlX2t.js +0 -1
  552. package/web-ui/build/static/coq-CtQeoOxK.js +0 -1
  553. package/web-ui/build/static/coq-U_ekdUOC.js +0 -1
  554. package/web-ui/build/static/cos-I1RAZGcd.js +0 -1
  555. package/web-ui/build/static/cpp-CBgfByvO.js +0 -1
  556. package/web-ui/build/static/cpp-DOgzX9Fr.js +0 -1
  557. package/web-ui/build/static/crmsh-C564oTI3.js +0 -1
  558. package/web-ui/build/static/crystal-BAkf0Lyu.js +0 -1
  559. package/web-ui/build/static/crystal-S6p_ZP8F.js +0 -1
  560. package/web-ui/build/static/csharp-4Eckg4RD.js +0 -1
  561. package/web-ui/build/static/csharp-BbncLZi-.js +0 -1
  562. package/web-ui/build/static/cshtml-3CAfDEZr.js +0 -1
  563. package/web-ui/build/static/csp-B1uCSPSv.js +0 -1
  564. package/web-ui/build/static/csp-DMRqPioi.js +0 -1
  565. package/web-ui/build/static/css-BGUkWLMn.js +0 -1
  566. package/web-ui/build/static/css-extras-BvWk25Qq.js +0 -1
  567. package/web-ui/build/static/csv-B4b2Q5_f.js +0 -1
  568. package/web-ui/build/static/cypher-poGwJkDD.js +0 -1
  569. package/web-ui/build/static/d-DMSHgHAy.js +0 -1
  570. package/web-ui/build/static/d-cV9sHfbC.js +0 -1
  571. package/web-ui/build/static/dart-CAw4osRs.js +0 -1
  572. package/web-ui/build/static/dart-DNd3kAhv.js +0 -1
  573. package/web-ui/build/static/dataweave-DrBaourx.js +0 -1
  574. package/web-ui/build/static/dax-BrZwLORG.js +0 -1
  575. package/web-ui/build/static/delphi-Ct4aE4aH.js +0 -1
  576. package/web-ui/build/static/dhall-BYoLaIQB.js +0 -1
  577. package/web-ui/build/static/diff-CnmWuCgJ.js +0 -1
  578. package/web-ui/build/static/diff-zrcvdd0a.js +0 -1
  579. package/web-ui/build/static/django-C-oZ7YKd.js +0 -1
  580. package/web-ui/build/static/django-JpRfMOZ2.js +0 -1
  581. package/web-ui/build/static/dns-DsSuoCT5.js +0 -1
  582. package/web-ui/build/static/dns-zone-file-DGrpD-sD.js +0 -1
  583. package/web-ui/build/static/docker-BIfKAgOO.js +0 -1
  584. package/web-ui/build/static/dockerfile-pDKCRsua.js +0 -1
  585. package/web-ui/build/static/dos-tuNLH04p.js +0 -1
  586. package/web-ui/build/static/dot-ByjtD8Iw.js +0 -1
  587. package/web-ui/build/static/dsconfig-BCjL4yBF.js +0 -1
  588. package/web-ui/build/static/dts-DOYzn60p.js +0 -1
  589. package/web-ui/build/static/dust-CPf1De2a.js +0 -1
  590. package/web-ui/build/static/ebnf-BqPpYQsv.js +0 -1
  591. package/web-ui/build/static/ebnf-DtowFnom.js +0 -1
  592. package/web-ui/build/static/editorconfig-ByGC7lfc.js +0 -1
  593. package/web-ui/build/static/eiffel-ql_YAW83.js +0 -1
  594. package/web-ui/build/static/ejs-CEIk0b1t.js +0 -1
  595. package/web-ui/build/static/elixir-5cZo1rKW.js +0 -1
  596. package/web-ui/build/static/elixir-kLu8Siuw.js +0 -1
  597. package/web-ui/build/static/elm-CFEXRK2g.js +0 -1
  598. package/web-ui/build/static/elm-O7LEJa6N.js +0 -1
  599. package/web-ui/build/static/erb-CMspOWfC.js +0 -1
  600. package/web-ui/build/static/erb-DmVFtWWQ.js +0 -1
  601. package/web-ui/build/static/erlang-CNS4Vy5W.js +0 -1
  602. package/web-ui/build/static/erlang-DS3YMI6f.js +0 -1
  603. package/web-ui/build/static/erlang-repl-COpdqM-k.js +0 -1
  604. package/web-ui/build/static/etlua-BaywXnJ4.js +0 -1
  605. package/web-ui/build/static/excel-DbD_vagJ.js +0 -1
  606. package/web-ui/build/static/excel-formula-DvX9phaD.js +0 -1
  607. package/web-ui/build/static/factor-Dmyoo9jr.js +0 -1
  608. package/web-ui/build/static/false-CFFZ5oF1.js +0 -1
  609. package/web-ui/build/static/firestore-security-rules-6gF61FL7.js +0 -1
  610. package/web-ui/build/static/fix-DqD23dpu.js +0 -1
  611. package/web-ui/build/static/flix-ByG_SwOl.js +0 -1
  612. package/web-ui/build/static/flow-_rIgWtyE.js +0 -1
  613. package/web-ui/build/static/fortran-BxMeEQFu.js +0 -1
  614. package/web-ui/build/static/fortran-JYN66CoM.js +0 -1
  615. package/web-ui/build/static/fsharp-DUIudRus.js +0 -1
  616. package/web-ui/build/static/fsharp-dwrir66Q.js +0 -1
  617. package/web-ui/build/static/ftl-DE2kycMu.js +0 -1
  618. package/web-ui/build/static/gams-BdaFBkUq.js +0 -1
  619. package/web-ui/build/static/gap-DG6uTKtq.js +0 -1
  620. package/web-ui/build/static/gauss-CdZRpgQN.js +0 -1
  621. package/web-ui/build/static/gcode-BCwsx3FN.js +0 -1
  622. package/web-ui/build/static/gcode-DqOLuGTU.js +0 -1
  623. package/web-ui/build/static/gdscript-CQsGMP79.js +0 -1
  624. package/web-ui/build/static/gedcom-DjiaJO4h.js +0 -1
  625. package/web-ui/build/static/gherkin-DKQrzpoe.js +0 -1
  626. package/web-ui/build/static/gherkin-MN1tGQ_p.js +0 -1
  627. package/web-ui/build/static/git-BV33OtmB.js +0 -1
  628. package/web-ui/build/static/glsl-BrKcS_A_.js +0 -1
  629. package/web-ui/build/static/glsl-zNpiyDT0.js +0 -1
  630. package/web-ui/build/static/gml-B42QqZwd.js +0 -1
  631. package/web-ui/build/static/gml-wLSDMYgV.js +0 -1
  632. package/web-ui/build/static/gn-Bh6e2j59.js +0 -1
  633. package/web-ui/build/static/go-BcV51Gep.js +0 -1
  634. package/web-ui/build/static/go-DoEsEvyO.js +0 -1
  635. package/web-ui/build/static/go-module-CPiCVk-t.js +0 -1
  636. package/web-ui/build/static/golo-Dm6Qh0rv.js +0 -1
  637. package/web-ui/build/static/gradle-Bq5SCTs-.js +0 -1
  638. package/web-ui/build/static/graphql-BMKmdCzB.js +0 -1
  639. package/web-ui/build/static/groovy-BUPY3Q3Q.js +0 -1
  640. package/web-ui/build/static/groovy-DJ1fIXgB.js +0 -1
  641. package/web-ui/build/static/haml-CzbX1nD7.js +0 -1
  642. package/web-ui/build/static/haml-vci5GS4H.js +0 -1
  643. package/web-ui/build/static/handlebars-DDKzQGIO.js +0 -1
  644. package/web-ui/build/static/handlebars-DUBBysQz.js +0 -1
  645. package/web-ui/build/static/haskell-Becgtpfw.js +0 -1
  646. package/web-ui/build/static/haskell-DzmxROXt.js +0 -1
  647. package/web-ui/build/static/haxe-Dn6vv5Ho.js +0 -1
  648. package/web-ui/build/static/haxe-N5We1g-1.js +0 -1
  649. package/web-ui/build/static/hcl-aU8RXzqH.js +0 -1
  650. package/web-ui/build/static/hlsl-DnxH7wd4.js +0 -1
  651. package/web-ui/build/static/hoon-DxQk5J8Y.js +0 -1
  652. package/web-ui/build/static/hpkp-CXTY4okp.js +0 -1
  653. package/web-ui/build/static/hsp-ChPgc1iH.js +0 -1
  654. package/web-ui/build/static/hsts-DhqErzSD.js +0 -1
  655. package/web-ui/build/static/htmlbars-C1RX3QEK.js +0 -1
  656. package/web-ui/build/static/http-CdQuhyze.js +0 -1
  657. package/web-ui/build/static/http-DIfbUO-8.js +0 -1
  658. package/web-ui/build/static/hy-CtuvNSVL.js +0 -1
  659. package/web-ui/build/static/ichigojam-Dhb1oxgM.js +0 -1
  660. package/web-ui/build/static/icon-18yeuSqY.js +0 -1
  661. package/web-ui/build/static/icu-message-format-BtING76I.js +0 -1
  662. package/web-ui/build/static/idris-BpXksRPQ.js +0 -1
  663. package/web-ui/build/static/iecst-DxsuKh-u.js +0 -1
  664. package/web-ui/build/static/ignore-LFUqEXDc.js +0 -1
  665. package/web-ui/build/static/index-CNhxse_k.js +0 -831
  666. package/web-ui/build/static/index-DTSROa9m.js +0 -13
  667. package/web-ui/build/static/index-Dn1rYKSW.js +0 -1
  668. package/web-ui/build/static/inform7-CMWs3Icc.js +0 -1
  669. package/web-ui/build/static/inform7-IKJ-i25v.js +0 -1
  670. package/web-ui/build/static/ini-BKx9RlYa.js +0 -1
  671. package/web-ui/build/static/ini-OuIKSh9I.js +0 -1
  672. package/web-ui/build/static/io-DsdrD9ck.js +0 -1
  673. package/web-ui/build/static/irpf90-D8RwjO-X.js +0 -1
  674. package/web-ui/build/static/isbl-B19anZ4P.js +0 -1
  675. package/web-ui/build/static/j-cS0ZhHxg.js +0 -1
  676. package/web-ui/build/static/java-BArfyDLP.js +0 -1
  677. package/web-ui/build/static/java-CVssvoho.js +0 -1
  678. package/web-ui/build/static/javadoc-BbYTABTG.js +0 -1
  679. package/web-ui/build/static/javadoclike-reViVmsX.js +0 -1
  680. package/web-ui/build/static/javascript-C8BGzZvz.js +0 -1
  681. package/web-ui/build/static/javastacktrace-DgQT1sKr.js +0 -1
  682. package/web-ui/build/static/jboss-cli-CXzftW3Q.js +0 -1
  683. package/web-ui/build/static/jexl-DfYeVq7m.js +0 -1
  684. package/web-ui/build/static/jolie-BR1u31Sa.js +0 -1
  685. package/web-ui/build/static/jq-C1FEtJ5S.js +0 -1
  686. package/web-ui/build/static/js-extras-BRujBZgr.js +0 -1
  687. package/web-ui/build/static/js-templates-CgsCAf95.js +0 -1
  688. package/web-ui/build/static/jsdoc-BAN_COOq.js +0 -1
  689. package/web-ui/build/static/json-CO83p783.js +0 -1
  690. package/web-ui/build/static/json-D_vV4rAm.js +0 -1
  691. package/web-ui/build/static/json5-DBDJJEbn.js +0 -1
  692. package/web-ui/build/static/jsonp-b6P9-KKS.js +0 -1
  693. package/web-ui/build/static/jsstacktrace-BgPNj9Kj.js +0 -1
  694. package/web-ui/build/static/jsx-Co4GcrAm.js +0 -1
  695. package/web-ui/build/static/julia-B9omll60.js +0 -1
  696. package/web-ui/build/static/julia-BHDCyM-i.js +0 -1
  697. package/web-ui/build/static/julia-repl-C7Eb4bgJ.js +0 -1
  698. package/web-ui/build/static/keepalived-Dzp76shL.js +0 -1
  699. package/web-ui/build/static/keyman-DNvXbNCF.js +0 -1
  700. package/web-ui/build/static/kotlin-eb0_7isz.js +0 -1
  701. package/web-ui/build/static/kotlin-i_bUq7c5.js +0 -1
  702. package/web-ui/build/static/kumir-bzILNJNt.js +0 -1
  703. package/web-ui/build/static/kusto-DkykNNg-.js +0 -1
  704. package/web-ui/build/static/lasso-Cqgl3L5V.js +0 -1
  705. package/web-ui/build/static/latex-BK2d4H00.js +0 -1
  706. package/web-ui/build/static/latex-CCY9RWja.js +0 -1
  707. package/web-ui/build/static/latte--1mLyI-m.js +0 -1
  708. package/web-ui/build/static/ldif-CKpl0obl.js +0 -1
  709. package/web-ui/build/static/leaf-Cylh6k2i.js +0 -1
  710. package/web-ui/build/static/less-BF2V9-r1.js +0 -1
  711. package/web-ui/build/static/less-DZnIlP4J.js +0 -1
  712. package/web-ui/build/static/lilypond-Q-51NK9a.js +0 -1
  713. package/web-ui/build/static/liquid-BtFjuu34.js +0 -1
  714. package/web-ui/build/static/lisp-BTSZLEXC.js +0 -1
  715. package/web-ui/build/static/lisp-mBPUREKp.js +0 -1
  716. package/web-ui/build/static/livecodeserver-X2MkrtIh.js +0 -1
  717. package/web-ui/build/static/livescript-BCGPODju.js +0 -1
  718. package/web-ui/build/static/livescript-CSRilU12.js +0 -1
  719. package/web-ui/build/static/llvm-BrA-OPc0.js +0 -1
  720. package/web-ui/build/static/llvm-CX47EYi9.js +0 -1
  721. package/web-ui/build/static/log-UmKn5LCr.js +0 -1
  722. package/web-ui/build/static/lolcode-CzokJ_7T.js +0 -1
  723. package/web-ui/build/static/lsl-zawAQf0T.js +0 -1
  724. package/web-ui/build/static/lua-AzLMAnp_.js +0 -1
  725. package/web-ui/build/static/lua-BCYatl_B.js +0 -1
  726. package/web-ui/build/static/magma-Vk_HAjNd.js +0 -1
  727. package/web-ui/build/static/makefile-CBhQfnCA.js +0 -1
  728. package/web-ui/build/static/makefile-CqmpfcQv.js +0 -1
  729. package/web-ui/build/static/markdown-DEeiASnV.js +0 -1
  730. package/web-ui/build/static/markdown-MMAcC-4P.js +0 -1
  731. package/web-ui/build/static/markup-templating-BIcrJ22L.js +0 -1
  732. package/web-ui/build/static/mathematica-B0zDtahh.js +0 -1
  733. package/web-ui/build/static/matlab-BfcWtjh0.js +0 -1
  734. package/web-ui/build/static/matlab-CzvSbe8w.js +0 -1
  735. package/web-ui/build/static/maxima-D_OOwDHQ.js +0 -1
  736. package/web-ui/build/static/maxscript-B0UQqykR.js +0 -1
  737. package/web-ui/build/static/mel-5BfrTNON.js +0 -1
  738. package/web-ui/build/static/mel-DVL_6rnq.js +0 -1
  739. package/web-ui/build/static/mercury-CaNr8hHX.js +0 -1
  740. package/web-ui/build/static/mermaid-CqSXXPCa.js +0 -1
  741. package/web-ui/build/static/mipsasm-KebNef0S.js +0 -1
  742. package/web-ui/build/static/mizar-87NmyJPg.js +0 -1
  743. package/web-ui/build/static/mizar-Bh-iPnnJ.js +0 -1
  744. package/web-ui/build/static/mojolicious-RdAGGOBG.js +0 -1
  745. package/web-ui/build/static/mongodb-D-3TyeHe.js +0 -1
  746. package/web-ui/build/static/monkey-CBl0NH_G.js +0 -1
  747. package/web-ui/build/static/monkey-_lVf4ZFO.js +0 -1
  748. package/web-ui/build/static/moonscript-BWoLiJse.js +0 -1
  749. package/web-ui/build/static/moonscript-DvK6XosR.js +0 -1
  750. package/web-ui/build/static/n1ql-BHaHIJwU.js +0 -1
  751. package/web-ui/build/static/n1ql-DHG6la1y.js +0 -1
  752. package/web-ui/build/static/n4js-BnEnODnl.js +0 -1
  753. package/web-ui/build/static/nand2tetris-hdl-Bx_Sdku7.js +0 -1
  754. package/web-ui/build/static/naniscript-C9LlE8Sm.js +0 -1
  755. package/web-ui/build/static/nasm-C2RqJeMj.js +0 -1
  756. package/web-ui/build/static/neon-Htd-1WHg.js +0 -1
  757. package/web-ui/build/static/nevod-xEEcHJ6H.js +0 -1
  758. package/web-ui/build/static/nginx-DHZ2TmrY.js +0 -1
  759. package/web-ui/build/static/nginx-fVaFLr6L.js +0 -1
  760. package/web-ui/build/static/nim-C0kLUnOo.js +0 -1
  761. package/web-ui/build/static/nim-D2t9WTJG.js +0 -1
  762. package/web-ui/build/static/nix-BgS9-fG3.js +0 -1
  763. package/web-ui/build/static/nix-CJ-ZtUjs.js +0 -1
  764. package/web-ui/build/static/node-repl-BqDf1Wqa.js +0 -1
  765. package/web-ui/build/static/nsis-BcbMIXXt.js +0 -1
  766. package/web-ui/build/static/nsis-Clmq9ubM.js +0 -1
  767. package/web-ui/build/static/objectivec-CQCJHkDn.js +0 -1
  768. package/web-ui/build/static/objectivec-l-L7sw2F.js +0 -1
  769. package/web-ui/build/static/ocaml-CLhfFI9J.js +0 -1
  770. package/web-ui/build/static/ocaml-CVZbp5Q6.js +0 -1
  771. package/web-ui/build/static/opencl-FaoxED_5.js +0 -1
  772. package/web-ui/build/static/openqasm-DowdIaHJ.js +0 -1
  773. package/web-ui/build/static/openscad-CuV43J87.js +0 -1
  774. package/web-ui/build/static/oxygene-DFl_S4Mo.js +0 -1
  775. package/web-ui/build/static/oz-CrZEGs03.js +0 -1
  776. package/web-ui/build/static/parigp-CgI9msS-.js +0 -1
  777. package/web-ui/build/static/parser-nTYAMRRR.js +0 -1
  778. package/web-ui/build/static/parser3-B-s7V2NG.js +0 -1
  779. package/web-ui/build/static/pascal-DxyFzkBI.js +0 -1
  780. package/web-ui/build/static/pascaligo-pTESG7CK.js +0 -1
  781. package/web-ui/build/static/pcaxis-B2X2sY8s.js +0 -1
  782. package/web-ui/build/static/peoplecode-D3dixWRI.js +0 -1
  783. package/web-ui/build/static/perl-DzF9wk2I.js +0 -1
  784. package/web-ui/build/static/perl-r6iIkk3J.js +0 -1
  785. package/web-ui/build/static/pf-BHt68zPf.js +0 -1
  786. package/web-ui/build/static/pgsql-DrWBN0mn.js +0 -1
  787. package/web-ui/build/static/php-B9P0S_Yv.js +0 -1
  788. package/web-ui/build/static/php-Dq2u1evi.js +0 -1
  789. package/web-ui/build/static/php-extras-GhxZmNQn.js +0 -1
  790. package/web-ui/build/static/php-template-wduD2F6a.js +0 -1
  791. package/web-ui/build/static/phpdoc-S6AgvZj9.js +0 -1
  792. package/web-ui/build/static/plaintext-CkefHWd1.js +0 -1
  793. package/web-ui/build/static/plsql-ChhnkKyq.js +0 -1
  794. package/web-ui/build/static/pony-Ci4oRl2L.js +0 -1
  795. package/web-ui/build/static/powerquery-htr17QYt.js +0 -1
  796. package/web-ui/build/static/powershell-BjdbtsWh.js +0 -1
  797. package/web-ui/build/static/powershell-CfTH6v8E.js +0 -1
  798. package/web-ui/build/static/processing-CyhVXfth.js +0 -1
  799. package/web-ui/build/static/processing-DRd0DN-1.js +0 -1
  800. package/web-ui/build/static/profile-CzLbiRVw.js +0 -1
  801. package/web-ui/build/static/prolog-C9Bd3AiH.js +0 -1
  802. package/web-ui/build/static/prolog-SNjuNM01.js +0 -1
  803. package/web-ui/build/static/promql-w_4MRJZ5.js +0 -1
  804. package/web-ui/build/static/properties-Bu21gd8n.js +0 -1
  805. package/web-ui/build/static/properties-CxUTIgqR.js +0 -1
  806. package/web-ui/build/static/protobuf-Dw_RQ_nq.js +0 -1
  807. package/web-ui/build/static/protobuf-I-uLxCyW.js +0 -1
  808. package/web-ui/build/static/psl-60y7CGad.js +0 -1
  809. package/web-ui/build/static/pug-6TwxG97U.js +0 -1
  810. package/web-ui/build/static/puppet-DsB7SV7C.js +0 -1
  811. package/web-ui/build/static/puppet-xYMQTgSK.js +0 -1
  812. package/web-ui/build/static/pure-B-46644a.js +0 -1
  813. package/web-ui/build/static/purebasic-C2jTmxCp.js +0 -1
  814. package/web-ui/build/static/purebasic-DB1qz_79.js +0 -1
  815. package/web-ui/build/static/purescript-C7X1Jhpv.js +0 -1
  816. package/web-ui/build/static/python-DdZkdREO.js +0 -1
  817. package/web-ui/build/static/python-g-3ev0jp.js +0 -1
  818. package/web-ui/build/static/python-repl-Ba3YgabT.js +0 -1
  819. package/web-ui/build/static/q-4Xd1x0tI.js +0 -1
  820. package/web-ui/build/static/q-CFLewr3P.js +0 -1
  821. package/web-ui/build/static/qml-D1wL69-t.js +0 -1
  822. package/web-ui/build/static/qml-o0TpTomi.js +0 -1
  823. package/web-ui/build/static/qore-Bu32uyvk.js +0 -1
  824. package/web-ui/build/static/qsharp-BlenDeSE.js +0 -1
  825. package/web-ui/build/static/r-x-9dl4d1.js +0 -1
  826. package/web-ui/build/static/r-xEFM_Z9P.js +0 -1
  827. package/web-ui/build/static/racket-B6M0zyVn.js +0 -1
  828. package/web-ui/build/static/reason-B_YmUFeb.js +0 -1
  829. package/web-ui/build/static/reasonml-DqV3O6jw.js +0 -1
  830. package/web-ui/build/static/regex-RpvIR1UC.js +0 -1
  831. package/web-ui/build/static/rego-DLBfnzDz.js +0 -1
  832. package/web-ui/build/static/renpy-BPyvMyYV.js +0 -1
  833. package/web-ui/build/static/rest-BOvObf4b.js +0 -1
  834. package/web-ui/build/static/rib-CfbyRlOV.js +0 -1
  835. package/web-ui/build/static/rip-BmGgp-ky.js +0 -1
  836. package/web-ui/build/static/roboconf-BjlIhdyT.js +0 -1
  837. package/web-ui/build/static/roboconf-gCvzQFG_.js +0 -1
  838. package/web-ui/build/static/robotframework-DMIYiZ9n.js +0 -1
  839. package/web-ui/build/static/routeros-dIA3JsYo.js +0 -1
  840. package/web-ui/build/static/rsl-C-IHLDiI.js +0 -1
  841. package/web-ui/build/static/ruby-2UsEEPvi.js +0 -1
  842. package/web-ui/build/static/ruby-DQuqRBbF.js +0 -1
  843. package/web-ui/build/static/ruleslanguage-DIX-ZNdD.js +0 -1
  844. package/web-ui/build/static/rust-C3AZB4MD.js +0 -1
  845. package/web-ui/build/static/rust-s-uSy2xK.js +0 -1
  846. package/web-ui/build/static/sas-2ySpLG9-.js +0 -1
  847. package/web-ui/build/static/sas-BZjFIK6U.js +0 -1
  848. package/web-ui/build/static/sass-DmfN0RXk.js +0 -1
  849. package/web-ui/build/static/scala-BWG4D45T.js +0 -1
  850. package/web-ui/build/static/scala-DORCOJGF.js +0 -1
  851. package/web-ui/build/static/scheme-Dhf3OcIw.js +0 -1
  852. package/web-ui/build/static/scheme-RkPOVGvt.js +0 -1
  853. package/web-ui/build/static/scilab-BPjU1E5p.js +0 -1
  854. package/web-ui/build/static/scss-Cl5xn34j.js +0 -1
  855. package/web-ui/build/static/scss-K2UK4NzM.js +0 -1
  856. package/web-ui/build/static/shell-CnNrPIpO.js +0 -1
  857. package/web-ui/build/static/shell-session-CWzCvkCd.js +0 -1
  858. package/web-ui/build/static/smali-BqUloCDk.js +0 -1
  859. package/web-ui/build/static/smali-D9l7tmuy.js +0 -1
  860. package/web-ui/build/static/smalltalk-Ch8WtZ3x.js +0 -1
  861. package/web-ui/build/static/smalltalk-D33bV6Ux.js +0 -1
  862. package/web-ui/build/static/smarty-DhuA-30v.js +0 -1
  863. package/web-ui/build/static/sml-CcRV_05i.js +0 -1
  864. package/web-ui/build/static/sml-Dxy9VWS5.js +0 -1
  865. package/web-ui/build/static/solidity-B6Q9ss0Q.js +0 -1
  866. package/web-ui/build/static/solution-file-CdD4U58t.js +0 -1
  867. package/web-ui/build/static/soy-DwAwdpNx.js +0 -1
  868. package/web-ui/build/static/sparql-BD7Xi4u4.js +0 -1
  869. package/web-ui/build/static/splunk-spl-DNR8Nqkh.js +0 -1
  870. package/web-ui/build/static/sqf-D_eO1j0l.js +0 -1
  871. package/web-ui/build/static/sqf-RmFM3NP_.js +0 -1
  872. package/web-ui/build/static/sql-BqcZzHxC.js +0 -1
  873. package/web-ui/build/static/sql-C1Og8w4D.js +0 -1
  874. package/web-ui/build/static/sql_more-B8l439k3.js +0 -1
  875. package/web-ui/build/static/squirrel-k8wRFBEU.js +0 -1
  876. package/web-ui/build/static/stan-Cyd1Qc2Z.js +0 -1
  877. package/web-ui/build/static/stan-vaOTiGIw.js +0 -1
  878. package/web-ui/build/static/stata-BvtPM-UC.js +0 -1
  879. package/web-ui/build/static/step21-CcJzkfyX.js +0 -1
  880. package/web-ui/build/static/stylus-BUdFaHOi.js +0 -1
  881. package/web-ui/build/static/stylus-DZUxYm7B.js +0 -1
  882. package/web-ui/build/static/subunit-BLFu1vy1.js +0 -1
  883. package/web-ui/build/static/swift-4C37Wfzo.js +0 -1
  884. package/web-ui/build/static/swift-tpG5dEoC.js +0 -1
  885. package/web-ui/build/static/systemd-CZAHgFou.js +0 -1
  886. package/web-ui/build/static/t4-cs-BzDTdhsq.js +0 -1
  887. package/web-ui/build/static/t4-templating-BnNIhX-m.js +0 -1
  888. package/web-ui/build/static/t4-vb-WH6kXP4O.js +0 -1
  889. package/web-ui/build/static/taggerscript-DPuoT3fc.js +0 -1
  890. package/web-ui/build/static/tap-CRdOSYnA.js +0 -1
  891. package/web-ui/build/static/tap-Cfv7r5Y1.js +0 -1
  892. package/web-ui/build/static/tcl-C57QpMKe.js +0 -1
  893. package/web-ui/build/static/tcl-D_HhrQb7.js +0 -1
  894. package/web-ui/build/static/textile-HiZT-42r.js +0 -1
  895. package/web-ui/build/static/thrift-BIevTRAV.js +0 -1
  896. package/web-ui/build/static/toml-Dzu0VuJT.js +0 -1
  897. package/web-ui/build/static/tp-BcFKGcDv.js +0 -1
  898. package/web-ui/build/static/tremor-ChPj0YkW.js +0 -1
  899. package/web-ui/build/static/tsx-DEgPhspu.js +0 -1
  900. package/web-ui/build/static/tt2-zECU_j-n.js +0 -1
  901. package/web-ui/build/static/turtle-DSxo1JVc.js +0 -1
  902. package/web-ui/build/static/twig-BzzbcVU0.js +0 -1
  903. package/web-ui/build/static/twig-DD8ck-xB.js +0 -1
  904. package/web-ui/build/static/typescript-mfGLA69h.js +0 -1
  905. package/web-ui/build/static/typescript-obXwfhtv.js +0 -1
  906. package/web-ui/build/static/typoscript-DGRFkQ44.js +0 -1
  907. package/web-ui/build/static/unrealscript-C71Cshhh.js +0 -1
  908. package/web-ui/build/static/uorazor--YPn6YI1.js +0 -1
  909. package/web-ui/build/static/uri-DiBB6LAn.js +0 -1
  910. package/web-ui/build/static/v-DD6j4G3R.js +0 -1
  911. package/web-ui/build/static/vala-90B6tBz6.js +0 -1
  912. package/web-ui/build/static/vala-CPgj-_9p.js +0 -1
  913. package/web-ui/build/static/vbnet-Ct4CtLUY.js +0 -1
  914. package/web-ui/build/static/vbnet-Dt71G1FN.js +0 -1
  915. package/web-ui/build/static/vbscript-2A1bKLI8.js +0 -1
  916. package/web-ui/build/static/vbscript-html-BNSfZskj.js +0 -1
  917. package/web-ui/build/static/velocity-Cw07cCrw.js +0 -1
  918. package/web-ui/build/static/verilog-Appxv8wV.js +0 -1
  919. package/web-ui/build/static/verilog-gFSdUnSn.js +0 -1
  920. package/web-ui/build/static/vhdl-326_OrM2.js +0 -1
  921. package/web-ui/build/static/vhdl-BGaNDNIa.js +0 -1
  922. package/web-ui/build/static/vim-D1mEwoEz.js +0 -1
  923. package/web-ui/build/static/vim-lvX3nIwq.js +0 -1
  924. package/web-ui/build/static/visual-basic-C5WWtiVx.js +0 -1
  925. package/web-ui/build/static/warpscript-CF7kIXUC.js +0 -1
  926. package/web-ui/build/static/wasm-BHfGEvXM.js +0 -1
  927. package/web-ui/build/static/web-idl-U4Bu4xZZ.js +0 -1
  928. package/web-ui/build/static/wiki-Cypfsr_n.js +0 -1
  929. package/web-ui/build/static/wolfram-B4afYjEC.js +0 -1
  930. package/web-ui/build/static/wren-CIleRBn0.js +0 -1
  931. package/web-ui/build/static/x86asm-C-79USsG.js +0 -1
  932. package/web-ui/build/static/xeora-CSaM51pY.js +0 -1
  933. package/web-ui/build/static/xl-CuiQZS3B.js +0 -1
  934. package/web-ui/build/static/xml-C6jbRHrj.js +0 -1
  935. package/web-ui/build/static/xml-doc-CV7qp07_.js +0 -1
  936. package/web-ui/build/static/xojo-D4t2uWPH.js +0 -1
  937. package/web-ui/build/static/xquery-DT_Ao6QG.js +0 -1
  938. package/web-ui/build/static/xquery-DnKodhmy.js +0 -1
  939. package/web-ui/build/static/yaml-CLiRAuyI.js +0 -1
  940. package/web-ui/build/static/yaml-aulSfOTJ.js +0 -1
  941. package/web-ui/build/static/yang-C1R60r9w.js +0 -1
  942. package/web-ui/build/static/zephir-D_18ShED.js +0 -1
  943. package/web-ui/build/static/zig-C-01pua6.js +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "onbuzz",
3
- "version": "3.9.6",
3
+ "version": "3.9.8",
4
4
  "description": "Loxia OnBuzz - Your AI Fleet",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
@@ -1,152 +1,110 @@
1
1
  /**
2
- * Tests for resolvePreferredModel — the loosely-coupled model resolver
3
- * used by agent templates to auto-select the best available model.
2
+ * Tests for resolvePreferredModel — catalog-driven model resolver.
3
+ * Uses recommended_for and tags from the model catalog instead of name matching.
4
4
  */
5
5
 
6
6
  import { describe, test, expect, beforeAll } from '@jest/globals';
7
7
 
8
- let resolvePreferredModel, AGENT_TEMPLATES, TEMPLATE_MODEL_PREFERENCES;
8
+ let resolvePreferredModel, AGENT_TEMPLATES, TEMPLATE_PURPOSE_MAP;
9
9
 
10
10
  beforeAll(async () => {
11
- ({ resolvePreferredModel, AGENT_TEMPLATES, TEMPLATE_MODEL_PREFERENCES } =
11
+ ({ resolvePreferredModel, AGENT_TEMPLATES, TEMPLATE_PURPOSE_MAP } =
12
12
  await import('../../web-ui/src/constants/index.js'));
13
13
  });
14
14
 
15
- // Simulate available models id is just the model name (no suffix)
15
+ // Models with catalog computed fields
16
16
  const MOCK_MODELS = [
17
- { id: 'gpt-5.4', modelName: 'gpt-5.4' },
18
- { id: 'gpt-5.4-mini', modelName: 'gpt-5.4-mini' },
19
- { id: 'gpt-5.4-nano', modelName: 'gpt-5.4-nano' },
20
- { id: 'gpt-5.3-codex', modelName: 'gpt-5.3-codex' },
21
- { id: 'gpt-5.2-chat', modelName: 'gpt-5.2-chat' },
22
- { id: 'gpt-5-mini', modelName: 'gpt-5-mini' },
23
- { id: 'gpt-4.1', modelName: 'gpt-4.1' },
24
- { id: 'gpt-4.1-mini', modelName: 'gpt-4.1-mini' },
25
- { id: 'o4-mini', modelName: 'o4-mini' },
26
- { id: 'o3', modelName: 'o3' },
27
- { id: 'grok-4', modelName: 'grok-4' },
28
- { id: 'grok-4-fast-reasoning', modelName: 'grok-4-fast-reasoning' },
29
- { id: 'DeepSeek-V3.2', modelName: 'DeepSeek-V3.2' },
30
- { id: 'DeepSeek-R1-0528', modelName: 'DeepSeek-R1-0528' },
31
- { id: 'Kimi-K2.5', modelName: 'Kimi-K2.5' },
32
- { id: 'Phi-4-reasoning', modelName: 'Phi-4-reasoning' },
17
+ { id: 'o4-mini', modelName: 'o4-mini', recommended_for: ['vision', 'reasoning', 'default'], tags: ['vision', 'reasoning', 'agentic', 'budget', 'fast'], tier: 'budget' },
18
+ { id: 'gpt-5.3-codex', modelName: 'gpt-5.3-codex', recommended_for: ['coding'], tags: ['agentic', 'standard-cost'], tier: 'standard' },
19
+ { id: 'gpt-5.4', modelName: 'gpt-5.4', recommended_for: ['creative'], tags: ['agentic', 'standard-cost'], tier: 'standard' },
20
+ { id: 'gpt-5-mini', modelName: 'gpt-5-mini', recommended_for: ['vision', 'default'], tags: ['vision', 'agentic', 'budget', 'fast'], tier: 'budget' },
21
+ { id: 'Kimi-K2.5', modelName: 'Kimi-K2.5', recommended_for: ['vision'], tags: ['vision', 'budget'], tier: 'budget' },
22
+ { id: 'grok-4', modelName: 'grok-4', recommended_for: [], tags: ['agentic', 'standard-cost'], tier: 'standard' },
23
+ { id: 'DeepSeek-V3.2', modelName: 'DeepSeek-V3.2', recommended_for: [], tags: ['agentic', 'budget'], tier: 'budget' },
33
24
  ];
34
25
 
35
- describe('resolvePreferredModel', () => {
36
- // ── Exact match ──────────────────────────────────────────────
37
- describe('exact match (tier 1)', () => {
38
- test('Coding Assistant resolves to gpt-5.3-codex', () => {
39
- expect(resolvePreferredModel(AGENT_TEMPLATES.CODING_ASSISTANT, MOCK_MODELS))
40
- .toBe('gpt-5.3-codex');
41
- });
42
-
43
- test('Data Analyst resolves to gpt-5.4-mini', () => {
44
- expect(resolvePreferredModel(AGENT_TEMPLATES.DATA_ANALYST, MOCK_MODELS))
45
- .toBe('gpt-5.4-mini');
46
- });
26
+ describe('resolvePreferredModel (catalog-driven)', () => {
47
27
 
48
- test('Creative Writer resolves to gpt-5.4', () => {
49
- expect(resolvePreferredModel(AGENT_TEMPLATES.CREATIVE_WRITER, MOCK_MODELS))
50
- .toBe('gpt-5.4');
28
+ describe('recommended_for matching', () => {
29
+ test('Coding Assistant resolves to model recommended for coding', () => {
30
+ const result = resolvePreferredModel(AGENT_TEMPLATES.CODING_ASSISTANT, MOCK_MODELS);
31
+ expect(result).toBe('gpt-5.3-codex');
51
32
  });
52
33
 
53
- test('Security Architect resolves to o4-mini', () => {
54
- expect(resolvePreferredModel(AGENT_TEMPLATES.SECURITY_ARCHITECT, MOCK_MODELS))
55
- .toBe('o4-mini');
34
+ test('Security Architect resolves to model recommended for reasoning', () => {
35
+ const result = resolvePreferredModel(AGENT_TEMPLATES.SECURITY_ARCHITECT, MOCK_MODELS);
36
+ expect(result).toBe('o4-mini');
56
37
  });
57
38
 
58
- test('Team Manager resolves to gpt-5.4-mini', () => {
59
- expect(resolvePreferredModel(AGENT_TEMPLATES.TEAM_MANAGER, MOCK_MODELS))
60
- .toBe('gpt-5.4-mini');
39
+ test('Creative Writer resolves to model recommended for creative', () => {
40
+ const result = resolvePreferredModel(AGENT_TEMPLATES.CREATIVE_WRITER, MOCK_MODELS);
41
+ expect(result).toBe('gpt-5.4');
61
42
  });
62
43
 
63
- test('System Admin resolves to gpt-5.4-mini', () => {
64
- expect(resolvePreferredModel(AGENT_TEMPLATES.SYSTEM_ADMIN, MOCK_MODELS))
65
- .toBe('gpt-5.4-mini');
44
+ test('System Admin resolves to model recommended for default', () => {
45
+ const result = resolvePreferredModel(AGENT_TEMPLATES.SYSTEM_ADMIN, MOCK_MODELS);
46
+ expect(result).toBe('o4-mini'); // first model with recommended_for: 'default'
66
47
  });
67
48
 
68
- test('System Analyst resolves to gpt-5.4', () => {
69
- expect(resolvePreferredModel(AGENT_TEMPLATES.SYSTEM_ANALYST, MOCK_MODELS))
70
- .toBe('gpt-5.4');
71
- });
72
-
73
- test('Custom resolves to gpt-5.4-mini', () => {
74
- expect(resolvePreferredModel(AGENT_TEMPLATES.CUSTOM, MOCK_MODELS))
75
- .toBe('gpt-5.4-mini');
49
+ test('Custom resolves to default model', () => {
50
+ const result = resolvePreferredModel(AGENT_TEMPLATES.CUSTOM, MOCK_MODELS);
51
+ expect(result).toBe('o4-mini');
76
52
  });
77
53
  });
78
54
 
79
- // ── Term scoring fallback ────────────────────────────────────
80
- describe('term scoring fallback (preferred model not available)', () => {
81
- test('Coding Assistant falls back to a gpt model when gpt-5.3-codex missing', () => {
82
- const models = MOCK_MODELS.filter(m => m.modelName !== 'gpt-5.3-codex');
55
+ describe('tag fallback', () => {
56
+ test('falls back to tag match when no recommended_for match', () => {
57
+ // Models without any recommended_for
58
+ const models = [
59
+ { id: 'model-a', modelName: 'model-a', tags: ['coding'], recommended_for: [] },
60
+ { id: 'model-b', modelName: 'model-b', tags: ['general'], recommended_for: [] },
61
+ ];
83
62
  const result = resolvePreferredModel(AGENT_TEMPLATES.CODING_ASSISTANT, models);
84
- const selected = models.find(m => m.id === result);
85
- // Terms are ['gpt', 'codex', '5.3'] — should match a gpt model with high version
86
- expect(selected.modelName).toMatch(/gpt/);
87
- });
88
-
89
- test('Data Analyst falls back to a gpt model when gpt-5.4-mini missing', () => {
90
- const models = MOCK_MODELS.filter(m => m.modelName !== 'gpt-5.4-mini');
91
- const result = resolvePreferredModel(AGENT_TEMPLATES.DATA_ANALYST, models);
92
- const selected = models.find(m => m.id === result);
93
- // Should still pick a model that matches at least "gpt" or "5.4"
94
- expect(selected).toBeDefined();
95
- });
96
-
97
- test('Security Architect falls back to a model matching at least one term when o4-mini missing', () => {
98
- const models = MOCK_MODELS.filter(m => m.modelName !== 'o4-mini');
99
- const result = resolvePreferredModel(AGENT_TEMPLATES.SECURITY_ARCHITECT, models);
100
- expect(result).toBeTruthy();
101
- // The resolver picks the best scoring model — any match on 'o4', 'reasoning', or 'o3' is valid
102
- // Version-number bonus may also influence the pick (e.g., DeepSeek-R1-0528 has high digits)
63
+ expect(result).toBe('model-a');
103
64
  });
65
+ });
104
66
 
105
- test('higher version numbers are preferred as tiebreaker', () => {
67
+ describe('default fallback', () => {
68
+ test('falls back to default-recommended model when purpose not found', () => {
106
69
  const models = [
107
- { id: 'gpt-5.2', modelName: 'gpt-5.2' },
108
- { id: 'gpt-5.4', modelName: 'gpt-5.4' },
109
- { id: 'gpt-5.3', modelName: 'gpt-5.3' },
70
+ { id: 'exotic', modelName: 'exotic', recommended_for: ['default'], tags: [] },
71
+ { id: 'other', modelName: 'other', recommended_for: [], tags: [] },
110
72
  ];
111
- // Creative Writer: terms are ['gpt', '5.4'], exact match hits gpt-5.4
112
- expect(resolvePreferredModel(AGENT_TEMPLATES.CREATIVE_WRITER, models))
113
- .toBe('gpt-5.4');
73
+ // Creative Writer with no 'creative' recommended_for falls to 'default'
74
+ const result = resolvePreferredModel(AGENT_TEMPLATES.CREATIVE_WRITER, models);
75
+ expect(result).toBe('exotic');
114
76
  });
115
77
  });
116
78
 
117
- // ── Random fallback ──────────────────────────────────────────
118
- describe('random fallback (no terms match)', () => {
119
- test('returns a model even when no terms match at all', () => {
120
- const exoticModels = [
121
- { id: 'exotic-1', modelName: 'totally-unknown' },
122
- { id: 'exotic-2', modelName: 'another-unknown' },
79
+ describe('first-available fallback', () => {
80
+ test('returns first model when no tags or recommended_for match', () => {
81
+ const models = [
82
+ { id: 'unknown-1', modelName: 'unknown-1' },
83
+ { id: 'unknown-2', modelName: 'unknown-2' },
123
84
  ];
124
- const result = resolvePreferredModel(AGENT_TEMPLATES.CODING_ASSISTANT, exoticModels);
125
- expect(result).toBeTruthy();
126
- expect(['exotic-1', 'exotic-2']).toContain(result);
85
+ const result = resolvePreferredModel(AGENT_TEMPLATES.CODING_ASSISTANT, models);
86
+ expect(result).toBe('unknown-1');
127
87
  });
128
88
  });
129
89
 
130
- // ── Edge cases ───────────────────────────────────────────────
131
90
  describe('edge cases', () => {
132
- test('returns null for empty model list', () => {
91
+ test('returns null for empty list', () => {
133
92
  expect(resolvePreferredModel(AGENT_TEMPLATES.CODING_ASSISTANT, [])).toBeNull();
134
93
  });
135
94
 
136
- test('returns null for null model list', () => {
95
+ test('returns null for null', () => {
137
96
  expect(resolvePreferredModel(AGENT_TEMPLATES.CODING_ASSISTANT, null)).toBeNull();
138
97
  });
139
98
 
140
- test('handles unknown template (returns first model)', () => {
99
+ test('handles unknown template gracefully', () => {
141
100
  const result = resolvePreferredModel('nonexistent', MOCK_MODELS);
142
- expect(result).toBe(MOCK_MODELS[0].id);
101
+ // Unknown template defaults to 'default' purpose → finds o4-mini
102
+ expect(result).toBe('o4-mini');
143
103
  });
144
104
 
145
- test('every AGENT_TEMPLATE has a preference defined', () => {
105
+ test('every AGENT_TEMPLATE has a purpose in TEMPLATE_PURPOSE_MAP', () => {
146
106
  for (const key of Object.values(AGENT_TEMPLATES)) {
147
- expect(TEMPLATE_MODEL_PREFERENCES[key]).toBeDefined();
148
- expect(TEMPLATE_MODEL_PREFERENCES[key].preferredModel).toBeTruthy();
149
- expect(TEMPLATE_MODEL_PREFERENCES[key].terms.length).toBeGreaterThan(0);
107
+ expect(TEMPLATE_PURPOSE_MAP[key]).toBeDefined();
150
108
  }
151
109
  });
152
110
  });
@@ -33,6 +33,9 @@ function buildRemoteSessionApp(sessionToken) {
33
33
  // Health endpoint is public
34
34
  if (req.path === '/api/health' || req.path === '/health') return next();
35
35
 
36
+ // Static assets are public (CSS, JS, images, fonts)
37
+ if (req.path.startsWith('/static/') || req.path.endsWith('.svg') || req.path.endsWith('.png') || req.path.endsWith('.ico') || req.path.endsWith('.woff2')) return next();
38
+
36
39
  // Parse cookies manually
37
40
  const cookies = {};
38
41
  (req.headers.cookie || '').split(';').forEach(c => {
@@ -69,6 +72,10 @@ function buildRemoteSessionApp(sessionToken) {
69
72
  // ── Test routes behind the gate ────────────────────────────────
70
73
  app.get('/api/health', (req, res) => res.json({ status: 'healthy' }));
71
74
  app.get('/health', (req, res) => res.json({ status: 'healthy' }));
75
+ app.get('/static/index-abc123.js', (req, res) => res.type('js').send('console.log("app")'));
76
+ app.get('/static/index-abc123.css', (req, res) => res.type('css').send('body{}'));
77
+ app.get('/loxia-icon.svg', (req, res) => res.type('svg').send('<svg></svg>'));
78
+ app.get('/favicon.ico', (req, res) => res.type('ico').send(''));
72
79
  app.get('/api/test', (req, res) => res.json({ success: true, data: 'protected' }));
73
80
  app.get('/', (req, res) => res.send('<html><body>Web UI</body></html>'));
74
81
  app.get('/dashboard', (req, res) => res.send('<html><body>Dashboard</body></html>'));
@@ -113,6 +120,45 @@ describe('Remote Session Auth Gate', () => {
113
120
  });
114
121
  });
115
122
 
123
+ // ── Static assets bypass (public) ──────────────────────────────────
124
+ describe('static assets (public, no auth needed)', () => {
125
+ it('/static/*.js is accessible without any token', async () => {
126
+ const app = buildRemoteSessionApp(VALID_TOKEN);
127
+ const { server: s, baseUrl } = await startServer(app);
128
+ server = s;
129
+
130
+ const res = await fetch(`${baseUrl}/static/index-abc123.js`);
131
+ expect(res.status).toBe(200);
132
+ });
133
+
134
+ it('/static/*.css is accessible without any token', async () => {
135
+ const app = buildRemoteSessionApp(VALID_TOKEN);
136
+ const { server: s, baseUrl } = await startServer(app);
137
+ server = s;
138
+
139
+ const res = await fetch(`${baseUrl}/static/index-abc123.css`);
140
+ expect(res.status).toBe(200);
141
+ });
142
+
143
+ it('.svg files are accessible without any token', async () => {
144
+ const app = buildRemoteSessionApp(VALID_TOKEN);
145
+ const { server: s, baseUrl } = await startServer(app);
146
+ server = s;
147
+
148
+ const res = await fetch(`${baseUrl}/loxia-icon.svg`);
149
+ expect(res.status).toBe(200);
150
+ });
151
+
152
+ it('.ico files are accessible without any token', async () => {
153
+ const app = buildRemoteSessionApp(VALID_TOKEN);
154
+ const { server: s, baseUrl } = await startServer(app);
155
+ server = s;
156
+
157
+ const res = await fetch(`${baseUrl}/favicon.ico`);
158
+ expect(res.status).toBe(200);
159
+ });
160
+ });
161
+
116
162
  // ── Token via query param (first access) ─────────────────────────
117
163
  describe('?session_token= query param (first access)', () => {
118
164
  it('valid token sets cookie and redirects (strips token from URL)', async () => {
@@ -269,6 +269,11 @@ class WebServer {
269
269
  // Health endpoint is public (used by session manager to check readiness)
270
270
  if (req.path === '/api/health' || req.path === '/health') return next();
271
271
 
272
+ // Static assets are public — CSS, JS, images, fonts, icons
273
+ // These are hashed build artifacts with no sensitive data.
274
+ // Blocking them breaks the UI on first load (before cookie is set).
275
+ if (req.path.startsWith('/static/') || req.path.endsWith('.svg') || req.path.endsWith('.png') || req.path.endsWith('.ico') || req.path.endsWith('.woff2')) return next();
276
+
272
277
  // Check for session token in cookie or query param
273
278
  // Parse cookie manually (avoid adding cookie-parser dependency)
274
279
  const cookies = {};
@@ -287,10 +292,13 @@ class WebServer {
287
292
  maxAge: (parseInt(process.env.SESSION_TTL) || 7200) * 1000,
288
293
  path: '/'
289
294
  });
290
- // Strip the session_token param from URL and redirect
295
+ // Strip the session_token param and redirect via a tiny HTML page
296
+ // that sets sessionStorage flag before navigating (so the SPA knows
297
+ // this is a remote session with a pre-configured API key).
291
298
  const url = new URL(req.originalUrl, `http://${req.headers.host}`);
292
299
  url.searchParams.delete('session_token');
293
- return res.redirect(url.pathname + url.search);
300
+ const target = url.pathname + url.search || '/';
301
+ return res.send(`<html><head><script>sessionStorage.setItem('loxia-remote-session','true');window.location.replace('${target}');</script></head><body></body></html>`);
294
302
  }
295
303
 
296
304
  if (tokenFromCookie === sessionToken) {
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Tests for VisionTool vision model selection — catalog-driven.
3
+ * Uses recommended_for and tier from the catalog instead of name lists.
4
+ */
5
+
6
+ import { describe, test, expect } from '@jest/globals';
7
+
8
+ function selectVisionModel(models, context = {}) {
9
+ const visionModels = (models || []).filter(m => m.supportsVision === true);
10
+ if (visionModels.length === 0) return null;
11
+
12
+ // 1. Model recommended for vision
13
+ const recommended = visionModels.find(m => m.recommended_for?.includes('vision'));
14
+ if (recommended) return recommended.name;
15
+
16
+ // 2. Budget-tier vision model
17
+ const budget = visionModels.find(m => m.tier === 'budget');
18
+ if (budget) return budget.name;
19
+
20
+ // 3. Agent's current model
21
+ const agentModel = context.currentModel;
22
+ if (agentModel && visionModels.some(m => m.name === agentModel)) return agentModel;
23
+
24
+ // 4. First available
25
+ return visionModels[0].name;
26
+ }
27
+
28
+ const ALL_MODELS = [
29
+ { name: 'o4-mini', supportsVision: true, recommended_for: ['vision', 'reasoning', 'default'], tier: 'budget' },
30
+ { name: 'gpt-5-mini', supportsVision: true, recommended_for: ['vision', 'default'], tier: 'budget' },
31
+ { name: 'Kimi-K2.5', supportsVision: true, recommended_for: ['vision'], tier: 'budget' },
32
+ { name: 'gpt-5.4', supportsVision: false, recommended_for: ['creative'], tier: 'standard' },
33
+ { name: 'grok-4', supportsVision: true, recommended_for: [], tier: 'standard' },
34
+ { name: 'DeepSeek-V3.2', supportsVision: false, recommended_for: [], tier: 'budget' },
35
+ { name: 'gpt-5.3-codex', supportsVision: false, recommended_for: ['coding'], tier: 'standard' },
36
+ ];
37
+
38
+ describe('VisionTool model selection (catalog-driven)', () => {
39
+
40
+ test('selects model recommended for vision', () => {
41
+ expect(selectVisionModel(ALL_MODELS)).toBe('o4-mini');
42
+ });
43
+
44
+ test('selects budget vision model when no recommended_for match', () => {
45
+ const models = ALL_MODELS.map(m => ({ ...m, recommended_for: [] }));
46
+ expect(selectVisionModel(models)).toBe('o4-mini'); // still budget + vision
47
+ });
48
+
49
+ test('skips non-vision models even if recommended', () => {
50
+ const models = [
51
+ { name: 'non-vision', supportsVision: false, recommended_for: ['vision'], tier: 'budget' },
52
+ { name: 'actual-vision', supportsVision: true, recommended_for: [], tier: 'standard' },
53
+ ];
54
+ expect(selectVisionModel(models)).toBe('actual-vision');
55
+ });
56
+
57
+ test('uses agent current model when no recommended/budget match', () => {
58
+ const models = [
59
+ { name: 'premium-vision', supportsVision: true, recommended_for: [], tier: 'premium' },
60
+ { name: 'agent-model', supportsVision: true, recommended_for: [], tier: 'premium' },
61
+ ];
62
+ expect(selectVisionModel(models, { currentModel: 'agent-model' })).toBe('agent-model');
63
+ });
64
+
65
+ test('falls back to first available', () => {
66
+ const models = [
67
+ { name: 'only-option', supportsVision: true, recommended_for: [], tier: 'premium' },
68
+ ];
69
+ expect(selectVisionModel(models)).toBe('only-option');
70
+ });
71
+
72
+ test('returns null when no vision models', () => {
73
+ expect(selectVisionModel([{ name: 'text-only', supportsVision: false }])).toBeNull();
74
+ expect(selectVisionModel([])).toBeNull();
75
+ expect(selectVisionModel(null)).toBeNull();
76
+ });
77
+
78
+ test('no hardcoded model names in selection logic', () => {
79
+ // All models are fictional — proves zero name dependence
80
+ const models = [
81
+ { name: 'xyz-model-alpha', supportsVision: true, recommended_for: ['vision'], tier: 'budget' },
82
+ { name: 'abc-model-beta', supportsVision: true, recommended_for: [], tier: 'standard' },
83
+ ];
84
+ expect(selectVisionModel(models)).toBe('xyz-model-alpha');
85
+ });
86
+ });
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Tests for WebTool._selectVisionModel() — catalog-driven.
3
+ * Uses recommended_for and tier instead of hardcoded name lists.
4
+ */
5
+
6
+ import { jest, describe, test, expect } from '@jest/globals';
7
+
8
+ function selectVisionModel(context) {
9
+ const modelsService = context.aiService?.modelsService;
10
+ if (!modelsService) return null;
11
+
12
+ const allModels = modelsService.getModels?.() || [];
13
+ const visionModels = allModels.filter(m => m.supportsVision === true);
14
+ if (visionModels.length === 0) return null;
15
+
16
+ const recommended = visionModels.find(m => m.recommended_for?.includes('vision'));
17
+ if (recommended) return recommended.name;
18
+
19
+ const budget = visionModels.find(m => m.tier === 'budget');
20
+ if (budget) return budget.name;
21
+
22
+ return visionModels[0].name;
23
+ }
24
+
25
+ function makeContext(models) {
26
+ return { aiService: { modelsService: { getModels: () => models } } };
27
+ }
28
+
29
+ describe('WebTool._selectVisionModel (catalog-driven)', () => {
30
+
31
+ test('selects model recommended for vision', () => {
32
+ const models = [
33
+ { name: 'vision-model', supportsVision: true, recommended_for: ['vision'], tier: 'budget' },
34
+ { name: 'other', supportsVision: true, recommended_for: [], tier: 'standard' },
35
+ ];
36
+ expect(selectVisionModel(makeContext(models))).toBe('vision-model');
37
+ });
38
+
39
+ test('selects budget vision model as fallback', () => {
40
+ const models = [
41
+ { name: 'premium', supportsVision: true, recommended_for: [], tier: 'premium' },
42
+ { name: 'cheap', supportsVision: true, recommended_for: [], tier: 'budget' },
43
+ ];
44
+ expect(selectVisionModel(makeContext(models))).toBe('cheap');
45
+ });
46
+
47
+ test('returns first available when no tags match', () => {
48
+ const models = [
49
+ { name: 'only-one', supportsVision: true, recommended_for: [], tier: 'premium' },
50
+ ];
51
+ expect(selectVisionModel(makeContext(models))).toBe('only-one');
52
+ });
53
+
54
+ test('skips non-vision models', () => {
55
+ const models = [
56
+ { name: 'text-only', supportsVision: false, recommended_for: ['vision'], tier: 'budget' },
57
+ { name: 'actual-vision', supportsVision: true, recommended_for: [], tier: 'standard' },
58
+ ];
59
+ expect(selectVisionModel(makeContext(models))).toBe('actual-vision');
60
+ });
61
+
62
+ test('returns null when no models available', () => {
63
+ expect(selectVisionModel(makeContext([]))).toBeNull();
64
+ });
65
+
66
+ test('returns null when no aiService', () => {
67
+ expect(selectVisionModel({})).toBeNull();
68
+ });
69
+
70
+ test('falls back to o4-mini when _selectVisionModel returns null', () => {
71
+ // The actual code does: this._selectVisionModel(context) || 'o4-mini'
72
+ const result = selectVisionModel({}) || 'o4-mini';
73
+ expect(result).toBe('o4-mini');
74
+ });
75
+ });
@@ -4,7 +4,7 @@
4
4
  * Purpose:
5
5
  * - Analyze images from disk with natural language questions
6
6
  * - Session-based: first call uploads image, subsequent calls reuse it
7
- * - Uses the best available vision model (prefers Anthropic Sonnet/Opus)
7
+ * - Uses the best available vision model (prefers o4-mini for best MMMU/cost ratio)
8
8
  * - Returns structured answers only (no filler text)
9
9
  *
10
10
  * Actions:
@@ -18,12 +18,8 @@ import { BaseTool } from './baseTool.js';
18
18
  import { promises as fs } from 'fs';
19
19
  import path from 'path';
20
20
 
21
- // Dynamic vision model selection priority:
22
- // 1. Model with "opus" in name + vision capability
23
- // 2. Model with "sonnet" in name + vision capability
24
- // 3. Agent's current model if it has vision capability
25
- // 4. First model in the list with vision capability
26
- const VISION_MODEL_PRIORITY = ['opus', 'sonnet'];
21
+ // Vision model selection uses catalog tags + recommended_for fields.
22
+ // No hardcoded model names the catalog determines which models are best for vision.
27
23
 
28
24
  const MAX_IMAGE_SIZE_BYTES = 20 * 1024 * 1024; // 20MB
29
25
  const SESSION_TIMEOUT_MS = 30 * 60 * 1000; // 30 minutes
@@ -436,31 +432,29 @@ ANSWERS: Structured, direct answers only — no filler text.`;
436
432
 
437
433
  _selectVisionModel(context = {}) {
438
434
  const visionModels = this._getVisionModels();
439
-
440
- // 1. Search by priority keywords (opus, sonnet)
441
- for (const keyword of VISION_MODEL_PRIORITY) {
442
- const match = visionModels.find(m => m.name.toLowerCase().includes(keyword));
443
- if (match) {
444
- this._selectedModel = match.name;
445
- return this._selectedModel;
446
- }
435
+ if (visionModels.length === 0) {
436
+ this.logger?.warn('[VisionTool] No vision-capable model found in model list');
437
+ return null;
447
438
  }
448
439
 
449
- // 2. Agent's current model if it has vision capability
440
+ // 1. Model explicitly recommended for vision (from catalog)
441
+ const recommended = visionModels.find(m => m.recommended_for?.includes('vision'));
442
+ if (recommended) { this._selectedModel = recommended.name; return this._selectedModel; }
443
+
444
+ // 2. Vision model with budget tier (best cost/quality)
445
+ const budgetVision = visionModels.find(m => m.tier === 'budget');
446
+ if (budgetVision) { this._selectedModel = budgetVision.name; return this._selectedModel; }
447
+
448
+ // 3. Agent's current model if it has vision capability
450
449
  const agentModel = context.currentModel;
451
450
  if (agentModel && visionModels.some(m => m.name === agentModel)) {
452
451
  this._selectedModel = agentModel;
453
452
  return this._selectedModel;
454
453
  }
455
454
 
456
- // 3. First available vision model
457
- if (visionModels.length > 0) {
458
- this._selectedModel = visionModels[0].name;
459
- return this._selectedModel;
460
- }
461
-
462
- this.logger?.warn('[VisionTool] No vision-capable model found in model list');
463
- return null;
455
+ // 4. First available vision model
456
+ this._selectedModel = visionModels[0].name;
457
+ return this._selectedModel;
464
458
  }
465
459
 
466
460
  _getVisionModels() {
@@ -2832,6 +2832,31 @@ If blocked (CAPTCHA, access denied), use stealthLevel: "maximum" (visible browse
2832
2832
  };
2833
2833
  }
2834
2834
 
2835
+ /**
2836
+ * Select the best available vision model for screenshot analysis.
2837
+ * Uses catalog tags + recommended_for — no hardcoded model names.
2838
+ * @private
2839
+ */
2840
+ _selectVisionModel(context) {
2841
+ const modelsService = context.aiService?.modelsService;
2842
+ if (!modelsService) return null;
2843
+
2844
+ const allModels = modelsService.getModels?.() || [];
2845
+ const visionModels = allModels.filter(m => m.supportsVision === true);
2846
+ if (visionModels.length === 0) return null;
2847
+
2848
+ // 1. Model recommended for vision (from catalog)
2849
+ const recommended = visionModels.find(m => m.recommended_for?.includes('vision'));
2850
+ if (recommended) return recommended.name;
2851
+
2852
+ // 2. Budget-tier vision model (best cost/quality)
2853
+ const budget = visionModels.find(m => m.tier === 'budget');
2854
+ if (budget) return budget.name;
2855
+
2856
+ // 3. First available
2857
+ return visionModels[0].name;
2858
+ }
2859
+
2835
2860
  /**
2836
2861
  * Analyze screenshot using AI vision model
2837
2862
  * @param {Page} page - Puppeteer page
@@ -2856,8 +2881,8 @@ If blocked (CAPTCHA, access denied), use stealthLevel: "maximum" (visible browse
2856
2881
  });
2857
2882
 
2858
2883
  try {
2859
- // Use vision model (prefer o3 if available, fallback to gpt-4-vision)
2860
- const model = 'o3'; // Will be mapped by AI service
2884
+ // Select best available vision model dynamically
2885
+ const model = this._selectVisionModel(context) || 'o4-mini';
2861
2886
 
2862
2887
  // Create message with image
2863
2888
  const response = await aiService.sendMessage(
@@ -6,7 +6,7 @@
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>Loxia Autopilot One</title>
8
8
  <meta name="description" content="AI Agents System - No-code/vibe-code/companion-coder platform" />
9
- <script type="module" crossorigin src="/static/index-CNhxse_k.js"></script>
9
+ <script type="module" crossorigin src="/static/index-DY0DLa8y.js"></script>
10
10
  <link rel="stylesheet" crossorigin href="/static/index-BwNJoEC1.css">
11
11
  </head>
12
12
  <body>
@@ -0,0 +1 @@
1
+ import{g as f}from"./index-DY0DLa8y.js";import{r as s}from"./index-ClWUfRkv.js";function i(t,n){for(var o=0;o<n.length;o++){const e=n[o];if(typeof e!="string"&&!Array.isArray(e)){for(const r in e)if(r!=="default"&&!(r in t)){const c=Object.getOwnPropertyDescriptor(e,r);c&&Object.defineProperty(t,r,c.get?c:{enumerable:!0,get:()=>e[r]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}var a=s();const p=f(a),l=i({__proto__:null,default:p},[a]);export{l as _};
@@ -0,0 +1 @@
1
+ import{r as s,g as f}from"./index-DY0DLa8y.js";function c(t,n){for(var o=0;o<n.length;o++){const e=n[o];if(typeof e!="string"&&!Array.isArray(e)){for(const r in e)if(r!=="default"&&!(r in t)){const a=Object.getOwnPropertyDescriptor(e,r);a&&Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:()=>e[r]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}var p=s();const i=f(p),b=c({__proto__:null,default:i},[p]);export{b as a};
@@ -0,0 +1 @@
1
+ import{d as s,g as c}from"./index-DY0DLa8y.js";function i(t,a){for(var o=0;o<a.length;o++){const e=a[o];if(typeof e!="string"&&!Array.isArray(e)){for(const r in e)if(r!=="default"&&!(r in t)){const n=Object.getOwnPropertyDescriptor(e,r);n&&Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:()=>e[r]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}var f=s();const p=c(f),b=i({__proto__:null,default:p},[f]);export{b as a};
@@ -0,0 +1 @@
1
+ import{g as s}from"./index-DY0DLa8y.js";import{a as i}from"./index-ClWUfRkv.js";function c(t,n){for(var o=0;o<n.length;o++){const e=n[o];if(typeof e!="string"&&!Array.isArray(e)){for(const r in e)if(r!=="default"&&!(r in t)){const a=Object.getOwnPropertyDescriptor(e,r);a&&Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:()=>e[r]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}var f=i();const p=s(f),g=c({__proto__:null,default:p},[f]);export{g as a};
@@ -0,0 +1 @@
1
+ import{g as n}from"./index-DY0DLa8y.js";import{b as f}from"./index-ClWUfRkv.js";function g(t,c){for(var o=0;o<c.length;o++){const e=c[o];if(typeof e!="string"&&!Array.isArray(e)){for(const r in e)if(r!=="default"&&!(r in t)){const s=Object.getOwnPropertyDescriptor(e,r);s&&Object.defineProperty(t,r,s.get?s:{enumerable:!0,get:()=>e[r]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}var a=f();const l=n(a),u=g({__proto__:null,default:l},[a]);export{u as a};
@@ -0,0 +1 @@
1
+ import{e as a,g as s}from"./index-DY0DLa8y.js";function p(r,i){for(var o=0;o<i.length;o++){const t=i[o];if(typeof t!="string"&&!Array.isArray(t)){for(const e in t)if(e!=="default"&&!(e in r)){const c=Object.getOwnPropertyDescriptor(t,e);c&&Object.defineProperty(r,e,c.get?c:{enumerable:!0,get:()=>t[e]})}}}return Object.freeze(Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}))}var n=a();const f=s(n),g=p({__proto__:null,default:f},[n]);export{g as a};
@@ -0,0 +1 @@
1
+ import{g as a}from"./index-DY0DLa8y.js";import{c as s}from"./index-ClWUfRkv.js";function p(r,i){for(var o=0;o<i.length;o++){const t=i[o];if(typeof t!="string"&&!Array.isArray(t)){for(const e in t)if(e!=="default"&&!(e in r)){const c=Object.getOwnPropertyDescriptor(t,e);c&&Object.defineProperty(r,e,c.get?c:{enumerable:!0,get:()=>t[e]})}}}return Object.freeze(Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}))}var n=s();const f=a(n),l=p({__proto__:null,default:f},[n]);export{l as a};
@@ -0,0 +1 @@
1
+ import{f as s,g as c}from"./index-DY0DLa8y.js";function i(t,n){for(var o=0;o<n.length;o++){const e=n[o];if(typeof e!="string"&&!Array.isArray(e)){for(const r in e)if(r!=="default"&&!(r in t)){const a=Object.getOwnPropertyDescriptor(e,r);a&&Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:()=>e[r]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}var f=s();const p=c(f),d=i({__proto__:null,default:p},[f]);export{d as a};