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,137 @@
1
+ /**
2
+ * Component Management - Smoke Tests
3
+ * Verifies that UI components can be imported and basic structure is correct
4
+ */
5
+
6
+ import { describe, test, expect } from '@jest/globals';
7
+
8
+ describe('Component Management - Imports', () => {
9
+ test('Layout component can be imported', async () => {
10
+ const { Layout } = await import('../../components/Layout.js');
11
+
12
+ expect(Layout).toBeDefined();
13
+ expect(typeof Layout).toBe('function');
14
+ });
15
+
16
+ test('Layout is default export', async () => {
17
+ const module = await import('../../components/Layout.js');
18
+
19
+ expect(module.default).toBeDefined();
20
+ expect(typeof module.default).toBe('function');
21
+ expect(module.default).toBe(module.Layout);
22
+ });
23
+
24
+ test('Header component can be imported', async () => {
25
+ const { Header } = await import('../../components/Header.js');
26
+
27
+ expect(Header).toBeDefined();
28
+ expect(typeof Header).toBe('function');
29
+ });
30
+
31
+ test('Header is default export', async () => {
32
+ const module = await import('../../components/Header.js');
33
+
34
+ expect(module.default).toBeDefined();
35
+ expect(module.default).toBe(module.Header);
36
+ });
37
+
38
+ test('StatusBar component can be imported', async () => {
39
+ const { StatusBar } = await import('../../components/StatusBar.js');
40
+
41
+ expect(StatusBar).toBeDefined();
42
+ expect(typeof StatusBar).toBe('function');
43
+ });
44
+
45
+ test('StatusBar is default export', async () => {
46
+ const module = await import('../../components/StatusBar.js');
47
+
48
+ expect(module.default).toBeDefined();
49
+ expect(module.default).toBe(module.StatusBar);
50
+ });
51
+
52
+ test('MessageList component can be imported', async () => {
53
+ const { MessageList } = await import('../../components/MessageList.js');
54
+
55
+ expect(MessageList).toBeDefined();
56
+ expect(typeof MessageList).toBe('function');
57
+ });
58
+
59
+ test('MessageList is default export', async () => {
60
+ const module = await import('../../components/MessageList.js');
61
+
62
+ expect(module.default).toBeDefined();
63
+ expect(module.default).toBe(module.MessageList);
64
+ });
65
+
66
+ test('InputBox component can be imported', async () => {
67
+ const { InputBox } = await import('../../components/InputBox.js');
68
+
69
+ expect(InputBox).toBeDefined();
70
+ expect(typeof InputBox).toBe('function');
71
+ });
72
+
73
+ test('InputBox is default export', async () => {
74
+ const module = await import('../../components/InputBox.js');
75
+
76
+ expect(module.default).toBeDefined();
77
+ expect(module.default).toBe(module.InputBox);
78
+ });
79
+ });
80
+
81
+ describe('Component Management - Integration', () => {
82
+ test('All components can be imported together', async () => {
83
+ const [
84
+ layoutModule,
85
+ headerModule,
86
+ statusBarModule,
87
+ messageListModule,
88
+ inputBoxModule,
89
+ ] = await Promise.all([
90
+ import('../../components/Layout.js'),
91
+ import('../../components/Header.js'),
92
+ import('../../components/StatusBar.js'),
93
+ import('../../components/MessageList.js'),
94
+ import('../../components/InputBox.js'),
95
+ ]);
96
+
97
+ expect(layoutModule.Layout).toBeDefined();
98
+ expect(headerModule.Header).toBeDefined();
99
+ expect(statusBarModule.StatusBar).toBeDefined();
100
+ expect(messageListModule.MessageList).toBeDefined();
101
+ expect(inputBoxModule.InputBox).toBeDefined();
102
+ });
103
+
104
+ test('Layout component integrates with all state hooks', async () => {
105
+ const { Layout } = await import('../../components/Layout.js');
106
+ const { useConnection } = await import('../../state/useConnection.js');
107
+ const { useAgents } = await import('../../state/useAgents.js');
108
+ const { useMessages } = await import('../../state/useMessages.js');
109
+ const { useAgentControl } = await import('../../state/useAgentControl.js');
110
+ const { useTools } = await import('../../state/useTools.js');
111
+
112
+ // Verify all dependencies exist
113
+ expect(Layout).toBeDefined();
114
+ expect(useConnection).toBeDefined();
115
+ expect(useAgents).toBeDefined();
116
+ expect(useMessages).toBeDefined();
117
+ expect(useAgentControl).toBeDefined();
118
+ expect(useTools).toBeDefined();
119
+ });
120
+ });
121
+
122
+ describe('Component Management - React/Ink Dependencies', () => {
123
+ test('Ink components can be imported', async () => {
124
+ const { Box, Text } = await import('ink');
125
+
126
+ expect(Box).toBeDefined();
127
+ expect(Text).toBeDefined();
128
+ });
129
+
130
+ test('React can be imported', async () => {
131
+ const React = await import('react');
132
+
133
+ expect(React.default).toBeDefined();
134
+ expect(React.useState).toBeDefined();
135
+ expect(React.useEffect).toBeDefined();
136
+ });
137
+ });
@@ -0,0 +1,350 @@
1
+ /**
2
+ * Connection Management - Smoke Tests
3
+ * Verifies that connection management modules can be imported and basic functionality works
4
+ */
5
+
6
+ import { describe, test, expect } from '@jest/globals';
7
+
8
+ describe('Connection Management - Imports', () => {
9
+ test('useConnection hook can be imported', async () => {
10
+ const { useConnection } = await import('../../state/useConnection.js');
11
+
12
+ expect(useConnection).toBeDefined();
13
+ expect(typeof useConnection).toBe('function');
14
+ });
15
+
16
+ test('useConnection is default export', async () => {
17
+ const module = await import('../../state/useConnection.js');
18
+
19
+ expect(module.default).toBeDefined();
20
+ expect(typeof module.default).toBe('function');
21
+ expect(module.default).toBe(module.useConnection);
22
+ });
23
+ });
24
+
25
+ describe('Connection Management - Constants', () => {
26
+ test('CONNECTION_STATUS constants are defined', async () => {
27
+ const { CONNECTION_STATUS } = await import('../../config/constants.js');
28
+
29
+ expect(CONNECTION_STATUS).toBeDefined();
30
+ expect(CONNECTION_STATUS.CONNECTING).toBe('connecting');
31
+ expect(CONNECTION_STATUS.CONNECTED).toBe('connected');
32
+ expect(CONNECTION_STATUS.DISCONNECTED).toBe('disconnected');
33
+ expect(CONNECTION_STATUS.RECONNECTING).toBe('reconnecting');
34
+ });
35
+
36
+ test('CONNECTION_STATUS is alias for CONNECTION_STATE', async () => {
37
+ const { CONNECTION_STATUS, CONNECTION_STATE } = await import('../../config/constants.js');
38
+
39
+ expect(CONNECTION_STATUS).toBe(CONNECTION_STATE);
40
+ });
41
+
42
+ test('RECONNECT_CONFIG constants are defined', async () => {
43
+ const { RECONNECT_CONFIG } = await import('../../config/constants.js');
44
+
45
+ expect(RECONNECT_CONFIG).toBeDefined();
46
+ expect(RECONNECT_CONFIG.INITIAL_DELAY).toBeDefined();
47
+ expect(RECONNECT_CONFIG.MAX_DELAY).toBeDefined();
48
+ expect(RECONNECT_CONFIG.BACKOFF_MULTIPLIER).toBeDefined();
49
+ expect(RECONNECT_CONFIG.MAX_ATTEMPTS).toBeDefined();
50
+ });
51
+
52
+ test('RECONNECT_CONFIG values are reasonable', async () => {
53
+ const { RECONNECT_CONFIG } = await import('../../config/constants.js');
54
+
55
+ // Initial delay should be > 0
56
+ expect(RECONNECT_CONFIG.INITIAL_DELAY).toBeGreaterThan(0);
57
+
58
+ // Max delay should be > initial delay
59
+ expect(RECONNECT_CONFIG.MAX_DELAY).toBeGreaterThan(RECONNECT_CONFIG.INITIAL_DELAY);
60
+
61
+ // Backoff multiplier should be > 1 for exponential growth
62
+ expect(RECONNECT_CONFIG.BACKOFF_MULTIPLIER).toBeGreaterThan(1);
63
+
64
+ // Max attempts should be reasonable (not 0 or negative)
65
+ expect(RECONNECT_CONFIG.MAX_ATTEMPTS).toBeGreaterThan(0);
66
+ });
67
+ });
68
+
69
+ describe('Connection Management - Integration', () => {
70
+ test('useConnection hook integrates with SessionManager and WebSocketManager', async () => {
71
+ const { useConnection } = await import('../../state/useConnection.js');
72
+ const { SessionManager } = await import('../../api/session.js');
73
+ const { WebSocketManager } = await import('../../api/websocket.js');
74
+
75
+ // Create dependencies
76
+ const sessionManager = new SessionManager('localhost', 8080);
77
+ const wsManager = new WebSocketManager('localhost', 8080);
78
+
79
+ // Verify all components exist
80
+ expect(sessionManager).toBeDefined();
81
+ expect(wsManager).toBeDefined();
82
+
83
+ // useConnection expects these as parameters
84
+ // (we can't actually call the hook outside React, but we verify the interface)
85
+ expect(typeof useConnection).toBe('function');
86
+ });
87
+
88
+ test('Full connection stack can be imported together', async () => {
89
+ const [
90
+ constantsModule,
91
+ sessionModule,
92
+ websocketModule,
93
+ connectionModule,
94
+ ] = await Promise.all([
95
+ import('../../config/constants.js'),
96
+ import('../../api/session.js'),
97
+ import('../../api/websocket.js'),
98
+ import('../../state/useConnection.js'),
99
+ ]);
100
+
101
+ // Verify all modules loaded
102
+ expect(constantsModule.CONNECTION_STATUS).toBeDefined();
103
+ expect(constantsModule.RECONNECT_CONFIG).toBeDefined();
104
+ expect(sessionModule.SessionManager).toBeDefined();
105
+ expect(websocketModule.WebSocketManager).toBeDefined();
106
+ expect(connectionModule.useConnection).toBeDefined();
107
+ });
108
+ });
109
+
110
+ describe('Connection Management - Hook Interface Verification', () => {
111
+ test('useConnection returns expected interface shape', async () => {
112
+ const { useConnection } = await import('../../state/useConnection.js');
113
+
114
+ // We can verify the function signature
115
+ expect(useConnection.length).toBe(2); // sessionManager, wsManager
116
+ });
117
+ });
118
+
119
+ describe('Connection Management - Status Values', () => {
120
+ test('CONNECTION_STATUS values are lowercase strings', async () => {
121
+ const { CONNECTION_STATUS } = await import('../../config/constants.js');
122
+
123
+ expect(typeof CONNECTION_STATUS.CONNECTING).toBe('string');
124
+ expect(typeof CONNECTION_STATUS.CONNECTED).toBe('string');
125
+ expect(typeof CONNECTION_STATUS.DISCONNECTED).toBe('string');
126
+ expect(typeof CONNECTION_STATUS.RECONNECTING).toBe('string');
127
+
128
+ expect(CONNECTION_STATUS.CONNECTING).toBe(CONNECTION_STATUS.CONNECTING.toLowerCase());
129
+ expect(CONNECTION_STATUS.CONNECTED).toBe(CONNECTION_STATUS.CONNECTED.toLowerCase());
130
+ });
131
+
132
+ test('CONNECTION_STATUS has all required states', async () => {
133
+ const { CONNECTION_STATUS } = await import('../../config/constants.js');
134
+
135
+ const states = Object.keys(CONNECTION_STATUS);
136
+ expect(states).toContain('CONNECTING');
137
+ expect(states).toContain('CONNECTED');
138
+ expect(states).toContain('DISCONNECTED');
139
+ expect(states).toContain('RECONNECTING');
140
+ });
141
+ });
142
+
143
+ describe('Connection Management - Exponential Backoff Logic', () => {
144
+ test('Exponential backoff delay calculation works correctly', async () => {
145
+ const { RECONNECT_CONFIG } = await import('../../config/constants.js');
146
+
147
+ // Simulate exponential backoff calculation
148
+ const getReconnectDelay = (attempt) => {
149
+ return Math.min(
150
+ RECONNECT_CONFIG.INITIAL_DELAY * Math.pow(RECONNECT_CONFIG.BACKOFF_MULTIPLIER, attempt),
151
+ RECONNECT_CONFIG.MAX_DELAY
152
+ );
153
+ };
154
+
155
+ // Test increasing delays
156
+ const delay0 = getReconnectDelay(0);
157
+ const delay1 = getReconnectDelay(1);
158
+ const delay2 = getReconnectDelay(2);
159
+
160
+ expect(delay0).toBe(RECONNECT_CONFIG.INITIAL_DELAY);
161
+ expect(delay1).toBeGreaterThan(delay0);
162
+ expect(delay2).toBeGreaterThan(delay1);
163
+ });
164
+
165
+ test('Exponential backoff respects max delay', async () => {
166
+ const { RECONNECT_CONFIG } = await import('../../config/constants.js');
167
+
168
+ // Simulate exponential backoff calculation
169
+ const getReconnectDelay = (attempt) => {
170
+ return Math.min(
171
+ RECONNECT_CONFIG.INITIAL_DELAY * Math.pow(RECONNECT_CONFIG.BACKOFF_MULTIPLIER, attempt),
172
+ RECONNECT_CONFIG.MAX_DELAY
173
+ );
174
+ };
175
+
176
+ // Test with very large attempt number
177
+ const delayLarge = getReconnectDelay(100);
178
+
179
+ // Should be capped at MAX_DELAY
180
+ expect(delayLarge).toBe(RECONNECT_CONFIG.MAX_DELAY);
181
+ expect(delayLarge).toBeLessThanOrEqual(RECONNECT_CONFIG.MAX_DELAY);
182
+ });
183
+ });
184
+
185
+ describe('Connection Management - Session State', () => {
186
+ test('Session state should track validity', async () => {
187
+ // Mock session state
188
+ let sessionId = null;
189
+ let sessionValid = false;
190
+ let sessionExpiration = null;
191
+
192
+ // Simulate session initialization
193
+ sessionId = 'test-session-123';
194
+ sessionValid = true;
195
+ sessionExpiration = Date.now() + 3600000; // 1 hour from now
196
+
197
+ expect(sessionId).toBeDefined();
198
+ expect(sessionValid).toBe(true);
199
+ expect(sessionExpiration).toBeGreaterThan(Date.now());
200
+ });
201
+
202
+ test('Session state should invalidate', async () => {
203
+ // Mock session state
204
+ let sessionId = 'test-session-123';
205
+ let sessionValid = true;
206
+
207
+ // Simulate session invalidation
208
+ sessionId = null;
209
+ sessionValid = false;
210
+
211
+ expect(sessionId).toBeNull();
212
+ expect(sessionValid).toBe(false);
213
+ });
214
+ });
215
+
216
+ describe('Connection Management - Connection Metrics', () => {
217
+ test('Connection uptime can be tracked', async () => {
218
+ // Mock uptime tracking
219
+ const connectionStartTime = Date.now();
220
+
221
+ // Wait a bit
222
+ await new Promise(resolve => setTimeout(resolve, 100));
223
+
224
+ const uptime = Date.now() - connectionStartTime;
225
+
226
+ expect(uptime).toBeGreaterThan(0);
227
+ expect(uptime).toBeGreaterThanOrEqual(100);
228
+ });
229
+
230
+ test('Connection metrics track timestamps', async () => {
231
+ // Mock connection metrics
232
+ const lastConnectedAt = Date.now();
233
+
234
+ // Wait a bit
235
+ await new Promise(resolve => setTimeout(resolve, 50));
236
+
237
+ const lastDisconnectedAt = Date.now();
238
+
239
+ expect(lastConnectedAt).toBeDefined();
240
+ expect(lastDisconnectedAt).toBeDefined();
241
+ expect(lastDisconnectedAt).toBeGreaterThan(lastConnectedAt);
242
+ });
243
+
244
+ test('Reconnection attempts can be tracked', async () => {
245
+ // Mock reconnection attempt tracking
246
+ let reconnectAttempts = 0;
247
+
248
+ // Simulate failed attempts
249
+ reconnectAttempts += 1;
250
+ expect(reconnectAttempts).toBe(1);
251
+
252
+ reconnectAttempts += 1;
253
+ expect(reconnectAttempts).toBe(2);
254
+
255
+ // Reset on successful connection
256
+ reconnectAttempts = 0;
257
+ expect(reconnectAttempts).toBe(0);
258
+ });
259
+ });
260
+
261
+ describe('Connection Management - Connection Status Transitions', () => {
262
+ test('Connection status transitions follow valid flow', async () => {
263
+ const { CONNECTION_STATUS } = await import('../../config/constants.js');
264
+
265
+ // Valid transition: DISCONNECTED -> CONNECTING -> CONNECTED
266
+ let status = CONNECTION_STATUS.DISCONNECTED;
267
+ expect(status).toBe('disconnected');
268
+
269
+ status = CONNECTION_STATUS.CONNECTING;
270
+ expect(status).toBe('connecting');
271
+
272
+ status = CONNECTION_STATUS.CONNECTED;
273
+ expect(status).toBe('connected');
274
+
275
+ // Valid transition: CONNECTED -> DISCONNECTED -> RECONNECTING -> CONNECTED
276
+ status = CONNECTION_STATUS.DISCONNECTED;
277
+ expect(status).toBe('disconnected');
278
+
279
+ status = CONNECTION_STATUS.RECONNECTING;
280
+ expect(status).toBe('reconnecting');
281
+
282
+ status = CONNECTION_STATUS.CONNECTED;
283
+ expect(status).toBe('connected');
284
+ });
285
+ });
286
+
287
+ describe('Connection Management - WebSocket Event Integration', () => {
288
+ test('WebSocketManager has event emitter methods', async () => {
289
+ const { WebSocketManager } = await import('../../api/websocket.js');
290
+
291
+ const wsManager = new WebSocketManager('localhost', 8080);
292
+
293
+ // Verify event emitter methods exist
294
+ expect(wsManager.on).toBeDefined();
295
+ expect(wsManager.off).toBeDefined();
296
+ expect(typeof wsManager.on).toBe('function');
297
+ expect(typeof wsManager.off).toBe('function');
298
+ });
299
+ });
300
+
301
+ describe('Connection Management - Max Attempts Limit', () => {
302
+ test('Reconnection should stop after max attempts', async () => {
303
+ const { RECONNECT_CONFIG } = await import('../../config/constants.js');
304
+
305
+ // Mock reconnection attempt tracking
306
+ let reconnectAttempts = 0;
307
+
308
+ // Simulate reconnection attempts
309
+ for (let i = 0; i < RECONNECT_CONFIG.MAX_ATTEMPTS + 5; i++) {
310
+ if (reconnectAttempts < RECONNECT_CONFIG.MAX_ATTEMPTS) {
311
+ reconnectAttempts += 1;
312
+ } else {
313
+ // Should stop incrementing
314
+ break;
315
+ }
316
+ }
317
+
318
+ // Should not exceed max attempts
319
+ expect(reconnectAttempts).toBe(RECONNECT_CONFIG.MAX_ATTEMPTS);
320
+ expect(reconnectAttempts).toBeLessThanOrEqual(RECONNECT_CONFIG.MAX_ATTEMPTS);
321
+ });
322
+ });
323
+
324
+ describe('Connection Management - Connection Info', () => {
325
+ test('Connection info should contain all metrics', async () => {
326
+ const { CONNECTION_STATUS } = await import('../../config/constants.js');
327
+
328
+ // Mock connection info
329
+ const connectionInfo = {
330
+ status: CONNECTION_STATUS.CONNECTED,
331
+ isConnected: true,
332
+ isReconnecting: false,
333
+ sessionId: 'test-session-123',
334
+ sessionValid: true,
335
+ sessionExpiration: Date.now() + 3600000,
336
+ uptime: 5000,
337
+ lastConnectedAt: Date.now() - 5000,
338
+ lastDisconnectedAt: null,
339
+ reconnectAttempts: 0,
340
+ };
341
+
342
+ // Verify all fields present
343
+ expect(connectionInfo.status).toBeDefined();
344
+ expect(connectionInfo.isConnected).toBe(true);
345
+ expect(connectionInfo.isReconnecting).toBe(false);
346
+ expect(connectionInfo.sessionId).toBeDefined();
347
+ expect(connectionInfo.sessionValid).toBe(true);
348
+ expect(connectionInfo.uptime).toBeGreaterThan(0);
349
+ });
350
+ });
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Phase 9 Enhancements - Smoke Tests
3
+ * Verifies ErrorBoundary, LoadingSpinner, and enhanced InputBox components
4
+ */
5
+
6
+ import { describe, test, expect } from '@jest/globals';
7
+
8
+ describe('Phase 9 - Enhanced Components - Imports', () => {
9
+ test('ErrorBoundary component can be imported', async () => {
10
+ const { ErrorBoundary } = await import('../../components/ErrorBoundary.js');
11
+
12
+ expect(ErrorBoundary).toBeDefined();
13
+ expect(typeof ErrorBoundary).toBe('function');
14
+ }, 30000); // Increase timeout for import
15
+
16
+ test('ErrorBoundary is a class component', async () => {
17
+ const { ErrorBoundary } = await import('../../components/ErrorBoundary.js');
18
+
19
+ // Verify it's a class with correct methods
20
+ expect(ErrorBoundary.prototype).toBeDefined();
21
+ expect(typeof ErrorBoundary.prototype.render).toBe('function');
22
+ });
23
+
24
+ test('LoadingSpinner component can be imported', async () => {
25
+ const { LoadingSpinner } = await import('../../components/LoadingSpinner.js');
26
+
27
+ expect(LoadingSpinner).toBeDefined();
28
+ expect(typeof LoadingSpinner).toBe('function');
29
+ });
30
+
31
+ test('InlineSpinner component can be imported', async () => {
32
+ const { InlineSpinner } = await import('../../components/LoadingSpinner.js');
33
+
34
+ expect(InlineSpinner).toBeDefined();
35
+ expect(typeof InlineSpinner).toBe('function');
36
+ });
37
+
38
+ test('LoadingSpinner is default export', async () => {
39
+ const module = await import('../../components/LoadingSpinner.js');
40
+
41
+ expect(module.default).toBeDefined();
42
+ expect(module.default).toBe(module.LoadingSpinner);
43
+ });
44
+
45
+ test('Enhanced InputBox maintains backward compatibility', async () => {
46
+ const { InputBox } = await import('../../components/InputBox.js');
47
+
48
+ expect(InputBox).toBeDefined();
49
+ expect(typeof InputBox).toBe('function');
50
+ });
51
+ });
52
+
53
+ describe('Phase 9 - ErrorBoundary - Structure', () => {
54
+ test('ErrorBoundary is a React Component class', async () => {
55
+ const { ErrorBoundary } = await import('../../components/ErrorBoundary.js');
56
+ const React = await import('react');
57
+
58
+ // Check that it extends React.Component
59
+ expect(ErrorBoundary.prototype).toBeDefined();
60
+ expect(typeof ErrorBoundary.prototype.render).toBe('function');
61
+ expect(typeof ErrorBoundary.prototype.componentDidCatch).toBe('function');
62
+ });
63
+
64
+ test('ErrorBoundary has getDerivedStateFromError static method', async () => {
65
+ const { ErrorBoundary } = await import('../../components/ErrorBoundary.js');
66
+
67
+ expect(typeof ErrorBoundary.getDerivedStateFromError).toBe('function');
68
+ });
69
+
70
+ test('ErrorBoundary componentDidCatch is defined', async () => {
71
+ const { ErrorBoundary } = await import('../../components/ErrorBoundary.js');
72
+
73
+ expect(typeof ErrorBoundary.prototype.componentDidCatch).toBe('function');
74
+ });
75
+ });
76
+
77
+ describe('Phase 9 - LoadingSpinner - Structure', () => {
78
+ test('LoadingSpinner is a function component', async () => {
79
+ const { LoadingSpinner } = await import('../../components/LoadingSpinner.js');
80
+
81
+ // Verify it's a function component
82
+ expect(typeof LoadingSpinner).toBe('function');
83
+
84
+ // It should not be a class (no prototype.render)
85
+ expect(LoadingSpinner.prototype?.render).toBeUndefined();
86
+ });
87
+
88
+ test('InlineSpinner is a function component', async () => {
89
+ const { InlineSpinner } = await import('../../components/LoadingSpinner.js');
90
+
91
+ expect(typeof InlineSpinner).toBe('function');
92
+
93
+ // It should not be a class (no prototype.render)
94
+ expect(InlineSpinner.prototype?.render).toBeUndefined();
95
+ });
96
+ });
97
+
98
+ describe('Phase 9 - Enhanced InputBox - History Support', () => {
99
+ test('Enhanced InputBox imports useRef for history', async () => {
100
+ const inputBoxSource = await import('../../components/InputBox.js');
101
+ const React = await import('react');
102
+
103
+ // Verify React hooks are available (used for history)
104
+ expect(React.useState).toBeDefined();
105
+ expect(React.useRef).toBeDefined();
106
+ });
107
+
108
+ test('InputBox component maintains exports', async () => {
109
+ const module = await import('../../components/InputBox.js');
110
+
111
+ expect(module.InputBox).toBeDefined();
112
+ expect(module.default).toBeDefined();
113
+ expect(module.default).toBe(module.InputBox);
114
+ });
115
+ });
116
+
117
+ describe('Phase 9 - Integration', () => {
118
+ test('All enhanced components can be imported together', async () => {
119
+ const [errorBoundaryModule, spinnerModule, inputBoxModule] = await Promise.all([
120
+ import('../../components/ErrorBoundary.js'),
121
+ import('../../components/LoadingSpinner.js'),
122
+ import('../../components/InputBox.js'),
123
+ ]);
124
+
125
+ expect(errorBoundaryModule.ErrorBoundary).toBeDefined();
126
+ expect(spinnerModule.LoadingSpinner).toBeDefined();
127
+ expect(spinnerModule.InlineSpinner).toBeDefined();
128
+ expect(inputBoxModule.InputBox).toBeDefined();
129
+ });
130
+
131
+ test('Enhanced Layout component imports useInput for keyboard shortcuts', async () => {
132
+ const React = await import('react');
133
+ const ink = await import('ink');
134
+
135
+ // Verify useInput is available (used for keyboard shortcuts)
136
+ expect(ink.useInput).toBeDefined();
137
+ expect(typeof ink.useInput).toBe('function');
138
+ });
139
+
140
+ test('Layout component can still be imported after enhancements', async () => {
141
+ const { Layout } = await import('../../components/Layout.js');
142
+
143
+ expect(Layout).toBeDefined();
144
+ expect(typeof Layout).toBe('function');
145
+ });
146
+ });
147
+
148
+ describe('Phase 9 - Enhanced Features - Constants', () => {
149
+ test('InputBox defines MAX_HISTORY constant', async () => {
150
+ // We can't directly access the constant, but we can verify the module loads
151
+ const module = await import('../../components/InputBox.js');
152
+
153
+ expect(module.InputBox).toBeDefined();
154
+ // The constant is used internally for history management
155
+ });
156
+ });