onbuzz 4.5.0 → 4.6.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 (989) hide show
  1. package/bin/cli.js +38 -18
  2. package/package.json +2 -1
  3. package/scripts/e2e-flow-live.js +598 -0
  4. package/src/__tests__/resolvePreferredModel.test.js +15 -1
  5. package/src/core/__test-utils__/flowJudge.js +198 -0
  6. package/src/core/__tests__/flowCheckpointStore.test.js +140 -0
  7. package/src/core/__tests__/flowEndToEnd.test.js +565 -0
  8. package/src/core/__tests__/flowExecutor.test.js +950 -0
  9. package/src/core/__tests__/flowFieldMapping.test.js +189 -0
  10. package/src/core/__tests__/flowJudge.test.js +140 -0
  11. package/src/core/__tests__/flowLint.test.js +119 -0
  12. package/src/core/__tests__/flowLintClientMirror.test.js +98 -0
  13. package/src/core/__tests__/flowMigration.test.js +160 -0
  14. package/src/core/__tests__/flowRetry.test.js +145 -0
  15. package/src/core/__tests__/flowSavePayload.test.js +169 -0
  16. package/src/core/__tests__/flowSchema.test.js +438 -0
  17. package/src/core/__tests__/flowTemplates.test.js +183 -0
  18. package/src/core/__tests__/flowTypes.test.js +147 -0
  19. package/src/core/__tests__/flowVersionStore.test.js +123 -0
  20. package/src/core/__tests__/orchestrator.test.js +38 -0
  21. package/src/core/__tests__/stateManager.test.js +281 -0
  22. package/src/core/agentScheduler.js +37 -6
  23. package/src/core/flowCheckpointStore.js +146 -0
  24. package/src/core/flowExecutor.js +669 -87
  25. package/src/core/flowFieldMapping.js +138 -0
  26. package/src/core/flowLint.js +102 -0
  27. package/src/core/flowMigration.js +88 -0
  28. package/src/core/flowRetry.js +103 -0
  29. package/src/core/flowSchema.js +297 -0
  30. package/src/core/flowTypes.js +81 -0
  31. package/src/core/flowVersionStore.js +122 -0
  32. package/src/core/messageProcessor.js +5 -1
  33. package/src/core/stateManager.js +249 -15
  34. package/src/index.js +8 -0
  35. package/src/interfaces/webServer.js +271 -4
  36. package/src/modules/widget/galleryStore.js +27 -2
  37. package/src/services/__tests__/apiKeyManager.test.js +163 -0
  38. package/src/services/__tests__/flowContextService.test.js +391 -0
  39. package/src/services/apiKeyManager.js +54 -3
  40. package/src/services/flowContextService.js +401 -4
  41. package/src/tools/__tests__/imageFormat.test.js +208 -0
  42. package/src/tools/__tests__/jobDoneTool.test.js +285 -0
  43. package/src/tools/imageFormat.js +249 -0
  44. package/src/tools/imageTool.js +107 -18
  45. package/src/tools/jobDoneTool.js +111 -3
  46. package/src/tools/videoTool.js +94 -60
  47. package/src/tools/webTool.js +9 -0
  48. package/src/utilities/__tests__/apiKeyPlaceholders.test.js +120 -0
  49. package/src/utilities/__tests__/brand.test.js +115 -0
  50. package/src/utilities/apiKeyPlaceholders.js +68 -0
  51. package/src/utilities/brand.js +93 -0
  52. package/src/utilities/userDataDir.js +5 -0
  53. package/web-ui/build/index.html +2 -2
  54. package/web-ui/build/static/1c-CvuQ3hv-.js +1 -0
  55. package/web-ui/build/static/abap-BLdv0Jje.js +1 -0
  56. package/web-ui/build/static/abnf-CGGg8KtC.js +1 -0
  57. package/web-ui/build/static/abnf-DRXF8AHh.js +1 -0
  58. package/web-ui/build/static/accesslog-C0v06age.js +1 -0
  59. package/web-ui/build/static/actionscript-5uhk1qo4.js +1 -0
  60. package/web-ui/build/static/actionscript-eFh_rL7l.js +1 -0
  61. package/web-ui/build/static/ada-DX064lsk.js +1 -0
  62. package/web-ui/build/static/ada-DtDpZJA8.js +1 -0
  63. package/web-ui/build/static/agda-DPnmQC2V.js +1 -0
  64. package/web-ui/build/static/al-BJnZv7Mq.js +1 -0
  65. package/web-ui/build/static/angelscript-BzX4egqM.js +1 -0
  66. package/web-ui/build/static/antlr4-CpvLBdqN.js +1 -0
  67. package/web-ui/build/static/apache-CeMpLZgQ.js +1 -0
  68. package/web-ui/build/static/apacheconf-DuxpNgGg.js +1 -0
  69. package/web-ui/build/static/apex-BnvL-Zqw.js +1 -0
  70. package/web-ui/build/static/apl-Cwp1WC58.js +1 -0
  71. package/web-ui/build/static/applescript-Drjf4gZ_.js +1 -0
  72. package/web-ui/build/static/applescript-OCRtzdLy.js +1 -0
  73. package/web-ui/build/static/aql-BT92x5XB.js +1 -0
  74. package/web-ui/build/static/arcade-BS9r1rKb.js +1 -0
  75. package/web-ui/build/static/arduino-Dx4b0RsU.js +1 -0
  76. package/web-ui/build/static/arduino-MC82bxgK.js +1 -0
  77. package/web-ui/build/static/arff-BPbJPmCK.js +1 -0
  78. package/web-ui/build/static/armasm-Ae0OYiNN.js +1 -0
  79. package/web-ui/build/static/asciidoc-BFCjTY8x.js +1 -0
  80. package/web-ui/build/static/asciidoc-Cum1UNn8.js +1 -0
  81. package/web-ui/build/static/asm6502-DRrCRZ3g.js +1 -0
  82. package/web-ui/build/static/asmatmel-QweP0nrX.js +1 -0
  83. package/web-ui/build/static/aspectj-GSWlVl13.js +1 -0
  84. package/web-ui/build/static/aspnet-gFBjg3Gc.js +1 -0
  85. package/web-ui/build/static/autohotkey-BKW8CgdS.js +1 -0
  86. package/web-ui/build/static/autohotkey-PxYn0v1n.js +1 -0
  87. package/web-ui/build/static/autoit-Dm1-Ww37.js +1 -0
  88. package/web-ui/build/static/autoit-ttEVAAKG.js +1 -0
  89. package/web-ui/build/static/avisynth-B7Wkp41N.js +1 -0
  90. package/web-ui/build/static/avrasm-CUPF81zm.js +1 -0
  91. package/web-ui/build/static/avro-idl-DHWmsw82.js +1 -0
  92. package/web-ui/build/static/awk-CjJ3RSZI.js +1 -0
  93. package/web-ui/build/static/axapta-C1qEYhtS.js +1 -0
  94. package/web-ui/build/static/bash-BGEpCDRi.js +1 -0
  95. package/web-ui/build/static/bash-nKHqg4vr.js +1 -0
  96. package/web-ui/build/static/basic-BoEGbohL.js +1 -0
  97. package/web-ui/build/static/basic-LeZDGhzq.js +1 -0
  98. package/web-ui/build/static/batch-AgpF9rt8.js +1 -0
  99. package/web-ui/build/static/bbcode-qAuG7NMV.js +1 -0
  100. package/web-ui/build/static/bicep-BjdiK558.js +1 -0
  101. package/web-ui/build/static/birb-DAe1WhT3.js +1 -0
  102. package/web-ui/build/static/bison-BanDUZpy.js +1 -0
  103. package/web-ui/build/static/bnf-DlBe3_6s.js +1 -0
  104. package/web-ui/build/static/bnf-QgoO3Q8o.js +1 -0
  105. package/web-ui/build/static/brainfuck-B1DXmfDc.js +1 -0
  106. package/web-ui/build/static/brainfuck-B_JhB4QU.js +1 -0
  107. package/web-ui/build/static/brightscript-C0POlK1a.js +1 -0
  108. package/web-ui/build/static/bro-CjGWwSC2.js +1 -0
  109. package/web-ui/build/static/bsl-DXsNn0E7.js +1 -0
  110. package/web-ui/build/static/c-D-Xouzk3.js +1 -0
  111. package/web-ui/build/static/c-Df8JpOdZ.js +1 -0
  112. package/web-ui/build/static/c-like-BQySGMeF.js +1 -0
  113. package/web-ui/build/static/cal-DLefuKn4.js +1 -0
  114. package/web-ui/build/static/capnproto-DuI4CHAK.js +1 -0
  115. package/web-ui/build/static/ceylon-DyUD9r5X.js +1 -0
  116. package/web-ui/build/static/cfscript-B71LgEx4.js +1 -0
  117. package/web-ui/build/static/chaiscript-DUx8exmo.js +1 -0
  118. package/web-ui/build/static/cil-BkH647hL.js +1 -0
  119. package/web-ui/build/static/clean-4G2AsMGw.js +1 -0
  120. package/web-ui/build/static/clojure-C41DUPjJ.js +1 -0
  121. package/web-ui/build/static/clojure-RzWG1SWB.js +1 -0
  122. package/web-ui/build/static/clojure-repl-C12peSNj.js +1 -0
  123. package/web-ui/build/static/cmake-D9dyf1Ef.js +1 -0
  124. package/web-ui/build/static/cmake-X6aOgq7A.js +1 -0
  125. package/web-ui/build/static/cobol-DQBujvW6.js +1 -0
  126. package/web-ui/build/static/coffeescript-3uuDLR0C.js +1 -0
  127. package/web-ui/build/static/coffeescript-BesW_-0N.js +1 -0
  128. package/web-ui/build/static/concurnas-DUqxEcDq.js +1 -0
  129. package/web-ui/build/static/coq-BNw0ZmzS.js +1 -0
  130. package/web-ui/build/static/coq-J6mf-n4i.js +1 -0
  131. package/web-ui/build/static/cos-B-p2VbRC.js +1 -0
  132. package/web-ui/build/static/cpp-B91xny9o.js +1 -0
  133. package/web-ui/build/static/cpp-C-qfcmAQ.js +1 -0
  134. package/web-ui/build/static/crmsh-CXJSYh9n.js +1 -0
  135. package/web-ui/build/static/crystal-BZJ_gkDx.js +1 -0
  136. package/web-ui/build/static/crystal-D7rBvt2Y.js +1 -0
  137. package/web-ui/build/static/csharp-CHWbNjwN.js +1 -0
  138. package/web-ui/build/static/csharp-DHH7lbyr.js +1 -0
  139. package/web-ui/build/static/cshtml-6XKl5N6w.js +1 -0
  140. package/web-ui/build/static/csp-BwQp4uKS.js +1 -0
  141. package/web-ui/build/static/csp-LxTXhb7W.js +1 -0
  142. package/web-ui/build/static/css-JviRe6l1.js +1 -0
  143. package/web-ui/build/static/css-extras-DdIyhyWh.js +1 -0
  144. package/web-ui/build/static/csv-BhyLVYKF.js +1 -0
  145. package/web-ui/build/static/cypher-45QLqKfb.js +1 -0
  146. package/web-ui/build/static/d-BQuCFdtT.js +1 -0
  147. package/web-ui/build/static/d-rDpztdwo.js +1 -0
  148. package/web-ui/build/static/dart-B3HdKwvI.js +1 -0
  149. package/web-ui/build/static/dart-CxIvlNfF.js +1 -0
  150. package/web-ui/build/static/dataweave-CMS5SC_F.js +1 -0
  151. package/web-ui/build/static/dax-C_neqUB4.js +1 -0
  152. package/web-ui/build/static/delphi-D86BXUtC.js +1 -0
  153. package/web-ui/build/static/dhall-BGV0CTjz.js +1 -0
  154. package/web-ui/build/static/diff-Br5L84xu.js +1 -0
  155. package/web-ui/build/static/diff-C8dJOj7p.js +1 -0
  156. package/web-ui/build/static/django-CRpfLgb_.js +1 -0
  157. package/web-ui/build/static/django-Cr0k0BHt.js +1 -0
  158. package/web-ui/build/static/dns-CvhVGt9J.js +1 -0
  159. package/web-ui/build/static/dns-zone-file--waGszJ5.js +1 -0
  160. package/web-ui/build/static/docker-Bp-jYj4d.js +1 -0
  161. package/web-ui/build/static/dockerfile-B9PF5D-H.js +1 -0
  162. package/web-ui/build/static/dos-CGjRa73t.js +1 -0
  163. package/web-ui/build/static/dot---3xJv0W.js +1 -0
  164. package/web-ui/build/static/dsconfig-ChUbMzIk.js +1 -0
  165. package/web-ui/build/static/dts-DzVrXhdk.js +1 -0
  166. package/web-ui/build/static/dust-BuyYJzfS.js +1 -0
  167. package/web-ui/build/static/ebnf-B4Jhny4j.js +1 -0
  168. package/web-ui/build/static/ebnf-wTpKeELK.js +1 -0
  169. package/web-ui/build/static/editorconfig-DijMMyBE.js +1 -0
  170. package/web-ui/build/static/eiffel-gSk8UUfh.js +1 -0
  171. package/web-ui/build/static/ejs-U-J4wHaR.js +1 -0
  172. package/web-ui/build/static/elixir-CLgHOCRk.js +1 -0
  173. package/web-ui/build/static/elixir-KhfnyoV6.js +1 -0
  174. package/web-ui/build/static/elm-B0g83jwv.js +1 -0
  175. package/web-ui/build/static/elm-Bl8qDmwz.js +1 -0
  176. package/web-ui/build/static/erb-CwkagsxA.js +1 -0
  177. package/web-ui/build/static/erb-DXfF2Urb.js +1 -0
  178. package/web-ui/build/static/erlang-BsONy4Br.js +1 -0
  179. package/web-ui/build/static/erlang-C44ddtgw.js +1 -0
  180. package/web-ui/build/static/erlang-repl-DhirJ_Ji.js +1 -0
  181. package/web-ui/build/static/etlua-C71HyvJj.js +1 -0
  182. package/web-ui/build/static/excel-B_RD_Nc6.js +1 -0
  183. package/web-ui/build/static/excel-formula-xRVcfp1T.js +1 -0
  184. package/web-ui/build/static/factor-CftUx68l.js +1 -0
  185. package/web-ui/build/static/false-DqRtSZRC.js +1 -0
  186. package/web-ui/build/static/firestore-security-rules-BCG_0nJP.js +1 -0
  187. package/web-ui/build/static/fix-CnRMAIWg.js +1 -0
  188. package/web-ui/build/static/flix-DLAgo_-e.js +1 -0
  189. package/web-ui/build/static/flow-w5YSIX1I.js +1 -0
  190. package/web-ui/build/static/fortran-CH5byJ0j.js +1 -0
  191. package/web-ui/build/static/fortran-DK-jnXQF.js +1 -0
  192. package/web-ui/build/static/fsharp-Cnfw9xB2.js +1 -0
  193. package/web-ui/build/static/fsharp-hebdfC6F.js +1 -0
  194. package/web-ui/build/static/ftl-DSSTp35t.js +1 -0
  195. package/web-ui/build/static/gams-C3akjfKZ.js +1 -0
  196. package/web-ui/build/static/gap-Dve6kEeL.js +1 -0
  197. package/web-ui/build/static/gauss-BmUqjv1m.js +1 -0
  198. package/web-ui/build/static/gcode-CjPpcuxm.js +1 -0
  199. package/web-ui/build/static/gcode-DdF0Sf0K.js +1 -0
  200. package/web-ui/build/static/gdscript-uyE_Q4Bz.js +1 -0
  201. package/web-ui/build/static/gedcom-9_5CrYud.js +1 -0
  202. package/web-ui/build/static/gherkin-0qL8AiDA.js +1 -0
  203. package/web-ui/build/static/gherkin-CBXpoWw3.js +1 -0
  204. package/web-ui/build/static/git-D6Y51k33.js +1 -0
  205. package/web-ui/build/static/glsl-DnD7skof.js +1 -0
  206. package/web-ui/build/static/glsl-aij7eTLw.js +1 -0
  207. package/web-ui/build/static/gml-3zbjVRHR.js +1 -0
  208. package/web-ui/build/static/gml-BOViyHVy.js +1 -0
  209. package/web-ui/build/static/gn-lYZFOgaG.js +1 -0
  210. package/web-ui/build/static/go-D3NQLBKz.js +1 -0
  211. package/web-ui/build/static/go-_v8tkYQe.js +1 -0
  212. package/web-ui/build/static/go-module-C6c3_rbX.js +1 -0
  213. package/web-ui/build/static/golo-BOIzwgKG.js +1 -0
  214. package/web-ui/build/static/gradle-DdejLgT6.js +1 -0
  215. package/web-ui/build/static/graphql-BWowSWlo.js +1 -0
  216. package/web-ui/build/static/groovy-DE_kIGjj.js +1 -0
  217. package/web-ui/build/static/groovy-DatEqK3Y.js +1 -0
  218. package/web-ui/build/static/haml-CpEpgDyf.js +1 -0
  219. package/web-ui/build/static/haml-DbPIKAsr.js +1 -0
  220. package/web-ui/build/static/handlebars-BcvOygMh.js +1 -0
  221. package/web-ui/build/static/handlebars-CM_40QlT.js +1 -0
  222. package/web-ui/build/static/haskell-DVgDTyj3.js +1 -0
  223. package/web-ui/build/static/haskell-Dm2oiqNu.js +1 -0
  224. package/web-ui/build/static/haxe--0QfWvD_.js +1 -0
  225. package/web-ui/build/static/haxe-DClHSH5I.js +1 -0
  226. package/web-ui/build/static/hcl-BaxNlNAk.js +1 -0
  227. package/web-ui/build/static/hlsl-Di7PYfJn.js +1 -0
  228. package/web-ui/build/static/hoon-Bq4hhWSd.js +1 -0
  229. package/web-ui/build/static/hpkp-Bu1AnCZZ.js +1 -0
  230. package/web-ui/build/static/hsp-CbIHPOnb.js +1 -0
  231. package/web-ui/build/static/hsts-inGzMZHb.js +1 -0
  232. package/web-ui/build/static/htmlbars-B63TZb6k.js +1 -0
  233. package/web-ui/build/static/http-3wWrh86I.js +1 -0
  234. package/web-ui/build/static/http-Bv97BGAr.js +1 -0
  235. package/web-ui/build/static/hy-CIEvnIJC.js +1 -0
  236. package/web-ui/build/static/ichigojam-BAyO373g.js +1 -0
  237. package/web-ui/build/static/icon-CGCawTFI.js +1 -0
  238. package/web-ui/build/static/icu-message-format-C_lOXF7I.js +1 -0
  239. package/web-ui/build/static/idris-D0SaDFta.js +1 -0
  240. package/web-ui/build/static/iecst-DIJ6Ei7g.js +1 -0
  241. package/web-ui/build/static/ignore-CgcF6vXx.js +1 -0
  242. package/web-ui/build/static/index-CCDUVvvx.js +1 -0
  243. package/web-ui/build/static/index-Cjg3uZB9.js +1109 -0
  244. package/web-ui/build/static/index-CjtNtdGN.js +13 -0
  245. package/web-ui/build/static/index-DpMwgPzf.css +1 -0
  246. package/web-ui/build/static/inform7-C_MqBtMp.js +1 -0
  247. package/web-ui/build/static/inform7-CmRJkJSh.js +1 -0
  248. package/web-ui/build/static/ini-BE6jwIzm.js +1 -0
  249. package/web-ui/build/static/ini-BJ50J7Sm.js +1 -0
  250. package/web-ui/build/static/io-Cnt0nyV5.js +1 -0
  251. package/web-ui/build/static/irpf90-BjRJE_kg.js +1 -0
  252. package/web-ui/build/static/isbl-C7912t_8.js +1 -0
  253. package/web-ui/build/static/j-D6ci3wH9.js +1 -0
  254. package/web-ui/build/static/java-B_gtzL63.js +1 -0
  255. package/web-ui/build/static/java-CChyLI1p.js +1 -0
  256. package/web-ui/build/static/javadoc-CGvzgn19.js +1 -0
  257. package/web-ui/build/static/javadoclike-CI4krpLe.js +1 -0
  258. package/web-ui/build/static/javascript-CgORCJsx.js +1 -0
  259. package/web-ui/build/static/javastacktrace-DNnLXvJa.js +1 -0
  260. package/web-ui/build/static/jboss-cli-DIfGm3Rl.js +1 -0
  261. package/web-ui/build/static/jexl-CYQxvL_i.js +1 -0
  262. package/web-ui/build/static/jolie-C2fxUjz7.js +1 -0
  263. package/web-ui/build/static/jq-j1fAl-OU.js +1 -0
  264. package/web-ui/build/static/js-extras-Dqx-da8U.js +1 -0
  265. package/web-ui/build/static/js-templates-jQphR4CW.js +1 -0
  266. package/web-ui/build/static/jsdoc-BCunhOqo.js +1 -0
  267. package/web-ui/build/static/json-CljDde4D.js +1 -0
  268. package/web-ui/build/static/json-Cvzg5_hO.js +1 -0
  269. package/web-ui/build/static/json5-B19V_yl9.js +1 -0
  270. package/web-ui/build/static/jsonp-WdmhO5Oi.js +1 -0
  271. package/web-ui/build/static/jsstacktrace-LpNHn4a_.js +1 -0
  272. package/web-ui/build/static/jsx-Zw6Egddf.js +1 -0
  273. package/web-ui/build/static/julia-DPlpJZNN.js +1 -0
  274. package/web-ui/build/static/julia-DuKc9nrz.js +1 -0
  275. package/web-ui/build/static/julia-repl-C-LuPMzI.js +1 -0
  276. package/web-ui/build/static/keepalived-DDl-dK9a.js +1 -0
  277. package/web-ui/build/static/keyman-DCtgoYKu.js +1 -0
  278. package/web-ui/build/static/kotlin-D9aFeaCS.js +1 -0
  279. package/web-ui/build/static/kotlin-DlrR34XG.js +1 -0
  280. package/web-ui/build/static/kumir-B_aiiAzq.js +1 -0
  281. package/web-ui/build/static/kusto-CD4lHO1B.js +1 -0
  282. package/web-ui/build/static/lasso-BAMF8mdd.js +1 -0
  283. package/web-ui/build/static/latex-BjEyffe7.js +1 -0
  284. package/web-ui/build/static/latex-NaCSqcbD.js +1 -0
  285. package/web-ui/build/static/latte-BACpaGl3.js +1 -0
  286. package/web-ui/build/static/ldif-CRWTiH1W.js +1 -0
  287. package/web-ui/build/static/leaf-BYydRpJx.js +1 -0
  288. package/web-ui/build/static/less-BtFu1MXi.js +1 -0
  289. package/web-ui/build/static/less-COgcqIOM.js +1 -0
  290. package/web-ui/build/static/lilypond-BMLjCV3G.js +1 -0
  291. package/web-ui/build/static/liquid-Dr5bQMAB.js +1 -0
  292. package/web-ui/build/static/lisp-CE1ra7Xs.js +1 -0
  293. package/web-ui/build/static/lisp-CcOEo5DI.js +1 -0
  294. package/web-ui/build/static/livecodeserver-DNuOfASY.js +1 -0
  295. package/web-ui/build/static/livescript-BJor4pxz.js +1 -0
  296. package/web-ui/build/static/livescript-DFaZj6XM.js +1 -0
  297. package/web-ui/build/static/llvm-CJtHIXsX.js +1 -0
  298. package/web-ui/build/static/llvm-d3gQICQs.js +1 -0
  299. package/web-ui/build/static/log-B0pKN1S4.js +1 -0
  300. package/web-ui/build/static/lolcode-C_V6Sffm.js +1 -0
  301. package/web-ui/build/static/lsl-yhp5dB9o.js +1 -0
  302. package/web-ui/build/static/lua-BDTJq_SO.js +1 -0
  303. package/web-ui/build/static/lua-BaKkUUd_.js +1 -0
  304. package/web-ui/build/static/magma-aTzw_jlN.js +1 -0
  305. package/web-ui/build/static/makefile-FyZn4dZ-.js +1 -0
  306. package/web-ui/build/static/makefile-Vk7smupm.js +1 -0
  307. package/web-ui/build/static/markdown-BHavO-Hk.js +1 -0
  308. package/web-ui/build/static/markdown-CTYy6uqC.js +1 -0
  309. package/web-ui/build/static/markup-templating-DJWuQB2F.js +1 -0
  310. package/web-ui/build/static/mathematica-BnMzpFTS.js +1 -0
  311. package/web-ui/build/static/matlab-BsW3yHe5.js +1 -0
  312. package/web-ui/build/static/matlab-C8_ylrUg.js +1 -0
  313. package/web-ui/build/static/maxima-c3e9EB-f.js +1 -0
  314. package/web-ui/build/static/maxscript-DU-NoCpb.js +1 -0
  315. package/web-ui/build/static/mel-CcB2EUO0.js +1 -0
  316. package/web-ui/build/static/mel-u6igP96m.js +1 -0
  317. package/web-ui/build/static/mercury-YZshmW3v.js +1 -0
  318. package/web-ui/build/static/mermaid-C9dmgLlU.js +1 -0
  319. package/web-ui/build/static/mipsasm-BXHH9ztX.js +1 -0
  320. package/web-ui/build/static/mizar-B1317rho.js +1 -0
  321. package/web-ui/build/static/mizar-BjaPUUcM.js +1 -0
  322. package/web-ui/build/static/mojolicious-BQ8vE8HW.js +1 -0
  323. package/web-ui/build/static/mongodb-P-J2PnwH.js +1 -0
  324. package/web-ui/build/static/monkey-DcKZEVh6.js +1 -0
  325. package/web-ui/build/static/monkey-wMAzhDv4.js +1 -0
  326. package/web-ui/build/static/moonscript-C9Ea7K1o.js +1 -0
  327. package/web-ui/build/static/moonscript-DAjW1T8X.js +1 -0
  328. package/web-ui/build/static/n1ql-6nGwiuTr.js +1 -0
  329. package/web-ui/build/static/n1ql-BxgYqKfs.js +1 -0
  330. package/web-ui/build/static/n4js-Cqw8_-b7.js +1 -0
  331. package/web-ui/build/static/nand2tetris-hdl-B3Qrhhfv.js +1 -0
  332. package/web-ui/build/static/naniscript-BpIC5j6P.js +1 -0
  333. package/web-ui/build/static/nasm-Dp1z_ttd.js +1 -0
  334. package/web-ui/build/static/neon-B4RksdIv.js +1 -0
  335. package/web-ui/build/static/nevod-P34zfD9_.js +1 -0
  336. package/web-ui/build/static/nginx-CSaiFc4g.js +1 -0
  337. package/web-ui/build/static/nginx-bZFV7OqP.js +1 -0
  338. package/web-ui/build/static/nim-D04ADsdj.js +1 -0
  339. package/web-ui/build/static/nim-D37nbh5y.js +1 -0
  340. package/web-ui/build/static/nix-BPsQ58gF.js +1 -0
  341. package/web-ui/build/static/nix-keWnuH3h.js +1 -0
  342. package/web-ui/build/static/node-repl-rNkVcb6S.js +1 -0
  343. package/web-ui/build/static/nsis-DT8bhvLc.js +1 -0
  344. package/web-ui/build/static/nsis-DvfCmyQQ.js +1 -0
  345. package/web-ui/build/static/objectivec-BaJIzRqu.js +1 -0
  346. package/web-ui/build/static/objectivec-CmAY0jlQ.js +1 -0
  347. package/web-ui/build/static/ocaml-Dsf96dbW.js +1 -0
  348. package/web-ui/build/static/ocaml-SFQJ7AwJ.js +1 -0
  349. package/web-ui/build/static/opencl-Dp9ILs3s.js +1 -0
  350. package/web-ui/build/static/openqasm-Bsk-xK6C.js +1 -0
  351. package/web-ui/build/static/openscad-Dgvp4h50.js +1 -0
  352. package/web-ui/build/static/oxygene-C9rTsztX.js +1 -0
  353. package/web-ui/build/static/oz-DNlV-Ssf.js +1 -0
  354. package/web-ui/build/static/parigp-B7a5XVP7.js +1 -0
  355. package/web-ui/build/static/parser-nTo2WBxY.js +1 -0
  356. package/web-ui/build/static/parser3-BSD4cYqf.js +1 -0
  357. package/web-ui/build/static/pascal-DJxIFBHG.js +1 -0
  358. package/web-ui/build/static/pascaligo-JdV741ps.js +1 -0
  359. package/web-ui/build/static/pcaxis-DdexNvEQ.js +1 -0
  360. package/web-ui/build/static/peoplecode-DxBgZPZT.js +1 -0
  361. package/web-ui/build/static/perl-C0INln41.js +1 -0
  362. package/web-ui/build/static/perl-DvRuNidH.js +1 -0
  363. package/web-ui/build/static/pf-BjguNjII.js +1 -0
  364. package/web-ui/build/static/pgsql-9w8Z8Ams.js +1 -0
  365. package/web-ui/build/static/php-DKQIY8Pe.js +1 -0
  366. package/web-ui/build/static/php-DibEnIhD.js +1 -0
  367. package/web-ui/build/static/php-extras-CKKhA74Z.js +1 -0
  368. package/web-ui/build/static/php-template-Cjba7UNU.js +1 -0
  369. package/web-ui/build/static/phpdoc-QXtTW5az.js +1 -0
  370. package/web-ui/build/static/plaintext-Cbn61_h_.js +1 -0
  371. package/web-ui/build/static/plsql-f34z7hfB.js +1 -0
  372. package/web-ui/build/static/pony-DBSnXJAW.js +1 -0
  373. package/web-ui/build/static/powerquery-lin81zqH.js +1 -0
  374. package/web-ui/build/static/powershell-BoyP16Ta.js +1 -0
  375. package/web-ui/build/static/powershell-CCpHONl6.js +1 -0
  376. package/web-ui/build/static/processing-Cd7-ycAb.js +1 -0
  377. package/web-ui/build/static/processing-CeGW9CwE.js +1 -0
  378. package/web-ui/build/static/profile-DLYi3Uya.js +1 -0
  379. package/web-ui/build/static/prolog-BVr1f3c4.js +1 -0
  380. package/web-ui/build/static/prolog-C3D6KhoT.js +1 -0
  381. package/web-ui/build/static/promql-dviC9B24.js +1 -0
  382. package/web-ui/build/static/properties-CSNjefFg.js +1 -0
  383. package/web-ui/build/static/properties-DTAWAQKc.js +1 -0
  384. package/web-ui/build/static/protobuf-BCYoMCa-.js +1 -0
  385. package/web-ui/build/static/protobuf-D8G6xbh1.js +1 -0
  386. package/web-ui/build/static/psl-DzehMnl-.js +1 -0
  387. package/web-ui/build/static/pug-Cl4m_Cmv.js +1 -0
  388. package/web-ui/build/static/puppet-CECKDklS.js +1 -0
  389. package/web-ui/build/static/puppet-ZSk9z7h2.js +1 -0
  390. package/web-ui/build/static/pure-CRYVKpUf.js +1 -0
  391. package/web-ui/build/static/purebasic-B1B7jCI9.js +1 -0
  392. package/web-ui/build/static/purebasic-BdOvLN02.js +1 -0
  393. package/web-ui/build/static/purescript-CdFZo5U_.js +1 -0
  394. package/web-ui/build/static/python-B_UnJ1V3.js +1 -0
  395. package/web-ui/build/static/python-BeSi3a8_.js +1 -0
  396. package/web-ui/build/static/python-repl-BBmtoedD.js +1 -0
  397. package/web-ui/build/static/q-Ery9rED_.js +1 -0
  398. package/web-ui/build/static/q-OEzRNQWZ.js +1 -0
  399. package/web-ui/build/static/qml-DdHTOYCC.js +1 -0
  400. package/web-ui/build/static/qml-DqjqC3TV.js +1 -0
  401. package/web-ui/build/static/qore-D3qGrct2.js +1 -0
  402. package/web-ui/build/static/qsharp-DdQgHY8o.js +1 -0
  403. package/web-ui/build/static/r-BsnBh-Gb.js +1 -0
  404. package/web-ui/build/static/r-CgLmD3ej.js +1 -0
  405. package/web-ui/build/static/racket-CgSPkQxA.js +1 -0
  406. package/web-ui/build/static/reason-BRJ4xDT3.js +1 -0
  407. package/web-ui/build/static/reasonml-B8V18bIF.js +1 -0
  408. package/web-ui/build/static/regex-C8qp_5tY.js +1 -0
  409. package/web-ui/build/static/rego-B3dQMEmR.js +1 -0
  410. package/web-ui/build/static/renpy-BmlUaEOQ.js +1 -0
  411. package/web-ui/build/static/rest-XlDNtjp0.js +1 -0
  412. package/web-ui/build/static/rib-BfquiuWk.js +1 -0
  413. package/web-ui/build/static/rip-dGRhlG0v.js +1 -0
  414. package/web-ui/build/static/roboconf-CtBSSFaA.js +1 -0
  415. package/web-ui/build/static/roboconf-wrbztr2r.js +1 -0
  416. package/web-ui/build/static/robotframework-BSxuJaY6.js +1 -0
  417. package/web-ui/build/static/routeros-DHKFvEvZ.js +1 -0
  418. package/web-ui/build/static/rsl-BhjvE0Cr.js +1 -0
  419. package/web-ui/build/static/ruby-BMED8W31.js +1 -0
  420. package/web-ui/build/static/ruby-BkE7uZGd.js +1 -0
  421. package/web-ui/build/static/ruleslanguage-DGe1m8Id.js +1 -0
  422. package/web-ui/build/static/rust-CUje9n_P.js +1 -0
  423. package/web-ui/build/static/rust-O67yEsAu.js +1 -0
  424. package/web-ui/build/static/sas-BpDWmnoa.js +1 -0
  425. package/web-ui/build/static/sas-DRBVod_5.js +1 -0
  426. package/web-ui/build/static/sass-CdUBh_kW.js +1 -0
  427. package/web-ui/build/static/scala-BvUTPbg2.js +1 -0
  428. package/web-ui/build/static/scala-DmXpVBFR.js +1 -0
  429. package/web-ui/build/static/scheme-BfzSegEb.js +1 -0
  430. package/web-ui/build/static/scheme-CL7dxV3L.js +1 -0
  431. package/web-ui/build/static/scilab-Bwx8K6ut.js +1 -0
  432. package/web-ui/build/static/scss-Bk3cnVi-.js +1 -0
  433. package/web-ui/build/static/scss-CEq_Uo2G.js +1 -0
  434. package/web-ui/build/static/shell-CH2lH60k.js +1 -0
  435. package/web-ui/build/static/shell-session-Dsc6nnXg.js +1 -0
  436. package/web-ui/build/static/smali-DR57iO-M.js +1 -0
  437. package/web-ui/build/static/smali-QDgUokkE.js +1 -0
  438. package/web-ui/build/static/smalltalk-CNWYoGI5.js +1 -0
  439. package/web-ui/build/static/smalltalk-DuKK00UG.js +1 -0
  440. package/web-ui/build/static/smarty-CM_K74KX.js +1 -0
  441. package/web-ui/build/static/sml-B-u4vtVQ.js +1 -0
  442. package/web-ui/build/static/sml-CnAed_Dv.js +1 -0
  443. package/web-ui/build/static/solidity-Bc_FUKPw.js +1 -0
  444. package/web-ui/build/static/solution-file-CE-Ffn8a.js +1 -0
  445. package/web-ui/build/static/soy-B__lNQNx.js +1 -0
  446. package/web-ui/build/static/sparql-BZnN0yju.js +1 -0
  447. package/web-ui/build/static/splunk-spl-DIs_BiUo.js +1 -0
  448. package/web-ui/build/static/sqf-DNSlhOUj.js +1 -0
  449. package/web-ui/build/static/sqf-DwPev5qJ.js +1 -0
  450. package/web-ui/build/static/sql-C9UaJUCf.js +1 -0
  451. package/web-ui/build/static/sql-DAnJSRyV.js +1 -0
  452. package/web-ui/build/static/sql_more-DMMfa_Zg.js +1 -0
  453. package/web-ui/build/static/squirrel-Bevu4MOl.js +1 -0
  454. package/web-ui/build/static/stan-Bs_yMVnC.js +1 -0
  455. package/web-ui/build/static/stan-Cduy4Z3W.js +1 -0
  456. package/web-ui/build/static/stata-BrHJdKRc.js +1 -0
  457. package/web-ui/build/static/step21-CGhxzCID.js +1 -0
  458. package/web-ui/build/static/stylus-B2lueE5_.js +1 -0
  459. package/web-ui/build/static/stylus-pKniqDuc.js +1 -0
  460. package/web-ui/build/static/subunit-B5WE5S5P.js +1 -0
  461. package/web-ui/build/static/swift-CEi576mT.js +1 -0
  462. package/web-ui/build/static/swift-CQCuFcEK.js +1 -0
  463. package/web-ui/build/static/systemd-CF-EHggg.js +1 -0
  464. package/web-ui/build/static/t4-cs-DWdn0RQB.js +1 -0
  465. package/web-ui/build/static/t4-templating-C15ubdW6.js +1 -0
  466. package/web-ui/build/static/t4-vb-Cz2QCDLO.js +1 -0
  467. package/web-ui/build/static/taggerscript-CfU_hv7J.js +1 -0
  468. package/web-ui/build/static/tap-2-gLM4Lw.js +1 -0
  469. package/web-ui/build/static/tap-M44CQJkj.js +1 -0
  470. package/web-ui/build/static/tcl-BMpkwsCa.js +1 -0
  471. package/web-ui/build/static/tcl-CfF-clAT.js +1 -0
  472. package/web-ui/build/static/textile-CUkgUEkV.js +1 -0
  473. package/web-ui/build/static/thrift-daJZ1DGJ.js +1 -0
  474. package/web-ui/build/static/toml-DnW5prhH.js +1 -0
  475. package/web-ui/build/static/tp-ZqeJLSGg.js +1 -0
  476. package/web-ui/build/static/tremor-WcELDSvz.js +1 -0
  477. package/web-ui/build/static/tsx-BVww6xUP.js +1 -0
  478. package/web-ui/build/static/tt2-Cxt3LLr_.js +1 -0
  479. package/web-ui/build/static/turtle-DmRTxNN8.js +1 -0
  480. package/web-ui/build/static/twig-DcLADpYg.js +1 -0
  481. package/web-ui/build/static/twig-Drdxszx_.js +1 -0
  482. package/web-ui/build/static/typescript-CgVWCuS9.js +1 -0
  483. package/web-ui/build/static/typescript-D3GjnDi9.js +1 -0
  484. package/web-ui/build/static/typoscript-B4qyGuOT.js +1 -0
  485. package/web-ui/build/static/unrealscript-BtIQeIeR.js +1 -0
  486. package/web-ui/build/static/uorazor-eWa_YDYv.js +1 -0
  487. package/web-ui/build/static/uri-CxsgAGHN.js +1 -0
  488. package/web-ui/build/static/v-D84eyWwn.js +1 -0
  489. package/web-ui/build/static/vala-Ccb9w5DW.js +1 -0
  490. package/web-ui/build/static/vala-MsPY7Xer.js +1 -0
  491. package/web-ui/build/static/vbnet-B33DMpXq.js +1 -0
  492. package/web-ui/build/static/vbnet-CaLY-AOH.js +1 -0
  493. package/web-ui/build/static/vbscript-DrXwNwNu.js +1 -0
  494. package/web-ui/build/static/vbscript-html-OTJEVr5m.js +1 -0
  495. package/web-ui/build/static/velocity-q0bXdAL4.js +1 -0
  496. package/web-ui/build/static/verilog-BD-Nxyqa.js +1 -0
  497. package/web-ui/build/static/verilog-PFy9sucN.js +1 -0
  498. package/web-ui/build/static/vhdl-BeCVyLiK.js +1 -0
  499. package/web-ui/build/static/vhdl-CMHdBpc5.js +1 -0
  500. package/web-ui/build/static/vim-3d_DOCsL.js +1 -0
  501. package/web-ui/build/static/vim-Bl5swMbH.js +1 -0
  502. package/web-ui/build/static/visual-basic-CjOvSeMg.js +1 -0
  503. package/web-ui/build/static/warpscript-C2EL35K2.js +1 -0
  504. package/web-ui/build/static/wasm-DmFD8VgH.js +1 -0
  505. package/web-ui/build/static/web-idl-RnzsvoQV.js +1 -0
  506. package/web-ui/build/static/wiki-Bu-zrPhW.js +1 -0
  507. package/web-ui/build/static/wolfram-CYYr3oaW.js +1 -0
  508. package/web-ui/build/static/wren-BXwkGwpn.js +1 -0
  509. package/web-ui/build/static/x86asm-_F19Kl5Y.js +1 -0
  510. package/web-ui/build/static/xeora-BmVPgL2I.js +1 -0
  511. package/web-ui/build/static/xl-68telKZ2.js +1 -0
  512. package/web-ui/build/static/xml-DPdaRgU0.js +1 -0
  513. package/web-ui/build/static/xml-doc-Aa64lijn.js +1 -0
  514. package/web-ui/build/static/xojo-DminlfyC.js +1 -0
  515. package/web-ui/build/static/xquery-BC1P9u6q.js +1 -0
  516. package/web-ui/build/static/xquery-kRz8gtls.js +1 -0
  517. package/web-ui/build/static/yaml-Bh9xHEaX.js +1 -0
  518. package/web-ui/build/static/yaml-CQW4NAe0.js +1 -0
  519. package/web-ui/build/static/yang-joHFzzXq.js +1 -0
  520. package/web-ui/build/static/zephir-BDGPNzsB.js +1 -0
  521. package/web-ui/build/static/zig-DtLmllYo.js +1 -0
  522. package/web-ui/build/static/1c-Cxgysx0K.js +0 -1
  523. package/web-ui/build/static/abap-D9Pd8DUG.js +0 -1
  524. package/web-ui/build/static/abnf-CHs5P8yl.js +0 -1
  525. package/web-ui/build/static/abnf-D5OtFEZO.js +0 -1
  526. package/web-ui/build/static/accesslog-CTD5Frmr.js +0 -1
  527. package/web-ui/build/static/actionscript-BN0BKQI7.js +0 -1
  528. package/web-ui/build/static/actionscript-DQNwbYlU.js +0 -1
  529. package/web-ui/build/static/ada-8O7AmGii.js +0 -1
  530. package/web-ui/build/static/ada-p8y2qCLB.js +0 -1
  531. package/web-ui/build/static/agda-BzT4bKSx.js +0 -1
  532. package/web-ui/build/static/al-Caq7o9RG.js +0 -1
  533. package/web-ui/build/static/angelscript-DivMpSHf.js +0 -1
  534. package/web-ui/build/static/antlr4-B1D_tnKH.js +0 -1
  535. package/web-ui/build/static/apache-l88_LooT.js +0 -1
  536. package/web-ui/build/static/apacheconf-kaxXABFE.js +0 -1
  537. package/web-ui/build/static/apex-CSdSRWUv.js +0 -1
  538. package/web-ui/build/static/apl-CHwVg89T.js +0 -1
  539. package/web-ui/build/static/applescript-C64qdYZf.js +0 -1
  540. package/web-ui/build/static/applescript-CqTGrBVp.js +0 -1
  541. package/web-ui/build/static/aql-BwKKr7z7.js +0 -1
  542. package/web-ui/build/static/arcade-C6oqHEwh.js +0 -1
  543. package/web-ui/build/static/arduino-DB4E20Km.js +0 -1
  544. package/web-ui/build/static/arduino-DKpgmHjE.js +0 -1
  545. package/web-ui/build/static/arff-CBbf8E8O.js +0 -1
  546. package/web-ui/build/static/armasm-Bogg7lrz.js +0 -1
  547. package/web-ui/build/static/asciidoc-3ZlDsfKD.js +0 -1
  548. package/web-ui/build/static/asciidoc-Cc88g_au.js +0 -1
  549. package/web-ui/build/static/asm6502-B4rN-vZ1.js +0 -1
  550. package/web-ui/build/static/asmatmel-B8zZLWGk.js +0 -1
  551. package/web-ui/build/static/aspectj-XdNtCtbN.js +0 -1
  552. package/web-ui/build/static/aspnet-DZVKB5n1.js +0 -1
  553. package/web-ui/build/static/autohotkey-CxDWLQqM.js +0 -1
  554. package/web-ui/build/static/autohotkey-DJStPrtS.js +0 -1
  555. package/web-ui/build/static/autoit-BWirJOCg.js +0 -1
  556. package/web-ui/build/static/autoit-CJcfmsnl.js +0 -1
  557. package/web-ui/build/static/avisynth-C7JQe3L7.js +0 -1
  558. package/web-ui/build/static/avrasm-CMiuHQvu.js +0 -1
  559. package/web-ui/build/static/avro-idl-kaRVyxMP.js +0 -1
  560. package/web-ui/build/static/awk-CQ70Cyh1.js +0 -1
  561. package/web-ui/build/static/axapta-DRxAzlG8.js +0 -1
  562. package/web-ui/build/static/bash-B2XqEYpT.js +0 -1
  563. package/web-ui/build/static/bash-D-D1taMA.js +0 -1
  564. package/web-ui/build/static/basic-Da1x7OIZ.js +0 -1
  565. package/web-ui/build/static/basic-Dslk2ZwT.js +0 -1
  566. package/web-ui/build/static/batch-B0wJNPoF.js +0 -1
  567. package/web-ui/build/static/bbcode-BXDdc2HS.js +0 -1
  568. package/web-ui/build/static/bicep-iiH-nx9J.js +0 -1
  569. package/web-ui/build/static/birb-DuTqqibI.js +0 -1
  570. package/web-ui/build/static/bison-D1Hw6owA.js +0 -1
  571. package/web-ui/build/static/bnf-BRhzfr87.js +0 -1
  572. package/web-ui/build/static/bnf-u1Iy1Ku7.js +0 -1
  573. package/web-ui/build/static/brainfuck-C4R5VJ3_.js +0 -1
  574. package/web-ui/build/static/brainfuck-C8niWF0i.js +0 -1
  575. package/web-ui/build/static/brightscript-DavMfkHx.js +0 -1
  576. package/web-ui/build/static/bro-CEMPoYum.js +0 -1
  577. package/web-ui/build/static/bsl-COeqiMqc.js +0 -1
  578. package/web-ui/build/static/c-BaaVQwFt.js +0 -1
  579. package/web-ui/build/static/c-BvALLiMv.js +0 -1
  580. package/web-ui/build/static/c-like-C4yx6s7b.js +0 -1
  581. package/web-ui/build/static/cal-CSxgKgNR.js +0 -1
  582. package/web-ui/build/static/capnproto-C9cMEmIo.js +0 -1
  583. package/web-ui/build/static/ceylon-Dj67Lf2T.js +0 -1
  584. package/web-ui/build/static/cfscript-BhALECgj.js +0 -1
  585. package/web-ui/build/static/chaiscript-Cg5weNRB.js +0 -1
  586. package/web-ui/build/static/cil-BR-JCsPu.js +0 -1
  587. package/web-ui/build/static/clean-xJMmqZ4X.js +0 -1
  588. package/web-ui/build/static/clojure-9C3tRo_T.js +0 -1
  589. package/web-ui/build/static/clojure-C2KNwa0h.js +0 -1
  590. package/web-ui/build/static/clojure-repl-B-pke3nS.js +0 -1
  591. package/web-ui/build/static/cmake-C0BFHpjZ.js +0 -1
  592. package/web-ui/build/static/cmake-DYoa_Kz_.js +0 -1
  593. package/web-ui/build/static/cobol-Bj_qcMsY.js +0 -1
  594. package/web-ui/build/static/coffeescript-C2KEz8d0.js +0 -1
  595. package/web-ui/build/static/coffeescript-CQsP9N_M.js +0 -1
  596. package/web-ui/build/static/concurnas-Ceu24KQb.js +0 -1
  597. package/web-ui/build/static/coq-CP7VW0bo.js +0 -1
  598. package/web-ui/build/static/coq-DQry0I8v.js +0 -1
  599. package/web-ui/build/static/cos-DAjhu7pi.js +0 -1
  600. package/web-ui/build/static/cpp-BwHJ0JtK.js +0 -1
  601. package/web-ui/build/static/cpp-Dro3stzS.js +0 -1
  602. package/web-ui/build/static/crmsh-Bnwknpi9.js +0 -1
  603. package/web-ui/build/static/crystal-B7TVeIo6.js +0 -1
  604. package/web-ui/build/static/crystal-Cy5JlSrW.js +0 -1
  605. package/web-ui/build/static/csharp-CeouYZK3.js +0 -1
  606. package/web-ui/build/static/csharp-Dv2oxLAS.js +0 -1
  607. package/web-ui/build/static/cshtml-C9IRHsFH.js +0 -1
  608. package/web-ui/build/static/csp-C85pVqYT.js +0 -1
  609. package/web-ui/build/static/csp-MJntgwIj.js +0 -1
  610. package/web-ui/build/static/css-DWTfQjN4.js +0 -1
  611. package/web-ui/build/static/css-extras-BmVbsPjr.js +0 -1
  612. package/web-ui/build/static/csv-zUw-JkSo.js +0 -1
  613. package/web-ui/build/static/cypher-DQOOp0bG.js +0 -1
  614. package/web-ui/build/static/d-B7Cku9c8.js +0 -1
  615. package/web-ui/build/static/d-Lnzvs4Wd.js +0 -1
  616. package/web-ui/build/static/dart-CeK_W9Mg.js +0 -1
  617. package/web-ui/build/static/dart-Z5nwVCn_.js +0 -1
  618. package/web-ui/build/static/dataweave-Bv7GTsiJ.js +0 -1
  619. package/web-ui/build/static/dax-CxkNT7ml.js +0 -1
  620. package/web-ui/build/static/delphi-BnBBHmHI.js +0 -1
  621. package/web-ui/build/static/dhall-DzzkunJZ.js +0 -1
  622. package/web-ui/build/static/diff-BKZzYJzc.js +0 -1
  623. package/web-ui/build/static/diff-BfTiUZV3.js +0 -1
  624. package/web-ui/build/static/django-BY4l8873.js +0 -1
  625. package/web-ui/build/static/django-NRVGlUZ_.js +0 -1
  626. package/web-ui/build/static/dns-Dvc8YawT.js +0 -1
  627. package/web-ui/build/static/dns-zone-file-CkaiOrlK.js +0 -1
  628. package/web-ui/build/static/docker-BQXYNHPO.js +0 -1
  629. package/web-ui/build/static/dockerfile-CkHfYmB1.js +0 -1
  630. package/web-ui/build/static/dos-Cj0YcQAg.js +0 -1
  631. package/web-ui/build/static/dot-zgBkKTS-.js +0 -1
  632. package/web-ui/build/static/dsconfig-Yy07ZSap.js +0 -1
  633. package/web-ui/build/static/dts-DyTWnuFT.js +0 -1
  634. package/web-ui/build/static/dust-CKq7f4u7.js +0 -1
  635. package/web-ui/build/static/ebnf-DJRrwYUt.js +0 -1
  636. package/web-ui/build/static/ebnf-RHbRUELR.js +0 -1
  637. package/web-ui/build/static/editorconfig-BPnyfBW2.js +0 -1
  638. package/web-ui/build/static/eiffel-yj-2JB74.js +0 -1
  639. package/web-ui/build/static/ejs-DitQDEAj.js +0 -1
  640. package/web-ui/build/static/elixir-3QGdRPiZ.js +0 -1
  641. package/web-ui/build/static/elixir-DjVihWJd.js +0 -1
  642. package/web-ui/build/static/elm-BY6TIO5U.js +0 -1
  643. package/web-ui/build/static/elm-CRkIBVgc.js +0 -1
  644. package/web-ui/build/static/erb-Djhpl6Qv.js +0 -1
  645. package/web-ui/build/static/erb-T-e_0q4M.js +0 -1
  646. package/web-ui/build/static/erlang-BHne0Sow.js +0 -1
  647. package/web-ui/build/static/erlang-BwFMbXMn.js +0 -1
  648. package/web-ui/build/static/erlang-repl-BkeLNBB1.js +0 -1
  649. package/web-ui/build/static/etlua-C7wAJl9b.js +0 -1
  650. package/web-ui/build/static/excel-DxE1g8nj.js +0 -1
  651. package/web-ui/build/static/excel-formula-CJfyOSIQ.js +0 -1
  652. package/web-ui/build/static/factor-CoKZ2w9G.js +0 -1
  653. package/web-ui/build/static/false-R3UgYwdZ.js +0 -1
  654. package/web-ui/build/static/firestore-security-rules-Na-FK95T.js +0 -1
  655. package/web-ui/build/static/fix-CvUjGqrP.js +0 -1
  656. package/web-ui/build/static/flix-DZcdobtd.js +0 -1
  657. package/web-ui/build/static/flow-Bs4ybDfF.js +0 -1
  658. package/web-ui/build/static/fortran-Bo7HQHVz.js +0 -1
  659. package/web-ui/build/static/fortran-C01QKAjv.js +0 -1
  660. package/web-ui/build/static/fsharp-Bl0db-E4.js +0 -1
  661. package/web-ui/build/static/fsharp-CyZIu__H.js +0 -1
  662. package/web-ui/build/static/ftl-CWXbnuJ8.js +0 -1
  663. package/web-ui/build/static/gams-BqHeBOiK.js +0 -1
  664. package/web-ui/build/static/gap-Dotaw9CX.js +0 -1
  665. package/web-ui/build/static/gauss-BT78eAPL.js +0 -1
  666. package/web-ui/build/static/gcode-MKCsCHbV.js +0 -1
  667. package/web-ui/build/static/gcode-bZIzS7dq.js +0 -1
  668. package/web-ui/build/static/gdscript-BfFdzROd.js +0 -1
  669. package/web-ui/build/static/gedcom-C-0fkvQT.js +0 -1
  670. package/web-ui/build/static/gherkin-Bgefs1Ac.js +0 -1
  671. package/web-ui/build/static/gherkin-BwLhttSG.js +0 -1
  672. package/web-ui/build/static/git-Cf3XNFwK.js +0 -1
  673. package/web-ui/build/static/glsl-BRBvgtKX.js +0 -1
  674. package/web-ui/build/static/glsl-Ci0Ywihb.js +0 -1
  675. package/web-ui/build/static/gml-BGED3ZV5.js +0 -1
  676. package/web-ui/build/static/gml-Bo5ybH2Z.js +0 -1
  677. package/web-ui/build/static/gn-Dvq3uq8q.js +0 -1
  678. package/web-ui/build/static/go-DEXubI7V.js +0 -1
  679. package/web-ui/build/static/go-DQ-rOBtr.js +0 -1
  680. package/web-ui/build/static/go-module-CJ0C_rZQ.js +0 -1
  681. package/web-ui/build/static/golo-BMZyESOG.js +0 -1
  682. package/web-ui/build/static/gradle-DamtVT5m.js +0 -1
  683. package/web-ui/build/static/graphql-BERukF58.js +0 -1
  684. package/web-ui/build/static/groovy-B-WmRKEQ.js +0 -1
  685. package/web-ui/build/static/groovy-BzgGHCpW.js +0 -1
  686. package/web-ui/build/static/haml-B50hpu0J.js +0 -1
  687. package/web-ui/build/static/haml-vZAqNnLr.js +0 -1
  688. package/web-ui/build/static/handlebars-ChvSiZA5.js +0 -1
  689. package/web-ui/build/static/handlebars-z32GTNvC.js +0 -1
  690. package/web-ui/build/static/haskell-BWLVCHRl.js +0 -1
  691. package/web-ui/build/static/haskell-CZ4HT-QV.js +0 -1
  692. package/web-ui/build/static/haxe-Dff2UzKb.js +0 -1
  693. package/web-ui/build/static/haxe-DtUMfT4Y.js +0 -1
  694. package/web-ui/build/static/hcl-CPdCn21C.js +0 -1
  695. package/web-ui/build/static/hlsl-Ddnzpafa.js +0 -1
  696. package/web-ui/build/static/hoon-BmzYN5g6.js +0 -1
  697. package/web-ui/build/static/hpkp-Cf4BtYzp.js +0 -1
  698. package/web-ui/build/static/hsp-CtNdizh5.js +0 -1
  699. package/web-ui/build/static/hsts-ChmUnrWY.js +0 -1
  700. package/web-ui/build/static/htmlbars-FvxUz397.js +0 -1
  701. package/web-ui/build/static/http-C91BqIc4.js +0 -1
  702. package/web-ui/build/static/http-DUkMpz6R.js +0 -1
  703. package/web-ui/build/static/hy-BgEorqc6.js +0 -1
  704. package/web-ui/build/static/ichigojam-CyJ85XqZ.js +0 -1
  705. package/web-ui/build/static/icon-CWVwUSUB.js +0 -1
  706. package/web-ui/build/static/icu-message-format-DQ5Vf-57.js +0 -1
  707. package/web-ui/build/static/idris-25epvnkz.js +0 -1
  708. package/web-ui/build/static/iecst-D_Q4A3Ao.js +0 -1
  709. package/web-ui/build/static/ignore-Dn3TUem-.js +0 -1
  710. package/web-ui/build/static/index-1GAqwN2P.js +0 -1029
  711. package/web-ui/build/static/index-Bbt0N_qA.css +0 -1
  712. package/web-ui/build/static/index-COM0znG6.js +0 -13
  713. package/web-ui/build/static/index-Cq1FjdFd.js +0 -1
  714. package/web-ui/build/static/inform7-CFrNuUCE.js +0 -1
  715. package/web-ui/build/static/inform7-DKEqg7Td.js +0 -1
  716. package/web-ui/build/static/ini-C-WeV3rA.js +0 -1
  717. package/web-ui/build/static/ini-DNeLlQLb.js +0 -1
  718. package/web-ui/build/static/io-CHx2lS-R.js +0 -1
  719. package/web-ui/build/static/irpf90-D4fNrYKT.js +0 -1
  720. package/web-ui/build/static/isbl-BwxgZUmw.js +0 -1
  721. package/web-ui/build/static/j-EkuSi-Ss.js +0 -1
  722. package/web-ui/build/static/java-BtphFsNb.js +0 -1
  723. package/web-ui/build/static/java-D6Ksxtks.js +0 -1
  724. package/web-ui/build/static/javadoc-COfrpXIF.js +0 -1
  725. package/web-ui/build/static/javadoclike-C0DIBgSo.js +0 -1
  726. package/web-ui/build/static/javascript-D9_bdns_.js +0 -1
  727. package/web-ui/build/static/javastacktrace-BgesTIoE.js +0 -1
  728. package/web-ui/build/static/jboss-cli-BCBm8RaA.js +0 -1
  729. package/web-ui/build/static/jexl-Bur7gjJl.js +0 -1
  730. package/web-ui/build/static/jolie-CG2HtqVF.js +0 -1
  731. package/web-ui/build/static/jq-BjcZo4Ta.js +0 -1
  732. package/web-ui/build/static/js-extras-DPWP-xWb.js +0 -1
  733. package/web-ui/build/static/js-templates-BYQFylC_.js +0 -1
  734. package/web-ui/build/static/jsdoc-CiOxmgl5.js +0 -1
  735. package/web-ui/build/static/json-C2-b3Xpo.js +0 -1
  736. package/web-ui/build/static/json-D7ok2MJS.js +0 -1
  737. package/web-ui/build/static/json5-DRNOdkus.js +0 -1
  738. package/web-ui/build/static/jsonp-FFJzAxUk.js +0 -1
  739. package/web-ui/build/static/jsstacktrace-C4ki-LaP.js +0 -1
  740. package/web-ui/build/static/jsx-ZxGQpUNq.js +0 -1
  741. package/web-ui/build/static/julia-7ooB8a4b.js +0 -1
  742. package/web-ui/build/static/julia-DzjCRNEr.js +0 -1
  743. package/web-ui/build/static/julia-repl-pceaZSLt.js +0 -1
  744. package/web-ui/build/static/keepalived-BQgTZddo.js +0 -1
  745. package/web-ui/build/static/keyman-Cqlba6tn.js +0 -1
  746. package/web-ui/build/static/kotlin-BygmvqBG.js +0 -1
  747. package/web-ui/build/static/kotlin-DrN0ycN8.js +0 -1
  748. package/web-ui/build/static/kumir-YhasANvI.js +0 -1
  749. package/web-ui/build/static/kusto-LQa6MD2B.js +0 -1
  750. package/web-ui/build/static/lasso-Ca3RFbcE.js +0 -1
  751. package/web-ui/build/static/latex-BoQj21fG.js +0 -1
  752. package/web-ui/build/static/latex-ZxewREOs.js +0 -1
  753. package/web-ui/build/static/latte-40SpSG4q.js +0 -1
  754. package/web-ui/build/static/ldif-CzTJxBjJ.js +0 -1
  755. package/web-ui/build/static/leaf-DO9LaVNe.js +0 -1
  756. package/web-ui/build/static/less-BoClFdvD.js +0 -1
  757. package/web-ui/build/static/less-C1s1U6-n.js +0 -1
  758. package/web-ui/build/static/lilypond-D5wHKW8A.js +0 -1
  759. package/web-ui/build/static/liquid-BRQzL-S2.js +0 -1
  760. package/web-ui/build/static/lisp-8q-QRYKi.js +0 -1
  761. package/web-ui/build/static/lisp-J8TPaPPb.js +0 -1
  762. package/web-ui/build/static/livecodeserver-Dcr3yGmD.js +0 -1
  763. package/web-ui/build/static/livescript-BUEQmlAe.js +0 -1
  764. package/web-ui/build/static/livescript-DsId63Ot.js +0 -1
  765. package/web-ui/build/static/llvm-B3CCzYxo.js +0 -1
  766. package/web-ui/build/static/llvm-kQGfyqnj.js +0 -1
  767. package/web-ui/build/static/log-BlA5152b.js +0 -1
  768. package/web-ui/build/static/lolcode-8WRAMeb2.js +0 -1
  769. package/web-ui/build/static/lsl-BZUMQNE2.js +0 -1
  770. package/web-ui/build/static/lua-C4hJ-Gql.js +0 -1
  771. package/web-ui/build/static/lua-RxOeZV_z.js +0 -1
  772. package/web-ui/build/static/magma-U9kYv2QD.js +0 -1
  773. package/web-ui/build/static/makefile-1Cu2rVDg.js +0 -1
  774. package/web-ui/build/static/makefile-mmZ8lbad.js +0 -1
  775. package/web-ui/build/static/markdown-CCqDOXhR.js +0 -1
  776. package/web-ui/build/static/markdown-CVOmqzdD.js +0 -1
  777. package/web-ui/build/static/markup-templating-C7eiVR0j.js +0 -1
  778. package/web-ui/build/static/mathematica-BbKHQ6zH.js +0 -1
  779. package/web-ui/build/static/matlab-BbMwJ6T0.js +0 -1
  780. package/web-ui/build/static/matlab-gHn5UhMb.js +0 -1
  781. package/web-ui/build/static/maxima-CuB3n0ri.js +0 -1
  782. package/web-ui/build/static/maxscript-jhOix4gn.js +0 -1
  783. package/web-ui/build/static/mel-Bpjqa7Ec.js +0 -1
  784. package/web-ui/build/static/mel-QxMxBq03.js +0 -1
  785. package/web-ui/build/static/mercury-C8IdDyFB.js +0 -1
  786. package/web-ui/build/static/mermaid-v41WDixf.js +0 -1
  787. package/web-ui/build/static/mipsasm-kYH27KXy.js +0 -1
  788. package/web-ui/build/static/mizar-BCJI9Jxa.js +0 -1
  789. package/web-ui/build/static/mizar-BCxP_6pj.js +0 -1
  790. package/web-ui/build/static/mojolicious-C7DC_CUp.js +0 -1
  791. package/web-ui/build/static/mongodb-DvBX00WY.js +0 -1
  792. package/web-ui/build/static/monkey-B7KjOZtt.js +0 -1
  793. package/web-ui/build/static/monkey-CFKZd6lx.js +0 -1
  794. package/web-ui/build/static/moonscript-44jD_uAZ.js +0 -1
  795. package/web-ui/build/static/moonscript-B3KahKf5.js +0 -1
  796. package/web-ui/build/static/n1ql-CxJOkBbD.js +0 -1
  797. package/web-ui/build/static/n1ql-FJFE6P7E.js +0 -1
  798. package/web-ui/build/static/n4js-D5jJTGdO.js +0 -1
  799. package/web-ui/build/static/nand2tetris-hdl-DlsCaky2.js +0 -1
  800. package/web-ui/build/static/naniscript-C3YsvWgN.js +0 -1
  801. package/web-ui/build/static/nasm-DCGKvOZq.js +0 -1
  802. package/web-ui/build/static/neon-nyFNinx-.js +0 -1
  803. package/web-ui/build/static/nevod-C5PnMzAW.js +0 -1
  804. package/web-ui/build/static/nginx-BUgMakda.js +0 -1
  805. package/web-ui/build/static/nginx-C5JBKsuz.js +0 -1
  806. package/web-ui/build/static/nim-BFu6fQgc.js +0 -1
  807. package/web-ui/build/static/nim-D0uh-nR9.js +0 -1
  808. package/web-ui/build/static/nix-BiOn3l1e.js +0 -1
  809. package/web-ui/build/static/nix-tapJszPl.js +0 -1
  810. package/web-ui/build/static/node-repl-BTp9CFzE.js +0 -1
  811. package/web-ui/build/static/nsis-B7hV5A06.js +0 -1
  812. package/web-ui/build/static/nsis-DLshnCv-.js +0 -1
  813. package/web-ui/build/static/objectivec-BKjt_sKE.js +0 -1
  814. package/web-ui/build/static/objectivec-KUMYgk5w.js +0 -1
  815. package/web-ui/build/static/ocaml-CV2nKA_A.js +0 -1
  816. package/web-ui/build/static/ocaml-ZyZ-dXmE.js +0 -1
  817. package/web-ui/build/static/opencl-igIWfc0n.js +0 -1
  818. package/web-ui/build/static/openqasm-ByCPmCpS.js +0 -1
  819. package/web-ui/build/static/openscad-Db6ypam1.js +0 -1
  820. package/web-ui/build/static/oxygene-CBbaQWRB.js +0 -1
  821. package/web-ui/build/static/oz-lEl_mXVw.js +0 -1
  822. package/web-ui/build/static/parigp-c2FbheBr.js +0 -1
  823. package/web-ui/build/static/parser-Ba6uivHf.js +0 -1
  824. package/web-ui/build/static/parser3-Cm5cgVSQ.js +0 -1
  825. package/web-ui/build/static/pascal-JgY-dd52.js +0 -1
  826. package/web-ui/build/static/pascaligo-BjSdyegq.js +0 -1
  827. package/web-ui/build/static/pcaxis-CDdxDfqJ.js +0 -1
  828. package/web-ui/build/static/peoplecode-BCPhsbK6.js +0 -1
  829. package/web-ui/build/static/perl-ClVPikLH.js +0 -1
  830. package/web-ui/build/static/perl-pRjXJ4uc.js +0 -1
  831. package/web-ui/build/static/pf-D6VrFfuf.js +0 -1
  832. package/web-ui/build/static/pgsql-DAv4ezCU.js +0 -1
  833. package/web-ui/build/static/php-Bz3Bn1G_.js +0 -1
  834. package/web-ui/build/static/php-extras-B8k1hZ7O.js +0 -1
  835. package/web-ui/build/static/php-template-DJJiMC8Q.js +0 -1
  836. package/web-ui/build/static/php-zCXGNRnB.js +0 -1
  837. package/web-ui/build/static/phpdoc-CpnPjGDk.js +0 -1
  838. package/web-ui/build/static/plaintext-BRkRKfKN.js +0 -1
  839. package/web-ui/build/static/plsql-BARhkvBo.js +0 -1
  840. package/web-ui/build/static/pony-guYTDEtj.js +0 -1
  841. package/web-ui/build/static/powerquery-DcM2Yj3O.js +0 -1
  842. package/web-ui/build/static/powershell-DJ8ftCxt.js +0 -1
  843. package/web-ui/build/static/powershell-DSRUQzqt.js +0 -1
  844. package/web-ui/build/static/processing-BCmW5Adu.js +0 -1
  845. package/web-ui/build/static/processing-DDMjYIa-.js +0 -1
  846. package/web-ui/build/static/profile-C9J13WXr.js +0 -1
  847. package/web-ui/build/static/prolog-CUyUfIUU.js +0 -1
  848. package/web-ui/build/static/prolog-wjvrQEy3.js +0 -1
  849. package/web-ui/build/static/promql-BkN3_kL1.js +0 -1
  850. package/web-ui/build/static/properties-B7zGUFLC.js +0 -1
  851. package/web-ui/build/static/properties-DHKWbrVz.js +0 -1
  852. package/web-ui/build/static/protobuf-CVwMi4py.js +0 -1
  853. package/web-ui/build/static/protobuf-CWUzVSVD.js +0 -1
  854. package/web-ui/build/static/psl-DdX6HMd3.js +0 -1
  855. package/web-ui/build/static/pug-D-Sn469u.js +0 -1
  856. package/web-ui/build/static/puppet-B6ZR9-D4.js +0 -1
  857. package/web-ui/build/static/puppet-m66LRiIo.js +0 -1
  858. package/web-ui/build/static/pure-7deZH-sc.js +0 -1
  859. package/web-ui/build/static/purebasic-DQLUcurt.js +0 -1
  860. package/web-ui/build/static/purebasic-DYMw9jTh.js +0 -1
  861. package/web-ui/build/static/purescript-DpysoAya.js +0 -1
  862. package/web-ui/build/static/python-D66_vufV.js +0 -1
  863. package/web-ui/build/static/python-DYxaIENO.js +0 -1
  864. package/web-ui/build/static/python-repl-DPjvQNxf.js +0 -1
  865. package/web-ui/build/static/q-DDHNKITB.js +0 -1
  866. package/web-ui/build/static/q-xV1Q9ILw.js +0 -1
  867. package/web-ui/build/static/qml-DSENM1u-.js +0 -1
  868. package/web-ui/build/static/qml-DfhbPQ-t.js +0 -1
  869. package/web-ui/build/static/qore-LQCffrzv.js +0 -1
  870. package/web-ui/build/static/qsharp-BcSf2ZGH.js +0 -1
  871. package/web-ui/build/static/r-Dc6GR0yQ.js +0 -1
  872. package/web-ui/build/static/r-vludgk3t.js +0 -1
  873. package/web-ui/build/static/racket-DJYIkQwh.js +0 -1
  874. package/web-ui/build/static/reason-D75i_ede.js +0 -1
  875. package/web-ui/build/static/reasonml-DhRXKjo3.js +0 -1
  876. package/web-ui/build/static/regex-D67iENuu.js +0 -1
  877. package/web-ui/build/static/rego-CJ2Eeb4g.js +0 -1
  878. package/web-ui/build/static/renpy-DUDNyFqb.js +0 -1
  879. package/web-ui/build/static/rest-Dn7SYTNt.js +0 -1
  880. package/web-ui/build/static/rib-BVUY5dIb.js +0 -1
  881. package/web-ui/build/static/rip-Bu9K3Hu9.js +0 -1
  882. package/web-ui/build/static/roboconf-CUzY2sLf.js +0 -1
  883. package/web-ui/build/static/roboconf-DBEmoD-Z.js +0 -1
  884. package/web-ui/build/static/robotframework-70EV7ffL.js +0 -1
  885. package/web-ui/build/static/routeros-KgfwmDVO.js +0 -1
  886. package/web-ui/build/static/rsl-D3oCnFGa.js +0 -1
  887. package/web-ui/build/static/ruby-Dqa0HtB4.js +0 -1
  888. package/web-ui/build/static/ruby-PeJYeL87.js +0 -1
  889. package/web-ui/build/static/ruleslanguage-vo3eM_mz.js +0 -1
  890. package/web-ui/build/static/rust-CwU6t4_Y.js +0 -1
  891. package/web-ui/build/static/rust-WXADYh9r.js +0 -1
  892. package/web-ui/build/static/sas-Cg6ADdDH.js +0 -1
  893. package/web-ui/build/static/sas-DWoEaeXv.js +0 -1
  894. package/web-ui/build/static/sass-DbHJHeBV.js +0 -1
  895. package/web-ui/build/static/scala-B6oE2QKr.js +0 -1
  896. package/web-ui/build/static/scala-NFQGPaYa.js +0 -1
  897. package/web-ui/build/static/scheme-C8Jx4oX7.js +0 -1
  898. package/web-ui/build/static/scheme-CUMBJaUf.js +0 -1
  899. package/web-ui/build/static/scilab-D1VqsdSy.js +0 -1
  900. package/web-ui/build/static/scss-CSH87oUD.js +0 -1
  901. package/web-ui/build/static/scss-GLX6NNDB.js +0 -1
  902. package/web-ui/build/static/shell-CbOhN21M.js +0 -1
  903. package/web-ui/build/static/shell-session-BQPdJJZS.js +0 -1
  904. package/web-ui/build/static/smali-BYbEOQX5.js +0 -1
  905. package/web-ui/build/static/smali-DcoYSibw.js +0 -1
  906. package/web-ui/build/static/smalltalk-CQkedD8N.js +0 -1
  907. package/web-ui/build/static/smalltalk-DihI81Cd.js +0 -1
  908. package/web-ui/build/static/smarty-RRvllERL.js +0 -1
  909. package/web-ui/build/static/sml-BJkMhBLU.js +0 -1
  910. package/web-ui/build/static/sml-Bm2IN0wP.js +0 -1
  911. package/web-ui/build/static/solidity-CsCW8kyX.js +0 -1
  912. package/web-ui/build/static/solution-file-B5YSxWQt.js +0 -1
  913. package/web-ui/build/static/soy-Dek2_YCW.js +0 -1
  914. package/web-ui/build/static/sparql-BeTxhWa4.js +0 -1
  915. package/web-ui/build/static/splunk-spl-hq6BW85c.js +0 -1
  916. package/web-ui/build/static/sqf-C-u4en-i.js +0 -1
  917. package/web-ui/build/static/sqf-DP0IhDYt.js +0 -1
  918. package/web-ui/build/static/sql-BzL0uonb.js +0 -1
  919. package/web-ui/build/static/sql-Zy6tV_us.js +0 -1
  920. package/web-ui/build/static/sql_more-BP2G6Vh5.js +0 -1
  921. package/web-ui/build/static/squirrel-C3MnMYx5.js +0 -1
  922. package/web-ui/build/static/stan-7iKo211G.js +0 -1
  923. package/web-ui/build/static/stan-C1lcIZjJ.js +0 -1
  924. package/web-ui/build/static/stata-DJ6GKcaw.js +0 -1
  925. package/web-ui/build/static/step21-Pg-uClDB.js +0 -1
  926. package/web-ui/build/static/stylus-DFAxYuRi.js +0 -1
  927. package/web-ui/build/static/stylus-DT6xc_Nv.js +0 -1
  928. package/web-ui/build/static/subunit-aGvGJXZZ.js +0 -1
  929. package/web-ui/build/static/swift-Sqmdmb4O.js +0 -1
  930. package/web-ui/build/static/swift-cUX-MVl4.js +0 -1
  931. package/web-ui/build/static/systemd-qIaU0Trg.js +0 -1
  932. package/web-ui/build/static/t4-cs-DtO6Bgg1.js +0 -1
  933. package/web-ui/build/static/t4-templating-DSSM2N5M.js +0 -1
  934. package/web-ui/build/static/t4-vb-tKIiE5uC.js +0 -1
  935. package/web-ui/build/static/taggerscript-Dt2Kgr-W.js +0 -1
  936. package/web-ui/build/static/tap-BMEgEMIk.js +0 -1
  937. package/web-ui/build/static/tap-C4TdzsNz.js +0 -1
  938. package/web-ui/build/static/tcl-B6k4Af9f.js +0 -1
  939. package/web-ui/build/static/tcl-Dq4_i5q5.js +0 -1
  940. package/web-ui/build/static/textile-C0uqAPk0.js +0 -1
  941. package/web-ui/build/static/thrift-DybQEjaA.js +0 -1
  942. package/web-ui/build/static/toml-DG1a2FSS.js +0 -1
  943. package/web-ui/build/static/tp-BwdfEEST.js +0 -1
  944. package/web-ui/build/static/tremor-JSTukmt-.js +0 -1
  945. package/web-ui/build/static/tsx-YUfsqzPf.js +0 -1
  946. package/web-ui/build/static/tt2-D9A_ACnF.js +0 -1
  947. package/web-ui/build/static/turtle-BKxwLa_-.js +0 -1
  948. package/web-ui/build/static/twig-BeEDK9Ri.js +0 -1
  949. package/web-ui/build/static/twig-TnOWwD7-.js +0 -1
  950. package/web-ui/build/static/typescript-BjZl8C3q.js +0 -1
  951. package/web-ui/build/static/typescript-qtW5Xh-j.js +0 -1
  952. package/web-ui/build/static/typoscript-Dj4sO7Jx.js +0 -1
  953. package/web-ui/build/static/unrealscript-DInimzNQ.js +0 -1
  954. package/web-ui/build/static/uorazor-B_9tFVKw.js +0 -1
  955. package/web-ui/build/static/uri-CTuMA7_k.js +0 -1
  956. package/web-ui/build/static/v-CvE0Ujqx.js +0 -1
  957. package/web-ui/build/static/vala-CLGf3xEs.js +0 -1
  958. package/web-ui/build/static/vala-Dm8LmEpm.js +0 -1
  959. package/web-ui/build/static/vbnet-Cwm2TjGP.js +0 -1
  960. package/web-ui/build/static/vbnet-LCd9GiMJ.js +0 -1
  961. package/web-ui/build/static/vbscript-DVj94_-y.js +0 -1
  962. package/web-ui/build/static/vbscript-html-CDHtSX-o.js +0 -1
  963. package/web-ui/build/static/velocity-C-OrhdDf.js +0 -1
  964. package/web-ui/build/static/verilog-Bh18N7TM.js +0 -1
  965. package/web-ui/build/static/verilog-C-YNXb8j.js +0 -1
  966. package/web-ui/build/static/vhdl-BFNm41_R.js +0 -1
  967. package/web-ui/build/static/vhdl-CyLgBDKk.js +0 -1
  968. package/web-ui/build/static/vim-BTafUqR0.js +0 -1
  969. package/web-ui/build/static/vim-Xg1pEHJe.js +0 -1
  970. package/web-ui/build/static/visual-basic-CDgUOlvq.js +0 -1
  971. package/web-ui/build/static/warpscript-1ELDmkt5.js +0 -1
  972. package/web-ui/build/static/wasm-C25KdQk5.js +0 -1
  973. package/web-ui/build/static/web-idl-CsdVYgpL.js +0 -1
  974. package/web-ui/build/static/wiki-4RrZuyhV.js +0 -1
  975. package/web-ui/build/static/wolfram-DMiRIwvp.js +0 -1
  976. package/web-ui/build/static/wren-Vk5PBcVB.js +0 -1
  977. package/web-ui/build/static/x86asm-D9TFTgye.js +0 -1
  978. package/web-ui/build/static/xeora-SAn_K3Ts.js +0 -1
  979. package/web-ui/build/static/xl-Da2Fl8D9.js +0 -1
  980. package/web-ui/build/static/xml-CeLm6l4V.js +0 -1
  981. package/web-ui/build/static/xml-doc-DypYH408.js +0 -1
  982. package/web-ui/build/static/xojo-CrfMiv1-.js +0 -1
  983. package/web-ui/build/static/xquery-8tOqVkgP.js +0 -1
  984. package/web-ui/build/static/xquery-CLOnNPtx.js +0 -1
  985. package/web-ui/build/static/yaml-CXiycPmU.js +0 -1
  986. package/web-ui/build/static/yaml-cIKjKW-H.js +0 -1
  987. package/web-ui/build/static/yang-KVshO9Ce.js +0 -1
  988. package/web-ui/build/static/zephir-B88JNqlj.js +0 -1
  989. package/web-ui/build/static/zig-C6GYIeFs.js +0 -1
