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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "onbuzz",
3
- "version": "4.0.0",
3
+ "version": "4.0.2",
4
4
  "description": "Loxia OnBuzz - Your AI Fleet",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
@@ -393,6 +393,66 @@ describe('AgentPool', () => {
393
393
  test('throws for non-existent agent', async () => {
394
394
  await expect(pool.addUserMessage('nonexistent', { content: 'hi' })).rejects.toThrow('Agent not found');
395
395
  });
396
+
397
+ test('clears a future scheduler-applied delayEndTime on user message', async () => {
398
+ // A user message is an explicit signal to act now — any back-off
399
+ // delay set by the scheduler (rate-limit, network error, builtin
400
+ // tool delay) should evaporate rather than making the user wait
401
+ // out the remainder.
402
+ const agent = await pool.createAgent(agentCfg());
403
+ agent.delayEndTime = new Date(Date.now() + 60_000).toISOString();
404
+
405
+ await pool.addUserMessage(agent.id, { content: 'please act now' });
406
+
407
+ expect(agent.delayEndTime).toBeNull();
408
+ expect(agent.messageQueues.userMessages).toHaveLength(1);
409
+ });
410
+
411
+ test('leaves a past/expired delayEndTime alone', async () => {
412
+ // Already-expired delays don't need clearing — the scheduler ignores
413
+ // them on the next tick anyway. We only act on actively-blocking delays.
414
+ const agent = await pool.createAgent(agentCfg());
415
+ const pastIso = new Date(Date.now() - 1_000).toISOString();
416
+ agent.delayEndTime = pastIso;
417
+
418
+ await pool.addUserMessage(agent.id, { content: 'go' });
419
+
420
+ expect(agent.delayEndTime).toBe(pastIso);
421
+ });
422
+
423
+ test('no-ops when delayEndTime is null', async () => {
424
+ const agent = await pool.createAgent(agentCfg());
425
+ agent.delayEndTime = null;
426
+
427
+ await pool.addUserMessage(agent.id, { content: 'go' });
428
+
429
+ expect(agent.delayEndTime).toBeNull();
430
+ });
431
+
432
+ test('broadcasts agent state update when a delay was cleared', async () => {
433
+ // The UI's delay chip listens for `agent_state_updated` — when we
434
+ // clear a delay we should surface it immediately so the chip
435
+ // disappears without a reload.
436
+ const agent = await pool.createAgent(agentCfg());
437
+ agent.delayEndTime = new Date(Date.now() + 30_000).toISOString();
438
+
439
+ const broadcast = jest.fn().mockResolvedValue(undefined);
440
+ pool.scheduler = { broadcastAgentStateUpdate: broadcast };
441
+
442
+ await pool.addUserMessage(agent.id, { content: 'now' });
443
+
444
+ expect(broadcast).toHaveBeenCalledWith(agent.id, 'user-message-clears-delay');
445
+ });
446
+
447
+ test('does not broadcast when no delay was set', async () => {
448
+ const agent = await pool.createAgent(agentCfg());
449
+ const broadcast = jest.fn().mockResolvedValue(undefined);
450
+ pool.scheduler = { broadcastAgentStateUpdate: broadcast };
451
+
452
+ await pool.addUserMessage(agent.id, { content: 'hi' });
453
+
454
+ expect(broadcast).not.toHaveBeenCalled();
455
+ });
396
456
  });
397
457
 
