onbuzz 3.9.7 → 3.9.10

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 (945) hide show
  1. package/package.json +1 -1
  2. package/src/__tests__/resolvePreferredModel.test.js +59 -101
  3. package/src/core/agentScheduler.js +3360 -3301
  4. package/src/interfaces/__tests__/remoteSessionAuth.test.js +46 -0
  5. package/src/interfaces/webServer.js +10 -2
  6. package/src/tools/__tests__/visionTool.modelSelection.test.js +56 -182
  7. package/src/tools/__tests__/webTool.visionModel.test.js +27 -73
  8. package/src/tools/visionTool.js +17 -23
  9. package/src/tools/webTool.js +9 -6
  10. package/src/utilities/constants.js +877 -871
  11. package/web-ui/build/index.html +1 -1
  12. package/web-ui/build/static/1c-DUhJWQrP.js +1 -0
  13. package/web-ui/build/static/abap-D5pCv45A.js +1 -0
  14. package/web-ui/build/static/abnf-BqIdp1gH.js +1 -0
  15. package/web-ui/build/static/abnf-CBjlJif0.js +1 -0
  16. package/web-ui/build/static/accesslog-C5KlxDoB.js +1 -0
  17. package/web-ui/build/static/actionscript-CEdNWXaD.js +1 -0
  18. package/web-ui/build/static/actionscript-CgxJfO4L.js +1 -0
  19. package/web-ui/build/static/ada-Bdm6rSt3.js +1 -0
  20. package/web-ui/build/static/ada-Cqq140Rj.js +1 -0
  21. package/web-ui/build/static/agda-glonKdcN.js +1 -0
  22. package/web-ui/build/static/al-C_FHJHny.js +1 -0
  23. package/web-ui/build/static/angelscript-Rz4JX2Rq.js +1 -0
  24. package/web-ui/build/static/antlr4-D4LSk0Ay.js +1 -0
  25. package/web-ui/build/static/apache-BaMp4ZSC.js +1 -0
  26. package/web-ui/build/static/apacheconf-BVq0Zx-9.js +1 -0
  27. package/web-ui/build/static/apex-DdKma-_U.js +1 -0
  28. package/web-ui/build/static/apl-CXIfpQjm.js +1 -0
  29. package/web-ui/build/static/applescript-D92-mz1s.js +1 -0
  30. package/web-ui/build/static/applescript-eHzEb7oT.js +1 -0
  31. package/web-ui/build/static/aql-D_F7mVkg.js +1 -0
  32. package/web-ui/build/static/arcade-DgXn3lOp.js +1 -0
  33. package/web-ui/build/static/arduino-10f7W_Wz.js +1 -0
  34. package/web-ui/build/static/arduino-Bi8wBo3Q.js +1 -0
  35. package/web-ui/build/static/arff-DAZwwp1m.js +1 -0
  36. package/web-ui/build/static/armasm-4k-fm-WI.js +1 -0
  37. package/web-ui/build/static/asciidoc-9iyohD53.js +1 -0
  38. package/web-ui/build/static/asciidoc-BPxaG9gt.js +1 -0
  39. package/web-ui/build/static/asm6502-DlE-NUYG.js +1 -0
  40. package/web-ui/build/static/asmatmel-ykXUz67l.js +1 -0
  41. package/web-ui/build/static/aspectj-BkcGzoIw.js +1 -0
  42. package/web-ui/build/static/aspnet-B8bHvD3e.js +1 -0
  43. package/web-ui/build/static/autohotkey-BXgybckQ.js +1 -0
  44. package/web-ui/build/static/autohotkey-rJX88r3D.js +1 -0
  45. package/web-ui/build/static/autoit-BV42RCy-.js +1 -0
  46. package/web-ui/build/static/autoit-DtcYxn7t.js +1 -0
  47. package/web-ui/build/static/avisynth-B4vyExrv.js +1 -0
  48. package/web-ui/build/static/avrasm-hptGkmwL.js +1 -0
  49. package/web-ui/build/static/avro-idl-D6Eh5Tip.js +1 -0
  50. package/web-ui/build/static/awk-VZHEebeo.js +1 -0
  51. package/web-ui/build/static/axapta-MDY4Ol3-.js +1 -0
  52. package/web-ui/build/static/bash-CEVIQPNU.js +1 -0
  53. package/web-ui/build/static/bash-CQheSBd0.js +1 -0
  54. package/web-ui/build/static/basic-BNAC47vx.js +1 -0
  55. package/web-ui/build/static/basic-o0l9wI82.js +1 -0
  56. package/web-ui/build/static/batch-05P80ryo.js +1 -0
  57. package/web-ui/build/static/bbcode-CvQ1b2hw.js +1 -0
  58. package/web-ui/build/static/bicep-CfAYoZNS.js +1 -0
  59. package/web-ui/build/static/birb-JD-jZNqk.js +1 -0
  60. package/web-ui/build/static/bison-i3sQbLUm.js +1 -0
  61. package/web-ui/build/static/bnf-B5bYoRbA.js +1 -0
  62. package/web-ui/build/static/bnf-D98r2gkN.js +1 -0
  63. package/web-ui/build/static/brainfuck-BU_egZbB.js +1 -0
  64. package/web-ui/build/static/brainfuck-Df0tVgjY.js +1 -0
  65. package/web-ui/build/static/brightscript-DSvCPg0z.js +1 -0
  66. package/web-ui/build/static/bro-BBxgPL7i.js +1 -0
  67. package/web-ui/build/static/bsl-JrkU-4lx.js +1 -0
  68. package/web-ui/build/static/c-BWSIorgH.js +1 -0
  69. package/web-ui/build/static/c-BXBwfPOR.js +1 -0
  70. package/web-ui/build/static/c-like-4jLL6ZeZ.js +1 -0
  71. package/web-ui/build/static/cal-BUukjt45.js +1 -0
  72. package/web-ui/build/static/capnproto-DzfXkblk.js +1 -0
  73. package/web-ui/build/static/ceylon-C6eNUw7A.js +1 -0
  74. package/web-ui/build/static/cfscript-DtzcDoB6.js +1 -0
  75. package/web-ui/build/static/chaiscript-q5NSJZ6c.js +1 -0
  76. package/web-ui/build/static/cil-DXg6HnTF.js +1 -0
  77. package/web-ui/build/static/clean-DhrJyfi0.js +1 -0
  78. package/web-ui/build/static/clojure-DCN-fEKt.js +1 -0
  79. package/web-ui/build/static/clojure-aNTgtXL1.js +1 -0
  80. package/web-ui/build/static/clojure-repl-B_eFHp5m.js +1 -0
  81. package/web-ui/build/static/cmake-BDtm7sss.js +1 -0
  82. package/web-ui/build/static/cmake-Bj_M_zqn.js +1 -0
  83. package/web-ui/build/static/cobol-qo3jUBf5.js +1 -0
  84. package/web-ui/build/static/coffeescript-CIyOUYJ3.js +1 -0
  85. package/web-ui/build/static/coffeescript-CduS6q85.js +1 -0
  86. package/web-ui/build/static/concurnas-DtdAZDrQ.js +1 -0
  87. package/web-ui/build/static/coq-CN6lKK7F.js +1 -0
  88. package/web-ui/build/static/coq-DzGUbX5U.js +1 -0
  89. package/web-ui/build/static/cos-DFcou98i.js +1 -0
  90. package/web-ui/build/static/cpp-Dgg9pFUu.js +1 -0
  91. package/web-ui/build/static/cpp-PRuqGY7D.js +1 -0
  92. package/web-ui/build/static/crmsh-DLLfnotO.js +1 -0
  93. package/web-ui/build/static/crystal-BPylX4xG.js +1 -0
  94. package/web-ui/build/static/crystal-R1dH-Ebf.js +1 -0
  95. package/web-ui/build/static/csharp-CzwY39sl.js +1 -0
  96. package/web-ui/build/static/csharp-DJyymJhf.js +1 -0
  97. package/web-ui/build/static/cshtml-CwtJYmS1.js +1 -0
  98. package/web-ui/build/static/csp-Bj2DpAcY.js +1 -0
  99. package/web-ui/build/static/csp-xY5_PNPj.js +1 -0
  100. package/web-ui/build/static/css-DBGSwd91.js +1 -0
  101. package/web-ui/build/static/css-extras-BvlTqCpv.js +1 -0
  102. package/web-ui/build/static/csv-UTBn-Q9j.js +1 -0
  103. package/web-ui/build/static/cypher-BfzzS1h2.js +1 -0
  104. package/web-ui/build/static/d-BvamtLdb.js +1 -0
  105. package/web-ui/build/static/d-XpxNI5JF.js +1 -0
  106. package/web-ui/build/static/dart-BEM6fjpM.js +1 -0
  107. package/web-ui/build/static/dart-CsMrP4Ax.js +1 -0
  108. package/web-ui/build/static/dataweave-B-vfR-Jf.js +1 -0
  109. package/web-ui/build/static/dax-2WUcEUPn.js +1 -0
  110. package/web-ui/build/static/delphi-7XWS5oTs.js +1 -0
  111. package/web-ui/build/static/dhall-NWRUZH7l.js +1 -0
  112. package/web-ui/build/static/diff-AEgTdaYv.js +1 -0
  113. package/web-ui/build/static/diff-BRgtzr2U.js +1 -0
  114. package/web-ui/build/static/django-4bH3I4pv.js +1 -0
  115. package/web-ui/build/static/django-CrlKM5br.js +1 -0
  116. package/web-ui/build/static/dns-BSqNAZE3.js +1 -0
  117. package/web-ui/build/static/dns-zone-file-Di5cZlps.js +1 -0
  118. package/web-ui/build/static/docker-C9BRbp6h.js +1 -0
  119. package/web-ui/build/static/dockerfile-DbkS5WIL.js +1 -0
  120. package/web-ui/build/static/dos-per3p9hI.js +1 -0
  121. package/web-ui/build/static/dot-DjnTpyv1.js +1 -0
  122. package/web-ui/build/static/dsconfig-BjcpCNTB.js +1 -0
  123. package/web-ui/build/static/dts-DSWuKx2J.js +1 -0
  124. package/web-ui/build/static/dust-BCqihcI2.js +1 -0
  125. package/web-ui/build/static/ebnf-7ErhUPMF.js +1 -0
  126. package/web-ui/build/static/ebnf-CHADdlPD.js +1 -0
  127. package/web-ui/build/static/editorconfig--daZb_D-.js +1 -0
  128. package/web-ui/build/static/eiffel-C5zhT7HO.js +1 -0
  129. package/web-ui/build/static/ejs-ncnPF5oJ.js +1 -0
  130. package/web-ui/build/static/elixir-kFl2IHfo.js +1 -0
  131. package/web-ui/build/static/elixir-m8Rwrydm.js +1 -0
  132. package/web-ui/build/static/elm-CvywOdPd.js +1 -0
  133. package/web-ui/build/static/elm-Dsie_raS.js +1 -0
  134. package/web-ui/build/static/erb-BvkeA6hu.js +1 -0
  135. package/web-ui/build/static/erb-CtAdMBZY.js +1 -0
  136. package/web-ui/build/static/erlang-B1PynliZ.js +1 -0
  137. package/web-ui/build/static/erlang-DO2EN0IW.js +1 -0
  138. package/web-ui/build/static/erlang-repl-DWSpk7kU.js +1 -0
  139. package/web-ui/build/static/etlua-yEBP6vtw.js +1 -0
  140. package/web-ui/build/static/excel-Bhh_OwNT.js +1 -0
  141. package/web-ui/build/static/excel-formula-D8YNVKGY.js +1 -0
  142. package/web-ui/build/static/factor-U8_v_-Qx.js +1 -0
  143. package/web-ui/build/static/false-CbflHcQ4.js +1 -0
  144. package/web-ui/build/static/firestore-security-rules-C9yS7u9K.js +1 -0
  145. package/web-ui/build/static/fix-9oju1yrf.js +1 -0
  146. package/web-ui/build/static/flix-DlGExg75.js +1 -0
  147. package/web-ui/build/static/flow-DKikR-YL.js +1 -0
  148. package/web-ui/build/static/fortran-BTYpE8K2.js +1 -0
  149. package/web-ui/build/static/fortran-BxxaCEOU.js +1 -0
  150. package/web-ui/build/static/fsharp-BSNG-jCK.js +1 -0
  151. package/web-ui/build/static/fsharp-CCg0Y4HA.js +1 -0
  152. package/web-ui/build/static/ftl-DjWJ0y-0.js +1 -0
  153. package/web-ui/build/static/gams-C5fvQ3Od.js +1 -0
  154. package/web-ui/build/static/gap-BvL-biL4.js +1 -0
  155. package/web-ui/build/static/gauss-BzZO8GCS.js +1 -0
  156. package/web-ui/build/static/gcode-Cz8GsjzL.js +1 -0
  157. package/web-ui/build/static/gcode-Dg2JcAQS.js +1 -0
  158. package/web-ui/build/static/gdscript-BOCutEVV.js +1 -0
  159. package/web-ui/build/static/gedcom-Bdq0EwEN.js +1 -0
  160. package/web-ui/build/static/gherkin-Bn1mABAH.js +1 -0
  161. package/web-ui/build/static/gherkin-DpDnmvFb.js +1 -0
  162. package/web-ui/build/static/git-Cd4zgk7f.js +1 -0
  163. package/web-ui/build/static/glsl-BGXyo7Gw.js +1 -0
  164. package/web-ui/build/static/glsl-COPc8ZeZ.js +1 -0
  165. package/web-ui/build/static/gml-BCkIu1Er.js +1 -0
  166. package/web-ui/build/static/gml-COtYpJl2.js +1 -0
  167. package/web-ui/build/static/gn-Bjg1CRig.js +1 -0
  168. package/web-ui/build/static/go-BB6lvTry.js +1 -0
  169. package/web-ui/build/static/go-adzEcqWq.js +1 -0
  170. package/web-ui/build/static/go-module-CfC8Vt2L.js +1 -0
  171. package/web-ui/build/static/golo-C2rGlTHX.js +1 -0
  172. package/web-ui/build/static/gradle-Dh3gdCGU.js +1 -0
  173. package/web-ui/build/static/graphql-w9z3CiM9.js +1 -0
  174. package/web-ui/build/static/groovy-BU2m7Ekt.js +1 -0
  175. package/web-ui/build/static/groovy-Bi8INA80.js +1 -0
  176. package/web-ui/build/static/haml-t0Z0NMdQ.js +1 -0
  177. package/web-ui/build/static/haml-yTEKBHVm.js +1 -0
  178. package/web-ui/build/static/handlebars-BmRED509.js +1 -0
  179. package/web-ui/build/static/handlebars-DmmahO5D.js +1 -0
  180. package/web-ui/build/static/haskell-B4TTwJ5u.js +1 -0
  181. package/web-ui/build/static/haskell-BX4vB3_v.js +1 -0
  182. package/web-ui/build/static/haxe-B81ItqL6.js +1 -0
  183. package/web-ui/build/static/haxe-Z6MewpJj.js +1 -0
  184. package/web-ui/build/static/hcl-CT8vHUwN.js +1 -0
  185. package/web-ui/build/static/hlsl-BNvVW3bY.js +1 -0
  186. package/web-ui/build/static/hoon-07zLMFzn.js +1 -0
  187. package/web-ui/build/static/hpkp-DxK9DKwE.js +1 -0
  188. package/web-ui/build/static/hsp-BFSV4VGN.js +1 -0
  189. package/web-ui/build/static/hsts-Dfi1_v6k.js +1 -0
  190. package/web-ui/build/static/htmlbars-CBGS41Tx.js +1 -0
  191. package/web-ui/build/static/http-Ck2d_NdZ.js +1 -0
  192. package/web-ui/build/static/http-CljalO0f.js +1 -0
  193. package/web-ui/build/static/hy-CWwWerqr.js +1 -0
  194. package/web-ui/build/static/ichigojam-BUq638e8.js +1 -0
  195. package/web-ui/build/static/icon-CkGyT1bh.js +1 -0
  196. package/web-ui/build/static/icu-message-format-BQoqTHNl.js +1 -0
  197. package/web-ui/build/static/idris-nI6aQ55s.js +1 -0
  198. package/web-ui/build/static/iecst-BVwN13uc.js +1 -0
  199. package/web-ui/build/static/ignore-BLfLC9PA.js +1 -0
  200. package/web-ui/build/static/index-BwLo9qDf.js +1 -0
  201. package/web-ui/build/static/index-CrzpLgj1.js +13 -0
  202. package/web-ui/build/static/index-DqzIkFBw.js +834 -0
  203. package/web-ui/build/static/inform7-BML_idR2.js +1 -0
  204. package/web-ui/build/static/inform7-xoROt4DC.js +1 -0
  205. package/web-ui/build/static/ini-CCSkzm0H.js +1 -0
  206. package/web-ui/build/static/ini-CYmzo02a.js +1 -0
  207. package/web-ui/build/static/io-DXnvLdgN.js +1 -0
  208. package/web-ui/build/static/irpf90-DxKOk6dw.js +1 -0
  209. package/web-ui/build/static/isbl-0B0tD40P.js +1 -0
  210. package/web-ui/build/static/j-DXpPF6fV.js +1 -0
  211. package/web-ui/build/static/java-D2GSVfv5.js +1 -0
  212. package/web-ui/build/static/java-KuHaGPGv.js +1 -0
  213. package/web-ui/build/static/javadoc-BCT2sPL1.js +1 -0
  214. package/web-ui/build/static/javadoclike-BvnqsHVU.js +1 -0
  215. package/web-ui/build/static/javascript-CiWbQcs7.js +1 -0
  216. package/web-ui/build/static/javastacktrace-eBMVSx2Z.js +1 -0
  217. package/web-ui/build/static/jboss-cli-C01AEskS.js +1 -0
  218. package/web-ui/build/static/jexl-Dn5KxGiK.js +1 -0
  219. package/web-ui/build/static/jolie-D3Zt6_TW.js +1 -0
  220. package/web-ui/build/static/jq-DxOmFCSQ.js +1 -0
  221. package/web-ui/build/static/js-extras-CMUXnpUe.js +1 -0
  222. package/web-ui/build/static/js-templates-BzQwIldl.js +1 -0
  223. package/web-ui/build/static/jsdoc-CkAdh1ug.js +1 -0
  224. package/web-ui/build/static/json-C-B6MwWV.js +1 -0
  225. package/web-ui/build/static/json-C75IrF6s.js +1 -0
  226. package/web-ui/build/static/json5-DvXR6PNV.js +1 -0
  227. package/web-ui/build/static/jsonp-B92u1PFA.js +1 -0
  228. package/web-ui/build/static/jsstacktrace-DJjcSHfr.js +1 -0
  229. package/web-ui/build/static/jsx-C9-rq-CT.js +1 -0
  230. package/web-ui/build/static/julia-DS04VXIz.js +1 -0
  231. package/web-ui/build/static/julia-DrUeWVfq.js +1 -0
  232. package/web-ui/build/static/julia-repl-i80v_zZH.js +1 -0
  233. package/web-ui/build/static/keepalived-BHGEAKGU.js +1 -0
  234. package/web-ui/build/static/keyman-Bdzqqi9H.js +1 -0
  235. package/web-ui/build/static/kotlin-BzHWfKYa.js +1 -0
  236. package/web-ui/build/static/kotlin-C_V1S_FQ.js +1 -0
  237. package/web-ui/build/static/kumir-CotiKPE1.js +1 -0
  238. package/web-ui/build/static/kusto-DRtZ_YAs.js +1 -0
  239. package/web-ui/build/static/lasso-CWuEv8wJ.js +1 -0
  240. package/web-ui/build/static/latex-BQyvVAOm.js +1 -0
  241. package/web-ui/build/static/latex-DMFvqai-.js +1 -0
  242. package/web-ui/build/static/latte-DBzhXpVk.js +1 -0
  243. package/web-ui/build/static/ldif-CHIDpBfE.js +1 -0
  244. package/web-ui/build/static/leaf-BUM990MU.js +1 -0
  245. package/web-ui/build/static/less-Ct98Xd8m.js +1 -0
  246. package/web-ui/build/static/less-cA1L-hw1.js +1 -0
  247. package/web-ui/build/static/lilypond-BxQcVtKe.js +1 -0
  248. package/web-ui/build/static/liquid-BsdpMPYc.js +1 -0
  249. package/web-ui/build/static/lisp-BNcefi1U.js +1 -0
  250. package/web-ui/build/static/lisp-CBeHrUJR.js +1 -0
  251. package/web-ui/build/static/livecodeserver-BRZ6ns7E.js +1 -0
  252. package/web-ui/build/static/livescript-C9VXNDh2.js +1 -0
  253. package/web-ui/build/static/livescript-CPM4TEaS.js +1 -0
  254. package/web-ui/build/static/llvm-D-ktoQ6Z.js +1 -0
  255. package/web-ui/build/static/llvm-aGR2Ei-6.js +1 -0
  256. package/web-ui/build/static/log-BDQPp9ei.js +1 -0
  257. package/web-ui/build/static/lolcode-H3tk4sVp.js +1 -0
  258. package/web-ui/build/static/lsl-E_sO-uEk.js +1 -0
  259. package/web-ui/build/static/lua-CII1BReE.js +1 -0
  260. package/web-ui/build/static/lua-c32KCD1t.js +1 -0
  261. package/web-ui/build/static/magma-BhWArSfW.js +1 -0
  262. package/web-ui/build/static/makefile-BL9Ig9xO.js +1 -0
  263. package/web-ui/build/static/makefile-C_xncXma.js +1 -0
  264. package/web-ui/build/static/markdown-Bjx0QXUF.js +1 -0
  265. package/web-ui/build/static/markdown-DKcNzXLC.js +1 -0
  266. package/web-ui/build/static/markup-templating-DAQlKGf9.js +1 -0
  267. package/web-ui/build/static/mathematica-CvqfUKaF.js +1 -0
  268. package/web-ui/build/static/matlab-BErKso28.js +1 -0
  269. package/web-ui/build/static/matlab-ClFikeke.js +1 -0
  270. package/web-ui/build/static/maxima-Ft3syDPO.js +1 -0
  271. package/web-ui/build/static/maxscript-DT0tXOez.js +1 -0
  272. package/web-ui/build/static/mel-B9RYm_nG.js +1 -0
  273. package/web-ui/build/static/mel-DGpfnKg9.js +1 -0
  274. package/web-ui/build/static/mercury-CXmUlA2y.js +1 -0
  275. package/web-ui/build/static/mermaid-BDmkIkXi.js +1 -0
  276. package/web-ui/build/static/mipsasm-B2G5mL-v.js +1 -0
  277. package/web-ui/build/static/mizar-9hVFfba0.js +1 -0
  278. package/web-ui/build/static/mizar-FYnr9CDP.js +1 -0
  279. package/web-ui/build/static/mojolicious-D3hJYxqh.js +1 -0
  280. package/web-ui/build/static/mongodb-HP0s-riS.js +1 -0
  281. package/web-ui/build/static/monkey-CBt12SEM.js +1 -0
  282. package/web-ui/build/static/monkey-DIqWIXYW.js +1 -0
  283. package/web-ui/build/static/moonscript-B8Z_r4dn.js +1 -0
  284. package/web-ui/build/static/moonscript-CE7UuyXU.js +1 -0
  285. package/web-ui/build/static/n1ql-B16jfOjw.js +1 -0
  286. package/web-ui/build/static/n1ql-BgMWCckC.js +1 -0
  287. package/web-ui/build/static/n4js-CAXy3_Jy.js +1 -0
  288. package/web-ui/build/static/nand2tetris-hdl-C3vzslgj.js +1 -0
  289. package/web-ui/build/static/naniscript-DAFwQQVi.js +1 -0
  290. package/web-ui/build/static/nasm-BOFKVnaS.js +1 -0
  291. package/web-ui/build/static/neon-D0ISL7qJ.js +1 -0
  292. package/web-ui/build/static/nevod-KoDi24v0.js +1 -0
  293. package/web-ui/build/static/nginx-Cr5DfqWR.js +1 -0
  294. package/web-ui/build/static/nginx-DCCnctTG.js +1 -0
  295. package/web-ui/build/static/nim-DPJN-_EC.js +1 -0
  296. package/web-ui/build/static/nim-De05kw0n.js +1 -0
  297. package/web-ui/build/static/nix-CELEwiHo.js +1 -0
  298. package/web-ui/build/static/nix-CSaBChxR.js +1 -0
  299. package/web-ui/build/static/node-repl-C32a7yiw.js +1 -0
  300. package/web-ui/build/static/nsis-CZuaKioB.js +1 -0
  301. package/web-ui/build/static/nsis-VwfBkj3d.js +1 -0
  302. package/web-ui/build/static/objectivec-DJKZtPL2.js +1 -0
  303. package/web-ui/build/static/objectivec-DK2yoaBg.js +1 -0
  304. package/web-ui/build/static/ocaml-Dxx1cjem.js +1 -0
  305. package/web-ui/build/static/ocaml-kjKWdGCz.js +1 -0
  306. package/web-ui/build/static/opencl-BNtKnv1J.js +1 -0
  307. package/web-ui/build/static/openqasm-CdvNeYug.js +1 -0
  308. package/web-ui/build/static/openscad-B_qvsjfe.js +1 -0
  309. package/web-ui/build/static/oxygene-DG1hddn5.js +1 -0
  310. package/web-ui/build/static/oz-CRY87qeP.js +1 -0
  311. package/web-ui/build/static/parigp-BkAr6-G8.js +1 -0
  312. package/web-ui/build/static/parser-CP5clEop.js +1 -0
  313. package/web-ui/build/static/parser3-crTb7A0X.js +1 -0
  314. package/web-ui/build/static/pascal-DPfyfoDh.js +1 -0
  315. package/web-ui/build/static/pascaligo-DURFNQ_j.js +1 -0
  316. package/web-ui/build/static/pcaxis-DD7RAxRP.js +1 -0
  317. package/web-ui/build/static/peoplecode-So_X5jSp.js +1 -0
  318. package/web-ui/build/static/perl-B1DBrLmJ.js +1 -0
  319. package/web-ui/build/static/perl-BFaVXeG7.js +1 -0
  320. package/web-ui/build/static/pf-CEB1L5qm.js +1 -0
  321. package/web-ui/build/static/pgsql-A0nsUgDI.js +1 -0
  322. package/web-ui/build/static/php-8ihB7EPM.js +1 -0
  323. package/web-ui/build/static/php-Sh6D6NIJ.js +1 -0
  324. package/web-ui/build/static/php-extras-Cy_aBZK6.js +1 -0
  325. package/web-ui/build/static/php-template-Cit-PHnf.js +1 -0
  326. package/web-ui/build/static/phpdoc-DNU6hjDm.js +1 -0
  327. package/web-ui/build/static/plaintext-FLJCTahD.js +1 -0
  328. package/web-ui/build/static/plsql-1giFa6G7.js +1 -0
  329. package/web-ui/build/static/pony-BEp1IqY4.js +1 -0
  330. package/web-ui/build/static/powerquery-B43RvEYw.js +1 -0
  331. package/web-ui/build/static/powershell-B0QtH4nv.js +1 -0
  332. package/web-ui/build/static/powershell-BdHnDhS8.js +1 -0
  333. package/web-ui/build/static/processing-Be1Oglu_.js +1 -0
  334. package/web-ui/build/static/processing-CARItQwm.js +1 -0
  335. package/web-ui/build/static/profile-BwlQtk0y.js +1 -0
  336. package/web-ui/build/static/prolog-DKK6jUnc.js +1 -0
  337. package/web-ui/build/static/prolog-b_8huu7c.js +1 -0
  338. package/web-ui/build/static/promql-BZZ7XfbI.js +1 -0
  339. package/web-ui/build/static/properties-BFb1Pf6n.js +1 -0
  340. package/web-ui/build/static/properties-CmsBqXVJ.js +1 -0
  341. package/web-ui/build/static/protobuf-DeLotQpJ.js +1 -0
  342. package/web-ui/build/static/protobuf-WK1D_sJI.js +1 -0
  343. package/web-ui/build/static/psl-MNZR2qmI.js +1 -0
  344. package/web-ui/build/static/pug-CF9nceJD.js +1 -0
  345. package/web-ui/build/static/puppet-CZbKHt9x.js +1 -0
  346. package/web-ui/build/static/puppet-DUMENOgH.js +1 -0
  347. package/web-ui/build/static/pure-37fhgfVL.js +1 -0
  348. package/web-ui/build/static/purebasic-BdORV50m.js +1 -0
  349. package/web-ui/build/static/purebasic-D8axvRJF.js +1 -0
  350. package/web-ui/build/static/purescript-BmZhg2WR.js +1 -0
  351. package/web-ui/build/static/python-CnE0eaJH.js +1 -0
  352. package/web-ui/build/static/python-rT3smsTM.js +1 -0
  353. package/web-ui/build/static/python-repl-oAPThvRZ.js +1 -0
  354. package/web-ui/build/static/q-C9PeNAsV.js +1 -0
  355. package/web-ui/build/static/q-DEhOeRm8.js +1 -0
  356. package/web-ui/build/static/qml-CzmXy0mm.js +1 -0
  357. package/web-ui/build/static/qml-ZLrRDW5F.js +1 -0
  358. package/web-ui/build/static/qore-C4BmNqiC.js +1 -0
  359. package/web-ui/build/static/qsharp-CUspIxRd.js +1 -0
  360. package/web-ui/build/static/r-CmTJdjSW.js +1 -0
  361. package/web-ui/build/static/r-Dul2vX00.js +1 -0
  362. package/web-ui/build/static/racket-DuTLmSg0.js +1 -0
  363. package/web-ui/build/static/reason-CPbzN4QK.js +1 -0
  364. package/web-ui/build/static/reasonml-BX6GGy_7.js +1 -0
  365. package/web-ui/build/static/regex-C-S4lu9H.js +1 -0
  366. package/web-ui/build/static/rego-C552rbmD.js +1 -0
  367. package/web-ui/build/static/renpy-CAXD5ZIz.js +1 -0
  368. package/web-ui/build/static/rest-C0ztj_j5.js +1 -0
  369. package/web-ui/build/static/rib-qZJul5T1.js +1 -0
  370. package/web-ui/build/static/rip-Bi2BsowV.js +1 -0
  371. package/web-ui/build/static/roboconf-BcDqw_pY.js +1 -0
  372. package/web-ui/build/static/roboconf-CEx3VVi1.js +1 -0
  373. package/web-ui/build/static/robotframework-CJVompq9.js +1 -0
  374. package/web-ui/build/static/routeros-BhoPpLPN.js +1 -0
  375. package/web-ui/build/static/rsl-BnetYcE2.js +1 -0
  376. package/web-ui/build/static/ruby-D-6W0bRE.js +1 -0
  377. package/web-ui/build/static/ruby-Dy6NjAXK.js +1 -0
  378. package/web-ui/build/static/ruleslanguage-Bl49mJdL.js +1 -0
  379. package/web-ui/build/static/rust-DxOQY_0w.js +1 -0
  380. package/web-ui/build/static/rust-Dxv6L6Ol.js +1 -0
  381. package/web-ui/build/static/sas-B2aGiUg2.js +1 -0
  382. package/web-ui/build/static/sas-Cbzi-GmN.js +1 -0
  383. package/web-ui/build/static/sass-DwAAr7qH.js +1 -0
  384. package/web-ui/build/static/scala-CNOqwEfe.js +1 -0
  385. package/web-ui/build/static/scala-DxlUiOFp.js +1 -0
  386. package/web-ui/build/static/scheme-B1ALEy7P.js +1 -0
  387. package/web-ui/build/static/scheme-DUNdLa4B.js +1 -0
  388. package/web-ui/build/static/scilab-C6Y0UImx.js +1 -0
  389. package/web-ui/build/static/scss-8m-w5Uh_.js +1 -0
  390. package/web-ui/build/static/scss-C_igD-9N.js +1 -0
  391. package/web-ui/build/static/shell-CTp1MeZM.js +1 -0
  392. package/web-ui/build/static/shell-session-CN3B6Mtp.js +1 -0
  393. package/web-ui/build/static/smali-DMehnCvR.js +1 -0
  394. package/web-ui/build/static/smali-DUPqcHaD.js +1 -0
  395. package/web-ui/build/static/smalltalk-BZWXwh4-.js +1 -0
  396. package/web-ui/build/static/smalltalk-Jd4VA-e4.js +1 -0
  397. package/web-ui/build/static/smarty-2BmLPFNh.js +1 -0
  398. package/web-ui/build/static/sml-BC5HDEBf.js +1 -0
  399. package/web-ui/build/static/sml-BrJo7y64.js +1 -0
  400. package/web-ui/build/static/solidity-muZ3xQn0.js +1 -0
  401. package/web-ui/build/static/solution-file-CF9Xt6f6.js +1 -0
  402. package/web-ui/build/static/soy-DZg8DGEU.js +1 -0
  403. package/web-ui/build/static/sparql-kmkyqBAK.js +1 -0
  404. package/web-ui/build/static/splunk-spl-CmBLwT62.js +1 -0
  405. package/web-ui/build/static/sqf-Ct-q_HqH.js +1 -0
  406. package/web-ui/build/static/sqf-DSuUvyV6.js +1 -0
  407. package/web-ui/build/static/sql-BKhJK7dD.js +1 -0
  408. package/web-ui/build/static/sql-MRpfxEIR.js +1 -0
  409. package/web-ui/build/static/sql_more-By_l7rJw.js +1 -0
  410. package/web-ui/build/static/squirrel-Oyf4apfe.js +1 -0
  411. package/web-ui/build/static/stan-CYPvm7ay.js +1 -0
  412. package/web-ui/build/static/stan-OSfpjfxd.js +1 -0
  413. package/web-ui/build/static/stata-BN_7-HVj.js +1 -0
  414. package/web-ui/build/static/step21-B0MUaGQd.js +1 -0
  415. package/web-ui/build/static/stylus-B2zpewvs.js +1 -0
  416. package/web-ui/build/static/stylus-CiP04Uso.js +1 -0
  417. package/web-ui/build/static/subunit-Ccz6OcJn.js +1 -0
  418. package/web-ui/build/static/swift-DWAzs8_N.js +1 -0
  419. package/web-ui/build/static/swift-ssBR_Hx9.js +1 -0
  420. package/web-ui/build/static/systemd-CT9j1seU.js +1 -0
  421. package/web-ui/build/static/t4-cs-B81S0qkn.js +1 -0
  422. package/web-ui/build/static/t4-templating-CR8sHwkP.js +1 -0
  423. package/web-ui/build/static/t4-vb-AK-9z7xL.js +1 -0
  424. package/web-ui/build/static/taggerscript-BWTFecfl.js +1 -0
  425. package/web-ui/build/static/tap-BuWdU6cR.js +1 -0
  426. package/web-ui/build/static/tap-CvD65fMN.js +1 -0
  427. package/web-ui/build/static/tcl-CWTwAImW.js +1 -0
  428. package/web-ui/build/static/tcl-DxPPqU89.js +1 -0
  429. package/web-ui/build/static/textile-Bb8aIOgT.js +1 -0
  430. package/web-ui/build/static/thrift-BSdmFMYv.js +1 -0
  431. package/web-ui/build/static/toml-CYmQZs0L.js +1 -0
  432. package/web-ui/build/static/tp-Bt1wA2RW.js +1 -0
  433. package/web-ui/build/static/tremor-EDFsRn35.js +1 -0
  434. package/web-ui/build/static/tsx-CRpZ39XI.js +1 -0
  435. package/web-ui/build/static/tt2-C0lRkX9G.js +1 -0
  436. package/web-ui/build/static/turtle-i57e7COQ.js +1 -0
  437. package/web-ui/build/static/twig-DLmpdej0.js +1 -0
  438. package/web-ui/build/static/twig-DwotmZ4d.js +1 -0
  439. package/web-ui/build/static/typescript-C02UFCEu.js +1 -0
  440. package/web-ui/build/static/typescript-Dv4852yn.js +1 -0
  441. package/web-ui/build/static/typoscript-DsiStA8T.js +1 -0
  442. package/web-ui/build/static/unrealscript-DREvLy9b.js +1 -0
  443. package/web-ui/build/static/uorazor-DjjRGSlO.js +1 -0
  444. package/web-ui/build/static/uri-DNx0Ltr1.js +1 -0
  445. package/web-ui/build/static/v-BtcT9t45.js +1 -0
  446. package/web-ui/build/static/vala-CtrGtWLL.js +1 -0
  447. package/web-ui/build/static/vala-DGVJkbdQ.js +1 -0
  448. package/web-ui/build/static/vbnet-9N5EIy45.js +1 -0
  449. package/web-ui/build/static/vbnet-C8V-5wZc.js +1 -0
  450. package/web-ui/build/static/vbscript-C5ZX035F.js +1 -0
  451. package/web-ui/build/static/vbscript-html-Dk-JOSq9.js +1 -0
  452. package/web-ui/build/static/velocity-CMJONQlV.js +1 -0
  453. package/web-ui/build/static/verilog-B448hVUF.js +1 -0
  454. package/web-ui/build/static/verilog-D9rg9wGb.js +1 -0
  455. package/web-ui/build/static/vhdl-B0K99MAb.js +1 -0
  456. package/web-ui/build/static/vhdl-BLJZCy5e.js +1 -0
  457. package/web-ui/build/static/vim-CYLY4wFr.js +1 -0
  458. package/web-ui/build/static/vim-DE6BqLa5.js +1 -0
  459. package/web-ui/build/static/visual-basic-BwcdH-Kn.js +1 -0
  460. package/web-ui/build/static/warpscript-BbfcoHYW.js +1 -0
  461. package/web-ui/build/static/wasm-DHUeRG-u.js +1 -0
  462. package/web-ui/build/static/web-idl-BE2wsaTW.js +1 -0
  463. package/web-ui/build/static/wiki-D-OoB7Gs.js +1 -0
  464. package/web-ui/build/static/wolfram-D-AbA_lC.js +1 -0
  465. package/web-ui/build/static/wren-M0B5FCO6.js +1 -0
  466. package/web-ui/build/static/x86asm-Gg-JtiBh.js +1 -0
  467. package/web-ui/build/static/xeora-BeNNN_-l.js +1 -0
  468. package/web-ui/build/static/xl-C1jOa_4Q.js +1 -0
  469. package/web-ui/build/static/xml-doc-BwW35pek.js +1 -0
  470. package/web-ui/build/static/xml-zQuyG7Gq.js +1 -0
  471. package/web-ui/build/static/xojo-Bf6Y1tsn.js +1 -0
  472. package/web-ui/build/static/xquery-5ZEPqG2y.js +1 -0
  473. package/web-ui/build/static/xquery-OpQT69RV.js +1 -0
  474. package/web-ui/build/static/yaml-CWnr1ERL.js +1 -0
  475. package/web-ui/build/static/yaml-D9QDmLde.js +1 -0
  476. package/web-ui/build/static/yang-DSZmLri0.js +1 -0
  477. package/web-ui/build/static/zephir-C5UVIt-7.js +1 -0
  478. package/web-ui/build/static/zig-B1yDYj97.js +1 -0
  479. package/web-ui/build/static/1c-BU43ZrVw.js +0 -1
  480. package/web-ui/build/static/abap-AoL-lRFD.js +0 -1
  481. package/web-ui/build/static/abnf-96OFWMCD.js +0 -1
  482. package/web-ui/build/static/abnf-C41Cofd6.js +0 -1
  483. package/web-ui/build/static/accesslog-BcnAo7ES.js +0 -1
  484. package/web-ui/build/static/actionscript-BFOz5mA2.js +0 -1
  485. package/web-ui/build/static/actionscript-DJGQt8u5.js +0 -1
  486. package/web-ui/build/static/ada-CwKeODqT.js +0 -1
  487. package/web-ui/build/static/ada-DchU8VGZ.js +0 -1
  488. package/web-ui/build/static/agda-BiNn9WvW.js +0 -1
  489. package/web-ui/build/static/al-BV88nGgg.js +0 -1
  490. package/web-ui/build/static/angelscript-COMetbQf.js +0 -1
  491. package/web-ui/build/static/antlr4-DcxHPzCP.js +0 -1
  492. package/web-ui/build/static/apache-DBeh3rw8.js +0 -1
  493. package/web-ui/build/static/apacheconf-CMIBfQ9p.js +0 -1
  494. package/web-ui/build/static/apex-Cs5QQM6z.js +0 -1
  495. package/web-ui/build/static/apl-Dx-K9gOV.js +0 -1
  496. package/web-ui/build/static/applescript--9cY-_M0.js +0 -1
  497. package/web-ui/build/static/applescript-BcsYpX4C.js +0 -1
  498. package/web-ui/build/static/aql-B6_wZJ19.js +0 -1
  499. package/web-ui/build/static/arcade-ML5yo01k.js +0 -1
  500. package/web-ui/build/static/arduino-CXGPdWdX.js +0 -1
  501. package/web-ui/build/static/arduino-Dg8nk7Ia.js +0 -1
  502. package/web-ui/build/static/arff-gVSLqgST.js +0 -1
  503. package/web-ui/build/static/armasm-DAsE4rEm.js +0 -1
  504. package/web-ui/build/static/asciidoc-C5znngFU.js +0 -1
  505. package/web-ui/build/static/asciidoc-DYALRNYZ.js +0 -1
  506. package/web-ui/build/static/asm6502-DDgAH1tv.js +0 -1
  507. package/web-ui/build/static/asmatmel-DOphTD2l.js +0 -1
  508. package/web-ui/build/static/aspectj-CulZkr51.js +0 -1
  509. package/web-ui/build/static/aspnet-CNX6-Mkw.js +0 -1
  510. package/web-ui/build/static/autohotkey-D0vVKqB7.js +0 -1
  511. package/web-ui/build/static/autohotkey-DDYXV6Yq.js +0 -1
  512. package/web-ui/build/static/autoit-CxUJueRz.js +0 -1
  513. package/web-ui/build/static/autoit-D9JFllVP.js +0 -1
  514. package/web-ui/build/static/avisynth-BenZbKzO.js +0 -1
  515. package/web-ui/build/static/avrasm-uYahqQ8h.js +0 -1
  516. package/web-ui/build/static/avro-idl-CfbM7gLn.js +0 -1
  517. package/web-ui/build/static/awk-Ca723U04.js +0 -1
  518. package/web-ui/build/static/axapta-Bd89lJnD.js +0 -1
  519. package/web-ui/build/static/bash-9j3v2pHC.js +0 -1
  520. package/web-ui/build/static/bash-D3FWVCYG.js +0 -1
  521. package/web-ui/build/static/basic-DdNa7MnE.js +0 -1
  522. package/web-ui/build/static/basic-E4QxjXCY.js +0 -1
  523. package/web-ui/build/static/batch-CfCADUvD.js +0 -1
  524. package/web-ui/build/static/bbcode-WshNX5WN.js +0 -1
  525. package/web-ui/build/static/bicep-D8FjRewr.js +0 -1
  526. package/web-ui/build/static/birb-88EdZvI2.js +0 -1
  527. package/web-ui/build/static/bison-D_FuD8Pc.js +0 -1
  528. package/web-ui/build/static/bnf-CbP5W98L.js +0 -1
  529. package/web-ui/build/static/bnf-Cml6OuCd.js +0 -1
  530. package/web-ui/build/static/brainfuck-BAX8RtaB.js +0 -1
  531. package/web-ui/build/static/brainfuck-C6aQP1EH.js +0 -1
  532. package/web-ui/build/static/brightscript-CQvzUDkK.js +0 -1
  533. package/web-ui/build/static/bro-D1TUGEOB.js +0 -1
  534. package/web-ui/build/static/bsl-Cz666_jX.js +0 -1
  535. package/web-ui/build/static/c-Br3hSof9.js +0 -1
  536. package/web-ui/build/static/c-CnhEGx2K.js +0 -1
  537. package/web-ui/build/static/c-like-8ph3qbGh.js +0 -1
  538. package/web-ui/build/static/cal-IgRtvJyR.js +0 -1
  539. package/web-ui/build/static/capnproto-Brw1rI-t.js +0 -1
  540. package/web-ui/build/static/ceylon-DZhLRlUy.js +0 -1
  541. package/web-ui/build/static/cfscript-DQGyJKwK.js +0 -1
  542. package/web-ui/build/static/chaiscript-C4OGz_un.js +0 -1
  543. package/web-ui/build/static/cil-DicjcGqk.js +0 -1
  544. package/web-ui/build/static/clean-DALZvuMV.js +0 -1
  545. package/web-ui/build/static/clojure-DPpZu94_.js +0 -1
  546. package/web-ui/build/static/clojure-Wr_wuwna.js +0 -1
  547. package/web-ui/build/static/clojure-repl-BDrvmjMJ.js +0 -1
  548. package/web-ui/build/static/cmake-B14DY3nI.js +0 -1
  549. package/web-ui/build/static/cmake-SYFQC59q.js +0 -1
  550. package/web-ui/build/static/cobol-abUH09OX.js +0 -1
  551. package/web-ui/build/static/coffeescript-Bky52ZtC.js +0 -1
  552. package/web-ui/build/static/coffeescript-zCTO0lvd.js +0 -1
  553. package/web-ui/build/static/concurnas-CU2vlX2t.js +0 -1
  554. package/web-ui/build/static/coq-CtQeoOxK.js +0 -1
  555. package/web-ui/build/static/coq-U_ekdUOC.js +0 -1
  556. package/web-ui/build/static/cos-I1RAZGcd.js +0 -1
  557. package/web-ui/build/static/cpp-CBgfByvO.js +0 -1
  558. package/web-ui/build/static/cpp-DOgzX9Fr.js +0 -1
  559. package/web-ui/build/static/crmsh-C564oTI3.js +0 -1
  560. package/web-ui/build/static/crystal-BAkf0Lyu.js +0 -1
  561. package/web-ui/build/static/crystal-S6p_ZP8F.js +0 -1
  562. package/web-ui/build/static/csharp-4Eckg4RD.js +0 -1
  563. package/web-ui/build/static/csharp-BbncLZi-.js +0 -1
  564. package/web-ui/build/static/cshtml-3CAfDEZr.js +0 -1
  565. package/web-ui/build/static/csp-B1uCSPSv.js +0 -1
  566. package/web-ui/build/static/csp-DMRqPioi.js +0 -1
  567. package/web-ui/build/static/css-BGUkWLMn.js +0 -1
  568. package/web-ui/build/static/css-extras-BvWk25Qq.js +0 -1
  569. package/web-ui/build/static/csv-B4b2Q5_f.js +0 -1
  570. package/web-ui/build/static/cypher-poGwJkDD.js +0 -1
  571. package/web-ui/build/static/d-DMSHgHAy.js +0 -1
  572. package/web-ui/build/static/d-cV9sHfbC.js +0 -1
  573. package/web-ui/build/static/dart-CAw4osRs.js +0 -1
  574. package/web-ui/build/static/dart-DNd3kAhv.js +0 -1
  575. package/web-ui/build/static/dataweave-DrBaourx.js +0 -1
  576. package/web-ui/build/static/dax-BrZwLORG.js +0 -1
  577. package/web-ui/build/static/delphi-Ct4aE4aH.js +0 -1
  578. package/web-ui/build/static/dhall-BYoLaIQB.js +0 -1
  579. package/web-ui/build/static/diff-CnmWuCgJ.js +0 -1
  580. package/web-ui/build/static/diff-zrcvdd0a.js +0 -1
  581. package/web-ui/build/static/django-C-oZ7YKd.js +0 -1
  582. package/web-ui/build/static/django-JpRfMOZ2.js +0 -1
  583. package/web-ui/build/static/dns-DsSuoCT5.js +0 -1
  584. package/web-ui/build/static/dns-zone-file-DGrpD-sD.js +0 -1
  585. package/web-ui/build/static/docker-BIfKAgOO.js +0 -1
  586. package/web-ui/build/static/dockerfile-pDKCRsua.js +0 -1
  587. package/web-ui/build/static/dos-tuNLH04p.js +0 -1
  588. package/web-ui/build/static/dot-ByjtD8Iw.js +0 -1
  589. package/web-ui/build/static/dsconfig-BCjL4yBF.js +0 -1
  590. package/web-ui/build/static/dts-DOYzn60p.js +0 -1
  591. package/web-ui/build/static/dust-CPf1De2a.js +0 -1
  592. package/web-ui/build/static/ebnf-BqPpYQsv.js +0 -1
  593. package/web-ui/build/static/ebnf-DtowFnom.js +0 -1
  594. package/web-ui/build/static/editorconfig-ByGC7lfc.js +0 -1
  595. package/web-ui/build/static/eiffel-ql_YAW83.js +0 -1
  596. package/web-ui/build/static/ejs-CEIk0b1t.js +0 -1
  597. package/web-ui/build/static/elixir-5cZo1rKW.js +0 -1
  598. package/web-ui/build/static/elixir-kLu8Siuw.js +0 -1
  599. package/web-ui/build/static/elm-CFEXRK2g.js +0 -1
  600. package/web-ui/build/static/elm-O7LEJa6N.js +0 -1
  601. package/web-ui/build/static/erb-CMspOWfC.js +0 -1
  602. package/web-ui/build/static/erb-DmVFtWWQ.js +0 -1
  603. package/web-ui/build/static/erlang-CNS4Vy5W.js +0 -1
  604. package/web-ui/build/static/erlang-DS3YMI6f.js +0 -1
  605. package/web-ui/build/static/erlang-repl-COpdqM-k.js +0 -1
  606. package/web-ui/build/static/etlua-BaywXnJ4.js +0 -1
  607. package/web-ui/build/static/excel-DbD_vagJ.js +0 -1
  608. package/web-ui/build/static/excel-formula-DvX9phaD.js +0 -1
  609. package/web-ui/build/static/factor-Dmyoo9jr.js +0 -1
  610. package/web-ui/build/static/false-CFFZ5oF1.js +0 -1
  611. package/web-ui/build/static/firestore-security-rules-6gF61FL7.js +0 -1
  612. package/web-ui/build/static/fix-DqD23dpu.js +0 -1
  613. package/web-ui/build/static/flix-ByG_SwOl.js +0 -1
  614. package/web-ui/build/static/flow-_rIgWtyE.js +0 -1
  615. package/web-ui/build/static/fortran-BxMeEQFu.js +0 -1
  616. package/web-ui/build/static/fortran-JYN66CoM.js +0 -1
  617. package/web-ui/build/static/fsharp-DUIudRus.js +0 -1
  618. package/web-ui/build/static/fsharp-dwrir66Q.js +0 -1
  619. package/web-ui/build/static/ftl-DE2kycMu.js +0 -1
  620. package/web-ui/build/static/gams-BdaFBkUq.js +0 -1
  621. package/web-ui/build/static/gap-DG6uTKtq.js +0 -1
  622. package/web-ui/build/static/gauss-CdZRpgQN.js +0 -1
  623. package/web-ui/build/static/gcode-BCwsx3FN.js +0 -1
  624. package/web-ui/build/static/gcode-DqOLuGTU.js +0 -1
  625. package/web-ui/build/static/gdscript-CQsGMP79.js +0 -1
  626. package/web-ui/build/static/gedcom-DjiaJO4h.js +0 -1
  627. package/web-ui/build/static/gherkin-DKQrzpoe.js +0 -1
  628. package/web-ui/build/static/gherkin-MN1tGQ_p.js +0 -1
  629. package/web-ui/build/static/git-BV33OtmB.js +0 -1
  630. package/web-ui/build/static/glsl-BrKcS_A_.js +0 -1
  631. package/web-ui/build/static/glsl-zNpiyDT0.js +0 -1
  632. package/web-ui/build/static/gml-B42QqZwd.js +0 -1
  633. package/web-ui/build/static/gml-wLSDMYgV.js +0 -1
  634. package/web-ui/build/static/gn-Bh6e2j59.js +0 -1
  635. package/web-ui/build/static/go-BcV51Gep.js +0 -1
  636. package/web-ui/build/static/go-DoEsEvyO.js +0 -1
  637. package/web-ui/build/static/go-module-CPiCVk-t.js +0 -1
  638. package/web-ui/build/static/golo-Dm6Qh0rv.js +0 -1
  639. package/web-ui/build/static/gradle-Bq5SCTs-.js +0 -1
  640. package/web-ui/build/static/graphql-BMKmdCzB.js +0 -1
  641. package/web-ui/build/static/groovy-BUPY3Q3Q.js +0 -1
  642. package/web-ui/build/static/groovy-DJ1fIXgB.js +0 -1
  643. package/web-ui/build/static/haml-CzbX1nD7.js +0 -1
  644. package/web-ui/build/static/haml-vci5GS4H.js +0 -1
  645. package/web-ui/build/static/handlebars-DDKzQGIO.js +0 -1
  646. package/web-ui/build/static/handlebars-DUBBysQz.js +0 -1
  647. package/web-ui/build/static/haskell-Becgtpfw.js +0 -1
  648. package/web-ui/build/static/haskell-DzmxROXt.js +0 -1
  649. package/web-ui/build/static/haxe-Dn6vv5Ho.js +0 -1
  650. package/web-ui/build/static/haxe-N5We1g-1.js +0 -1
  651. package/web-ui/build/static/hcl-aU8RXzqH.js +0 -1
  652. package/web-ui/build/static/hlsl-DnxH7wd4.js +0 -1
  653. package/web-ui/build/static/hoon-DxQk5J8Y.js +0 -1
  654. package/web-ui/build/static/hpkp-CXTY4okp.js +0 -1
  655. package/web-ui/build/static/hsp-ChPgc1iH.js +0 -1
  656. package/web-ui/build/static/hsts-DhqErzSD.js +0 -1
  657. package/web-ui/build/static/htmlbars-C1RX3QEK.js +0 -1
  658. package/web-ui/build/static/http-CdQuhyze.js +0 -1
  659. package/web-ui/build/static/http-DIfbUO-8.js +0 -1
  660. package/web-ui/build/static/hy-CtuvNSVL.js +0 -1
  661. package/web-ui/build/static/ichigojam-Dhb1oxgM.js +0 -1
  662. package/web-ui/build/static/icon-18yeuSqY.js +0 -1
  663. package/web-ui/build/static/icu-message-format-BtING76I.js +0 -1
  664. package/web-ui/build/static/idris-BpXksRPQ.js +0 -1
  665. package/web-ui/build/static/iecst-DxsuKh-u.js +0 -1
  666. package/web-ui/build/static/ignore-LFUqEXDc.js +0 -1
  667. package/web-ui/build/static/index-CNhxse_k.js +0 -831
  668. package/web-ui/build/static/index-DTSROa9m.js +0 -13
  669. package/web-ui/build/static/index-Dn1rYKSW.js +0 -1
  670. package/web-ui/build/static/inform7-CMWs3Icc.js +0 -1
  671. package/web-ui/build/static/inform7-IKJ-i25v.js +0 -1
  672. package/web-ui/build/static/ini-BKx9RlYa.js +0 -1
  673. package/web-ui/build/static/ini-OuIKSh9I.js +0 -1
  674. package/web-ui/build/static/io-DsdrD9ck.js +0 -1
  675. package/web-ui/build/static/irpf90-D8RwjO-X.js +0 -1
  676. package/web-ui/build/static/isbl-B19anZ4P.js +0 -1
  677. package/web-ui/build/static/j-cS0ZhHxg.js +0 -1
  678. package/web-ui/build/static/java-BArfyDLP.js +0 -1
  679. package/web-ui/build/static/java-CVssvoho.js +0 -1
  680. package/web-ui/build/static/javadoc-BbYTABTG.js +0 -1
  681. package/web-ui/build/static/javadoclike-reViVmsX.js +0 -1
  682. package/web-ui/build/static/javascript-C8BGzZvz.js +0 -1
  683. package/web-ui/build/static/javastacktrace-DgQT1sKr.js +0 -1
  684. package/web-ui/build/static/jboss-cli-CXzftW3Q.js +0 -1
  685. package/web-ui/build/static/jexl-DfYeVq7m.js +0 -1
  686. package/web-ui/build/static/jolie-BR1u31Sa.js +0 -1
  687. package/web-ui/build/static/jq-C1FEtJ5S.js +0 -1
  688. package/web-ui/build/static/js-extras-BRujBZgr.js +0 -1
  689. package/web-ui/build/static/js-templates-CgsCAf95.js +0 -1
  690. package/web-ui/build/static/jsdoc-BAN_COOq.js +0 -1
  691. package/web-ui/build/static/json-CO83p783.js +0 -1
  692. package/web-ui/build/static/json-D_vV4rAm.js +0 -1
  693. package/web-ui/build/static/json5-DBDJJEbn.js +0 -1
  694. package/web-ui/build/static/jsonp-b6P9-KKS.js +0 -1
  695. package/web-ui/build/static/jsstacktrace-BgPNj9Kj.js +0 -1
  696. package/web-ui/build/static/jsx-Co4GcrAm.js +0 -1
  697. package/web-ui/build/static/julia-B9omll60.js +0 -1
  698. package/web-ui/build/static/julia-BHDCyM-i.js +0 -1
  699. package/web-ui/build/static/julia-repl-C7Eb4bgJ.js +0 -1
  700. package/web-ui/build/static/keepalived-Dzp76shL.js +0 -1
  701. package/web-ui/build/static/keyman-DNvXbNCF.js +0 -1
  702. package/web-ui/build/static/kotlin-eb0_7isz.js +0 -1
  703. package/web-ui/build/static/kotlin-i_bUq7c5.js +0 -1
  704. package/web-ui/build/static/kumir-bzILNJNt.js +0 -1
  705. package/web-ui/build/static/kusto-DkykNNg-.js +0 -1
  706. package/web-ui/build/static/lasso-Cqgl3L5V.js +0 -1
  707. package/web-ui/build/static/latex-BK2d4H00.js +0 -1
  708. package/web-ui/build/static/latex-CCY9RWja.js +0 -1
  709. package/web-ui/build/static/latte--1mLyI-m.js +0 -1
  710. package/web-ui/build/static/ldif-CKpl0obl.js +0 -1
  711. package/web-ui/build/static/leaf-Cylh6k2i.js +0 -1
  712. package/web-ui/build/static/less-BF2V9-r1.js +0 -1
  713. package/web-ui/build/static/less-DZnIlP4J.js +0 -1
  714. package/web-ui/build/static/lilypond-Q-51NK9a.js +0 -1
  715. package/web-ui/build/static/liquid-BtFjuu34.js +0 -1
  716. package/web-ui/build/static/lisp-BTSZLEXC.js +0 -1
  717. package/web-ui/build/static/lisp-mBPUREKp.js +0 -1
  718. package/web-ui/build/static/livecodeserver-X2MkrtIh.js +0 -1
  719. package/web-ui/build/static/livescript-BCGPODju.js +0 -1
  720. package/web-ui/build/static/livescript-CSRilU12.js +0 -1
  721. package/web-ui/build/static/llvm-BrA-OPc0.js +0 -1
  722. package/web-ui/build/static/llvm-CX47EYi9.js +0 -1
  723. package/web-ui/build/static/log-UmKn5LCr.js +0 -1
  724. package/web-ui/build/static/lolcode-CzokJ_7T.js +0 -1
  725. package/web-ui/build/static/lsl-zawAQf0T.js +0 -1
  726. package/web-ui/build/static/lua-AzLMAnp_.js +0 -1
  727. package/web-ui/build/static/lua-BCYatl_B.js +0 -1
  728. package/web-ui/build/static/magma-Vk_HAjNd.js +0 -1
  729. package/web-ui/build/static/makefile-CBhQfnCA.js +0 -1
  730. package/web-ui/build/static/makefile-CqmpfcQv.js +0 -1
  731. package/web-ui/build/static/markdown-DEeiASnV.js +0 -1
  732. package/web-ui/build/static/markdown-MMAcC-4P.js +0 -1
  733. package/web-ui/build/static/markup-templating-BIcrJ22L.js +0 -1
  734. package/web-ui/build/static/mathematica-B0zDtahh.js +0 -1
  735. package/web-ui/build/static/matlab-BfcWtjh0.js +0 -1
  736. package/web-ui/build/static/matlab-CzvSbe8w.js +0 -1
  737. package/web-ui/build/static/maxima-D_OOwDHQ.js +0 -1
  738. package/web-ui/build/static/maxscript-B0UQqykR.js +0 -1
  739. package/web-ui/build/static/mel-5BfrTNON.js +0 -1
  740. package/web-ui/build/static/mel-DVL_6rnq.js +0 -1
  741. package/web-ui/build/static/mercury-CaNr8hHX.js +0 -1
  742. package/web-ui/build/static/mermaid-CqSXXPCa.js +0 -1
  743. package/web-ui/build/static/mipsasm-KebNef0S.js +0 -1
  744. package/web-ui/build/static/mizar-87NmyJPg.js +0 -1
  745. package/web-ui/build/static/mizar-Bh-iPnnJ.js +0 -1
  746. package/web-ui/build/static/mojolicious-RdAGGOBG.js +0 -1
  747. package/web-ui/build/static/mongodb-D-3TyeHe.js +0 -1
  748. package/web-ui/build/static/monkey-CBl0NH_G.js +0 -1
  749. package/web-ui/build/static/monkey-_lVf4ZFO.js +0 -1
  750. package/web-ui/build/static/moonscript-BWoLiJse.js +0 -1
  751. package/web-ui/build/static/moonscript-DvK6XosR.js +0 -1
  752. package/web-ui/build/static/n1ql-BHaHIJwU.js +0 -1
  753. package/web-ui/build/static/n1ql-DHG6la1y.js +0 -1
  754. package/web-ui/build/static/n4js-BnEnODnl.js +0 -1
  755. package/web-ui/build/static/nand2tetris-hdl-Bx_Sdku7.js +0 -1
  756. package/web-ui/build/static/naniscript-C9LlE8Sm.js +0 -1
  757. package/web-ui/build/static/nasm-C2RqJeMj.js +0 -1
  758. package/web-ui/build/static/neon-Htd-1WHg.js +0 -1
  759. package/web-ui/build/static/nevod-xEEcHJ6H.js +0 -1
  760. package/web-ui/build/static/nginx-DHZ2TmrY.js +0 -1
  761. package/web-ui/build/static/nginx-fVaFLr6L.js +0 -1
  762. package/web-ui/build/static/nim-C0kLUnOo.js +0 -1
  763. package/web-ui/build/static/nim-D2t9WTJG.js +0 -1
  764. package/web-ui/build/static/nix-BgS9-fG3.js +0 -1
  765. package/web-ui/build/static/nix-CJ-ZtUjs.js +0 -1
  766. package/web-ui/build/static/node-repl-BqDf1Wqa.js +0 -1
  767. package/web-ui/build/static/nsis-BcbMIXXt.js +0 -1
  768. package/web-ui/build/static/nsis-Clmq9ubM.js +0 -1
  769. package/web-ui/build/static/objectivec-CQCJHkDn.js +0 -1
  770. package/web-ui/build/static/objectivec-l-L7sw2F.js +0 -1
  771. package/web-ui/build/static/ocaml-CLhfFI9J.js +0 -1
  772. package/web-ui/build/static/ocaml-CVZbp5Q6.js +0 -1
  773. package/web-ui/build/static/opencl-FaoxED_5.js +0 -1
  774. package/web-ui/build/static/openqasm-DowdIaHJ.js +0 -1
  775. package/web-ui/build/static/openscad-CuV43J87.js +0 -1
  776. package/web-ui/build/static/oxygene-DFl_S4Mo.js +0 -1
  777. package/web-ui/build/static/oz-CrZEGs03.js +0 -1
  778. package/web-ui/build/static/parigp-CgI9msS-.js +0 -1
  779. package/web-ui/build/static/parser-nTYAMRRR.js +0 -1
  780. package/web-ui/build/static/parser3-B-s7V2NG.js +0 -1
  781. package/web-ui/build/static/pascal-DxyFzkBI.js +0 -1
  782. package/web-ui/build/static/pascaligo-pTESG7CK.js +0 -1
  783. package/web-ui/build/static/pcaxis-B2X2sY8s.js +0 -1
  784. package/web-ui/build/static/peoplecode-D3dixWRI.js +0 -1
  785. package/web-ui/build/static/perl-DzF9wk2I.js +0 -1
  786. package/web-ui/build/static/perl-r6iIkk3J.js +0 -1
  787. package/web-ui/build/static/pf-BHt68zPf.js +0 -1
  788. package/web-ui/build/static/pgsql-DrWBN0mn.js +0 -1
  789. package/web-ui/build/static/php-B9P0S_Yv.js +0 -1
  790. package/web-ui/build/static/php-Dq2u1evi.js +0 -1
  791. package/web-ui/build/static/php-extras-GhxZmNQn.js +0 -1
  792. package/web-ui/build/static/php-template-wduD2F6a.js +0 -1
  793. package/web-ui/build/static/phpdoc-S6AgvZj9.js +0 -1
  794. package/web-ui/build/static/plaintext-CkefHWd1.js +0 -1
  795. package/web-ui/build/static/plsql-ChhnkKyq.js +0 -1
  796. package/web-ui/build/static/pony-Ci4oRl2L.js +0 -1
  797. package/web-ui/build/static/powerquery-htr17QYt.js +0 -1
  798. package/web-ui/build/static/powershell-BjdbtsWh.js +0 -1
  799. package/web-ui/build/static/powershell-CfTH6v8E.js +0 -1
  800. package/web-ui/build/static/processing-CyhVXfth.js +0 -1
  801. package/web-ui/build/static/processing-DRd0DN-1.js +0 -1
  802. package/web-ui/build/static/profile-CzLbiRVw.js +0 -1
  803. package/web-ui/build/static/prolog-C9Bd3AiH.js +0 -1
  804. package/web-ui/build/static/prolog-SNjuNM01.js +0 -1
  805. package/web-ui/build/static/promql-w_4MRJZ5.js +0 -1
  806. package/web-ui/build/static/properties-Bu21gd8n.js +0 -1
  807. package/web-ui/build/static/properties-CxUTIgqR.js +0 -1
  808. package/web-ui/build/static/protobuf-Dw_RQ_nq.js +0 -1
  809. package/web-ui/build/static/protobuf-I-uLxCyW.js +0 -1
  810. package/web-ui/build/static/psl-60y7CGad.js +0 -1
  811. package/web-ui/build/static/pug-6TwxG97U.js +0 -1
  812. package/web-ui/build/static/puppet-DsB7SV7C.js +0 -1
  813. package/web-ui/build/static/puppet-xYMQTgSK.js +0 -1
  814. package/web-ui/build/static/pure-B-46644a.js +0 -1
  815. package/web-ui/build/static/purebasic-C2jTmxCp.js +0 -1
  816. package/web-ui/build/static/purebasic-DB1qz_79.js +0 -1
  817. package/web-ui/build/static/purescript-C7X1Jhpv.js +0 -1
  818. package/web-ui/build/static/python-DdZkdREO.js +0 -1
  819. package/web-ui/build/static/python-g-3ev0jp.js +0 -1
  820. package/web-ui/build/static/python-repl-Ba3YgabT.js +0 -1
  821. package/web-ui/build/static/q-4Xd1x0tI.js +0 -1
  822. package/web-ui/build/static/q-CFLewr3P.js +0 -1
  823. package/web-ui/build/static/qml-D1wL69-t.js +0 -1
  824. package/web-ui/build/static/qml-o0TpTomi.js +0 -1
  825. package/web-ui/build/static/qore-Bu32uyvk.js +0 -1
  826. package/web-ui/build/static/qsharp-BlenDeSE.js +0 -1
  827. package/web-ui/build/static/r-x-9dl4d1.js +0 -1
  828. package/web-ui/build/static/r-xEFM_Z9P.js +0 -1
  829. package/web-ui/build/static/racket-B6M0zyVn.js +0 -1
  830. package/web-ui/build/static/reason-B_YmUFeb.js +0 -1
  831. package/web-ui/build/static/reasonml-DqV3O6jw.js +0 -1
  832. package/web-ui/build/static/regex-RpvIR1UC.js +0 -1
  833. package/web-ui/build/static/rego-DLBfnzDz.js +0 -1
  834. package/web-ui/build/static/renpy-BPyvMyYV.js +0 -1
  835. package/web-ui/build/static/rest-BOvObf4b.js +0 -1
  836. package/web-ui/build/static/rib-CfbyRlOV.js +0 -1
  837. package/web-ui/build/static/rip-BmGgp-ky.js +0 -1
  838. package/web-ui/build/static/roboconf-BjlIhdyT.js +0 -1
  839. package/web-ui/build/static/roboconf-gCvzQFG_.js +0 -1
  840. package/web-ui/build/static/robotframework-DMIYiZ9n.js +0 -1
  841. package/web-ui/build/static/routeros-dIA3JsYo.js +0 -1
  842. package/web-ui/build/static/rsl-C-IHLDiI.js +0 -1
  843. package/web-ui/build/static/ruby-2UsEEPvi.js +0 -1
  844. package/web-ui/build/static/ruby-DQuqRBbF.js +0 -1
  845. package/web-ui/build/static/ruleslanguage-DIX-ZNdD.js +0 -1
  846. package/web-ui/build/static/rust-C3AZB4MD.js +0 -1
  847. package/web-ui/build/static/rust-s-uSy2xK.js +0 -1
  848. package/web-ui/build/static/sas-2ySpLG9-.js +0 -1
  849. package/web-ui/build/static/sas-BZjFIK6U.js +0 -1
  850. package/web-ui/build/static/sass-DmfN0RXk.js +0 -1
  851. package/web-ui/build/static/scala-BWG4D45T.js +0 -1
  852. package/web-ui/build/static/scala-DORCOJGF.js +0 -1
  853. package/web-ui/build/static/scheme-Dhf3OcIw.js +0 -1
  854. package/web-ui/build/static/scheme-RkPOVGvt.js +0 -1
  855. package/web-ui/build/static/scilab-BPjU1E5p.js +0 -1
  856. package/web-ui/build/static/scss-Cl5xn34j.js +0 -1
  857. package/web-ui/build/static/scss-K2UK4NzM.js +0 -1
  858. package/web-ui/build/static/shell-CnNrPIpO.js +0 -1
  859. package/web-ui/build/static/shell-session-CWzCvkCd.js +0 -1
  860. package/web-ui/build/static/smali-BqUloCDk.js +0 -1
  861. package/web-ui/build/static/smali-D9l7tmuy.js +0 -1
  862. package/web-ui/build/static/smalltalk-Ch8WtZ3x.js +0 -1
  863. package/web-ui/build/static/smalltalk-D33bV6Ux.js +0 -1
  864. package/web-ui/build/static/smarty-DhuA-30v.js +0 -1
  865. package/web-ui/build/static/sml-CcRV_05i.js +0 -1
  866. package/web-ui/build/static/sml-Dxy9VWS5.js +0 -1
  867. package/web-ui/build/static/solidity-B6Q9ss0Q.js +0 -1
  868. package/web-ui/build/static/solution-file-CdD4U58t.js +0 -1
  869. package/web-ui/build/static/soy-DwAwdpNx.js +0 -1
  870. package/web-ui/build/static/sparql-BD7Xi4u4.js +0 -1
  871. package/web-ui/build/static/splunk-spl-DNR8Nqkh.js +0 -1
  872. package/web-ui/build/static/sqf-D_eO1j0l.js +0 -1
  873. package/web-ui/build/static/sqf-RmFM3NP_.js +0 -1
  874. package/web-ui/build/static/sql-BqcZzHxC.js +0 -1
  875. package/web-ui/build/static/sql-C1Og8w4D.js +0 -1
  876. package/web-ui/build/static/sql_more-B8l439k3.js +0 -1
  877. package/web-ui/build/static/squirrel-k8wRFBEU.js +0 -1
  878. package/web-ui/build/static/stan-Cyd1Qc2Z.js +0 -1
  879. package/web-ui/build/static/stan-vaOTiGIw.js +0 -1
  880. package/web-ui/build/static/stata-BvtPM-UC.js +0 -1
  881. package/web-ui/build/static/step21-CcJzkfyX.js +0 -1
  882. package/web-ui/build/static/stylus-BUdFaHOi.js +0 -1
  883. package/web-ui/build/static/stylus-DZUxYm7B.js +0 -1
  884. package/web-ui/build/static/subunit-BLFu1vy1.js +0 -1
  885. package/web-ui/build/static/swift-4C37Wfzo.js +0 -1
  886. package/web-ui/build/static/swift-tpG5dEoC.js +0 -1
  887. package/web-ui/build/static/systemd-CZAHgFou.js +0 -1
  888. package/web-ui/build/static/t4-cs-BzDTdhsq.js +0 -1
  889. package/web-ui/build/static/t4-templating-BnNIhX-m.js +0 -1
  890. package/web-ui/build/static/t4-vb-WH6kXP4O.js +0 -1
  891. package/web-ui/build/static/taggerscript-DPuoT3fc.js +0 -1
  892. package/web-ui/build/static/tap-CRdOSYnA.js +0 -1
  893. package/web-ui/build/static/tap-Cfv7r5Y1.js +0 -1
  894. package/web-ui/build/static/tcl-C57QpMKe.js +0 -1
  895. package/web-ui/build/static/tcl-D_HhrQb7.js +0 -1
  896. package/web-ui/build/static/textile-HiZT-42r.js +0 -1
  897. package/web-ui/build/static/thrift-BIevTRAV.js +0 -1
  898. package/web-ui/build/static/toml-Dzu0VuJT.js +0 -1
  899. package/web-ui/build/static/tp-BcFKGcDv.js +0 -1
  900. package/web-ui/build/static/tremor-ChPj0YkW.js +0 -1
  901. package/web-ui/build/static/tsx-DEgPhspu.js +0 -1
  902. package/web-ui/build/static/tt2-zECU_j-n.js +0 -1
  903. package/web-ui/build/static/turtle-DSxo1JVc.js +0 -1
  904. package/web-ui/build/static/twig-BzzbcVU0.js +0 -1
  905. package/web-ui/build/static/twig-DD8ck-xB.js +0 -1
  906. package/web-ui/build/static/typescript-mfGLA69h.js +0 -1
  907. package/web-ui/build/static/typescript-obXwfhtv.js +0 -1
  908. package/web-ui/build/static/typoscript-DGRFkQ44.js +0 -1
  909. package/web-ui/build/static/unrealscript-C71Cshhh.js +0 -1
  910. package/web-ui/build/static/uorazor--YPn6YI1.js +0 -1
  911. package/web-ui/build/static/uri-DiBB6LAn.js +0 -1
  912. package/web-ui/build/static/v-DD6j4G3R.js +0 -1
  913. package/web-ui/build/static/vala-90B6tBz6.js +0 -1
  914. package/web-ui/build/static/vala-CPgj-_9p.js +0 -1
  915. package/web-ui/build/static/vbnet-Ct4CtLUY.js +0 -1
  916. package/web-ui/build/static/vbnet-Dt71G1FN.js +0 -1
  917. package/web-ui/build/static/vbscript-2A1bKLI8.js +0 -1
  918. package/web-ui/build/static/vbscript-html-BNSfZskj.js +0 -1
  919. package/web-ui/build/static/velocity-Cw07cCrw.js +0 -1
  920. package/web-ui/build/static/verilog-Appxv8wV.js +0 -1
  921. package/web-ui/build/static/verilog-gFSdUnSn.js +0 -1
  922. package/web-ui/build/static/vhdl-326_OrM2.js +0 -1
  923. package/web-ui/build/static/vhdl-BGaNDNIa.js +0 -1
  924. package/web-ui/build/static/vim-D1mEwoEz.js +0 -1
  925. package/web-ui/build/static/vim-lvX3nIwq.js +0 -1
  926. package/web-ui/build/static/visual-basic-C5WWtiVx.js +0 -1
  927. package/web-ui/build/static/warpscript-CF7kIXUC.js +0 -1
  928. package/web-ui/build/static/wasm-BHfGEvXM.js +0 -1
  929. package/web-ui/build/static/web-idl-U4Bu4xZZ.js +0 -1
  930. package/web-ui/build/static/wiki-Cypfsr_n.js +0 -1
  931. package/web-ui/build/static/wolfram-B4afYjEC.js +0 -1
  932. package/web-ui/build/static/wren-CIleRBn0.js +0 -1
  933. package/web-ui/build/static/x86asm-C-79USsG.js +0 -1
  934. package/web-ui/build/static/xeora-CSaM51pY.js +0 -1
  935. package/web-ui/build/static/xl-CuiQZS3B.js +0 -1
  936. package/web-ui/build/static/xml-C6jbRHrj.js +0 -1
  937. package/web-ui/build/static/xml-doc-CV7qp07_.js +0 -1
  938. package/web-ui/build/static/xojo-D4t2uWPH.js +0 -1
  939. package/web-ui/build/static/xquery-DT_Ao6QG.js +0 -1
  940. package/web-ui/build/static/xquery-DnKodhmy.js +0 -1
  941. package/web-ui/build/static/yaml-CLiRAuyI.js +0 -1
  942. package/web-ui/build/static/yaml-aulSfOTJ.js +0 -1
  943. package/web-ui/build/static/yang-C1R60r9w.js +0 -1
  944. package/web-ui/build/static/zephir-D_18ShED.js +0 -1
  945. package/web-ui/build/static/zig-C-01pua6.js +0 -1
