onbuzz 4.8.3 → 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/bin/cli.js +27 -1
- package/bin/composio-cli.js +431 -0
- package/package.json +1 -1
- package/scripts/build-onboarding-doc.cjs +805 -0
- package/scripts/composio-bench/README.md +151 -0
- package/scripts/memory-bench/bench.mjs +576 -0
- package/scripts/memory-bench/live-after-2026-05-21T16-20-52-767Z.json +150 -0
- package/scripts/memory-bench/live-after-2026-05-21T16-37-17-147Z.json +795 -0
- package/scripts/memory-bench/live-after-final-2026-05-21T17-16-02-947Z.json +766 -0
- package/scripts/memory-bench/live-after-v2-2026-05-21T16-52-26-833Z.json +890 -0
- package/scripts/memory-bench/live-after-v3-2026-05-21T17-05-40-622Z.json +955 -0
- package/scripts/memory-bench/live-probe-v2.mjs +412 -0
- package/scripts/memory-bench/live-probe.mjs +387 -0
- package/scripts/memory-bench/live-smoke-2026-05-21T16-22-35-945Z.json +36 -0
- package/scripts/memory-bench/live-smoke2-2026-05-21T16-24-14-095Z.json +36 -0
- package/scripts/memory-bench/live-smoke3-2026-05-21T16-26-54-093Z.json +123 -0
- package/scripts/memory-bench/live-v2-baseline-2026-05-23T22-43-20-757Z.json +628 -0
- package/scripts/memory-bench/live-v2-directive-2026-05-23T21-32-41-369Z.json +628 -0
- package/scripts/memory-bench/live-v2-smoke-2026-05-23T20-06-37-325Z.json +34 -0
- package/scripts/memory-bench/live-v2-smoke-2026-05-23T20-12-48-199Z.json +38 -0
- package/scripts/memory-bench/results-baseline-2026-05-19T11-23-12-245Z.json +39 -0
- package/scripts/memory-bench/results-baseline-2026-05-19T11-30-28-763Z.json +1024 -0
- package/scripts/memory-bench/results-baseline-2026-05-19T11-34-19-299Z.json +1007 -0
- package/scripts/memory-bench/results-baseline-2026-05-19T11-44-18-054Z.json +1432 -0
- package/scripts/memory-bench/results-nudge-combined-2026-05-19T12-00-37-465Z.json +1413 -0
- package/scripts/memory-bench/results-nudge-directive-2026-05-19T11-36-52-963Z.json +210 -0
- package/scripts/memory-bench/results-nudge-directive-2026-05-19T11-49-55-790Z.json +1464 -0
- package/scripts/memory-bench/results-nudge-echo-catalog-2026-05-19T11-39-01-829Z.json +232 -0
- package/scripts/memory-bench/results-nudge-echo-catalog-2026-05-19T11-55-12-705Z.json +1397 -0
- package/scripts/memory-bench/scenarios-v2.mjs +123 -0
- package/scripts/memory-bench/scenarios.mjs +178 -0
- package/scripts/office-bench/generate-samples.mjs +180 -0
- package/scripts/op-posture-bench/bench.mjs +397 -0
- package/scripts/op-posture-bench/probe.mjs +87 -0
- package/scripts/op-posture-bench/results-2026-05-18T20-29-13-941Z.json +57 -0
- package/scripts/op-posture-bench/results-2026-05-18T20-38-36-400Z.json +3071 -0
- package/scripts/op-posture-bench/scenarios.mjs +60 -0
- package/scripts/op-posture-bench/variants.mjs +68 -0
- package/scripts/stub-bench/bench.mjs +439 -0
- package/scripts/stub-bench/fixture/auth.js +41 -0
- package/scripts/stub-bench/results-2026-05-19T10-33-27-045Z.json +99 -0
- package/scripts/stub-bench/results-2026-05-19T10-35-08-240Z.json +920 -0
- package/scripts/stub-bench/results-2026-05-19T10-40-12-166Z.json +463 -0
- 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/__tests__/composioCliFlags.test.js +239 -0
- package/src/core/__tests__/agentScheduler.autoRecall.test.js +215 -0
- package/src/core/__tests__/agentScheduler.codebaseKnowledge.test.js +65 -0
- package/src/core/__tests__/agentScheduler.errorCategorisation.test.js +169 -0
- package/src/core/__tests__/agentScheduler.memoryInjection.test.js +78 -0
- package/src/core/agentPool.js +10 -0
- package/src/core/agentScheduler.js +273 -36
- package/src/index.js +82 -4
- package/src/interfaces/__tests__/bulkAgentRoute.test.js +290 -0
- package/src/interfaces/__tests__/composioRoutes.test.js +318 -0
- package/src/interfaces/webServer.js +436 -2
- package/src/interfaces/webServer.js.bak +7047 -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__/codeMapStubRenderer.test.js +207 -0
- package/src/services/__tests__/codebaseKnowledgeService.test.js +427 -0
- package/src/services/__tests__/composioService.test.js +714 -0
- package/src/services/__tests__/memoryService.appendAndCatalog.test.js +139 -0
- package/src/services/__tests__/telegramService.test.js +91 -0
- package/src/services/aiService.js +137 -0
- package/src/services/apiKeyManager.js +61 -0
- package/src/services/codeMapStubRenderer.js +142 -0
- package/src/services/codebaseKnowledgeService.js +430 -0
- package/src/services/composioService.js +729 -0
- 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/memoryService.js +98 -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 +76 -10
- package/src/tools/__tests__/cloneDetectionTool.test.js +430 -0
- package/src/tools/__tests__/codeMapTool.pluralCanonical.test.js +83 -0
- package/src/tools/__tests__/composioTool.findAction.test.js +448 -0
- package/src/tools/__tests__/composioTool.test.js +499 -0
- 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.pluralCanonical.test.js +189 -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__/memoryTool.test.js +1 -1
- package/src/tools/__tests__/officeTool.test.js +403 -0
- package/src/tools/__tests__/openaiFunctionSchemas.memoryReminisce.test.js +24 -25
- package/src/tools/__tests__/openaiFunctionSchemas.validity.test.js +268 -0
- package/src/tools/__tests__/pdfTool.test.js +457 -0
- package/src/tools/__tests__/singularToolReverseForgive.test.js +97 -0
- package/src/tools/__tests__/skillsTool.search.test.js +164 -0
- package/src/tools/__tests__/taskManagerTool.discipline.test.js +137 -0
- package/src/tools/__tests__/taskManagerTool.search.test.js +143 -0
- package/src/tools/__tests__/taskManagerTool.transition.test.js +236 -0
- package/src/tools/__tests__/toolShapeForgiveness.test.js +260 -0
- package/src/tools/agentCommunicationTool.js +120 -5
- package/src/tools/baseTool.js +28 -1
- package/src/tools/codeMapTool.js +1673 -1521
- package/src/tools/composioTool.js +617 -0
- package/src/tools/fileContentReplaceTool.js +893 -840
- package/src/tools/fileSystemTool.js +1372 -1314
- package/src/tools/fileTreeTool.js +7 -0
- package/src/tools/memoryTool.js +847 -82
- package/src/tools/office/officeDoc.js +425 -0
- package/src/tools/office/officePres.js +360 -0
- package/src/tools/office/officeSheet.js +350 -0
- package/src/tools/officeTool.js +313 -0
- package/src/tools/openaiFunctionSchemas.js +824 -44
- package/src/tools/platformControlTool.js +5 -0
- package/src/tools/seekTool.js +36 -1
- package/src/tools/skillsTool.js +133 -0
- package/src/tools/taskManagerTool.js +264 -16
- package/src/tools/terminalTool.js +23 -1
- package/src/tools/visionTool.js +7 -0
- package/src/tools/visualEditorTool.js +7 -0
- package/src/tools/webTool.js +28 -1
- package/src/tools/whatsappTool.js +7 -0
- package/src/utilities/authCache.js +47 -6
- package/src/utilities/authCache.js.backup-1779570472481 +121 -0
- 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-DGpIT7i5.js +0 -1
- package/web-ui/build/static/abap-5wFDdWLh.js +0 -1
- package/web-ui/build/static/abnf-BP1dpNSE.js +0 -1
- package/web-ui/build/static/abnf-DBEIAl8g.js +0 -1
- package/web-ui/build/static/accesslog-CWSM_T5E.js +0 -1
- package/web-ui/build/static/actionscript-DONkco1J.js +0 -1
- package/web-ui/build/static/actionscript-FqBYk5er.js +0 -1
- package/web-ui/build/static/ada-C2JLRIaM.js +0 -1
- package/web-ui/build/static/ada-gKiygTRK.js +0 -1
- package/web-ui/build/static/agda-CkSODqK2.js +0 -1
- package/web-ui/build/static/al-BJ_YR6p7.js +0 -1
- package/web-ui/build/static/angelscript-Dg2byMGg.js +0 -1
- package/web-ui/build/static/antlr4-BnpyaFNr.js +0 -1
- package/web-ui/build/static/apache-Dffxsd7O.js +0 -1
- package/web-ui/build/static/apacheconf-DLitjtWj.js +0 -1
- package/web-ui/build/static/apex-Drr_IvU2.js +0 -1
- package/web-ui/build/static/apl-CF6qxmXG.js +0 -1
- package/web-ui/build/static/applescript-CjOlw3b_.js +0 -1
- package/web-ui/build/static/applescript-DjkSl1Ry.js +0 -1
- package/web-ui/build/static/aql-KwVmK1gP.js +0 -1
- package/web-ui/build/static/arcade-CENSXx0R.js +0 -1
- package/web-ui/build/static/arduino-B3Ta9Fll.js +0 -1
- package/web-ui/build/static/arduino-CzcsaB9_.js +0 -1
- package/web-ui/build/static/arff-CMJSVt_O.js +0 -1
- package/web-ui/build/static/armasm-0zSgSPB4.js +0 -1
- package/web-ui/build/static/asciidoc-B8K5ctWq.js +0 -1
- package/web-ui/build/static/asciidoc-bk2Sg6b6.js +0 -1
- package/web-ui/build/static/asm6502-ji6zm4FQ.js +0 -1
- package/web-ui/build/static/asmatmel-DJqObM4Y.js +0 -1
- package/web-ui/build/static/aspectj-DqQKI7J5.js +0 -1
- package/web-ui/build/static/aspnet-9cenTxW7.js +0 -1
- package/web-ui/build/static/autohotkey-C6EhiZvl.js +0 -1
- package/web-ui/build/static/autohotkey-sTGJOvMM.js +0 -1
- package/web-ui/build/static/autoit-B0Im8iQ1.js +0 -1
- package/web-ui/build/static/autoit-CO6pUD0H.js +0 -1
- package/web-ui/build/static/avisynth-OvOHTfj5.js +0 -1
- package/web-ui/build/static/avrasm-BLWZ5Mye.js +0 -1
- package/web-ui/build/static/avro-idl-BB2ODvnw.js +0 -1
- package/web-ui/build/static/awk-_jhMabQ0.js +0 -1
- package/web-ui/build/static/axapta-DdBRgoYy.js +0 -1
- package/web-ui/build/static/bash-CsaRGXBQ.js +0 -1
- package/web-ui/build/static/bash-CxLFkwAC.js +0 -1
- package/web-ui/build/static/basic-BJyy7JJE.js +0 -1
- package/web-ui/build/static/basic-CrMb-gv0.js +0 -1
- package/web-ui/build/static/batch-BvcykMe5.js +0 -1
- package/web-ui/build/static/bbcode-EOBuY5Y6.js +0 -1
- package/web-ui/build/static/bicep-QkDJBA34.js +0 -1
- package/web-ui/build/static/birb-TAOxKurn.js +0 -1
- package/web-ui/build/static/bison-BEK6cnad.js +0 -1
- package/web-ui/build/static/bnf-DfEODxsr.js +0 -1
- package/web-ui/build/static/bnf-DhbMjsuA.js +0 -1
- package/web-ui/build/static/brainfuck-BoVocOa7.js +0 -1
- package/web-ui/build/static/brainfuck-DDC5QXPK.js +0 -1
- package/web-ui/build/static/brightscript-DNN598w2.js +0 -1
- package/web-ui/build/static/bro-Cn_jjZ8P.js +0 -1
- package/web-ui/build/static/bsl-CMCN75Gu.js +0 -1
- package/web-ui/build/static/c-DbOGQnEJ.js +0 -1
- package/web-ui/build/static/c-kggwYFsy.js +0 -1
- package/web-ui/build/static/c-like-BIsuUvof.js +0 -1
- package/web-ui/build/static/cal-DpgMsBZE.js +0 -1
- package/web-ui/build/static/capnproto-C1AHYI-M.js +0 -1
- package/web-ui/build/static/ceylon-pvJffDe1.js +0 -1
- package/web-ui/build/static/cfscript-C1qylu52.js +0 -1
- package/web-ui/build/static/chaiscript-D417WKRI.js +0 -1
- package/web-ui/build/static/cil-CjbZHbcY.js +0 -1
- package/web-ui/build/static/clean-Dvc6R-F2.js +0 -1
- package/web-ui/build/static/clojure-CSVRQPMQ.js +0 -1
- package/web-ui/build/static/clojure-ig1Vkg7X.js +0 -1
- package/web-ui/build/static/clojure-repl-C1uyEabk.js +0 -1
- package/web-ui/build/static/cmake-DSbVcAB3.js +0 -1
- package/web-ui/build/static/cmake-Zp8kPwnH.js +0 -1
- package/web-ui/build/static/cobol-OsZSiK_P.js +0 -1
- package/web-ui/build/static/coffeescript-D8r0416S.js +0 -1
- package/web-ui/build/static/coffeescript-DCpgClxh.js +0 -1
- package/web-ui/build/static/concurnas-DKnsxUOc.js +0 -1
- package/web-ui/build/static/coq-BQFlywVI.js +0 -1
- package/web-ui/build/static/coq-BvS9mQB2.js +0 -1
- package/web-ui/build/static/cos-D3ze2791.js +0 -1
- package/web-ui/build/static/cpp-Bw-cV3P1.js +0 -1
- package/web-ui/build/static/cpp-vi1p7XpB.js +0 -1
- package/web-ui/build/static/crmsh-BClnJTeQ.js +0 -1
- package/web-ui/build/static/crystal-DGzOUYZq.js +0 -1
- package/web-ui/build/static/crystal-DMzk6EvA.js +0 -1
- package/web-ui/build/static/csharp-BTom8s2X.js +0 -1
- package/web-ui/build/static/csharp-Cp2V3jfR.js +0 -1
- package/web-ui/build/static/cshtml-Dmtt9Kto.js +0 -1
- package/web-ui/build/static/csp-WPVsLe9_.js +0 -1
- package/web-ui/build/static/csp-qddj5fu_.js +0 -1
- package/web-ui/build/static/css-B0FAm7kj.js +0 -1
- package/web-ui/build/static/css-extras-Bx3pvjiG.js +0 -1
- package/web-ui/build/static/csv-CH-edgS5.js +0 -1
- package/web-ui/build/static/cypher-c3G8Leew.js +0 -1
- package/web-ui/build/static/d-BMDSy22_.js +0 -1
- package/web-ui/build/static/d-BdH4oW8-.js +0 -1
- package/web-ui/build/static/dart-C-r72q-O.js +0 -1
- package/web-ui/build/static/dart-CwpBMrKa.js +0 -1
- package/web-ui/build/static/dataweave-BPvqdt4k.js +0 -1
- package/web-ui/build/static/dax-Eyy6ixcN.js +0 -1
- package/web-ui/build/static/delphi-DhEbPj_5.js +0 -1
- package/web-ui/build/static/dhall-Ct1L8sN1.js +0 -1
- package/web-ui/build/static/diff-CSTqCgwn.js +0 -1
- package/web-ui/build/static/diff-Da97B5vW.js +0 -1
- package/web-ui/build/static/django-DGit_lCg.js +0 -1
- package/web-ui/build/static/django-DPgqFB8k.js +0 -1
- package/web-ui/build/static/dns-DUyXuZ-a.js +0 -1
- package/web-ui/build/static/dns-zone-file-D79MDxVG.js +0 -1
- package/web-ui/build/static/docker-DTiy4o38.js +0 -1
- package/web-ui/build/static/dockerfile-CvwPP8wE.js +0 -1
- package/web-ui/build/static/dos-CaIUWxvb.js +0 -1
- package/web-ui/build/static/dot-D3504w6Y.js +0 -1
- package/web-ui/build/static/dsconfig-Smy1eeX_.js +0 -1
- package/web-ui/build/static/dts-DyTYSXZj.js +0 -1
- package/web-ui/build/static/dust-CrJyi6qA.js +0 -1
- package/web-ui/build/static/ebnf-C8nqfkBH.js +0 -1
- package/web-ui/build/static/ebnf-Cuh5Vh2-.js +0 -1
- package/web-ui/build/static/editorconfig-C7pTGl6n.js +0 -1
- package/web-ui/build/static/eiffel-C75MSJCA.js +0 -1
- package/web-ui/build/static/ejs-Dyo7DF5w.js +0 -1
- package/web-ui/build/static/elixir-D4yJefOc.js +0 -1
- package/web-ui/build/static/elixir-DKRow2SJ.js +0 -1
- package/web-ui/build/static/elm-CgbdDlkT.js +0 -1
- package/web-ui/build/static/elm-D3N-UgU0.js +0 -1
- package/web-ui/build/static/erb-BsITh8qW.js +0 -1
- package/web-ui/build/static/erb-lY_LyKyS.js +0 -1
- package/web-ui/build/static/erlang-BCnPiYmB.js +0 -1
- package/web-ui/build/static/erlang-JEghiPXc.js +0 -1
- package/web-ui/build/static/erlang-repl-DzU97ugC.js +0 -1
- package/web-ui/build/static/etlua-CsBo8cJa.js +0 -1
- package/web-ui/build/static/excel-formula-C2piiCYa.js +0 -1
- package/web-ui/build/static/excel-kqNypwQD.js +0 -1
- package/web-ui/build/static/factor-DZTOhkyU.js +0 -1
- package/web-ui/build/static/false-yLjhfaSw.js +0 -1
- package/web-ui/build/static/firestore-security-rules-oaQNoH8l.js +0 -1
- package/web-ui/build/static/fix-C9IfnTuS.js +0 -1
- package/web-ui/build/static/flix-EmJ_JhPo.js +0 -1
- package/web-ui/build/static/flow-DCUl7IAQ.js +0 -1
- package/web-ui/build/static/fortran-DvyxJmFN.js +0 -1
- package/web-ui/build/static/fortran-EEP9R3S5.js +0 -1
- package/web-ui/build/static/fsharp-D_98s3RX.js +0 -1
- package/web-ui/build/static/fsharp-Dt9jOO5G.js +0 -1
- package/web-ui/build/static/ftl-C8gMHWLo.js +0 -1
- package/web-ui/build/static/gams-BHxVPb4z.js +0 -1
- package/web-ui/build/static/gap-DFtyHk-q.js +0 -1
- package/web-ui/build/static/gauss-BwhJWUcg.js +0 -1
- package/web-ui/build/static/gcode-BvmXwp09.js +0 -1
- package/web-ui/build/static/gcode-gWcD6Vc7.js +0 -1
- package/web-ui/build/static/gdscript-btHoX8RE.js +0 -1
- package/web-ui/build/static/gedcom-MgPs9iqh.js +0 -1
- package/web-ui/build/static/gherkin-B9c_Q16A.js +0 -1
- package/web-ui/build/static/gherkin-BvOgkK6h.js +0 -1
- package/web-ui/build/static/git-D9XWOVcQ.js +0 -1
- package/web-ui/build/static/glsl-CshBHxHY.js +0 -1
- package/web-ui/build/static/glsl-fNRUMTDr.js +0 -1
- package/web-ui/build/static/gml-B78deHK8.js +0 -1
- package/web-ui/build/static/gml-Cj7d2u8O.js +0 -1
- package/web-ui/build/static/gn-CJLD-mF1.js +0 -1
- package/web-ui/build/static/go-CT93BEkL.js +0 -1
- package/web-ui/build/static/go-CTTlNuQO.js +0 -1
- package/web-ui/build/static/go-module-BgnXboUE.js +0 -1
- package/web-ui/build/static/golo-2S5tXS-l.js +0 -1
- package/web-ui/build/static/gradle-8W8DCcWJ.js +0 -1
- package/web-ui/build/static/graphql-DZfp6FNU.js +0 -1
- package/web-ui/build/static/groovy-BfsyMb3X.js +0 -1
- package/web-ui/build/static/groovy-Dxov7ENz.js +0 -1
- package/web-ui/build/static/haml-BlUFsdVV.js +0 -1
- package/web-ui/build/static/haml-CjVj6vvW.js +0 -1
- package/web-ui/build/static/handlebars-DxrQFkyA.js +0 -1
- package/web-ui/build/static/handlebars-FE6fotYl.js +0 -1
- package/web-ui/build/static/haskell-B6z0RCD_.js +0 -1
- package/web-ui/build/static/haskell-JBFmJTRy.js +0 -1
- package/web-ui/build/static/haxe-BtMZMi-_.js +0 -1
- package/web-ui/build/static/haxe-C1J8n-fH.js +0 -1
- package/web-ui/build/static/hcl-DJP-bFWE.js +0 -1
- package/web-ui/build/static/hlsl-DrGjhs1b.js +0 -1
- package/web-ui/build/static/hoon-Cg-ZhqIT.js +0 -1
- package/web-ui/build/static/hpkp-D07vgmoZ.js +0 -1
- package/web-ui/build/static/hsp-CsypPWoA.js +0 -1
- package/web-ui/build/static/hsts-B6DMRxvP.js +0 -1
- package/web-ui/build/static/htmlbars-BI7_Hw4e.js +0 -1
- package/web-ui/build/static/http-90ihEi4s.js +0 -1
- package/web-ui/build/static/http-Dp4QXj9E.js +0 -1
- package/web-ui/build/static/hy-BMgKvP4K.js +0 -1
- package/web-ui/build/static/ichigojam-D6wKvJDb.js +0 -1
- package/web-ui/build/static/icon-CrgkmCwl.js +0 -1
- package/web-ui/build/static/icu-message-format-Bi2JxCXs.js +0 -1
- package/web-ui/build/static/idris-DbUsyZt5.js +0 -1
- package/web-ui/build/static/iecst-CQZ9t8fW.js +0 -1
- package/web-ui/build/static/ignore-BaFgtNMs.js +0 -1
- package/web-ui/build/static/index-DEWSWosh.css +0 -1
- package/web-ui/build/static/index-Di1bjCFA.js +0 -13
- package/web-ui/build/static/index-otR_WSsL.js +0 -1
- package/web-ui/build/static/index-whZPU4as.js +0 -1183
- package/web-ui/build/static/inform7-ClyX1Gro.js +0 -1
- package/web-ui/build/static/inform7-tZHBS5XP.js +0 -1
- package/web-ui/build/static/ini-BrP5JNYL.js +0 -1
- package/web-ui/build/static/ini-CVkrAhwV.js +0 -1
- package/web-ui/build/static/io-BJ1Y6Bdc.js +0 -1
- package/web-ui/build/static/irpf90-fjjcKS_8.js +0 -1
- package/web-ui/build/static/isbl-ClpvfUIz.js +0 -1
- package/web-ui/build/static/j-CICW77xS.js +0 -1
- package/web-ui/build/static/java-B9DFK-0E.js +0 -1
- package/web-ui/build/static/java-BL_6rYko.js +0 -1
- package/web-ui/build/static/javadoc-Cc4HKpKK.js +0 -1
- package/web-ui/build/static/javadoclike-CgNkUDOm.js +0 -1
- package/web-ui/build/static/javascript-CM40ZECq.js +0 -1
- package/web-ui/build/static/javastacktrace-BHSqXfG5.js +0 -1
- package/web-ui/build/static/jboss-cli-Bv5NhVSZ.js +0 -1
- package/web-ui/build/static/jexl--Ohk_keA.js +0 -1
- package/web-ui/build/static/jolie-DMTN5Vdf.js +0 -1
- package/web-ui/build/static/jq-nXRLldXX.js +0 -1
- package/web-ui/build/static/js-extras-eLwv3frs.js +0 -1
- package/web-ui/build/static/js-templates-Ca0owlrg.js +0 -1
- package/web-ui/build/static/jsdoc-KERXp0da.js +0 -1
- package/web-ui/build/static/json-BTjLaRsy.js +0 -1
- package/web-ui/build/static/json-p7pU0qdW.js +0 -1
- package/web-ui/build/static/json5-Cxjy1udc.js +0 -1
- package/web-ui/build/static/jsonp-CO52H7Gy.js +0 -1
- package/web-ui/build/static/jsstacktrace-8YKfoyJP.js +0 -1
- package/web-ui/build/static/jsx-Ct_05KbM.js +0 -1
- package/web-ui/build/static/julia-23I1ubCE.js +0 -1
- package/web-ui/build/static/julia-d8rVGed_.js +0 -1
- package/web-ui/build/static/julia-repl-mwnHedW_.js +0 -1
- package/web-ui/build/static/keepalived-E85Rx_fF.js +0 -1
- package/web-ui/build/static/keyman-aWd3QUDq.js +0 -1
- package/web-ui/build/static/kotlin-Cu370hQq.js +0 -1
- package/web-ui/build/static/kotlin-DoJ2WnmZ.js +0 -1
- package/web-ui/build/static/kumir-oiOgqcQO.js +0 -1
- package/web-ui/build/static/kusto-Bp-B02K5.js +0 -1
- package/web-ui/build/static/lasso-BxoQVwOO.js +0 -1
- package/web-ui/build/static/latex-CANm5vsX.js +0 -1
- package/web-ui/build/static/latex-PMroeNch.js +0 -1
- package/web-ui/build/static/latte-2ErU_2XF.js +0 -1
- package/web-ui/build/static/ldif-ChPn_F7o.js +0 -1
- package/web-ui/build/static/leaf-UkCugDgG.js +0 -1
- package/web-ui/build/static/less-CCH5RA89.js +0 -1
- package/web-ui/build/static/less-CGZbVU1g.js +0 -1
- package/web-ui/build/static/lilypond-BoyM37sv.js +0 -1
- package/web-ui/build/static/liquid-DGJVpRBi.js +0 -1
- package/web-ui/build/static/lisp-93nne61u.js +0 -1
- package/web-ui/build/static/lisp-DYjIRsXz.js +0 -1
- package/web-ui/build/static/livecodeserver-CfNaxIE4.js +0 -1
- package/web-ui/build/static/livescript-C8kDlQkz.js +0 -1
- package/web-ui/build/static/livescript-CoarnRHq.js +0 -1
- package/web-ui/build/static/llvm-CBVyNmAh.js +0 -1
- package/web-ui/build/static/llvm-DGxq8a7u.js +0 -1
- package/web-ui/build/static/log-BivgwFql.js +0 -1
- package/web-ui/build/static/lolcode-l5sK2cZz.js +0 -1
- package/web-ui/build/static/lsl-Xm44xLRQ.js +0 -1
- package/web-ui/build/static/lua-CGvrzfKp.js +0 -1
- package/web-ui/build/static/lua-nHwXeY4c.js +0 -1
- package/web-ui/build/static/magma-DmNItmna.js +0 -1
- package/web-ui/build/static/makefile-CKJNNHGb.js +0 -1
- package/web-ui/build/static/makefile-DI6y5Qml.js +0 -1
- package/web-ui/build/static/markdown-BgpbxKd-.js +0 -1
- package/web-ui/build/static/markdown-CvcxA4yk.js +0 -1
- package/web-ui/build/static/markup-templating-DijqesiA.js +0 -1
- package/web-ui/build/static/mathematica-Cxll1Q10.js +0 -1
- package/web-ui/build/static/matlab-BJo2T1A-.js +0 -1
- package/web-ui/build/static/matlab-C6DlZX4l.js +0 -1
- package/web-ui/build/static/maxima-DJXO4sbL.js +0 -1
- package/web-ui/build/static/maxscript-DdLpUYBs.js +0 -1
- package/web-ui/build/static/mel-BIpfnSyZ.js +0 -1
- package/web-ui/build/static/mel-BYcTUZJW.js +0 -1
- package/web-ui/build/static/mercury-C_LSpbD8.js +0 -1
- package/web-ui/build/static/mermaid-D9yBWnrT.js +0 -1
- package/web-ui/build/static/mipsasm-nR_K2Ue-.js +0 -1
- package/web-ui/build/static/mizar-BeLUPncD.js +0 -1
- package/web-ui/build/static/mizar-BesIbZd9.js +0 -1
- package/web-ui/build/static/mojolicious-cBx3OWa-.js +0 -1
- package/web-ui/build/static/mongodb-DTWKy9ac.js +0 -1
- package/web-ui/build/static/monkey-B72bZC3c.js +0 -1
- package/web-ui/build/static/monkey-G9XELYPQ.js +0 -1
- package/web-ui/build/static/moonscript-BXYVQiqj.js +0 -1
- package/web-ui/build/static/moonscript-sDd-5knz.js +0 -1
- package/web-ui/build/static/n1ql-0vKSfFAO.js +0 -1
- package/web-ui/build/static/n1ql-C9_BSZfz.js +0 -1
- package/web-ui/build/static/n4js-B7Ct8dds.js +0 -1
- package/web-ui/build/static/nand2tetris-hdl-p9gpphTM.js +0 -1
- package/web-ui/build/static/naniscript-6ZVr8Aug.js +0 -1
- package/web-ui/build/static/nasm-Ca73yTUt.js +0 -1
- package/web-ui/build/static/neon-DNP49oyX.js +0 -1
- package/web-ui/build/static/nevod-Qhgt7Bce.js +0 -1
- package/web-ui/build/static/nginx-D5e7lu62.js +0 -1
- package/web-ui/build/static/nginx-DobnyESB.js +0 -1
- package/web-ui/build/static/nim-BPBivUOV.js +0 -1
- package/web-ui/build/static/nim-Baoug1Wa.js +0 -1
- package/web-ui/build/static/nix-CSPTQs5y.js +0 -1
- package/web-ui/build/static/nix-Dk4eNw49.js +0 -1
- package/web-ui/build/static/node-repl-NJNL8VFR.js +0 -1
- package/web-ui/build/static/nsis-BZ0oMzEw.js +0 -1
- package/web-ui/build/static/nsis-CKPCjtCU.js +0 -1
- package/web-ui/build/static/objectivec-BkfIRhhV.js +0 -1
- package/web-ui/build/static/objectivec-CnQgqhbJ.js +0 -1
- package/web-ui/build/static/ocaml-9rGNzRrK.js +0 -1
- package/web-ui/build/static/ocaml-CTolCqxL.js +0 -1
- package/web-ui/build/static/opencl-9Q3vRDxv.js +0 -1
- package/web-ui/build/static/openqasm-D2QiuFBp.js +0 -1
- package/web-ui/build/static/openscad-C3HyuzpB.js +0 -1
- package/web-ui/build/static/oxygene-4gi-VYy_.js +0 -1
- package/web-ui/build/static/oz-BGDEB-1A.js +0 -1
- package/web-ui/build/static/parigp-CfZzp1uE.js +0 -1
- package/web-ui/build/static/parser-UbGteTcy.js +0 -1
- package/web-ui/build/static/parser3-C-Jx-fy7.js +0 -1
- package/web-ui/build/static/pascal-D1_R0gW-.js +0 -1
- package/web-ui/build/static/pascaligo-B8C-98Np.js +0 -1
- package/web-ui/build/static/pcaxis-TGnlUKNs.js +0 -1
- package/web-ui/build/static/peoplecode-C5Vf1AH0.js +0 -1
- package/web-ui/build/static/perl-CBp1N62T.js +0 -1
- package/web-ui/build/static/perl-Z59j904t.js +0 -1
- package/web-ui/build/static/pf-Cq8B_xwQ.js +0 -1
- package/web-ui/build/static/pgsql-ofJbUHkL.js +0 -1
- package/web-ui/build/static/php-OlH7HLQJ.js +0 -1
- package/web-ui/build/static/php-extras-GqtrxLuk.js +0 -1
- package/web-ui/build/static/php-r09kMDOB.js +0 -1
- package/web-ui/build/static/php-template-18uT97Qo.js +0 -1
- package/web-ui/build/static/phpdoc-9tRFvup9.js +0 -1
- package/web-ui/build/static/plaintext-DsYT6Mu-.js +0 -1
- package/web-ui/build/static/plsql-RhWQNJVb.js +0 -1
- package/web-ui/build/static/pony-DD6JMLYI.js +0 -1
- package/web-ui/build/static/powerquery-CALow-bt.js +0 -1
- package/web-ui/build/static/powershell-C2QvIuKF.js +0 -1
- package/web-ui/build/static/powershell-yrbJEhCh.js +0 -1
- package/web-ui/build/static/processing-1T5w_Q03.js +0 -1
- package/web-ui/build/static/processing-DBim_dO-.js +0 -1
- package/web-ui/build/static/profile-Cdloh8mZ.js +0 -1
- package/web-ui/build/static/prolog-DRSsNnns.js +0 -1
- package/web-ui/build/static/prolog-D_ajweDr.js +0 -1
- package/web-ui/build/static/promql-BRuwn6Bn.js +0 -1
- package/web-ui/build/static/properties-D5Wyl4X4.js +0 -1
- package/web-ui/build/static/properties-kn4fl1bl.js +0 -1
- package/web-ui/build/static/protobuf-BMO76zWi.js +0 -1
- package/web-ui/build/static/protobuf-CTUCF-U-.js +0 -1
- package/web-ui/build/static/psl-CiqYdQbY.js +0 -1
- package/web-ui/build/static/pug-BLE2Qayj.js +0 -1
- package/web-ui/build/static/puppet-CFKLWXft.js +0 -1
- package/web-ui/build/static/puppet-DQci0Dl5.js +0 -1
- package/web-ui/build/static/pure-D2h_GynV.js +0 -1
- package/web-ui/build/static/purebasic-BF8MVw8V.js +0 -1
- package/web-ui/build/static/purebasic-BTtHiCkh.js +0 -1
- package/web-ui/build/static/purescript-D1ZSh-sH.js +0 -1
- package/web-ui/build/static/python-Cp9_Vdhb.js +0 -1
- package/web-ui/build/static/python-DdgNw8IW.js +0 -1
- package/web-ui/build/static/python-repl-DvK89VMC.js +0 -1
- package/web-ui/build/static/q-COaIgwhT.js +0 -1
- package/web-ui/build/static/q-Cm0dQkW8.js +0 -1
- package/web-ui/build/static/qml-BpsOqqJM.js +0 -1
- package/web-ui/build/static/qml-BziQXlU4.js +0 -1
- package/web-ui/build/static/qore-Cutz6g-2.js +0 -1
- package/web-ui/build/static/qsharp-B16619X1.js +0 -1
- package/web-ui/build/static/r-CFUIj5Hd.js +0 -1
- package/web-ui/build/static/r-CPrwCi5w.js +0 -1
- package/web-ui/build/static/racket-Bh08DFXF.js +0 -1
- package/web-ui/build/static/reason-BxjDq4e-.js +0 -1
- package/web-ui/build/static/reasonml-Ds5SsGP8.js +0 -1
- package/web-ui/build/static/regex-DhBIDIMI.js +0 -1
- package/web-ui/build/static/rego-DCwxZXcB.js +0 -1
- package/web-ui/build/static/renpy-C2fuQfqb.js +0 -1
- package/web-ui/build/static/rest-C52ZpxWQ.js +0 -1
- package/web-ui/build/static/rib-Cbl2Mzyj.js +0 -1
- package/web-ui/build/static/rip-BTOu5ZIE.js +0 -1
- package/web-ui/build/static/roboconf-3Oi2wuVk.js +0 -1
- package/web-ui/build/static/roboconf-ndLZLE39.js +0 -1
- package/web-ui/build/static/robotframework-BzHXiIj1.js +0 -1
- package/web-ui/build/static/routeros-CkpPoqx-.js +0 -1
- package/web-ui/build/static/rsl-C0bwOQ38.js +0 -1
- package/web-ui/build/static/ruby-C_hIhtuQ.js +0 -1
- package/web-ui/build/static/ruby-DvKfZPzj.js +0 -1
- package/web-ui/build/static/ruleslanguage-CbZJlddz.js +0 -1
- package/web-ui/build/static/rust-BFPIhB-X.js +0 -1
- package/web-ui/build/static/rust-sBpUq-qE.js +0 -1
- package/web-ui/build/static/sas-BCXvYN9x.js +0 -1
- package/web-ui/build/static/sas-D7GAsTY3.js +0 -1
- package/web-ui/build/static/sass-BdaErGMN.js +0 -1
- package/web-ui/build/static/scala-Cj81oCl9.js +0 -1
- package/web-ui/build/static/scala-CvbksfY6.js +0 -1
- package/web-ui/build/static/scheme-BM5ZqKnl.js +0 -1
- package/web-ui/build/static/scheme-BPvlu9Tk.js +0 -1
- package/web-ui/build/static/scilab-CJanLKQN.js +0 -1
- package/web-ui/build/static/scss-C53YF_7f.js +0 -1
- package/web-ui/build/static/scss-DPp8UZbr.js +0 -1
- package/web-ui/build/static/shell-CC9bQXMe.js +0 -1
- package/web-ui/build/static/shell-session-CuR3fbf-.js +0 -1
- package/web-ui/build/static/smali-CUgLls3D.js +0 -1
- package/web-ui/build/static/smali-YODSX8qt.js +0 -1
- package/web-ui/build/static/smalltalk-BMJQ4bbs.js +0 -1
- package/web-ui/build/static/smalltalk-BVGY3CTl.js +0 -1
- package/web-ui/build/static/smarty-C9aNt4-p.js +0 -1
- package/web-ui/build/static/sml-C3BIHhfq.js +0 -1
- package/web-ui/build/static/sml-DTipyRmY.js +0 -1
- package/web-ui/build/static/solidity-1yuPUqoC.js +0 -1
- package/web-ui/build/static/solution-file-BgzK4GOU.js +0 -1
- package/web-ui/build/static/soy-CFJXRvqc.js +0 -1
- package/web-ui/build/static/sparql-CAosYMpl.js +0 -1
- package/web-ui/build/static/splunk-spl-DkINtWr8.js +0 -1
- package/web-ui/build/static/sqf-DbrWIS2M.js +0 -1
- package/web-ui/build/static/sqf-nq8Q9J2W.js +0 -1
- package/web-ui/build/static/sql-9bwClhZQ.js +0 -1
- package/web-ui/build/static/sql-CqPkY-lX.js +0 -1
- package/web-ui/build/static/sql_more-CsY5ts77.js +0 -1
- package/web-ui/build/static/squirrel-BuqtzRBD.js +0 -1
- package/web-ui/build/static/stan-BNxBSglc.js +0 -1
- package/web-ui/build/static/stan-CZVMc34l.js +0 -1
- package/web-ui/build/static/stata-DKnVdHCd.js +0 -1
- package/web-ui/build/static/step21-Cu_TaBGF.js +0 -1
- package/web-ui/build/static/stylus-BS7-OJew.js +0 -1
- package/web-ui/build/static/stylus-DtFrp1Nk.js +0 -1
- package/web-ui/build/static/subunit-DDCoWkkc.js +0 -1
- package/web-ui/build/static/swift-BaguUZbl.js +0 -1
- package/web-ui/build/static/swift-mwBsb8Bx.js +0 -1
- package/web-ui/build/static/systemd-D6PpyDKk.js +0 -1
- package/web-ui/build/static/t4-cs-Cem8g4Ck.js +0 -1
- package/web-ui/build/static/t4-templating-BZo-HjmD.js +0 -1
- package/web-ui/build/static/t4-vb-B4oVnKa4.js +0 -1
- package/web-ui/build/static/taggerscript-DweAZ5pw.js +0 -1
- package/web-ui/build/static/tap-DpuvKHHF.js +0 -1
- package/web-ui/build/static/tap-hUKmJObZ.js +0 -1
- package/web-ui/build/static/tcl-BUvhAi7u.js +0 -1
- package/web-ui/build/static/tcl-Dsck63d8.js +0 -1
- package/web-ui/build/static/textile-CgKbqJ-j.js +0 -1
- package/web-ui/build/static/thrift-B5H6rApp.js +0 -1
- package/web-ui/build/static/toml-DggTpfOo.js +0 -1
- package/web-ui/build/static/tp-CazB2P2X.js +0 -1
- package/web-ui/build/static/tremor-B1jy7S5p.js +0 -1
- package/web-ui/build/static/tsx-BqF2lVDi.js +0 -1
- package/web-ui/build/static/tt2-BNoNXpEe.js +0 -1
- package/web-ui/build/static/turtle-B0evd5mn.js +0 -1
- package/web-ui/build/static/twig-B5A7nMdv.js +0 -1
- package/web-ui/build/static/twig-DZnLWvh8.js +0 -1
- package/web-ui/build/static/typescript-Bbe_P093.js +0 -1
- package/web-ui/build/static/typescript-BfhvmSSG.js +0 -1
- package/web-ui/build/static/typoscript-BjuZEIgw.js +0 -1
- package/web-ui/build/static/unrealscript-C3iUCFRi.js +0 -1
- package/web-ui/build/static/uorazor-CbZXwzIj.js +0 -1
- package/web-ui/build/static/uri-xMPSnp6m.js +0 -1
- package/web-ui/build/static/v-BKcGo5I6.js +0 -1
- package/web-ui/build/static/vala-BRoBE4am.js +0 -1
- package/web-ui/build/static/vala-B__Iyrma.js +0 -1
- package/web-ui/build/static/vbnet-DBxlMRvN.js +0 -1
- package/web-ui/build/static/vbnet-DjAXt5BE.js +0 -1
- package/web-ui/build/static/vbscript-BNA4oANi.js +0 -1
- package/web-ui/build/static/vbscript-html-o8ckLPKG.js +0 -1
- package/web-ui/build/static/velocity-D7sc5ggA.js +0 -1
- package/web-ui/build/static/verilog-BWJfMIng.js +0 -1
- package/web-ui/build/static/verilog-jW2GPC--.js +0 -1
- package/web-ui/build/static/vhdl-BIVlXRPa.js +0 -1
- package/web-ui/build/static/vhdl-BeqdhhxD.js +0 -1
- package/web-ui/build/static/vim-712lI4-g.js +0 -1
- package/web-ui/build/static/vim-DMROTzr0.js +0 -1
- package/web-ui/build/static/visual-basic-CQfbM-ta.js +0 -1
- package/web-ui/build/static/warpscript-DFAvCXFQ.js +0 -1
- package/web-ui/build/static/wasm-CiYoxBl0.js +0 -1
- package/web-ui/build/static/web-idl-DoCkPK8y.js +0 -1
- package/web-ui/build/static/wiki-bvz0AGzB.js +0 -1
- package/web-ui/build/static/wolfram-fBuyFEgU.js +0 -1
- package/web-ui/build/static/wren-DvATFxjF.js +0 -1
- package/web-ui/build/static/x86asm-r4bPbUR_.js +0 -1
- package/web-ui/build/static/xeora-B6iOnDJY.js +0 -1
- package/web-ui/build/static/xl-Ce6B5slc.js +0 -1
- package/web-ui/build/static/xml-DNjyPmhQ.js +0 -1
- package/web-ui/build/static/xml-doc-DydogmZD.js +0 -1
- package/web-ui/build/static/xojo-DCQLltvr.js +0 -1
- package/web-ui/build/static/xquery-C-fAnA0H.js +0 -1
- package/web-ui/build/static/xquery-CNeqzhLO.js +0 -1
- package/web-ui/build/static/yaml-BsVaGsk5.js +0 -1
- package/web-ui/build/static/yaml-kVZvwv_C.js +0 -1
- package/web-ui/build/static/yang-B_gq9JEq.js +0 -1
- package/web-ui/build/static/zephir-ECIXgXhX.js +0 -1
- package/web-ui/build/static/zig-DY325EKG.js +0 -1
|
@@ -250,6 +250,11 @@ NOTES:
|
|
|
250
250
|
if (!params || typeof params !== 'object') {
|
|
251
251
|
return { success: false, error: 'params must be an object' };
|
|
252
252
|
}
|
|
253
|
+
// Reverse-forgiveness: accept plural {actions:[{...}]} envelope.
|
|
254
|
+
if (Array.isArray(params?.actions) && params.actions.length > 0) {
|
|
255
|
+
const a = params.actions[0] || {};
|
|
256
|
+
params = { ...params, ...a, action: a.type || a.action || params.action };
|
|
257
|
+
}
|
|
253
258
|
const action = params.action || 'list-capabilities';
|
|
254
259
|
const callerAgentId = context?.agentId || null;
|
|
255
260
|
|
package/src/tools/seekTool.js
CHANGED
|
@@ -262,7 +262,42 @@ LIMITS:
|
|
|
262
262
|
* @returns {Promise<Object>} Execution result
|
|
263
263
|
*/
|
|
264
264
|
async execute(params, context) {
|
|
265
|
-
|
|
265
|
+
// Forgiving normalization — production agents (gpt-5.4, Kimi-K2.6,
|
|
266
|
+
// gpt-4.1-mini) reliably call seek with the natural-feeling shape
|
|
267
|
+
// `{query, filePattern}` instead of the documented
|
|
268
|
+
// `{searchTerms: [], filePaths: []}`. Live trace evidence:
|
|
269
|
+
// agent-agent-v2-v2-s2-multi-topic-1779570320941 hit
|
|
270
|
+
// "Cannot read properties of undefined (reading 'length')" 3 times
|
|
271
|
+
// and cascaded into task drift. Accept both shapes — coerce
|
|
272
|
+
// singular strings to arrays, alternate names to canonical.
|
|
273
|
+
const filePathsRaw = params.filePaths != null ? params.filePaths
|
|
274
|
+
: params.filePath != null ? params.filePath
|
|
275
|
+
: params.filePattern != null ? params.filePattern
|
|
276
|
+
: params.paths != null ? params.paths
|
|
277
|
+
: null;
|
|
278
|
+
const searchTermsRaw = params.searchTerms != null ? params.searchTerms
|
|
279
|
+
: params.searchTerm != null ? params.searchTerm
|
|
280
|
+
: params.query != null ? params.query
|
|
281
|
+
: params.terms != null ? params.terms
|
|
282
|
+
: null;
|
|
283
|
+
const filePaths = Array.isArray(filePathsRaw) ? filePathsRaw
|
|
284
|
+
: (filePathsRaw != null && filePathsRaw !== '') ? [filePathsRaw] : [];
|
|
285
|
+
const searchTerms = Array.isArray(searchTermsRaw) ? searchTermsRaw
|
|
286
|
+
: (searchTermsRaw != null && searchTermsRaw !== '') ? [searchTermsRaw] : [];
|
|
287
|
+
|
|
288
|
+
if (filePaths.length === 0) {
|
|
289
|
+
return {
|
|
290
|
+
success: false,
|
|
291
|
+
error: 'seek requires `filePaths` (array of glob patterns, e.g. ["src/**/*.js"]). Singular `filePath` or `filePattern` also accepted.',
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
if (searchTerms.length === 0) {
|
|
295
|
+
return {
|
|
296
|
+
success: false,
|
|
297
|
+
error: 'seek requires `searchTerms` (array of strings to find). Singular `searchTerm` or `query` also accepted.',
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
|
|
266
301
|
const { projectDir, agentId, directoryAccess } = context;
|
|
267
302
|
|
|
268
303
|
// IMPORTANT: Get all accessible directories for the agent
|
package/src/tools/skillsTool.js
CHANGED
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
import { BaseTool } from './baseTool.js';
|
|
23
23
|
import { getSkillsService } from '../services/skillsService.js';
|
|
24
24
|
import { SKILLS_ACTIONS } from '../utilities/toolConstants.js';
|
|
25
|
+
import { SkillsIndexer } from '../services/embeddings/indexers/skillsIndexer.js';
|
|
25
26
|
|
|
26
27
|
class SkillsTool extends BaseTool {
|
|
27
28
|
constructor(config = {}, logger = null) {
|
|
@@ -184,6 +185,16 @@ SKILL NAMING: Names must be kebab-case (lowercase, hyphens). Example: "code-revi
|
|
|
184
185
|
}
|
|
185
186
|
|
|
186
187
|
async execute(params, context = {}) {
|
|
188
|
+
// Reverse-forgiveness: this tool's canonical shape is singular
|
|
189
|
+
// {action, ...} (single-action-by-design — no batching value).
|
|
190
|
+
// Accept plural {actions:[{type/action, ...}]} too, in case the
|
|
191
|
+
// agent's pattern-match from filesystem/memory/etc. drifts here.
|
|
192
|
+
// See cross-tool envelope unification thread.
|
|
193
|
+
if (Array.isArray(params?.actions) && params.actions.length > 0) {
|
|
194
|
+
const a = params.actions[0] || {};
|
|
195
|
+
params = { ...params, ...a, action: a.type || a.action || params.action };
|
|
196
|
+
}
|
|
197
|
+
|
|
187
198
|
const service = await this._ensureSkillsService();
|
|
188
199
|
const { action } = params;
|
|
189
200
|
|
|
@@ -217,6 +228,12 @@ SKILL NAMING: Names must be kebab-case (lowercase, hyphens). Example: "code-revi
|
|
|
217
228
|
case SKILLS_ACTIONS.IMPORT:
|
|
218
229
|
return this._formatResult(await service.importSkill(params.source, params.name || null, params.description || null), `Skill imported: ${params.name || params.source}`);
|
|
219
230
|
|
|
231
|
+
case SKILLS_ACTIONS.SEARCH:
|
|
232
|
+
return await this._executeSearch(service, params);
|
|
233
|
+
|
|
234
|
+
case SKILLS_ACTIONS.BACKFILL_SEARCH_INDEX:
|
|
235
|
+
return await this._executeBackfillSearchIndex(service);
|
|
236
|
+
|
|
220
237
|
default:
|
|
221
238
|
return { success: false, error: `Unknown action: ${action}` };
|
|
222
239
|
}
|
|
@@ -233,6 +250,122 @@ SKILL NAMING: Names must be kebab-case (lowercase, hyphens). Example: "code-revi
|
|
|
233
250
|
};
|
|
234
251
|
}
|
|
235
252
|
|
|
253
|
+
/**
|
|
254
|
+
* Lazy SkillsIndexer accessor — cached on the tool instance; null
|
|
255
|
+
* when no embedding service is attached.
|
|
256
|
+
* @private
|
|
257
|
+
*/
|
|
258
|
+
_getSkillsIndexer() {
|
|
259
|
+
if (this._skillsIndexer) return this._skillsIndexer;
|
|
260
|
+
const svc = this.aiService?.getEmbeddingService?.();
|
|
261
|
+
if (!svc) return null;
|
|
262
|
+
this._skillsIndexer = new SkillsIndexer({ embeddingService: svc, logger: this.logger });
|
|
263
|
+
return this._skillsIndexer;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* Search skills by meaning. Falls back to substring-on-name when
|
|
268
|
+
* embeddings are disabled, so the action is always callable.
|
|
269
|
+
*
|
|
270
|
+
* Params: { query, topK?=5, hybrid?=true }
|
|
271
|
+
* @private
|
|
272
|
+
*/
|
|
273
|
+
async _executeSearch(service, params) {
|
|
274
|
+
const query = typeof params?.query === 'string' ? params.query.trim() : '';
|
|
275
|
+
if (!query) return { success: false, error: 'query is required for search' };
|
|
276
|
+
const topK = Number.isInteger(params.topK) && params.topK > 0 ? params.topK : 5;
|
|
277
|
+
const hybrid = params.hybrid !== false;
|
|
278
|
+
|
|
279
|
+
const indexer = this._getSkillsIndexer();
|
|
280
|
+
if (!indexer || !indexer.isEnabled) {
|
|
281
|
+
// Substring fallback over the skill list (name + description).
|
|
282
|
+
const allSkills = await service.listSkills();
|
|
283
|
+
const lower = query.toLowerCase();
|
|
284
|
+
const matches = (allSkills || [])
|
|
285
|
+
.filter(s => (
|
|
286
|
+
(s.name || '').toLowerCase().includes(lower) ||
|
|
287
|
+
(s.description || '').toLowerCase().includes(lower)
|
|
288
|
+
))
|
|
289
|
+
.slice(0, topK);
|
|
290
|
+
return {
|
|
291
|
+
success: true,
|
|
292
|
+
result: { mode: 'substring-fallback', query, hits: matches },
|
|
293
|
+
message: matches.length === 0
|
|
294
|
+
? `Embeddings disabled; substring search found no matches for "${query}"`
|
|
295
|
+
: `Embeddings disabled; substring search found ${matches.length} skills`,
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
const { hits, error } = await indexer.search(query, { topK, hybrid });
|
|
300
|
+
return {
|
|
301
|
+
success: !error,
|
|
302
|
+
result: {
|
|
303
|
+
mode: hybrid ? 'hybrid' : 'semantic',
|
|
304
|
+
query,
|
|
305
|
+
hits,
|
|
306
|
+
...(error ? { error } : {}),
|
|
307
|
+
},
|
|
308
|
+
message: error
|
|
309
|
+
? `Skill search failed: ${error}`
|
|
310
|
+
: hits.length === 0
|
|
311
|
+
? `No skills matched "${query}"`
|
|
312
|
+
: `Found ${hits.length} skills ranked by similarity to "${query}"`,
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* Drop the skills vector index and rebuild from `service.listSkills()`.
|
|
318
|
+
* Use after enabling embeddings or after a model swap. The full
|
|
319
|
+
* content of each skill is read via the service so the embedding
|
|
320
|
+
* captures more than just the name + description preview.
|
|
321
|
+
* @private
|
|
322
|
+
*/
|
|
323
|
+
async _executeBackfillSearchIndex(service) {
|
|
324
|
+
const indexer = this._getSkillsIndexer();
|
|
325
|
+
if (!indexer || !indexer.isEnabled) {
|
|
326
|
+
return {
|
|
327
|
+
success: false,
|
|
328
|
+
result: null,
|
|
329
|
+
message: 'Embeddings are not enabled — nothing to backfill. Enable a provider in Settings → Embeddings first.',
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
// listSkills returns name + description metadata. Hydrate each with
|
|
334
|
+
// its full content so the embedding gets a semantic fingerprint.
|
|
335
|
+
let allSkills;
|
|
336
|
+
try { allSkills = await service.listSkills(); }
|
|
337
|
+
catch (err) {
|
|
338
|
+
return { success: false, result: null, message: `listSkills failed: ${err?.message || err}` };
|
|
339
|
+
}
|
|
340
|
+
const hydrated = [];
|
|
341
|
+
for (const s of allSkills || []) {
|
|
342
|
+
if (!s?.name) continue;
|
|
343
|
+
try {
|
|
344
|
+
const full = await service.readSkill(s.name);
|
|
345
|
+
hydrated.push({ name: s.name, description: s.description || full?.description || '', content: full?.content || '' });
|
|
346
|
+
} catch (_err) {
|
|
347
|
+
// If a single skill fails to read, fall back to its bare metadata.
|
|
348
|
+
hydrated.push({ name: s.name, description: s.description || '' });
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
const r = await indexer.backfill(hydrated);
|
|
353
|
+
return {
|
|
354
|
+
success: r.ok !== false && !r.error,
|
|
355
|
+
result: {
|
|
356
|
+
indexed: r.indexed || 0,
|
|
357
|
+
skipped: r.skipped || 0,
|
|
358
|
+
failed: r.failed || 0,
|
|
359
|
+
...(r.error ? { error: r.error } : {}),
|
|
360
|
+
},
|
|
361
|
+
message: r.ok === false
|
|
362
|
+
? `Skills backfill failed: ${r.reason || r.error || 'unknown'}`
|
|
363
|
+
: `Indexed ${r.indexed || 0} skills` +
|
|
364
|
+
(r.skipped ? `, skipped ${r.skipped}` : '') +
|
|
365
|
+
(r.failed ? `, failed ${r.failed}` : '') + '.',
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
|
|
236
369
|
getParameterSchema() {
|
|
237
370
|
return {
|
|
238
371
|
type: 'object',
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
import { BaseTool } from './baseTool.js';
|
|
11
11
|
import { v4 as uuidv4 } from 'uuid';
|
|
12
12
|
import { getMemoryService } from '../services/memoryService.js';
|
|
13
|
+
import { TaskIndexer } from '../services/embeddings/indexers/taskIndexer.js';
|
|
13
14
|
|
|
14
15
|
class TaskManagerTool extends BaseTool {
|
|
15
16
|
constructor(config = {}) {
|
|
@@ -18,8 +19,8 @@ class TaskManagerTool extends BaseTool {
|
|
|
18
19
|
description: config.description || 'Task management tool for organizing and tracking work',
|
|
19
20
|
...config
|
|
20
21
|
});
|
|
21
|
-
|
|
22
|
-
this.supportedActions = ['create', 'update', 'list', 'complete', 'cancel', 'clear', 'depend', 'relate', 'subtask', 'prioritize', 'template', 'progress', 'analytics', 'sync'];
|
|
22
|
+
|
|
23
|
+
this.supportedActions = ['create', 'update', 'list', 'complete', 'cancel', 'clear', 'depend', 'relate', 'subtask', 'prioritize', 'template', 'progress', 'analytics', 'sync', 'search', 'backfill-search-index'];
|
|
23
24
|
this.taskStatuses = ['pending', 'in_progress', 'blocked', 'completed', 'cancelled'];
|
|
24
25
|
this.taskPriorities = ['urgent', 'high', 'medium', 'low'];
|
|
25
26
|
this.dependencyTypes = ['blocks', 'relates', 'subtask', 'parent'];
|
|
@@ -345,6 +346,57 @@ Always use a detailed task description to provide context for the task, and leve
|
|
|
345
346
|
return description;
|
|
346
347
|
}
|
|
347
348
|
|
|
349
|
+
/**
|
|
350
|
+
* Build the `currentFocus` signal emitted on every taskmanager
|
|
351
|
+
* response. Tells the agent which task it is CURRENTLY working on
|
|
352
|
+
* and warns about discipline violations (zero or multiple
|
|
353
|
+
* in-progress tasks).
|
|
354
|
+
*
|
|
355
|
+
* Three shapes:
|
|
356
|
+
* { current: {taskId,title,description}, inProgressCount: 1, ok: true }
|
|
357
|
+
* { current: null, inProgressCount: 0, ok: false,
|
|
358
|
+
* warning: 'No task is in_progress…' }
|
|
359
|
+
* { current: [...], inProgressCount: N>1, ok: false,
|
|
360
|
+
* warning: 'Multiple tasks are in_progress…' }
|
|
361
|
+
*
|
|
362
|
+
* Production rationale: agents lose task focus after cascading tool
|
|
363
|
+
* errors and revert to earlier tasks. Surfacing the focus on every
|
|
364
|
+
* taskmanager turn keeps the anchor visible. See baseTool.js
|
|
365
|
+
* OPERATING POSTURE → TASK DISCIPLINE section.
|
|
366
|
+
*
|
|
367
|
+
* @private
|
|
368
|
+
*/
|
|
369
|
+
_buildCurrentFocus(tasks) {
|
|
370
|
+
const inProgress = (tasks || []).filter(t => t.status === 'in_progress');
|
|
371
|
+
const shortDesc = (d) => {
|
|
372
|
+
if (typeof d !== 'string') return '';
|
|
373
|
+
const trimmed = d.trim();
|
|
374
|
+
return trimmed.length > 140 ? trimmed.slice(0, 140) + '…' : trimmed;
|
|
375
|
+
};
|
|
376
|
+
if (inProgress.length === 1) {
|
|
377
|
+
const t = inProgress[0];
|
|
378
|
+
return {
|
|
379
|
+
ok: true,
|
|
380
|
+
inProgressCount: 1,
|
|
381
|
+
current: { taskId: t.id, title: t.title, description: shortDesc(t.description) },
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
if (inProgress.length === 0) {
|
|
385
|
+
return {
|
|
386
|
+
ok: false,
|
|
387
|
+
inProgressCount: 0,
|
|
388
|
+
current: null,
|
|
389
|
+
warning: 'No task is in_progress. BEFORE doing any work, call `taskmanager` → `update` with status `in_progress` on the task you are about to work on. The transition IS the signal that you have started.',
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
return {
|
|
393
|
+
ok: false,
|
|
394
|
+
inProgressCount: inProgress.length,
|
|
395
|
+
current: inProgress.map(t => ({ taskId: t.id, title: t.title, description: shortDesc(t.description) })),
|
|
396
|
+
warning: `Multiple tasks are in_progress (${inProgress.length}). Pick ONE to remain in_progress; transition the others to \`blocked\` or \`completed\` so the task list reflects what you are actually doing right now.`,
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
|
|
348
400
|
/**
|
|
349
401
|
* Extract memory IDs from task descriptions
|
|
350
402
|
* @private
|
|
@@ -436,12 +488,15 @@ Always use a detailed task description to provide context for the task, and leve
|
|
|
436
488
|
firstAction = unwrappedAction;
|
|
437
489
|
}
|
|
438
490
|
|
|
439
|
-
// Extract action type
|
|
440
|
-
|
|
441
|
-
|
|
491
|
+
// Extract action type — accept both `type` (canonical) and
|
|
492
|
+
// `action` (used by jobdone/docx/excel/pdf). Cross-tool field-
|
|
493
|
+
// name unification.
|
|
494
|
+
const itemType = firstAction.type || firstAction.action;
|
|
495
|
+
if (itemType && !params.action) {
|
|
496
|
+
params.action = itemType;
|
|
442
497
|
// Merge all other properties from the action object into params
|
|
443
498
|
for (const [key, value] of Object.entries(firstAction)) {
|
|
444
|
-
if (key !== 'type' && !(key in params)) {
|
|
499
|
+
if (key !== 'type' && key !== 'action' && !(key in params)) {
|
|
445
500
|
params[key] = value;
|
|
446
501
|
}
|
|
447
502
|
}
|
|
@@ -506,7 +561,7 @@ Always use a detailed task description to provide context for the task, and leve
|
|
|
506
561
|
result = await this.createTask(agent, params, context);
|
|
507
562
|
break;
|
|
508
563
|
case 'update':
|
|
509
|
-
result = await this.updateTask(agent, params);
|
|
564
|
+
result = await this.updateTask(agent, params, context);
|
|
510
565
|
break;
|
|
511
566
|
case 'list':
|
|
512
567
|
result = await this.listTasks(agent, params);
|
|
@@ -544,6 +599,12 @@ Always use a detailed task description to provide context for the task, and leve
|
|
|
544
599
|
case 'sync':
|
|
545
600
|
result = await this.syncTasks(agent, params, context);
|
|
546
601
|
break;
|
|
602
|
+
case 'search':
|
|
603
|
+
result = await this.searchTasks(agent, params);
|
|
604
|
+
break;
|
|
605
|
+
case 'backfill-search-index':
|
|
606
|
+
result = await this.backfillTasksSearchIndex(agent);
|
|
607
|
+
break;
|
|
547
608
|
default:
|
|
548
609
|
throw new Error(`Unknown action: ${action}`);
|
|
549
610
|
}
|
|
@@ -583,16 +644,22 @@ Always use a detailed task description to provide context for the task, and leve
|
|
|
583
644
|
// so UI views (TaskPanel, TeamTaskBoard) can render the agent's current
|
|
584
645
|
// state without fetching on every render. Previously only the `list`
|
|
585
646
|
// action's inner result carried `tasks`, so every `create`/`update`/
|
|
586
|
-
// `complete`/`cancel`/`clear` call left the panel looking stale
|
|
587
|
-
//
|
|
588
|
-
//
|
|
589
|
-
//
|
|
590
|
-
//
|
|
647
|
+
// `complete`/`cancel`/`clear` call left the panel looking stale.
|
|
648
|
+
//
|
|
649
|
+
// `currentFocus` is the task-discipline signal — see baseTool.js
|
|
650
|
+
// OPERATING POSTURE addition. It tells the agent which task it is
|
|
651
|
+
// CURRENTLY working on, warns when zero or multiple tasks are
|
|
652
|
+
// in_progress, and stays visible across every taskmanager turn so
|
|
653
|
+
// tool-error cascades don't shake the agent off its task. Production
|
|
654
|
+
// observation: Kimi-K2.6 + gpt-5.4 lost task focus mid-session after
|
|
655
|
+
// cascading tool failures and reverted to earlier tasks. Surfacing
|
|
656
|
+
// the focus on every response keeps the anchor visible.
|
|
591
657
|
return {
|
|
592
658
|
success: true,
|
|
593
659
|
action,
|
|
594
660
|
result,
|
|
595
661
|
tasks: agent.taskList.tasks,
|
|
662
|
+
currentFocus: this._buildCurrentFocus(agent.taskList.tasks),
|
|
596
663
|
summary: this.generateTaskSummary(agent.taskList) + noTasksHint
|
|
597
664
|
};
|
|
598
665
|
|
|
@@ -858,7 +925,7 @@ Always use a detailed task description to provide context for the task, and leve
|
|
|
858
925
|
* Update an existing task
|
|
859
926
|
* @private
|
|
860
927
|
*/
|
|
861
|
-
async updateTask(agent, params) {
|
|
928
|
+
async updateTask(agent, params, context = {}) {
|
|
862
929
|
const { taskId, status, priority, title, description } = params;
|
|
863
930
|
|
|
864
931
|
if (!taskId) {
|
|
@@ -870,6 +937,8 @@ Always use a detailed task description to provide context for the task, and leve
|
|
|
870
937
|
throw new Error(`Task not found: ${taskId}`);
|
|
871
938
|
}
|
|
872
939
|
|
|
940
|
+
const prevStatus = task.status;
|
|
941
|
+
|
|
873
942
|
if (status) {
|
|
874
943
|
if (!this.taskStatuses.includes(status.toLowerCase())) {
|
|
875
944
|
throw new Error(`Invalid status: ${status}. Must be: ${this.taskStatuses.join(', ')}`);
|
|
@@ -892,19 +961,198 @@ Always use a detailed task description to provide context for the task, and leve
|
|
|
892
961
|
// only mutate fields the model actually set to a meaningful value.
|
|
893
962
|
if (typeof title === 'string' && title.trim().length > 0) task.title = title;
|
|
894
963
|
if (typeof description === 'string' && description.trim().length > 0) task.description = description;
|
|
895
|
-
|
|
964
|
+
|
|
896
965
|
task.updatedAt = new Date().toISOString();
|
|
897
966
|
|
|
898
|
-
|
|
967
|
+
const result = {
|
|
899
968
|
message: 'Task updated successfully',
|
|
900
|
-
task
|
|
969
|
+
task,
|
|
901
970
|
};
|
|
971
|
+
|
|
972
|
+
// ── Task-transition memory handler ────────────────────────────────
|
|
973
|
+
// When a task transitions INTO `in_progress`, we either:
|
|
974
|
+
// (a) Auto-load its attached memory (if the description carries a
|
|
975
|
+
// `[memory:mem-...]` marker) and embed the content in the tool
|
|
976
|
+
// result so the agent reads it on the same turn — no extra
|
|
977
|
+
// `memory read` call required, no nudge needed.
|
|
978
|
+
// (b) If no memory is attached, emit a one-line nudge pointing the
|
|
979
|
+
// agent at the `## AGENT MEMORY` catalog in the system prompt
|
|
980
|
+
// so it can scan for adjacent context.
|
|
981
|
+
//
|
|
982
|
+
// Production observation (Monopoly trace): 0 memory ops across
|
|
983
|
+
// 1556 messages. Memories that DO get created are not consulted.
|
|
984
|
+
// Surfacing the attached memory at the transition moment makes it
|
|
985
|
+
// un-missable; the conditional nudge keeps the prompt clean when
|
|
986
|
+
// there's nothing to attach.
|
|
987
|
+
const becameInProgress = prevStatus !== 'in_progress' && task.status === 'in_progress';
|
|
988
|
+
if (becameInProgress && context.agentId) {
|
|
989
|
+
const memMatch = typeof task.description === 'string'
|
|
990
|
+
? task.description.match(/\[memory:(mem-[A-Za-z0-9_-]+)\]/)
|
|
991
|
+
: null;
|
|
992
|
+
if (memMatch) {
|
|
993
|
+
try {
|
|
994
|
+
const memoryService = getMemoryService(this.logger);
|
|
995
|
+
await memoryService.initialize();
|
|
996
|
+
const all = await memoryService.loadMemories(context.agentId);
|
|
997
|
+
const mem = (all || []).find(m => m.id === memMatch[1]);
|
|
998
|
+
if (mem) {
|
|
999
|
+
result.attachedMemory = {
|
|
1000
|
+
id: mem.id,
|
|
1001
|
+
title: mem.title,
|
|
1002
|
+
content: mem.content,
|
|
1003
|
+
_hint: 'This memory was auto-loaded because the task references it. Use `memory append` (id: ' + mem.id + ') if your work yields new findings or methodology worth recording.',
|
|
1004
|
+
};
|
|
1005
|
+
} else {
|
|
1006
|
+
// Reference exists but memory was deleted — surface that fact.
|
|
1007
|
+
result.attachedMemory = {
|
|
1008
|
+
id: memMatch[1],
|
|
1009
|
+
error: 'Memory referenced in task description was not found (may have been deleted). Consider attaching a fresh one.',
|
|
1010
|
+
};
|
|
1011
|
+
}
|
|
1012
|
+
} catch (e) {
|
|
1013
|
+
this.logger?.debug?.('Auto-load of attached memory failed', { error: e.message });
|
|
1014
|
+
}
|
|
1015
|
+
} else {
|
|
1016
|
+
// No memory attached — emit a nudge pointing at the catalog.
|
|
1017
|
+
//
|
|
1018
|
+
// Wording is gated by LOXIA_MEMORY_NUDGE_VARIANT (env) so the
|
|
1019
|
+
// memory-bench can A/B baseline ('descriptive') vs directive
|
|
1020
|
+
// ('directive') on production code WITHOUT requiring two
|
|
1021
|
+
// separate builds.
|
|
1022
|
+
//
|
|
1023
|
+
// Default is 'directive' (the ship in 9a6957f). Validation
|
|
1024
|
+
// pass scheduled to compare against 'descriptive' on
|
|
1025
|
+
// production-relevant models (Kimi-K2.6, gpt-5.4) before
|
|
1026
|
+
// confirming the ship or reverting.
|
|
1027
|
+
const variant = (process.env.LOXIA_MEMORY_NUDGE_VARIANT || 'directive').toLowerCase();
|
|
1028
|
+
if (variant === 'descriptive' || variant === 'baseline') {
|
|
1029
|
+
result.memoryNudge =
|
|
1030
|
+
'No memory is attached to this task (description has no `[memory:mem-...]` marker). ' +
|
|
1031
|
+
'Scan the `## AGENT MEMORY` catalog in your system prompt for adjacent context that may inform this work. ' +
|
|
1032
|
+
'If you produce findings or methodology worth preserving, create a memory with `memory add` (title prefix `task-context/...` recommended) and reference it in this task.';
|
|
1033
|
+
} else {
|
|
1034
|
+
// 'directive' (default / current ship).
|
|
1035
|
+
result.memoryNudge =
|
|
1036
|
+
'No memory is attached to this task (description has no `[memory:mem-...]` marker). ' +
|
|
1037
|
+
'Your VERY NEXT tool call MUST be `memory list` to check for applicable rules, preferences, or prior findings before doing the work. ' +
|
|
1038
|
+
'If you produce findings or methodology worth preserving, create a memory with `memory add` (title prefix `task-context/...` recommended) and reference it in this task.';
|
|
1039
|
+
}
|
|
1040
|
+
}
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
return result;
|
|
902
1044
|
}
|
|
903
1045
|
|
|
904
1046
|
/**
|
|
905
1047
|
* List all tasks
|
|
906
1048
|
* @private
|
|
907
1049
|
*/
|
|
1050
|
+
/**
|
|
1051
|
+
* Lazy TaskIndexer accessor — cached per tool instance. Null when no
|
|
1052
|
+
* embedding service is attached to aiService.
|
|
1053
|
+
* @private
|
|
1054
|
+
*/
|
|
1055
|
+
_getTaskIndexer() {
|
|
1056
|
+
if (this._taskIndexer) return this._taskIndexer;
|
|
1057
|
+
const svc = this.aiService?.getEmbeddingService?.();
|
|
1058
|
+
if (!svc) return null;
|
|
1059
|
+
this._taskIndexer = new TaskIndexer({ embeddingService: svc, logger: this.logger });
|
|
1060
|
+
return this._taskIndexer;
|
|
1061
|
+
}
|
|
1062
|
+
|
|
1063
|
+
/**
|
|
1064
|
+
* Semantic search over the agent's tasks. Falls back to substring
|
|
1065
|
+
* filtering when embeddings are disabled. Optional `status` filter
|
|
1066
|
+
* narrows to one task state.
|
|
1067
|
+
*
|
|
1068
|
+
* Params: { query, topK?=10, hybrid?=true, status? }
|
|
1069
|
+
*/
|
|
1070
|
+
async searchTasks(agent, params) {
|
|
1071
|
+
const query = typeof params?.query === 'string' ? params.query.trim() : '';
|
|
1072
|
+
if (!query) return { success: false, error: 'query is required for search' };
|
|
1073
|
+
const topK = Number.isInteger(params.topK) && params.topK > 0 ? params.topK : 10;
|
|
1074
|
+
const hybrid = params.hybrid !== false;
|
|
1075
|
+
const statusFilter = typeof params.status === 'string' ? params.status.toLowerCase() : null;
|
|
1076
|
+
|
|
1077
|
+
const indexer = this._getTaskIndexer();
|
|
1078
|
+
if (!indexer || !indexer.isEnabled) {
|
|
1079
|
+
// Fallback: filter by substring on title/description.
|
|
1080
|
+
const lower = query.toLowerCase();
|
|
1081
|
+
const matches = (agent.taskList?.tasks || [])
|
|
1082
|
+
.filter(t => (
|
|
1083
|
+
(statusFilter ? t.status === statusFilter : true) &&
|
|
1084
|
+
((t.title || '').toLowerCase().includes(lower) ||
|
|
1085
|
+
(t.description || '').toLowerCase().includes(lower))
|
|
1086
|
+
))
|
|
1087
|
+
.slice(0, topK);
|
|
1088
|
+
return {
|
|
1089
|
+
success: true,
|
|
1090
|
+
action: 'search',
|
|
1091
|
+
mode: 'substring-fallback',
|
|
1092
|
+
query,
|
|
1093
|
+
results: matches,
|
|
1094
|
+
totalResults: matches.length,
|
|
1095
|
+
message: matches.length === 0
|
|
1096
|
+
? `Embeddings disabled; substring search found no matches for "${query}"`
|
|
1097
|
+
: `Embeddings disabled; substring search found ${matches.length} tasks`,
|
|
1098
|
+
};
|
|
1099
|
+
}
|
|
1100
|
+
|
|
1101
|
+
const { hits, error } = await indexer.search(agent.id, query, { topK, hybrid, statusFilter });
|
|
1102
|
+
// Hydrate back to live tasks from agent.taskList so latest content is shown.
|
|
1103
|
+
const byId = new Map((agent.taskList?.tasks || []).map(t => [t.id, t]));
|
|
1104
|
+
const results = hits
|
|
1105
|
+
.map(h => {
|
|
1106
|
+
const live = byId.get(h.id);
|
|
1107
|
+
return live ? { ...live, score: h.score } : { id: h.id, score: h.score, missing: true, ...h.metadata };
|
|
1108
|
+
});
|
|
1109
|
+
|
|
1110
|
+
return {
|
|
1111
|
+
success: !error,
|
|
1112
|
+
action: 'search',
|
|
1113
|
+
mode: hybrid ? 'hybrid' : 'semantic',
|
|
1114
|
+
query,
|
|
1115
|
+
results,
|
|
1116
|
+
totalResults: results.length,
|
|
1117
|
+
...(error ? { error } : {}),
|
|
1118
|
+
message: error
|
|
1119
|
+
? `Task search failed: ${error}`
|
|
1120
|
+
: results.length === 0
|
|
1121
|
+
? `No tasks matched "${query}"`
|
|
1122
|
+
: `Found ${results.length} tasks ranked by similarity to "${query}"`,
|
|
1123
|
+
};
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1126
|
+
/**
|
|
1127
|
+
* Rebuild the tasks vector index from agent.taskList.tasks. Use after
|
|
1128
|
+
* enabling embeddings or after a model swap.
|
|
1129
|
+
*/
|
|
1130
|
+
async backfillTasksSearchIndex(agent) {
|
|
1131
|
+
const indexer = this._getTaskIndexer();
|
|
1132
|
+
if (!indexer || !indexer.isEnabled) {
|
|
1133
|
+
return {
|
|
1134
|
+
success: false,
|
|
1135
|
+
action: 'backfill-search-index',
|
|
1136
|
+
message: 'Embeddings are not enabled — nothing to backfill. Enable a provider in Settings → Embeddings first.',
|
|
1137
|
+
};
|
|
1138
|
+
}
|
|
1139
|
+
const tasks = agent.taskList?.tasks || [];
|
|
1140
|
+
const r = await indexer.backfill(agent.id, tasks);
|
|
1141
|
+
return {
|
|
1142
|
+
success: r.ok !== false && !r.error,
|
|
1143
|
+
action: 'backfill-search-index',
|
|
1144
|
+
indexed: r.indexed || 0,
|
|
1145
|
+
skipped: r.skipped || 0,
|
|
1146
|
+
failed: r.failed || 0,
|
|
1147
|
+
...(r.error ? { error: r.error } : {}),
|
|
1148
|
+
message: r.ok === false
|
|
1149
|
+
? `Tasks backfill failed: ${r.reason || r.error || 'unknown'}`
|
|
1150
|
+
: `Indexed ${r.indexed || 0} tasks` +
|
|
1151
|
+
(r.skipped ? `, skipped ${r.skipped}` : '') +
|
|
1152
|
+
(r.failed ? `, failed ${r.failed}` : '') + '.',
|
|
1153
|
+
};
|
|
1154
|
+
}
|
|
1155
|
+
|
|
908
1156
|
async listTasks(agent, params) {
|
|
909
1157
|
const { status, priority } = params;
|
|
910
1158
|
let tasks = [...agent.taskList.tasks];
|
|
@@ -380,11 +380,14 @@ After each invocation you will get a tool-result embedded in the following user
|
|
|
380
380
|
} else {
|
|
381
381
|
// Validate each action
|
|
382
382
|
for (const [index, action] of params.actions.entries()) {
|
|
383
|
+
// Accept both `type` and `action` as item discriminator
|
|
384
|
+
// (cross-tool field-name unification).
|
|
385
|
+
if (!action.type && action.action) action.type = action.action;
|
|
383
386
|
if (!action.type) {
|
|
384
387
|
errors.push(`Action ${index + 1}: type is required`);
|
|
385
388
|
continue;
|
|
386
389
|
}
|
|
387
|
-
|
|
390
|
+
|
|
388
391
|
switch (action.type) {
|
|
389
392
|
case 'run-command':
|
|
390
393
|
if (!action.command || !action.command.trim()) {
|
|
@@ -431,6 +434,25 @@ After each invocation you will get a tool-result embedded in the following user
|
|
|
431
434
|
* @returns {Promise<Object>} Execution result
|
|
432
435
|
*/
|
|
433
436
|
async execute(params, context) {
|
|
437
|
+
// Forgiving normalization — production agents commonly call with
|
|
438
|
+
// the natural singular shape `{command: "ls"}` instead of the
|
|
439
|
+
// documented plural `{actions: [{type: "run-command", command: "ls"}]}`.
|
|
440
|
+
// Live trace: gpt-5.4 + Kimi-K2.6 both hit "actions is not iterable"
|
|
441
|
+
// on this. Accept singular forms here and promote to canonical.
|
|
442
|
+
if ((!params.actions || !Array.isArray(params.actions)) && params.command) {
|
|
443
|
+
const { command, type, ...rest } = params;
|
|
444
|
+
params = { ...params, actions: [{ type: type || 'run-command', command, ...rest }] };
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
// Normalize discriminator on each action item (accept both `type`
|
|
448
|
+
// and `action`). Same rationale as fileSystemTool — execute() may
|
|
449
|
+
// be called bypassing validation in production.
|
|
450
|
+
if (Array.isArray(params.actions)) {
|
|
451
|
+
for (const a of params.actions) {
|
|
452
|
+
if (a && !a.type && a.action) a.type = a.action;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
|
|
434
456
|
const { actions, timeout: customTimeout, async: forceAsync } = params;
|
|
435
457
|
const { agentId, projectDir, directoryAccess } = context;
|
|
436
458
|
|
package/src/tools/visionTool.js
CHANGED
|
@@ -123,6 +123,13 @@ ANSWERS: Structured, direct answers only — no filler text.`;
|
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
async execute(params, context = {}) {
|
|
126
|
+
// Reverse-forgiveness: accept plural envelope {actions:[{type/action}]}
|
|
127
|
+
// even though this tool's canonical shape is singular.
|
|
128
|
+
if (Array.isArray(params?.actions) && params.actions.length > 0) {
|
|
129
|
+
const a = params.actions[0] || {};
|
|
130
|
+
params = { ...params, ...a, action: a.type || a.action || params.action };
|
|
131
|
+
}
|
|
132
|
+
|
|
126
133
|
this._ensureCleanup();
|
|
127
134
|
|
|
128
135
|
try {
|
|
@@ -319,6 +319,13 @@ Code:
|
|
|
319
319
|
* @returns {Promise<Object>} Execution result
|
|
320
320
|
*/
|
|
321
321
|
async execute(params, context = {}) {
|
|
322
|
+
// Reverse-forgiveness: accept plural {actions:[{...}]} envelope
|
|
323
|
+
// (cross-tool unification).
|
|
324
|
+
if (Array.isArray(params?.actions) && params.actions.length > 0) {
|
|
325
|
+
const a = params.actions[0] || {};
|
|
326
|
+
params = { ...params, ...a, action: a.type || a.action || params.action };
|
|
327
|
+
}
|
|
328
|
+
|
|
322
329
|
// FIRST THING: an unconditional console.log so we can always see that
|
|
323
330
|
// the tool was invoked — before any early-return (parse failure,
|
|
324
331
|
// bridge disabled, validation fail) or thrown error could swallow it.
|