398
458
  describe('addInterAgentMessage', () => {
@@ -0,0 +1,195 @@
1
+ /**
2
+ * MessageProcessor — source-header injection.
3
+ *
4
+ * Contract:
5
+ * When a user message arrives carrying a `context.source` produced by
6
+ * services/messageSource.js (Discord / Telegram ingress), the message
7
+ * content queued on the agent is prefixed with a parenthesized
8
+ * attribution line:
9
+ *
10
+ * (Message by alice from Discord > MyGuild > #ops)
11
+ * hi is anyone there?
12
+ *
13
+ * The source object itself is also preserved on the queued message for
14
+ * downstream consumers (relays, logs). Re-invocation with a message that
15
+ * already carries the header is idempotent.
16
+ *
17
+ * These tests mock agentPool but exercise the real prependSourceHeader +
18
+ * createDiscordSource / createTelegramSource paths so the contract is
19
+ * verified end-to-end through the processMessage boundary.
20
+ */
21
+
22
+ import { jest, describe, test, expect, beforeEach } from '@jest/globals';
23
+ import { createMockLogger, createMockConfig, createMockAiService } from '../../__test-utils__/mockFactories.js';
24
+
25
+ jest.unstable_mockModule('../../services/visualEditorBridge.js', () => ({
26
+ getVisualEditorBridge: jest.fn(() => ({
27
+ isEnabled: () => false,
28
+ hasInstance: () => false,
29
+ })),
30
+ InstanceStatus: { IDLE: 'idle', RUNNING: 'running', ERROR: 'error' },
31
+ }));
32
+
33
+ jest.unstable_mockModule('../../utilities/tagParser.js', () => ({
34
+ default: jest.fn().mockImplementation(() => ({
35
+ extractToolCommands: jest.fn().mockReturnValue([]),
36
+ normalizeToolCommand: jest.fn((c) => c),
37
+ extractAgentRedirects: jest.fn().mockReturnValue([]),
38
+ parseXMLParameters: jest.fn().mockReturnValue({}),
39
+ decodeHtmlEntities: jest.fn((s) => s),
40
+ })),
41
+ }));
42
+
43
+ jest.unstable_mockModule('../../tools/visualEditorTool.js', () => ({
44
+ VisualEditorTool: { injectContextIntoMessage: jest.fn((msg) => msg) },
45
+ }));
46
+
47
+ // Import the REAL messageSource factories — this is intentional. The
48
+ // integration value of these tests is the end-to-end contract between the
49
+ // source module and the processor.
50
+ const { createDiscordSource, createTelegramSource, createWebSource } =
51
+ await import('../../services/messageSource.js');
52
+ const { default: MessageProcessor } = await import('../messageProcessor.js');
53
+
54
+ function makeMP() {
55
+ const config = createMockConfig();
56
+ const logger = createMockLogger();
57
+ const agentPool = {
58
+ getAgent: jest.fn().mockResolvedValue({
59
+ id: 'agent-1',
60
+ name: 'TestAgent',
61
+ mode: 'chat',
62
+ conversations: { full: { messages: [] } },
63
+ messageQueues: { userMessages: [], interAgentMessages: [], toolResults: [] },
64
+ }),
65
+ addUserMessage: jest.fn().mockResolvedValue(undefined),
66
+ addInterAgentMessage: jest.fn().mockResolvedValue(undefined),
67
+ };
68
+ const contextManager = { getContext: jest.fn() };
69
+ const mp = new MessageProcessor(
70
+ config, logger, { getTool: jest.fn() }, agentPool, contextManager, createMockAiService()
71
+ );
72
+ return { mp, agentPool };
73
+ }
74
+
75
+ describe('MessageProcessor — source header injection', () => {
76
+ let mp, agentPool;
77
+ beforeEach(() => {
78
+ jest.clearAllMocks();
79
+ ({ mp, agentPool } = makeMP());
80
+ });
81
+
82
+ test('Discord guild message → content prefixed with attribution line', async () => {
83
+ const source = createDiscordSource({
84
+ id: 'm1',
85
+ author: { id: 'u1', username: 'alice' },
86
+ guild: { id: 'g1', name: 'MyGuild' },
87
+ channel: { id: 'c1', name: 'ops', isThread: () => false },
88
+ });
89
+
90
+ await mp.processMessage('agent-1', 'hi is anyone there?', {
91
+ sessionId: 'discord-g1-c1',
92
+ source,
93
+ });
94
+
95
+ expect(agentPool.addUserMessage).toHaveBeenCalledTimes(1);
96
+ const [, queued] = agentPool.addUserMessage.mock.calls[0];
97
+ expect(queued.content).toBe(
98
+ '(Message by alice from Discord > MyGuild > #ops)\nhi is anyone there?'
99
+ );
100
+ // Source is also preserved structurally for downstream consumers.
101
+ expect(queued.source).toBe(source);
102
+ expect(queued.role).toBe('user');
103
+ });
104
+
105
+ test('Telegram private message → Telegram > DM attribution', async () => {
106
+ const source = createTelegramSource({
107
+ message_id: 1,
108
+ chat: { id: 42, type: 'private' },
109
+ from: { id: 7, username: 'alice' },
110
+ });
111
+
112
+ await mp.processMessage('agent-1', 'status?', {
113
+ sessionId: 'telegram-42',
114
+ source,
115
+ });
116
+
117
+ const [, queued] = agentPool.addUserMessage.mock.calls[0];
118
+ expect(queued.content).toBe('(Message by alice from Telegram > DM)\nstatus?');
119
+ expect(queued.source).toBe(source);
120
+ });
121
+
122
+ test('Discord thread message → parent + thread path in header', async () => {
123
+ const source = createDiscordSource({
124
+ id: 'm2',
125
+ author: { username: 'alice' },
126
+ guild: { id: 'g', name: 'MyGuild' },
127
+ channel: {
128
+ id: 't1', name: 'deploy-thread',
129
+ parentId: 'c1', parent: { name: 'ops' },
130
+ isThread: () => true,
131
+ },
132
+ });
133
+
134
+ await mp.processMessage('agent-1', 'deploy status?', { sessionId: 's', source });
135
+
136
+ const [, queued] = agentPool.addUserMessage.mock.calls[0];
137
+ expect(queued.content).toBe(
138
+ '(Message by alice from Discord > MyGuild > #ops > deploy-thread)\ndeploy status?'
139
+ );
140
+ });
141
+
142
+ test('no source on context → content passes through untouched', async () => {
143
+ await mp.processMessage('agent-1', 'raw input', { sessionId: 's' });
144
+ const [, queued] = agentPool.addUserMessage.mock.calls[0];
145
+ expect(queued.content).toBe('raw input');
146
+ expect(queued.source).toBeNull();
147
+ });
148
+
149
+ test('web source → no header (web UI interactions stay clean)', async () => {
150
+ const source = createWebSource({ sessionId: 'web-1', userName: 'operator' });
151
+ await mp.processMessage('agent-1', 'hello', { sessionId: 'web-1', source });
152
+
153
+ const [, queued] = agentPool.addUserMessage.mock.calls[0];
154
+ expect(queued.content).toBe('hello');
155
+ expect(queued.source).toBe(source); // structurally preserved even when no header rendered
156
+ });
157
+
158
+ test('idempotency — re-processing a message that already has the header does not double-prefix', async () => {
159
+ const source = createDiscordSource({
160
+ author: { username: 'alice' },
161
+ guild: { name: 'MyGuild' },
162
+ channel: { id: 'c', name: 'ops', isThread: () => false },
163
+ });
164
+
165
+ // First call — fresh content gets prefixed.
166
+ await mp.processMessage('agent-1', 'hi', { source });
167
+ const firstContent = agentPool.addUserMessage.mock.calls[0][1].content;
168
+ expect(firstContent.startsWith('(Message by alice')).toBe(true);
169
+
170
+ // Second call — pass the ALREADY-prefixed content back through (as
171
+ // would happen on replay / state-restore paths). The header must not
172
+ // be duplicated.
173
+ jest.clearAllMocks();
174
+ ({ mp, agentPool } = makeMP());
175
+ await mp.processMessage('agent-1', firstContent, { source });
176
+ const secondContent = agentPool.addUserMessage.mock.calls[0][1].content;
177
+ expect(secondContent).toBe(firstContent);
178
+ // i.e. not "(Message by alice ...)\n(Message by alice ...)\nhi"
179
+ const headerCount = (secondContent.match(/\(Message by alice/g) || []).length;
180
+ expect(headerCount).toBe(1);
181
+ });
182
+
183
+ test('unknown user fallback keeps the header well-formed', async () => {
184
+ const source = createDiscordSource({
185
+ // no author
186
+ guild: { name: 'G' },
187
+ channel: { id: 'c', name: 'general', isThread: () => false },
188
+ });
189
+ await mp.processMessage('agent-1', 'ping', { source });
190
+ const [, queued] = agentPool.addUserMessage.mock.calls[0];
191
+ expect(queued.content).toBe(
192
+ '(Message by unknown user from Discord > G > #general)\nping'
193
+ );
194
+ });
195
+ });
@@ -1306,6 +1306,20 @@ class AgentPool {
1306
1306
  await this.resumeAgent(agentId);
1307
1307
  }
1308
1308
 
1309
+ // Clear any scheduler-enforced delay when the user explicitly addresses
1310
+ // the agent. Delays are set by the scheduler as a back-off for
1311
+ // rate-limit / network / api-key / builtin-tool-delay situations and
1312
+ // only make sense while the agent is left alone — a new user message is
1313
+ // an explicit signal to act NOW, and waiting out the remaining delay
1314
+ // would feel unresponsive. We clear the field and let the scheduler
1315
+ // pick the agent up on its next tick. Broadcast the state update so
1316
+ // the UI's delay chip disappears immediately.
1317
+ const hadDelay = !!(agent.delayEndTime && new Date(agent.delayEndTime).getTime() > Date.now());
1318
+ if (hadDelay) {
1319
+ agent.delayEndTime = null;
1320
+ this.logger.info(`Cleared scheduler delay for agent ${agentId} — user message takes precedence`);
1321
+ }
1322
+
1309
1323
  const queuedMessage = {
1310
1324
  ...message,
1311
1325
  id: message.id || `user-msg-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
@@ -1323,6 +1337,16 @@ class AgentPool {
1323
1337
 
1324
1338
  await this.persistAgentState(agentId);
1325
1339
 
1340
+ // If we cleared a delay, surface it on the WS so the delay chip in the
1341
+ // chat header disappears without waiting for the next scheduler cycle.
1342
+ if (hadDelay && this.scheduler?.broadcastAgentStateUpdate) {
1343
+ try {
1344
+ await this.scheduler.broadcastAgentStateUpdate(agentId, 'user-message-clears-delay');
1345
+ } catch (err) {
1346
+ this.logger.warn(`Failed to broadcast delay-clear for ${agentId}: ${err.message}`);
1347
+ }
1348
+ }
1349
+
1326
1350
  this.logger.info(`User message queued for agent: ${agentId}`, {
1327
1351
  messageId: queuedMessage.id,
1328
1352
  queueSize: agent.messageQueues.userMessages.length
@@ -685,21 +685,32 @@ class AgentScheduler {
685
685
  return;
686
686
  }
687
687
 
688
- // Check if this exact state was just processed (immediate duplicate)
689
- if (loopDetection.isImmediateDuplicate) {
690
- this.logger.debug(`Agent ${agentId} state unchanged from last iteration, skipping`, {
691
- stateHash: currentStateHash,
692
- agentMode: agent.mode
693
- });
694
- return; // Skip - nothing new to process
695
- }
696
-
697
688
  // Get message queue status
698
689
  const queues = agent.messageQueues || {};
699
690
  const totalMessages = (queues.toolResults?.length || 0) +
700
691
  (queues.interAgentMessages?.length || 0) +
701
692
  (queues.userMessages?.length || 0);
702
693
 
694
+ // Check if this exact state was just processed (immediate duplicate).
695
+ // The hash is computed from the agent's OUTPUT (last assistant
696
+ // messages) so when nothing new has been emitted since the previous
697
+ // cycle the hash repeats. But we must NOT skip when there is pending
698
+ // input queued — tool results, user messages, or inter-agent
699
+ // messages all change the effective "state" even though the output
700
+ // history looks the same. Without this guard, an agent that
701
+ // finishes a turn, gets tool results back, and then matches the
702
+ // prior hash stalls forever: processAgent returns early every
703
+ // cycle, the queued tool results never get consumed, no new
704
+ // assistant message is produced, hash never changes — perpetual
705
+ // skip. Starvation, not a loop.
706
+ if (loopDetection.isImmediateDuplicate && totalMessages === 0) {
707
+ this.logger.debug(`Agent ${agentId} state unchanged and no pending input, skipping`, {
708
+ stateHash: currentStateHash,
709
+ agentMode: agent.mode
710
+ });
711
+ return; // Skip - nothing new to process
712
+ }
713
+
703
714
  // Log if user messages are present (highest priority)
704
715
  if (queues.userMessages?.length > 0) {
705
716
  this.logger.info(`User message detected for agent ${agentId} - will be prioritized`, {
@@ -12,6 +12,7 @@ import TagParser from '../utilities/tagParser.js';
12
12
  import { TOOL_IDS, COMMAND_FORMATS } from '../utilities/toolConstants.js';
13
13
  import { getVisualEditorBridge } from '../services/visualEditorBridge.js';
14
14
  import { VisualEditorTool } from '../tools/visualEditorTool.js';
15
+ import { prependSourceHeader } from '../services/messageSource.js';
15
16
 
16
17
  class MessageProcessor {
17
18
  constructor(config, logger, toolsRegistry, agentPool, contextManager, aiService, modelRouterService = null, modelsService = null) {
@@ -132,6 +133,18 @@ class MessageProcessor {
132
133
  this.logger.warn?.(`Failed to inject visual context: ${err.message}`);
133
134
  }
134
135
 
136
+ // Prepend the source attribution header when the message arrived from
137
+ // an external channel (Discord / Telegram). The header is plain text
138
+ // of the form "(Message by alice from Discord > MyGuild > #ops)" and
139
+ // becomes part of the persisted content, so the agent sees it in its
140
+ // LLM context and the operator sees it in the web-UI transcript. The
141
+ // operation is idempotent — re-serialization (state restore, replay)
142
+ // won't double-prefix. Sources of kind web/api/internal produce no
143
+ // header and leave the content untouched. See services/messageSource.js.
144
+ if (context.source) {
145
+ enhancedMessage = prependSourceHeader(enhancedMessage, context.source);
146
+ }
147
+
135
148
  await this.agentPool.addUserMessage(agentId, {
136
149
  content: enhancedMessage,
137
150
  role: 'user',
@@ -140,6 +153,10 @@ class MessageProcessor {
140
153
  sessionId: context.sessionId,
141
154
  visualContextInjected,
142
155
  streamingEnabled: context.streamingEnabled !== false, // Pass streaming preference from context
156
+ // Preserve the structured source on the queued message too, so any
157
+ // downstream consumer (logs, analytics, relay) can reason about
158
+ // provenance without re-parsing the inline header.
159
+ source: context.source || null,
143
160
  // Flow execution context (if this message is part of a flow)
144
161
  isFlowExecution: context.isFlowExecution || false,
145
162
  flowRunId: context.flowRunId,
@@ -388,7 +388,7 @@ class Orchestrator {
388
388
  * @private
389
389
  */
390
390
  async _handleSendMessage(request) {
391
- const { agentId, message, mode, contextReferences, apiKey, customApiKeys, streamingEnabled } = request.payload;
391
+ const { agentId, message, mode, contextReferences, apiKey, customApiKeys, streamingEnabled, source } = request.payload;
392
392
 
393
393
  const context = {
394
394
  projectDir: request.projectDir,
@@ -398,7 +398,11 @@ class Orchestrator {
398
398
  contextReferences: contextReferences || [],
399
399
  apiKey: apiKey, // Pass Loxia API key through context
400
400
  customApiKeys: customApiKeys || {}, // Pass custom API keys through context
401
- streamingEnabled: streamingEnabled !== false // Default to true if not specified
401
+ streamingEnabled: streamingEnabled !== false, // Default to true if not specified
402
+ // Provenance metadata from the inbound adapter (Discord/Telegram/…).
403
+ // Preserved verbatim by messageProcessor and agentPool so the agent
404
+ // can see where the message came from. See services/messageSource.js.
405
+ source: source || null,
402
406
  };
403
407
 
404
408
  return await this.routeToAgent(agentId, message, context);
@@ -4862,6 +4862,32 @@ h2{color:#16a34a;margin-bottom:.5rem;} p{color:#666;}</style></head>
4862
4862
  }
4863
4863
  });
4864
4864
 
4865
+ // DEBUG: manually fire a `visual_editor_open` broadcast so the UI's
4866
+ // panel-open path can be tested independently of the agent tool path.
4867
+ // Exercised via: POST /api/visual-editor/debug-broadcast { agentId, appUrl }.
4868
+ // This isolates the two failure surfaces when open-editor doesn't work —
4869
+ // either the backend never emits the WS event (bug in the tool / context /
4870
+ // webServer wiring) or the UI never reacts to it (bug in store / hook).
4871
+ this.app.post('/api/visual-editor/debug-broadcast', async (req, res) => {
4872
+ const { agentId, appUrl, editorUrl } = req.body || {};
4873
+ if (!agentId || !appUrl) {
4874
+ return res.status(400).json({ success: false, error: 'agentId and appUrl are required' });
4875
+ }
4876
+ try {
4877
+ this.broadcastToSession(null, {
4878
+ type: 'visual_editor_open',
4879
+ data: {
4880
+ agentId,
4881
+ appUrl,
4882
+ editorUrl: editorUrl || `http://localhost:4000?agentId=${agentId}&appUrl=${encodeURIComponent(appUrl)}`
4883
+ }
4884
+ });
4885
+ res.json({ success: true, message: 'visual_editor_open broadcast to all connections' });
4886
+ } catch (err) {
4887
+ res.status(500).json({ success: false, error: err.message });
4888
+ }
4889
+ });
4890
+
4865
4891
  // Disconnect agent from visual editor (server keeps running)