@@ -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) {
@@ -1,212 +1,86 @@
1
1
  /**
2
- * Tests for VisionTool vision model selection logic.
3
- *
4
- * The _selectVisionModel method picks the best available vision model
5
- * using a priority keyword list, falling back to agent's current model
6
- * or the first available vision model.
7
- *
8
- * We test the logic directly (same approach as webTool.visionModel.test.js)
9
- * to avoid importing the full VisionTool with its heavy BaseTool + fs dependencies.
2
+ * Tests for VisionTool vision model selection — catalog-driven.
3
+ * Uses recommended_for and tier from the catalog instead of name lists.
10
4
  */
11
5
 
12
6
  import { describe, test, expect } from '@jest/globals';
13
7
 
14
- // Replicate the exact priority list from visionTool.js
15
- const VISION_MODEL_PRIORITY = ['o4-mini', 'kimi', 'gpt-5-mini', 'gpt-5-nano', 'gpt-4.1-mini', 'gpt-4.1', 'o3', 'gpt-5'];
16
-
17
- /**
18
- * Replicate _selectVisionModel + _getVisionModels logic from visionTool.js
19
- */
20
8
  function selectVisionModel(models, context = {}) {
21
9
  const visionModels = (models || []).filter(m => m.supportsVision === true);
10
+ if (visionModels.length === 0) return null;
22
11
 
23
- // 1. Priority keyword search
24
- for (const keyword of VISION_MODEL_PRIORITY) {
25
- const match = visionModels.find(m => m.name.toLowerCase().includes(keyword));
26
- if (match) return match.name;
27
- }
28
-
29
- // 2. Agent's current model if it has vision
30
- const agentModel = context.currentModel;
31
- if (agentModel && visionModels.some(m => m.name === agentModel)) {
32
- return agentModel;
33
- }
12
+ // 1. Model recommended for vision
13
+ const recommended = visionModels.find(m => m.recommended_for?.includes('vision'));
14
+ if (recommended) return recommended.name;
34
15
 
35
- // 3. First available vision model
36
- if (visionModels.length > 0) return visionModels[0].name;
16
+ // 2. Budget-tier vision model
17
+ const budget = visionModels.find(m => m.tier === 'budget');
18
+ if (budget) return budget.name;
37
19
 
38
- return null;
39
- }
20
+ // 3. Agent's current model
21
+ const agentModel = context.currentModel;
22
+ if (agentModel && visionModels.some(m => m.name === agentModel)) return agentModel;
40
23
 
41
- function getVisionModels(models) {
42
- return (models || []).filter(m => m.supportsVision === true);
24
+ // 4. First available
25
+ return visionModels[0].name;
43
26
  }
44
27
 
45
- // Full model catalog simulation
46
28
  const ALL_MODELS = [
47
- { name: 'gpt-5.4', supportsVision: false },
48
- { name: 'gpt-5.4-mini', supportsVision: false },
49
- { name: 'gpt-5-chat', supportsVision: true },
50
- { name: 'gpt-5-mini', supportsVision: true },
51
- { name: 'gpt-5-nano', supportsVision: true },
52
- { name: 'gpt-4.1', supportsVision: true },
53
- { name: 'gpt-4.1-mini', supportsVision: true },
54
- { name: 'gpt-4.1-nano', supportsVision: true },
55
- { name: 'o4-mini', supportsVision: true },
56
- { name: 'o3', supportsVision: true },
57
- { name: 'grok-4', supportsVision: true },
58
- { name: 'grok-4-fast-reasoning', supportsVision: true },
59
- { name: 'Kimi-K2.5', supportsVision: true },
60
- { name: 'DeepSeek-V3.2', supportsVision: false },
61
- { name: 'DeepSeek-R1-0528', supportsVision: false },
62
- { name: 'gpt-5.3-codex', supportsVision: false },
63
- { name: 'Phi-4-reasoning', supportsVision: false },
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' },
64
36
  ];
65
37
 
66
- describe('VisionTool model selection logic', () => {
67
-
68
- // ── Priority keyword matching ────────────────────────────────
69
- describe('priority-based selection', () => {
70
- test('selects o4-mini as top priority', () => {
71
- expect(selectVisionModel(ALL_MODELS)).toBe('o4-mini');
72
- });
73
-
74
- test('selects Kimi-K2.5 when o4-mini unavailable', () => {
75
- const models = ALL_MODELS.filter(m => m.name !== 'o4-mini');
76
- expect(selectVisionModel(models)).toBe('Kimi-K2.5');
77
- });
78
-
79
- test('selects gpt-5-mini when o4-mini and Kimi unavailable', () => {
80
- const models = ALL_MODELS.filter(m => !['o4-mini', 'Kimi-K2.5'].includes(m.name));
81
- expect(selectVisionModel(models)).toBe('gpt-5-mini');
82
- });
38
+ describe('VisionTool model selection (catalog-driven)', () => {
83
39
 
84
- test('selects gpt-5-nano when higher-priority mini models unavailable', () => {
85
- const models = ALL_MODELS.filter(m =>
86
- !['o4-mini', 'Kimi-K2.5', 'gpt-5-mini'].includes(m.name)
87
- );
88
- expect(selectVisionModel(models)).toBe('gpt-5-nano');
89
- });
90
-
91
- test('selects gpt-4.1-mini next', () => {
92
- const models = ALL_MODELS.filter(m =>
93
- !['o4-mini', 'Kimi-K2.5', 'gpt-5-mini', 'gpt-5-nano'].includes(m.name)
94
- );
95
- expect(selectVisionModel(models)).toBe('gpt-4.1-mini');
96
- });
97
-
98
- test('selects gpt-4.1 after mini variant', () => {
99
- const models = ALL_MODELS.filter(m =>
100
- !['o4-mini', 'Kimi-K2.5', 'gpt-5-mini', 'gpt-5-nano', 'gpt-4.1-mini'].includes(m.name)
101
- );
102
- expect(selectVisionModel(models)).toBe('gpt-4.1');
103
- });
104
-
105
- test('selects o3 when only reasoning models available', () => {
106
- const models = [
107
- { name: 'o3', supportsVision: true },
108
- { name: 'grok-4', supportsVision: true },
109
- ];
110
- expect(selectVisionModel(models)).toBe('o3');
111
- });
112
-
113
- test('matches gpt-5-chat via "gpt-5" keyword (last in priority)', () => {
114
- const models = [
115
- { name: 'gpt-5-chat', supportsVision: true },
116
- { name: 'grok-4', supportsVision: true },
117
- ];
118
- expect(selectVisionModel(models)).toBe('gpt-5-chat');
119
- });
120
-
121
- test('skips non-vision models even if name matches priority keyword', () => {
122
- const models = [
123
- { name: 'gpt-5-mini-no-vision', supportsVision: false },
124
- { name: 'grok-4', supportsVision: true },
125
- ];
126
- expect(selectVisionModel(models)).toBe('grok-4');
127
- });
40
+ test('selects model recommended for vision', () => {
41
+ expect(selectVisionModel(ALL_MODELS)).toBe('o4-mini');
128
42
  });
129
43
 
130
- // ── Agent current model fallback ─────────────────────────────
131
- describe('agent current model fallback', () => {
132
- test('uses agent current model when no priority keywords match', () => {
133
- const models = [
134
- { name: 'exotic-vision-model', supportsVision: true },
135
- { name: 'another-exotic', supportsVision: true },
136
- ];
137
- expect(selectVisionModel(models, { currentModel: 'exotic-vision-model' }))
138
- .toBe('exotic-vision-model');
139
- });
140
-
141
- test('ignores agent current model if it lacks vision', () => {
142
- const models = [
143
- { name: 'agent-model', supportsVision: false },
144
- { name: 'fallback-vision', supportsVision: true },
145
- ];
146
- expect(selectVisionModel(models, { currentModel: 'agent-model' }))
147
- .toBe('fallback-vision');
148
- });
149
-
150
- test('prefers priority keyword over agent current model', () => {
151
- expect(selectVisionModel(ALL_MODELS, { currentModel: 'grok-4' }))
152
- .toBe('o4-mini');
153
- });
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
154
47
  });
155
48
 
156
- // ── First available fallback ─────────────────────────────────
157
- describe('first available fallback', () => {
158
- test('falls back to first vision model when nothing matches', () => {
159
- const models = [
160
- { name: 'custom-a', supportsVision: true },
161
- { name: 'custom-b', supportsVision: true },
162
- ];
163
- expect(selectVisionModel(models)).toBe('custom-a');
164
- });
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');
165
55
  });
166
56
 
167
- // ── No vision models ─────────────────────────────────────────
168
- describe('no vision models', () => {
169
- test('returns null when no models have vision', () => {
170
- const models = [
171
- { name: 'gpt-5.3-codex', supportsVision: false },
172
- { name: 'DeepSeek-V3.2', supportsVision: false },
173
- ];
174
- expect(selectVisionModel(models)).toBeNull();
175
- });
176
-
177
- test('returns null for empty list', () => {
178
- expect(selectVisionModel([])).toBeNull();
179
- });
180
-
181
- test('returns null for null', () => {
182
- expect(selectVisionModel(null)).toBeNull();
183
- });
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');
184
63
  });
185
64
 
186
- // ── getVisionModels filtering ────────────────────────────────
187
- describe('getVisionModels', () => {
188
- test('only returns models with supportsVision === true', () => {
189
- const result = getVisionModels(ALL_MODELS);
190
- expect(result.every(m => m.supportsVision)).toBe(true);
191
- expect(result.length).toBe(ALL_MODELS.filter(m => m.supportsVision).length);
192
- });
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
+ });
193
71
 
194
- test('excludes codex, DeepSeek, Phi models (no vision)', () => {
195
- const result = getVisionModels(ALL_MODELS);
196
- const names = result.map(m => m.name);
197
- expect(names).not.toContain('gpt-5.3-codex');
198
- expect(names).not.toContain('DeepSeek-V3.2');
199
- expect(names).not.toContain('Phi-4-reasoning');
200
- });
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();
201
76
  });
202
77
 
203
- // ── Old Anthropic keywords no longer match ───────────────────
204
- describe('Anthropic removal verification', () => {
205
- test('priority list does NOT contain opus or sonnet', () => {
206
- expect(VISION_MODEL_PRIORITY).not.toContain('opus');
207
- expect(VISION_MODEL_PRIORITY).not.toContain('sonnet');
208
- expect(VISION_MODEL_PRIORITY.some(k => k.includes('claude'))).toBe(false);
209
- expect(VISION_MODEL_PRIORITY.some(k => k.includes('anthropic'))).toBe(false);
210
- });
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');
211
85
  });
212
86
  });
@@ -1,22 +1,10 @@
1
1
  /**
2
- * Tests for WebTool._selectVisionModel() — the dynamic vision model
3
- * selector used for screenshot analysis.
4
- *
5
- * Verifies:
6
- * - Priority keyword matching (o4-mini > kimi > gpt-5-mini > ...)
7
- * - Falls back to first vision model when no keywords match
8
- * - Returns null when modelsService is unavailable
9
- * - Non-vision models are excluded
2
+ * Tests for WebTool._selectVisionModel() — catalog-driven.
3
+ * Uses recommended_for and tier instead of hardcoded name lists.
10
4
  */
11
5
 
12
6
  import { jest, describe, test, expect } from '@jest/globals';
13
7
 
14
- // We can't easily import the full WebTool (heavy Puppeteer dependency),
15
- // so we extract and test the _selectVisionModel logic directly.
16
- // The method is simple enough to replicate in isolation.
17
-
18
- const PRIORITY = ['o4-mini', 'kimi', 'gpt-5-mini', 'gpt-5-nano', 'gpt-4.1-mini', 'gpt-4.1', 'o3', 'gpt-5'];
19
-
20
8
  function selectVisionModel(context) {
21
9
  const modelsService = context.aiService?.modelsService;
22
10
  if (!modelsService) return null;
@@ -25,95 +13,61 @@ function selectVisionModel(context) {
25
13
  const visionModels = allModels.filter(m => m.supportsVision === true);
26
14
  if (visionModels.length === 0) return null;
27
15
 
28
- for (const keyword of PRIORITY) {
29
- const match = visionModels.find(m => m.name.toLowerCase().includes(keyword));
30
- if (match) return match.name;
31
- }
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;
32
21
 
33
22
  return visionModels[0].name;
34
23
  }
35
24
 
36
25
  function makeContext(models) {
37
- return {
38
- aiService: {
39
- modelsService: {
40
- getModels: () => models
41
- }
42
- }
43
- };
26
+ return { aiService: { modelsService: { getModels: () => models } } };
44
27
  }
45
28
 
46
- const ALL_MODELS = [
47
- { name: 'o4-mini', supportsVision: true },
48
- { name: 'o3', supportsVision: true },
49
- { name: 'gpt-5-mini', supportsVision: true },
50
- { name: 'gpt-4.1', supportsVision: true },
51
- { name: 'Kimi-K2.5', supportsVision: true },
52
- { name: 'grok-4', supportsVision: true },
53
- { name: 'gpt-5.3-codex', supportsVision: false },
54
- { name: 'DeepSeek-V3.2', supportsVision: false },
55
- ];
56
-
57
- describe('WebTool._selectVisionModel (logic test)', () => {
58
-
59
- test('selects o4-mini as top priority', () => {
60
- expect(selectVisionModel(makeContext(ALL_MODELS))).toBe('o4-mini');
61
- });
62
-
63
- test('selects Kimi-K2.5 when o4-mini unavailable', () => {
64
- const models = ALL_MODELS.filter(m => m.name !== 'o4-mini');
65
- expect(selectVisionModel(makeContext(models))).toBe('Kimi-K2.5');
66
- });
67
-
68
- test('selects gpt-5-mini when o4-mini and Kimi unavailable', () => {
69
- const models = ALL_MODELS.filter(m => !['o4-mini', 'Kimi-K2.5'].includes(m.name));
70
- expect(selectVisionModel(makeContext(models))).toBe('gpt-5-mini');
71
- });
29
+ describe('WebTool._selectVisionModel (catalog-driven)', () => {
72
30
 
73
- test('selects o3 when only o3 and grok have vision', () => {
31
+ test('selects model recommended for vision', () => {
74
32
  const models = [
75
- { name: 'o3', supportsVision: true },
76
- { name: 'grok-4', supportsVision: true },
33
+ { name: 'vision-model', supportsVision: true, recommended_for: ['vision'], tier: 'budget' },
34
+ { name: 'other', supportsVision: true, recommended_for: [], tier: 'standard' },
77
35
  ];
78
- expect(selectVisionModel(makeContext(models))).toBe('o3');
36
+ expect(selectVisionModel(makeContext(models))).toBe('vision-model');
79
37
  });
80
38
 
81
- test('falls back to first vision model when no keywords match', () => {
39
+ test('selects budget vision model as fallback', () => {
82
40
  const models = [
83
- { name: 'exotic-vision-1', supportsVision: true },
84
- { name: 'exotic-vision-2', supportsVision: true },
41
+ { name: 'premium', supportsVision: true, recommended_for: [], tier: 'premium' },
42
+ { name: 'cheap', supportsVision: true, recommended_for: [], tier: 'budget' },
85
43
  ];
86
- expect(selectVisionModel(makeContext(models))).toBe('exotic-vision-1');
44
+ expect(selectVisionModel(makeContext(models))).toBe('cheap');
87
45
  });
88
46
 
89
- test('skips non-vision models', () => {
47
+ test('returns first available when no tags match', () => {
90
48
  const models = [
91
- { name: 'gpt-5.3-codex', supportsVision: false },
92
- { name: 'grok-4', supportsVision: true },
49
+ { name: 'only-one', supportsVision: true, recommended_for: [], tier: 'premium' },
93
50
  ];
94
- expect(selectVisionModel(makeContext(models))).toBe('grok-4');
51
+ expect(selectVisionModel(makeContext(models))).toBe('only-one');
95
52
  });
96
53
 
97
- test('returns null when no vision models exist', () => {
54
+ test('skips non-vision models', () => {
98
55
  const models = [
99
- { name: 'gpt-5.3-codex', supportsVision: false },
56
+ { name: 'text-only', supportsVision: false, recommended_for: ['vision'], tier: 'budget' },
57
+ { name: 'actual-vision', supportsVision: true, recommended_for: [], tier: 'standard' },
100
58
  ];
101
- expect(selectVisionModel(makeContext(models))).toBeNull();
59
+ expect(selectVisionModel(makeContext(models))).toBe('actual-vision');
102
60
  });
103
61
 
104
- test('returns null when models list is empty', () => {
62
+ test('returns null when no models available', () => {
105
63
  expect(selectVisionModel(makeContext([]))).toBeNull();
106
64
  });
107
65
 
108
- test('returns null when aiService has no modelsService', () => {
109
- expect(selectVisionModel({ aiService: {} })).toBeNull();
110
- });
111
-
112
- test('returns null when context has no aiService', () => {
66
+ test('returns null when no aiService', () => {
113
67
  expect(selectVisionModel({})).toBeNull();
114
68
  });
115
69
 
116
- test('analyzeScreenshot would use o4-mini as fallback when _selectVisionModel returns null', () => {
70
+ test('falls back to o4-mini when _selectVisionModel returns null', () => {
117
71
  // The actual code does: this._selectVisionModel(context) || 'o4-mini'
118
72
  const result = selectVisionModel({}) || 'o4-mini';
119
73
  expect(result).toBe('o4-mini');
@@ -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
- // Vision model selection priority (best MMMU-Pro score / cost ratio):
22
- // 1. Keyword match from priority list below (filtered to vision-capable only)
23
- // 2. Agent's current model if it has vision capability
24
- // 3. First available vision model
25
- // o4-mini (79.2%, cheapest), Kimi (78.5%, cheap), gpt-5-mini (75.3%, very cheap), gpt-4.1 (69.3%, solid)
26
- const VISION_MODEL_PRIORITY = ['o4-mini', 'kimi', 'gpt-5-mini', 'gpt-5-nano', 'gpt-4.1-mini', 'gpt-4.1', 'o3', 'gpt-5'];
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() {
@@ -2834,7 +2834,7 @@ If blocked (CAPTCHA, access denied), use stealthLevel: "maximum" (visible browse
2834
2834
 
2835
2835
  /**
2836
2836
  * Select the best available vision model for screenshot analysis.
2837
- * Priority: o4-mini > kimi > gpt-5-mini > gpt-4.1 > o3 > first vision model
2837
+ * Uses catalog tags + recommended_for no hardcoded model names.
2838
2838
  * @private
2839
2839
  */
2840
2840
  _selectVisionModel(context) {
@@ -2845,12 +2845,15 @@ If blocked (CAPTCHA, access denied), use stealthLevel: "maximum" (visible browse
2845
2845
  const visionModels = allModels.filter(m => m.supportsVision === true);
2846
2846
  if (visionModels.length === 0) return null;
2847
2847
 
2848
- const priority = ['o4-mini', 'kimi', 'gpt-5-mini', 'gpt-5-nano', 'gpt-4.1-mini', 'gpt-4.1', 'o3', 'gpt-5'];
2849
- for (const keyword of priority) {
2850
- const match = visionModels.find(m => m.name.toLowerCase().includes(keyword));
2851
- if (match) return match.name;
2852
- }
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;
2853
2855
 
2856
+ // 3. First available
2854
2857
  return visionModels[0].name;
2855
2858
  }
2856
2859