onbuzz 3.3.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 (506) hide show
  1. package/LICENSE +267 -0
  2. package/README.md +425 -0
  3. package/bin/cli.js +556 -0
  4. package/bin/loxia-terminal-v2.js +162 -0
  5. package/bin/loxia-terminal.js +90 -0
  6. package/bin/start-with-terminal.js +200 -0
  7. package/node_modules/@isaacs/balanced-match/LICENSE.md +23 -0
  8. package/node_modules/@isaacs/balanced-match/README.md +60 -0
  9. package/node_modules/@isaacs/balanced-match/dist/commonjs/index.d.ts +9 -0
  10. package/node_modules/@isaacs/balanced-match/dist/commonjs/index.d.ts.map +1 -0
  11. package/node_modules/@isaacs/balanced-match/dist/commonjs/index.js +59 -0
  12. package/node_modules/@isaacs/balanced-match/dist/commonjs/index.js.map +1 -0
  13. package/node_modules/@isaacs/balanced-match/dist/commonjs/package.json +3 -0
  14. package/node_modules/@isaacs/balanced-match/dist/esm/index.d.ts +9 -0
  15. package/node_modules/@isaacs/balanced-match/dist/esm/index.d.ts.map +1 -0
  16. package/node_modules/@isaacs/balanced-match/dist/esm/index.js +54 -0
  17. package/node_modules/@isaacs/balanced-match/dist/esm/index.js.map +1 -0
  18. package/node_modules/@isaacs/balanced-match/dist/esm/package.json +3 -0
  19. package/node_modules/@isaacs/balanced-match/package.json +79 -0
  20. package/node_modules/@isaacs/brace-expansion/LICENSE +23 -0
  21. package/node_modules/@isaacs/brace-expansion/README.md +97 -0
  22. package/node_modules/@isaacs/brace-expansion/dist/commonjs/index.d.ts +6 -0
  23. package/node_modules/@isaacs/brace-expansion/dist/commonjs/index.d.ts.map +1 -0
  24. package/node_modules/@isaacs/brace-expansion/dist/commonjs/index.js +199 -0
  25. package/node_modules/@isaacs/brace-expansion/dist/commonjs/index.js.map +1 -0
  26. package/node_modules/@isaacs/brace-expansion/dist/commonjs/package.json +3 -0
  27. package/node_modules/@isaacs/brace-expansion/dist/esm/index.d.ts +6 -0
  28. package/node_modules/@isaacs/brace-expansion/dist/esm/index.d.ts.map +1 -0
  29. package/node_modules/@isaacs/brace-expansion/dist/esm/index.js +195 -0
  30. package/node_modules/@isaacs/brace-expansion/dist/esm/index.js.map +1 -0
  31. package/node_modules/@isaacs/brace-expansion/dist/esm/package.json +3 -0
  32. package/node_modules/@isaacs/brace-expansion/package.json +60 -0
  33. package/node_modules/glob/LICENSE.md +63 -0
  34. package/node_modules/glob/README.md +1177 -0
  35. package/node_modules/glob/dist/commonjs/glob.d.ts +388 -0
  36. package/node_modules/glob/dist/commonjs/glob.d.ts.map +1 -0
  37. package/node_modules/glob/dist/commonjs/glob.js +247 -0
  38. package/node_modules/glob/dist/commonjs/glob.js.map +1 -0
  39. package/node_modules/glob/dist/commonjs/has-magic.d.ts +14 -0
  40. package/node_modules/glob/dist/commonjs/has-magic.d.ts.map +1 -0
  41. package/node_modules/glob/dist/commonjs/has-magic.js +27 -0
  42. package/node_modules/glob/dist/commonjs/has-magic.js.map +1 -0
  43. package/node_modules/glob/dist/commonjs/ignore.d.ts +24 -0
  44. package/node_modules/glob/dist/commonjs/ignore.d.ts.map +1 -0
  45. package/node_modules/glob/dist/commonjs/ignore.js +119 -0
  46. package/node_modules/glob/dist/commonjs/ignore.js.map +1 -0
  47. package/node_modules/glob/dist/commonjs/index.d.ts +97 -0
  48. package/node_modules/glob/dist/commonjs/index.d.ts.map +1 -0
  49. package/node_modules/glob/dist/commonjs/index.js +68 -0
  50. package/node_modules/glob/dist/commonjs/index.js.map +1 -0
  51. package/node_modules/glob/dist/commonjs/index.min.js +4 -0
  52. package/node_modules/glob/dist/commonjs/index.min.js.map +7 -0
  53. package/node_modules/glob/dist/commonjs/package.json +3 -0
  54. package/node_modules/glob/dist/commonjs/pattern.d.ts +76 -0
  55. package/node_modules/glob/dist/commonjs/pattern.d.ts.map +1 -0
  56. package/node_modules/glob/dist/commonjs/pattern.js +219 -0
  57. package/node_modules/glob/dist/commonjs/pattern.js.map +1 -0
  58. package/node_modules/glob/dist/commonjs/processor.d.ts +59 -0
  59. package/node_modules/glob/dist/commonjs/processor.d.ts.map +1 -0
  60. package/node_modules/glob/dist/commonjs/processor.js +301 -0
  61. package/node_modules/glob/dist/commonjs/processor.js.map +1 -0
  62. package/node_modules/glob/dist/commonjs/walker.d.ts +97 -0
  63. package/node_modules/glob/dist/commonjs/walker.d.ts.map +1 -0
  64. package/node_modules/glob/dist/commonjs/walker.js +387 -0
  65. package/node_modules/glob/dist/commonjs/walker.js.map +1 -0
  66. package/node_modules/glob/dist/esm/glob.d.ts +388 -0
  67. package/node_modules/glob/dist/esm/glob.d.ts.map +1 -0
  68. package/node_modules/glob/dist/esm/glob.js +243 -0
  69. package/node_modules/glob/dist/esm/glob.js.map +1 -0
  70. package/node_modules/glob/dist/esm/has-magic.d.ts +14 -0
  71. package/node_modules/glob/dist/esm/has-magic.d.ts.map +1 -0
  72. package/node_modules/glob/dist/esm/has-magic.js +23 -0
  73. package/node_modules/glob/dist/esm/has-magic.js.map +1 -0
  74. package/node_modules/glob/dist/esm/ignore.d.ts +24 -0
  75. package/node_modules/glob/dist/esm/ignore.d.ts.map +1 -0
  76. package/node_modules/glob/dist/esm/ignore.js +115 -0
  77. package/node_modules/glob/dist/esm/ignore.js.map +1 -0
  78. package/node_modules/glob/dist/esm/index.d.ts +97 -0
  79. package/node_modules/glob/dist/esm/index.d.ts.map +1 -0
  80. package/node_modules/glob/dist/esm/index.js +55 -0
  81. package/node_modules/glob/dist/esm/index.js.map +1 -0
  82. package/node_modules/glob/dist/esm/index.min.js +4 -0
  83. package/node_modules/glob/dist/esm/index.min.js.map +7 -0
  84. package/node_modules/glob/dist/esm/package.json +3 -0
  85. package/node_modules/glob/dist/esm/pattern.d.ts +76 -0
  86. package/node_modules/glob/dist/esm/pattern.d.ts.map +1 -0
  87. package/node_modules/glob/dist/esm/pattern.js +215 -0
  88. package/node_modules/glob/dist/esm/pattern.js.map +1 -0
  89. package/node_modules/glob/dist/esm/processor.d.ts +59 -0
  90. package/node_modules/glob/dist/esm/processor.d.ts.map +1 -0
  91. package/node_modules/glob/dist/esm/processor.js +294 -0
  92. package/node_modules/glob/dist/esm/processor.js.map +1 -0
  93. package/node_modules/glob/dist/esm/walker.d.ts +97 -0
  94. package/node_modules/glob/dist/esm/walker.d.ts.map +1 -0
  95. package/node_modules/glob/dist/esm/walker.js +381 -0
  96. package/node_modules/glob/dist/esm/walker.js.map +1 -0
  97. package/node_modules/glob/node_modules/minimatch/LICENSE.md +55 -0
  98. package/node_modules/glob/node_modules/minimatch/README.md +453 -0
  99. package/node_modules/glob/node_modules/minimatch/dist/commonjs/assert-valid-pattern.d.ts +2 -0
  100. package/node_modules/glob/node_modules/minimatch/dist/commonjs/assert-valid-pattern.d.ts.map +1 -0
  101. package/node_modules/glob/node_modules/minimatch/dist/commonjs/assert-valid-pattern.js +14 -0
  102. package/node_modules/glob/node_modules/minimatch/dist/commonjs/assert-valid-pattern.js.map +1 -0
  103. package/node_modules/glob/node_modules/minimatch/dist/commonjs/ast.d.ts +20 -0
  104. package/node_modules/glob/node_modules/minimatch/dist/commonjs/ast.d.ts.map +1 -0
  105. package/node_modules/glob/node_modules/minimatch/dist/commonjs/ast.js +591 -0
  106. package/node_modules/glob/node_modules/minimatch/dist/commonjs/ast.js.map +1 -0
  107. package/node_modules/glob/node_modules/minimatch/dist/commonjs/brace-expressions.d.ts +8 -0
  108. package/node_modules/glob/node_modules/minimatch/dist/commonjs/brace-expressions.d.ts.map +1 -0
  109. package/node_modules/glob/node_modules/minimatch/dist/commonjs/brace-expressions.js +152 -0
  110. package/node_modules/glob/node_modules/minimatch/dist/commonjs/brace-expressions.js.map +1 -0
  111. package/node_modules/glob/node_modules/minimatch/dist/commonjs/escape.d.ts +15 -0
  112. package/node_modules/glob/node_modules/minimatch/dist/commonjs/escape.d.ts.map +1 -0
  113. package/node_modules/glob/node_modules/minimatch/dist/commonjs/escape.js +30 -0
  114. package/node_modules/glob/node_modules/minimatch/dist/commonjs/escape.js.map +1 -0
  115. package/node_modules/glob/node_modules/minimatch/dist/commonjs/index.d.ts +94 -0
  116. package/node_modules/glob/node_modules/minimatch/dist/commonjs/index.d.ts.map +1 -0
  117. package/node_modules/glob/node_modules/minimatch/dist/commonjs/index.js +1029 -0
  118. package/node_modules/glob/node_modules/minimatch/dist/commonjs/index.js.map +1 -0
  119. package/node_modules/glob/node_modules/minimatch/dist/commonjs/package.json +3 -0
  120. package/node_modules/glob/node_modules/minimatch/dist/commonjs/unescape.d.ts +22 -0
  121. package/node_modules/glob/node_modules/minimatch/dist/commonjs/unescape.d.ts.map +1 -0
  122. package/node_modules/glob/node_modules/minimatch/dist/commonjs/unescape.js +38 -0
  123. package/node_modules/glob/node_modules/minimatch/dist/commonjs/unescape.js.map +1 -0
  124. package/node_modules/glob/node_modules/minimatch/dist/esm/assert-valid-pattern.d.ts +2 -0
  125. package/node_modules/glob/node_modules/minimatch/dist/esm/assert-valid-pattern.d.ts.map +1 -0
  126. package/node_modules/glob/node_modules/minimatch/dist/esm/assert-valid-pattern.js +10 -0
  127. package/node_modules/glob/node_modules/minimatch/dist/esm/assert-valid-pattern.js.map +1 -0
  128. package/node_modules/glob/node_modules/minimatch/dist/esm/ast.d.ts +20 -0
  129. package/node_modules/glob/node_modules/minimatch/dist/esm/ast.d.ts.map +1 -0
  130. package/node_modules/glob/node_modules/minimatch/dist/esm/ast.js +587 -0
  131. package/node_modules/glob/node_modules/minimatch/dist/esm/ast.js.map +1 -0
  132. package/node_modules/glob/node_modules/minimatch/dist/esm/brace-expressions.d.ts +8 -0
  133. package/node_modules/glob/node_modules/minimatch/dist/esm/brace-expressions.d.ts.map +1 -0
  134. package/node_modules/glob/node_modules/minimatch/dist/esm/brace-expressions.js +148 -0
  135. package/node_modules/glob/node_modules/minimatch/dist/esm/brace-expressions.js.map +1 -0
  136. package/node_modules/glob/node_modules/minimatch/dist/esm/escape.d.ts +15 -0
  137. package/node_modules/glob/node_modules/minimatch/dist/esm/escape.d.ts.map +1 -0
  138. package/node_modules/glob/node_modules/minimatch/dist/esm/escape.js +26 -0
  139. package/node_modules/glob/node_modules/minimatch/dist/esm/escape.js.map +1 -0
  140. package/node_modules/glob/node_modules/minimatch/dist/esm/index.d.ts +94 -0
  141. package/node_modules/glob/node_modules/minimatch/dist/esm/index.d.ts.map +1 -0
  142. package/node_modules/glob/node_modules/minimatch/dist/esm/index.js +1016 -0
  143. package/node_modules/glob/node_modules/minimatch/dist/esm/index.js.map +1 -0
  144. package/node_modules/glob/node_modules/minimatch/dist/esm/package.json +3 -0
  145. package/node_modules/glob/node_modules/minimatch/dist/esm/unescape.d.ts +22 -0
  146. package/node_modules/glob/node_modules/minimatch/dist/esm/unescape.d.ts.map +1 -0
  147. package/node_modules/glob/node_modules/minimatch/dist/esm/unescape.js +34 -0
  148. package/node_modules/glob/node_modules/minimatch/dist/esm/unescape.js.map +1 -0
  149. package/node_modules/glob/node_modules/minimatch/package.json +67 -0
  150. package/node_modules/glob/package.json +101 -0
  151. package/node_modules/minipass/LICENSE +15 -0
  152. package/node_modules/minipass/README.md +825 -0
  153. package/node_modules/minipass/dist/commonjs/index.d.ts +549 -0
  154. package/node_modules/minipass/dist/commonjs/index.d.ts.map +1 -0
  155. package/node_modules/minipass/dist/commonjs/index.js +1028 -0
  156. package/node_modules/minipass/dist/commonjs/index.js.map +1 -0
  157. package/node_modules/minipass/dist/commonjs/package.json +3 -0
  158. package/node_modules/minipass/dist/esm/index.d.ts +549 -0
  159. package/node_modules/minipass/dist/esm/index.d.ts.map +1 -0
  160. package/node_modules/minipass/dist/esm/index.js +1018 -0
  161. package/node_modules/minipass/dist/esm/index.js.map +1 -0
  162. package/node_modules/minipass/dist/esm/package.json +3 -0
  163. package/node_modules/minipass/package.json +82 -0
  164. package/node_modules/package-json-from-dist/LICENSE.md +63 -0
  165. package/node_modules/package-json-from-dist/README.md +110 -0
  166. package/node_modules/package-json-from-dist/dist/commonjs/index.d.ts +89 -0
  167. package/node_modules/package-json-from-dist/dist/commonjs/index.d.ts.map +1 -0
  168. package/node_modules/package-json-from-dist/dist/commonjs/index.js +134 -0
  169. package/node_modules/package-json-from-dist/dist/commonjs/index.js.map +1 -0
  170. package/node_modules/package-json-from-dist/dist/commonjs/package.json +3 -0
  171. package/node_modules/package-json-from-dist/dist/esm/index.d.ts +89 -0
  172. package/node_modules/package-json-from-dist/dist/esm/index.d.ts.map +1 -0
  173. package/node_modules/package-json-from-dist/dist/esm/index.js +129 -0
  174. package/node_modules/package-json-from-dist/dist/esm/index.js.map +1 -0
  175. package/node_modules/package-json-from-dist/dist/esm/package.json +3 -0
  176. package/node_modules/package-json-from-dist/package.json +68 -0
  177. package/node_modules/path-scurry/LICENSE.md +55 -0
  178. package/node_modules/path-scurry/README.md +636 -0
  179. package/node_modules/path-scurry/dist/commonjs/index.d.ts +1115 -0
  180. package/node_modules/path-scurry/dist/commonjs/index.d.ts.map +1 -0
  181. package/node_modules/path-scurry/dist/commonjs/index.js +2018 -0
  182. package/node_modules/path-scurry/dist/commonjs/index.js.map +1 -0
  183. package/node_modules/path-scurry/dist/commonjs/package.json +3 -0
  184. package/node_modules/path-scurry/dist/esm/index.d.ts +1115 -0
  185. package/node_modules/path-scurry/dist/esm/index.d.ts.map +1 -0
  186. package/node_modules/path-scurry/dist/esm/index.js +1983 -0
  187. package/node_modules/path-scurry/dist/esm/index.js.map +1 -0
  188. package/node_modules/path-scurry/dist/esm/package.json +3 -0
  189. package/node_modules/path-scurry/node_modules/lru-cache/LICENSE.md +55 -0
  190. package/node_modules/path-scurry/node_modules/lru-cache/README.md +383 -0
  191. package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/index.d.ts +1323 -0
  192. package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/index.d.ts.map +1 -0
  193. package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/index.js +1589 -0
  194. package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/index.js.map +1 -0
  195. package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/index.min.js +2 -0
  196. package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/index.min.js.map +7 -0
  197. package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/package.json +3 -0
  198. package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/index.d.ts +1323 -0
  199. package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/index.d.ts.map +1 -0
  200. package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/index.js +1585 -0
  201. package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/index.js.map +1 -0
  202. package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/index.min.js +2 -0
  203. package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/index.min.js.map +7 -0
  204. package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/package.json +3 -0
  205. package/node_modules/path-scurry/node_modules/lru-cache/package.json +101 -0
  206. package/node_modules/path-scurry/package.json +88 -0
  207. package/node_modules/rimraf/LICENSE.md +55 -0
  208. package/node_modules/rimraf/README.md +226 -0
  209. package/node_modules/rimraf/dist/commonjs/default-tmp.d.ts +3 -0
  210. package/node_modules/rimraf/dist/commonjs/default-tmp.d.ts.map +1 -0
  211. package/node_modules/rimraf/dist/commonjs/default-tmp.js +58 -0
  212. package/node_modules/rimraf/dist/commonjs/default-tmp.js.map +1 -0
  213. package/node_modules/rimraf/dist/commonjs/error.d.ts +6 -0
  214. package/node_modules/rimraf/dist/commonjs/error.d.ts.map +1 -0
  215. package/node_modules/rimraf/dist/commonjs/error.js +10 -0
  216. package/node_modules/rimraf/dist/commonjs/error.js.map +1 -0
  217. package/node_modules/rimraf/dist/commonjs/fix-eperm.d.ts +3 -0
  218. package/node_modules/rimraf/dist/commonjs/fix-eperm.d.ts.map +1 -0
  219. package/node_modules/rimraf/dist/commonjs/fix-eperm.js +38 -0
  220. package/node_modules/rimraf/dist/commonjs/fix-eperm.js.map +1 -0
  221. package/node_modules/rimraf/dist/commonjs/fs.d.ts +15 -0
  222. package/node_modules/rimraf/dist/commonjs/fs.d.ts.map +1 -0
  223. package/node_modules/rimraf/dist/commonjs/fs.js +33 -0
  224. package/node_modules/rimraf/dist/commonjs/fs.js.map +1 -0
  225. package/node_modules/rimraf/dist/commonjs/ignore-enoent.d.ts +3 -0
  226. package/node_modules/rimraf/dist/commonjs/ignore-enoent.d.ts.map +1 -0
  227. package/node_modules/rimraf/dist/commonjs/ignore-enoent.js +24 -0
  228. package/node_modules/rimraf/dist/commonjs/ignore-enoent.js.map +1 -0
  229. package/node_modules/rimraf/dist/commonjs/index.d.ts +50 -0
  230. package/node_modules/rimraf/dist/commonjs/index.d.ts.map +1 -0
  231. package/node_modules/rimraf/dist/commonjs/index.js +78 -0
  232. package/node_modules/rimraf/dist/commonjs/index.js.map +1 -0
  233. package/node_modules/rimraf/dist/commonjs/opt-arg.d.ts +34 -0
  234. package/node_modules/rimraf/dist/commonjs/opt-arg.d.ts.map +1 -0
  235. package/node_modules/rimraf/dist/commonjs/opt-arg.js +53 -0
  236. package/node_modules/rimraf/dist/commonjs/opt-arg.js.map +1 -0
  237. package/node_modules/rimraf/dist/commonjs/package.json +3 -0
  238. package/node_modules/rimraf/dist/commonjs/path-arg.d.ts +4 -0
  239. package/node_modules/rimraf/dist/commonjs/path-arg.d.ts.map +1 -0
  240. package/node_modules/rimraf/dist/commonjs/path-arg.js +48 -0
  241. package/node_modules/rimraf/dist/commonjs/path-arg.js.map +1 -0
  242. package/node_modules/rimraf/dist/commonjs/readdir-or-error.d.ts +3 -0
  243. package/node_modules/rimraf/dist/commonjs/readdir-or-error.d.ts.map +1 -0
  244. package/node_modules/rimraf/dist/commonjs/readdir-or-error.js +19 -0
  245. package/node_modules/rimraf/dist/commonjs/readdir-or-error.js.map +1 -0
  246. package/node_modules/rimraf/dist/commonjs/retry-busy.d.ts +8 -0
  247. package/node_modules/rimraf/dist/commonjs/retry-busy.d.ts.map +1 -0
  248. package/node_modules/rimraf/dist/commonjs/retry-busy.js +65 -0
  249. package/node_modules/rimraf/dist/commonjs/retry-busy.js.map +1 -0
  250. package/node_modules/rimraf/dist/commonjs/rimraf-manual.d.ts +3 -0
  251. package/node_modules/rimraf/dist/commonjs/rimraf-manual.d.ts.map +1 -0
  252. package/node_modules/rimraf/dist/commonjs/rimraf-manual.js +8 -0
  253. package/node_modules/rimraf/dist/commonjs/rimraf-manual.js.map +1 -0
  254. package/node_modules/rimraf/dist/commonjs/rimraf-move-remove.d.ts +4 -0
  255. package/node_modules/rimraf/dist/commonjs/rimraf-move-remove.d.ts.map +1 -0
  256. package/node_modules/rimraf/dist/commonjs/rimraf-move-remove.js +138 -0
  257. package/node_modules/rimraf/dist/commonjs/rimraf-move-remove.js.map +1 -0
  258. package/node_modules/rimraf/dist/commonjs/rimraf-native.d.ts +4 -0
  259. package/node_modules/rimraf/dist/commonjs/rimraf-native.d.ts.map +1 -0
  260. package/node_modules/rimraf/dist/commonjs/rimraf-native.js +24 -0
  261. package/node_modules/rimraf/dist/commonjs/rimraf-native.js.map +1 -0
  262. package/node_modules/rimraf/dist/commonjs/rimraf-posix.d.ts +4 -0
  263. package/node_modules/rimraf/dist/commonjs/rimraf-posix.d.ts.map +1 -0
  264. package/node_modules/rimraf/dist/commonjs/rimraf-posix.js +103 -0
  265. package/node_modules/rimraf/dist/commonjs/rimraf-posix.js.map +1 -0
  266. package/node_modules/rimraf/dist/commonjs/rimraf-windows.d.ts +4 -0
  267. package/node_modules/rimraf/dist/commonjs/rimraf-windows.d.ts.map +1 -0
  268. package/node_modules/rimraf/dist/commonjs/rimraf-windows.js +159 -0
  269. package/node_modules/rimraf/dist/commonjs/rimraf-windows.js.map +1 -0
  270. package/node_modules/rimraf/dist/commonjs/use-native.d.ts +4 -0
  271. package/node_modules/rimraf/dist/commonjs/use-native.d.ts.map +1 -0
  272. package/node_modules/rimraf/dist/commonjs/use-native.js +18 -0
  273. package/node_modules/rimraf/dist/commonjs/use-native.js.map +1 -0
  274. package/node_modules/rimraf/dist/esm/bin.d.mts +3 -0
  275. package/node_modules/rimraf/dist/esm/bin.d.mts.map +1 -0
  276. package/node_modules/rimraf/dist/esm/bin.mjs +250 -0
  277. package/node_modules/rimraf/dist/esm/bin.mjs.map +1 -0
  278. package/node_modules/rimraf/dist/esm/default-tmp.d.ts +3 -0
  279. package/node_modules/rimraf/dist/esm/default-tmp.d.ts.map +1 -0
  280. package/node_modules/rimraf/dist/esm/default-tmp.js +55 -0
  281. package/node_modules/rimraf/dist/esm/default-tmp.js.map +1 -0
  282. package/node_modules/rimraf/dist/esm/error.d.ts +6 -0
  283. package/node_modules/rimraf/dist/esm/error.d.ts.map +1 -0
  284. package/node_modules/rimraf/dist/esm/error.js +5 -0
  285. package/node_modules/rimraf/dist/esm/error.js.map +1 -0
  286. package/node_modules/rimraf/dist/esm/fix-eperm.d.ts +3 -0
  287. package/node_modules/rimraf/dist/esm/fix-eperm.d.ts.map +1 -0
  288. package/node_modules/rimraf/dist/esm/fix-eperm.js +33 -0
  289. package/node_modules/rimraf/dist/esm/fix-eperm.js.map +1 -0
  290. package/node_modules/rimraf/dist/esm/fs.d.ts +15 -0
  291. package/node_modules/rimraf/dist/esm/fs.d.ts.map +1 -0
  292. package/node_modules/rimraf/dist/esm/fs.js +18 -0
  293. package/node_modules/rimraf/dist/esm/fs.js.map +1 -0
  294. package/node_modules/rimraf/dist/esm/ignore-enoent.d.ts +3 -0
  295. package/node_modules/rimraf/dist/esm/ignore-enoent.d.ts.map +1 -0
  296. package/node_modules/rimraf/dist/esm/ignore-enoent.js +19 -0
  297. package/node_modules/rimraf/dist/esm/ignore-enoent.js.map +1 -0
  298. package/node_modules/rimraf/dist/esm/index.d.ts +50 -0
  299. package/node_modules/rimraf/dist/esm/index.d.ts.map +1 -0
  300. package/node_modules/rimraf/dist/esm/index.js +70 -0
  301. package/node_modules/rimraf/dist/esm/index.js.map +1 -0
  302. package/node_modules/rimraf/dist/esm/opt-arg.d.ts +34 -0
  303. package/node_modules/rimraf/dist/esm/opt-arg.d.ts.map +1 -0
  304. package/node_modules/rimraf/dist/esm/opt-arg.js +46 -0
  305. package/node_modules/rimraf/dist/esm/opt-arg.js.map +1 -0
  306. package/node_modules/rimraf/dist/esm/package.json +3 -0
  307. package/node_modules/rimraf/dist/esm/path-arg.d.ts +4 -0
  308. package/node_modules/rimraf/dist/esm/path-arg.d.ts.map +1 -0
  309. package/node_modules/rimraf/dist/esm/path-arg.js +46 -0
  310. package/node_modules/rimraf/dist/esm/path-arg.js.map +1 -0
  311. package/node_modules/rimraf/dist/esm/readdir-or-error.d.ts +3 -0
  312. package/node_modules/rimraf/dist/esm/readdir-or-error.d.ts.map +1 -0
  313. package/node_modules/rimraf/dist/esm/readdir-or-error.js +14 -0
  314. package/node_modules/rimraf/dist/esm/readdir-or-error.js.map +1 -0
  315. package/node_modules/rimraf/dist/esm/retry-busy.d.ts +8 -0
  316. package/node_modules/rimraf/dist/esm/retry-busy.d.ts.map +1 -0
  317. package/node_modules/rimraf/dist/esm/retry-busy.js +60 -0
  318. package/node_modules/rimraf/dist/esm/retry-busy.js.map +1 -0
  319. package/node_modules/rimraf/dist/esm/rimraf-manual.d.ts +3 -0
  320. package/node_modules/rimraf/dist/esm/rimraf-manual.d.ts.map +1 -0
  321. package/node_modules/rimraf/dist/esm/rimraf-manual.js +5 -0
  322. package/node_modules/rimraf/dist/esm/rimraf-manual.js.map +1 -0
  323. package/node_modules/rimraf/dist/esm/rimraf-move-remove.d.ts +4 -0
  324. package/node_modules/rimraf/dist/esm/rimraf-move-remove.d.ts.map +1 -0
  325. package/node_modules/rimraf/dist/esm/rimraf-move-remove.js +133 -0
  326. package/node_modules/rimraf/dist/esm/rimraf-move-remove.js.map +1 -0
  327. package/node_modules/rimraf/dist/esm/rimraf-native.d.ts +4 -0
  328. package/node_modules/rimraf/dist/esm/rimraf-native.d.ts.map +1 -0
  329. package/node_modules/rimraf/dist/esm/rimraf-native.js +19 -0
  330. package/node_modules/rimraf/dist/esm/rimraf-native.js.map +1 -0
  331. package/node_modules/rimraf/dist/esm/rimraf-posix.d.ts +4 -0
  332. package/node_modules/rimraf/dist/esm/rimraf-posix.d.ts.map +1 -0
  333. package/node_modules/rimraf/dist/esm/rimraf-posix.js +98 -0
  334. package/node_modules/rimraf/dist/esm/rimraf-posix.js.map +1 -0
  335. package/node_modules/rimraf/dist/esm/rimraf-windows.d.ts +4 -0
  336. package/node_modules/rimraf/dist/esm/rimraf-windows.d.ts.map +1 -0
  337. package/node_modules/rimraf/dist/esm/rimraf-windows.js +154 -0
  338. package/node_modules/rimraf/dist/esm/rimraf-windows.js.map +1 -0
  339. package/node_modules/rimraf/dist/esm/use-native.d.ts +4 -0
  340. package/node_modules/rimraf/dist/esm/use-native.d.ts.map +1 -0
  341. package/node_modules/rimraf/dist/esm/use-native.js +15 -0
  342. package/node_modules/rimraf/dist/esm/use-native.js.map +1 -0
  343. package/node_modules/rimraf/package.json +92 -0
  344. package/package.json +152 -0
  345. package/scripts/install-scanners.js +258 -0
  346. package/scripts/watchdog.js +147 -0
  347. package/src/analyzers/CSSAnalyzer.js +297 -0
  348. package/src/analyzers/ConfigValidator.js +690 -0
  349. package/src/analyzers/ESLintAnalyzer.js +320 -0
  350. package/src/analyzers/JavaScriptAnalyzer.js +261 -0
  351. package/src/analyzers/PrettierFormatter.js +247 -0
  352. package/src/analyzers/PythonAnalyzer.js +283 -0
  353. package/src/analyzers/SecurityAnalyzer.js +729 -0
  354. package/src/analyzers/SparrowAnalyzer.js +341 -0
  355. package/src/analyzers/TypeScriptAnalyzer.js +247 -0
  356. package/src/analyzers/codeCloneDetector/analyzer.js +344 -0
  357. package/src/analyzers/codeCloneDetector/detector.js +250 -0
  358. package/src/analyzers/codeCloneDetector/index.js +192 -0
  359. package/src/analyzers/codeCloneDetector/parser.js +199 -0
  360. package/src/analyzers/codeCloneDetector/reporter.js +148 -0
  361. package/src/analyzers/codeCloneDetector/scanner.js +88 -0
  362. package/src/core/agentPool.js +1957 -0
  363. package/src/core/agentScheduler.js +3212 -0
  364. package/src/core/contextManager.js +709 -0
  365. package/src/core/flowExecutor.js +928 -0
  366. package/src/core/messageProcessor.js +808 -0
  367. package/src/core/orchestrator.js +584 -0
  368. package/src/core/stateManager.js +1500 -0
  369. package/src/index.js +972 -0
  370. package/src/interfaces/cli.js +553 -0
  371. package/src/interfaces/terminal/__tests__/smoke/advancedFeatures.test.js +208 -0
  372. package/src/interfaces/terminal/__tests__/smoke/agentControl.test.js +236 -0
  373. package/src/interfaces/terminal/__tests__/smoke/agents.test.js +138 -0
  374. package/src/interfaces/terminal/__tests__/smoke/components.test.js +137 -0
  375. package/src/interfaces/terminal/__tests__/smoke/connection.test.js +350 -0
  376. package/src/interfaces/terminal/__tests__/smoke/enhancements.test.js +156 -0
  377. package/src/interfaces/terminal/__tests__/smoke/imports.test.js +332 -0
  378. package/src/interfaces/terminal/__tests__/smoke/messages.test.js +256 -0
  379. package/src/interfaces/terminal/__tests__/smoke/tools.test.js +388 -0
  380. package/src/interfaces/terminal/api/apiClient.js +299 -0
  381. package/src/interfaces/terminal/api/messageRouter.js +262 -0
  382. package/src/interfaces/terminal/api/session.js +266 -0
  383. package/src/interfaces/terminal/api/websocket.js +497 -0
  384. package/src/interfaces/terminal/components/AgentCreator.js +705 -0
  385. package/src/interfaces/terminal/components/AgentEditor.js +678 -0
  386. package/src/interfaces/terminal/components/AgentSwitcher.js +330 -0
  387. package/src/interfaces/terminal/components/ErrorBoundary.js +92 -0
  388. package/src/interfaces/terminal/components/ErrorPanel.js +264 -0
  389. package/src/interfaces/terminal/components/Header.js +28 -0
  390. package/src/interfaces/terminal/components/HelpPanel.js +231 -0
  391. package/src/interfaces/terminal/components/InputBox.js +118 -0
  392. package/src/interfaces/terminal/components/Layout.js +603 -0
  393. package/src/interfaces/terminal/components/LoadingSpinner.js +71 -0
  394. package/src/interfaces/terminal/components/MessageList.js +281 -0
  395. package/src/interfaces/terminal/components/MultilineTextInput.js +251 -0
  396. package/src/interfaces/terminal/components/SearchPanel.js +265 -0
  397. package/src/interfaces/terminal/components/SettingsPanel.js +415 -0
  398. package/src/interfaces/terminal/components/StatusBar.js +65 -0
  399. package/src/interfaces/terminal/components/TextInput.js +127 -0
  400. package/src/interfaces/terminal/config/agentEditorConstants.js +227 -0
  401. package/src/interfaces/terminal/config/constants.js +393 -0
  402. package/src/interfaces/terminal/index.js +168 -0
  403. package/src/interfaces/terminal/state/useAgentControl.js +496 -0
  404. package/src/interfaces/terminal/state/useAgents.js +537 -0
  405. package/src/interfaces/terminal/state/useConnection.js +444 -0
  406. package/src/interfaces/terminal/state/useMessages.js +630 -0
  407. package/src/interfaces/terminal/state/useTools.js +554 -0
  408. package/src/interfaces/terminal/utils/debugLogger.js +44 -0
  409. package/src/interfaces/terminal/utils/settingsStorage.js +232 -0
  410. package/src/interfaces/terminal/utils/theme.js +85 -0
  411. package/src/interfaces/webServer.js +5457 -0
  412. package/src/modules/fileExplorer/controller.js +413 -0
  413. package/src/modules/fileExplorer/index.js +37 -0
  414. package/src/modules/fileExplorer/middleware.js +92 -0
  415. package/src/modules/fileExplorer/routes.js +158 -0
  416. package/src/modules/fileExplorer/types.js +44 -0
  417. package/src/services/agentActivityService.js +399 -0
  418. package/src/services/aiService.js +2618 -0
  419. package/src/services/apiKeyManager.js +334 -0
  420. package/src/services/benchmarkService.js +196 -0
  421. package/src/services/budgetService.js +565 -0
  422. package/src/services/contextInjectionService.js +268 -0
  423. package/src/services/conversationCompactionService.js +1103 -0
  424. package/src/services/credentialVault.js +685 -0
  425. package/src/services/errorHandler.js +810 -0
  426. package/src/services/fileAttachmentService.js +547 -0
  427. package/src/services/flowContextService.js +189 -0
  428. package/src/services/memoryService.js +521 -0
  429. package/src/services/modelRouterService.js +365 -0
  430. package/src/services/modelsService.js +323 -0
  431. package/src/services/ollamaService.js +452 -0
  432. package/src/services/portRegistry.js +336 -0
  433. package/src/services/portTracker.js +223 -0
  434. package/src/services/projectDetector.js +404 -0
  435. package/src/services/promptService.js +372 -0
  436. package/src/services/qualityInspector.js +796 -0
  437. package/src/services/scheduleService.js +725 -0
  438. package/src/services/serviceRegistry.js +386 -0
  439. package/src/services/skillsService.js +486 -0
  440. package/src/services/telegramService.js +920 -0
  441. package/src/services/tokenCountingService.js +316 -0
  442. package/src/services/visualEditorBridge.js +1033 -0
  443. package/src/services/visualEditorServer.js +1727 -0
  444. package/src/services/whatsappService.js +663 -0
  445. package/src/tools/__tests__/webTool.e2e.test.js +569 -0
  446. package/src/tools/__tests__/webTool.unit.test.js +195 -0
  447. package/src/tools/agentCommunicationTool.js +1343 -0
  448. package/src/tools/agentDelayTool.js +498 -0
  449. package/src/tools/asyncToolManager.js +604 -0
  450. package/src/tools/baseTool.js +887 -0
  451. package/src/tools/browserTool.js +897 -0
  452. package/src/tools/cloneDetectionTool.js +581 -0
  453. package/src/tools/codeMapTool.js +857 -0
  454. package/src/tools/dependencyResolverTool.js +1212 -0
  455. package/src/tools/docxTool.js +623 -0
  456. package/src/tools/excelTool.js +636 -0
  457. package/src/tools/fileContentReplaceTool.js +840 -0
  458. package/src/tools/fileTreeTool.js +833 -0
  459. package/src/tools/filesystemTool.js +1217 -0
  460. package/src/tools/helpTool.js +198 -0
  461. package/src/tools/imageTool.js +1034 -0
  462. package/src/tools/importAnalyzerTool.js +1056 -0
  463. package/src/tools/jobDoneTool.js +388 -0
  464. package/src/tools/memoryTool.js +554 -0
  465. package/src/tools/pdfTool.js +627 -0
  466. package/src/tools/seekTool.js +883 -0
  467. package/src/tools/skillsTool.js +276 -0
  468. package/src/tools/staticAnalysisTool.js +2146 -0
  469. package/src/tools/taskManagerTool.js +2836 -0
  470. package/src/tools/terminalTool.js +2486 -0
  471. package/src/tools/userPromptTool.js +474 -0
  472. package/src/tools/videoTool.js +1139 -0
  473. package/src/tools/visionTool.js +507 -0
  474. package/src/tools/visualEditorTool.js +1175 -0
  475. package/src/tools/webTool.js +3114 -0
  476. package/src/tools/whatsappTool.js +457 -0
  477. package/src/types/agent.js +519 -0
  478. package/src/types/contextReference.js +972 -0
  479. package/src/types/conversation.js +730 -0
  480. package/src/types/toolCommand.js +747 -0
  481. package/src/utilities/attachmentValidator.js +288 -0
  482. package/src/utilities/browserStealth.js +630 -0
  483. package/src/utilities/configManager.js +618 -0
  484. package/src/utilities/constants.js +870 -0
  485. package/src/utilities/directoryAccessManager.js +566 -0
  486. package/src/utilities/fileProcessor.js +307 -0
  487. package/src/utilities/humanBehavior.js +453 -0
  488. package/src/utilities/jsonRepair.js +242 -0
  489. package/src/utilities/logger.js +436 -0
  490. package/src/utilities/platformUtils.js +255 -0
  491. package/src/utilities/platformUtils.test.js +98 -0
  492. package/src/utilities/stealthConstants.js +377 -0
  493. package/src/utilities/structuredFileValidator.js +699 -0
  494. package/src/utilities/tagParser.js +878 -0
  495. package/src/utilities/toolConstants.js +415 -0
  496. package/src/utilities/userDataDir.js +300 -0
  497. package/web-ui/build/brands/autopilot/favicon.svg +1 -0
  498. package/web-ui/build/brands/autopilot/logo.webp +0 -0
  499. package/web-ui/build/brands/onbuzz/favicon.svg +1 -0
  500. package/web-ui/build/brands/onbuzz/logo-text.webp +0 -0
  501. package/web-ui/build/brands/onbuzz/logo.webp +0 -0
  502. package/web-ui/build/index.html +15 -0
  503. package/web-ui/build/logo.png +0 -0
  504. package/web-ui/build/logo2.png +0 -0
  505. package/web-ui/build/static/index-SmQFfvBs.js +746 -0
  506. package/web-ui/build/static/index-V2ySwjHp.css +1 -0