@@ -0,0 +1,249 @@
1
+ /**
2
+ * Image format helpers for the imageTool.
3
+ *
4
+ * The image providers (Flux, GPT-Image-1.5, etc.) typically return PNG
5
+ * bytes, but our default output is now WebP — meaning we need real
6
+ * format conversion before saving to disk. This module owns:
7
+ *
8
+ * - Format resolution (what target format does the user want?)
9
+ * - Magic-byte detection (what format ARE the provider's bytes?)
10
+ * - Transcoding via sharp, with a graceful fallback if sharp fails
11
+ * to load (e.g. weird platform without prebuilt binaries — we'd
12
+ * rather save the original bytes than fail the whole render)
13
+ * - Filename ↔ format mapping
14
+ *
15
+ * Pure-ish: `transcodeIfNeeded` is the only function with side effects
16
+ * (calls sharp, which spins up native code). Everything else is sync
17
+ * + side-effect-free → easy to unit test.
18
+ *
19
+ * Why a separate file: keeps imageTool.js focused on orchestration and
20
+ * makes the format logic testable WITHOUT mocking the entire tool +
21
+ * its provider clients.
22
+ */
23
+
24
+ import path from 'path';
25
+
26
+ /** Canonical formats we read/write. */
27
+ export const SUPPORTED_FORMATS = Object.freeze(['png', 'jpeg', 'webp']);
28
+
29
+ /** Default output when the agent doesn't specify. */
30
+ export const DEFAULT_FORMAT = 'webp';
31
+
32
+ /**
33
+ * Map an extension or alias to a canonical format name. Returns null
34
+ * if the input doesn't map cleanly.
35
+ *
36
+ * - 'jpg' / 'jpeg' / '.jpg' / '.jpeg' → 'jpeg'
37
+ * - 'png' / '.png' → 'png'
38
+ * - 'webp' / '.webp' → 'webp'
39
+ */
40
+ export function normalizeFormat(input) {
41
+ if (typeof input !== 'string') return null;
42
+ const lower = input.trim().toLowerCase().replace(/^\./, '');
43
+ if (lower === 'jpg' || lower === 'jpeg') return 'jpeg';
44
+ if (lower === 'png') return 'png';
45
+ if (lower === 'webp') return 'webp';
46
+ return null;
47
+ }
48
+
49
+ /**
50
+ * The on-disk extension for a canonical format. JPEG → "jpg" (the more
51
+ * common file extension); PNG → "png"; WebP → "webp".
52
+ */
53
+ export function extensionFor(format) {
54
+ if (format === 'jpeg') return 'jpg';
55
+ if (format === 'png') return 'png';
56
+ if (format === 'webp') return 'webp';
57
+ return 'webp'; // fallback — should never hit if callers respect SUPPORTED_FORMATS
58
+ }
59
+
60
+ /**
61
+ * Decide what target format to write, given the agent's request.
62
+ *
63
+ * Priority:
64
+ * 1. outputPath extension (e.g. "foo.png" forces PNG, "foo.jpg" → JPEG)
65
+ * 2. outputType field (explicit format request)
66
+ * 3. DEFAULT_FORMAT ('webp')
67
+ *
68
+ * @param {object} args
69
+ * @param {string} [args.outputPath] May or may not have an extension.
70
+ * @param {string} [args.outputType] e.g. 'png' | 'webp' | 'jpg' — agent-friendly.
71
+ * @returns {{ format: 'png'|'jpeg'|'webp', source: 'extension'|'outputType'|'default' }}
72
+ */
73
+ export function resolveTargetFormat({ outputPath, outputType } = {}) {
74
+ if (typeof outputPath === 'string' && outputPath.length > 0) {
75
+ const ext = path.extname(outputPath);
76
+ const fmt = normalizeFormat(ext);
77
+ if (fmt) return { format: fmt, source: 'extension' };
78
+ }
79
+ if (outputType !== undefined && outputType !== null) {
80
+ const fmt = normalizeFormat(outputType);
81
+ if (fmt) return { format: fmt, source: 'outputType' };
82
+ }
83
+ return { format: DEFAULT_FORMAT, source: 'default' };
84
+ }
85
+
86
+ /**
87
+ * Sniff the encoded format of a buffer by inspecting the first few bytes.
88
+ * Returns null when nothing matches — caller then assumes "unknown" and
89
+ * MAY skip transcoding (safer than transcoding bytes we don't recognize).
90
+ *
91
+ * Magic-byte references:
92
+ * PNG : 89 50 4E 47 0D 0A 1A 0A
93
+ * JPEG : FF D8 FF
94
+ * WebP : "RIFF" .... "WEBP"
95
+ * GIF : "GIF87a" or "GIF89a" (we don't transcode but recognize)
96
+ * BMP : 42 4D
97
+ */
98
+ export function detectFormatFromBytes(buffer) {
99
+ if (!buffer || typeof buffer.length !== 'number' || buffer.length < 12) return null;
100
+ if (buffer[0] === 0x89 && buffer[1] === 0x50 && buffer[2] === 0x4E && buffer[3] === 0x47) return 'png';
101
+ if (buffer[0] === 0xFF && buffer[1] === 0xD8 && buffer[2] === 0xFF) return 'jpeg';
102
+ if (
103
+ buffer[0] === 0x52 && buffer[1] === 0x49 && buffer[2] === 0x46 && buffer[3] === 0x46 &&
104
+ buffer[8] === 0x57 && buffer[9] === 0x45 && buffer[10] === 0x42 && buffer[11] === 0x50
105
+ ) return 'webp';
106
+ if (buffer[0] === 0x47 && buffer[1] === 0x49 && buffer[2] === 0x46) return 'gif';
107
+ if (buffer[0] === 0x42 && buffer[1] === 0x4D) return 'bmp';
108
+ return null;
109
+ }
110
+
111
+ /**
112
+ * Lazy sharp loader. Caches the module after first import; re-attempts
113
+ * on null cache so a transient failure (e.g. concurrent install) doesn't
114
+ * permanently disable transcoding.
115
+ *
116
+ * Wrapped in try/catch — if the native module fails to load on the
117
+ * host (rare but possible on uncommon platforms), we report null and
118
+ * the caller falls back to writing raw provider bytes.
119
+ */
120
+ let _sharp = null;
121
+ let _sharpLoadAttempted = false;
122
+ let _sharpLoadError = null;
123
+ async function _getSharp() {
124
+ if (_sharp) return _sharp;
125
+ if (_sharpLoadAttempted && _sharpLoadError) {
126
+ // Retry once after a small grace period rather than caching the
127
+ // failure forever — node module resolution can race during install.
128
+ }
129
+ try {
130
+ const mod = await import('sharp');
131
+ _sharp = mod.default || mod;
132
+ _sharpLoadError = null;
133
+ return _sharp;
134
+ } catch (err) {
135
+ _sharpLoadAttempted = true;
136
+ _sharpLoadError = err;
137
+ return null;
138
+ }
139
+ }
140
+
141
+ /** Test-only — clear sharp cache so a subsequent call re-imports. */
142
+ export function _resetSharpCacheForTests() {
143
+ _sharp = null;
144
+ _sharpLoadAttempted = false;
145
+ _sharpLoadError = null;
146
+ }
147
+
148
+ /**
149
+ * Transcode `buffer` to `targetFormat`. Returns a result describing
150
+ * what happened so the caller can log + report:
151
+ *
152
+ * { buffer: <out>, transcoded: true, inputFormat: 'png', outputFormat: 'webp' }
153
+ * — sharp converted the bytes
154
+ * { buffer: <in>, transcoded: false, inputFormat: 'webp', outputFormat: 'webp', reason: 'already-target' }
155
+ * — input format already matches target; no work
156
+ * { buffer: <in>, transcoded: false, inputFormat: null, outputFormat: 'webp', reason: 'unknown-input' }
157
+ * — couldn't sniff input; safer to write bytes as-is
158
+ * { buffer: <in>, transcoded: false, inputFormat: 'png', outputFormat: 'webp', reason: 'sharp-unavailable', error }
159
+ * — sharp couldn't load; fall back to raw bytes
160
+ * { buffer: <in>, transcoded: false, inputFormat: 'png', outputFormat: 'webp', reason: 'transcode-failed', error }
161
+ * — sharp threw mid-transcode
162
+ *
163
+ * @param {Buffer} buffer
164
+ * @param {'png'|'jpeg'|'webp'} targetFormat
165
+ * @param {object} [opts]
166
+ * @param {number} [opts.quality=85] For JPEG/WebP. PNG ignores it.
167
+ * @param {object} [opts.logger]
168
+ */
169
+ export async function transcodeIfNeeded(buffer, targetFormat, opts = {}) {
170
+ const quality = Number.isFinite(opts.quality) ? opts.quality : 85;
171
+ const logger = opts.logger || null;
172
+ const inputFormat = detectFormatFromBytes(buffer);
173
+
174
+ // Already in the desired format — no work, no quality loss.
175
+ if (inputFormat && inputFormat === targetFormat) {
176
+ return { buffer, transcoded: false, inputFormat, outputFormat: targetFormat, reason: 'already-target' };
177
+ }
178
+ if (!inputFormat) {
179
+ logger?.warn?.('[imageFormat] could not sniff input format; writing bytes as-is', { targetFormat });
180
+ return { buffer, transcoded: false, inputFormat: null, outputFormat: targetFormat, reason: 'unknown-input' };
181
+ }
182
+ // GIF / BMP — sharp can read these but transcoding GIFs to webp
183
+ // animation requires more thought; for now write bytes as-is.
184
+ if (inputFormat === 'gif' || inputFormat === 'bmp') {
185
+ return { buffer, transcoded: false, inputFormat, outputFormat: targetFormat, reason: 'unsupported-input' };
186
+ }
187
+
188
+ const sharpFn = await _getSharp();
189
+ if (!sharpFn) {
190
+ logger?.warn?.('[imageFormat] sharp not available; writing bytes as-is', {
191
+ targetFormat,
192
+ error: _sharpLoadError?.message,
193
+ });
194
+ return {
195
+ buffer,
196
+ transcoded: false,
197
+ inputFormat,
198
+ outputFormat: targetFormat,
199
+ reason: 'sharp-unavailable',
200
+ error: _sharpLoadError,
201
+ };
202
+ }
203
+
204
+ try {
205
+ let pipeline = sharpFn(buffer);
206
+ if (targetFormat === 'webp') pipeline = pipeline.webp({ quality });
207
+ else if (targetFormat === 'jpeg') pipeline = pipeline.jpeg({ quality });
208
+ else if (targetFormat === 'png') pipeline = pipeline.png();
209
+ const out = await pipeline.toBuffer();
210
+ return { buffer: out, transcoded: true, inputFormat, outputFormat: targetFormat };
211
+ } catch (err) {
212
+ logger?.warn?.('[imageFormat] transcode failed; writing original bytes as-is', {
213
+ inputFormat, targetFormat, error: err?.message,
214
+ });
215
+ return {
216
+ buffer,
217
+ transcoded: false,
218
+ inputFormat,
219
+ outputFormat: targetFormat,
220
+ reason: 'transcode-failed',
221
+ error: err,
222
+ };
223
+ }
224
+ }
225
+
226
+ /**
227
+ * Convenience: if the user-supplied outputPath has no extension,
228
+ * append the target format's extension. Otherwise return as-is.
229
+ * (The agent might pass `images/foo` without an extension — we'd
230
+ * normally reject, but for the auto-extension case we just append.)
231
+ */
232
+ export function ensureExtension(outputPath, targetFormat) {
233
+ if (!outputPath || typeof outputPath !== 'string') return outputPath;
234
+ const ext = path.extname(outputPath);
235
+ if (ext && normalizeFormat(ext)) return outputPath;
236
+ return `${outputPath}.${extensionFor(targetFormat)}`;
237
+ }
238
+
239
+ export default {
240
+ SUPPORTED_FORMATS,
241
+ DEFAULT_FORMAT,
242
+ normalizeFormat,
243
+ extensionFor,
244
+ resolveTargetFormat,
245
+ detectFormatFromBytes,
246
+ transcodeIfNeeded,
247
+ ensureExtension,
248
+ _resetSharpCacheForTests,
249
+ };
@@ -8,6 +8,13 @@ import os from 'os';
8
8
  import { promises as fs } from 'fs';
