onbuzz 4.8.2 → 4.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1034) hide show
  1. package/bin/cli.js +27 -1
  2. package/bin/composio-cli.js +431 -0
  3. package/package.json +1 -1
  4. package/scripts/build-onboarding-doc.cjs +805 -0
  5. package/scripts/composio-bench/README.md +151 -0
  6. package/scripts/memory-bench/bench.mjs +576 -0
  7. package/scripts/memory-bench/live-after-2026-05-21T16-20-52-767Z.json +150 -0
  8. package/scripts/memory-bench/live-after-2026-05-21T16-37-17-147Z.json +795 -0
  9. package/scripts/memory-bench/live-after-final-2026-05-21T17-16-02-947Z.json +766 -0
  10. package/scripts/memory-bench/live-after-v2-2026-05-21T16-52-26-833Z.json +890 -0
  11. package/scripts/memory-bench/live-after-v3-2026-05-21T17-05-40-622Z.json +955 -0
  12. package/scripts/memory-bench/live-probe-v2.mjs +412 -0
  13. package/scripts/memory-bench/live-probe.mjs +387 -0
  14. package/scripts/memory-bench/live-smoke-2026-05-21T16-22-35-945Z.json +36 -0
  15. package/scripts/memory-bench/live-smoke2-2026-05-21T16-24-14-095Z.json +36 -0
  16. package/scripts/memory-bench/live-smoke3-2026-05-21T16-26-54-093Z.json +123 -0
  17. package/scripts/memory-bench/live-v2-baseline-2026-05-23T22-43-20-757Z.json +628 -0
  18. package/scripts/memory-bench/live-v2-directive-2026-05-23T21-32-41-369Z.json +628 -0
  19. package/scripts/memory-bench/live-v2-smoke-2026-05-23T20-06-37-325Z.json +34 -0
  20. package/scripts/memory-bench/live-v2-smoke-2026-05-23T20-12-48-199Z.json +38 -0
  21. package/scripts/memory-bench/results-baseline-2026-05-19T11-23-12-245Z.json +39 -0
  22. package/scripts/memory-bench/results-baseline-2026-05-19T11-30-28-763Z.json +1024 -0
  23. package/scripts/memory-bench/results-baseline-2026-05-19T11-34-19-299Z.json +1007 -0
  24. package/scripts/memory-bench/results-baseline-2026-05-19T11-44-18-054Z.json +1432 -0
  25. package/scripts/memory-bench/results-nudge-combined-2026-05-19T12-00-37-465Z.json +1413 -0
  26. package/scripts/memory-bench/results-nudge-directive-2026-05-19T11-36-52-963Z.json +210 -0
  27. package/scripts/memory-bench/results-nudge-directive-2026-05-19T11-49-55-790Z.json +1464 -0
  28. package/scripts/memory-bench/results-nudge-echo-catalog-2026-05-19T11-39-01-829Z.json +232 -0
  29. package/scripts/memory-bench/results-nudge-echo-catalog-2026-05-19T11-55-12-705Z.json +1397 -0
  30. package/scripts/memory-bench/scenarios-v2.mjs +123 -0
  31. package/scripts/memory-bench/scenarios.mjs +178 -0
  32. package/scripts/office-bench/generate-samples.mjs +180 -0
  33. package/scripts/op-posture-bench/bench.mjs +397 -0
  34. package/scripts/op-posture-bench/probe.mjs +87 -0
  35. package/scripts/op-posture-bench/results-2026-05-18T20-29-13-941Z.json +57 -0
  36. package/scripts/op-posture-bench/results-2026-05-18T20-38-36-400Z.json +3071 -0
  37. package/scripts/op-posture-bench/scenarios.mjs +60 -0
  38. package/scripts/op-posture-bench/variants.mjs +68 -0
  39. package/scripts/stub-bench/bench.mjs +439 -0
  40. package/scripts/stub-bench/fixture/auth.js +41 -0
  41. package/scripts/stub-bench/results-2026-05-19T10-33-27-045Z.json +99 -0
  42. package/scripts/stub-bench/results-2026-05-19T10-35-08-240Z.json +920 -0
  43. package/scripts/stub-bench/results-2026-05-19T10-40-12-166Z.json +463 -0
  44. package/src/__tests__/composioCliFlags.test.js +239 -0
  45. package/src/core/__tests__/agentScheduler.codebaseKnowledge.test.js +65 -0
  46. package/src/core/__tests__/agentScheduler.memoryInjection.test.js +78 -0
  47. package/src/core/agentPool.js +10 -0
  48. package/src/core/agentScheduler.js +91 -0
  49. package/src/index.js +19 -3
  50. package/src/interfaces/__tests__/bulkAgentRoute.test.js +290 -0
  51. package/src/interfaces/__tests__/composioRoutes.test.js +318 -0
  52. package/src/interfaces/webServer.js +346 -2
  53. package/src/interfaces/webServer.js.bak +7047 -0
  54. package/src/services/__tests__/codeMapStubRenderer.test.js +207 -0
  55. package/src/services/__tests__/codebaseKnowledgeService.test.js +427 -0
  56. package/src/services/__tests__/compactionRetry.test.js +42 -42
  57. package/src/services/__tests__/composioService.test.js +332 -0
  58. package/src/services/__tests__/memoryService.appendAndCatalog.test.js +139 -0
  59. package/src/services/apiKeyManager.js +33 -0
  60. package/src/services/codeMapStubRenderer.js +142 -0
  61. package/src/services/codebaseKnowledgeService.js +430 -0
  62. package/src/services/composioService.js +378 -0
  63. package/src/services/memoryService.js +98 -0
  64. package/src/tools/__tests__/baseTool.test.js +62 -0
  65. package/src/tools/__tests__/codeMapTool.pluralCanonical.test.js +83 -0
  66. package/src/tools/__tests__/composioTool.test.js +268 -0
  67. package/src/tools/__tests__/memoryTool.pluralCanonical.test.js +189 -0
  68. package/src/tools/__tests__/memoryTool.test.js +1 -1
  69. package/src/tools/__tests__/officeTool.test.js +403 -0
  70. package/src/tools/__tests__/openaiFunctionSchemas.memoryReminisce.test.js +24 -25
  71. package/src/tools/__tests__/singularToolReverseForgive.test.js +97 -0
  72. package/src/tools/__tests__/taskManagerTool.discipline.test.js +137 -0
  73. package/src/tools/__tests__/taskManagerTool.transition.test.js +236 -0
  74. package/src/tools/__tests__/toolShapeForgiveness.test.js +260 -0
  75. package/src/tools/baseTool.js +28 -1
  76. package/src/tools/codeMapTool.js +1673 -1521
  77. package/src/tools/composioTool.js +307 -0
  78. package/src/tools/fileContentReplaceTool.js +893 -840
  79. package/src/tools/fileSystemTool.js +1372 -1314
  80. package/src/tools/fileTreeTool.js +7 -0
  81. package/src/tools/memoryTool.js +217 -81
  82. package/src/tools/office/officeDoc.js +425 -0
  83. package/src/tools/office/officePres.js +360 -0
  84. package/src/tools/office/officeSheet.js +350 -0
  85. package/src/tools/officeTool.js +313 -0
  86. package/src/tools/openaiFunctionSchemas.js +40 -50
  87. package/src/tools/platformControlTool.js +5 -0
  88. package/src/tools/seekTool.js +36 -1
  89. package/src/tools/skillsTool.js +10 -0
  90. package/src/tools/taskManagerTool.js +149 -14
  91. package/src/tools/terminalTool.js +23 -1
  92. package/src/tools/visionTool.js +7 -0
  93. package/src/tools/visualEditorTool.js +7 -0
  94. package/src/tools/whatsappTool.js +7 -0
  95. package/src/utilities/authCache.js +47 -6
  96. package/src/utilities/authCache.js.backup-1779570472481 +121 -0
  97. package/src/utilities/constants.js +19 -11
  98. package/web-ui/build/index.html +2 -2
  99. package/web-ui/build/static/1c-BoCdC5pC.js +1 -0
  100. package/web-ui/build/static/abap-D7A92M1K.js +1 -0
  101. package/web-ui/build/static/abnf-DIcpJ99N.js +1 -0
  102. package/web-ui/build/static/abnf-d4I9yABN.js +1 -0
  103. package/web-ui/build/static/accesslog-D_Ksv5Fi.js +1 -0
  104. package/web-ui/build/static/actionscript-CMJI1an7.js +1 -0
  105. package/web-ui/build/static/actionscript-CNcWu4a1.js +1 -0
  106. package/web-ui/build/static/ada-BIqOBKro.js +1 -0
  107. package/web-ui/build/static/ada-BaTkJMdz.js +1 -0
  108. package/web-ui/build/static/agda-DmRdGgvt.js +1 -0
  109. package/web-ui/build/static/al-g8BvIfOt.js +1 -0
  110. package/web-ui/build/static/angelscript-BGxc0B7l.js +1 -0
  111. package/web-ui/build/static/antlr4-Da7ff6-m.js +1 -0
  112. package/web-ui/build/static/apache-Bibp-dVJ.js +1 -0
  113. package/web-ui/build/static/apacheconf-VzeL8tYb.js +1 -0
  114. package/web-ui/build/static/apex-DUaOCea3.js +1 -0
  115. package/web-ui/build/static/apl-BpwvFE2V.js +1 -0
  116. package/web-ui/build/static/applescript-5YKSWwV1.js +1 -0
  117. package/web-ui/build/static/applescript-BHqj5bpe.js +1 -0
  118. package/web-ui/build/static/aql-B0Wx_3hH.js +1 -0
  119. package/web-ui/build/static/arcade-CR8KkII1.js +1 -0
  120. package/web-ui/build/static/arduino-CYx5u85C.js +1 -0
  121. package/web-ui/build/static/arduino-ClVU2zro.js +1 -0
  122. package/web-ui/build/static/arff-kutIH4CC.js +1 -0
  123. package/web-ui/build/static/armasm-DBm1lGrc.js +1 -0
  124. package/web-ui/build/static/asciidoc-Cl02VMGf.js +1 -0
  125. package/web-ui/build/static/asciidoc-MMFYRqre.js +1 -0
  126. package/web-ui/build/static/asm6502-DPVMGaHn.js +1 -0
  127. package/web-ui/build/static/asmatmel-Dz4vtZ11.js +1 -0
  128. package/web-ui/build/static/aspectj-BZidGBlr.js +1 -0
  129. package/web-ui/build/static/aspnet-C2mo9iee.js +1 -0
  130. package/web-ui/build/static/autohotkey-Bx83oFMW.js +1 -0
  131. package/web-ui/build/static/autohotkey-DciFl6K5.js +1 -0
  132. package/web-ui/build/static/autoit-TVKWI5bu.js +1 -0
  133. package/web-ui/build/static/autoit-oORW7mrd.js +1 -0
  134. package/web-ui/build/static/avisynth-D_5uOtxP.js +1 -0
  135. package/web-ui/build/static/avrasm-D22JmbLm.js +1 -0
  136. package/web-ui/build/static/avro-idl-CtTuANGZ.js +1 -0
  137. package/web-ui/build/static/awk-Bnez22eR.js +1 -0
  138. package/web-ui/build/static/axapta-eqcr7C2-.js +1 -0
  139. package/web-ui/build/static/bash-D3XWHCZZ.js +1 -0
  140. package/web-ui/build/static/bash-px0MqVxE.js +1 -0
  141. package/web-ui/build/static/basic-BWOdgKLg.js +1 -0
  142. package/web-ui/build/static/basic-C7PK4wVg.js +1 -0
  143. package/web-ui/build/static/batch-CFeuSY9D.js +1 -0
  144. package/web-ui/build/static/bbcode-CRC0UNOS.js +1 -0
  145. package/web-ui/build/static/bicep-C18w8d6Z.js +1 -0
  146. package/web-ui/build/static/birb-DPiF4fwX.js +1 -0
  147. package/web-ui/build/static/bison-C1RWPaLl.js +1 -0
  148. package/web-ui/build/static/bnf-BelSXhsr.js +1 -0
  149. package/web-ui/build/static/bnf-D_m4SZuc.js +1 -0
  150. package/web-ui/build/static/brainfuck-Ci7P0POq.js +1 -0
  151. package/web-ui/build/static/brainfuck-DIrW6_96.js +1 -0
  152. package/web-ui/build/static/brightscript-4XgpA0OQ.js +1 -0
  153. package/web-ui/build/static/bro-4kAMStb2.js +1 -0
  154. package/web-ui/build/static/bsl-CleVjH1I.js +1 -0
  155. package/web-ui/build/static/c-Ct3AAwH6.js +1 -0
  156. package/web-ui/build/static/c-EiJrAzIQ.js +1 -0
  157. package/web-ui/build/static/c-like-B361rHmz.js +1 -0
  158. package/web-ui/build/static/cal-BZ3Pr4JI.js +1 -0
  159. package/web-ui/build/static/capnproto-LmwOdJJp.js +1 -0
  160. package/web-ui/build/static/ceylon-CKAfIFzx.js +1 -0
  161. package/web-ui/build/static/cfscript-Cms4z16U.js +1 -0
  162. package/web-ui/build/static/chaiscript-DKxRiUyN.js +1 -0
  163. package/web-ui/build/static/cil-C6rGhwce.js +1 -0
  164. package/web-ui/build/static/clean-DmpXs6RN.js +1 -0
  165. package/web-ui/build/static/clojure-DRYxiF9s.js +1 -0
  166. package/web-ui/build/static/clojure-DTjXEJCq.js +1 -0
  167. package/web-ui/build/static/clojure-repl-C1qlAUnK.js +1 -0
  168. package/web-ui/build/static/cmake-DtUokafC.js +1 -0
  169. package/web-ui/build/static/cmake-_WqF1fG8.js +1 -0
  170. package/web-ui/build/static/cobol-D2Q0IMuT.js +1 -0
  171. package/web-ui/build/static/coffeescript-MRThzdTU.js +1 -0
  172. package/web-ui/build/static/coffeescript-OHOpkJvb.js +1 -0
  173. package/web-ui/build/static/concurnas-CVGat9IA.js +1 -0
  174. package/web-ui/build/static/coq-CB_bM4lt.js +1 -0
  175. package/web-ui/build/static/coq-WNK38Cqz.js +1 -0
  176. package/web-ui/build/static/cos-CNa5GVxa.js +1 -0
  177. package/web-ui/build/static/cpp-D-9lHx0_.js +1 -0
  178. package/web-ui/build/static/cpp-DRvL1yaA.js +1 -0
  179. package/web-ui/build/static/crmsh-evnPMxnd.js +1 -0
  180. package/web-ui/build/static/crystal-RGhNrgnC.js +1 -0
  181. package/web-ui/build/static/crystal-yrBjXjEh.js +1 -0
  182. package/web-ui/build/static/csharp-Dr7sLtl1.js +1 -0
  183. package/web-ui/build/static/csharp-zNVQxjuC.js +1 -0
  184. package/web-ui/build/static/cshtml-CoiK-7Bu.js +1 -0
  185. package/web-ui/build/static/csp-Bhgq86EB.js +1 -0
  186. package/web-ui/build/static/csp-C20UcGAL.js +1 -0
  187. package/web-ui/build/static/css-D1vlrRV2.js +1 -0
  188. package/web-ui/build/static/css-extras-DVSAYMbv.js +1 -0
  189. package/web-ui/build/static/csv-BgR9D8jG.js +1 -0
  190. package/web-ui/build/static/cypher-Dxehyj6Y.js +1 -0
  191. package/web-ui/build/static/d-B-Se39n2.js +1 -0
  192. package/web-ui/build/static/d-Cr4d56op.js +1 -0
  193. package/web-ui/build/static/dart-BBqlOFkR.js +1 -0
  194. package/web-ui/build/static/dart-GRD7MWem.js +1 -0
  195. package/web-ui/build/static/dataweave-BK-Tahkw.js +1 -0
  196. package/web-ui/build/static/dax-pTr9GVoe.js +1 -0
  197. package/web-ui/build/static/delphi-CbwSNmp4.js +1 -0
  198. package/web-ui/build/static/dhall-CuFqRXr6.js +1 -0
  199. package/web-ui/build/static/diff-CK8Fq88e.js +1 -0
  200. package/web-ui/build/static/diff-CWbUTU-C.js +1 -0
  201. package/web-ui/build/static/django-DWaEPdP6.js +1 -0
  202. package/web-ui/build/static/django-TkEFpAOO.js +1 -0
  203. package/web-ui/build/static/dns-DKpFJlA0.js +1 -0
  204. package/web-ui/build/static/dns-zone-file-BIsmZEMf.js +1 -0
  205. package/web-ui/build/static/docker-DUavAYf7.js +1 -0
  206. package/web-ui/build/static/dockerfile-YnavjTIo.js +1 -0
  207. package/web-ui/build/static/dos-Dv3Qr-Oo.js +1 -0
  208. package/web-ui/build/static/dot-BtIPbx7t.js +1 -0
  209. package/web-ui/build/static/dsconfig-CEgd9-kI.js +1 -0
  210. package/web-ui/build/static/dts-BztZn8T6.js +1 -0
  211. package/web-ui/build/static/dust-B-527Hc0.js +1 -0
  212. package/web-ui/build/static/ebnf-CH_nnNi5.js +1 -0
  213. package/web-ui/build/static/ebnf-CuBjcj0j.js +1 -0
  214. package/web-ui/build/static/editorconfig-CA9KaQ0w.js +1 -0
  215. package/web-ui/build/static/eiffel-DVYJwwQw.js +1 -0
  216. package/web-ui/build/static/ejs-C2LKgDYE.js +1 -0
  217. package/web-ui/build/static/elixir-DVXGkbnw.js +1 -0
  218. package/web-ui/build/static/elixir-meJ_qqx4.js +1 -0
  219. package/web-ui/build/static/elm-C5sYS5Cb.js +1 -0
  220. package/web-ui/build/static/elm-Dj443pWY.js +1 -0
  221. package/web-ui/build/static/erb-CAj5yksQ.js +1 -0
  222. package/web-ui/build/static/erb-CcUB2tMd.js +1 -0
  223. package/web-ui/build/static/erlang-JusKooAX.js +1 -0
  224. package/web-ui/build/static/erlang-repl-wYgxDX5h.js +1 -0
  225. package/web-ui/build/static/erlang-sn-PsrSf.js +1 -0
  226. package/web-ui/build/static/etlua-ChDwUxz6.js +1 -0
  227. package/web-ui/build/static/excel-BJux1m2h.js +1 -0
  228. package/web-ui/build/static/excel-formula-i5ByFxAu.js +1 -0
  229. package/web-ui/build/static/factor-CTutAp6r.js +1 -0
  230. package/web-ui/build/static/false-DQz_zYVV.js +1 -0
  231. package/web-ui/build/static/firestore-security-rules-DRGBNXh2.js +1 -0
  232. package/web-ui/build/static/fix-DeSUhixI.js +1 -0
  233. package/web-ui/build/static/flix-BKTJVua_.js +1 -0
  234. package/web-ui/build/static/flow-BpcZsNuo.js +1 -0
  235. package/web-ui/build/static/fortran-BZIKfBPW.js +1 -0
  236. package/web-ui/build/static/fortran-BdezWEh5.js +1 -0
  237. package/web-ui/build/static/fsharp-1Gpt8wZo.js +1 -0
  238. package/web-ui/build/static/fsharp-CMyiqXUW.js +1 -0
  239. package/web-ui/build/static/ftl-D9bBJMhV.js +1 -0
  240. package/web-ui/build/static/gams-DL57wTHN.js +1 -0
  241. package/web-ui/build/static/gap-DN4Uo9cF.js +1 -0
  242. package/web-ui/build/static/gauss-DTa1H0QR.js +1 -0
  243. package/web-ui/build/static/gcode-U5GhqE37.js +1 -0
  244. package/web-ui/build/static/gcode-s-E37fb4.js +1 -0
  245. package/web-ui/build/static/gdscript-DkjgGcDv.js +1 -0
  246. package/web-ui/build/static/gedcom-BbjSSId3.js +1 -0
  247. package/web-ui/build/static/gherkin-BwIzGx7J.js +1 -0
  248. package/web-ui/build/static/gherkin-C97W_9I9.js +1 -0
  249. package/web-ui/build/static/git-DO8dnOip.js +1 -0
  250. package/web-ui/build/static/glsl-B_4UD4-O.js +1 -0
  251. package/web-ui/build/static/glsl-CGSjLy2x.js +1 -0
  252. package/web-ui/build/static/gml-BiITg8HI.js +1 -0
  253. package/web-ui/build/static/gml-DInGU66p.js +1 -0
  254. package/web-ui/build/static/gn--m2IH4i3.js +1 -0
  255. package/web-ui/build/static/go-DOK7GAd-.js +1 -0
  256. package/web-ui/build/static/go-bof0B9jK.js +1 -0
  257. package/web-ui/build/static/go-module-CPIVqmnL.js +1 -0
  258. package/web-ui/build/static/golo-jgy07E43.js +1 -0
  259. package/web-ui/build/static/gradle-BISOF0nH.js +1 -0
  260. package/web-ui/build/static/graphql-FqlbDLTL.js +1 -0
  261. package/web-ui/build/static/groovy-BM0ZyW4a.js +1 -0
  262. package/web-ui/build/static/groovy-oUdbfbZY.js +1 -0
  263. package/web-ui/build/static/haml-C8Qg-VO5.js +1 -0
  264. package/web-ui/build/static/haml-Dse28pB_.js +1 -0
  265. package/web-ui/build/static/handlebars-CWT7WazY.js +1 -0
  266. package/web-ui/build/static/handlebars-Ow3joqOm.js +1 -0
  267. package/web-ui/build/static/haskell-BfraeRhd.js +1 -0
  268. package/web-ui/build/static/haskell-EhcU7sbn.js +1 -0
  269. package/web-ui/build/static/haxe-B8tUoExu.js +1 -0
  270. package/web-ui/build/static/haxe-D9WQHhTh.js +1 -0
  271. package/web-ui/build/static/hcl-CG3GCouf.js +1 -0
  272. package/web-ui/build/static/hlsl-CSWRMQ3m.js +1 -0
  273. package/web-ui/build/static/hoon-Cj0JdbFY.js +1 -0
  274. package/web-ui/build/static/hpkp-CmjdXbgl.js +1 -0
  275. package/web-ui/build/static/hsp-VaFZ7Rlv.js +1 -0
  276. package/web-ui/build/static/hsts-CkJ6UPzY.js +1 -0
  277. package/web-ui/build/static/htmlbars-pfHjYqd2.js +1 -0
  278. package/web-ui/build/static/http-2LA-qivJ.js +1 -0
  279. package/web-ui/build/static/http-CQ_5JSsj.js +1 -0
  280. package/web-ui/build/static/hy-C-Dll2MQ.js +1 -0
  281. package/web-ui/build/static/ichigojam-DecRewwq.js +1 -0
  282. package/web-ui/build/static/icon-CdnU9zPA.js +1 -0
  283. package/web-ui/build/static/icu-message-format-CUQtjk6Q.js +1 -0
  284. package/web-ui/build/static/idris-CRMftLq6.js +1 -0
  285. package/web-ui/build/static/iecst-CXhHqz1P.js +1 -0
  286. package/web-ui/build/static/ignore-_emqIx7v.js +1 -0
  287. package/web-ui/build/static/index-BBHrMvg7.js +1216 -0
  288. package/web-ui/build/static/index-ChkZR_aE.js +13 -0
  289. package/web-ui/build/static/index-DU4GNSOf.js +1 -0
  290. package/web-ui/build/static/index-_z8JjNrI.css +1 -0
  291. package/web-ui/build/static/inform7-CbqlFoFE.js +1 -0
  292. package/web-ui/build/static/inform7-TxZViMJ9.js +1 -0
  293. package/web-ui/build/static/ini-D1sHtm5e.js +1 -0
  294. package/web-ui/build/static/ini-DnqB7pfX.js +1 -0
  295. package/web-ui/build/static/io-MnQK1mM-.js +1 -0
  296. package/web-ui/build/static/irpf90-BRaAenqx.js +1 -0
  297. package/web-ui/build/static/isbl-kubGT4rM.js +1 -0
  298. package/web-ui/build/static/j-BIz9wT9q.js +1 -0
  299. package/web-ui/build/static/java-CbQmsHSK.js +1 -0
  300. package/web-ui/build/static/java-v1B9fNL2.js +1 -0
  301. package/web-ui/build/static/javadoc-TB1OtWS7.js +1 -0
  302. package/web-ui/build/static/javadoclike-BBQPwDAU.js +1 -0
  303. package/web-ui/build/static/javascript-DzNVL5l_.js +1 -0
  304. package/web-ui/build/static/javastacktrace-BduOgG1e.js +1 -0
  305. package/web-ui/build/static/jboss-cli-BcqzI366.js +1 -0
  306. package/web-ui/build/static/jexl-Boyapidr.js +1 -0
  307. package/web-ui/build/static/jolie-hEbkNpsb.js +1 -0
  308. package/web-ui/build/static/jq-ZyEE6oGU.js +1 -0
  309. package/web-ui/build/static/js-extras-CXOzvlL7.js +1 -0
  310. package/web-ui/build/static/js-templates-CkHsm5px.js +1 -0
  311. package/web-ui/build/static/jsdoc-Uk3hj8z2.js +1 -0
  312. package/web-ui/build/static/json-BFi9igjd.js +1 -0
  313. package/web-ui/build/static/json-LI9wtNaG.js +1 -0
  314. package/web-ui/build/static/json5-PwjNByuN.js +1 -0
  315. package/web-ui/build/static/jsonp-DpfGuNSW.js +1 -0
  316. package/web-ui/build/static/jsstacktrace-DhOP2AhS.js +1 -0
  317. package/web-ui/build/static/jsx-DmWoDk8F.js +1 -0
  318. package/web-ui/build/static/julia-DBC5h81N.js +1 -0
  319. package/web-ui/build/static/julia-Dh9sV3LX.js +1 -0
  320. package/web-ui/build/static/julia-repl-BYyDp1f4.js +1 -0
  321. package/web-ui/build/static/keepalived-BTxjrZMV.js +1 -0
  322. package/web-ui/build/static/keyman-IYiyCDCU.js +1 -0
  323. package/web-ui/build/static/kotlin-C0PBuzvy.js +1 -0
  324. package/web-ui/build/static/kotlin-LWYZUK_T.js +1 -0
  325. package/web-ui/build/static/kumir-CQIbnv9I.js +1 -0
  326. package/web-ui/build/static/kusto-DA7pQ-Rb.js +1 -0
  327. package/web-ui/build/static/lasso-CrHySbnC.js +1 -0
  328. package/web-ui/build/static/latex-CLSOFXG4.js +1 -0
  329. package/web-ui/build/static/latex-DYknD4Dx.js +1 -0
  330. package/web-ui/build/static/latte-4QvZcKVw.js +1 -0
  331. package/web-ui/build/static/ldif-Dr96BfRx.js +1 -0
  332. package/web-ui/build/static/leaf-C9qL2Qde.js +1 -0
  333. package/web-ui/build/static/less-DpoID9ZJ.js +1 -0
  334. package/web-ui/build/static/less-wO8QO0XW.js +1 -0
  335. package/web-ui/build/static/lilypond-CNp4Kb1P.js +1 -0
  336. package/web-ui/build/static/liquid-DLULQdgV.js +1 -0
  337. package/web-ui/build/static/lisp-CrVo-Llt.js +1 -0
  338. package/web-ui/build/static/lisp-QIAoXzmW.js +1 -0
  339. package/web-ui/build/static/livecodeserver-DrehOgbf.js +1 -0
  340. package/web-ui/build/static/livescript-Cm2Yp34x.js +1 -0
  341. package/web-ui/build/static/livescript-mVYzlrko.js +1 -0
  342. package/web-ui/build/static/llvm-D6KsQJjh.js +1 -0
  343. package/web-ui/build/static/llvm-DhIp1o-1.js +1 -0
  344. package/web-ui/build/static/log-Sj3ocpgB.js +1 -0
  345. package/web-ui/build/static/lolcode-BSeGnWYG.js +1 -0
  346. package/web-ui/build/static/lsl-DwgUIp0U.js +1 -0
  347. package/web-ui/build/static/lua-B7Ot0Oou.js +1 -0
  348. package/web-ui/build/static/lua-zydwn5-S.js +1 -0
  349. package/web-ui/build/static/magma-Dgfy2Qny.js +1 -0
  350. package/web-ui/build/static/makefile-CSjtzdcw.js +1 -0
  351. package/web-ui/build/static/makefile-DrnEneus.js +1 -0
  352. package/web-ui/build/static/markdown-D9Ke3tYA.js +1 -0
  353. package/web-ui/build/static/markdown-DmwKuI2Y.js +1 -0
  354. package/web-ui/build/static/markup-templating-CikqfHT9.js +1 -0
  355. package/web-ui/build/static/mathematica-OC0imzI5.js +1 -0
  356. package/web-ui/build/static/matlab-BlPcqzRw.js +1 -0
  357. package/web-ui/build/static/matlab-C1iteCkE.js +1 -0
  358. package/web-ui/build/static/maxima-DecbOh0Y.js +1 -0
  359. package/web-ui/build/static/maxscript-80cPuIOA.js +1 -0
  360. package/web-ui/build/static/mel-NI7ysGX2.js +1 -0
  361. package/web-ui/build/static/mel-r03p1eJo.js +1 -0
  362. package/web-ui/build/static/mercury-BdNZw6ZU.js +1 -0
  363. package/web-ui/build/static/mermaid-C1LB7zMJ.js +1 -0
  364. package/web-ui/build/static/mipsasm-BnZ0cdht.js +1 -0
  365. package/web-ui/build/static/mizar-BGPNX3WQ.js +1 -0
  366. package/web-ui/build/static/mizar-CswPcmcG.js +1 -0
  367. package/web-ui/build/static/mojolicious-rRtgy8Or.js +1 -0
  368. package/web-ui/build/static/mongodb-CJU0oeix.js +1 -0
  369. package/web-ui/build/static/monkey-Bj0HaV5-.js +1 -0
  370. package/web-ui/build/static/monkey-JRYuMIYc.js +1 -0
  371. package/web-ui/build/static/moonscript-i7e8bkxZ.js +1 -0
  372. package/web-ui/build/static/moonscript-ldoM156V.js +1 -0
  373. package/web-ui/build/static/n1ql-C0xs8qWA.js +1 -0
  374. package/web-ui/build/static/n1ql-DlC-GlVq.js +1 -0
  375. package/web-ui/build/static/n4js-mIwtIanO.js +1 -0
  376. package/web-ui/build/static/nand2tetris-hdl-mfHIYPZD.js +1 -0
  377. package/web-ui/build/static/naniscript-DiDayxx1.js +1 -0
  378. package/web-ui/build/static/nasm-7uf2nfNC.js +1 -0
  379. package/web-ui/build/static/neon-BKgOgIAL.js +1 -0
  380. package/web-ui/build/static/nevod-BlujoQ5k.js +1 -0
  381. package/web-ui/build/static/nginx-Bb57ubp_.js +1 -0
  382. package/web-ui/build/static/nginx-DmLU0URp.js +1 -0
  383. package/web-ui/build/static/nim-CmnPRTHF.js +1 -0
  384. package/web-ui/build/static/nim-DOReB32c.js +1 -0
  385. package/web-ui/build/static/nix-BDMn1sgi.js +1 -0
  386. package/web-ui/build/static/nix-LTHuFEfQ.js +1 -0
  387. package/web-ui/build/static/node-repl-dxwu8SWp.js +1 -0
  388. package/web-ui/build/static/nsis-CKD0KqBT.js +1 -0
  389. package/web-ui/build/static/nsis-IlSwBUak.js +1 -0
  390. package/web-ui/build/static/objectivec-D4Lo30HV.js +1 -0
  391. package/web-ui/build/static/objectivec-zmGGqvoM.js +1 -0
  392. package/web-ui/build/static/ocaml-2uzfqAr8.js +1 -0
  393. package/web-ui/build/static/ocaml-wF6lV9H4.js +1 -0
  394. package/web-ui/build/static/opencl-B82Xjnw5.js +1 -0
  395. package/web-ui/build/static/openqasm-VzVaHpAP.js +1 -0
  396. package/web-ui/build/static/openscad-B-qK1VfW.js +1 -0
  397. package/web-ui/build/static/oxygene-BNTVgbsA.js +1 -0
  398. package/web-ui/build/static/oz-5ZfXBXQY.js +1 -0
  399. package/web-ui/build/static/parigp-S8JhoJoz.js +1 -0
  400. package/web-ui/build/static/parser-BZPtbLcv.js +1 -0
  401. package/web-ui/build/static/parser3-BZRLDHuv.js +1 -0
  402. package/web-ui/build/static/pascal-GKzqT2Ku.js +1 -0
  403. package/web-ui/build/static/pascaligo-DnbFz_mr.js +1 -0
  404. package/web-ui/build/static/pcaxis-DiRsos26.js +1 -0
  405. package/web-ui/build/static/peoplecode-CMDLbqGB.js +1 -0
  406. package/web-ui/build/static/perl-BOnBAciC.js +1 -0
  407. package/web-ui/build/static/perl-fMVLgVTb.js +1 -0
  408. package/web-ui/build/static/pf-z6xsHHPS.js +1 -0
  409. package/web-ui/build/static/pgsql-5jHAyGJf.js +1 -0
  410. package/web-ui/build/static/php-CbG6Jq36.js +1 -0
  411. package/web-ui/build/static/php-D9yyh70o.js +1 -0
  412. package/web-ui/build/static/php-extras-CQKSwnMo.js +1 -0
  413. package/web-ui/build/static/php-template-Ch4UQhUx.js +1 -0
  414. package/web-ui/build/static/phpdoc-Be7TYcGQ.js +1 -0
  415. package/web-ui/build/static/plaintext-BsYjBqDy.js +1 -0
  416. package/web-ui/build/static/plsql-Dc4ePipN.js +1 -0
  417. package/web-ui/build/static/pony-Cen7DtWb.js +1 -0
  418. package/web-ui/build/static/powerquery-BIOJ1eUE.js +1 -0
  419. package/web-ui/build/static/powershell-CbEjJpj7.js +1 -0
  420. package/web-ui/build/static/powershell-DlceT0ds.js +1 -0
  421. package/web-ui/build/static/processing-C9GaKPU-.js +1 -0
  422. package/web-ui/build/static/processing-CTPA3QIV.js +1 -0
  423. package/web-ui/build/static/profile-CHjz016L.js +1 -0
  424. package/web-ui/build/static/prolog-BK0g5F4c.js +1 -0
  425. package/web-ui/build/static/prolog-DrrwUODp.js +1 -0
  426. package/web-ui/build/static/promql-DftRCUlR.js +1 -0
  427. package/web-ui/build/static/properties-B122hwLT.js +1 -0
  428. package/web-ui/build/static/properties-C0m3XIaN.js +1 -0
  429. package/web-ui/build/static/protobuf-CanIoKel.js +1 -0
  430. package/web-ui/build/static/protobuf-WvDgzNtD.js +1 -0
  431. package/web-ui/build/static/psl-JsKwhg_r.js +1 -0
  432. package/web-ui/build/static/pug-DoQaiAyU.js +1 -0
  433. package/web-ui/build/static/puppet-CoRftQQB.js +1 -0
  434. package/web-ui/build/static/puppet-DHgjsvQ8.js +1 -0
  435. package/web-ui/build/static/pure-BgZIQeOr.js +1 -0
  436. package/web-ui/build/static/purebasic-BRYfIFBb.js +1 -0
  437. package/web-ui/build/static/purebasic-DxXSa8gN.js +1 -0
  438. package/web-ui/build/static/purescript-ChvJvUnk.js +1 -0
  439. package/web-ui/build/static/python-DqhW0V3z.js +1 -0
  440. package/web-ui/build/static/python-Dz2FyIQx.js +1 -0
  441. package/web-ui/build/static/python-repl-Cl3mEb2H.js +1 -0
  442. package/web-ui/build/static/q-Bg4mQWXp.js +1 -0
  443. package/web-ui/build/static/q-DwaQK_1p.js +1 -0
  444. package/web-ui/build/static/qml-D1-fdJvp.js +1 -0
  445. package/web-ui/build/static/qml-DFsoiY0T.js +1 -0
  446. package/web-ui/build/static/qore-DdEtFSV5.js +1 -0
  447. package/web-ui/build/static/qsharp-B_A0OUBX.js +1 -0
  448. package/web-ui/build/static/r-C3M2HrKx.js +1 -0
  449. package/web-ui/build/static/r-_EUAt74Q.js +1 -0
  450. package/web-ui/build/static/racket-B3uAs3VE.js +1 -0
  451. package/web-ui/build/static/reason-CyAzPvNW.js +1 -0
  452. package/web-ui/build/static/reasonml-iEzx6ejF.js +1 -0
  453. package/web-ui/build/static/regex-suWqSnRa.js +1 -0
  454. package/web-ui/build/static/rego-QeDW60Lx.js +1 -0
  455. package/web-ui/build/static/renpy-03fEqIYK.js +1 -0
  456. package/web-ui/build/static/rest-BRJIE-UZ.js +1 -0
  457. package/web-ui/build/static/rib-DOI_C8C9.js +1 -0
  458. package/web-ui/build/static/rip-BaEBdknp.js +1 -0
  459. package/web-ui/build/static/roboconf-DC8IQe4Z.js +1 -0
  460. package/web-ui/build/static/roboconf-jTu2wKoD.js +1 -0
  461. package/web-ui/build/static/robotframework-BFp2sQG2.js +1 -0
  462. package/web-ui/build/static/routeros-Br-GCWs7.js +1 -0
  463. package/web-ui/build/static/rsl-BpWeUJqw.js +1 -0
  464. package/web-ui/build/static/ruby-C3nnVoGq.js +1 -0
  465. package/web-ui/build/static/ruby-DD90V5PL.js +1 -0
  466. package/web-ui/build/static/ruleslanguage-BflyDdqj.js +1 -0
  467. package/web-ui/build/static/rust-DtiFFJtC.js +1 -0
  468. package/web-ui/build/static/rust-uJHZCfXQ.js +1 -0
  469. package/web-ui/build/static/sas-DUr8rIBf.js +1 -0
  470. package/web-ui/build/static/sas-POH3vAEy.js +1 -0
  471. package/web-ui/build/static/sass-D1oLbZQ0.js +1 -0
  472. package/web-ui/build/static/scala-CDtrRn0l.js +1 -0
  473. package/web-ui/build/static/scala-VCIKIldH.js +1 -0
  474. package/web-ui/build/static/scheme-CAWHx2Oj.js +1 -0
  475. package/web-ui/build/static/scheme-DzKv24tn.js +1 -0
  476. package/web-ui/build/static/scilab-DuxpEvzV.js +1 -0
  477. package/web-ui/build/static/scss-BKd4Y-UF.js +1 -0
  478. package/web-ui/build/static/scss-BpqUKxry.js +1 -0
  479. package/web-ui/build/static/shell-session-CglnRr2l.js +1 -0
  480. package/web-ui/build/static/shell-u-Y3PKLQ.js +1 -0
  481. package/web-ui/build/static/smali-D308KWif.js +1 -0
  482. package/web-ui/build/static/smali-DYT-jHPu.js +1 -0
  483. package/web-ui/build/static/smalltalk-BLYA-Ag1.js +1 -0
  484. package/web-ui/build/static/smalltalk-BdMVmgN0.js +1 -0
  485. package/web-ui/build/static/smarty-DUYgBrje.js +1 -0
  486. package/web-ui/build/static/sml-EEhIaAvM.js +1 -0
  487. package/web-ui/build/static/sml-bQ27koeV.js +1 -0
  488. package/web-ui/build/static/solidity-U7x7-dFr.js +1 -0
  489. package/web-ui/build/static/solution-file-Cr03jaqW.js +1 -0
  490. package/web-ui/build/static/soy-lnGOhaRM.js +1 -0
  491. package/web-ui/build/static/sparql-BRm44B1P.js +1 -0
  492. package/web-ui/build/static/splunk-spl-DdrdBOQJ.js +1 -0
  493. package/web-ui/build/static/sqf-CDtvZjid.js +1 -0
  494. package/web-ui/build/static/sqf-wr3PtKhW.js +1 -0
  495. package/web-ui/build/static/sql-B1-8AkNe.js +1 -0
  496. package/web-ui/build/static/sql-zWEK1lPB.js +1 -0
  497. package/web-ui/build/static/sql_more-Ck0DuSs3.js +1 -0
  498. package/web-ui/build/static/squirrel-CfQEIe5h.js +1 -0
  499. package/web-ui/build/static/stan-BM1Wilpj.js +1 -0
  500. package/web-ui/build/static/stan-DFPCSU1l.js +1 -0
  501. package/web-ui/build/static/stata-BJ-qKfEg.js +1 -0
  502. package/web-ui/build/static/step21-fPKcuR3s.js +1 -0
  503. package/web-ui/build/static/stylus-BhqK2C03.js +1 -0
  504. package/web-ui/build/static/stylus-BxloRYSO.js +1 -0
  505. package/web-ui/build/static/subunit-CueM7bOY.js +1 -0
  506. package/web-ui/build/static/swift-CPgZZ0ja.js +1 -0
  507. package/web-ui/build/static/swift-CsEMsJ7g.js +1 -0
  508. package/web-ui/build/static/systemd-B1Wwkby4.js +1 -0
  509. package/web-ui/build/static/t4-cs-CL3Ca0dW.js +1 -0
  510. package/web-ui/build/static/t4-templating-BoV5iKxA.js +1 -0
  511. package/web-ui/build/static/t4-vb-BKXXzk5n.js +1 -0
  512. package/web-ui/build/static/taggerscript-aJQMdfVb.js +1 -0
  513. package/web-ui/build/static/tap-BBfQFbbW.js +1 -0
  514. package/web-ui/build/static/tap-CmCrAtSH.js +1 -0
  515. package/web-ui/build/static/tcl-B8xfoxf8.js +1 -0
  516. package/web-ui/build/static/tcl-CPzoU-PX.js +1 -0
  517. package/web-ui/build/static/textile-B99mXtsV.js +1 -0
  518. package/web-ui/build/static/thrift-Cd40Ii7J.js +1 -0
  519. package/web-ui/build/static/toml-DV5wxyQS.js +1 -0
  520. package/web-ui/build/static/tp-o2VorAT6.js +1 -0
  521. package/web-ui/build/static/tremor-Cs0K_i4_.js +1 -0
  522. package/web-ui/build/static/tsx-KG-mQur8.js +1 -0
  523. package/web-ui/build/static/tt2-M3GHOvjN.js +1 -0
  524. package/web-ui/build/static/turtle-D6o0UODZ.js +1 -0
  525. package/web-ui/build/static/twig-D7LOxPkH.js +1 -0
  526. package/web-ui/build/static/twig-SHSTj-jA.js +1 -0
  527. package/web-ui/build/static/typescript-BeIk_BLV.js +1 -0
  528. package/web-ui/build/static/typescript-Btz-ypJW.js +1 -0
  529. package/web-ui/build/static/typoscript-7jDBTKMM.js +1 -0
  530. package/web-ui/build/static/unrealscript-f2f2MAJa.js +1 -0
  531. package/web-ui/build/static/uorazor-c5VZAS6K.js +1 -0
  532. package/web-ui/build/static/uri-DY2cDkq-.js +1 -0
  533. package/web-ui/build/static/v-6ffK7TKq.js +1 -0
  534. package/web-ui/build/static/vala-BgOkjEeg.js +1 -0
  535. package/web-ui/build/static/vala-BvuDZGU_.js +1 -0
  536. package/web-ui/build/static/vbnet-Bdh9clH3.js +1 -0
  537. package/web-ui/build/static/vbnet-CDpcSndL.js +1 -0
  538. package/web-ui/build/static/vbscript-dH3gn1bx.js +1 -0
  539. package/web-ui/build/static/vbscript-html-a_tIfb0-.js +1 -0
  540. package/web-ui/build/static/velocity-DGDKyukB.js +1 -0
  541. package/web-ui/build/static/verilog-CtJaE20M.js +1 -0
  542. package/web-ui/build/static/verilog-CvdiugJe.js +1 -0
  543. package/web-ui/build/static/vhdl-CN1nxPYJ.js +1 -0
  544. package/web-ui/build/static/vhdl-JtjHb_oM.js +1 -0
  545. package/web-ui/build/static/vim-DBRKYGcU.js +1 -0
  546. package/web-ui/build/static/vim-DQiU261H.js +1 -0
  547. package/web-ui/build/static/visual-basic-D_daebxW.js +1 -0
  548. package/web-ui/build/static/warpscript-B4PIoyZp.js +1 -0
  549. package/web-ui/build/static/wasm-D6_O5K2p.js +1 -0
  550. package/web-ui/build/static/web-idl-D7BDrII0.js +1 -0
  551. package/web-ui/build/static/wiki-D-bqO098.js +1 -0
  552. package/web-ui/build/static/wolfram-NnogXigM.js +1 -0
  553. package/web-ui/build/static/wren-DwgJaCDU.js +1 -0
  554. package/web-ui/build/static/x86asm-B9-C3MH5.js +1 -0
  555. package/web-ui/build/static/xeora-wudvnBkY.js +1 -0
  556. package/web-ui/build/static/xl-BeBZDETk.js +1 -0
  557. package/web-ui/build/static/xml-DgNmhWin.js +1 -0
  558. package/web-ui/build/static/xml-doc-B2RShOT5.js +1 -0
  559. package/web-ui/build/static/xojo-C0HF7CVl.js +1 -0
  560. package/web-ui/build/static/xquery-CMss7jIw.js +1 -0
  561. package/web-ui/build/static/xquery-Dy1YImWg.js +1 -0
  562. package/web-ui/build/static/yaml--7oDAAKr.js +1 -0
  563. package/web-ui/build/static/yaml-1-HThDJz.js +1 -0
  564. package/web-ui/build/static/yang-CxleyLxS.js +1 -0
  565. package/web-ui/build/static/zephir-B7LMkND2.js +1 -0
  566. package/web-ui/build/static/zig-DST87v3k.js +1 -0
  567. package/web-ui/build/static/1c-DGpIT7i5.js +0 -1
  568. package/web-ui/build/static/abap-5wFDdWLh.js +0 -1
  569. package/web-ui/build/static/abnf-BP1dpNSE.js +0 -1
  570. package/web-ui/build/static/abnf-DBEIAl8g.js +0 -1
  571. package/web-ui/build/static/accesslog-CWSM_T5E.js +0 -1
  572. package/web-ui/build/static/actionscript-DONkco1J.js +0 -1
  573. package/web-ui/build/static/actionscript-FqBYk5er.js +0 -1
  574. package/web-ui/build/static/ada-C2JLRIaM.js +0 -1
  575. package/web-ui/build/static/ada-gKiygTRK.js +0 -1
  576. package/web-ui/build/static/agda-CkSODqK2.js +0 -1
  577. package/web-ui/build/static/al-BJ_YR6p7.js +0 -1
  578. package/web-ui/build/static/angelscript-Dg2byMGg.js +0 -1
  579. package/web-ui/build/static/antlr4-BnpyaFNr.js +0 -1
  580. package/web-ui/build/static/apache-Dffxsd7O.js +0 -1
  581. package/web-ui/build/static/apacheconf-DLitjtWj.js +0 -1
  582. package/web-ui/build/static/apex-Drr_IvU2.js +0 -1
  583. package/web-ui/build/static/apl-CF6qxmXG.js +0 -1
  584. package/web-ui/build/static/applescript-CjOlw3b_.js +0 -1
  585. package/web-ui/build/static/applescript-DjkSl1Ry.js +0 -1
  586. package/web-ui/build/static/aql-KwVmK1gP.js +0 -1
  587. package/web-ui/build/static/arcade-CENSXx0R.js +0 -1
  588. package/web-ui/build/static/arduino-B3Ta9Fll.js +0 -1
  589. package/web-ui/build/static/arduino-CzcsaB9_.js +0 -1
  590. package/web-ui/build/static/arff-CMJSVt_O.js +0 -1
  591. package/web-ui/build/static/armasm-0zSgSPB4.js +0 -1
  592. package/web-ui/build/static/asciidoc-B8K5ctWq.js +0 -1
  593. package/web-ui/build/static/asciidoc-bk2Sg6b6.js +0 -1
  594. package/web-ui/build/static/asm6502-ji6zm4FQ.js +0 -1
  595. package/web-ui/build/static/asmatmel-DJqObM4Y.js +0 -1
  596. package/web-ui/build/static/aspectj-DqQKI7J5.js +0 -1
  597. package/web-ui/build/static/aspnet-9cenTxW7.js +0 -1
  598. package/web-ui/build/static/autohotkey-C6EhiZvl.js +0 -1
  599. package/web-ui/build/static/autohotkey-sTGJOvMM.js +0 -1
  600. package/web-ui/build/static/autoit-B0Im8iQ1.js +0 -1
  601. package/web-ui/build/static/autoit-CO6pUD0H.js +0 -1
  602. package/web-ui/build/static/avisynth-OvOHTfj5.js +0 -1
  603. package/web-ui/build/static/avrasm-BLWZ5Mye.js +0 -1
  604. package/web-ui/build/static/avro-idl-BB2ODvnw.js +0 -1
  605. package/web-ui/build/static/awk-_jhMabQ0.js +0 -1
  606. package/web-ui/build/static/axapta-DdBRgoYy.js +0 -1
  607. package/web-ui/build/static/bash-CsaRGXBQ.js +0 -1
  608. package/web-ui/build/static/bash-CxLFkwAC.js +0 -1
  609. package/web-ui/build/static/basic-BJyy7JJE.js +0 -1
  610. package/web-ui/build/static/basic-CrMb-gv0.js +0 -1
  611. package/web-ui/build/static/batch-BvcykMe5.js +0 -1
  612. package/web-ui/build/static/bbcode-EOBuY5Y6.js +0 -1
  613. package/web-ui/build/static/bicep-QkDJBA34.js +0 -1
  614. package/web-ui/build/static/birb-TAOxKurn.js +0 -1
  615. package/web-ui/build/static/bison-BEK6cnad.js +0 -1
  616. package/web-ui/build/static/bnf-DfEODxsr.js +0 -1
  617. package/web-ui/build/static/bnf-DhbMjsuA.js +0 -1
  618. package/web-ui/build/static/brainfuck-BoVocOa7.js +0 -1
  619. package/web-ui/build/static/brainfuck-DDC5QXPK.js +0 -1
  620. package/web-ui/build/static/brightscript-DNN598w2.js +0 -1
  621. package/web-ui/build/static/bro-Cn_jjZ8P.js +0 -1
  622. package/web-ui/build/static/bsl-CMCN75Gu.js +0 -1
  623. package/web-ui/build/static/c-DbOGQnEJ.js +0 -1
  624. package/web-ui/build/static/c-kggwYFsy.js +0 -1
  625. package/web-ui/build/static/c-like-BIsuUvof.js +0 -1
  626. package/web-ui/build/static/cal-DpgMsBZE.js +0 -1
  627. package/web-ui/build/static/capnproto-C1AHYI-M.js +0 -1
  628. package/web-ui/build/static/ceylon-pvJffDe1.js +0 -1
  629. package/web-ui/build/static/cfscript-C1qylu52.js +0 -1
  630. package/web-ui/build/static/chaiscript-D417WKRI.js +0 -1
  631. package/web-ui/build/static/cil-CjbZHbcY.js +0 -1
  632. package/web-ui/build/static/clean-Dvc6R-F2.js +0 -1
  633. package/web-ui/build/static/clojure-CSVRQPMQ.js +0 -1
  634. package/web-ui/build/static/clojure-ig1Vkg7X.js +0 -1
  635. package/web-ui/build/static/clojure-repl-C1uyEabk.js +0 -1
  636. package/web-ui/build/static/cmake-DSbVcAB3.js +0 -1
  637. package/web-ui/build/static/cmake-Zp8kPwnH.js +0 -1
  638. package/web-ui/build/static/cobol-OsZSiK_P.js +0 -1
  639. package/web-ui/build/static/coffeescript-D8r0416S.js +0 -1
  640. package/web-ui/build/static/coffeescript-DCpgClxh.js +0 -1
  641. package/web-ui/build/static/concurnas-DKnsxUOc.js +0 -1
  642. package/web-ui/build/static/coq-BQFlywVI.js +0 -1
  643. package/web-ui/build/static/coq-BvS9mQB2.js +0 -1
  644. package/web-ui/build/static/cos-D3ze2791.js +0 -1
  645. package/web-ui/build/static/cpp-Bw-cV3P1.js +0 -1
  646. package/web-ui/build/static/cpp-vi1p7XpB.js +0 -1
  647. package/web-ui/build/static/crmsh-BClnJTeQ.js +0 -1
  648. package/web-ui/build/static/crystal-DGzOUYZq.js +0 -1
  649. package/web-ui/build/static/crystal-DMzk6EvA.js +0 -1
  650. package/web-ui/build/static/csharp-BTom8s2X.js +0 -1
  651. package/web-ui/build/static/csharp-Cp2V3jfR.js +0 -1
  652. package/web-ui/build/static/cshtml-Dmtt9Kto.js +0 -1
  653. package/web-ui/build/static/csp-WPVsLe9_.js +0 -1
  654. package/web-ui/build/static/csp-qddj5fu_.js +0 -1
  655. package/web-ui/build/static/css-B0FAm7kj.js +0 -1
  656. package/web-ui/build/static/css-extras-Bx3pvjiG.js +0 -1
  657. package/web-ui/build/static/csv-CH-edgS5.js +0 -1
  658. package/web-ui/build/static/cypher-c3G8Leew.js +0 -1
  659. package/web-ui/build/static/d-BMDSy22_.js +0 -1
  660. package/web-ui/build/static/d-BdH4oW8-.js +0 -1
  661. package/web-ui/build/static/dart-C-r72q-O.js +0 -1
  662. package/web-ui/build/static/dart-CwpBMrKa.js +0 -1
  663. package/web-ui/build/static/dataweave-BPvqdt4k.js +0 -1
  664. package/web-ui/build/static/dax-Eyy6ixcN.js +0 -1
  665. package/web-ui/build/static/delphi-DhEbPj_5.js +0 -1
  666. package/web-ui/build/static/dhall-Ct1L8sN1.js +0 -1
  667. package/web-ui/build/static/diff-CSTqCgwn.js +0 -1
  668. package/web-ui/build/static/diff-Da97B5vW.js +0 -1
  669. package/web-ui/build/static/django-DGit_lCg.js +0 -1
  670. package/web-ui/build/static/django-DPgqFB8k.js +0 -1
  671. package/web-ui/build/static/dns-DUyXuZ-a.js +0 -1
  672. package/web-ui/build/static/dns-zone-file-D79MDxVG.js +0 -1
  673. package/web-ui/build/static/docker-DTiy4o38.js +0 -1
  674. package/web-ui/build/static/dockerfile-CvwPP8wE.js +0 -1
  675. package/web-ui/build/static/dos-CaIUWxvb.js +0 -1
  676. package/web-ui/build/static/dot-D3504w6Y.js +0 -1
  677. package/web-ui/build/static/dsconfig-Smy1eeX_.js +0 -1
  678. package/web-ui/build/static/dts-DyTYSXZj.js +0 -1
  679. package/web-ui/build/static/dust-CrJyi6qA.js +0 -1
  680. package/web-ui/build/static/ebnf-C8nqfkBH.js +0 -1
  681. package/web-ui/build/static/ebnf-Cuh5Vh2-.js +0 -1
  682. package/web-ui/build/static/editorconfig-C7pTGl6n.js +0 -1
  683. package/web-ui/build/static/eiffel-C75MSJCA.js +0 -1
  684. package/web-ui/build/static/ejs-Dyo7DF5w.js +0 -1
  685. package/web-ui/build/static/elixir-D4yJefOc.js +0 -1
  686. package/web-ui/build/static/elixir-DKRow2SJ.js +0 -1
  687. package/web-ui/build/static/elm-CgbdDlkT.js +0 -1
  688. package/web-ui/build/static/elm-D3N-UgU0.js +0 -1
  689. package/web-ui/build/static/erb-BsITh8qW.js +0 -1
  690. package/web-ui/build/static/erb-lY_LyKyS.js +0 -1
  691. package/web-ui/build/static/erlang-BCnPiYmB.js +0 -1
  692. package/web-ui/build/static/erlang-JEghiPXc.js +0 -1
  693. package/web-ui/build/static/erlang-repl-DzU97ugC.js +0 -1
  694. package/web-ui/build/static/etlua-CsBo8cJa.js +0 -1
  695. package/web-ui/build/static/excel-formula-C2piiCYa.js +0 -1
  696. package/web-ui/build/static/excel-kqNypwQD.js +0 -1
  697. package/web-ui/build/static/factor-DZTOhkyU.js +0 -1
  698. package/web-ui/build/static/false-yLjhfaSw.js +0 -1
  699. package/web-ui/build/static/firestore-security-rules-oaQNoH8l.js +0 -1
  700. package/web-ui/build/static/fix-C9IfnTuS.js +0 -1
  701. package/web-ui/build/static/flix-EmJ_JhPo.js +0 -1
  702. package/web-ui/build/static/flow-DCUl7IAQ.js +0 -1
  703. package/web-ui/build/static/fortran-DvyxJmFN.js +0 -1
  704. package/web-ui/build/static/fortran-EEP9R3S5.js +0 -1
  705. package/web-ui/build/static/fsharp-D_98s3RX.js +0 -1
  706. package/web-ui/build/static/fsharp-Dt9jOO5G.js +0 -1
  707. package/web-ui/build/static/ftl-C8gMHWLo.js +0 -1
  708. package/web-ui/build/static/gams-BHxVPb4z.js +0 -1
  709. package/web-ui/build/static/gap-DFtyHk-q.js +0 -1
  710. package/web-ui/build/static/gauss-BwhJWUcg.js +0 -1
  711. package/web-ui/build/static/gcode-BvmXwp09.js +0 -1
  712. package/web-ui/build/static/gcode-gWcD6Vc7.js +0 -1
  713. package/web-ui/build/static/gdscript-btHoX8RE.js +0 -1
  714. package/web-ui/build/static/gedcom-MgPs9iqh.js +0 -1
  715. package/web-ui/build/static/gherkin-B9c_Q16A.js +0 -1
  716. package/web-ui/build/static/gherkin-BvOgkK6h.js +0 -1
  717. package/web-ui/build/static/git-D9XWOVcQ.js +0 -1
  718. package/web-ui/build/static/glsl-CshBHxHY.js +0 -1
  719. package/web-ui/build/static/glsl-fNRUMTDr.js +0 -1
  720. package/web-ui/build/static/gml-B78deHK8.js +0 -1
  721. package/web-ui/build/static/gml-Cj7d2u8O.js +0 -1
  722. package/web-ui/build/static/gn-CJLD-mF1.js +0 -1
  723. package/web-ui/build/static/go-CT93BEkL.js +0 -1
  724. package/web-ui/build/static/go-CTTlNuQO.js +0 -1
  725. package/web-ui/build/static/go-module-BgnXboUE.js +0 -1
  726. package/web-ui/build/static/golo-2S5tXS-l.js +0 -1
  727. package/web-ui/build/static/gradle-8W8DCcWJ.js +0 -1
  728. package/web-ui/build/static/graphql-DZfp6FNU.js +0 -1
  729. package/web-ui/build/static/groovy-BfsyMb3X.js +0 -1
  730. package/web-ui/build/static/groovy-Dxov7ENz.js +0 -1
  731. package/web-ui/build/static/haml-BlUFsdVV.js +0 -1
  732. package/web-ui/build/static/haml-CjVj6vvW.js +0 -1
  733. package/web-ui/build/static/handlebars-DxrQFkyA.js +0 -1
  734. package/web-ui/build/static/handlebars-FE6fotYl.js +0 -1
  735. package/web-ui/build/static/haskell-B6z0RCD_.js +0 -1
  736. package/web-ui/build/static/haskell-JBFmJTRy.js +0 -1
  737. package/web-ui/build/static/haxe-BtMZMi-_.js +0 -1
  738. package/web-ui/build/static/haxe-C1J8n-fH.js +0 -1
  739. package/web-ui/build/static/hcl-DJP-bFWE.js +0 -1
  740. package/web-ui/build/static/hlsl-DrGjhs1b.js +0 -1
  741. package/web-ui/build/static/hoon-Cg-ZhqIT.js +0 -1
  742. package/web-ui/build/static/hpkp-D07vgmoZ.js +0 -1
  743. package/web-ui/build/static/hsp-CsypPWoA.js +0 -1
  744. package/web-ui/build/static/hsts-B6DMRxvP.js +0 -1
  745. package/web-ui/build/static/htmlbars-BI7_Hw4e.js +0 -1
  746. package/web-ui/build/static/http-90ihEi4s.js +0 -1
  747. package/web-ui/build/static/http-Dp4QXj9E.js +0 -1
  748. package/web-ui/build/static/hy-BMgKvP4K.js +0 -1
  749. package/web-ui/build/static/ichigojam-D6wKvJDb.js +0 -1
  750. package/web-ui/build/static/icon-CrgkmCwl.js +0 -1
  751. package/web-ui/build/static/icu-message-format-Bi2JxCXs.js +0 -1
  752. package/web-ui/build/static/idris-DbUsyZt5.js +0 -1
  753. package/web-ui/build/static/iecst-CQZ9t8fW.js +0 -1
  754. package/web-ui/build/static/ignore-BaFgtNMs.js +0 -1
  755. package/web-ui/build/static/index-DEWSWosh.css +0 -1
  756. package/web-ui/build/static/index-Di1bjCFA.js +0 -13
  757. package/web-ui/build/static/index-otR_WSsL.js +0 -1
  758. package/web-ui/build/static/index-whZPU4as.js +0 -1183
  759. package/web-ui/build/static/inform7-ClyX1Gro.js +0 -1
  760. package/web-ui/build/static/inform7-tZHBS5XP.js +0 -1
  761. package/web-ui/build/static/ini-BrP5JNYL.js +0 -1
  762. package/web-ui/build/static/ini-CVkrAhwV.js +0 -1
  763. package/web-ui/build/static/io-BJ1Y6Bdc.js +0 -1
  764. package/web-ui/build/static/irpf90-fjjcKS_8.js +0 -1
  765. package/web-ui/build/static/isbl-ClpvfUIz.js +0 -1
  766. package/web-ui/build/static/j-CICW77xS.js +0 -1
  767. package/web-ui/build/static/java-B9DFK-0E.js +0 -1
  768. package/web-ui/build/static/java-BL_6rYko.js +0 -1
  769. package/web-ui/build/static/javadoc-Cc4HKpKK.js +0 -1
  770. package/web-ui/build/static/javadoclike-CgNkUDOm.js +0 -1
  771. package/web-ui/build/static/javascript-CM40ZECq.js +0 -1
  772. package/web-ui/build/static/javastacktrace-BHSqXfG5.js +0 -1
  773. package/web-ui/build/static/jboss-cli-Bv5NhVSZ.js +0 -1
  774. package/web-ui/build/static/jexl--Ohk_keA.js +0 -1
  775. package/web-ui/build/static/jolie-DMTN5Vdf.js +0 -1
  776. package/web-ui/build/static/jq-nXRLldXX.js +0 -1
  777. package/web-ui/build/static/js-extras-eLwv3frs.js +0 -1
  778. package/web-ui/build/static/js-templates-Ca0owlrg.js +0 -1
  779. package/web-ui/build/static/jsdoc-KERXp0da.js +0 -1
  780. package/web-ui/build/static/json-BTjLaRsy.js +0 -1
  781. package/web-ui/build/static/json-p7pU0qdW.js +0 -1
  782. package/web-ui/build/static/json5-Cxjy1udc.js +0 -1
  783. package/web-ui/build/static/jsonp-CO52H7Gy.js +0 -1
  784. package/web-ui/build/static/jsstacktrace-8YKfoyJP.js +0 -1
  785. package/web-ui/build/static/jsx-Ct_05KbM.js +0 -1
  786. package/web-ui/build/static/julia-23I1ubCE.js +0 -1
  787. package/web-ui/build/static/julia-d8rVGed_.js +0 -1
  788. package/web-ui/build/static/julia-repl-mwnHedW_.js +0 -1
  789. package/web-ui/build/static/keepalived-E85Rx_fF.js +0 -1
  790. package/web-ui/build/static/keyman-aWd3QUDq.js +0 -1
  791. package/web-ui/build/static/kotlin-Cu370hQq.js +0 -1
  792. package/web-ui/build/static/kotlin-DoJ2WnmZ.js +0 -1
  793. package/web-ui/build/static/kumir-oiOgqcQO.js +0 -1
  794. package/web-ui/build/static/kusto-Bp-B02K5.js +0 -1
  795. package/web-ui/build/static/lasso-BxoQVwOO.js +0 -1
  796. package/web-ui/build/static/latex-CANm5vsX.js +0 -1
  797. package/web-ui/build/static/latex-PMroeNch.js +0 -1
  798. package/web-ui/build/static/latte-2ErU_2XF.js +0 -1
  799. package/web-ui/build/static/ldif-ChPn_F7o.js +0 -1
  800. package/web-ui/build/static/leaf-UkCugDgG.js +0 -1
  801. package/web-ui/build/static/less-CCH5RA89.js +0 -1
  802. package/web-ui/build/static/less-CGZbVU1g.js +0 -1
  803. package/web-ui/build/static/lilypond-BoyM37sv.js +0 -1
  804. package/web-ui/build/static/liquid-DGJVpRBi.js +0 -1
  805. package/web-ui/build/static/lisp-93nne61u.js +0 -1
  806. package/web-ui/build/static/lisp-DYjIRsXz.js +0 -1
  807. package/web-ui/build/static/livecodeserver-CfNaxIE4.js +0 -1
  808. package/web-ui/build/static/livescript-C8kDlQkz.js +0 -1
  809. package/web-ui/build/static/livescript-CoarnRHq.js +0 -1
  810. package/web-ui/build/static/llvm-CBVyNmAh.js +0 -1
  811. package/web-ui/build/static/llvm-DGxq8a7u.js +0 -1
  812. package/web-ui/build/static/log-BivgwFql.js +0 -1
  813. package/web-ui/build/static/lolcode-l5sK2cZz.js +0 -1
  814. package/web-ui/build/static/lsl-Xm44xLRQ.js +0 -1
  815. package/web-ui/build/static/lua-CGvrzfKp.js +0 -1
  816. package/web-ui/build/static/lua-nHwXeY4c.js +0 -1
  817. package/web-ui/build/static/magma-DmNItmna.js +0 -1
  818. package/web-ui/build/static/makefile-CKJNNHGb.js +0 -1
  819. package/web-ui/build/static/makefile-DI6y5Qml.js +0 -1
  820. package/web-ui/build/static/markdown-BgpbxKd-.js +0 -1
  821. package/web-ui/build/static/markdown-CvcxA4yk.js +0 -1
  822. package/web-ui/build/static/markup-templating-DijqesiA.js +0 -1
  823. package/web-ui/build/static/mathematica-Cxll1Q10.js +0 -1
  824. package/web-ui/build/static/matlab-BJo2T1A-.js +0 -1
  825. package/web-ui/build/static/matlab-C6DlZX4l.js +0 -1
  826. package/web-ui/build/static/maxima-DJXO4sbL.js +0 -1
  827. package/web-ui/build/static/maxscript-DdLpUYBs.js +0 -1
  828. package/web-ui/build/static/mel-BIpfnSyZ.js +0 -1
  829. package/web-ui/build/static/mel-BYcTUZJW.js +0 -1
  830. package/web-ui/build/static/mercury-C_LSpbD8.js +0 -1
  831. package/web-ui/build/static/mermaid-D9yBWnrT.js +0 -1
  832. package/web-ui/build/static/mipsasm-nR_K2Ue-.js +0 -1
  833. package/web-ui/build/static/mizar-BeLUPncD.js +0 -1
  834. package/web-ui/build/static/mizar-BesIbZd9.js +0 -1
  835. package/web-ui/build/static/mojolicious-cBx3OWa-.js +0 -1
  836. package/web-ui/build/static/mongodb-DTWKy9ac.js +0 -1
  837. package/web-ui/build/static/monkey-B72bZC3c.js +0 -1
  838. package/web-ui/build/static/monkey-G9XELYPQ.js +0 -1
  839. package/web-ui/build/static/moonscript-BXYVQiqj.js +0 -1
  840. package/web-ui/build/static/moonscript-sDd-5knz.js +0 -1
  841. package/web-ui/build/static/n1ql-0vKSfFAO.js +0 -1
  842. package/web-ui/build/static/n1ql-C9_BSZfz.js +0 -1
  843. package/web-ui/build/static/n4js-B7Ct8dds.js +0 -1
  844. package/web-ui/build/static/nand2tetris-hdl-p9gpphTM.js +0 -1
  845. package/web-ui/build/static/naniscript-6ZVr8Aug.js +0 -1
  846. package/web-ui/build/static/nasm-Ca73yTUt.js +0 -1
  847. package/web-ui/build/static/neon-DNP49oyX.js +0 -1
  848. package/web-ui/build/static/nevod-Qhgt7Bce.js +0 -1
  849. package/web-ui/build/static/nginx-D5e7lu62.js +0 -1
  850. package/web-ui/build/static/nginx-DobnyESB.js +0 -1
  851. package/web-ui/build/static/nim-BPBivUOV.js +0 -1
  852. package/web-ui/build/static/nim-Baoug1Wa.js +0 -1
  853. package/web-ui/build/static/nix-CSPTQs5y.js +0 -1
  854. package/web-ui/build/static/nix-Dk4eNw49.js +0 -1
  855. package/web-ui/build/static/node-repl-NJNL8VFR.js +0 -1
  856. package/web-ui/build/static/nsis-BZ0oMzEw.js +0 -1
  857. package/web-ui/build/static/nsis-CKPCjtCU.js +0 -1
  858. package/web-ui/build/static/objectivec-BkfIRhhV.js +0 -1
  859. package/web-ui/build/static/objectivec-CnQgqhbJ.js +0 -1
  860. package/web-ui/build/static/ocaml-9rGNzRrK.js +0 -1
  861. package/web-ui/build/static/ocaml-CTolCqxL.js +0 -1
  862. package/web-ui/build/static/opencl-9Q3vRDxv.js +0 -1
  863. package/web-ui/build/static/openqasm-D2QiuFBp.js +0 -1
  864. package/web-ui/build/static/openscad-C3HyuzpB.js +0 -1
  865. package/web-ui/build/static/oxygene-4gi-VYy_.js +0 -1
  866. package/web-ui/build/static/oz-BGDEB-1A.js +0 -1
  867. package/web-ui/build/static/parigp-CfZzp1uE.js +0 -1
  868. package/web-ui/build/static/parser-UbGteTcy.js +0 -1
  869. package/web-ui/build/static/parser3-C-Jx-fy7.js +0 -1
  870. package/web-ui/build/static/pascal-D1_R0gW-.js +0 -1
  871. package/web-ui/build/static/pascaligo-B8C-98Np.js +0 -1
  872. package/web-ui/build/static/pcaxis-TGnlUKNs.js +0 -1
  873. package/web-ui/build/static/peoplecode-C5Vf1AH0.js +0 -1
  874. package/web-ui/build/static/perl-CBp1N62T.js +0 -1
  875. package/web-ui/build/static/perl-Z59j904t.js +0 -1
  876. package/web-ui/build/static/pf-Cq8B_xwQ.js +0 -1
  877. package/web-ui/build/static/pgsql-ofJbUHkL.js +0 -1
  878. package/web-ui/build/static/php-OlH7HLQJ.js +0 -1
  879. package/web-ui/build/static/php-extras-GqtrxLuk.js +0 -1
  880. package/web-ui/build/static/php-r09kMDOB.js +0 -1
  881. package/web-ui/build/static/php-template-18uT97Qo.js +0 -1
  882. package/web-ui/build/static/phpdoc-9tRFvup9.js +0 -1
  883. package/web-ui/build/static/plaintext-DsYT6Mu-.js +0 -1
  884. package/web-ui/build/static/plsql-RhWQNJVb.js +0 -1
  885. package/web-ui/build/static/pony-DD6JMLYI.js +0 -1
  886. package/web-ui/build/static/powerquery-CALow-bt.js +0 -1
  887. package/web-ui/build/static/powershell-C2QvIuKF.js +0 -1
  888. package/web-ui/build/static/powershell-yrbJEhCh.js +0 -1
  889. package/web-ui/build/static/processing-1T5w_Q03.js +0 -1
  890. package/web-ui/build/static/processing-DBim_dO-.js +0 -1
  891. package/web-ui/build/static/profile-Cdloh8mZ.js +0 -1
  892. package/web-ui/build/static/prolog-DRSsNnns.js +0 -1
  893. package/web-ui/build/static/prolog-D_ajweDr.js +0 -1
  894. package/web-ui/build/static/promql-BRuwn6Bn.js +0 -1
  895. package/web-ui/build/static/properties-D5Wyl4X4.js +0 -1
  896. package/web-ui/build/static/properties-kn4fl1bl.js +0 -1
  897. package/web-ui/build/static/protobuf-BMO76zWi.js +0 -1
  898. package/web-ui/build/static/protobuf-CTUCF-U-.js +0 -1
  899. package/web-ui/build/static/psl-CiqYdQbY.js +0 -1
  900. package/web-ui/build/static/pug-BLE2Qayj.js +0 -1
  901. package/web-ui/build/static/puppet-CFKLWXft.js +0 -1
  902. package/web-ui/build/static/puppet-DQci0Dl5.js +0 -1
  903. package/web-ui/build/static/pure-D2h_GynV.js +0 -1
  904. package/web-ui/build/static/purebasic-BF8MVw8V.js +0 -1
  905. package/web-ui/build/static/purebasic-BTtHiCkh.js +0 -1
  906. package/web-ui/build/static/purescript-D1ZSh-sH.js +0 -1
  907. package/web-ui/build/static/python-Cp9_Vdhb.js +0 -1
  908. package/web-ui/build/static/python-DdgNw8IW.js +0 -1
  909. package/web-ui/build/static/python-repl-DvK89VMC.js +0 -1
  910. package/web-ui/build/static/q-COaIgwhT.js +0 -1
  911. package/web-ui/build/static/q-Cm0dQkW8.js +0 -1
  912. package/web-ui/build/static/qml-BpsOqqJM.js +0 -1
  913. package/web-ui/build/static/qml-BziQXlU4.js +0 -1
  914. package/web-ui/build/static/qore-Cutz6g-2.js +0 -1
  915. package/web-ui/build/static/qsharp-B16619X1.js +0 -1
  916. package/web-ui/build/static/r-CFUIj5Hd.js +0 -1
  917. package/web-ui/build/static/r-CPrwCi5w.js +0 -1
  918. package/web-ui/build/static/racket-Bh08DFXF.js +0 -1
  919. package/web-ui/build/static/reason-BxjDq4e-.js +0 -1
  920. package/web-ui/build/static/reasonml-Ds5SsGP8.js +0 -1
  921. package/web-ui/build/static/regex-DhBIDIMI.js +0 -1
  922. package/web-ui/build/static/rego-DCwxZXcB.js +0 -1
  923. package/web-ui/build/static/renpy-C2fuQfqb.js +0 -1
  924. package/web-ui/build/static/rest-C52ZpxWQ.js +0 -1
  925. package/web-ui/build/static/rib-Cbl2Mzyj.js +0 -1
  926. package/web-ui/build/static/rip-BTOu5ZIE.js +0 -1
  927. package/web-ui/build/static/roboconf-3Oi2wuVk.js +0 -1
  928. package/web-ui/build/static/roboconf-ndLZLE39.js +0 -1
  929. package/web-ui/build/static/robotframework-BzHXiIj1.js +0 -1
  930. package/web-ui/build/static/routeros-CkpPoqx-.js +0 -1
  931. package/web-ui/build/static/rsl-C0bwOQ38.js +0 -1
  932. package/web-ui/build/static/ruby-C_hIhtuQ.js +0 -1
  933. package/web-ui/build/static/ruby-DvKfZPzj.js +0 -1
  934. package/web-ui/build/static/ruleslanguage-CbZJlddz.js +0 -1
  935. package/web-ui/build/static/rust-BFPIhB-X.js +0 -1
  936. package/web-ui/build/static/rust-sBpUq-qE.js +0 -1
  937. package/web-ui/build/static/sas-BCXvYN9x.js +0 -1
  938. package/web-ui/build/static/sas-D7GAsTY3.js +0 -1
  939. package/web-ui/build/static/sass-BdaErGMN.js +0 -1
  940. package/web-ui/build/static/scala-Cj81oCl9.js +0 -1
  941. package/web-ui/build/static/scala-CvbksfY6.js +0 -1
  942. package/web-ui/build/static/scheme-BM5ZqKnl.js +0 -1
  943. package/web-ui/build/static/scheme-BPvlu9Tk.js +0 -1
  944. package/web-ui/build/static/scilab-CJanLKQN.js +0 -1
  945. package/web-ui/build/static/scss-C53YF_7f.js +0 -1
  946. package/web-ui/build/static/scss-DPp8UZbr.js +0 -1
  947. package/web-ui/build/static/shell-CC9bQXMe.js +0 -1
  948. package/web-ui/build/static/shell-session-CuR3fbf-.js +0 -1
  949. package/web-ui/build/static/smali-CUgLls3D.js +0 -1
  950. package/web-ui/build/static/smali-YODSX8qt.js +0 -1
  951. package/web-ui/build/static/smalltalk-BMJQ4bbs.js +0 -1
  952. package/web-ui/build/static/smalltalk-BVGY3CTl.js +0 -1
  953. package/web-ui/build/static/smarty-C9aNt4-p.js +0 -1
  954. package/web-ui/build/static/sml-C3BIHhfq.js +0 -1
  955. package/web-ui/build/static/sml-DTipyRmY.js +0 -1
  956. package/web-ui/build/static/solidity-1yuPUqoC.js +0 -1
  957. package/web-ui/build/static/solution-file-BgzK4GOU.js +0 -1
  958. package/web-ui/build/static/soy-CFJXRvqc.js +0 -1
  959. package/web-ui/build/static/sparql-CAosYMpl.js +0 -1
  960. package/web-ui/build/static/splunk-spl-DkINtWr8.js +0 -1
  961. package/web-ui/build/static/sqf-DbrWIS2M.js +0 -1
  962. package/web-ui/build/static/sqf-nq8Q9J2W.js +0 -1
  963. package/web-ui/build/static/sql-9bwClhZQ.js +0 -1
  964. package/web-ui/build/static/sql-CqPkY-lX.js +0 -1
  965. package/web-ui/build/static/sql_more-CsY5ts77.js +0 -1
  966. package/web-ui/build/static/squirrel-BuqtzRBD.js +0 -1
  967. package/web-ui/build/static/stan-BNxBSglc.js +0 -1
  968. package/web-ui/build/static/stan-CZVMc34l.js +0 -1
  969. package/web-ui/build/static/stata-DKnVdHCd.js +0 -1
  970. package/web-ui/build/static/step21-Cu_TaBGF.js +0 -1
  971. package/web-ui/build/static/stylus-BS7-OJew.js +0 -1
  972. package/web-ui/build/static/stylus-DtFrp1Nk.js +0 -1
  973. package/web-ui/build/static/subunit-DDCoWkkc.js +0 -1
  974. package/web-ui/build/static/swift-BaguUZbl.js +0 -1
  975. package/web-ui/build/static/swift-mwBsb8Bx.js +0 -1
  976. package/web-ui/build/static/systemd-D6PpyDKk.js +0 -1
  977. package/web-ui/build/static/t4-cs-Cem8g4Ck.js +0 -1
  978. package/web-ui/build/static/t4-templating-BZo-HjmD.js +0 -1
  979. package/web-ui/build/static/t4-vb-B4oVnKa4.js +0 -1
  980. package/web-ui/build/static/taggerscript-DweAZ5pw.js +0 -1
  981. package/web-ui/build/static/tap-DpuvKHHF.js +0 -1
  982. package/web-ui/build/static/tap-hUKmJObZ.js +0 -1
  983. package/web-ui/build/static/tcl-BUvhAi7u.js +0 -1
  984. package/web-ui/build/static/tcl-Dsck63d8.js +0 -1
  985. package/web-ui/build/static/textile-CgKbqJ-j.js +0 -1
  986. package/web-ui/build/static/thrift-B5H6rApp.js +0 -1
  987. package/web-ui/build/static/toml-DggTpfOo.js +0 -1
  988. package/web-ui/build/static/tp-CazB2P2X.js +0 -1
  989. package/web-ui/build/static/tremor-B1jy7S5p.js +0 -1
  990. package/web-ui/build/static/tsx-BqF2lVDi.js +0 -1
  991. package/web-ui/build/static/tt2-BNoNXpEe.js +0 -1
  992. package/web-ui/build/static/turtle-B0evd5mn.js +0 -1
  993. package/web-ui/build/static/twig-B5A7nMdv.js +0 -1
  994. package/web-ui/build/static/twig-DZnLWvh8.js +0 -1
  995. package/web-ui/build/static/typescript-Bbe_P093.js +0 -1
  996. package/web-ui/build/static/typescript-BfhvmSSG.js +0 -1
  997. package/web-ui/build/static/typoscript-BjuZEIgw.js +0 -1
  998. package/web-ui/build/static/unrealscript-C3iUCFRi.js +0 -1
  999. package/web-ui/build/static/uorazor-CbZXwzIj.js +0 -1
  1000. package/web-ui/build/static/uri-xMPSnp6m.js +0 -1
  1001. package/web-ui/build/static/v-BKcGo5I6.js +0 -1
  1002. package/web-ui/build/static/vala-BRoBE4am.js +0 -1
  1003. package/web-ui/build/static/vala-B__Iyrma.js +0 -1
  1004. package/web-ui/build/static/vbnet-DBxlMRvN.js +0 -1
  1005. package/web-ui/build/static/vbnet-DjAXt5BE.js +0 -1
  1006. package/web-ui/build/static/vbscript-BNA4oANi.js +0 -1
  1007. package/web-ui/build/static/vbscript-html-o8ckLPKG.js +0 -1
  1008. package/web-ui/build/static/velocity-D7sc5ggA.js +0 -1
  1009. package/web-ui/build/static/verilog-BWJfMIng.js +0 -1
  1010. package/web-ui/build/static/verilog-jW2GPC--.js +0 -1
  1011. package/web-ui/build/static/vhdl-BIVlXRPa.js +0 -1
  1012. package/web-ui/build/static/vhdl-BeqdhhxD.js +0 -1
  1013. package/web-ui/build/static/vim-712lI4-g.js +0 -1
  1014. package/web-ui/build/static/vim-DMROTzr0.js +0 -1
  1015. package/web-ui/build/static/visual-basic-CQfbM-ta.js +0 -1
  1016. package/web-ui/build/static/warpscript-DFAvCXFQ.js +0 -1
  1017. package/web-ui/build/static/wasm-CiYoxBl0.js +0 -1
  1018. package/web-ui/build/static/web-idl-DoCkPK8y.js +0 -1
  1019. package/web-ui/build/static/wiki-bvz0AGzB.js +0 -1
  1020. package/web-ui/build/static/wolfram-fBuyFEgU.js +0 -1
  1021. package/web-ui/build/static/wren-DvATFxjF.js +0 -1
  1022. package/web-ui/build/static/x86asm-r4bPbUR_.js +0 -1
  1023. package/web-ui/build/static/xeora-B6iOnDJY.js +0 -1
  1024. package/web-ui/build/static/xl-Ce6B5slc.js +0 -1
  1025. package/web-ui/build/static/xml-DNjyPmhQ.js +0 -1
  1026. package/web-ui/build/static/xml-doc-DydogmZD.js +0 -1
  1027. package/web-ui/build/static/xojo-DCQLltvr.js +0 -1
  1028. package/web-ui/build/static/xquery-C-fAnA0H.js +0 -1
  1029. package/web-ui/build/static/xquery-CNeqzhLO.js +0 -1
  1030. package/web-ui/build/static/yaml-BsVaGsk5.js +0 -1
  1031. package/web-ui/build/static/yaml-kVZvwv_C.js +0 -1
  1032. package/web-ui/build/static/yang-B_gq9JEq.js +0 -1
  1033. package/web-ui/build/static/zephir-ECIXgXhX.js +0 -1
  1034. package/web-ui/build/static/zig-DY325EKG.js +0 -1
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Tests for the TASK DISCIPLINE signal — `currentFocus` returned on
3
+ * every taskmanager response — and the OPERATING POSTURE guideline
4
+ * that pairs with it.
5
+ *
6
+ * Production observation (scripts/memory-bench/live-v2-*,
7
+ * agent-agent-v2-v2-s2-multi-topic-1779570320941): Kimi-K2.6 and gpt-5.4
8
+ * lost task focus after cascading tool errors and silently reverted
9
+ * to a prior task instead of completing the current one. The fix is
10
+ * two-pronged:
11
+ * 1. Surface `currentFocus` on every taskmanager response so the
12
+ * anchor stays visible across error cascades.
13
+ * 2. OPERATING POSTURE explicitly tells the agent: only one task
14
+ * in_progress at a time, transition before working, finish or
15
+ * release before switching.
16
+ */
17
+ import { describe, test, expect } from '@jest/globals';
18
+ import TaskManagerTool from '../taskManagerTool.js';
19
+ import { BaseTool, ToolsRegistry } from '../baseTool.js';
20
+
21
+ const SILENT_LOGGER = { info() {}, warn() {}, error() {}, debug() {} };
22
+
23
+ function makeTool() {
24
+ const tool = new TaskManagerTool({ description: 'test' });
25
+ tool.logger = SILENT_LOGGER;
26
+ return tool;
27
+ }
28
+
29
+ describe('_buildCurrentFocus — task-discipline signal', () => {
30
+ test('ok=true when exactly one task is in_progress', () => {
31
+ const focus = makeTool()._buildCurrentFocus([
32
+ { id: 'task-1', title: 'Polish README', description: 'Rewrite intro', status: 'in_progress' },
33
+ { id: 'task-2', title: 'Other thing', description: '...', status: 'pending' },
34
+ ]);
35
+ expect(focus.ok).toBe(true);
36
+ expect(focus.inProgressCount).toBe(1);
37
+ expect(focus.current).toMatchObject({
38
+ taskId: 'task-1', title: 'Polish README', description: 'Rewrite intro',
39
+ });
40
+ expect(focus.warning).toBeUndefined();
41
+ });
42
+
43
+ test('ok=false with warning when 0 tasks are in_progress', () => {
44
+ const focus = makeTool()._buildCurrentFocus([
45
+ { id: 'task-1', title: 'X', description: '...', status: 'pending' },
46
+ { id: 'task-2', title: 'Y', description: '...', status: 'completed' },
47
+ ]);
48
+ expect(focus.ok).toBe(false);
49
+ expect(focus.inProgressCount).toBe(0);
50
+ expect(focus.current).toBeNull();
51
+ expect(focus.warning).toMatch(/in_progress/);
52
+ expect(focus.warning).toMatch(/BEFORE/);
53
+ });
54
+
55
+ test('ok=false with warning when 2+ tasks are in_progress', () => {
56
+ const focus = makeTool()._buildCurrentFocus([
57
+ { id: 'task-1', title: 'A', description: '...', status: 'in_progress' },
58
+ { id: 'task-2', title: 'B', description: '...', status: 'in_progress' },
59
+ { id: 'task-3', title: 'C', description: '...', status: 'pending' },
60
+ ]);
61
+ expect(focus.ok).toBe(false);
62
+ expect(focus.inProgressCount).toBe(2);
63
+ expect(Array.isArray(focus.current)).toBe(true);
64
+ expect(focus.current).toHaveLength(2);
65
+ expect(focus.warning).toMatch(/Multiple tasks/);
66
+ });
67
+
68
+ test('empty task list reports 0 in_progress with warning', () => {
69
+ const focus = makeTool()._buildCurrentFocus([]);
70
+ expect(focus.ok).toBe(false);
71
+ expect(focus.inProgressCount).toBe(0);
72
+ expect(focus.current).toBeNull();
73
+ });
74
+
75
+ test('null/undefined input handled gracefully (no crash)', () => {
76
+ expect(() => makeTool()._buildCurrentFocus(null)).not.toThrow();
77
+ expect(() => makeTool()._buildCurrentFocus(undefined)).not.toThrow();
78
+ const f = makeTool()._buildCurrentFocus(null);
79
+ expect(f.inProgressCount).toBe(0);
80
+ });
81
+
82
+ test('long descriptions are truncated to 140 chars', () => {
83
+ const long = 'x'.repeat(500);
84
+ const focus = makeTool()._buildCurrentFocus([
85
+ { id: 'task-1', title: 'T', description: long, status: 'in_progress' },
86
+ ]);
87
+ expect(focus.current.description.length).toBeLessThanOrEqual(141);
88
+ expect(focus.current.description.endsWith('…')).toBe(true);
89
+ });
90
+
91
+ test('non-string description is coerced to empty (no crash)', () => {
92
+ const focus = makeTool()._buildCurrentFocus([
93
+ { id: 'task-1', title: 'T', description: null, status: 'in_progress' },
94
+ ]);
95
+ expect(focus.current.description).toBe('');
96
+ });
97
+ });
98
+
99
+ describe('OPERATING POSTURE — TASK DISCIPLINE section', () => {
100
+ // The OPERATING POSTURE block lives in baseTool.js and is built per
101
+ // agent based on its capabilities. We construct a BaseTool-derived
102
+ // tool registry stub and verify the block content directly.
103
+ function buildOperatingPosture(capabilities) {
104
+ // Use the real ToolsRegistry — it's the class that owns
105
+ // generateToolDescriptionsForPrompt. Register fake tools matching
106
+ // the capability list so the block emits its sections.
107
+ const reg = new ToolsRegistry(SILENT_LOGGER);
108
+ for (const id of capabilities) {
109
+ reg.tools.set(id, { id, getDescription: () => `# ${id}` });
110
+ }
111
+ return reg.generateToolDescriptionsForPrompt(capabilities);
112
+ }
113
+
114
+ test('section appears when taskmanager capability is present', () => {
115
+ const block = buildOperatingPosture(['memory', 'taskmanager']);
116
+ expect(block).toMatch(/TASK DISCIPLINE/);
117
+ expect(block).toMatch(/ONE.*task.*in_progress/);
118
+ expect(block).toMatch(/Transition first, then work/);
119
+ expect(block).toMatch(/Finish or release/);
120
+ expect(block).toMatch(/Anchor on tool failures/);
121
+ expect(block).toMatch(/currentFocus/);
122
+ });
123
+
124
+ test('section does NOT appear without taskmanager capability', () => {
125
+ const block = buildOperatingPosture(['memory']);
126
+ expect(block).not.toMatch(/TASK DISCIPLINE/);
127
+ });
128
+
129
+ test('section guidance is descriptive of cognitive effort, not bureaucratic checklist', () => {
130
+ // The aim is "task list reflects actual work", not "fill in fields".
131
+ const block = buildOperatingPosture(['memory', 'taskmanager']);
132
+ expect(block).toMatch(/cognitive effort/);
133
+ // Should describe what to do on tool failures — that's the main
134
+ // failure mode we observed.
135
+ expect(block).toMatch(/tool.*fail/i);
136
+ });
137
+ });
@@ -0,0 +1,236 @@
1
+ /**
2
+ * Tests for updateTask's status-transition handler.
3
+ *
4
+ * Covers the in_progress entry handler that:
5
+ * - Auto-loads `[memory:mem-...]` referenced memory into result.attachedMemory
6
+ * - Emits result.memoryNudge when no memory is attached
7
+ * - Surfaces a not-found error when the referenced memory was deleted
8
+ * - Does nothing on non-transitioning updates (already in_progress)
9
+ * - Does nothing for transitions to other statuses (e.g. blocked)
10
+ */
11
+
12
+ import { jest, describe, test, expect, beforeEach } from '@jest/globals';
13
+ import { createMockLogger } from '../../__test-utils__/mockFactories.js';
14
+
15
+ const mockLoadMemories = jest.fn();
16
+ const mockInitialize = jest.fn().mockResolvedValue(undefined);
17
+ const mockAddMemory = jest.fn();
18
+ jest.unstable_mockModule('../../services/memoryService.js', () => ({
19
+ getMemoryService: jest.fn(() => ({
20
+ initialize: mockInitialize,
21
+ addMemory: mockAddMemory,
22
+ loadMemories: mockLoadMemories,
23
+ })),
24
+ }));
25
+
26
+ let uuidCounter = 0;
27
+ jest.unstable_mockModule('uuid', () => ({
28
+ v4: jest.fn(() => `mock-uuid-${++uuidCounter}`),
29
+ }));
30
+
31
+ const { default: TaskManagerTool } = await import('../taskManagerTool.js');
32
+
33
+ function makeTool() {
34
+ const tool = new TaskManagerTool({ description: 'test' });
35
+ tool.logger = createMockLogger();
36
+ return tool;
37
+ }
38
+
39
+ function makeContext({ taskList } = {}) {
40
+ const agent = {
41
+ id: 'agent-1',
42
+ name: 'Trans Test',
43
+ capabilities: ['memory', 'tools'],
44
+ taskList: taskList || { tasks: [], lastUpdated: new Date().toISOString() },
45
+ };
46
+ return {
47
+ agent,
48
+ context: {
49
+ agentId: 'agent-1',
50
+ agentName: 'Trans Test',
51
+ agent,
52
+ agentPool: {
53
+ getAgent: jest.fn().mockResolvedValue(agent),
54
+ persistAgentState: jest.fn().mockResolvedValue(undefined),
55
+ },
56
+ projectDir: '/tmp/test',
57
+ },
58
+ };
59
+ }
60
+
61
+ function makeTask(overrides = {}) {
62
+ return {
63
+ id: 'task-1',
64
+ title: 'Demo task',
65
+ description: 'No reference here',
66
+ status: 'pending',
67
+ priority: 'medium',
68
+ createdAt: new Date().toISOString(),
69
+ updatedAt: new Date().toISOString(),
70
+ ...overrides,
71
+ };
72
+ }
73
+
74
+ beforeEach(() => {
75
+ uuidCounter = 0;
76
+ mockLoadMemories.mockReset();
77
+ mockInitialize.mockReset();
78
+ mockInitialize.mockResolvedValue(undefined);
79
+ mockAddMemory.mockReset();
80
+ });
81
+
82
+ describe('TaskManagerTool — updateTask in_progress transition handler', () => {
83
+ test('auto-loads attached memory when task description has [memory:mem-...] marker', async () => {
84
+ mockLoadMemories.mockResolvedValueOnce([
85
+ { id: 'mem-abc', title: 'Task plan', content: 'step 1: ...' },
86
+ ]);
87
+ const tool = makeTool();
88
+ const { agent, context } = makeContext();
89
+ agent.taskList.tasks = [makeTask({ description: '[memory:mem-abc] short summary' })];
90
+
91
+ const res = await tool.execute(
92
+ { action: 'update', taskId: 'task-1', status: 'in_progress' },
93
+ context
94
+ );
95
+
96
+ expect(res.success).toBe(true);
97
+ expect(res.result.attachedMemory).toBeDefined();
98
+ expect(res.result.attachedMemory.id).toBe('mem-abc');
99
+ expect(res.result.attachedMemory.content).toBe('step 1: ...');
100
+ expect(res.result.attachedMemory._hint).toMatch(/memory append/);
101
+ expect(res.result.memoryNudge).toBeUndefined();
102
+ });
103
+
104
+ test('LOXIA_MEMORY_NUDGE_VARIANT=descriptive falls back to the older wording (for A/B validation)', async () => {
105
+ const prev = process.env.LOXIA_MEMORY_NUDGE_VARIANT;
106
+ process.env.LOXIA_MEMORY_NUDGE_VARIANT = 'descriptive';
107
+ try {
108
+ const tool = makeTool();
109
+ const { agent, context } = makeContext();
110
+ agent.taskList.tasks = [makeTask({ description: 'Plain task with no marker' })];
111
+
112
+ const res = await tool.execute(
113
+ { action: 'update', taskId: 'task-1', status: 'in_progress' },
114
+ context
115
+ );
116
+
117
+ expect(res.success).toBe(true);
118
+ // Descriptive wording, NOT the imperative "VERY NEXT" phrasing.
119
+ expect(res.result.memoryNudge).toMatch(/Scan the.*AGENT MEMORY/);
120
+ expect(res.result.memoryNudge).not.toMatch(/VERY NEXT/);
121
+ } finally {
122
+ if (prev === undefined) delete process.env.LOXIA_MEMORY_NUDGE_VARIANT;
123
+ else process.env.LOXIA_MEMORY_NUDGE_VARIANT = prev;
124
+ }
125
+ });
126
+
127
+ test('LOXIA_MEMORY_NUDGE_VARIANT unset OR =directive emits the directive wording', async () => {
128
+ const prev = process.env.LOXIA_MEMORY_NUDGE_VARIANT;
129
+ delete process.env.LOXIA_MEMORY_NUDGE_VARIANT;
130
+ try {
131
+ const tool = makeTool();
132
+ const { agent, context } = makeContext();
133
+ agent.taskList.tasks = [makeTask({ description: 'Plain task with no marker' })];
134
+
135
+ const res = await tool.execute(
136
+ { action: 'update', taskId: 'task-1', status: 'in_progress' },
137
+ context
138
+ );
139
+
140
+ expect(res.result.memoryNudge).toMatch(/VERY NEXT tool call/);
141
+ expect(res.result.memoryNudge).toMatch(/memory list/);
142
+ } finally {
143
+ if (prev === undefined) delete process.env.LOXIA_MEMORY_NUDGE_VARIANT;
144
+ else process.env.LOXIA_MEMORY_NUDGE_VARIANT = prev;
145
+ }
146
+ });
147
+
148
+ test('emits memoryNudge when transitioning to in_progress without any [memory:] marker', async () => {
149
+ const tool = makeTool();
150
+ const { agent, context } = makeContext();
151
+ agent.taskList.tasks = [makeTask({ description: 'Plain task with no marker' })];
152
+
153
+ const res = await tool.execute(
154
+ { action: 'update', taskId: 'task-1', status: 'in_progress' },
155
+ context
156
+ );
157
+
158
+ expect(res.success).toBe(true);
159
+ expect(res.result.attachedMemory).toBeUndefined();
160
+ // Directive wording (post-optimization, 2026-05-19): the
161
+ // descriptive earlier nudge ("Scan the catalog...") scored 22% in
162
+ // the live multi-turn memory bench. Switching to "Your VERY NEXT
163
+ // tool call MUST be `memory list`" doubled it to 44%. See
164
+ // scripts/memory-bench/.
165
+ expect(res.result.memoryNudge).toMatch(/memory list/);
166
+ expect(res.result.memoryNudge).toMatch(/VERY NEXT tool call/);
167
+ expect(res.result.memoryNudge).toMatch(/memory add/);
168
+ expect(mockLoadMemories).not.toHaveBeenCalled();
169
+ });
170
+
171
+ test('surfaces error when [memory:] marker points at a deleted memory', async () => {
172
+ mockLoadMemories.mockResolvedValueOnce([]); // memory not found
173
+ const tool = makeTool();
174
+ const { agent, context } = makeContext();
175
+ agent.taskList.tasks = [makeTask({ description: '[memory:mem-ghost] gone' })];
176
+
177
+ const res = await tool.execute(
178
+ { action: 'update', taskId: 'task-1', status: 'in_progress' },
179
+ context
180
+ );
181
+
182
+ expect(res.success).toBe(true);
183
+ expect(res.result.attachedMemory).toBeDefined();
184
+ expect(res.result.attachedMemory.id).toBe('mem-ghost');
185
+ expect(res.result.attachedMemory.error).toMatch(/not found/i);
186
+ expect(res.result.attachedMemory.content).toBeUndefined();
187
+ });
188
+
189
+ test('does NOT trigger handler when task was already in_progress (no transition)', async () => {
190
+ const tool = makeTool();
191
+ const { agent, context } = makeContext();
192
+ agent.taskList.tasks = [makeTask({ status: 'in_progress', description: '[memory:mem-xyz] x' })];
193
+
194
+ const res = await tool.execute(
195
+ { action: 'update', taskId: 'task-1', status: 'in_progress' },
196
+ context
197
+ );
198
+
199
+ expect(res.success).toBe(true);
200
+ expect(res.result.attachedMemory).toBeUndefined();
201
+ expect(res.result.memoryNudge).toBeUndefined();
202
+ expect(mockLoadMemories).not.toHaveBeenCalled();
203
+ });
204
+
205
+ test('does NOT trigger handler for transitions to non-in_progress statuses', async () => {
206
+ const tool = makeTool();
207
+ const { agent, context } = makeContext();
208
+ agent.taskList.tasks = [makeTask({ status: 'pending', description: '[memory:mem-xyz] x' })];
209
+
210
+ const res = await tool.execute(
211
+ { action: 'update', taskId: 'task-1', status: 'blocked' },
212
+ context
213
+ );
214
+
215
+ expect(res.success).toBe(true);
216
+ expect(res.result.attachedMemory).toBeUndefined();
217
+ expect(res.result.memoryNudge).toBeUndefined();
218
+ expect(mockLoadMemories).not.toHaveBeenCalled();
219
+ });
220
+
221
+ test('handler errors are swallowed (does not break update)', async () => {
222
+ mockLoadMemories.mockRejectedValueOnce(new Error('disk on fire'));
223
+ const tool = makeTool();
224
+ const { agent, context } = makeContext();
225
+ agent.taskList.tasks = [makeTask({ description: '[memory:mem-abc] x' })];
226
+
227
+ const res = await tool.execute(
228
+ { action: 'update', taskId: 'task-1', status: 'in_progress' },
229
+ context
230
+ );
231
+
232
+ expect(res.success).toBe(true);
233
+ expect(res.result.attachedMemory).toBeUndefined();
234
+ expect(res.result.memoryNudge).toBeUndefined();
235
+ });
236
+ });
@@ -0,0 +1,260 @@
1
+ /**
2
+ * Tests for the forgiving param-shape normalizers added across
3
+ * filesystem / terminal / seek / file-content-replace / code-map.
4
+ *
5
+ * Production observation (Kimi-K2.6 + gpt-5.4 multi-turn live trace,
6
+ * scripts/memory-bench/live-v2-directive-*.json): production agents
7
+ * routinely call these tools with natural-feeling singular shapes
8
+ * (`{action, path}`, `{command}`, `{query, filePattern}`) that the
9
+ * canonical implementations rejected. Cascading rejections caused
10
+ * "actions is not iterable", "Cannot read 'length' of undefined",
11
+ * and eventual task-discipline collapse.
12
+ *
13
+ * These tests pin the forgiving behavior — any future change that
14
+ * tightens the canonical shape MUST update both the implementation
15
+ * AND these tests in the same commit.
16
+ */
17
+ import { describe, test, expect } from '@jest/globals';
18
+ import FileSystemTool from '../fileSystemTool.js';
19
+ import SeekTool from '../seekTool.js';
20
+ import TerminalTool from '../terminalTool.js';
21
+ import FileContentReplaceTool from '../fileContentReplaceTool.js';
22
+
23
+ const SILENT_LOGGER = { info() {}, warn() {}, error() {}, debug() {} };
24
+
25
+ describe('filesystem — accepts singular {action, path} shape', () => {
26
+ test('promotes {action: "read", path: "X"} to {actions: [{type, filePath}]}', async () => {
27
+ const tool = new FileSystemTool({}, SILENT_LOGGER);
28
+ // Throw early from the read path to capture the action shape after
29
+ // normalization without actually doing disk I/O.
30
+ const orig = tool.customValidateParameters?.bind(tool);
31
+ let captured = null;
32
+ tool.customValidateParameters = (p) => { captured = p; return orig ? orig(p) : { valid: true }; };
33
+ try {
34
+ await tool.execute({ action: 'read', path: 'src/foo.js' }, { projectDir: process.cwd() });
35
+ } catch { /* downstream errors fine */ }
36
+ expect(captured).not.toBeNull();
37
+ expect(Array.isArray(captured.actions)).toBe(true);
38
+ expect(captured.actions[0].type).toBe('read');
39
+ expect(captured.actions[0].filePath).toBe('src/foo.js');
40
+ });
41
+
42
+ test('still rejects when neither {action} nor {actions} is provided', async () => {
43
+ const tool = new FileSystemTool({}, SILENT_LOGGER);
44
+ await expect(tool.execute({}, { projectDir: process.cwd() }))
45
+ .rejects.toThrow(/actions is required/);
46
+ });
47
+
48
+ test('canonical {actions: [...]} still works (normalization is a no-op)', async () => {
49
+ const tool = new FileSystemTool({}, SILENT_LOGGER);
50
+ let captured = null;
51
+ const orig = tool.customValidateParameters?.bind(tool);
52
+ tool.customValidateParameters = (p) => { captured = p; return orig ? orig(p) : { valid: true }; };
53
+ try {
54
+ await tool.execute(
55
+ { actions: [{ type: 'read', filePath: 'src/foo.js' }] },
56
+ { projectDir: process.cwd() }
57
+ );
58
+ } catch { /* downstream errors fine */ }
59
+ expect(captured).not.toBeNull();
60
+ expect(captured.actions[0].type).toBe('read');
61
+ expect(captured.actions[0].filePath).toBe('src/foo.js');
62
+ });
63
+ });
64
+
65
+ describe('terminal — accepts singular {command} shape', () => {
66
+ test('promotes {command: "ls"} to {actions: [{type: "run-command", command}]}', async () => {
67
+ const tool = new TerminalTool({ allowedCommands: ['echo'] }, SILENT_LOGGER);
68
+ let recordedAction = null;
69
+ tool._runCommandAction = async (a) => { recordedAction = a; return { success: true, output: 'ok' }; };
70
+ // Intercept the execute loop by mocking the action dispatcher path
71
+ // — terminal's execute iterates params.actions; with our normalization
72
+ // the array exists and we can verify the inner shape via tool internals.
73
+ // Easier: just call execute and verify it doesn't throw "is not iterable".
74
+ let threw = null;
75
+ try {
76
+ await tool.execute({ command: 'echo hi' }, { projectDir: process.cwd(), agentId: 'a' });
77
+ } catch (e) { threw = e; }
78
+ // The promotion happened iff we no longer get the "actions is not
79
+ // iterable" / "actions is required" error. The actual command may
80
+ // still fail downstream (sandbox, allowlist, etc.) and that's fine.
81
+ if (threw) {
82
+ expect(threw.message).not.toMatch(/actions is not iterable/);
83
+ expect(threw.message).not.toMatch(/At least one action is required/);
84
+ }
85
+ });
86
+ });
87
+
88
+ describe('seek — accepts {query, filePattern} singular shape', () => {
89
+ test('returns clear error when both are missing (no null-deref)', async () => {
90
+ const tool = new SeekTool({}, SILENT_LOGGER);
91
+ const r = await tool.execute({}, { projectDir: process.cwd() });
92
+ expect(r.success).toBe(false);
93
+ expect(r.error).toMatch(/filePaths/);
94
+ });
95
+
96
+ test('accepts {query: "X", filePattern: "*.js"} singular shape (no crash)', async () => {
97
+ const tool = new SeekTool({}, SILENT_LOGGER);
98
+ // Mock resolveFilePaths to return the canonical {found, notFound} shape.
99
+ tool.resolveFilePaths = async () => ({ found: [], notFound: ['*.js'] });
100
+ const r = await tool.execute(
101
+ { query: 'tok-', filePattern: '*.js' },
102
+ { projectDir: process.cwd() }
103
+ );
104
+ // No "Cannot read 'length' of undefined" — we either get a clean
105
+ // success (no matches in empty file list) or a clean error string.
106
+ expect(typeof r).toBe('object');
107
+ expect(r).not.toBeNull();
108
+ });
109
+
110
+ test('returns clean error when only filePaths is missing', async () => {
111
+ const tool = new SeekTool({}, SILENT_LOGGER);
112
+ const r = await tool.execute({ searchTerms: ['foo'] }, { projectDir: process.cwd() });
113
+ expect(r.success).toBe(false);
114
+ expect(r.error).toMatch(/filePaths/);
115
+ });
116
+
117
+ test('returns clean error when only searchTerms is missing', async () => {
118
+ const tool = new SeekTool({}, SILENT_LOGGER);
119
+ const r = await tool.execute({ filePaths: ['*.js'] }, { projectDir: process.cwd() });
120
+ expect(r.success).toBe(false);
121
+ expect(r.error).toMatch(/searchTerms/);
122
+ });
123
+ });
124
+
125
+ describe('file-content-replace — accepts flat {actions: [{type, filePath, search, replace}]} shape', () => {
126
+ test('promotes flat actions shape to canonical {files: [{path, replacements}]}', async () => {
127
+ const tool = new FileContentReplaceTool({}, SILENT_LOGGER);
128
+ // Capture the post-normalization params shape via _isNormalizedParams.
129
+ let captured = null;
130
+ const orig = tool._isNormalizedParams.bind(tool);
131
+ tool._isNormalizedParams = (p) => { captured = p; return orig(p); };
132
+ try {
133
+ await tool.execute(
134
+ { actions: [{ type: 'replace', filePath: 'a.js', search: 'foo', replace: 'bar' }] },
135
+ { projectDir: process.cwd() }
136
+ );
137
+ } catch { /* downstream errors fine */ }
138
+ expect(captured).not.toBeNull();
139
+ expect(Array.isArray(captured.files)).toBe(true);
140
+ expect(captured.files[0].path).toBe('a.js');
141
+ expect(captured.files[0].replacements[0].oldContent).toBe('foo');
142
+ expect(captured.files[0].replacements[0].newContent).toBe('bar');
143
+ });
144
+
145
+ test('returns clean error when neither {files} nor {actions} provided', async () => {
146
+ const tool = new FileContentReplaceTool({}, SILENT_LOGGER);
147
+ const r = await tool.execute({}, { projectDir: process.cwd() });
148
+ expect(r.success).toBe(false);
149
+ expect(r.error).toMatch(/files/);
150
+ });
151
+
152
+ test('groups multiple actions by filePath', async () => {
153
+ const tool = new FileContentReplaceTool({}, SILENT_LOGGER);
154
+ // Spy on _isNormalizedParams to capture the normalized params shape.
155
+ let capturedParams = null;
156
+ const orig = tool._isNormalizedParams.bind(tool);
157
+ tool._isNormalizedParams = (p) => { capturedParams = p; return orig(p); };
158
+ try {
159
+ await tool.execute({
160
+ actions: [
161
+ { type: 'replace', filePath: 'a.js', search: '1', replace: 'A' },
162
+ { type: 'replace', filePath: 'a.js', search: '2', replace: 'B' },
163
+ { type: 'replace', filePath: 'b.js', search: '3', replace: 'C' },
164
+ ],
165
+ }, { projectDir: process.cwd() });
166
+ } catch { /* downstream errors fine */ }
167
+ expect(capturedParams).not.toBeNull();
168
+ expect(Array.isArray(capturedParams.files)).toBe(true);
169
+ expect(capturedParams.files.length).toBe(2);
170
+ const a = capturedParams.files.find(f => f.path === 'a.js');
171
+ expect(a.replacements.length).toBe(2);
172
+ expect(a.replacements[0].oldContent).toBe('1');
173
+ expect(a.replacements[0].newContent).toBe('A');
174
+ });
175
+ });
176
+
177
+ describe('item discriminator cross-acceptance (type / action)', () => {
178
+ // Some tools use `type` as item discriminator inside actions[]
179
+ // (filesystem, terminal, taskmanager, code-map, memory), others use
180
+ // `action` (jobdone, docx, excel, pdf). To prevent cross-tool drift,
181
+ // every plural-envelope tool accepts BOTH names.
182
+ test('filesystem accepts {actions: [{action: "read", filePath}]} (action-named item)', async () => {
183
+ const tool = new FileSystemTool({}, SILENT_LOGGER);
184
+ let captured = null;
185
+ const orig = tool.customValidateParameters?.bind(tool);
186
+ tool.customValidateParameters = (p) => { captured = p; return orig ? orig(p) : { valid: true }; };
187
+ try {
188
+ await tool.execute(
189
+ { actions: [{ action: 'read', filePath: 'src/foo.js' }] },
190
+ { projectDir: process.cwd() }
191
+ );
192
+ } catch { /* downstream errors fine */ }
193
+ expect(captured).not.toBeNull();
194
+ // After normalization, the item should have `type` set.
195
+ expect(captured.actions[0].type).toBe('read');
196
+ });
197
+
198
+ test('terminal accepts {actions: [{action: "run-command", command}]} (action-named item)', async () => {
199
+ const tool = new TerminalTool({ allowedCommands: ['echo'] }, SILENT_LOGGER);
200
+ // Validate path: customValidateParameters mutates the input items
201
+ // in place, setting .type from .action. Verify by inspecting the
202
+ // input object after validation runs.
203
+ const input = { actions: [{ action: 'run-command', command: 'echo hi' }] };
204
+ const v = tool.customValidateParameters(input);
205
+ expect(v.valid).toBe(true);
206
+ expect(input.actions[0].type).toBe('run-command');
207
+ });
208
+
209
+ test('filesystem validateParameters accepts {action} item discriminator and normalizes to type', () => {
210
+ const tool = new FileSystemTool({}, SILENT_LOGGER);
211
+ const input = { actions: [{ action: 'read', filePath: 'src/foo.js' }] };
212
+ const v = tool.customValidateParameters(input);
213
+ expect(v.valid).toBe(true);
214
+ expect(input.actions[0].type).toBe('read');
215
+ });
216
+
217
+ test('taskmanager accepts {actions: [{action: "list"}]} item discriminator', () => {
218
+ // taskmanager has its own non-customValidateParameters path —
219
+ // verify by going through execute and seeing that params.action
220
+ // gets set from firstAction.action.
221
+ // (Tests against taskmanager's full execute lifecycle live in
222
+ // src/tools/__tests__/taskManagerTool.test.js.)
223
+ expect(true).toBe(true);
224
+ });
225
+ });
226
+
227
+ describe('code-map — explanatory errors on invalid action', () => {
228
+ test('action="search" → hint points at seek', async () => {
229
+ const { default: CodeMapTool } = await import('../codeMapTool.js');
230
+ const tool = new CodeMapTool({}, SILENT_LOGGER);
231
+ const v = tool.customValidateParameters({ action: 'search', filePath: 'x' });
232
+ expect(v.valid).toBe(false);
233
+ expect(v.errors.join(' ').toLowerCase()).toContain('seek');
234
+ });
235
+
236
+ test('action="list" → hint points at file-tree', async () => {
237
+ const { default: CodeMapTool } = await import('../codeMapTool.js');
238
+ const tool = new CodeMapTool({}, SILENT_LOGGER);
239
+ const v = tool.customValidateParameters({ action: 'list' });
240
+ expect(v.valid).toBe(false);
241
+ expect(v.errors.join(' ').toLowerCase()).toContain('file-tree');
242
+ });
243
+
244
+ test('action="read" (without -range) → hint points at filesystem read or code-map read-range', async () => {
245
+ const { default: CodeMapTool } = await import('../codeMapTool.js');
246
+ const tool = new CodeMapTool({}, SILENT_LOGGER);
247
+ const v = tool.customValidateParameters({ action: 'read' });
248
+ expect(v.valid).toBe(false);
249
+ expect(v.errors.join(' ').toLowerCase()).toMatch(/filesystem|read-range/);
250
+ });
251
+
252
+ test('valid actions still pass', async () => {
253
+ const { default: CodeMapTool } = await import('../codeMapTool.js');
254
+ const tool = new CodeMapTool({}, SILENT_LOGGER);
255
+ expect(tool.customValidateParameters({ action: 'skeleton', path: 'src/' }).valid).toBe(true);
256
+ expect(tool.customValidateParameters({
257
+ action: 'read-range', filePath: 'src/foo.js', startLine: 1, endLine: 50,
258
+ }).valid).toBe(true);
259
+ });
260
+ });
@@ -868,6 +868,21 @@ class ToolsRegistry {
868
868
  description += '**`plan/*` memories auto-inject into your system prompt every turn under `## AGENT WORKING PLAN` — that\'s how they survive compaction. Update or delete them as the situation evolves; a stale plan is worse than no plan.**\n\n';
869
869
  }
