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,630 @@
1
+ /**
2
+ * Message State Management Hook
3
+ * React hook for managing chat messages - sending, receiving, history, and pagination
4
+ */
5
+
6
+ import { useState, useEffect, useCallback, useRef, useMemo } from 'react';
7
+ import { debugLog } from '../utils/debugLogger.js';
8
+ import {
9
+ MESSAGE_CONFIG,
10
+ PAGINATION,
11
+ MESSAGE_ROLE,
12
+ WS_MESSAGE_TYPE,
13
+ } from '../config/constants.js';
14
+
15
+ // Funny thinking phrases for loading animation
16
+ const THINKING_PHRASES = [
17
+ 'Pondering deeply...',
18
+ 'Consulting the oracle...',
19
+ 'Summoning wisdom...',
20
+ 'Brewing thoughts...',
21
+ 'Channeling brilliance...',
22
+ 'Contemplating existence...',
23
+ 'Computing the answer to life...',
24
+ 'Thinking really hard...',
25
+ 'Engaging neural networks...',
26
+ 'Processing cosmic data...',
27
+ 'Calibrating response generators...',
28
+ 'Warming up the brain cells...',
29
+ ];
30
+
31
+ /**
32
+ * Message state management hook
33
+ * Manages message list, sending, receiving, history, and pagination
34
+ */
35
+ export function useMessages(sessionManager, messageRouter, currentAgentId) {
36
+ // Message state
37
+ const [messages, setMessages] = useState([]);
38
+ const [loading, setLoading] = useState(false);
39
+ const [sending, setSending] = useState(false);
40
+ const [error, setError] = useState(null);
41
+
42
+ // Pagination state
43
+ const [hasMore, setHasMore] = useState(false);
44
+ const [currentPage, setCurrentPage] = useState(0);
45
+ const [totalMessages, setTotalMessages] = useState(0);
46
+
47
+ // Message cache (per agent)
48
+ const messageCache = useRef(new Map());
49
+
50
+ // Current input text
51
+ const [inputText, setInputText] = useState('');
52
+
53
+ // Thinking animation state
54
+ const [thinkingPhraseIndex, setThinkingPhraseIndex] = useState(0);
55
+ const thinkingIntervalRef = useRef(null);
56
+
57
+ /**
58
+ * Start thinking animation
59
+ */
60
+ const startThinkingAnimation = useCallback(() => {
61
+ // Pick a random starting phrase
62
+ const randomIndex = Math.floor(Math.random() * THINKING_PHRASES.length);
63
+ setThinkingPhraseIndex(randomIndex);
64
+
65
+ // Clear any existing interval
66
+ if (thinkingIntervalRef.current) {
67
+ clearInterval(thinkingIntervalRef.current);
68
+ }
69
+
70
+ // Cycle through phrases every 2 seconds
71
+ thinkingIntervalRef.current = setInterval(() => {
72
+ setThinkingPhraseIndex(prev => (prev + 1) % THINKING_PHRASES.length);
73
+ }, 2000);
74
+ }, []);
75
+
76
+ /**
77
+ * Stop thinking animation
78
+ */
79
+ const stopThinkingAnimation = useCallback(() => {
80
+ if (thinkingIntervalRef.current) {
81
+ clearInterval(thinkingIntervalRef.current);
82
+ thinkingIntervalRef.current = null;
83
+ }
84
+ }, []);
85
+
86
+ /**
87
+ * Get messages for current agent from cache
88
+ */
89
+ const getCachedMessages = useCallback(() => {
90
+ if (!currentAgentId) return [];
91
+ return messageCache.current.get(currentAgentId) || [];
92
+ }, [currentAgentId]);
93
+
94
+ /**
95
+ * Update cache for current agent
96
+ */
97
+ const updateCache = useCallback((newMessages) => {
98
+ if (!currentAgentId) return;
99
+ messageCache.current.set(currentAgentId, newMessages);
100
+ }, [currentAgentId]);
101
+
102
+ /**
103
+ * Fetch message history for current agent
104
+ */
105
+ const fetchMessages = useCallback(async (options = {}) => {
106
+ debugLog('useMessages fetchMessages', 'Called with options:', options);
107
+
108
+ if (!sessionManager?.isValid() || !currentAgentId) {
109
+ debugLog('useMessages fetchMessages', 'FAILED: Invalid session or no agent');
110
+ return { success: false, error: 'Invalid session or no agent selected' };
111
+ }
112
+
113
+ const {
114
+ page = 0,
115
+ limit = PAGINATION.PAGE_SIZE,
116
+ append = false,
117
+ } = options;
118
+
119
+ debugLog('useMessages fetchMessages', `Starting fetch - page: ${page}, limit: ${limit}, append: ${append}`);
120
+ setLoading(true);
121
+ setError(null);
122
+
123
+ try {
124
+ debugLog('useMessages fetchMessages', 'Making API request to orchestrator...');
125
+
126
+ // Request messages via orchestrator
127
+ const response = await sessionManager.makeRequest('POST', '/api/orchestrator', {
128
+ action: 'get_agent_conversations',
129
+ payload: {
130
+ agentId: currentAgentId,
131
+ offset: page * limit,
132
+ limit,
133
+ },
134
+ sessionId: sessionManager.getSessionId(),
135
+ });
136
+
137
+ debugLog('useMessages fetchMessages', 'API response received:', {
138
+ success: response.success,
139
+ hasData: !!response.data,
140
+ hasConversations: !!(response.data?.conversations || response.conversations),
141
+ error: response.error
142
+ });
143
+
144
+ if (response.success) {
145
+ // Extract messages from conversations structure (can be in response.data or response directly)
146
+ const responseData = response.data || response;
147
+ const conversations = responseData.conversations || {};
148
+ const fullConversation = conversations.full || {};
149
+ const allMessages = fullConversation.messages || [];
150
+
151
+ debugLog('useMessages fetchMessages', `Extracted ${allMessages.length} messages from response`);
152
+
153
+ // Apply pagination manually since orchestrator returns full conversation
154
+ const startIndex = page * limit;
155
+ const endIndex = startIndex + limit;
156
+ const newMessages = allMessages.slice(startIndex, endIndex);
157
+
158
+ debugLog('useMessages fetchMessages', `After pagination: showing ${newMessages.length} messages (${startIndex} to ${endIndex})`);
159
+
160
+ if (append) {
161
+ // Append to existing messages (pagination) - use functional setState
162
+ setMessages(prev => {
163
+ const combined = [...prev, ...newMessages];
164
+ updateCache(combined);
165
+ debugLog('useMessages fetchMessages', `Appended messages, total: ${combined.length}`);
166
+ return combined;
167
+ });
168
+ } else {
169
+ // Replace messages (initial load)
170
+ setMessages(newMessages);
171
+ updateCache(newMessages);
172
+ debugLog('useMessages fetchMessages', `Replaced messages, total: ${newMessages.length}`);
173
+ }
174
+
175
+ setTotalMessages(allMessages.length);
176
+ setHasMore(endIndex < allMessages.length);
177
+ setCurrentPage(page);
178
+
179
+ debugLog('useMessages fetchMessages', 'Fetch complete - SUCCESS');
180
+ return { success: true, messages: newMessages };
181
+ }
182
+
183
+ const errorMsg = response.error || 'Failed to fetch messages';
184
+ debugLog('useMessages fetchMessages', 'Fetch FAILED:', errorMsg);
185
+ throw new Error(errorMsg);
186
+ } catch (err) {
187
+ debugLog('useMessages fetchMessages', 'Exception caught:', err.message);
188
+ debugLog('useMessages fetchMessages', 'Full error:', err.stack);
189
+ setError(err.message);
190
+ return { success: false, error: err.message };
191
+ } finally {
192
+ setLoading(false);
193
+ debugLog('useMessages fetchMessages', 'Fetch complete (finally block)');
194
+ }
195
+ }, [sessionManager, currentAgentId, updateCache]);
196
+
197
+ /**
198
+ * Send a message to the current agent
199
+ */
200
+ const sendMessage = useCallback(async (content, options = {}) => {
201
+ // DEBUG: Log received parameters
202
+ debugLog('useMessages sendMessage', ' Called with content:', JSON.stringify(content));
203
+ debugLog('useMessages sendMessage', ' content type:', typeof content);
204
+ debugLog('useMessages sendMessage', ' options:', JSON.stringify(options));
205
+
206
+ if (!sessionManager?.isValid() || !currentAgentId) {
207
+ debugLog('useMessages sendMessage', ' VALIDATION FAILED: Invalid session or no agent');
208
+ throw new Error('Invalid session or no agent selected');
209
+ }
210
+
211
+ if (!content || content.trim().length === 0) {
212
+ debugLog('useMessages sendMessage', ' VALIDATION FAILED: Empty content');
213
+ debugLog('useMessages sendMessage', ' !content:', !content);
214
+ debugLog('useMessages sendMessage', ' trim length:', typeof content === 'string' ? content.trim().length : 'N/A');
215
+ throw new Error('Message content cannot be empty');
216
+ }
217
+
218
+ if (content.length > MESSAGE_CONFIG.MAX_MESSAGE_LENGTH) {
219
+ debugLog('useMessages sendMessage', ' VALIDATION FAILED: Content too long');
220
+ throw new Error(`Message too long (max ${MESSAGE_CONFIG.MAX_MESSAGE_LENGTH} characters)`);
221
+ }
222
+
223
+ debugLog('useMessages sendMessage', ' All validations PASSED');
224
+
225
+ setSending(true);
226
+ setError(null);
227
+
228
+ try {
229
+ const {
230
+ role = MESSAGE_ROLE.USER,
231
+ attachments = [],
232
+ } = options;
233
+
234
+ debugLog('useMessages sendMessage', ' Prepared payload - agentId:', currentAgentId, 'content:', JSON.stringify(content), 'role:', role);
235
+
236
+ // Send message via orchestrator
237
+ const response = await sessionManager.makeRequest('POST', '/api/orchestrator', {
238
+ action: 'send_message',
239
+ payload: {
240
+ agentId: currentAgentId,
241
+ message: content, // Backend expects 'message' not 'content'
242
+ role,
243
+ attachments,
244
+ },
245
+ sessionId: sessionManager.getSessionId(),
246
+ });
247
+
248
+ debugLog('useMessages sendMessage', ' API response:', response.success ? 'SUCCESS' : 'FAILED');
249
+
250
+ if (response.success) {
251
+ // Clear input
252
+ setInputText('');
253
+
254
+ // OPTIMISTIC UPDATE: Add user message to UI immediately
255
+ // Backend doesn't broadcast user messages via WebSocket, only assistant responses
256
+ const userMessage = {
257
+ id: `user-message-${Date.now()}`,
258
+ agentId: currentAgentId,
259
+ role,
260
+ content,
261
+ timestamp: new Date().toISOString(),
262
+ };
263
+
264
+ debugLog('useMessages sendMessage', ' Adding user message optimistically:', JSON.stringify(userMessage));
265
+ addMessage(userMessage);
266
+
267
+ // Add thinking message
268
+ const thinkingMessage = {
269
+ id: 'thinking-placeholder',
270
+ agentId: currentAgentId,
271
+ role: MESSAGE_ROLE.ASSISTANT,
272
+ content: THINKING_PHRASES[thinkingPhraseIndex],
273
+ timestamp: new Date().toISOString(),
274
+ isThinking: true, // Special flag to identify this as a thinking message
275
+ };
276
+
277
+ addMessage(thinkingMessage);
278
+ startThinkingAnimation();
279
+
280
+ return { success: true };
281
+ }
282
+
283
+ throw new Error(response.error || 'Failed to send message');
284
+ } catch (err) {
285
+ setError(err.message);
286
+ throw err;
287
+ } finally {
288
+ setSending(false);
289
+ }
290
+ }, [sessionManager, currentAgentId]);
291
+
292
+ /**
293
+ * Add a message to the list (from WebSocket)
294
+ */
295
+ const addMessage = useCallback((message) => {
296
+ debugLog('useMessages addMessage', 'Called with message:', JSON.stringify(message));
297
+ debugLog('useMessages addMessage', 'currentAgentId:', currentAgentId);
298
+ debugLog('useMessages addMessage', 'message.agentId:', message.agentId);
299
+
300
+ // Only add if for current agent
301
+ if (message.agentId !== currentAgentId) {
302
+ debugLog('useMessages addMessage', 'BLOCKED: agentId mismatch');
303
+ return;
304
+ }
305
+
306
+ debugLog('useMessages addMessage', 'Adding message to state');
307
+
308
+ setMessages(prev => {
309
+ // If this is a real assistant message, remove the thinking placeholder
310
+ if (message.role === MESSAGE_ROLE.ASSISTANT && !message.isThinking) {
311
+ stopThinkingAnimation();
312
+ // Remove thinking placeholder
313
+ const withoutThinking = prev.filter(m => m.id !== 'thinking-placeholder');
314
+
315
+ // Check for duplicates in the filtered array
316
+ if (withoutThinking.find(m => m.id === message.id)) {
317
+ debugLog('useMessages addMessage', 'BLOCKED: Duplicate message ID');
318
+ return prev;
319
+ }
320
+
321
+ const updated = [...withoutThinking, message];
322
+ const trimmed = updated.slice(-MESSAGE_CONFIG.MAX_MESSAGES_DISPLAY);
323
+
324
+ debugLog('useMessages addMessage', 'Real AI response added, thinking removed, new count:', trimmed.length);
325
+ updateCache(trimmed);
326
+ return trimmed;
327
+ }
328
+
329
+ // Check for duplicates
330
+ if (prev.find(m => m.id === message.id)) {
331
+ debugLog('useMessages addMessage', 'BLOCKED: Duplicate message ID');
332
+ return prev;
333
+ }
334
+
335
+ const updated = [...prev, message];
336
+
337
+ // Enforce max messages limit
338
+ const trimmed = updated.slice(-MESSAGE_CONFIG.MAX_MESSAGES_DISPLAY);
339
+
340
+ debugLog('useMessages addMessage', 'Message added, new count:', trimmed.length);
341
+ updateCache(trimmed);
342
+ return trimmed;
343
+ });
344
+
345
+ setTotalMessages(prev => prev + 1);
346
+ }, [currentAgentId, updateCache, stopThinkingAnimation]);
347
+
348
+ /**
349
+ * Update a message in the list
350
+ */
351
+ const updateMessage = useCallback((messageId, updates) => {
352
+ setMessages(prev => prev.map(msg =>
353
+ msg.id === messageId ? { ...msg, ...updates } : msg
354
+ ));
355
+ }, []);
356
+
357
+ /**
358
+ * Remove a message from the list
359
+ */
360
+ const removeMessage = useCallback((messageId) => {
361
+ setMessages(prev => prev.filter(msg => msg.id !== messageId));
362
+ setTotalMessages(prev => Math.max(0, prev - 1));
363
+ }, []);
364
+
365
+ /**
366
+ * Clear all messages
367
+ */
368
+ const clearMessages = useCallback(() => {
369
+ setMessages([]);
370
+ setTotalMessages(0);
371
+ setHasMore(false);
372
+ setCurrentPage(0);
373
+ if (currentAgentId) {
374
+ updateCache([]);
375
+ }
376
+ }, [currentAgentId, updateCache]);
377
+
378
+ /**
379
+ * Load more messages (pagination)
380
+ */
381
+ const loadMore = useCallback(async () => {
382
+ if (!hasMore || loading) {
383
+ return;
384
+ }
385
+
386
+ return fetchMessages({
387
+ page: currentPage + 1,
388
+ append: true,
389
+ });
390
+ }, [hasMore, loading, currentPage, fetchMessages]);
391
+
392
+ /**
393
+ * Refresh message list
394
+ */
395
+ const refresh = useCallback(async () => {
396
+ return fetchMessages({ page: 0, append: false });
397
+ }, [fetchMessages]);
398
+
399
+ /**
400
+ * Get messages by role
401
+ */
402
+ const getMessagesByRole = useCallback((role) => {
403
+ return messages.filter(msg => msg.role === role);
404
+ }, [messages]);
405
+
406
+ /**
407
+ * Get user messages
408
+ */
409
+ const getUserMessages = useCallback(() => {
410
+ return getMessagesByRole(MESSAGE_ROLE.USER);
411
+ }, [getMessagesByRole]);
412
+
413
+ /**
414
+ * Get assistant messages
415
+ */
416
+ const getAssistantMessages = useCallback(() => {
417
+ return getMessagesByRole(MESSAGE_ROLE.ASSISTANT);
418
+ }, [getMessagesByRole]);
419
+
420
+ /**
421
+ * Get latest message
422
+ */
423
+ const getLatestMessage = useCallback(() => {
424
+ return messages[messages.length - 1] || null;
425
+ }, [messages]);
426
+
427
+ /**
428
+ * Search messages by content
429
+ */
430
+ const searchMessages = useCallback((query) => {
431
+ if (!query || query.trim().length === 0) {
432
+ return messages;
433
+ }
434
+
435
+ const lowerQuery = query.toLowerCase();
436
+ return messages.filter(msg =>
437
+ msg.content?.toLowerCase().includes(lowerQuery)
438
+ );
439
+ }, [messages]);
440
+
441
+ /**
442
+ * Clear error
443
+ */
444
+ const clearError = useCallback(() => {
445
+ setError(null);
446
+ }, []);
447
+
448
+ // Set up WebSocket message listeners
449
+ useEffect(() => {
450
+ if (!messageRouter) return;
451
+
452
+ debugLog('useMessages WebSocket', 'Setting up listeners for agent:', currentAgentId);
453
+
454
+ // New message added
455
+ const handleMessageAdded = (data) => {
456
+ debugLog('useMessages WebSocket', 'Received agent:message_added event:', JSON.stringify(data));
457
+ debugLog('useMessages WebSocket', 'data.agentId:', data.agentId, 'currentAgentId:', currentAgentId);
458
+
459
+ if (data.agentId === currentAgentId) {
460
+ debugLog('useMessages WebSocket', 'Agent ID matches, calling addMessage');
461
+ addMessage(data.message);
462
+ } else {
463
+ debugLog('useMessages WebSocket', 'Agent ID mismatch, ignoring message');
464
+ }
465
+ };
466
+
467
+ // Message updated
468
+ const handleMessageUpdated = (data) => {
469
+ debugLog('useMessages WebSocket', 'Received message:updated event:', JSON.stringify(data));
470
+
471
+ if (data.agentId === currentAgentId) {
472
+ updateMessage(data.messageId, data.updates);
473
+ }
474
+ };
475
+
476
+ messageRouter.on('agent:message_added', handleMessageAdded);
477
+ messageRouter.on('message:updated', handleMessageUpdated);
478
+
479
+ debugLog('useMessages WebSocket', 'Listeners registered');
480
+
481
+ return () => {
482
+ debugLog('useMessages WebSocket', 'Cleaning up listeners');
483
+ messageRouter.off('agent:message_added', handleMessageAdded);
484
+ messageRouter.off('message:updated', handleMessageUpdated);
485
+ };
486
+ }, [messageRouter, currentAgentId, addMessage, updateMessage]);
487
+
488
+ // Update thinking message content when phrase changes
489
+ useEffect(() => {
490
+ setMessages(prev => {
491
+ const thinkingMsg = prev.find(m => m.id === 'thinking-placeholder');
492
+ if (!thinkingMsg) return prev;
493
+
494
+ return prev.map(m =>
495
+ m.id === 'thinking-placeholder'
496
+ ? { ...m, content: THINKING_PHRASES[thinkingPhraseIndex] }
497
+ : m
498
+ );
499
+ });
500
+ }, [thinkingPhraseIndex]);
501
+
502
+ // Cleanup thinking animation on unmount
503
+ useEffect(() => {
504
+ return () => {
505
+ stopThinkingAnimation();
506
+ };
507
+ }, [stopThinkingAnimation]);
508
+
509
+ // Load messages when agent changes
510
+ useEffect(() => {
511
+ debugLog('useMessages', `Agent changed: currentAgentId=${currentAgentId}`);
512
+
513
+ if (!currentAgentId) {
514
+ debugLog('useMessages', 'No agent selected, clearing messages');
515
+ setMessages([]);
516
+ return;
517
+ }
518
+
519
+ // Check cache first
520
+ const cached = getCachedMessages();
521
+ debugLog('useMessages', `Cache check: found ${cached.length} cached messages`);
522
+
523
+ if (cached.length > 0) {
524
+ debugLog('useMessages', `Loading ${cached.length} messages from cache`);
525
+ setMessages(cached);
526
+ setTotalMessages(cached.length);
527
+ } else {
528
+ // Load conversation history from server
529
+ debugLog('useMessages', 'No cache, fetching messages from server...');
530
+ fetchMessages({ page: 0 });
531
+ }
532
+ }, [currentAgentId, getCachedMessages, fetchMessages]);
533
+
534
+ // Return hook interface
535
+ return useMemo(() => ({
536
+ // State
537
+ messages,
538
+ loading,
539
+ sending,
540
+ error,
541
+
542
+ // Pagination
543
+ hasMore,
544
+ currentPage,
545
+ totalMessages,
546
+
547
+ // Input
548
+ inputText,
549
+ setInputText,
550
+
551
+ // Operations
552
+ sendMessage,
553
+ fetchMessages,
554
+ loadMore,
555
+ refresh,
556
+
557
+ // Message management
558
+ addMessage,
559
+ updateMessage,
560
+ removeMessage,
561
+ clearMessages,
562
+
563
+ // Queries
564
+ getMessagesByRole,
565
+ getUserMessages,
566
+ getAssistantMessages,
567
+ getLatestMessage,
568
+ searchMessages,
569
+
570
+ // Utilities
571
+ clearError,
572
+ }), [
573
+ messages,
574
+ loading,
575
+ sending,
576
+ error,
577
+ hasMore,
578
+ currentPage,
579
+ totalMessages,
580
+ inputText,
581
+ setInputText,
582
+ sendMessage,
583
+ fetchMessages,
584
+ loadMore,
585
+ refresh,
586
+ addMessage,
587
+ updateMessage,
588
+ removeMessage,
589
+ clearMessages,
590
+ getMessagesByRole,
591
+ getUserMessages,
592
+ getAssistantMessages,
593
+ getLatestMessage,
594
+ searchMessages,
595
+ clearError,
596
+ ]);
597
+ }
598
+
599
+ /**
600
+ * Lightweight hook for message count only
601
+ */
602
+ export function useMessageCount(messages) {
603
+ const [userCount, setUserCount] = useState(0);
604
+ const [assistantCount, setAssistantCount] = useState(0);
605
+ const [totalCount, setTotalCount] = useState(0);
606
+
607
+ useEffect(() => {
608
+ if (!messages) {
609
+ setUserCount(0);
610
+ setAssistantCount(0);
611
+ setTotalCount(0);
612
+ return;
613
+ }
614
+
615
+ const user = messages.filter(m => m.role === MESSAGE_ROLE.USER).length;
616
+ const assistant = messages.filter(m => m.role === MESSAGE_ROLE.ASSISTANT).length;
617
+
618
+ setUserCount(user);
619
+ setAssistantCount(assistant);
620
+ setTotalCount(messages.length);
621
+ }, [messages]);
622
+
623
+ return useMemo(() => ({
624
+ userCount,
625
+ assistantCount,
626
+ totalCount,
627
+ }), [userCount, assistantCount, totalCount]);
628
+ }
629
+
630
+ export default useMessages;