onbuzz 4.9.0 → 4.9.1
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/scripts/verify/azure-custom-embeddings.mjs +152 -0
- package/scripts/verify/azure-embeddings.mjs +146 -0
- package/scripts/verify/composio-toolkits.mjs +453 -0
- package/scripts/verify/local-embeddings.mjs +171 -0
- package/scripts/verify/openai-embeddings.mjs +140 -0
- package/src/core/__tests__/agentScheduler.autoRecall.test.js +215 -0
- package/src/core/__tests__/agentScheduler.errorCategorisation.test.js +169 -0
- package/src/core/agentScheduler.js +182 -36
- package/src/index.js +63 -1
- package/src/interfaces/webServer.js +90 -0
- package/src/services/__tests__/aiService.core.test.js +420 -0
- package/src/services/__tests__/aiService.embed.test.js +172 -0
- package/src/services/__tests__/apiKeyManager.getEmbeddingApiKey.test.js +86 -0
- package/src/services/__tests__/composioService.test.js +429 -47
- package/src/services/__tests__/telegramService.test.js +91 -0
- package/src/services/aiService.js +137 -0
- package/src/services/apiKeyManager.js +28 -0
- package/src/services/composioService.js +375 -24
- package/src/services/embeddings/__tests__/autoRecall.test.js +237 -0
- package/src/services/embeddings/__tests__/azureCustomProvider.test.js +232 -0
- package/src/services/embeddings/__tests__/cloudProviders.test.js +339 -0
- package/src/services/embeddings/__tests__/embeddingService.test.js +417 -0
- package/src/services/embeddings/__tests__/embeddingsConfig.test.js +182 -0
- package/src/services/embeddings/__tests__/inMemoryJsonStore.test.js +207 -0
- package/src/services/embeddings/__tests__/localProvider.test.js +263 -0
- package/src/services/embeddings/__tests__/providerInterface.test.js +209 -0
- package/src/services/embeddings/autoRecall.js +219 -0
- package/src/services/embeddings/embeddingService.js +452 -0
- package/src/services/embeddings/embeddingsConfig.js +203 -0
- package/src/services/embeddings/indexers/__tests__/agentIndexer.test.js +232 -0
- package/src/services/embeddings/indexers/__tests__/composioIndexer.test.js +265 -0
- package/src/services/embeddings/indexers/__tests__/memoryIndexer.test.js +418 -0
- package/src/services/embeddings/indexers/__tests__/reminisceIndexer.test.js +357 -0
- package/src/services/embeddings/indexers/__tests__/skillsIndexer.test.js +145 -0
- package/src/services/embeddings/indexers/__tests__/taskIndexer.test.js +146 -0
- package/src/services/embeddings/indexers/agentIndexer.js +249 -0
- package/src/services/embeddings/indexers/composioIndexer.js +279 -0
- package/src/services/embeddings/indexers/memoryIndexer.js +358 -0
- package/src/services/embeddings/indexers/reminisceIndexer.js +370 -0
- package/src/services/embeddings/indexers/skillsIndexer.js +154 -0
- package/src/services/embeddings/indexers/taskIndexer.js +155 -0
- package/src/services/embeddings/providerInterface.js +206 -0
- package/src/services/embeddings/providers/azureCustomProvider.js +154 -0
- package/src/services/embeddings/providers/azureProvider.js +122 -0
- package/src/services/embeddings/providers/cloudHttpTransport.js +205 -0
- package/src/services/embeddings/providers/localProvider.js +287 -0
- package/src/services/embeddings/providers/openaiProvider.js +101 -0
- package/src/services/embeddings/utilities/__tests__/textChunker.test.js +217 -0
- package/src/services/embeddings/utilities/textChunker.js +290 -0
- package/src/services/embeddings/vectorStore/__tests__/scoring.test.js +189 -0
- package/src/services/embeddings/vectorStore/inMemoryJsonStore.js +356 -0
- package/src/services/embeddings/vectorStore/scoring.js +128 -0
- package/src/services/embeddings/vectorStore/storeContractTests.js +179 -0
- package/src/services/embeddings/vectorStore/storeInterface.js +91 -0
- package/src/services/telegramService.js +140 -1
- package/src/tools/__tests__/agentCommunicationTool.findAgent.test.js +226 -0
- package/src/tools/__tests__/agentCommunicationTool.test.js +17 -2
- package/src/tools/__tests__/baseTool.test.js +14 -10
- package/src/tools/__tests__/cloneDetectionTool.test.js +430 -0
- package/src/tools/__tests__/composioTool.findAction.test.js +448 -0
- package/src/tools/__tests__/composioTool.test.js +254 -23
- package/src/tools/__tests__/dependencyResolverTool.test.js +567 -0
- package/src/tools/__tests__/docxTool.test.js +449 -0
- package/src/tools/__tests__/excelTool.test.js +486 -0
- package/src/tools/__tests__/importAnalyzerTool.test.js +368 -0
- package/src/tools/__tests__/memoryTool.forgetStale.test.js +272 -0
- package/src/tools/__tests__/memoryTool.reminisceSemanticSearch.test.js +301 -0
- package/src/tools/__tests__/memoryTool.semanticSearch.test.js +405 -0
- package/src/tools/__tests__/memoryTool.teamPool.test.js +293 -0
- package/src/tools/__tests__/openaiFunctionSchemas.validity.test.js +268 -0
- package/src/tools/__tests__/pdfTool.test.js +457 -0
- package/src/tools/__tests__/skillsTool.search.test.js +164 -0
- package/src/tools/__tests__/taskManagerTool.search.test.js +143 -0
- package/src/tools/agentCommunicationTool.js +120 -5
- package/src/tools/composioTool.js +373 -63
- package/src/tools/memoryTool.js +634 -5
- package/src/tools/openaiFunctionSchemas.js +796 -6
- package/src/tools/skillsTool.js +123 -0
- package/src/tools/taskManagerTool.js +115 -2
- package/src/tools/webTool.js +28 -1
- package/src/utilities/toolConstants.js +3 -1
- package/web-ui/build/index.html +2 -2
- package/web-ui/build/static/1c-CTztA3Xo.js +1 -0
- package/web-ui/build/static/abap-BsUhLmBp.js +1 -0
- package/web-ui/build/static/abnf-CGKV2y5s.js +1 -0
- package/web-ui/build/static/abnf-vQPGuzu_.js +1 -0
- package/web-ui/build/static/accesslog-mUZocN9d.js +1 -0
- package/web-ui/build/static/actionscript-BmCHyr7v.js +1 -0
- package/web-ui/build/static/actionscript-Cc5vZvFE.js +1 -0
- package/web-ui/build/static/ada-BHR9NMNv.js +1 -0
- package/web-ui/build/static/ada-DnxQs2b9.js +1 -0
- package/web-ui/build/static/agda-CHEWVCEZ.js +1 -0
- package/web-ui/build/static/al-C0otNZjc.js +1 -0
- package/web-ui/build/static/angelscript-Co5e7ZdR.js +1 -0
- package/web-ui/build/static/antlr4-Dkky4AXR.js +1 -0
- package/web-ui/build/static/apache-BJkYIuV-.js +1 -0
- package/web-ui/build/static/apacheconf-XLif_lM5.js +1 -0
- package/web-ui/build/static/apex-DiKnugSK.js +1 -0
- package/web-ui/build/static/apl-R5OItFx8.js +1 -0
- package/web-ui/build/static/applescript-D8uiCoXI.js +1 -0
- package/web-ui/build/static/applescript-e5KOVzz4.js +1 -0
- package/web-ui/build/static/aql-Cvy5hwR1.js +1 -0
- package/web-ui/build/static/arcade-0iAjFk8w.js +1 -0
- package/web-ui/build/static/arduino-BJeuGqAT.js +1 -0
- package/web-ui/build/static/arduino-QJJjnM1j.js +1 -0
- package/web-ui/build/static/arff-C-i_E_-B.js +1 -0
- package/web-ui/build/static/armasm-ukFQKHGn.js +1 -0
- package/web-ui/build/static/asciidoc-B49qqHJJ.js +1 -0
- package/web-ui/build/static/asciidoc-Nkm1Ylrd.js +1 -0
- package/web-ui/build/static/asm6502-CMiM3nZs.js +1 -0
- package/web-ui/build/static/asmatmel-DG9XzIBf.js +1 -0
- package/web-ui/build/static/aspectj-DjRutrRk.js +1 -0
- package/web-ui/build/static/aspnet-DCNVRVi9.js +1 -0
- package/web-ui/build/static/autohotkey-C7eyvps0.js +1 -0
- package/web-ui/build/static/autohotkey-CiaZi-WO.js +1 -0
- package/web-ui/build/static/autoit-CaKUQkux.js +1 -0
- package/web-ui/build/static/autoit-D-CUHQgt.js +1 -0
- package/web-ui/build/static/avisynth-DFP3h4zu.js +1 -0
- package/web-ui/build/static/avrasm-BqvUj3fg.js +1 -0
- package/web-ui/build/static/avro-idl-D3l0ptuQ.js +1 -0
- package/web-ui/build/static/awk-BmDxAZFj.js +1 -0
- package/web-ui/build/static/axapta-B424jrgT.js +1 -0
- package/web-ui/build/static/bash-CgAffr8Z.js +1 -0
- package/web-ui/build/static/bash-D41aILLG.js +1 -0
- package/web-ui/build/static/basic-5DFTo35K.js +1 -0
- package/web-ui/build/static/basic-BONYG7D2.js +1 -0
- package/web-ui/build/static/batch-BnaDGMwS.js +1 -0
- package/web-ui/build/static/bbcode-Daujj4hU.js +1 -0
- package/web-ui/build/static/bicep-CXidcIK5.js +1 -0
- package/web-ui/build/static/birb-CcOzsnqB.js +1 -0
- package/web-ui/build/static/bison-rq0w5JFF.js +1 -0
- package/web-ui/build/static/bnf-C4uK1dK8.js +1 -0
- package/web-ui/build/static/bnf-CvXZ9crt.js +1 -0
- package/web-ui/build/static/brainfuck-B5Ezdg2y.js +1 -0
- package/web-ui/build/static/brainfuck-BZaTfZ97.js +1 -0
- package/web-ui/build/static/brightscript-D_2WBVxt.js +1 -0
- package/web-ui/build/static/bro-BD7GT6j_.js +1 -0
- package/web-ui/build/static/bsl-Bh-qcQ3w.js +1 -0
- package/web-ui/build/static/c-DNmZz1iT.js +1 -0
- package/web-ui/build/static/c-dUrSOcB2.js +1 -0
- package/web-ui/build/static/c-like-DfzKY8Uu.js +1 -0
- package/web-ui/build/static/cal-DgrFs4te.js +1 -0
- package/web-ui/build/static/capnproto-BxFR2k8w.js +1 -0
- package/web-ui/build/static/ceylon-B2Q7BIPM.js +1 -0
- package/web-ui/build/static/cfscript-DeaR8rww.js +1 -0
- package/web-ui/build/static/chaiscript-BeBIoz6b.js +1 -0
- package/web-ui/build/static/cil-YHiHOb4c.js +1 -0
- package/web-ui/build/static/clean-BgOl_0cN.js +1 -0
- package/web-ui/build/static/clojure-BlgOza7C.js +1 -0
- package/web-ui/build/static/clojure-PlKRYx3q.js +1 -0
- package/web-ui/build/static/clojure-repl-Dv2_THNB.js +1 -0
- package/web-ui/build/static/cmake-Ccf43gsy.js +1 -0
- package/web-ui/build/static/cmake-Dah_b5tK.js +1 -0
- package/web-ui/build/static/cobol-o9YRDzXA.js +1 -0
- package/web-ui/build/static/coffeescript-DTYLvxG9.js +1 -0
- package/web-ui/build/static/coffeescript-Dm4UcexP.js +1 -0
- package/web-ui/build/static/concurnas-1OxY7nFV.js +1 -0
- package/web-ui/build/static/coq-CvJBSoWT.js +1 -0
- package/web-ui/build/static/coq-DPZunybQ.js +1 -0
- package/web-ui/build/static/cos-BBstQgB4.js +1 -0
- package/web-ui/build/static/cpp-BR1pa5Wr.js +1 -0
- package/web-ui/build/static/cpp-C-_tTuKh.js +1 -0
- package/web-ui/build/static/crmsh-BIme7ihG.js +1 -0
- package/web-ui/build/static/crystal-C2hlJxaB.js +1 -0
- package/web-ui/build/static/crystal-Ca6D0fV7.js +1 -0
- package/web-ui/build/static/csharp-DGvdwvDH.js +1 -0
- package/web-ui/build/static/csharp-DbAjVltn.js +1 -0
- package/web-ui/build/static/cshtml-DVC84JPa.js +1 -0
- package/web-ui/build/static/csp-BawtG83z.js +1 -0
- package/web-ui/build/static/csp-BlaoxdTK.js +1 -0
- package/web-ui/build/static/css-52oqss7r.js +1 -0
- package/web-ui/build/static/css-extras-BoTVw2IW.js +1 -0
- package/web-ui/build/static/csv-nXBSv5kK.js +1 -0
- package/web-ui/build/static/cypher-WuesoPm2.js +1 -0
- package/web-ui/build/static/d-BmmTjwiV.js +1 -0
- package/web-ui/build/static/d-BwHf5A8R.js +1 -0
- package/web-ui/build/static/dart-BVZTRb8b.js +1 -0
- package/web-ui/build/static/dart-CbWzIBpX.js +1 -0
- package/web-ui/build/static/dataweave-qi_fpjJR.js +1 -0
- package/web-ui/build/static/dax-BpP02TD3.js +1 -0
- package/web-ui/build/static/delphi-TK0E0gLN.js +1 -0
- package/web-ui/build/static/dhall-jyNJwUbo.js +1 -0
- package/web-ui/build/static/diff-Dbu90HZq.js +1 -0
- package/web-ui/build/static/diff-Df6ezhAq.js +1 -0
- package/web-ui/build/static/django-BDy-xiWR.js +1 -0
- package/web-ui/build/static/django-CbmnWIX9.js +1 -0
- package/web-ui/build/static/dns-D_wmKRHl.js +1 -0
- package/web-ui/build/static/dns-zone-file-_1osc1Qk.js +1 -0
- package/web-ui/build/static/docker-D62hlkjX.js +1 -0
- package/web-ui/build/static/dockerfile-DQ080zHh.js +1 -0
- package/web-ui/build/static/dos-B5mA8Wna.js +1 -0
- package/web-ui/build/static/dot-D497WUfu.js +1 -0
- package/web-ui/build/static/dsconfig-dERMCQVk.js +1 -0
- package/web-ui/build/static/dts-DC3ujcbX.js +1 -0
- package/web-ui/build/static/dust-Bhm1VBQg.js +1 -0
- package/web-ui/build/static/ebnf-1lmwK0bv.js +1 -0
- package/web-ui/build/static/ebnf-qzzqKVXL.js +1 -0
- package/web-ui/build/static/editorconfig-CCe25wQr.js +1 -0
- package/web-ui/build/static/eiffel-BFOXbwEN.js +1 -0
- package/web-ui/build/static/ejs-D94vVkGZ.js +1 -0
- package/web-ui/build/static/elixir-B2W81YV0.js +1 -0
- package/web-ui/build/static/elixir-CD1szlP_.js +1 -0
- package/web-ui/build/static/elm-BUJhR-kM.js +1 -0
- package/web-ui/build/static/elm-DwLnLHSK.js +1 -0
- package/web-ui/build/static/erb-CcokD9Fu.js +1 -0
- package/web-ui/build/static/erb-lzhmSBEV.js +1 -0
- package/web-ui/build/static/erlang-C0jnu48-.js +1 -0
- package/web-ui/build/static/erlang-CrevXBnJ.js +1 -0
- package/web-ui/build/static/erlang-repl-CNY6yNoO.js +1 -0
- package/web-ui/build/static/etlua-BMO_ICdR.js +1 -0
- package/web-ui/build/static/excel-C5PbLrVC.js +1 -0
- package/web-ui/build/static/excel-formula-CX4pOnnV.js +1 -0
- package/web-ui/build/static/factor-bW3WUpa0.js +1 -0
- package/web-ui/build/static/false-CQx6Crbr.js +1 -0
- package/web-ui/build/static/firestore-security-rules-DT5oRNdf.js +1 -0
- package/web-ui/build/static/fix-C4IWe2LI.js +1 -0
- package/web-ui/build/static/flix-hi9-cLwA.js +1 -0
- package/web-ui/build/static/flow-CkX6DAhF.js +1 -0
- package/web-ui/build/static/fortran-C4rIX-2n.js +1 -0
- package/web-ui/build/static/fortran-Dvu3q_x_.js +1 -0
- package/web-ui/build/static/fsharp-Bwa1UrRI.js +1 -0
- package/web-ui/build/static/fsharp-CvadhLcA.js +1 -0
- package/web-ui/build/static/ftl-eFEI11YV.js +1 -0
- package/web-ui/build/static/gams-BxGx7deQ.js +1 -0
- package/web-ui/build/static/gap-Dcv7bqDd.js +1 -0
- package/web-ui/build/static/gauss-CcVoF4l8.js +1 -0
- package/web-ui/build/static/gcode-B1dc5sh5.js +1 -0
- package/web-ui/build/static/gcode-D5OxRG5t.js +1 -0
- package/web-ui/build/static/gdscript-CL-EA1wk.js +1 -0
- package/web-ui/build/static/gedcom-BbXrNsr0.js +1 -0
- package/web-ui/build/static/gherkin-B2wQMbT2.js +1 -0
- package/web-ui/build/static/gherkin-CnL4Y3j1.js +1 -0
- package/web-ui/build/static/git-DpdutSM5.js +1 -0
- package/web-ui/build/static/glsl-C7sgdZCA.js +1 -0
- package/web-ui/build/static/glsl-DVaNsn1Z.js +1 -0
- package/web-ui/build/static/gml-B_NppoA4.js +1 -0
- package/web-ui/build/static/gml-DFrn75UD.js +1 -0
- package/web-ui/build/static/gn-BhTU_aTW.js +1 -0
- package/web-ui/build/static/go-DKrUPrfb.js +1 -0
- package/web-ui/build/static/go-DLAYIsJl.js +1 -0
- package/web-ui/build/static/go-module-BXY6q1Ug.js +1 -0
- package/web-ui/build/static/golo-CKxjLRpC.js +1 -0
- package/web-ui/build/static/gradle-DN8lsmJj.js +1 -0
- package/web-ui/build/static/graphql-CMb_4vdm.js +1 -0
- package/web-ui/build/static/groovy-Bhi1VPv7.js +1 -0
- package/web-ui/build/static/groovy-D3X3r3EX.js +1 -0
- package/web-ui/build/static/haml-CvOCw9lL.js +1 -0
- package/web-ui/build/static/haml-DYs0wBJO.js +1 -0
- package/web-ui/build/static/handlebars-CLnuKGPm.js +1 -0
- package/web-ui/build/static/handlebars-CYGG_M1h.js +1 -0
- package/web-ui/build/static/haskell-0Ju0XclD.js +1 -0
- package/web-ui/build/static/haskell-CL5jUHSd.js +1 -0
- package/web-ui/build/static/haxe-BghRbBtK.js +1 -0
- package/web-ui/build/static/haxe-dfL7GzPv.js +1 -0
- package/web-ui/build/static/hcl-BZP2QME-.js +1 -0
- package/web-ui/build/static/hlsl-Djp0TiCX.js +1 -0
- package/web-ui/build/static/hoon-Df5gJVqA.js +1 -0
- package/web-ui/build/static/hpkp-Cy-hjB4V.js +1 -0
- package/web-ui/build/static/hsp-CntMIMs4.js +1 -0
- package/web-ui/build/static/hsts-BNBhETNx.js +1 -0
- package/web-ui/build/static/htmlbars-VCCYaDHA.js +1 -0
- package/web-ui/build/static/http-7DbskohZ.js +1 -0
- package/web-ui/build/static/http-BT5FYFAK.js +1 -0
- package/web-ui/build/static/hy-DuGSaK_b.js +1 -0
- package/web-ui/build/static/ichigojam-CjvnJmlr.js +1 -0
- package/web-ui/build/static/icon-BsBz6XP6.js +1 -0
- package/web-ui/build/static/icu-message-format-BEpv_nip.js +1 -0
- package/web-ui/build/static/idris-DiXQdMPU.js +1 -0
- package/web-ui/build/static/iecst-C9tYEzwP.js +1 -0
- package/web-ui/build/static/ignore-DNMpCRPN.js +1 -0
- package/web-ui/build/static/index-B-r71gxO.js +1 -0
- package/web-ui/build/static/index-CTtNXVAZ.js +1217 -0
- package/web-ui/build/static/index-DkBBEGYj.css +1 -0
- package/web-ui/build/static/index-PvzceRzr.js +13 -0
- package/web-ui/build/static/inform7-D38mj1Ty.js +1 -0
- package/web-ui/build/static/inform7-SwIRbrNQ.js +1 -0
- package/web-ui/build/static/ini-B9xO6J_m.js +1 -0
- package/web-ui/build/static/ini-zcp_esam.js +1 -0
- package/web-ui/build/static/io-C-Ay4jvg.js +1 -0
- package/web-ui/build/static/irpf90-BYnkitLq.js +1 -0
- package/web-ui/build/static/isbl-BYtdwd6v.js +1 -0
- package/web-ui/build/static/j-ByZQN5E4.js +1 -0
- package/web-ui/build/static/java-BNtb6JWL.js +1 -0
- package/web-ui/build/static/java-CQZL3scW.js +1 -0
- package/web-ui/build/static/javadoc-BciMZ8jg.js +1 -0
- package/web-ui/build/static/javadoclike-07BOTXmy.js +1 -0
- package/web-ui/build/static/javascript-CViZlg1q.js +1 -0
- package/web-ui/build/static/javastacktrace-bWyAK0up.js +1 -0
- package/web-ui/build/static/jboss-cli-hz5boSGB.js +1 -0
- package/web-ui/build/static/jexl-DdIINSXT.js +1 -0
- package/web-ui/build/static/jolie-CQnDX-f0.js +1 -0
- package/web-ui/build/static/jq-BzhF0CHG.js +1 -0
- package/web-ui/build/static/js-extras-jizEtT14.js +1 -0
- package/web-ui/build/static/js-templates-Dr1BqLAt.js +1 -0
- package/web-ui/build/static/jsdoc-CI-GPi6r.js +1 -0
- package/web-ui/build/static/json-2eDPxnHO.js +1 -0
- package/web-ui/build/static/json-BBqUMOAQ.js +1 -0
- package/web-ui/build/static/json5-CeIoln-Y.js +1 -0
- package/web-ui/build/static/jsonp-DWe9tbr2.js +1 -0
- package/web-ui/build/static/jsstacktrace-aE-go9tq.js +1 -0
- package/web-ui/build/static/jsx-BTXEPQYI.js +1 -0
- package/web-ui/build/static/julia-4VeOirXa.js +1 -0
- package/web-ui/build/static/julia-Da6yHEfz.js +1 -0
- package/web-ui/build/static/julia-repl-CFrizGkE.js +1 -0
- package/web-ui/build/static/keepalived-39SDM4j5.js +1 -0
- package/web-ui/build/static/keyman-DU5yOLYr.js +1 -0
- package/web-ui/build/static/kotlin-DJoqh3HG.js +1 -0
- package/web-ui/build/static/kotlin-DsKd3r_L.js +1 -0
- package/web-ui/build/static/kumir-CO96hby4.js +1 -0
- package/web-ui/build/static/kusto-DyuMf8l-.js +1 -0
- package/web-ui/build/static/lasso-BiPmQTXQ.js +1 -0
- package/web-ui/build/static/latex-Bd1ef5fi.js +1 -0
- package/web-ui/build/static/latex-DUrYkmWb.js +1 -0
- package/web-ui/build/static/latte-BSD-hpi5.js +1 -0
- package/web-ui/build/static/ldif-1ZMSg0qI.js +1 -0
- package/web-ui/build/static/leaf-Cg0eq01F.js +1 -0
- package/web-ui/build/static/less-BKcd1_xh.js +1 -0
- package/web-ui/build/static/less-SB5bcusC.js +1 -0
- package/web-ui/build/static/lilypond-BX_kuAqT.js +1 -0
- package/web-ui/build/static/liquid-C337T5bt.js +1 -0
- package/web-ui/build/static/lisp-B_bJRelF.js +1 -0
- package/web-ui/build/static/lisp-Du04Vdmx.js +1 -0
- package/web-ui/build/static/livecodeserver-BOkA9fV6.js +1 -0
- package/web-ui/build/static/livescript-DkMTCCBM.js +1 -0
- package/web-ui/build/static/livescript-rTaLq5oP.js +1 -0
- package/web-ui/build/static/llvm-BrBlvl5p.js +1 -0
- package/web-ui/build/static/llvm-DQbygw7z.js +1 -0
- package/web-ui/build/static/log-DoAzOt8c.js +1 -0
- package/web-ui/build/static/lolcode-DnB7KhRR.js +1 -0
- package/web-ui/build/static/lsl-DpzE7F5A.js +1 -0
- package/web-ui/build/static/lua-CIceROsO.js +1 -0
- package/web-ui/build/static/lua-DhnvJuMn.js +1 -0
- package/web-ui/build/static/magma-BwjzpKxi.js +1 -0
- package/web-ui/build/static/makefile-D10Y62dl.js +1 -0
- package/web-ui/build/static/makefile-esgkquGi.js +1 -0
- package/web-ui/build/static/markdown-B-Y7Y0Nn.js +1 -0
- package/web-ui/build/static/markdown-Cv3Onm-Q.js +1 -0
- package/web-ui/build/static/markup-templating-B1-9WWYa.js +1 -0
- package/web-ui/build/static/mathematica-gSyKdw2h.js +1 -0
- package/web-ui/build/static/matlab-6i1uXuBx.js +1 -0
- package/web-ui/build/static/matlab-CqcSZ1d9.js +1 -0
- package/web-ui/build/static/maxima-Bc-OnIOQ.js +1 -0
- package/web-ui/build/static/maxscript-Bce44o6c.js +1 -0
- package/web-ui/build/static/mel-0Jk3y-vw.js +1 -0
- package/web-ui/build/static/mel-DmA_8WPg.js +1 -0
- package/web-ui/build/static/mercury-DNdP1u-O.js +1 -0
- package/web-ui/build/static/mermaid-DrLkSIIb.js +1 -0
- package/web-ui/build/static/mipsasm-BIQVs3Ff.js +1 -0
- package/web-ui/build/static/mizar-BD5ZD_Rk.js +1 -0
- package/web-ui/build/static/mizar-DThX8Mdy.js +1 -0
- package/web-ui/build/static/mojolicious-Bra-ClwJ.js +1 -0
- package/web-ui/build/static/mongodb-DirByEEg.js +1 -0
- package/web-ui/build/static/monkey-C-Pvu43G.js +1 -0
- package/web-ui/build/static/monkey-n4IFmaA7.js +1 -0
- package/web-ui/build/static/moonscript-B1DM34lp.js +1 -0
- package/web-ui/build/static/moonscript-B82JBytX.js +1 -0
- package/web-ui/build/static/n1ql-C46iq3Hh.js +1 -0
- package/web-ui/build/static/n1ql-DOs3gJQo.js +1 -0
- package/web-ui/build/static/n4js-CPYgal3G.js +1 -0
- package/web-ui/build/static/nand2tetris-hdl-BhlUIq7M.js +1 -0
- package/web-ui/build/static/naniscript-D1YZXYcf.js +1 -0
- package/web-ui/build/static/nasm-2-TtCBo4.js +1 -0
- package/web-ui/build/static/neon-BzoXMDea.js +1 -0
- package/web-ui/build/static/nevod-DW_87wHj.js +1 -0
- package/web-ui/build/static/nginx-BgieYUhk.js +1 -0
- package/web-ui/build/static/nginx-DW0RVJbs.js +1 -0
- package/web-ui/build/static/nim-BbTa7YZN.js +1 -0
- package/web-ui/build/static/nim-VdXk3QT9.js +1 -0
- package/web-ui/build/static/nix-3tNNprEI.js +1 -0
- package/web-ui/build/static/nix-BDghlfzh.js +1 -0
- package/web-ui/build/static/node-repl-BBLv3tyt.js +1 -0
- package/web-ui/build/static/nsis-DxjfnSO8.js +1 -0
- package/web-ui/build/static/nsis-FY5xiiar.js +1 -0
- package/web-ui/build/static/objectivec-CXhf_sp_.js +1 -0
- package/web-ui/build/static/objectivec-DcRKjWcd.js +1 -0
- package/web-ui/build/static/ocaml-BLRL6Zro.js +1 -0
- package/web-ui/build/static/ocaml-C4S4QQtS.js +1 -0
- package/web-ui/build/static/opencl-ruEAYetM.js +1 -0
- package/web-ui/build/static/openqasm-D6r_FwIh.js +1 -0
- package/web-ui/build/static/openscad-BEPjoj_N.js +1 -0
- package/web-ui/build/static/oxygene-A61yc5Or.js +1 -0
- package/web-ui/build/static/oz-DICidCTs.js +1 -0
- package/web-ui/build/static/parigp-MjTNwy2s.js +1 -0
- package/web-ui/build/static/parser-DmI7lg_r.js +1 -0
- package/web-ui/build/static/parser3-Bv9kXAib.js +1 -0
- package/web-ui/build/static/pascal-B23PBLTj.js +1 -0
- package/web-ui/build/static/pascaligo-CPIJtX2C.js +1 -0
- package/web-ui/build/static/pcaxis-Bsj_6x8j.js +1 -0
- package/web-ui/build/static/peoplecode-VvQbMjsD.js +1 -0
- package/web-ui/build/static/perl-Cr6Y9-hl.js +1 -0
- package/web-ui/build/static/perl-D37oTJip.js +1 -0
- package/web-ui/build/static/pf-BKHaWcGm.js +1 -0
- package/web-ui/build/static/pgsql-ChusgWw2.js +1 -0
- package/web-ui/build/static/php-3Qr4hNV1.js +1 -0
- package/web-ui/build/static/php-CgxeEh4Y.js +1 -0
- package/web-ui/build/static/php-extras-DeLqwT6H.js +1 -0
- package/web-ui/build/static/php-template-DcOJxuIf.js +1 -0
- package/web-ui/build/static/phpdoc-amFph5Ax.js +1 -0
- package/web-ui/build/static/plaintext-mqBcO1hG.js +1 -0
- package/web-ui/build/static/plsql-ioyqfxP7.js +1 -0
- package/web-ui/build/static/pony-nxjy8Qot.js +1 -0
- package/web-ui/build/static/powerquery-Ci_Fxyg8.js +1 -0
- package/web-ui/build/static/powershell-CB_GgRqr.js +1 -0
- package/web-ui/build/static/powershell-au4fYIm7.js +1 -0
- package/web-ui/build/static/processing-Bkd3f-Wz.js +1 -0
- package/web-ui/build/static/processing-PgCPZm30.js +1 -0
- package/web-ui/build/static/profile-C2GBY6C9.js +1 -0
- package/web-ui/build/static/prolog-BRjYwjIO.js +1 -0
- package/web-ui/build/static/prolog-BheGlH8Q.js +1 -0
- package/web-ui/build/static/promql-CtCmTKys.js +1 -0
- package/web-ui/build/static/properties-BpLqVZha.js +1 -0
- package/web-ui/build/static/properties-UQxavHUY.js +1 -0
- package/web-ui/build/static/protobuf-BSuul6Uw.js +1 -0
- package/web-ui/build/static/protobuf-CLRi8VTE.js +1 -0
- package/web-ui/build/static/psl-CJsJilqO.js +1 -0
- package/web-ui/build/static/pug-5BY6sdv1.js +1 -0
- package/web-ui/build/static/puppet-DBg45gHV.js +1 -0
- package/web-ui/build/static/puppet-DPANCbOj.js +1 -0
- package/web-ui/build/static/pure-Cn4p-7Bj.js +1 -0
- package/web-ui/build/static/purebasic-CoXbIzZJ.js +1 -0
- package/web-ui/build/static/purebasic-DZ_eLoUV.js +1 -0
- package/web-ui/build/static/purescript-B98GoUb_.js +1 -0
- package/web-ui/build/static/python-B-Lm1OME.js +1 -0
- package/web-ui/build/static/python-C_ApFGS1.js +1 -0
- package/web-ui/build/static/python-repl-CJW5_RON.js +1 -0
- package/web-ui/build/static/q-BB2BYhxG.js +1 -0
- package/web-ui/build/static/q-DVqo_ScG.js +1 -0
- package/web-ui/build/static/qml-Co-8g096.js +1 -0
- package/web-ui/build/static/qml-Du0WFcoy.js +1 -0
- package/web-ui/build/static/qore-C6XBzy3U.js +1 -0
- package/web-ui/build/static/qsharp-BCMklAuq.js +1 -0
- package/web-ui/build/static/r-B5CGUQwN.js +1 -0
- package/web-ui/build/static/r-Dxhot-za.js +1 -0
- package/web-ui/build/static/racket-C0dCdrKh.js +1 -0
- package/web-ui/build/static/reason-DGJ1fFJs.js +1 -0
- package/web-ui/build/static/reasonml-gt_AvBg7.js +1 -0
- package/web-ui/build/static/regex-B5iNH8MZ.js +1 -0
- package/web-ui/build/static/rego-hfPajYet.js +1 -0
- package/web-ui/build/static/renpy-BkG5aM4I.js +1 -0
- package/web-ui/build/static/rest-C4uwtrF8.js +1 -0
- package/web-ui/build/static/rib-D32ew8Y7.js +1 -0
- package/web-ui/build/static/rip-BIEbWzxe.js +1 -0
- package/web-ui/build/static/roboconf-CMN8BoHf.js +1 -0
- package/web-ui/build/static/roboconf-GVMh3ioj.js +1 -0
- package/web-ui/build/static/robotframework-CUQybJQ9.js +1 -0
- package/web-ui/build/static/routeros-DUEdLmuc.js +1 -0
- package/web-ui/build/static/rsl-BsAePIwQ.js +1 -0
- package/web-ui/build/static/ruby-CZMMjJFw.js +1 -0
- package/web-ui/build/static/ruby-WOVZyoXO.js +1 -0
- package/web-ui/build/static/ruleslanguage-xV-HszUl.js +1 -0
- package/web-ui/build/static/rust-Da9GRxLz.js +1 -0
- package/web-ui/build/static/rust-uCND428m.js +1 -0
- package/web-ui/build/static/sas-BW15NPzf.js +1 -0
- package/web-ui/build/static/sas-DCx9gext.js +1 -0
- package/web-ui/build/static/sass-BMD7eETo.js +1 -0
- package/web-ui/build/static/scala-0wnxLTlF.js +1 -0
- package/web-ui/build/static/scala-D3Hk-q5-.js +1 -0
- package/web-ui/build/static/scheme-Ci9QOUcD.js +1 -0
- package/web-ui/build/static/scheme-CtqjB_HN.js +1 -0
- package/web-ui/build/static/scilab-CnITQd23.js +1 -0
- package/web-ui/build/static/scss-DCceV6xw.js +1 -0
- package/web-ui/build/static/scss-N5EuPQOS.js +1 -0
- package/web-ui/build/static/shell-BegJTton.js +1 -0
- package/web-ui/build/static/shell-session-BHBoosfJ.js +1 -0
- package/web-ui/build/static/smali-CoHePNQf.js +1 -0
- package/web-ui/build/static/smali-D64W1f0Y.js +1 -0
- package/web-ui/build/static/smalltalk-CagI-Ky8.js +1 -0
- package/web-ui/build/static/smalltalk-DHLuWDjp.js +1 -0
- package/web-ui/build/static/smarty-CSS2XBuu.js +1 -0
- package/web-ui/build/static/sml-D8Oyp9xr.js +1 -0
- package/web-ui/build/static/sml-DvC_VDmX.js +1 -0
- package/web-ui/build/static/solidity-DVkeulrL.js +1 -0
- package/web-ui/build/static/solution-file-Bd7qWzoo.js +1 -0
- package/web-ui/build/static/soy-BRSlVWf7.js +1 -0
- package/web-ui/build/static/sparql-DNnCQmqM.js +1 -0
- package/web-ui/build/static/splunk-spl-DXCDUv2Y.js +1 -0
- package/web-ui/build/static/sqf-C_IKzP5b.js +1 -0
- package/web-ui/build/static/sqf-DBqlUGoG.js +1 -0
- package/web-ui/build/static/sql-Dt3ZutCc.js +1 -0
- package/web-ui/build/static/sql-q0UMLqb7.js +1 -0
- package/web-ui/build/static/sql_more-DAuY5p3F.js +1 -0
- package/web-ui/build/static/squirrel-CgQZeaNT.js +1 -0
- package/web-ui/build/static/stan-D5kYsid7.js +1 -0
- package/web-ui/build/static/stan-JSHToKMA.js +1 -0
- package/web-ui/build/static/stata-DRVhVjVb.js +1 -0
- package/web-ui/build/static/step21-C7h5ssgs.js +1 -0
- package/web-ui/build/static/stylus-BXIDNFUe.js +1 -0
- package/web-ui/build/static/stylus-CyMBrStz.js +1 -0
- package/web-ui/build/static/subunit-Lbpuvy4t.js +1 -0
- package/web-ui/build/static/swift-BCxWOc8n.js +1 -0
- package/web-ui/build/static/swift-B_YEL6eF.js +1 -0
- package/web-ui/build/static/systemd-_zWfs8U5.js +1 -0
- package/web-ui/build/static/t4-cs-BCiVX6dp.js +1 -0
- package/web-ui/build/static/t4-templating-CDm61rWh.js +1 -0
- package/web-ui/build/static/t4-vb-OO2oZZrL.js +1 -0
- package/web-ui/build/static/taggerscript-CkXxiITO.js +1 -0
- package/web-ui/build/static/tap-C612JPhJ.js +1 -0
- package/web-ui/build/static/tap-J-zR66jL.js +1 -0
- package/web-ui/build/static/tcl-DIGan5K8.js +1 -0
- package/web-ui/build/static/tcl-SFVWFwbb.js +1 -0
- package/web-ui/build/static/textile-D0WxA5g8.js +1 -0
- package/web-ui/build/static/thrift-jboo4tJl.js +1 -0
- package/web-ui/build/static/toml-DIK32ROb.js +1 -0
- package/web-ui/build/static/tp-Bhs1iGD3.js +1 -0
- package/web-ui/build/static/tremor-4d_juLiN.js +1 -0
- package/web-ui/build/static/tsx-hEN3qQzd.js +1 -0
- package/web-ui/build/static/tt2-WU6EuPNO.js +1 -0
- package/web-ui/build/static/turtle-CUM3xwNI.js +1 -0
- package/web-ui/build/static/twig-B9JwTKv9.js +1 -0
- package/web-ui/build/static/twig-Crv6BtK7.js +1 -0
- package/web-ui/build/static/typescript-BmabW_ur.js +1 -0
- package/web-ui/build/static/typescript-oMKx2dph.js +1 -0
- package/web-ui/build/static/typoscript-X48MNTeK.js +1 -0
- package/web-ui/build/static/unrealscript-qnu9Ogmz.js +1 -0
- package/web-ui/build/static/uorazor-BicTvjGt.js +1 -0
- package/web-ui/build/static/uri-CyRoMB-u.js +1 -0
- package/web-ui/build/static/v-BDM6ZJR7.js +1 -0
- package/web-ui/build/static/vala-BWCf7DTx.js +1 -0
- package/web-ui/build/static/vala-COL5roWV.js +1 -0
- package/web-ui/build/static/vbnet-BHPgkiip.js +1 -0
- package/web-ui/build/static/vbnet-BadWmTKs.js +1 -0
- package/web-ui/build/static/vbscript-BfUpIAaV.js +1 -0
- package/web-ui/build/static/vbscript-html-BBR6zcvV.js +1 -0
- package/web-ui/build/static/velocity-k4gGPuiP.js +1 -0
- package/web-ui/build/static/verilog-BoNroxW8.js +1 -0
- package/web-ui/build/static/verilog-C7cplLIi.js +1 -0
- package/web-ui/build/static/vhdl-BrKkx69g.js +1 -0
- package/web-ui/build/static/vhdl-CWacsAXR.js +1 -0
- package/web-ui/build/static/vim-BcdueaEC.js +1 -0
- package/web-ui/build/static/vim-BwsUolG_.js +1 -0
- package/web-ui/build/static/visual-basic-DTXlX5HN.js +1 -0
- package/web-ui/build/static/warpscript-2w0_2KsB.js +1 -0
- package/web-ui/build/static/wasm-BPaXQO-A.js +1 -0
- package/web-ui/build/static/web-idl-BoCTFQod.js +1 -0
- package/web-ui/build/static/wiki-BkkCi9wm.js +1 -0
- package/web-ui/build/static/wolfram-CvRNTaAX.js +1 -0
- package/web-ui/build/static/wren-Bz8Smtz-.js +1 -0
- package/web-ui/build/static/x86asm-BM83B0N_.js +1 -0
- package/web-ui/build/static/xeora-BjuDukl7.js +1 -0
- package/web-ui/build/static/xl-ByiuKWwm.js +1 -0
- package/web-ui/build/static/xml-Dut2p53G.js +1 -0
- package/web-ui/build/static/xml-doc-CxgwiuaA.js +1 -0
- package/web-ui/build/static/xojo-CBqUB8JI.js +1 -0
- package/web-ui/build/static/xquery-D-agM4jx.js +1 -0
- package/web-ui/build/static/xquery-DL_eetrQ.js +1 -0
- package/web-ui/build/static/yaml-DZ7HVZSe.js +1 -0
- package/web-ui/build/static/yaml-DatJAv7_.js +1 -0
- package/web-ui/build/static/yang-D0nrKE-r.js +1 -0
- package/web-ui/build/static/zephir--M2g15-k.js +1 -0
- package/web-ui/build/static/zig-CK6rUH8E.js +1 -0
- package/web-ui/build/static/1c-BoCdC5pC.js +0 -1
- package/web-ui/build/static/abap-D7A92M1K.js +0 -1
- package/web-ui/build/static/abnf-DIcpJ99N.js +0 -1
- package/web-ui/build/static/abnf-d4I9yABN.js +0 -1
- package/web-ui/build/static/accesslog-D_Ksv5Fi.js +0 -1
- package/web-ui/build/static/actionscript-CMJI1an7.js +0 -1
- package/web-ui/build/static/actionscript-CNcWu4a1.js +0 -1
- package/web-ui/build/static/ada-BIqOBKro.js +0 -1
- package/web-ui/build/static/ada-BaTkJMdz.js +0 -1
- package/web-ui/build/static/agda-DmRdGgvt.js +0 -1
- package/web-ui/build/static/al-g8BvIfOt.js +0 -1
- package/web-ui/build/static/angelscript-BGxc0B7l.js +0 -1
- package/web-ui/build/static/antlr4-Da7ff6-m.js +0 -1
- package/web-ui/build/static/apache-Bibp-dVJ.js +0 -1
- package/web-ui/build/static/apacheconf-VzeL8tYb.js +0 -1
- package/web-ui/build/static/apex-DUaOCea3.js +0 -1
- package/web-ui/build/static/apl-BpwvFE2V.js +0 -1
- package/web-ui/build/static/applescript-5YKSWwV1.js +0 -1
- package/web-ui/build/static/applescript-BHqj5bpe.js +0 -1
- package/web-ui/build/static/aql-B0Wx_3hH.js +0 -1
- package/web-ui/build/static/arcade-CR8KkII1.js +0 -1
- package/web-ui/build/static/arduino-CYx5u85C.js +0 -1
- package/web-ui/build/static/arduino-ClVU2zro.js +0 -1
- package/web-ui/build/static/arff-kutIH4CC.js +0 -1
- package/web-ui/build/static/armasm-DBm1lGrc.js +0 -1
- package/web-ui/build/static/asciidoc-Cl02VMGf.js +0 -1
- package/web-ui/build/static/asciidoc-MMFYRqre.js +0 -1
- package/web-ui/build/static/asm6502-DPVMGaHn.js +0 -1
- package/web-ui/build/static/asmatmel-Dz4vtZ11.js +0 -1
- package/web-ui/build/static/aspectj-BZidGBlr.js +0 -1
- package/web-ui/build/static/aspnet-C2mo9iee.js +0 -1
- package/web-ui/build/static/autohotkey-Bx83oFMW.js +0 -1
- package/web-ui/build/static/autohotkey-DciFl6K5.js +0 -1
- package/web-ui/build/static/autoit-TVKWI5bu.js +0 -1
- package/web-ui/build/static/autoit-oORW7mrd.js +0 -1
- package/web-ui/build/static/avisynth-D_5uOtxP.js +0 -1
- package/web-ui/build/static/avrasm-D22JmbLm.js +0 -1
- package/web-ui/build/static/avro-idl-CtTuANGZ.js +0 -1
- package/web-ui/build/static/awk-Bnez22eR.js +0 -1
- package/web-ui/build/static/axapta-eqcr7C2-.js +0 -1
- package/web-ui/build/static/bash-D3XWHCZZ.js +0 -1
- package/web-ui/build/static/bash-px0MqVxE.js +0 -1
- package/web-ui/build/static/basic-BWOdgKLg.js +0 -1
- package/web-ui/build/static/basic-C7PK4wVg.js +0 -1
- package/web-ui/build/static/batch-CFeuSY9D.js +0 -1
- package/web-ui/build/static/bbcode-CRC0UNOS.js +0 -1
- package/web-ui/build/static/bicep-C18w8d6Z.js +0 -1
- package/web-ui/build/static/birb-DPiF4fwX.js +0 -1
- package/web-ui/build/static/bison-C1RWPaLl.js +0 -1
- package/web-ui/build/static/bnf-BelSXhsr.js +0 -1
- package/web-ui/build/static/bnf-D_m4SZuc.js +0 -1
- package/web-ui/build/static/brainfuck-Ci7P0POq.js +0 -1
- package/web-ui/build/static/brainfuck-DIrW6_96.js +0 -1
- package/web-ui/build/static/brightscript-4XgpA0OQ.js +0 -1
- package/web-ui/build/static/bro-4kAMStb2.js +0 -1
- package/web-ui/build/static/bsl-CleVjH1I.js +0 -1
- package/web-ui/build/static/c-Ct3AAwH6.js +0 -1
- package/web-ui/build/static/c-EiJrAzIQ.js +0 -1
- package/web-ui/build/static/c-like-B361rHmz.js +0 -1
- package/web-ui/build/static/cal-BZ3Pr4JI.js +0 -1
- package/web-ui/build/static/capnproto-LmwOdJJp.js +0 -1
- package/web-ui/build/static/ceylon-CKAfIFzx.js +0 -1
- package/web-ui/build/static/cfscript-Cms4z16U.js +0 -1
- package/web-ui/build/static/chaiscript-DKxRiUyN.js +0 -1
- package/web-ui/build/static/cil-C6rGhwce.js +0 -1
- package/web-ui/build/static/clean-DmpXs6RN.js +0 -1
- package/web-ui/build/static/clojure-DRYxiF9s.js +0 -1
- package/web-ui/build/static/clojure-DTjXEJCq.js +0 -1
- package/web-ui/build/static/clojure-repl-C1qlAUnK.js +0 -1
- package/web-ui/build/static/cmake-DtUokafC.js +0 -1
- package/web-ui/build/static/cmake-_WqF1fG8.js +0 -1
- package/web-ui/build/static/cobol-D2Q0IMuT.js +0 -1
- package/web-ui/build/static/coffeescript-MRThzdTU.js +0 -1
- package/web-ui/build/static/coffeescript-OHOpkJvb.js +0 -1
- package/web-ui/build/static/concurnas-CVGat9IA.js +0 -1
- package/web-ui/build/static/coq-CB_bM4lt.js +0 -1
- package/web-ui/build/static/coq-WNK38Cqz.js +0 -1
- package/web-ui/build/static/cos-CNa5GVxa.js +0 -1
- package/web-ui/build/static/cpp-D-9lHx0_.js +0 -1
- package/web-ui/build/static/cpp-DRvL1yaA.js +0 -1
- package/web-ui/build/static/crmsh-evnPMxnd.js +0 -1
- package/web-ui/build/static/crystal-RGhNrgnC.js +0 -1
- package/web-ui/build/static/crystal-yrBjXjEh.js +0 -1
- package/web-ui/build/static/csharp-Dr7sLtl1.js +0 -1
- package/web-ui/build/static/csharp-zNVQxjuC.js +0 -1
- package/web-ui/build/static/cshtml-CoiK-7Bu.js +0 -1
- package/web-ui/build/static/csp-Bhgq86EB.js +0 -1
- package/web-ui/build/static/csp-C20UcGAL.js +0 -1
- package/web-ui/build/static/css-D1vlrRV2.js +0 -1
- package/web-ui/build/static/css-extras-DVSAYMbv.js +0 -1
- package/web-ui/build/static/csv-BgR9D8jG.js +0 -1
- package/web-ui/build/static/cypher-Dxehyj6Y.js +0 -1
- package/web-ui/build/static/d-B-Se39n2.js +0 -1
- package/web-ui/build/static/d-Cr4d56op.js +0 -1
- package/web-ui/build/static/dart-BBqlOFkR.js +0 -1
- package/web-ui/build/static/dart-GRD7MWem.js +0 -1
- package/web-ui/build/static/dataweave-BK-Tahkw.js +0 -1
- package/web-ui/build/static/dax-pTr9GVoe.js +0 -1
- package/web-ui/build/static/delphi-CbwSNmp4.js +0 -1
- package/web-ui/build/static/dhall-CuFqRXr6.js +0 -1
- package/web-ui/build/static/diff-CK8Fq88e.js +0 -1
- package/web-ui/build/static/diff-CWbUTU-C.js +0 -1
- package/web-ui/build/static/django-DWaEPdP6.js +0 -1
- package/web-ui/build/static/django-TkEFpAOO.js +0 -1
- package/web-ui/build/static/dns-DKpFJlA0.js +0 -1
- package/web-ui/build/static/dns-zone-file-BIsmZEMf.js +0 -1
- package/web-ui/build/static/docker-DUavAYf7.js +0 -1
- package/web-ui/build/static/dockerfile-YnavjTIo.js +0 -1
- package/web-ui/build/static/dos-Dv3Qr-Oo.js +0 -1
- package/web-ui/build/static/dot-BtIPbx7t.js +0 -1
- package/web-ui/build/static/dsconfig-CEgd9-kI.js +0 -1
- package/web-ui/build/static/dts-BztZn8T6.js +0 -1
- package/web-ui/build/static/dust-B-527Hc0.js +0 -1
- package/web-ui/build/static/ebnf-CH_nnNi5.js +0 -1
- package/web-ui/build/static/ebnf-CuBjcj0j.js +0 -1
- package/web-ui/build/static/editorconfig-CA9KaQ0w.js +0 -1
- package/web-ui/build/static/eiffel-DVYJwwQw.js +0 -1
- package/web-ui/build/static/ejs-C2LKgDYE.js +0 -1
- package/web-ui/build/static/elixir-DVXGkbnw.js +0 -1
- package/web-ui/build/static/elixir-meJ_qqx4.js +0 -1
- package/web-ui/build/static/elm-C5sYS5Cb.js +0 -1
- package/web-ui/build/static/elm-Dj443pWY.js +0 -1
- package/web-ui/build/static/erb-CAj5yksQ.js +0 -1
- package/web-ui/build/static/erb-CcUB2tMd.js +0 -1
- package/web-ui/build/static/erlang-JusKooAX.js +0 -1
- package/web-ui/build/static/erlang-repl-wYgxDX5h.js +0 -1
- package/web-ui/build/static/erlang-sn-PsrSf.js +0 -1
- package/web-ui/build/static/etlua-ChDwUxz6.js +0 -1
- package/web-ui/build/static/excel-BJux1m2h.js +0 -1
- package/web-ui/build/static/excel-formula-i5ByFxAu.js +0 -1
- package/web-ui/build/static/factor-CTutAp6r.js +0 -1
- package/web-ui/build/static/false-DQz_zYVV.js +0 -1
- package/web-ui/build/static/firestore-security-rules-DRGBNXh2.js +0 -1
- package/web-ui/build/static/fix-DeSUhixI.js +0 -1
- package/web-ui/build/static/flix-BKTJVua_.js +0 -1
- package/web-ui/build/static/flow-BpcZsNuo.js +0 -1
- package/web-ui/build/static/fortran-BZIKfBPW.js +0 -1
- package/web-ui/build/static/fortran-BdezWEh5.js +0 -1
- package/web-ui/build/static/fsharp-1Gpt8wZo.js +0 -1
- package/web-ui/build/static/fsharp-CMyiqXUW.js +0 -1
- package/web-ui/build/static/ftl-D9bBJMhV.js +0 -1
- package/web-ui/build/static/gams-DL57wTHN.js +0 -1
- package/web-ui/build/static/gap-DN4Uo9cF.js +0 -1
- package/web-ui/build/static/gauss-DTa1H0QR.js +0 -1
- package/web-ui/build/static/gcode-U5GhqE37.js +0 -1
- package/web-ui/build/static/gcode-s-E37fb4.js +0 -1
- package/web-ui/build/static/gdscript-DkjgGcDv.js +0 -1
- package/web-ui/build/static/gedcom-BbjSSId3.js +0 -1
- package/web-ui/build/static/gherkin-BwIzGx7J.js +0 -1
- package/web-ui/build/static/gherkin-C97W_9I9.js +0 -1
- package/web-ui/build/static/git-DO8dnOip.js +0 -1
- package/web-ui/build/static/glsl-B_4UD4-O.js +0 -1
- package/web-ui/build/static/glsl-CGSjLy2x.js +0 -1
- package/web-ui/build/static/gml-BiITg8HI.js +0 -1
- package/web-ui/build/static/gml-DInGU66p.js +0 -1
- package/web-ui/build/static/gn--m2IH4i3.js +0 -1
- package/web-ui/build/static/go-DOK7GAd-.js +0 -1
- package/web-ui/build/static/go-bof0B9jK.js +0 -1
- package/web-ui/build/static/go-module-CPIVqmnL.js +0 -1
- package/web-ui/build/static/golo-jgy07E43.js +0 -1
- package/web-ui/build/static/gradle-BISOF0nH.js +0 -1
- package/web-ui/build/static/graphql-FqlbDLTL.js +0 -1
- package/web-ui/build/static/groovy-BM0ZyW4a.js +0 -1
- package/web-ui/build/static/groovy-oUdbfbZY.js +0 -1
- package/web-ui/build/static/haml-C8Qg-VO5.js +0 -1
- package/web-ui/build/static/haml-Dse28pB_.js +0 -1
- package/web-ui/build/static/handlebars-CWT7WazY.js +0 -1
- package/web-ui/build/static/handlebars-Ow3joqOm.js +0 -1
- package/web-ui/build/static/haskell-BfraeRhd.js +0 -1
- package/web-ui/build/static/haskell-EhcU7sbn.js +0 -1
- package/web-ui/build/static/haxe-B8tUoExu.js +0 -1
- package/web-ui/build/static/haxe-D9WQHhTh.js +0 -1
- package/web-ui/build/static/hcl-CG3GCouf.js +0 -1
- package/web-ui/build/static/hlsl-CSWRMQ3m.js +0 -1
- package/web-ui/build/static/hoon-Cj0JdbFY.js +0 -1
- package/web-ui/build/static/hpkp-CmjdXbgl.js +0 -1
- package/web-ui/build/static/hsp-VaFZ7Rlv.js +0 -1
- package/web-ui/build/static/hsts-CkJ6UPzY.js +0 -1
- package/web-ui/build/static/htmlbars-pfHjYqd2.js +0 -1
- package/web-ui/build/static/http-2LA-qivJ.js +0 -1
- package/web-ui/build/static/http-CQ_5JSsj.js +0 -1
- package/web-ui/build/static/hy-C-Dll2MQ.js +0 -1
- package/web-ui/build/static/ichigojam-DecRewwq.js +0 -1
- package/web-ui/build/static/icon-CdnU9zPA.js +0 -1
- package/web-ui/build/static/icu-message-format-CUQtjk6Q.js +0 -1
- package/web-ui/build/static/idris-CRMftLq6.js +0 -1
- package/web-ui/build/static/iecst-CXhHqz1P.js +0 -1
- package/web-ui/build/static/ignore-_emqIx7v.js +0 -1
- package/web-ui/build/static/index-BBHrMvg7.js +0 -1216
- package/web-ui/build/static/index-ChkZR_aE.js +0 -13
- package/web-ui/build/static/index-DU4GNSOf.js +0 -1
- package/web-ui/build/static/index-_z8JjNrI.css +0 -1
- package/web-ui/build/static/inform7-CbqlFoFE.js +0 -1
- package/web-ui/build/static/inform7-TxZViMJ9.js +0 -1
- package/web-ui/build/static/ini-D1sHtm5e.js +0 -1
- package/web-ui/build/static/ini-DnqB7pfX.js +0 -1
- package/web-ui/build/static/io-MnQK1mM-.js +0 -1
- package/web-ui/build/static/irpf90-BRaAenqx.js +0 -1
- package/web-ui/build/static/isbl-kubGT4rM.js +0 -1
- package/web-ui/build/static/j-BIz9wT9q.js +0 -1
- package/web-ui/build/static/java-CbQmsHSK.js +0 -1
- package/web-ui/build/static/java-v1B9fNL2.js +0 -1
- package/web-ui/build/static/javadoc-TB1OtWS7.js +0 -1
- package/web-ui/build/static/javadoclike-BBQPwDAU.js +0 -1
- package/web-ui/build/static/javascript-DzNVL5l_.js +0 -1
- package/web-ui/build/static/javastacktrace-BduOgG1e.js +0 -1
- package/web-ui/build/static/jboss-cli-BcqzI366.js +0 -1
- package/web-ui/build/static/jexl-Boyapidr.js +0 -1
- package/web-ui/build/static/jolie-hEbkNpsb.js +0 -1
- package/web-ui/build/static/jq-ZyEE6oGU.js +0 -1
- package/web-ui/build/static/js-extras-CXOzvlL7.js +0 -1
- package/web-ui/build/static/js-templates-CkHsm5px.js +0 -1
- package/web-ui/build/static/jsdoc-Uk3hj8z2.js +0 -1
- package/web-ui/build/static/json-BFi9igjd.js +0 -1
- package/web-ui/build/static/json-LI9wtNaG.js +0 -1
- package/web-ui/build/static/json5-PwjNByuN.js +0 -1
- package/web-ui/build/static/jsonp-DpfGuNSW.js +0 -1
- package/web-ui/build/static/jsstacktrace-DhOP2AhS.js +0 -1
- package/web-ui/build/static/jsx-DmWoDk8F.js +0 -1
- package/web-ui/build/static/julia-DBC5h81N.js +0 -1
- package/web-ui/build/static/julia-Dh9sV3LX.js +0 -1
- package/web-ui/build/static/julia-repl-BYyDp1f4.js +0 -1
- package/web-ui/build/static/keepalived-BTxjrZMV.js +0 -1
- package/web-ui/build/static/keyman-IYiyCDCU.js +0 -1
- package/web-ui/build/static/kotlin-C0PBuzvy.js +0 -1
- package/web-ui/build/static/kotlin-LWYZUK_T.js +0 -1
- package/web-ui/build/static/kumir-CQIbnv9I.js +0 -1
- package/web-ui/build/static/kusto-DA7pQ-Rb.js +0 -1
- package/web-ui/build/static/lasso-CrHySbnC.js +0 -1
- package/web-ui/build/static/latex-CLSOFXG4.js +0 -1
- package/web-ui/build/static/latex-DYknD4Dx.js +0 -1
- package/web-ui/build/static/latte-4QvZcKVw.js +0 -1
- package/web-ui/build/static/ldif-Dr96BfRx.js +0 -1
- package/web-ui/build/static/leaf-C9qL2Qde.js +0 -1
- package/web-ui/build/static/less-DpoID9ZJ.js +0 -1
- package/web-ui/build/static/less-wO8QO0XW.js +0 -1
- package/web-ui/build/static/lilypond-CNp4Kb1P.js +0 -1
- package/web-ui/build/static/liquid-DLULQdgV.js +0 -1
- package/web-ui/build/static/lisp-CrVo-Llt.js +0 -1
- package/web-ui/build/static/lisp-QIAoXzmW.js +0 -1
- package/web-ui/build/static/livecodeserver-DrehOgbf.js +0 -1
- package/web-ui/build/static/livescript-Cm2Yp34x.js +0 -1
- package/web-ui/build/static/livescript-mVYzlrko.js +0 -1
- package/web-ui/build/static/llvm-D6KsQJjh.js +0 -1
- package/web-ui/build/static/llvm-DhIp1o-1.js +0 -1
- package/web-ui/build/static/log-Sj3ocpgB.js +0 -1
- package/web-ui/build/static/lolcode-BSeGnWYG.js +0 -1
- package/web-ui/build/static/lsl-DwgUIp0U.js +0 -1
- package/web-ui/build/static/lua-B7Ot0Oou.js +0 -1
- package/web-ui/build/static/lua-zydwn5-S.js +0 -1
- package/web-ui/build/static/magma-Dgfy2Qny.js +0 -1
- package/web-ui/build/static/makefile-CSjtzdcw.js +0 -1
- package/web-ui/build/static/makefile-DrnEneus.js +0 -1
- package/web-ui/build/static/markdown-D9Ke3tYA.js +0 -1
- package/web-ui/build/static/markdown-DmwKuI2Y.js +0 -1
- package/web-ui/build/static/markup-templating-CikqfHT9.js +0 -1
- package/web-ui/build/static/mathematica-OC0imzI5.js +0 -1
- package/web-ui/build/static/matlab-BlPcqzRw.js +0 -1
- package/web-ui/build/static/matlab-C1iteCkE.js +0 -1
- package/web-ui/build/static/maxima-DecbOh0Y.js +0 -1
- package/web-ui/build/static/maxscript-80cPuIOA.js +0 -1
- package/web-ui/build/static/mel-NI7ysGX2.js +0 -1
- package/web-ui/build/static/mel-r03p1eJo.js +0 -1
- package/web-ui/build/static/mercury-BdNZw6ZU.js +0 -1
- package/web-ui/build/static/mermaid-C1LB7zMJ.js +0 -1
- package/web-ui/build/static/mipsasm-BnZ0cdht.js +0 -1
- package/web-ui/build/static/mizar-BGPNX3WQ.js +0 -1
- package/web-ui/build/static/mizar-CswPcmcG.js +0 -1
- package/web-ui/build/static/mojolicious-rRtgy8Or.js +0 -1
- package/web-ui/build/static/mongodb-CJU0oeix.js +0 -1
- package/web-ui/build/static/monkey-Bj0HaV5-.js +0 -1
- package/web-ui/build/static/monkey-JRYuMIYc.js +0 -1
- package/web-ui/build/static/moonscript-i7e8bkxZ.js +0 -1
- package/web-ui/build/static/moonscript-ldoM156V.js +0 -1
- package/web-ui/build/static/n1ql-C0xs8qWA.js +0 -1
- package/web-ui/build/static/n1ql-DlC-GlVq.js +0 -1
- package/web-ui/build/static/n4js-mIwtIanO.js +0 -1
- package/web-ui/build/static/nand2tetris-hdl-mfHIYPZD.js +0 -1
- package/web-ui/build/static/naniscript-DiDayxx1.js +0 -1
- package/web-ui/build/static/nasm-7uf2nfNC.js +0 -1
- package/web-ui/build/static/neon-BKgOgIAL.js +0 -1
- package/web-ui/build/static/nevod-BlujoQ5k.js +0 -1
- package/web-ui/build/static/nginx-Bb57ubp_.js +0 -1
- package/web-ui/build/static/nginx-DmLU0URp.js +0 -1
- package/web-ui/build/static/nim-CmnPRTHF.js +0 -1
- package/web-ui/build/static/nim-DOReB32c.js +0 -1
- package/web-ui/build/static/nix-BDMn1sgi.js +0 -1
- package/web-ui/build/static/nix-LTHuFEfQ.js +0 -1
- package/web-ui/build/static/node-repl-dxwu8SWp.js +0 -1
- package/web-ui/build/static/nsis-CKD0KqBT.js +0 -1
- package/web-ui/build/static/nsis-IlSwBUak.js +0 -1
- package/web-ui/build/static/objectivec-D4Lo30HV.js +0 -1
- package/web-ui/build/static/objectivec-zmGGqvoM.js +0 -1
- package/web-ui/build/static/ocaml-2uzfqAr8.js +0 -1
- package/web-ui/build/static/ocaml-wF6lV9H4.js +0 -1
- package/web-ui/build/static/opencl-B82Xjnw5.js +0 -1
- package/web-ui/build/static/openqasm-VzVaHpAP.js +0 -1
- package/web-ui/build/static/openscad-B-qK1VfW.js +0 -1
- package/web-ui/build/static/oxygene-BNTVgbsA.js +0 -1
- package/web-ui/build/static/oz-5ZfXBXQY.js +0 -1
- package/web-ui/build/static/parigp-S8JhoJoz.js +0 -1
- package/web-ui/build/static/parser-BZPtbLcv.js +0 -1
- package/web-ui/build/static/parser3-BZRLDHuv.js +0 -1
- package/web-ui/build/static/pascal-GKzqT2Ku.js +0 -1
- package/web-ui/build/static/pascaligo-DnbFz_mr.js +0 -1
- package/web-ui/build/static/pcaxis-DiRsos26.js +0 -1
- package/web-ui/build/static/peoplecode-CMDLbqGB.js +0 -1
- package/web-ui/build/static/perl-BOnBAciC.js +0 -1
- package/web-ui/build/static/perl-fMVLgVTb.js +0 -1
- package/web-ui/build/static/pf-z6xsHHPS.js +0 -1
- package/web-ui/build/static/pgsql-5jHAyGJf.js +0 -1
- package/web-ui/build/static/php-CbG6Jq36.js +0 -1
- package/web-ui/build/static/php-D9yyh70o.js +0 -1
- package/web-ui/build/static/php-extras-CQKSwnMo.js +0 -1
- package/web-ui/build/static/php-template-Ch4UQhUx.js +0 -1
- package/web-ui/build/static/phpdoc-Be7TYcGQ.js +0 -1
- package/web-ui/build/static/plaintext-BsYjBqDy.js +0 -1
- package/web-ui/build/static/plsql-Dc4ePipN.js +0 -1
- package/web-ui/build/static/pony-Cen7DtWb.js +0 -1
- package/web-ui/build/static/powerquery-BIOJ1eUE.js +0 -1
- package/web-ui/build/static/powershell-CbEjJpj7.js +0 -1
- package/web-ui/build/static/powershell-DlceT0ds.js +0 -1
- package/web-ui/build/static/processing-C9GaKPU-.js +0 -1
- package/web-ui/build/static/processing-CTPA3QIV.js +0 -1
- package/web-ui/build/static/profile-CHjz016L.js +0 -1
- package/web-ui/build/static/prolog-BK0g5F4c.js +0 -1
- package/web-ui/build/static/prolog-DrrwUODp.js +0 -1
- package/web-ui/build/static/promql-DftRCUlR.js +0 -1
- package/web-ui/build/static/properties-B122hwLT.js +0 -1
- package/web-ui/build/static/properties-C0m3XIaN.js +0 -1
- package/web-ui/build/static/protobuf-CanIoKel.js +0 -1
- package/web-ui/build/static/protobuf-WvDgzNtD.js +0 -1
- package/web-ui/build/static/psl-JsKwhg_r.js +0 -1
- package/web-ui/build/static/pug-DoQaiAyU.js +0 -1
- package/web-ui/build/static/puppet-CoRftQQB.js +0 -1
- package/web-ui/build/static/puppet-DHgjsvQ8.js +0 -1
- package/web-ui/build/static/pure-BgZIQeOr.js +0 -1
- package/web-ui/build/static/purebasic-BRYfIFBb.js +0 -1
- package/web-ui/build/static/purebasic-DxXSa8gN.js +0 -1
- package/web-ui/build/static/purescript-ChvJvUnk.js +0 -1
- package/web-ui/build/static/python-DqhW0V3z.js +0 -1
- package/web-ui/build/static/python-Dz2FyIQx.js +0 -1
- package/web-ui/build/static/python-repl-Cl3mEb2H.js +0 -1
- package/web-ui/build/static/q-Bg4mQWXp.js +0 -1
- package/web-ui/build/static/q-DwaQK_1p.js +0 -1
- package/web-ui/build/static/qml-D1-fdJvp.js +0 -1
- package/web-ui/build/static/qml-DFsoiY0T.js +0 -1
- package/web-ui/build/static/qore-DdEtFSV5.js +0 -1
- package/web-ui/build/static/qsharp-B_A0OUBX.js +0 -1
- package/web-ui/build/static/r-C3M2HrKx.js +0 -1
- package/web-ui/build/static/r-_EUAt74Q.js +0 -1
- package/web-ui/build/static/racket-B3uAs3VE.js +0 -1
- package/web-ui/build/static/reason-CyAzPvNW.js +0 -1
- package/web-ui/build/static/reasonml-iEzx6ejF.js +0 -1
- package/web-ui/build/static/regex-suWqSnRa.js +0 -1
- package/web-ui/build/static/rego-QeDW60Lx.js +0 -1
- package/web-ui/build/static/renpy-03fEqIYK.js +0 -1
- package/web-ui/build/static/rest-BRJIE-UZ.js +0 -1
- package/web-ui/build/static/rib-DOI_C8C9.js +0 -1
- package/web-ui/build/static/rip-BaEBdknp.js +0 -1
- package/web-ui/build/static/roboconf-DC8IQe4Z.js +0 -1
- package/web-ui/build/static/roboconf-jTu2wKoD.js +0 -1
- package/web-ui/build/static/robotframework-BFp2sQG2.js +0 -1
- package/web-ui/build/static/routeros-Br-GCWs7.js +0 -1
- package/web-ui/build/static/rsl-BpWeUJqw.js +0 -1
- package/web-ui/build/static/ruby-C3nnVoGq.js +0 -1
- package/web-ui/build/static/ruby-DD90V5PL.js +0 -1
- package/web-ui/build/static/ruleslanguage-BflyDdqj.js +0 -1
- package/web-ui/build/static/rust-DtiFFJtC.js +0 -1
- package/web-ui/build/static/rust-uJHZCfXQ.js +0 -1
- package/web-ui/build/static/sas-DUr8rIBf.js +0 -1
- package/web-ui/build/static/sas-POH3vAEy.js +0 -1
- package/web-ui/build/static/sass-D1oLbZQ0.js +0 -1
- package/web-ui/build/static/scala-CDtrRn0l.js +0 -1
- package/web-ui/build/static/scala-VCIKIldH.js +0 -1
- package/web-ui/build/static/scheme-CAWHx2Oj.js +0 -1
- package/web-ui/build/static/scheme-DzKv24tn.js +0 -1
- package/web-ui/build/static/scilab-DuxpEvzV.js +0 -1
- package/web-ui/build/static/scss-BKd4Y-UF.js +0 -1
- package/web-ui/build/static/scss-BpqUKxry.js +0 -1
- package/web-ui/build/static/shell-session-CglnRr2l.js +0 -1
- package/web-ui/build/static/shell-u-Y3PKLQ.js +0 -1
- package/web-ui/build/static/smali-D308KWif.js +0 -1
- package/web-ui/build/static/smali-DYT-jHPu.js +0 -1
- package/web-ui/build/static/smalltalk-BLYA-Ag1.js +0 -1
- package/web-ui/build/static/smalltalk-BdMVmgN0.js +0 -1
- package/web-ui/build/static/smarty-DUYgBrje.js +0 -1
- package/web-ui/build/static/sml-EEhIaAvM.js +0 -1
- package/web-ui/build/static/sml-bQ27koeV.js +0 -1
- package/web-ui/build/static/solidity-U7x7-dFr.js +0 -1
- package/web-ui/build/static/solution-file-Cr03jaqW.js +0 -1
- package/web-ui/build/static/soy-lnGOhaRM.js +0 -1
- package/web-ui/build/static/sparql-BRm44B1P.js +0 -1
- package/web-ui/build/static/splunk-spl-DdrdBOQJ.js +0 -1
- package/web-ui/build/static/sqf-CDtvZjid.js +0 -1
- package/web-ui/build/static/sqf-wr3PtKhW.js +0 -1
- package/web-ui/build/static/sql-B1-8AkNe.js +0 -1
- package/web-ui/build/static/sql-zWEK1lPB.js +0 -1
- package/web-ui/build/static/sql_more-Ck0DuSs3.js +0 -1
- package/web-ui/build/static/squirrel-CfQEIe5h.js +0 -1
- package/web-ui/build/static/stan-BM1Wilpj.js +0 -1
- package/web-ui/build/static/stan-DFPCSU1l.js +0 -1
- package/web-ui/build/static/stata-BJ-qKfEg.js +0 -1
- package/web-ui/build/static/step21-fPKcuR3s.js +0 -1
- package/web-ui/build/static/stylus-BhqK2C03.js +0 -1
- package/web-ui/build/static/stylus-BxloRYSO.js +0 -1
- package/web-ui/build/static/subunit-CueM7bOY.js +0 -1
- package/web-ui/build/static/swift-CPgZZ0ja.js +0 -1
- package/web-ui/build/static/swift-CsEMsJ7g.js +0 -1
- package/web-ui/build/static/systemd-B1Wwkby4.js +0 -1
- package/web-ui/build/static/t4-cs-CL3Ca0dW.js +0 -1
- package/web-ui/build/static/t4-templating-BoV5iKxA.js +0 -1
- package/web-ui/build/static/t4-vb-BKXXzk5n.js +0 -1
- package/web-ui/build/static/taggerscript-aJQMdfVb.js +0 -1
- package/web-ui/build/static/tap-BBfQFbbW.js +0 -1
- package/web-ui/build/static/tap-CmCrAtSH.js +0 -1
- package/web-ui/build/static/tcl-B8xfoxf8.js +0 -1
- package/web-ui/build/static/tcl-CPzoU-PX.js +0 -1
- package/web-ui/build/static/textile-B99mXtsV.js +0 -1
- package/web-ui/build/static/thrift-Cd40Ii7J.js +0 -1
- package/web-ui/build/static/toml-DV5wxyQS.js +0 -1
- package/web-ui/build/static/tp-o2VorAT6.js +0 -1
- package/web-ui/build/static/tremor-Cs0K_i4_.js +0 -1
- package/web-ui/build/static/tsx-KG-mQur8.js +0 -1
- package/web-ui/build/static/tt2-M3GHOvjN.js +0 -1
- package/web-ui/build/static/turtle-D6o0UODZ.js +0 -1
- package/web-ui/build/static/twig-D7LOxPkH.js +0 -1
- package/web-ui/build/static/twig-SHSTj-jA.js +0 -1
- package/web-ui/build/static/typescript-BeIk_BLV.js +0 -1
- package/web-ui/build/static/typescript-Btz-ypJW.js +0 -1
- package/web-ui/build/static/typoscript-7jDBTKMM.js +0 -1
- package/web-ui/build/static/unrealscript-f2f2MAJa.js +0 -1
- package/web-ui/build/static/uorazor-c5VZAS6K.js +0 -1
- package/web-ui/build/static/uri-DY2cDkq-.js +0 -1
- package/web-ui/build/static/v-6ffK7TKq.js +0 -1
- package/web-ui/build/static/vala-BgOkjEeg.js +0 -1
- package/web-ui/build/static/vala-BvuDZGU_.js +0 -1
- package/web-ui/build/static/vbnet-Bdh9clH3.js +0 -1
- package/web-ui/build/static/vbnet-CDpcSndL.js +0 -1
- package/web-ui/build/static/vbscript-dH3gn1bx.js +0 -1
- package/web-ui/build/static/vbscript-html-a_tIfb0-.js +0 -1
- package/web-ui/build/static/velocity-DGDKyukB.js +0 -1
- package/web-ui/build/static/verilog-CtJaE20M.js +0 -1
- package/web-ui/build/static/verilog-CvdiugJe.js +0 -1
- package/web-ui/build/static/vhdl-CN1nxPYJ.js +0 -1
- package/web-ui/build/static/vhdl-JtjHb_oM.js +0 -1
- package/web-ui/build/static/vim-DBRKYGcU.js +0 -1
- package/web-ui/build/static/vim-DQiU261H.js +0 -1
- package/web-ui/build/static/visual-basic-D_daebxW.js +0 -1
- package/web-ui/build/static/warpscript-B4PIoyZp.js +0 -1
- package/web-ui/build/static/wasm-D6_O5K2p.js +0 -1
- package/web-ui/build/static/web-idl-D7BDrII0.js +0 -1
- package/web-ui/build/static/wiki-D-bqO098.js +0 -1
- package/web-ui/build/static/wolfram-NnogXigM.js +0 -1
- package/web-ui/build/static/wren-DwgJaCDU.js +0 -1
- package/web-ui/build/static/x86asm-B9-C3MH5.js +0 -1
- package/web-ui/build/static/xeora-wudvnBkY.js +0 -1
- package/web-ui/build/static/xl-BeBZDETk.js +0 -1
- package/web-ui/build/static/xml-DgNmhWin.js +0 -1
- package/web-ui/build/static/xml-doc-B2RShOT5.js +0 -1
- package/web-ui/build/static/xojo-C0HF7CVl.js +0 -1
- package/web-ui/build/static/xquery-CMss7jIw.js +0 -1
- package/web-ui/build/static/xquery-Dy1YImWg.js +0 -1
- package/web-ui/build/static/yaml--7oDAAKr.js +0 -1
- package/web-ui/build/static/yaml-1-HThDJz.js +0 -1
- package/web-ui/build/static/yang-CxleyLxS.js +0 -1
- package/web-ui/build/static/zephir-B7LMkND2.js +0 -1
- package/web-ui/build/static/zig-DST87v3k.js +0 -1
package/src/tools/memoryTool.js
CHANGED
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
|
|
20
20
|
import { BaseTool } from './baseTool.js';
|
|
21
21
|
import { getMemoryService, PLAN_TITLE_PREFIX } from '../services/memoryService.js';
|
|
22
|
+
import { MemoryIndexer } from '../services/embeddings/indexers/memoryIndexer.js';
|
|
23
|
+
import { ReminisceIndexer } from '../services/embeddings/indexers/reminisceIndexer.js';
|
|
22
24
|
|
|
23
25
|
/**
|
|
24
26
|
* True if the given memory title is a "working plan" — those are
|
|
@@ -402,7 +404,7 @@ BEST PRACTICES:
|
|
|
402
404
|
*/
|
|
403
405
|
customValidateParameters(params) {
|
|
404
406
|
const errors = [];
|
|
405
|
-
const validActions = ['add', 'update', 'append', 'delete', 'list', 'read', 'search', 'stats', 'reminisce'];
|
|
407
|
+
const validActions = ['add', 'update', 'append', 'delete', 'list', 'read', 'search', 'semantic-search', 'backfill-embeddings', 'reminisce-backfill-embeddings', 'forget-stale', 'publish-to-team', 'search-team', 'unpublish-from-team', 'stats', 'reminisce'];
|
|
406
408
|
|
|
407
409
|
// Normalize to the canonical actions[] shape and validate every action.
|
|
408
410
|
// Accepts both the canonical plural `{actions: [{type, ...}]}` and the
|
|
@@ -450,6 +452,33 @@ BEST PRACTICES:
|
|
|
450
452
|
case 'search':
|
|
451
453
|
if (!a.query) errors.push(`${tag}query is required for search`);
|
|
452
454
|
break;
|
|
455
|
+
case 'semantic-search':
|
|
456
|
+
if (!a.query) errors.push(`${tag}query is required for semantic-search`);
|
|
457
|
+
if (a.topK != null && (!Number.isInteger(a.topK) || a.topK <= 0)) {
|
|
458
|
+
errors.push(`${tag}topK must be a positive integer when provided`);
|
|
459
|
+
}
|
|
460
|
+
break;
|
|
461
|
+
case 'forget-stale':
|
|
462
|
+
if (a.ageDays != null && (!Number.isFinite(a.ageDays) || a.ageDays <= 0)) {
|
|
463
|
+
errors.push(`${tag}ageDays must be a positive number when provided`);
|
|
464
|
+
}
|
|
465
|
+
break;
|
|
466
|
+
case 'publish-to-team':
|
|
467
|
+
if (!a.id) errors.push(`${tag}id is required for publish-to-team (the memory id to publish)`);
|
|
468
|
+
if (!a.teamId) errors.push(`${tag}teamId is required for publish-to-team`);
|
|
469
|
+
break;
|
|
470
|
+
case 'search-team':
|
|
471
|
+
if (!a.teamId) errors.push(`${tag}teamId is required for search-team`);
|
|
472
|
+
if (!a.query) errors.push(`${tag}query is required for search-team`);
|
|
473
|
+
if (a.topK != null && (!Number.isInteger(a.topK) || a.topK <= 0)) {
|
|
474
|
+
errors.push(`${tag}topK must be a positive integer when provided`);
|
|
475
|
+
}
|
|
476
|
+
break;
|
|
477
|
+
case 'unpublish-from-team':
|
|
478
|
+
if (!a.id) errors.push(`${tag}id is required for unpublish-from-team`);
|
|
479
|
+
if (!a.teamId) errors.push(`${tag}teamId is required for unpublish-from-team`);
|
|
480
|
+
break;
|
|
481
|
+
// backfill-embeddings has no required params (re-indexes everything).
|
|
453
482
|
}
|
|
454
483
|
// Length limits (per-action).
|
|
455
484
|
if (a.title && a.title.length > 200) errors.push(`${tag}title cannot exceed 200 characters`);
|
|
@@ -565,9 +594,16 @@ BEST PRACTICES:
|
|
|
565
594
|
case 'delete': return await this._executeDelete(memoryService, agentId, legacyParams);
|
|
566
595
|
case 'list': return await this._executeList(memoryService, agentId, legacyParams);
|
|
567
596
|
case 'read': return await this._executeRead(memoryService, agentId, legacyParams);
|
|
568
|
-
case 'search':
|
|
569
|
-
case '
|
|
570
|
-
case '
|
|
597
|
+
case 'search': return await this._executeSearch(memoryService, agentId, legacyParams);
|
|
598
|
+
case 'semantic-search': return await this._executeSemanticSearch(memoryService, agentId, legacyParams);
|
|
599
|
+
case 'backfill-embeddings': return await this._executeBackfillEmbeddings(memoryService, agentId);
|
|
600
|
+
case 'reminisce-backfill-embeddings': return await this._executeReminisceBackfill(agentId, context);
|
|
601
|
+
case 'forget-stale': return await this._executeForgetStale(memoryService, agentId, legacyParams);
|
|
602
|
+
case 'publish-to-team': return await this._executePublishToTeam(memoryService, agentId, legacyParams);
|
|
603
|
+
case 'search-team': return await this._executeSearchTeam(agentId, legacyParams);
|
|
604
|
+
case 'unpublish-from-team': return await this._executeUnpublishFromTeam(agentId, legacyParams);
|
|
605
|
+
case 'stats': return await this._executeStats(memoryService, agentId);
|
|
606
|
+
case 'reminisce': return await this._executeReminisce(agentId, legacyParams, context);
|
|
571
607
|
default:
|
|
572
608
|
throw new Error(`Unknown memory action: ${type}`);
|
|
573
609
|
}
|
|
@@ -592,6 +628,11 @@ BEST PRACTICES:
|
|
|
592
628
|
expiration: params.expiration
|
|
593
629
|
});
|
|
594
630
|
|
|
631
|
+
// Fire-and-forget index update. Best-effort by design — the indexer's
|
|
632
|
+
// public surface swallows errors and returns a result, but we don't
|
|
633
|
+
// even await it so memory writes never wait on the embedding service.
|
|
634
|
+
this._asyncIndexMemory(agentId, memory);
|
|
635
|
+
|
|
595
636
|
return {
|
|
596
637
|
success: true,
|
|
597
638
|
action: 'add',
|
|
@@ -630,6 +671,9 @@ BEST PRACTICES:
|
|
|
630
671
|
};
|
|
631
672
|
}
|
|
632
673
|
|
|
674
|
+
// Re-index after content change. Fire-and-forget.
|
|
675
|
+
this._asyncIndexMemory(agentId, memory);
|
|
676
|
+
|
|
633
677
|
return {
|
|
634
678
|
success: true,
|
|
635
679
|
action: 'update',
|
|
@@ -667,6 +711,9 @@ BEST PRACTICES:
|
|
|
667
711
|
};
|
|
668
712
|
}
|
|
669
713
|
|
|
714
|
+
// Re-index after content grew. Fire-and-forget.
|
|
715
|
+
this._asyncIndexMemory(agentId, memory);
|
|
716
|
+
|
|
670
717
|
return {
|
|
671
718
|
success: true,
|
|
672
719
|
action: 'append',
|
|
@@ -696,6 +743,9 @@ BEST PRACTICES:
|
|
|
696
743
|
};
|
|
697
744
|
}
|
|
698
745
|
|
|
746
|
+
// Drop the corresponding vector from the index. Fire-and-forget.
|
|
747
|
+
this._asyncRemoveFromIndex(agentId, params.id);
|
|
748
|
+
|
|
699
749
|
return {
|
|
700
750
|
success: true,
|
|
701
751
|
action: 'delete',
|
|
@@ -795,6 +845,577 @@ BEST PRACTICES:
|
|
|
795
845
|
};
|
|
796
846
|
}
|
|
797
847
|
|
|
848
|
+
/**
|
|
849
|
+
* Execute SEMANTIC-SEARCH action — embeddings-backed retrieval over
|
|
850
|
+
* the agent's memory. Falls back to substring search when embeddings
|
|
851
|
+
* are disabled, so the action is always safe to call regardless of
|
|
852
|
+
* configuration. Hybrid mode (semantic + substring via RRF) is the
|
|
853
|
+
* default — preserves exact-match precision while adding paraphrase
|
|
854
|
+
* recall.
|
|
855
|
+
*
|
|
856
|
+
* Params: { query, topK?=10, hybrid?=true }
|
|
857
|
+
*/
|
|
858
|
+
async _executeSemanticSearch(memoryService, agentId, params) {
|
|
859
|
+
const topK = Number.isInteger(params.topK) && params.topK > 0 ? params.topK : 10;
|
|
860
|
+
const hybrid = params.hybrid !== false;
|
|
861
|
+
|
|
862
|
+
const indexer = this._getMemoryIndexer();
|
|
863
|
+
if (!indexer || !indexer.isEnabled) {
|
|
864
|
+
// Graceful fallback: when the user hasn't enabled embeddings yet,
|
|
865
|
+
// return substring results so the action is still useful (and the
|
|
866
|
+
// agent doesn't need to branch on config).
|
|
867
|
+
const results = await memoryService.searchMemories(agentId, params.query);
|
|
868
|
+
return {
|
|
869
|
+
success: true,
|
|
870
|
+
action: 'semantic-search',
|
|
871
|
+
mode: 'substring-fallback',
|
|
872
|
+
query: params.query,
|
|
873
|
+
results,
|
|
874
|
+
message: results.length === 0
|
|
875
|
+
? `Embeddings disabled; substring search found no matches for "${params.query}"`
|
|
876
|
+
: `Embeddings disabled; substring search found ${results.length} memories`,
|
|
877
|
+
};
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
const { hits, error } = await indexer.search(agentId, params.query, { topK, hybrid });
|
|
881
|
+
|
|
882
|
+
// Hydrate hits → full memory objects via memoryService.readMemory.
|
|
883
|
+
// The indexer returns vector-store metadata (title/text) which is a
|
|
884
|
+
// snapshot — fetching live ensures we surface the current content
|
|
885
|
+
// (in case it was updated since the last index sync).
|
|
886
|
+
const hydrated = [];
|
|
887
|
+
for (const h of hits) {
|
|
888
|
+
// eslint-disable-next-line no-await-in-loop
|
|
889
|
+
const mem = await memoryService.readMemory(agentId, h.id);
|
|
890
|
+
if (mem) hydrated.push({ ...mem, score: h.score });
|
|
891
|
+
else hydrated.push({ id: h.id, score: h.score, missing: true, ...h.metadata });
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
return {
|
|
895
|
+
success: !error,
|
|
896
|
+
action: 'semantic-search',
|
|
897
|
+
mode: hybrid ? 'hybrid' : 'semantic',
|
|
898
|
+
query: params.query,
|
|
899
|
+
topK,
|
|
900
|
+
results: hydrated,
|
|
901
|
+
...(error ? { error } : {}),
|
|
902
|
+
message: error
|
|
903
|
+
? `Semantic search failed: ${error}`
|
|
904
|
+
: hydrated.length === 0
|
|
905
|
+
? `No memories matched "${params.query}"`
|
|
906
|
+
: `Found ${hydrated.length} memories ranked by similarity to "${params.query}"`,
|
|
907
|
+
};
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
/**
|
|
911
|
+
* Execute BACKFILL-EMBEDDINGS action — drop the agent's memory index
|
|
912
|
+
* and rebuild it from scratch. Use after enabling embeddings for the
|
|
913
|
+
* first time, after switching providers/models, or whenever the index
|
|
914
|
+
* is suspected stale. Idempotent.
|
|
915
|
+
*/
|
|
916
|
+
async _executeBackfillEmbeddings(memoryService, agentId) {
|
|
917
|
+
const indexer = this._getMemoryIndexer();
|
|
918
|
+
if (!indexer || !indexer.isEnabled) {
|
|
919
|
+
return {
|
|
920
|
+
success: false,
|
|
921
|
+
action: 'backfill-embeddings',
|
|
922
|
+
message: 'Embeddings are not enabled — nothing to backfill. Enable a provider in Settings → Embeddings first.',
|
|
923
|
+
};
|
|
924
|
+
}
|
|
925
|
+
|
|
926
|
+
// Pull every memory for this agent. memoryService.listMemories at
|
|
927
|
+
// 'full' detail returns the full content blob per memory.
|
|
928
|
+
const listing = await memoryService.listMemories(agentId, 'full');
|
|
929
|
+
// listMemories returns { count, grouped }. The 'full' shape gives
|
|
930
|
+
// us per-bucket arrays of memory objects. Flatten + filter.
|
|
931
|
+
const memories = [];
|
|
932
|
+
for (const bucket of Object.values(listing.grouped || {})) {
|
|
933
|
+
for (const m of bucket || []) if (m?.id) memories.push(m);
|
|
934
|
+
}
|
|
935
|
+
|
|
936
|
+
const result = await indexer.backfill(agentId, memories);
|
|
937
|
+
return {
|
|
938
|
+
success: result.ok !== false,
|
|
939
|
+
action: 'backfill-embeddings',
|
|
940
|
+
indexed: result.indexed || 0,
|
|
941
|
+
skipped: result.skipped || 0,
|
|
942
|
+
failed: result.failed || 0,
|
|
943
|
+
...(result.error ? { error: result.error } : {}),
|
|
944
|
+
message: result.ok === false
|
|
945
|
+
? `Backfill failed: ${result.reason || result.error || 'unknown'}`
|
|
946
|
+
: `Re-indexed ${result.indexed || 0} memories for agent ${agentId}` +
|
|
947
|
+
(result.skipped ? ` (skipped ${result.skipped} with no text)` : '') +
|
|
948
|
+
(result.failed ? ` (failed ${result.failed})` : ''),
|
|
949
|
+
};
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
/**
|
|
953
|
+
* Execute FORGET-STALE action — delete memories older than `ageDays`.
|
|
954
|
+
*
|
|
955
|
+
* FadeMem-style soft pruning (arXiv 2601.18642): unbounded memory
|
|
956
|
+
* growth is the real long-term problem. The right answer is graceful
|
|
957
|
+
* decay of unused old memories so the index stays signal-rich.
|
|
958
|
+
*
|
|
959
|
+
* Defaults are conservative — `ageDays=90`, plan/* memories skipped.
|
|
960
|
+
* Pass `dryRun: true` to preview what would be removed. The cascade
|
|
961
|
+
* to the vector index is automatic (memoryService.deleteMemory fires
|
|
962
|
+
* the indexer's deleteOne via _asyncRemoveFromIndex).
|
|
963
|
+
*
|
|
964
|
+
* Params: { ageDays?=90, dryRun?=false, includePlans?=false }
|
|
965
|
+
* @private
|
|
966
|
+
*/
|
|
967
|
+
async _executeForgetStale(memoryService, agentId, params) {
|
|
968
|
+
const ageDays = Number.isFinite(params.ageDays) && params.ageDays > 0 ? params.ageDays : 90;
|
|
969
|
+
const dryRun = !!params.dryRun;
|
|
970
|
+
const includePlans = !!params.includePlans;
|
|
971
|
+
const cutoffMs = Date.now() - ageDays * 24 * 60 * 60 * 1000;
|
|
972
|
+
|
|
973
|
+
// Walk the full memory list. Use 'descriptions' detail — enough to
|
|
974
|
+
// decide what's stale without pulling huge content blobs.
|
|
975
|
+
const listing = await memoryService.listMemories(agentId, 'full');
|
|
976
|
+
const candidates = [];
|
|
977
|
+
for (const bucket of Object.values(listing.grouped || {})) {
|
|
978
|
+
for (const m of bucket || []) {
|
|
979
|
+
if (!m?.id || !m?.createdAt) continue;
|
|
980
|
+
const createdMs = Date.parse(m.createdAt);
|
|
981
|
+
if (!Number.isFinite(createdMs) || createdMs > cutoffMs) continue;
|
|
982
|
+
// Skip plan/* memories unless explicitly included — they're the
|
|
983
|
+
// agent's active working plan, not stale notes.
|
|
984
|
+
if (!includePlans && isPlanTitle(m.title)) continue;
|
|
985
|
+
candidates.push({
|
|
986
|
+
id: m.id,
|
|
987
|
+
title: m.title,
|
|
988
|
+
createdAt: m.createdAt,
|
|
989
|
+
ageDays: Math.round((Date.now() - createdMs) / (24 * 60 * 60 * 1000)),
|
|
990
|
+
});
|
|
991
|
+
}
|
|
992
|
+
}
|
|
993
|
+
|
|
994
|
+
if (dryRun) {
|
|
995
|
+
return {
|
|
996
|
+
success: true,
|
|
997
|
+
action: 'forget-stale',
|
|
998
|
+
dryRun: true,
|
|
999
|
+
thresholdDays: ageDays,
|
|
1000
|
+
candidates,
|
|
1001
|
+
count: candidates.length,
|
|
1002
|
+
message: candidates.length === 0
|
|
1003
|
+
? `No memories older than ${ageDays} days.`
|
|
1004
|
+
: `Would forget ${candidates.length} memories older than ${ageDays} days. Pass dryRun:false to apply.`,
|
|
1005
|
+
};
|
|
1006
|
+
}
|
|
1007
|
+
|
|
1008
|
+
let forgotten = 0;
|
|
1009
|
+
let failed = 0;
|
|
1010
|
+
for (const c of candidates) {
|
|
1011
|
+
try {
|
|
1012
|
+
const ok = await memoryService.deleteMemory(agentId, c.id);
|
|
1013
|
+
if (ok) forgotten++;
|
|
1014
|
+
else failed++;
|
|
1015
|
+
} catch (err) {
|
|
1016
|
+
this.logger?.warn?.('[memoryTool] forget-stale: delete failed', { id: c.id, error: err?.message });
|
|
1017
|
+
failed++;
|
|
1018
|
+
}
|
|
1019
|
+
}
|
|
1020
|
+
|
|
1021
|
+
return {
|
|
1022
|
+
success: failed === 0,
|
|
1023
|
+
action: 'forget-stale',
|
|
1024
|
+
thresholdDays: ageDays,
|
|
1025
|
+
forgotten,
|
|
1026
|
+
failed,
|
|
1027
|
+
message: forgotten === 0 && failed === 0
|
|
1028
|
+
? `No memories older than ${ageDays} days.`
|
|
1029
|
+
: `Forgot ${forgotten} memories older than ${ageDays} days` +
|
|
1030
|
+
(failed ? `, ${failed} deletions failed` : '') + '.',
|
|
1031
|
+
};
|
|
1032
|
+
}
|
|
1033
|
+
|
|
1034
|
+
// ──────────────────────────────────────────────────────────────────
|
|
1035
|
+
// Phase 6c — Team-pool memory (the explicit publish channel)
|
|
1036
|
+
//
|
|
1037
|
+
// Answers the design Q1: per-agent memory stays private by default;
|
|
1038
|
+
// teams are an explicit, ACL-gated sharing surface. Lit-aligned with
|
|
1039
|
+
// arXiv 2505.18279 "Collaborative Memory" (dual-tier private + shared
|
|
1040
|
+
// with read/write policies). Pattern matches Mem0's multi-level
|
|
1041
|
+
// scoping (user_id / agent_id / app_id) — we use Loxia's existing
|
|
1042
|
+
// Teams primitive as the natural sharing boundary.
|
|
1043
|
+
//
|
|
1044
|
+
// ACL: agent must be a member of the team. Membership is read from
|
|
1045
|
+
// stateManager.getTeam(teamId).memberAgentIds — the authoritative
|
|
1046
|
+
// source. We refuse rather than warn so accidental cross-team leaks
|
|
1047
|
+
// are impossible. The check is encapsulated in `_assertTeamMember`.
|
|
1048
|
+
// ──────────────────────────────────────────────────────────────────
|
|
1049
|
+
|
|
1050
|
+
/**
|
|
1051
|
+
* Allow callers to inject a StateManager so ACL lookups can resolve
|
|
1052
|
+
* team membership. Mirrors the platformControl pattern. Without it,
|
|
1053
|
+
* team-scoped actions all fail with a clean error rather than
|
|
1054
|
+
* defaulting open.
|
|
1055
|
+
*/
|
|
1056
|
+
setStateManager(stateManager) {
|
|
1057
|
+
this.stateManager = stateManager;
|
|
1058
|
+
this.logger?.info?.(`[memory] StateManager ${stateManager ? 'attached' : 'detached'}`);
|
|
1059
|
+
}
|
|
1060
|
+
|
|
1061
|
+
/**
|
|
1062
|
+
* Read-only ACL: throws an Error with a user-facing message if the
|
|
1063
|
+
* agent isn't a member of the team. Use inside team-scoped handlers
|
|
1064
|
+
* to gate writes and reads alike.
|
|
1065
|
+
* @private
|
|
1066
|
+
*/
|
|
1067
|
+
async _assertTeamMember(agentId, teamId) {
|
|
1068
|
+
if (!this.stateManager?.getTeam) {
|
|
1069
|
+
throw new Error('Team-scoped memory actions require a StateManager. None is attached.');
|
|
1070
|
+
}
|
|
1071
|
+
const team = await this.stateManager.getTeam(teamId);
|
|
1072
|
+
if (!team) {
|
|
1073
|
+
throw new Error(`Team not found: ${teamId}`);
|
|
1074
|
+
}
|
|
1075
|
+
const members = Array.isArray(team.memberAgentIds) ? team.memberAgentIds : [];
|
|
1076
|
+
if (!members.includes(agentId)) {
|
|
1077
|
+
throw new Error(
|
|
1078
|
+
`Access denied: agent ${agentId} is not a member of team ${teamId}. ` +
|
|
1079
|
+
`Ask a team admin to add you via platformcontrol.add-team-member.`,
|
|
1080
|
+
);
|
|
1081
|
+
}
|
|
1082
|
+
return team;
|
|
1083
|
+
}
|
|
1084
|
+
|
|
1085
|
+
/**
|
|
1086
|
+
* Publish an existing per-agent memory to a team's shared pool. The
|
|
1087
|
+
* memory itself stays in the agent's own pool — `publish` copies its
|
|
1088
|
+
* content into the team's vector index with `publishedBy` metadata.
|
|
1089
|
+
*
|
|
1090
|
+
* Params: { id, teamId }
|
|
1091
|
+
* @private
|
|
1092
|
+
*/
|
|
1093
|
+
async _executePublishToTeam(memoryService, agentId, params) {
|
|
1094
|
+
const indexer = this._getMemoryIndexer();
|
|
1095
|
+
if (!indexer || !indexer.isEnabled) {
|
|
1096
|
+
return {
|
|
1097
|
+
success: false,
|
|
1098
|
+
action: 'publish-to-team',
|
|
1099
|
+
message: 'Embeddings are not enabled. Team-pool memory requires a configured embedding provider — enable one in Settings → Embeddings first.',
|
|
1100
|
+
};
|
|
1101
|
+
}
|
|
1102
|
+
|
|
1103
|
+
let team;
|
|
1104
|
+
try { team = await this._assertTeamMember(agentId, params.teamId); }
|
|
1105
|
+
catch (err) {
|
|
1106
|
+
return { success: false, action: 'publish-to-team', error: err.message };
|
|
1107
|
+
}
|
|
1108
|
+
|
|
1109
|
+
const memory = await memoryService.readMemory(agentId, params.id);
|
|
1110
|
+
if (!memory) {
|
|
1111
|
+
return {
|
|
1112
|
+
success: false,
|
|
1113
|
+
action: 'publish-to-team',
|
|
1114
|
+
error: `Memory not found in your pool: ${params.id}. publish-to-team copies an existing personal memory into the team pool.`,
|
|
1115
|
+
};
|
|
1116
|
+
}
|
|
1117
|
+
|
|
1118
|
+
const result = await indexer.publishToTeam(params.teamId, memory, agentId);
|
|
1119
|
+
return {
|
|
1120
|
+
success: result.indexed === true,
|
|
1121
|
+
action: 'publish-to-team',
|
|
1122
|
+
teamId: params.teamId,
|
|
1123
|
+
teamName: team?.name || params.teamId,
|
|
1124
|
+
memoryId: memory.id,
|
|
1125
|
+
...(result.error ? { error: result.error } : {}),
|
|
1126
|
+
message: result.indexed
|
|
1127
|
+
? `Published "${memory.title}" to team "${team?.name || params.teamId}".`
|
|
1128
|
+
: `Publish failed: ${result.reason || result.error || 'unknown'}`,
|
|
1129
|
+
};
|
|
1130
|
+
}
|
|
1131
|
+
|
|
1132
|
+
/**
|
|
1133
|
+
* Semantic (or hybrid) search over a team's shared memory pool.
|
|
1134
|
+
* Requires team membership — otherwise no read.
|
|
1135
|
+
*
|
|
1136
|
+
* Params: { teamId, query, topK?=10, hybrid?=true }
|
|
1137
|
+
* @private
|
|
1138
|
+
*/
|
|
1139
|
+
async _executeSearchTeam(agentId, params) {
|
|
1140
|
+
const indexer = this._getMemoryIndexer();
|
|
1141
|
+
if (!indexer || !indexer.isEnabled) {
|
|
1142
|
+
return {
|
|
1143
|
+
success: false,
|
|
1144
|
+
action: 'search-team',
|
|
1145
|
+
message: 'Embeddings are not enabled. Team-pool memory requires a configured embedding provider.',
|
|
1146
|
+
};
|
|
1147
|
+
}
|
|
1148
|
+
|
|
1149
|
+
let team;
|
|
1150
|
+
try { team = await this._assertTeamMember(agentId, params.teamId); }
|
|
1151
|
+
catch (err) {
|
|
1152
|
+
return { success: false, action: 'search-team', error: err.message };
|
|
1153
|
+
}
|
|
1154
|
+
|
|
1155
|
+
const topK = Number.isInteger(params.topK) && params.topK > 0 ? params.topK : 10;
|
|
1156
|
+
const hybrid = params.hybrid !== false;
|
|
1157
|
+
const { hits, error } = await indexer.searchTeam(params.teamId, params.query, { topK, hybrid });
|
|
1158
|
+
return {
|
|
1159
|
+
success: !error,
|
|
1160
|
+
action: 'search-team',
|
|
1161
|
+
teamId: params.teamId,
|
|
1162
|
+
teamName: team?.name || params.teamId,
|
|
1163
|
+
query: params.query,
|
|
1164
|
+
mode: hybrid ? 'hybrid' : 'semantic',
|
|
1165
|
+
topK,
|
|
1166
|
+
results: hits,
|
|
1167
|
+
...(error ? { error } : {}),
|
|
1168
|
+
message: error
|
|
1169
|
+
? `Team search failed: ${error}`
|
|
1170
|
+
: hits.length === 0
|
|
1171
|
+
? `No memories matched "${params.query}" in team "${team?.name || params.teamId}".`
|
|
1172
|
+
: `Found ${hits.length} team memories ranked by similarity to "${params.query}".`,
|
|
1173
|
+
};
|
|
1174
|
+
}
|
|
1175
|
+
|
|
1176
|
+
/**
|
|
1177
|
+
* Remove a memory from a team pool. Any team member can unpublish
|
|
1178
|
+
* (no per-author restriction at this layer — keeps the ACL surface
|
|
1179
|
+
* simple; if richer policies are needed later, layer them here).
|
|
1180
|
+
*
|
|
1181
|
+
* Params: { teamId, id }
|
|
1182
|
+
* @private
|
|
1183
|
+
*/
|
|
1184
|
+
async _executeUnpublishFromTeam(agentId, params) {
|
|
1185
|
+
const indexer = this._getMemoryIndexer();
|
|
1186
|
+
if (!indexer || !indexer.isEnabled) {
|
|
1187
|
+
return {
|
|
1188
|
+
success: false,
|
|
1189
|
+
action: 'unpublish-from-team',
|
|
1190
|
+
message: 'Embeddings are not enabled. Team-pool memory requires a configured embedding provider.',
|
|
1191
|
+
};
|
|
1192
|
+
}
|
|
1193
|
+
|
|
1194
|
+
let team;
|
|
1195
|
+
try { team = await this._assertTeamMember(agentId, params.teamId); }
|
|
1196
|
+
catch (err) {
|
|
1197
|
+
return { success: false, action: 'unpublish-from-team', error: err.message };
|
|
1198
|
+
}
|
|
1199
|
+
|
|
1200
|
+
const result = await indexer.unpublishFromTeam(params.teamId, params.id);
|
|
1201
|
+
return {
|
|
1202
|
+
success: result.deleted === true,
|
|
1203
|
+
action: 'unpublish-from-team',
|
|
1204
|
+
teamId: params.teamId,
|
|
1205
|
+
teamName: team?.name || params.teamId,
|
|
1206
|
+
memoryId: params.id,
|
|
1207
|
+
...(result.error ? { error: result.error } : {}),
|
|
1208
|
+
message: result.deleted
|
|
1209
|
+
? `Removed memory ${params.id} from team "${team?.name || params.teamId}".`
|
|
1210
|
+
: `Unpublish failed: ${result.reason || result.error || 'unknown'}`,
|
|
1211
|
+
};
|
|
1212
|
+
}
|
|
1213
|
+
|
|
1214
|
+
/**
|
|
1215
|
+
* Lazy accessor for the per-tool MemoryIndexer.
|
|
1216
|
+
*
|
|
1217
|
+
* Why lazy: the EmbeddingService is attached to aiService AFTER
|
|
1218
|
+
* tools are constructed. Pulling it on first use lets us avoid
|
|
1219
|
+
* construction-time ordering pain.
|
|
1220
|
+
*
|
|
1221
|
+
* Returns null when no embedding service is available (cloud-only
|
|
1222
|
+
* deploys without local provider, brand-new installs, etc.). Callers
|
|
1223
|
+
* MUST check `indexer.isEnabled` before relying on it — the indexer
|
|
1224
|
+
* is a thin shim that itself checks the service's enabled flag.
|
|
1225
|
+
*
|
|
1226
|
+
* @private
|
|
1227
|
+
* @returns {import('../services/embeddings/indexers/memoryIndexer.js').MemoryIndexer | null}
|
|
1228
|
+
*/
|
|
1229
|
+
_getMemoryIndexer() {
|
|
1230
|
+
if (this._memoryIndexer) return this._memoryIndexer;
|
|
1231
|
+
const svc = this.aiService?.getEmbeddingService?.();
|
|
1232
|
+
if (!svc) return null;
|
|
1233
|
+
this._memoryIndexer = new MemoryIndexer({ embeddingService: svc, logger: this.logger });
|
|
1234
|
+
return this._memoryIndexer;
|
|
1235
|
+
}
|
|
1236
|
+
|
|
1237
|
+
/**
|
|
1238
|
+
* Fire-and-forget memory index update. Errors are logged inside the
|
|
1239
|
+
* indexer; we additionally swallow any thrown error here so a runtime
|
|
1240
|
+
* surprise (broken provider, full disk) NEVER affects the memory write.
|
|
1241
|
+
* @private
|
|
1242
|
+
*/
|
|
1243
|
+
_asyncIndexMemory(agentId, memory) {
|
|
1244
|
+
const indexer = this._getMemoryIndexer();
|
|
1245
|
+
if (!indexer || !indexer.isEnabled) return;
|
|
1246
|
+
// Don't await — the result is consumed only via the indexer's own
|
|
1247
|
+
// log. We bury the promise with .catch() so Node doesn't crash on
|
|
1248
|
+
// unhandled rejection if something exotic blows up.
|
|
1249
|
+
indexer.indexOne(agentId, memory).catch(err => {
|
|
1250
|
+
this.logger?.warn?.('[memoryTool] async index failed', { agentId, id: memory?.id, error: err?.message });
|
|
1251
|
+
});
|
|
1252
|
+
}
|
|
1253
|
+
|
|
1254
|
+
/**
|
|
1255
|
+
* Fire-and-forget removal from the index after a delete.
|
|
1256
|
+
* @private
|
|
1257
|
+
*/
|
|
1258
|
+
_asyncRemoveFromIndex(agentId, memoryId) {
|
|
1259
|
+
const indexer = this._getMemoryIndexer();
|
|
1260
|
+
if (!indexer || !indexer.isEnabled) return;
|
|
1261
|
+
indexer.deleteOne(agentId, memoryId).catch(err => {
|
|
1262
|
+
this.logger?.warn?.('[memoryTool] async deleteFromIndex failed', { agentId, id: memoryId, error: err?.message });
|
|
1263
|
+
});
|
|
1264
|
+
}
|
|
1265
|
+
|
|
1266
|
+
/**
|
|
1267
|
+
* Lazy accessor for the per-tool ReminisceIndexer. Same lifetime model
|
|
1268
|
+
* as `_getMemoryIndexer`: cached on the tool instance after first use.
|
|
1269
|
+
* Returns null when the embedding service isn't attached.
|
|
1270
|
+
*
|
|
1271
|
+
* @private
|
|
1272
|
+
* @returns {import('../services/embeddings/indexers/reminisceIndexer.js').ReminisceIndexer | null}
|
|
1273
|
+
*/
|
|
1274
|
+
_getReminisceIndexer() {
|
|
1275
|
+
if (this._reminisceIndexer) return this._reminisceIndexer;
|
|
1276
|
+
const svc = this.aiService?.getEmbeddingService?.();
|
|
1277
|
+
if (!svc) return null;
|
|
1278
|
+
this._reminisceIndexer = new ReminisceIndexer({ embeddingService: svc, logger: this.logger });
|
|
1279
|
+
return this._reminisceIndexer;
|
|
1280
|
+
}
|
|
1281
|
+
|
|
1282
|
+
/**
|
|
1283
|
+
* Reminisce semantic-search handler. Routes through the
|
|
1284
|
+
* ReminisceIndexer; falls back to the existing substring-based
|
|
1285
|
+
* `reminisce.search` when embeddings aren't configured.
|
|
1286
|
+
*
|
|
1287
|
+
* Params: { query, topK?=10, hybrid?=true }
|
|
1288
|
+
* @private
|
|
1289
|
+
*/
|
|
1290
|
+
async _executeReminisceSemanticSearch(agentId, params, context) {
|
|
1291
|
+
const query = typeof params.query === 'string' ? params.query.trim() : '';
|
|
1292
|
+
if (!query) {
|
|
1293
|
+
return {
|
|
1294
|
+
success: false,
|
|
1295
|
+
action: 'reminisce',
|
|
1296
|
+
mode: 'semantic-search',
|
|
1297
|
+
error: 'query is required for reminisce semantic-search',
|
|
1298
|
+
};
|
|
1299
|
+
}
|
|
1300
|
+
const topK = Number.isInteger(params.topK) && params.topK > 0 ? params.topK : 10;
|
|
1301
|
+
const hybrid = params.hybrid !== false;
|
|
1302
|
+
|
|
1303
|
+
const indexer = this._getReminisceIndexer();
|
|
1304
|
+
if (!indexer || !indexer.isEnabled) {
|
|
1305
|
+
// Graceful fallback to the existing substring path so the action
|
|
1306
|
+
// remains useful when embeddings are off. Mirrors memoryTool's
|
|
1307
|
+
// semantic-search fallback shape for consistency.
|
|
1308
|
+
const fb = await this._executeReminisce(agentId, { ...params, mode: 'search' }, context);
|
|
1309
|
+
return {
|
|
1310
|
+
...fb,
|
|
1311
|
+
mode: 'semantic-search',
|
|
1312
|
+
modeUsed: 'substring-fallback',
|
|
1313
|
+
message: 'Embeddings disabled; returned substring search results instead.',
|
|
1314
|
+
};
|
|
1315
|
+
}
|
|
1316
|
+
|
|
1317
|
+
// Run the vector search.
|
|
1318
|
+
const { hits, error } = await indexer.search(agentId, query, { topK, hybrid });
|
|
1319
|
+
|
|
1320
|
+
// Hydrate scored messageIds back to full messages from the archive,
|
|
1321
|
+
// so the agent sees `role`, `content`, `createdAt`, etc. — the same
|
|
1322
|
+
// shape it gets from `reminisce.search`.
|
|
1323
|
+
const agentPool = context?.agentPool;
|
|
1324
|
+
let messages = null;
|
|
1325
|
+
if (agentPool?.getAgent) {
|
|
1326
|
+
const agent = await agentPool.getAgent(agentId);
|
|
1327
|
+
messages = Array.isArray(agent?.conversations?.full?.messages) ? agent.conversations.full.messages : null;
|
|
1328
|
+
}
|
|
1329
|
+
const byId = new Map((messages || []).map(m => [m?.id, m]));
|
|
1330
|
+
const hydrated = hits.map(h => {
|
|
1331
|
+
const m = byId.get(h.messageId);
|
|
1332
|
+
const base = {
|
|
1333
|
+
messageId: h.messageId,
|
|
1334
|
+
score: h.score,
|
|
1335
|
+
chunkIndex: h.chunkIndex,
|
|
1336
|
+
// Default to the index-snapshot text when the live message has
|
|
1337
|
+
// gone missing (rare — only if archive was pruned).
|
|
1338
|
+
snippet: h.chunkText,
|
|
1339
|
+
};
|
|
1340
|
+
if (!m) return { ...base, missing: true };
|
|
1341
|
+
return {
|
|
1342
|
+
...base,
|
|
1343
|
+
role: m.role || 'unknown',
|
|
1344
|
+
at: m.createdAt || m.timestamp || null,
|
|
1345
|
+
content: typeof m.content === 'string' ? m.content : '',
|
|
1346
|
+
};
|
|
1347
|
+
});
|
|
1348
|
+
|
|
1349
|
+
return {
|
|
1350
|
+
success: !error,
|
|
1351
|
+
action: 'reminisce',
|
|
1352
|
+
mode: 'semantic-search',
|
|
1353
|
+
modeUsed: hybrid ? 'hybrid' : 'semantic',
|
|
1354
|
+
query,
|
|
1355
|
+
topK,
|
|
1356
|
+
result: {
|
|
1357
|
+
hits: hydrated,
|
|
1358
|
+
...(error ? { error } : {}),
|
|
1359
|
+
},
|
|
1360
|
+
message: error
|
|
1361
|
+
? `Reminisce semantic search failed: ${error}`
|
|
1362
|
+
: hydrated.length === 0
|
|
1363
|
+
? `No archived messages matched "${query}"`
|
|
1364
|
+
: `Found ${hydrated.length} archived messages ranked by similarity to "${query}"`,
|
|
1365
|
+
};
|
|
1366
|
+
}
|
|
1367
|
+
|
|
1368
|
+
/**
|
|
1369
|
+
* Drop the agent's reminisce index and rebuild from the full
|
|
1370
|
+
* conversation archive. Use after first enabling embeddings, or after
|
|
1371
|
+
* switching provider/model. Idempotent.
|
|
1372
|
+
*
|
|
1373
|
+
* NOTE: this is the canonical entry point for keeping reminisce
|
|
1374
|
+
* semantic-search current today. Auto-indexing on new archive writes
|
|
1375
|
+
* is a planned follow-up; until then, re-run this periodically (or
|
|
1376
|
+
* via a scheduled task) to pick up the latest messages.
|
|
1377
|
+
*
|
|
1378
|
+
* @private
|
|
1379
|
+
*/
|
|
1380
|
+
async _executeReminisceBackfill(agentId, context) {
|
|
1381
|
+
const indexer = this._getReminisceIndexer();
|
|
1382
|
+
if (!indexer || !indexer.isEnabled) {
|
|
1383
|
+
return {
|
|
1384
|
+
success: false,
|
|
1385
|
+
action: 'reminisce-backfill-embeddings',
|
|
1386
|
+
message: 'Embeddings are not enabled — nothing to backfill. Enable a provider in Settings → Embeddings first.',
|
|
1387
|
+
};
|
|
1388
|
+
}
|
|
1389
|
+
|
|
1390
|
+
const agentPool = context?.agentPool;
|
|
1391
|
+
if (!agentPool?.getAgent) {
|
|
1392
|
+
return {
|
|
1393
|
+
success: false,
|
|
1394
|
+
action: 'reminisce-backfill-embeddings',
|
|
1395
|
+
error: 'agentPool is not available on the tool context; cannot read conversation archive',
|
|
1396
|
+
};
|
|
1397
|
+
}
|
|
1398
|
+
const agent = await agentPool.getAgent(agentId);
|
|
1399
|
+
const messages = Array.isArray(agent?.conversations?.full?.messages) ? agent.conversations.full.messages : [];
|
|
1400
|
+
|
|
1401
|
+
const result = await indexer.backfill(agentId, messages);
|
|
1402
|
+
return {
|
|
1403
|
+
success: result.ok !== false && !result.error,
|
|
1404
|
+
action: 'reminisce-backfill-embeddings',
|
|
1405
|
+
indexedMessages: result.indexedMessages || 0,
|
|
1406
|
+
indexedChunks: result.indexedChunks || 0,
|
|
1407
|
+
skipped: result.skipped || 0,
|
|
1408
|
+
failed: result.failed || 0,
|
|
1409
|
+
...(result.error ? { error: result.error } : {}),
|
|
1410
|
+
message: result.ok === false
|
|
1411
|
+
? `Reminisce backfill failed: ${result.reason || result.error || 'unknown'}`
|
|
1412
|
+
: `Re-indexed ${result.indexedMessages || 0} messages` +
|
|
1413
|
+
(result.indexedChunks ? ` (${result.indexedChunks} chunks)` : '') +
|
|
1414
|
+
(result.skipped ? `, skipped ${result.skipped}` : '') +
|
|
1415
|
+
(result.failed ? `, failed ${result.failed}` : ''),
|
|
1416
|
+
};
|
|
1417
|
+
}
|
|
1418
|
+
|
|
798
1419
|
/**
|
|
799
1420
|
* Execute STATS action
|
|
800
1421
|
*/
|
|
@@ -832,7 +1453,7 @@ BEST PRACTICES:
|
|
|
832
1453
|
*/
|
|
833
1454
|
async _executeReminisce(agentId, params, context) {
|
|
834
1455
|
const mode = typeof params.mode === 'string' ? params.mode : '';
|
|
835
|
-
const validModes = ['overview', 'range', 'search', 'around', 'byTool', 'read'];
|
|
1456
|
+
const validModes = ['overview', 'range', 'search', 'semantic-search', 'around', 'byTool', 'read'];
|
|
836
1457
|
if (!validModes.includes(mode)) {
|
|
837
1458
|
return {
|
|
838
1459
|
success: false,
|
|
@@ -841,6 +1462,14 @@ BEST PRACTICES:
|
|
|
841
1462
|
};
|
|
842
1463
|
}
|
|
843
1464
|
|
|
1465
|
+
// Semantic-search has a different shape than the other modes — it
|
|
1466
|
+
// routes through the ReminisceIndexer (vector store) rather than the
|
|
1467
|
+
// conversation-query helpers. Falls back to substring `search` when
|
|
1468
|
+
// embeddings are disabled so the action is always callable.
|
|
1469
|
+
if (mode === 'semantic-search') {
|
|
1470
|
+
return await this._executeReminisceSemanticSearch(agentId, params, context);
|
|
1471
|
+
}
|
|
1472
|
+
|
|
844
1473
|
const agentPool = context?.agentPool;
|
|
845
1474
|
if (!agentPool?.getAgent) {
|
|
846
1475
|
return {
|