9
9
  import { BaseTool } from './baseTool.js';
10
10
  import { getGalleryService } from '../services/galleryService.js';
11
+ import {
12
+ resolveTargetFormat,
13
+ transcodeIfNeeded,
14
+ extensionFor,
15
+ ensureExtension,
16
+ DEFAULT_FORMAT,
17
+ } from './imageFormat.js';
11
18
 
12
19
  /**
13
20
  * Configuration constants for image generation
@@ -224,19 +231,37 @@ export class ImageTool extends BaseTool {
224
231
  - Just output the command when you want to generate or edit an image
225
232
  - If generation fails, output a NEW command with corrections
226
233
 
227
- **USAGE — Generate:**
234
+ **USAGE — Generate (default WebP):**
228
235
  \`\`\`json
229
236
  {
230
237
  "toolId": "image-gen",
231
238
  "parameters": {
232
239
  "prompt": "Detailed description of the image",
233
- "outputPath": "images/filename.png",
240
+ "outputPath": "images/filename.webp",
234
241
  "size": "1024x1024"
235
242
  }
236
243
  }
237
244
  \`\`\`
238
245
 
239
- **USAGE — Generate with Transparency:**
246
+ **USAGE — Force PNG output (when you specifically need lossless / older-tool compat):**
247
+ \`\`\`json
248
+ {
249
+ "toolId": "image-gen",
250
+ "parameters": {
251
+ "prompt": "Pixel-art icon set on white",
252
+ "outputPath": "images/icons.png"
253
+ }
254
+ }
255
+ \`\`\`
256
+ Or, equivalently, with the explicit field:
257
+ \`\`\`json
258
+ {
259
+ "toolId": "image-gen",
260
+ "parameters": { "prompt": "Pixel-art icon set", "outputType": "png" }
261
+ }
262
+ \`\`\`
263
+
264
+ **USAGE — Generate with Transparency (WebP supports alpha):**
240
265
  \`\`\`json
241
266
  {
242
267
  "toolId": "image-gen",
@@ -244,7 +269,7 @@ export class ImageTool extends BaseTool {
244
269
  "prompt": "A cute fox mascot on a transparent background",
245
270
  "model": "gpt-image-1.5",
246
271
  "transparency": true,
247
- "outputPath": "images/fox-mascot.png"
272
+ "outputPath": "images/fox-mascot.webp"
248
273
  }
249
274
  }
250
275
  \`\`\`
@@ -257,14 +282,19 @@ export class ImageTool extends BaseTool {
257
282
  "prompt": "Remove the background and make it transparent",
258
283
  "sourceImage": "images/photo.png",
259
284
  "model": "gpt-image-1.5",
260
- "outputPath": "images/photo-nobg.png"
285
+ "outputPath": "images/photo-nobg.webp"
261
286
  }
262
287
  }
263
288
  \`\`\`
289
+ (The \`sourceImage\` can be any common format — PNG, JPEG, WebP, etc. The OUTPUT format is whatever you specify on \`outputPath\` / \`outputType\`, defaulting to WebP.)
264
290
 
265
291
  **Parameters:**
266
292
  - **prompt** (required): Description of image to generate OR editing instruction
267
293
  - **outputPath** (optional): Path to save image (permanent). Omit for temp file.
294
+ The file extension determines output format (.webp / .png / .jpg / .jpeg).
295
+ - **outputType** (optional): Explicit format request when outputPath has no extension
296
+ or is omitted: 'webp' | 'png' | 'jpg' | 'jpeg'. Default: 'webp'.
297
+ An outputPath extension always wins over outputType if both are present.
268
298
  - **size** (optional): WIDTHxHEIGHT or preset name. DIFFERENT MODELS ACCEPT DIFFERENT SIZES — read the rules below. Default: 1024x1024.
269
299
  - **quality** (optional): "standard" or "hd" (default: standard)
270
300
  - **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.
@@ -272,6 +302,13 @@ export class ImageTool extends BaseTool {
272
302
  - **mask** (optional): Path to mask image for editing (white=edit area, black=keep area)
273
303
  - **transparency** (optional): true to generate with transparent background (forces gpt-image-1.5)
274
304
 
305
+ **Output format (NEW default: WebP):**
306
+ The tool transcodes provider bytes (typically PNG) into WebP by default —
307
+ smaller files, same visual quality. Force PNG with either an explicit
308
+ .png extension on outputPath OR \`outputType: "png"\`. Pick PNG when you
309
+ need lossless graphics or animated GIFs would otherwise be needed; WebP
310
+ is the better default for photo-style outputs.
311
+
275
312
  ⚠ SIZE RULES — read before picking a size:
276
313
 
277
314
  (A) gpt-image-1.5 (auto-selected on transparency=true or sourceImage, or set explicitly):
@@ -391,10 +428,15 @@ Content moderation:
391
428
  */
