onbuzz 4.1.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 (983) hide show
  1. package/package.json +1 -1
  2. package/src/core/__tests__/agentPoolToolConfig.test.js +191 -0
  3. package/src/core/__tests__/agentPoolWakeOnMessage.test.js +315 -0
  4. package/src/core/__tests__/messageProcessor.test.js +42 -0
  5. package/src/core/__tests__/orchestrator.test.js +22 -6
  6. package/src/core/agentPool.js +118 -25
  7. package/src/core/agentScheduler.js +28 -4
  8. package/src/core/messageProcessor.js +19 -1
  9. package/src/core/orchestrator.js +13 -6
  10. package/src/interfaces/__tests__/galleryRoutes.test.js +219 -0
  11. package/src/interfaces/__tests__/videoJobsRoutes.test.js +179 -0
  12. package/src/interfaces/webServer.js +220 -2
  13. package/src/services/__tests__/agentActivityService.test.js +83 -0
  14. package/src/services/__tests__/aiService.reasoningTokens.test.js +66 -0
  15. package/src/services/__tests__/aiService.stream.test.js +305 -0
  16. package/src/services/__tests__/channelFilter.test.js +4 -2
  17. package/src/services/__tests__/channelRelay.integration.test.js +1 -1
  18. package/src/services/__tests__/conversationQuery.reasoning.test.js +102 -0
  19. package/src/services/__tests__/galleryService.test.js +225 -0
  20. package/src/services/__tests__/toolCallBridgeContract.test.js +127 -0
  21. package/src/services/agentActivityService.js +25 -4
  22. package/src/services/aiService.js +180 -91
  23. package/src/services/conversationQuery.js +26 -0
  24. package/src/services/galleryService.js +257 -0
  25. package/src/tools/__tests__/agentCommunicationTool.test.js +114 -0
  26. package/src/tools/__tests__/baseTool.getEffectiveConfig.test.js +77 -0
  27. package/src/tools/__tests__/baseTool.test.js +471 -420
  28. package/src/tools/__tests__/filesystemTool.test.js +98 -0
  29. package/src/tools/__tests__/imageTool.sizeValidation.test.js +134 -0
  30. package/src/tools/__tests__/imageTool.validator.test.js +194 -0
  31. package/src/tools/__tests__/memoryTool.reminisce.test.js +33 -0
  32. package/src/tools/__tests__/terminalTool.test.js +64 -0
  33. package/src/tools/__tests__/videoTool.jobs.test.js +147 -0
  34. package/src/tools/__tests__/webTool.perAgentConfig.test.js +94 -0
  35. package/src/tools/agentCommunicationTool.js +33 -22
  36. package/src/tools/baseTool.js +980 -899
  37. package/src/tools/fileSystemTool.js +76 -2
  38. package/src/tools/imageTool.js +282 -44
  39. package/src/tools/memoryTool.js +4 -0
  40. package/src/tools/taskManagerTool.js +13 -2
  41. package/src/tools/terminalTool.js +62 -2
  42. package/src/tools/videoTool.js +126 -0
  43. package/src/tools/webTool.js +65 -1
  44. package/src/utilities/__tests__/logger.safeStringify.test.js +124 -0
  45. package/src/utilities/logger.js +51 -7
  46. package/src/utilities/userDataDir.js +3 -0
  47. package/web-ui/build/index.html +2 -2
  48. package/web-ui/build/static/1c-BdLpzMAL.js +1 -0
  49. package/web-ui/build/static/abap-CDwRvs0G.js +1 -0
  50. package/web-ui/build/static/abnf-BI7p3j5a.js +1 -0
  51. package/web-ui/build/static/abnf-CNv3r7Uy.js +1 -0
  52. package/web-ui/build/static/accesslog-C06B6TeF.js +1 -0
  53. package/web-ui/build/static/actionscript-4rvU1xh_.js +1 -0
  54. package/web-ui/build/static/actionscript-hzeSNpz-.js +1 -0
  55. package/web-ui/build/static/ada-BKQHlNbk.js +1 -0
  56. package/web-ui/build/static/ada-C-cG6Cnx.js +1 -0
  57. package/web-ui/build/static/agda-BLGp6bzV.js +1 -0
  58. package/web-ui/build/static/al-D1v7f7zb.js +1 -0
  59. package/web-ui/build/static/angelscript-C6fH5Phl.js +1 -0
  60. package/web-ui/build/static/antlr4-CkeL19Pe.js +1 -0
  61. package/web-ui/build/static/apache-JdORoIBq.js +1 -0
  62. package/web-ui/build/static/apacheconf-CapiFi2H.js +1 -0
  63. package/web-ui/build/static/apex-B9woB7hA.js +1 -0
  64. package/web-ui/build/static/apl-lmFlegeo.js +1 -0
  65. package/web-ui/build/static/applescript-BHhW-aLP.js +1 -0
  66. package/web-ui/build/static/applescript-ss_o-t9Q.js +1 -0
  67. package/web-ui/build/static/aql-BLNeECob.js +1 -0
  68. package/web-ui/build/static/arcade-CFXIdOiD.js +1 -0
  69. package/web-ui/build/static/arduino-BnvFM4Uv.js +1 -0
  70. package/web-ui/build/static/arduino-COqLsxBH.js +1 -0
  71. package/web-ui/build/static/arff-D29LT0W3.js +1 -0
  72. package/web-ui/build/static/armasm-4vnDbtEO.js +1 -0
  73. package/web-ui/build/static/asciidoc-B5enjW-U.js +1 -0
  74. package/web-ui/build/static/asciidoc-DXDLuzat.js +1 -0
  75. package/web-ui/build/static/asm6502-BlmY96A-.js +1 -0
  76. package/web-ui/build/static/asmatmel-DsTJaam3.js +1 -0
  77. package/web-ui/build/static/aspectj-CWKdyALZ.js +1 -0
  78. package/web-ui/build/static/aspnet-BMb5ovzr.js +1 -0
  79. package/web-ui/build/static/autohotkey-Bnt4L8Sq.js +1 -0
  80. package/web-ui/build/static/autohotkey-FJP6t7LP.js +1 -0
  81. package/web-ui/build/static/autoit-D_uma-t5.js +1 -0
  82. package/web-ui/build/static/autoit-tV1DvCag.js +1 -0
  83. package/web-ui/build/static/avisynth-C3EGWRqZ.js +1 -0
  84. package/web-ui/build/static/avrasm-SPYupzKN.js +1 -0
  85. package/web-ui/build/static/avro-idl-BVy35bGz.js +1 -0
  86. package/web-ui/build/static/awk-bd20WYWO.js +1 -0
  87. package/web-ui/build/static/axapta-rMrFdrRa.js +1 -0
  88. package/web-ui/build/static/bash-B6JbRSpw.js +1 -0
  89. package/web-ui/build/static/bash-CjDn8CS1.js +1 -0
  90. package/web-ui/build/static/basic-1cr_KdjO.js +1 -0
  91. package/web-ui/build/static/basic-VjzNgL1A.js +1 -0
  92. package/web-ui/build/static/batch-xKrSAbnh.js +1 -0
  93. package/web-ui/build/static/bbcode-D_oXQoMX.js +1 -0
  94. package/web-ui/build/static/bicep-DHCLyehu.js +1 -0
  95. package/web-ui/build/static/birb-LnKeXfOt.js +1 -0
  96. package/web-ui/build/static/bison-D1Y9rGkL.js +1 -0
  97. package/web-ui/build/static/bnf-Dmfxl80x.js +1 -0
  98. package/web-ui/build/static/bnf-Dr4hlA3O.js +1 -0
  99. package/web-ui/build/static/brainfuck-BLTIahWA.js +1 -0
  100. package/web-ui/build/static/brainfuck-DfZP16Cx.js +1 -0
  101. package/web-ui/build/static/brightscript-YT7Nr8GN.js +1 -0
  102. package/web-ui/build/static/bro-Cn2KhPkj.js +1 -0
  103. package/web-ui/build/static/bsl-DFyeWkvL.js +1 -0
  104. package/web-ui/build/static/c-B8jd4ks-.js +1 -0
  105. package/web-ui/build/static/c-CTVZoi8i.js +1 -0
  106. package/web-ui/build/static/c-like-BYR8sR5E.js +1 -0
  107. package/web-ui/build/static/cal-D7KqKxTg.js +1 -0
  108. package/web-ui/build/static/capnproto-Bl9dDXU4.js +1 -0
  109. package/web-ui/build/static/ceylon-DrCHmREL.js +1 -0
  110. package/web-ui/build/static/cfscript-C0sNdmMo.js +1 -0
  111. package/web-ui/build/static/chaiscript-LgrVMZR5.js +1 -0
  112. package/web-ui/build/static/cil-CCNfQAo8.js +1 -0
  113. package/web-ui/build/static/clean-DDw0s_-o.js +1 -0
  114. package/web-ui/build/static/clojure-BFxsxcbQ.js +1 -0
  115. package/web-ui/build/static/clojure-BgMU8fA8.js +1 -0
  116. package/web-ui/build/static/clojure-repl-C174HUrZ.js +1 -0
  117. package/web-ui/build/static/cmake-C6hjTvGt.js +1 -0
  118. package/web-ui/build/static/cmake-CcnmaxXV.js +1 -0
  119. package/web-ui/build/static/cobol-DiLCdCf7.js +1 -0
  120. package/web-ui/build/static/coffeescript-CGB29Opz.js +1 -0
  121. package/web-ui/build/static/coffeescript-DV3V4J6g.js +1 -0
  122. package/web-ui/build/static/concurnas-Cgdt5ES1.js +1 -0
  123. package/web-ui/build/static/coq-BbiJDyLq.js +1 -0
  124. package/web-ui/build/static/coq-DvsBabEJ.js +1 -0
  125. package/web-ui/build/static/cos-B7_pvH_X.js +1 -0
  126. package/web-ui/build/static/cpp-416w6yHT.js +1 -0
  127. package/web-ui/build/static/cpp-pz382MTt.js +1 -0
  128. package/web-ui/build/static/crmsh-BeYTFuCW.js +1 -0
  129. package/web-ui/build/static/crystal-BRtDR8RG.js +1 -0
  130. package/web-ui/build/static/crystal-BZJgl_sw.js +1 -0
  131. package/web-ui/build/static/csharp-BQ-0v8VA.js +1 -0
  132. package/web-ui/build/static/csharp-MlHfKRW4.js +1 -0
  133. package/web-ui/build/static/cshtml-DtS0T24q.js +1 -0
  134. package/web-ui/build/static/csp-6DGTWGnA.js +1 -0
  135. package/web-ui/build/static/csp-CvvAXfUJ.js +1 -0
  136. package/web-ui/build/static/css-DJmvg-kI.js +1 -0
  137. package/web-ui/build/static/css-extras-qVKXZ1K5.js +1 -0
  138. package/web-ui/build/static/csv-HN89Dabm.js +1 -0
  139. package/web-ui/build/static/cypher-zqUo_NN4.js +1 -0
  140. package/web-ui/build/static/d-BDzMr17q.js +1 -0
  141. package/web-ui/build/static/d-DV4MmaJ0.js +1 -0
  142. package/web-ui/build/static/dart-BFkAPQxN.js +1 -0
  143. package/web-ui/build/static/dart-mlgsSLDz.js +1 -0
  144. package/web-ui/build/static/dataweave-BQWIxcgu.js +1 -0
  145. package/web-ui/build/static/dax-FY1jMN3E.js +1 -0
  146. package/web-ui/build/static/delphi-D85b-0Yr.js +1 -0
  147. package/web-ui/build/static/dhall-C8db-g46.js +1 -0
  148. package/web-ui/build/static/diff-BHBVMWZm.js +1 -0
  149. package/web-ui/build/static/diff-Bet-lyrd.js +1 -0
  150. package/web-ui/build/static/django-CFm4coNe.js +1 -0
  151. package/web-ui/build/static/django-DN9SMkSp.js +1 -0
  152. package/web-ui/build/static/dns-C4yo4DHG.js +1 -0
  153. package/web-ui/build/static/dns-zone-file-B3o4w8rf.js +1 -0
  154. package/web-ui/build/static/docker-BxxsATcw.js +1 -0
  155. package/web-ui/build/static/dockerfile-BKIud8Xh.js +1 -0
  156. package/web-ui/build/static/dos-G9yNAV_a.js +1 -0
  157. package/web-ui/build/static/dot-CdN-GBnW.js +1 -0
  158. package/web-ui/build/static/dsconfig-DZ5R9lQR.js +1 -0
  159. package/web-ui/build/static/dts-DwetpYRu.js +1 -0
  160. package/web-ui/build/static/dust-DzEHgUuI.js +1 -0
  161. package/web-ui/build/static/ebnf-COJZCCYQ.js +1 -0
  162. package/web-ui/build/static/ebnf-CkdHWCBJ.js +1 -0
  163. package/web-ui/build/static/editorconfig-Bd3ywZZQ.js +1 -0
  164. package/web-ui/build/static/eiffel-C1Qk3pq5.js +1 -0
  165. package/web-ui/build/static/ejs-DxCI_S1L.js +1 -0
  166. package/web-ui/build/static/elixir-BIIHBb4p.js +1 -0
  167. package/web-ui/build/static/elixir-Cs4wFfMY.js +1 -0
  168. package/web-ui/build/static/elm-CXqZthrB.js +1 -0
  169. package/web-ui/build/static/elm-DBguvIDg.js +1 -0
  170. package/web-ui/build/static/erb-BPbVhlMt.js +1 -0
  171. package/web-ui/build/static/erb-DvRAcKbN.js +1 -0
  172. package/web-ui/build/static/erlang-BUKDJMhm.js +1 -0
  173. package/web-ui/build/static/erlang-iWD1_psr.js +1 -0
  174. package/web-ui/build/static/erlang-repl-CjXC9U4C.js +1 -0
  175. package/web-ui/build/static/etlua-nQ8GCNAu.js +1 -0
  176. package/web-ui/build/static/excel-D8YfiDAv.js +1 -0
  177. package/web-ui/build/static/excel-formula-CdZZRE7Y.js +1 -0
  178. package/web-ui/build/static/factor-wiNoX051.js +1 -0
  179. package/web-ui/build/static/false-CsZdI-HD.js +1 -0
  180. package/web-ui/build/static/firestore-security-rules-9yXT_i-6.js +1 -0
  181. package/web-ui/build/static/fix-BsV5RZTa.js +1 -0
  182. package/web-ui/build/static/flix-rATD1-Qx.js +1 -0
  183. package/web-ui/build/static/flow-B4UMzoDr.js +1 -0
  184. package/web-ui/build/static/fortran-CavcrRz8.js +1 -0
  185. package/web-ui/build/static/fortran-DVZjWi__.js +1 -0
  186. package/web-ui/build/static/fsharp-BCVsmzkR.js +1 -0
  187. package/web-ui/build/static/fsharp-Cj6zPGzQ.js +1 -0
  188. package/web-ui/build/static/ftl-C5VdFKkz.js +1 -0
  189. package/web-ui/build/static/gams-CT90XmM8.js +1 -0
  190. package/web-ui/build/static/gap-Ch518Ngd.js +1 -0
  191. package/web-ui/build/static/gauss-DTmMb1xB.js +1 -0
  192. package/web-ui/build/static/gcode-BLc6YjFp.js +1 -0
  193. package/web-ui/build/static/gcode-DYtkCbZZ.js +1 -0
  194. package/web-ui/build/static/gdscript-xrcGCBEi.js +1 -0
  195. package/web-ui/build/static/gedcom-DMOuE70a.js +1 -0
  196. package/web-ui/build/static/gherkin-BoEzs1SS.js +1 -0
  197. package/web-ui/build/static/gherkin-DHanA7dz.js +1 -0
  198. package/web-ui/build/static/git-BwT7p7t_.js +1 -0
  199. package/web-ui/build/static/glsl-C3_TTBJ-.js +1 -0
  200. package/web-ui/build/static/glsl-Do3cCE-W.js +1 -0
  201. package/web-ui/build/static/gml-CWSUBiZ2.js +1 -0
  202. package/web-ui/build/static/gml-wrCAzzgE.js +1 -0
  203. package/web-ui/build/static/gn-DqmZ0Qq_.js +1 -0
  204. package/web-ui/build/static/go-DLiparlr.js +1 -0
  205. package/web-ui/build/static/go-i67Zsx3x.js +1 -0
  206. package/web-ui/build/static/go-module-S33FcrvV.js +1 -0
  207. package/web-ui/build/static/golo-DZ7qHIok.js +1 -0
  208. package/web-ui/build/static/gradle-BTVIAud8.js +1 -0
  209. package/web-ui/build/static/graphql-BRc7dV6d.js +1 -0
  210. package/web-ui/build/static/groovy-C0xCDIoi.js +1 -0
  211. package/web-ui/build/static/groovy-CqfENDj5.js +1 -0
  212. package/web-ui/build/static/haml-DGEmWQaf.js +1 -0
  213. package/web-ui/build/static/haml-Uc13XeLh.js +1 -0
  214. package/web-ui/build/static/handlebars-2pDOu-qZ.js +1 -0
  215. package/web-ui/build/static/handlebars-fvNs6C2z.js +1 -0
  216. package/web-ui/build/static/haskell-C_0PdpI7.js +1 -0
  217. package/web-ui/build/static/haskell-DPiywQAr.js +1 -0
  218. package/web-ui/build/static/haxe-B-Jmpi4X.js +1 -0
  219. package/web-ui/build/static/haxe-BnwqHNBF.js +1 -0
  220. package/web-ui/build/static/hcl-BkCp99Ns.js +1 -0
  221. package/web-ui/build/static/hlsl-Dhtz76rF.js +1 -0
  222. package/web-ui/build/static/hoon-DLvY-xJE.js +1 -0
  223. package/web-ui/build/static/hpkp-DqGdkrWa.js +1 -0
  224. package/web-ui/build/static/hsp-uyhbGChx.js +1 -0
  225. package/web-ui/build/static/hsts-B_hdMfTA.js +1 -0
  226. package/web-ui/build/static/htmlbars-DBm6s2XZ.js +1 -0
  227. package/web-ui/build/static/http-BJx-7pVa.js +1 -0
  228. package/web-ui/build/static/http-BNr6-Kd5.js +1 -0
  229. package/web-ui/build/static/hy-CCeD6Z5O.js +1 -0
  230. package/web-ui/build/static/ichigojam-HlQ9_0Cd.js +1 -0
  231. package/web-ui/build/static/icon-BVRGWnBS.js +1 -0
  232. package/web-ui/build/static/icu-message-format-DrOF-VCL.js +1 -0
  233. package/web-ui/build/static/idris-BTtsUKQZ.js +1 -0
  234. package/web-ui/build/static/iecst-C8fkotHg.js +1 -0
  235. package/web-ui/build/static/ignore-9L0_iQf0.js +1 -0
  236. package/web-ui/build/static/index-5biw7ctT.js +1 -0
  237. package/web-ui/build/static/index-C6XLF9dS.js +734 -0
  238. package/web-ui/build/static/index-CTO5ggyx.css +1 -0
  239. package/web-ui/build/static/index-CU7QxI6e.js +13 -0
  240. package/web-ui/build/static/inform7-DrLS7QKe.js +1 -0
  241. package/web-ui/build/static/inform7-GeduJ02-.js +1 -0
  242. package/web-ui/build/static/ini-ClRWklj4.js +1 -0
  243. package/web-ui/build/static/ini-CnWkQt74.js +1 -0
  244. package/web-ui/build/static/io-DLrwKpJi.js +1 -0
  245. package/web-ui/build/static/irpf90-D2n0wokI.js +1 -0
  246. package/web-ui/build/static/isbl-DF3cf2zG.js +1 -0
  247. package/web-ui/build/static/j-DFQ008Ab.js +1 -0
  248. package/web-ui/build/static/java-BXn0NYGW.js +1 -0
  249. package/web-ui/build/static/java-DwyOtG2R.js +1 -0
  250. package/web-ui/build/static/javadoc-7lKDS9yO.js +1 -0
  251. package/web-ui/build/static/javadoclike-UZC5a-I2.js +1 -0
  252. package/web-ui/build/static/javascript-BVwVipxy.js +1 -0
  253. package/web-ui/build/static/javastacktrace-Dysb6pma.js +1 -0
  254. package/web-ui/build/static/jboss-cli-DnBJbhvD.js +1 -0
  255. package/web-ui/build/static/jexl-Xt80RITf.js +1 -0
  256. package/web-ui/build/static/jolie-K583lEAy.js +1 -0
  257. package/web-ui/build/static/jq-DzZu56Cz.js +1 -0
  258. package/web-ui/build/static/js-extras-Cnbo_FPE.js +1 -0
  259. package/web-ui/build/static/js-templates-ChGVoxvZ.js +1 -0
  260. package/web-ui/build/static/jsdoc-7PKg08vo.js +1 -0
  261. package/web-ui/build/static/json-CS8btz_1.js +1 -0
  262. package/web-ui/build/static/json-NWyA8Y-S.js +1 -0
  263. package/web-ui/build/static/json5-BTuuCOka.js +1 -0
  264. package/web-ui/build/static/jsonp-CddCenzG.js +1 -0
  265. package/web-ui/build/static/jsstacktrace-Iz7J77qQ.js +1 -0
  266. package/web-ui/build/static/jsx-KHA4XV99.js +1 -0
  267. package/web-ui/build/static/julia-DBE7YTR3.js +1 -0
  268. package/web-ui/build/static/julia-DhbxCJBI.js +1 -0
  269. package/web-ui/build/static/julia-repl-DMdm1IG1.js +1 -0
  270. package/web-ui/build/static/keepalived-B7vqYV9X.js +1 -0
  271. package/web-ui/build/static/keyman-BgxIO8fq.js +1 -0
  272. package/web-ui/build/static/kotlin-DkKt1c_W.js +1 -0
  273. package/web-ui/build/static/kotlin-DkVwHXV3.js +1 -0
  274. package/web-ui/build/static/kumir-ByisfWMX.js +1 -0
  275. package/web-ui/build/static/kusto-D0PVadiC.js +1 -0
  276. package/web-ui/build/static/lasso-DUqlKJ-V.js +1 -0
  277. package/web-ui/build/static/latex-B_KNiR3P.js +1 -0
  278. package/web-ui/build/static/latex-CAna5qNt.js +1 -0
  279. package/web-ui/build/static/latte-IGkHLrSc.js +1 -0
  280. package/web-ui/build/static/ldif-COEZfOAo.js +1 -0
  281. package/web-ui/build/static/leaf-zSqkBknP.js +1 -0
  282. package/web-ui/build/static/less-BZ7CLYuK.js +1 -0
  283. package/web-ui/build/static/less-DTOaHWfJ.js +1 -0
  284. package/web-ui/build/static/lilypond-CXVSkLeK.js +1 -0
  285. package/web-ui/build/static/liquid-C-anTr0A.js +1 -0
  286. package/web-ui/build/static/lisp-CadxWoyo.js +1 -0
  287. package/web-ui/build/static/lisp-hkvi2iDB.js +1 -0
  288. package/web-ui/build/static/livecodeserver-CHrsuOkQ.js +1 -0
  289. package/web-ui/build/static/livescript-B3gz-3aB.js +1 -0
  290. package/web-ui/build/static/livescript-DnHL9ghu.js +1 -0
  291. package/web-ui/build/static/llvm-BahggCBp.js +1 -0
  292. package/web-ui/build/static/llvm-CmHdko4Y.js +1 -0
  293. package/web-ui/build/static/log-Czikd_pI.js +1 -0
  294. package/web-ui/build/static/lolcode-Ch49C9Zh.js +1 -0
  295. package/web-ui/build/static/lsl-C-VWBCeP.js +1 -0
  296. package/web-ui/build/static/lua-CUvtI6AS.js +1 -0
  297. package/web-ui/build/static/lua-z6ZTYh0E.js +1 -0
  298. package/web-ui/build/static/magma-n2Gm1_JJ.js +1 -0
  299. package/web-ui/build/static/makefile-CV719aL9.js +1 -0
  300. package/web-ui/build/static/makefile-D3XU9qyi.js +1 -0
  301. package/web-ui/build/static/markdown-B7ecawDo.js +1 -0
  302. package/web-ui/build/static/markdown-BAZuKAWm.js +1 -0
  303. package/web-ui/build/static/markup-templating-CkJ0kvIz.js +1 -0
  304. package/web-ui/build/static/mathematica-DeYzfKBj.js +1 -0
  305. package/web-ui/build/static/matlab-CkL4qFcf.js +1 -0
  306. package/web-ui/build/static/matlab-DyeBcYxN.js +1 -0
  307. package/web-ui/build/static/maxima-BYkoTgQQ.js +1 -0
  308. package/web-ui/build/static/maxscript-DF4yyx_y.js +1 -0
  309. package/web-ui/build/static/mel-Cvinm-ul.js +1 -0
  310. package/web-ui/build/static/mel-DuhIFj6N.js +1 -0
  311. package/web-ui/build/static/mercury-BgIQH4Io.js +1 -0
  312. package/web-ui/build/static/mermaid-Cu_HXPUU.js +1 -0
  313. package/web-ui/build/static/mipsasm-Bgjx3kJk.js +1 -0
  314. package/web-ui/build/static/mizar-D6qzNoqS.js +1 -0
  315. package/web-ui/build/static/mizar-_PkxIqXq.js +1 -0
  316. package/web-ui/build/static/mojolicious-DUGLQPxV.js +1 -0
  317. package/web-ui/build/static/mongodb-BLMBcuTL.js +1 -0
  318. package/web-ui/build/static/monkey-C5k7PFu0.js +1 -0
  319. package/web-ui/build/static/monkey-DXGsKsbX.js +1 -0
  320. package/web-ui/build/static/moonscript-1TthCNMT.js +1 -0
  321. package/web-ui/build/static/moonscript-DqJs0-Md.js +1 -0
  322. package/web-ui/build/static/n1ql-Bwd4nK-7.js +1 -0
  323. package/web-ui/build/static/n1ql-hfjCkL2y.js +1 -0
  324. package/web-ui/build/static/n4js-gwCvxndi.js +1 -0
  325. package/web-ui/build/static/nand2tetris-hdl-CRRkn3L9.js +1 -0
  326. package/web-ui/build/static/naniscript-C_wnlSUo.js +1 -0
  327. package/web-ui/build/static/nasm-DX-Dob1L.js +1 -0
  328. package/web-ui/build/static/neon-vJIHxlBH.js +1 -0
  329. package/web-ui/build/static/nevod-Bax1uE4z.js +1 -0
  330. package/web-ui/build/static/nginx-BQS7w2F8.js +1 -0
  331. package/web-ui/build/static/nginx-Bt8431vM.js +1 -0
  332. package/web-ui/build/static/nim-0PFojGir.js +1 -0
  333. package/web-ui/build/static/nim-BQVxzPdc.js +1 -0
  334. package/web-ui/build/static/nix-C1td4KJd.js +1 -0
  335. package/web-ui/build/static/nix-CGOaQ4S_.js +1 -0
  336. package/web-ui/build/static/node-repl-BsAGA-kF.js +1 -0
  337. package/web-ui/build/static/nsis-B8d23hVv.js +1 -0
  338. package/web-ui/build/static/nsis-CRfGDpKw.js +1 -0
  339. package/web-ui/build/static/objectivec-CVrobj9V.js +1 -0
  340. package/web-ui/build/static/objectivec-DcVwp8g9.js +1 -0
  341. package/web-ui/build/static/ocaml-b8Cm2pBQ.js +1 -0
  342. package/web-ui/build/static/ocaml-mP-4C0uB.js +1 -0
  343. package/web-ui/build/static/opencl--Qo9pjSM.js +1 -0
  344. package/web-ui/build/static/openqasm-Dt7vKzox.js +1 -0
  345. package/web-ui/build/static/openscad-By-SEqIm.js +1 -0
  346. package/web-ui/build/static/oxygene-BifGHmAP.js +1 -0
  347. package/web-ui/build/static/oz-DHXFoY_V.js +1 -0
  348. package/web-ui/build/static/parigp-CQEx84-o.js +1 -0
  349. package/web-ui/build/static/parser-DevuQ_YA.js +1 -0
  350. package/web-ui/build/static/parser3-IBmULMjM.js +1 -0
  351. package/web-ui/build/static/pascal-hHG_VNBq.js +1 -0
  352. package/web-ui/build/static/pascaligo-DcXZnXMD.js +1 -0
  353. package/web-ui/build/static/pcaxis-paqvl2ov.js +1 -0
  354. package/web-ui/build/static/peoplecode-T-lVjo6Q.js +1 -0
  355. package/web-ui/build/static/perl-BrrOfxJA.js +1 -0
  356. package/web-ui/build/static/perl-DwF9DDkX.js +1 -0
  357. package/web-ui/build/static/pf-CCvQZiY2.js +1 -0
  358. package/web-ui/build/static/pgsql-DYZXTARb.js +1 -0
  359. package/web-ui/build/static/php-C8P7LrqU.js +1 -0
  360. package/web-ui/build/static/php-Jh4xpwhM.js +1 -0
  361. package/web-ui/build/static/php-extras-Ddj6zZ2a.js +1 -0
  362. package/web-ui/build/static/php-template-D0846ZMl.js +1 -0
  363. package/web-ui/build/static/phpdoc-DU8hHiT4.js +1 -0
  364. package/web-ui/build/static/plaintext-BpAdoq1j.js +1 -0
  365. package/web-ui/build/static/plsql-DjRpUwV7.js +1 -0
  366. package/web-ui/build/static/pony-C91UDOZB.js +1 -0
  367. package/web-ui/build/static/powerquery-CbFt66kY.js +1 -0
  368. package/web-ui/build/static/powershell-Bpd_CmgV.js +1 -0
  369. package/web-ui/build/static/powershell-C0-63tFn.js +1 -0
  370. package/web-ui/build/static/processing-COoELNkd.js +1 -0
  371. package/web-ui/build/static/processing-DovufXGj.js +1 -0
  372. package/web-ui/build/static/profile-DSijKis_.js +1 -0
  373. package/web-ui/build/static/prolog-BPJoWbIS.js +1 -0
  374. package/web-ui/build/static/prolog-Cs4I3Exr.js +1 -0
  375. package/web-ui/build/static/promql-aIfsISjo.js +1 -0
  376. package/web-ui/build/static/properties-DWHgjzpz.js +1 -0
  377. package/web-ui/build/static/properties-k4Dmn8BE.js +1 -0
  378. package/web-ui/build/static/protobuf-HvnZbIjE.js +1 -0
  379. package/web-ui/build/static/protobuf-bqbMMmGn.js +1 -0
  380. package/web-ui/build/static/psl-KbjBRrbA.js +1 -0
  381. package/web-ui/build/static/pug-DJVp_q_q.js +1 -0
  382. package/web-ui/build/static/puppet-DloEWvDZ.js +1 -0
  383. package/web-ui/build/static/puppet-WFgyaopG.js +1 -0
  384. package/web-ui/build/static/pure-483zjlGE.js +1 -0
  385. package/web-ui/build/static/purebasic-CZ8DdKkF.js +1 -0
  386. package/web-ui/build/static/purebasic-dlQReKmz.js +1 -0
  387. package/web-ui/build/static/purescript-BQnFvaU3.js +1 -0
  388. package/web-ui/build/static/python-CZ8lWs1l.js +1 -0
  389. package/web-ui/build/static/python-SU3ESoh4.js +1 -0
  390. package/web-ui/build/static/python-repl-BBkzrvQe.js +1 -0
  391. package/web-ui/build/static/q-DTmVFt9r.js +1 -0
  392. package/web-ui/build/static/q-DtzT8sxS.js +1 -0
  393. package/web-ui/build/static/qml-B5F36arQ.js +1 -0
  394. package/web-ui/build/static/qml-BGRIPpl3.js +1 -0
  395. package/web-ui/build/static/qore-CRS2zeE4.js +1 -0
  396. package/web-ui/build/static/qsharp-C4Tv2HNI.js +1 -0
  397. package/web-ui/build/static/r-BrIQscI_.js +1 -0
  398. package/web-ui/build/static/r-C1dTwrK3.js +1 -0
  399. package/web-ui/build/static/racket-CY5XtMxt.js +1 -0
  400. package/web-ui/build/static/reason-BOspKOui.js +1 -0
  401. package/web-ui/build/static/reasonml-CI0bWekr.js +1 -0
  402. package/web-ui/build/static/regex-Bu9fRM2h.js +1 -0
  403. package/web-ui/build/static/rego-DPs1L6rM.js +1 -0
  404. package/web-ui/build/static/renpy-CqxG8TUa.js +1 -0
  405. package/web-ui/build/static/rest-DVBf_JOU.js +1 -0
  406. package/web-ui/build/static/rib-C7f1MpLJ.js +1 -0
  407. package/web-ui/build/static/rip-CnDVKjn3.js +1 -0
  408. package/web-ui/build/static/roboconf-B3CDWS-p.js +1 -0
  409. package/web-ui/build/static/roboconf-Cl96yvBS.js +1 -0
  410. package/web-ui/build/static/robotframework-BitHYBrT.js +1 -0
  411. package/web-ui/build/static/routeros-CfrP9irD.js +1 -0
  412. package/web-ui/build/static/rsl-CGblvP8t.js +1 -0
  413. package/web-ui/build/static/ruby-CJyKAxoz.js +1 -0
  414. package/web-ui/build/static/ruby-KT7L0c-N.js +1 -0
  415. package/web-ui/build/static/ruleslanguage-_MWgFm9V.js +1 -0
  416. package/web-ui/build/static/rust-DAiMZG-s.js +1 -0
  417. package/web-ui/build/static/rust-Dmpa9JNg.js +1 -0
  418. package/web-ui/build/static/sas-CQltIY6v.js +1 -0
  419. package/web-ui/build/static/sas-aM67MfcZ.js +1 -0
  420. package/web-ui/build/static/sass-DEBoFRRa.js +1 -0
  421. package/web-ui/build/static/scala-Cd5U29aY.js +1 -0
  422. package/web-ui/build/static/scala-DzaGwcFi.js +1 -0
  423. package/web-ui/build/static/scheme-Cqqy_i9p.js +1 -0
  424. package/web-ui/build/static/scheme-cIT7gYIT.js +1 -0
  425. package/web-ui/build/static/scilab-DkyaqVYN.js +1 -0
  426. package/web-ui/build/static/scss-Cyi-dRZB.js +1 -0
  427. package/web-ui/build/static/scss-D_mUdkix.js +1 -0
  428. package/web-ui/build/static/shell-BF_xfQdX.js +1 -0
  429. package/web-ui/build/static/shell-session-C4TwlI5u.js +1 -0
  430. package/web-ui/build/static/smali-CvYqcvZD.js +1 -0
  431. package/web-ui/build/static/smali-DdJm0lGk.js +1 -0
  432. package/web-ui/build/static/smalltalk-B4v_uFAj.js +1 -0
  433. package/web-ui/build/static/smalltalk-BHk9orPf.js +1 -0
  434. package/web-ui/build/static/smarty-DCURdYbE.js +1 -0
  435. package/web-ui/build/static/sml-BFUDbMt7.js +1 -0
  436. package/web-ui/build/static/sml-BIbfLMH_.js +1 -0
  437. package/web-ui/build/static/solidity-fyryqi43.js +1 -0
  438. package/web-ui/build/static/solution-file-DoPZY9rL.js +1 -0
  439. package/web-ui/build/static/soy-AjVmvggx.js +1 -0
  440. package/web-ui/build/static/sparql-C4-CLrDw.js +1 -0
  441. package/web-ui/build/static/splunk-spl-DclxQT5j.js +1 -0
  442. package/web-ui/build/static/sqf-CuCGayd3.js +1 -0
  443. package/web-ui/build/static/sqf-uK9OZDXX.js +1 -0
  444. package/web-ui/build/static/sql-B0Pqn1rt.js +1 -0
  445. package/web-ui/build/static/sql-DlNrMSaF.js +1 -0
  446. package/web-ui/build/static/sql_more-BmwYd1jA.js +1 -0
  447. package/web-ui/build/static/squirrel-PzIoP6WH.js +1 -0
  448. package/web-ui/build/static/stan-BZe07EwD.js +1 -0
  449. package/web-ui/build/static/stan-De1mVh5w.js +1 -0
  450. package/web-ui/build/static/stata-Dt6KIbHG.js +1 -0
  451. package/web-ui/build/static/step21-5If4hNHF.js +1 -0
  452. package/web-ui/build/static/stylus-Cfsl-liy.js +1 -0
  453. package/web-ui/build/static/stylus-V2q0pGFi.js +1 -0
  454. package/web-ui/build/static/subunit-Dw4nCzI8.js +1 -0
  455. package/web-ui/build/static/swift-CNMLwgfO.js +1 -0
  456. package/web-ui/build/static/swift-HUQ5YZQh.js +1 -0
  457. package/web-ui/build/static/systemd-C8DE2Z5C.js +1 -0
  458. package/web-ui/build/static/t4-cs-C_Ey5AJK.js +1 -0
  459. package/web-ui/build/static/t4-templating-DwnTc5zw.js +1 -0
  460. package/web-ui/build/static/t4-vb-C-0KWoPY.js +1 -0
  461. package/web-ui/build/static/taggerscript-Bv6_taGx.js +1 -0
  462. package/web-ui/build/static/tap-CFDvzug8.js +1 -0
  463. package/web-ui/build/static/tap-CdJ_Enrg.js +1 -0
  464. package/web-ui/build/static/tcl-BAEseFnT.js +1 -0
  465. package/web-ui/build/static/tcl-BS59XADk.js +1 -0
  466. package/web-ui/build/static/textile-a8y5rAtB.js +1 -0
  467. package/web-ui/build/static/thrift-D7V-eNGh.js +1 -0
  468. package/web-ui/build/static/toml-D8cwTEse.js +1 -0
  469. package/web-ui/build/static/tp-hIAhc2bK.js +1 -0
  470. package/web-ui/build/static/tremor-Czk4wryK.js +1 -0
  471. package/web-ui/build/static/tsx-BOeSrzC2.js +1 -0
  472. package/web-ui/build/static/tt2-BHVJTkSt.js +1 -0
  473. package/web-ui/build/static/turtle-BOWLWZq7.js +1 -0
  474. package/web-ui/build/static/twig-CiL22hfc.js +1 -0
  475. package/web-ui/build/static/twig-fnjh9nSd.js +1 -0
  476. package/web-ui/build/static/typescript-BXgo8AbH.js +1 -0
  477. package/web-ui/build/static/typescript-Bd_EcNlS.js +1 -0
  478. package/web-ui/build/static/typoscript-OvQoCcN-.js +1 -0
  479. package/web-ui/build/static/unrealscript-Dw9u3aN1.js +1 -0
  480. package/web-ui/build/static/uorazor-BYmWZy9R.js +1 -0
  481. package/web-ui/build/static/uri-cZEKPhfB.js +1 -0
  482. package/web-ui/build/static/v-DCUw5P5w.js +1 -0
  483. package/web-ui/build/static/vala-BeMIXdl5.js +1 -0
  484. package/web-ui/build/static/vala-Dchv0k-k.js +1 -0
  485. package/web-ui/build/static/vbnet-CYNUkFEn.js +1 -0
  486. package/web-ui/build/static/vbnet-DJpHrZ4P.js +1 -0
  487. package/web-ui/build/static/vbscript-html-eSFLndJq.js +1 -0
  488. package/web-ui/build/static/vbscript-uo6pZmjr.js +1 -0
  489. package/web-ui/build/static/velocity-BZ4IThJR.js +1 -0
  490. package/web-ui/build/static/verilog-CaEouCrk.js +1 -0
  491. package/web-ui/build/static/verilog-D_yjfQsL.js +1 -0
  492. package/web-ui/build/static/vhdl-3zobHypY.js +1 -0
  493. package/web-ui/build/static/vhdl-DfMoYPtq.js +1 -0
  494. package/web-ui/build/static/vim-DBVHHc5J.js +1 -0
  495. package/web-ui/build/static/vim-DillbvCO.js +1 -0
  496. package/web-ui/build/static/visual-basic-C7H7McST.js +1 -0
  497. package/web-ui/build/static/warpscript-BKjx-dEN.js +1 -0
  498. package/web-ui/build/static/wasm-AVgQyIgy.js +1 -0
  499. package/web-ui/build/static/web-idl-BNNIYzG6.js +1 -0
  500. package/web-ui/build/static/wiki-CLfpaX63.js +1 -0
  501. package/web-ui/build/static/wolfram-DUecju0s.js +1 -0
  502. package/web-ui/build/static/wren-DOzRaRuS.js +1 -0
  503. package/web-ui/build/static/x86asm-FxnmOy9a.js +1 -0
  504. package/web-ui/build/static/xeora-u3RdEzzL.js +1 -0
  505. package/web-ui/build/static/xl-DRkSDCgX.js +1 -0
  506. package/web-ui/build/static/xml-d39yV6YW.js +1 -0
  507. package/web-ui/build/static/xml-doc-CAsyFkZk.js +1 -0
  508. package/web-ui/build/static/xojo-C82wULba.js +1 -0
  509. package/web-ui/build/static/xquery-CdvxjAIl.js +1 -0
  510. package/web-ui/build/static/xquery-ClPcUh76.js +1 -0
  511. package/web-ui/build/static/yaml-C5_f2N79.js +1 -0
  512. package/web-ui/build/static/yaml-ZJm6Uydk.js +1 -0
  513. package/web-ui/build/static/yang-BR7aZNbT.js +1 -0
  514. package/web-ui/build/static/zephir-CnL3vXXJ.js +1 -0
  515. package/web-ui/build/static/zig-e5ovIuAu.js +1 -0
  516. package/web-ui/build/static/1c-D-8ReLUQ.js +0 -1
  517. package/web-ui/build/static/abap-NvrQD84d.js +0 -1
  518. package/web-ui/build/static/abnf-BxKbzF6d.js +0 -1
  519. package/web-ui/build/static/abnf-gQpmRWjd.js +0 -1
  520. package/web-ui/build/static/accesslog-BQLUo5Gi.js +0 -1
  521. package/web-ui/build/static/actionscript-3TeMZFpQ.js +0 -1
  522. package/web-ui/build/static/actionscript-w6DEnLr3.js +0 -1
  523. package/web-ui/build/static/ada-87XHdEXs.js +0 -1
  524. package/web-ui/build/static/ada-QztkYmC7.js +0 -1
  525. package/web-ui/build/static/agda-CUYeMLgB.js +0 -1
  526. package/web-ui/build/static/al-DrDn2-sA.js +0 -1
  527. package/web-ui/build/static/angelscript-D3Qw8kQa.js +0 -1
  528. package/web-ui/build/static/antlr4-CWEEpQ5q.js +0 -1
  529. package/web-ui/build/static/apache-Bme3xfdp.js +0 -1
  530. package/web-ui/build/static/apacheconf-BKOfs-cp.js +0 -1
  531. package/web-ui/build/static/apex-DswYOikL.js +0 -1
  532. package/web-ui/build/static/apl-CizhojF3.js +0 -1
  533. package/web-ui/build/static/applescript-D9M6q0r7.js +0 -1
  534. package/web-ui/build/static/applescript-DpP5T055.js +0 -1
  535. package/web-ui/build/static/aql-BqAlaha9.js +0 -1
  536. package/web-ui/build/static/arcade-DobNWm8j.js +0 -1
  537. package/web-ui/build/static/arduino-BeuGL09r.js +0 -1
  538. package/web-ui/build/static/arduino-BiF5cC7x.js +0 -1
  539. package/web-ui/build/static/arff-2H9PyLDr.js +0 -1
  540. package/web-ui/build/static/armasm-B6wc18B0.js +0 -1
  541. package/web-ui/build/static/asciidoc-DUF4xPDI.js +0 -1
  542. package/web-ui/build/static/asciidoc-TBH4m8SR.js +0 -1
  543. package/web-ui/build/static/asm6502-CzTI2B-y.js +0 -1
  544. package/web-ui/build/static/asmatmel-BYN0Xd3T.js +0 -1
  545. package/web-ui/build/static/aspectj-DXCMDgp7.js +0 -1
  546. package/web-ui/build/static/aspnet-lOvDpvP_.js +0 -1
  547. package/web-ui/build/static/autohotkey-CICk12uK.js +0 -1
  548. package/web-ui/build/static/autohotkey-DrG81PVL.js +0 -1
  549. package/web-ui/build/static/autoit-DFemtuhG.js +0 -1
  550. package/web-ui/build/static/autoit-D_K-jEWY.js +0 -1
  551. package/web-ui/build/static/avisynth-DOnmgjBO.js +0 -1
  552. package/web-ui/build/static/avrasm-rMDuGPFy.js +0 -1
  553. package/web-ui/build/static/avro-idl-CH5Xk5PQ.js +0 -1
  554. package/web-ui/build/static/awk-BvyFWX3C.js +0 -1
  555. package/web-ui/build/static/axapta-BWmF5MqT.js +0 -1
  556. package/web-ui/build/static/bash-Coyd2GnL.js +0 -1
  557. package/web-ui/build/static/bash-DSdj70Nv.js +0 -1
  558. package/web-ui/build/static/basic-CflyLZ31.js +0 -1
  559. package/web-ui/build/static/basic-Cs6QyVqS.js +0 -1
  560. package/web-ui/build/static/batch-DCDtzw83.js +0 -1
  561. package/web-ui/build/static/bbcode-MWdW7azN.js +0 -1
  562. package/web-ui/build/static/bicep-jQ4zhAw9.js +0 -1
  563. package/web-ui/build/static/birb-9f7Itiod.js +0 -1
  564. package/web-ui/build/static/bison-CIIUW5Cl.js +0 -1
  565. package/web-ui/build/static/bnf-B2w55bnT.js +0 -1
  566. package/web-ui/build/static/bnf-CUlbZGe7.js +0 -1
  567. package/web-ui/build/static/brainfuck-CaJZ1LRc.js +0 -1
  568. package/web-ui/build/static/brainfuck-eIkhMKej.js +0 -1
  569. package/web-ui/build/static/brightscript-BSLnJVmJ.js +0 -1
  570. package/web-ui/build/static/bro-YVCWDbPj.js +0 -1
  571. package/web-ui/build/static/bsl-Nm0_B_oa.js +0 -1
  572. package/web-ui/build/static/c-Dv7lr1UK.js +0 -1
  573. package/web-ui/build/static/c-like-C9IU26FO.js +0 -1
  574. package/web-ui/build/static/c-pfS3v02M.js +0 -1
  575. package/web-ui/build/static/cal-D4re7xDS.js +0 -1
  576. package/web-ui/build/static/capnproto-Dy75AQ6u.js +0 -1
  577. package/web-ui/build/static/ceylon-BNtjB2q0.js +0 -1
  578. package/web-ui/build/static/cfscript-8X2NpMn_.js +0 -1
  579. package/web-ui/build/static/chaiscript-CoXaTTY-.js +0 -1
  580. package/web-ui/build/static/cil-BluyliW6.js +0 -1
  581. package/web-ui/build/static/clean-Bj15gq3Q.js +0 -1
  582. package/web-ui/build/static/clojure-BH5xTDBp.js +0 -1
  583. package/web-ui/build/static/clojure-BqHsfJwr.js +0 -1
  584. package/web-ui/build/static/clojure-repl-B32b9bLV.js +0 -1
  585. package/web-ui/build/static/cmake-CyTE-1A0.js +0 -1
  586. package/web-ui/build/static/cmake-hiJ0lXa-.js +0 -1
  587. package/web-ui/build/static/cobol-BBnQUH8E.js +0 -1
  588. package/web-ui/build/static/coffeescript-BjrsNhLL.js +0 -1
  589. package/web-ui/build/static/coffeescript-C7WO1c8O.js +0 -1
  590. package/web-ui/build/static/concurnas-9EpupFAI.js +0 -1
  591. package/web-ui/build/static/coq-C-tt6nZE.js +0 -1
  592. package/web-ui/build/static/coq-CLCiqFzC.js +0 -1
  593. package/web-ui/build/static/cos-BQC1_Gov.js +0 -1
  594. package/web-ui/build/static/cpp-CH4XSTo7.js +0 -1
  595. package/web-ui/build/static/cpp-K8F2XScQ.js +0 -1
  596. package/web-ui/build/static/crmsh-DztNtPne.js +0 -1
  597. package/web-ui/build/static/crystal-kBqCeXtW.js +0 -1
  598. package/web-ui/build/static/crystal-sVG_HS9o.js +0 -1
  599. package/web-ui/build/static/csharp-4pb9Wc--.js +0 -1
  600. package/web-ui/build/static/csharp-D5QaxB-K.js +0 -1
  601. package/web-ui/build/static/cshtml-Cpytn-LL.js +0 -1
  602. package/web-ui/build/static/csp-BH6fPZVZ.js +0 -1
  603. package/web-ui/build/static/csp-WrjFExbk.js +0 -1
  604. package/web-ui/build/static/css-DJxZ20Kx.js +0 -1
  605. package/web-ui/build/static/css-extras-DwoO5sHq.js +0 -1
  606. package/web-ui/build/static/csv-DJb1XTwb.js +0 -1
  607. package/web-ui/build/static/cypher-CFN05H9J.js +0 -1
  608. package/web-ui/build/static/d-COFI-yfM.js +0 -1
  609. package/web-ui/build/static/d-DYHnLAnt.js +0 -1
  610. package/web-ui/build/static/dart-Bw35nKGj.js +0 -1
  611. package/web-ui/build/static/dart-C5gnqL08.js +0 -1
  612. package/web-ui/build/static/dataweave-DG_2euLu.js +0 -1
  613. package/web-ui/build/static/dax-BSpzdHUe.js +0 -1
  614. package/web-ui/build/static/delphi-Cl5NRXvZ.js +0 -1
  615. package/web-ui/build/static/dhall-CNefJtoo.js +0 -1
  616. package/web-ui/build/static/diff-DhqUs0Iy.js +0 -1
  617. package/web-ui/build/static/diff-KGSf4pWL.js +0 -1
  618. package/web-ui/build/static/django-5TgWQjd4.js +0 -1
  619. package/web-ui/build/static/django-DavZW8FP.js +0 -1
  620. package/web-ui/build/static/dns-CuF6RAET.js +0 -1
  621. package/web-ui/build/static/dns-zone-file-BcBMQ0BR.js +0 -1
  622. package/web-ui/build/static/docker-Dht8jS2j.js +0 -1
  623. package/web-ui/build/static/dockerfile-CjjL85ki.js +0 -1
  624. package/web-ui/build/static/dos-CVoaOHAQ.js +0 -1
  625. package/web-ui/build/static/dot-QcLwKXVK.js +0 -1
  626. package/web-ui/build/static/dsconfig-_1R6hLzq.js +0 -1
  627. package/web-ui/build/static/dts-B_Dzxmb6.js +0 -1
  628. package/web-ui/build/static/dust-xRpJXkxU.js +0 -1
  629. package/web-ui/build/static/ebnf-DPK9Hid-.js +0 -1
  630. package/web-ui/build/static/ebnf-OVlya1yQ.js +0 -1
  631. package/web-ui/build/static/editorconfig-CbCWWNal.js +0 -1
  632. package/web-ui/build/static/eiffel-CShmAG_u.js +0 -1
  633. package/web-ui/build/static/ejs-Dybq4vcI.js +0 -1
  634. package/web-ui/build/static/elixir-CzXoWmCJ.js +0 -1
  635. package/web-ui/build/static/elixir-DKVoqGbI.js +0 -1
  636. package/web-ui/build/static/elm-DfJge1Cy.js +0 -1
  637. package/web-ui/build/static/elm-wTttagz6.js +0 -1
  638. package/web-ui/build/static/erb-BqJOty-L.js +0 -1
  639. package/web-ui/build/static/erb-DEcQyddF.js +0 -1
  640. package/web-ui/build/static/erlang-DR0S8Dbq.js +0 -1
  641. package/web-ui/build/static/erlang-foLyt35P.js +0 -1
  642. package/web-ui/build/static/erlang-repl-KGaauP1D.js +0 -1
  643. package/web-ui/build/static/etlua-i5bjc318.js +0 -1
  644. package/web-ui/build/static/excel-Bxn-_4FK.js +0 -1
  645. package/web-ui/build/static/excel-formula-C3ittGUe.js +0 -1
  646. package/web-ui/build/static/factor-Cq9BFfPi.js +0 -1
  647. package/web-ui/build/static/false-Bq1Og8uV.js +0 -1
  648. package/web-ui/build/static/firestore-security-rules-BuWMvGkh.js +0 -1
  649. package/web-ui/build/static/fix-CJH3csBZ.js +0 -1
  650. package/web-ui/build/static/flix-DZVFkMZK.js +0 -1
  651. package/web-ui/build/static/flow-DGvt9eNT.js +0 -1
  652. package/web-ui/build/static/fortran-CRMIJaq3.js +0 -1
  653. package/web-ui/build/static/fortran-DYMWvRQk.js +0 -1
  654. package/web-ui/build/static/fsharp-DsngWUfx.js +0 -1
  655. package/web-ui/build/static/fsharp-iEMP2hGc.js +0 -1
  656. package/web-ui/build/static/ftl-6XZ6kVeO.js +0 -1
  657. package/web-ui/build/static/gams-BPxwyKlw.js +0 -1
  658. package/web-ui/build/static/gap-LiwKb7bd.js +0 -1
  659. package/web-ui/build/static/gauss-BMq9hJW2.js +0 -1
  660. package/web-ui/build/static/gcode-BhUKSjaC.js +0 -1
  661. package/web-ui/build/static/gcode-b-DQdN2W.js +0 -1
  662. package/web-ui/build/static/gdscript-DIZ0_yTx.js +0 -1
  663. package/web-ui/build/static/gedcom-B-Don8Su.js +0 -1
  664. package/web-ui/build/static/gherkin-BioIAP1n.js +0 -1
  665. package/web-ui/build/static/gherkin-Cly_guds.js +0 -1
  666. package/web-ui/build/static/git-CopW8z0r.js +0 -1
  667. package/web-ui/build/static/glsl-6ssjFzwf.js +0 -1
  668. package/web-ui/build/static/glsl-E_uyFQdl.js +0 -1
  669. package/web-ui/build/static/gml-CaO1S6wu.js +0 -1
  670. package/web-ui/build/static/gml-D9DYjC5y.js +0 -1
  671. package/web-ui/build/static/gn-B_qqVpR0.js +0 -1
  672. package/web-ui/build/static/go-DFaKy1Ay.js +0 -1
  673. package/web-ui/build/static/go-JLTG1uU-.js +0 -1
  674. package/web-ui/build/static/go-module-BGp5Ey97.js +0 -1
  675. package/web-ui/build/static/golo-BlbGqaMN.js +0 -1
  676. package/web-ui/build/static/gradle-wqmsj6uh.js +0 -1
  677. package/web-ui/build/static/graphql-7RIdAO4i.js +0 -1
  678. package/web-ui/build/static/groovy-3icIp5xU.js +0 -1
  679. package/web-ui/build/static/groovy-HPI8s9_9.js +0 -1
  680. package/web-ui/build/static/haml-CTkGGR02.js +0 -1
  681. package/web-ui/build/static/haml-Thxu3S1L.js +0 -1
  682. package/web-ui/build/static/handlebars-1DoYlhi8.js +0 -1
  683. package/web-ui/build/static/handlebars-i1BBTCzR.js +0 -1
  684. package/web-ui/build/static/haskell-A1VYHFSA.js +0 -1
  685. package/web-ui/build/static/haskell-C_DMih9U.js +0 -1
  686. package/web-ui/build/static/haxe-Cz5x4sAD.js +0 -1
  687. package/web-ui/build/static/haxe-DYRFmKkv.js +0 -1
  688. package/web-ui/build/static/hcl-BRcB2lym.js +0 -1
  689. package/web-ui/build/static/hlsl-DkyhfHB3.js +0 -1
  690. package/web-ui/build/static/hoon-Droh_30T.js +0 -1
  691. package/web-ui/build/static/hpkp-DTAbnc4g.js +0 -1
  692. package/web-ui/build/static/hsp-C0QnJZWI.js +0 -1
  693. package/web-ui/build/static/hsts-C21QOmcz.js +0 -1
  694. package/web-ui/build/static/htmlbars-Bjlkvm5m.js +0 -1
  695. package/web-ui/build/static/http-D0nJQkzK.js +0 -1
  696. package/web-ui/build/static/http-DRz4r8bD.js +0 -1
  697. package/web-ui/build/static/hy-BqiXsF4N.js +0 -1
  698. package/web-ui/build/static/ichigojam-BQi7PpBN.js +0 -1
  699. package/web-ui/build/static/icon-BufrPPND.js +0 -1
  700. package/web-ui/build/static/icu-message-format-BGFhE2gJ.js +0 -1
  701. package/web-ui/build/static/idris-CDCGxwUo.js +0 -1
  702. package/web-ui/build/static/iecst-CdwPGvCO.js +0 -1
  703. package/web-ui/build/static/ignore-CHdDzb39.js +0 -1
  704. package/web-ui/build/static/index-C9Fa_kgD.css +0 -1
  705. package/web-ui/build/static/index-D1KAbjnI.js +0 -1
  706. package/web-ui/build/static/index-DBYkW2lx.js +0 -13
  707. package/web-ui/build/static/index-DsoPopge.js +0 -727
  708. package/web-ui/build/static/inform7-Bpq3UO5w.js +0 -1
  709. package/web-ui/build/static/inform7-DmXu-aMH.js +0 -1
  710. package/web-ui/build/static/ini-DWUEQKxG.js +0 -1
  711. package/web-ui/build/static/ini-t3XdjCfA.js +0 -1
  712. package/web-ui/build/static/io-DfElp6yx.js +0 -1
  713. package/web-ui/build/static/irpf90-fx9_FB-t.js +0 -1
  714. package/web-ui/build/static/isbl-CcrRysr8.js +0 -1
  715. package/web-ui/build/static/j--Jx3nGHC.js +0 -1
  716. package/web-ui/build/static/java-OOMeJRRQ.js +0 -1
  717. package/web-ui/build/static/java-OTyqE2m1.js +0 -1
  718. package/web-ui/build/static/javadoc-CD-HiYEY.js +0 -1
  719. package/web-ui/build/static/javadoclike-CLv1_76Z.js +0 -1
  720. package/web-ui/build/static/javascript-C_j1lHAa.js +0 -1
  721. package/web-ui/build/static/javastacktrace-CIsSL13b.js +0 -1
  722. package/web-ui/build/static/jboss-cli-C9HktJFq.js +0 -1
  723. package/web-ui/build/static/jexl-Doro4Jcm.js +0 -1
  724. package/web-ui/build/static/jolie-C5wL2YdC.js +0 -1
  725. package/web-ui/build/static/jq-Bmi3HMEP.js +0 -1
  726. package/web-ui/build/static/js-extras-CQyLxL3s.js +0 -1
  727. package/web-ui/build/static/js-templates-DAigrjqA.js +0 -1
  728. package/web-ui/build/static/jsdoc-BJ_oa4xn.js +0 -1
  729. package/web-ui/build/static/json--C9O_45y.js +0 -1
  730. package/web-ui/build/static/json-CSGkCpU2.js +0 -1
  731. package/web-ui/build/static/json5-CcxKJla0.js +0 -1
  732. package/web-ui/build/static/jsonp-DjUgPOz0.js +0 -1
  733. package/web-ui/build/static/jsstacktrace-BpOw_ymZ.js +0 -1
  734. package/web-ui/build/static/jsx-otTTuJ8X.js +0 -1
  735. package/web-ui/build/static/julia-B1n4YHpM.js +0 -1
  736. package/web-ui/build/static/julia-bi12E6me.js +0 -1
  737. package/web-ui/build/static/julia-repl-DwzL74R7.js +0 -1
  738. package/web-ui/build/static/keepalived-cKzNWQWz.js +0 -1
  739. package/web-ui/build/static/keyman-BVOouxaa.js +0 -1
  740. package/web-ui/build/static/kotlin-BPuaNDRU.js +0 -1
  741. package/web-ui/build/static/kotlin-DvWwch7e.js +0 -1
  742. package/web-ui/build/static/kumir-DxiPnZla.js +0 -1
  743. package/web-ui/build/static/kusto-tc7F4iSM.js +0 -1
  744. package/web-ui/build/static/lasso-CuIxaW6G.js +0 -1
  745. package/web-ui/build/static/latex-DaVNZvfJ.js +0 -1
  746. package/web-ui/build/static/latex-Y-rAMd-m.js +0 -1
  747. package/web-ui/build/static/latte-BWApgl6V.js +0 -1
  748. package/web-ui/build/static/ldif-BjMOGnja.js +0 -1
  749. package/web-ui/build/static/leaf-BjXTc-gF.js +0 -1
  750. package/web-ui/build/static/less-BAoMgFHw.js +0 -1
  751. package/web-ui/build/static/less-BIXQ4mtM.js +0 -1
  752. package/web-ui/build/static/lilypond-B6avfRfg.js +0 -1
  753. package/web-ui/build/static/liquid-Bgux4iHZ.js +0 -1
  754. package/web-ui/build/static/lisp-DZwObPt9.js +0 -1
  755. package/web-ui/build/static/lisp-KuHBOL65.js +0 -1
  756. package/web-ui/build/static/livecodeserver-Cuv2a-Np.js +0 -1
  757. package/web-ui/build/static/livescript-B5joK5y1.js +0 -1
  758. package/web-ui/build/static/livescript-Cfl-5tRI.js +0 -1
  759. package/web-ui/build/static/llvm-Bq_MvIMt.js +0 -1
  760. package/web-ui/build/static/llvm-DDplxqNH.js +0 -1
  761. package/web-ui/build/static/log-C0UrUYNZ.js +0 -1
  762. package/web-ui/build/static/lolcode-Bpn0nZXI.js +0 -1
  763. package/web-ui/build/static/lsl-Baa3yssY.js +0 -1
  764. package/web-ui/build/static/lua-CmS7S4r8.js +0 -1
  765. package/web-ui/build/static/lua-CuTsqVUh.js +0 -1
  766. package/web-ui/build/static/magma-D80wNgLE.js +0 -1
  767. package/web-ui/build/static/makefile-BUfHdkgl.js +0 -1
  768. package/web-ui/build/static/makefile-DcdqPwtQ.js +0 -1
  769. package/web-ui/build/static/markdown-Dnk5E2xs.js +0 -1
  770. package/web-ui/build/static/markdown-dVGF22cZ.js +0 -1
  771. package/web-ui/build/static/markup-templating-DFEtKf2a.js +0 -1
  772. package/web-ui/build/static/mathematica-D6RpzMC4.js +0 -1
  773. package/web-ui/build/static/matlab-BNL791Vd.js +0 -1
  774. package/web-ui/build/static/matlab-CcJdErYu.js +0 -1
  775. package/web-ui/build/static/maxima-DtObzS0g.js +0 -1
  776. package/web-ui/build/static/maxscript-Boeo84Pc.js +0 -1
  777. package/web-ui/build/static/mel-CQDFYa9L.js +0 -1
  778. package/web-ui/build/static/mel-Dqbr8Ct3.js +0 -1
  779. package/web-ui/build/static/mercury-CtQIBvXV.js +0 -1
  780. package/web-ui/build/static/mermaid-Be11mdXJ.js +0 -1
  781. package/web-ui/build/static/mipsasm-Bzu7KAos.js +0 -1
  782. package/web-ui/build/static/mizar-CTwK6_XC.js +0 -1
  783. package/web-ui/build/static/mizar-DGSninkt.js +0 -1
  784. package/web-ui/build/static/mojolicious-B5J4ts83.js +0 -1
  785. package/web-ui/build/static/mongodb-Canys4Q-.js +0 -1
  786. package/web-ui/build/static/monkey-Bc8QeQKW.js +0 -1
  787. package/web-ui/build/static/monkey-BuakrB5T.js +0 -1
  788. package/web-ui/build/static/moonscript-CCCY-549.js +0 -1
  789. package/web-ui/build/static/moonscript-DgTN69ea.js +0 -1
  790. package/web-ui/build/static/n1ql-BeClvJbI.js +0 -1
  791. package/web-ui/build/static/n1ql-Bmrbwg5D.js +0 -1
  792. package/web-ui/build/static/n4js-BI7ajnA2.js +0 -1
  793. package/web-ui/build/static/nand2tetris-hdl-CTtO9tFK.js +0 -1
  794. package/web-ui/build/static/naniscript-ByLXiYB-.js +0 -1
  795. package/web-ui/build/static/nasm-DyRBXPTp.js +0 -1
  796. package/web-ui/build/static/neon-CuGxTU_0.js +0 -1
  797. package/web-ui/build/static/nevod-CWnxD5-I.js +0 -1
  798. package/web-ui/build/static/nginx-9_Wnc0a8.js +0 -1
  799. package/web-ui/build/static/nginx-YzYFF0YL.js +0 -1
  800. package/web-ui/build/static/nim-Dgg2r5_y.js +0 -1
  801. package/web-ui/build/static/nim-Dket4DOJ.js +0 -1
  802. package/web-ui/build/static/nix-CM2XsNVm.js +0 -1
  803. package/web-ui/build/static/nix-P756jRJz.js +0 -1
  804. package/web-ui/build/static/node-repl-BRadhyOu.js +0 -1
  805. package/web-ui/build/static/nsis-4AzWWTt3.js +0 -1
  806. package/web-ui/build/static/nsis-DawN0fp-.js +0 -1
  807. package/web-ui/build/static/objectivec-BHy8WXYe.js +0 -1
  808. package/web-ui/build/static/objectivec-CVvJfvIh.js +0 -1
  809. package/web-ui/build/static/ocaml-BXmkRrGk.js +0 -1
  810. package/web-ui/build/static/ocaml-D9blGtF-.js +0 -1
  811. package/web-ui/build/static/opencl-CrP8B7-Y.js +0 -1
  812. package/web-ui/build/static/openqasm-BF_FGc9C.js +0 -1
  813. package/web-ui/build/static/openscad-BX0LeVCC.js +0 -1
  814. package/web-ui/build/static/oxygene-Dv7-kaO-.js +0 -1
  815. package/web-ui/build/static/oz-DMw40m1E.js +0 -1
  816. package/web-ui/build/static/parigp-C6qS_vHR.js +0 -1
  817. package/web-ui/build/static/parser-CIccHpfs.js +0 -1
  818. package/web-ui/build/static/parser3-DY65kzTx.js +0 -1
  819. package/web-ui/build/static/pascal-Bd8OdL32.js +0 -1
  820. package/web-ui/build/static/pascaligo-Czv0M1Ke.js +0 -1
  821. package/web-ui/build/static/pcaxis-Ct9Xzb0v.js +0 -1
  822. package/web-ui/build/static/peoplecode-Qs_52P9e.js +0 -1
  823. package/web-ui/build/static/perl-C7ZXixEj.js +0 -1
  824. package/web-ui/build/static/perl-jarWhwwS.js +0 -1
  825. package/web-ui/build/static/pf-CUIEZmhu.js +0 -1
  826. package/web-ui/build/static/pgsql-Cd9Vguu1.js +0 -1
  827. package/web-ui/build/static/php-BkEHU_F0.js +0 -1
  828. package/web-ui/build/static/php-DgxitXwB.js +0 -1
  829. package/web-ui/build/static/php-extras-DZ4cqJZr.js +0 -1
  830. package/web-ui/build/static/php-template-CmDsJimC.js +0 -1
  831. package/web-ui/build/static/phpdoc-BuzuEwXH.js +0 -1
  832. package/web-ui/build/static/plaintext-B9rbdHym.js +0 -1
  833. package/web-ui/build/static/plsql-BsUyjIMQ.js +0 -1
  834. package/web-ui/build/static/pony-DByqIe1z.js +0 -1
  835. package/web-ui/build/static/powerquery-1VSf_dLA.js +0 -1
  836. package/web-ui/build/static/powershell-CBYqkmKw.js +0 -1
  837. package/web-ui/build/static/powershell-TsgmSwr2.js +0 -1
  838. package/web-ui/build/static/processing-C7SmsDmp.js +0 -1
  839. package/web-ui/build/static/processing-DdvVbwBS.js +0 -1
  840. package/web-ui/build/static/profile-CrLgDepu.js +0 -1
  841. package/web-ui/build/static/prolog-1ezqlvDI.js +0 -1
  842. package/web-ui/build/static/prolog-BBYyok9G.js +0 -1
  843. package/web-ui/build/static/promql-CWatQOpO.js +0 -1
  844. package/web-ui/build/static/properties-BJQxP8JR.js +0 -1
  845. package/web-ui/build/static/properties-CfR17w8n.js +0 -1
  846. package/web-ui/build/static/protobuf-Cfo3A4gN.js +0 -1
  847. package/web-ui/build/static/protobuf-DjV26D7V.js +0 -1
  848. package/web-ui/build/static/psl-DHNAOSYZ.js +0 -1
  849. package/web-ui/build/static/pug-DnizfuFH.js +0 -1
  850. package/web-ui/build/static/puppet-BCcVNhLH.js +0 -1
  851. package/web-ui/build/static/puppet-BmSRwm0u.js +0 -1
  852. package/web-ui/build/static/pure-l1UGfReS.js +0 -1
  853. package/web-ui/build/static/purebasic-Cm1PR5lC.js +0 -1
  854. package/web-ui/build/static/purebasic-Dxq0YRkO.js +0 -1
  855. package/web-ui/build/static/purescript-CpKroRLn.js +0 -1
  856. package/web-ui/build/static/python-C0PwNTef.js +0 -1
  857. package/web-ui/build/static/python-Cr-3O1IE.js +0 -1
  858. package/web-ui/build/static/python-repl-B1P7p6JA.js +0 -1
  859. package/web-ui/build/static/q-CL79K_i7.js +0 -1
  860. package/web-ui/build/static/q-DLSzzmR3.js +0 -1
  861. package/web-ui/build/static/qml-BeN40LEp.js +0 -1
  862. package/web-ui/build/static/qml-DIjR5p31.js +0 -1
  863. package/web-ui/build/static/qore-CrnBG9xB.js +0 -1
  864. package/web-ui/build/static/qsharp-B8sPnj52.js +0 -1
  865. package/web-ui/build/static/r-UubkOviq.js +0 -1
  866. package/web-ui/build/static/r-lT3ysYih.js +0 -1
  867. package/web-ui/build/static/racket-Czw_1lqD.js +0 -1
  868. package/web-ui/build/static/reason-D-_rWPty.js +0 -1
  869. package/web-ui/build/static/reasonml-BZkHaGWN.js +0 -1
  870. package/web-ui/build/static/regex-BjeMZDQs.js +0 -1
  871. package/web-ui/build/static/rego-OYluSFFo.js +0 -1
  872. package/web-ui/build/static/renpy-D1X5nAoT.js +0 -1
  873. package/web-ui/build/static/rest-DnlQgDnx.js +0 -1
  874. package/web-ui/build/static/rib-DtDxwFfu.js +0 -1
  875. package/web-ui/build/static/rip-D8vOYwVd.js +0 -1
  876. package/web-ui/build/static/roboconf-DtEUhHis.js +0 -1
  877. package/web-ui/build/static/roboconf-w-iqpst4.js +0 -1
  878. package/web-ui/build/static/robotframework-M9UnAH02.js +0 -1
  879. package/web-ui/build/static/routeros-CX0gciU5.js +0 -1
  880. package/web-ui/build/static/rsl-CZOvPQbk.js +0 -1
  881. package/web-ui/build/static/ruby-BEwdhTtL.js +0 -1
  882. package/web-ui/build/static/ruby-dlRf3rgu.js +0 -1
  883. package/web-ui/build/static/ruleslanguage-CKX7tlpI.js +0 -1
  884. package/web-ui/build/static/rust-7xat0n1g.js +0 -1
  885. package/web-ui/build/static/rust-DCpdcw_7.js +0 -1
  886. package/web-ui/build/static/sas-B9K83LkK.js +0 -1
  887. package/web-ui/build/static/sas-ijKPjRom.js +0 -1
  888. package/web-ui/build/static/sass-ByZaOmQh.js +0 -1
  889. package/web-ui/build/static/scala-B6tUDsIS.js +0 -1
  890. package/web-ui/build/static/scala-BZ4NRThT.js +0 -1
  891. package/web-ui/build/static/scheme-BmDQeIVd.js +0 -1
  892. package/web-ui/build/static/scheme-DIrkVtyr.js +0 -1
  893. package/web-ui/build/static/scilab-BUTG2a1V.js +0 -1
  894. package/web-ui/build/static/scss-CC2Rr7DZ.js +0 -1
  895. package/web-ui/build/static/scss-CG0LtoLt.js +0 -1
  896. package/web-ui/build/static/shell-DEPni1su.js +0 -1
  897. package/web-ui/build/static/shell-session-DxlJbQBl.js +0 -1
  898. package/web-ui/build/static/smali-C5QEAhGK.js +0 -1
  899. package/web-ui/build/static/smali-RgOjDrpG.js +0 -1
  900. package/web-ui/build/static/smalltalk-CCLKnQXy.js +0 -1
  901. package/web-ui/build/static/smalltalk-D2pTtTF6.js +0 -1
  902. package/web-ui/build/static/smarty-D5pb-235.js +0 -1
  903. package/web-ui/build/static/sml-CtXZ7rhO.js +0 -1
  904. package/web-ui/build/static/sml-DgsaUoao.js +0 -1
  905. package/web-ui/build/static/solidity-DLDSX1RV.js +0 -1
  906. package/web-ui/build/static/solution-file-BaDc2_E-.js +0 -1
  907. package/web-ui/build/static/soy-x9k9lQq1.js +0 -1
  908. package/web-ui/build/static/sparql-CEyFkY2d.js +0 -1
  909. package/web-ui/build/static/splunk-spl-Cnoeez_o.js +0 -1
  910. package/web-ui/build/static/sqf-BiFuoaL6.js +0 -1
  911. package/web-ui/build/static/sqf-IC3wZMuh.js +0 -1
  912. package/web-ui/build/static/sql-B0kmmGOU.js +0 -1
  913. package/web-ui/build/static/sql-CUJr2cg-.js +0 -1
  914. package/web-ui/build/static/sql_more-CWl75_kq.js +0 -1
  915. package/web-ui/build/static/squirrel-CcEHntJJ.js +0 -1
  916. package/web-ui/build/static/stan-5fBmEp2c.js +0 -1
  917. package/web-ui/build/static/stan-CAB7l4xW.js +0 -1
  918. package/web-ui/build/static/stata-Cg3Bl6d7.js +0 -1
  919. package/web-ui/build/static/step21-CZGJgHPf.js +0 -1
  920. package/web-ui/build/static/stylus-BO533InK.js +0 -1
  921. package/web-ui/build/static/stylus-DNWkkgmm.js +0 -1
  922. package/web-ui/build/static/subunit-BFopBokb.js +0 -1
  923. package/web-ui/build/static/swift-CalO-wab.js +0 -1
  924. package/web-ui/build/static/swift-mePvo3P4.js +0 -1
  925. package/web-ui/build/static/systemd-bKGRJ9Ha.js +0 -1
  926. package/web-ui/build/static/t4-cs-D7xxs1lK.js +0 -1
  927. package/web-ui/build/static/t4-templating-_11pVeD-.js +0 -1
  928. package/web-ui/build/static/t4-vb-CprOaKdB.js +0 -1
  929. package/web-ui/build/static/taggerscript-CEpPw-UD.js +0 -1
  930. package/web-ui/build/static/tap-CFFYSmjs.js +0 -1
  931. package/web-ui/build/static/tap-Dy3jliYv.js +0 -1
  932. package/web-ui/build/static/tcl-Bw3AVuiY.js +0 -1
  933. package/web-ui/build/static/tcl-CD50d_-j.js +0 -1
  934. package/web-ui/build/static/textile-CSeSEGjy.js +0 -1
  935. package/web-ui/build/static/thrift-00VB402i.js +0 -1
  936. package/web-ui/build/static/toml-DuFNkxHe.js +0 -1
  937. package/web-ui/build/static/tp-4CeaWqyI.js +0 -1
  938. package/web-ui/build/static/tremor-BnerOgTY.js +0 -1
  939. package/web-ui/build/static/tsx-XiNhF1ao.js +0 -1
  940. package/web-ui/build/static/tt2-CM6FV9KO.js +0 -1
  941. package/web-ui/build/static/turtle-JxpiTJEQ.js +0 -1
  942. package/web-ui/build/static/twig-C16bJf43.js +0 -1
  943. package/web-ui/build/static/twig-DQ-0wCvQ.js +0 -1
  944. package/web-ui/build/static/typescript-ILNg_Uvt.js +0 -1
  945. package/web-ui/build/static/typescript-chBpZOex.js +0 -1
  946. package/web-ui/build/static/typoscript-D2-lUjQX.js +0 -1
  947. package/web-ui/build/static/unrealscript-CwOA8REe.js +0 -1
  948. package/web-ui/build/static/uorazor-Dh1SAWKw.js +0 -1
  949. package/web-ui/build/static/uri-BF1wAQOC.js +0 -1
  950. package/web-ui/build/static/v-DUq5Mxzu.js +0 -1
  951. package/web-ui/build/static/vala-BYNy6zW2.js +0 -1
  952. package/web-ui/build/static/vala-CqGfs9Kv.js +0 -1
  953. package/web-ui/build/static/vbnet-BxH9jvRi.js +0 -1
  954. package/web-ui/build/static/vbnet-CJxJGhMO.js +0 -1
  955. package/web-ui/build/static/vbscript-OQ6kMcDV.js +0 -1
  956. package/web-ui/build/static/vbscript-html-CZ-QJ4ch.js +0 -1
  957. package/web-ui/build/static/velocity-B59YHwoP.js +0 -1
  958. package/web-ui/build/static/verilog--uW8iUzt.js +0 -1
  959. package/web-ui/build/static/verilog-DAQz3Gcl.js +0 -1
  960. package/web-ui/build/static/vhdl-5FrGi5Wx.js +0 -1
  961. package/web-ui/build/static/vhdl-C25AEZ8g.js +0 -1
  962. package/web-ui/build/static/vim-CW6uewUP.js +0 -1
  963. package/web-ui/build/static/vim-f3zGsJk1.js +0 -1
  964. package/web-ui/build/static/visual-basic-CoOTQEUn.js +0 -1
  965. package/web-ui/build/static/warpscript-DGouvP9I.js +0 -1
  966. package/web-ui/build/static/wasm-BZeW0TNm.js +0 -1
  967. package/web-ui/build/static/web-idl-Bw1mV_A4.js +0 -1
  968. package/web-ui/build/static/wiki-CZG2B_w1.js +0 -1
  969. package/web-ui/build/static/wolfram-CiMIUpaO.js +0 -1
  970. package/web-ui/build/static/wren-Bh9Sv_02.js +0 -1
  971. package/web-ui/build/static/x86asm-BhoPGTpG.js +0 -1
  972. package/web-ui/build/static/xeora-C5CM7V9L.js +0 -1
  973. package/web-ui/build/static/xl-WCHINiXA.js +0 -1
  974. package/web-ui/build/static/xml-DPAIpwAO.js +0 -1
  975. package/web-ui/build/static/xml-doc-CJxlhMe0.js +0 -1
  976. package/web-ui/build/static/xojo-BW0Z0CzB.js +0 -1
  977. package/web-ui/build/static/xquery-CwiBIiph.js +0 -1
  978. package/web-ui/build/static/xquery-De9QIea7.js +0 -1
  979. package/web-ui/build/static/yaml-CKzSgstB.js +0 -1
  980. package/web-ui/build/static/yaml-DIHBhXM_.js +0 -1
  981. package/web-ui/build/static/yang-Cn0PKttf.js +0 -1
  982. package/web-ui/build/static/zephir-CKVBh8TU.js +0 -1
  983. package/web-ui/build/static/zig-CetEB4NE.js +0 -1
