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.
- package/package.json +1 -1
- package/src/core/__tests__/agentPoolToolConfig.test.js +191 -0
- package/src/core/__tests__/agentPoolWakeOnMessage.test.js +315 -0
- package/src/core/__tests__/messageProcessor.test.js +42 -0
- package/src/core/__tests__/orchestrator.test.js +22 -6
- package/src/core/agentPool.js +118 -25
- package/src/core/agentScheduler.js +28 -4
- package/src/core/messageProcessor.js +19 -1
- package/src/core/orchestrator.js +13 -6
- package/src/interfaces/__tests__/galleryRoutes.test.js +219 -0
- package/src/interfaces/__tests__/videoJobsRoutes.test.js +179 -0
- package/src/interfaces/webServer.js +220 -2
- package/src/services/__tests__/agentActivityService.test.js +83 -0
- package/src/services/__tests__/aiService.reasoningTokens.test.js +66 -0
- package/src/services/__tests__/aiService.stream.test.js +305 -0
- package/src/services/__tests__/channelFilter.test.js +4 -2
- package/src/services/__tests__/channelRelay.integration.test.js +1 -1
- package/src/services/__tests__/conversationQuery.reasoning.test.js +102 -0
- package/src/services/__tests__/galleryService.test.js +225 -0
- package/src/services/__tests__/toolCallBridgeContract.test.js +127 -0
- package/src/services/agentActivityService.js +25 -4
- package/src/services/aiService.js +180 -91
- package/src/services/conversationQuery.js +26 -0
- package/src/services/galleryService.js +257 -0
- package/src/tools/__tests__/agentCommunicationTool.test.js +114 -0
- package/src/tools/__tests__/baseTool.getEffectiveConfig.test.js +77 -0
- package/src/tools/__tests__/baseTool.test.js +471 -420
- package/src/tools/__tests__/filesystemTool.test.js +98 -0
- package/src/tools/__tests__/imageTool.sizeValidation.test.js +134 -0
- package/src/tools/__tests__/imageTool.validator.test.js +194 -0
- package/src/tools/__tests__/memoryTool.reminisce.test.js +33 -0
- package/src/tools/__tests__/terminalTool.test.js +64 -0
- package/src/tools/__tests__/videoTool.jobs.test.js +147 -0
- package/src/tools/__tests__/webTool.perAgentConfig.test.js +94 -0
- package/src/tools/agentCommunicationTool.js +33 -22
- package/src/tools/baseTool.js +980 -899
- package/src/tools/fileSystemTool.js +76 -2
- package/src/tools/imageTool.js +282 -44
- package/src/tools/memoryTool.js +4 -0
- package/src/tools/taskManagerTool.js +13 -2
- package/src/tools/terminalTool.js +62 -2
- package/src/tools/videoTool.js +126 -0
- package/src/tools/webTool.js +65 -1
- package/src/utilities/__tests__/logger.safeStringify.test.js +124 -0
- package/src/utilities/logger.js +51 -7
- package/src/utilities/userDataDir.js +3 -0
- package/web-ui/build/index.html +2 -2
- package/web-ui/build/static/1c-BdLpzMAL.js +1 -0
- package/web-ui/build/static/abap-CDwRvs0G.js +1 -0
- package/web-ui/build/static/abnf-BI7p3j5a.js +1 -0
- package/web-ui/build/static/abnf-CNv3r7Uy.js +1 -0
- package/web-ui/build/static/accesslog-C06B6TeF.js +1 -0
- package/web-ui/build/static/actionscript-4rvU1xh_.js +1 -0
- package/web-ui/build/static/actionscript-hzeSNpz-.js +1 -0
- package/web-ui/build/static/ada-BKQHlNbk.js +1 -0
- package/web-ui/build/static/ada-C-cG6Cnx.js +1 -0
- package/web-ui/build/static/agda-BLGp6bzV.js +1 -0
- package/web-ui/build/static/al-D1v7f7zb.js +1 -0
- package/web-ui/build/static/angelscript-C6fH5Phl.js +1 -0
- package/web-ui/build/static/antlr4-CkeL19Pe.js +1 -0
- package/web-ui/build/static/apache-JdORoIBq.js +1 -0
- package/web-ui/build/static/apacheconf-CapiFi2H.js +1 -0
- package/web-ui/build/static/apex-B9woB7hA.js +1 -0
- package/web-ui/build/static/apl-lmFlegeo.js +1 -0
- package/web-ui/build/static/applescript-BHhW-aLP.js +1 -0
- package/web-ui/build/static/applescript-ss_o-t9Q.js +1 -0
- package/web-ui/build/static/aql-BLNeECob.js +1 -0
- package/web-ui/build/static/arcade-CFXIdOiD.js +1 -0
- package/web-ui/build/static/arduino-BnvFM4Uv.js +1 -0
- package/web-ui/build/static/arduino-COqLsxBH.js +1 -0
- package/web-ui/build/static/arff-D29LT0W3.js +1 -0
- package/web-ui/build/static/armasm-4vnDbtEO.js +1 -0
- package/web-ui/build/static/asciidoc-B5enjW-U.js +1 -0
- package/web-ui/build/static/asciidoc-DXDLuzat.js +1 -0
- package/web-ui/build/static/asm6502-BlmY96A-.js +1 -0
- package/web-ui/build/static/asmatmel-DsTJaam3.js +1 -0
- package/web-ui/build/static/aspectj-CWKdyALZ.js +1 -0
- package/web-ui/build/static/aspnet-BMb5ovzr.js +1 -0
- package/web-ui/build/static/autohotkey-Bnt4L8Sq.js +1 -0
- package/web-ui/build/static/autohotkey-FJP6t7LP.js +1 -0
- package/web-ui/build/static/autoit-D_uma-t5.js +1 -0
- package/web-ui/build/static/autoit-tV1DvCag.js +1 -0
- package/web-ui/build/static/avisynth-C3EGWRqZ.js +1 -0
- package/web-ui/build/static/avrasm-SPYupzKN.js +1 -0
- package/web-ui/build/static/avro-idl-BVy35bGz.js +1 -0
- package/web-ui/build/static/awk-bd20WYWO.js +1 -0
- package/web-ui/build/static/axapta-rMrFdrRa.js +1 -0
- package/web-ui/build/static/bash-B6JbRSpw.js +1 -0
- package/web-ui/build/static/bash-CjDn8CS1.js +1 -0
- package/web-ui/build/static/basic-1cr_KdjO.js +1 -0
- package/web-ui/build/static/basic-VjzNgL1A.js +1 -0
- package/web-ui/build/static/batch-xKrSAbnh.js +1 -0
- package/web-ui/build/static/bbcode-D_oXQoMX.js +1 -0
- package/web-ui/build/static/bicep-DHCLyehu.js +1 -0
- package/web-ui/build/static/birb-LnKeXfOt.js +1 -0
- package/web-ui/build/static/bison-D1Y9rGkL.js +1 -0
- package/web-ui/build/static/bnf-Dmfxl80x.js +1 -0
- package/web-ui/build/static/bnf-Dr4hlA3O.js +1 -0
- package/web-ui/build/static/brainfuck-BLTIahWA.js +1 -0
- package/web-ui/build/static/brainfuck-DfZP16Cx.js +1 -0
- package/web-ui/build/static/brightscript-YT7Nr8GN.js +1 -0
- package/web-ui/build/static/bro-Cn2KhPkj.js +1 -0
- package/web-ui/build/static/bsl-DFyeWkvL.js +1 -0
- package/web-ui/build/static/c-B8jd4ks-.js +1 -0
- package/web-ui/build/static/c-CTVZoi8i.js +1 -0
- package/web-ui/build/static/c-like-BYR8sR5E.js +1 -0
- package/web-ui/build/static/cal-D7KqKxTg.js +1 -0
- package/web-ui/build/static/capnproto-Bl9dDXU4.js +1 -0
- package/web-ui/build/static/ceylon-DrCHmREL.js +1 -0
- package/web-ui/build/static/cfscript-C0sNdmMo.js +1 -0
- package/web-ui/build/static/chaiscript-LgrVMZR5.js +1 -0
- package/web-ui/build/static/cil-CCNfQAo8.js +1 -0
- package/web-ui/build/static/clean-DDw0s_-o.js +1 -0
- package/web-ui/build/static/clojure-BFxsxcbQ.js +1 -0
- package/web-ui/build/static/clojure-BgMU8fA8.js +1 -0
- package/web-ui/build/static/clojure-repl-C174HUrZ.js +1 -0
- package/web-ui/build/static/cmake-C6hjTvGt.js +1 -0
- package/web-ui/build/static/cmake-CcnmaxXV.js +1 -0
- package/web-ui/build/static/cobol-DiLCdCf7.js +1 -0
- package/web-ui/build/static/coffeescript-CGB29Opz.js +1 -0
- package/web-ui/build/static/coffeescript-DV3V4J6g.js +1 -0
- package/web-ui/build/static/concurnas-Cgdt5ES1.js +1 -0
- package/web-ui/build/static/coq-BbiJDyLq.js +1 -0
- package/web-ui/build/static/coq-DvsBabEJ.js +1 -0
- package/web-ui/build/static/cos-B7_pvH_X.js +1 -0
- package/web-ui/build/static/cpp-416w6yHT.js +1 -0
- package/web-ui/build/static/cpp-pz382MTt.js +1 -0
- package/web-ui/build/static/crmsh-BeYTFuCW.js +1 -0
- package/web-ui/build/static/crystal-BRtDR8RG.js +1 -0
- package/web-ui/build/static/crystal-BZJgl_sw.js +1 -0
- package/web-ui/build/static/csharp-BQ-0v8VA.js +1 -0
- package/web-ui/build/static/csharp-MlHfKRW4.js +1 -0
- package/web-ui/build/static/cshtml-DtS0T24q.js +1 -0
- package/web-ui/build/static/csp-6DGTWGnA.js +1 -0
- package/web-ui/build/static/csp-CvvAXfUJ.js +1 -0
- package/web-ui/build/static/css-DJmvg-kI.js +1 -0
- package/web-ui/build/static/css-extras-qVKXZ1K5.js +1 -0
- package/web-ui/build/static/csv-HN89Dabm.js +1 -0
- package/web-ui/build/static/cypher-zqUo_NN4.js +1 -0
- package/web-ui/build/static/d-BDzMr17q.js +1 -0
- package/web-ui/build/static/d-DV4MmaJ0.js +1 -0
- package/web-ui/build/static/dart-BFkAPQxN.js +1 -0
- package/web-ui/build/static/dart-mlgsSLDz.js +1 -0
- package/web-ui/build/static/dataweave-BQWIxcgu.js +1 -0
- package/web-ui/build/static/dax-FY1jMN3E.js +1 -0
- package/web-ui/build/static/delphi-D85b-0Yr.js +1 -0
- package/web-ui/build/static/dhall-C8db-g46.js +1 -0
- package/web-ui/build/static/diff-BHBVMWZm.js +1 -0
- package/web-ui/build/static/diff-Bet-lyrd.js +1 -0
- package/web-ui/build/static/django-CFm4coNe.js +1 -0
- package/web-ui/build/static/django-DN9SMkSp.js +1 -0
- package/web-ui/build/static/dns-C4yo4DHG.js +1 -0
- package/web-ui/build/static/dns-zone-file-B3o4w8rf.js +1 -0
- package/web-ui/build/static/docker-BxxsATcw.js +1 -0
- package/web-ui/build/static/dockerfile-BKIud8Xh.js +1 -0
- package/web-ui/build/static/dos-G9yNAV_a.js +1 -0
- package/web-ui/build/static/dot-CdN-GBnW.js +1 -0
- package/web-ui/build/static/dsconfig-DZ5R9lQR.js +1 -0
- package/web-ui/build/static/dts-DwetpYRu.js +1 -0
- package/web-ui/build/static/dust-DzEHgUuI.js +1 -0
- package/web-ui/build/static/ebnf-COJZCCYQ.js +1 -0
- package/web-ui/build/static/ebnf-CkdHWCBJ.js +1 -0
- package/web-ui/build/static/editorconfig-Bd3ywZZQ.js +1 -0
- package/web-ui/build/static/eiffel-C1Qk3pq5.js +1 -0
- package/web-ui/build/static/ejs-DxCI_S1L.js +1 -0
- package/web-ui/build/static/elixir-BIIHBb4p.js +1 -0
- package/web-ui/build/static/elixir-Cs4wFfMY.js +1 -0
- package/web-ui/build/static/elm-CXqZthrB.js +1 -0
- package/web-ui/build/static/elm-DBguvIDg.js +1 -0
- package/web-ui/build/static/erb-BPbVhlMt.js +1 -0
- package/web-ui/build/static/erb-DvRAcKbN.js +1 -0
- package/web-ui/build/static/erlang-BUKDJMhm.js +1 -0
- package/web-ui/build/static/erlang-iWD1_psr.js +1 -0
- package/web-ui/build/static/erlang-repl-CjXC9U4C.js +1 -0
- package/web-ui/build/static/etlua-nQ8GCNAu.js +1 -0
- package/web-ui/build/static/excel-D8YfiDAv.js +1 -0
- package/web-ui/build/static/excel-formula-CdZZRE7Y.js +1 -0
- package/web-ui/build/static/factor-wiNoX051.js +1 -0
- package/web-ui/build/static/false-CsZdI-HD.js +1 -0
- package/web-ui/build/static/firestore-security-rules-9yXT_i-6.js +1 -0
- package/web-ui/build/static/fix-BsV5RZTa.js +1 -0
- package/web-ui/build/static/flix-rATD1-Qx.js +1 -0
- package/web-ui/build/static/flow-B4UMzoDr.js +1 -0
- package/web-ui/build/static/fortran-CavcrRz8.js +1 -0
- package/web-ui/build/static/fortran-DVZjWi__.js +1 -0
- package/web-ui/build/static/fsharp-BCVsmzkR.js +1 -0
- package/web-ui/build/static/fsharp-Cj6zPGzQ.js +1 -0
- package/web-ui/build/static/ftl-C5VdFKkz.js +1 -0
- package/web-ui/build/static/gams-CT90XmM8.js +1 -0
- package/web-ui/build/static/gap-Ch518Ngd.js +1 -0
- package/web-ui/build/static/gauss-DTmMb1xB.js +1 -0
- package/web-ui/build/static/gcode-BLc6YjFp.js +1 -0
- package/web-ui/build/static/gcode-DYtkCbZZ.js +1 -0
- package/web-ui/build/static/gdscript-xrcGCBEi.js +1 -0
- package/web-ui/build/static/gedcom-DMOuE70a.js +1 -0
- package/web-ui/build/static/gherkin-BoEzs1SS.js +1 -0
- package/web-ui/build/static/gherkin-DHanA7dz.js +1 -0
- package/web-ui/build/static/git-BwT7p7t_.js +1 -0
- package/web-ui/build/static/glsl-C3_TTBJ-.js +1 -0
- package/web-ui/build/static/glsl-Do3cCE-W.js +1 -0
- package/web-ui/build/static/gml-CWSUBiZ2.js +1 -0
- package/web-ui/build/static/gml-wrCAzzgE.js +1 -0
- package/web-ui/build/static/gn-DqmZ0Qq_.js +1 -0
- package/web-ui/build/static/go-DLiparlr.js +1 -0
- package/web-ui/build/static/go-i67Zsx3x.js +1 -0
- package/web-ui/build/static/go-module-S33FcrvV.js +1 -0
- package/web-ui/build/static/golo-DZ7qHIok.js +1 -0
- package/web-ui/build/static/gradle-BTVIAud8.js +1 -0
- package/web-ui/build/static/graphql-BRc7dV6d.js +1 -0
- package/web-ui/build/static/groovy-C0xCDIoi.js +1 -0
- package/web-ui/build/static/groovy-CqfENDj5.js +1 -0
- package/web-ui/build/static/haml-DGEmWQaf.js +1 -0
- package/web-ui/build/static/haml-Uc13XeLh.js +1 -0
- package/web-ui/build/static/handlebars-2pDOu-qZ.js +1 -0
- package/web-ui/build/static/handlebars-fvNs6C2z.js +1 -0
- package/web-ui/build/static/haskell-C_0PdpI7.js +1 -0
- package/web-ui/build/static/haskell-DPiywQAr.js +1 -0
- package/web-ui/build/static/haxe-B-Jmpi4X.js +1 -0
- package/web-ui/build/static/haxe-BnwqHNBF.js +1 -0
- package/web-ui/build/static/hcl-BkCp99Ns.js +1 -0
- package/web-ui/build/static/hlsl-Dhtz76rF.js +1 -0
- package/web-ui/build/static/hoon-DLvY-xJE.js +1 -0
- package/web-ui/build/static/hpkp-DqGdkrWa.js +1 -0
- package/web-ui/build/static/hsp-uyhbGChx.js +1 -0
- package/web-ui/build/static/hsts-B_hdMfTA.js +1 -0
- package/web-ui/build/static/htmlbars-DBm6s2XZ.js +1 -0
- package/web-ui/build/static/http-BJx-7pVa.js +1 -0
- package/web-ui/build/static/http-BNr6-Kd5.js +1 -0
- package/web-ui/build/static/hy-CCeD6Z5O.js +1 -0
- package/web-ui/build/static/ichigojam-HlQ9_0Cd.js +1 -0
- package/web-ui/build/static/icon-BVRGWnBS.js +1 -0
- package/web-ui/build/static/icu-message-format-DrOF-VCL.js +1 -0
- package/web-ui/build/static/idris-BTtsUKQZ.js +1 -0
- package/web-ui/build/static/iecst-C8fkotHg.js +1 -0
- package/web-ui/build/static/ignore-9L0_iQf0.js +1 -0
- package/web-ui/build/static/index-5biw7ctT.js +1 -0
- package/web-ui/build/static/index-C6XLF9dS.js +734 -0
- package/web-ui/build/static/index-CTO5ggyx.css +1 -0
- package/web-ui/build/static/index-CU7QxI6e.js +13 -0
- package/web-ui/build/static/inform7-DrLS7QKe.js +1 -0
- package/web-ui/build/static/inform7-GeduJ02-.js +1 -0
- package/web-ui/build/static/ini-ClRWklj4.js +1 -0
- package/web-ui/build/static/ini-CnWkQt74.js +1 -0
- package/web-ui/build/static/io-DLrwKpJi.js +1 -0
- package/web-ui/build/static/irpf90-D2n0wokI.js +1 -0
- package/web-ui/build/static/isbl-DF3cf2zG.js +1 -0
- package/web-ui/build/static/j-DFQ008Ab.js +1 -0
- package/web-ui/build/static/java-BXn0NYGW.js +1 -0
- package/web-ui/build/static/java-DwyOtG2R.js +1 -0
- package/web-ui/build/static/javadoc-7lKDS9yO.js +1 -0
- package/web-ui/build/static/javadoclike-UZC5a-I2.js +1 -0
- package/web-ui/build/static/javascript-BVwVipxy.js +1 -0
- package/web-ui/build/static/javastacktrace-Dysb6pma.js +1 -0
- package/web-ui/build/static/jboss-cli-DnBJbhvD.js +1 -0
- package/web-ui/build/static/jexl-Xt80RITf.js +1 -0
- package/web-ui/build/static/jolie-K583lEAy.js +1 -0
- package/web-ui/build/static/jq-DzZu56Cz.js +1 -0
- package/web-ui/build/static/js-extras-Cnbo_FPE.js +1 -0
- package/web-ui/build/static/js-templates-ChGVoxvZ.js +1 -0
- package/web-ui/build/static/jsdoc-7PKg08vo.js +1 -0
- package/web-ui/build/static/json-CS8btz_1.js +1 -0
- package/web-ui/build/static/json-NWyA8Y-S.js +1 -0
- package/web-ui/build/static/json5-BTuuCOka.js +1 -0
- package/web-ui/build/static/jsonp-CddCenzG.js +1 -0
- package/web-ui/build/static/jsstacktrace-Iz7J77qQ.js +1 -0
- package/web-ui/build/static/jsx-KHA4XV99.js +1 -0
- package/web-ui/build/static/julia-DBE7YTR3.js +1 -0
- package/web-ui/build/static/julia-DhbxCJBI.js +1 -0
- package/web-ui/build/static/julia-repl-DMdm1IG1.js +1 -0
- package/web-ui/build/static/keepalived-B7vqYV9X.js +1 -0
- package/web-ui/build/static/keyman-BgxIO8fq.js +1 -0
- package/web-ui/build/static/kotlin-DkKt1c_W.js +1 -0
- package/web-ui/build/static/kotlin-DkVwHXV3.js +1 -0
- package/web-ui/build/static/kumir-ByisfWMX.js +1 -0
- package/web-ui/build/static/kusto-D0PVadiC.js +1 -0
- package/web-ui/build/static/lasso-DUqlKJ-V.js +1 -0
- package/web-ui/build/static/latex-B_KNiR3P.js +1 -0
- package/web-ui/build/static/latex-CAna5qNt.js +1 -0
- package/web-ui/build/static/latte-IGkHLrSc.js +1 -0
- package/web-ui/build/static/ldif-COEZfOAo.js +1 -0
- package/web-ui/build/static/leaf-zSqkBknP.js +1 -0
- package/web-ui/build/static/less-BZ7CLYuK.js +1 -0
- package/web-ui/build/static/less-DTOaHWfJ.js +1 -0
- package/web-ui/build/static/lilypond-CXVSkLeK.js +1 -0
- package/web-ui/build/static/liquid-C-anTr0A.js +1 -0
- package/web-ui/build/static/lisp-CadxWoyo.js +1 -0
- package/web-ui/build/static/lisp-hkvi2iDB.js +1 -0
- package/web-ui/build/static/livecodeserver-CHrsuOkQ.js +1 -0
- package/web-ui/build/static/livescript-B3gz-3aB.js +1 -0
- package/web-ui/build/static/livescript-DnHL9ghu.js +1 -0
- package/web-ui/build/static/llvm-BahggCBp.js +1 -0
- package/web-ui/build/static/llvm-CmHdko4Y.js +1 -0
- package/web-ui/build/static/log-Czikd_pI.js +1 -0
- package/web-ui/build/static/lolcode-Ch49C9Zh.js +1 -0
- package/web-ui/build/static/lsl-C-VWBCeP.js +1 -0
- package/web-ui/build/static/lua-CUvtI6AS.js +1 -0
- package/web-ui/build/static/lua-z6ZTYh0E.js +1 -0
- package/web-ui/build/static/magma-n2Gm1_JJ.js +1 -0
- package/web-ui/build/static/makefile-CV719aL9.js +1 -0
- package/web-ui/build/static/makefile-D3XU9qyi.js +1 -0
- package/web-ui/build/static/markdown-B7ecawDo.js +1 -0
- package/web-ui/build/static/markdown-BAZuKAWm.js +1 -0
- package/web-ui/build/static/markup-templating-CkJ0kvIz.js +1 -0
- package/web-ui/build/static/mathematica-DeYzfKBj.js +1 -0
- package/web-ui/build/static/matlab-CkL4qFcf.js +1 -0
- package/web-ui/build/static/matlab-DyeBcYxN.js +1 -0
- package/web-ui/build/static/maxima-BYkoTgQQ.js +1 -0
- package/web-ui/build/static/maxscript-DF4yyx_y.js +1 -0
- package/web-ui/build/static/mel-Cvinm-ul.js +1 -0
- package/web-ui/build/static/mel-DuhIFj6N.js +1 -0
- package/web-ui/build/static/mercury-BgIQH4Io.js +1 -0
- package/web-ui/build/static/mermaid-Cu_HXPUU.js +1 -0
- package/web-ui/build/static/mipsasm-Bgjx3kJk.js +1 -0
- package/web-ui/build/static/mizar-D6qzNoqS.js +1 -0
- package/web-ui/build/static/mizar-_PkxIqXq.js +1 -0
- package/web-ui/build/static/mojolicious-DUGLQPxV.js +1 -0
- package/web-ui/build/static/mongodb-BLMBcuTL.js +1 -0
- package/web-ui/build/static/monkey-C5k7PFu0.js +1 -0
- package/web-ui/build/static/monkey-DXGsKsbX.js +1 -0
- package/web-ui/build/static/moonscript-1TthCNMT.js +1 -0
- package/web-ui/build/static/moonscript-DqJs0-Md.js +1 -0
- package/web-ui/build/static/n1ql-Bwd4nK-7.js +1 -0
- package/web-ui/build/static/n1ql-hfjCkL2y.js +1 -0
- package/web-ui/build/static/n4js-gwCvxndi.js +1 -0
- package/web-ui/build/static/nand2tetris-hdl-CRRkn3L9.js +1 -0
- package/web-ui/build/static/naniscript-C_wnlSUo.js +1 -0
- package/web-ui/build/static/nasm-DX-Dob1L.js +1 -0
- package/web-ui/build/static/neon-vJIHxlBH.js +1 -0
- package/web-ui/build/static/nevod-Bax1uE4z.js +1 -0
- package/web-ui/build/static/nginx-BQS7w2F8.js +1 -0
- package/web-ui/build/static/nginx-Bt8431vM.js +1 -0
- package/web-ui/build/static/nim-0PFojGir.js +1 -0
- package/web-ui/build/static/nim-BQVxzPdc.js +1 -0
- package/web-ui/build/static/nix-C1td4KJd.js +1 -0
- package/web-ui/build/static/nix-CGOaQ4S_.js +1 -0
- package/web-ui/build/static/node-repl-BsAGA-kF.js +1 -0
- package/web-ui/build/static/nsis-B8d23hVv.js +1 -0
- package/web-ui/build/static/nsis-CRfGDpKw.js +1 -0
- package/web-ui/build/static/objectivec-CVrobj9V.js +1 -0
- package/web-ui/build/static/objectivec-DcVwp8g9.js +1 -0
- package/web-ui/build/static/ocaml-b8Cm2pBQ.js +1 -0
- package/web-ui/build/static/ocaml-mP-4C0uB.js +1 -0
- package/web-ui/build/static/opencl--Qo9pjSM.js +1 -0
- package/web-ui/build/static/openqasm-Dt7vKzox.js +1 -0
- package/web-ui/build/static/openscad-By-SEqIm.js +1 -0
- package/web-ui/build/static/oxygene-BifGHmAP.js +1 -0
- package/web-ui/build/static/oz-DHXFoY_V.js +1 -0
- package/web-ui/build/static/parigp-CQEx84-o.js +1 -0
- package/web-ui/build/static/parser-DevuQ_YA.js +1 -0
- package/web-ui/build/static/parser3-IBmULMjM.js +1 -0
- package/web-ui/build/static/pascal-hHG_VNBq.js +1 -0
- package/web-ui/build/static/pascaligo-DcXZnXMD.js +1 -0
- package/web-ui/build/static/pcaxis-paqvl2ov.js +1 -0
- package/web-ui/build/static/peoplecode-T-lVjo6Q.js +1 -0
- package/web-ui/build/static/perl-BrrOfxJA.js +1 -0
- package/web-ui/build/static/perl-DwF9DDkX.js +1 -0
- package/web-ui/build/static/pf-CCvQZiY2.js +1 -0
- package/web-ui/build/static/pgsql-DYZXTARb.js +1 -0
- package/web-ui/build/static/php-C8P7LrqU.js +1 -0
- package/web-ui/build/static/php-Jh4xpwhM.js +1 -0
- package/web-ui/build/static/php-extras-Ddj6zZ2a.js +1 -0
- package/web-ui/build/static/php-template-D0846ZMl.js +1 -0
- package/web-ui/build/static/phpdoc-DU8hHiT4.js +1 -0
- package/web-ui/build/static/plaintext-BpAdoq1j.js +1 -0
- package/web-ui/build/static/plsql-DjRpUwV7.js +1 -0
- package/web-ui/build/static/pony-C91UDOZB.js +1 -0
- package/web-ui/build/static/powerquery-CbFt66kY.js +1 -0
- package/web-ui/build/static/powershell-Bpd_CmgV.js +1 -0
- package/web-ui/build/static/powershell-C0-63tFn.js +1 -0
- package/web-ui/build/static/processing-COoELNkd.js +1 -0
- package/web-ui/build/static/processing-DovufXGj.js +1 -0
- package/web-ui/build/static/profile-DSijKis_.js +1 -0
- package/web-ui/build/static/prolog-BPJoWbIS.js +1 -0
- package/web-ui/build/static/prolog-Cs4I3Exr.js +1 -0
- package/web-ui/build/static/promql-aIfsISjo.js +1 -0
- package/web-ui/build/static/properties-DWHgjzpz.js +1 -0
- package/web-ui/build/static/properties-k4Dmn8BE.js +1 -0
- package/web-ui/build/static/protobuf-HvnZbIjE.js +1 -0
- package/web-ui/build/static/protobuf-bqbMMmGn.js +1 -0
- package/web-ui/build/static/psl-KbjBRrbA.js +1 -0
- package/web-ui/build/static/pug-DJVp_q_q.js +1 -0
- package/web-ui/build/static/puppet-DloEWvDZ.js +1 -0
- package/web-ui/build/static/puppet-WFgyaopG.js +1 -0
- package/web-ui/build/static/pure-483zjlGE.js +1 -0
- package/web-ui/build/static/purebasic-CZ8DdKkF.js +1 -0
- package/web-ui/build/static/purebasic-dlQReKmz.js +1 -0
- package/web-ui/build/static/purescript-BQnFvaU3.js +1 -0
- package/web-ui/build/static/python-CZ8lWs1l.js +1 -0
- package/web-ui/build/static/python-SU3ESoh4.js +1 -0
- package/web-ui/build/static/python-repl-BBkzrvQe.js +1 -0
- package/web-ui/build/static/q-DTmVFt9r.js +1 -0
- package/web-ui/build/static/q-DtzT8sxS.js +1 -0
- package/web-ui/build/static/qml-B5F36arQ.js +1 -0
- package/web-ui/build/static/qml-BGRIPpl3.js +1 -0
- package/web-ui/build/static/qore-CRS2zeE4.js +1 -0
- package/web-ui/build/static/qsharp-C4Tv2HNI.js +1 -0
- package/web-ui/build/static/r-BrIQscI_.js +1 -0
- package/web-ui/build/static/r-C1dTwrK3.js +1 -0
- package/web-ui/build/static/racket-CY5XtMxt.js +1 -0
- package/web-ui/build/static/reason-BOspKOui.js +1 -0
- package/web-ui/build/static/reasonml-CI0bWekr.js +1 -0
- package/web-ui/build/static/regex-Bu9fRM2h.js +1 -0
- package/web-ui/build/static/rego-DPs1L6rM.js +1 -0
- package/web-ui/build/static/renpy-CqxG8TUa.js +1 -0
- package/web-ui/build/static/rest-DVBf_JOU.js +1 -0
- package/web-ui/build/static/rib-C7f1MpLJ.js +1 -0
- package/web-ui/build/static/rip-CnDVKjn3.js +1 -0
- package/web-ui/build/static/roboconf-B3CDWS-p.js +1 -0
- package/web-ui/build/static/roboconf-Cl96yvBS.js +1 -0
- package/web-ui/build/static/robotframework-BitHYBrT.js +1 -0
- package/web-ui/build/static/routeros-CfrP9irD.js +1 -0
- package/web-ui/build/static/rsl-CGblvP8t.js +1 -0
- package/web-ui/build/static/ruby-CJyKAxoz.js +1 -0
- package/web-ui/build/static/ruby-KT7L0c-N.js +1 -0
- package/web-ui/build/static/ruleslanguage-_MWgFm9V.js +1 -0
- package/web-ui/build/static/rust-DAiMZG-s.js +1 -0
- package/web-ui/build/static/rust-Dmpa9JNg.js +1 -0
- package/web-ui/build/static/sas-CQltIY6v.js +1 -0
- package/web-ui/build/static/sas-aM67MfcZ.js +1 -0
- package/web-ui/build/static/sass-DEBoFRRa.js +1 -0
- package/web-ui/build/static/scala-Cd5U29aY.js +1 -0
- package/web-ui/build/static/scala-DzaGwcFi.js +1 -0
- package/web-ui/build/static/scheme-Cqqy_i9p.js +1 -0
- package/web-ui/build/static/scheme-cIT7gYIT.js +1 -0
- package/web-ui/build/static/scilab-DkyaqVYN.js +1 -0
- package/web-ui/build/static/scss-Cyi-dRZB.js +1 -0
- package/web-ui/build/static/scss-D_mUdkix.js +1 -0
- package/web-ui/build/static/shell-BF_xfQdX.js +1 -0
- package/web-ui/build/static/shell-session-C4TwlI5u.js +1 -0
- package/web-ui/build/static/smali-CvYqcvZD.js +1 -0
- package/web-ui/build/static/smali-DdJm0lGk.js +1 -0
- package/web-ui/build/static/smalltalk-B4v_uFAj.js +1 -0
- package/web-ui/build/static/smalltalk-BHk9orPf.js +1 -0
- package/web-ui/build/static/smarty-DCURdYbE.js +1 -0
- package/web-ui/build/static/sml-BFUDbMt7.js +1 -0
- package/web-ui/build/static/sml-BIbfLMH_.js +1 -0
- package/web-ui/build/static/solidity-fyryqi43.js +1 -0
- package/web-ui/build/static/solution-file-DoPZY9rL.js +1 -0
- package/web-ui/build/static/soy-AjVmvggx.js +1 -0
- package/web-ui/build/static/sparql-C4-CLrDw.js +1 -0
- package/web-ui/build/static/splunk-spl-DclxQT5j.js +1 -0
- package/web-ui/build/static/sqf-CuCGayd3.js +1 -0
- package/web-ui/build/static/sqf-uK9OZDXX.js +1 -0
- package/web-ui/build/static/sql-B0Pqn1rt.js +1 -0
- package/web-ui/build/static/sql-DlNrMSaF.js +1 -0
- package/web-ui/build/static/sql_more-BmwYd1jA.js +1 -0
- package/web-ui/build/static/squirrel-PzIoP6WH.js +1 -0
- package/web-ui/build/static/stan-BZe07EwD.js +1 -0
- package/web-ui/build/static/stan-De1mVh5w.js +1 -0
- package/web-ui/build/static/stata-Dt6KIbHG.js +1 -0
- package/web-ui/build/static/step21-5If4hNHF.js +1 -0
- package/web-ui/build/static/stylus-Cfsl-liy.js +1 -0
- package/web-ui/build/static/stylus-V2q0pGFi.js +1 -0
- package/web-ui/build/static/subunit-Dw4nCzI8.js +1 -0
- package/web-ui/build/static/swift-CNMLwgfO.js +1 -0
- package/web-ui/build/static/swift-HUQ5YZQh.js +1 -0
- package/web-ui/build/static/systemd-C8DE2Z5C.js +1 -0
- package/web-ui/build/static/t4-cs-C_Ey5AJK.js +1 -0
- package/web-ui/build/static/t4-templating-DwnTc5zw.js +1 -0
- package/web-ui/build/static/t4-vb-C-0KWoPY.js +1 -0
- package/web-ui/build/static/taggerscript-Bv6_taGx.js +1 -0
- package/web-ui/build/static/tap-CFDvzug8.js +1 -0
- package/web-ui/build/static/tap-CdJ_Enrg.js +1 -0
- package/web-ui/build/static/tcl-BAEseFnT.js +1 -0
- package/web-ui/build/static/tcl-BS59XADk.js +1 -0
- package/web-ui/build/static/textile-a8y5rAtB.js +1 -0
- package/web-ui/build/static/thrift-D7V-eNGh.js +1 -0
- package/web-ui/build/static/toml-D8cwTEse.js +1 -0
- package/web-ui/build/static/tp-hIAhc2bK.js +1 -0
- package/web-ui/build/static/tremor-Czk4wryK.js +1 -0
- package/web-ui/build/static/tsx-BOeSrzC2.js +1 -0
- package/web-ui/build/static/tt2-BHVJTkSt.js +1 -0
- package/web-ui/build/static/turtle-BOWLWZq7.js +1 -0
- package/web-ui/build/static/twig-CiL22hfc.js +1 -0
- package/web-ui/build/static/twig-fnjh9nSd.js +1 -0
- package/web-ui/build/static/typescript-BXgo8AbH.js +1 -0
- package/web-ui/build/static/typescript-Bd_EcNlS.js +1 -0
- package/web-ui/build/static/typoscript-OvQoCcN-.js +1 -0
- package/web-ui/build/static/unrealscript-Dw9u3aN1.js +1 -0
- package/web-ui/build/static/uorazor-BYmWZy9R.js +1 -0
- package/web-ui/build/static/uri-cZEKPhfB.js +1 -0
- package/web-ui/build/static/v-DCUw5P5w.js +1 -0
- package/web-ui/build/static/vala-BeMIXdl5.js +1 -0
- package/web-ui/build/static/vala-Dchv0k-k.js +1 -0
- package/web-ui/build/static/vbnet-CYNUkFEn.js +1 -0
- package/web-ui/build/static/vbnet-DJpHrZ4P.js +1 -0
- package/web-ui/build/static/vbscript-html-eSFLndJq.js +1 -0
- package/web-ui/build/static/vbscript-uo6pZmjr.js +1 -0
- package/web-ui/build/static/velocity-BZ4IThJR.js +1 -0
- package/web-ui/build/static/verilog-CaEouCrk.js +1 -0
- package/web-ui/build/static/verilog-D_yjfQsL.js +1 -0
- package/web-ui/build/static/vhdl-3zobHypY.js +1 -0
- package/web-ui/build/static/vhdl-DfMoYPtq.js +1 -0
- package/web-ui/build/static/vim-DBVHHc5J.js +1 -0
- package/web-ui/build/static/vim-DillbvCO.js +1 -0
- package/web-ui/build/static/visual-basic-C7H7McST.js +1 -0
- package/web-ui/build/static/warpscript-BKjx-dEN.js +1 -0
- package/web-ui/build/static/wasm-AVgQyIgy.js +1 -0
- package/web-ui/build/static/web-idl-BNNIYzG6.js +1 -0
- package/web-ui/build/static/wiki-CLfpaX63.js +1 -0
- package/web-ui/build/static/wolfram-DUecju0s.js +1 -0
- package/web-ui/build/static/wren-DOzRaRuS.js +1 -0
- package/web-ui/build/static/x86asm-FxnmOy9a.js +1 -0
- package/web-ui/build/static/xeora-u3RdEzzL.js +1 -0
- package/web-ui/build/static/xl-DRkSDCgX.js +1 -0
- package/web-ui/build/static/xml-d39yV6YW.js +1 -0
- package/web-ui/build/static/xml-doc-CAsyFkZk.js +1 -0
- package/web-ui/build/static/xojo-C82wULba.js +1 -0
- package/web-ui/build/static/xquery-CdvxjAIl.js +1 -0
- package/web-ui/build/static/xquery-ClPcUh76.js +1 -0
- package/web-ui/build/static/yaml-C5_f2N79.js +1 -0
- package/web-ui/build/static/yaml-ZJm6Uydk.js +1 -0
- package/web-ui/build/static/yang-BR7aZNbT.js +1 -0
- package/web-ui/build/static/zephir-CnL3vXXJ.js +1 -0
- package/web-ui/build/static/zig-e5ovIuAu.js +1 -0
- package/web-ui/build/static/1c-D-8ReLUQ.js +0 -1
- package/web-ui/build/static/abap-NvrQD84d.js +0 -1
- package/web-ui/build/static/abnf-BxKbzF6d.js +0 -1
- package/web-ui/build/static/abnf-gQpmRWjd.js +0 -1
- package/web-ui/build/static/accesslog-BQLUo5Gi.js +0 -1
- package/web-ui/build/static/actionscript-3TeMZFpQ.js +0 -1
- package/web-ui/build/static/actionscript-w6DEnLr3.js +0 -1
- package/web-ui/build/static/ada-87XHdEXs.js +0 -1
- package/web-ui/build/static/ada-QztkYmC7.js +0 -1
- package/web-ui/build/static/agda-CUYeMLgB.js +0 -1
- package/web-ui/build/static/al-DrDn2-sA.js +0 -1
- package/web-ui/build/static/angelscript-D3Qw8kQa.js +0 -1
- package/web-ui/build/static/antlr4-CWEEpQ5q.js +0 -1
- package/web-ui/build/static/apache-Bme3xfdp.js +0 -1
- package/web-ui/build/static/apacheconf-BKOfs-cp.js +0 -1
- package/web-ui/build/static/apex-DswYOikL.js +0 -1
- package/web-ui/build/static/apl-CizhojF3.js +0 -1
- package/web-ui/build/static/applescript-D9M6q0r7.js +0 -1
- package/web-ui/build/static/applescript-DpP5T055.js +0 -1
- package/web-ui/build/static/aql-BqAlaha9.js +0 -1
- package/web-ui/build/static/arcade-DobNWm8j.js +0 -1
- package/web-ui/build/static/arduino-BeuGL09r.js +0 -1
- package/web-ui/build/static/arduino-BiF5cC7x.js +0 -1
- package/web-ui/build/static/arff-2H9PyLDr.js +0 -1
- package/web-ui/build/static/armasm-B6wc18B0.js +0 -1
- package/web-ui/build/static/asciidoc-DUF4xPDI.js +0 -1
- package/web-ui/build/static/asciidoc-TBH4m8SR.js +0 -1
- package/web-ui/build/static/asm6502-CzTI2B-y.js +0 -1
- package/web-ui/build/static/asmatmel-BYN0Xd3T.js +0 -1
- package/web-ui/build/static/aspectj-DXCMDgp7.js +0 -1
- package/web-ui/build/static/aspnet-lOvDpvP_.js +0 -1
- package/web-ui/build/static/autohotkey-CICk12uK.js +0 -1
- package/web-ui/build/static/autohotkey-DrG81PVL.js +0 -1
- package/web-ui/build/static/autoit-DFemtuhG.js +0 -1
- package/web-ui/build/static/autoit-D_K-jEWY.js +0 -1
- package/web-ui/build/static/avisynth-DOnmgjBO.js +0 -1
- package/web-ui/build/static/avrasm-rMDuGPFy.js +0 -1
- package/web-ui/build/static/avro-idl-CH5Xk5PQ.js +0 -1
- package/web-ui/build/static/awk-BvyFWX3C.js +0 -1
- package/web-ui/build/static/axapta-BWmF5MqT.js +0 -1
- package/web-ui/build/static/bash-Coyd2GnL.js +0 -1
- package/web-ui/build/static/bash-DSdj70Nv.js +0 -1
- package/web-ui/build/static/basic-CflyLZ31.js +0 -1
- package/web-ui/build/static/basic-Cs6QyVqS.js +0 -1
- package/web-ui/build/static/batch-DCDtzw83.js +0 -1
- package/web-ui/build/static/bbcode-MWdW7azN.js +0 -1
- package/web-ui/build/static/bicep-jQ4zhAw9.js +0 -1
- package/web-ui/build/static/birb-9f7Itiod.js +0 -1
- package/web-ui/build/static/bison-CIIUW5Cl.js +0 -1
- package/web-ui/build/static/bnf-B2w55bnT.js +0 -1
- package/web-ui/build/static/bnf-CUlbZGe7.js +0 -1
- package/web-ui/build/static/brainfuck-CaJZ1LRc.js +0 -1
- package/web-ui/build/static/brainfuck-eIkhMKej.js +0 -1
- package/web-ui/build/static/brightscript-BSLnJVmJ.js +0 -1
- package/web-ui/build/static/bro-YVCWDbPj.js +0 -1
- package/web-ui/build/static/bsl-Nm0_B_oa.js +0 -1
- package/web-ui/build/static/c-Dv7lr1UK.js +0 -1
- package/web-ui/build/static/c-like-C9IU26FO.js +0 -1
- package/web-ui/build/static/c-pfS3v02M.js +0 -1
- package/web-ui/build/static/cal-D4re7xDS.js +0 -1
- package/web-ui/build/static/capnproto-Dy75AQ6u.js +0 -1
- package/web-ui/build/static/ceylon-BNtjB2q0.js +0 -1
- package/web-ui/build/static/cfscript-8X2NpMn_.js +0 -1
- package/web-ui/build/static/chaiscript-CoXaTTY-.js +0 -1
- package/web-ui/build/static/cil-BluyliW6.js +0 -1
- package/web-ui/build/static/clean-Bj15gq3Q.js +0 -1
- package/web-ui/build/static/clojure-BH5xTDBp.js +0 -1
- package/web-ui/build/static/clojure-BqHsfJwr.js +0 -1
- package/web-ui/build/static/clojure-repl-B32b9bLV.js +0 -1
- package/web-ui/build/static/cmake-CyTE-1A0.js +0 -1
- package/web-ui/build/static/cmake-hiJ0lXa-.js +0 -1
- package/web-ui/build/static/cobol-BBnQUH8E.js +0 -1
- package/web-ui/build/static/coffeescript-BjrsNhLL.js +0 -1
- package/web-ui/build/static/coffeescript-C7WO1c8O.js +0 -1
- package/web-ui/build/static/concurnas-9EpupFAI.js +0 -1
- package/web-ui/build/static/coq-C-tt6nZE.js +0 -1
- package/web-ui/build/static/coq-CLCiqFzC.js +0 -1
- package/web-ui/build/static/cos-BQC1_Gov.js +0 -1
- package/web-ui/build/static/cpp-CH4XSTo7.js +0 -1
- package/web-ui/build/static/cpp-K8F2XScQ.js +0 -1
- package/web-ui/build/static/crmsh-DztNtPne.js +0 -1
- package/web-ui/build/static/crystal-kBqCeXtW.js +0 -1
- package/web-ui/build/static/crystal-sVG_HS9o.js +0 -1
- package/web-ui/build/static/csharp-4pb9Wc--.js +0 -1
- package/web-ui/build/static/csharp-D5QaxB-K.js +0 -1
- package/web-ui/build/static/cshtml-Cpytn-LL.js +0 -1
- package/web-ui/build/static/csp-BH6fPZVZ.js +0 -1
- package/web-ui/build/static/csp-WrjFExbk.js +0 -1
- package/web-ui/build/static/css-DJxZ20Kx.js +0 -1
- package/web-ui/build/static/css-extras-DwoO5sHq.js +0 -1
- package/web-ui/build/static/csv-DJb1XTwb.js +0 -1
- package/web-ui/build/static/cypher-CFN05H9J.js +0 -1
- package/web-ui/build/static/d-COFI-yfM.js +0 -1
- package/web-ui/build/static/d-DYHnLAnt.js +0 -1
- package/web-ui/build/static/dart-Bw35nKGj.js +0 -1
- package/web-ui/build/static/dart-C5gnqL08.js +0 -1
- package/web-ui/build/static/dataweave-DG_2euLu.js +0 -1
- package/web-ui/build/static/dax-BSpzdHUe.js +0 -1
- package/web-ui/build/static/delphi-Cl5NRXvZ.js +0 -1
- package/web-ui/build/static/dhall-CNefJtoo.js +0 -1
- package/web-ui/build/static/diff-DhqUs0Iy.js +0 -1
- package/web-ui/build/static/diff-KGSf4pWL.js +0 -1
- package/web-ui/build/static/django-5TgWQjd4.js +0 -1
- package/web-ui/build/static/django-DavZW8FP.js +0 -1
- package/web-ui/build/static/dns-CuF6RAET.js +0 -1
- package/web-ui/build/static/dns-zone-file-BcBMQ0BR.js +0 -1
- package/web-ui/build/static/docker-Dht8jS2j.js +0 -1
- package/web-ui/build/static/dockerfile-CjjL85ki.js +0 -1
- package/web-ui/build/static/dos-CVoaOHAQ.js +0 -1
- package/web-ui/build/static/dot-QcLwKXVK.js +0 -1
- package/web-ui/build/static/dsconfig-_1R6hLzq.js +0 -1
- package/web-ui/build/static/dts-B_Dzxmb6.js +0 -1
- package/web-ui/build/static/dust-xRpJXkxU.js +0 -1
- package/web-ui/build/static/ebnf-DPK9Hid-.js +0 -1
- package/web-ui/build/static/ebnf-OVlya1yQ.js +0 -1
- package/web-ui/build/static/editorconfig-CbCWWNal.js +0 -1
- package/web-ui/build/static/eiffel-CShmAG_u.js +0 -1
- package/web-ui/build/static/ejs-Dybq4vcI.js +0 -1
- package/web-ui/build/static/elixir-CzXoWmCJ.js +0 -1
- package/web-ui/build/static/elixir-DKVoqGbI.js +0 -1
- package/web-ui/build/static/elm-DfJge1Cy.js +0 -1
- package/web-ui/build/static/elm-wTttagz6.js +0 -1
- package/web-ui/build/static/erb-BqJOty-L.js +0 -1
- package/web-ui/build/static/erb-DEcQyddF.js +0 -1
- package/web-ui/build/static/erlang-DR0S8Dbq.js +0 -1
- package/web-ui/build/static/erlang-foLyt35P.js +0 -1
- package/web-ui/build/static/erlang-repl-KGaauP1D.js +0 -1
- package/web-ui/build/static/etlua-i5bjc318.js +0 -1
- package/web-ui/build/static/excel-Bxn-_4FK.js +0 -1
- package/web-ui/build/static/excel-formula-C3ittGUe.js +0 -1
- package/web-ui/build/static/factor-Cq9BFfPi.js +0 -1
- package/web-ui/build/static/false-Bq1Og8uV.js +0 -1
- package/web-ui/build/static/firestore-security-rules-BuWMvGkh.js +0 -1
- package/web-ui/build/static/fix-CJH3csBZ.js +0 -1
- package/web-ui/build/static/flix-DZVFkMZK.js +0 -1
- package/web-ui/build/static/flow-DGvt9eNT.js +0 -1
- package/web-ui/build/static/fortran-CRMIJaq3.js +0 -1
- package/web-ui/build/static/fortran-DYMWvRQk.js +0 -1
- package/web-ui/build/static/fsharp-DsngWUfx.js +0 -1
- package/web-ui/build/static/fsharp-iEMP2hGc.js +0 -1
- package/web-ui/build/static/ftl-6XZ6kVeO.js +0 -1
- package/web-ui/build/static/gams-BPxwyKlw.js +0 -1
- package/web-ui/build/static/gap-LiwKb7bd.js +0 -1
- package/web-ui/build/static/gauss-BMq9hJW2.js +0 -1
- package/web-ui/build/static/gcode-BhUKSjaC.js +0 -1
- package/web-ui/build/static/gcode-b-DQdN2W.js +0 -1
- package/web-ui/build/static/gdscript-DIZ0_yTx.js +0 -1
- package/web-ui/build/static/gedcom-B-Don8Su.js +0 -1
- package/web-ui/build/static/gherkin-BioIAP1n.js +0 -1
- package/web-ui/build/static/gherkin-Cly_guds.js +0 -1
- package/web-ui/build/static/git-CopW8z0r.js +0 -1
- package/web-ui/build/static/glsl-6ssjFzwf.js +0 -1
- package/web-ui/build/static/glsl-E_uyFQdl.js +0 -1
- package/web-ui/build/static/gml-CaO1S6wu.js +0 -1
- package/web-ui/build/static/gml-D9DYjC5y.js +0 -1
- package/web-ui/build/static/gn-B_qqVpR0.js +0 -1
- package/web-ui/build/static/go-DFaKy1Ay.js +0 -1
- package/web-ui/build/static/go-JLTG1uU-.js +0 -1
- package/web-ui/build/static/go-module-BGp5Ey97.js +0 -1
- package/web-ui/build/static/golo-BlbGqaMN.js +0 -1
- package/web-ui/build/static/gradle-wqmsj6uh.js +0 -1
- package/web-ui/build/static/graphql-7RIdAO4i.js +0 -1
- package/web-ui/build/static/groovy-3icIp5xU.js +0 -1
- package/web-ui/build/static/groovy-HPI8s9_9.js +0 -1
- package/web-ui/build/static/haml-CTkGGR02.js +0 -1
- package/web-ui/build/static/haml-Thxu3S1L.js +0 -1
- package/web-ui/build/static/handlebars-1DoYlhi8.js +0 -1
- package/web-ui/build/static/handlebars-i1BBTCzR.js +0 -1
- package/web-ui/build/static/haskell-A1VYHFSA.js +0 -1
- package/web-ui/build/static/haskell-C_DMih9U.js +0 -1
- package/web-ui/build/static/haxe-Cz5x4sAD.js +0 -1
- package/web-ui/build/static/haxe-DYRFmKkv.js +0 -1
- package/web-ui/build/static/hcl-BRcB2lym.js +0 -1
- package/web-ui/build/static/hlsl-DkyhfHB3.js +0 -1
- package/web-ui/build/static/hoon-Droh_30T.js +0 -1
- package/web-ui/build/static/hpkp-DTAbnc4g.js +0 -1
- package/web-ui/build/static/hsp-C0QnJZWI.js +0 -1
- package/web-ui/build/static/hsts-C21QOmcz.js +0 -1
- package/web-ui/build/static/htmlbars-Bjlkvm5m.js +0 -1
- package/web-ui/build/static/http-D0nJQkzK.js +0 -1
- package/web-ui/build/static/http-DRz4r8bD.js +0 -1
- package/web-ui/build/static/hy-BqiXsF4N.js +0 -1
- package/web-ui/build/static/ichigojam-BQi7PpBN.js +0 -1
- package/web-ui/build/static/icon-BufrPPND.js +0 -1
- package/web-ui/build/static/icu-message-format-BGFhE2gJ.js +0 -1
- package/web-ui/build/static/idris-CDCGxwUo.js +0 -1
- package/web-ui/build/static/iecst-CdwPGvCO.js +0 -1
- package/web-ui/build/static/ignore-CHdDzb39.js +0 -1
- package/web-ui/build/static/index-C9Fa_kgD.css +0 -1
- package/web-ui/build/static/index-D1KAbjnI.js +0 -1
- package/web-ui/build/static/index-DBYkW2lx.js +0 -13
- package/web-ui/build/static/index-DsoPopge.js +0 -727
- package/web-ui/build/static/inform7-Bpq3UO5w.js +0 -1
- package/web-ui/build/static/inform7-DmXu-aMH.js +0 -1
- package/web-ui/build/static/ini-DWUEQKxG.js +0 -1
- package/web-ui/build/static/ini-t3XdjCfA.js +0 -1
- package/web-ui/build/static/io-DfElp6yx.js +0 -1
- package/web-ui/build/static/irpf90-fx9_FB-t.js +0 -1
- package/web-ui/build/static/isbl-CcrRysr8.js +0 -1
- package/web-ui/build/static/j--Jx3nGHC.js +0 -1
- package/web-ui/build/static/java-OOMeJRRQ.js +0 -1
- package/web-ui/build/static/java-OTyqE2m1.js +0 -1
- package/web-ui/build/static/javadoc-CD-HiYEY.js +0 -1
- package/web-ui/build/static/javadoclike-CLv1_76Z.js +0 -1
- package/web-ui/build/static/javascript-C_j1lHAa.js +0 -1
- package/web-ui/build/static/javastacktrace-CIsSL13b.js +0 -1
- package/web-ui/build/static/jboss-cli-C9HktJFq.js +0 -1
- package/web-ui/build/static/jexl-Doro4Jcm.js +0 -1
- package/web-ui/build/static/jolie-C5wL2YdC.js +0 -1
- package/web-ui/build/static/jq-Bmi3HMEP.js +0 -1
- package/web-ui/build/static/js-extras-CQyLxL3s.js +0 -1
- package/web-ui/build/static/js-templates-DAigrjqA.js +0 -1
- package/web-ui/build/static/jsdoc-BJ_oa4xn.js +0 -1
- package/web-ui/build/static/json--C9O_45y.js +0 -1
- package/web-ui/build/static/json-CSGkCpU2.js +0 -1
- package/web-ui/build/static/json5-CcxKJla0.js +0 -1
- package/web-ui/build/static/jsonp-DjUgPOz0.js +0 -1
- package/web-ui/build/static/jsstacktrace-BpOw_ymZ.js +0 -1
- package/web-ui/build/static/jsx-otTTuJ8X.js +0 -1
- package/web-ui/build/static/julia-B1n4YHpM.js +0 -1
- package/web-ui/build/static/julia-bi12E6me.js +0 -1
- package/web-ui/build/static/julia-repl-DwzL74R7.js +0 -1
- package/web-ui/build/static/keepalived-cKzNWQWz.js +0 -1
- package/web-ui/build/static/keyman-BVOouxaa.js +0 -1
- package/web-ui/build/static/kotlin-BPuaNDRU.js +0 -1
- package/web-ui/build/static/kotlin-DvWwch7e.js +0 -1
- package/web-ui/build/static/kumir-DxiPnZla.js +0 -1
- package/web-ui/build/static/kusto-tc7F4iSM.js +0 -1
- package/web-ui/build/static/lasso-CuIxaW6G.js +0 -1
- package/web-ui/build/static/latex-DaVNZvfJ.js +0 -1
- package/web-ui/build/static/latex-Y-rAMd-m.js +0 -1
- package/web-ui/build/static/latte-BWApgl6V.js +0 -1
- package/web-ui/build/static/ldif-BjMOGnja.js +0 -1
- package/web-ui/build/static/leaf-BjXTc-gF.js +0 -1
- package/web-ui/build/static/less-BAoMgFHw.js +0 -1
- package/web-ui/build/static/less-BIXQ4mtM.js +0 -1
- package/web-ui/build/static/lilypond-B6avfRfg.js +0 -1
- package/web-ui/build/static/liquid-Bgux4iHZ.js +0 -1
- package/web-ui/build/static/lisp-DZwObPt9.js +0 -1
- package/web-ui/build/static/lisp-KuHBOL65.js +0 -1
- package/web-ui/build/static/livecodeserver-Cuv2a-Np.js +0 -1
- package/web-ui/build/static/livescript-B5joK5y1.js +0 -1
- package/web-ui/build/static/livescript-Cfl-5tRI.js +0 -1
- package/web-ui/build/static/llvm-Bq_MvIMt.js +0 -1
- package/web-ui/build/static/llvm-DDplxqNH.js +0 -1
- package/web-ui/build/static/log-C0UrUYNZ.js +0 -1
- package/web-ui/build/static/lolcode-Bpn0nZXI.js +0 -1
- package/web-ui/build/static/lsl-Baa3yssY.js +0 -1
- package/web-ui/build/static/lua-CmS7S4r8.js +0 -1
- package/web-ui/build/static/lua-CuTsqVUh.js +0 -1
- package/web-ui/build/static/magma-D80wNgLE.js +0 -1
- package/web-ui/build/static/makefile-BUfHdkgl.js +0 -1
- package/web-ui/build/static/makefile-DcdqPwtQ.js +0 -1
- package/web-ui/build/static/markdown-Dnk5E2xs.js +0 -1
- package/web-ui/build/static/markdown-dVGF22cZ.js +0 -1
- package/web-ui/build/static/markup-templating-DFEtKf2a.js +0 -1
- package/web-ui/build/static/mathematica-D6RpzMC4.js +0 -1
- package/web-ui/build/static/matlab-BNL791Vd.js +0 -1
- package/web-ui/build/static/matlab-CcJdErYu.js +0 -1
- package/web-ui/build/static/maxima-DtObzS0g.js +0 -1
- package/web-ui/build/static/maxscript-Boeo84Pc.js +0 -1
- package/web-ui/build/static/mel-CQDFYa9L.js +0 -1
- package/web-ui/build/static/mel-Dqbr8Ct3.js +0 -1
- package/web-ui/build/static/mercury-CtQIBvXV.js +0 -1
- package/web-ui/build/static/mermaid-Be11mdXJ.js +0 -1
- package/web-ui/build/static/mipsasm-Bzu7KAos.js +0 -1
- package/web-ui/build/static/mizar-CTwK6_XC.js +0 -1
- package/web-ui/build/static/mizar-DGSninkt.js +0 -1
- package/web-ui/build/static/mojolicious-B5J4ts83.js +0 -1
- package/web-ui/build/static/mongodb-Canys4Q-.js +0 -1
- package/web-ui/build/static/monkey-Bc8QeQKW.js +0 -1
- package/web-ui/build/static/monkey-BuakrB5T.js +0 -1
- package/web-ui/build/static/moonscript-CCCY-549.js +0 -1
- package/web-ui/build/static/moonscript-DgTN69ea.js +0 -1
- package/web-ui/build/static/n1ql-BeClvJbI.js +0 -1
- package/web-ui/build/static/n1ql-Bmrbwg5D.js +0 -1
- package/web-ui/build/static/n4js-BI7ajnA2.js +0 -1
- package/web-ui/build/static/nand2tetris-hdl-CTtO9tFK.js +0 -1
- package/web-ui/build/static/naniscript-ByLXiYB-.js +0 -1
- package/web-ui/build/static/nasm-DyRBXPTp.js +0 -1
- package/web-ui/build/static/neon-CuGxTU_0.js +0 -1
- package/web-ui/build/static/nevod-CWnxD5-I.js +0 -1
- package/web-ui/build/static/nginx-9_Wnc0a8.js +0 -1
- package/web-ui/build/static/nginx-YzYFF0YL.js +0 -1
- package/web-ui/build/static/nim-Dgg2r5_y.js +0 -1
- package/web-ui/build/static/nim-Dket4DOJ.js +0 -1
- package/web-ui/build/static/nix-CM2XsNVm.js +0 -1
- package/web-ui/build/static/nix-P756jRJz.js +0 -1
- package/web-ui/build/static/node-repl-BRadhyOu.js +0 -1
- package/web-ui/build/static/nsis-4AzWWTt3.js +0 -1
- package/web-ui/build/static/nsis-DawN0fp-.js +0 -1
- package/web-ui/build/static/objectivec-BHy8WXYe.js +0 -1
- package/web-ui/build/static/objectivec-CVvJfvIh.js +0 -1
- package/web-ui/build/static/ocaml-BXmkRrGk.js +0 -1
- package/web-ui/build/static/ocaml-D9blGtF-.js +0 -1
- package/web-ui/build/static/opencl-CrP8B7-Y.js +0 -1
- package/web-ui/build/static/openqasm-BF_FGc9C.js +0 -1
- package/web-ui/build/static/openscad-BX0LeVCC.js +0 -1
- package/web-ui/build/static/oxygene-Dv7-kaO-.js +0 -1
- package/web-ui/build/static/oz-DMw40m1E.js +0 -1
- package/web-ui/build/static/parigp-C6qS_vHR.js +0 -1
- package/web-ui/build/static/parser-CIccHpfs.js +0 -1
- package/web-ui/build/static/parser3-DY65kzTx.js +0 -1
- package/web-ui/build/static/pascal-Bd8OdL32.js +0 -1
- package/web-ui/build/static/pascaligo-Czv0M1Ke.js +0 -1
- package/web-ui/build/static/pcaxis-Ct9Xzb0v.js +0 -1
- package/web-ui/build/static/peoplecode-Qs_52P9e.js +0 -1
- package/web-ui/build/static/perl-C7ZXixEj.js +0 -1
- package/web-ui/build/static/perl-jarWhwwS.js +0 -1
- package/web-ui/build/static/pf-CUIEZmhu.js +0 -1
- package/web-ui/build/static/pgsql-Cd9Vguu1.js +0 -1
- package/web-ui/build/static/php-BkEHU_F0.js +0 -1
- package/web-ui/build/static/php-DgxitXwB.js +0 -1
- package/web-ui/build/static/php-extras-DZ4cqJZr.js +0 -1
- package/web-ui/build/static/php-template-CmDsJimC.js +0 -1
- package/web-ui/build/static/phpdoc-BuzuEwXH.js +0 -1
- package/web-ui/build/static/plaintext-B9rbdHym.js +0 -1
- package/web-ui/build/static/plsql-BsUyjIMQ.js +0 -1
- package/web-ui/build/static/pony-DByqIe1z.js +0 -1
- package/web-ui/build/static/powerquery-1VSf_dLA.js +0 -1
- package/web-ui/build/static/powershell-CBYqkmKw.js +0 -1
- package/web-ui/build/static/powershell-TsgmSwr2.js +0 -1
- package/web-ui/build/static/processing-C7SmsDmp.js +0 -1
- package/web-ui/build/static/processing-DdvVbwBS.js +0 -1
- package/web-ui/build/static/profile-CrLgDepu.js +0 -1
- package/web-ui/build/static/prolog-1ezqlvDI.js +0 -1
- package/web-ui/build/static/prolog-BBYyok9G.js +0 -1
- package/web-ui/build/static/promql-CWatQOpO.js +0 -1
- package/web-ui/build/static/properties-BJQxP8JR.js +0 -1
- package/web-ui/build/static/properties-CfR17w8n.js +0 -1
- package/web-ui/build/static/protobuf-Cfo3A4gN.js +0 -1
- package/web-ui/build/static/protobuf-DjV26D7V.js +0 -1
- package/web-ui/build/static/psl-DHNAOSYZ.js +0 -1
- package/web-ui/build/static/pug-DnizfuFH.js +0 -1
- package/web-ui/build/static/puppet-BCcVNhLH.js +0 -1
- package/web-ui/build/static/puppet-BmSRwm0u.js +0 -1
- package/web-ui/build/static/pure-l1UGfReS.js +0 -1
- package/web-ui/build/static/purebasic-Cm1PR5lC.js +0 -1
- package/web-ui/build/static/purebasic-Dxq0YRkO.js +0 -1
- package/web-ui/build/static/purescript-CpKroRLn.js +0 -1
- package/web-ui/build/static/python-C0PwNTef.js +0 -1
- package/web-ui/build/static/python-Cr-3O1IE.js +0 -1
- package/web-ui/build/static/python-repl-B1P7p6JA.js +0 -1
- package/web-ui/build/static/q-CL79K_i7.js +0 -1
- package/web-ui/build/static/q-DLSzzmR3.js +0 -1
- package/web-ui/build/static/qml-BeN40LEp.js +0 -1
- package/web-ui/build/static/qml-DIjR5p31.js +0 -1
- package/web-ui/build/static/qore-CrnBG9xB.js +0 -1
- package/web-ui/build/static/qsharp-B8sPnj52.js +0 -1
- package/web-ui/build/static/r-UubkOviq.js +0 -1
- package/web-ui/build/static/r-lT3ysYih.js +0 -1
- package/web-ui/build/static/racket-Czw_1lqD.js +0 -1
- package/web-ui/build/static/reason-D-_rWPty.js +0 -1
- package/web-ui/build/static/reasonml-BZkHaGWN.js +0 -1
- package/web-ui/build/static/regex-BjeMZDQs.js +0 -1
- package/web-ui/build/static/rego-OYluSFFo.js +0 -1
- package/web-ui/build/static/renpy-D1X5nAoT.js +0 -1
- package/web-ui/build/static/rest-DnlQgDnx.js +0 -1
- package/web-ui/build/static/rib-DtDxwFfu.js +0 -1
- package/web-ui/build/static/rip-D8vOYwVd.js +0 -1
- package/web-ui/build/static/roboconf-DtEUhHis.js +0 -1
- package/web-ui/build/static/roboconf-w-iqpst4.js +0 -1
- package/web-ui/build/static/robotframework-M9UnAH02.js +0 -1
- package/web-ui/build/static/routeros-CX0gciU5.js +0 -1
- package/web-ui/build/static/rsl-CZOvPQbk.js +0 -1
- package/web-ui/build/static/ruby-BEwdhTtL.js +0 -1
- package/web-ui/build/static/ruby-dlRf3rgu.js +0 -1
- package/web-ui/build/static/ruleslanguage-CKX7tlpI.js +0 -1
- package/web-ui/build/static/rust-7xat0n1g.js +0 -1
- package/web-ui/build/static/rust-DCpdcw_7.js +0 -1
- package/web-ui/build/static/sas-B9K83LkK.js +0 -1
- package/web-ui/build/static/sas-ijKPjRom.js +0 -1
- package/web-ui/build/static/sass-ByZaOmQh.js +0 -1
- package/web-ui/build/static/scala-B6tUDsIS.js +0 -1
- package/web-ui/build/static/scala-BZ4NRThT.js +0 -1
- package/web-ui/build/static/scheme-BmDQeIVd.js +0 -1
- package/web-ui/build/static/scheme-DIrkVtyr.js +0 -1
- package/web-ui/build/static/scilab-BUTG2a1V.js +0 -1
- package/web-ui/build/static/scss-CC2Rr7DZ.js +0 -1
- package/web-ui/build/static/scss-CG0LtoLt.js +0 -1
- package/web-ui/build/static/shell-DEPni1su.js +0 -1
- package/web-ui/build/static/shell-session-DxlJbQBl.js +0 -1
- package/web-ui/build/static/smali-C5QEAhGK.js +0 -1
- package/web-ui/build/static/smali-RgOjDrpG.js +0 -1
- package/web-ui/build/static/smalltalk-CCLKnQXy.js +0 -1
- package/web-ui/build/static/smalltalk-D2pTtTF6.js +0 -1
- package/web-ui/build/static/smarty-D5pb-235.js +0 -1
- package/web-ui/build/static/sml-CtXZ7rhO.js +0 -1
- package/web-ui/build/static/sml-DgsaUoao.js +0 -1
- package/web-ui/build/static/solidity-DLDSX1RV.js +0 -1
- package/web-ui/build/static/solution-file-BaDc2_E-.js +0 -1
- package/web-ui/build/static/soy-x9k9lQq1.js +0 -1
- package/web-ui/build/static/sparql-CEyFkY2d.js +0 -1
- package/web-ui/build/static/splunk-spl-Cnoeez_o.js +0 -1
- package/web-ui/build/static/sqf-BiFuoaL6.js +0 -1
- package/web-ui/build/static/sqf-IC3wZMuh.js +0 -1
- package/web-ui/build/static/sql-B0kmmGOU.js +0 -1
- package/web-ui/build/static/sql-CUJr2cg-.js +0 -1
- package/web-ui/build/static/sql_more-CWl75_kq.js +0 -1
- package/web-ui/build/static/squirrel-CcEHntJJ.js +0 -1
- package/web-ui/build/static/stan-5fBmEp2c.js +0 -1
- package/web-ui/build/static/stan-CAB7l4xW.js +0 -1
- package/web-ui/build/static/stata-Cg3Bl6d7.js +0 -1
- package/web-ui/build/static/step21-CZGJgHPf.js +0 -1
- package/web-ui/build/static/stylus-BO533InK.js +0 -1
- package/web-ui/build/static/stylus-DNWkkgmm.js +0 -1
- package/web-ui/build/static/subunit-BFopBokb.js +0 -1
- package/web-ui/build/static/swift-CalO-wab.js +0 -1
- package/web-ui/build/static/swift-mePvo3P4.js +0 -1
- package/web-ui/build/static/systemd-bKGRJ9Ha.js +0 -1
- package/web-ui/build/static/t4-cs-D7xxs1lK.js +0 -1
- package/web-ui/build/static/t4-templating-_11pVeD-.js +0 -1
- package/web-ui/build/static/t4-vb-CprOaKdB.js +0 -1
- package/web-ui/build/static/taggerscript-CEpPw-UD.js +0 -1
- package/web-ui/build/static/tap-CFFYSmjs.js +0 -1
- package/web-ui/build/static/tap-Dy3jliYv.js +0 -1
- package/web-ui/build/static/tcl-Bw3AVuiY.js +0 -1
- package/web-ui/build/static/tcl-CD50d_-j.js +0 -1
- package/web-ui/build/static/textile-CSeSEGjy.js +0 -1
- package/web-ui/build/static/thrift-00VB402i.js +0 -1
- package/web-ui/build/static/toml-DuFNkxHe.js +0 -1
- package/web-ui/build/static/tp-4CeaWqyI.js +0 -1
- package/web-ui/build/static/tremor-BnerOgTY.js +0 -1
- package/web-ui/build/static/tsx-XiNhF1ao.js +0 -1
- package/web-ui/build/static/tt2-CM6FV9KO.js +0 -1
- package/web-ui/build/static/turtle-JxpiTJEQ.js +0 -1
- package/web-ui/build/static/twig-C16bJf43.js +0 -1
- package/web-ui/build/static/twig-DQ-0wCvQ.js +0 -1
- package/web-ui/build/static/typescript-ILNg_Uvt.js +0 -1
- package/web-ui/build/static/typescript-chBpZOex.js +0 -1
- package/web-ui/build/static/typoscript-D2-lUjQX.js +0 -1
- package/web-ui/build/static/unrealscript-CwOA8REe.js +0 -1
- package/web-ui/build/static/uorazor-Dh1SAWKw.js +0 -1
- package/web-ui/build/static/uri-BF1wAQOC.js +0 -1
- package/web-ui/build/static/v-DUq5Mxzu.js +0 -1
- package/web-ui/build/static/vala-BYNy6zW2.js +0 -1
- package/web-ui/build/static/vala-CqGfs9Kv.js +0 -1
- package/web-ui/build/static/vbnet-BxH9jvRi.js +0 -1
- package/web-ui/build/static/vbnet-CJxJGhMO.js +0 -1
- package/web-ui/build/static/vbscript-OQ6kMcDV.js +0 -1
- package/web-ui/build/static/vbscript-html-CZ-QJ4ch.js +0 -1
- package/web-ui/build/static/velocity-B59YHwoP.js +0 -1
- package/web-ui/build/static/verilog--uW8iUzt.js +0 -1
- package/web-ui/build/static/verilog-DAQz3Gcl.js +0 -1
- package/web-ui/build/static/vhdl-5FrGi5Wx.js +0 -1
- package/web-ui/build/static/vhdl-C25AEZ8g.js +0 -1
- package/web-ui/build/static/vim-CW6uewUP.js +0 -1
- package/web-ui/build/static/vim-f3zGsJk1.js +0 -1
- package/web-ui/build/static/visual-basic-CoOTQEUn.js +0 -1
- package/web-ui/build/static/warpscript-DGouvP9I.js +0 -1
- package/web-ui/build/static/wasm-BZeW0TNm.js +0 -1
- package/web-ui/build/static/web-idl-Bw1mV_A4.js +0 -1
- package/web-ui/build/static/wiki-CZG2B_w1.js +0 -1
- package/web-ui/build/static/wolfram-CiMIUpaO.js +0 -1
- package/web-ui/build/static/wren-Bh9Sv_02.js +0 -1
- package/web-ui/build/static/x86asm-BhoPGTpG.js +0 -1
- package/web-ui/build/static/xeora-C5CM7V9L.js +0 -1
- package/web-ui/build/static/xl-WCHINiXA.js +0 -1
- package/web-ui/build/static/xml-DPAIpwAO.js +0 -1
- package/web-ui/build/static/xml-doc-CJxlhMe0.js +0 -1
- package/web-ui/build/static/xojo-BW0Z0CzB.js +0 -1
- package/web-ui/build/static/xquery-CwiBIiph.js +0 -1
- package/web-ui/build/static/xquery-De9QIea7.js +0 -1
- package/web-ui/build/static/yaml-CKzSgstB.js +0 -1
- package/web-ui/build/static/yaml-DIHBhXM_.js +0 -1
- package/web-ui/build/static/yang-Cn0PKttf.js +0 -1
- package/web-ui/build/static/zephir-CKVBh8TU.js +0 -1
- 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,
|
package/src/tools/imageTool.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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):
|
|
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):
|
|
149
|
-
- **sourceImage** (optional): Path to source image for editing (
|
|
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
|
|
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
|
|
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
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
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
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
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
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
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
|
-
|
|
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);
|
package/src/tools/memoryTool.js
CHANGED
|
@@ -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
|
-
|
|
582
|
-
|
|
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
|