onbuzz 4.0.0 → 4.0.2

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 (957) hide show
  1. package/package.json +1 -1
  2. package/src/core/__tests__/agentPool.test.js +60 -0
  3. package/src/core/__tests__/messageProcessor.sourceHeader.test.js +195 -0
  4. package/src/core/agentPool.js +24 -0
  5. package/src/core/agentScheduler.js +20 -9
  6. package/src/core/messageProcessor.js +17 -0
  7. package/src/core/orchestrator.js +6 -2
  8. package/src/interfaces/webServer.js +26 -0
  9. package/src/services/__tests__/messageSource.channelFilter.coherence.test.js +101 -0
  10. package/src/services/__tests__/messageSource.test.js +376 -0
  11. package/src/services/discordService.js +11 -2
  12. package/src/services/messageSource.js +318 -0
  13. package/src/services/telegramService.js +7 -1
  14. package/src/services/visualEditorServer.js +35 -7
  15. package/src/tools/__tests__/visualEditorTool.broadcast.test.js +41 -11
  16. package/src/tools/__tests__/visualEditorTool.context.test.js +141 -0
  17. package/src/tools/baseTool.js +14 -1
  18. package/src/tools/taskManagerTool.js +10 -0
  19. package/src/tools/visualEditorTool.js +114 -25
  20. package/src/utilities/tagParser.js +22 -3
  21. package/web-ui/build/index.html +2 -2
  22. package/web-ui/build/static/1c-alYWzgyM.js +1 -0
  23. package/web-ui/build/static/abap-MNX4MGQu.js +1 -0
  24. package/web-ui/build/static/abnf-PB6umZUe.js +1 -0
  25. package/web-ui/build/static/abnf-lLelqyRq.js +1 -0
  26. package/web-ui/build/static/accesslog-ECfnNf6M.js +1 -0
  27. package/web-ui/build/static/actionscript-48Mv-P2G.js +1 -0
  28. package/web-ui/build/static/actionscript-CmFMkWAF.js +1 -0
  29. package/web-ui/build/static/ada-D0nj2830.js +1 -0
  30. package/web-ui/build/static/ada-DC68kRrL.js +1 -0
  31. package/web-ui/build/static/agda-CjnuTEYG.js +1 -0
  32. package/web-ui/build/static/al-DICLGfy9.js +1 -0
  33. package/web-ui/build/static/angelscript-D7H0wknj.js +1 -0
  34. package/web-ui/build/static/antlr4-C_KsZIwI.js +1 -0
  35. package/web-ui/build/static/apache-Cfj2o0TW.js +1 -0
  36. package/web-ui/build/static/apacheconf-D5jQXqP_.js +1 -0
  37. package/web-ui/build/static/apex-G2rOb7vm.js +1 -0
  38. package/web-ui/build/static/apl-CE_aKOLQ.js +1 -0
  39. package/web-ui/build/static/applescript-BffXi9IZ.js +1 -0
  40. package/web-ui/build/static/applescript-CshVa-pZ.js +1 -0
  41. package/web-ui/build/static/aql-F9xr2xIN.js +1 -0
  42. package/web-ui/build/static/arcade-29Re4fPy.js +1 -0
  43. package/web-ui/build/static/arduino-BGsZiYrf.js +1 -0
  44. package/web-ui/build/static/arduino-HiqNS--s.js +1 -0
  45. package/web-ui/build/static/arff-jPcJv_eJ.js +1 -0
  46. package/web-ui/build/static/armasm-DDockn0p.js +1 -0
  47. package/web-ui/build/static/asciidoc-BW3nh79M.js +1 -0
  48. package/web-ui/build/static/asciidoc-Dxit6U7t.js +1 -0
  49. package/web-ui/build/static/asm6502-eTpxnsNy.js +1 -0
  50. package/web-ui/build/static/asmatmel-BHeErmNQ.js +1 -0
  51. package/web-ui/build/static/aspectj-CX6x53Aw.js +1 -0
  52. package/web-ui/build/static/aspnet-BFDGvlyU.js +1 -0
  53. package/web-ui/build/static/autohotkey-CRNZnW-g.js +1 -0
  54. package/web-ui/build/static/autohotkey-DhdXEUbC.js +1 -0
  55. package/web-ui/build/static/autoit-BrCU_LoC.js +1 -0
  56. package/web-ui/build/static/autoit-CNY5ZLoO.js +1 -0
  57. package/web-ui/build/static/avisynth-CvpX-vR-.js +1 -0
  58. package/web-ui/build/static/avrasm-Ch0VgbnW.js +1 -0
  59. package/web-ui/build/static/avro-idl-DVNgaXeA.js +1 -0
  60. package/web-ui/build/static/awk-DBbMErBm.js +1 -0
  61. package/web-ui/build/static/axapta-BZMCBJyd.js +1 -0
  62. package/web-ui/build/static/bash-B7W9_l_H.js +1 -0
  63. package/web-ui/build/static/bash-nUxPXV93.js +1 -0
  64. package/web-ui/build/static/basic-CncKWTdb.js +1 -0
  65. package/web-ui/build/static/basic-t050Yfrj.js +1 -0
  66. package/web-ui/build/static/batch-DzppEDD6.js +1 -0
  67. package/web-ui/build/static/bbcode-Cxa6xUCC.js +1 -0
  68. package/web-ui/build/static/bicep-CNfRbyLD.js +1 -0
  69. package/web-ui/build/static/birb-BQn3C4qH.js +1 -0
  70. package/web-ui/build/static/bison-CG1ITN82.js +1 -0
  71. package/web-ui/build/static/bnf-BH6EqVfg.js +1 -0
  72. package/web-ui/build/static/bnf-DOOI4ziA.js +1 -0
  73. package/web-ui/build/static/brainfuck-CuvanNT4.js +1 -0
  74. package/web-ui/build/static/brainfuck-DEN53aXA.js +1 -0
  75. package/web-ui/build/static/brightscript-C_qPLhPu.js +1 -0
  76. package/web-ui/build/static/bro-DE4fdxVn.js +1 -0
  77. package/web-ui/build/static/bsl-DhilRMN1.js +1 -0
  78. package/web-ui/build/static/c-DJMkv9RR.js +1 -0
  79. package/web-ui/build/static/c-HH0eyrSO.js +1 -0
  80. package/web-ui/build/static/c-like-CievvBLp.js +1 -0
  81. package/web-ui/build/static/cal-BBz3_HT0.js +1 -0
  82. package/web-ui/build/static/capnproto-BOgD9Wf3.js +1 -0
  83. package/web-ui/build/static/ceylon-MWYZBIMt.js +1 -0
  84. package/web-ui/build/static/cfscript-BiVuxt5i.js +1 -0
  85. package/web-ui/build/static/chaiscript-CPx7l6f-.js +1 -0
  86. package/web-ui/build/static/cil-3DGkdNym.js +1 -0
  87. package/web-ui/build/static/clean-Bxi-hwbJ.js +1 -0
  88. package/web-ui/build/static/clojure-BBMLjTS9.js +1 -0
  89. package/web-ui/build/static/clojure-RPrwnP3x.js +1 -0
  90. package/web-ui/build/static/clojure-repl-BE9VGIhP.js +1 -0
  91. package/web-ui/build/static/cmake-BMeSZbTq.js +1 -0
  92. package/web-ui/build/static/cmake-CLVNptnB.js +1 -0
  93. package/web-ui/build/static/cobol-f-w6Mj2H.js +1 -0
  94. package/web-ui/build/static/coffeescript-CESbl4tN.js +1 -0
  95. package/web-ui/build/static/coffeescript-DmOzsrDS.js +1 -0
  96. package/web-ui/build/static/concurnas-DxQ9U571.js +1 -0
  97. package/web-ui/build/static/coq-4Wu7fuDB.js +1 -0
  98. package/web-ui/build/static/coq-BERQ-1c4.js +1 -0
  99. package/web-ui/build/static/cos-SsvxAn6O.js +1 -0
  100. package/web-ui/build/static/cpp-BkY4KhJS.js +1 -0
  101. package/web-ui/build/static/cpp-CGkeKbAD.js +1 -0
  102. package/web-ui/build/static/crmsh-BL32bNK1.js +1 -0
  103. package/web-ui/build/static/crystal-C4e562-w.js +1 -0
  104. package/web-ui/build/static/crystal-Hu8WDm2E.js +1 -0
  105. package/web-ui/build/static/csharp-DvnJhHBw.js +1 -0
  106. package/web-ui/build/static/csharp-DxFH-E_J.js +1 -0
  107. package/web-ui/build/static/cshtml-BkimeLw1.js +1 -0
  108. package/web-ui/build/static/csp-CDNmbLWI.js +1 -0
  109. package/web-ui/build/static/csp-DXmobqdr.js +1 -0
  110. package/web-ui/build/static/css-VRUoX-cu.js +1 -0
  111. package/web-ui/build/static/css-extras-Dcz-5Gz_.js +1 -0
  112. package/web-ui/build/static/csv-Cy-vj0dX.js +1 -0
  113. package/web-ui/build/static/cypher-CyiGMZEd.js +1 -0
  114. package/web-ui/build/static/d-50yhKzqs.js +1 -0
  115. package/web-ui/build/static/d-CtQcHe9N.js +1 -0
  116. package/web-ui/build/static/dart-Dj05IVm2.js +1 -0
  117. package/web-ui/build/static/dart-kumEUEig.js +1 -0
  118. package/web-ui/build/static/dataweave-CyaTPvHl.js +1 -0
  119. package/web-ui/build/static/dax-BYZEUwTe.js +1 -0
  120. package/web-ui/build/static/delphi-Hrkf0_Zm.js +1 -0
  121. package/web-ui/build/static/dhall-ZfXZcVvQ.js +1 -0
  122. package/web-ui/build/static/diff-B681Qorw.js +1 -0
  123. package/web-ui/build/static/diff-C85U1vU3.js +1 -0
  124. package/web-ui/build/static/django-BbqkMAd3.js +1 -0
  125. package/web-ui/build/static/django-ebEm7IW1.js +1 -0
  126. package/web-ui/build/static/dns-CIKOn0cx.js +1 -0
  127. package/web-ui/build/static/dns-zone-file-Cgfj303q.js +1 -0
  128. package/web-ui/build/static/docker-DezZesK-.js +1 -0
  129. package/web-ui/build/static/dockerfile-HOIJDSPT.js +1 -0
  130. package/web-ui/build/static/dos-Bv0IPgh2.js +1 -0
  131. package/web-ui/build/static/dot-BiJIuPYL.js +1 -0
  132. package/web-ui/build/static/dsconfig-DCPRv9km.js +1 -0
  133. package/web-ui/build/static/dts-CXMbX7gl.js +1 -0
  134. package/web-ui/build/static/dust-Mjmn5ftw.js +1 -0
  135. package/web-ui/build/static/ebnf-469W3R_o.js +1 -0
  136. package/web-ui/build/static/ebnf-Bs6Ftm9u.js +1 -0
  137. package/web-ui/build/static/editorconfig-C4dD8cK_.js +1 -0
  138. package/web-ui/build/static/eiffel-D78uHdvn.js +1 -0
  139. package/web-ui/build/static/ejs-CUydrtqr.js +1 -0
  140. package/web-ui/build/static/elixir-BIxlPrSO.js +1 -0
  141. package/web-ui/build/static/elixir-CLS7rDXm.js +1 -0
  142. package/web-ui/build/static/elm-CdXXWPN7.js +1 -0
  143. package/web-ui/build/static/elm-DT7wSSPo.js +1 -0
  144. package/web-ui/build/static/erb-8Xeo3WFF.js +1 -0
  145. package/web-ui/build/static/erb-DROzrB_O.js +1 -0
  146. package/web-ui/build/static/erlang-DbMlkDTN.js +1 -0
  147. package/web-ui/build/static/erlang-DoF730hs.js +1 -0
  148. package/web-ui/build/static/erlang-repl-B7enXvga.js +1 -0
  149. package/web-ui/build/static/etlua-CehWhSD3.js +1 -0
  150. package/web-ui/build/static/excel-DHmOIegb.js +1 -0
  151. package/web-ui/build/static/excel-formula-DdeWF1_w.js +1 -0
  152. package/web-ui/build/static/factor-DBMZ3xT3.js +1 -0
  153. package/web-ui/build/static/false-AxZ_vqH0.js +1 -0
  154. package/web-ui/build/static/firestore-security-rules-BChGByFG.js +1 -0
  155. package/web-ui/build/static/fix-Cc-mOcI9.js +1 -0
  156. package/web-ui/build/static/flix-CBpO-hKP.js +1 -0
  157. package/web-ui/build/static/flow-FI5Ahl__.js +1 -0
  158. package/web-ui/build/static/fortran-C-jW3mxU.js +1 -0
  159. package/web-ui/build/static/fortran-zFBKdQax.js +1 -0
  160. package/web-ui/build/static/fsharp-Qu8P7ZfJ.js +1 -0
  161. package/web-ui/build/static/fsharp-gJT07_u6.js +1 -0
  162. package/web-ui/build/static/ftl-DcmD2jIl.js +1 -0
  163. package/web-ui/build/static/gams-BAhsVwik.js +1 -0
  164. package/web-ui/build/static/gap-DtjJMac5.js +1 -0
  165. package/web-ui/build/static/gauss-DLNJrvWH.js +1 -0
  166. package/web-ui/build/static/gcode-CbChIRHG.js +1 -0
  167. package/web-ui/build/static/gcode-lgPukEuS.js +1 -0
  168. package/web-ui/build/static/gdscript-ChdqKkXx.js +1 -0
  169. package/web-ui/build/static/gedcom-B3RAxWnR.js +1 -0
  170. package/web-ui/build/static/gherkin-BwKe4UMd.js +1 -0
  171. package/web-ui/build/static/gherkin-D1Q4xoY6.js +1 -0
  172. package/web-ui/build/static/git-CwA8K3Cg.js +1 -0
  173. package/web-ui/build/static/glsl-B_AtY5k6.js +1 -0
  174. package/web-ui/build/static/glsl-BgXyZa9x.js +1 -0
  175. package/web-ui/build/static/gml-O2ebFipB.js +1 -0
  176. package/web-ui/build/static/gml-xLusiP_j.js +1 -0
  177. package/web-ui/build/static/gn-T-uGKQLr.js +1 -0
  178. package/web-ui/build/static/go-B9spniuU.js +1 -0
  179. package/web-ui/build/static/go-DTwlbvuB.js +1 -0
  180. package/web-ui/build/static/go-module-DWCbGNjZ.js +1 -0
  181. package/web-ui/build/static/golo-Dp3ZC9Ry.js +1 -0
  182. package/web-ui/build/static/gradle-DxnYLs2J.js +1 -0
  183. package/web-ui/build/static/graphql-8stFQb3o.js +1 -0
  184. package/web-ui/build/static/groovy-Dbpy85Rs.js +1 -0
  185. package/web-ui/build/static/groovy-zimUQS73.js +1 -0
  186. package/web-ui/build/static/haml-B5gJAH_w.js +1 -0
  187. package/web-ui/build/static/haml-CXW3L0QY.js +1 -0
  188. package/web-ui/build/static/handlebars-BW92WxdN.js +1 -0
  189. package/web-ui/build/static/handlebars-DNysemQE.js +1 -0
  190. package/web-ui/build/static/haskell-BCP5M1h6.js +1 -0
  191. package/web-ui/build/static/haskell-BvSwVdJS.js +1 -0
  192. package/web-ui/build/static/haxe-BBVHLa1y.js +1 -0
  193. package/web-ui/build/static/haxe-DHK7XQB_.js +1 -0
  194. package/web-ui/build/static/hcl-CW0_ZJVS.js +1 -0
  195. package/web-ui/build/static/hlsl-DAH7B5KM.js +1 -0
  196. package/web-ui/build/static/hoon-CXY0i4p4.js +1 -0
  197. package/web-ui/build/static/hpkp-RL8DG2Fy.js +1 -0
  198. package/web-ui/build/static/hsp-DMAT8yb3.js +1 -0
  199. package/web-ui/build/static/hsts-SOCNnT21.js +1 -0
  200. package/web-ui/build/static/htmlbars-Bsrm5Qs8.js +1 -0
  201. package/web-ui/build/static/http-CYjIQwPj.js +1 -0
  202. package/web-ui/build/static/http-Hu8W9pON.js +1 -0
  203. package/web-ui/build/static/hy-CDbyyAxf.js +1 -0
  204. package/web-ui/build/static/ichigojam-CpPBjr7T.js +1 -0
  205. package/web-ui/build/static/icon-UI22EXz2.js +1 -0
  206. package/web-ui/build/static/icu-message-format-DAU066Wq.js +1 -0
  207. package/web-ui/build/static/idris-BuMEL37s.js +1 -0
  208. package/web-ui/build/static/iecst-CEqwKb_G.js +1 -0
  209. package/web-ui/build/static/ignore-CcCxTW7I.js +1 -0
  210. package/web-ui/build/static/index-C9Fa_kgD.css +1 -0
  211. package/web-ui/build/static/index-DexoK8pu.js +834 -0
  212. package/web-ui/build/static/index-DgeaGxMy.js +13 -0
  213. package/web-ui/build/static/index-RM91zq9j.js +1 -0
  214. package/web-ui/build/static/inform7-BdnukB1N.js +1 -0
  215. package/web-ui/build/static/inform7-Chkw-Df3.js +1 -0
  216. package/web-ui/build/static/ini--KUo0NJD.js +1 -0
  217. package/web-ui/build/static/ini-eo_rWFNv.js +1 -0
  218. package/web-ui/build/static/io-CWDVYxeI.js +1 -0
  219. package/web-ui/build/static/irpf90-CWFfmPjK.js +1 -0
  220. package/web-ui/build/static/isbl-BNkdk_dr.js +1 -0
  221. package/web-ui/build/static/j-Bg02P4UL.js +1 -0
  222. package/web-ui/build/static/java-BIDWcDHj.js +1 -0
  223. package/web-ui/build/static/java-D4bhM1sC.js +1 -0
  224. package/web-ui/build/static/javadoc-DxxfkSj4.js +1 -0
  225. package/web-ui/build/static/javadoclike-C3v2LXMS.js +1 -0
  226. package/web-ui/build/static/javascript-CSu6Pvd7.js +1 -0
  227. package/web-ui/build/static/javastacktrace-C50AqeNg.js +1 -0
  228. package/web-ui/build/static/jboss-cli-D4aAEeAL.js +1 -0
  229. package/web-ui/build/static/jexl-F8wyoUqO.js +1 -0
  230. package/web-ui/build/static/jolie-CdEDMXNQ.js +1 -0
  231. package/web-ui/build/static/jq-D95l3yQ0.js +1 -0
  232. package/web-ui/build/static/js-extras-55OlT8yf.js +1 -0
  233. package/web-ui/build/static/js-templates-4m7AkoaU.js +1 -0
  234. package/web-ui/build/static/jsdoc-BC6Ab1D0.js +1 -0
  235. package/web-ui/build/static/json-BHS2wD8g.js +1 -0
  236. package/web-ui/build/static/json-CPEJ9diH.js +1 -0
  237. package/web-ui/build/static/json5-EDQFzkuf.js +1 -0
  238. package/web-ui/build/static/jsonp-Cn_lpjaf.js +1 -0
  239. package/web-ui/build/static/jsstacktrace-pqdhqbKV.js +1 -0
  240. package/web-ui/build/static/jsx-Cop--oM_.js +1 -0
  241. package/web-ui/build/static/julia-B728rR99.js +1 -0
  242. package/web-ui/build/static/julia-Cq6vOawm.js +1 -0
  243. package/web-ui/build/static/julia-repl-BfOfjY_7.js +1 -0
  244. package/web-ui/build/static/keepalived-6ZwoBjFL.js +1 -0
  245. package/web-ui/build/static/keyman-DmOLCkH_.js +1 -0
  246. package/web-ui/build/static/kotlin-Bt385M6s.js +1 -0
  247. package/web-ui/build/static/kotlin-DsTE9me6.js +1 -0
  248. package/web-ui/build/static/kumir-DGpgb_2O.js +1 -0
  249. package/web-ui/build/static/kusto-Bb1U0J5m.js +1 -0
  250. package/web-ui/build/static/lasso-B4Rh4fa1.js +1 -0
  251. package/web-ui/build/static/latex-BlKwUVQO.js +1 -0
  252. package/web-ui/build/static/latex-D4EkT2Sx.js +1 -0
  253. package/web-ui/build/static/latte-8APUTRqH.js +1 -0
  254. package/web-ui/build/static/ldif-C1AH3r9Q.js +1 -0
  255. package/web-ui/build/static/leaf-DgHqqnCU.js +1 -0
  256. package/web-ui/build/static/less-BmLC9UX9.js +1 -0
  257. package/web-ui/build/static/less-D7wanA1u.js +1 -0
  258. package/web-ui/build/static/lilypond-CPpwdP3M.js +1 -0
  259. package/web-ui/build/static/liquid-C9g89s0-.js +1 -0
  260. package/web-ui/build/static/lisp-Ck1UA6zq.js +1 -0
  261. package/web-ui/build/static/lisp-tlR-SVFU.js +1 -0
  262. package/web-ui/build/static/livecodeserver-CfcVUDKK.js +1 -0
  263. package/web-ui/build/static/livescript-BPfp_PIe.js +1 -0
  264. package/web-ui/build/static/livescript-BVClM17E.js +1 -0
  265. package/web-ui/build/static/llvm-1CmNV1WZ.js +1 -0
  266. package/web-ui/build/static/llvm-DzaT3xf4.js +1 -0
  267. package/web-ui/build/static/log-x35sd55_.js +1 -0
  268. package/web-ui/build/static/lolcode-DfGz4a2C.js +1 -0
  269. package/web-ui/build/static/lsl-BJ13xzsn.js +1 -0
  270. package/web-ui/build/static/lua-DHTiU4iK.js +1 -0
  271. package/web-ui/build/static/lua-DttbbyOa.js +1 -0
  272. package/web-ui/build/static/magma-CM6u6Urv.js +1 -0
  273. package/web-ui/build/static/makefile--_TmwP5m.js +1 -0
  274. package/web-ui/build/static/makefile-DoB_xjMl.js +1 -0
  275. package/web-ui/build/static/markdown-BnyhT66e.js +1 -0
  276. package/web-ui/build/static/markdown-DvTREwgd.js +1 -0
  277. package/web-ui/build/static/markup-templating-yOvzgP3Z.js +1 -0
  278. package/web-ui/build/static/mathematica-BtY5tmVE.js +1 -0
  279. package/web-ui/build/static/matlab-DK98sDbn.js +1 -0
  280. package/web-ui/build/static/matlab-sBcSHRlC.js +1 -0
  281. package/web-ui/build/static/maxima-DMUOymL4.js +1 -0
  282. package/web-ui/build/static/maxscript-DaIC7eX6.js +1 -0
  283. package/web-ui/build/static/mel-BuONpgVc.js +1 -0
  284. package/web-ui/build/static/mel-Ckh0frDB.js +1 -0
  285. package/web-ui/build/static/mercury-CDFt4KAe.js +1 -0
  286. package/web-ui/build/static/mermaid-BqSA7Pr5.js +1 -0
  287. package/web-ui/build/static/mipsasm-Dj6mne2g.js +1 -0
  288. package/web-ui/build/static/mizar-CIQIQU-V.js +1 -0
  289. package/web-ui/build/static/mizar-CLTLHCGu.js +1 -0
  290. package/web-ui/build/static/mojolicious-DxjS7wDV.js +1 -0
  291. package/web-ui/build/static/mongodb-BAEipI91.js +1 -0
  292. package/web-ui/build/static/monkey-BBGnwc6s.js +1 -0
  293. package/web-ui/build/static/monkey-CvxTCuiS.js +1 -0
  294. package/web-ui/build/static/moonscript-CqDVk1K9.js +1 -0
  295. package/web-ui/build/static/moonscript-DJyxvZQc.js +1 -0
  296. package/web-ui/build/static/n1ql-AFWwB4Xn.js +1 -0
  297. package/web-ui/build/static/n1ql-VuVk9_MG.js +1 -0
  298. package/web-ui/build/static/n4js-BH6hpdgG.js +1 -0
  299. package/web-ui/build/static/nand2tetris-hdl-kVewh9V1.js +1 -0
  300. package/web-ui/build/static/naniscript-B_oQ4TiW.js +1 -0
  301. package/web-ui/build/static/nasm-B1_bJvcz.js +1 -0
  302. package/web-ui/build/static/neon-CbXfhQIm.js +1 -0
  303. package/web-ui/build/static/nevod-5Fv5cPWk.js +1 -0
  304. package/web-ui/build/static/nginx-BfifkBy-.js +1 -0
  305. package/web-ui/build/static/nginx-D9toNO0V.js +1 -0
  306. package/web-ui/build/static/nim-BFN2inD1.js +1 -0
  307. package/web-ui/build/static/nim-do_UhCvy.js +1 -0
  308. package/web-ui/build/static/nix-D6RLwwOZ.js +1 -0
  309. package/web-ui/build/static/nix-djoKaPeE.js +1 -0
  310. package/web-ui/build/static/node-repl-DDbffQSR.js +1 -0
  311. package/web-ui/build/static/nsis-BiO6b68i.js +1 -0
  312. package/web-ui/build/static/nsis-CHzeu7js.js +1 -0
  313. package/web-ui/build/static/objectivec-B7vXzYuT.js +1 -0
  314. package/web-ui/build/static/objectivec-BLn212SY.js +1 -0
  315. package/web-ui/build/static/ocaml-BvpR0Yig.js +1 -0
  316. package/web-ui/build/static/ocaml-DWZF00Ti.js +1 -0
  317. package/web-ui/build/static/opencl-C2K2Ctu5.js +1 -0
  318. package/web-ui/build/static/openqasm-Cbtnnn3m.js +1 -0
  319. package/web-ui/build/static/openscad-CEPC0-yW.js +1 -0
  320. package/web-ui/build/static/oxygene-KfcdTXi0.js +1 -0
  321. package/web-ui/build/static/oz-B-azwNjQ.js +1 -0
  322. package/web-ui/build/static/parigp-IWtYGphS.js +1 -0
  323. package/web-ui/build/static/parser-CUCdnJ6l.js +1 -0
  324. package/web-ui/build/static/parser3--a7jm4Uq.js +1 -0
  325. package/web-ui/build/static/pascal-BbezKExl.js +1 -0
  326. package/web-ui/build/static/pascaligo-Bd8IN8hq.js +1 -0
  327. package/web-ui/build/static/pcaxis-CfT0dd7B.js +1 -0
  328. package/web-ui/build/static/peoplecode-Dq29i2LW.js +1 -0
  329. package/web-ui/build/static/perl-BZLc5sMP.js +1 -0
  330. package/web-ui/build/static/perl-JJmLLJne.js +1 -0
  331. package/web-ui/build/static/pf-seOENy0q.js +1 -0
  332. package/web-ui/build/static/pgsql-BtkzXwKY.js +1 -0
  333. package/web-ui/build/static/php-8b9a1w98.js +1 -0
  334. package/web-ui/build/static/php-extras-5D00a1Fm.js +1 -0
  335. package/web-ui/build/static/php-imFv4WXA.js +1 -0
  336. package/web-ui/build/static/php-template-CI-0RdMu.js +1 -0
  337. package/web-ui/build/static/phpdoc-DdcPBfc-.js +1 -0
  338. package/web-ui/build/static/plaintext-Ca1WAvT6.js +1 -0
  339. package/web-ui/build/static/plsql-CZV7QAnN.js +1 -0
  340. package/web-ui/build/static/pony-DiomUkGt.js +1 -0
  341. package/web-ui/build/static/powerquery-CKXX2_O_.js +1 -0
  342. package/web-ui/build/static/powershell-2Ctsosr0.js +1 -0
  343. package/web-ui/build/static/powershell-DVPkgaB6.js +1 -0
  344. package/web-ui/build/static/processing-BAuxATGX.js +1 -0
  345. package/web-ui/build/static/processing-DBzyjRsf.js +1 -0
  346. package/web-ui/build/static/profile-Cq2gkRUb.js +1 -0
  347. package/web-ui/build/static/prolog-ByKO_5p_.js +1 -0
  348. package/web-ui/build/static/prolog-CDCLze6j.js +1 -0
  349. package/web-ui/build/static/promql-BYOPu10L.js +1 -0
  350. package/web-ui/build/static/properties-kP8T8mqV.js +1 -0
  351. package/web-ui/build/static/properties-zdANIr61.js +1 -0
  352. package/web-ui/build/static/protobuf-DhAYlNOg.js +1 -0
  353. package/web-ui/build/static/protobuf-a1lLQN1f.js +1 -0
  354. package/web-ui/build/static/psl-DpP1u6wu.js +1 -0
  355. package/web-ui/build/static/pug-BobY0hsa.js +1 -0
  356. package/web-ui/build/static/puppet-CDimLnep.js +1 -0
  357. package/web-ui/build/static/puppet-D7DLS3gG.js +1 -0
  358. package/web-ui/build/static/pure-4QGsilHw.js +1 -0
  359. package/web-ui/build/static/purebasic-D0wI4z6w.js +1 -0
  360. package/web-ui/build/static/purebasic-Du_RxI7h.js +1 -0
  361. package/web-ui/build/static/purescript-CM92Fn9c.js +1 -0
  362. package/web-ui/build/static/python-Bvcn81x2.js +1 -0
  363. package/web-ui/build/static/python-CkfwrdRF.js +1 -0
  364. package/web-ui/build/static/python-repl-C48-EfyF.js +1 -0
  365. package/web-ui/build/static/q-B2-zP3za.js +1 -0
  366. package/web-ui/build/static/q-KuKa9s_e.js +1 -0
  367. package/web-ui/build/static/qml-D8j38-Sx.js +1 -0
  368. package/web-ui/build/static/qml-DTP6fbZN.js +1 -0
  369. package/web-ui/build/static/qore-DY-n97IK.js +1 -0
  370. package/web-ui/build/static/qsharp-Mn8hUKww.js +1 -0
  371. package/web-ui/build/static/r-BBPYkuMA.js +1 -0
  372. package/web-ui/build/static/r-CheuVCRq.js +1 -0
  373. package/web-ui/build/static/racket-2UxWXIqI.js +1 -0
  374. package/web-ui/build/static/reason-CudKWaht.js +1 -0
  375. package/web-ui/build/static/reasonml-BDZgwPxq.js +1 -0
  376. package/web-ui/build/static/regex-DpKrn61Z.js +1 -0
  377. package/web-ui/build/static/rego-CS2iMzor.js +1 -0
  378. package/web-ui/build/static/renpy-0CbyBFae.js +1 -0
  379. package/web-ui/build/static/rest-Ckpz2bGS.js +1 -0
  380. package/web-ui/build/static/rib-g77eioCq.js +1 -0
  381. package/web-ui/build/static/rip-L-KlpyJn.js +1 -0
  382. package/web-ui/build/static/roboconf-BkNeb0Yn.js +1 -0
  383. package/web-ui/build/static/roboconf-CE-yfGxs.js +1 -0
  384. package/web-ui/build/static/robotframework-ZhLv32cH.js +1 -0
  385. package/web-ui/build/static/routeros-C_1I4hFK.js +1 -0
  386. package/web-ui/build/static/rsl-CxEYmrJa.js +1 -0
  387. package/web-ui/build/static/ruby-Cgxmv3hM.js +1 -0
  388. package/web-ui/build/static/ruby-Cs4qnUzE.js +1 -0
  389. package/web-ui/build/static/ruleslanguage-DPK5B1Dg.js +1 -0
  390. package/web-ui/build/static/rust-BbVN6hMu.js +1 -0
  391. package/web-ui/build/static/rust-C6MrX2UK.js +1 -0
  392. package/web-ui/build/static/sas-CGov9per.js +1 -0
  393. package/web-ui/build/static/sas-Cp88q4DD.js +1 -0
  394. package/web-ui/build/static/sass-COOJqQer.js +1 -0
  395. package/web-ui/build/static/scala-BvOmMtdv.js +1 -0
  396. package/web-ui/build/static/scala-D5gnz3xs.js +1 -0
  397. package/web-ui/build/static/scheme-CNBfxsvv.js +1 -0
  398. package/web-ui/build/static/scheme-DiKuURfA.js +1 -0
  399. package/web-ui/build/static/scilab-vGKouaTh.js +1 -0
  400. package/web-ui/build/static/scss-B4PKgroe.js +1 -0
  401. package/web-ui/build/static/scss-BvRxfJ1U.js +1 -0
  402. package/web-ui/build/static/shell-B5TooOs0.js +1 -0
  403. package/web-ui/build/static/shell-session-TNT_ahRW.js +1 -0
  404. package/web-ui/build/static/smali-CiIXEKzG.js +1 -0
  405. package/web-ui/build/static/smali-EGdSXgM9.js +1 -0
  406. package/web-ui/build/static/smalltalk-DVAXFBVS.js +1 -0
  407. package/web-ui/build/static/smalltalk-Dfy8hlRv.js +1 -0
  408. package/web-ui/build/static/smarty-Rc2y-rm6.js +1 -0
  409. package/web-ui/build/static/sml-BoYe_d8x.js +1 -0
  410. package/web-ui/build/static/sml-CaIv1GsI.js +1 -0
  411. package/web-ui/build/static/solidity-Dem-6tsD.js +1 -0
  412. package/web-ui/build/static/solution-file-DfDjJASp.js +1 -0
  413. package/web-ui/build/static/soy-CkrJH5eW.js +1 -0
  414. package/web-ui/build/static/sparql-Dvg1P5oN.js +1 -0
  415. package/web-ui/build/static/splunk-spl-rB2pJQdl.js +1 -0
  416. package/web-ui/build/static/sqf-Cj_KV-kC.js +1 -0
  417. package/web-ui/build/static/sqf-DA_tj5Fb.js +1 -0
  418. package/web-ui/build/static/sql-CYDE0gzH.js +1 -0
  419. package/web-ui/build/static/sql-D8byAq-B.js +1 -0
  420. package/web-ui/build/static/sql_more-bMORpicj.js +1 -0
  421. package/web-ui/build/static/squirrel-rgwbGN0q.js +1 -0
  422. package/web-ui/build/static/stan-C-OYiHTu.js +1 -0
  423. package/web-ui/build/static/stan-CT8cMsn7.js +1 -0
  424. package/web-ui/build/static/stata-BJwZeN-z.js +1 -0
  425. package/web-ui/build/static/step21-WP26kxkW.js +1 -0
  426. package/web-ui/build/static/stylus-Cw9up-Iv.js +1 -0
  427. package/web-ui/build/static/stylus-CyFEQpH2.js +1 -0
  428. package/web-ui/build/static/subunit-B2XhtaLx.js +1 -0
  429. package/web-ui/build/static/swift-Bpyyuvtg.js +1 -0
  430. package/web-ui/build/static/swift-D-jiKNlA.js +1 -0
  431. package/web-ui/build/static/systemd-DE3AeWrd.js +1 -0
  432. package/web-ui/build/static/t4-cs-BSG7rkB_.js +1 -0
  433. package/web-ui/build/static/t4-templating-Cy7LuqAv.js +1 -0
  434. package/web-ui/build/static/t4-vb-ZLfMjXrh.js +1 -0
  435. package/web-ui/build/static/taggerscript-q2zFfkel.js +1 -0
  436. package/web-ui/build/static/tap-CzjhWyhf.js +1 -0
  437. package/web-ui/build/static/tap-ttXfPums.js +1 -0
  438. package/web-ui/build/static/tcl-6ta1XDva.js +1 -0
  439. package/web-ui/build/static/tcl-Cvx4AN_Q.js +1 -0
  440. package/web-ui/build/static/textile-zWm4gRbJ.js +1 -0
  441. package/web-ui/build/static/thrift-Crj4hRsm.js +1 -0
  442. package/web-ui/build/static/toml-hVfLOJr-.js +1 -0
  443. package/web-ui/build/static/tp-D5aJh4yF.js +1 -0
  444. package/web-ui/build/static/tremor-B9gWC4v1.js +1 -0
  445. package/web-ui/build/static/tsx-DtNWBAJO.js +1 -0
  446. package/web-ui/build/static/tt2-eH1L7Bpm.js +1 -0
  447. package/web-ui/build/static/turtle-BYCk4r6f.js +1 -0
  448. package/web-ui/build/static/twig-BQ-dq4no.js +1 -0
  449. package/web-ui/build/static/twig-n3AiXKyV.js +1 -0
  450. package/web-ui/build/static/typescript-CPQ0vD90.js +1 -0
  451. package/web-ui/build/static/typescript-juxiNWRf.js +1 -0
  452. package/web-ui/build/static/typoscript-C5h9SqFN.js +1 -0
  453. package/web-ui/build/static/unrealscript-9ht7jiai.js +1 -0
  454. package/web-ui/build/static/uorazor-36B6okgA.js +1 -0
  455. package/web-ui/build/static/uri-DEwrtmz_.js +1 -0
  456. package/web-ui/build/static/v-CvhXAFWo.js +1 -0
  457. package/web-ui/build/static/vala-CU_jVQ3c.js +1 -0
  458. package/web-ui/build/static/vala-H_yoFBZf.js +1 -0
  459. package/web-ui/build/static/vbnet-BNI0Gy5q.js +1 -0
  460. package/web-ui/build/static/vbnet-D-4O1Hpc.js +1 -0
  461. package/web-ui/build/static/vbscript-1zyalaSG.js +1 -0
  462. package/web-ui/build/static/vbscript-html-ea5_TYi7.js +1 -0
  463. package/web-ui/build/static/velocity-BlEdS1Un.js +1 -0
  464. package/web-ui/build/static/verilog-BGSIJuDJ.js +1 -0
  465. package/web-ui/build/static/verilog-C1vff5Z3.js +1 -0
  466. package/web-ui/build/static/vhdl-5H4C8O-_.js +1 -0
  467. package/web-ui/build/static/vhdl-DHiBEhsE.js +1 -0
  468. package/web-ui/build/static/vim-Bd1MNlxj.js +1 -0
  469. package/web-ui/build/static/vim-DBP2ZsgQ.js +1 -0
  470. package/web-ui/build/static/visual-basic-DI34-9vJ.js +1 -0
  471. package/web-ui/build/static/warpscript-DBQ-KbS6.js +1 -0
  472. package/web-ui/build/static/wasm-CY5W57_Y.js +1 -0
  473. package/web-ui/build/static/web-idl-CF9xaLpZ.js +1 -0
  474. package/web-ui/build/static/wiki-xfSWwdeC.js +1 -0
  475. package/web-ui/build/static/wolfram-DZ6ghwRH.js +1 -0
  476. package/web-ui/build/static/wren-qULNE4ZV.js +1 -0
  477. package/web-ui/build/static/x86asm-DD2-d5-3.js +1 -0
  478. package/web-ui/build/static/xeora-CMja58lL.js +1 -0
  479. package/web-ui/build/static/xl-DKZpXGv8.js +1 -0
  480. package/web-ui/build/static/xml-Xf5ErmV_.js +1 -0
  481. package/web-ui/build/static/xml-doc-Bl_99SZE.js +1 -0
  482. package/web-ui/build/static/xojo-PwcPgmIF.js +1 -0
  483. package/web-ui/build/static/xquery-BshbqrZe.js +1 -0
  484. package/web-ui/build/static/xquery-DY2-GgvB.js +1 -0
  485. package/web-ui/build/static/yaml-9mp-mYjQ.js +1 -0
  486. package/web-ui/build/static/yaml-BnH4Y8-L.js +1 -0
  487. package/web-ui/build/static/yang-CRK7RS7V.js +1 -0
  488. package/web-ui/build/static/zephir-B560hCdS.js +1 -0
  489. package/web-ui/build/static/zig-CBG6H3iO.js +1 -0
  490. package/web-ui/build/static/1c-D0gS3Hso.js +0 -1
  491. package/web-ui/build/static/abap-CyCKEEhS.js +0 -1
  492. package/web-ui/build/static/abnf-BZBn0pag.js +0 -1
  493. package/web-ui/build/static/abnf-BpCrg_Bf.js +0 -1
  494. package/web-ui/build/static/accesslog-DuTggsRZ.js +0 -1
  495. package/web-ui/build/static/actionscript-Ba9yLObR.js +0 -1
  496. package/web-ui/build/static/actionscript-C_BTnWxb.js +0 -1
  497. package/web-ui/build/static/ada-B69_itVh.js +0 -1
  498. package/web-ui/build/static/ada-DoeTM_BQ.js +0 -1
  499. package/web-ui/build/static/agda-jCpnVEpX.js +0 -1
  500. package/web-ui/build/static/al-CakFGn97.js +0 -1
  501. package/web-ui/build/static/angelscript-CnSUNIGj.js +0 -1
  502. package/web-ui/build/static/antlr4-Cn-R7SWD.js +0 -1
  503. package/web-ui/build/static/apache-jWzYeO33.js +0 -1
  504. package/web-ui/build/static/apacheconf-Qf6ccteC.js +0 -1
  505. package/web-ui/build/static/apex-BBFeLnmZ.js +0 -1
  506. package/web-ui/build/static/apl-Id4G-9pR.js +0 -1
  507. package/web-ui/build/static/applescript-Cndkqqg_.js +0 -1
  508. package/web-ui/build/static/applescript-De2uOrG8.js +0 -1
  509. package/web-ui/build/static/aql-Bx0hBEFP.js +0 -1
  510. package/web-ui/build/static/arcade-kv3B2d64.js +0 -1
  511. package/web-ui/build/static/arduino-Di5etN7-.js +0 -1
  512. package/web-ui/build/static/arduino-dzzVGXPJ.js +0 -1
  513. package/web-ui/build/static/arff-vVmlJyxT.js +0 -1
  514. package/web-ui/build/static/armasm-CLLemW4j.js +0 -1
  515. package/web-ui/build/static/asciidoc-5N0GIB1H.js +0 -1
  516. package/web-ui/build/static/asciidoc-BUQcC9k5.js +0 -1
  517. package/web-ui/build/static/asm6502-DrvbjZqg.js +0 -1
  518. package/web-ui/build/static/asmatmel-DXaAmo9p.js +0 -1
  519. package/web-ui/build/static/aspectj-QEbU6lqv.js +0 -1
  520. package/web-ui/build/static/aspnet-D1DOd55H.js +0 -1
  521. package/web-ui/build/static/autohotkey-CeN6Nxl7.js +0 -1
  522. package/web-ui/build/static/autohotkey-DK33Y-ag.js +0 -1
  523. package/web-ui/build/static/autoit-Ce15EHmT.js +0 -1
  524. package/web-ui/build/static/autoit-Du48dS3x.js +0 -1
  525. package/web-ui/build/static/avisynth-CTNNDQJu.js +0 -1
  526. package/web-ui/build/static/avrasm-U3bAmy_8.js +0 -1
  527. package/web-ui/build/static/avro-idl-hdYq5Y_G.js +0 -1
  528. package/web-ui/build/static/awk-D_y_Ybkz.js +0 -1
  529. package/web-ui/build/static/axapta-BtorzWAb.js +0 -1
  530. package/web-ui/build/static/bash-C7jHPzRr.js +0 -1
  531. package/web-ui/build/static/bash-C8rx4ZX7.js +0 -1
  532. package/web-ui/build/static/basic-BnB1QbT9.js +0 -1
  533. package/web-ui/build/static/basic-C3lmrCJn.js +0 -1
  534. package/web-ui/build/static/batch-D3zfZMkE.js +0 -1
  535. package/web-ui/build/static/bbcode-CcaWY4r6.js +0 -1
  536. package/web-ui/build/static/bicep-BTSNjNeE.js +0 -1
  537. package/web-ui/build/static/birb-FlitQ-CB.js +0 -1
  538. package/web-ui/build/static/bison-BwUeAPik.js +0 -1
  539. package/web-ui/build/static/bnf-BO0epnqT.js +0 -1
  540. package/web-ui/build/static/bnf-Dr7Yhkhf.js +0 -1
  541. package/web-ui/build/static/brainfuck-CQXtVvdr.js +0 -1
  542. package/web-ui/build/static/brainfuck-DBI8WFED.js +0 -1
  543. package/web-ui/build/static/brightscript-DMCw9cpk.js +0 -1
  544. package/web-ui/build/static/bro-DLuuGrl1.js +0 -1
  545. package/web-ui/build/static/bsl-YJucc4YV.js +0 -1
  546. package/web-ui/build/static/c-DhDv7jSS.js +0 -1
  547. package/web-ui/build/static/c-DxhyzKko.js +0 -1
  548. package/web-ui/build/static/c-like-DlgSkBV0.js +0 -1
  549. package/web-ui/build/static/cal-l1d2rfZn.js +0 -1
  550. package/web-ui/build/static/capnproto-dj8ChcGe.js +0 -1
  551. package/web-ui/build/static/ceylon-D54yMfbT.js +0 -1
  552. package/web-ui/build/static/cfscript-D6rZc4oz.js +0 -1
  553. package/web-ui/build/static/chaiscript-C5TnPhY1.js +0 -1
  554. package/web-ui/build/static/cil-OfdzNvKT.js +0 -1
  555. package/web-ui/build/static/clean-CIKWd5m_.js +0 -1
  556. package/web-ui/build/static/clojure-DPPjCSD9.js +0 -1
  557. package/web-ui/build/static/clojure-E4hINJlB.js +0 -1
  558. package/web-ui/build/static/clojure-repl-ByPwVP0v.js +0 -1
  559. package/web-ui/build/static/cmake-EmgODR4I.js +0 -1
  560. package/web-ui/build/static/cmake-FzVdKoPQ.js +0 -1
  561. package/web-ui/build/static/cobol-BCywZ9YX.js +0 -1
  562. package/web-ui/build/static/coffeescript-B3PJfOGT.js +0 -1
  563. package/web-ui/build/static/coffeescript-Cn6ayg_l.js +0 -1
  564. package/web-ui/build/static/concurnas-CDZuVXuU.js +0 -1
  565. package/web-ui/build/static/coq-CmxamUdH.js +0 -1
  566. package/web-ui/build/static/coq-OIzJsY4F.js +0 -1
  567. package/web-ui/build/static/cos-DGL5rP0B.js +0 -1
  568. package/web-ui/build/static/cpp-6bJ9ZCLp.js +0 -1
  569. package/web-ui/build/static/cpp-CnpCPPE0.js +0 -1
  570. package/web-ui/build/static/crmsh-UqfNCx22.js +0 -1
  571. package/web-ui/build/static/crystal-BZPfo8wh.js +0 -1
  572. package/web-ui/build/static/crystal-BmnmtxvU.js +0 -1
  573. package/web-ui/build/static/csharp-Ddd4cQJM.js +0 -1
  574. package/web-ui/build/static/csharp-Ozmwd4H7.js +0 -1
  575. package/web-ui/build/static/cshtml-CKUifIKv.js +0 -1
  576. package/web-ui/build/static/csp-DIKKHabm.js +0 -1
  577. package/web-ui/build/static/csp-DVNj8KoC.js +0 -1
  578. package/web-ui/build/static/css-C5xXuaIa.js +0 -1
  579. package/web-ui/build/static/css-extras-BcO-SjvT.js +0 -1
  580. package/web-ui/build/static/csv-Ckfvef5r.js +0 -1
  581. package/web-ui/build/static/cypher-nFX3ujhC.js +0 -1
  582. package/web-ui/build/static/d-C51vBcAN.js +0 -1
  583. package/web-ui/build/static/d-C5Zzmfpj.js +0 -1
  584. package/web-ui/build/static/dart-DTgXq_zq.js +0 -1
  585. package/web-ui/build/static/dart-nEf62Xtl.js +0 -1
  586. package/web-ui/build/static/dataweave-BBu_SXNo.js +0 -1
  587. package/web-ui/build/static/dax-BgSY6VXv.js +0 -1
  588. package/web-ui/build/static/delphi-BsEFn1Dg.js +0 -1
  589. package/web-ui/build/static/dhall-DZLoRbRq.js +0 -1
  590. package/web-ui/build/static/diff-BigjWm8-.js +0 -1
  591. package/web-ui/build/static/diff-GaoenF5U.js +0 -1
  592. package/web-ui/build/static/django-BHquQxg_.js +0 -1
  593. package/web-ui/build/static/django-BklTsfN1.js +0 -1
  594. package/web-ui/build/static/dns-Fye2v3C_.js +0 -1
  595. package/web-ui/build/static/dns-zone-file-Cl9DxAn6.js +0 -1
  596. package/web-ui/build/static/docker-ByXHv0Ly.js +0 -1
  597. package/web-ui/build/static/dockerfile-C3JvS7wx.js +0 -1
  598. package/web-ui/build/static/dos-DZjvZtlb.js +0 -1
  599. package/web-ui/build/static/dot-Ce9RBw-P.js +0 -1
  600. package/web-ui/build/static/dsconfig-CqzyFCWR.js +0 -1
  601. package/web-ui/build/static/dts-CzmHan27.js +0 -1
  602. package/web-ui/build/static/dust-ooMZaltT.js +0 -1
  603. package/web-ui/build/static/ebnf-BQTW3VN9.js +0 -1
  604. package/web-ui/build/static/ebnf-BWQPIMhj.js +0 -1
  605. package/web-ui/build/static/editorconfig-ChULEndb.js +0 -1
  606. package/web-ui/build/static/eiffel-DNf4Lf6d.js +0 -1
  607. package/web-ui/build/static/ejs-BN91k0H9.js +0 -1
  608. package/web-ui/build/static/elixir-BsUN2TJ3.js +0 -1
  609. package/web-ui/build/static/elixir-DowOmwjw.js +0 -1
  610. package/web-ui/build/static/elm-BR0-AOlB.js +0 -1
  611. package/web-ui/build/static/elm-CyQ-Tu1y.js +0 -1
  612. package/web-ui/build/static/erb-C3-ICRZC.js +0 -1
  613. package/web-ui/build/static/erb-CDwwnVfP.js +0 -1
  614. package/web-ui/build/static/erlang-CkKAvBqC.js +0 -1
  615. package/web-ui/build/static/erlang-b8hjzYg_.js +0 -1
  616. package/web-ui/build/static/erlang-repl-gGfh3Gx4.js +0 -1
  617. package/web-ui/build/static/etlua-DD1BETje.js +0 -1
  618. package/web-ui/build/static/excel-BHUhNjbb.js +0 -1
  619. package/web-ui/build/static/excel-formula-pygAkTSb.js +0 -1
  620. package/web-ui/build/static/factor-DGtAXbeO.js +0 -1
  621. package/web-ui/build/static/false-CmwPZZMx.js +0 -1
  622. package/web-ui/build/static/firestore-security-rules-BPVh7g3V.js +0 -1
  623. package/web-ui/build/static/fix-D0X2IrLW.js +0 -1
  624. package/web-ui/build/static/flix-B_K9PtSC.js +0 -1
  625. package/web-ui/build/static/flow-Bj8UDWFS.js +0 -1
  626. package/web-ui/build/static/fortran-CVjlvxYP.js +0 -1
  627. package/web-ui/build/static/fortran-CeuwkeSi.js +0 -1
  628. package/web-ui/build/static/fsharp-7ZnhHRI2.js +0 -1
  629. package/web-ui/build/static/fsharp-Dg0zkEUM.js +0 -1
  630. package/web-ui/build/static/ftl-DTiv91OH.js +0 -1
  631. package/web-ui/build/static/gams-mzIliqa9.js +0 -1
  632. package/web-ui/build/static/gap-CZy17Yrg.js +0 -1
  633. package/web-ui/build/static/gauss-eN8ZSPsu.js +0 -1
  634. package/web-ui/build/static/gcode-BilRDZ1d.js +0 -1
  635. package/web-ui/build/static/gcode-DgLXH4R9.js +0 -1
  636. package/web-ui/build/static/gdscript-ZYuV2APS.js +0 -1
  637. package/web-ui/build/static/gedcom-0kGxJiZ9.js +0 -1
  638. package/web-ui/build/static/gherkin-CCSGpV3s.js +0 -1
  639. package/web-ui/build/static/gherkin-DGxXFCBT.js +0 -1
  640. package/web-ui/build/static/git-CdLGzlwT.js +0 -1
  641. package/web-ui/build/static/glsl-BtFVLAdf.js +0 -1
  642. package/web-ui/build/static/glsl-pOLV_i61.js +0 -1
  643. package/web-ui/build/static/gml-BvRYdpYB.js +0 -1
  644. package/web-ui/build/static/gml-kixDldbq.js +0 -1
  645. package/web-ui/build/static/gn-B0j6r1ZR.js +0 -1
  646. package/web-ui/build/static/go-0gVqv26H.js +0 -1
  647. package/web-ui/build/static/go-hMMVdAxn.js +0 -1
  648. package/web-ui/build/static/go-module-nQEPOPuc.js +0 -1
  649. package/web-ui/build/static/golo-Dm43VBu7.js +0 -1
  650. package/web-ui/build/static/gradle-CHC1_Cae.js +0 -1
  651. package/web-ui/build/static/graphql-0VBsLded.js +0 -1
  652. package/web-ui/build/static/groovy-D8pgT7Gh.js +0 -1
  653. package/web-ui/build/static/groovy-LYh6lufY.js +0 -1
  654. package/web-ui/build/static/haml-D7TlUCYV.js +0 -1
  655. package/web-ui/build/static/haml-DM_YbLsX.js +0 -1
  656. package/web-ui/build/static/handlebars-C6s9z8yY.js +0 -1
  657. package/web-ui/build/static/handlebars-MmYUBbhF.js +0 -1
  658. package/web-ui/build/static/haskell-WDNKcSr-.js +0 -1
  659. package/web-ui/build/static/haskell-uN4RNceQ.js +0 -1
  660. package/web-ui/build/static/haxe-BfngEDpC.js +0 -1
  661. package/web-ui/build/static/haxe-Di7jSobz.js +0 -1
  662. package/web-ui/build/static/hcl-CCY9WaU5.js +0 -1
  663. package/web-ui/build/static/hlsl-BZeRODlS.js +0 -1
  664. package/web-ui/build/static/hoon-CYgEwHo6.js +0 -1
  665. package/web-ui/build/static/hpkp-CDGRQT6H.js +0 -1
  666. package/web-ui/build/static/hsp-Bd3e6SwQ.js +0 -1
  667. package/web-ui/build/static/hsts-BOUlTJ6c.js +0 -1
  668. package/web-ui/build/static/htmlbars-BPiYH0_n.js +0 -1
  669. package/web-ui/build/static/http-BX5oUCxR.js +0 -1
  670. package/web-ui/build/static/http-DVroDmj6.js +0 -1
  671. package/web-ui/build/static/hy-BCcF_QHP.js +0 -1
  672. package/web-ui/build/static/ichigojam-BiISBr0y.js +0 -1
  673. package/web-ui/build/static/icon-ClvK1B41.js +0 -1
  674. package/web-ui/build/static/icu-message-format-DbYDqmui.js +0 -1
  675. package/web-ui/build/static/idris-DUkwgVYa.js +0 -1
  676. package/web-ui/build/static/iecst-Dsthm7u9.js +0 -1
  677. package/web-ui/build/static/ignore-C6sD6BBI.js +0 -1
  678. package/web-ui/build/static/index-BJi0QI4y.js +0 -13
  679. package/web-ui/build/static/index-BUtXAjd5.css +0 -1
  680. package/web-ui/build/static/index-C0yagaf_.js +0 -1
  681. package/web-ui/build/static/index-rmQCMu11.js +0 -834
  682. package/web-ui/build/static/inform7-BhpCpaCI.js +0 -1
  683. package/web-ui/build/static/inform7-CypdUZ2H.js +0 -1
  684. package/web-ui/build/static/ini-D3bMjLFy.js +0 -1
  685. package/web-ui/build/static/ini-mZ4DmMFa.js +0 -1
  686. package/web-ui/build/static/io-CAPenDjW.js +0 -1
  687. package/web-ui/build/static/irpf90-DMLZfHOl.js +0 -1
  688. package/web-ui/build/static/isbl-C-heO4bo.js +0 -1
  689. package/web-ui/build/static/j-CYnuDyva.js +0 -1
  690. package/web-ui/build/static/java-BwxvO1xU.js +0 -1
  691. package/web-ui/build/static/java-DrS-TIOG.js +0 -1
  692. package/web-ui/build/static/javadoc-C7g1nvf0.js +0 -1
  693. package/web-ui/build/static/javadoclike-BccMcxyJ.js +0 -1
  694. package/web-ui/build/static/javascript-BTLBzg4X.js +0 -1
  695. package/web-ui/build/static/javastacktrace-DMfJDkdg.js +0 -1
  696. package/web-ui/build/static/jboss-cli-Bod2dA9a.js +0 -1
  697. package/web-ui/build/static/jexl-N6nsHGWj.js +0 -1
  698. package/web-ui/build/static/jolie-CsrX6xYs.js +0 -1
  699. package/web-ui/build/static/jq-UVBu2R02.js +0 -1
  700. package/web-ui/build/static/js-extras-CuwwBN5k.js +0 -1
  701. package/web-ui/build/static/js-templates-DIBe0p7a.js +0 -1
  702. package/web-ui/build/static/jsdoc-DtDbuWdy.js +0 -1
  703. package/web-ui/build/static/json-BI3FHwe1.js +0 -1
  704. package/web-ui/build/static/json-P6SuA8aJ.js +0 -1
  705. package/web-ui/build/static/json5-CRP2homn.js +0 -1
  706. package/web-ui/build/static/jsonp-9ElDctKO.js +0 -1
  707. package/web-ui/build/static/jsstacktrace-D2Fl9d_V.js +0 -1
  708. package/web-ui/build/static/jsx-CQTwBhTH.js +0 -1
  709. package/web-ui/build/static/julia-DuUl4PLy.js +0 -1
  710. package/web-ui/build/static/julia-nGiK_b-G.js +0 -1
  711. package/web-ui/build/static/julia-repl-CZXv3gUI.js +0 -1
  712. package/web-ui/build/static/keepalived-BXuewLUw.js +0 -1
  713. package/web-ui/build/static/keyman-qJzqzYn7.js +0 -1
  714. package/web-ui/build/static/kotlin-B9n_utKk.js +0 -1
  715. package/web-ui/build/static/kotlin-haL4BAuN.js +0 -1
  716. package/web-ui/build/static/kumir-B3qOyQmg.js +0 -1
  717. package/web-ui/build/static/kusto-DBaBX58G.js +0 -1
  718. package/web-ui/build/static/lasso-BKSAUuYM.js +0 -1
  719. package/web-ui/build/static/latex-BRrZyaQT.js +0 -1
  720. package/web-ui/build/static/latex-m1lQaqf1.js +0 -1
  721. package/web-ui/build/static/latte-eiBbKf65.js +0 -1
  722. package/web-ui/build/static/ldif-y2LZUUyZ.js +0 -1
  723. package/web-ui/build/static/leaf-hIUS2wti.js +0 -1
  724. package/web-ui/build/static/less-Bo6R8taI.js +0 -1
  725. package/web-ui/build/static/less-DuKmENyN.js +0 -1
  726. package/web-ui/build/static/lilypond-BBpJhRQ9.js +0 -1
  727. package/web-ui/build/static/liquid-CAprdcX2.js +0 -1
  728. package/web-ui/build/static/lisp-Bf1XYdUw.js +0 -1
  729. package/web-ui/build/static/lisp-CK4NShQS.js +0 -1
  730. package/web-ui/build/static/livecodeserver-D-7DT8n5.js +0 -1
  731. package/web-ui/build/static/livescript-C53jjB4u.js +0 -1
  732. package/web-ui/build/static/livescript-C6BLAugR.js +0 -1
  733. package/web-ui/build/static/llvm-DwsfQGGS.js +0 -1
  734. package/web-ui/build/static/llvm-x2WOwJip.js +0 -1
  735. package/web-ui/build/static/log-ycx4d2kp.js +0 -1
  736. package/web-ui/build/static/lolcode-kQPJj9kJ.js +0 -1
  737. package/web-ui/build/static/lsl-DYPjhHe3.js +0 -1
  738. package/web-ui/build/static/lua-DbyfdtuA.js +0 -1
  739. package/web-ui/build/static/lua-k-RdWswg.js +0 -1
  740. package/web-ui/build/static/magma-C0BRcgX4.js +0 -1
  741. package/web-ui/build/static/makefile-CZQdxsni.js +0 -1
  742. package/web-ui/build/static/makefile-D-G1cICu.js +0 -1
  743. package/web-ui/build/static/markdown-BXgB-fA-.js +0 -1
  744. package/web-ui/build/static/markdown-Ce-22f29.js +0 -1
  745. package/web-ui/build/static/markup-templating-BpdQJTBM.js +0 -1
  746. package/web-ui/build/static/mathematica-IkAnPpu4.js +0 -1
  747. package/web-ui/build/static/matlab-D00TnflQ.js +0 -1
  748. package/web-ui/build/static/matlab-D9nj0uha.js +0 -1
  749. package/web-ui/build/static/maxima-C7a7zrie.js +0 -1
  750. package/web-ui/build/static/maxscript-BV3koaAu.js +0 -1
  751. package/web-ui/build/static/mel-C7fC2vR0.js +0 -1
  752. package/web-ui/build/static/mel-DUFmm8LA.js +0 -1
  753. package/web-ui/build/static/mercury-D0zWajPt.js +0 -1
  754. package/web-ui/build/static/mermaid-BcIFh8lC.js +0 -1
  755. package/web-ui/build/static/mipsasm-Ch8zsfD7.js +0 -1
  756. package/web-ui/build/static/mizar-D72L8LdH.js +0 -1
  757. package/web-ui/build/static/mizar-H2a4eeQU.js +0 -1
  758. package/web-ui/build/static/mojolicious-CXGZY6wR.js +0 -1
  759. package/web-ui/build/static/mongodb-ycbZ-Gtu.js +0 -1
  760. package/web-ui/build/static/monkey-B1PWgo4u.js +0 -1
  761. package/web-ui/build/static/monkey-BTLKqHiE.js +0 -1
  762. package/web-ui/build/static/moonscript-CGujt4hQ.js +0 -1
  763. package/web-ui/build/static/moonscript-Cd65ANue.js +0 -1
  764. package/web-ui/build/static/n1ql-5SoXRWF5.js +0 -1
  765. package/web-ui/build/static/n1ql-SrTc8dgR.js +0 -1
  766. package/web-ui/build/static/n4js-DcydNbvU.js +0 -1
  767. package/web-ui/build/static/nand2tetris-hdl-DgTjIFTD.js +0 -1
  768. package/web-ui/build/static/naniscript-Cgu0Uhgv.js +0 -1
  769. package/web-ui/build/static/nasm-C6Jwlhb3.js +0 -1
  770. package/web-ui/build/static/neon-BlmLz-44.js +0 -1
  771. package/web-ui/build/static/nevod-QYVtYYuZ.js +0 -1
  772. package/web-ui/build/static/nginx-BuLLVaOi.js +0 -1
  773. package/web-ui/build/static/nginx-D32yC6aV.js +0 -1
  774. package/web-ui/build/static/nim-lYMS-Zao.js +0 -1
  775. package/web-ui/build/static/nim-mOq8l1DZ.js +0 -1
  776. package/web-ui/build/static/nix-BF2uUjB0.js +0 -1
  777. package/web-ui/build/static/nix-CvXMc2Qe.js +0 -1
  778. package/web-ui/build/static/node-repl-b6WSKwpJ.js +0 -1
  779. package/web-ui/build/static/nsis-By4cMroz.js +0 -1
  780. package/web-ui/build/static/nsis-CdtEDB4h.js +0 -1
  781. package/web-ui/build/static/objectivec-1qRjQ45C.js +0 -1
  782. package/web-ui/build/static/objectivec-B_fabLIN.js +0 -1
  783. package/web-ui/build/static/ocaml-CgNFmQRO.js +0 -1
  784. package/web-ui/build/static/ocaml-RYK_k0qm.js +0 -1
  785. package/web-ui/build/static/opencl-DS8fpnDf.js +0 -1
  786. package/web-ui/build/static/openqasm-DJaB3Rq-.js +0 -1
  787. package/web-ui/build/static/openscad-CG2Cr9_f.js +0 -1
  788. package/web-ui/build/static/oxygene-C5StnXkF.js +0 -1
  789. package/web-ui/build/static/oz-Chp4Q4tx.js +0 -1
  790. package/web-ui/build/static/parigp-CHrkrXXH.js +0 -1
  791. package/web-ui/build/static/parser-oClS8RsF.js +0 -1
  792. package/web-ui/build/static/parser3-DAnZ8BBa.js +0 -1
  793. package/web-ui/build/static/pascal-C3UXKTAg.js +0 -1
  794. package/web-ui/build/static/pascaligo-bQ2eEItJ.js +0 -1
  795. package/web-ui/build/static/pcaxis-Cb18v5lb.js +0 -1
  796. package/web-ui/build/static/peoplecode-DSinbacy.js +0 -1
  797. package/web-ui/build/static/perl-CJyKzdWx.js +0 -1
  798. package/web-ui/build/static/perl-DPC7B2HS.js +0 -1
  799. package/web-ui/build/static/pf-CufleM0I.js +0 -1
  800. package/web-ui/build/static/pgsql-C_0MdqVp.js +0 -1
  801. package/web-ui/build/static/php-BO1Ap_Os.js +0 -1
  802. package/web-ui/build/static/php-CJgcNJVe.js +0 -1
  803. package/web-ui/build/static/php-extras-BXgszKUS.js +0 -1
  804. package/web-ui/build/static/php-template-Cb_xvIiQ.js +0 -1
  805. package/web-ui/build/static/phpdoc-BfOts4aJ.js +0 -1
  806. package/web-ui/build/static/plaintext-DN7uh6jc.js +0 -1
  807. package/web-ui/build/static/plsql-v3WUpEeY.js +0 -1
  808. package/web-ui/build/static/pony-DJxNA-H0.js +0 -1
  809. package/web-ui/build/static/powerquery-BtsNylnn.js +0 -1
  810. package/web-ui/build/static/powershell-C6cTgKNj.js +0 -1
  811. package/web-ui/build/static/powershell-w7qa2Po0.js +0 -1
  812. package/web-ui/build/static/processing-B4LQG2qT.js +0 -1
  813. package/web-ui/build/static/processing-sqZsG0Ty.js +0 -1
  814. package/web-ui/build/static/profile-BmJYpErx.js +0 -1
  815. package/web-ui/build/static/prolog-BesbmNtC.js +0 -1
  816. package/web-ui/build/static/prolog-Bhfih4kN.js +0 -1
  817. package/web-ui/build/static/promql-C0f632z2.js +0 -1
  818. package/web-ui/build/static/properties-D4QlRz8E.js +0 -1
  819. package/web-ui/build/static/properties-jKkliMyl.js +0 -1
  820. package/web-ui/build/static/protobuf-1DEpY6d3.js +0 -1
  821. package/web-ui/build/static/protobuf-BGXS-kPK.js +0 -1
  822. package/web-ui/build/static/psl-C0CZXE-V.js +0 -1
  823. package/web-ui/build/static/pug-BF9VjA3d.js +0 -1
  824. package/web-ui/build/static/puppet-DbCz1V2e.js +0 -1
  825. package/web-ui/build/static/puppet-sw6E5TP0.js +0 -1
  826. package/web-ui/build/static/pure-C7mJA0tr.js +0 -1
  827. package/web-ui/build/static/purebasic-BSMar56G.js +0 -1
  828. package/web-ui/build/static/purebasic-lZ85aQ75.js +0 -1
  829. package/web-ui/build/static/purescript-7W6hcoJU.js +0 -1
  830. package/web-ui/build/static/python-Cf1rHsAv.js +0 -1
  831. package/web-ui/build/static/python-D6YthG1T.js +0 -1
  832. package/web-ui/build/static/python-repl-L_ce-JlI.js +0 -1
  833. package/web-ui/build/static/q-C4jLiln2.js +0 -1
  834. package/web-ui/build/static/q-DbbElowk.js +0 -1
  835. package/web-ui/build/static/qml-BpzqRYBe.js +0 -1
  836. package/web-ui/build/static/qml-DhqooLOn.js +0 -1
  837. package/web-ui/build/static/qore-CDdWlH4L.js +0 -1
  838. package/web-ui/build/static/qsharp-CYjzWQn8.js +0 -1
  839. package/web-ui/build/static/r-C0m7OAlP.js +0 -1
  840. package/web-ui/build/static/r-nRzPzIPC.js +0 -1
  841. package/web-ui/build/static/racket-BMk7mOQz.js +0 -1
  842. package/web-ui/build/static/reason-BXQPEhQe.js +0 -1
  843. package/web-ui/build/static/reasonml-BX4tkmG7.js +0 -1
  844. package/web-ui/build/static/regex-I514pFOx.js +0 -1
  845. package/web-ui/build/static/rego-nryy7Qo5.js +0 -1
  846. package/web-ui/build/static/renpy-73dSR30u.js +0 -1
  847. package/web-ui/build/static/rest-BVkqAn_D.js +0 -1
  848. package/web-ui/build/static/rib-CkA1SeIw.js +0 -1
  849. package/web-ui/build/static/rip-DdqP7xQ_.js +0 -1
  850. package/web-ui/build/static/roboconf-B1xFEP2z.js +0 -1
  851. package/web-ui/build/static/roboconf-MHZ9iUN8.js +0 -1
  852. package/web-ui/build/static/robotframework-Be6JB4Sm.js +0 -1
  853. package/web-ui/build/static/routeros-BDbHsrl3.js +0 -1
  854. package/web-ui/build/static/rsl-vBbR8fM2.js +0 -1
  855. package/web-ui/build/static/ruby-Bl6coIpX.js +0 -1
  856. package/web-ui/build/static/ruby-CYoX7aZ3.js +0 -1
  857. package/web-ui/build/static/ruleslanguage-CNda0rO_.js +0 -1
  858. package/web-ui/build/static/rust-Cn7CeLWb.js +0 -1
  859. package/web-ui/build/static/rust-DqfPHA-4.js +0 -1
  860. package/web-ui/build/static/sas-DX4nVHMx.js +0 -1
  861. package/web-ui/build/static/sas-TP86Lr_H.js +0 -1
  862. package/web-ui/build/static/sass-DLbsRbZq.js +0 -1
  863. package/web-ui/build/static/scala-BnuBUE7N.js +0 -1
  864. package/web-ui/build/static/scala-e0xCO3PH.js +0 -1
  865. package/web-ui/build/static/scheme-CgksT1_b.js +0 -1
  866. package/web-ui/build/static/scheme-wKIEujhs.js +0 -1
  867. package/web-ui/build/static/scilab-BK5XtNGf.js +0 -1
  868. package/web-ui/build/static/scss-CgF0LqaR.js +0 -1
  869. package/web-ui/build/static/scss-DtfwOUSt.js +0 -1
  870. package/web-ui/build/static/shell-mV_H_B9k.js +0 -1
  871. package/web-ui/build/static/shell-session-CcycyI-F.js +0 -1
  872. package/web-ui/build/static/smali-DUHlxZcA.js +0 -1
  873. package/web-ui/build/static/smali-vgrIyB1v.js +0 -1
  874. package/web-ui/build/static/smalltalk-C0Ge9l_D.js +0 -1
  875. package/web-ui/build/static/smalltalk-CXwx9xen.js +0 -1
  876. package/web-ui/build/static/smarty-ATfkwbr-.js +0 -1
  877. package/web-ui/build/static/sml-CPHHv48a.js +0 -1
  878. package/web-ui/build/static/sml-D8zKZZ0g.js +0 -1
  879. package/web-ui/build/static/solidity-DU2sGoWA.js +0 -1
  880. package/web-ui/build/static/solution-file-D20yiaNa.js +0 -1
  881. package/web-ui/build/static/soy-NkZd2NuM.js +0 -1
  882. package/web-ui/build/static/sparql-CURkC9N5.js +0 -1
  883. package/web-ui/build/static/splunk-spl-DACtCZRc.js +0 -1
  884. package/web-ui/build/static/sqf-BEdMNLDm.js +0 -1
  885. package/web-ui/build/static/sqf-RqYJHX2k.js +0 -1
  886. package/web-ui/build/static/sql-Bgepr53d.js +0 -1
  887. package/web-ui/build/static/sql-CW0TRs77.js +0 -1
  888. package/web-ui/build/static/sql_more-C2HWexYA.js +0 -1
  889. package/web-ui/build/static/squirrel-B6wcVYWs.js +0 -1
  890. package/web-ui/build/static/stan-Dl3AavYY.js +0 -1
  891. package/web-ui/build/static/stan-RZ2M2r7-.js +0 -1
  892. package/web-ui/build/static/stata-PGzYv80j.js +0 -1
  893. package/web-ui/build/static/step21-yyjO2ozE.js +0 -1
  894. package/web-ui/build/static/stylus-CA7oCY6H.js +0 -1
  895. package/web-ui/build/static/stylus-CMppe6Nc.js +0 -1
  896. package/web-ui/build/static/subunit-CgXzRGNV.js +0 -1
  897. package/web-ui/build/static/swift-BEZPFJIt.js +0 -1
  898. package/web-ui/build/static/swift-N42216FZ.js +0 -1
  899. package/web-ui/build/static/systemd-DFn17zHD.js +0 -1
  900. package/web-ui/build/static/t4-cs-D2og3B0M.js +0 -1
  901. package/web-ui/build/static/t4-templating-D9rCAn0c.js +0 -1
  902. package/web-ui/build/static/t4-vb-DG0xTVDc.js +0 -1
  903. package/web-ui/build/static/taggerscript-C89CvllW.js +0 -1
  904. package/web-ui/build/static/tap-D19DYT30.js +0 -1
  905. package/web-ui/build/static/tap-ERFF4Ark.js +0 -1
  906. package/web-ui/build/static/tcl-BCrLy0kY.js +0 -1
  907. package/web-ui/build/static/tcl-Db3hH49l.js +0 -1
  908. package/web-ui/build/static/textile-C45CZf2E.js +0 -1
  909. package/web-ui/build/static/thrift-DPSiQbdQ.js +0 -1
  910. package/web-ui/build/static/toml-OY_aaWwT.js +0 -1
  911. package/web-ui/build/static/tp-B3eRQVO4.js +0 -1
  912. package/web-ui/build/static/tremor-BqAT46SE.js +0 -1
  913. package/web-ui/build/static/tsx-BCfhl9AT.js +0 -1
  914. package/web-ui/build/static/tt2-C0sqlstv.js +0 -1
  915. package/web-ui/build/static/turtle-ClBSXu8f.js +0 -1
  916. package/web-ui/build/static/twig-BxxoTcyR.js +0 -1
  917. package/web-ui/build/static/twig-D1iWWft8.js +0 -1
  918. package/web-ui/build/static/typescript-D92P7Q_T.js +0 -1
  919. package/web-ui/build/static/typescript-IMBE9asI.js +0 -1
  920. package/web-ui/build/static/typoscript-Ct5LqTJd.js +0 -1
  921. package/web-ui/build/static/unrealscript-DzhFlMW5.js +0 -1
  922. package/web-ui/build/static/uorazor-DR4IM7ll.js +0 -1
  923. package/web-ui/build/static/uri-D10KlPiP.js +0 -1
  924. package/web-ui/build/static/v-CHHzCtfa.js +0 -1
  925. package/web-ui/build/static/vala-ChoAAQZv.js +0 -1
  926. package/web-ui/build/static/vala-CsGoPWkE.js +0 -1
  927. package/web-ui/build/static/vbnet-BSMzhrci.js +0 -1
  928. package/web-ui/build/static/vbnet-tWgXxlpd.js +0 -1
  929. package/web-ui/build/static/vbscript-C5MSBjcM.js +0 -1
  930. package/web-ui/build/static/vbscript-html-DgC8phmk.js +0 -1
  931. package/web-ui/build/static/velocity-ChLZNkgf.js +0 -1
  932. package/web-ui/build/static/verilog-RKDyj9CP.js +0 -1
  933. package/web-ui/build/static/verilog-qAYw6v_5.js +0 -1
  934. package/web-ui/build/static/vhdl-CRSvweFg.js +0 -1
  935. package/web-ui/build/static/vhdl-DnTmxitY.js +0 -1
  936. package/web-ui/build/static/vim-CnOJH9xw.js +0 -1
  937. package/web-ui/build/static/vim-LKJY3Sb8.js +0 -1
  938. package/web-ui/build/static/visual-basic-DZTN8GNq.js +0 -1
  939. package/web-ui/build/static/warpscript-Bz5PHWGb.js +0 -1
  940. package/web-ui/build/static/wasm-DjXA7rVQ.js +0 -1
  941. package/web-ui/build/static/web-idl-qpPnV3-c.js +0 -1
  942. package/web-ui/build/static/wiki-h1S7Uj0l.js +0 -1
  943. package/web-ui/build/static/wolfram-BsqW0Evw.js +0 -1
  944. package/web-ui/build/static/wren-2NkHwSLr.js +0 -1
  945. package/web-ui/build/static/x86asm-D8Cg9MTd.js +0 -1
  946. package/web-ui/build/static/xeora-CIwPPgRx.js +0 -1
  947. package/web-ui/build/static/xl-DIsgBj_c.js +0 -1
  948. package/web-ui/build/static/xml-D19j4_jb.js +0 -1
  949. package/web-ui/build/static/xml-doc-DMtIXpse.js +0 -1
  950. package/web-ui/build/static/xojo-Yr0egAH7.js +0 -1
  951. package/web-ui/build/static/xquery-3A0gaIyY.js +0 -1
  952. package/web-ui/build/static/xquery-ondigVMj.js +0 -1
  953. package/web-ui/build/static/yaml-BC7GbQPc.js +0 -1
  954. package/web-ui/build/static/yaml-DvN1W_m1.js +0 -1
  955. package/web-ui/build/static/yang-BJH3-Oqi.js +0 -1
  956. package/web-ui/build/static/zephir-DsXXe3UC.js +0 -1
  957. package/web-ui/build/static/zig-9jAF8TxG.js +0 -1
