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,332 @@
1
+ /**
2
+ * Terminal UI Infrastructure - Smoke Tests
3
+ * Verifies that all Phase 1 modules can be imported and instantiated
4
+ */
5
+
6
+ import { describe, test, expect } from '@jest/globals';
7
+ import { fileURLToPath } from 'url';
8
+ import { dirname, join } from 'path';
9
+
10
+ const __filename = fileURLToPath(import.meta.url);
11
+ const __dirname = dirname(__filename);
12
+
13
+ describe('Terminal UI Infrastructure - Imports', () => {
14
+ test('constants module exports all required constants', async () => {
15
+ const constants = await import('../../config/constants.js');
16
+
17
+ // Verify major constant groups exist
18
+ expect(constants.UI_DIMENSIONS).toBeDefined();
19
+ expect(constants.MESSAGE_CONFIG).toBeDefined();
20
+ expect(constants.PAGINATION).toBeDefined();
21
+ expect(constants.TIMING).toBeDefined();
22
+ expect(constants.NETWORK).toBeDefined();
23
+ expect(constants.CONNECTION_STATE).toBeDefined();
24
+ expect(constants.AGENT_MODE).toBeDefined();
25
+ expect(constants.WS_MESSAGE_TYPE).toBeDefined();
26
+ expect(constants.API_ENDPOINTS).toBeDefined();
27
+ expect(constants.COMMANDS).toBeDefined();
28
+
29
+ // Verify some key values
30
+ expect(constants.NETWORK.DEFAULT_HOST).toBe('localhost');
31
+ expect(constants.NETWORK.DEFAULT_PORT).toBe(8080);
32
+ expect(constants.CONNECTION_STATE.DISCONNECTED).toBe('disconnected');
33
+ expect(constants.CONNECTION_STATE.CONNECTED).toBe('connected');
34
+ });
35
+
36
+ test('WebSocketManager class can be imported', async () => {
37
+ const { WebSocketManager } = await import('../../api/websocket.js');
38
+
39
+ expect(WebSocketManager).toBeDefined();
40
+ expect(typeof WebSocketManager).toBe('function');
41
+
42
+ // Verify it's a class
43
+ const instance = new WebSocketManager('localhost', 8080);
44
+ expect(instance).toBeDefined();
45
+ expect(instance.host).toBe('localhost');
46
+ expect(instance.port).toBe(8080);
47
+ expect(instance.url).toBe('ws://localhost:8080');
48
+ });
49
+
50
+ test('SessionManager class can be imported', async () => {
51
+ const { SessionManager } = await import('../../api/session.js');
52
+
53
+ expect(SessionManager).toBeDefined();
54
+ expect(typeof SessionManager).toBe('function');
55
+
56
+ // Verify it's a class
57
+ const instance = new SessionManager('localhost', 8080);
58
+ expect(instance).toBeDefined();
59
+ expect(instance.host).toBe('localhost');
60
+ expect(instance.port).toBe(8080);
61
+ expect(instance.baseUrl).toBe('http://localhost:8080');
62
+ });
63
+
64
+ test('MessageRouter class can be imported', async () => {
65
+ const { MessageRouter } = await import('../../api/messageRouter.js');
66
+ const { WebSocketManager } = await import('../../api/websocket.js');
67
+
68
+ expect(MessageRouter).toBeDefined();
69
+ expect(typeof MessageRouter).toBe('function');
70
+
71
+ // Verify it's a class (requires WebSocketManager instance)
72
+ const wsManager = new WebSocketManager('localhost', 8080);
73
+ const instance = new MessageRouter(wsManager);
74
+ expect(instance).toBeDefined();
75
+ expect(instance.ws).toBe(wsManager);
76
+ });
77
+
78
+ test('MessageRouter middleware helpers can be imported', async () => {
79
+ const {
80
+ loggingMiddleware,
81
+ filterMiddleware,
82
+ transformMiddleware,
83
+ timestampMiddleware,
84
+ validationMiddleware,
85
+ } = await import('../../api/messageRouter.js');
86
+
87
+ expect(typeof loggingMiddleware).toBe('function');
88
+ expect(typeof filterMiddleware).toBe('function');
89
+ expect(typeof transformMiddleware).toBe('function');
90
+ expect(typeof timestampMiddleware).toBe('function');
91
+ expect(typeof validationMiddleware).toBe('function');
92
+ });
93
+
94
+ test('useConnection hook can be imported', async () => {
95
+ const { useConnection, useConnectionStatus } = await import('../../state/useConnection.js');
96
+
97
+ expect(useConnection).toBeDefined();
98
+ expect(typeof useConnection).toBe('function');
99
+ expect(useConnectionStatus).toBeDefined();
100
+ expect(typeof useConnectionStatus).toBe('function');
101
+ });
102
+ });
103
+
104
+ describe('Terminal UI Infrastructure - Basic Functionality', () => {
105
+ test('WebSocketManager initializes with correct state', async () => {
106
+ const { WebSocketManager } = await import('../../api/websocket.js');
107
+ const { CONNECTION_STATE } = await import('../../config/constants.js');
108
+
109
+ const wsManager = new WebSocketManager('test-host', 9090);
110
+
111
+ expect(wsManager.state).toBe(CONNECTION_STATE.DISCONNECTED);
112
+ expect(wsManager.sessionId).toBe(null);
113
+ expect(wsManager.messageQueue).toEqual([]);
114
+ expect(wsManager.reconnectAttempts).toBe(0);
115
+ expect(wsManager.shouldReconnect).toBe(true);
116
+ });
117
+
118
+ test('SessionManager initializes with correct state', async () => {
119
+ const { SessionManager } = await import('../../api/session.js');
120
+
121
+ const sessionManager = new SessionManager('test-host', 9090);
122
+
123
+ expect(sessionManager.sessionId).toBe(null);
124
+ expect(sessionManager.projectDir).toBe(null);
125
+ expect(sessionManager.loxiaApiKey).toBe(null);
126
+ expect(sessionManager.vendorKeys).toEqual({});
127
+ expect(sessionManager.isValid()).toBe(false);
128
+ });
129
+
130
+ test('MessageRouter initializes with default handlers', async () => {
131
+ const { MessageRouter } = await import('../../api/messageRouter.js');
132
+ const { WebSocketManager } = await import('../../api/websocket.js');
133
+ const { WS_MESSAGE_TYPE } = await import('../../config/constants.js');
134
+
135
+ const wsManager = new WebSocketManager('localhost', 8080);
136
+ const router = new MessageRouter(wsManager);
137
+
138
+ // Verify default handlers are registered
139
+ expect(router.hasHandler(WS_MESSAGE_TYPE.MESSAGE_ADDED)).toBe(true);
140
+ expect(router.hasHandler(WS_MESSAGE_TYPE.AGENT_MODE_CHANGED)).toBe(true);
141
+ expect(router.hasHandler(WS_MESSAGE_TYPE.EXECUTION_STOPPED)).toBe(true);
142
+ expect(router.hasHandler(WS_MESSAGE_TYPE.COMPACTION_EVENT)).toBe(true);
143
+ expect(router.hasHandler(WS_MESSAGE_TYPE.IMAGE_RESULT)).toBe(true);
144
+ });
145
+
146
+ test('MessageRouter middleware can be added and removed', async () => {
147
+ const { MessageRouter } = await import('../../api/messageRouter.js');
148
+ const { WebSocketManager } = await import('../../api/websocket.js');
149
+
150
+ const wsManager = new WebSocketManager('localhost', 8080);
151
+ const router = new MessageRouter(wsManager);
152
+
153
+ const testMiddleware = (msg) => msg;
154
+
155
+ expect(router.middleware.length).toBeGreaterThanOrEqual(0);
156
+
157
+ router.use(testMiddleware);
158
+ const middlewareCount = router.middleware.length;
159
+ expect(middlewareCount).toBeGreaterThan(0);
160
+
161
+ router.removeMiddleware(testMiddleware);
162
+ expect(router.middleware.length).toBe(middlewareCount - 1);
163
+ });
164
+
165
+ test('SessionManager helper methods work', async () => {
166
+ const { SessionManager } = await import('../../api/session.js');
167
+
168
+ const sessionManager = new SessionManager('localhost', 8080);
169
+
170
+ // Test getter methods
171
+ expect(sessionManager.getSessionId()).toBe(null);
172
+ expect(sessionManager.getProjectDir()).toBe(null);
173
+ expect(sessionManager.isValid()).toBe(false);
174
+
175
+ // Test session info
176
+ const info = sessionManager.getSessionInfo();
177
+ expect(info).toHaveProperty('sessionId');
178
+ expect(info).toHaveProperty('projectDir');
179
+ expect(info).toHaveProperty('hasLoxiaKey');
180
+ expect(info).toHaveProperty('vendorKeysCount');
181
+ });
182
+
183
+ test('WebSocketManager helper methods work', async () => {
184
+ const { WebSocketManager } = await import('../../api/websocket.js');
185
+ const { CONNECTION_STATE } = await import('../../config/constants.js');
186
+
187
+ const wsManager = new WebSocketManager('localhost', 8080);
188
+
189
+ // Test state methods
190
+ expect(wsManager.getState()).toBe(CONNECTION_STATE.DISCONNECTED);
191
+ expect(wsManager.isConnected()).toBe(false);
192
+ expect(wsManager.getSessionId()).toBe(null);
193
+
194
+ // Test stats
195
+ const stats = wsManager.getStats();
196
+ expect(stats).toHaveProperty('state');
197
+ expect(stats).toHaveProperty('sessionId');
198
+ expect(stats).toHaveProperty('reconnectAttempts');
199
+ expect(stats).toHaveProperty('queuedMessages');
200
+ expect(stats).toHaveProperty('pendingRequests');
201
+ });
202
+
203
+ test('MessageRouter can register and unregister handlers', async () => {
204
+ const { MessageRouter } = await import('../../api/messageRouter.js');
205
+ const { WebSocketManager } = await import('../../api/websocket.js');
206
+
207
+ const wsManager = new WebSocketManager('localhost', 8080);
208
+ const router = new MessageRouter(wsManager);
209
+
210
+ const testHandler = () => {};
211
+
212
+ expect(router.hasHandler('test-message')).toBe(false);
213
+
214
+ router.registerHandler('test-message', testHandler);
215
+ expect(router.hasHandler('test-message')).toBe(true);
216
+
217
+ router.unregisterHandler('test-message');
218
+ expect(router.hasHandler('test-message')).toBe(false);
219
+ });
220
+
221
+ test('MessageRouter middleware helpers create valid middleware', async () => {
222
+ const {
223
+ loggingMiddleware,
224
+ timestampMiddleware,
225
+ filterMiddleware,
226
+ } = await import('../../api/messageRouter.js');
227
+
228
+ // Test logging middleware
229
+ const logMw = loggingMiddleware();
230
+ expect(typeof logMw).toBe('function');
231
+
232
+ // Test timestamp middleware
233
+ const tsMw = timestampMiddleware();
234
+ expect(typeof tsMw).toBe('function');
235
+ const testMsg = { type: 'test' };
236
+ const result = tsMw(testMsg);
237
+ expect(result).toHaveProperty('receivedAt');
238
+ expect(result.type).toBe('test');
239
+
240
+ // Test filter middleware
241
+ const filterMw = filterMiddleware(['allowed-type']);
242
+ expect(typeof filterMw).toBe('function');
243
+ expect(filterMw({ type: 'allowed-type' })).toBeTruthy();
244
+ expect(filterMw({ type: 'blocked-type' })).toBe(null);
245
+ });
246
+
247
+ test('Constants have no magic numbers', async () => {
248
+ const constants = await import('../../config/constants.js');
249
+
250
+ // Verify all timing values are defined
251
+ expect(typeof constants.TIMING.WEBSOCKET_RECONNECT_DELAY).toBe('number');
252
+ expect(typeof constants.TIMING.WEBSOCKET_PING_INTERVAL).toBe('number');
253
+
254
+ // Verify network defaults
255
+ expect(typeof constants.NETWORK.DEFAULT_PORT).toBe('number');
256
+ expect(typeof constants.NETWORK.MAX_RETRIES).toBe('number');
257
+ expect(typeof constants.NETWORK.HTTP_TIMEOUT).toBe('number');
258
+
259
+ // Verify UI dimensions
260
+ expect(typeof constants.UI_DIMENSIONS.MESSAGE_LIST_HEIGHT).toBe('number');
261
+ expect(typeof constants.UI_DIMENSIONS.SIDEBAR_WIDTH).toBe('number');
262
+ });
263
+ });
264
+
265
+ describe('Terminal UI Infrastructure - Error Handling', () => {
266
+ test('MessageRouter throws on invalid handler', async () => {
267
+ const { MessageRouter } = await import('../../api/messageRouter.js');
268
+ const { WebSocketManager } = await import('../../api/websocket.js');
269
+
270
+ const wsManager = new WebSocketManager('localhost', 8080);
271
+ const router = new MessageRouter(wsManager);
272
+
273
+ expect(() => {
274
+ router.registerHandler('test', 'not-a-function');
275
+ }).toThrow('Handler must be a function');
276
+ });
277
+
278
+ test('MessageRouter throws on invalid middleware', async () => {
279
+ const { MessageRouter } = await import('../../api/messageRouter.js');
280
+ const { WebSocketManager } = await import('../../api/websocket.js');
281
+
282
+ const wsManager = new WebSocketManager('localhost', 8080);
283
+ const router = new MessageRouter(wsManager);
284
+
285
+ expect(() => {
286
+ router.use('not-a-function');
287
+ }).toThrow('Middleware must be a function');
288
+ });
289
+
290
+ test('SessionManager clear() resets all state', async () => {
291
+ const { SessionManager } = await import('../../api/session.js');
292
+
293
+ const sessionManager = new SessionManager('localhost', 8080);
294
+
295
+ // Manually set some state
296
+ sessionManager.sessionId = 'test-123';
297
+ sessionManager.projectDir = '/test/dir';
298
+ sessionManager.loxiaApiKey = 'test-key';
299
+ sessionManager.vendorKeys = { openai: 'key' };
300
+
301
+ expect(sessionManager.isValid()).toBe(true);
302
+
303
+ // Clear
304
+ sessionManager.clear();
305
+
306
+ // Verify all cleared
307
+ expect(sessionManager.sessionId).toBe(null);
308
+ expect(sessionManager.projectDir).toBe(null);
309
+ expect(sessionManager.loxiaApiKey).toBe(null);
310
+ expect(sessionManager.vendorKeys).toEqual({});
311
+ expect(sessionManager.isValid()).toBe(false);
312
+ });
313
+
314
+ test('WebSocketManager generates unique request IDs', async () => {
315
+ const { WebSocketManager } = await import('../../api/websocket.js');
316
+
317
+ const wsManager = new WebSocketManager('localhost', 8080);
318
+
319
+ const id1 = wsManager.generateRequestId();
320
+ const id2 = wsManager.generateRequestId();
321
+ const id3 = wsManager.generateRequestId();
322
+
323
+ expect(id1).not.toBe(id2);
324
+ expect(id2).not.toBe(id3);
325
+ expect(id1).not.toBe(id3);
326
+
327
+ // Verify format
328
+ expect(id1).toMatch(/^req-\d+-\d+$/);
329
+ expect(id2).toMatch(/^req-\d+-\d+$/);
330
+ expect(id3).toMatch(/^req-\d+-\d+$/);
331
+ });
332
+ });
@@ -0,0 +1,256 @@
1
+ /**
2
+ * Message Management - Smoke Tests
3
+ * Verifies that message management modules can be imported and basic functionality works
4
+ */
5
+
6
+ import { describe, test, expect } from '@jest/globals';
7
+
8
+ describe('Message Management - Imports', () => {
9
+ test('useMessages hook can be imported', async () => {
10
+ const { useMessages } = await import('../../state/useMessages.js');
11
+
12
+ expect(useMessages).toBeDefined();
13
+ expect(typeof useMessages).toBe('function');
14
+ });
15
+
16
+ test('useMessages is default export', async () => {
17
+ const module = await import('../../state/useMessages.js');
18
+
19
+ expect(module.default).toBeDefined();
20
+ expect(typeof module.default).toBe('function');
21
+ expect(module.default).toBe(module.useMessages);
22
+ });
23
+
24
+ test('useMessageCount helper hook can be imported', async () => {
25
+ const { useMessageCount } = await import('../../state/useMessages.js');
26
+
27
+ expect(useMessageCount).toBeDefined();
28
+ expect(typeof useMessageCount).toBe('function');
29
+ });
30
+ });
31
+
32
+ describe('Message Management - Constants', () => {
33
+ test('MESSAGE_ROLE constants are defined', async () => {
34
+ const { MESSAGE_ROLE } = await import('../../config/constants.js');
35
+
36
+ expect(MESSAGE_ROLE).toBeDefined();
37
+ expect(MESSAGE_ROLE.USER).toBe('user');
38
+ expect(MESSAGE_ROLE.ASSISTANT).toBe('assistant');
39
+ expect(MESSAGE_ROLE.SYSTEM).toBe('system');
40
+ });
41
+
42
+ test('MESSAGE_TYPE constants are defined', async () => {
43
+ const { MESSAGE_TYPE } = await import('../../config/constants.js');
44
+
45
+ expect(MESSAGE_TYPE).toBeDefined();
46
+ expect(MESSAGE_TYPE.USER_MESSAGE).toBe('user-message');
47
+ expect(MESSAGE_TYPE.AGENT_RESPONSE).toBe('agent-response');
48
+ expect(MESSAGE_TYPE.SYSTEM_NOTIFICATION).toBe('system-notification');
49
+ });
50
+
51
+ test('MESSAGE_CONFIG constants are defined', async () => {
52
+ const { MESSAGE_CONFIG } = await import('../../config/constants.js');
53
+
54
+ expect(MESSAGE_CONFIG).toBeDefined();
55
+ expect(MESSAGE_CONFIG.MAX_MESSAGE_LENGTH).toBeDefined();
56
+ expect(MESSAGE_CONFIG.MAX_MESSAGES_DISPLAY).toBeDefined();
57
+ expect(typeof MESSAGE_CONFIG.MAX_MESSAGE_LENGTH).toBe('number');
58
+ expect(typeof MESSAGE_CONFIG.MAX_MESSAGES_DISPLAY).toBe('number');
59
+ });
60
+
61
+ test('PAGINATION constants are defined', async () => {
62
+ const { PAGINATION } = await import('../../config/constants.js');
63
+
64
+ expect(PAGINATION).toBeDefined();
65
+ expect(PAGINATION.PAGE_SIZE).toBeDefined();
66
+ expect(PAGINATION.MAX_PAGE_SIZE).toBeDefined();
67
+ expect(typeof PAGINATION.PAGE_SIZE).toBe('number');
68
+ expect(typeof PAGINATION.MAX_PAGE_SIZE).toBe('number');
69
+ });
70
+
71
+ test('WS_MESSAGE_TYPE includes message events', async () => {
72
+ const { WS_MESSAGE_TYPE } = await import('../../config/constants.js');
73
+
74
+ expect(WS_MESSAGE_TYPE).toBeDefined();
75
+ expect(WS_MESSAGE_TYPE.MESSAGE_ADDED).toBe('message_added');
76
+ expect(WS_MESSAGE_TYPE.AGENT_MODE_CHANGED).toBe('agent_mode_changed');
77
+ expect(WS_MESSAGE_TYPE.EXECUTION_STOPPED).toBe('execution_stopped');
78
+ });
79
+ });
80
+
81
+ describe('Message Management - Integration', () => {
82
+ test('useMessages hook integrates with Session and MessageRouter', async () => {
83
+ const { useMessages } = await import('../../state/useMessages.js');
84
+ const { SessionManager } = await import('../../api/session.js');
85
+ const { MessageRouter } = await import('../../api/messageRouter.js');
86
+ const { WebSocketManager } = await import('../../api/websocket.js');
87
+
88
+ // Create dependencies
89
+ const sessionManager = new SessionManager('localhost', 8080);
90
+ const wsManager = new WebSocketManager('localhost', 8080);
91
+ const messageRouter = new MessageRouter(wsManager);
92
+
93
+ // Verify all components exist
94
+ expect(sessionManager).toBeDefined();
95
+ expect(messageRouter).toBeDefined();
96
+
97
+ // useMessages expects these as parameters (including currentAgentId)
98
+ // (we can't actually call the hook outside React, but we verify the interface)
99
+ expect(typeof useMessages).toBe('function');
100
+ });
101
+
102
+ test('Full message management stack can be imported together', async () => {
103
+ const [
104
+ constantsModule,
105
+ sessionModule,
106
+ websocketModule,
107
+ routerModule,
108
+ messagesModule,
109
+ ] = await Promise.all([
110
+ import('../../config/constants.js'),
111
+ import('../../api/session.js'),
112
+ import('../../api/websocket.js'),
113
+ import('../../api/messageRouter.js'),
114
+ import('../../state/useMessages.js'),
115
+ ]);
116
+
117
+ // Verify all modules loaded
118
+ expect(constantsModule.MESSAGE_ROLE).toBeDefined();
119
+ expect(constantsModule.MESSAGE_TYPE).toBeDefined();
120
+ expect(constantsModule.MESSAGE_CONFIG).toBeDefined();
121
+ expect(sessionModule.SessionManager).toBeDefined();
122
+ expect(websocketModule.WebSocketManager).toBeDefined();
123
+ expect(routerModule.MessageRouter).toBeDefined();
124
+ expect(messagesModule.useMessages).toBeDefined();
125
+ });
126
+ });
127
+
128
+ describe('Message Management - API Endpoints Validation', () => {
129
+ test('Orchestrator endpoint can be used for message operations', async () => {
130
+ const { API_ENDPOINTS } = await import('../../config/constants.js');
131
+
132
+ expect(API_ENDPOINTS.ORCHESTRATOR).toBeDefined();
133
+ expect(API_ENDPOINTS.ORCHESTRATOR).toBe('/api/orchestrator');
134
+ });
135
+
136
+ test('Message API endpoints follow RESTful pattern', async () => {
137
+ const { API_ENDPOINTS } = await import('../../config/constants.js');
138
+
139
+ // Verify orchestrator endpoint exists (messages use this with action: 'send-message', 'get-messages')
140
+ expect(API_ENDPOINTS.ORCHESTRATOR).toMatch(/^\/api\//);
141
+ });
142
+ });
143
+
144
+ describe('Message Management - Hook Interface Verification', () => {
145
+ test('useMessages returns expected interface shape', async () => {
146
+ const { useMessages } = await import('../../state/useMessages.js');
147
+
148
+ // We can verify the function signature
149
+ expect(useMessages.length).toBe(3); // sessionManager, messageRouter, currentAgentId
150
+ });
151
+
152
+ test('useMessageCount returns expected interface shape', async () => {
153
+ const { useMessageCount } = await import('../../state/useMessages.js');
154
+
155
+ // We can verify the function signature
156
+ expect(useMessageCount.length).toBe(1); // messages parameter
157
+ });
158
+ });
159
+
160
+ describe('Message Management - Constants Validation', () => {
161
+ test('MESSAGE_CONFIG has sensible defaults', async () => {
162
+ const { MESSAGE_CONFIG } = await import('../../config/constants.js');
163
+
164
+ // Verify message length is reasonable
165
+ expect(MESSAGE_CONFIG.MAX_MESSAGE_LENGTH).toBeGreaterThan(0);
166
+ expect(MESSAGE_CONFIG.MAX_MESSAGE_LENGTH).toBeLessThanOrEqual(100000);
167
+
168
+ // Verify display limit is reasonable
169
+ expect(MESSAGE_CONFIG.MAX_MESSAGES_DISPLAY).toBeGreaterThan(0);
170
+ expect(MESSAGE_CONFIG.MAX_MESSAGES_DISPLAY).toBeLessThanOrEqual(10000);
171
+ });
172
+
173
+ test('PAGINATION has sensible defaults', async () => {
174
+ const { PAGINATION } = await import('../../config/constants.js');
175
+
176
+ // Verify page size is reasonable
177
+ expect(PAGINATION.PAGE_SIZE).toBeGreaterThan(0);
178
+ expect(PAGINATION.PAGE_SIZE).toBeLessThanOrEqual(1000);
179
+
180
+ // Verify max page size is larger than or equal to page size
181
+ expect(PAGINATION.MAX_PAGE_SIZE).toBeGreaterThanOrEqual(PAGINATION.PAGE_SIZE);
182
+ });
183
+
184
+ test('MESSAGE_ROLE values are lowercase', async () => {
185
+ const { MESSAGE_ROLE } = await import('../../config/constants.js');
186
+
187
+ expect(MESSAGE_ROLE.USER).toBe(MESSAGE_ROLE.USER.toLowerCase());
188
+ expect(MESSAGE_ROLE.ASSISTANT).toBe(MESSAGE_ROLE.ASSISTANT.toLowerCase());
189
+ expect(MESSAGE_ROLE.SYSTEM).toBe(MESSAGE_ROLE.SYSTEM.toLowerCase());
190
+ });
191
+ });
192
+
193
+ describe('Message Management - WebSocket Event Handlers', () => {
194
+ test('MessageRouter has message event handlers registered', async () => {
195
+ const { MessageRouter } = await import('../../api/messageRouter.js');
196
+ const { WebSocketManager } = await import('../../api/websocket.js');
197
+ const { WS_MESSAGE_TYPE } = await import('../../config/constants.js');
198
+
199
+ const wsManager = new WebSocketManager('localhost', 8080);
200
+ const router = new MessageRouter(wsManager);
201
+
202
+ // Verify message event handlers are registered
203
+ expect(router.hasHandler(WS_MESSAGE_TYPE.MESSAGE_ADDED)).toBe(true);
204
+ expect(router.hasHandler(WS_MESSAGE_TYPE.AGENT_MODE_CHANGED)).toBe(true);
205
+ });
206
+ });
207
+
208
+ describe('Message Management - Error Handling', () => {
209
+ test('MESSAGE_CONFIG enforces maximum message length', async () => {
210
+ const { MESSAGE_CONFIG } = await import('../../config/constants.js');
211
+
212
+ // Verify max length constant exists
213
+ expect(MESSAGE_CONFIG.MAX_MESSAGE_LENGTH).toBeDefined();
214
+ expect(typeof MESSAGE_CONFIG.MAX_MESSAGE_LENGTH).toBe('number');
215
+
216
+ // This constant should be used to validate message length before sending
217
+ const testMessage = 'a'.repeat(MESSAGE_CONFIG.MAX_MESSAGE_LENGTH + 1);
218
+ expect(testMessage.length).toBeGreaterThan(MESSAGE_CONFIG.MAX_MESSAGE_LENGTH);
219
+ });
220
+
221
+ test('MESSAGE_CONFIG enforces maximum display messages', async () => {
222
+ const { MESSAGE_CONFIG } = await import('../../config/constants.js');
223
+
224
+ // Verify max display constant exists
225
+ expect(MESSAGE_CONFIG.MAX_MESSAGES_DISPLAY).toBeDefined();
226
+ expect(typeof MESSAGE_CONFIG.MAX_MESSAGES_DISPLAY).toBe('number');
227
+
228
+ // This constant should be used to trim message arrays
229
+ expect(MESSAGE_CONFIG.MAX_MESSAGES_DISPLAY).toBeGreaterThan(0);
230
+ });
231
+ });
232
+
233
+ describe('Message Management - Pagination Logic', () => {
234
+ test('PAGINATION supports offset-based pagination', async () => {
235
+ const { PAGINATION } = await import('../../config/constants.js');
236
+
237
+ const page = 0;
238
+ const offset = page * PAGINATION.PAGE_SIZE;
239
+
240
+ expect(offset).toBe(0); // First page should start at offset 0
241
+
242
+ const page2 = 1;
243
+ const offset2 = page2 * PAGINATION.PAGE_SIZE;
244
+
245
+ expect(offset2).toBe(PAGINATION.PAGE_SIZE); // Second page should start at PAGE_SIZE
246
+ });
247
+
248
+ test('PAGINATION limit does not exceed MAX_PAGE_SIZE', async () => {
249
+ const { PAGINATION } = await import('../../config/constants.js');
250
+
251
+ const requestedLimit = 1000;
252
+ const actualLimit = Math.min(requestedLimit, PAGINATION.MAX_PAGE_SIZE);
253
+
254
+ expect(actualLimit).toBeLessThanOrEqual(PAGINATION.MAX_PAGE_SIZE);
255
+ });
256
+ });