870
870
 
871
+ // ── TASK DISCIPLINE ─────────────────────────────────────────
872
+ // Address the production-observed pattern where agents (especially
873
+ // Kimi-K2.6) lose task focus after cascading tool errors and
874
+ // silently revert to a prior task instead of completing the current
875
+ // one. The fix: make the task list a faithful representation of
876
+ // cognitive effort. Gated on `taskmanager` capability only.
877
+ if (toolIds.includes('taskmanager')) {
878
+ description += '**TASK DISCIPLINE — keep your task list aligned with your actual cognitive effort:**\n';
879
+ description += '- Only **ONE** task may be `in_progress` at a time. Two or more in-progress tasks means the list no longer reflects what you are actually doing.\n';
880
+ description += '- **Transition first, then work.** Before you do work on a task, call `taskmanager` → `update` to move it `pending → in_progress`. The transition IS the signal you have started — do not start mentally then transition later.\n';
881
+ description += '- **Finish or release.** When done, move `in_progress → completed` BEFORE starting the next task. If the user pivots and you must drop the current task, transition it to `blocked` or `cancelled` (with a one-line note in `description` saying why) — never silently abandon it.\n';
882
+ description += '- **Anchor on tool failures.** If a tool call fails or you get stuck, re-read your task list. Resume the `in_progress` task. Do NOT switch topics until the current task is explicitly transitioned. This is how multi-task sessions stay coherent across error recovery.\n';
883
+ description += '- The `currentFocus` field returned by every `taskmanager` action tells you which task you are on. If it warns about 0 or 2+ in-progress tasks, fix that before doing anything else.\n\n';
884
+ }
885
+
871
886
  description += '**Distinction:**\n';