@@ -0,0 +1,318 @@
1
+ /**
2
+ * Message source — provenance metadata for inbound user messages.
3
+ *
4
+ * Attached at the inbound-service boundary (Discord / Telegram inbound),
5
+ * preserved verbatim through the orchestrator -> messageProcessor ->
6
+ * agentPool pipeline, and rendered as a single attribution line prepended
7
+ * to the message content so the agent can see where the message arrived
8
+ * from and decide for itself how to respond.
9
+ *
10
+ * Design notes
11
+ * ------------
12
+ * - Pure module. No discord.js / node-telegram-bot-api imports. Tests run
13
+ * without network, DB, or platform-SDK setup.
14
+ * - Factories are defensive: they accept the full platform message object
15
+ * and tolerate missing fields rather than throwing. A partial source is
16
+ * better than no source for the agent to reason about.
17
+ * - Output is deeply frozen so downstream code can't silently mutate
18
+ * provenance. Surprising mutation of a source once it's on a queued
19
+ * message would be a correctness nightmare to debug.
20
+ * - `alias` is chosen to match the strings advertised by
21
+ * discordService.getBridgedChannels / telegramService.getBridgedChannels,
22
+ * so <external to="…"> routing composes with channelFilter's substring
23
+ * matching without any translation layer.
24
+ * - `describeSource(src)` returns a human-readable attribution for the
25
+ * header; `prependSourceHeader(content, src)` is idempotent so replaying
26
+ * a message through the pipeline never double-prefixes.
27
+ */
28
+
29
+ /**
30
+ * Exhaustive discriminator for the source kind. Adding a new kind is a
31
+ * deliberate act — downstream consumers (the scheduler's prompt injector,
32
+ * the relay services) switch on this value.
33
+ */
34
+ export const MESSAGE_SOURCE_KINDS = Object.freeze({
35
+ DISCORD: 'discord',
36
+ TELEGRAM: 'telegram',
37
+ WEB: 'web',
38
+ API: 'api',
39
+ INTERNAL: 'internal',
40
+ });
41
+
42
+ /**
43
+ * @typedef {Object} MessageSource
44
+ * @property {'discord'|'telegram'|'web'|'api'|'internal'} kind
45
+ * @property {string} alias
46
+ * @property {string} sessionId
47
+ * @property {Object} raw Kind-specific identifiers (channel ids, user ids, …)
48
+ */
49
+
50
+ /**
51
+ * Deep-freeze a plain object tree. Keeps the source literal-immutable so
52
+ * any code that treats it as a value-object is safe.
53
+ * @param {any} value
54
+ * @returns {any}
55
+ */
56
+ function freezeDeep(value) {
57
+ if (value === null || typeof value !== 'object') return value;
58
+ if (Object.isFrozen(value)) return value;
59
+ for (const key of Object.keys(value)) {
60
+ freezeDeep(value[key]);
61
+ }
62
+ return Object.freeze(value);
63
+ }
64
+
65
+ // ────────────────────────────────────────────────────────────────────────
66
+ // Discord
67
+ // ────────────────────────────────────────────────────────────────────────
68
+
69
+ /**
70
+ * Build a MessageSource from a discord.js Message object.
71
+ *
72
+ * Tolerant of missing fields: DMs have no guild, non-threaded channels
73
+ * have no parent, bot-posted messages have no author — each just produces
74
+ * a `null` in the raw payload and is gracefully handled by describeSource.
75
+ *
76
+ * @param {Object} discordMessage discord.js Message
77
+ * @returns {MessageSource}
78
+ */
79
+ export function createDiscordSource(discordMessage) {
80
+ const msg = discordMessage || {};
81
+ const channel = msg.channel || {};
82
+ const guild = msg.guild || null;
83
+ const author = msg.author || {};
84
+
85
+ const isThread = typeof channel.isThread === 'function'
86
+ ? !!channel.isThread()
87
+ : false;
88
+
89
+ const raw = {
90
+ messageId: msg.id ?? null,
91
+ channelId: channel.id ?? null,
92
+ channelName: channel.name ?? null,
93
+ authorId: author.id ?? null,
94
+ authorName: author.username ?? author.globalName ?? null,
95
+ guildId: guild?.id ?? null,
96
+ guildName: guild?.name ?? null,
97
+ // Thread metadata: threadId/threadName are set only when the message
98
+ // arrived inside a thread. parentChannel* records the channel the
99
+ // thread lives under, so describeSource can render the full path.
100
+ threadId: isThread ? (channel.id ?? null) : null,
101
+ threadName: isThread ? (channel.name ?? null) : null,
102
+ parentChannelId: isThread ? (channel.parentId ?? null) : null,
103
+ parentChannelName: isThread ? (channel.parent?.name ?? null) : null,
104
+ };
105
+
106
+ const alias = _computeDiscordAlias(raw);
107
+ const sessionId = `discord-${raw.guildId || 'dm'}-${raw.channelId || 'unknown'}`;
108
+
109
+ return freezeDeep({
110
+ kind: MESSAGE_SOURCE_KINDS.DISCORD,
111
+ alias,
112
+ sessionId,
113
+ raw,
114
+ });
115
+ }
116
+
117
+ /**
118
+ * Canonical Discord alias. Format matches discordService.getBridgedChannels
119
+ * output so the agent can round-trip an alias from the bridged-channel list
120
+ * back through `<external to="…">` with no translation.
121
+ *
122
+ * For threads we still alias by the thread's own channel id / name because
123
+ * that's what the relay dispatches to. The parent channel is only used for
124
+ * the human-readable label.
125
+ * @private
126
+ */
127
+ function _computeDiscordAlias(raw) {
128
+ if (raw.channelName) return `discord:#${raw.channelName}`;
129
+ if (raw.channelId) return `discord:${raw.channelId}`;
130
+ return 'discord:unknown';
131
+ }
132
+
133
+ // ────────────────────────────────────────────────────────────────────────
134
+ // Telegram
135
+ // ────────────────────────────────────────────────────────────────────────
136
+
137
+ /**
138
+ * Build a MessageSource from a node-telegram-bot-api Message object.
139
+ *
140
+ * @param {Object} telegramMessage node-telegram-bot-api Message
141
+ * @returns {MessageSource}
142
+ */
143
+ export function createTelegramSource(telegramMessage) {
144
+ const msg = telegramMessage || {};
145
+ const chat = msg.chat || {};
146
+ const from = msg.from || {};
147
+
148
+ const raw = {
149
+ messageId: msg.message_id ?? null,
150
+ chatId: chat.id ?? null,
151
+ chatType: chat.type ?? null, // 'private' | 'group' | 'supergroup' | 'channel'
152
+ chatTitle: chat.title ?? null,
153
+ userId: from.id ?? null,
154
+ userName: from.username ?? from.first_name ?? null,
155
+ };
156
+
157
+ // Telegram's relay service today is single-chat-per-instance and
158
+ // advertises the bare alias `telegram`. For per-chat addressability we
159
+ // emit `telegram:chat-<id>` which matches exactly one owned alias when
160
+ // the service's bridge list grows richer, and still substring-matches
161
+ // `telegram` (the current owned alias) when it doesn't.
162
+ const alias = raw.chatId != null ? `telegram:chat-${raw.chatId}` : 'telegram';
163
+ const sessionId = `telegram-${raw.chatId ?? 'unknown'}`;
164
+
165
+ return freezeDeep({
166
+ kind: MESSAGE_SOURCE_KINDS.TELEGRAM,
167
+ alias,
168
+ sessionId,
169
+ raw,
170
+ });
171
+ }
172
+
173
+ // ────────────────────────────────────────────────────────────────────────
174
+ // Web / API / Internal (null-object-ish; produces no header)
175
+ // ────────────────────────────────────────────────────────────────────────
176
+
177
+ /**
178
+ * @param {{ sessionId?: string, userName?: string }} [info]
179
+ * @returns {MessageSource}
180
+ */
181
+ export function createWebSource(info = {}) {
182
+ const sessionId = info.sessionId || 'web-unknown';
183
+ return freezeDeep({
184
+ kind: MESSAGE_SOURCE_KINDS.WEB,
185
+ alias: `web:${sessionId}`,
186
+ sessionId,
187
+ raw: { sessionId, userName: info.userName ?? null },
188
+ });
189
+ }
190
+
191
+ /**
192
+ * For scheduler / flow-injected messages where no human channel is behind
193
+ * the send. `describeSource` returns null for internal sources so no
194
+ * header is prepended — the agent sees the raw content as before.
195
+ * @param {string} [reason]
196
+ * @returns {MessageSource}
197
+ */
198
+ export function createInternalSource(reason = 'internal') {
199
+ return freezeDeep({
200
+ kind: MESSAGE_SOURCE_KINDS.INTERNAL,
201
+ alias: `internal:${reason}`,
202
+ sessionId: `internal-${reason}`,
203
+ raw: { reason },
204
+ });
205
+ }
206
+
207
+ // ────────────────────────────────────────────────────────────────────────
208
+ // Rendering
209
+ // ────────────────────────────────────────────────────────────────────────
210
+
211
+ /**
212
+ * Produce the human-readable attribution sentence for a source, or null
213
+ * when the source is absent / of a kind that doesn't warrant a header
214
+ * (web, api, internal — those interactions don't need to teach the agent
215
+ * where the message came from).
216
+ *
217
+ * Output shape (examples):
218
+ * Discord guild channel → "Message by alice from Discord > MyGuild > #ops"
219
+ * Discord thread → "Message by alice from Discord > MyGuild > #ops > Deploy thread"
220
+ * Discord DM → "Message by alice from Discord > DM"
221
+ * Telegram group → "Message by alice from Telegram > Ops Chat"
222
+ * Telegram private → "Message by alice from Telegram > DM"
223
+ *
224
+ * @param {MessageSource|null|undefined} source
225
+ * @returns {string|null}
226
+ */
227
+ export function describeSource(source) {
228
+ if (!source || typeof source !== 'object') return null;
229
+ const raw = source.raw || {};
230
+
231
+ switch (source.kind) {
232
+ case MESSAGE_SOURCE_KINDS.DISCORD: {
233
+ const user = raw.authorName || 'unknown user';
234
+ const parts = ['Discord'];
235
+ // Thread path: Discord > Guild > #parent > ThreadName
236
+ // Flat path: Discord > Guild > #channel
237
+ // DM path: Discord > DM
238
+ if (raw.guildName) parts.push(raw.guildName);
239
+
240
+ if (raw.parentChannelName || raw.threadName) {
241
+ if (raw.parentChannelName) parts.push(`#${raw.parentChannelName}`);
242
+ if (raw.threadName) parts.push(raw.threadName);
243
+ } else if (raw.channelName) {
244
+ parts.push(`#${raw.channelName}`);
245
+ }
246
+
247
+ // No guild and no channel name usually means a DM (or a stripped-down
248
+ // test fixture). Label it as DM rather than leaving a bare "Discord".
249
+ if (parts.length === 1) parts.push('DM');
250
+
251
+ return `Message by ${user} from ${parts.join(' > ')}`;
252
+ }
253
+
254
+ case MESSAGE_SOURCE_KINDS.TELEGRAM: {
255
+ const user = raw.userName || 'unknown user';
256
+ const parts = ['Telegram'];
257
+ if (raw.chatType === 'private') {
258
+ parts.push('DM');
259
+ } else if (raw.chatTitle) {
260
+ parts.push(raw.chatTitle);
261
+ } else if (raw.chatId != null) {
262
+ parts.push(`chat ${raw.chatId}`);
263
+ } else {
264
+ parts.push('DM');
265
+ }
266
+ return `Message by ${user} from ${parts.join(' > ')}`;
267
+ }
268
+
269
+ case MESSAGE_SOURCE_KINDS.WEB:
270
+ case MESSAGE_SOURCE_KINDS.API:
271
+ case MESSAGE_SOURCE_KINDS.INTERNAL:
272
+ default:
273
+ return null;
274
+ }
275
+ }
276
+
277
+ /**
278
+ * Format the header line — a parenthesized describeSource() output — or
279
+ * empty string when the source has no describable shape.
280
+ * @param {MessageSource|null|undefined} source
281
+ * @returns {string}
282
+ */
283
+ export function formatSourceHeader(source) {
284
+ const desc = describeSource(source);
285
+ return desc ? `(${desc})` : '';
286
+ }
287
+
288
+ /**
289
+ * Prepend the source attribution header to a user message's content.
290
+ *
291
+ * Idempotent: if the content already begins with the exact header line,
292
+ * nothing is added. This keeps the pipeline safe against re-serialization
293
+ * (state restore, compaction, retry) without baking a "did-we-prefix" flag
294
+ * into the message shape.
295
+ *
296
+ * @param {string} content
297
+ * @param {MessageSource|null|undefined} source
298
+ * @returns {string}
299
+ */
300
+ export function prependSourceHeader(content, source) {
301
+ const header = formatSourceHeader(source);
302
+ if (!header) return typeof content === 'string' ? content : String(content ?? '');
303
+
304
+ const text = typeof content === 'string' ? content : String(content ?? '');
305
+ if (text.startsWith(header)) return text;
306
+ return `${header}\n${text}`;
307
+ }
308
+
309
+ export default {
310
+ MESSAGE_SOURCE_KINDS,
311
+ createDiscordSource,
312
+ createTelegramSource,
313
+ createWebSource,
314
+ createInternalSource,
315
+ describeSource,
316
+ formatSourceHeader,
317
+ prependSourceHeader,
318
+ };
@@ -19,6 +19,7 @@ import { promises as fs } from 'fs';
19
19
  import path from 'path';
