onbuzz 4.2.0 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (958) hide show
  1. package/package.json +1 -1
  2. package/src/core/__tests__/orchestrator.test.js +22 -6
  3. package/src/core/orchestrator.js +13 -6
  4. package/src/interfaces/__tests__/galleryRoutes.test.js +158 -250
  5. package/src/interfaces/__tests__/videoJobsRoutes.test.js +179 -0
  6. package/src/interfaces/webServer.js +169 -91
  7. package/src/services/__tests__/aiService.stream.test.js +5 -1
  8. package/src/services/__tests__/channelFilter.test.js +4 -2
  9. package/src/services/__tests__/channelRelay.integration.test.js +1 -1
  10. package/src/services/__tests__/galleryService.test.js +225 -0
  11. package/src/services/__tests__/toolCallBridgeContract.test.js +3 -5
  12. package/src/services/galleryService.js +257 -0
  13. package/src/tools/__tests__/imageTool.sizeValidation.test.js +134 -0
  14. package/src/tools/__tests__/imageTool.validator.test.js +194 -0
  15. package/src/tools/__tests__/videoTool.jobs.test.js +147 -0
  16. package/src/tools/imageTool.js +282 -44
  17. package/src/tools/taskManagerTool.js +13 -2
  18. package/src/tools/videoTool.js +126 -0
  19. package/src/utilities/__tests__/logger.safeStringify.test.js +124 -0
  20. package/src/utilities/logger.js +51 -7
  21. package/src/utilities/userDataDir.js +3 -0
  22. package/web-ui/build/index.html +2 -2
  23. package/web-ui/build/static/1c-BdLpzMAL.js +1 -0
  24. package/web-ui/build/static/abap-CDwRvs0G.js +1 -0
  25. package/web-ui/build/static/abnf-BI7p3j5a.js +1 -0
  26. package/web-ui/build/static/abnf-CNv3r7Uy.js +1 -0
  27. package/web-ui/build/static/accesslog-C06B6TeF.js +1 -0
  28. package/web-ui/build/static/actionscript-4rvU1xh_.js +1 -0
  29. package/web-ui/build/static/actionscript-hzeSNpz-.js +1 -0
  30. package/web-ui/build/static/ada-BKQHlNbk.js +1 -0
  31. package/web-ui/build/static/ada-C-cG6Cnx.js +1 -0
  32. package/web-ui/build/static/agda-BLGp6bzV.js +1 -0
  33. package/web-ui/build/static/al-D1v7f7zb.js +1 -0
  34. package/web-ui/build/static/angelscript-C6fH5Phl.js +1 -0
  35. package/web-ui/build/static/antlr4-CkeL19Pe.js +1 -0
  36. package/web-ui/build/static/apache-JdORoIBq.js +1 -0
  37. package/web-ui/build/static/apacheconf-CapiFi2H.js +1 -0
  38. package/web-ui/build/static/apex-B9woB7hA.js +1 -0
  39. package/web-ui/build/static/apl-lmFlegeo.js +1 -0
  40. package/web-ui/build/static/applescript-BHhW-aLP.js +1 -0
  41. package/web-ui/build/static/applescript-ss_o-t9Q.js +1 -0
  42. package/web-ui/build/static/aql-BLNeECob.js +1 -0
  43. package/web-ui/build/static/arcade-CFXIdOiD.js +1 -0
  44. package/web-ui/build/static/arduino-BnvFM4Uv.js +1 -0
  45. package/web-ui/build/static/arduino-COqLsxBH.js +1 -0
  46. package/web-ui/build/static/arff-D29LT0W3.js +1 -0
  47. package/web-ui/build/static/armasm-4vnDbtEO.js +1 -0
  48. package/web-ui/build/static/asciidoc-B5enjW-U.js +1 -0
  49. package/web-ui/build/static/asciidoc-DXDLuzat.js +1 -0
  50. package/web-ui/build/static/asm6502-BlmY96A-.js +1 -0
  51. package/web-ui/build/static/asmatmel-DsTJaam3.js +1 -0
  52. package/web-ui/build/static/aspectj-CWKdyALZ.js +1 -0
  53. package/web-ui/build/static/aspnet-BMb5ovzr.js +1 -0
  54. package/web-ui/build/static/autohotkey-Bnt4L8Sq.js +1 -0
  55. package/web-ui/build/static/autohotkey-FJP6t7LP.js +1 -0
  56. package/web-ui/build/static/autoit-D_uma-t5.js +1 -0
  57. package/web-ui/build/static/autoit-tV1DvCag.js +1 -0
  58. package/web-ui/build/static/avisynth-C3EGWRqZ.js +1 -0
  59. package/web-ui/build/static/avrasm-SPYupzKN.js +1 -0
  60. package/web-ui/build/static/avro-idl-BVy35bGz.js +1 -0
  61. package/web-ui/build/static/awk-bd20WYWO.js +1 -0
  62. package/web-ui/build/static/axapta-rMrFdrRa.js +1 -0
  63. package/web-ui/build/static/bash-B6JbRSpw.js +1 -0
  64. package/web-ui/build/static/bash-CjDn8CS1.js +1 -0
  65. package/web-ui/build/static/basic-1cr_KdjO.js +1 -0
  66. package/web-ui/build/static/basic-VjzNgL1A.js +1 -0
  67. package/web-ui/build/static/batch-xKrSAbnh.js +1 -0
  68. package/web-ui/build/static/bbcode-D_oXQoMX.js +1 -0
  69. package/web-ui/build/static/bicep-DHCLyehu.js +1 -0
  70. package/web-ui/build/static/birb-LnKeXfOt.js +1 -0
  71. package/web-ui/build/static/bison-D1Y9rGkL.js +1 -0
  72. package/web-ui/build/static/bnf-Dmfxl80x.js +1 -0
  73. package/web-ui/build/static/bnf-Dr4hlA3O.js +1 -0
  74. package/web-ui/build/static/brainfuck-BLTIahWA.js +1 -0
  75. package/web-ui/build/static/brainfuck-DfZP16Cx.js +1 -0
  76. package/web-ui/build/static/brightscript-YT7Nr8GN.js +1 -0
  77. package/web-ui/build/static/bro-Cn2KhPkj.js +1 -0
  78. package/web-ui/build/static/bsl-DFyeWkvL.js +1 -0
  79. package/web-ui/build/static/c-B8jd4ks-.js +1 -0
  80. package/web-ui/build/static/c-CTVZoi8i.js +1 -0
  81. package/web-ui/build/static/c-like-BYR8sR5E.js +1 -0
  82. package/web-ui/build/static/cal-D7KqKxTg.js +1 -0
  83. package/web-ui/build/static/capnproto-Bl9dDXU4.js +1 -0
  84. package/web-ui/build/static/ceylon-DrCHmREL.js +1 -0
  85. package/web-ui/build/static/cfscript-C0sNdmMo.js +1 -0
  86. package/web-ui/build/static/chaiscript-LgrVMZR5.js +1 -0
  87. package/web-ui/build/static/cil-CCNfQAo8.js +1 -0
  88. package/web-ui/build/static/clean-DDw0s_-o.js +1 -0
  89. package/web-ui/build/static/clojure-BFxsxcbQ.js +1 -0
  90. package/web-ui/build/static/clojure-BgMU8fA8.js +1 -0
  91. package/web-ui/build/static/clojure-repl-C174HUrZ.js +1 -0
  92. package/web-ui/build/static/cmake-C6hjTvGt.js +1 -0
  93. package/web-ui/build/static/cmake-CcnmaxXV.js +1 -0
  94. package/web-ui/build/static/cobol-DiLCdCf7.js +1 -0
  95. package/web-ui/build/static/coffeescript-CGB29Opz.js +1 -0
  96. package/web-ui/build/static/coffeescript-DV3V4J6g.js +1 -0
  97. package/web-ui/build/static/concurnas-Cgdt5ES1.js +1 -0
  98. package/web-ui/build/static/coq-BbiJDyLq.js +1 -0
  99. package/web-ui/build/static/coq-DvsBabEJ.js +1 -0
  100. package/web-ui/build/static/cos-B7_pvH_X.js +1 -0
  101. package/web-ui/build/static/cpp-416w6yHT.js +1 -0
  102. package/web-ui/build/static/cpp-pz382MTt.js +1 -0
  103. package/web-ui/build/static/crmsh-BeYTFuCW.js +1 -0
  104. package/web-ui/build/static/crystal-BRtDR8RG.js +1 -0
  105. package/web-ui/build/static/crystal-BZJgl_sw.js +1 -0
  106. package/web-ui/build/static/csharp-BQ-0v8VA.js +1 -0
  107. package/web-ui/build/static/csharp-MlHfKRW4.js +1 -0
  108. package/web-ui/build/static/cshtml-DtS0T24q.js +1 -0
  109. package/web-ui/build/static/csp-6DGTWGnA.js +1 -0
  110. package/web-ui/build/static/csp-CvvAXfUJ.js +1 -0
  111. package/web-ui/build/static/css-DJmvg-kI.js +1 -0
  112. package/web-ui/build/static/css-extras-qVKXZ1K5.js +1 -0
  113. package/web-ui/build/static/csv-HN89Dabm.js +1 -0
  114. package/web-ui/build/static/cypher-zqUo_NN4.js +1 -0
  115. package/web-ui/build/static/d-BDzMr17q.js +1 -0
  116. package/web-ui/build/static/d-DV4MmaJ0.js +1 -0
  117. package/web-ui/build/static/dart-BFkAPQxN.js +1 -0
  118. package/web-ui/build/static/dart-mlgsSLDz.js +1 -0
  119. package/web-ui/build/static/dataweave-BQWIxcgu.js +1 -0
  120. package/web-ui/build/static/dax-FY1jMN3E.js +1 -0
  121. package/web-ui/build/static/delphi-D85b-0Yr.js +1 -0
  122. package/web-ui/build/static/dhall-C8db-g46.js +1 -0
  123. package/web-ui/build/static/diff-BHBVMWZm.js +1 -0
  124. package/web-ui/build/static/diff-Bet-lyrd.js +1 -0
  125. package/web-ui/build/static/django-CFm4coNe.js +1 -0
  126. package/web-ui/build/static/django-DN9SMkSp.js +1 -0
  127. package/web-ui/build/static/dns-C4yo4DHG.js +1 -0
  128. package/web-ui/build/static/dns-zone-file-B3o4w8rf.js +1 -0
  129. package/web-ui/build/static/docker-BxxsATcw.js +1 -0
  130. package/web-ui/build/static/dockerfile-BKIud8Xh.js +1 -0
  131. package/web-ui/build/static/dos-G9yNAV_a.js +1 -0
  132. package/web-ui/build/static/dot-CdN-GBnW.js +1 -0
  133. package/web-ui/build/static/dsconfig-DZ5R9lQR.js +1 -0
  134. package/web-ui/build/static/dts-DwetpYRu.js +1 -0
  135. package/web-ui/build/static/dust-DzEHgUuI.js +1 -0
  136. package/web-ui/build/static/ebnf-COJZCCYQ.js +1 -0
  137. package/web-ui/build/static/ebnf-CkdHWCBJ.js +1 -0
  138. package/web-ui/build/static/editorconfig-Bd3ywZZQ.js +1 -0
  139. package/web-ui/build/static/eiffel-C1Qk3pq5.js +1 -0
  140. package/web-ui/build/static/ejs-DxCI_S1L.js +1 -0
  141. package/web-ui/build/static/elixir-BIIHBb4p.js +1 -0
  142. package/web-ui/build/static/elixir-Cs4wFfMY.js +1 -0
  143. package/web-ui/build/static/elm-CXqZthrB.js +1 -0
  144. package/web-ui/build/static/elm-DBguvIDg.js +1 -0
  145. package/web-ui/build/static/erb-BPbVhlMt.js +1 -0
  146. package/web-ui/build/static/erb-DvRAcKbN.js +1 -0
  147. package/web-ui/build/static/erlang-BUKDJMhm.js +1 -0
  148. package/web-ui/build/static/erlang-iWD1_psr.js +1 -0
  149. package/web-ui/build/static/erlang-repl-CjXC9U4C.js +1 -0
  150. package/web-ui/build/static/etlua-nQ8GCNAu.js +1 -0
  151. package/web-ui/build/static/excel-D8YfiDAv.js +1 -0
  152. package/web-ui/build/static/excel-formula-CdZZRE7Y.js +1 -0
  153. package/web-ui/build/static/factor-wiNoX051.js +1 -0
  154. package/web-ui/build/static/false-CsZdI-HD.js +1 -0
  155. package/web-ui/build/static/firestore-security-rules-9yXT_i-6.js +1 -0
  156. package/web-ui/build/static/fix-BsV5RZTa.js +1 -0
  157. package/web-ui/build/static/flix-rATD1-Qx.js +1 -0
  158. package/web-ui/build/static/flow-B4UMzoDr.js +1 -0
  159. package/web-ui/build/static/fortran-CavcrRz8.js +1 -0
  160. package/web-ui/build/static/fortran-DVZjWi__.js +1 -0
  161. package/web-ui/build/static/fsharp-BCVsmzkR.js +1 -0
  162. package/web-ui/build/static/fsharp-Cj6zPGzQ.js +1 -0
  163. package/web-ui/build/static/ftl-C5VdFKkz.js +1 -0
  164. package/web-ui/build/static/gams-CT90XmM8.js +1 -0
  165. package/web-ui/build/static/gap-Ch518Ngd.js +1 -0
  166. package/web-ui/build/static/gauss-DTmMb1xB.js +1 -0
  167. package/web-ui/build/static/gcode-BLc6YjFp.js +1 -0
  168. package/web-ui/build/static/gcode-DYtkCbZZ.js +1 -0
  169. package/web-ui/build/static/gdscript-xrcGCBEi.js +1 -0
  170. package/web-ui/build/static/gedcom-DMOuE70a.js +1 -0
  171. package/web-ui/build/static/gherkin-BoEzs1SS.js +1 -0
  172. package/web-ui/build/static/gherkin-DHanA7dz.js +1 -0
  173. package/web-ui/build/static/git-BwT7p7t_.js +1 -0
  174. package/web-ui/build/static/glsl-C3_TTBJ-.js +1 -0
  175. package/web-ui/build/static/glsl-Do3cCE-W.js +1 -0
  176. package/web-ui/build/static/gml-CWSUBiZ2.js +1 -0
  177. package/web-ui/build/static/gml-wrCAzzgE.js +1 -0
  178. package/web-ui/build/static/gn-DqmZ0Qq_.js +1 -0
  179. package/web-ui/build/static/go-DLiparlr.js +1 -0
  180. package/web-ui/build/static/go-i67Zsx3x.js +1 -0
  181. package/web-ui/build/static/go-module-S33FcrvV.js +1 -0
  182. package/web-ui/build/static/golo-DZ7qHIok.js +1 -0
  183. package/web-ui/build/static/gradle-BTVIAud8.js +1 -0
  184. package/web-ui/build/static/graphql-BRc7dV6d.js +1 -0
  185. package/web-ui/build/static/groovy-C0xCDIoi.js +1 -0
  186. package/web-ui/build/static/groovy-CqfENDj5.js +1 -0
  187. package/web-ui/build/static/haml-DGEmWQaf.js +1 -0
  188. package/web-ui/build/static/haml-Uc13XeLh.js +1 -0
  189. package/web-ui/build/static/handlebars-2pDOu-qZ.js +1 -0
  190. package/web-ui/build/static/handlebars-fvNs6C2z.js +1 -0
  191. package/web-ui/build/static/haskell-C_0PdpI7.js +1 -0
  192. package/web-ui/build/static/haskell-DPiywQAr.js +1 -0
  193. package/web-ui/build/static/haxe-B-Jmpi4X.js +1 -0
  194. package/web-ui/build/static/haxe-BnwqHNBF.js +1 -0
  195. package/web-ui/build/static/hcl-BkCp99Ns.js +1 -0
  196. package/web-ui/build/static/hlsl-Dhtz76rF.js +1 -0
  197. package/web-ui/build/static/hoon-DLvY-xJE.js +1 -0
  198. package/web-ui/build/static/hpkp-DqGdkrWa.js +1 -0
  199. package/web-ui/build/static/hsp-uyhbGChx.js +1 -0
  200. package/web-ui/build/static/hsts-B_hdMfTA.js +1 -0
  201. package/web-ui/build/static/htmlbars-DBm6s2XZ.js +1 -0
  202. package/web-ui/build/static/http-BJx-7pVa.js +1 -0
  203. package/web-ui/build/static/http-BNr6-Kd5.js +1 -0
  204. package/web-ui/build/static/hy-CCeD6Z5O.js +1 -0
  205. package/web-ui/build/static/ichigojam-HlQ9_0Cd.js +1 -0
  206. package/web-ui/build/static/icon-BVRGWnBS.js +1 -0
  207. package/web-ui/build/static/icu-message-format-DrOF-VCL.js +1 -0
  208. package/web-ui/build/static/idris-BTtsUKQZ.js +1 -0
  209. package/web-ui/build/static/iecst-C8fkotHg.js +1 -0
  210. package/web-ui/build/static/ignore-9L0_iQf0.js +1 -0
  211. package/web-ui/build/static/index-5biw7ctT.js +1 -0
  212. package/web-ui/build/static/index-C6XLF9dS.js +734 -0
  213. package/web-ui/build/static/index-CTO5ggyx.css +1 -0
  214. package/web-ui/build/static/index-CU7QxI6e.js +13 -0
  215. package/web-ui/build/static/inform7-DrLS7QKe.js +1 -0
  216. package/web-ui/build/static/inform7-GeduJ02-.js +1 -0
  217. package/web-ui/build/static/ini-ClRWklj4.js +1 -0
  218. package/web-ui/build/static/ini-CnWkQt74.js +1 -0
  219. package/web-ui/build/static/io-DLrwKpJi.js +1 -0
  220. package/web-ui/build/static/irpf90-D2n0wokI.js +1 -0
  221. package/web-ui/build/static/isbl-DF3cf2zG.js +1 -0
  222. package/web-ui/build/static/j-DFQ008Ab.js +1 -0
  223. package/web-ui/build/static/java-BXn0NYGW.js +1 -0
  224. package/web-ui/build/static/java-DwyOtG2R.js +1 -0
  225. package/web-ui/build/static/javadoc-7lKDS9yO.js +1 -0
  226. package/web-ui/build/static/javadoclike-UZC5a-I2.js +1 -0
  227. package/web-ui/build/static/javascript-BVwVipxy.js +1 -0
  228. package/web-ui/build/static/javastacktrace-Dysb6pma.js +1 -0
  229. package/web-ui/build/static/jboss-cli-DnBJbhvD.js +1 -0
  230. package/web-ui/build/static/jexl-Xt80RITf.js +1 -0
  231. package/web-ui/build/static/jolie-K583lEAy.js +1 -0
  232. package/web-ui/build/static/jq-DzZu56Cz.js +1 -0
  233. package/web-ui/build/static/js-extras-Cnbo_FPE.js +1 -0
  234. package/web-ui/build/static/js-templates-ChGVoxvZ.js +1 -0
  235. package/web-ui/build/static/jsdoc-7PKg08vo.js +1 -0
  236. package/web-ui/build/static/json-CS8btz_1.js +1 -0
  237. package/web-ui/build/static/json-NWyA8Y-S.js +1 -0
  238. package/web-ui/build/static/json5-BTuuCOka.js +1 -0
  239. package/web-ui/build/static/jsonp-CddCenzG.js +1 -0
  240. package/web-ui/build/static/jsstacktrace-Iz7J77qQ.js +1 -0
  241. package/web-ui/build/static/jsx-KHA4XV99.js +1 -0
  242. package/web-ui/build/static/julia-DBE7YTR3.js +1 -0
  243. package/web-ui/build/static/julia-DhbxCJBI.js +1 -0
  244. package/web-ui/build/static/julia-repl-DMdm1IG1.js +1 -0
  245. package/web-ui/build/static/keepalived-B7vqYV9X.js +1 -0
  246. package/web-ui/build/static/keyman-BgxIO8fq.js +1 -0
  247. package/web-ui/build/static/kotlin-DkKt1c_W.js +1 -0
  248. package/web-ui/build/static/kotlin-DkVwHXV3.js +1 -0
  249. package/web-ui/build/static/kumir-ByisfWMX.js +1 -0
  250. package/web-ui/build/static/kusto-D0PVadiC.js +1 -0
  251. package/web-ui/build/static/lasso-DUqlKJ-V.js +1 -0
  252. package/web-ui/build/static/latex-B_KNiR3P.js +1 -0
  253. package/web-ui/build/static/latex-CAna5qNt.js +1 -0
  254. package/web-ui/build/static/latte-IGkHLrSc.js +1 -0
  255. package/web-ui/build/static/ldif-COEZfOAo.js +1 -0
  256. package/web-ui/build/static/leaf-zSqkBknP.js +1 -0
  257. package/web-ui/build/static/less-BZ7CLYuK.js +1 -0
  258. package/web-ui/build/static/less-DTOaHWfJ.js +1 -0
  259. package/web-ui/build/static/lilypond-CXVSkLeK.js +1 -0
  260. package/web-ui/build/static/liquid-C-anTr0A.js +1 -0
  261. package/web-ui/build/static/lisp-CadxWoyo.js +1 -0
  262. package/web-ui/build/static/lisp-hkvi2iDB.js +1 -0
  263. package/web-ui/build/static/livecodeserver-CHrsuOkQ.js +1 -0
  264. package/web-ui/build/static/livescript-B3gz-3aB.js +1 -0
  265. package/web-ui/build/static/livescript-DnHL9ghu.js +1 -0
  266. package/web-ui/build/static/llvm-BahggCBp.js +1 -0
  267. package/web-ui/build/static/llvm-CmHdko4Y.js +1 -0
  268. package/web-ui/build/static/log-Czikd_pI.js +1 -0
  269. package/web-ui/build/static/lolcode-Ch49C9Zh.js +1 -0
  270. package/web-ui/build/static/lsl-C-VWBCeP.js +1 -0
  271. package/web-ui/build/static/lua-CUvtI6AS.js +1 -0
  272. package/web-ui/build/static/lua-z6ZTYh0E.js +1 -0
  273. package/web-ui/build/static/magma-n2Gm1_JJ.js +1 -0
  274. package/web-ui/build/static/makefile-CV719aL9.js +1 -0
  275. package/web-ui/build/static/makefile-D3XU9qyi.js +1 -0
  276. package/web-ui/build/static/markdown-B7ecawDo.js +1 -0
  277. package/web-ui/build/static/markdown-BAZuKAWm.js +1 -0
  278. package/web-ui/build/static/markup-templating-CkJ0kvIz.js +1 -0
  279. package/web-ui/build/static/mathematica-DeYzfKBj.js +1 -0
  280. package/web-ui/build/static/matlab-CkL4qFcf.js +1 -0
  281. package/web-ui/build/static/matlab-DyeBcYxN.js +1 -0
  282. package/web-ui/build/static/maxima-BYkoTgQQ.js +1 -0
  283. package/web-ui/build/static/maxscript-DF4yyx_y.js +1 -0
  284. package/web-ui/build/static/mel-Cvinm-ul.js +1 -0
  285. package/web-ui/build/static/mel-DuhIFj6N.js +1 -0
  286. package/web-ui/build/static/mercury-BgIQH4Io.js +1 -0
  287. package/web-ui/build/static/mermaid-Cu_HXPUU.js +1 -0
  288. package/web-ui/build/static/mipsasm-Bgjx3kJk.js +1 -0
  289. package/web-ui/build/static/mizar-D6qzNoqS.js +1 -0
  290. package/web-ui/build/static/mizar-_PkxIqXq.js +1 -0
  291. package/web-ui/build/static/mojolicious-DUGLQPxV.js +1 -0
  292. package/web-ui/build/static/mongodb-BLMBcuTL.js +1 -0
  293. package/web-ui/build/static/monkey-C5k7PFu0.js +1 -0
  294. package/web-ui/build/static/monkey-DXGsKsbX.js +1 -0
  295. package/web-ui/build/static/moonscript-1TthCNMT.js +1 -0
  296. package/web-ui/build/static/moonscript-DqJs0-Md.js +1 -0
  297. package/web-ui/build/static/n1ql-Bwd4nK-7.js +1 -0
  298. package/web-ui/build/static/n1ql-hfjCkL2y.js +1 -0
  299. package/web-ui/build/static/n4js-gwCvxndi.js +1 -0
  300. package/web-ui/build/static/nand2tetris-hdl-CRRkn3L9.js +1 -0
  301. package/web-ui/build/static/naniscript-C_wnlSUo.js +1 -0
  302. package/web-ui/build/static/nasm-DX-Dob1L.js +1 -0
  303. package/web-ui/build/static/neon-vJIHxlBH.js +1 -0
  304. package/web-ui/build/static/nevod-Bax1uE4z.js +1 -0
  305. package/web-ui/build/static/nginx-BQS7w2F8.js +1 -0
  306. package/web-ui/build/static/nginx-Bt8431vM.js +1 -0
  307. package/web-ui/build/static/nim-0PFojGir.js +1 -0
  308. package/web-ui/build/static/nim-BQVxzPdc.js +1 -0
  309. package/web-ui/build/static/nix-C1td4KJd.js +1 -0
  310. package/web-ui/build/static/nix-CGOaQ4S_.js +1 -0
  311. package/web-ui/build/static/node-repl-BsAGA-kF.js +1 -0
  312. package/web-ui/build/static/nsis-B8d23hVv.js +1 -0
  313. package/web-ui/build/static/nsis-CRfGDpKw.js +1 -0
  314. package/web-ui/build/static/objectivec-CVrobj9V.js +1 -0
  315. package/web-ui/build/static/objectivec-DcVwp8g9.js +1 -0
  316. package/web-ui/build/static/ocaml-b8Cm2pBQ.js +1 -0
  317. package/web-ui/build/static/ocaml-mP-4C0uB.js +1 -0
  318. package/web-ui/build/static/opencl--Qo9pjSM.js +1 -0
  319. package/web-ui/build/static/openqasm-Dt7vKzox.js +1 -0
  320. package/web-ui/build/static/openscad-By-SEqIm.js +1 -0
  321. package/web-ui/build/static/oxygene-BifGHmAP.js +1 -0
  322. package/web-ui/build/static/oz-DHXFoY_V.js +1 -0
  323. package/web-ui/build/static/parigp-CQEx84-o.js +1 -0
  324. package/web-ui/build/static/parser-DevuQ_YA.js +1 -0
  325. package/web-ui/build/static/parser3-IBmULMjM.js +1 -0
  326. package/web-ui/build/static/pascal-hHG_VNBq.js +1 -0
  327. package/web-ui/build/static/pascaligo-DcXZnXMD.js +1 -0
  328. package/web-ui/build/static/pcaxis-paqvl2ov.js +1 -0
  329. package/web-ui/build/static/peoplecode-T-lVjo6Q.js +1 -0
  330. package/web-ui/build/static/perl-BrrOfxJA.js +1 -0
  331. package/web-ui/build/static/perl-DwF9DDkX.js +1 -0
  332. package/web-ui/build/static/pf-CCvQZiY2.js +1 -0
  333. package/web-ui/build/static/pgsql-DYZXTARb.js +1 -0
  334. package/web-ui/build/static/php-C8P7LrqU.js +1 -0
  335. package/web-ui/build/static/php-Jh4xpwhM.js +1 -0
  336. package/web-ui/build/static/php-extras-Ddj6zZ2a.js +1 -0
  337. package/web-ui/build/static/php-template-D0846ZMl.js +1 -0
  338. package/web-ui/build/static/phpdoc-DU8hHiT4.js +1 -0
  339. package/web-ui/build/static/plaintext-BpAdoq1j.js +1 -0
  340. package/web-ui/build/static/plsql-DjRpUwV7.js +1 -0
  341. package/web-ui/build/static/pony-C91UDOZB.js +1 -0
  342. package/web-ui/build/static/powerquery-CbFt66kY.js +1 -0
  343. package/web-ui/build/static/powershell-Bpd_CmgV.js +1 -0
  344. package/web-ui/build/static/powershell-C0-63tFn.js +1 -0
  345. package/web-ui/build/static/processing-COoELNkd.js +1 -0
  346. package/web-ui/build/static/processing-DovufXGj.js +1 -0
  347. package/web-ui/build/static/profile-DSijKis_.js +1 -0
  348. package/web-ui/build/static/prolog-BPJoWbIS.js +1 -0
  349. package/web-ui/build/static/prolog-Cs4I3Exr.js +1 -0
  350. package/web-ui/build/static/promql-aIfsISjo.js +1 -0
  351. package/web-ui/build/static/properties-DWHgjzpz.js +1 -0
  352. package/web-ui/build/static/properties-k4Dmn8BE.js +1 -0
  353. package/web-ui/build/static/protobuf-HvnZbIjE.js +1 -0
  354. package/web-ui/build/static/protobuf-bqbMMmGn.js +1 -0
  355. package/web-ui/build/static/psl-KbjBRrbA.js +1 -0
  356. package/web-ui/build/static/pug-DJVp_q_q.js +1 -0
  357. package/web-ui/build/static/puppet-DloEWvDZ.js +1 -0
  358. package/web-ui/build/static/puppet-WFgyaopG.js +1 -0
  359. package/web-ui/build/static/pure-483zjlGE.js +1 -0
  360. package/web-ui/build/static/purebasic-CZ8DdKkF.js +1 -0
  361. package/web-ui/build/static/purebasic-dlQReKmz.js +1 -0
  362. package/web-ui/build/static/purescript-BQnFvaU3.js +1 -0
  363. package/web-ui/build/static/python-CZ8lWs1l.js +1 -0
  364. package/web-ui/build/static/python-SU3ESoh4.js +1 -0
  365. package/web-ui/build/static/python-repl-BBkzrvQe.js +1 -0
  366. package/web-ui/build/static/q-DTmVFt9r.js +1 -0
  367. package/web-ui/build/static/q-DtzT8sxS.js +1 -0
  368. package/web-ui/build/static/qml-B5F36arQ.js +1 -0
  369. package/web-ui/build/static/qml-BGRIPpl3.js +1 -0
  370. package/web-ui/build/static/qore-CRS2zeE4.js +1 -0
  371. package/web-ui/build/static/qsharp-C4Tv2HNI.js +1 -0
  372. package/web-ui/build/static/r-BrIQscI_.js +1 -0
  373. package/web-ui/build/static/r-C1dTwrK3.js +1 -0
  374. package/web-ui/build/static/racket-CY5XtMxt.js +1 -0
  375. package/web-ui/build/static/reason-BOspKOui.js +1 -0
  376. package/web-ui/build/static/reasonml-CI0bWekr.js +1 -0
  377. package/web-ui/build/static/regex-Bu9fRM2h.js +1 -0
  378. package/web-ui/build/static/rego-DPs1L6rM.js +1 -0
  379. package/web-ui/build/static/renpy-CqxG8TUa.js +1 -0
  380. package/web-ui/build/static/rest-DVBf_JOU.js +1 -0
  381. package/web-ui/build/static/rib-C7f1MpLJ.js +1 -0
  382. package/web-ui/build/static/rip-CnDVKjn3.js +1 -0
  383. package/web-ui/build/static/roboconf-B3CDWS-p.js +1 -0
  384. package/web-ui/build/static/roboconf-Cl96yvBS.js +1 -0
  385. package/web-ui/build/static/robotframework-BitHYBrT.js +1 -0
  386. package/web-ui/build/static/routeros-CfrP9irD.js +1 -0
  387. package/web-ui/build/static/rsl-CGblvP8t.js +1 -0
  388. package/web-ui/build/static/ruby-CJyKAxoz.js +1 -0
  389. package/web-ui/build/static/ruby-KT7L0c-N.js +1 -0
  390. package/web-ui/build/static/ruleslanguage-_MWgFm9V.js +1 -0
  391. package/web-ui/build/static/rust-DAiMZG-s.js +1 -0
  392. package/web-ui/build/static/rust-Dmpa9JNg.js +1 -0
  393. package/web-ui/build/static/sas-CQltIY6v.js +1 -0
  394. package/web-ui/build/static/sas-aM67MfcZ.js +1 -0
  395. package/web-ui/build/static/sass-DEBoFRRa.js +1 -0
  396. package/web-ui/build/static/scala-Cd5U29aY.js +1 -0
  397. package/web-ui/build/static/scala-DzaGwcFi.js +1 -0
  398. package/web-ui/build/static/scheme-Cqqy_i9p.js +1 -0
  399. package/web-ui/build/static/scheme-cIT7gYIT.js +1 -0
  400. package/web-ui/build/static/scilab-DkyaqVYN.js +1 -0
  401. package/web-ui/build/static/scss-Cyi-dRZB.js +1 -0
  402. package/web-ui/build/static/scss-D_mUdkix.js +1 -0
  403. package/web-ui/build/static/shell-BF_xfQdX.js +1 -0
  404. package/web-ui/build/static/shell-session-C4TwlI5u.js +1 -0
  405. package/web-ui/build/static/smali-CvYqcvZD.js +1 -0
  406. package/web-ui/build/static/smali-DdJm0lGk.js +1 -0
  407. package/web-ui/build/static/smalltalk-B4v_uFAj.js +1 -0
  408. package/web-ui/build/static/smalltalk-BHk9orPf.js +1 -0
  409. package/web-ui/build/static/smarty-DCURdYbE.js +1 -0
  410. package/web-ui/build/static/sml-BFUDbMt7.js +1 -0
  411. package/web-ui/build/static/sml-BIbfLMH_.js +1 -0
  412. package/web-ui/build/static/solidity-fyryqi43.js +1 -0
  413. package/web-ui/build/static/solution-file-DoPZY9rL.js +1 -0
  414. package/web-ui/build/static/soy-AjVmvggx.js +1 -0
  415. package/web-ui/build/static/sparql-C4-CLrDw.js +1 -0
  416. package/web-ui/build/static/splunk-spl-DclxQT5j.js +1 -0
  417. package/web-ui/build/static/sqf-CuCGayd3.js +1 -0
  418. package/web-ui/build/static/sqf-uK9OZDXX.js +1 -0
  419. package/web-ui/build/static/sql-B0Pqn1rt.js +1 -0
  420. package/web-ui/build/static/sql-DlNrMSaF.js +1 -0
  421. package/web-ui/build/static/sql_more-BmwYd1jA.js +1 -0
  422. package/web-ui/build/static/squirrel-PzIoP6WH.js +1 -0
  423. package/web-ui/build/static/stan-BZe07EwD.js +1 -0
  424. package/web-ui/build/static/stan-De1mVh5w.js +1 -0
  425. package/web-ui/build/static/stata-Dt6KIbHG.js +1 -0
  426. package/web-ui/build/static/step21-5If4hNHF.js +1 -0
  427. package/web-ui/build/static/stylus-Cfsl-liy.js +1 -0
  428. package/web-ui/build/static/stylus-V2q0pGFi.js +1 -0
  429. package/web-ui/build/static/subunit-Dw4nCzI8.js +1 -0
  430. package/web-ui/build/static/swift-CNMLwgfO.js +1 -0
  431. package/web-ui/build/static/swift-HUQ5YZQh.js +1 -0
  432. package/web-ui/build/static/systemd-C8DE2Z5C.js +1 -0
  433. package/web-ui/build/static/t4-cs-C_Ey5AJK.js +1 -0
  434. package/web-ui/build/static/t4-templating-DwnTc5zw.js +1 -0
  435. package/web-ui/build/static/t4-vb-C-0KWoPY.js +1 -0
  436. package/web-ui/build/static/taggerscript-Bv6_taGx.js +1 -0
  437. package/web-ui/build/static/tap-CFDvzug8.js +1 -0
  438. package/web-ui/build/static/tap-CdJ_Enrg.js +1 -0
  439. package/web-ui/build/static/tcl-BAEseFnT.js +1 -0
  440. package/web-ui/build/static/tcl-BS59XADk.js +1 -0
  441. package/web-ui/build/static/textile-a8y5rAtB.js +1 -0
  442. package/web-ui/build/static/thrift-D7V-eNGh.js +1 -0
  443. package/web-ui/build/static/toml-D8cwTEse.js +1 -0
  444. package/web-ui/build/static/tp-hIAhc2bK.js +1 -0
  445. package/web-ui/build/static/tremor-Czk4wryK.js +1 -0
  446. package/web-ui/build/static/tsx-BOeSrzC2.js +1 -0
  447. package/web-ui/build/static/tt2-BHVJTkSt.js +1 -0
  448. package/web-ui/build/static/turtle-BOWLWZq7.js +1 -0
  449. package/web-ui/build/static/twig-CiL22hfc.js +1 -0
  450. package/web-ui/build/static/twig-fnjh9nSd.js +1 -0
  451. package/web-ui/build/static/typescript-BXgo8AbH.js +1 -0
  452. package/web-ui/build/static/typescript-Bd_EcNlS.js +1 -0
  453. package/web-ui/build/static/typoscript-OvQoCcN-.js +1 -0
  454. package/web-ui/build/static/unrealscript-Dw9u3aN1.js +1 -0
  455. package/web-ui/build/static/uorazor-BYmWZy9R.js +1 -0
  456. package/web-ui/build/static/uri-cZEKPhfB.js +1 -0
  457. package/web-ui/build/static/v-DCUw5P5w.js +1 -0
  458. package/web-ui/build/static/vala-BeMIXdl5.js +1 -0
  459. package/web-ui/build/static/vala-Dchv0k-k.js +1 -0
  460. package/web-ui/build/static/vbnet-CYNUkFEn.js +1 -0
  461. package/web-ui/build/static/vbnet-DJpHrZ4P.js +1 -0
  462. package/web-ui/build/static/vbscript-html-eSFLndJq.js +1 -0
  463. package/web-ui/build/static/vbscript-uo6pZmjr.js +1 -0
  464. package/web-ui/build/static/velocity-BZ4IThJR.js +1 -0
  465. package/web-ui/build/static/verilog-CaEouCrk.js +1 -0
  466. package/web-ui/build/static/verilog-D_yjfQsL.js +1 -0
  467. package/web-ui/build/static/vhdl-3zobHypY.js +1 -0
  468. package/web-ui/build/static/vhdl-DfMoYPtq.js +1 -0
  469. package/web-ui/build/static/vim-DBVHHc5J.js +1 -0
  470. package/web-ui/build/static/vim-DillbvCO.js +1 -0
  471. package/web-ui/build/static/visual-basic-C7H7McST.js +1 -0
  472. package/web-ui/build/static/warpscript-BKjx-dEN.js +1 -0
  473. package/web-ui/build/static/wasm-AVgQyIgy.js +1 -0
  474. package/web-ui/build/static/web-idl-BNNIYzG6.js +1 -0
  475. package/web-ui/build/static/wiki-CLfpaX63.js +1 -0
  476. package/web-ui/build/static/wolfram-DUecju0s.js +1 -0
  477. package/web-ui/build/static/wren-DOzRaRuS.js +1 -0
  478. package/web-ui/build/static/x86asm-FxnmOy9a.js +1 -0
  479. package/web-ui/build/static/xeora-u3RdEzzL.js +1 -0
  480. package/web-ui/build/static/xl-DRkSDCgX.js +1 -0
  481. package/web-ui/build/static/xml-d39yV6YW.js +1 -0
  482. package/web-ui/build/static/xml-doc-CAsyFkZk.js +1 -0
  483. package/web-ui/build/static/xojo-C82wULba.js +1 -0
  484. package/web-ui/build/static/xquery-CdvxjAIl.js +1 -0
  485. package/web-ui/build/static/xquery-ClPcUh76.js +1 -0
  486. package/web-ui/build/static/yaml-C5_f2N79.js +1 -0
  487. package/web-ui/build/static/yaml-ZJm6Uydk.js +1 -0
  488. package/web-ui/build/static/yang-BR7aZNbT.js +1 -0
  489. package/web-ui/build/static/zephir-CnL3vXXJ.js +1 -0
  490. package/web-ui/build/static/zig-e5ovIuAu.js +1 -0
  491. package/web-ui/build/static/1c-C_9olPfq.js +0 -1
  492. package/web-ui/build/static/abap--DeFI1OC.js +0 -1
  493. package/web-ui/build/static/abnf-5HzSmxRy.js +0 -1
  494. package/web-ui/build/static/abnf-IG-O3NHT.js +0 -1
  495. package/web-ui/build/static/accesslog-qO_3I5IJ.js +0 -1
  496. package/web-ui/build/static/actionscript-DbFc2Uxo.js +0 -1
  497. package/web-ui/build/static/actionscript-jU7xUh7w.js +0 -1
  498. package/web-ui/build/static/ada-DBOzyNDe.js +0 -1
  499. package/web-ui/build/static/ada-F0QwXh2e.js +0 -1
  500. package/web-ui/build/static/agda-Drhr_GYC.js +0 -1
  501. package/web-ui/build/static/al-bEatcrqU.js +0 -1
  502. package/web-ui/build/static/angelscript-Bp0mqasc.js +0 -1
  503. package/web-ui/build/static/antlr4-BCvixOqW.js +0 -1
  504. package/web-ui/build/static/apache-zSeWcGFf.js +0 -1
  505. package/web-ui/build/static/apacheconf-CEDX0qIZ.js +0 -1
  506. package/web-ui/build/static/apex-BHlvjPxZ.js +0 -1
  507. package/web-ui/build/static/apl-S86eLVnh.js +0 -1
  508. package/web-ui/build/static/applescript-D15JiHTt.js +0 -1
  509. package/web-ui/build/static/applescript-D6g2nIGs.js +0 -1
  510. package/web-ui/build/static/aql-C4SWmhk2.js +0 -1
  511. package/web-ui/build/static/arcade-DrwRCCCh.js +0 -1
  512. package/web-ui/build/static/arduino-Blsw4-hb.js +0 -1
  513. package/web-ui/build/static/arduino-s6CYn6L3.js +0 -1
  514. package/web-ui/build/static/arff-DnrfdsTx.js +0 -1
  515. package/web-ui/build/static/armasm-C2WK9q2y.js +0 -1
  516. package/web-ui/build/static/asciidoc-BiY2pDol.js +0 -1
  517. package/web-ui/build/static/asciidoc-DG128-Q1.js +0 -1
  518. package/web-ui/build/static/asm6502-BEAW0Cck.js +0 -1
  519. package/web-ui/build/static/asmatmel-C4v7boSu.js +0 -1
  520. package/web-ui/build/static/aspectj-Bfek529B.js +0 -1
  521. package/web-ui/build/static/aspnet-8K2PeLn2.js +0 -1
  522. package/web-ui/build/static/autohotkey-BHw78HYu.js +0 -1
  523. package/web-ui/build/static/autohotkey-C5DDQtDL.js +0 -1
  524. package/web-ui/build/static/autoit-CgsSmQkF.js +0 -1
  525. package/web-ui/build/static/autoit-DZ7IS_9i.js +0 -1
  526. package/web-ui/build/static/avisynth-B20WuEUg.js +0 -1
  527. package/web-ui/build/static/avrasm-C7TrcWBg.js +0 -1
  528. package/web-ui/build/static/avro-idl-CfDy8XWE.js +0 -1
  529. package/web-ui/build/static/awk-cjY-7p5o.js +0 -1
  530. package/web-ui/build/static/axapta-Bu9INQG2.js +0 -1
  531. package/web-ui/build/static/bash-B998wxy_.js +0 -1
  532. package/web-ui/build/static/bash-LE6roX2s.js +0 -1
  533. package/web-ui/build/static/basic-Cd6-vDdH.js +0 -1
  534. package/web-ui/build/static/basic-mfY-ovnp.js +0 -1
  535. package/web-ui/build/static/batch-DxVy2cwv.js +0 -1
  536. package/web-ui/build/static/bbcode-Ct3Yu8De.js +0 -1
  537. package/web-ui/build/static/bicep-CexPoMEW.js +0 -1
  538. package/web-ui/build/static/birb-CH1RMpPI.js +0 -1
  539. package/web-ui/build/static/bison-XQFuPB_Q.js +0 -1
  540. package/web-ui/build/static/bnf-CIDGmY3l.js +0 -1
  541. package/web-ui/build/static/bnf-DjN_FU2s.js +0 -1
  542. package/web-ui/build/static/brainfuck-Cu_hvayi.js +0 -1
  543. package/web-ui/build/static/brainfuck-eRbe4_qo.js +0 -1
  544. package/web-ui/build/static/brightscript-Cdq0ttTN.js +0 -1
  545. package/web-ui/build/static/bro-D3aio8LS.js +0 -1
  546. package/web-ui/build/static/bsl-DFEwVZ2J.js +0 -1
  547. package/web-ui/build/static/c-D6RK1vhn.js +0 -1
  548. package/web-ui/build/static/c-DUcBA02q.js +0 -1
  549. package/web-ui/build/static/c-like-BApJDFwD.js +0 -1
  550. package/web-ui/build/static/cal-Ckv8Qnpw.js +0 -1
  551. package/web-ui/build/static/capnproto-DCoblEyS.js +0 -1
  552. package/web-ui/build/static/ceylon-DM-zZDWY.js +0 -1
  553. package/web-ui/build/static/cfscript-CMoOAgUK.js +0 -1
  554. package/web-ui/build/static/chaiscript-B3Vl3wGb.js +0 -1
  555. package/web-ui/build/static/cil-ChEi_uFO.js +0 -1
  556. package/web-ui/build/static/clean-BtA08oDV.js +0 -1
  557. package/web-ui/build/static/clojure-CWMlf7lJ.js +0 -1
  558. package/web-ui/build/static/clojure-Vur8C4jr.js +0 -1
  559. package/web-ui/build/static/clojure-repl-BsfGHdYy.js +0 -1
  560. package/web-ui/build/static/cmake-Csgl_IVr.js +0 -1
  561. package/web-ui/build/static/cmake-DFMKvwxy.js +0 -1
  562. package/web-ui/build/static/cobol-XhlGrCrW.js +0 -1
  563. package/web-ui/build/static/coffeescript-DYldGW35.js +0 -1
  564. package/web-ui/build/static/coffeescript-DvbNKwrC.js +0 -1
  565. package/web-ui/build/static/concurnas-DjALqCYn.js +0 -1
  566. package/web-ui/build/static/coq-D9QGJI6g.js +0 -1
  567. package/web-ui/build/static/coq-fAZpoc7i.js +0 -1
  568. package/web-ui/build/static/cos-GgM7WWVZ.js +0 -1
  569. package/web-ui/build/static/cpp-Cgt5qqfd.js +0 -1
  570. package/web-ui/build/static/cpp-DxVcOuBe.js +0 -1
  571. package/web-ui/build/static/crmsh-BlZWnzbY.js +0 -1
  572. package/web-ui/build/static/crystal--H7HLAQf.js +0 -1
  573. package/web-ui/build/static/crystal-DWm0bbUT.js +0 -1
  574. package/web-ui/build/static/csharp-8dr-wktE.js +0 -1
  575. package/web-ui/build/static/csharp-DFuHLPFe.js +0 -1
  576. package/web-ui/build/static/cshtml-C-L4_dy2.js +0 -1
  577. package/web-ui/build/static/csp-CJ6qbecO.js +0 -1
  578. package/web-ui/build/static/csp-DswTy-5u.js +0 -1
  579. package/web-ui/build/static/css-DdRPdKXQ.js +0 -1
  580. package/web-ui/build/static/css-extras-DMwOZFrB.js +0 -1
  581. package/web-ui/build/static/csv-BiWlhIMC.js +0 -1
  582. package/web-ui/build/static/cypher-ByNaJKO8.js +0 -1
  583. package/web-ui/build/static/d-BR89VlK-.js +0 -1
  584. package/web-ui/build/static/d-KlWvBc4w.js +0 -1
  585. package/web-ui/build/static/dart-BIsk7m6o.js +0 -1
  586. package/web-ui/build/static/dart-BnyP1Rjp.js +0 -1
  587. package/web-ui/build/static/dataweave-CH_Q2gWX.js +0 -1
  588. package/web-ui/build/static/dax-wulX9uc-.js +0 -1
  589. package/web-ui/build/static/delphi-CFowdk_A.js +0 -1
  590. package/web-ui/build/static/dhall-BfCOemEp.js +0 -1
  591. package/web-ui/build/static/diff-DQD2zPaG.js +0 -1
  592. package/web-ui/build/static/diff-DZoEdrYM.js +0 -1
  593. package/web-ui/build/static/django-B0j973Kw.js +0 -1
  594. package/web-ui/build/static/django-CYScL320.js +0 -1
  595. package/web-ui/build/static/dns-DoECkAgz.js +0 -1
  596. package/web-ui/build/static/dns-zone-file-CuoIcXgj.js +0 -1
  597. package/web-ui/build/static/docker-C2nfXTBG.js +0 -1
  598. package/web-ui/build/static/dockerfile-DBalxIH7.js +0 -1
  599. package/web-ui/build/static/dos-GNL9IdmL.js +0 -1
  600. package/web-ui/build/static/dot-rKuRS-PS.js +0 -1
  601. package/web-ui/build/static/dsconfig-CKmenTFr.js +0 -1
  602. package/web-ui/build/static/dts-AxT2qjQU.js +0 -1
  603. package/web-ui/build/static/dust-DpqHWPC4.js +0 -1
  604. package/web-ui/build/static/ebnf-CONEMpLp.js +0 -1
  605. package/web-ui/build/static/ebnf-DRWcOs8R.js +0 -1
  606. package/web-ui/build/static/editorconfig-lmLHmECZ.js +0 -1
  607. package/web-ui/build/static/eiffel-B39e31fw.js +0 -1
  608. package/web-ui/build/static/ejs-DtJwpVdo.js +0 -1
  609. package/web-ui/build/static/elixir-BH4JTqa9.js +0 -1
  610. package/web-ui/build/static/elixir-aH1DLjYD.js +0 -1
  611. package/web-ui/build/static/elm-BcCGkSrW.js +0 -1
  612. package/web-ui/build/static/elm-CCrB1JbX.js +0 -1
  613. package/web-ui/build/static/erb-CcumI1K3.js +0 -1
  614. package/web-ui/build/static/erb-_HK77hx-.js +0 -1
  615. package/web-ui/build/static/erlang-B1qxMZZp.js +0 -1
  616. package/web-ui/build/static/erlang-CCM_ejO_.js +0 -1
  617. package/web-ui/build/static/erlang-repl-D1zC2Zf6.js +0 -1
  618. package/web-ui/build/static/etlua-HJMRx9x7.js +0 -1
  619. package/web-ui/build/static/excel-DqXCKUKa.js +0 -1
  620. package/web-ui/build/static/excel-formula-oNw1T5Gi.js +0 -1
  621. package/web-ui/build/static/factor-BrTp5FZH.js +0 -1
  622. package/web-ui/build/static/false-CAVqV3ok.js +0 -1
  623. package/web-ui/build/static/firestore-security-rules-CxTofGT0.js +0 -1
  624. package/web-ui/build/static/fix-BMooo7-3.js +0 -1
  625. package/web-ui/build/static/flix-DR5Pi_4n.js +0 -1
  626. package/web-ui/build/static/flow-BoCWpUCW.js +0 -1
  627. package/web-ui/build/static/fortran-B9JI5ahV.js +0 -1
  628. package/web-ui/build/static/fortran-LXg81aOn.js +0 -1
  629. package/web-ui/build/static/fsharp-BqcGG-SM.js +0 -1
  630. package/web-ui/build/static/fsharp-Dj5YVL_h.js +0 -1
  631. package/web-ui/build/static/ftl-kuY7uFR8.js +0 -1
  632. package/web-ui/build/static/gams-CzihHKqE.js +0 -1
  633. package/web-ui/build/static/gap-BbS0A-Wl.js +0 -1
  634. package/web-ui/build/static/gauss-BauwG_O4.js +0 -1
  635. package/web-ui/build/static/gcode-VY1OKBcC.js +0 -1
  636. package/web-ui/build/static/gcode-lapsLgV5.js +0 -1
  637. package/web-ui/build/static/gdscript-1UIYB8m0.js +0 -1
  638. package/web-ui/build/static/gedcom-Bhrxt1LM.js +0 -1
  639. package/web-ui/build/static/gherkin-BsUD3vJB.js +0 -1
  640. package/web-ui/build/static/gherkin-hj_asmFX.js +0 -1
  641. package/web-ui/build/static/git-DXIrRKzR.js +0 -1
  642. package/web-ui/build/static/glsl-Bww3i9-P.js +0 -1
  643. package/web-ui/build/static/glsl-tW4hvcaQ.js +0 -1
  644. package/web-ui/build/static/gml-BIqshajA.js +0 -1
  645. package/web-ui/build/static/gml-CQqc9F-B.js +0 -1
  646. package/web-ui/build/static/gn-CBgpy8B9.js +0 -1
  647. package/web-ui/build/static/go-CEUAUIgn.js +0 -1
  648. package/web-ui/build/static/go-DPEd33Yn.js +0 -1
  649. package/web-ui/build/static/go-module-BVPbZOg5.js +0 -1
  650. package/web-ui/build/static/golo-CqB3OATq.js +0 -1
  651. package/web-ui/build/static/gradle-Djj_6FTv.js +0 -1
  652. package/web-ui/build/static/graphql-ymSYYmmE.js +0 -1
  653. package/web-ui/build/static/groovy-BLoXi1Ew.js +0 -1
  654. package/web-ui/build/static/groovy-D8ua3DVO.js +0 -1
  655. package/web-ui/build/static/haml-DKlxHs26.js +0 -1
  656. package/web-ui/build/static/haml-S_iUNysn.js +0 -1
  657. package/web-ui/build/static/handlebars-B7tcAMGB.js +0 -1
  658. package/web-ui/build/static/handlebars-CV-zB05N.js +0 -1
  659. package/web-ui/build/static/haskell-CMxCwdZX.js +0 -1
  660. package/web-ui/build/static/haskell-Dis6rGJ5.js +0 -1
  661. package/web-ui/build/static/haxe-C76IK5YN.js +0 -1
  662. package/web-ui/build/static/haxe-hbmD2uei.js +0 -1
  663. package/web-ui/build/static/hcl-BPI_t80W.js +0 -1
  664. package/web-ui/build/static/hlsl-BmeH3MXM.js +0 -1
  665. package/web-ui/build/static/hoon-BYLX7KiR.js +0 -1
  666. package/web-ui/build/static/hpkp-CFV1lvIV.js +0 -1
  667. package/web-ui/build/static/hsp-_VXPtQPw.js +0 -1
  668. package/web-ui/build/static/hsts-DzmFog1b.js +0 -1
  669. package/web-ui/build/static/htmlbars-uX8JubPS.js +0 -1
  670. package/web-ui/build/static/http-BTDAHgkv.js +0 -1
  671. package/web-ui/build/static/http-Ba1gTHCW.js +0 -1
  672. package/web-ui/build/static/hy-G7MK4TLb.js +0 -1
  673. package/web-ui/build/static/ichigojam-BKKN56jZ.js +0 -1
  674. package/web-ui/build/static/icon-nrqdEYwB.js +0 -1
  675. package/web-ui/build/static/icu-message-format-Bjone7XH.js +0 -1
  676. package/web-ui/build/static/idris-CKkY_0op.js +0 -1
  677. package/web-ui/build/static/iecst-EV3ZvBDC.js +0 -1
  678. package/web-ui/build/static/ignore-LJIbInke.js +0 -1
  679. package/web-ui/build/static/index-C1x426Pt.js +0 -734
  680. package/web-ui/build/static/index-CTzeYMwr.js +0 -13
  681. package/web-ui/build/static/index-CUBjz1OL.css +0 -1
  682. package/web-ui/build/static/index-DnVIkRiR.js +0 -1
  683. package/web-ui/build/static/inform7-BiW6HbUl.js +0 -1
  684. package/web-ui/build/static/inform7-DT-x6SRD.js +0 -1
  685. package/web-ui/build/static/ini-BbnHjAtW.js +0 -1
  686. package/web-ui/build/static/ini-DuNY7Iqz.js +0 -1
  687. package/web-ui/build/static/io-BquAtlCB.js +0 -1
  688. package/web-ui/build/static/irpf90-CZELNeJl.js +0 -1
  689. package/web-ui/build/static/isbl-DhOgOzai.js +0 -1
  690. package/web-ui/build/static/j-r8D3BrBj.js +0 -1
  691. package/web-ui/build/static/java-MjQ5EBN5.js +0 -1
  692. package/web-ui/build/static/java-c3Jyc0B6.js +0 -1
  693. package/web-ui/build/static/javadoc-CfNFziRD.js +0 -1
  694. package/web-ui/build/static/javadoclike-BUcJZQAh.js +0 -1
  695. package/web-ui/build/static/javascript-CL_4g6j3.js +0 -1
  696. package/web-ui/build/static/javastacktrace-4P_J-58S.js +0 -1
  697. package/web-ui/build/static/jboss-cli-DUfK88hO.js +0 -1
  698. package/web-ui/build/static/jexl-DsSijmcs.js +0 -1
  699. package/web-ui/build/static/jolie-DjtNIZB4.js +0 -1
  700. package/web-ui/build/static/jq-BXdSm79y.js +0 -1
  701. package/web-ui/build/static/js-extras-B-C7ngCD.js +0 -1
  702. package/web-ui/build/static/js-templates-CmPAiwFC.js +0 -1
  703. package/web-ui/build/static/jsdoc-CkiXOOMV.js +0 -1
  704. package/web-ui/build/static/json-Bmvhezfj.js +0 -1
  705. package/web-ui/build/static/json-HPR8wBiw.js +0 -1
  706. package/web-ui/build/static/json5-Chcg9nnQ.js +0 -1
  707. package/web-ui/build/static/jsonp-C3KWcfzJ.js +0 -1
  708. package/web-ui/build/static/jsstacktrace-D1jRFy-S.js +0 -1
  709. package/web-ui/build/static/jsx-COtCqQ_9.js +0 -1
  710. package/web-ui/build/static/julia-BVvfw2TB.js +0 -1
  711. package/web-ui/build/static/julia-Ddalvdoa.js +0 -1
  712. package/web-ui/build/static/julia-repl-Bc-uwnIZ.js +0 -1
  713. package/web-ui/build/static/keepalived-CJ9ZYuQx.js +0 -1
  714. package/web-ui/build/static/keyman-BHea-dB6.js +0 -1
  715. package/web-ui/build/static/kotlin-DWOyCb_2.js +0 -1
  716. package/web-ui/build/static/kotlin-fvMiFIS3.js +0 -1
  717. package/web-ui/build/static/kumir-DaNls7gN.js +0 -1
  718. package/web-ui/build/static/kusto-DKweJuKl.js +0 -1
  719. package/web-ui/build/static/lasso-BB9dUrv_.js +0 -1
  720. package/web-ui/build/static/latex-C7U5RUQQ.js +0 -1
  721. package/web-ui/build/static/latex-CXM3EEy0.js +0 -1
  722. package/web-ui/build/static/latte-B4pEA635.js +0 -1
  723. package/web-ui/build/static/ldif-D3wYig10.js +0 -1
  724. package/web-ui/build/static/leaf-uFkjT9sR.js +0 -1
  725. package/web-ui/build/static/less-CbUH4jBX.js +0 -1
  726. package/web-ui/build/static/less-DEGyfeZn.js +0 -1
  727. package/web-ui/build/static/lilypond-UuoBjShK.js +0 -1
  728. package/web-ui/build/static/liquid-DB3a9n7S.js +0 -1
  729. package/web-ui/build/static/lisp-BDbj7Kd2.js +0 -1
  730. package/web-ui/build/static/lisp-D3T0YOb1.js +0 -1
  731. package/web-ui/build/static/livecodeserver-CkZMVLmr.js +0 -1
  732. package/web-ui/build/static/livescript-CJbtbTfA.js +0 -1
  733. package/web-ui/build/static/livescript-CdWg1xgf.js +0 -1
  734. package/web-ui/build/static/llvm-8hpjZ6qF.js +0 -1
  735. package/web-ui/build/static/llvm-DPpuma6i.js +0 -1
  736. package/web-ui/build/static/log-DwsLgecp.js +0 -1
  737. package/web-ui/build/static/lolcode-D3tkyiVB.js +0 -1
  738. package/web-ui/build/static/lsl-BBM4ZYza.js +0 -1
  739. package/web-ui/build/static/lua-DT0su8pZ.js +0 -1
  740. package/web-ui/build/static/lua-DqZXmUwn.js +0 -1
  741. package/web-ui/build/static/magma-DGW0-GCr.js +0 -1
  742. package/web-ui/build/static/makefile-C_K7AaVw.js +0 -1
  743. package/web-ui/build/static/makefile-CarddjPJ.js +0 -1
  744. package/web-ui/build/static/markdown-3dq-8I9T.js +0 -1
  745. package/web-ui/build/static/markdown-c4VYoNo2.js +0 -1
  746. package/web-ui/build/static/markup-templating-BBX0gWS5.js +0 -1
  747. package/web-ui/build/static/mathematica-n-aqoCbO.js +0 -1
  748. package/web-ui/build/static/matlab-B_kYC-A2.js +0 -1
  749. package/web-ui/build/static/matlab-CQP2D_0j.js +0 -1
  750. package/web-ui/build/static/maxima-piaAhCcP.js +0 -1
  751. package/web-ui/build/static/maxscript-CkxNZR1a.js +0 -1
  752. package/web-ui/build/static/mel-BXbrV0aU.js +0 -1
  753. package/web-ui/build/static/mel-CBSpVZcl.js +0 -1
  754. package/web-ui/build/static/mercury-CffeC87B.js +0 -1
  755. package/web-ui/build/static/mermaid-DAZcfksM.js +0 -1
  756. package/web-ui/build/static/mipsasm-DvOPoNgz.js +0 -1
  757. package/web-ui/build/static/mizar-C2ki99qc.js +0 -1
  758. package/web-ui/build/static/mizar-C5AXRrsD.js +0 -1
  759. package/web-ui/build/static/mojolicious-DklqV-uP.js +0 -1
  760. package/web-ui/build/static/mongodb-BbuSPlN0.js +0 -1
  761. package/web-ui/build/static/monkey-CJBb2-mV.js +0 -1
  762. package/web-ui/build/static/monkey-DgERCZQd.js +0 -1
  763. package/web-ui/build/static/moonscript-BovBU9jW.js +0 -1
  764. package/web-ui/build/static/moonscript-lPqbcjjy.js +0 -1
  765. package/web-ui/build/static/n1ql-CjVXW0Z0.js +0 -1
  766. package/web-ui/build/static/n1ql-DkfG2dTH.js +0 -1
  767. package/web-ui/build/static/n4js-6L9QW_kw.js +0 -1
  768. package/web-ui/build/static/nand2tetris-hdl-CqohGHfB.js +0 -1
  769. package/web-ui/build/static/naniscript-CIvQ6y1b.js +0 -1
  770. package/web-ui/build/static/nasm-CQbJbZZf.js +0 -1
  771. package/web-ui/build/static/neon-Cz41RJxQ.js +0 -1
  772. package/web-ui/build/static/nevod-WPRJ2Q9j.js +0 -1
  773. package/web-ui/build/static/nginx-BL2wPbD-.js +0 -1
  774. package/web-ui/build/static/nginx-DsqC_gQT.js +0 -1
  775. package/web-ui/build/static/nim-7qnwzYm_.js +0 -1
  776. package/web-ui/build/static/nim-D6iDo5H6.js +0 -1
  777. package/web-ui/build/static/nix-BQSsaH-G.js +0 -1
  778. package/web-ui/build/static/nix-DgwCtjpD.js +0 -1
  779. package/web-ui/build/static/node-repl-Cb4w8DbD.js +0 -1
  780. package/web-ui/build/static/nsis-CiXZWrqR.js +0 -1
  781. package/web-ui/build/static/nsis-CuwGI5px.js +0 -1
  782. package/web-ui/build/static/objectivec-DZXCqQ1J.js +0 -1
  783. package/web-ui/build/static/objectivec-GNGh-wiY.js +0 -1
  784. package/web-ui/build/static/ocaml-BPg_ANkr.js +0 -1
  785. package/web-ui/build/static/ocaml-DRUpaN8p.js +0 -1
  786. package/web-ui/build/static/opencl-CazTs_sf.js +0 -1
  787. package/web-ui/build/static/openqasm-DHuuXGjm.js +0 -1
  788. package/web-ui/build/static/openscad-YbvBFeLc.js +0 -1
  789. package/web-ui/build/static/oxygene-DDzgbCaQ.js +0 -1
  790. package/web-ui/build/static/oz-BRDBLIjx.js +0 -1
  791. package/web-ui/build/static/parigp-BbApdos7.js +0 -1
  792. package/web-ui/build/static/parser-CbVH4ySK.js +0 -1
  793. package/web-ui/build/static/parser3-BIkvuuuE.js +0 -1
  794. package/web-ui/build/static/pascal-oS7U_3sO.js +0 -1
  795. package/web-ui/build/static/pascaligo-57DdFj76.js +0 -1
  796. package/web-ui/build/static/pcaxis-V-Euf0DV.js +0 -1
  797. package/web-ui/build/static/peoplecode-DjyRW5V8.js +0 -1
  798. package/web-ui/build/static/perl-BEQWvjeP.js +0 -1
  799. package/web-ui/build/static/perl-CiDHRorC.js +0 -1
  800. package/web-ui/build/static/pf-S5x_U1LC.js +0 -1
  801. package/web-ui/build/static/pgsql-DwHZC-iy.js +0 -1
  802. package/web-ui/build/static/php-7enmlb-I.js +0 -1
  803. package/web-ui/build/static/php-extras-BhRDMlXE.js +0 -1
  804. package/web-ui/build/static/php-kIwfq-Jj.js +0 -1
  805. package/web-ui/build/static/php-template-M2RrZc1R.js +0 -1
  806. package/web-ui/build/static/phpdoc-HUeiWlkw.js +0 -1
  807. package/web-ui/build/static/plaintext-CPt25ow_.js +0 -1
  808. package/web-ui/build/static/plsql-BvoRAbdz.js +0 -1
  809. package/web-ui/build/static/pony-BVuhxk7D.js +0 -1
  810. package/web-ui/build/static/powerquery-rnRfiL3F.js +0 -1
  811. package/web-ui/build/static/powershell-BQR2-qjF.js +0 -1
  812. package/web-ui/build/static/powershell-S_XnLato.js +0 -1
  813. package/web-ui/build/static/processing-B-8pt1gx.js +0 -1
  814. package/web-ui/build/static/processing-ozS1KPr7.js +0 -1
  815. package/web-ui/build/static/profile-DOjTmxRs.js +0 -1
  816. package/web-ui/build/static/prolog-BaaxuI5L.js +0 -1
  817. package/web-ui/build/static/prolog-D90dFqfr.js +0 -1
  818. package/web-ui/build/static/promql-BuyoLqtl.js +0 -1
  819. package/web-ui/build/static/properties-C0pMastm.js +0 -1
  820. package/web-ui/build/static/properties-k7bXYQao.js +0 -1
  821. package/web-ui/build/static/protobuf-ChaO1q7B.js +0 -1
  822. package/web-ui/build/static/protobuf-DAGxv01T.js +0 -1
  823. package/web-ui/build/static/psl-BpYOLBqn.js +0 -1
  824. package/web-ui/build/static/pug-BUlJA4UD.js +0 -1
  825. package/web-ui/build/static/puppet-8l--PVpO.js +0 -1
  826. package/web-ui/build/static/puppet-BJDN84xr.js +0 -1
  827. package/web-ui/build/static/pure-DhqjQg1a.js +0 -1
  828. package/web-ui/build/static/purebasic-BHnSz9Yh.js +0 -1
  829. package/web-ui/build/static/purebasic-CeiLO2aV.js +0 -1
  830. package/web-ui/build/static/purescript-BaXXPnKS.js +0 -1
  831. package/web-ui/build/static/python-BXdJ4yqN.js +0 -1
  832. package/web-ui/build/static/python-Cef5Vfx2.js +0 -1
  833. package/web-ui/build/static/python-repl-CRpJP363.js +0 -1
  834. package/web-ui/build/static/q-C6Ov0g11.js +0 -1
  835. package/web-ui/build/static/q-D3tQMiHa.js +0 -1
  836. package/web-ui/build/static/qml-BYofTHXZ.js +0 -1
  837. package/web-ui/build/static/qml-DTxi8T37.js +0 -1
  838. package/web-ui/build/static/qore-Ny7MVtbP.js +0 -1
  839. package/web-ui/build/static/qsharp-Cy_rqHs2.js +0 -1
  840. package/web-ui/build/static/r-BtNaz7Jx.js +0 -1
  841. package/web-ui/build/static/r-DkF7wq0g.js +0 -1
  842. package/web-ui/build/static/racket-C5r8oFZa.js +0 -1
  843. package/web-ui/build/static/reason-BURRGL8T.js +0 -1
  844. package/web-ui/build/static/reasonml-ZPKVqo38.js +0 -1
  845. package/web-ui/build/static/regex-DgaaAttu.js +0 -1
  846. package/web-ui/build/static/rego-CtwYq-qp.js +0 -1
  847. package/web-ui/build/static/renpy-OueysuHf.js +0 -1
  848. package/web-ui/build/static/rest-Co13hzuk.js +0 -1
  849. package/web-ui/build/static/rib-CvGWooaO.js +0 -1
  850. package/web-ui/build/static/rip-5glwZfvx.js +0 -1
  851. package/web-ui/build/static/roboconf-B9R_ZXBj.js +0 -1
  852. package/web-ui/build/static/roboconf-Gf0nTNKt.js +0 -1
  853. package/web-ui/build/static/robotframework-C2axWAv1.js +0 -1
  854. package/web-ui/build/static/routeros-CE_Iedbm.js +0 -1
  855. package/web-ui/build/static/rsl-2QjczbcI.js +0 -1
  856. package/web-ui/build/static/ruby-5q7nApRB.js +0 -1
  857. package/web-ui/build/static/ruby-BUTeEeQo.js +0 -1
  858. package/web-ui/build/static/ruleslanguage-vxFl2T6e.js +0 -1
  859. package/web-ui/build/static/rust-BMuquF4q.js +0 -1
  860. package/web-ui/build/static/rust-CcZQo8qE.js +0 -1
  861. package/web-ui/build/static/sas-B3kZio_a.js +0 -1
  862. package/web-ui/build/static/sas-Bbv6Pcs_.js +0 -1
  863. package/web-ui/build/static/sass-C0q0q-U-.js +0 -1
  864. package/web-ui/build/static/scala-B5vW0oUX.js +0 -1
  865. package/web-ui/build/static/scala-CyVnVDED.js +0 -1
  866. package/web-ui/build/static/scheme-C9JOo4R_.js +0 -1
  867. package/web-ui/build/static/scheme-W2233tzx.js +0 -1
  868. package/web-ui/build/static/scilab-D2Bvw6Ov.js +0 -1
  869. package/web-ui/build/static/scss-CTlab4AI.js +0 -1
  870. package/web-ui/build/static/scss-DZ5g2Z9m.js +0 -1
  871. package/web-ui/build/static/shell-bYpiB--U.js +0 -1
  872. package/web-ui/build/static/shell-session-C4jzoNup.js +0 -1
  873. package/web-ui/build/static/smali-9ucoTzDl.js +0 -1
  874. package/web-ui/build/static/smali-BnluPxDD.js +0 -1
  875. package/web-ui/build/static/smalltalk-CAMGWItN.js +0 -1
  876. package/web-ui/build/static/smalltalk-DNxg0Og_.js +0 -1
  877. package/web-ui/build/static/smarty-YxNaCRZt.js +0 -1
  878. package/web-ui/build/static/sml-CZbvurr2.js +0 -1
  879. package/web-ui/build/static/sml-DGs_TRXx.js +0 -1
  880. package/web-ui/build/static/solidity-CEsviKxI.js +0 -1
  881. package/web-ui/build/static/solution-file-D0Yvaoet.js +0 -1
  882. package/web-ui/build/static/soy-BmVAPY7I.js +0 -1
  883. package/web-ui/build/static/sparql-D8d4i2J8.js +0 -1
  884. package/web-ui/build/static/splunk-spl-CcgWj5Im.js +0 -1
  885. package/web-ui/build/static/sqf-Cd4tBlXZ.js +0 -1
  886. package/web-ui/build/static/sqf-DC8e-wlP.js +0 -1
  887. package/web-ui/build/static/sql-D5KtfAwl.js +0 -1
  888. package/web-ui/build/static/sql-DX4iGc5J.js +0 -1
  889. package/web-ui/build/static/sql_more-9ztUFh5U.js +0 -1
  890. package/web-ui/build/static/squirrel-CiVV01fQ.js +0 -1
  891. package/web-ui/build/static/stan-DCrPYtdq.js +0 -1
  892. package/web-ui/build/static/stan-LL9ScTUT.js +0 -1
  893. package/web-ui/build/static/stata-n-r5-RvF.js +0 -1
  894. package/web-ui/build/static/step21-B2hxGG1E.js +0 -1
  895. package/web-ui/build/static/stylus-D-1wq2uN.js +0 -1
  896. package/web-ui/build/static/stylus-Dr-w1AjW.js +0 -1
  897. package/web-ui/build/static/subunit-DRCyiRHI.js +0 -1
  898. package/web-ui/build/static/swift-B2ZIuBjB.js +0 -1
  899. package/web-ui/build/static/swift-CnRpp8ao.js +0 -1
  900. package/web-ui/build/static/systemd-LPN-yj3b.js +0 -1
  901. package/web-ui/build/static/t4-cs-CXJSMlet.js +0 -1
  902. package/web-ui/build/static/t4-templating-Ciw3keAZ.js +0 -1
  903. package/web-ui/build/static/t4-vb-CXe99AWF.js +0 -1
  904. package/web-ui/build/static/taggerscript-Bm830ZwV.js +0 -1
  905. package/web-ui/build/static/tap-B0WwYGVt.js +0 -1
  906. package/web-ui/build/static/tap-Dw_cgj6K.js +0 -1
  907. package/web-ui/build/static/tcl-Di4JhH4s.js +0 -1
  908. package/web-ui/build/static/tcl-cIeBNf2V.js +0 -1
  909. package/web-ui/build/static/textile-DgMdCAz5.js +0 -1
  910. package/web-ui/build/static/thrift-zY2WxYMk.js +0 -1
  911. package/web-ui/build/static/toml-BtXdKizf.js +0 -1
  912. package/web-ui/build/static/tp-DxY0K8UF.js +0 -1
  913. package/web-ui/build/static/tremor-890wqxvH.js +0 -1
  914. package/web-ui/build/static/tsx-92ElsKxL.js +0 -1
  915. package/web-ui/build/static/tt2-DqcvjDKh.js +0 -1
  916. package/web-ui/build/static/turtle-BZikMsiD.js +0 -1
  917. package/web-ui/build/static/twig-BlxkEMdw.js +0 -1
  918. package/web-ui/build/static/twig-CfsoMGnv.js +0 -1
  919. package/web-ui/build/static/typescript-3xS8yDgH.js +0 -1
  920. package/web-ui/build/static/typescript-Dx0zHssr.js +0 -1
  921. package/web-ui/build/static/typoscript-BdFwMGCV.js +0 -1
  922. package/web-ui/build/static/unrealscript-DJzoqp3G.js +0 -1
  923. package/web-ui/build/static/uorazor-CQO8Ynpw.js +0 -1
  924. package/web-ui/build/static/uri-BUBBJdel.js +0 -1
  925. package/web-ui/build/static/v-XU798JEc.js +0 -1
  926. package/web-ui/build/static/vala-DsH-Nomr.js +0 -1
  927. package/web-ui/build/static/vala-gCVw4o0d.js +0 -1
  928. package/web-ui/build/static/vbnet-BHw8cZ4s.js +0 -1
  929. package/web-ui/build/static/vbnet-DPa2ddOk.js +0 -1
  930. package/web-ui/build/static/vbscript-html-CNADYJ1-.js +0 -1
  931. package/web-ui/build/static/vbscript-ztRmIppj.js +0 -1
  932. package/web-ui/build/static/velocity-DVfeN53w.js +0 -1
  933. package/web-ui/build/static/verilog-C9VDLRl9.js +0 -1
  934. package/web-ui/build/static/verilog-Dsmt_WJW.js +0 -1
  935. package/web-ui/build/static/vhdl-DbylNGny.js +0 -1
  936. package/web-ui/build/static/vhdl-wNJe3yKK.js +0 -1
  937. package/web-ui/build/static/vim-6PLlVaq_.js +0 -1
  938. package/web-ui/build/static/vim-BJpkTTe-.js +0 -1
  939. package/web-ui/build/static/visual-basic-GY3wXjJ3.js +0 -1
  940. package/web-ui/build/static/warpscript-DUb9z3yI.js +0 -1
  941. package/web-ui/build/static/wasm-Dey0RlHH.js +0 -1
  942. package/web-ui/build/static/web-idl-qAF1RqaI.js +0 -1
  943. package/web-ui/build/static/wiki-Dh3Vjtce.js +0 -1
  944. package/web-ui/build/static/wolfram-BrQcRMlt.js +0 -1
  945. package/web-ui/build/static/wren-Cu3Mzln6.js +0 -1
  946. package/web-ui/build/static/x86asm-DD5mhaEi.js +0 -1
  947. package/web-ui/build/static/xeora-DKRZ6hlr.js +0 -1
  948. package/web-ui/build/static/xl-BL8R8sAx.js +0 -1
  949. package/web-ui/build/static/xml-doc-BSpNJbEM.js +0 -1
  950. package/web-ui/build/static/xml-i5BJyEQ7.js +0 -1
  951. package/web-ui/build/static/xojo-r2ieNAyP.js +0 -1
  952. package/web-ui/build/static/xquery-BtAK8Dvl.js +0 -1
  953. package/web-ui/build/static/xquery-CM4Q_TX7.js +0 -1
  954. package/web-ui/build/static/yaml-Mm8ArZA3.js +0 -1
  955. package/web-ui/build/static/yaml-r-QeuY00.js +0 -1
  956. package/web-ui/build/static/yang-qcKR-Y23.js +0 -1
  957. package/web-ui/build/static/zephir-8ApHtH7c.js +0 -1
  958. package/web-ui/build/static/zig-BanqOd9_.js +0 -1
