onbuzz 3.9.10 → 4.0.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__/agentScheduler.test.js +129 -0
- package/src/core/agentScheduler.js +554 -64
- package/src/index.js +8 -0
- package/src/interfaces/webServer.js +288 -0
- package/src/services/__tests__/channelFilter.test.js +264 -0
- package/src/services/__tests__/channelRelay.integration.test.js +496 -0
- package/src/services/__tests__/discordService.integration.test.js +10 -10
- package/src/services/__tests__/discordService.test.js +14 -7
- package/src/services/aiService.js +10 -3
- package/src/services/channelFilter.js +137 -0
- package/src/services/discordService.js +103 -19
- package/src/services/telegramService.js +58 -1
- package/src/tools/fileSystemTool.js +27 -3
- package/src/tools/openaiFunctionSchemas.js +270 -0
- package/src/tools/taskManagerTool.js +35 -2
- package/src/tools/terminalTool.js +23 -2
- package/src/utilities/constants.js +9 -0
- package/web-ui/build/index.html +2 -2
- package/web-ui/build/static/1c-D0gS3Hso.js +1 -0
- package/web-ui/build/static/abap-CyCKEEhS.js +1 -0
- package/web-ui/build/static/abnf-BZBn0pag.js +1 -0
- package/web-ui/build/static/abnf-BpCrg_Bf.js +1 -0
- package/web-ui/build/static/accesslog-DuTggsRZ.js +1 -0
- package/web-ui/build/static/actionscript-Ba9yLObR.js +1 -0
- package/web-ui/build/static/actionscript-C_BTnWxb.js +1 -0
- package/web-ui/build/static/ada-B69_itVh.js +1 -0
- package/web-ui/build/static/ada-DoeTM_BQ.js +1 -0
- package/web-ui/build/static/agda-jCpnVEpX.js +1 -0
- package/web-ui/build/static/al-CakFGn97.js +1 -0
- package/web-ui/build/static/angelscript-CnSUNIGj.js +1 -0
- package/web-ui/build/static/antlr4-Cn-R7SWD.js +1 -0
- package/web-ui/build/static/apache-jWzYeO33.js +1 -0
- package/web-ui/build/static/apacheconf-Qf6ccteC.js +1 -0
- package/web-ui/build/static/apex-BBFeLnmZ.js +1 -0
- package/web-ui/build/static/apl-Id4G-9pR.js +1 -0
- package/web-ui/build/static/applescript-Cndkqqg_.js +1 -0
- package/web-ui/build/static/applescript-De2uOrG8.js +1 -0
- package/web-ui/build/static/aql-Bx0hBEFP.js +1 -0
- package/web-ui/build/static/arcade-kv3B2d64.js +1 -0
- package/web-ui/build/static/arduino-Di5etN7-.js +1 -0
- package/web-ui/build/static/arduino-dzzVGXPJ.js +1 -0
- package/web-ui/build/static/arff-vVmlJyxT.js +1 -0
- package/web-ui/build/static/armasm-CLLemW4j.js +1 -0
- package/web-ui/build/static/asciidoc-5N0GIB1H.js +1 -0
- package/web-ui/build/static/asciidoc-BUQcC9k5.js +1 -0
- package/web-ui/build/static/asm6502-DrvbjZqg.js +1 -0
- package/web-ui/build/static/asmatmel-DXaAmo9p.js +1 -0
- package/web-ui/build/static/aspectj-QEbU6lqv.js +1 -0
- package/web-ui/build/static/aspnet-D1DOd55H.js +1 -0
- package/web-ui/build/static/autohotkey-CeN6Nxl7.js +1 -0
- package/web-ui/build/static/autohotkey-DK33Y-ag.js +1 -0
- package/web-ui/build/static/autoit-Ce15EHmT.js +1 -0
- package/web-ui/build/static/autoit-Du48dS3x.js +1 -0
- package/web-ui/build/static/avisynth-CTNNDQJu.js +1 -0
- package/web-ui/build/static/avrasm-U3bAmy_8.js +1 -0
- package/web-ui/build/static/avro-idl-hdYq5Y_G.js +1 -0
- package/web-ui/build/static/awk-D_y_Ybkz.js +1 -0
- package/web-ui/build/static/axapta-BtorzWAb.js +1 -0
- package/web-ui/build/static/bash-C7jHPzRr.js +1 -0
- package/web-ui/build/static/bash-C8rx4ZX7.js +1 -0
- package/web-ui/build/static/basic-BnB1QbT9.js +1 -0
- package/web-ui/build/static/basic-C3lmrCJn.js +1 -0
- package/web-ui/build/static/batch-D3zfZMkE.js +1 -0
- package/web-ui/build/static/bbcode-CcaWY4r6.js +1 -0
- package/web-ui/build/static/bicep-BTSNjNeE.js +1 -0
- package/web-ui/build/static/birb-FlitQ-CB.js +1 -0
- package/web-ui/build/static/bison-BwUeAPik.js +1 -0
- package/web-ui/build/static/bnf-BO0epnqT.js +1 -0
- package/web-ui/build/static/bnf-Dr7Yhkhf.js +1 -0
- package/web-ui/build/static/brainfuck-CQXtVvdr.js +1 -0
- package/web-ui/build/static/brainfuck-DBI8WFED.js +1 -0
- package/web-ui/build/static/brightscript-DMCw9cpk.js +1 -0
- package/web-ui/build/static/bro-DLuuGrl1.js +1 -0
- package/web-ui/build/static/bsl-YJucc4YV.js +1 -0
- package/web-ui/build/static/c-DhDv7jSS.js +1 -0
- package/web-ui/build/static/c-DxhyzKko.js +1 -0
- package/web-ui/build/static/c-like-DlgSkBV0.js +1 -0
- package/web-ui/build/static/cal-l1d2rfZn.js +1 -0
- package/web-ui/build/static/capnproto-dj8ChcGe.js +1 -0
- package/web-ui/build/static/ceylon-D54yMfbT.js +1 -0
- package/web-ui/build/static/cfscript-D6rZc4oz.js +1 -0
- package/web-ui/build/static/chaiscript-C5TnPhY1.js +1 -0
- package/web-ui/build/static/cil-OfdzNvKT.js +1 -0
- package/web-ui/build/static/clean-CIKWd5m_.js +1 -0
- package/web-ui/build/static/clojure-DPPjCSD9.js +1 -0
- package/web-ui/build/static/clojure-E4hINJlB.js +1 -0
- package/web-ui/build/static/clojure-repl-ByPwVP0v.js +1 -0
- package/web-ui/build/static/cmake-EmgODR4I.js +1 -0
- package/web-ui/build/static/cmake-FzVdKoPQ.js +1 -0
- package/web-ui/build/static/cobol-BCywZ9YX.js +1 -0
- package/web-ui/build/static/coffeescript-B3PJfOGT.js +1 -0
- package/web-ui/build/static/coffeescript-Cn6ayg_l.js +1 -0
- package/web-ui/build/static/concurnas-CDZuVXuU.js +1 -0
- package/web-ui/build/static/coq-CmxamUdH.js +1 -0
- package/web-ui/build/static/coq-OIzJsY4F.js +1 -0
- package/web-ui/build/static/cos-DGL5rP0B.js +1 -0
- package/web-ui/build/static/cpp-6bJ9ZCLp.js +1 -0
- package/web-ui/build/static/cpp-CnpCPPE0.js +1 -0
- package/web-ui/build/static/crmsh-UqfNCx22.js +1 -0
- package/web-ui/build/static/crystal-BZPfo8wh.js +1 -0
- package/web-ui/build/static/crystal-BmnmtxvU.js +1 -0
- package/web-ui/build/static/csharp-Ddd4cQJM.js +1 -0
- package/web-ui/build/static/csharp-Ozmwd4H7.js +1 -0
- package/web-ui/build/static/cshtml-CKUifIKv.js +1 -0
- package/web-ui/build/static/csp-DIKKHabm.js +1 -0
- package/web-ui/build/static/csp-DVNj8KoC.js +1 -0
- package/web-ui/build/static/css-C5xXuaIa.js +1 -0
- package/web-ui/build/static/css-extras-BcO-SjvT.js +1 -0
- package/web-ui/build/static/csv-Ckfvef5r.js +1 -0
- package/web-ui/build/static/cypher-nFX3ujhC.js +1 -0
- package/web-ui/build/static/d-C51vBcAN.js +1 -0
- package/web-ui/build/static/d-C5Zzmfpj.js +1 -0
- package/web-ui/build/static/dart-DTgXq_zq.js +1 -0
- package/web-ui/build/static/dart-nEf62Xtl.js +1 -0
- package/web-ui/build/static/dataweave-BBu_SXNo.js +1 -0
- package/web-ui/build/static/dax-BgSY6VXv.js +1 -0
- package/web-ui/build/static/delphi-BsEFn1Dg.js +1 -0
- package/web-ui/build/static/dhall-DZLoRbRq.js +1 -0
- package/web-ui/build/static/diff-BigjWm8-.js +1 -0
- package/web-ui/build/static/diff-GaoenF5U.js +1 -0
- package/web-ui/build/static/django-BHquQxg_.js +1 -0
- package/web-ui/build/static/django-BklTsfN1.js +1 -0
- package/web-ui/build/static/dns-Fye2v3C_.js +1 -0
- package/web-ui/build/static/dns-zone-file-Cl9DxAn6.js +1 -0
- package/web-ui/build/static/docker-ByXHv0Ly.js +1 -0
- package/web-ui/build/static/dockerfile-C3JvS7wx.js +1 -0
- package/web-ui/build/static/dos-DZjvZtlb.js +1 -0
- package/web-ui/build/static/dot-Ce9RBw-P.js +1 -0
- package/web-ui/build/static/dsconfig-CqzyFCWR.js +1 -0
- package/web-ui/build/static/dts-CzmHan27.js +1 -0
- package/web-ui/build/static/dust-ooMZaltT.js +1 -0
- package/web-ui/build/static/ebnf-BQTW3VN9.js +1 -0
- package/web-ui/build/static/ebnf-BWQPIMhj.js +1 -0
- package/web-ui/build/static/editorconfig-ChULEndb.js +1 -0
- package/web-ui/build/static/eiffel-DNf4Lf6d.js +1 -0
- package/web-ui/build/static/ejs-BN91k0H9.js +1 -0
- package/web-ui/build/static/elixir-BsUN2TJ3.js +1 -0
- package/web-ui/build/static/elixir-DowOmwjw.js +1 -0
- package/web-ui/build/static/elm-BR0-AOlB.js +1 -0
- package/web-ui/build/static/elm-CyQ-Tu1y.js +1 -0
- package/web-ui/build/static/erb-C3-ICRZC.js +1 -0
- package/web-ui/build/static/erb-CDwwnVfP.js +1 -0
- package/web-ui/build/static/erlang-CkKAvBqC.js +1 -0
- package/web-ui/build/static/erlang-b8hjzYg_.js +1 -0
- package/web-ui/build/static/erlang-repl-gGfh3Gx4.js +1 -0
- package/web-ui/build/static/etlua-DD1BETje.js +1 -0
- package/web-ui/build/static/excel-BHUhNjbb.js +1 -0
- package/web-ui/build/static/excel-formula-pygAkTSb.js +1 -0
- package/web-ui/build/static/factor-DGtAXbeO.js +1 -0
- package/web-ui/build/static/false-CmwPZZMx.js +1 -0
- package/web-ui/build/static/firestore-security-rules-BPVh7g3V.js +1 -0
- package/web-ui/build/static/fix-D0X2IrLW.js +1 -0
- package/web-ui/build/static/flix-B_K9PtSC.js +1 -0
- package/web-ui/build/static/flow-Bj8UDWFS.js +1 -0
- package/web-ui/build/static/fortran-CVjlvxYP.js +1 -0
- package/web-ui/build/static/fortran-CeuwkeSi.js +1 -0
- package/web-ui/build/static/fsharp-7ZnhHRI2.js +1 -0
- package/web-ui/build/static/fsharp-Dg0zkEUM.js +1 -0
- package/web-ui/build/static/ftl-DTiv91OH.js +1 -0
- package/web-ui/build/static/gams-mzIliqa9.js +1 -0
- package/web-ui/build/static/gap-CZy17Yrg.js +1 -0
- package/web-ui/build/static/gauss-eN8ZSPsu.js +1 -0
- package/web-ui/build/static/gcode-BilRDZ1d.js +1 -0
- package/web-ui/build/static/gcode-DgLXH4R9.js +1 -0
- package/web-ui/build/static/gdscript-ZYuV2APS.js +1 -0
- package/web-ui/build/static/gedcom-0kGxJiZ9.js +1 -0
- package/web-ui/build/static/gherkin-CCSGpV3s.js +1 -0
- package/web-ui/build/static/gherkin-DGxXFCBT.js +1 -0
- package/web-ui/build/static/git-CdLGzlwT.js +1 -0
- package/web-ui/build/static/glsl-BtFVLAdf.js +1 -0
- package/web-ui/build/static/glsl-pOLV_i61.js +1 -0
- package/web-ui/build/static/gml-BvRYdpYB.js +1 -0
- package/web-ui/build/static/gml-kixDldbq.js +1 -0
- package/web-ui/build/static/gn-B0j6r1ZR.js +1 -0
- package/web-ui/build/static/go-0gVqv26H.js +1 -0
- package/web-ui/build/static/go-hMMVdAxn.js +1 -0
- package/web-ui/build/static/go-module-nQEPOPuc.js +1 -0
- package/web-ui/build/static/golo-Dm43VBu7.js +1 -0
- package/web-ui/build/static/gradle-CHC1_Cae.js +1 -0
- package/web-ui/build/static/graphql-0VBsLded.js +1 -0
- package/web-ui/build/static/groovy-D8pgT7Gh.js +1 -0
- package/web-ui/build/static/groovy-LYh6lufY.js +1 -0
- package/web-ui/build/static/haml-D7TlUCYV.js +1 -0
- package/web-ui/build/static/haml-DM_YbLsX.js +1 -0
- package/web-ui/build/static/handlebars-C6s9z8yY.js +1 -0
- package/web-ui/build/static/handlebars-MmYUBbhF.js +1 -0
- package/web-ui/build/static/haskell-WDNKcSr-.js +1 -0
- package/web-ui/build/static/haskell-uN4RNceQ.js +1 -0
- package/web-ui/build/static/haxe-BfngEDpC.js +1 -0
- package/web-ui/build/static/haxe-Di7jSobz.js +1 -0
- package/web-ui/build/static/hcl-CCY9WaU5.js +1 -0
- package/web-ui/build/static/hlsl-BZeRODlS.js +1 -0
- package/web-ui/build/static/hoon-CYgEwHo6.js +1 -0
- package/web-ui/build/static/hpkp-CDGRQT6H.js +1 -0
- package/web-ui/build/static/hsp-Bd3e6SwQ.js +1 -0
- package/web-ui/build/static/hsts-BOUlTJ6c.js +1 -0
- package/web-ui/build/static/htmlbars-BPiYH0_n.js +1 -0
- package/web-ui/build/static/http-BX5oUCxR.js +1 -0
- package/web-ui/build/static/http-DVroDmj6.js +1 -0
- package/web-ui/build/static/hy-BCcF_QHP.js +1 -0
- package/web-ui/build/static/ichigojam-BiISBr0y.js +1 -0
- package/web-ui/build/static/icon-ClvK1B41.js +1 -0
- package/web-ui/build/static/icu-message-format-DbYDqmui.js +1 -0
- package/web-ui/build/static/idris-DUkwgVYa.js +1 -0
- package/web-ui/build/static/iecst-Dsthm7u9.js +1 -0
- package/web-ui/build/static/ignore-C6sD6BBI.js +1 -0
- package/web-ui/build/static/index-BJi0QI4y.js +13 -0
- package/web-ui/build/static/index-BUtXAjd5.css +1 -0
- package/web-ui/build/static/index-C0yagaf_.js +1 -0
- package/web-ui/build/static/index-rmQCMu11.js +834 -0
- package/web-ui/build/static/inform7-BhpCpaCI.js +1 -0
- package/web-ui/build/static/inform7-CypdUZ2H.js +1 -0
- package/web-ui/build/static/ini-D3bMjLFy.js +1 -0
- package/web-ui/build/static/ini-mZ4DmMFa.js +1 -0
- package/web-ui/build/static/io-CAPenDjW.js +1 -0
- package/web-ui/build/static/irpf90-DMLZfHOl.js +1 -0
- package/web-ui/build/static/isbl-C-heO4bo.js +1 -0
- package/web-ui/build/static/j-CYnuDyva.js +1 -0
- package/web-ui/build/static/java-BwxvO1xU.js +1 -0
- package/web-ui/build/static/java-DrS-TIOG.js +1 -0
- package/web-ui/build/static/javadoc-C7g1nvf0.js +1 -0
- package/web-ui/build/static/javadoclike-BccMcxyJ.js +1 -0
- package/web-ui/build/static/javascript-BTLBzg4X.js +1 -0
- package/web-ui/build/static/javastacktrace-DMfJDkdg.js +1 -0
- package/web-ui/build/static/jboss-cli-Bod2dA9a.js +1 -0
- package/web-ui/build/static/jexl-N6nsHGWj.js +1 -0
- package/web-ui/build/static/jolie-CsrX6xYs.js +1 -0
- package/web-ui/build/static/jq-UVBu2R02.js +1 -0
- package/web-ui/build/static/js-extras-CuwwBN5k.js +1 -0
- package/web-ui/build/static/js-templates-DIBe0p7a.js +1 -0
- package/web-ui/build/static/jsdoc-DtDbuWdy.js +1 -0
- package/web-ui/build/static/json-BI3FHwe1.js +1 -0
- package/web-ui/build/static/json-P6SuA8aJ.js +1 -0
- package/web-ui/build/static/json5-CRP2homn.js +1 -0
- package/web-ui/build/static/jsonp-9ElDctKO.js +1 -0
- package/web-ui/build/static/jsstacktrace-D2Fl9d_V.js +1 -0
- package/web-ui/build/static/jsx-CQTwBhTH.js +1 -0
- package/web-ui/build/static/julia-DuUl4PLy.js +1 -0
- package/web-ui/build/static/julia-nGiK_b-G.js +1 -0
- package/web-ui/build/static/julia-repl-CZXv3gUI.js +1 -0
- package/web-ui/build/static/keepalived-BXuewLUw.js +1 -0
- package/web-ui/build/static/keyman-qJzqzYn7.js +1 -0
- package/web-ui/build/static/kotlin-B9n_utKk.js +1 -0
- package/web-ui/build/static/kotlin-haL4BAuN.js +1 -0
- package/web-ui/build/static/kumir-B3qOyQmg.js +1 -0
- package/web-ui/build/static/kusto-DBaBX58G.js +1 -0
- package/web-ui/build/static/lasso-BKSAUuYM.js +1 -0
- package/web-ui/build/static/latex-BRrZyaQT.js +1 -0
- package/web-ui/build/static/latex-m1lQaqf1.js +1 -0
- package/web-ui/build/static/latte-eiBbKf65.js +1 -0
- package/web-ui/build/static/ldif-y2LZUUyZ.js +1 -0
- package/web-ui/build/static/leaf-hIUS2wti.js +1 -0
- package/web-ui/build/static/less-Bo6R8taI.js +1 -0
- package/web-ui/build/static/less-DuKmENyN.js +1 -0
- package/web-ui/build/static/lilypond-BBpJhRQ9.js +1 -0
- package/web-ui/build/static/liquid-CAprdcX2.js +1 -0
- package/web-ui/build/static/lisp-Bf1XYdUw.js +1 -0
- package/web-ui/build/static/lisp-CK4NShQS.js +1 -0
- package/web-ui/build/static/livecodeserver-D-7DT8n5.js +1 -0
- package/web-ui/build/static/livescript-C53jjB4u.js +1 -0
- package/web-ui/build/static/livescript-C6BLAugR.js +1 -0
- package/web-ui/build/static/llvm-DwsfQGGS.js +1 -0
- package/web-ui/build/static/llvm-x2WOwJip.js +1 -0
- package/web-ui/build/static/log-ycx4d2kp.js +1 -0
- package/web-ui/build/static/lolcode-kQPJj9kJ.js +1 -0
- package/web-ui/build/static/lsl-DYPjhHe3.js +1 -0
- package/web-ui/build/static/lua-DbyfdtuA.js +1 -0
- package/web-ui/build/static/lua-k-RdWswg.js +1 -0
- package/web-ui/build/static/magma-C0BRcgX4.js +1 -0
- package/web-ui/build/static/makefile-CZQdxsni.js +1 -0
- package/web-ui/build/static/makefile-D-G1cICu.js +1 -0
- package/web-ui/build/static/markdown-BXgB-fA-.js +1 -0
- package/web-ui/build/static/markdown-Ce-22f29.js +1 -0
- package/web-ui/build/static/markup-templating-BpdQJTBM.js +1 -0
- package/web-ui/build/static/mathematica-IkAnPpu4.js +1 -0
- package/web-ui/build/static/matlab-D00TnflQ.js +1 -0
- package/web-ui/build/static/matlab-D9nj0uha.js +1 -0
- package/web-ui/build/static/maxima-C7a7zrie.js +1 -0
- package/web-ui/build/static/maxscript-BV3koaAu.js +1 -0
- package/web-ui/build/static/mel-C7fC2vR0.js +1 -0
- package/web-ui/build/static/mel-DUFmm8LA.js +1 -0
- package/web-ui/build/static/mercury-D0zWajPt.js +1 -0
- package/web-ui/build/static/mermaid-BcIFh8lC.js +1 -0
- package/web-ui/build/static/mipsasm-Ch8zsfD7.js +1 -0
- package/web-ui/build/static/mizar-D72L8LdH.js +1 -0
- package/web-ui/build/static/mizar-H2a4eeQU.js +1 -0
- package/web-ui/build/static/mojolicious-CXGZY6wR.js +1 -0
- package/web-ui/build/static/mongodb-ycbZ-Gtu.js +1 -0
- package/web-ui/build/static/monkey-B1PWgo4u.js +1 -0
- package/web-ui/build/static/monkey-BTLKqHiE.js +1 -0
- package/web-ui/build/static/moonscript-CGujt4hQ.js +1 -0
- package/web-ui/build/static/moonscript-Cd65ANue.js +1 -0
- package/web-ui/build/static/n1ql-5SoXRWF5.js +1 -0
- package/web-ui/build/static/n1ql-SrTc8dgR.js +1 -0
- package/web-ui/build/static/n4js-DcydNbvU.js +1 -0
- package/web-ui/build/static/nand2tetris-hdl-DgTjIFTD.js +1 -0
- package/web-ui/build/static/naniscript-Cgu0Uhgv.js +1 -0
- package/web-ui/build/static/nasm-C6Jwlhb3.js +1 -0
- package/web-ui/build/static/neon-BlmLz-44.js +1 -0
- package/web-ui/build/static/nevod-QYVtYYuZ.js +1 -0
- package/web-ui/build/static/nginx-BuLLVaOi.js +1 -0
- package/web-ui/build/static/nginx-D32yC6aV.js +1 -0
- package/web-ui/build/static/nim-lYMS-Zao.js +1 -0
- package/web-ui/build/static/nim-mOq8l1DZ.js +1 -0
- package/web-ui/build/static/nix-BF2uUjB0.js +1 -0
- package/web-ui/build/static/nix-CvXMc2Qe.js +1 -0
- package/web-ui/build/static/node-repl-b6WSKwpJ.js +1 -0
- package/web-ui/build/static/nsis-By4cMroz.js +1 -0
- package/web-ui/build/static/nsis-CdtEDB4h.js +1 -0
- package/web-ui/build/static/objectivec-1qRjQ45C.js +1 -0
- package/web-ui/build/static/objectivec-B_fabLIN.js +1 -0
- package/web-ui/build/static/ocaml-CgNFmQRO.js +1 -0
- package/web-ui/build/static/ocaml-RYK_k0qm.js +1 -0
- package/web-ui/build/static/opencl-DS8fpnDf.js +1 -0
- package/web-ui/build/static/openqasm-DJaB3Rq-.js +1 -0
- package/web-ui/build/static/openscad-CG2Cr9_f.js +1 -0
- package/web-ui/build/static/oxygene-C5StnXkF.js +1 -0
- package/web-ui/build/static/oz-Chp4Q4tx.js +1 -0
- package/web-ui/build/static/parigp-CHrkrXXH.js +1 -0
- package/web-ui/build/static/parser-oClS8RsF.js +1 -0
- package/web-ui/build/static/parser3-DAnZ8BBa.js +1 -0
- package/web-ui/build/static/pascal-C3UXKTAg.js +1 -0
- package/web-ui/build/static/pascaligo-bQ2eEItJ.js +1 -0
- package/web-ui/build/static/pcaxis-Cb18v5lb.js +1 -0
- package/web-ui/build/static/peoplecode-DSinbacy.js +1 -0
- package/web-ui/build/static/perl-CJyKzdWx.js +1 -0
- package/web-ui/build/static/perl-DPC7B2HS.js +1 -0
- package/web-ui/build/static/pf-CufleM0I.js +1 -0
- package/web-ui/build/static/pgsql-C_0MdqVp.js +1 -0
- package/web-ui/build/static/php-BO1Ap_Os.js +1 -0
- package/web-ui/build/static/php-CJgcNJVe.js +1 -0
- package/web-ui/build/static/php-extras-BXgszKUS.js +1 -0
- package/web-ui/build/static/php-template-Cb_xvIiQ.js +1 -0
- package/web-ui/build/static/phpdoc-BfOts4aJ.js +1 -0
- package/web-ui/build/static/plaintext-DN7uh6jc.js +1 -0
- package/web-ui/build/static/plsql-v3WUpEeY.js +1 -0
- package/web-ui/build/static/pony-DJxNA-H0.js +1 -0
- package/web-ui/build/static/powerquery-BtsNylnn.js +1 -0
- package/web-ui/build/static/powershell-C6cTgKNj.js +1 -0
- package/web-ui/build/static/powershell-w7qa2Po0.js +1 -0
- package/web-ui/build/static/processing-B4LQG2qT.js +1 -0
- package/web-ui/build/static/processing-sqZsG0Ty.js +1 -0
- package/web-ui/build/static/profile-BmJYpErx.js +1 -0
- package/web-ui/build/static/prolog-BesbmNtC.js +1 -0
- package/web-ui/build/static/prolog-Bhfih4kN.js +1 -0
- package/web-ui/build/static/promql-C0f632z2.js +1 -0
- package/web-ui/build/static/properties-D4QlRz8E.js +1 -0
- package/web-ui/build/static/properties-jKkliMyl.js +1 -0
- package/web-ui/build/static/protobuf-1DEpY6d3.js +1 -0
- package/web-ui/build/static/protobuf-BGXS-kPK.js +1 -0
- package/web-ui/build/static/psl-C0CZXE-V.js +1 -0
- package/web-ui/build/static/pug-BF9VjA3d.js +1 -0
- package/web-ui/build/static/puppet-DbCz1V2e.js +1 -0
- package/web-ui/build/static/puppet-sw6E5TP0.js +1 -0
- package/web-ui/build/static/pure-C7mJA0tr.js +1 -0
- package/web-ui/build/static/purebasic-BSMar56G.js +1 -0
- package/web-ui/build/static/purebasic-lZ85aQ75.js +1 -0
- package/web-ui/build/static/purescript-7W6hcoJU.js +1 -0
- package/web-ui/build/static/python-Cf1rHsAv.js +1 -0
- package/web-ui/build/static/python-D6YthG1T.js +1 -0
- package/web-ui/build/static/python-repl-L_ce-JlI.js +1 -0
- package/web-ui/build/static/q-C4jLiln2.js +1 -0
- package/web-ui/build/static/q-DbbElowk.js +1 -0
- package/web-ui/build/static/qml-BpzqRYBe.js +1 -0
- package/web-ui/build/static/qml-DhqooLOn.js +1 -0
- package/web-ui/build/static/qore-CDdWlH4L.js +1 -0
- package/web-ui/build/static/qsharp-CYjzWQn8.js +1 -0
- package/web-ui/build/static/r-C0m7OAlP.js +1 -0
- package/web-ui/build/static/r-nRzPzIPC.js +1 -0
- package/web-ui/build/static/racket-BMk7mOQz.js +1 -0
- package/web-ui/build/static/reason-BXQPEhQe.js +1 -0
- package/web-ui/build/static/reasonml-BX4tkmG7.js +1 -0
- package/web-ui/build/static/regex-I514pFOx.js +1 -0
- package/web-ui/build/static/rego-nryy7Qo5.js +1 -0
- package/web-ui/build/static/renpy-73dSR30u.js +1 -0
- package/web-ui/build/static/rest-BVkqAn_D.js +1 -0
- package/web-ui/build/static/rib-CkA1SeIw.js +1 -0
- package/web-ui/build/static/rip-DdqP7xQ_.js +1 -0
- package/web-ui/build/static/roboconf-B1xFEP2z.js +1 -0
- package/web-ui/build/static/roboconf-MHZ9iUN8.js +1 -0
- package/web-ui/build/static/robotframework-Be6JB4Sm.js +1 -0
- package/web-ui/build/static/routeros-BDbHsrl3.js +1 -0
- package/web-ui/build/static/rsl-vBbR8fM2.js +1 -0
- package/web-ui/build/static/ruby-Bl6coIpX.js +1 -0
- package/web-ui/build/static/ruby-CYoX7aZ3.js +1 -0
- package/web-ui/build/static/ruleslanguage-CNda0rO_.js +1 -0
- package/web-ui/build/static/rust-Cn7CeLWb.js +1 -0
- package/web-ui/build/static/rust-DqfPHA-4.js +1 -0
- package/web-ui/build/static/sas-DX4nVHMx.js +1 -0
- package/web-ui/build/static/sas-TP86Lr_H.js +1 -0
- package/web-ui/build/static/sass-DLbsRbZq.js +1 -0
- package/web-ui/build/static/scala-BnuBUE7N.js +1 -0
- package/web-ui/build/static/scala-e0xCO3PH.js +1 -0
- package/web-ui/build/static/scheme-CgksT1_b.js +1 -0
- package/web-ui/build/static/scheme-wKIEujhs.js +1 -0
- package/web-ui/build/static/scilab-BK5XtNGf.js +1 -0
- package/web-ui/build/static/scss-CgF0LqaR.js +1 -0
- package/web-ui/build/static/scss-DtfwOUSt.js +1 -0
- package/web-ui/build/static/shell-mV_H_B9k.js +1 -0
- package/web-ui/build/static/shell-session-CcycyI-F.js +1 -0
- package/web-ui/build/static/smali-DUHlxZcA.js +1 -0
- package/web-ui/build/static/smali-vgrIyB1v.js +1 -0
- package/web-ui/build/static/smalltalk-C0Ge9l_D.js +1 -0
- package/web-ui/build/static/smalltalk-CXwx9xen.js +1 -0
- package/web-ui/build/static/smarty-ATfkwbr-.js +1 -0
- package/web-ui/build/static/sml-CPHHv48a.js +1 -0
- package/web-ui/build/static/sml-D8zKZZ0g.js +1 -0
- package/web-ui/build/static/solidity-DU2sGoWA.js +1 -0
- package/web-ui/build/static/solution-file-D20yiaNa.js +1 -0
- package/web-ui/build/static/soy-NkZd2NuM.js +1 -0
- package/web-ui/build/static/sparql-CURkC9N5.js +1 -0
- package/web-ui/build/static/splunk-spl-DACtCZRc.js +1 -0
- package/web-ui/build/static/sqf-BEdMNLDm.js +1 -0
- package/web-ui/build/static/sqf-RqYJHX2k.js +1 -0
- package/web-ui/build/static/sql-Bgepr53d.js +1 -0
- package/web-ui/build/static/sql-CW0TRs77.js +1 -0
- package/web-ui/build/static/sql_more-C2HWexYA.js +1 -0
- package/web-ui/build/static/squirrel-B6wcVYWs.js +1 -0
- package/web-ui/build/static/stan-Dl3AavYY.js +1 -0
- package/web-ui/build/static/stan-RZ2M2r7-.js +1 -0
- package/web-ui/build/static/stata-PGzYv80j.js +1 -0
- package/web-ui/build/static/step21-yyjO2ozE.js +1 -0
- package/web-ui/build/static/stylus-CA7oCY6H.js +1 -0
- package/web-ui/build/static/stylus-CMppe6Nc.js +1 -0
- package/web-ui/build/static/subunit-CgXzRGNV.js +1 -0
- package/web-ui/build/static/swift-BEZPFJIt.js +1 -0
- package/web-ui/build/static/swift-N42216FZ.js +1 -0
- package/web-ui/build/static/systemd-DFn17zHD.js +1 -0
- package/web-ui/build/static/t4-cs-D2og3B0M.js +1 -0
- package/web-ui/build/static/t4-templating-D9rCAn0c.js +1 -0
- package/web-ui/build/static/t4-vb-DG0xTVDc.js +1 -0
- package/web-ui/build/static/taggerscript-C89CvllW.js +1 -0
- package/web-ui/build/static/tap-D19DYT30.js +1 -0
- package/web-ui/build/static/tap-ERFF4Ark.js +1 -0
- package/web-ui/build/static/tcl-BCrLy0kY.js +1 -0
- package/web-ui/build/static/tcl-Db3hH49l.js +1 -0
- package/web-ui/build/static/textile-C45CZf2E.js +1 -0
- package/web-ui/build/static/thrift-DPSiQbdQ.js +1 -0
- package/web-ui/build/static/toml-OY_aaWwT.js +1 -0
- package/web-ui/build/static/tp-B3eRQVO4.js +1 -0
- package/web-ui/build/static/tremor-BqAT46SE.js +1 -0
- package/web-ui/build/static/tsx-BCfhl9AT.js +1 -0
- package/web-ui/build/static/tt2-C0sqlstv.js +1 -0
- package/web-ui/build/static/turtle-ClBSXu8f.js +1 -0
- package/web-ui/build/static/twig-BxxoTcyR.js +1 -0
- package/web-ui/build/static/twig-D1iWWft8.js +1 -0
- package/web-ui/build/static/typescript-D92P7Q_T.js +1 -0
- package/web-ui/build/static/typescript-IMBE9asI.js +1 -0
- package/web-ui/build/static/typoscript-Ct5LqTJd.js +1 -0
- package/web-ui/build/static/unrealscript-DzhFlMW5.js +1 -0
- package/web-ui/build/static/uorazor-DR4IM7ll.js +1 -0
- package/web-ui/build/static/uri-D10KlPiP.js +1 -0
- package/web-ui/build/static/v-CHHzCtfa.js +1 -0
- package/web-ui/build/static/vala-ChoAAQZv.js +1 -0
- package/web-ui/build/static/vala-CsGoPWkE.js +1 -0
- package/web-ui/build/static/vbnet-BSMzhrci.js +1 -0
- package/web-ui/build/static/vbnet-tWgXxlpd.js +1 -0
- package/web-ui/build/static/vbscript-C5MSBjcM.js +1 -0
- package/web-ui/build/static/vbscript-html-DgC8phmk.js +1 -0
- package/web-ui/build/static/velocity-ChLZNkgf.js +1 -0
- package/web-ui/build/static/verilog-RKDyj9CP.js +1 -0
- package/web-ui/build/static/verilog-qAYw6v_5.js +1 -0
- package/web-ui/build/static/vhdl-CRSvweFg.js +1 -0
- package/web-ui/build/static/vhdl-DnTmxitY.js +1 -0
- package/web-ui/build/static/vim-CnOJH9xw.js +1 -0
- package/web-ui/build/static/vim-LKJY3Sb8.js +1 -0
- package/web-ui/build/static/visual-basic-DZTN8GNq.js +1 -0
- package/web-ui/build/static/warpscript-Bz5PHWGb.js +1 -0
- package/web-ui/build/static/wasm-DjXA7rVQ.js +1 -0
- package/web-ui/build/static/web-idl-qpPnV3-c.js +1 -0
- package/web-ui/build/static/wiki-h1S7Uj0l.js +1 -0
- package/web-ui/build/static/wolfram-BsqW0Evw.js +1 -0
- package/web-ui/build/static/wren-2NkHwSLr.js +1 -0
- package/web-ui/build/static/x86asm-D8Cg9MTd.js +1 -0
- package/web-ui/build/static/xeora-CIwPPgRx.js +1 -0
- package/web-ui/build/static/xl-DIsgBj_c.js +1 -0
- package/web-ui/build/static/xml-D19j4_jb.js +1 -0
- package/web-ui/build/static/xml-doc-DMtIXpse.js +1 -0
- package/web-ui/build/static/xojo-Yr0egAH7.js +1 -0
- package/web-ui/build/static/xquery-3A0gaIyY.js +1 -0
- package/web-ui/build/static/xquery-ondigVMj.js +1 -0
- package/web-ui/build/static/yaml-BC7GbQPc.js +1 -0
- package/web-ui/build/static/yaml-DvN1W_m1.js +1 -0
- package/web-ui/build/static/yang-BJH3-Oqi.js +1 -0
- package/web-ui/build/static/zephir-DsXXe3UC.js +1 -0
- package/web-ui/build/static/zig-9jAF8TxG.js +1 -0
- package/web-ui/build/static/1c-DUhJWQrP.js +0 -1
- package/web-ui/build/static/abap-D5pCv45A.js +0 -1
- package/web-ui/build/static/abnf-BqIdp1gH.js +0 -1
- package/web-ui/build/static/abnf-CBjlJif0.js +0 -1
- package/web-ui/build/static/accesslog-C5KlxDoB.js +0 -1
- package/web-ui/build/static/actionscript-CEdNWXaD.js +0 -1
- package/web-ui/build/static/actionscript-CgxJfO4L.js +0 -1
- package/web-ui/build/static/ada-Bdm6rSt3.js +0 -1
- package/web-ui/build/static/ada-Cqq140Rj.js +0 -1
- package/web-ui/build/static/agda-glonKdcN.js +0 -1
- package/web-ui/build/static/al-C_FHJHny.js +0 -1
- package/web-ui/build/static/angelscript-Rz4JX2Rq.js +0 -1
- package/web-ui/build/static/antlr4-D4LSk0Ay.js +0 -1
- package/web-ui/build/static/apache-BaMp4ZSC.js +0 -1
- package/web-ui/build/static/apacheconf-BVq0Zx-9.js +0 -1
- package/web-ui/build/static/apex-DdKma-_U.js +0 -1
- package/web-ui/build/static/apl-CXIfpQjm.js +0 -1
- package/web-ui/build/static/applescript-D92-mz1s.js +0 -1
- package/web-ui/build/static/applescript-eHzEb7oT.js +0 -1
- package/web-ui/build/static/aql-D_F7mVkg.js +0 -1
- package/web-ui/build/static/arcade-DgXn3lOp.js +0 -1
- package/web-ui/build/static/arduino-10f7W_Wz.js +0 -1
- package/web-ui/build/static/arduino-Bi8wBo3Q.js +0 -1
- package/web-ui/build/static/arff-DAZwwp1m.js +0 -1
- package/web-ui/build/static/armasm-4k-fm-WI.js +0 -1
- package/web-ui/build/static/asciidoc-9iyohD53.js +0 -1
- package/web-ui/build/static/asciidoc-BPxaG9gt.js +0 -1
- package/web-ui/build/static/asm6502-DlE-NUYG.js +0 -1
- package/web-ui/build/static/asmatmel-ykXUz67l.js +0 -1
- package/web-ui/build/static/aspectj-BkcGzoIw.js +0 -1
- package/web-ui/build/static/aspnet-B8bHvD3e.js +0 -1
- package/web-ui/build/static/autohotkey-BXgybckQ.js +0 -1
- package/web-ui/build/static/autohotkey-rJX88r3D.js +0 -1
- package/web-ui/build/static/autoit-BV42RCy-.js +0 -1
- package/web-ui/build/static/autoit-DtcYxn7t.js +0 -1
- package/web-ui/build/static/avisynth-B4vyExrv.js +0 -1
- package/web-ui/build/static/avrasm-hptGkmwL.js +0 -1
- package/web-ui/build/static/avro-idl-D6Eh5Tip.js +0 -1
- package/web-ui/build/static/awk-VZHEebeo.js +0 -1
- package/web-ui/build/static/axapta-MDY4Ol3-.js +0 -1
- package/web-ui/build/static/bash-CEVIQPNU.js +0 -1
- package/web-ui/build/static/bash-CQheSBd0.js +0 -1
- package/web-ui/build/static/basic-BNAC47vx.js +0 -1
- package/web-ui/build/static/basic-o0l9wI82.js +0 -1
- package/web-ui/build/static/batch-05P80ryo.js +0 -1
- package/web-ui/build/static/bbcode-CvQ1b2hw.js +0 -1
- package/web-ui/build/static/bicep-CfAYoZNS.js +0 -1
- package/web-ui/build/static/birb-JD-jZNqk.js +0 -1
- package/web-ui/build/static/bison-i3sQbLUm.js +0 -1
- package/web-ui/build/static/bnf-B5bYoRbA.js +0 -1
- package/web-ui/build/static/bnf-D98r2gkN.js +0 -1
- package/web-ui/build/static/brainfuck-BU_egZbB.js +0 -1
- package/web-ui/build/static/brainfuck-Df0tVgjY.js +0 -1
- package/web-ui/build/static/brightscript-DSvCPg0z.js +0 -1
- package/web-ui/build/static/bro-BBxgPL7i.js +0 -1
- package/web-ui/build/static/bsl-JrkU-4lx.js +0 -1
- package/web-ui/build/static/c-BWSIorgH.js +0 -1
- package/web-ui/build/static/c-BXBwfPOR.js +0 -1
- package/web-ui/build/static/c-like-4jLL6ZeZ.js +0 -1
- package/web-ui/build/static/cal-BUukjt45.js +0 -1
- package/web-ui/build/static/capnproto-DzfXkblk.js +0 -1
- package/web-ui/build/static/ceylon-C6eNUw7A.js +0 -1
- package/web-ui/build/static/cfscript-DtzcDoB6.js +0 -1
- package/web-ui/build/static/chaiscript-q5NSJZ6c.js +0 -1
- package/web-ui/build/static/cil-DXg6HnTF.js +0 -1
- package/web-ui/build/static/clean-DhrJyfi0.js +0 -1
- package/web-ui/build/static/clojure-DCN-fEKt.js +0 -1
- package/web-ui/build/static/clojure-aNTgtXL1.js +0 -1
- package/web-ui/build/static/clojure-repl-B_eFHp5m.js +0 -1
- package/web-ui/build/static/cmake-BDtm7sss.js +0 -1
- package/web-ui/build/static/cmake-Bj_M_zqn.js +0 -1
- package/web-ui/build/static/cobol-qo3jUBf5.js +0 -1
- package/web-ui/build/static/coffeescript-CIyOUYJ3.js +0 -1
- package/web-ui/build/static/coffeescript-CduS6q85.js +0 -1
- package/web-ui/build/static/concurnas-DtdAZDrQ.js +0 -1
- package/web-ui/build/static/coq-CN6lKK7F.js +0 -1
- package/web-ui/build/static/coq-DzGUbX5U.js +0 -1
- package/web-ui/build/static/cos-DFcou98i.js +0 -1
- package/web-ui/build/static/cpp-Dgg9pFUu.js +0 -1
- package/web-ui/build/static/cpp-PRuqGY7D.js +0 -1
- package/web-ui/build/static/crmsh-DLLfnotO.js +0 -1
- package/web-ui/build/static/crystal-BPylX4xG.js +0 -1
- package/web-ui/build/static/crystal-R1dH-Ebf.js +0 -1
- package/web-ui/build/static/csharp-CzwY39sl.js +0 -1
- package/web-ui/build/static/csharp-DJyymJhf.js +0 -1
- package/web-ui/build/static/cshtml-CwtJYmS1.js +0 -1
- package/web-ui/build/static/csp-Bj2DpAcY.js +0 -1
- package/web-ui/build/static/csp-xY5_PNPj.js +0 -1
- package/web-ui/build/static/css-DBGSwd91.js +0 -1
- package/web-ui/build/static/css-extras-BvlTqCpv.js +0 -1
- package/web-ui/build/static/csv-UTBn-Q9j.js +0 -1
- package/web-ui/build/static/cypher-BfzzS1h2.js +0 -1
- package/web-ui/build/static/d-BvamtLdb.js +0 -1
- package/web-ui/build/static/d-XpxNI5JF.js +0 -1
- package/web-ui/build/static/dart-BEM6fjpM.js +0 -1
- package/web-ui/build/static/dart-CsMrP4Ax.js +0 -1
- package/web-ui/build/static/dataweave-B-vfR-Jf.js +0 -1
- package/web-ui/build/static/dax-2WUcEUPn.js +0 -1
- package/web-ui/build/static/delphi-7XWS5oTs.js +0 -1
- package/web-ui/build/static/dhall-NWRUZH7l.js +0 -1
- package/web-ui/build/static/diff-AEgTdaYv.js +0 -1
- package/web-ui/build/static/diff-BRgtzr2U.js +0 -1
- package/web-ui/build/static/django-4bH3I4pv.js +0 -1
- package/web-ui/build/static/django-CrlKM5br.js +0 -1
- package/web-ui/build/static/dns-BSqNAZE3.js +0 -1
- package/web-ui/build/static/dns-zone-file-Di5cZlps.js +0 -1
- package/web-ui/build/static/docker-C9BRbp6h.js +0 -1
- package/web-ui/build/static/dockerfile-DbkS5WIL.js +0 -1
- package/web-ui/build/static/dos-per3p9hI.js +0 -1
- package/web-ui/build/static/dot-DjnTpyv1.js +0 -1
- package/web-ui/build/static/dsconfig-BjcpCNTB.js +0 -1
- package/web-ui/build/static/dts-DSWuKx2J.js +0 -1
- package/web-ui/build/static/dust-BCqihcI2.js +0 -1
- package/web-ui/build/static/ebnf-7ErhUPMF.js +0 -1
- package/web-ui/build/static/ebnf-CHADdlPD.js +0 -1
- package/web-ui/build/static/editorconfig--daZb_D-.js +0 -1
- package/web-ui/build/static/eiffel-C5zhT7HO.js +0 -1
- package/web-ui/build/static/ejs-ncnPF5oJ.js +0 -1
- package/web-ui/build/static/elixir-kFl2IHfo.js +0 -1
- package/web-ui/build/static/elixir-m8Rwrydm.js +0 -1
- package/web-ui/build/static/elm-CvywOdPd.js +0 -1
- package/web-ui/build/static/elm-Dsie_raS.js +0 -1
- package/web-ui/build/static/erb-BvkeA6hu.js +0 -1
- package/web-ui/build/static/erb-CtAdMBZY.js +0 -1
- package/web-ui/build/static/erlang-B1PynliZ.js +0 -1
- package/web-ui/build/static/erlang-DO2EN0IW.js +0 -1
- package/web-ui/build/static/erlang-repl-DWSpk7kU.js +0 -1
- package/web-ui/build/static/etlua-yEBP6vtw.js +0 -1
- package/web-ui/build/static/excel-Bhh_OwNT.js +0 -1
- package/web-ui/build/static/excel-formula-D8YNVKGY.js +0 -1
- package/web-ui/build/static/factor-U8_v_-Qx.js +0 -1
- package/web-ui/build/static/false-CbflHcQ4.js +0 -1
- package/web-ui/build/static/firestore-security-rules-C9yS7u9K.js +0 -1
- package/web-ui/build/static/fix-9oju1yrf.js +0 -1
- package/web-ui/build/static/flix-DlGExg75.js +0 -1
- package/web-ui/build/static/flow-DKikR-YL.js +0 -1
- package/web-ui/build/static/fortran-BTYpE8K2.js +0 -1
- package/web-ui/build/static/fortran-BxxaCEOU.js +0 -1
- package/web-ui/build/static/fsharp-BSNG-jCK.js +0 -1
- package/web-ui/build/static/fsharp-CCg0Y4HA.js +0 -1
- package/web-ui/build/static/ftl-DjWJ0y-0.js +0 -1
- package/web-ui/build/static/gams-C5fvQ3Od.js +0 -1
- package/web-ui/build/static/gap-BvL-biL4.js +0 -1
- package/web-ui/build/static/gauss-BzZO8GCS.js +0 -1
- package/web-ui/build/static/gcode-Cz8GsjzL.js +0 -1
- package/web-ui/build/static/gcode-Dg2JcAQS.js +0 -1
- package/web-ui/build/static/gdscript-BOCutEVV.js +0 -1
- package/web-ui/build/static/gedcom-Bdq0EwEN.js +0 -1
- package/web-ui/build/static/gherkin-Bn1mABAH.js +0 -1
- package/web-ui/build/static/gherkin-DpDnmvFb.js +0 -1
- package/web-ui/build/static/git-Cd4zgk7f.js +0 -1
- package/web-ui/build/static/glsl-BGXyo7Gw.js +0 -1
- package/web-ui/build/static/glsl-COPc8ZeZ.js +0 -1
- package/web-ui/build/static/gml-BCkIu1Er.js +0 -1
- package/web-ui/build/static/gml-COtYpJl2.js +0 -1
- package/web-ui/build/static/gn-Bjg1CRig.js +0 -1
- package/web-ui/build/static/go-BB6lvTry.js +0 -1
- package/web-ui/build/static/go-adzEcqWq.js +0 -1
- package/web-ui/build/static/go-module-CfC8Vt2L.js +0 -1
- package/web-ui/build/static/golo-C2rGlTHX.js +0 -1
- package/web-ui/build/static/gradle-Dh3gdCGU.js +0 -1
- package/web-ui/build/static/graphql-w9z3CiM9.js +0 -1
- package/web-ui/build/static/groovy-BU2m7Ekt.js +0 -1
- package/web-ui/build/static/groovy-Bi8INA80.js +0 -1
- package/web-ui/build/static/haml-t0Z0NMdQ.js +0 -1
- package/web-ui/build/static/haml-yTEKBHVm.js +0 -1
- package/web-ui/build/static/handlebars-BmRED509.js +0 -1
- package/web-ui/build/static/handlebars-DmmahO5D.js +0 -1
- package/web-ui/build/static/haskell-B4TTwJ5u.js +0 -1
- package/web-ui/build/static/haskell-BX4vB3_v.js +0 -1
- package/web-ui/build/static/haxe-B81ItqL6.js +0 -1
- package/web-ui/build/static/haxe-Z6MewpJj.js +0 -1
- package/web-ui/build/static/hcl-CT8vHUwN.js +0 -1
- package/web-ui/build/static/hlsl-BNvVW3bY.js +0 -1
- package/web-ui/build/static/hoon-07zLMFzn.js +0 -1
- package/web-ui/build/static/hpkp-DxK9DKwE.js +0 -1
- package/web-ui/build/static/hsp-BFSV4VGN.js +0 -1
- package/web-ui/build/static/hsts-Dfi1_v6k.js +0 -1
- package/web-ui/build/static/htmlbars-CBGS41Tx.js +0 -1
- package/web-ui/build/static/http-Ck2d_NdZ.js +0 -1
- package/web-ui/build/static/http-CljalO0f.js +0 -1
- package/web-ui/build/static/hy-CWwWerqr.js +0 -1
- package/web-ui/build/static/ichigojam-BUq638e8.js +0 -1
- package/web-ui/build/static/icon-CkGyT1bh.js +0 -1
- package/web-ui/build/static/icu-message-format-BQoqTHNl.js +0 -1
- package/web-ui/build/static/idris-nI6aQ55s.js +0 -1
- package/web-ui/build/static/iecst-BVwN13uc.js +0 -1
- package/web-ui/build/static/ignore-BLfLC9PA.js +0 -1
- package/web-ui/build/static/index-BwLo9qDf.js +0 -1
- package/web-ui/build/static/index-BwNJoEC1.css +0 -1
- package/web-ui/build/static/index-CrzpLgj1.js +0 -13
- package/web-ui/build/static/index-DqzIkFBw.js +0 -834
- package/web-ui/build/static/inform7-BML_idR2.js +0 -1
- package/web-ui/build/static/inform7-xoROt4DC.js +0 -1
- package/web-ui/build/static/ini-CCSkzm0H.js +0 -1
- package/web-ui/build/static/ini-CYmzo02a.js +0 -1
- package/web-ui/build/static/io-DXnvLdgN.js +0 -1
- package/web-ui/build/static/irpf90-DxKOk6dw.js +0 -1
- package/web-ui/build/static/isbl-0B0tD40P.js +0 -1
- package/web-ui/build/static/j-DXpPF6fV.js +0 -1
- package/web-ui/build/static/java-D2GSVfv5.js +0 -1
- package/web-ui/build/static/java-KuHaGPGv.js +0 -1
- package/web-ui/build/static/javadoc-BCT2sPL1.js +0 -1
- package/web-ui/build/static/javadoclike-BvnqsHVU.js +0 -1
- package/web-ui/build/static/javascript-CiWbQcs7.js +0 -1
- package/web-ui/build/static/javastacktrace-eBMVSx2Z.js +0 -1
- package/web-ui/build/static/jboss-cli-C01AEskS.js +0 -1
- package/web-ui/build/static/jexl-Dn5KxGiK.js +0 -1
- package/web-ui/build/static/jolie-D3Zt6_TW.js +0 -1
- package/web-ui/build/static/jq-DxOmFCSQ.js +0 -1
- package/web-ui/build/static/js-extras-CMUXnpUe.js +0 -1
- package/web-ui/build/static/js-templates-BzQwIldl.js +0 -1
- package/web-ui/build/static/jsdoc-CkAdh1ug.js +0 -1
- package/web-ui/build/static/json-C-B6MwWV.js +0 -1
- package/web-ui/build/static/json-C75IrF6s.js +0 -1
- package/web-ui/build/static/json5-DvXR6PNV.js +0 -1
- package/web-ui/build/static/jsonp-B92u1PFA.js +0 -1
- package/web-ui/build/static/jsstacktrace-DJjcSHfr.js +0 -1
- package/web-ui/build/static/jsx-C9-rq-CT.js +0 -1
- package/web-ui/build/static/julia-DS04VXIz.js +0 -1
- package/web-ui/build/static/julia-DrUeWVfq.js +0 -1
- package/web-ui/build/static/julia-repl-i80v_zZH.js +0 -1
- package/web-ui/build/static/keepalived-BHGEAKGU.js +0 -1
- package/web-ui/build/static/keyman-Bdzqqi9H.js +0 -1
- package/web-ui/build/static/kotlin-BzHWfKYa.js +0 -1
- package/web-ui/build/static/kotlin-C_V1S_FQ.js +0 -1
- package/web-ui/build/static/kumir-CotiKPE1.js +0 -1
- package/web-ui/build/static/kusto-DRtZ_YAs.js +0 -1
- package/web-ui/build/static/lasso-CWuEv8wJ.js +0 -1
- package/web-ui/build/static/latex-BQyvVAOm.js +0 -1
- package/web-ui/build/static/latex-DMFvqai-.js +0 -1
- package/web-ui/build/static/latte-DBzhXpVk.js +0 -1
- package/web-ui/build/static/ldif-CHIDpBfE.js +0 -1
- package/web-ui/build/static/leaf-BUM990MU.js +0 -1
- package/web-ui/build/static/less-Ct98Xd8m.js +0 -1
- package/web-ui/build/static/less-cA1L-hw1.js +0 -1
- package/web-ui/build/static/lilypond-BxQcVtKe.js +0 -1
- package/web-ui/build/static/liquid-BsdpMPYc.js +0 -1
- package/web-ui/build/static/lisp-BNcefi1U.js +0 -1
- package/web-ui/build/static/lisp-CBeHrUJR.js +0 -1
- package/web-ui/build/static/livecodeserver-BRZ6ns7E.js +0 -1
- package/web-ui/build/static/livescript-C9VXNDh2.js +0 -1
- package/web-ui/build/static/livescript-CPM4TEaS.js +0 -1
- package/web-ui/build/static/llvm-D-ktoQ6Z.js +0 -1
- package/web-ui/build/static/llvm-aGR2Ei-6.js +0 -1
- package/web-ui/build/static/log-BDQPp9ei.js +0 -1
- package/web-ui/build/static/lolcode-H3tk4sVp.js +0 -1
- package/web-ui/build/static/lsl-E_sO-uEk.js +0 -1
- package/web-ui/build/static/lua-CII1BReE.js +0 -1
- package/web-ui/build/static/lua-c32KCD1t.js +0 -1
- package/web-ui/build/static/magma-BhWArSfW.js +0 -1
- package/web-ui/build/static/makefile-BL9Ig9xO.js +0 -1
- package/web-ui/build/static/makefile-C_xncXma.js +0 -1
- package/web-ui/build/static/markdown-Bjx0QXUF.js +0 -1
- package/web-ui/build/static/markdown-DKcNzXLC.js +0 -1
- package/web-ui/build/static/markup-templating-DAQlKGf9.js +0 -1
- package/web-ui/build/static/mathematica-CvqfUKaF.js +0 -1
- package/web-ui/build/static/matlab-BErKso28.js +0 -1
- package/web-ui/build/static/matlab-ClFikeke.js +0 -1
- package/web-ui/build/static/maxima-Ft3syDPO.js +0 -1
- package/web-ui/build/static/maxscript-DT0tXOez.js +0 -1
- package/web-ui/build/static/mel-B9RYm_nG.js +0 -1
- package/web-ui/build/static/mel-DGpfnKg9.js +0 -1
- package/web-ui/build/static/mercury-CXmUlA2y.js +0 -1
- package/web-ui/build/static/mermaid-BDmkIkXi.js +0 -1
- package/web-ui/build/static/mipsasm-B2G5mL-v.js +0 -1
- package/web-ui/build/static/mizar-9hVFfba0.js +0 -1
- package/web-ui/build/static/mizar-FYnr9CDP.js +0 -1
- package/web-ui/build/static/mojolicious-D3hJYxqh.js +0 -1
- package/web-ui/build/static/mongodb-HP0s-riS.js +0 -1
- package/web-ui/build/static/monkey-CBt12SEM.js +0 -1
- package/web-ui/build/static/monkey-DIqWIXYW.js +0 -1
- package/web-ui/build/static/moonscript-B8Z_r4dn.js +0 -1
- package/web-ui/build/static/moonscript-CE7UuyXU.js +0 -1
- package/web-ui/build/static/n1ql-B16jfOjw.js +0 -1
- package/web-ui/build/static/n1ql-BgMWCckC.js +0 -1
- package/web-ui/build/static/n4js-CAXy3_Jy.js +0 -1
- package/web-ui/build/static/nand2tetris-hdl-C3vzslgj.js +0 -1
- package/web-ui/build/static/naniscript-DAFwQQVi.js +0 -1
- package/web-ui/build/static/nasm-BOFKVnaS.js +0 -1
- package/web-ui/build/static/neon-D0ISL7qJ.js +0 -1
- package/web-ui/build/static/nevod-KoDi24v0.js +0 -1
- package/web-ui/build/static/nginx-Cr5DfqWR.js +0 -1
- package/web-ui/build/static/nginx-DCCnctTG.js +0 -1
- package/web-ui/build/static/nim-DPJN-_EC.js +0 -1
- package/web-ui/build/static/nim-De05kw0n.js +0 -1
- package/web-ui/build/static/nix-CELEwiHo.js +0 -1
- package/web-ui/build/static/nix-CSaBChxR.js +0 -1
- package/web-ui/build/static/node-repl-C32a7yiw.js +0 -1
- package/web-ui/build/static/nsis-CZuaKioB.js +0 -1
- package/web-ui/build/static/nsis-VwfBkj3d.js +0 -1
- package/web-ui/build/static/objectivec-DJKZtPL2.js +0 -1
- package/web-ui/build/static/objectivec-DK2yoaBg.js +0 -1
- package/web-ui/build/static/ocaml-Dxx1cjem.js +0 -1
- package/web-ui/build/static/ocaml-kjKWdGCz.js +0 -1
- package/web-ui/build/static/opencl-BNtKnv1J.js +0 -1
- package/web-ui/build/static/openqasm-CdvNeYug.js +0 -1
- package/web-ui/build/static/openscad-B_qvsjfe.js +0 -1
- package/web-ui/build/static/oxygene-DG1hddn5.js +0 -1
- package/web-ui/build/static/oz-CRY87qeP.js +0 -1
- package/web-ui/build/static/parigp-BkAr6-G8.js +0 -1
- package/web-ui/build/static/parser-CP5clEop.js +0 -1
- package/web-ui/build/static/parser3-crTb7A0X.js +0 -1
- package/web-ui/build/static/pascal-DPfyfoDh.js +0 -1
- package/web-ui/build/static/pascaligo-DURFNQ_j.js +0 -1
- package/web-ui/build/static/pcaxis-DD7RAxRP.js +0 -1
- package/web-ui/build/static/peoplecode-So_X5jSp.js +0 -1
- package/web-ui/build/static/perl-B1DBrLmJ.js +0 -1
- package/web-ui/build/static/perl-BFaVXeG7.js +0 -1
- package/web-ui/build/static/pf-CEB1L5qm.js +0 -1
- package/web-ui/build/static/pgsql-A0nsUgDI.js +0 -1
- package/web-ui/build/static/php-8ihB7EPM.js +0 -1
- package/web-ui/build/static/php-Sh6D6NIJ.js +0 -1
- package/web-ui/build/static/php-extras-Cy_aBZK6.js +0 -1
- package/web-ui/build/static/php-template-Cit-PHnf.js +0 -1
- package/web-ui/build/static/phpdoc-DNU6hjDm.js +0 -1
- package/web-ui/build/static/plaintext-FLJCTahD.js +0 -1
- package/web-ui/build/static/plsql-1giFa6G7.js +0 -1
- package/web-ui/build/static/pony-BEp1IqY4.js +0 -1
- package/web-ui/build/static/powerquery-B43RvEYw.js +0 -1
- package/web-ui/build/static/powershell-B0QtH4nv.js +0 -1
- package/web-ui/build/static/powershell-BdHnDhS8.js +0 -1
- package/web-ui/build/static/processing-Be1Oglu_.js +0 -1
- package/web-ui/build/static/processing-CARItQwm.js +0 -1
- package/web-ui/build/static/profile-BwlQtk0y.js +0 -1
- package/web-ui/build/static/prolog-DKK6jUnc.js +0 -1
- package/web-ui/build/static/prolog-b_8huu7c.js +0 -1
- package/web-ui/build/static/promql-BZZ7XfbI.js +0 -1
- package/web-ui/build/static/properties-BFb1Pf6n.js +0 -1
- package/web-ui/build/static/properties-CmsBqXVJ.js +0 -1
- package/web-ui/build/static/protobuf-DeLotQpJ.js +0 -1
- package/web-ui/build/static/protobuf-WK1D_sJI.js +0 -1
- package/web-ui/build/static/psl-MNZR2qmI.js +0 -1
- package/web-ui/build/static/pug-CF9nceJD.js +0 -1
- package/web-ui/build/static/puppet-CZbKHt9x.js +0 -1
- package/web-ui/build/static/puppet-DUMENOgH.js +0 -1
- package/web-ui/build/static/pure-37fhgfVL.js +0 -1
- package/web-ui/build/static/purebasic-BdORV50m.js +0 -1
- package/web-ui/build/static/purebasic-D8axvRJF.js +0 -1
- package/web-ui/build/static/purescript-BmZhg2WR.js +0 -1
- package/web-ui/build/static/python-CnE0eaJH.js +0 -1
- package/web-ui/build/static/python-rT3smsTM.js +0 -1
- package/web-ui/build/static/python-repl-oAPThvRZ.js +0 -1
- package/web-ui/build/static/q-C9PeNAsV.js +0 -1
- package/web-ui/build/static/q-DEhOeRm8.js +0 -1
- package/web-ui/build/static/qml-CzmXy0mm.js +0 -1
- package/web-ui/build/static/qml-ZLrRDW5F.js +0 -1
- package/web-ui/build/static/qore-C4BmNqiC.js +0 -1
- package/web-ui/build/static/qsharp-CUspIxRd.js +0 -1
- package/web-ui/build/static/r-CmTJdjSW.js +0 -1
- package/web-ui/build/static/r-Dul2vX00.js +0 -1
- package/web-ui/build/static/racket-DuTLmSg0.js +0 -1
- package/web-ui/build/static/reason-CPbzN4QK.js +0 -1
- package/web-ui/build/static/reasonml-BX6GGy_7.js +0 -1
- package/web-ui/build/static/regex-C-S4lu9H.js +0 -1
- package/web-ui/build/static/rego-C552rbmD.js +0 -1
- package/web-ui/build/static/renpy-CAXD5ZIz.js +0 -1
- package/web-ui/build/static/rest-C0ztj_j5.js +0 -1
- package/web-ui/build/static/rib-qZJul5T1.js +0 -1
- package/web-ui/build/static/rip-Bi2BsowV.js +0 -1
- package/web-ui/build/static/roboconf-BcDqw_pY.js +0 -1
- package/web-ui/build/static/roboconf-CEx3VVi1.js +0 -1
- package/web-ui/build/static/robotframework-CJVompq9.js +0 -1
- package/web-ui/build/static/routeros-BhoPpLPN.js +0 -1
- package/web-ui/build/static/rsl-BnetYcE2.js +0 -1
- package/web-ui/build/static/ruby-D-6W0bRE.js +0 -1
- package/web-ui/build/static/ruby-Dy6NjAXK.js +0 -1
- package/web-ui/build/static/ruleslanguage-Bl49mJdL.js +0 -1
- package/web-ui/build/static/rust-DxOQY_0w.js +0 -1
- package/web-ui/build/static/rust-Dxv6L6Ol.js +0 -1
- package/web-ui/build/static/sas-B2aGiUg2.js +0 -1
- package/web-ui/build/static/sas-Cbzi-GmN.js +0 -1
- package/web-ui/build/static/sass-DwAAr7qH.js +0 -1
- package/web-ui/build/static/scala-CNOqwEfe.js +0 -1
- package/web-ui/build/static/scala-DxlUiOFp.js +0 -1
- package/web-ui/build/static/scheme-B1ALEy7P.js +0 -1
- package/web-ui/build/static/scheme-DUNdLa4B.js +0 -1
- package/web-ui/build/static/scilab-C6Y0UImx.js +0 -1
- package/web-ui/build/static/scss-8m-w5Uh_.js +0 -1
- package/web-ui/build/static/scss-C_igD-9N.js +0 -1
- package/web-ui/build/static/shell-CTp1MeZM.js +0 -1
- package/web-ui/build/static/shell-session-CN3B6Mtp.js +0 -1
- package/web-ui/build/static/smali-DMehnCvR.js +0 -1
- package/web-ui/build/static/smali-DUPqcHaD.js +0 -1
- package/web-ui/build/static/smalltalk-BZWXwh4-.js +0 -1
- package/web-ui/build/static/smalltalk-Jd4VA-e4.js +0 -1
- package/web-ui/build/static/smarty-2BmLPFNh.js +0 -1
- package/web-ui/build/static/sml-BC5HDEBf.js +0 -1
- package/web-ui/build/static/sml-BrJo7y64.js +0 -1
- package/web-ui/build/static/solidity-muZ3xQn0.js +0 -1
- package/web-ui/build/static/solution-file-CF9Xt6f6.js +0 -1
- package/web-ui/build/static/soy-DZg8DGEU.js +0 -1
- package/web-ui/build/static/sparql-kmkyqBAK.js +0 -1
- package/web-ui/build/static/splunk-spl-CmBLwT62.js +0 -1
- package/web-ui/build/static/sqf-Ct-q_HqH.js +0 -1
- package/web-ui/build/static/sqf-DSuUvyV6.js +0 -1
- package/web-ui/build/static/sql-BKhJK7dD.js +0 -1
- package/web-ui/build/static/sql-MRpfxEIR.js +0 -1
- package/web-ui/build/static/sql_more-By_l7rJw.js +0 -1
- package/web-ui/build/static/squirrel-Oyf4apfe.js +0 -1
- package/web-ui/build/static/stan-CYPvm7ay.js +0 -1
- package/web-ui/build/static/stan-OSfpjfxd.js +0 -1
- package/web-ui/build/static/stata-BN_7-HVj.js +0 -1
- package/web-ui/build/static/step21-B0MUaGQd.js +0 -1
- package/web-ui/build/static/stylus-B2zpewvs.js +0 -1
- package/web-ui/build/static/stylus-CiP04Uso.js +0 -1
- package/web-ui/build/static/subunit-Ccz6OcJn.js +0 -1
- package/web-ui/build/static/swift-DWAzs8_N.js +0 -1
- package/web-ui/build/static/swift-ssBR_Hx9.js +0 -1
- package/web-ui/build/static/systemd-CT9j1seU.js +0 -1
- package/web-ui/build/static/t4-cs-B81S0qkn.js +0 -1
- package/web-ui/build/static/t4-templating-CR8sHwkP.js +0 -1
- package/web-ui/build/static/t4-vb-AK-9z7xL.js +0 -1
- package/web-ui/build/static/taggerscript-BWTFecfl.js +0 -1
- package/web-ui/build/static/tap-BuWdU6cR.js +0 -1
- package/web-ui/build/static/tap-CvD65fMN.js +0 -1
- package/web-ui/build/static/tcl-CWTwAImW.js +0 -1
- package/web-ui/build/static/tcl-DxPPqU89.js +0 -1
- package/web-ui/build/static/textile-Bb8aIOgT.js +0 -1
- package/web-ui/build/static/thrift-BSdmFMYv.js +0 -1
- package/web-ui/build/static/toml-CYmQZs0L.js +0 -1
- package/web-ui/build/static/tp-Bt1wA2RW.js +0 -1
- package/web-ui/build/static/tremor-EDFsRn35.js +0 -1
- package/web-ui/build/static/tsx-CRpZ39XI.js +0 -1
- package/web-ui/build/static/tt2-C0lRkX9G.js +0 -1
- package/web-ui/build/static/turtle-i57e7COQ.js +0 -1
- package/web-ui/build/static/twig-DLmpdej0.js +0 -1
- package/web-ui/build/static/twig-DwotmZ4d.js +0 -1
- package/web-ui/build/static/typescript-C02UFCEu.js +0 -1
- package/web-ui/build/static/typescript-Dv4852yn.js +0 -1
- package/web-ui/build/static/typoscript-DsiStA8T.js +0 -1
- package/web-ui/build/static/unrealscript-DREvLy9b.js +0 -1
- package/web-ui/build/static/uorazor-DjjRGSlO.js +0 -1
- package/web-ui/build/static/uri-DNx0Ltr1.js +0 -1
- package/web-ui/build/static/v-BtcT9t45.js +0 -1
- package/web-ui/build/static/vala-CtrGtWLL.js +0 -1
- package/web-ui/build/static/vala-DGVJkbdQ.js +0 -1
- package/web-ui/build/static/vbnet-9N5EIy45.js +0 -1
- package/web-ui/build/static/vbnet-C8V-5wZc.js +0 -1
- package/web-ui/build/static/vbscript-C5ZX035F.js +0 -1
- package/web-ui/build/static/vbscript-html-Dk-JOSq9.js +0 -1
- package/web-ui/build/static/velocity-CMJONQlV.js +0 -1
- package/web-ui/build/static/verilog-B448hVUF.js +0 -1
- package/web-ui/build/static/verilog-D9rg9wGb.js +0 -1
- package/web-ui/build/static/vhdl-B0K99MAb.js +0 -1
- package/web-ui/build/static/vhdl-BLJZCy5e.js +0 -1
- package/web-ui/build/static/vim-CYLY4wFr.js +0 -1
- package/web-ui/build/static/vim-DE6BqLa5.js +0 -1
- package/web-ui/build/static/visual-basic-BwcdH-Kn.js +0 -1
- package/web-ui/build/static/warpscript-BbfcoHYW.js +0 -1
- package/web-ui/build/static/wasm-DHUeRG-u.js +0 -1
- package/web-ui/build/static/web-idl-BE2wsaTW.js +0 -1
- package/web-ui/build/static/wiki-D-OoB7Gs.js +0 -1
- package/web-ui/build/static/wolfram-D-AbA_lC.js +0 -1
- package/web-ui/build/static/wren-M0B5FCO6.js +0 -1
- package/web-ui/build/static/x86asm-Gg-JtiBh.js +0 -1
- package/web-ui/build/static/xeora-BeNNN_-l.js +0 -1
- package/web-ui/build/static/xl-C1jOa_4Q.js +0 -1
- package/web-ui/build/static/xml-doc-BwW35pek.js +0 -1
- package/web-ui/build/static/xml-zQuyG7Gq.js +0 -1
- package/web-ui/build/static/xojo-Bf6Y1tsn.js +0 -1
- package/web-ui/build/static/xquery-5ZEPqG2y.js +0 -1
- package/web-ui/build/static/xquery-OpQT69RV.js +0 -1
- package/web-ui/build/static/yaml-CWnr1ERL.js +0 -1
- package/web-ui/build/static/yaml-D9QDmLde.js +0 -1
- package/web-ui/build/static/yang-DSZmLri0.js +0 -1
- package/web-ui/build/static/zephir-C5UVIt-7.js +0 -1
- package/web-ui/build/static/zig-B1yDYj97.js +0 -1
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Channel filter — parses `<external to="alias">…</external>` blocks out of
|
|
3
|
+
* agent content so Discord / Telegram relays know what (and where) to send.
|
|
4
|
+
*
|
|
5
|
+
* Philosophy:
|
|
6
|
+
* - Default is local. Nothing reaches an external channel unless the agent
|
|
7
|
+
* explicitly wraps it in `<external>` tags. The local operator's web UI
|
|
8
|
+
* continues to receive the raw WS broadcast unfiltered.
|
|
9
|
+
* - Content inside `<external>` is relayed VERBATIM. Code, markdown, tool
|
|
10
|
+
* JSON, task lists — all pass through. The agent decides; the filter
|
|
11
|
+
* doesn't second-guess content shape.
|
|
12
|
+
* - Granular routing via `to="alias"`:
|
|
13
|
+
* <external>…</external> default → broadcast to every bridged channel
|
|
14
|
+
* <external to="*">…</external> explicit → broadcast to every bridged channel
|
|
15
|
+
* <external to="discord:#ops">…</external> → that specific channel only
|
|
16
|
+
* <external to="discord:#ops,telegram">…</external> → both listed channels
|
|
17
|
+
*
|
|
18
|
+
* API-path agnostic: runs on the fully-assembled assistant content emitted
|
|
19
|
+
* on the `stream_complete` WS broadcast. Both Responses API and Chat
|
|
20
|
+
* Completions converge on the same canonical content shape before that
|
|
21
|
+
* broadcast fires, so this filter is one pure function with no
|
|
22
|
+
* provider-specific branch.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
// Matches `<external>…</external>` or `<external to="…">…</external>` (case-insensitive).
|
|
26
|
+
// The `to` attribute may be single- or double-quoted. Captured groups:
|
|
27
|
+
// 1: the raw contents of the `to` attribute (or undefined)
|
|
28
|
+
// 2: block body
|
|
29
|
+
const EXTERNAL_TAG_RE =
|
|
30
|
+
/<external(?:\s+to\s*=\s*(?:"([^"]*)"|'([^']*)'))?>([\s\S]*?)<\/external>/gi;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Parse every `<external>` block out of an agent content string.
|
|
34
|
+
*
|
|
35
|
+
* @param {string} content Raw assistant content.
|
|
36
|
+
* @returns {{ blocks: Array<{ to: string[]|null, text: string }> }}
|
|
37
|
+
* `to === null` → default routing (broadcast to every bridged
|
|
38
|
+
* channel the relaying service owns).
|
|
39
|
+
* `to === ['*']` → explicit broadcast (same as null).
|
|
40
|
+
* `to === ['discord:#ops', 'telegram']` → specific aliases.
|
|
41
|
+
* Callers (Discord / Telegram services) match their own aliases
|
|
42
|
+
* against each block's `to` and send the `text` to matching
|
|
43
|
+
* channels. `text` is the verbatim block contents with leading
|
|
44
|
+
* and trailing whitespace trimmed — no other transformation.
|
|
45
|
+
*/
|
|
46
|
+
export function filterContentForExternalRelay(content) {
|
|
47
|
+
if (typeof content !== 'string' || content.length === 0) return { blocks: [] };
|
|
48
|
+
|
|
49
|
+
const blocks = [];
|
|
50
|
+
let m;
|
|
51
|
+
EXTERNAL_TAG_RE.lastIndex = 0;
|
|
52
|
+
while ((m = EXTERNAL_TAG_RE.exec(content)) !== null) {
|
|
53
|
+
const rawTo = m[1] ?? m[2] ?? null;
|
|
54
|
+
const body = (m[3] ?? '').replace(/^\s+|\s+$/g, '');
|
|
55
|
+
if (body.length === 0) continue;
|
|
56
|
+
|
|
57
|
+
let to = null;
|
|
58
|
+
if (rawTo !== null && rawTo.trim().length > 0) {
|
|
59
|
+
to = rawTo.split(',').map(s => s.trim()).filter(Boolean);
|
|
60
|
+
if (to.length === 0) to = null;
|
|
61
|
+
}
|
|
62
|
+
blocks.push({ to, text: body });
|
|
63
|
+
}
|
|
64
|
+
return { blocks };
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Given a parsed block and the list of aliases a relay service owns,
|
|
69
|
+
* return the subset of aliases that should receive this block.
|
|
70
|
+
*
|
|
71
|
+
* A block with `to === null` or `to === ['*']` matches every owned alias.
|
|
72
|
+
* Otherwise the block's `to` list is matched case-insensitively against
|
|
73
|
+
* the service's aliases, with substring fallback so a block addressed to
|
|
74
|
+
* `discord:#ops` matches an owned alias `discord:guild-123:#ops` (useful
|
|
75
|
+
* because Discord aliases can carry guild prefixes the agent may omit).
|
|
76
|
+
*
|
|
77
|
+
* @param {{to: string[]|null, text: string}} block
|
|
78
|
+
* @param {string[]} ownedAliases Aliases this relay service handles.
|
|
79
|
+
* @returns {string[]} Subset of `ownedAliases` that should receive the block.
|
|
80
|
+
*/
|
|
81
|
+
export function resolveBlockTargets(block, ownedAliases) {
|
|
82
|
+
if (!Array.isArray(ownedAliases) || ownedAliases.length === 0) return [];
|
|
83
|
+
if (!block.to || (block.to.length === 1 && block.to[0] === '*')) {
|
|
84
|
+
return [...ownedAliases];
|
|
85
|
+
}
|
|
86
|
+
const wanted = block.to.map(s => s.toLowerCase());
|
|
87
|
+
const matched = new Set();
|
|
88
|
+
for (const owned of ownedAliases) {
|
|
89
|
+
const ownedLc = String(owned).toLowerCase();
|
|
90
|
+
for (const w of wanted) {
|
|
91
|
+
if (ownedLc === w || ownedLc.endsWith(w) || ownedLc.includes(w)) {
|
|
92
|
+
matched.add(owned);
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return [...matched];
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* System-prompt paragraph listing the currently bridged channels and
|
|
102
|
+
* explaining the `<external to="…">` addressing scheme. The scheduler
|
|
103
|
+
* appends this once per turn, only when at least one channel is bridged.
|
|
104
|
+
*
|
|
105
|
+
* @param {Array<{alias:string, label?:string}>} channels
|
|
106
|
+
* List of bridged channels the agent can address. `alias` is the
|
|
107
|
+
* handle the agent uses in `to=`; `label` is a human-readable
|
|
108
|
+
* description surfaced alongside the alias in the prompt.
|
|
109
|
+
* @returns {string} Guidance paragraph (empty string when channels is empty).
|
|
110
|
+
*/
|
|
111
|
+
export function getExternalChannelPromptGuidance(channels = []) {
|
|
112
|
+
if (!Array.isArray(channels) || channels.length === 0) return '';
|
|
113
|
+
|
|
114
|
+
const list = channels.map(c => {
|
|
115
|
+
const alias = String(c?.alias || '').trim();
|
|
116
|
+
if (!alias) return null;
|
|
117
|
+
const label = String(c?.label || '').trim();
|
|
118
|
+
return label ? ` - \`${alias}\` — ${label}` : ` - \`${alias}\``;
|
|
119
|
+
}).filter(Boolean).join('\n');
|
|
120
|
+
|
|
121
|
+
if (!list) return '';
|
|
122
|
+
|
|
123
|
+
return (
|
|
124
|
+
`\n\n## OUTPUT ROUTING\n` +
|
|
125
|
+
`This agent is bridged to external messaging channels. NOTHING you write is forwarded by default — your full response stays local for the operator, who sees everything unfiltered via the web UI.\n\n` +
|
|
126
|
+
`To send content to an external channel, wrap it in \`<external>…</external>\` tags. Content inside the tags is relayed verbatim (markdown, code blocks, tool summaries, task lists — whatever you write there is what the channel sees). Content outside the tags is never forwarded.\n\n` +
|
|
127
|
+
`Bridged channels you can address:\n${list}\n\n` +
|
|
128
|
+
`Addressing:\n` +
|
|
129
|
+
` - \`<external>…</external>\` — broadcast to every bridged channel above.\n` +
|
|
130
|
+
` - \`<external to="alias">…</external>\` — send only to that alias.\n` +
|
|
131
|
+
` - \`<external to="aliasA,aliasB">…</external>\` — send to multiple specific aliases (comma-separated).\n` +
|
|
132
|
+
` - \`<external to="*">…</external>\` — same as default (explicit broadcast).\n\n` +
|
|
133
|
+
`You can use multiple \`<external>\` blocks per response; each is delivered independently to its targets. Content with no \`<external>\` wrapper is never forwarded — perfect for private reasoning, tool calls, and inter-agent messages.`
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export default { filterContentForExternalRelay, resolveBlockTargets, getExternalChannelPromptGuidance };
|
|
@@ -20,6 +20,7 @@ import { promises as fs } from 'fs';
|
|
|
20
20
|
import path from 'path';
|
|
21
21
|
import { getUserDataPaths, ensureUserDataDirs } from '../utilities/userDataDir.js';
|
|
22
22
|
import { INTERFACE_TYPES } from '../utilities/constants.js';
|
|
23
|
+
import { filterContentForExternalRelay, resolveBlockTargets } from './channelFilter.js';
|
|
23
24
|
|
|
24
25
|
const DISCORD_STATUS = {
|
|
25
26
|
DISCONNECTED: 'disconnected',
|
|
@@ -413,11 +414,15 @@ class DiscordService {
|
|
|
413
414
|
async _routeToAgent(channelKey, agentId, text, discordMessage) {
|
|
414
415
|
const sessionId = `discord-${channelKey.replace(':', '-')}`;
|
|
415
416
|
|
|
416
|
-
// Record recent interaction for response targeting
|
|
417
|
+
// Record recent interaction for response targeting. `channelName` and
|
|
418
|
+
// `guildName` are captured so we can surface a human-readable alias
|
|
419
|
+
// to the agent (see `getBridgedChannels`).
|
|
417
420
|
this.recentInteractions.set(`${agentId}:${channelKey}`, {
|
|
418
421
|
channelKey,
|
|
419
422
|
channelId: discordMessage.channel.id,
|
|
420
|
-
|
|
423
|
+
channelName: discordMessage.channel.name || null,
|
|
424
|
+
guildId: discordMessage.guild?.id ?? null,
|
|
425
|
+
guildName: discordMessage.guild?.name ?? null,
|
|
421
426
|
timestamp: Date.now()
|
|
422
427
|
});
|
|
423
428
|
|
|
@@ -509,34 +514,113 @@ class DiscordService {
|
|
|
509
514
|
const role = message.role || message.data?.role || message.message?.role;
|
|
510
515
|
if (role === 'user' || role === 'tool') return;
|
|
511
516
|
|
|
512
|
-
//
|
|
513
|
-
|
|
514
|
-
|
|
517
|
+
// Parse every <external>…</external> block out of the raw content.
|
|
518
|
+
// Content inside the tags is relayed verbatim — no stripping, no
|
|
519
|
+
// content-type discrimination. The web UI still sees the full raw
|
|
520
|
+
// message via the WS broadcast and is unaffected by this filter.
|
|
521
|
+
const { blocks } = filterContentForExternalRelay(content);
|
|
522
|
+
if (blocks.length === 0) {
|
|
523
|
+
this.logger?.debug?.('[DiscordService] no <external> blocks in agent response — nothing relayed', { agentId });
|
|
524
|
+
return;
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
// Collect every live Discord channel bridged to this agent. Drops
|
|
528
|
+
// stale entries past the interaction TTL as a side-effect.
|
|
529
|
+
const bridged = this._getBridgedChannelEntries(agentId);
|
|
530
|
+
if (bridged.length === 0) return;
|
|
531
|
+
|
|
532
|
+
// Map owned aliases → entry so we can look up channelId quickly after
|
|
533
|
+
// `resolveBlockTargets` tells us which aliases to send to.
|
|
534
|
+
const aliasToEntry = new Map(bridged.map(e => [e.alias, e]));
|
|
535
|
+
const ownedAliases = [...aliasToEntry.keys()];
|
|
515
536
|
|
|
537
|
+
const agent = this.agentPool ? await this.agentPool.getAgent(agentId) : null;
|
|
538
|
+
const agentName = agent?.name || agentId;
|
|
539
|
+
|
|
540
|
+
for (const block of blocks) {
|
|
541
|
+
const targets = resolveBlockTargets(block, ownedAliases);
|
|
542
|
+
for (const alias of targets) {
|
|
543
|
+
const entry = aliasToEntry.get(alias);
|
|
544
|
+
if (!entry) continue;
|
|
545
|
+
try {
|
|
546
|
+
await this._sendFormattedResponse(entry.channelId, agentName, block.text);
|
|
547
|
+
} catch (error) {
|
|
548
|
+
this.logger?.warn('[DiscordService] Failed to relay block', {
|
|
549
|
+
alias, channelId: entry.channelId, error: error.message
|
|
550
|
+
});
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
/**
|
|
557
|
+
* Active Discord bridges for an agent, as entries tied to the relay
|
|
558
|
+
* pipeline. Each entry carries an `alias` the agent can use in
|
|
559
|
+
* `<external to="…">`. Expired entries (past INTERACTION_TTL_MS) are
|
|
560
|
+
* garbage-collected during the scan so alias lists stay honest.
|
|
561
|
+
*
|
|
562
|
+
* @param {string} agentId
|
|
563
|
+
* @returns {Array<{alias: string, label: string, channelKey: string, channelId: string, guildId: string|null, guildName: string|null, channelName: string|null}>}
|
|
564
|
+
* @private
|
|
565
|
+
*/
|
|
566
|
+
_getBridgedChannelEntries(agentId) {
|
|
567
|
+
const now = Date.now();
|
|
568
|
+
const entries = [];
|
|
516
569
|
for (const [key, interaction] of this.recentInteractions) {
|
|
517
570
|
if (!key.startsWith(`${agentId}:`)) continue;
|
|
518
571
|
if (now - interaction.timestamp > INTERACTION_TTL_MS) {
|
|
519
572
|
this.recentInteractions.delete(key);
|
|
520
573
|
continue;
|
|
521
574
|
}
|
|
522
|
-
|
|
575
|
+
const channel = interaction.channelName || interaction.channelId;
|
|
576
|
+
// Alias format: `discord:#<channel>` when we have a channel name;
|
|
577
|
+
// otherwise fall back to the bare channel id. Substring matching in
|
|
578
|
+
// `resolveBlockTargets` means the agent can write short forms like
|
|
579
|
+
// `discord:#ops` even if the canonical alias is longer.
|
|
580
|
+
const alias = interaction.channelName
|
|
581
|
+
? `discord:#${interaction.channelName}`
|
|
582
|
+
: `discord:${interaction.channelId}`;
|
|
583
|
+
const label = interaction.guildName
|
|
584
|
+
? `Discord channel #${interaction.channelName ?? interaction.channelId} in ${interaction.guildName}`
|
|
585
|
+
: `Discord channel ${interaction.channelName ?? interaction.channelId}`;
|
|
586
|
+
entries.push({
|
|
587
|
+
alias, label,
|
|
588
|
+
channelKey: interaction.channelKey,
|
|
589
|
+
channelId: interaction.channelId,
|
|
590
|
+
guildId: interaction.guildId,
|
|
591
|
+
guildName: interaction.guildName,
|
|
592
|
+
channelName: interaction.channelName,
|
|
593
|
+
});
|
|
523
594
|
}
|
|
595
|
+
return entries;
|
|
596
|
+
}
|
|
524
597
|
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
598
|
+
/**
|
|
599
|
+
* Compact alias list the scheduler surfaces in the system prompt so the
|
|
600
|
+
* agent can address specific Discord channels via `<external to="…">`.
|
|
601
|
+
*
|
|
602
|
+
* @param {string} agentId
|
|
603
|
+
* @returns {Array<{alias: string, label: string}>}
|
|
604
|
+
*/
|
|
605
|
+
getBridgedChannels(agentId) {
|
|
606
|
+
if (!agentId || this.status !== DISCORD_STATUS.CONNECTED) return [];
|
|
607
|
+
return this._getBridgedChannelEntries(agentId).map(e => ({ alias: e.alias, label: e.label }));
|
|
608
|
+
}
|
|
529
609
|
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
610
|
+
/**
|
|
611
|
+
* True when the agent has at least one live Discord bridge. Scheduler
|
|
612
|
+
* uses this to decide whether to inject the `<external>` prompt
|
|
613
|
+
* guidance for this turn (cheaper than calling getBridgedChannels when
|
|
614
|
+
* we only need a boolean).
|
|
615
|
+
*/
|
|
616
|
+
isAgentBridged(agentId) {
|
|
617
|
+
if (!agentId || this.status !== DISCORD_STATUS.CONNECTED) return false;
|
|
618
|
+
const now = Date.now();
|
|
619
|
+
for (const [key, interaction] of this.recentInteractions) {
|
|
620
|
+
if (!key.startsWith(`${agentId}:`)) continue;
|
|
621
|
+
if (now - interaction.timestamp <= INTERACTION_TTL_MS) return true;
|
|
539
622
|
}
|
|
623
|
+
return false;
|
|
540
624
|
}
|
|
541
625
|
|
|
542
626
|
async _relayPromptRequest(message) {
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
import { promises as fs } from 'fs';
|
|
19
19
|
import path from 'path';
|
|
20
20
|
import { getUserDataPaths, ensureUserDataDirs } from '../utilities/userDataDir.js';
|
|
21
|
+
import { filterContentForExternalRelay, resolveBlockTargets } from './channelFilter.js';
|
|
21
22
|
|
|
22
23
|
const TELEGRAM_STATUS = {
|
|
23
24
|
DISCONNECTED: 'disconnected',
|
|
@@ -663,10 +664,66 @@ class TelegramService {
|
|
|
663
664
|
const role = message.role || message.data?.role || message.message?.role;
|
|
664
665
|
if (role === 'user' || role === 'tool') return;
|
|
665
666
|
|
|
667
|
+
// Parse every <external>…</external> block; content inside is relayed
|
|
668
|
+
// verbatim (see ./channelFilter.js). The local operator's web UI
|
|
669
|
+
// continues to see the full raw broadcast — this filter only decides
|
|
670
|
+
// what leaves the process.
|
|
671
|
+
const { blocks } = filterContentForExternalRelay(content);
|
|
672
|
+
if (blocks.length === 0) {
|
|
673
|
+
this.logger?.debug?.('[TelegramService] no <external> blocks in agent response — nothing relayed', { agentId });
|
|
674
|
+
return;
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
const bridged = this.getBridgedChannels(agentId);
|
|
678
|
+
if (bridged.length === 0) return;
|
|
679
|
+
const ownedAliases = bridged.map(c => c.alias);
|
|
680
|
+
|
|
666
681
|
const agent = this.agentPool ? await this.agentPool.getAgent(agentId) : null;
|
|
667
682
|
const agentName = agent?.name || agentId;
|
|
668
683
|
|
|
669
|
-
|
|
684
|
+
for (const block of blocks) {
|
|
685
|
+
const targets = resolveBlockTargets(block, ownedAliases);
|
|
686
|
+
if (targets.length === 0) continue;
|
|
687
|
+
// Today there is a single Telegram chat per agent, so any match
|
|
688
|
+
// ultimately sends to `this.chatId`. Loop defensively in case the
|
|
689
|
+
// service ever grows multi-chat support.
|
|
690
|
+
for (const alias of targets) {
|
|
691
|
+
try {
|
|
692
|
+
await this._sendFormattedResponse(this.chatId, agentName, block.text);
|
|
693
|
+
} catch (error) {
|
|
694
|
+
this.logger?.warn?.('[TelegramService] Failed to relay block', {
|
|
695
|
+
alias, error: error.message
|
|
696
|
+
});
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
/**
|
|
703
|
+
* Single-element alias list for this agent's Telegram bridge. The
|
|
704
|
+
* service currently tracks one chat, so the alias is a stable
|
|
705
|
+
* `telegram` handle; expanding to multi-chat later is additive (return
|
|
706
|
+
* one entry per chat).
|
|
707
|
+
*
|
|
708
|
+
* @param {string} agentId
|
|
709
|
+
* @returns {Array<{alias: string, label: string}>}
|
|
710
|
+
*/
|
|
711
|
+
getBridgedChannels(agentId) {
|
|
712
|
+
if (!this.isAgentBridged(agentId)) return [];
|
|
713
|
+
return [{ alias: 'telegram', label: 'Telegram chat' }];
|
|
714
|
+
}
|
|
715
|
+
|
|
716
|
+
/**
|
|
717
|
+
* True when the agent is currently addressable from Telegram — the
|
|
718
|
+
* scheduler uses this to decide whether to inject the `<external>`
|
|
719
|
+
* prompt guidance for this turn.
|
|
720
|
+
*
|
|
721
|
+
* @param {string} agentId
|
|
722
|
+
* @returns {boolean}
|
|
723
|
+
*/
|
|
724
|
+
isAgentBridged(agentId) {
|
|
725
|
+
if (!agentId || this.status !== TELEGRAM_STATUS.CONNECTED) return false;
|
|
726
|
+
return this.activeAgentIds.has(agentId);
|
|
670
727
|
}
|
|
671
728
|
|
|
672
729
|
// --- Smart Response Formatting ---
|
|
@@ -1094,10 +1094,34 @@ SECURITY:
|
|
|
1094
1094
|
* @private
|
|
1095
1095
|
*/
|
|
1096
1096
|
resolvePath(filePath, workingDir) {
|
|
1097
|
-
|
|
1098
|
-
|
|
1097
|
+
const resolved = path.isAbsolute(filePath)
|
|
1098
|
+
? path.normalize(filePath)
|
|
1099
|
+
: path.resolve(workingDir, filePath);
|
|
1100
|
+
|
|
1101
|
+
// Guard against the "doubled folder" trap. Reasoning models lose track
|
|
1102
|
+
// of the session CWD after a change-directory and re-prepend the
|
|
1103
|
+
// project folder name to every relative path — turning
|
|
1104
|
+
// CWD=".../foo" + "foo/bar/x.js" into ".../foo/foo/bar/x.js", which
|
|
1105
|
+
// the filesystem silently creates. We detect this by scanning the
|
|
1106
|
+
// FINAL resolved path for consecutive duplicate segments, so the
|
|
1107
|
+
// guard fires whether the duplication came from (a) relative prefix
|
|
1108
|
+
// (`foo/...` while inside `.../foo`), (b) relative mid-path
|
|
1109
|
+
// (`pkg/foo/foo/bar`), or (c) an absolute path written out in full
|
|
1110
|
+
// (`C:\...\foo\foo\bar`). Root-level duplicates like Windows drives
|
|
1111
|
+
// are ignored by design (`C:\C:\...` is impossible in normalized form).
|
|
1112
|
+
const segs = resolved.split(/[\\/]/).filter(Boolean);
|
|
1113
|
+
for (let i = 1; i < segs.length; i++) {
|
|
1114
|
+
if (segs[i].toLowerCase() === segs[i - 1].toLowerCase()) {
|
|
1115
|
+
throw new Error(
|
|
1116
|
+
`Refused: resolved path contains a duplicated segment "${segs[i]}" (${resolved}). ` +
|
|
1117
|
+
`Current working directory: ${workingDir}. ` +
|
|
1118
|
+
`This almost always means the project folder name was prepended to a relative path while the CWD is already inside it. ` +
|
|
1119
|
+
`Drop the duplicated "${segs[i]}/" from the path — relative paths are resolved from the CWD — or pass an absolute path with no duplication.`
|
|
1120
|
+
);
|
|
1121
|
+
}
|
|
1099
1122
|
}
|
|
1100
|
-
|
|
1123
|
+
|
|
1124
|
+
return resolved;
|
|
1101
1125
|
}
|
|
1102
1126
|
|
|
1103
1127
|
/**
|