872
887
  description += '- `memory` = persistent knowledge that survives sessions (why, constraints, durable facts, working plans).\n';
873
888
  if (toolIds.includes('taskmanager')) {
@@ -887,7 +902,19 @@ class ToolsRegistry {
887
902
  description += '2. **Understand code** — Use `code-map` skeleton to extract signatures, classes, and functions with line numbers\n';
888
903
  description += '3. **Zoom in** — Use `code-map` read-range to read only the specific lines you need\n';
889
904
  description += '4. **Search** — Use `seek` to find specific terms, then `code-map` read-range to view context around matches\n\n';
890
- description += 'This avoids wasting context on entire file reads. Reserve `filesystem` read for small files or when you need the complete content.\n';
905
+ description += 'This avoids wasting context on entire file reads. Reserve `filesystem` read for small files or when you need the complete content.\n\n';
906
+
907
+ // Code-map cache discipline — addresses production-observed
908
+ // re-skeleton pattern (Monopoly mission: 22 skeleton calls on
909
+ // the same file, 80% while the original result was still in
910
+ // active context). The runtime maintains a per-session cache
911
+ // surfaced via the `## CODEBASE KNOWLEDGE` block injected by
912
+ // the scheduler. Agent must consult that block before re-issuing
913
+ // identical reads. See services/codebaseKnowledgeService.js.
914
+ description += '**Cache awareness — before re-issuing a code-map call:**\n';
915
+ description += '- Scan the `## CODEBASE KNOWLEDGE` section of this prompt (appears below the task list when populated). It lists files you have ALREADY mapped this session and what was mapped (skeleton, line ranges).\n';
916
+ description += '- If the file is listed and marked `current` (not STALE), the tool will serve from cache automatically on an identical re-read. You do not need to issue the call again unless you need DIFFERENT information (a different range) or the entry is marked STALE.\n';
917
+ description += '- The cache invalidates automatically when you write to a file (via filesystem write/append or file-content-replace). After a write, the file\'s entry will appear STALE — re-skeleton is correct in that case.\n';
891
918
  }
892
919
 
893
920
  return description;