@@ -421,6 +421,38 @@ SECURITY:
421
421
 
422
422
  const { projectDir, agentId, directoryAccess } = context;
423
423
 
424
+ // Per-agent config overrides (agent.toolConfig.filesystem) merged
425
+ // with this tool's global defaults. Applied per-action at the top of
426
+ // the execute loop — every action that touches a file path is
427
+ // gated against the effective extension policy, and write/append
428
+ // payloads are size-gated against the effective maxFileSize.
429
+ const effectiveFs = this.getEffectiveConfig(context, {
430
+ allowedExtensions: this.allowedExtensions,
431
+ blockedExtensions: this.blockedExtensions,
432
+ maxFileSize: this.maxFileSize,
433
+ });
434
+ const effectiveBlockedExt = Array.isArray(effectiveFs.blockedExtensions)
435
+ ? effectiveFs.blockedExtensions.map(e => String(e).toLowerCase())
436
+ : [];
437
+ const effectiveAllowedExt = (Array.isArray(effectiveFs.allowedExtensions) && effectiveFs.allowedExtensions.length > 0)
438
+ ? effectiveFs.allowedExtensions.map(e => String(e).toLowerCase())
439
+ : null;
440
+ const effectiveMaxFileSize = (typeof effectiveFs.maxFileSize === 'number' && effectiveFs.maxFileSize > 0)
441
+ ? effectiveFs.maxFileSize
442
+ : this.maxFileSize;
443
+
444
+ const _checkExt = (filePath) => {
445
+ if (!filePath) return null;
446
+ const ext = (filePath.match(/\.[^./\\]+$/)?.[0] || '').toLowerCase();
447
+ if (effectiveBlockedExt.includes(ext)) {
448
+ return `File extension ${ext || '(none)'} is blocked by agent policy: ${filePath}`;
449
+ }
450
+ if (effectiveAllowedExt && !effectiveAllowedExt.includes(ext)) {
451
+ return `File extension ${ext || '(none)'} is not in the agent's allowed list: ${filePath}`;
452
+ }
453
+ return null;
454
+ };
455
+
424
456
  // Get directory access configuration from agent or create default
