onbuzz 4.4.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.
- package/bin/cli.js +38 -18
- package/package.json +2 -1
- package/scripts/e2e-flow-live.js +598 -0
- package/src/__tests__/resolvePreferredModel.test.js +15 -1
- package/src/core/__test-utils__/flowJudge.js +198 -0
- package/src/core/__tests__/flowCheckpointStore.test.js +140 -0
- package/src/core/__tests__/flowEndToEnd.test.js +565 -0
- package/src/core/__tests__/flowExecutor.test.js +950 -0
- package/src/core/__tests__/flowFieldMapping.test.js +189 -0
- package/src/core/__tests__/flowJudge.test.js +140 -0
- package/src/core/__tests__/flowLint.test.js +119 -0
- package/src/core/__tests__/flowLintClientMirror.test.js +98 -0
- package/src/core/__tests__/flowMigration.test.js +160 -0
- package/src/core/__tests__/flowRetry.test.js +145 -0
- package/src/core/__tests__/flowSavePayload.test.js +169 -0
- package/src/core/__tests__/flowSchema.test.js +438 -0
- package/src/core/__tests__/flowTemplates.test.js +183 -0
- package/src/core/__tests__/flowTypes.test.js +147 -0
- package/src/core/__tests__/flowVersionStore.test.js +123 -0
- package/src/core/__tests__/orchestrator.test.js +38 -0
- package/src/core/__tests__/stateManager.test.js +281 -0
- package/src/core/agentPool.js +4 -0
- package/src/core/agentScheduler.js +46 -6
- package/src/core/flowCheckpointStore.js +146 -0
- package/src/core/flowExecutor.js +669 -87
- package/src/core/flowFieldMapping.js +138 -0
- package/src/core/flowLint.js +102 -0
- package/src/core/flowMigration.js +88 -0
- package/src/core/flowRetry.js +103 -0
- package/src/core/flowSchema.js +297 -0
- package/src/core/flowTypes.js +81 -0
- package/src/core/flowVersionStore.js +122 -0
- package/src/core/messageProcessor.js +5 -1
- package/src/core/stateManager.js +254 -15
- package/src/index.js +34 -0
- package/src/interfaces/__tests__/agentContextRoutes.test.js +272 -0
- package/src/interfaces/agentContextRoutes.js +257 -0
- package/src/interfaces/webServer.js +282 -4
- package/src/modules/widget/__tests__/naming.test.js +204 -0
- package/src/modules/widget/galleryStore.js +27 -2
- package/src/modules/widget/routes.js +21 -0
- package/src/modules/widget/schema.js +49 -1
- package/src/modules/widget/widgetTool.js +53 -0
- package/src/services/__tests__/apiKeyManager.test.js +163 -0
- package/src/services/__tests__/contextInjectionService.test.js +41 -0
- package/src/services/__tests__/flowContextService.test.js +391 -0
- package/src/services/apiKeyManager.js +54 -3
- package/src/services/contextInjectionService.js +24 -0
- package/src/services/flowContextService.js +401 -4
- package/src/tools/__tests__/imageFormat.test.js +208 -0
- package/src/tools/__tests__/jobDoneTool.test.js +285 -0
- package/src/tools/__tests__/platformControlAgentTeam.test.js +623 -0
- package/src/tools/__tests__/platformControlAgentTeamPermissions.test.js +253 -0
- package/src/tools/__tests__/platformControlAncestry.test.js +131 -0
- package/src/tools/__tests__/platformControlCascade.test.js +177 -0
- package/src/tools/__tests__/platformControlPermissions.test.js +128 -0
- package/src/tools/__tests__/platformControlPersistence.test.js +134 -0
- package/src/tools/__tests__/platformControlTool.test.js +391 -0
- package/src/tools/__tests__/terminalDedup.test.js +324 -0
- package/src/tools/imageFormat.js +249 -0
- package/src/tools/imageTool.js +107 -18
- package/src/tools/jobDoneTool.js +111 -3
- package/src/tools/platformControl/ancestry.js +85 -0
- package/src/tools/platformControl/cascadeService.js +146 -0
- package/src/tools/platformControl/permissions.js +394 -0
- package/src/tools/platformControlTool.js +854 -0
- package/src/tools/terminalDedup.js +178 -0
- package/src/tools/terminalTool.js +28 -0
- package/src/tools/videoTool.js +94 -60
- package/src/tools/webTool.js +9 -0
- package/src/utilities/__tests__/apiKeyPlaceholders.test.js +120 -0
- package/src/utilities/__tests__/brand.test.js +115 -0
- package/src/utilities/apiKeyPlaceholders.js +68 -0
- package/src/utilities/brand.js +93 -0
- package/src/utilities/constants.js +1 -1
- package/src/utilities/userDataDir.js +5 -0
- package/web-ui/build/index.html +2 -2
- package/web-ui/build/static/1c-CvuQ3hv-.js +1 -0
- package/web-ui/build/static/abap-BLdv0Jje.js +1 -0
- package/web-ui/build/static/abnf-CGGg8KtC.js +1 -0
- package/web-ui/build/static/abnf-DRXF8AHh.js +1 -0
- package/web-ui/build/static/accesslog-C0v06age.js +1 -0
- package/web-ui/build/static/actionscript-5uhk1qo4.js +1 -0
- package/web-ui/build/static/actionscript-eFh_rL7l.js +1 -0
- package/web-ui/build/static/ada-DX064lsk.js +1 -0
- package/web-ui/build/static/ada-DtDpZJA8.js +1 -0
- package/web-ui/build/static/agda-DPnmQC2V.js +1 -0
- package/web-ui/build/static/al-BJnZv7Mq.js +1 -0
- package/web-ui/build/static/angelscript-BzX4egqM.js +1 -0
- package/web-ui/build/static/antlr4-CpvLBdqN.js +1 -0
- package/web-ui/build/static/apache-CeMpLZgQ.js +1 -0
- package/web-ui/build/static/apacheconf-DuxpNgGg.js +1 -0
- package/web-ui/build/static/apex-BnvL-Zqw.js +1 -0
- package/web-ui/build/static/apl-Cwp1WC58.js +1 -0
- package/web-ui/build/static/applescript-Drjf4gZ_.js +1 -0
- package/web-ui/build/static/applescript-OCRtzdLy.js +1 -0
- package/web-ui/build/static/aql-BT92x5XB.js +1 -0
- package/web-ui/build/static/arcade-BS9r1rKb.js +1 -0
- package/web-ui/build/static/arduino-Dx4b0RsU.js +1 -0
- package/web-ui/build/static/arduino-MC82bxgK.js +1 -0
- package/web-ui/build/static/arff-BPbJPmCK.js +1 -0
- package/web-ui/build/static/armasm-Ae0OYiNN.js +1 -0
- package/web-ui/build/static/asciidoc-BFCjTY8x.js +1 -0
- package/web-ui/build/static/asciidoc-Cum1UNn8.js +1 -0
- package/web-ui/build/static/asm6502-DRrCRZ3g.js +1 -0
- package/web-ui/build/static/asmatmel-QweP0nrX.js +1 -0
- package/web-ui/build/static/aspectj-GSWlVl13.js +1 -0
- package/web-ui/build/static/aspnet-gFBjg3Gc.js +1 -0
- package/web-ui/build/static/autohotkey-BKW8CgdS.js +1 -0
- package/web-ui/build/static/autohotkey-PxYn0v1n.js +1 -0
- package/web-ui/build/static/autoit-Dm1-Ww37.js +1 -0
- package/web-ui/build/static/autoit-ttEVAAKG.js +1 -0
- package/web-ui/build/static/avisynth-B7Wkp41N.js +1 -0
- package/web-ui/build/static/avrasm-CUPF81zm.js +1 -0
- package/web-ui/build/static/avro-idl-DHWmsw82.js +1 -0
- package/web-ui/build/static/awk-CjJ3RSZI.js +1 -0
- package/web-ui/build/static/axapta-C1qEYhtS.js +1 -0
- package/web-ui/build/static/bash-BGEpCDRi.js +1 -0
- package/web-ui/build/static/bash-nKHqg4vr.js +1 -0
- package/web-ui/build/static/basic-BoEGbohL.js +1 -0
- package/web-ui/build/static/basic-LeZDGhzq.js +1 -0
- package/web-ui/build/static/batch-AgpF9rt8.js +1 -0
- package/web-ui/build/static/bbcode-qAuG7NMV.js +1 -0
- package/web-ui/build/static/bicep-BjdiK558.js +1 -0
- package/web-ui/build/static/birb-DAe1WhT3.js +1 -0
- package/web-ui/build/static/bison-BanDUZpy.js +1 -0
- package/web-ui/build/static/bnf-DlBe3_6s.js +1 -0
- package/web-ui/build/static/bnf-QgoO3Q8o.js +1 -0
- package/web-ui/build/static/brainfuck-B1DXmfDc.js +1 -0
- package/web-ui/build/static/brainfuck-B_JhB4QU.js +1 -0
- package/web-ui/build/static/brightscript-C0POlK1a.js +1 -0
- package/web-ui/build/static/bro-CjGWwSC2.js +1 -0
- package/web-ui/build/static/bsl-DXsNn0E7.js +1 -0
- package/web-ui/build/static/c-D-Xouzk3.js +1 -0
- package/web-ui/build/static/c-Df8JpOdZ.js +1 -0
- package/web-ui/build/static/c-like-BQySGMeF.js +1 -0
- package/web-ui/build/static/cal-DLefuKn4.js +1 -0
- package/web-ui/build/static/capnproto-DuI4CHAK.js +1 -0
- package/web-ui/build/static/ceylon-DyUD9r5X.js +1 -0
- package/web-ui/build/static/cfscript-B71LgEx4.js +1 -0
- package/web-ui/build/static/chaiscript-DUx8exmo.js +1 -0
- package/web-ui/build/static/cil-BkH647hL.js +1 -0
- package/web-ui/build/static/clean-4G2AsMGw.js +1 -0
- package/web-ui/build/static/clojure-C41DUPjJ.js +1 -0
- package/web-ui/build/static/clojure-RzWG1SWB.js +1 -0
- package/web-ui/build/static/clojure-repl-C12peSNj.js +1 -0
- package/web-ui/build/static/cmake-D9dyf1Ef.js +1 -0
- package/web-ui/build/static/cmake-X6aOgq7A.js +1 -0
- package/web-ui/build/static/cobol-DQBujvW6.js +1 -0
- package/web-ui/build/static/coffeescript-3uuDLR0C.js +1 -0
- package/web-ui/build/static/coffeescript-BesW_-0N.js +1 -0
- package/web-ui/build/static/concurnas-DUqxEcDq.js +1 -0
- package/web-ui/build/static/coq-BNw0ZmzS.js +1 -0
- package/web-ui/build/static/coq-J6mf-n4i.js +1 -0
- package/web-ui/build/static/cos-B-p2VbRC.js +1 -0
- package/web-ui/build/static/cpp-B91xny9o.js +1 -0
- package/web-ui/build/static/cpp-C-qfcmAQ.js +1 -0
- package/web-ui/build/static/crmsh-CXJSYh9n.js +1 -0
- package/web-ui/build/static/crystal-BZJ_gkDx.js +1 -0
- package/web-ui/build/static/crystal-D7rBvt2Y.js +1 -0
- package/web-ui/build/static/csharp-CHWbNjwN.js +1 -0
- package/web-ui/build/static/csharp-DHH7lbyr.js +1 -0
- package/web-ui/build/static/cshtml-6XKl5N6w.js +1 -0
- package/web-ui/build/static/csp-BwQp4uKS.js +1 -0
- package/web-ui/build/static/csp-LxTXhb7W.js +1 -0
- package/web-ui/build/static/css-JviRe6l1.js +1 -0
- package/web-ui/build/static/css-extras-DdIyhyWh.js +1 -0
- package/web-ui/build/static/csv-BhyLVYKF.js +1 -0
- package/web-ui/build/static/cypher-45QLqKfb.js +1 -0
- package/web-ui/build/static/d-BQuCFdtT.js +1 -0
- package/web-ui/build/static/d-rDpztdwo.js +1 -0
- package/web-ui/build/static/dart-B3HdKwvI.js +1 -0
- package/web-ui/build/static/dart-CxIvlNfF.js +1 -0
- package/web-ui/build/static/dataweave-CMS5SC_F.js +1 -0
- package/web-ui/build/static/dax-C_neqUB4.js +1 -0
- package/web-ui/build/static/delphi-D86BXUtC.js +1 -0
- package/web-ui/build/static/dhall-BGV0CTjz.js +1 -0
- package/web-ui/build/static/diff-Br5L84xu.js +1 -0
- package/web-ui/build/static/diff-C8dJOj7p.js +1 -0
- package/web-ui/build/static/django-CRpfLgb_.js +1 -0
- package/web-ui/build/static/django-Cr0k0BHt.js +1 -0
- package/web-ui/build/static/dns-CvhVGt9J.js +1 -0
- package/web-ui/build/static/dns-zone-file--waGszJ5.js +1 -0
- package/web-ui/build/static/docker-Bp-jYj4d.js +1 -0
- package/web-ui/build/static/dockerfile-B9PF5D-H.js +1 -0
- package/web-ui/build/static/dos-CGjRa73t.js +1 -0
- package/web-ui/build/static/dot---3xJv0W.js +1 -0
- package/web-ui/build/static/dsconfig-ChUbMzIk.js +1 -0
- package/web-ui/build/static/dts-DzVrXhdk.js +1 -0
- package/web-ui/build/static/dust-BuyYJzfS.js +1 -0
- package/web-ui/build/static/ebnf-B4Jhny4j.js +1 -0
- package/web-ui/build/static/ebnf-wTpKeELK.js +1 -0
- package/web-ui/build/static/editorconfig-DijMMyBE.js +1 -0
- package/web-ui/build/static/eiffel-gSk8UUfh.js +1 -0
- package/web-ui/build/static/ejs-U-J4wHaR.js +1 -0
- package/web-ui/build/static/elixir-CLgHOCRk.js +1 -0
- package/web-ui/build/static/elixir-KhfnyoV6.js +1 -0
- package/web-ui/build/static/elm-B0g83jwv.js +1 -0
- package/web-ui/build/static/elm-Bl8qDmwz.js +1 -0
- package/web-ui/build/static/erb-CwkagsxA.js +1 -0
- package/web-ui/build/static/erb-DXfF2Urb.js +1 -0
- package/web-ui/build/static/erlang-BsONy4Br.js +1 -0
- package/web-ui/build/static/erlang-C44ddtgw.js +1 -0
- package/web-ui/build/static/erlang-repl-DhirJ_Ji.js +1 -0
- package/web-ui/build/static/etlua-C71HyvJj.js +1 -0
- package/web-ui/build/static/excel-B_RD_Nc6.js +1 -0
- package/web-ui/build/static/excel-formula-xRVcfp1T.js +1 -0
- package/web-ui/build/static/factor-CftUx68l.js +1 -0
- package/web-ui/build/static/false-DqRtSZRC.js +1 -0
- package/web-ui/build/static/firestore-security-rules-BCG_0nJP.js +1 -0
- package/web-ui/build/static/fix-CnRMAIWg.js +1 -0
- package/web-ui/build/static/flix-DLAgo_-e.js +1 -0
- package/web-ui/build/static/flow-w5YSIX1I.js +1 -0
- package/web-ui/build/static/fortran-CH5byJ0j.js +1 -0
- package/web-ui/build/static/fortran-DK-jnXQF.js +1 -0
- package/web-ui/build/static/fsharp-Cnfw9xB2.js +1 -0
- package/web-ui/build/static/fsharp-hebdfC6F.js +1 -0
- package/web-ui/build/static/ftl-DSSTp35t.js +1 -0
- package/web-ui/build/static/gams-C3akjfKZ.js +1 -0
- package/web-ui/build/static/gap-Dve6kEeL.js +1 -0
- package/web-ui/build/static/gauss-BmUqjv1m.js +1 -0
- package/web-ui/build/static/gcode-CjPpcuxm.js +1 -0
- package/web-ui/build/static/gcode-DdF0Sf0K.js +1 -0
- package/web-ui/build/static/gdscript-uyE_Q4Bz.js +1 -0
- package/web-ui/build/static/gedcom-9_5CrYud.js +1 -0
- package/web-ui/build/static/gherkin-0qL8AiDA.js +1 -0
- package/web-ui/build/static/gherkin-CBXpoWw3.js +1 -0
- package/web-ui/build/static/git-D6Y51k33.js +1 -0
- package/web-ui/build/static/glsl-DnD7skof.js +1 -0
- package/web-ui/build/static/glsl-aij7eTLw.js +1 -0
- package/web-ui/build/static/gml-3zbjVRHR.js +1 -0
- package/web-ui/build/static/gml-BOViyHVy.js +1 -0
- package/web-ui/build/static/gn-lYZFOgaG.js +1 -0
- package/web-ui/build/static/go-D3NQLBKz.js +1 -0
- package/web-ui/build/static/go-_v8tkYQe.js +1 -0
- package/web-ui/build/static/go-module-C6c3_rbX.js +1 -0
- package/web-ui/build/static/golo-BOIzwgKG.js +1 -0
- package/web-ui/build/static/gradle-DdejLgT6.js +1 -0
- package/web-ui/build/static/graphql-BWowSWlo.js +1 -0
- package/web-ui/build/static/groovy-DE_kIGjj.js +1 -0
- package/web-ui/build/static/groovy-DatEqK3Y.js +1 -0
- package/web-ui/build/static/haml-CpEpgDyf.js +1 -0
- package/web-ui/build/static/haml-DbPIKAsr.js +1 -0
- package/web-ui/build/static/handlebars-BcvOygMh.js +1 -0
- package/web-ui/build/static/handlebars-CM_40QlT.js +1 -0
- package/web-ui/build/static/haskell-DVgDTyj3.js +1 -0
- package/web-ui/build/static/haskell-Dm2oiqNu.js +1 -0
- package/web-ui/build/static/haxe--0QfWvD_.js +1 -0
- package/web-ui/build/static/haxe-DClHSH5I.js +1 -0
- package/web-ui/build/static/hcl-BaxNlNAk.js +1 -0
- package/web-ui/build/static/hlsl-Di7PYfJn.js +1 -0
- package/web-ui/build/static/hoon-Bq4hhWSd.js +1 -0
- package/web-ui/build/static/hpkp-Bu1AnCZZ.js +1 -0
- package/web-ui/build/static/hsp-CbIHPOnb.js +1 -0
- package/web-ui/build/static/hsts-inGzMZHb.js +1 -0
- package/web-ui/build/static/htmlbars-B63TZb6k.js +1 -0
- package/web-ui/build/static/http-3wWrh86I.js +1 -0
- package/web-ui/build/static/http-Bv97BGAr.js +1 -0
- package/web-ui/build/static/hy-CIEvnIJC.js +1 -0
- package/web-ui/build/static/ichigojam-BAyO373g.js +1 -0
- package/web-ui/build/static/icon-CGCawTFI.js +1 -0
- package/web-ui/build/static/icu-message-format-C_lOXF7I.js +1 -0
- package/web-ui/build/static/idris-D0SaDFta.js +1 -0
- package/web-ui/build/static/iecst-DIJ6Ei7g.js +1 -0
- package/web-ui/build/static/ignore-CgcF6vXx.js +1 -0
- package/web-ui/build/static/index-CCDUVvvx.js +1 -0
- package/web-ui/build/static/index-Cjg3uZB9.js +1109 -0
- package/web-ui/build/static/index-CjtNtdGN.js +13 -0
- package/web-ui/build/static/index-DpMwgPzf.css +1 -0
- package/web-ui/build/static/inform7-C_MqBtMp.js +1 -0
- package/web-ui/build/static/inform7-CmRJkJSh.js +1 -0
- package/web-ui/build/static/ini-BE6jwIzm.js +1 -0
- package/web-ui/build/static/ini-BJ50J7Sm.js +1 -0
- package/web-ui/build/static/io-Cnt0nyV5.js +1 -0
- package/web-ui/build/static/irpf90-BjRJE_kg.js +1 -0
- package/web-ui/build/static/isbl-C7912t_8.js +1 -0
- package/web-ui/build/static/j-D6ci3wH9.js +1 -0
- package/web-ui/build/static/java-B_gtzL63.js +1 -0
- package/web-ui/build/static/java-CChyLI1p.js +1 -0
- package/web-ui/build/static/javadoc-CGvzgn19.js +1 -0
- package/web-ui/build/static/javadoclike-CI4krpLe.js +1 -0
- package/web-ui/build/static/javascript-CgORCJsx.js +1 -0
- package/web-ui/build/static/javastacktrace-DNnLXvJa.js +1 -0
- package/web-ui/build/static/jboss-cli-DIfGm3Rl.js +1 -0
- package/web-ui/build/static/jexl-CYQxvL_i.js +1 -0
- package/web-ui/build/static/jolie-C2fxUjz7.js +1 -0
- package/web-ui/build/static/jq-j1fAl-OU.js +1 -0
- package/web-ui/build/static/js-extras-Dqx-da8U.js +1 -0
- package/web-ui/build/static/js-templates-jQphR4CW.js +1 -0
- package/web-ui/build/static/jsdoc-BCunhOqo.js +1 -0
- package/web-ui/build/static/json-CljDde4D.js +1 -0
- package/web-ui/build/static/json-Cvzg5_hO.js +1 -0
- package/web-ui/build/static/json5-B19V_yl9.js +1 -0
- package/web-ui/build/static/jsonp-WdmhO5Oi.js +1 -0
- package/web-ui/build/static/jsstacktrace-LpNHn4a_.js +1 -0
- package/web-ui/build/static/jsx-Zw6Egddf.js +1 -0
- package/web-ui/build/static/julia-DPlpJZNN.js +1 -0
- package/web-ui/build/static/julia-DuKc9nrz.js +1 -0
- package/web-ui/build/static/julia-repl-C-LuPMzI.js +1 -0
- package/web-ui/build/static/keepalived-DDl-dK9a.js +1 -0
- package/web-ui/build/static/keyman-DCtgoYKu.js +1 -0
- package/web-ui/build/static/kotlin-D9aFeaCS.js +1 -0
- package/web-ui/build/static/kotlin-DlrR34XG.js +1 -0
- package/web-ui/build/static/kumir-B_aiiAzq.js +1 -0
- package/web-ui/build/static/kusto-CD4lHO1B.js +1 -0
- package/web-ui/build/static/lasso-BAMF8mdd.js +1 -0
- package/web-ui/build/static/latex-BjEyffe7.js +1 -0
- package/web-ui/build/static/latex-NaCSqcbD.js +1 -0
- package/web-ui/build/static/latte-BACpaGl3.js +1 -0
- package/web-ui/build/static/ldif-CRWTiH1W.js +1 -0
- package/web-ui/build/static/leaf-BYydRpJx.js +1 -0
- package/web-ui/build/static/less-BtFu1MXi.js +1 -0
- package/web-ui/build/static/less-COgcqIOM.js +1 -0
- package/web-ui/build/static/lilypond-BMLjCV3G.js +1 -0
- package/web-ui/build/static/liquid-Dr5bQMAB.js +1 -0
- package/web-ui/build/static/lisp-CE1ra7Xs.js +1 -0
- package/web-ui/build/static/lisp-CcOEo5DI.js +1 -0
- package/web-ui/build/static/livecodeserver-DNuOfASY.js +1 -0
- package/web-ui/build/static/livescript-BJor4pxz.js +1 -0
- package/web-ui/build/static/livescript-DFaZj6XM.js +1 -0
- package/web-ui/build/static/llvm-CJtHIXsX.js +1 -0
- package/web-ui/build/static/llvm-d3gQICQs.js +1 -0
- package/web-ui/build/static/log-B0pKN1S4.js +1 -0
- package/web-ui/build/static/lolcode-C_V6Sffm.js +1 -0
- package/web-ui/build/static/lsl-yhp5dB9o.js +1 -0
- package/web-ui/build/static/lua-BDTJq_SO.js +1 -0
- package/web-ui/build/static/lua-BaKkUUd_.js +1 -0
- package/web-ui/build/static/magma-aTzw_jlN.js +1 -0
- package/web-ui/build/static/makefile-FyZn4dZ-.js +1 -0
- package/web-ui/build/static/makefile-Vk7smupm.js +1 -0
- package/web-ui/build/static/markdown-BHavO-Hk.js +1 -0
- package/web-ui/build/static/markdown-CTYy6uqC.js +1 -0
- package/web-ui/build/static/markup-templating-DJWuQB2F.js +1 -0
- package/web-ui/build/static/mathematica-BnMzpFTS.js +1 -0
- package/web-ui/build/static/matlab-BsW3yHe5.js +1 -0
- package/web-ui/build/static/matlab-C8_ylrUg.js +1 -0
- package/web-ui/build/static/maxima-c3e9EB-f.js +1 -0
- package/web-ui/build/static/maxscript-DU-NoCpb.js +1 -0
- package/web-ui/build/static/mel-CcB2EUO0.js +1 -0
- package/web-ui/build/static/mel-u6igP96m.js +1 -0
- package/web-ui/build/static/mercury-YZshmW3v.js +1 -0
- package/web-ui/build/static/mermaid-C9dmgLlU.js +1 -0
- package/web-ui/build/static/mipsasm-BXHH9ztX.js +1 -0
- package/web-ui/build/static/mizar-B1317rho.js +1 -0
- package/web-ui/build/static/mizar-BjaPUUcM.js +1 -0
- package/web-ui/build/static/mojolicious-BQ8vE8HW.js +1 -0
- package/web-ui/build/static/mongodb-P-J2PnwH.js +1 -0
- package/web-ui/build/static/monkey-DcKZEVh6.js +1 -0
- package/web-ui/build/static/monkey-wMAzhDv4.js +1 -0
- package/web-ui/build/static/moonscript-C9Ea7K1o.js +1 -0
- package/web-ui/build/static/moonscript-DAjW1T8X.js +1 -0
- package/web-ui/build/static/n1ql-6nGwiuTr.js +1 -0
- package/web-ui/build/static/n1ql-BxgYqKfs.js +1 -0
- package/web-ui/build/static/n4js-Cqw8_-b7.js +1 -0
- package/web-ui/build/static/nand2tetris-hdl-B3Qrhhfv.js +1 -0
- package/web-ui/build/static/naniscript-BpIC5j6P.js +1 -0
- package/web-ui/build/static/nasm-Dp1z_ttd.js +1 -0
- package/web-ui/build/static/neon-B4RksdIv.js +1 -0
- package/web-ui/build/static/nevod-P34zfD9_.js +1 -0
- package/web-ui/build/static/nginx-CSaiFc4g.js +1 -0
- package/web-ui/build/static/nginx-bZFV7OqP.js +1 -0
- package/web-ui/build/static/nim-D04ADsdj.js +1 -0
- package/web-ui/build/static/nim-D37nbh5y.js +1 -0
- package/web-ui/build/static/nix-BPsQ58gF.js +1 -0
- package/web-ui/build/static/nix-keWnuH3h.js +1 -0
- package/web-ui/build/static/node-repl-rNkVcb6S.js +1 -0
- package/web-ui/build/static/nsis-DT8bhvLc.js +1 -0
- package/web-ui/build/static/nsis-DvfCmyQQ.js +1 -0
- package/web-ui/build/static/objectivec-BaJIzRqu.js +1 -0
- package/web-ui/build/static/objectivec-CmAY0jlQ.js +1 -0
- package/web-ui/build/static/ocaml-Dsf96dbW.js +1 -0
- package/web-ui/build/static/ocaml-SFQJ7AwJ.js +1 -0
- package/web-ui/build/static/opencl-Dp9ILs3s.js +1 -0
- package/web-ui/build/static/openqasm-Bsk-xK6C.js +1 -0
- package/web-ui/build/static/openscad-Dgvp4h50.js +1 -0
- package/web-ui/build/static/oxygene-C9rTsztX.js +1 -0
- package/web-ui/build/static/oz-DNlV-Ssf.js +1 -0
- package/web-ui/build/static/parigp-B7a5XVP7.js +1 -0
- package/web-ui/build/static/parser-nTo2WBxY.js +1 -0
- package/web-ui/build/static/parser3-BSD4cYqf.js +1 -0
- package/web-ui/build/static/pascal-DJxIFBHG.js +1 -0
- package/web-ui/build/static/pascaligo-JdV741ps.js +1 -0
- package/web-ui/build/static/pcaxis-DdexNvEQ.js +1 -0
- package/web-ui/build/static/peoplecode-DxBgZPZT.js +1 -0
- package/web-ui/build/static/perl-C0INln41.js +1 -0
- package/web-ui/build/static/perl-DvRuNidH.js +1 -0
- package/web-ui/build/static/pf-BjguNjII.js +1 -0
- package/web-ui/build/static/pgsql-9w8Z8Ams.js +1 -0
- package/web-ui/build/static/php-DKQIY8Pe.js +1 -0
- package/web-ui/build/static/php-DibEnIhD.js +1 -0
- package/web-ui/build/static/php-extras-CKKhA74Z.js +1 -0
- package/web-ui/build/static/php-template-Cjba7UNU.js +1 -0
- package/web-ui/build/static/phpdoc-QXtTW5az.js +1 -0
- package/web-ui/build/static/plaintext-Cbn61_h_.js +1 -0
- package/web-ui/build/static/plsql-f34z7hfB.js +1 -0
- package/web-ui/build/static/pony-DBSnXJAW.js +1 -0
- package/web-ui/build/static/powerquery-lin81zqH.js +1 -0
- package/web-ui/build/static/powershell-BoyP16Ta.js +1 -0
- package/web-ui/build/static/powershell-CCpHONl6.js +1 -0
- package/web-ui/build/static/processing-Cd7-ycAb.js +1 -0
- package/web-ui/build/static/processing-CeGW9CwE.js +1 -0
- package/web-ui/build/static/profile-DLYi3Uya.js +1 -0
- package/web-ui/build/static/prolog-BVr1f3c4.js +1 -0
- package/web-ui/build/static/prolog-C3D6KhoT.js +1 -0
- package/web-ui/build/static/promql-dviC9B24.js +1 -0
- package/web-ui/build/static/properties-CSNjefFg.js +1 -0
- package/web-ui/build/static/properties-DTAWAQKc.js +1 -0
- package/web-ui/build/static/protobuf-BCYoMCa-.js +1 -0
- package/web-ui/build/static/protobuf-D8G6xbh1.js +1 -0
- package/web-ui/build/static/psl-DzehMnl-.js +1 -0
- package/web-ui/build/static/pug-Cl4m_Cmv.js +1 -0
- package/web-ui/build/static/puppet-CECKDklS.js +1 -0
- package/web-ui/build/static/puppet-ZSk9z7h2.js +1 -0
- package/web-ui/build/static/pure-CRYVKpUf.js +1 -0
- package/web-ui/build/static/purebasic-B1B7jCI9.js +1 -0
- package/web-ui/build/static/purebasic-BdOvLN02.js +1 -0
- package/web-ui/build/static/purescript-CdFZo5U_.js +1 -0
- package/web-ui/build/static/python-B_UnJ1V3.js +1 -0
- package/web-ui/build/static/python-BeSi3a8_.js +1 -0
- package/web-ui/build/static/python-repl-BBmtoedD.js +1 -0
- package/web-ui/build/static/q-Ery9rED_.js +1 -0
- package/web-ui/build/static/q-OEzRNQWZ.js +1 -0
- package/web-ui/build/static/qml-DdHTOYCC.js +1 -0
- package/web-ui/build/static/qml-DqjqC3TV.js +1 -0
- package/web-ui/build/static/qore-D3qGrct2.js +1 -0
- package/web-ui/build/static/qsharp-DdQgHY8o.js +1 -0
- package/web-ui/build/static/r-BsnBh-Gb.js +1 -0
- package/web-ui/build/static/r-CgLmD3ej.js +1 -0
- package/web-ui/build/static/racket-CgSPkQxA.js +1 -0
- package/web-ui/build/static/reason-BRJ4xDT3.js +1 -0
- package/web-ui/build/static/reasonml-B8V18bIF.js +1 -0
- package/web-ui/build/static/regex-C8qp_5tY.js +1 -0
- package/web-ui/build/static/rego-B3dQMEmR.js +1 -0
- package/web-ui/build/static/renpy-BmlUaEOQ.js +1 -0
- package/web-ui/build/static/rest-XlDNtjp0.js +1 -0
- package/web-ui/build/static/rib-BfquiuWk.js +1 -0
- package/web-ui/build/static/rip-dGRhlG0v.js +1 -0
- package/web-ui/build/static/roboconf-CtBSSFaA.js +1 -0
- package/web-ui/build/static/roboconf-wrbztr2r.js +1 -0
- package/web-ui/build/static/robotframework-BSxuJaY6.js +1 -0
- package/web-ui/build/static/routeros-DHKFvEvZ.js +1 -0
- package/web-ui/build/static/rsl-BhjvE0Cr.js +1 -0
- package/web-ui/build/static/ruby-BMED8W31.js +1 -0
- package/web-ui/build/static/ruby-BkE7uZGd.js +1 -0
- package/web-ui/build/static/ruleslanguage-DGe1m8Id.js +1 -0
- package/web-ui/build/static/rust-CUje9n_P.js +1 -0
- package/web-ui/build/static/rust-O67yEsAu.js +1 -0
- package/web-ui/build/static/sas-BpDWmnoa.js +1 -0
- package/web-ui/build/static/sas-DRBVod_5.js +1 -0
- package/web-ui/build/static/sass-CdUBh_kW.js +1 -0
- package/web-ui/build/static/scala-BvUTPbg2.js +1 -0
- package/web-ui/build/static/scala-DmXpVBFR.js +1 -0
- package/web-ui/build/static/scheme-BfzSegEb.js +1 -0
- package/web-ui/build/static/scheme-CL7dxV3L.js +1 -0
- package/web-ui/build/static/scilab-Bwx8K6ut.js +1 -0
- package/web-ui/build/static/scss-Bk3cnVi-.js +1 -0
- package/web-ui/build/static/scss-CEq_Uo2G.js +1 -0
- package/web-ui/build/static/shell-CH2lH60k.js +1 -0
- package/web-ui/build/static/shell-session-Dsc6nnXg.js +1 -0
- package/web-ui/build/static/smali-DR57iO-M.js +1 -0
- package/web-ui/build/static/smali-QDgUokkE.js +1 -0
- package/web-ui/build/static/smalltalk-CNWYoGI5.js +1 -0
- package/web-ui/build/static/smalltalk-DuKK00UG.js +1 -0
- package/web-ui/build/static/smarty-CM_K74KX.js +1 -0
- package/web-ui/build/static/sml-B-u4vtVQ.js +1 -0
- package/web-ui/build/static/sml-CnAed_Dv.js +1 -0
- package/web-ui/build/static/solidity-Bc_FUKPw.js +1 -0
- package/web-ui/build/static/solution-file-CE-Ffn8a.js +1 -0
- package/web-ui/build/static/soy-B__lNQNx.js +1 -0
- package/web-ui/build/static/sparql-BZnN0yju.js +1 -0
- package/web-ui/build/static/splunk-spl-DIs_BiUo.js +1 -0
- package/web-ui/build/static/sqf-DNSlhOUj.js +1 -0
- package/web-ui/build/static/sqf-DwPev5qJ.js +1 -0
- package/web-ui/build/static/sql-C9UaJUCf.js +1 -0
- package/web-ui/build/static/sql-DAnJSRyV.js +1 -0
- package/web-ui/build/static/sql_more-DMMfa_Zg.js +1 -0
- package/web-ui/build/static/squirrel-Bevu4MOl.js +1 -0
- package/web-ui/build/static/stan-Bs_yMVnC.js +1 -0
- package/web-ui/build/static/stan-Cduy4Z3W.js +1 -0
- package/web-ui/build/static/stata-BrHJdKRc.js +1 -0
- package/web-ui/build/static/step21-CGhxzCID.js +1 -0
- package/web-ui/build/static/stylus-B2lueE5_.js +1 -0
- package/web-ui/build/static/stylus-pKniqDuc.js +1 -0
- package/web-ui/build/static/subunit-B5WE5S5P.js +1 -0
- package/web-ui/build/static/swift-CEi576mT.js +1 -0
- package/web-ui/build/static/swift-CQCuFcEK.js +1 -0
- package/web-ui/build/static/systemd-CF-EHggg.js +1 -0
- package/web-ui/build/static/t4-cs-DWdn0RQB.js +1 -0
- package/web-ui/build/static/t4-templating-C15ubdW6.js +1 -0
- package/web-ui/build/static/t4-vb-Cz2QCDLO.js +1 -0
- package/web-ui/build/static/taggerscript-CfU_hv7J.js +1 -0
- package/web-ui/build/static/tap-2-gLM4Lw.js +1 -0
- package/web-ui/build/static/tap-M44CQJkj.js +1 -0
- package/web-ui/build/static/tcl-BMpkwsCa.js +1 -0
- package/web-ui/build/static/tcl-CfF-clAT.js +1 -0
- package/web-ui/build/static/textile-CUkgUEkV.js +1 -0
- package/web-ui/build/static/thrift-daJZ1DGJ.js +1 -0
- package/web-ui/build/static/toml-DnW5prhH.js +1 -0
- package/web-ui/build/static/tp-ZqeJLSGg.js +1 -0
- package/web-ui/build/static/tremor-WcELDSvz.js +1 -0
- package/web-ui/build/static/tsx-BVww6xUP.js +1 -0
- package/web-ui/build/static/tt2-Cxt3LLr_.js +1 -0
- package/web-ui/build/static/turtle-DmRTxNN8.js +1 -0
- package/web-ui/build/static/twig-DcLADpYg.js +1 -0
- package/web-ui/build/static/twig-Drdxszx_.js +1 -0
- package/web-ui/build/static/typescript-CgVWCuS9.js +1 -0
- package/web-ui/build/static/typescript-D3GjnDi9.js +1 -0
- package/web-ui/build/static/typoscript-B4qyGuOT.js +1 -0
- package/web-ui/build/static/unrealscript-BtIQeIeR.js +1 -0
- package/web-ui/build/static/uorazor-eWa_YDYv.js +1 -0
- package/web-ui/build/static/uri-CxsgAGHN.js +1 -0
- package/web-ui/build/static/v-D84eyWwn.js +1 -0
- package/web-ui/build/static/vala-Ccb9w5DW.js +1 -0
- package/web-ui/build/static/vala-MsPY7Xer.js +1 -0
- package/web-ui/build/static/vbnet-B33DMpXq.js +1 -0
- package/web-ui/build/static/vbnet-CaLY-AOH.js +1 -0
- package/web-ui/build/static/vbscript-DrXwNwNu.js +1 -0
- package/web-ui/build/static/vbscript-html-OTJEVr5m.js +1 -0
- package/web-ui/build/static/velocity-q0bXdAL4.js +1 -0
- package/web-ui/build/static/verilog-BD-Nxyqa.js +1 -0
- package/web-ui/build/static/verilog-PFy9sucN.js +1 -0
- package/web-ui/build/static/vhdl-BeCVyLiK.js +1 -0
- package/web-ui/build/static/vhdl-CMHdBpc5.js +1 -0
- package/web-ui/build/static/vim-3d_DOCsL.js +1 -0
- package/web-ui/build/static/vim-Bl5swMbH.js +1 -0
- package/web-ui/build/static/visual-basic-CjOvSeMg.js +1 -0
- package/web-ui/build/static/warpscript-C2EL35K2.js +1 -0
- package/web-ui/build/static/wasm-DmFD8VgH.js +1 -0
- package/web-ui/build/static/web-idl-RnzsvoQV.js +1 -0
- package/web-ui/build/static/wiki-Bu-zrPhW.js +1 -0
- package/web-ui/build/static/wolfram-CYYr3oaW.js +1 -0
- package/web-ui/build/static/wren-BXwkGwpn.js +1 -0
- package/web-ui/build/static/x86asm-_F19Kl5Y.js +1 -0
- package/web-ui/build/static/xeora-BmVPgL2I.js +1 -0
- package/web-ui/build/static/xl-68telKZ2.js +1 -0
- package/web-ui/build/static/xml-DPdaRgU0.js +1 -0
- package/web-ui/build/static/xml-doc-Aa64lijn.js +1 -0
- package/web-ui/build/static/xojo-DminlfyC.js +1 -0
- package/web-ui/build/static/xquery-BC1P9u6q.js +1 -0
- package/web-ui/build/static/xquery-kRz8gtls.js +1 -0
- package/web-ui/build/static/yaml-Bh9xHEaX.js +1 -0
- package/web-ui/build/static/yaml-CQW4NAe0.js +1 -0
- package/web-ui/build/static/yang-joHFzzXq.js +1 -0
- package/web-ui/build/static/zephir-BDGPNzsB.js +1 -0
- package/web-ui/build/static/zig-DtLmllYo.js +1 -0
- package/web-ui/build/static/1c-DhNfWMWm.js +0 -1
- package/web-ui/build/static/abap-QOWHgSNA.js +0 -1
- package/web-ui/build/static/abnf-C9PFiETQ.js +0 -1
- package/web-ui/build/static/abnf-DEbBdEpP.js +0 -1
- package/web-ui/build/static/accesslog-DaKq5_Ts.js +0 -1
- package/web-ui/build/static/actionscript-BcY19SjW.js +0 -1
- package/web-ui/build/static/actionscript-CbLJrkm9.js +0 -1
- package/web-ui/build/static/ada-D1vjmumu.js +0 -1
- package/web-ui/build/static/ada-hAjtW1jL.js +0 -1
- package/web-ui/build/static/agda-Bhk3JFT9.js +0 -1
- package/web-ui/build/static/al-DYmeq5B0.js +0 -1
- package/web-ui/build/static/angelscript-BxCBNQXZ.js +0 -1
- package/web-ui/build/static/antlr4-CPmkdILF.js +0 -1
- package/web-ui/build/static/apache-CnwL2ZvW.js +0 -1
- package/web-ui/build/static/apacheconf-CfeBIh7R.js +0 -1
- package/web-ui/build/static/apex-C36kXZsT.js +0 -1
- package/web-ui/build/static/apl-CeT_l0YX.js +0 -1
- package/web-ui/build/static/applescript-BimsduDW.js +0 -1
- package/web-ui/build/static/applescript-CLBFEONC.js +0 -1
- package/web-ui/build/static/aql-DcXNMsw5.js +0 -1
- package/web-ui/build/static/arcade-CsONs-nh.js +0 -1
- package/web-ui/build/static/arduino-1XAf972o.js +0 -1
- package/web-ui/build/static/arduino-BkRulzgv.js +0 -1
- package/web-ui/build/static/arff-QhmkBHXy.js +0 -1
- package/web-ui/build/static/armasm-Cf34TCbg.js +0 -1
- package/web-ui/build/static/asciidoc-Dxk-KUUW.js +0 -1
- package/web-ui/build/static/asciidoc-mpuuiNok.js +0 -1
- package/web-ui/build/static/asm6502-0M2Se3gz.js +0 -1
- package/web-ui/build/static/asmatmel-DhFK-DLd.js +0 -1
- package/web-ui/build/static/aspectj-BKNOwBC8.js +0 -1
- package/web-ui/build/static/aspnet-BZ88RTxR.js +0 -1
- package/web-ui/build/static/autohotkey-DGmMm6oy.js +0 -1
- package/web-ui/build/static/autohotkey-HUDPuon_.js +0 -1
- package/web-ui/build/static/autoit-B-YW8YdA.js +0 -1
- package/web-ui/build/static/autoit-CvHRbbE-.js +0 -1
- package/web-ui/build/static/avisynth-C6iP20gR.js +0 -1
- package/web-ui/build/static/avrasm-AOIVGwnb.js +0 -1
- package/web-ui/build/static/avro-idl-CcPf6wBK.js +0 -1
- package/web-ui/build/static/awk-Dy8_cKla.js +0 -1
- package/web-ui/build/static/axapta-CexCCXgI.js +0 -1
- package/web-ui/build/static/bash-DKgFZb-B.js +0 -1
- package/web-ui/build/static/bash-DrUQRf4E.js +0 -1
- package/web-ui/build/static/basic-BXDUD6us.js +0 -1
- package/web-ui/build/static/basic-DlEL_-PG.js +0 -1
- package/web-ui/build/static/batch-HHuRbek7.js +0 -1
- package/web-ui/build/static/bbcode-D4lEyfHq.js +0 -1
- package/web-ui/build/static/bicep-Ca66VjcC.js +0 -1
- package/web-ui/build/static/birb-BWDnQG3-.js +0 -1
- package/web-ui/build/static/bison-DGEvuoCn.js +0 -1
- package/web-ui/build/static/bnf-DNrgnFxK.js +0 -1
- package/web-ui/build/static/bnf-DkGg9a6f.js +0 -1
- package/web-ui/build/static/brainfuck-BcC5WVuw.js +0 -1
- package/web-ui/build/static/brainfuck-Dzx6V6EF.js +0 -1
- package/web-ui/build/static/brightscript-26Asmy4_.js +0 -1
- package/web-ui/build/static/bro-CFV9ava2.js +0 -1
- package/web-ui/build/static/bsl-BHMAYVVg.js +0 -1
- package/web-ui/build/static/c-B7WGfC_g.js +0 -1
- package/web-ui/build/static/c-CUYmQ5h3.js +0 -1
- package/web-ui/build/static/c-like-BSddZquS.js +0 -1
- package/web-ui/build/static/cal-DQjwjuMG.js +0 -1
- package/web-ui/build/static/capnproto-CBnYJDMr.js +0 -1
- package/web-ui/build/static/ceylon-ce3L4vqX.js +0 -1
- package/web-ui/build/static/cfscript-CN8IKzxH.js +0 -1
- package/web-ui/build/static/chaiscript-DT-qasen.js +0 -1
- package/web-ui/build/static/cil-BPu0-6KT.js +0 -1
- package/web-ui/build/static/clean-BWcUgtLl.js +0 -1
- package/web-ui/build/static/clojure-CVLbUcEn.js +0 -1
- package/web-ui/build/static/clojure-mVJcgmKZ.js +0 -1
- package/web-ui/build/static/clojure-repl-B1bPQUgE.js +0 -1
- package/web-ui/build/static/cmake-ApAYr4_A.js +0 -1
- package/web-ui/build/static/cmake-oI81UP1F.js +0 -1
- package/web-ui/build/static/cobol-eZdxawKH.js +0 -1
- package/web-ui/build/static/coffeescript-BvFq14Nz.js +0 -1
- package/web-ui/build/static/coffeescript-CedrhcbC.js +0 -1
- package/web-ui/build/static/concurnas-8QctO6Q7.js +0 -1
- package/web-ui/build/static/coq-CaQMtKys.js +0 -1
- package/web-ui/build/static/coq-Di7lBRJy.js +0 -1
- package/web-ui/build/static/cos-3TjiDgk1.js +0 -1
- package/web-ui/build/static/cpp-BGwIhR_y.js +0 -1
- package/web-ui/build/static/cpp-CRXTx1YD.js +0 -1
- package/web-ui/build/static/crmsh-C67REd2u.js +0 -1
- package/web-ui/build/static/crystal-C8Rs5smk.js +0 -1
- package/web-ui/build/static/crystal-C8jnpN4t.js +0 -1
- package/web-ui/build/static/csharp-CqlFLWOu.js +0 -1
- package/web-ui/build/static/csharp-D1M9LcKj.js +0 -1
- package/web-ui/build/static/cshtml-BrYce3m1.js +0 -1
- package/web-ui/build/static/csp-DaMDae_q.js +0 -1
- package/web-ui/build/static/csp-DmoB74Pq.js +0 -1
- package/web-ui/build/static/css-Bm-MgPWM.js +0 -1
- package/web-ui/build/static/css-extras-T3f2IfaH.js +0 -1
- package/web-ui/build/static/csv-BgIvUIgl.js +0 -1
- package/web-ui/build/static/cypher-Bsq4PGhM.js +0 -1
- package/web-ui/build/static/d-Qt9QuUvk.js +0 -1
- package/web-ui/build/static/d-h4AYkhsS.js +0 -1
- package/web-ui/build/static/dart-DNDTBaSF.js +0 -1
- package/web-ui/build/static/dart-Dkg8Mtqj.js +0 -1
- package/web-ui/build/static/dataweave-XNvXnB4j.js +0 -1
- package/web-ui/build/static/dax-DAM3HOsu.js +0 -1
- package/web-ui/build/static/delphi-DTzj2E4U.js +0 -1
- package/web-ui/build/static/dhall-Brb1ufqF.js +0 -1
- package/web-ui/build/static/diff-3SMw9VwF.js +0 -1
- package/web-ui/build/static/diff-ssu7Mr2I.js +0 -1
- package/web-ui/build/static/django-CK_xvPUY.js +0 -1
- package/web-ui/build/static/django-D9a4uL_8.js +0 -1
- package/web-ui/build/static/dns-Uvea7PR7.js +0 -1
- package/web-ui/build/static/dns-zone-file-BvD_LLn3.js +0 -1
- package/web-ui/build/static/docker-CC3kvxlv.js +0 -1
- package/web-ui/build/static/dockerfile-BRFh_Hdm.js +0 -1
- package/web-ui/build/static/dos-C-I0-qWQ.js +0 -1
- package/web-ui/build/static/dot-BmS_Nrtr.js +0 -1
- package/web-ui/build/static/dsconfig-CBWgrIVa.js +0 -1
- package/web-ui/build/static/dts-B31mUIV6.js +0 -1
- package/web-ui/build/static/dust-BBtJv286.js +0 -1
- package/web-ui/build/static/ebnf-CCA0ITCE.js +0 -1
- package/web-ui/build/static/ebnf-CeVJpQny.js +0 -1
- package/web-ui/build/static/editorconfig-Nhj95Qci.js +0 -1
- package/web-ui/build/static/eiffel-E7QJBlEz.js +0 -1
- package/web-ui/build/static/ejs-B9gYRoXo.js +0 -1
- package/web-ui/build/static/elixir-CYG1GGGp.js +0 -1
- package/web-ui/build/static/elixir-fNfEypj7.js +0 -1
- package/web-ui/build/static/elm-Td6N7vMU.js +0 -1
- package/web-ui/build/static/elm-v0-mxxuQ.js +0 -1
- package/web-ui/build/static/erb-BO3LQtQx.js +0 -1
- package/web-ui/build/static/erb-ez_pDLEC.js +0 -1
- package/web-ui/build/static/erlang-ChOZ-mbI.js +0 -1
- package/web-ui/build/static/erlang-DCBIueE-.js +0 -1
- package/web-ui/build/static/erlang-repl-CL0-sGxn.js +0 -1
- package/web-ui/build/static/etlua-CQdh26X0.js +0 -1
- package/web-ui/build/static/excel-BbAj2wuJ.js +0 -1
- package/web-ui/build/static/excel-formula-qBXUIcjs.js +0 -1
- package/web-ui/build/static/factor-BPO68YSz.js +0 -1
- package/web-ui/build/static/false-sZ2iLGj-.js +0 -1
- package/web-ui/build/static/firestore-security-rules-BmYLiQGh.js +0 -1
- package/web-ui/build/static/fix-Co_Dnq0A.js +0 -1
- package/web-ui/build/static/flix-DlEWTbVq.js +0 -1
- package/web-ui/build/static/flow-DnsnnZca.js +0 -1
- package/web-ui/build/static/fortran-B4OMllck.js +0 -1
- package/web-ui/build/static/fortran-_8ltaoLA.js +0 -1
- package/web-ui/build/static/fsharp-CY0Ix1iB.js +0 -1
- package/web-ui/build/static/fsharp-y6HOJqAr.js +0 -1
- package/web-ui/build/static/ftl-DvbP9VWU.js +0 -1
- package/web-ui/build/static/gams-DF3rxJoc.js +0 -1
- package/web-ui/build/static/gap-BSje56C-.js +0 -1
- package/web-ui/build/static/gauss-BqYXtLWM.js +0 -1
- package/web-ui/build/static/gcode-CBl-mAWK.js +0 -1
- package/web-ui/build/static/gcode-idSM0RsM.js +0 -1
- package/web-ui/build/static/gdscript-CniY3oYY.js +0 -1
- package/web-ui/build/static/gedcom-C1dJ3jCP.js +0 -1
- package/web-ui/build/static/gherkin-4jaQr3Lt.js +0 -1
- package/web-ui/build/static/gherkin-BRsS35Ed.js +0 -1
- package/web-ui/build/static/git-2a7wzptj.js +0 -1
- package/web-ui/build/static/glsl-Ckv4lBKB.js +0 -1
- package/web-ui/build/static/glsl-CnGjBp6a.js +0 -1
- package/web-ui/build/static/gml-DG3KVI4z.js +0 -1
- package/web-ui/build/static/gml-DxKOOp--.js +0 -1
- package/web-ui/build/static/gn-DmUPMuZR.js +0 -1
- package/web-ui/build/static/go-D8tYdcYa.js +0 -1
- package/web-ui/build/static/go-DpIavxCs.js +0 -1
- package/web-ui/build/static/go-module-BktUPko9.js +0 -1
- package/web-ui/build/static/golo-Ao-diOpI.js +0 -1
- package/web-ui/build/static/gradle-DHJSdPoJ.js +0 -1
- package/web-ui/build/static/graphql-HpsdbKFp.js +0 -1
- package/web-ui/build/static/groovy-B4BrZYtV.js +0 -1
- package/web-ui/build/static/groovy-BCIRzoWJ.js +0 -1
- package/web-ui/build/static/haml-B8Mj6Hex.js +0 -1
- package/web-ui/build/static/haml-Fo-yynuy.js +0 -1
- package/web-ui/build/static/handlebars-BnFawcCU.js +0 -1
- package/web-ui/build/static/handlebars-YZn3MEyv.js +0 -1
- package/web-ui/build/static/haskell-DutAI7D9.js +0 -1
- package/web-ui/build/static/haskell-Dvl0Yw7z.js +0 -1
- package/web-ui/build/static/haxe-6S205Iem.js +0 -1
- package/web-ui/build/static/haxe-aKgbIDi5.js +0 -1
- package/web-ui/build/static/hcl-Dt_vNekv.js +0 -1
- package/web-ui/build/static/hlsl-CupXb_iv.js +0 -1
- package/web-ui/build/static/hoon-Dg19YEzw.js +0 -1
- package/web-ui/build/static/hpkp-DCF8Ff3o.js +0 -1
- package/web-ui/build/static/hsp-D90yiizY.js +0 -1
- package/web-ui/build/static/hsts-Cf63XX0s.js +0 -1
- package/web-ui/build/static/htmlbars-DMbRiSo_.js +0 -1
- package/web-ui/build/static/http-DklRfzP4.js +0 -1
- package/web-ui/build/static/http-U94aUtJB.js +0 -1
- package/web-ui/build/static/hy-B2ESVqxB.js +0 -1
- package/web-ui/build/static/ichigojam-DrVZWL_q.js +0 -1
- package/web-ui/build/static/icon-CMA5sxLF.js +0 -1
- package/web-ui/build/static/icu-message-format-DyfbEZSi.js +0 -1
- package/web-ui/build/static/idris-lCmRODnZ.js +0 -1
- package/web-ui/build/static/iecst-CgrrW0EE.js +0 -1
- package/web-ui/build/static/ignore-BmZ03AWS.js +0 -1
- package/web-ui/build/static/index-CLLrOcOY.js +0 -1
- package/web-ui/build/static/index-Ck0Dg4M1.js +0 -13
- package/web-ui/build/static/index-DOAQiM34.css +0 -1
- package/web-ui/build/static/index-DjtEf-qv.js +0 -1029
- package/web-ui/build/static/inform7-BfOnAvVe.js +0 -1
- package/web-ui/build/static/inform7-JJIIMXTB.js +0 -1
- package/web-ui/build/static/ini-CIKxMbKN.js +0 -1
- package/web-ui/build/static/ini-T3DdG5H-.js +0 -1
- package/web-ui/build/static/io-K9Gdeq6M.js +0 -1
- package/web-ui/build/static/irpf90-BYsCcwwg.js +0 -1
- package/web-ui/build/static/isbl-jcjEwPPP.js +0 -1
- package/web-ui/build/static/j-DSNUhn5G.js +0 -1
- package/web-ui/build/static/java-BKwYwPEk.js +0 -1
- package/web-ui/build/static/java-DuZuc1lQ.js +0 -1
- package/web-ui/build/static/javadoc-Bd8CYqmj.js +0 -1
- package/web-ui/build/static/javadoclike-BcPQURih.js +0 -1
- package/web-ui/build/static/javascript-C7B2Ty3f.js +0 -1
- package/web-ui/build/static/javastacktrace-BRZBpTgb.js +0 -1
- package/web-ui/build/static/jboss-cli-DaXYYeAA.js +0 -1
- package/web-ui/build/static/jexl-oN152m0J.js +0 -1
- package/web-ui/build/static/jolie-BUWtG9eQ.js +0 -1
- package/web-ui/build/static/jq-ooTdhdbC.js +0 -1
- package/web-ui/build/static/js-extras-BQJ_tqbC.js +0 -1
- package/web-ui/build/static/js-templates-xygrVmsG.js +0 -1
- package/web-ui/build/static/jsdoc-BPMuWUGw.js +0 -1
- package/web-ui/build/static/json-DbssHgO1.js +0 -1
- package/web-ui/build/static/json-iOY4SV10.js +0 -1
- package/web-ui/build/static/json5-C_-PZnKE.js +0 -1
- package/web-ui/build/static/jsonp-BQakabW1.js +0 -1
- package/web-ui/build/static/jsstacktrace-DyDuNLl8.js +0 -1
- package/web-ui/build/static/jsx-DCQITdOi.js +0 -1
- package/web-ui/build/static/julia-BF0mftpu.js +0 -1
- package/web-ui/build/static/julia-TT2Hy-Ob.js +0 -1
- package/web-ui/build/static/julia-repl-UBoVaQSD.js +0 -1
- package/web-ui/build/static/keepalived-yNkg9KNG.js +0 -1
- package/web-ui/build/static/keyman-7ModFC-k.js +0 -1
- package/web-ui/build/static/kotlin-BjJgl7UF.js +0 -1
- package/web-ui/build/static/kotlin-GEW2sNY3.js +0 -1
- package/web-ui/build/static/kumir-CeWMdLSX.js +0 -1
- package/web-ui/build/static/kusto-NufgjlVz.js +0 -1
- package/web-ui/build/static/lasso-eUS0tR3e.js +0 -1
- package/web-ui/build/static/latex-C7prlA6j.js +0 -1
- package/web-ui/build/static/latex-Hx35xemv.js +0 -1
- package/web-ui/build/static/latte-Da8RAWgh.js +0 -1
- package/web-ui/build/static/ldif-DZVoiKm3.js +0 -1
- package/web-ui/build/static/leaf-OEtu9dZj.js +0 -1
- package/web-ui/build/static/less-0VwiOSeL.js +0 -1
- package/web-ui/build/static/less-CciyvbHx.js +0 -1
- package/web-ui/build/static/lilypond-blLDi6bC.js +0 -1
- package/web-ui/build/static/liquid-C8_7pWOo.js +0 -1
- package/web-ui/build/static/lisp-Dd28CPVg.js +0 -1
- package/web-ui/build/static/lisp-hWkYuWd0.js +0 -1
- package/web-ui/build/static/livecodeserver-7_v3dVy3.js +0 -1
- package/web-ui/build/static/livescript-B8YdZ4uV.js +0 -1
- package/web-ui/build/static/livescript-dLNrctPK.js +0 -1
- package/web-ui/build/static/llvm-BfTyXy_G.js +0 -1
- package/web-ui/build/static/llvm-CLvUvWLu.js +0 -1
- package/web-ui/build/static/log-DbsxiU9k.js +0 -1
- package/web-ui/build/static/lolcode-CfacgPRH.js +0 -1
- package/web-ui/build/static/lsl-nJWe_8hA.js +0 -1
- package/web-ui/build/static/lua-BzXX-n4X.js +0 -1
- package/web-ui/build/static/lua-Ds6K-rhW.js +0 -1
- package/web-ui/build/static/magma-U4RmSh9f.js +0 -1
- package/web-ui/build/static/makefile-CSCW5rGm.js +0 -1
- package/web-ui/build/static/makefile-kzE_oEn3.js +0 -1
- package/web-ui/build/static/markdown-CalHH_DC.js +0 -1
- package/web-ui/build/static/markdown-Cqr_u0Ad.js +0 -1
- package/web-ui/build/static/markup-templating-BTOI73DQ.js +0 -1
- package/web-ui/build/static/mathematica-NX1KG9I0.js +0 -1
- package/web-ui/build/static/matlab-BAn1HwNV.js +0 -1
- package/web-ui/build/static/matlab-Bdg2LWPm.js +0 -1
- package/web-ui/build/static/maxima-DjRYVgK8.js +0 -1
- package/web-ui/build/static/maxscript-xwiWU5-Z.js +0 -1
- package/web-ui/build/static/mel-BgwB0sDS.js +0 -1
- package/web-ui/build/static/mel-CIouMI9e.js +0 -1
- package/web-ui/build/static/mercury-Do8hrPEb.js +0 -1
- package/web-ui/build/static/mermaid-BGEw9Ybx.js +0 -1
- package/web-ui/build/static/mipsasm-BDqQqoDE.js +0 -1
- package/web-ui/build/static/mizar-7lZfUsYd.js +0 -1
- package/web-ui/build/static/mizar-D7O18zEE.js +0 -1
- package/web-ui/build/static/mojolicious-DqmJjzUO.js +0 -1
- package/web-ui/build/static/mongodb-CXRl7RlT.js +0 -1
- package/web-ui/build/static/monkey-DE9L51qk.js +0 -1
- package/web-ui/build/static/monkey-DM9WNqkW.js +0 -1
- package/web-ui/build/static/moonscript-D8lRTdQE.js +0 -1
- package/web-ui/build/static/moonscript-DFEVxKjh.js +0 -1
- package/web-ui/build/static/n1ql-B3BB__pa.js +0 -1
- package/web-ui/build/static/n1ql-Br4OECGn.js +0 -1
- package/web-ui/build/static/n4js-BPNwKp4U.js +0 -1
- package/web-ui/build/static/nand2tetris-hdl-BrjXXFUn.js +0 -1
- package/web-ui/build/static/naniscript-COGKQbvR.js +0 -1
- package/web-ui/build/static/nasm-BHOt34Wi.js +0 -1
- package/web-ui/build/static/neon-CYjyYixT.js +0 -1
- package/web-ui/build/static/nevod-CILFZbPW.js +0 -1
- package/web-ui/build/static/nginx-B7B9La6b.js +0 -1
- package/web-ui/build/static/nginx-Dcs1btfu.js +0 -1
- package/web-ui/build/static/nim-B39Qq_sB.js +0 -1
- package/web-ui/build/static/nim-Cm0o-zEI.js +0 -1
- package/web-ui/build/static/nix-Bb4CX-fQ.js +0 -1
- package/web-ui/build/static/nix-C3bIutdy.js +0 -1
- package/web-ui/build/static/node-repl-BtbNtavi.js +0 -1
- package/web-ui/build/static/nsis-CJpMkpQy.js +0 -1
- package/web-ui/build/static/nsis-h39nQk_L.js +0 -1
- package/web-ui/build/static/objectivec-BIV3Kmu2.js +0 -1
- package/web-ui/build/static/objectivec-CNhpMYiK.js +0 -1
- package/web-ui/build/static/ocaml-Ld6KARDY.js +0 -1
- package/web-ui/build/static/ocaml-upCImTLO.js +0 -1
- package/web-ui/build/static/opencl-CfWJp1hT.js +0 -1
- package/web-ui/build/static/openqasm-i8xT4CAo.js +0 -1
- package/web-ui/build/static/openscad-CzWxpIx6.js +0 -1
- package/web-ui/build/static/oxygene-CCokKj_U.js +0 -1
- package/web-ui/build/static/oz-BBdHXCgw.js +0 -1
- package/web-ui/build/static/parigp-C6n5F4KO.js +0 -1
- package/web-ui/build/static/parser-C2RrTYYO.js +0 -1
- package/web-ui/build/static/parser3-BaAVXypg.js +0 -1
- package/web-ui/build/static/pascal-UeXMBbP2.js +0 -1
- package/web-ui/build/static/pascaligo-CYD4ZqHc.js +0 -1
- package/web-ui/build/static/pcaxis-CuN2yCzi.js +0 -1
- package/web-ui/build/static/peoplecode-H1Adh-ll.js +0 -1
- package/web-ui/build/static/perl-DCyTMUn2.js +0 -1
- package/web-ui/build/static/perl-V4mDd6YP.js +0 -1
- package/web-ui/build/static/pf-5iH6Mo1D.js +0 -1
- package/web-ui/build/static/pgsql-CrmNuytU.js +0 -1
- package/web-ui/build/static/php-AWteRwUZ.js +0 -1
- package/web-ui/build/static/php-B-dr82M2.js +0 -1
- package/web-ui/build/static/php-extras-CVQI7yIC.js +0 -1
- package/web-ui/build/static/php-template-BW_DclRa.js +0 -1
- package/web-ui/build/static/phpdoc-Cfv3EM5F.js +0 -1
- package/web-ui/build/static/plaintext-CyfmYRWM.js +0 -1
- package/web-ui/build/static/plsql-DIfiFLDw.js +0 -1
- package/web-ui/build/static/pony-DjBwB1l2.js +0 -1
- package/web-ui/build/static/powerquery-D80luSMu.js +0 -1
- package/web-ui/build/static/powershell-Cai1oPSE.js +0 -1
- package/web-ui/build/static/powershell-qk5MHehm.js +0 -1
- package/web-ui/build/static/processing-DGNtNe05.js +0 -1
- package/web-ui/build/static/processing-DHK3kwAe.js +0 -1
- package/web-ui/build/static/profile-D6MBLt-p.js +0 -1
- package/web-ui/build/static/prolog-CqKHjX9T.js +0 -1
- package/web-ui/build/static/prolog-CwAlj8yp.js +0 -1
- package/web-ui/build/static/promql-Cwo7B1q9.js +0 -1
- package/web-ui/build/static/properties-03DbKSuC.js +0 -1
- package/web-ui/build/static/properties-BlFjiqSF.js +0 -1
- package/web-ui/build/static/protobuf-DFZRRGno.js +0 -1
- package/web-ui/build/static/protobuf-D_GKOSo6.js +0 -1
- package/web-ui/build/static/psl-RSBmgd7b.js +0 -1
- package/web-ui/build/static/pug-DzBjT8h1.js +0 -1
- package/web-ui/build/static/puppet-BwyNySh7.js +0 -1
- package/web-ui/build/static/puppet-CHJRn6Na.js +0 -1
- package/web-ui/build/static/pure-XbBeN0U7.js +0 -1
- package/web-ui/build/static/purebasic-BeRgP1y5.js +0 -1
- package/web-ui/build/static/purebasic-XGD8k1X_.js +0 -1
- package/web-ui/build/static/purescript-DPej8C9k.js +0 -1
- package/web-ui/build/static/python-DK4CPbFS.js +0 -1
- package/web-ui/build/static/python-repl-BDrlZxhA.js +0 -1
- package/web-ui/build/static/python-sRExKvGw.js +0 -1
- package/web-ui/build/static/q-B8K1uEtE.js +0 -1
- package/web-ui/build/static/q-iptUl3TG.js +0 -1
- package/web-ui/build/static/qml-Ck-8E28D.js +0 -1
- package/web-ui/build/static/qml-DapR8Kud.js +0 -1
- package/web-ui/build/static/qore-Bq2u6ALt.js +0 -1
- package/web-ui/build/static/qsharp-C9FGwAhI.js +0 -1
- package/web-ui/build/static/r-B8PZ1lyW.js +0 -1
- package/web-ui/build/static/r-jsXxivRe.js +0 -1
- package/web-ui/build/static/racket-BW1YY6oG.js +0 -1
- package/web-ui/build/static/reason-CGrwEH7Y.js +0 -1
- package/web-ui/build/static/reasonml-D2S9u5tv.js +0 -1
- package/web-ui/build/static/regex-Bx_rkaF-.js +0 -1
- package/web-ui/build/static/rego-DYSQb1aU.js +0 -1
- package/web-ui/build/static/renpy-DoEOEpqT.js +0 -1
- package/web-ui/build/static/rest-6xfrLQ1u.js +0 -1
- package/web-ui/build/static/rib-BH2XAOdJ.js +0 -1
- package/web-ui/build/static/rip-BOcHDByA.js +0 -1
- package/web-ui/build/static/roboconf-8nB4fpob.js +0 -1
- package/web-ui/build/static/roboconf-BjKYzQ_Z.js +0 -1
- package/web-ui/build/static/robotframework-BIAT2wY6.js +0 -1
- package/web-ui/build/static/routeros-Bt6cTmB2.js +0 -1
- package/web-ui/build/static/rsl-XvWWVxz_.js +0 -1
- package/web-ui/build/static/ruby-CEfc9tVA.js +0 -1
- package/web-ui/build/static/ruby-CKNSKxB1.js +0 -1
- package/web-ui/build/static/ruleslanguage-tpn62qMj.js +0 -1
- package/web-ui/build/static/rust-Cb-H3ah6.js +0 -1
- package/web-ui/build/static/rust-CmAiRDXU.js +0 -1
- package/web-ui/build/static/sas-6JRKVKN4.js +0 -1
- package/web-ui/build/static/sas-BnSXGxyB.js +0 -1
- package/web-ui/build/static/sass-RPp8p1Ef.js +0 -1
- package/web-ui/build/static/scala-BjZ--04s.js +0 -1
- package/web-ui/build/static/scala-CbHbqC82.js +0 -1
- package/web-ui/build/static/scheme-51taSudc.js +0 -1
- package/web-ui/build/static/scheme-FF2J1d7z.js +0 -1
- package/web-ui/build/static/scilab-CSU1i7r7.js +0 -1
- package/web-ui/build/static/scss-Bf9-1Rwp.js +0 -1
- package/web-ui/build/static/scss-kWs2GBCV.js +0 -1
- package/web-ui/build/static/shell-B6aH0_VB.js +0 -1
- package/web-ui/build/static/shell-session-42tFBoqK.js +0 -1
- package/web-ui/build/static/smali-BTC2VGoh.js +0 -1
- package/web-ui/build/static/smali-CFCAUthF.js +0 -1
- package/web-ui/build/static/smalltalk-C4Z4p5Ld.js +0 -1
- package/web-ui/build/static/smalltalk-DS9teHSb.js +0 -1
- package/web-ui/build/static/smarty-9tLXgYFw.js +0 -1
- package/web-ui/build/static/sml-CvQCOzHl.js +0 -1
- package/web-ui/build/static/sml-D7VN7gLP.js +0 -1
- package/web-ui/build/static/solidity-C8mgaeFG.js +0 -1
- package/web-ui/build/static/solution-file-BW6eSi9-.js +0 -1
- package/web-ui/build/static/soy-iYu8WojY.js +0 -1
- package/web-ui/build/static/sparql-fr7u_sdF.js +0 -1
- package/web-ui/build/static/splunk-spl-C1ELr7BN.js +0 -1
- package/web-ui/build/static/sqf-8e9uVb30.js +0 -1
- package/web-ui/build/static/sqf-CWavw2F4.js +0 -1
- package/web-ui/build/static/sql-DC_QvrP2.js +0 -1
- package/web-ui/build/static/sql-yLctL19P.js +0 -1
- package/web-ui/build/static/sql_more-KfXMatfe.js +0 -1
- package/web-ui/build/static/squirrel-Bjd69daG.js +0 -1
- package/web-ui/build/static/stan-CaplZnB-.js +0 -1
- package/web-ui/build/static/stan-UYitmAjw.js +0 -1
- package/web-ui/build/static/stata-Beng42ZG.js +0 -1
- package/web-ui/build/static/step21-jqm1hcSr.js +0 -1
- package/web-ui/build/static/stylus-DB7RdP7s.js +0 -1
- package/web-ui/build/static/stylus-IFC9sMcH.js +0 -1
- package/web-ui/build/static/subunit-B75tNAV5.js +0 -1
- package/web-ui/build/static/swift-BRcicKMn.js +0 -1
- package/web-ui/build/static/swift-s8OoLWy_.js +0 -1
- package/web-ui/build/static/systemd-BC7VQvFw.js +0 -1
- package/web-ui/build/static/t4-cs-C6aVcIEq.js +0 -1
- package/web-ui/build/static/t4-templating-cVFAPDZQ.js +0 -1
- package/web-ui/build/static/t4-vb-DwpqTEJL.js +0 -1
- package/web-ui/build/static/taggerscript-GaB8ayWT.js +0 -1
- package/web-ui/build/static/tap-DN_-tQNk.js +0 -1
- package/web-ui/build/static/tap-XgwFSVSK.js +0 -1
- package/web-ui/build/static/tcl-D6eT7YQe.js +0 -1
- package/web-ui/build/static/tcl-DiEmh3pJ.js +0 -1
- package/web-ui/build/static/textile-cNMT-4v2.js +0 -1
- package/web-ui/build/static/thrift-DTgTgcBm.js +0 -1
- package/web-ui/build/static/toml-B8XPB_4B.js +0 -1
- package/web-ui/build/static/tp-NpmS9CLR.js +0 -1
- package/web-ui/build/static/tremor-OVZ172ee.js +0 -1
- package/web-ui/build/static/tsx-B1xtIV1E.js +0 -1
- package/web-ui/build/static/tt2-DITHT_e6.js +0 -1
- package/web-ui/build/static/turtle-D3IrO7qu.js +0 -1
- package/web-ui/build/static/twig-Bwmu1-US.js +0 -1
- package/web-ui/build/static/twig-CmWIdHrv.js +0 -1
- package/web-ui/build/static/typescript-BI4GgjOm.js +0 -1
- package/web-ui/build/static/typescript-D6hycyND.js +0 -1
- package/web-ui/build/static/typoscript-5S0Q3h4I.js +0 -1
- package/web-ui/build/static/unrealscript-CaROCOEp.js +0 -1
- package/web-ui/build/static/uorazor-VyIQ6lvW.js +0 -1
- package/web-ui/build/static/uri-DDdjLj4-.js +0 -1
- package/web-ui/build/static/v-CzPHqjdM.js +0 -1
- package/web-ui/build/static/vala-CRK3Oxn2.js +0 -1
- package/web-ui/build/static/vala-DTG5j_IY.js +0 -1
- package/web-ui/build/static/vbnet-C6z8S410.js +0 -1
- package/web-ui/build/static/vbnet-cWNTX8Og.js +0 -1
- package/web-ui/build/static/vbscript-CyA_PhGn.js +0 -1
- package/web-ui/build/static/vbscript-html-CidnweeC.js +0 -1
- package/web-ui/build/static/velocity-Dp6ZU1nS.js +0 -1
- package/web-ui/build/static/verilog-CilE-jD9.js +0 -1
- package/web-ui/build/static/verilog-RAde9Uda.js +0 -1
- package/web-ui/build/static/vhdl-CHS4lDo8.js +0 -1
- package/web-ui/build/static/vhdl-D5o9ErDa.js +0 -1
- package/web-ui/build/static/vim-B8jwaGJ6.js +0 -1
- package/web-ui/build/static/vim-BZrCpxwn.js +0 -1
- package/web-ui/build/static/visual-basic-By6WIP3n.js +0 -1
- package/web-ui/build/static/warpscript-BQF8R5WL.js +0 -1
- package/web-ui/build/static/wasm-DJyk23np.js +0 -1
- package/web-ui/build/static/web-idl-DezqVYtV.js +0 -1
- package/web-ui/build/static/wiki-CiJcHWqV.js +0 -1
- package/web-ui/build/static/wolfram-DjwPz6pa.js +0 -1
- package/web-ui/build/static/wren-lzb3aV3F.js +0 -1
- package/web-ui/build/static/x86asm-CCNfO4dU.js +0 -1
- package/web-ui/build/static/xeora-CRaNjAb0.js +0 -1
- package/web-ui/build/static/xl-CRqWPyuc.js +0 -1
- package/web-ui/build/static/xml-Uuta5J77.js +0 -1
- package/web-ui/build/static/xml-doc-Drc3ho9Y.js +0 -1
- package/web-ui/build/static/xojo-D2WT5Q0J.js +0 -1
- package/web-ui/build/static/xquery-CwB9Zxcf.js +0 -1
- package/web-ui/build/static/xquery-DA5NuZxN.js +0 -1
- package/web-ui/build/static/yaml-DJMpA9ia.js +0 -1
- package/web-ui/build/static/yaml-DxiY0s1_.js +0 -1
- package/web-ui/build/static/yang-DPrwGYlZ.js +0 -1
- package/web-ui/build/static/zephir-DOfPWp4I.js +0 -1
- package/web-ui/build/static/zig-BE1mX447.js +0 -1
package/src/tools/imageTool.js
CHANGED
|
@@ -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.
|
|
240
|
+
"outputPath": "images/filename.webp",
|
|
234
241
|
"size": "1024x1024"
|
|
235
242
|
}
|
|
236
243
|
}
|
|
237
244
|
\`\`\`
|
|
238
245
|
|
|
239
|
-
**USAGE —
|
|
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.
|
|
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.
|
|
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
|
|
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
|
|
1052
|
-
await
|
|
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}
|
|
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}
|
|
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
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
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') {
|
package/src/tools/jobDoneTool.js
CHANGED
|
@@ -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
|
-
|
|
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
|
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ancestry checks for platformControlTool's hard rules.
|
|
3
|
+
*
|
|
4
|
+
* Each agent record carries `createdBy: <agentId> | null`. An agent
|
|
5
|
+
* created via this tool inherits the caller's id as its parent;
|
|
6
|
+
* agents created via the UI have `createdBy: null` (no parent).
|
|
7
|
+
*
|
|
8
|
+
* The hard rule "no descendant modifies an ancestor" requires walking
|
|
9
|
+
* UP the caller's chain looking for the target. Done as a pure function
|
|
10
|
+
* over an `(id) → agent` lookup so it's testable without an agent pool.
|
|
11
|
+
*
|
|
12
|
+
* Defenses:
|
|
13
|
+
* - Cycle detection (visited set). The data model isn't supposed to
|
|
14
|
+
* have cycles, but a corrupt state file shouldn't crash the tool.
|
|
15
|
+
* - Depth cap (CHAIN_MAX). Hard ceiling on chain walks; if a real
|
|
16
|
+
* deployment ever sees a chain this deep, we have other problems.
|
|
17
|
+
* - Missing-agent tolerance. If the lookup returns null mid-walk we
|
|
18
|
+
* stop cleanly — orphaned chains are treated as "no further parent".
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
export const CHAIN_MAX = 100;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Returns true if `targetId` appears in `callerId`'s ancestor chain.
|
|
25
|
+
* Self is NOT counted as an ancestor here — the self-modify rule is a
|
|
26
|
+
* separate check at the call site (`targetId === callerId`).
|
|
27
|
+
*
|
|
28
|
+
* @param {string} callerId
|
|
29
|
+
* @param {string} targetId
|
|
30
|
+
* @param {(id: string) => ({ id?: string, createdBy?: string|null }|null|undefined)} getAgent
|
|
31
|
+
* @returns {boolean}
|
|
32
|
+
*/
|
|
33
|
+
export function isAncestor(callerId, targetId, getAgent) {
|
|
34
|
+
if (!callerId || !targetId) return false;
|
|
35
|
+
if (callerId === targetId) return false; // self isn't an ancestor in this sense
|
|
36
|
+
if (typeof getAgent !== 'function') return false;
|
|
37
|
+
|
|
38
|
+
const visited = new Set([callerId]);
|
|
39
|
+
let cursorId = callerId;
|
|
40
|
+
for (let i = 0; i < CHAIN_MAX; i++) {
|
|
41
|
+
const cursor = getAgent(cursorId);
|
|
42
|
+
if (!cursor) return false;
|
|
43
|
+
const parentId = cursor.createdBy;
|
|
44
|
+
if (!parentId) return false;
|
|
45
|
+
if (parentId === targetId) return true;
|
|
46
|
+
if (visited.has(parentId)) return false; // cycle — bail
|
|
47
|
+
visited.add(parentId);
|
|
48
|
+
cursorId = parentId;
|
|
49
|
+
}
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Convenience: would `callerId` be blocked by the hard rules from
|
|
55
|
+
* mutating `targetId`? Combines self-modify + ancestor-modify checks.
|
|
56
|
+
*/
|
|
57
|
+
export function isProtectedFromCaller(callerId, targetId, getAgent) {
|
|
58
|
+
if (!callerId || !targetId) return false;
|
|
59
|
+
if (callerId === targetId) return true; // self-modify forbidden
|
|
60
|
+
return isAncestor(callerId, targetId, getAgent);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Build a `getAgent` lookup from an iterable of agents (Map, array,
|
|
65
|
+
* agentPool.getAllAgents() result). Used by the tool when it has the
|
|
66
|
+
* full set in hand and doesn't want to do async lookups inside the
|
|
67
|
+
* pure ancestry walk.
|
|
68
|
+
*/
|
|
69
|
+
export function makeAgentLookup(agents) {
|
|
70
|
+
if (!agents) return () => null;
|
|
71
|
+
if (typeof agents.get === 'function' && typeof agents.has === 'function') {
|
|
72
|
+
return (id) => agents.get(id) || null;
|
|
73
|
+
}
|
|
74
|
+
if (Array.isArray(agents)) {
|
|
75
|
+
const map = new Map(agents.filter(a => a && a.id).map(a => [a.id, a]));
|
|
76
|
+
return (id) => map.get(id) || null;
|
|
77
|
+
}
|
|
78
|
+
// Plain object
|
|
79
|
+
if (typeof agents === 'object') {
|
|
80
|
+
return (id) => agents[id] || null;
|
|
81
|
+
}
|
|
82
|
+
return () => null;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export default { CHAIN_MAX, isAncestor, isProtectedFromCaller, makeAgentLookup };
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cascade-on-delete service for platformControlTool.
|
|
3
|
+
*
|
|
4
|
+
* Independent of the tool's permission logic — that gates whether a
|
|
5
|
+
* delete is allowed; THIS module does the actual cleanup once the
|
|
6
|
+
* delete is approved. Modular + testable: every dependency is injected,
|
|
7
|
+
* each step is independently observable, and failures in earlier steps
|
|
8
|
+
* don't abort later ones unless `strict:true`.
|
|
9
|
+
*
|
|
10
|
+
* Why this lives in its own file:
|
|
11
|
+
* - The tool's dispatch is already long; embedding the cleanup choreography
|
|
12
|
+
* would obscure the permission logic.
|
|
13
|
+
* - The cleanup needs to be testable WITHOUT spinning up real services
|
|
14
|
+
* (real ScheduleService writes files, real AgentPool spawns processes).
|
|
15
|
+
* - Future deletions (delete-team-with-cascade, delete-agent-with-flow-cleanup)
|
|
16
|
+
* can plug new steps in here without touching the tool dispatcher.
|
|
17
|
+
*
|
|
18
|
+
* Step order for cascadeDeleteAgent — in this exact order, on purpose:
|
|
19
|
+
* 1. Schedules: deleted FIRST so they can't fire mid-cleanup and re-spawn work.
|
|
20
|
+
* 2. Memories: small file deletion; if it fails, agent state is still cleanable.
|
|
21
|
+
* 3. Team memberships: removes the agentId from every team that contains it.
|
|
22
|
+
* 4. The agent itself (agentPool.deleteAgent): handles attachments, terminal
|
|
23
|
+
* processes, visual editor, persistent state — all already implemented there.
|
|
24
|
+
*
|
|
25
|
+
* Each step yields an entry on the report. The caller surfaces this to
|
|
26
|
+
* the agent making the call so they know what happened.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @param {object} args
|
|
31
|
+
* @param {string} args.agentId
|
|
32
|
+
* @param {object} args.scheduleService — `listSchedules`, `deleteSchedule`
|
|
33
|
+
* @param {object} args.memoryService — `deleteMemoryFile(agentId)`
|
|
34
|
+
* @param {object} args.stateManager — `getAllTeams`, `removeAgentFromTeam`
|
|
35
|
+
* @param {object} args.agentPool — `deleteAgent(agentId)`
|
|
36
|
+
* @param {object} [args.logger] — { warn(msg, meta) }
|
|
37
|
+
* @param {boolean} [args.strict=false] — abort on first failure
|
|
38
|
+
* @returns {Promise<{
|
|
39
|
+
* schedulesDeleted: number,
|
|
40
|
+
* memoriesCleaned: boolean,
|
|
41
|
+
* teamsLeft: string[],
|
|
42
|
+
* agentDeleted: boolean,
|
|
43
|
+
* errors: Array<{ step: string, error: string }>,
|
|
44
|
+
* }>}
|
|
45
|
+
*/
|
|
46
|
+
export async function cascadeDeleteAgent({
|
|
47
|
+
agentId,
|
|
48
|
+
scheduleService,
|
|
49
|
+
memoryService,
|
|
50
|
+
stateManager,
|
|
51
|
+
agentPool,
|
|
52
|
+
logger,
|
|
53
|
+
strict = false,
|
|
54
|
+
}) {
|
|
55
|
+
if (!agentId) throw new Error('cascadeDeleteAgent: agentId is required');
|
|
56
|
+
|
|
57
|
+
const report = {
|
|
58
|
+
schedulesDeleted: 0,
|
|
59
|
+
memoriesCleaned: false,
|
|
60
|
+
teamsLeft: [],
|
|
61
|
+
agentDeleted: false,
|
|
62
|
+
errors: [],
|
|
63
|
+
};
|
|
64
|
+
const log = logger || { warn() {} };
|
|
65
|
+
|
|
66
|
+
// Wrapper so each step is independently fail-tolerant. In strict mode,
|
|
67
|
+
// the first failure throws and skips the rest.
|
|
68
|
+
const step = async (name, fn) => {
|
|
69
|
+
try { await fn(); }
|
|
70
|
+
catch (err) {
|
|
71
|
+
const msg = err?.message || String(err);
|
|
72
|
+
report.errors.push({ step: name, error: msg });
|
|
73
|
+
log.warn(`[cascadeDeleteAgent] step "${name}" failed`, { agentId, error: msg });
|
|
74
|
+
if (strict) throw err;
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
// 1. Schedules
|
|
79
|
+
await step('schedules', async () => {
|
|
80
|
+
if (!scheduleService) return;
|
|
81
|
+
const all = typeof scheduleService.listSchedules === 'function'
|
|
82
|
+
? scheduleService.listSchedules() : [];
|
|
83
|
+
const owned = (Array.isArray(all) ? all : []).filter(s =>
|
|
84
|
+
s && s.targetType === 'agent' && s.targetId === agentId);
|
|
85
|
+
for (const s of owned) {
|
|
86
|
+
await scheduleService.deleteSchedule(s.id);
|
|
87
|
+
report.schedulesDeleted++;
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
// 2. Memory file
|
|
92
|
+
await step('memories', async () => {
|
|
93
|
+
if (!memoryService || typeof memoryService.deleteMemoryFile !== 'function') return;
|
|
94
|
+
const ok = await memoryService.deleteMemoryFile(agentId);
|
|
95
|
+
report.memoriesCleaned = !!ok;
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
// 3. Team memberships
|
|
99
|
+
await step('teams', async () => {
|
|
100
|
+
if (!stateManager || typeof stateManager.getAllTeams !== 'function') return;
|
|
101
|
+
const teams = await stateManager.getAllTeams();
|
|
102
|
+
const containing = (Array.isArray(teams) ? teams : []).filter(t =>
|
|
103
|
+
t && Array.isArray(t.memberAgentIds) && t.memberAgentIds.includes(agentId));
|
|
104
|
+
for (const t of containing) {
|
|
105
|
+
await stateManager.removeAgentFromTeam(t.id, agentId);
|
|
106
|
+
report.teamsLeft.push(t.id);
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
// 4. The agent record itself.
|
|
111
|
+
await step('agentPool', async () => {
|
|
112
|
+
if (!agentPool || typeof agentPool.deleteAgent !== 'function') {
|
|
113
|
+
throw new Error('agentPool.deleteAgent unavailable');
|
|
114
|
+
}
|
|
115
|
+
await agentPool.deleteAgent(agentId);
|
|
116
|
+
report.agentDeleted = true;
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
return report;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Team delete is much simpler — `stateManager.deleteTeam` already
|
|
124
|
+
* removes the team record (and the memberships die with it because
|
|
125
|
+
* they live INSIDE the team object, not in a separate join table).
|
|
126
|
+
*
|
|
127
|
+
* Kept here for symmetry and to centralize "what does cascade-delete
|
|
128
|
+
* mean per resource type" in one file.
|
|
129
|
+
*/
|
|
130
|
+
export async function cascadeDeleteTeam({ teamId, stateManager, logger }) {
|
|
131
|
+
if (!teamId) throw new Error('cascadeDeleteTeam: teamId is required');
|
|
132
|
+
const log = logger || { warn() {} };
|
|
133
|
+
const report = { teamDeleted: false, errors: [] };
|
|
134
|
+
try {
|
|
135
|
+
await stateManager.deleteTeam(teamId);
|
|
136
|
+
report.teamDeleted = true;
|
|
137
|
+
} catch (err) {
|
|
138
|
+
const msg = err?.message || String(err);
|
|
139
|
+
report.errors.push({ step: 'team', error: msg });
|
|
140
|
+
log.warn('[cascadeDeleteTeam] failed', { teamId, error: msg });
|
|
141
|
+
throw err; // unlike agent cascade, team-delete is a single op; rethrow.
|
|
142
|
+
}
|
|
143
|
+
return report;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export default { cascadeDeleteAgent, cascadeDeleteTeam };
|