@@ -7,6 +7,7 @@ import path from 'path';
7
7
  import os from 'os';
8
8
  import { promises as fs } from 'fs';
9
9
  import { BaseTool } from './baseTool.js';
10
+ import { getGalleryService } from '../services/galleryService.js';
10
11
 
11
12
  /**
12
13
  * Configuration constants for image generation
@@ -15,20 +16,50 @@ const IMAGE_CONFIG = {
15
16
  DEFAULT_MODEL: null, // Resolved dynamically from modelsService via aiService
16
17
  DEFAULT_SIZE: '1024x1024',
17
18
  DEFAULT_QUALITY: 'standard',
18
- // Flux 1.1 Pro size constraints
19
+ // Flux-family size rules (used when the effective model matches FLUX_MODELS).
19
20
  SIZE_MIN: 256,
20
21
  SIZE_MAX: 1440,
21
22
  SIZE_INCREMENT: 32, // Must be multiples of 32
22
- // Common presets for convenience (all valid per constraints above)
23
+
24
+ /**
25
+ * Per-model size rules. Two kinds of rule:
26
+ * { kind: 'enum', values: ['1024x1024', ...] } — exact match required
27
+ * { kind: 'range', min, max, increment } — W×H in grid
28
+ * Key matching is substring, case-insensitive (so 'gpt-image-1.5' matches
29
+ * 'gpt-image-1.5-preview', etc.). The first matching entry wins; anything
30
+ * else falls back to `default`.
31
+ *
32
+ * This table is the SINGLE SOURCE OF TRUTH for what the tool accepts
33
+ * client-side. Previously the validator was hardcoded to Flux rules and
34
+ * actively rejected valid gpt-image-1.5 sizes (1024x1536, 1536x1024, auto)
35
+ * while the tool's own docstring advertised them. See _validateParameters.
36
+ */
37
+ MODEL_SIZES: {
38
+ 'gpt-image-1.5': { kind: 'enum', values: ['1024x1024', '1024x1536', '1536x1024', 'auto'] },
39
+ 'gpt-image-1': { kind: 'enum', values: ['1024x1024', '1024x1536', '1536x1024', 'auto'] },
40
+ 'flux': { kind: 'range', min: 256, max: 1440, increment: 32 },
41
+ 'default': { kind: 'range', min: 256, max: 1440, increment: 32 },
42
+ },
43
+
44
+ /**
45
+ * Size presets, model-aware. Each entry is a shape key; the resolver
46
+ * picks the variant for the effective model. If the model isn't listed,
47
+ * the `default` variant is used (Flux-shaped).
48
+ *
49
+ * Agents were previously confused because `portrait` → 1024x1440 always,
50
+ * even when the tool silently auto-switched to gpt-image-1.5 (where that
51
+ * size is invalid). Now `portrait` resolves to 1024x1536 for gpt-image.
52
+ */
23
53
  SIZE_PRESETS: {
24
- 'square': '1024x1024',
25
- 'square_hd': '1440x1440',
26
- 'portrait': '1024x1440',
27
- 'landscape': '1440x1024',
28
- 'portrait_4_3': '768x1024',
29
- 'landscape_4_3': '1024x768',
30
- 'small': '512x512'
54
+ 'square': { default: '1024x1024', 'gpt-image-1.5': '1024x1024' },
55
+ 'square_hd': { default: '1440x1440', 'gpt-image-1.5': '1024x1024' },
56
+ 'portrait': { default: '1024x1440', 'gpt-image-1.5': '1024x1536' },
57
+ 'landscape': { default: '1440x1024', 'gpt-image-1.5': '1536x1024' },
58
+ 'portrait_4_3': { default: '768x1024', 'gpt-image-1.5': '1024x1536' },
59
+ 'landscape_4_3': { default: '1024x768', 'gpt-image-1.5': '1536x1024' },
60
+ 'small': { default: '512x512', 'gpt-image-1.5': '1024x1024' },
31
61
  },