@@ -0,0 +1,808 @@
1
+ /**
2
+ * MessageProcessor - Processes messages from agents, extracts tool commands, executes tools
3
+ *
4
+ * NEW ARCHITECTURE:
5
+ * - Only handles message queuing and tool execution
6
+ * - No scheduling or autonomous loops (handled by AgentScheduler)
7
+ * - Clean separation of concerns
8
+ */
9
+
10
+ import { AGENT_MODES } from '../utilities/constants.js';
11
+ import TagParser from '../utilities/tagParser.js';
12
+ import { TOOL_IDS, COMMAND_FORMATS } from '../utilities/toolConstants.js';
13
+ import { getVisualEditorBridge } from '../services/visualEditorBridge.js';
14
+ import { VisualEditorTool } from '../tools/visualEditorTool.js';
15
+
16
+ class MessageProcessor {
17
+ constructor(config, logger, toolsRegistry, agentPool, contextManager, aiService, modelRouterService = null, modelsService = null) {
18
+ this.config = config;
19
+ this.logger = logger;
20
+ this.toolsRegistry = toolsRegistry;
21
+ this.agentPool = agentPool;
22
+ this.contextManager = contextManager;
23
+ this.aiService = aiService;
24
+ this.modelRouterService = modelRouterService;
25
+ this.modelsService = modelsService;
26
+
27
+ // Active async operations tracking
28
+ this.asyncOperations = new Map();
29
+
30
+ // Tool execution history
31
+ this.executionHistory = new Map();
32
+
33
+ // Operation ID counter
34
+ this.operationCounter = 0;
35
+
36
+ // WebSocket manager for real-time updates
37
+ this.webSocketManager = null;
38
+
39
+ // AgentScheduler reference
40
+ this.scheduler = null;
41
+
42
+ // Orchestrator reference (for backward compatibility)
43
+ this.orchestrator = null;
44
+
45
+ // Initialize TagParser for comprehensive tool command extraction
46
+ this.tagParser = new TagParser();
47
+ }
48
+
49
+ /**
50
+ * Set WebSocket manager for real-time UI updates
51
+ * @param {Object} webSocketManager - WebSocket manager instance
52
+ */
53
+ setWebSocketManager(webSocketManager) {
54
+ this.webSocketManager = webSocketManager;
55
+ this.logger?.info('WebSocket manager set for MessageProcessor', {
56
+ hasManager: !!webSocketManager
57
+ });
58
+ }
59
+
60
+ /**
61
+ * Set AgentScheduler reference
62
+ * @param {AgentScheduler} scheduler - AgentScheduler instance
63
+ */
64
+ setScheduler(scheduler) {
65
+ this.scheduler = scheduler;
66
+ this.logger?.info('AgentScheduler set for MessageProcessor', {
67
+ hasScheduler: !!scheduler
68
+ });
69
+ }
70
+
71
+ /**
72
+ * Main message processing entry point - NEW ARCHITECTURE
73
+ * Simply queues messages for scheduler processing
74
+ * @param {string} agentId - Target agent ID
75
+ * @param {string} message - Message content
76
+ * @param {Object} context - Message context
77
+ * @returns {Promise<Object>} Queuing result
78
+ */
79
+ async processMessage(agentId, message, context = {}) {
80
+ const agent = await this.agentPool.getAgent(agentId);
81
+ if (!agent) {
82
+ throw new Error(`Agent not found: ${agentId}`);
83
+ }
84
+
85
+ const messageString = typeof message === 'string' ? message : (message ? JSON.stringify(message) : '');
86
+ this.logger.info(`Queueing message for agent: ${agentId}`, {
87
+ messageLength: messageString.length,
88
+ messageType: typeof message,
89
+ isInterAgentMessage: context.isInterAgentMessage,
90
+ contextMessageType: context.messageType || 'user'
91
+ });
92
+
93
+ // Determine message type and queue appropriately
94
+ if (context.isInterAgentMessage) {
95
+ // Inter-agent message
96
+ await this.agentPool.addInterAgentMessage(agentId, {
97
+ content: message,
98
+ sender: context.originalSender,
99
+ senderName: context.senderName,
100
+ subject: context.subject || 'Inter-agent message',
101
+ timestamp: new Date().toISOString(),
102
+ sessionId: context.sessionId,
103
+ requiresReply: context.requiresReply || false
104
+ });
105
+ } else {
106
+ // User message
107
+ // Phase 4: Inject visual context if available
108
+ let enhancedMessage = message;
109
+ let visualContextInjected = false;
110
+
111
+ try {
112
+ const bridge = getVisualEditorBridge();
113
+ if (bridge.isEnabled() && bridge.hasInstance(agentId)) {
114
+ const visualContext = bridge.getVisualContext(agentId);
115
+ if (visualContext) {
116
+ enhancedMessage = VisualEditorTool.injectContextIntoMessage(message, visualContext);
117
+ visualContextInjected = true;
118
+
119
+ this.logger.info(`Visual context injected for agent: ${agentId}`, {
120
+ selector: visualContext.selector,
121
+ sourceFile: visualContext.sourceHint?.file
122
+ });
123
+
124
+ // Clear context after injection (configurable)
125
+ if (this.config.visualEditor?.clearContextAfterInjection !== false) {
126
+ bridge.clearVisualContext(agentId);
127
+ }
128
+ }
129
+ }
130
+ } catch (err) {
131
+ // Visual context injection is optional - don't fail the message
132
+ this.logger.warn?.(`Failed to inject visual context: ${err.message}`);
133
+ }
134
+
135
+ await this.agentPool.addUserMessage(agentId, {
136
+ content: enhancedMessage,
137
+ role: 'user',
138
+ timestamp: new Date().toISOString(),
139
+ contextReferences: context.contextReferences || [],
140
+ sessionId: context.sessionId,
141
+ visualContextInjected,
142
+ streamingEnabled: context.streamingEnabled !== false, // Pass streaming preference from context
143
+ // Flow execution context (if this message is part of a flow)
144
+ isFlowExecution: context.isFlowExecution || false,
145
+ flowRunId: context.flowRunId,
146
+ flowNodeId: context.flowNodeId,
147
+ flowMetadata: context.flowMetadata,
148
+ previousAgentData: context.previousAgentData
149
+ });
150
+ }
151
+
152
+ // Register session with scheduler for API key resolution
153
+ // NOTE: The scheduler uses AgentActivityService to determine which agents
154
+ // should be active based on their message queues - we just register the session here
155
+ if (this.scheduler) {
156
+ await this.scheduler.addAgent(agentId, {
157
+ triggeredBy: context.isInterAgentMessage ? 'inter-agent-message' : 'user-message',
158
+ sessionId: context.sessionId
159
+ });
160
+ }
161
+
162
+ return {
163
+ success: true,
164
+ message: 'Message queued for processing',
165
+ agentId: agentId,
166
+ queuedAt: new Date().toISOString()
167
+ };
168
+ }
169
+
170
+ /**
171
+ * Unwrap TagParser format parameters
172
+ * TagParser wraps XML parameters in {value, attributes} objects
173
+ * This method unwraps them to direct values for tool consumption
174
+ * @param {Object} params - Parameters to unwrap
175
+ * @returns {Object} Unwrapped parameters
176
+ */
177
+ unwrapParameters(params) {
178
+ if (!params || typeof params !== 'object') {
179
+ return params;
180
+ }
181
+
182
+ // Handle arrays - recursively unwrap each element
183
+ if (Array.isArray(params)) {
184
+ return params.map(item => this.unwrapParameters(item));
185
+ }
186
+
187
+ // Check if this is a wrapped value: {value: "...", attributes: {}}
188
+ if ('value' in params && 'attributes' in params && Object.keys(params).length === 2) {
189
+ // This is a wrapped value, return just the value (recursively unwrapped)
190
+ return this.unwrapParameters(params.value);
191
+ }
192
+
193
+ // Regular object - unwrap each property recursively
194
+ const unwrapped = {};
195
+ for (const [key, value] of Object.entries(params)) {
196
+ if (value && typeof value === 'object') {
197
+ if ('value' in value && 'attributes' in value && Object.keys(value).length === 2) {
198
+ // TagParser wrapped format: {value: "...", attributes: {}}
199
+ unwrapped[key] = this.unwrapParameters(value.value);
200
+
201
+ // Also preserve attributes if tool needs them
202
+ if (value.attributes && Object.keys(value.attributes).length > 0) {
203
+ unwrapped[`${key}_attributes`] = value.attributes;
204
+ }
205
+ } else {
206
+ // Recursively unwrap nested objects/arrays
207
+ unwrapped[key] = this.unwrapParameters(value);
208
+ }
209
+ } else {
210
+ // Primitive value - keep as-is
211
+ unwrapped[key] = value;
212
+ }
213
+ }
214
+
215
+ return unwrapped;
216
+ }
217
+
218
+ /**
219
+ * Extract tool commands from message content
220
+ * Supports multiple formats: XML, JSON, and simple bracket notation
221
+ * @param {string} message - Message containing tool commands
222
+ * @returns {Promise<Array>} Array of tool commands
223
+ */
224
+ async extractToolCommands(message) {
225
+ const commands = [];
226
+
227
+ // Use TagParser to extract XML and JSON format commands
228
+ const tagParserCommands = this.tagParser.extractToolCommands(message);
229
+
230
+ // Process TagParser commands and normalize them
231
+ for (const cmd of tagParserCommands) {
232
+ const normalized = this.tagParser.normalizeToolCommand(cmd);
233
+ commands.push({
234
+ toolId: normalized.toolId,
235
+ content: JSON.stringify(normalized.parameters), // Convert parameters to JSON string for tool execution
236
+ parameters: normalized.parameters,
237
+ type: normalized.type,
238
+ isAsync: normalized.parameters?.async === true,
239
+ raw: normalized.rawContent,
240
+ position: cmd.position || {}
241
+ });
242
+ }
243
+
244
+ // Also check for simple bracket notation [tool id="..."] for backward compatibility
245
+ const toolPattern = /\[tool\s+id="([^"]+)"(?:\s+async="(true|false)")?\]([\s\S]*?)\[\/tool\]/gi;
246
+
247
+ console.log('MessageProcessor DEBUG: checking bracket pattern on message length:', message.length);
248
+
249
+ let match;
250
+ while ((match = toolPattern.exec(message)) !== null) {
251
+ const [fullMatch, toolId, isAsync, content] = match;
252
+
253
+ console.log('MessageProcessor DEBUG: bracket pattern matched:', {
254
+ toolId: toolId.trim(),
255
+ contentLength: content.trim().length,
256
+ contentPreview: content.trim().substring(0, 100)
257
+ });
258
+
259
+ // Check if this command was already extracted by TagParser
260
+ const alreadyExtracted = commands.some(cmd =>
261
+ cmd.raw === fullMatch || (cmd.position.start === match.index && cmd.position.end === match.index + fullMatch.length)
262
+ );
263
+
264
+ if (!alreadyExtracted) {
265
+ console.log('MessageProcessor DEBUG: adding bracket command (not already extracted by TagParser)');
266
+
267
+ const trimmedContent = content.trim();
268
+
269
+ // Check if the content inside brackets contains XML tags
270
+ const hasXmlTags = /<[^>]+>/g.test(trimmedContent);
271
+
272
+ if (hasXmlTags) {
273
+ console.log('MessageProcessor DEBUG: detected XML content inside brackets, parsing with TagParser');
274
+
275
+ // Decode HTML entities before parsing XML
276
+ const decodedXmlContent = this.tagParser.decodeHtmlEntities(trimmedContent);
277
+ console.log('MessageProcessor DEBUG: HTML decoding changed content:', trimmedContent !== decodedXmlContent);
278
+
279
+ // Parse the XML content using TagParser
280
+ try {
281
+ const xmlParameters = this.tagParser.parseXMLParameters(decodedXmlContent);
282
+
283
+ console.log('MessageProcessor DEBUG: XML parameters extracted:', Object.keys(xmlParameters));
284
+
285
+ // Check if we got valid parameters
286
+ if (!xmlParameters || typeof xmlParameters !== 'object') {
287
+ throw new Error('Invalid XML parameters returned');
288
+ }
289
+
290
+ // Create a temporary XML command structure for normalization
291
+ const xmlCommand = {
292
+ type: COMMAND_FORMATS.XML,
293
+ toolId: toolId.trim(),
294
+ parameters: xmlParameters,
295
+ rawContent: decodedXmlContent
296
+ };
297
+
298
+ // Normalize it to get the actions array
299
+ const normalized = this.tagParser.normalizeToolCommand(xmlCommand);
300
+
301
+ console.log('MessageProcessor DEBUG: normalized XML command:', {
302
+ toolId: normalized.toolId,
303
+ hasActions: !!normalized.parameters.actions,
304
+ actionsLength: normalized.parameters.actions?.length || 0
305
+ });
306
+
307
+ // Add the properly parsed command
308
+ commands.push({
309
+ toolId: normalized.toolId,
310
+ content: JSON.stringify(normalized.parameters),
311
+ parameters: normalized.parameters,
312
+ type: COMMAND_FORMATS.XML, // Mark as XML since we parsed it
313
+ isAsync: isAsync === 'true',
314
+ raw: fullMatch,
315
+ position: {
316
+ start: match.index,
317
+ end: match.index + fullMatch.length
318
+ }
319
+ });
320
+
321
+ } catch (error) {
322
+ console.log('MessageProcessor DEBUG: XML parsing failed:', error.message);
323
+ console.log('MessageProcessor DEBUG: falling back to raw bracket format');
324
+
325
+ // Fall back to treating it as a simple bracket command
326
+ commands.push({
327
+ toolId: toolId.trim(),
328
+ content: trimmedContent,
329
+ type: COMMAND_FORMATS.BRACKET,
330
+ isAsync: isAsync === 'true',
331
+ raw: fullMatch,
332
+ position: {
333
+ start: match.index,
334
+ end: match.index + fullMatch.length
335
+ }
336
+ });
337
+ }
338
+ } else {
339
+ console.log('MessageProcessor DEBUG: no XML detected, treating as simple bracket command');
340
+
341
+ // Simple bracket command without XML content
342
+ commands.push({
343
+ toolId: toolId.trim(),
344
+ content: trimmedContent,
345
+ type: COMMAND_FORMATS.BRACKET,
346
+ isAsync: isAsync === 'true',
347
+ raw: fullMatch,
348
+ position: {
349
+ start: match.index,
350
+ end: match.index + fullMatch.length
351
+ }
352
+ });
353
+ }
354
+ } else {
355
+ console.log('MessageProcessor DEBUG: bracket command already extracted by TagParser, skipping');
356
+ }
357
+ }
358
+
359
+ // Extract agent redirects as well (for inter-agent communication)
360
+ const redirects = this.tagParser.extractAgentRedirects(message);
361
+ for (const redirect of redirects) {
362
+ commands.push({
363
+ toolId: TOOL_IDS.AGENT_COMMUNICATION,
364
+ content: JSON.stringify({
365
+ to: redirect.to,
366
+ message: redirect.content,
367
+ urgent: redirect.urgent,
368
+ requiresResponse: redirect.requiresResponse,
369
+ context: redirect.context
370
+ }),
371
+ type: COMMAND_FORMATS.REDIRECT,
372
+ isAsync: false,
373
+ raw: redirect.rawMatch,
374
+ position: {}
375
+ });
376
+ }
377
+
378
+ this.logger.debug(`Extracted ${commands.length} tool commands from message`, {
379
+ formats: commands.map(c => c.type),
380
+ tools: commands.map(c => c.toolId)
381
+ });
382
+
383
+ return commands;
384
+ }
385
+
386
+ /**
387
+ * Execute tool commands
388
+ * @param {Array} commands - Array of tool commands
389
+ * @param {Object} context - Execution context
390
+ * @returns {Promise<Array>} Array of execution results
391
+ */
392
+ async executeTools(commands, context) {
393
+ const results = [];
394
+
395
+ for (const command of commands) {
396
+ try {
397
+ const tool = this.toolsRegistry.getTool(command.toolId);
398
+
399
+ if (!tool) {
400
+ results.push({
401
+ toolId: command.toolId,
402
+ status: 'failed',
403
+ error: `Tool not found: ${command.toolId}`,
404
+ timestamp: new Date().toISOString()
405
+ });
406
+ continue;
407
+ }
408
+
409
+ this.logger.info(`Executing tool: ${command.toolId}`, {
410
+ agentId: context.agentId,
411
+ isAsync: command.isAsync
412
+ });
413
+
414
+ let result;
415
+ if (command.isAsync) {
416
+ result = await this.executeAsyncTool(command, tool, context);
417
+ } else {
418
+ // Synchronous tool execution
419
+ // If we have parameters object, use it. Otherwise parse the content.
420
+ let toolInput = command.parameters;
421
+
422
+ if (!toolInput && command.content) {
423
+ // Content is a string, need to parse it using tool's parseParameters method
424
+ if (typeof tool.parseParameters === 'function') {
425
+ try {
426
+ toolInput = tool.parseParameters(command.content);
427
+ this.logger?.debug(`Parsed parameters for tool: ${command.toolId}`, {
428
+ parsedKeys: Object.keys(toolInput)
429
+ });
430
+ } catch (error) {
431
+ this.logger?.warn(`Failed to parse parameters for tool: ${command.toolId}`, {
432
+ error: error.message
433
+ });
434
+ // Fall back to raw content
435
+ toolInput = command.content;
436
+ }
437
+ } else {
438
+ // Tool doesn't have parseParameters, use raw content
439
+ toolInput = command.content;
440
+ }
441
+ }
442
+
443
+ // CRITICAL FIX: Unwrap TagParser format before tool execution
444
+ // TagParser wraps XML parameters in {value, attributes} objects
445
+ // This unwrapping makes all tools work consistently
446
+ if (toolInput && typeof toolInput === 'object') {
447
+ toolInput = this.unwrapParameters(toolInput);
448
+ }
449
+
450
+ // Pass truncation info to tool for partial execution handling.
451
+ // Re-derive projectDir from directoryAccess in case a previous tool
452
+ // (e.g. terminal change-directory) updated the working directory.
453
+ const toolContext = {
454
+ ...context,
455
+ projectDir: context.directoryAccess?.workingDirectory || context.projectDir,
456
+ wasRepaired: command.wasRepaired || false,
457
+ wasTruncated: command.wasTruncated || false
458
+ };
459
+
460
+ const toolResult = await tool.execute(toolInput, toolContext);
461
+
462
+ // Mark result as partial if input was truncated
463
+ const isPartial = command.wasTruncated || false;
464
+
465
+ result = {
466
+ toolId: command.toolId,
467
+ status: isPartial ? 'partial' : 'completed',
468
+ result: toolResult,
469
+ timestamp: new Date().toISOString(),
470
+ ...(isPartial && {
471
+ warning: 'Tool executed with truncated input - AI response exceeded token limit',
472
+ wasTruncated: true
473
+ })
474
+ };
475
+ }
476
+
477
+ results.push(result);
478
+
479
+ // Store in execution history
480
+ const historyKey = `${context.agentId}-${Date.now()}`;
481
+ this.executionHistory.set(historyKey, {
482
+ ...result,
483
+ agentId: context.agentId,
484
+ sessionId: context.sessionId
485
+ });
486
+
487
+ } catch (error) {
488
+ this.logger.error(`Tool execution failed: ${command.toolId}`, {
489
+ error: error.message,
490
+ agentId: context.agentId
491
+ });
492
+
493
+ results.push({
494
+ toolId: command.toolId,
495
+ status: 'failed',
496
+ error: error.message,
497
+ timestamp: new Date().toISOString()
498
+ });
499
+ }
500
+ }
501
+
502
+ return results;
503
+ }
504
+
505
+ /**
506
+ * Execute async tool
507
+ * @param {Object} command - Tool command
508
+ * @param {Object} tool - Tool instance
509
+ * @param {Object} context - Execution context
510
+ * @returns {Promise<Object>} Async operation reference
511
+ */
512
+ async executeAsyncTool(command, tool, context) {
513
+ const operationId = `async-${Date.now()}-${this.operationCounter++}`;
514
+
515
+ // Create async operation entry
516
+ const operation = {
517
+ id: operationId,
518
+ toolId: command.toolId,
519
+ agentId: context.agentId,
520
+ status: 'pending',
521
+ startTime: new Date().toISOString(),
522
+ context: context
523
+ };
524
+
525
+ this.asyncOperations.set(operationId, operation);
526
+
527
+ // Start async execution
528
+ // If we have parameters object, use it. Otherwise parse the content.
529
+ let toolInput = command.parameters;
530
+
531
+ if (!toolInput && command.content) {
532
+ // Content is a string, need to parse it using tool's parseParameters method
533
+ if (typeof tool.parseParameters === 'function') {
534
+ try {
535
+ toolInput = tool.parseParameters(command.content);
536
+ } catch (error) {
537
+ this.logger?.warn(`Failed to parse parameters for async tool: ${command.toolId}`, {
538
+ error: error.message
539
+ });
540
+ // Fall back to raw content
541
+ toolInput = command.content;
542
+ }
543
+ } else {
544
+ // Tool doesn't have parseParameters, use raw content
545
+ toolInput = command.content;
546
+ }
547
+ }
548
+
549
+ // CRITICAL FIX: Unwrap TagParser format before tool execution
550
+ // TagParser wraps XML parameters in {value, attributes} objects
551
+ // This unwrapping makes all tools work consistently
552
+ if (toolInput && typeof toolInput === 'object') {
553
+ toolInput = this.unwrapParameters(toolInput);
554
+ }
555
+
556
+ tool.execute(toolInput, context)
557
+ .then(result => {
558
+ operation.status = 'completed';
559
+ operation.result = result;
560
+ operation.endTime = new Date().toISOString();
561
+ this.notifyAgentOfToolCompletion(operation);
562
+ })
563
+ .catch(error => {
564
+ operation.status = 'failed';
565
+ operation.error = error.message;
566
+ operation.endTime = new Date().toISOString();
567
+ this.notifyAgentOfToolCompletion(operation);
568
+ });
569
+
570
+ // Start monitoring
571
+ this.monitorAsyncOperation(operationId);
572
+
573
+ return {
574
+ toolId: command.toolId,
575
+ status: 'async-pending',
576
+ operationId: operationId,
577
+ message: `Async tool started with operation ID: ${operationId}`,
578
+ timestamp: new Date().toISOString()
579
+ };
580
+ }
581
+
582
+ /**
583
+ * Monitor async operation
584
+ * @param {string} operationId - Operation ID to monitor
585
+ */
586
+ async monitorAsyncOperation(operationId) {
587
+ const checkInterval = 5000; // 5 seconds
588
+ const maxChecks = 120; // 10 minutes max
589
+ let checks = 0;
590
+
591
+ const monitor = setInterval(() => {
592
+ const operation = this.asyncOperations.get(operationId);
593
+
594
+ if (!operation) {
595
+ clearInterval(monitor);
596
+ return;
597
+ }
598
+
599
+ checks++;
600
+
601
+ if (operation.status !== 'pending' || checks >= maxChecks) {
602
+ clearInterval(monitor);
603
+
604
+ if (checks >= maxChecks) {
605
+ operation.status = 'timeout';
606
+ operation.error = 'Operation timed out';
607
+ operation.endTime = new Date().toISOString();
608
+ this.notifyAgentOfToolCompletion(operation);
609
+ }
610
+ }
611
+ }, checkInterval);
612
+ }
613
+
614
+ /**
615
+ * Notify agent of tool completion
616
+ * @param {Object} operation - Completed operation
617
+ */
618
+ async notifyAgentOfToolCompletion(operation) {
619
+ if (!operation.agentId) return;
620
+
621
+ try {
622
+ // Queue tool result for the agent
623
+ await this.agentPool.addToolResult(operation.agentId, {
624
+ toolId: operation.toolId,
625
+ status: operation.status,
626
+ result: operation.result,
627
+ error: operation.error,
628
+ executionTime: operation.endTime ?
629
+ new Date(operation.endTime) - new Date(operation.startTime) : null,
630
+ timestamp: operation.endTime || new Date().toISOString()
631
+ });
632
+
633
+ // Ensure session is registered for agent (tool results added to queue
634
+ // will cause agent to become active via AgentActivityService)
635
+ if (this.scheduler) {
636
+ await this.scheduler.addAgent(operation.agentId, {
637
+ triggeredBy: 'tool-completion',
638
+ sessionId: operation.context?.sessionId
639
+ });
640
+ }
641
+
642
+ this.logger.info(`Agent notified of tool completion: ${operation.agentId}`, {
643
+ toolId: operation.toolId,
644
+ status: operation.status
645
+ });
646
+
647
+ } catch (error) {
648
+ this.logger.error(`Failed to notify agent of tool completion`, {
649
+ agentId: operation.agentId,
650
+ toolId: operation.toolId,
651
+ error: error.message
652
+ });
653
+ }
654
+ }
655
+
656
+ /**
657
+ * Get tool status
658
+ * @param {string} operationId - Operation ID
659
+ * @returns {Promise<Object>} Operation status
660
+ */
661
+ async getToolStatus(operationId) {
662
+ const operation = this.asyncOperations.get(operationId);
663
+
664
+ if (!operation) {
665
+ return {
666
+ status: 'not-found',
667
+ error: `Operation not found: ${operationId}`
668
+ };
669
+ }
670
+
671
+ return {
672
+ id: operation.id,
673
+ toolId: operation.toolId,
674
+ status: operation.status,
675
+ result: operation.result,
676
+ error: operation.error,
677
+ startTime: operation.startTime,
678
+ endTime: operation.endTime
679
+ };
680
+ }
681
+
682
+ /**
683
+ * Extract and execute tools from content
684
+ * Called by AgentScheduler after getting AI response
685
+ * @param {string} content - Content containing tool commands
686
+ * @param {string} agentId - Agent ID
687
+ * @param {Object} context - Execution context
688
+ * @returns {Promise<Array>} Tool execution results
689
+ */
690
+ async extractAndExecuteTools(content, agentId, context) {
691
+ try {
692
+ // Extract tool commands
693
+ const commands = await this.extractToolCommands(content);
694
+
695
+ if (commands.length === 0) {
696
+ return [];
697
+ }
698
+
699
+ // Get agent to include its directoryAccess configuration
700
+ const agent = await this.agentPool.getAgent(agentId);
701
+
702
+ // Execute tools with agent context including sessionId and directoryAccess
703
+ const toolContext = {
704
+ ...context,
705
+ agentId,
706
+ sessionId: context.sessionId, // Ensure sessionId is explicitly available for tools
707
+ directoryAccess: agent?.directoryAccess, // Include agent's directory access configuration
708
+ projectDir: agent?.directoryAccess?.workingDirectory || agent?.projectDir || context.projectDir, // Extract project directory from directoryAccess
709
+ agentPool: this.agentPool,
710
+ contextManager: this.contextManager,
711
+ aiService: this.aiService,
712
+ messageProcessor: this,
713
+ orchestrator: this.orchestrator
714
+ };
715
+
716
+ const results = await this.executeTools(commands, toolContext);
717
+
718
+ this.logger.info(`Executed ${results.length} tools for agent: ${agentId}`, {
719
+ tools: results.map(r => ({ toolId: r.toolId, status: r.status }))
720
+ });
721
+
722
+ return results;
723
+
724
+ } catch (error) {
725
+ this.logger.error(`Tool extraction/execution failed for agent: ${agentId}`, {
726
+ error: error.message
727
+ });
728
+ return [];
729
+ }
730
+ }
731
+
732
+ /**
733
+ * Stop autonomous execution for an agent
734
+ * Proxy method to AgentScheduler
735
+ * @param {string} agentId - Agent ID to stop
736
+ * @returns {Promise<Object>} Result with agent state
737
+ */
738
+ async stopAutonomousExecution(agentId) {
739
+ if (!this.scheduler) {
740
+ return {
741
+ success: false,
742
+ error: 'Scheduler not available'
743
+ };
744
+ }
745
+
746
+ return await this.scheduler.stopAgentExecution(agentId);
747
+ }
748
+
749
+ /**
750
+ * Inject tool results into conversation
751
+ * @param {string} agentId - Agent ID
752
+ * @param {Array} toolResults - Tool execution results
753
+ * @returns {Promise<void>}
754
+ */
755
+ async injectToolResultsIntoConversation(agentId, toolResults) {
756
+ const agent = await this.agentPool.getAgent(agentId);
757
+ if (!agent) return;
758
+
759
+ for (const result of toolResults) {
760
+ const toolMessage = {
761
+ id: `tool-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
762
+ role: 'system',
763
+ content: this.formatToolResultForAgent(result),
764
+ timestamp: new Date().toISOString(),
765
+ type: 'tool-result',
766
+ toolId: result.toolId,
767
+ status: result.status
768
+ };
769
+
770
+ // Add to conversation history
771
+ agent.conversations.full.messages.push(toolMessage);
772
+
773
+ // Also add to current model conversation if exists
774
+ if (agent.currentModel && agent.conversations[agent.currentModel]) {
775
+ agent.conversations[agent.currentModel].messages.push(toolMessage);
776
+ }
777
+ }
778
+
779
+ // Update last activity
780
+ agent.conversations.full.lastUpdated = new Date().toISOString();
781
+ if (agent.currentModel && agent.conversations[agent.currentModel]) {
782
+ agent.conversations[agent.currentModel].lastUpdated = new Date().toISOString();
783
+ }
784
+
785
+ await this.agentPool.persistAgentState(agentId);
786
+ }
787
+
788
+ /**
789
+ * Format tool result for agent consumption
790
+ * @param {Object} result - Tool execution result
791
+ * @returns {string} Formatted result
792
+ */
793
+ formatToolResultForAgent(result) {
794
+ if (result.status === 'completed') {
795
+ if (typeof result.result === 'object') {
796
+ return `Tool ${result.toolId} completed successfully:\n${JSON.stringify(result.result, null, 2)}`;
797
+ }
798
+ return `Tool ${result.toolId} completed successfully:\n${result.result}`;
799
+ } else if (result.status === 'failed') {
800
+ return `Tool ${result.toolId} failed: ${result.error || 'Unknown error'}`;
801
+ } else if (result.status === 'async-pending') {
802
+ return `Tool ${result.toolId} is running asynchronously (Operation ID: ${result.operationId})`;
803
+ }
804
+ return `Tool ${result.toolId} status: ${result.status}`;
805
+ }
806
+ }
807
+
808
+ export default MessageProcessor;