20
20
  import { getUserDataPaths, ensureUserDataDirs } from '../utilities/userDataDir.js';
21
21
  import { filterContentForExternalRelay, resolveBlockTargets } from './channelFilter.js';
22
+ import { createTelegramSource } from './messageSource.js';
22
23
 
23
24
  const TELEGRAM_STATUS = {
24
25
  DISCONNECTED: 'disconnected',
@@ -521,6 +522,10 @@ class TelegramService {
521
522
 
522
523
  if (this.orchestrator) {
523
524
  const sessionId = `telegram-${this.chatId}`;
525
+ // Capture source at ingress — see services/messageSource.js. The
526
+ // source rides the payload into the orchestrator and becomes the
527
+ // `(Message by alice from Telegram > …)` line the agent sees.
528
+ const source = createTelegramSource(msg);
524
529
  await this.orchestrator.processRequest({
525
530
  interface: 'telegram',
526
531
  sessionId,
@@ -528,7 +533,8 @@ class TelegramService {
528
533
  payload: {
529
534
  agentId: targetAgent.id,
530
535
  message: messageText,
531
- streamingEnabled: false
536
+ streamingEnabled: false,
537
+ source,
532
538
  },
533
539
  projectDir: this.orchestrator.config?.project?.directory || process.cwd()
534
540
  });
@@ -859,22 +859,50 @@ class VisualEditorServer {
859
859
 
860
860
  // Add a <base> tag to make relative URLs resolve to the original site
861
861
  // This prevents assets (scripts, styles, images) from being requested through our server
862
+ //
863
+ // IMPORTANT: The base href must include the *directory* of the target URL, not just
864
+ // the origin. If the target is http://host/sub/page.html and we set <base href="http://host/">,
865
+ // then a relative <link href="styles.css"> resolves to http://host/styles.css (wrong) instead
866
+ // of http://host/sub/styles.css (correct). We compute the directory portion of the pathname
867
+ // and use that as the base href.
862
868
  let baseTag = '';
863
869
  try {
864
870
  const parsed = new URL(targetUrl);
865
- baseTag = `<base href="${parsed.origin}/">`;
871
+ // Derive directory: for /sub/page.html -> /sub/, for /sub/ -> /sub/, for / -> /
872
+ let dir = parsed.pathname;
873
+ if (!dir.endsWith('/')) {
874
+ const lastSlash = dir.lastIndexOf('/');
875
+ dir = lastSlash >= 0 ? dir.substring(0, lastSlash + 1) : '/';
876
+ }
877
+ baseTag = `<base href="${parsed.origin}${dir}">`;
866
878
  } catch (e) {
867
879
  // Invalid URL, skip base tag
868
880
  }
869
881
 
870
882
  let modifiedHtml = html;
871
883
 
872
- // Inject base tag after <head> (if not already present)
873
- if (baseTag && !html.toLowerCase().includes('<base ')) {
874
- if (html.includes('<head>')) {
875
- modifiedHtml = modifiedHtml.replace('<head>', `<head>${baseTag}`);
876
- } else if (html.includes('<HEAD>')) {
877
- modifiedHtml = modifiedHtml.replace('<HEAD>', `<HEAD>${baseTag}`);
884
+ // Inject base tag right after the opening <head ...> tag (case-insensitive, allows attributes).
885
+ // If there is no <head> at all, synthesize one after <html ...> so we still get a base.
886
+ // If a <base> already exists in the document, rewrite its href — the original would point
887
+ // at the original site path and we want it pointed at our resolved directory instead.
888
+ if (baseTag) {
889
+ const hasBase = /<base\b[^>]*>/i.test(html);
890
+ if (hasBase) {
891
+ // Replace the first <base ...> with our computed one
892
+ modifiedHtml = modifiedHtml.replace(/<base\b[^>]*>/i, baseTag);
893
+ } else {
894
+ const headOpenRe = /<head\b[^>]*>/i;
895
+ if (headOpenRe.test(modifiedHtml)) {
896
+ modifiedHtml = modifiedHtml.replace(headOpenRe, (match) => `${match}${baseTag}`);
897
+ } else {
898
+ const htmlOpenRe = /<html\b[^>]*>/i;
899
+ if (htmlOpenRe.test(modifiedHtml)) {
900
+ modifiedHtml = modifiedHtml.replace(htmlOpenRe, (match) => `${match}<head>${baseTag}</head>`);
901
+ } else {
902
+ // No <html> either — prepend a head block
903
+ modifiedHtml = `<head>${baseTag}</head>${modifiedHtml}`;
904
+ }
905
+ }
878
906
  }
879
907
  }
880
908
 
@@ -64,6 +64,16 @@ describe('VisualEditorTool._broadcastOpenEditor', () => {
64
64
  }
65
65
  });
66
66
 
67
+ // ── Session targeting: always null so the webServer fan-out path runs ──
68
+ //
69
+ // The visual-editor open-editor / set-app-url broadcast is a UI-wide
70
+ // notification — we want every attached browser to hear it. `context.sessionId`
71
+ // here is the agent's scheduler session (e.g. 'scheduler-session'), which
72
+ // doesn't match any UI WebSocket connection. Passing `null` explicitly
73
+ // makes broadcastToSession take its "no session match, deliver to all
74
+ // connections" path — cleaner than accidentally landing there via a
75
+ // mismatched session string.
76
+
67
77
  // ── Path 1: through agentPool ────────────────────────────────────
68
78
  test('uses agentPool.messageProcessor.orchestrator.webServer when available', () => {
69
79
  const tool = makeTool();
@@ -82,7 +92,7 @@ describe('VisualEditorTool._broadcastOpenEditor', () => {
82
92
  tool._broadcastOpenEditor(context, sampleData);
83
93
 
84
94
  expect(broadcastToSession).toHaveBeenCalledTimes(1);
85
- expect(broadcastToSession).toHaveBeenCalledWith('session-A', {
95
+ expect(broadcastToSession).toHaveBeenCalledWith(null, {
86
96
  type: 'visual_editor_open',
87
97
  data: {
88
98
  agentId: 'agent-1',
@@ -92,10 +102,15 @@ describe('VisualEditorTool._broadcastOpenEditor', () => {
92
102
  });
93
103
  });
94
104
 
95
- test('falls back to "web-session" when sessionId is missing on agentPool path', () => {
105
+ test('ignores context.sessionId always broadcasts to all connections', () => {
106
+ // Regression guard: previously `sessionId || 'web-session'` was passed
107
+ // as the target. Either path effectively fell through to "all clients"
108
+ // via the webServer's fallback, but the intent wasn't explicit. Now
109
+ // we pass `null` no matter what.
96
110
  const tool = makeTool();
97
111
  const broadcastToSession = jest.fn();
98
112
  const context = {
113
+ sessionId: 'scheduler-session', // the scheduler's own session
99
114
  agentPool: {
100
115
  messageProcessor: {
101
116
  orchestrator: { webServer: { broadcastToSession } }
@@ -104,7 +119,8 @@ describe('VisualEditorTool._broadcastOpenEditor', () => {
104
119
  };
105
120
 
106
121
  tool._broadcastOpenEditor(context, sampleData);
107
- expect(broadcastToSession).toHaveBeenCalledWith('web-session', expect.any(Object));
122
+ const [targetSessionId] = broadcastToSession.mock.calls[0];
123
+ expect(targetSessionId).toBeNull();
108
124
  });
109
125
 
110
126
  // ── Path 2: direct orchestrator ──────────────────────────────────
@@ -117,7 +133,7 @@ describe('VisualEditorTool._broadcastOpenEditor', () => {
117
133
  };
118
134
 
119
135
  tool._broadcastOpenEditor(context, sampleData);
120
- expect(broadcastToSession).toHaveBeenCalledWith('session-B', expect.objectContaining({
136
+ expect(broadcastToSession).toHaveBeenCalledWith(null, expect.objectContaining({
121
137
  type: 'visual_editor_open'
122
138
  }));
123
139
  });
@@ -150,19 +166,19 @@ describe('VisualEditorTool._broadcastOpenEditor', () => {
150
166
  const context = { sessionId: 'session-D' };
151
167
  tool._broadcastOpenEditor(context, sampleData);
152
168
 
153
- expect(broadcastToSession).toHaveBeenCalledWith('session-D', expect.objectContaining({
169
+ expect(broadcastToSession).toHaveBeenCalledWith(null, expect.objectContaining({
154
170
  type: 'visual_editor_open',
155
171
  data: expect.objectContaining({ agentId: 'agent-1' })
156
172
  }));
157
173
  });
158
174
 
159
- test('global fallback also defaults sessionId to "web-session"', () => {
175
+ test('global fallback also uses null sessionId (UI-wide broadcast)', () => {
160
176
  const tool = makeTool();
161
177
  const broadcastToSession = jest.fn();
162
178
  global.loxiaWebServer = { broadcastToSession };
163
179
 
164
180
  tool._broadcastOpenEditor({}, sampleData);
165
- expect(broadcastToSession).toHaveBeenCalledWith('web-session', expect.any(Object));
181
+ expect(broadcastToSession).toHaveBeenCalledWith(null, expect.any(Object));
166
182
  });
167
183
 
168
184
  // ── No webServer at all → warn but don't throw ───────────────────
@@ -170,10 +186,24 @@ describe('VisualEditorTool._broadcastOpenEditor', () => {
170
186
  const tool = makeTool();
171
187
  const context = {}; // Nothing at all
172
188
 
173
- expect(() => tool._broadcastOpenEditor(context, sampleData)).not.toThrow();
174
- expect(tool.logger.warn).toHaveBeenCalledWith(
175
- expect.stringContaining('Could not broadcast open-editor')
176
- );
189
+ // Warn is emitted via console.warn (not this.logger) so the message
190
+ // surfaces even when the tool was constructed without a logger
191
+ // (historic registry behavior).
192
+ const consoleWarnSpy = jest.spyOn(console, 'warn').mockImplementation(() => {});
193
+ try {
194
+ expect(() => tool._broadcastOpenEditor(context, sampleData)).not.toThrow();
195
+ expect(consoleWarnSpy).toHaveBeenCalledWith(
196
+ expect.stringContaining('Could not broadcast open-editor'),
197
+ expect.objectContaining({
198
+ hasContext: true,
199
+ hasAgentPool: false,
200
+ hasOrchestrator: false,
201
+ hasGlobal: false,
202
+ })
203
+ );
204
+ } finally {
205
+ consoleWarnSpy.mockRestore();
206
+ }
177
207
  });
178
208
 
179
209
  test('handles partial agentPool object gracefully (no messageProcessor)', () => {
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Tests for VisualEditorTool's project-root context resolution.
3
+ *
4
+ * Why this exists:
5
+ * The tool's action handlers (detect-project, serve-static, detect-dev-port,
6
+ * open-editor) need the agent's working directory. Historically the code
7
+ * read only `context.projectRoot || context.workingDirectory`, but the
8
+ * canonical key messageProcessor (src/core/messageProcessor.js:455) passes
9
+ * is `context.projectDir`. That mismatch meant every agent-initiated call
10
+ * silently fell through with "No project directory available" — the editor
11
+ * only worked when invoked through a legacy path or with the URL typed
12
+ * manually.
13
+ *
14
+ * These tests lock in the three-name fallback so a future refactor can't
15
+ * silently regress the resolution order.
16
+ */
17
+
18
+ import { jest, describe, test, expect, beforeEach } from '@jest/globals';
19
+ import { createMockLogger } from '../../__test-utils__/mockFactories.js';
20
+
21
+ // Mock heavy dependencies the tool imports at load time
22
+ jest.unstable_mockModule('../../services/visualEditorBridge.js', () => ({
23
+ getVisualEditorBridge: jest.fn(),
24
+ InstanceStatus: { CONNECTED: 'connected', DISCONNECTED: 'disconnected' }
25
+ }));
26
+ jest.unstable_mockModule('../../services/visualEditorServer.js', () => ({
27
+ getVisualEditorServer: jest.fn(),
28
+ getVisualEditorPort: jest.fn(() => 4000),
29
+ getVisualEditorBaseUrl: jest.fn(() => 'http://localhost:4000')
30
+ }));
31
+ jest.unstable_mockModule('../../services/portTracker.js', () => ({
32
+ getPortTracker: jest.fn()
33
+ }));
34
+
35
+ // Project detector is the key mock — we control what it returns so the
36
+ // handler's resolution logic is the only thing under test.
37
+ const detectMock = jest.fn();
38
+ const getSuggestedServerCommand = jest.fn(() => ({ command: 'npm start', port: 3000 }));
39
+ jest.unstable_mockModule('../../services/projectDetector.js', () => ({
40
+ getProjectDetector: jest.fn(() => ({
41
+ detect: detectMock,
42
+ getSuggestedServerCommand
43
+ })),
44
+ PROJECT_TYPES: {}
45
+ }));
46
+
47
+ const { VisualEditorTool } = await import('../visualEditorTool.js');
48
+
49
+ function makeTool() {
50
+ return new VisualEditorTool({}, createMockLogger());
51
+ }
52
+
53
+ const happyDetection = {
54
+ projectType: 'react-vite',
55
+ framework: 'react',
56
+ isStatic: false,
57
+ entryPoints: ['src/main.jsx'],
58
+ availableScripts: ['dev', 'build'],
59
+ confidence: 'high'
60
+ };
61
+
62
+ describe('VisualEditorTool._handleDetectProject — context-key resolution', () => {
63
+ beforeEach(() => {
64
+ detectMock.mockReset();
65
+ getSuggestedServerCommand.mockClear();
66
+ });
67
+
68
+ test('resolves project root via context.projectRoot (legacy path)', async () => {
69
+ const tool = makeTool();
70
+ detectMock.mockResolvedValueOnce(happyDetection);
71
+
72
+ const result = await tool._handleDetectProject({ projectRoot: '/legacy/path' });
73
+
74
+ expect(detectMock).toHaveBeenCalledWith('/legacy/path');
75
+ expect(result.success).toBe(true);
76
+ expect(result.projectDir).toBe('/legacy/path');
77
+ });
78
+
79
+ test('resolves project root via context.workingDirectory (alt path)', async () => {
80
+ const tool = makeTool();
81
+ detectMock.mockResolvedValueOnce(happyDetection);
82
+
83
+ const result = await tool._handleDetectProject({ workingDirectory: '/wd/path' });
84
+
85
+ expect(detectMock).toHaveBeenCalledWith('/wd/path');
86
+ expect(result.success).toBe(true);
87
+ });
88
+
89
+ test('resolves project root via context.projectDir (messageProcessor path)', async () => {
90
+ // THE REGRESSION GUARD: messageProcessor passes `projectDir`. Before the
91
+ // fix this returned {success:false, error:"No project directory available"}.
92
+ const tool = makeTool();
93
+ detectMock.mockResolvedValueOnce(happyDetection);
94
+
95
+ const result = await tool._handleDetectProject({ projectDir: '/mp/path' });
96
+
97
+ expect(detectMock).toHaveBeenCalledWith('/mp/path');
98
+ expect(result.success).toBe(true);
99
+ });
100
+
101
+ test('precedence: projectRoot > workingDirectory > projectDir', async () => {
102
+ const tool = makeTool();
103
+ detectMock.mockResolvedValue(happyDetection);
104
+
105
+ await tool._handleDetectProject({
106
+ projectRoot: '/a',
107
+ workingDirectory: '/b',
108
+ projectDir: '/c'
109
+ });
110
+ expect(detectMock).toHaveBeenLastCalledWith('/a');
111
+
112
+ detectMock.mockClear();
113
+ await tool._handleDetectProject({
114
+ workingDirectory: '/b',
115
+ projectDir: '/c'
116
+ });
117
+ expect(detectMock).toHaveBeenLastCalledWith('/b');
118
+
119
+ detectMock.mockClear();
120
+ await tool._handleDetectProject({ projectDir: '/c' });
121
+ expect(detectMock).toHaveBeenLastCalledWith('/c');
122
+ });
123
+
124
+ test('returns error when none of the three context keys is present', async () => {
125
+ const tool = makeTool();
126
+ const result = await tool._handleDetectProject({});
127
+ expect(result.success).toBe(false);
128
+ expect(result.error).toMatch(/No project directory available/i);
129
+ expect(detectMock).not.toHaveBeenCalled();
130
+ });
131
+
132
+ test('surfaces detector errors as returned errors (not thrown)', async () => {
133
+ const tool = makeTool();
134
+ detectMock.mockResolvedValueOnce({ error: 'unreadable project' });
135
+
136
+ const result = await tool._handleDetectProject({ projectDir: '/x' });
137
+
138
+ expect(result.success).toBe(false);
139
+ expect(result.error).toBe('unreadable project');
140
+ });
141
+ });
@@ -508,7 +508,20 @@ class ToolsRegistry {
508
508
  async registerTool(toolClass) {
509
509
  try {
510
510
  const tool = new toolClass();
511
-
511
+
512
+ // Propagate the registry's logger to the tool so the tool's own
513
+ // diagnostic output (`this.logger?.info(...)`, `this.logger?.warn(...)`,
514
+ // etc.) actually reaches the operator's console. Tools extending
515
+ // BaseTool default `this.logger = null` unless the class explicitly
516
+ // passes one to `super()` — and registration never supplied one,
517
+ // which silently swallowed every `this.logger?.…` call in every tool.
518
+ // This made debugging things like "why doesn't the visual-editor
519
+ // tool ever log [VisualEditorTool] lines?" impossible because the
520
+ // logs literally weren't being emitted.
521
+ if (this.logger && !tool.logger) {
522
+ tool.logger = this.logger;
523
+ }
524
+
512
525
  if (!(tool instanceof BaseTool)) {
513
526
  throw new Error(`Tool ${toolClass.name} must extend BaseTool`);
514
527
  }