4866
4892
  this.app.post('/api/visual-editor/stop', async (req, res) => {
4867
4893
  try {
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Cross-module coherence: the aliases emitted by messageSource factories
3
+ * must compose correctly with channelFilter.resolveBlockTargets.
4
+ *
5
+ * This is the single test that catches "we renamed the alias format on one
6
+ * side of the fence and forgot the other side" — the exact kind of quiet
7
+ * drift that turns source-awareness back into a ghost feature.
8
+ *
9
+ * The agent's contract is:
10
+ * 1. Read an attribution header like "(Message by alice from Discord > G > #ops)".
11
+ * 2. Look up the corresponding alias in the bridged-channels list it was given.
12
+ * 3. Write <external to="<alias>">…</external>.
13
+ * 4. The relay resolves that back to the concrete channel and sends the reply.
14
+ *
15
+ * Step 2 resolves to messageSource's alias output. Step 4 resolves through
16
+ * channelFilter.resolveBlockTargets. These tests assert the two agree.
17
+ */
18
+
19
+ import { describe, test, expect } from '@jest/globals';
20
+ import {
21
+ createDiscordSource,
22
+ createTelegramSource,
23
+ } from '../messageSource.js';
24
+ import { resolveBlockTargets } from '../channelFilter.js';
25
+
26
+ describe('messageSource ↔ channelFilter alias coherence', () => {
27
+ test('Discord guild alias resolves when the agent addresses it verbatim', () => {
28
+ const src = createDiscordSource({
29
+ author: { username: 'alice' },
30
+ guild: { name: 'MyGuild' },
31
+ channel: { id: 'c1', name: 'ops', isThread: () => false },
32
+ });
33
+
34
+ // The relay advertises bridged aliases in the same shape messageSource
35
+ // produces (both use `discord:#<name>`). Lock it in.
36
+ const ownedAliases = [src.alias];
37
+ const block = { to: [src.alias], text: 'reply' };
38
+
39
+ expect(resolveBlockTargets(block, ownedAliases)).toEqual([src.alias]);
40
+ });
41
+
42
+ test('agent can use shorthand (#ops) and it still resolves via substring match', () => {
43
+ const src = createDiscordSource({
44
+ author: { username: 'alice' },
45
+ guild: { name: 'MyGuild' },
46
+ channel: { id: 'c1', name: 'ops', isThread: () => false },
47
+ });
48
+ // Agent sees "#ops" in the header path, writes a short `to="#ops"`.
49
+ // channelFilter's substring match should still find the canonical alias.
50
+ const block = { to: ['#ops'], text: 'reply' };
51
+ expect(resolveBlockTargets(block, [src.alias])).toEqual([src.alias]);
52
+ });
53
+
54
+ test('guild-prefixed owned alias matches when agent addresses via channel shorthand', () => {
55
+ // The relay may advertise a guild-qualified alias (`discord:guild-123:#ops`)
56
+ // while the agent, reading the header path "Discord > MyGuild > #ops",
57
+ // writes the natural short form `to="#ops"`. channelFilter's endsWith
58
+ // path is what makes this pair compose — this locks that in.
59
+ const ownedAliases = ['discord:guild-123:#ops'];
60
+ const block = { to: ['#ops'], text: 'reply' };
61
+ expect(resolveBlockTargets(block, ownedAliases)).toEqual(ownedAliases);
62
+ });
63
+
64
+ test('Telegram per-chat alias routes when owned alias set advertises it', () => {
65
+ const src = createTelegramSource({
66
+ message_id: 1,
67
+ chat: { id: 999, type: 'supergroup', title: 'Ops' },
68
+ from: { username: 'alice' },
69
+ });
70
+ const ownedAliases = [src.alias, 'telegram'];
71
+ const block = { to: [src.alias], text: 'reply' };
72
+ expect(resolveBlockTargets(block, ownedAliases)).toContain(src.alias);
73
+ });
74
+
75
+ test('Telegram per-chat source alias DOES NOT wildcard-match bare owned "telegram"', () => {
76
+ // Regression guard on a tempting mistake. channelFilter matches "owned
77
+ // contains wanted", not the reverse. If the relay owns only 'telegram',
78
+ // an agent addressing `to="telegram:chat-999"` will NOT be routed there
79
+ // — by design. The agent is expected to use the alias advertised in its
80
+ // bridged-channel list (the system-prompt contract), not to invent
81
+ // narrower aliases from the header. Locking this in prevents accidental
82
+ // bidirectional-substring loosening of channelFilter later.
83
+ const src = createTelegramSource({
84
+ message_id: 1,
85
+ chat: { id: 999, type: 'supergroup', title: 'Ops' },
86
+ from: { username: 'alice' },
87
+ });
88
+ const ownedAliases = ['telegram'];
89
+ const block = { to: [src.alias], text: 'reply' };
90
+ expect(resolveBlockTargets(block, ownedAliases)).toEqual([]);
91
+ });
92
+
93
+ test('default block (no to=) still broadcasts to every owned alias', () => {
94
+ // Regression guard: adding source-awareness must not change the meaning
95
+ // of an unaddressed <external> block. It remains "broadcast to every
96
+ // bridged channel," exactly as before.
97
+ const block = { to: null, text: 'broadcast' };
98
+ const owned = ['discord:#ops', 'telegram'];
99
+ expect(resolveBlockTargets(block, owned).sort()).toEqual(owned.sort());
100
+ });
101
+ });