425
457
  const accessConfig = directoryAccess ||
426
458
  this.directoryAccessManager.createDirectoryAccess({
@@ -446,13 +478,47 @@ SECURITY:
446
478
 
447
479
  for (const action of actions) {
448
480
  try {
481
+ // Per-agent extension policy gate — runs BEFORE the action so
482
+ // disallowed file types never reach the filesystem layer. Terminal
483
+ // and web tools use the same short-circuit pattern.
484
+ const pathsToCheck = [action.filePath, action.outputPath].filter(Boolean);
485
+ for (const p of pathsToCheck) {
486
+ const err = _checkExt(p);
487
+ if (err) {
488
+ results.push({ success: false, action: action.type, error: err });
489
+ throw new Error('__skip');
490
+ }
491
+ }
492
+ // Per-agent maxFileSize gate for write/append — fires ONLY when
493
+ // the agent explicitly overrides maxFileSize via toolConfig. When
494
+ // the agent has no override, the existing `this.maxFileSize`
495
+ // check downstream handles it with its original error message,
496
+ // preserving backward compatibility. Read-side and stat-based
497
+ // size checks still use `this.maxFileSize` at deeper call sites.
498
+ const perAgentMaxFileSize = (typeof context?.toolConfig?.maxFileSize === 'number' && context.toolConfig.maxFileSize > 0)
499
+ ? context.toolConfig.maxFileSize
500
+ : null;
501
+ if (perAgentMaxFileSize != null
502
+ && (action.type === 'write' || action.type === 'append')
503
+ && typeof action.content === 'string') {
504
+ const payloadBytes = Buffer.byteLength(action.content, 'utf8');
505
+ if (payloadBytes > perAgentMaxFileSize) {
506
+ results.push({
507
+ success: false,
508
+ action: action.type,
509
+ error: `Content too large: ${payloadBytes} bytes exceeds per-agent maxFileSize (${perAgentMaxFileSize})`,
510
+ });
511
+ throw new Error('__skip');
512
+ }
513
+ }
514
+
449
515
  let result;
450
-
516
+
451
517
  switch (action.type) {
452
518
  case 'read':
453
519
  result = await this.readFile(action.filePath, accessConfig, action.encoding);
454
520
  break;
455
-
521
+
456
522
  case 'write':
457
523
  result = await this.writeFile(action.outputPath, action.content, accessConfig, {
458
524
  encoding: action.encoding,
@@ -501,6 +567,14 @@ SECURITY:
501
567
  this.addToHistory(action, result, context.agentId);
502
568
 
503
569
  } catch (error) {
570
+ // Per-agent policy gate above uses "__skip" to signal that it
571
+ // already pushed a useful error onto results — don't double-log
572
+ // or double-push.
573
+ if (error.message === '__skip') {
574
+ this.addToHistory(action, results[results.length - 1], context.agentId);
575
+ continue;
576
+ }
577
+
504
578
  // Log detailed error for debugging
505
579
  console.error(`[FileSystemTool] Action '${action.type}' failed:`, {
506
580
  action: action.type,
@@ -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);
@@ -675,6 +675,10 @@ BEST PRACTICES:
675
675
  // read-only window selectors (sub-message granularity)
676
676
  lineFrom: params.lineFrom, lineTo: params.lineTo,
677
677
  contentFrom: params.contentFrom, contentTo: params.contentTo,
678
+ // Opt-in reasoning-content inclusion (default off — chain-of-thought
679
+ // text can be very long; agents ask for it only when they actually
680
+ // want to inspect what the model was thinking).
681
+ includeReasoning: !!params.includeReasoning,
678
682
  };
679
683
 
680
684
  let result;
@@ -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 {
@@ -423,9 +423,49 @@ After each invocation you will get a tool-result embedded in the following user
423
423
  async execute(params, context) {
424
424
  const { actions, timeout: customTimeout, async: forceAsync } = params;
425
425
  const { agentId, projectDir, directoryAccess } = context;
426
-
426
+
427
+ // Per-agent terminal config overrides (agent.toolConfig.terminal).
428
+ // Falls back to this.config-level lists from constructor (global
429
+ // defaults). If neither is set, allowedCommands is null (=any) and
430
+ // blockedCommands is the class-default set from the constructor.
431
+ const effectiveConfig = this.getEffectiveConfig(context, {
432
+ allowedCommands: this.allowedCommands,
433
+ blockedCommands: this.blockedCommands,
434
+ maxBackgroundCommandsPerAgent: this.MAX_BACKGROUND_COMMANDS_PER_AGENT,
435
+ });
436
+ const allowedOverride = Array.isArray(effectiveConfig.allowedCommands)
437
+ ? effectiveConfig.allowedCommands
438
+ : this.allowedCommands;
439
+ const blockedOverride = Array.isArray(effectiveConfig.blockedCommands)
440
+ ? effectiveConfig.blockedCommands
441
+ : this.blockedCommands;
442
+
443
+ // Re-validate each run-command action against the per-agent rules.
444
+ // customValidateParameters() runs BEFORE execute and cannot see the
445
+ // context, so it only applies global rules. This pass catches
446
+ // commands that the per-agent overrides forbid.
447
+ for (const action of actions) {
448
+ if (action.type === 'run-command' && typeof action.command === 'string') {
449
+ if (this._matchesAny(action.command, blockedOverride)) {
450
+ return {
451
+ success: false,
452
+ error: `Command is blocked by agent policy: ${action.command}`,
453
+ actions: [],
454
+ };
455
+ }
456
+ if (allowedOverride && allowedOverride.length > 0
457
+ && !this._matchesAny(action.command, allowedOverride, { prefix: true })) {
458
+ return {
459
+ success: false,
460
+ error: `Command is not in the agent's allowed list: ${action.command}`,
461
+ actions: [],
462
+ };
463
+ }
464
+ }
465
+ }
466
+
427
467
  // Get directory access configuration from agent or create default
428
- const accessConfig = directoryAccess ||
468
+ const accessConfig = directoryAccess ||
429
469
  this.directoryAccessManager.createDirectoryAccess({
430
470
  workingDirectory: projectDir || process.cwd(),
431
471
  writeEnabledDirectories: [projectDir || process.cwd()],
@@ -1079,6 +1119,26 @@ After each invocation you will get a tool-result embedded in the following user
1079
1119
  }
1080
1120
  }
1081
1121
 
1122
+ /**
1123
+ * Test if a command matches ANY pattern in a list. Patterns match if:
1124
+ * - exact equality (case-insensitive), OR
1125
+ * - command starts with `${pattern} ` (the base command matches).
1126
+ *
1127
+ * Shared helper used by the per-agent config check in execute(). The
1128
+ * class-level isBlockedCommand/isAllowedCommand still exist for the
1129
+ * pre-execute validator pass.
1130
+ * @private
1131
+ */
1132
+ _matchesAny(command, patterns, _opts = {}) {
1133
+ if (!Array.isArray(patterns) || patterns.length === 0) return false;
1134
+ const cmd = (command || '').toLowerCase().trim();
1135
+ const base = cmd.split(' ')[0];
1136
+ return patterns.some((p) => {
1137
+ const pat = (p || '').toLowerCase();
1138
+ return pat === cmd || pat === base || cmd.startsWith(pat + ' ');
1139
+ });
1140
+ }
1141
+
1082
1142
  /**
1083
1143
  * Check if command is blocked for security
1084
1144
  * @private