392
429
  _parseImageParams(obj) {
393
430
  const outputPath = obj.outputPath || obj['output-path'] || null;
431
+ // Optional explicit format request. Accepts 'webp' (default if no
432
+ // outputPath ext), 'png', 'jpg' / 'jpeg'. The outputPath extension
433
+ // wins if both are present (handled in resolveTargetFormat).
434
+ const outputType = obj.outputType || obj['output-type'] || obj.format || null;
394
435
 
395
436
  return {
396
437
  prompt: obj.prompt || '',
397
438
  outputPath: outputPath,
439
+ outputType: outputType,
398
440
  saveToProject: outputPath !== null, // If path specified, save to project
399
441
  model: obj.model || IMAGE_CONFIG.DEFAULT_MODEL,
400
442
  size: obj.size || IMAGE_CONFIG.DEFAULT_SIZE,
@@ -417,10 +459,12 @@ Content moderation:
417
459
  };
418
460
 
419
461
  const outputPath = extractTag('output-path') || null;
462
+ const outputType = extractTag('output-type') || extractTag('format') || null;
420
463
 
421
464
  return {
422
465
  prompt: extractTag('prompt') || '',
423
466
  outputPath: outputPath,
467
+ outputType: outputType,
424
468
  saveToProject: outputPath !== null, // If path specified, save to project
425
469
  model: extractTag('model') || IMAGE_CONFIG.DEFAULT_MODEL,
426
470
  size: extractTag('size') || IMAGE_CONFIG.DEFAULT_SIZE,
@@ -468,6 +512,10 @@ Content moderation:
468
512
  sessionId,
469
513
  prompt: imageParams.prompt,
470
514
  outputPath: imageParams.outputPath,
515
+ // Explicit format request — used by the save path to decide the
516
+ // target format. Default behavior (no outputPath, no outputType):
517
+ // WebP. See imageFormat.resolveTargetFormat for precedence.
518
+ outputType: imageParams.outputType || null,
471
519
  saveToProject: imageParams.saveToProject,
472
520
  model: imageParams.model,
473
521
  size: imageParams.size,
@@ -1046,10 +1094,23 @@ Content moderation:
1046
1094
 
1047
1095
  try {
1048
1096
  if (b64Json) {
1049
- // Flux/GPT-Image response: Save base64 directly to disk
1097
+ // Flux/GPT-Image response: Save base64 to disk, transcoding to
1098
+ // the resolved target format (default webp). If transcoding
1099
+ // fails, the helper falls back to writing original bytes — the
1100
+ // call doesn't fail, but a warning is logged via the logger.
1050
1101
  this.logger?.info(`Saving base64 image to disk: ${resolvedOutputPath}`);
1051
- const imageBuffer = Buffer.from(b64Json, 'base64');
1052
- await fs.writeFile(resolvedOutputPath, imageBuffer);
1102
+ const rawBuffer = Buffer.from(b64Json, 'base64');
1103
+ const transcode = await transcodeIfNeeded(rawBuffer, job._targetFormat || DEFAULT_FORMAT, {
1104
+ quality: 85, logger: this.logger,
1105
+ });
1106
+ await fs.writeFile(resolvedOutputPath, transcode.buffer);
1107
+ if (transcode.transcoded) {
1108
+ this.logger?.info(`Image transcoded ${transcode.inputFormat} → ${transcode.outputFormat}`, {
1109
+ outputPath: resolvedOutputPath,
1110
+ inputBytes: rawBuffer.length,
1111
+ outputBytes: transcode.buffer.length,
1112
+ });
1113
+ }
1053
1114
 
1054
1115
  // Verify the file was actually written
1055
1116
  const stat = await fs.stat(resolvedOutputPath);
@@ -1063,9 +1124,9 @@ Content moderation:
1063
1124
  // For web display, we'll use our local server endpoint (set below)
1064
1125
  displayUrl = null; // Will be converted to web URL later
1065
1126
  } else if (imageUrl) {
1066
- // URL response: Download from URL
1127
+ // URL response: Download from URL, then transcode to target format.
1067
1128
  this.logger?.info(`Downloading image from URL: ${imageUrl.substring(0, 50)}...`);
1068
- await this._downloadImage(imageUrl, resolvedOutputPath);
1129
+ await this._downloadImage(imageUrl, resolvedOutputPath, job._targetFormat || DEFAULT_FORMAT);
1069
1130
 
1070
1131
  // Verify the file was actually written
1071
1132
  const stat = await fs.stat(resolvedOutputPath);
@@ -1114,15 +1175,30 @@ Content moderation:
1114
1175
  * @private
1115
1176
  */
1116
1177
  async _resolveOutputPath(job) {
1178
+ // Resolve target format ONCE here so the auto-generated filename
1179
+ // uses the right extension. Caller should also use job._targetFormat
1180
+ // (cached on the job) when transcoding bytes.
1181
+ const { format: targetFormat } = resolveTargetFormat({
1182
+ outputPath: job.outputPath,
1183
+ outputType: job.outputType,
1184
+ });
1185
+ job._targetFormat = targetFormat;
1186
+ const ext = extensionFor(targetFormat);
1187
+
1117
1188
  if (job.saveToProject) {
1118
1189
  // Save to project directory
1119
1190
  const projectDir = job.projectDir || process.cwd();
1120
1191
 
1121
1192
  let outputPath = job.outputPath;
1122
1193
  if (!outputPath) {
1123
- // Auto-generate filename
1194
+ // Auto-generate filename — DEFAULT format is webp now (was png).
1195
+ // Agents that need PNG must pass an explicit outputPath with
1196
+ // .png extension OR outputType:'png'.
1124
1197
  const timestamp = Date.now();
1125
- outputPath = `images/generated-${timestamp}.png`;
1198
+ outputPath = `images/generated-${timestamp}.${ext}`;
1199
+ } else {
1200
+ // Append format extension when the agent supplied a name without one
1201
+ outputPath = ensureExtension(outputPath, targetFormat);
1126
1202
  }
1127
1203
 
1128
1204
  const resolvedPath = path.isAbsolute(outputPath)
@@ -1149,9 +1225,10 @@ Content moderation:
1149
1225
  // Save to temp directory
1150
1226
  await fs.mkdir(this.tempDir, { recursive: true });
1151
1227
 
1228
+ // Temp dir path — same default-extension policy as project save.
1152
1229
  let filename = job.outputPath
1153
- ? path.basename(job.outputPath)
1154
- : `generated-${job.jobId}.png`;
1230
+ ? path.basename(ensureExtension(job.outputPath, targetFormat))
1231
+ : `generated-${job.jobId}.${ext}`;
1155
1232
 
1156
1233
  return path.join(this.tempDir, filename);
1157
1234
  }
@@ -1161,7 +1238,7 @@ Content moderation:
1161
1238
  * Download image from URL
1162
1239
  * @private
1163
1240
  */
1164
- async _downloadImage(imageUrl, outputPath) {
1241
+ async _downloadImage(imageUrl, outputPath, targetFormat = DEFAULT_FORMAT) {
1165
1242
  try {
1166
1243
  const response = await fetch(imageUrl, {
1167
1244
  signal: AbortSignal.timeout(IMAGE_CONFIG.DOWNLOAD_TIMEOUT)
@@ -1172,9 +1249,21 @@ Content moderation:
1172
1249
  }
1173
1250
 
1174
1251
  const buffer = Buffer.from(await response.arrayBuffer());
1175
- await fs.writeFile(outputPath, buffer);
1176
-
1177
- this.logger?.info(`Image saved to: ${outputPath}`);
1252
+ // Transcode to target format if needed (defensive: fallback writes
1253
+ // original bytes if sharp can't load — see imageFormat.js).
1254
+ const transcode = await transcodeIfNeeded(buffer, targetFormat, {
1255
+ quality: 85, logger: this.logger,
1256
+ });
1257
+ await fs.writeFile(outputPath, transcode.buffer);
1258
+ if (transcode.transcoded) {
1259
+ this.logger?.info(`Downloaded image transcoded ${transcode.inputFormat} → ${transcode.outputFormat}`, {
1260
+ outputPath,
1261
+ inputBytes: buffer.length,
1262
+ outputBytes: transcode.buffer.length,
1263
+ });
1264
+ } else {
1265
+ this.logger?.info(`Image saved to: ${outputPath}`);
1266
+ }
1178
1267
 
1179
1268
  } catch (error) {
1180
1269
  if (error.name === 'TimeoutError') {
@@ -178,6 +178,18 @@ IMPORTANT - COMPLETION TIMING: - Call this tool IMMEDIATELY when your task is co
178
178
  details: {
179
179
  type: 'string',
180
180
  description: 'Optional: Additional details about what was done, what failed, any files created, or next steps for the user'
181
+ },
182
+ outputs: {
183
+ // v2 flows: when this agent is running inside a flow node
184
+ // that declares typed outputs, populate this object with
185
+ // each declared field. Runtime validation rejects missing
186
+ // fields and triggers a retry — schema is permissive but
187
+ // runtime is strict. The text below is what the LLM sees
188
+ // alongside REQUIRED OUTPUTS in the system prompt; phrased
189
+ // strongly so model defaults toward including it.
190
+ type: 'object',
191
+ description: 'REQUIRED when your system prompt contains a "REQUIRED OUTPUTS" section (i.e. you are in a flow). Provide a JSON object with one key per declared output field name, holding the value matching the declared type. Example: if REQUIRED OUTPUTS lists "draft (text), wordCount (number)", emit outputs: { "draft": "<full text>", "wordCount": 850 }. Omitting any required field causes the flow node to fail and retry. Outside of flows this field is ignored.',
192
+ additionalProperties: true
181
193
  }
182
194
  },
183
195
  required: ['action', 'summary'],
@@ -217,6 +229,90 @@ IMPORTANT - COMPLETION TIMING: - Call this tool IMMEDIATELY when your task is co
217
229
  }
218
230
 
219
231
  const agentId = context.agentId;
232
+
233
+ // Phase 8: when this agent is running inside a flow node with
234
+ // declared outputs, validate action.outputs against the contract
235
+ // BEFORE signaling completion. Returning a tool error here gives
236
+ // the model immediate feedback in its current response cycle —
237
+ // it can re-call jobdone with the missing fields populated, no
238
+ // executor round-trip, no conversation reset.
239
+ //
240
+ // Falls through (no validation) when not in a flow OR when the
241
+ // node has no declared outputs — keeps non-flow uses untouched.
242
+ let activeFlowContract = null;
243
+ if (this.flowExecutor && agentId && typeof this.flowExecutor.getActiveContract === 'function') {
244
+ activeFlowContract = this.flowExecutor.getActiveContract(agentId);
245
+ }
246
+ if (activeFlowContract) {
247
+ const contract = activeFlowContract;
248
+ if (contract && Array.isArray(contract.outputs) && contract.outputs.length > 0) {
249
+ const provided = (action.outputs && typeof action.outputs === 'object') ? action.outputs : {};
250
+ const missing = [];
251
+ for (const decl of contract.outputs) {
252
+ if (!decl || typeof decl.name !== 'string') continue;
253
+ if (!(decl.name in provided) || provided[decl.name] === null || provided[decl.name] === undefined) {
254
+ missing.push(decl);
255
+ }
256
+ }
257
+ if (missing.length > 0) {
258
+ const declList = contract.outputs
259
+ .map(o => ` • ${o.name}: ${o.type}${o.description ? ` — ${o.description}` : ''}`).join('\n');
260
+ const exampleEntries = contract.outputs.map(o => {
261
+ let exVal = '<value>';
262
+ if (o.example !== undefined && o.example !== null) {
263
+ try { exVal = JSON.stringify(o.example); } catch {}
264
+ } else {
265
+ // Type-specific placeholders
266
+ if (o.type === 'text') exVal = '"<your text>"';
267
+ else if (o.type === 'number') exVal = '0';
268
+ else if (o.type === 'boolean') exVal = 'true';
269
+ else if (o.type === 'json') exVal = '{ "key": "value" }';
270
+ else if (o.type === 'file') exVal = '"/path/to/file"';
271
+ else if (o.type === 'file[]') exVal = '["/path/to/file"]';
272
+ else if (o.type === 'list<text>') exVal = '["item 1", "item 2"]';
273
+ }
274
+ return ` "${o.name}": ${exVal}`;
275
+ }).join(',\n');
276
+ const errorMsg =
277
+ `Cannot complete: missing required output field(s): ${missing.map(m => m.name).join(', ')}.
278
+
279
+ This step's flow node declares ALL of these outputs:
280
+ ${declList}
281
+
282
+ Re-call jobdone with EVERY field above populated in the "outputs" object.
283
+ Use this exact shape (replace placeholder values with your real content):
284
+
285
+ {
286
+ "toolId": "jobdone",
287
+ "actions": [{
288
+ "action": "complete",
289
+ "summary": "<your summary>",
290
+ "outputs": {
291
+ ${exampleEntries}
292
+ }
293
+ }]
294
+ }
295
+
296
+ The flow CANNOT proceed until all required output fields are populated.`;
297
+
298
+ this.logger?.info(`JobDone: Rejected — flow contract missing outputs`, {
299
+ agentId,
300
+ missing: missing.map(m => m.name),
301
+ declared: contract.outputs.map(o => o.name),
302
+ });
303
+
304
+ return {
305
+ success: false,
306
+ error: errorMsg,
307
+ output: errorMsg,
308
+ taskComplete: false,
309
+ flowContractViolation: true,
310
+ missingOutputs: missing.map(m => m.name),
311
+ };
312
+ }
313
+ }
314
+ }
315
+
220
316
  let agent = null;
221
317
  let agentInfo = '';
222
318
 
@@ -239,7 +335,16 @@ IMPORTANT - COMPLETION TIMING: - Call this tool IMMEDIATELY when your task is co
239
335
  // If there are pending tasks and the agent claims success, reject.
240
336
  // The agent must clear/complete its task list first.
241
337
  // Exception: success=false means the agent is giving up (stuck/unable to proceed).
242
- if (pendingTasks.length > 0 && action.success !== false) {
338
+ //
339
+ // Flow exception: when this agent is running inside a flow node, the
340
+ // Phase 8 contract validation above is the authoritative gate. The
341
+ // task list contains scheduler-poke artifacts (auto-created from
342
+ // queued user messages) that aren't real "user-tracked work" — they
343
+ // exist purely so the scheduler picks the agent up. Letting the
344
+ // legacy pendingTasks check fire here would block legitimate
345
+ // contract-correct job-done calls and force the agent into a
346
+ // taskmanager dance for tasks the user never actually authored.
347
+ if (pendingTasks.length > 0 && action.success !== false && !activeFlowContract) {
243
348
  const taskListStr = pendingTasks
244
349
  .map((t, i) => `${i + 1}. [${t.status}] ${t.title}`)
245
350
  .join('\n');
@@ -284,12 +389,15 @@ IMPORTANT - COMPLETION TIMING: - Call this tool IMMEDIATELY when your task is co
284
389
  agent.lastCompletionDetails = action.details || null;
285
390
  await this.agentPool.persistAgentState(agentId);
286
391
 
287
- // Signal flow executor directly (if agent is running inside a flow)
392
+ // Signal flow executor directly (if agent is running inside a flow).
393
+ // v2: forward structured `outputs` bag verbatim — the executor
394
+ // validates it against the node's declared contract.
288
395
  if (this.flowExecutor) {
289
396
  this.flowExecutor.notifyAgentCompletion(agentId, {
290
397
  summary: action.summary,
291
398
  details: action.details,
292
- success: isSuccessful
399
+ success: isSuccessful,
400
+ outputs: action.outputs
293
401
  });
294
402
  }
295
403