62
+
32
63
  VALID_FORMATS: ['png', 'jpg', 'jpeg', 'webp'],
33
64
  MAX_CONCURRENT: 3,
34
65
  QUEUE_LIMIT: 10,
@@ -37,6 +68,100 @@ const IMAGE_CONFIG = {
37
68
  DOWNLOAD_TIMEOUT: 60000 // 60 seconds
38
69
  };
39
70
 
71
+ /**
72
+ * Resolve the effective model given the caller's inputs.
73
+ *
74
+ * The tool auto-switches to `gpt-image-1.5` when the caller asks for
75
+ * transparency or supplies a sourceImage (only gpt-image-1.5 supports
76
+ * those features). Previously this logic lived inside the async worker,
77
+ * AFTER _validateParameters ran — so validation applied Flux rules even
78
+ * when the real model would end up being gpt-image-1.5 and vice versa.
79
+ * Hoisted here so validators, error messages, and preset resolution all
80
+ * see the same truth.
81
+ *
82
+ * @param {object} params - imageParams with { model, transparency, sourceImage }
83
+ * @returns {string} — the effective model id (lowercase)
84
+ */
85
+ export function resolveEffectiveImageModel(params = {}) {
86
+ const explicit = (params.model || '').toLowerCase();
87
+ if (explicit && explicit !== 'auto') return explicit;
88
+ if (params.transparency === true) return 'gpt-image-1.5';
89
+ if (params.sourceImage) return 'gpt-image-1.5';
90
+ // Null → defer to downstream (aiService resolves from catalog). We
91
+ // still return a sentinel so validators can use `default` rules.
92
+ return '';
93
+ }
94
+
95
+ /**
96
+ * Translate an image-generation error into an actionable message for the
97
+ * agent. The backend (`aiService._generateImageOpenAI` / Flux) wraps HTTP
98
+ * responses as `"HTTP 400: Bad Request - <provider text>"` and throws.
99
+ * That passes through to the agent as raw stack text — agents don't know
100
+ * whether they tripped a size rule, a moderation rule, or something else.
101
+ *
102
+ * This helper parses the incoming `Error` for the common signatures and
103
+ * produces a message that includes (a) the effective model, (b) what
104
+ * class of failure it was, and (c) a concrete next-action.
105
+ *
106
+ * @param {Error} error - Thrown from aiService / downstream
107
+ * @param {object} job - The queued job (provides model + size + prompt)
108
+ * @returns {string}
109
+ */
110
+ export function _translateImageError(error, job = {}) {
111
+ const raw = (error && error.message) || String(error || 'unknown error');
112
+ const effectiveModel = resolveEffectiveImageModel(job) || job.model || 'auto';
113
+ const size = job.size || IMAGE_CONFIG.DEFAULT_SIZE;
114
+ const lower = raw.toLowerCase();
115
+
116
+ // Content moderation family — providers use various phrasings.
117
+ if (/moderat|content[_ -]policy|safety|flagged|unsafe/.test(lower)) {
118
+ return (
119
+ `Image generation rejected by content moderation (model=${effectiveModel}). ` +
120
+ `The prompt was flagged. Rephrase rather than retrying verbatim: soften explicit ` +
121
+ `adjectives (e.g. drop "blood", "gore", "bones"), describe style instead of violence, ` +
122
+ `and avoid real-person likenesses. Original provider message: ${raw}`
123
+ );
124
+ }
125
+
126
+ // Size-shaped rejections from the provider (leaks through when our
127
+ // client-side validator missed, or when the catalogue changes).
128
+ if (/size|dimension|unsupported|out of range|must be one of|invalid image size/.test(lower)) {
129
+ const { rule } = _getModelSizeRule(effectiveModel);
130
+ const valid = rule.kind === 'enum'
131
+ ? `Valid sizes for ${effectiveModel}: ${rule.values.join(', ')}.`
132
+ : `Valid for ${effectiveModel}: WIDTHxHEIGHT in ${rule.min}-${rule.max}, multiples of ${rule.increment}.`;
133
+ return (
134
+ `Image generation rejected: size "${size}" not accepted by ${effectiveModel}. ${valid} ` +
135
+ `Original provider message: ${raw}`
136
+ );
137
+ }
138
+
139
+ // Auth / quota.
140
+ if (/unauthorized|forbidden|quota|rate.?limit|429|401|403/.test(lower)) {
141
+ return (
142
+ `Image generation failed for ${effectiveModel}: authentication or quota problem. ` +
143
+ `Retrying with the same inputs will likely fail again — check API keys / billing. ` +
144
+ `Original: ${raw}`
145
+ );
146
+ }
147
+
148
+ // Fall-through: still tell the agent which model ran.
149
+ return `Image generation failed (model=${effectiveModel}, size=${size}): ${raw}`;
150
+ }
151
+
152
+ /**
153
+ * Look up the size rule for an effective model id. Substring match.
154
+ * Always returns a rule (falls back to `default`).
155
+ */
156
+ export function _getModelSizeRule(effectiveModel) {
157
+ const key = String(effectiveModel || '').toLowerCase();
158
+ for (const [needle, rule] of Object.entries(IMAGE_CONFIG.MODEL_SIZES)) {
159
+ if (needle === 'default') continue;
160
+ if (key.includes(needle)) return { modelKey: needle, rule };
161
+ }
162
+ return { modelKey: 'default', rule: IMAGE_CONFIG.MODEL_SIZES.default };
163
+ }
164
+
40
165
  /**
41
166
  * ImageTool - Generate images using AI models
42
167
  * Supports queueing, async processing, and both temp/project directory storage
@@ -140,20 +265,34 @@ export class ImageTool extends BaseTool {
140
265
  **Parameters:**
141
266
  - **prompt** (required): Description of image to generate OR editing instruction
142
267
  - **outputPath** (optional): Path to save image (permanent). Omit for temp file.
143
- - **size** (optional): Custom WIDTHxHEIGHT or preset name (default: 1024x1024)
144
- - For Flux models: 256-1440px, multiples of 32 (e.g., 1024x768, 1280x960)
145
- - For gpt-image-1.5: 1024x1024, 1024x1536, 1536x1024, or "auto"
146
- - Presets: square (1024x1024), square_hd (1440x1440), portrait (1024x1440), landscape (1440x1024), portrait_4_3 (768x1024), landscape_4_3 (1024x768), small (512x512)
268
+ - **size** (optional): WIDTHxHEIGHT or preset name. DIFFERENT MODELS ACCEPT DIFFERENT SIZES — read the rules below. Default: 1024x1024.
147
269
  - **quality** (optional): "standard" or "hd" (default: standard)
148
- - **model** (optional): Use "gpt-image-1.5" for transparency and editing capabilities (default: auto)
149
- - **sourceImage** (optional): Path to source image for editing (enables edit mode)
270
+ - **model** (optional): "gpt-image-1.5" or a flux variant. Default: auto. Auto-switches to gpt-image-1.5 if transparency=true OR sourceImage is set.
271
+ - **sourceImage** (optional): Path to source image for editing (forces gpt-image-1.5)
150
272
  - **mask** (optional): Path to mask image for editing (white=edit area, black=keep area)
151
- - **transparency** (optional): true to generate image with transparent background (auto-selects gpt-image-1.5)
273
+ - **transparency** (optional): true to generate with transparent background (forces gpt-image-1.5)
274
+
275
+ ⚠ SIZE RULES — read before picking a size:
276
+
277
+ (A) gpt-image-1.5 (auto-selected on transparency=true or sourceImage, or set explicitly):
278
+ size MUST be one of: 1024x1024, 1024x1536 (portrait), 1536x1024 (landscape), or "auto".
279
+ Any other value is rejected; the error lists the valid options.
280
+ Presets remap automatically — e.g. "portrait" → 1024x1536 on this model.
281
+
282
+ (B) Flux models (the default when transparency is not required):
283
+ size must be WIDTHxHEIGHT, both in 256-1440, both multiples of 32 (e.g. 1024x768, 1280x960).
284
+ "auto" is NOT valid for Flux.
285
+
286
+ Presets (shape names — resolved per the chosen model):
287
+ square, square_hd, portrait, landscape, portrait_4_3, landscape_4_3, small
288
+
289
+ Content moderation:
290
+ - Prompts with graphic violence, gore, explicit sexual content, or real-person likenesses are commonly rejected by the provider as "Bad request". If you hit one of those, REPHRASE — don't retry verbatim. Soften explicit adjectives (e.g. "dark fantasy queen with crimson rubies" works; "blood tears, bone crown, dripping" typically doesn't).
152
291
 
153
292
  **Notes:**
154
293
  - Images take 15-30 seconds to generate
155
294
  - Be descriptive in prompts for better results
156
- - Use **gpt-image-1.5** when you need: transparent backgrounds, image editing, or image-to-image transformations
295
+ - Use gpt-image-1.5 when you need transparent backgrounds, image editing, or image-to-image transformations
157
296
  - Max ${IMAGE_CONFIG.QUEUE_LIMIT} images in queue`;
158
297
  }
159
298
 
@@ -335,6 +474,10 @@ export class ImageTool extends BaseTool {
335
474
  quality: imageParams.quality,
336
475
  projectDir: projectDir || process.cwd(),
337
476
  directoryAccess,
477
+ // Carry the caller's per-agent image-gen config onto the job
478
+ // so the async processor (which doesn't have the original
479
+ // context) can still honor `saveToGallery` etc.
480
+ toolConfig: context?.toolConfig || null,
338
481
  status: 'queued',
339
482
  createdAt: new Date().toISOString()
340
483
  };
@@ -402,35 +545,88 @@ export class ImageTool extends BaseTool {
402
545
  throw new Error(`Prompt too long (max ${IMAGE_CONFIG.MAX_PROMPT_LENGTH} characters)`);
403
546
  }
404
547
 
405
- if (img.size) {
406
- // Check for preset names first
407
- if (IMAGE_CONFIG.SIZE_PRESETS[img.size]) {
408
- img.size = IMAGE_CONFIG.SIZE_PRESETS[img.size];
409
- }
548
+ // Resolve the effective model FIRST so size validation, preset
549
+ // resolution, and error messages all see the model that will
550
+ // actually run. Previously this logic lived downstream in the
551
+ // async worker so Flux rules were applied even when the tool
552
+ // would silently switch to gpt-image-1.5 (transparency=true,
553
+ // sourceImage set, or explicit model) — and vice versa.
554
+ const effectiveModel = resolveEffectiveImageModel(img);
555
+ const { modelKey: ruleKey, rule } = _getModelSizeRule(effectiveModel);
410
556
 
411
- // Validate WxH format
412
- const sizeMatch = img.size.match(/^(\d+)x(\d+)$/);
413
- if (!sizeMatch) {
414
- throw new Error(`Invalid size format: ${img.size}. Use WIDTHxHEIGHT (e.g., 1024x768) or preset: ${Object.keys(IMAGE_CONFIG.SIZE_PRESETS).join(', ')}`);
557
+ if (img.size) {
558
+ // Step 1: expand preset names. Presets are model-aware — e.g.
559
+ // `portrait` is 1024x1440 on Flux but 1024x1536 on gpt-image-1.5
560
+ // (the latter only accepts specific enum values). Previously the
561
+ // preset was resolved Flux-shaped and then rejected downstream.
562
+ const presetEntry = IMAGE_CONFIG.SIZE_PRESETS[img.size];
563
+ if (presetEntry) {
564
+ img.size = presetEntry[ruleKey] || presetEntry.default;
415
565
  }
416
566
 
417
- const width = parseInt(sizeMatch[1], 10);
418
- const height = parseInt(sizeMatch[2], 10);
419
-
420
- // Validate constraints
421
- const { SIZE_MIN, SIZE_MAX, SIZE_INCREMENT } = IMAGE_CONFIG;
422
-
423
- if (width < SIZE_MIN || width > SIZE_MAX) {
424
- throw new Error(`Width ${width} out of range. Must be ${SIZE_MIN}-${SIZE_MAX}px.`);
425
- }
426
- if (height < SIZE_MIN || height > SIZE_MAX) {
427
- throw new Error(`Height ${height} out of range. Must be ${SIZE_MIN}-${SIZE_MAX}px.`);
428
- }
429
- if (width % SIZE_INCREMENT !== 0) {
430
- throw new Error(`Width ${width} must be a multiple of ${SIZE_INCREMENT}.`);
431
- }
432
- if (height % SIZE_INCREMENT !== 0) {
433
- throw new Error(`Height ${height} must be a multiple of ${SIZE_INCREMENT}.`);
567
+ // Step 2: per-model rule check.
568
+ if (rule.kind === 'enum') {
569
+ // gpt-image-1.5 et al — exact enum.
570
+ if (!rule.values.includes(img.size)) {
571
+ const modelLabel = effectiveModel || 'gpt-image-1.5';
572
+ const autoHint = img.transparency
573
+ ? ' (auto-selected because transparency=true)'
574
+ : img.sourceImage
575
+ ? ' (auto-selected because sourceImage was provided)'
576
+ : '';
577
+ throw new Error(
578
+ `Image size "${img.size}" is not supported by ${modelLabel}${autoHint}. ` +
579
+ `Valid sizes: ${rule.values.join(', ')}. ` +
580
+ `For portrait orientation use "1024x1536"; for landscape use "1536x1024".`
581
+ );
582
+ }
583
+ } else {
584
+ // Range rule (Flux and default). `auto` is an enum-only value
585
+ // that makes no sense for a range model — reject with a hint.
586
+ if (img.size === 'auto') {
587
+ throw new Error(
588
+ `Image size "auto" is only valid for gpt-image-1.5. ` +
589
+ `For the current model (${effectiveModel || 'flux'}) pick a WIDTHxHEIGHT ` +
590
+ `between ${rule.min} and ${rule.max} in ${rule.increment}-pixel steps ` +
591
+ `(e.g. 1024x1024).`
592
+ );
593
+ }
594
+ const sizeMatch = img.size.match(/^(\d+)x(\d+)$/);
595
+ if (!sizeMatch) {
596
+ throw new Error(
597
+ `Invalid size format: "${img.size}". ` +
598
+ `Use WIDTHxHEIGHT (e.g. 1024x768) or one of these presets: ` +
599
+ `${Object.keys(IMAGE_CONFIG.SIZE_PRESETS).join(', ')}.`
600
+ );
601
+ }
602
+ const width = parseInt(sizeMatch[1], 10);
603
+ const height = parseInt(sizeMatch[2], 10);
604
+ const { min, max, increment } = rule;
605
+ const modelLabel = effectiveModel || 'flux';
606
+ if (width < min || width > max) {
607
+ throw new Error(
608
+ `Width ${width} out of range for ${modelLabel}. Must be ${min}-${max}px ` +
609
+ `(multiple of ${increment}).`
610
+ );
611
+ }
612
+ if (height < min || height > max) {
613
+ throw new Error(
614
+ `Height ${height} out of range for ${modelLabel}. Must be ${min}-${max}px ` +
615
+ `(multiple of ${increment}).`
616
+ );
617
+ }
618
+ if (width % increment !== 0) {
619
+ throw new Error(
620
+ `Width ${width} must be a multiple of ${increment} for ${modelLabel}. ` +
621
+ `Nearest valid: ${Math.round(width / increment) * increment}.`
622
+ );
623
+ }
624
+ if (height % increment !== 0) {
625
+ throw new Error(
626
+ `Height ${height} must be a multiple of ${increment} for ${modelLabel}. ` +
627
+ `Nearest valid: ${Math.round(height / increment) * increment}.`
628
+ );
629
+ }
434
630
  }
435
631
  }
436
632
 
@@ -492,6 +688,42 @@ export class ImageTool extends BaseTool {
492
688
  // Image was saved successfully - use our server endpoint
493
689
  imageUrl = this._convertToWebUrl(result.resolvedOutputPath, job.sessionId);
494
690
  this.logger?.info('Using local server URL for image', { imageUrl });
691
+
692
+ // Durable gallery copy (non-blocking, non-fatal).
693
+ // Gated by per-agent `toolConfig.image-gen.saveToGallery`.
694
+ // Default is ON — users who want to keep disk usage down can
695
+ // opt out via the image-gen configurator in the agent modal.
696
+ const saveToGallery = job.toolConfig?.saveToGallery !== false;
697
+ if (saveToGallery) {
698
+ try {
699
+ let agentName = null;
700
+ if (this.agentPool && job.agentId) {
701
+ try {
702
+ const a = await this.agentPool.getAgent(job.agentId);
703
+ agentName = a?.name || null;
704
+ } catch { /* non-fatal */ }
705
+ }
706
+ await getGalleryService(this.logger).saveImage({
707
+ sourcePath: result.resolvedOutputPath,
708
+ metadata: {
709
+ prompt: job.prompt,
710
+ model: job.model,
711
+ size: job.size,
712
+ quality: job.quality,
713
+ agentId: job.agentId,
714
+ agentName,
715
+ sessionId: job.sessionId,
716
+ jobId: job.jobId,
717
+ createdAt: job.completedAt || job.createdAt,
718
+ },
719
+ });
720
+ } catch (galErr) {
721
+ this.logger?.warn?.('Gallery save failed (non-fatal)', {
722
+ jobId: job.jobId,
723
+ error: galErr.message,
724
+ });
725
+ }
726
+ }
495
727
  } else if (result.temporaryUrl) {
496
728
  // Download failed - use temporary AI-generated URL (expires in ~1 hour)
497
729
  imageUrl = result.temporaryUrl;
@@ -619,7 +851,13 @@ export class ImageTool extends BaseTool {
619
851
  this.logger?.error(`Image generation failed: ${job.jobId}`, error);
620
852
 
621
853
  job.status = 'failed';
622
- job.error = error.message;
854
+ // Translate opaque backend errors into something actionable. The
855
+ // downstream aiService wraps HTTP errors as "HTTP 400: Bad Request - …"
856
+ // with the provider text tacked on; agents previously saw that
857
+ // verbatim and had to guess whether it was a size mismatch, a
858
+ // content-policy trip, or an auth problem. Route known signals
859
+ // to a structured hint.
860
+ job.error = _translateImageError(error, job);
623
861
  job.completedAt = new Date().toISOString();
624
862
 
625
863
  this.completedJobs.set(job.jobId, job);
@@ -576,10 +576,21 @@ Always use a detailed task description to provide context for the task, and leve
576
576
  };
577
577
 
578
578
  } catch (error) {
579
+ // IMPORTANT: do NOT log the raw `context` object. The tool-execute
580
+ // context contains back-references to AgentPool ⇄ MessageProcessor
581
+ // (plus agentPool.messageProcessor.agentPool…), which triggers
582
+ // "Converting circular structure to JSON" in the logger's
583
+ // JSON.stringify — and THAT throw escapes this catch, corrupting
584
+ // the error surfaced to the agent. Pluck only plain-data fields.
585
+ // Regression guard: src/utilities/logger.js also has a defensive
586
+ // replacer that strips known back-ref keys if anyone else leaks a
587
+ // context-shaped object into logs.
579
588
  this.logger?.error('TaskManager execution failed', {
580
589
  error: error.message,
581
- context,
582
- params
590
+ stack: error.stack,
591
+ agentId: context?.agentId,
592
+ action: params?.action,
593
+ paramKeys: params ? Object.keys(params) : [],
583
594
  });
584
595
 
585
596
  return {
@@ -7,6 +7,7 @@ import path from 'path';
7
7
  import os from 'os';
8
8
  import { promises as fs } from 'fs';
9
9
  import { BaseTool } from './baseTool.js';
10
+ import { getGalleryService } from '../services/galleryService.js';
10
11
 
11
12
  /**
12
13
  * Configuration constants for video generation
@@ -72,6 +73,92 @@ export class VideoTool extends BaseTool {
72
73
  this.pollTimers = new Map();
73
74
  }
74
75
 
76
+ /**
77
+ * Snapshot of the job state for the web-UI `/api/videos/jobs` endpoint.
78
+ * Serialises the three job maps into a stable JSON shape that the
79
+ * Video Jobs page can render + poll on. Intentionally excludes the
80
+ * large `result` blobs for completed jobs to keep the list light —
81
+ * consumers that want the full result hit the file-serve URL instead.
82
+ *
83
+ * @returns {{
84
+ * queued: Array<JobSummary>,
85
+ * active: Array<JobSummary>,
86
+ * completed: Array<JobSummary>,
87
+ * limits: { concurrency: number, queue: number },
88
+ * }}
89
+ */
90
+ getJobsSnapshot() {
91
+ const summarize = (j) => ({
92
+ jobId: j.jobId,
93
+ agentId: j.agentId,
94
+ sessionId: j.sessionId,
95
+ prompt: typeof j.prompt === 'string' ? j.prompt.slice(0, 300) : '',
96
+ model: j.model,
97
+ width: j.width,
98
+ height: j.height,
99
+ duration: j.duration,
100
+ variants: j.variants,
101
+ status: j.status || 'unknown',
102
+ soraJobId: j.soraJobId || null,
103
+ outputPath: j.outputPath || null,
104
+ createdAt: j.createdAt || null,
105
+ startedAt: j.startedAt || null,
106
+ completedAt: j.completedAt || null,
107
+ error: j.error || null,
108
+ // Best-effort URL to the final video file if known. The existing
109
+ // /api/videos/:sessionId/:filename serve route locates the file.
110
+ videoUrl: (j.status === 'completed' && j.outputPath && j.sessionId)
111
+ ? `/api/videos/${encodeURIComponent(j.sessionId)}/${encodeURIComponent(
112
+ typeof j.outputPath === 'string' ? j.outputPath.split(/[\\/]/).pop() : ''
113
+ )}`
114
+ : null,
115
+ });
116
+ return {
117
+ queued: Array.from(this.queue).map(summarize),
118
+ active: Array.from(this.activeJobs.values()).map(summarize),
119
+ completed: Array.from(this.completedJobs.values()).map(summarize),
120
+ limits: {
121
+ concurrency: (typeof VIDEO_CONFIG !== 'undefined' && VIDEO_CONFIG?.CONCURRENCY_LIMIT) || this.activeJobs.size + this.queue.length,
122
+ queue: (typeof VIDEO_CONFIG !== 'undefined' && VIDEO_CONFIG?.QUEUE_LIMIT) || null,
123
+ },
124
+ };
125
+ }
126
+
127
+ /**
128
+ * Cancel a video generation job by id. Removes from queue if still
129
+ * pending, marks active jobs for cancellation (best-effort — an
130
+ * in-flight Sora API call will still complete, but we stop polling
131
+ * and stop persisting the result). Returns { success, state }.
132
+ *
133
+ * Completed and already-failed jobs are not cancellable.
134
+ */
135
+ cancelJob(jobId) {
136
+ // Queued — just remove from the queue.
137
+ const qIdx = this.queue.findIndex(j => j.jobId === jobId);
138
+ if (qIdx !== -1) {
139
+ const [job] = this.queue.splice(qIdx, 1);
140
+ job.status = 'cancelled';
141
+ job.completedAt = new Date().toISOString();
142
+ this.completedJobs.set(job.jobId, job);
143
+ this.logger?.info('Video job cancelled (was queued)', { jobId });
144
+ return { success: true, state: 'queued' };
145
+ }
146
+ // Active — mark + stop polling.
147
+ if (this.activeJobs.has(jobId)) {
148
+ const job = this.activeJobs.get(jobId);
149
+ job.status = 'cancelled';
150
+ job.completedAt = new Date().toISOString();
151
+ const timer = this.pollTimers?.get(jobId);
152
+ if (timer) { clearTimeout(timer); this.pollTimers.delete(jobId); }
153
+ this.activeJobs.delete(jobId);
154
+ this.completedJobs.set(jobId, job);
155
+ this.logger?.info('Video job cancelled (was active)', { jobId });
156
+ return { success: true, state: 'active' };
157
+ }
158
+ // Completed / unknown.
159
+ return { success: false, error: 'Job not found or already terminal' };
160
+ }
161
+
75
162
  /**
76
163
  * Set AI service for video generation
77
164
  * @param {AIService} aiService - AI service instance
@@ -329,6 +416,9 @@ Sora simulates a physical world, so write prompts as narratives, not camera comm
329
416
  variants: videoParams.variants,
330
417
  projectDir: projectDir || process.cwd(),
331
418
  directoryAccess,
419
+ // Per-agent video-gen config (reaches the async processor
420
+ // through the job). Used to gate `saveToGallery` below.
421
+ toolConfig: context?.toolConfig || null,
332
422
  status: 'queued',
333
423
  soraJobId: null, // Will be set when submitted to Sora
334
424
  createdAt: new Date().toISOString()
@@ -626,6 +716,42 @@ Sora simulates a physical world, so write prompts as narratives, not camera comm
626
716
 
627
717
  this.completedJobs.set(job.jobId, job);
628
718
 
719
+ // Durable gallery copy — non-blocking, non-fatal. Skipped when
720
+ // the agent has opted out via `toolConfig.video-gen.saveToGallery`.
721
+ if (savedToDisk && resolvedOutputPath && job.toolConfig?.saveToGallery !== false) {
722
+ try {
723
+ let agentName = null;
724
+ if (this.agentPool && job.agentId) {
725
+ try {
726
+ const a = await this.agentPool.getAgent(job.agentId);
727
+ agentName = a?.name || null;
728
+ } catch { /* non-fatal */ }
729
+ }
730
+ await getGalleryService(this.logger).saveVideo({
731
+ sourcePath: resolvedOutputPath,
732
+ metadata: {
733
+ prompt: job.prompt,
734
+ model: job.model,
735
+ width: job.width,
736
+ height: job.height,
737
+ duration: job.duration,
738
+ variants: job.variants,
739
+ agentId: job.agentId,
740
+ agentName,
741
+ sessionId: job.sessionId,
742
+ jobId: job.jobId,
743
+ soraJobId: job.soraJobId,
744
+ createdAt: job.completedAt,
745
+ },
746
+ });
747
+ } catch (galErr) {
748
+ this.logger?.warn?.('Gallery save failed (non-fatal)', {
749
+ jobId: job.jobId,
750
+ error: galErr.message,
751
+ });
752
+ }
753
+ }
754
+
629
755
  // Broadcast success
630
756
  this._broadcastJobResult(job, savedToDisk ? resolvedOutputPath : null, videoUrl, savedToDisk);
631
757