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
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EmbeddingProvider — abstract base for cloud + local embedding backends.
|
|
3
|
+
*
|
|
4
|
+
* Why an abstract class (not a duck-typed object): we want the same shape
|
|
5
|
+
* — Float32Array out, batch + single APIs, capability metadata, single
|
|
6
|
+
* error vocabulary — across every provider so the orchestrator never
|
|
7
|
+
* needs to know which one it's talking to. Subclasses override
|
|
8
|
+
* `_embed(texts, kind)` and the base handles input validation, batching,
|
|
9
|
+
* L2-normalization, dimension checks, and error wrapping.
|
|
10
|
+
*
|
|
11
|
+
* Vector convention: we always return L2-normalized Float32Array, so
|
|
12
|
+
* cosine similarity in the VectorStore reduces to a dot product — saves
|
|
13
|
+
* a divide-per-query at search time. The base enforces normalization
|
|
14
|
+
* after the subclass returns raw vectors.
|
|
15
|
+
*
|
|
16
|
+
* Query vs document: BGE / nomic / e5 embed queries and documents into
|
|
17
|
+
* the same space but want different prefixes ("search_query: ..." vs
|
|
18
|
+
* "search_document: ..."). Subclasses that distinguish read the `kind`
|
|
19
|
+
* argument; providers that don't simply ignore it. The base class
|
|
20
|
+
* forwards kind transparently.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Error vocabulary shared by every provider. Mirrors the agent-scheduler
|
|
25
|
+
* error categorisation (persistent vs transient): transient codes are
|
|
26
|
+
* retry / fallback candidates; persistent codes surface to the user.
|
|
27
|
+
*/
|
|
28
|
+
export const EMBEDDING_ERROR_CODES = Object.freeze({
|
|
29
|
+
NETWORK_ERROR: 'NETWORK_ERROR', // transient
|
|
30
|
+
RATE_LIMITED: 'RATE_LIMITED', // transient
|
|
31
|
+
PROVIDER_UNAVAILABLE: 'PROVIDER_UNAVAILABLE', // transient
|
|
32
|
+
AUTH_ERROR: 'AUTH_ERROR', // persistent
|
|
33
|
+
MODEL_NOT_FOUND: 'MODEL_NOT_FOUND', // persistent
|
|
34
|
+
INVALID_INPUT: 'INVALID_INPUT', // persistent
|
|
35
|
+
DIMENSION_MISMATCH: 'DIMENSION_MISMATCH', // persistent
|
|
36
|
+
NOT_INITIALIZED: 'NOT_INITIALIZED', // persistent
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
export class EmbeddingError extends Error {
|
|
40
|
+
/**
|
|
41
|
+
* @param {string} code - One of EMBEDDING_ERROR_CODES values.
|
|
42
|
+
* @param {string} message
|
|
43
|
+
* @param {object} [opts]
|
|
44
|
+
* @param {Error} [opts.cause]
|
|
45
|
+
* @param {string} [opts.provider]
|
|
46
|
+
* @param {boolean} [opts.transient] - If true, orchestrator may retry / fall back.
|
|
47
|
+
*/
|
|
48
|
+
constructor(code, message, opts = {}) {
|
|
49
|
+
super(message);
|
|
50
|
+
this.name = 'EmbeddingError';
|
|
51
|
+
this.code = code;
|
|
52
|
+
this.provider = opts.provider || null;
|
|
53
|
+
this.transient = opts.transient ?? false;
|
|
54
|
+
if (opts.cause) this.cause = opts.cause;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* @typedef {Object} EmbeddingProviderInfo
|
|
60
|
+
* @property {string} name - 'azure' | 'openai' | 'local'
|
|
61
|
+
* @property {string} modelId - The concrete model identifier
|
|
62
|
+
* @property {number} dimensions - Vector size in floats
|
|
63
|
+
* @property {number} maxBatchSize - Max texts per `_embed` call
|
|
64
|
+
* @property {number} maxTokensPerText - Hard upper bound on a single input
|
|
65
|
+
* @property {boolean} distinguishesQueryAndDocument - Honours the `kind` arg?
|
|
66
|
+
* @property {boolean} isLocal - True for offline providers
|
|
67
|
+
*/
|
|
68
|
+
|
|
69
|
+
export class EmbeddingProvider {
|
|
70
|
+
/**
|
|
71
|
+
* Synchronous capability description. Must be cheap and side-effect-free
|
|
72
|
+
* (the orchestrator reads it on every request to validate inputs).
|
|
73
|
+
* @returns {EmbeddingProviderInfo}
|
|
74
|
+
*/
|
|
75
|
+
getInfo() {
|
|
76
|
+
throw new Error(`${this.constructor.name}.getInfo() must be implemented`);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Can this provider serve requests right now? For cloud providers this
|
|
81
|
+
* checks that the API key + endpoint are set; for local it checks that
|
|
82
|
+
* the model has been loaded. Should NOT throw — returns a structured
|
|
83
|
+
* result so callers can show a remediation message.
|
|
84
|
+
* @returns {Promise<{ok: boolean, reason?: string}>}
|
|
85
|
+
*/
|
|
86
|
+
async health() {
|
|
87
|
+
return { ok: true };
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Embed a single query. Convenience over `embedDocuments([text], 'query')`.
|
|
92
|
+
* @param {string} text
|
|
93
|
+
* @returns {Promise<Float32Array>}
|
|
94
|
+
*/
|
|
95
|
+
async embedQuery(text) {
|
|
96
|
+
if (typeof text !== 'string' || text.length === 0) {
|
|
97
|
+
throw new EmbeddingError(
|
|
98
|
+
EMBEDDING_ERROR_CODES.INVALID_INPUT,
|
|
99
|
+
'embedQuery requires a non-empty string',
|
|
100
|
+
{ provider: this.getInfo().name },
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
const [vec] = await this.embedDocuments([text], 'query');
|
|
104
|
+
return vec;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Embed many texts. Returns an array of Float32Array (L2-normalized) in
|
|
109
|
+
* the SAME order as the input. Batches under `maxBatchSize` transparently.
|
|
110
|
+
* Throws EmbeddingError on failure with a code from EMBEDDING_ERROR_CODES.
|
|
111
|
+
*
|
|
112
|
+
* @param {string[]} texts
|
|
113
|
+
* @param {'document'|'query'} [kind='document']
|
|
114
|
+
* @returns {Promise<Float32Array[]>}
|
|
115
|
+
*/
|
|
116
|
+
async embedDocuments(texts, kind = 'document') {
|
|
117
|
+
if (!Array.isArray(texts) || texts.length === 0) {
|
|
118
|
+
throw new EmbeddingError(
|
|
119
|
+
EMBEDDING_ERROR_CODES.INVALID_INPUT,
|
|
120
|
+
'embedDocuments requires a non-empty array of strings',
|
|
121
|
+
{ provider: this.getInfo().name },
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
for (let i = 0; i < texts.length; i++) {
|
|
125
|
+
if (typeof texts[i] !== 'string' || texts[i].length === 0) {
|
|
126
|
+
throw new EmbeddingError(
|
|
127
|
+
EMBEDDING_ERROR_CODES.INVALID_INPUT,
|
|
128
|
+
`embedDocuments[${i}] is not a non-empty string`,
|
|
129
|
+
{ provider: this.getInfo().name },
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
const { maxBatchSize, dimensions, name } = this.getInfo();
|
|
135
|
+
const out = [];
|
|
136
|
+
for (let start = 0; start < texts.length; start += maxBatchSize) {
|
|
137
|
+
const batch = texts.slice(start, start + maxBatchSize);
|
|
138
|
+
const raw = await this._embed(batch, kind);
|
|
139
|
+
if (!Array.isArray(raw) || raw.length !== batch.length) {
|
|
140
|
+
throw new EmbeddingError(
|
|
141
|
+
EMBEDDING_ERROR_CODES.PROVIDER_UNAVAILABLE,
|
|
142
|
+
`Provider returned ${Array.isArray(raw) ? raw.length : 'non-array'} vectors for ${batch.length} inputs`,
|
|
143
|
+
{ provider: name, transient: true },
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
for (const v of raw) {
|
|
147
|
+
const f32 = v instanceof Float32Array ? v : Float32Array.from(v);
|
|
148
|
+
if (f32.length !== dimensions) {
|
|
149
|
+
throw new EmbeddingError(
|
|
150
|
+
EMBEDDING_ERROR_CODES.DIMENSION_MISMATCH,
|
|
151
|
+
`Expected ${dimensions} dims; got ${f32.length}`,
|
|
152
|
+
{ provider: name },
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
normalizeInPlace(f32);
|
|
156
|
+
out.push(f32);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return out;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Subclasses implement this: send `texts` to the provider, return an
|
|
164
|
+
* array of array-likes of numbers (the base class normalizes + validates
|
|
165
|
+
* dimensions before handing the result back to callers).
|
|
166
|
+
*
|
|
167
|
+
* Should throw EmbeddingError with a useful code on failure. Network /
|
|
168
|
+
* 5xx / 429 → transient codes; auth / bad request → persistent codes.
|
|
169
|
+
*
|
|
170
|
+
* @param {string[]} texts
|
|
171
|
+
* @param {'document'|'query'} kind
|
|
172
|
+
* @returns {Promise<(number[]|Float32Array)[]>}
|
|
173
|
+
* @protected
|
|
174
|
+
*/
|
|
175
|
+
async _embed(texts, kind) {
|
|
176
|
+
throw new Error(`${this.constructor.name}._embed() must be implemented`);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Stable model fingerprint, used by VectorStore to detect provider /
|
|
181
|
+
* model changes and trigger re-embed. Default = `name:modelId`; override
|
|
182
|
+
* if a single modelId has multiple incompatible internal versions.
|
|
183
|
+
* @returns {string}
|
|
184
|
+
*/
|
|
185
|
+
getModelFingerprint() {
|
|
186
|
+
const { name, modelId } = this.getInfo();
|
|
187
|
+
return `${name}:${modelId}`;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* L2-normalize a vector in place so cosine(a, b) reduces to dot(a, b).
|
|
193
|
+
* Exposed for tests and for the VectorStore to validate stored vectors.
|
|
194
|
+
* Hot path — avoid allocations.
|
|
195
|
+
* @param {Float32Array} v
|
|
196
|
+
* @returns {Float32Array} the same array, normalized
|
|
197
|
+
*/
|
|
198
|
+
export function normalizeInPlace(v) {
|
|
199
|
+
let sum = 0;
|
|
200
|
+
for (let i = 0; i < v.length; i++) sum += v[i] * v[i];
|
|
201
|
+
const norm = Math.sqrt(sum);
|
|
202
|
+
if (norm === 0) return v;
|
|
203
|
+
const inv = 1 / norm;
|
|
204
|
+
for (let i = 0; i < v.length; i++) v[i] = v[i] * inv;
|
|
205
|
+
return v;
|
|
206
|
+
}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AzureCustomEmbeddingProvider — point Loxia at YOUR Azure AI Foundry
|
|
3
|
+
* OpenAI-compatible deployment.
|
|
4
|
+
*
|
|
5
|
+
* Why this exists (not just "use openai provider"):
|
|
6
|
+
* Azure AI Foundry exposes ALL embedding deployments (OpenAI-built
|
|
7
|
+
* text-embedding-3-*, Cohere embed-v-4-*, third-party models) behind
|
|
8
|
+
* a unified `/openai/v1/` endpoint that speaks the OpenAI REST shape.
|
|
9
|
+
* In practice users who deploy a non-OpenAI model on Azure (e.g.
|
|
10
|
+
* `embed-v-4-0`) hit exactly that endpoint, with their own URL +
|
|
11
|
+
* deployment name + key, NOT OpenAI's hosted api.openai.com nor the
|
|
12
|
+
* Loxia-backend proxy.
|
|
13
|
+
*
|
|
14
|
+
* The `openai` provider already speaks the OpenAI REST shape but
|
|
15
|
+
* defaults to api.openai.com and exposes a `url` override only via
|
|
16
|
+
* the constructor — not through the Settings UI. Rather than overload
|
|
17
|
+
* the openai provider with conditional UI ("are you on Azure or
|
|
18
|
+
* real OpenAI?"), it's clearer to expose a separate provider option
|
|
19
|
+
* labelled "Azure (custom OpenAI-compat deployment)" with its own
|
|
20
|
+
* form fields (endpoint, deployment, dimensions, key).
|
|
21
|
+
*
|
|
22
|
+
* Wire shape (matches the OpenAI embeddings REST API):
|
|
23
|
+
*
|
|
24
|
+
* POST {endpoint}/embeddings
|
|
25
|
+
* Authorization: Bearer <api-key>
|
|
26
|
+
* Content-Type: application/json
|
|
27
|
+
*
|
|
28
|
+
* {
|
|
29
|
+
* "input": ["text 1", "text 2"],
|
|
30
|
+
* "model": "embed-v-4-0", // user's deployment name
|
|
31
|
+
* "encoding_format": "float" // explicit; some compat layers
|
|
32
|
+
* // require it
|
|
33
|
+
* }
|
|
34
|
+
*
|
|
35
|
+
* → { "data": [{ "embedding": [...] }, ...], "usage": {...} }
|
|
36
|
+
*
|
|
37
|
+
* Endpoint normalization: the user typically pastes the `baseURL` they
|
|
38
|
+
* got from Azure (e.g. `.../openai/v1/`). We auto-append `embeddings`
|
|
39
|
+
* so the user doesn't have to think about the suffix.
|
|
40
|
+
*
|
|
41
|
+
* Dimensions: model-dependent. The user supplies them — for
|
|
42
|
+
* embed-v-4-0 the default is 1536; for OpenAI text-embedding-3-* it's
|
|
43
|
+
* 1536/3072. We don't auto-detect because the base class needs to
|
|
44
|
+
* validate dimensions on every response.
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
import { EmbeddingProvider, EmbeddingError, EMBEDDING_ERROR_CODES } from '../providerInterface.js';
|
|
48
|
+
import { postEmbeddings, extractOpenAIShape } from './cloudHttpTransport.js';
|
|
49
|
+
|
|
50
|
+
const DEFAULT_DIMS = 1536; // embed-v-4-0 / text-embedding-3-small default
|
|
51
|
+
const DEFAULT_MAX_BATCH = 16; // safe across Azure deployments
|
|
52
|
+
const DEFAULT_MAX_TOKENS = 8191;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Normalize the user-supplied endpoint into a full POST URL. The
|
|
56
|
+
* Azure portal copy-paste typically gives the OpenAI-compat baseURL
|
|
57
|
+
* (e.g. `.../openai/v1/`) — we append `embeddings` if needed, strip
|
|
58
|
+
* trailing slashes, and leave already-suffixed URLs alone.
|
|
59
|
+
*
|
|
60
|
+
* Exported for tests + future shared use by other custom providers.
|
|
61
|
+
*
|
|
62
|
+
* @param {string} url
|
|
63
|
+
* @returns {string}
|
|
64
|
+
*/
|
|
65
|
+
export function normalizeEmbeddingsUrl(url) {
|
|
66
|
+
if (typeof url !== 'string' || !url.trim()) return url;
|
|
67
|
+
let u = url.trim().replace(/\/+$/, '');
|
|
68
|
+
if (!/\/embeddings$/.test(u)) u = `${u}/embeddings`;
|
|
69
|
+
return u;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export class AzureCustomEmbeddingProvider extends EmbeddingProvider {
|
|
73
|
+
/**
|
|
74
|
+
* @param {object} opts
|
|
75
|
+
* @param {string} opts.endpoint - Raw or normalized URL; we auto-append `/embeddings`.
|
|
76
|
+
* @param {string} opts.deployment - The deployed model name (e.g. `embed-v-4-0`).
|
|
77
|
+
* @param {() => string|null} opts.getApiKey - Returns the current API key.
|
|
78
|
+
* @param {number} [opts.dimensions] - Required for non-default models; defaults to 1536.
|
|
79
|
+
* @param {number} [opts.maxBatchSize]
|
|
80
|
+
* @param {number} [opts.timeoutMs]
|
|
81
|
+
* @param {typeof fetch} [opts.fetchImpl] - Injectable for tests.
|
|
82
|
+
*/
|
|
83
|
+
constructor({
|
|
84
|
+
endpoint,
|
|
85
|
+
deployment,
|
|
86
|
+
getApiKey,
|
|
87
|
+
dimensions = DEFAULT_DIMS,
|
|
88
|
+
maxBatchSize = DEFAULT_MAX_BATCH,
|
|
89
|
+
timeoutMs,
|
|
90
|
+
fetchImpl,
|
|
91
|
+
} = {}) {
|
|
92
|
+
super();
|
|
93
|
+
if (!endpoint) throw new Error('AzureCustomEmbeddingProvider requires endpoint');
|
|
94
|
+
if (!deployment) throw new Error('AzureCustomEmbeddingProvider requires deployment (the deployed model name)');
|
|
95
|
+
if (typeof getApiKey !== 'function') {
|
|
96
|
+
throw new Error('AzureCustomEmbeddingProvider requires a getApiKey() callback');
|
|
97
|
+
}
|
|
98
|
+
this._url = normalizeEmbeddingsUrl(endpoint);
|
|
99
|
+
this._modelId = deployment;
|
|
100
|
+
this._getApiKey = getApiKey;
|
|
101
|
+
this._dimensions = Number.isInteger(dimensions) && dimensions > 0 ? dimensions : DEFAULT_DIMS;
|
|
102
|
+
this._maxBatchSize = Number.isInteger(maxBatchSize) && maxBatchSize > 0 ? maxBatchSize : DEFAULT_MAX_BATCH;
|
|
103
|
+
this._timeoutMs = timeoutMs;
|
|
104
|
+
this._fetchImpl = fetchImpl;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
getInfo() {
|
|
108
|
+
return {
|
|
109
|
+
name: 'azure-custom',
|
|
110
|
+
modelId: this._modelId,
|
|
111
|
+
dimensions: this._dimensions,
|
|
112
|
+
maxBatchSize: this._maxBatchSize,
|
|
113
|
+
maxTokensPerText: DEFAULT_MAX_TOKENS,
|
|
114
|
+
distinguishesQueryAndDocument: false,
|
|
115
|
+
isLocal: false,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
async health() {
|
|
120
|
+
const key = this._getApiKey();
|
|
121
|
+
if (!key) return { ok: false, reason: 'No API key set for the Azure custom deployment. Add one under Settings → Embeddings.' };
|
|
122
|
+
return { ok: true };
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
async _embed(texts, _kind) {
|
|
126
|
+
const apiKey = this._getApiKey();
|
|
127
|
+
if (!apiKey) {
|
|
128
|
+
throw new EmbeddingError(
|
|
129
|
+
EMBEDDING_ERROR_CODES.AUTH_ERROR,
|
|
130
|
+
'No API key set for the Azure custom deployment. Add one under Settings → Embeddings.',
|
|
131
|
+
{ provider: 'azure-custom', transient: false },
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
return postEmbeddings({
|
|
135
|
+
url: this._url,
|
|
136
|
+
headers: {
|
|
137
|
+
Authorization: `Bearer ${apiKey}`,
|
|
138
|
+
'Content-Type': 'application/json',
|
|
139
|
+
},
|
|
140
|
+
// `encoding_format: 'float'` is explicit per Azure / Cohere Embed v4
|
|
141
|
+
// best-practice docs. OpenAI's hosted endpoint accepts it without
|
|
142
|
+
// change; the compat layer requires it for some non-OpenAI models.
|
|
143
|
+
body: { input: texts, model: this._modelId, encoding_format: 'float' },
|
|
144
|
+
providerName: 'azure-custom',
|
|
145
|
+
extractVectors: extractOpenAIShape,
|
|
146
|
+
timeoutMs: this._timeoutMs,
|
|
147
|
+
fetchImpl: this._fetchImpl,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
getModelFingerprint() {
|
|
152
|
+
return `azure-custom:${this._modelId}@${this._dimensions}d`;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AzureEmbeddingProvider — talks to Azure OpenAI Embeddings via the
|
|
3
|
+
* Loxia backend proxy at `${baseUrl}/llm/embed`.
|
|
4
|
+
*
|
|
5
|
+
* Why through the backend (not direct to Azure):
|
|
6
|
+
* - Same auth path as chat: ApiKeyManager holds the Loxia key, the
|
|
7
|
+
* backend holds the Azure key. No raw Azure credentials in the CLI.
|
|
8
|
+
* - Brand routing happens server-side: autopilot and onbuzz both
|
|
9
|
+
* point at the same shared embedding deployment per current
|
|
10
|
+
* architectural decision (single endpoint for both brands).
|
|
11
|
+
* - Lets us swap models / deployments without redeploying the CLI.
|
|
12
|
+
*
|
|
13
|
+
* Backend contract (must match autopilot-backend `/llm/embed` route):
|
|
14
|
+
*
|
|
15
|
+
* POST ${baseUrl}/llm/embed
|
|
16
|
+
* Authorization: Bearer <loxiaApiKey>
|
|
17
|
+
* Content-Type: application/json
|
|
18
|
+
*
|
|
19
|
+
* { "input": ["text 1", "text 2"], "model": "text-embedding-3-small" }
|
|
20
|
+
*
|
|
21
|
+
* → { "data": [{ "embedding": [0.1, …] }, …],
|
|
22
|
+
* "usage": { "prompt_tokens": N, "total_tokens": N },
|
|
23
|
+
* "model": "text-embedding-3-small" }
|
|
24
|
+
*
|
|
25
|
+
* NOTE: The backend `/llm/embed` route is the server-side counterpart
|
|
26
|
+
* that proxies to Azure OpenAI Embeddings. If it doesn't exist yet,
|
|
27
|
+
* this provider will fail with PROVIDER_UNAVAILABLE on the first call.
|
|
28
|
+
* That's intentional — surface the missing infrastructure clearly.
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
import { EmbeddingProvider, EmbeddingError, EMBEDDING_ERROR_CODES } from '../providerInterface.js';
|
|
32
|
+
import { postEmbeddings, extractOpenAIShape } from './cloudHttpTransport.js';
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Default Azure embedding model. Loxia routes both autopilot + onbuzz
|
|
36
|
+
* to the same deployment per the shared-endpoint decision; the deployment
|
|
37
|
+
* name lives on the backend side.
|
|
38
|
+
*/
|
|
39
|
+
const DEFAULT_MODEL = 'text-embedding-3-small';
|
|
40
|
+
const DEFAULT_DIMS = 1536;
|
|
41
|
+
const DEFAULT_MAX_BATCH = 16;
|
|
42
|
+
const DEFAULT_MAX_TOKENS = 8191;
|
|
43
|
+
|
|
44
|
+
export class AzureEmbeddingProvider extends EmbeddingProvider {
|
|
45
|
+
/**
|
|
46
|
+
* @param {object} opts
|
|
47
|
+
* @param {string} opts.baseUrl - Loxia backend base URL (matches aiService).
|
|
48
|
+
* @param {() => string|null} opts.getApiKey - Callback returning the current
|
|
49
|
+
* Loxia API key. Callback (not stored string) so key rotation in the
|
|
50
|
+
* ApiKeyManager is picked up immediately without re-instantiating.
|
|
51
|
+
* @param {string} [opts.modelId]
|
|
52
|
+
* @param {number} [opts.dimensions]
|
|
53
|
+
* @param {number} [opts.maxBatchSize]
|
|
54
|
+
* @param {number} [opts.timeoutMs]
|
|
55
|
+
* @param {typeof fetch} [opts.fetchImpl] - Injectable for tests.
|
|
56
|
+
*/
|
|
57
|
+
constructor({
|
|
58
|
+
baseUrl,
|
|
59
|
+
getApiKey,
|
|
60
|
+
modelId = DEFAULT_MODEL,
|
|
61
|
+
dimensions = DEFAULT_DIMS,
|
|
62
|
+
maxBatchSize = DEFAULT_MAX_BATCH,
|
|
63
|
+
timeoutMs,
|
|
64
|
+
fetchImpl,
|
|
65
|
+
}) {
|
|
66
|
+
super();
|
|
67
|
+
if (!baseUrl) {
|
|
68
|
+
throw new Error('AzureEmbeddingProvider requires a baseUrl');
|
|
69
|
+
}
|
|
70
|
+
if (typeof getApiKey !== 'function') {
|
|
71
|
+
throw new Error('AzureEmbeddingProvider requires a getApiKey() callback');
|
|
72
|
+
}
|
|
73
|
+
this._baseUrl = baseUrl.replace(/\/+$/, '');
|
|
74
|
+
this._getApiKey = getApiKey;
|
|
75
|
+
this._modelId = modelId;
|
|
76
|
+
this._dimensions = dimensions;
|
|
77
|
+
this._maxBatchSize = maxBatchSize;
|
|
78
|
+
this._timeoutMs = timeoutMs;
|
|
79
|
+
this._fetchImpl = fetchImpl;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
getInfo() {
|
|
83
|
+
return {
|
|
84
|
+
name: 'azure',
|
|
85
|
+
modelId: this._modelId,
|
|
86
|
+
dimensions: this._dimensions,
|
|
87
|
+
maxBatchSize: this._maxBatchSize,
|
|
88
|
+
maxTokensPerText: DEFAULT_MAX_TOKENS,
|
|
89
|
+
distinguishesQueryAndDocument: false, // OpenAI-family models don't
|
|
90
|
+
isLocal: false,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
async health() {
|
|
95
|
+
const key = this._getApiKey();
|
|
96
|
+
if (!key) return { ok: false, reason: 'No Loxia API key available — sign in or set one in Settings.' };
|
|
97
|
+
return { ok: true };
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
async _embed(texts, _kind) {
|
|
101
|
+
const apiKey = this._getApiKey();
|
|
102
|
+
if (!apiKey) {
|
|
103
|
+
throw new EmbeddingError(
|
|
104
|
+
EMBEDDING_ERROR_CODES.AUTH_ERROR,
|
|
105
|
+
'No Loxia API key available — sign in or set one in Settings.',
|
|
106
|
+
{ provider: 'azure', transient: false },
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
return postEmbeddings({
|
|
110
|
+
url: `${this._baseUrl}/llm/embed`,
|
|
111
|
+
headers: {
|
|
112
|
+
Authorization: `Bearer ${apiKey}`,
|
|
113
|
+
'Content-Type': 'application/json',
|
|
114
|
+
},
|
|
115
|
+
body: { input: texts, model: this._modelId },
|
|
116
|
+
providerName: 'azure',
|
|
117
|
+
extractVectors: extractOpenAIShape,
|
|
118
|
+
timeoutMs: this._timeoutMs,
|
|
119
|
+
fetchImpl: this._fetchImpl,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* cloudHttpTransport — shared HTTP plumbing for the cloud embedding
|
|
3
|
+
* providers (Azure, OpenAI).
|
|
4
|
+
*
|
|
5
|
+
* Why factored out: Azure and OpenAI exchange the SAME request/response
|
|
6
|
+
* shape (the OpenAI embeddings API: `{ input, model }` in, `{ data: [{
|
|
7
|
+
* embedding: number[] }] }` out). They differ only in:
|
|
8
|
+
* - URL (Loxia backend's `/llm/embed` proxy vs. api.openai.com directly)
|
|
9
|
+
* - auth header (Loxia Authorization Bearer vs. OpenAI Bearer or
|
|
10
|
+
* Azure api-key)
|
|
11
|
+
* - whether a `deployment` is on the URL path or in the body
|
|
12
|
+
*
|
|
13
|
+
* The shared transport handles: timeouts via AbortController, JSON
|
|
14
|
+
* parse/serialize, status-code → EmbeddingError categorisation, and
|
|
15
|
+
* shape normalisation. The provider subclasses configure the URL +
|
|
16
|
+
* auth headers and stay thin.
|
|
17
|
+
*
|
|
18
|
+
* Error categorisation matches the agent-scheduler convention (see
|
|
19
|
+
* src/core/agentScheduler.js handleAIServiceFailure):
|
|
20
|
+
* 401/403 → AUTH_ERROR (persistent)
|
|
21
|
+
* 404 → MODEL_NOT_FOUND (persistent)
|
|
22
|
+
* 400/422 → INVALID_INPUT (persistent)
|
|
23
|
+
* 429 → RATE_LIMITED (transient)
|
|
24
|
+
* 5xx → PROVIDER_UNAVAILABLE (transient)
|
|
25
|
+
* network / abort → NETWORK_ERROR (transient)
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
import {
|
|
29
|
+
EmbeddingError,
|
|
30
|
+
EMBEDDING_ERROR_CODES,
|
|
31
|
+
} from '../providerInterface.js';
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Default HTTP fetch timeout for embedding calls. Embedding APIs are
|
|
35
|
+
* fast (typically <1s for a batch of 16); a 30s ceiling catches stuck
|
|
36
|
+
* connections without making the agent wait noticeably on failure.
|
|
37
|
+
*/
|
|
38
|
+
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Send a single embeddings batch over HTTP and return raw number[][].
|
|
42
|
+
*
|
|
43
|
+
* @param {object} opts
|
|
44
|
+
* @param {string} opts.url - Full POST URL.
|
|
45
|
+
* @param {Object} opts.headers - Auth + content-type headers.
|
|
46
|
+
* @param {Object} opts.body - Request body (will be JSON.stringify'd).
|
|
47
|
+
* @param {string} opts.providerName - For error tagging only.
|
|
48
|
+
* @param {(json: any) => number[][]} opts.extractVectors
|
|
49
|
+
* - Pull the vectors out of the response payload. Different
|
|
50
|
+
* providers nest them slightly differently; we don't try to
|
|
51
|
+
* guess — each provider declares it explicitly.
|
|
52
|
+
* @param {number} [opts.timeoutMs=30_000]
|
|
53
|
+
* @param {typeof fetch} [opts.fetchImpl] - Injectable for tests.
|
|
54
|
+
* @returns {Promise<number[][]>}
|
|
55
|
+
* @throws {EmbeddingError}
|
|
56
|
+
*/
|
|
57
|
+
export async function postEmbeddings(opts) {
|
|
58
|
+
const {
|
|
59
|
+
url, headers, body, providerName, extractVectors,
|
|
60
|
+
timeoutMs = DEFAULT_TIMEOUT_MS, fetchImpl = globalThis.fetch,
|
|
61
|
+
} = opts;
|
|
62
|
+
|
|
63
|
+
if (typeof fetchImpl !== 'function') {
|
|
64
|
+
throw new EmbeddingError(
|
|
65
|
+
EMBEDDING_ERROR_CODES.NOT_INITIALIZED,
|
|
66
|
+
'global fetch is not available; pass a fetchImpl explicitly',
|
|
67
|
+
{ provider: providerName },
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const controller = new AbortController();
|
|
72
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
73
|
+
let response;
|
|
74
|
+
try {
|
|
75
|
+
response = await fetchImpl(url, {
|
|
76
|
+
method: 'POST',
|
|
77
|
+
headers,
|
|
78
|
+
body: JSON.stringify(body),
|
|
79
|
+
signal: controller.signal,
|
|
80
|
+
});
|
|
81
|
+
} catch (err) {
|
|
82
|
+
// Network failure / DNS / connection reset / abort.
|
|
83
|
+
const isAbort = err?.name === 'AbortError';
|
|
84
|
+
throw new EmbeddingError(
|
|
85
|
+
EMBEDDING_ERROR_CODES.NETWORK_ERROR,
|
|
86
|
+
isAbort ? `Request timed out after ${timeoutMs}ms` : `Network error: ${err?.message || err}`,
|
|
87
|
+
{ provider: providerName, transient: true, cause: err },
|
|
88
|
+
);
|
|
89
|
+
} finally {
|
|
90
|
+
clearTimeout(timer);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
if (!response.ok) {
|
|
94
|
+
const text = await safeReadBody(response);
|
|
95
|
+
throw classifyHttpError(response.status, text, providerName);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
let json;
|
|
99
|
+
try {
|
|
100
|
+
json = await response.json();
|
|
101
|
+
} catch (err) {
|
|
102
|
+
throw new EmbeddingError(
|
|
103
|
+
EMBEDDING_ERROR_CODES.PROVIDER_UNAVAILABLE,
|
|
104
|
+
`Provider returned non-JSON response: ${err?.message || err}`,
|
|
105
|
+
{ provider: providerName, transient: true, cause: err },
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
let vectors;
|
|
110
|
+
try {
|
|
111
|
+
vectors = extractVectors(json);
|
|
112
|
+
} catch (err) {
|
|
113
|
+
throw new EmbeddingError(
|
|
114
|
+
EMBEDDING_ERROR_CODES.PROVIDER_UNAVAILABLE,
|
|
115
|
+
`Could not extract vectors from response: ${err?.message || err}`,
|
|
116
|
+
{ provider: providerName, transient: true, cause: err },
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if (!Array.isArray(vectors)) {
|
|
121
|
+
throw new EmbeddingError(
|
|
122
|
+
EMBEDDING_ERROR_CODES.PROVIDER_UNAVAILABLE,
|
|
123
|
+
`extractVectors returned ${typeof vectors}, expected array`,
|
|
124
|
+
{ provider: providerName, transient: true },
|
|
125
|
+
);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return vectors;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/** Map an HTTP error response to the typed EmbeddingError. */
|
|
132
|
+
export function classifyHttpError(status, bodyText, providerName) {
|
|
133
|
+
// Truncate the body so the error message doesn't bloat the log line.
|
|
134
|
+
const snippet = (bodyText || '').slice(0, 240).replace(/\s+/g, ' ').trim();
|
|
135
|
+
const tail = snippet ? ` — ${snippet}` : '';
|
|
136
|
+
|
|
137
|
+
if (status === 401 || status === 403) {
|
|
138
|
+
return new EmbeddingError(
|
|
139
|
+
EMBEDDING_ERROR_CODES.AUTH_ERROR,
|
|
140
|
+
`Auth rejected (HTTP ${status})${tail}`,
|
|
141
|
+
{ provider: providerName, transient: false },
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
if (status === 404) {
|
|
145
|
+
return new EmbeddingError(
|
|
146
|
+
EMBEDDING_ERROR_CODES.MODEL_NOT_FOUND,
|
|
147
|
+
`Model or deployment not found (HTTP 404)${tail}`,
|
|
148
|
+
{ provider: providerName, transient: false },
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
if (status === 400 || status === 422) {
|
|
152
|
+
return new EmbeddingError(
|
|
153
|
+
EMBEDDING_ERROR_CODES.INVALID_INPUT,
|
|
154
|
+
`Request rejected (HTTP ${status})${tail}`,
|
|
155
|
+
{ provider: providerName, transient: false },
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
if (status === 429) {
|
|
159
|
+
return new EmbeddingError(
|
|
160
|
+
EMBEDDING_ERROR_CODES.RATE_LIMITED,
|
|
161
|
+
`Rate limited (HTTP 429)${tail}`,
|
|
162
|
+
{ provider: providerName, transient: true },
|
|
163
|
+
);
|
|
164
|
+
}
|
|
165
|
+
if (status >= 500) {
|
|
166
|
+
return new EmbeddingError(
|
|
167
|
+
EMBEDDING_ERROR_CODES.PROVIDER_UNAVAILABLE,
|
|
168
|
+
`Provider error (HTTP ${status})${tail}`,
|
|
169
|
+
{ provider: providerName, transient: true },
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
// Anything else gets the catch-all.
|
|
173
|
+
return new EmbeddingError(
|
|
174
|
+
EMBEDDING_ERROR_CODES.PROVIDER_UNAVAILABLE,
|
|
175
|
+
`Unexpected HTTP ${status}${tail}`,
|
|
176
|
+
{ provider: providerName, transient: true },
|
|
177
|
+
);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/** Read a response body as text, swallowing further errors. */
|
|
181
|
+
async function safeReadBody(response) {
|
|
182
|
+
try {
|
|
183
|
+
return await response.text();
|
|
184
|
+
} catch {
|
|
185
|
+
return '';
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Extractor for the standard OpenAI-shape embeddings response:
|
|
191
|
+
* { data: [{ embedding: number[] }, ...] }
|
|
192
|
+
* Both Azure OpenAI and OpenAI directly use this. Azure-via-Loxia-backend
|
|
193
|
+
* forwards the same shape after the proxy layer.
|
|
194
|
+
*/
|
|
195
|
+
export function extractOpenAIShape(json) {
|
|
196
|
+
if (!json || !Array.isArray(json.data)) {
|
|
197
|
+
throw new Error('response missing `data` array');
|
|
198
|
+
}
|
|
199
|
+
return json.data.map((row, i) => {
|
|
200
|
+
if (!row || !Array.isArray(row.embedding)) {
|
|
201
|
+
throw new Error(`data[${i}].embedding is not an array`);
|
|
202
|
+
}
|
|
203
|
+
return row.embedding;
|
|
204
|
+
});
|
|
205
|
+
}
|