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,623 @@
1
+ /**
2
+ * Document (DOCX) Tool - Read and create Word documents
3
+ *
4
+ * Purpose:
5
+ * - Get document metadata and word count
6
+ * - Extract text or HTML from DOCX files
7
+ * - Create DOCX documents from structured JSON content
8
+ */
9
+
10
+ import { BaseTool } from './baseTool.js';
11
+ import TagParser from '../utilities/tagParser.js';
12
+ import fs from 'fs/promises';
13
+ import path from 'path';
14
+
15
+ // Lazy-loaded dependencies
16
+ let docxModule = null;
17
+ let mammothModule = null;
18
+
19
+ class DocxTool extends BaseTool {
20
+ constructor(config = {}, logger = null) {
21
+ super(config, logger);
22
+ this.id = 'doc';
23
+ this.name = 'Document Tool';
24
+ this.description = 'Read and create Word (DOCX) documents';
25
+ this.version = '1.0.0';
26
+ this.requiresProject = false;
27
+ this.isAsync = false;
28
+ this.docxLoaded = false;
29
+ this.docxError = null;
30
+ this.mammothLoaded = false;
31
+ this.mammothError = null;
32
+ }
33
+
34
+ /**
35
+ * Lazily load the docx module (for creation)
36
+ * @returns {Promise<boolean>}
37
+ */
38
+ async loadDocx() {
39
+ if (this.docxLoaded) return true;
40
+ if (this.docxError) return false;
41
+
42
+ try {
43
+ docxModule = await import('docx');
44
+ this.docxLoaded = true;
45
+ return true;
46
+ } catch (error) {
47
+ this.docxError = error.message;
48
+ this.logger?.error('Failed to load docx module', { error: error.message });
49
+ return false;
50
+ }
51
+ }
52
+
53
+ /**
54
+ * Lazily load the mammoth module (for reading)
55
+ * @returns {Promise<boolean>}
56
+ */
57
+ async loadMammoth() {
58
+ if (this.mammothLoaded) return true;
59
+ if (this.mammothError) return false;
60
+
61
+ try {
62
+ const mod = await import('mammoth');
63
+ mammothModule = mod.default || mod;
64
+ this.mammothLoaded = true;
65
+ return true;
66
+ } catch (error) {
67
+ this.mammothError = error.message;
68
+ this.logger?.error('Failed to load mammoth module', { error: error.message });
69
+ return false;
70
+ }
71
+ }
72
+
73
+ /**
74
+ * Get tool description for LLM consumption
75
+ * @returns {string}
76
+ */
77
+ getDescription() {
78
+ return `
79
+ Document Tool: Read and create Word (DOCX) documents.
80
+
81
+ USAGE:
82
+ \`\`\`json
83
+ {
84
+ "toolId": "doc",
85
+ "actions": [{
86
+ "action": "get-info",
87
+ "filePath": "documents/report.docx"
88
+ }]
89
+ }
90
+ \`\`\`
91
+
92
+ ACTIONS:
93
+
94
+ 1. **get-info** - Get document metadata and word count
95
+ - filePath: Path to DOCX file (required)
96
+
97
+ 2. **read** - Extract text or HTML content from a DOCX file
98
+ - filePath: Path to DOCX file (required)
99
+ - format: "text" (default) or "html"
100
+
101
+ 3. **create** - Create a new DOCX document from structured content
102
+ - outputPath: Output file path (required)
103
+ - content: Document content object (required):
104
+ - title: Document title (optional)
105
+ - author: Document author (optional)
106
+ - sections: Array of sections, each with:
107
+ - children: Array of content elements:
108
+ - { type: "heading", level: 1-6, text: "..." }
109
+ - { type: "paragraph", text: "...", bold: false, italic: false, fontSize: 24, alignment: "left" }
110
+ - { type: "table", headers: ["Col1", "Col2"], rows: [["val1", "val2"]], widths: [50, 50] }
111
+ - { type: "list", ordered: false, items: ["Item 1", "Item 2"] }
112
+ - { type: "pageBreak" }
113
+
114
+ EXAMPLES:
115
+
116
+ 1. Get document info:
117
+ \`\`\`json
118
+ {
119
+ "toolId": "doc",
120
+ "actions": [{
121
+ "action": "get-info",
122
+ "filePath": "documents/report.docx"
123
+ }]
124
+ }
125
+ \`\`\`
126
+
127
+ 2. Read document as text:
128
+ \`\`\`json
129
+ {
130
+ "toolId": "doc",
131
+ "actions": [{
132
+ "action": "read",
133
+ "filePath": "documents/report.docx",
134
+ "format": "text"
135
+ }]
136
+ }
137
+ \`\`\`
138
+
139
+ 3. Create a document:
140
+ \`\`\`json
141
+ {
142
+ "toolId": "doc",
143
+ "actions": [{
144
+ "action": "create",
145
+ "outputPath": "output/report.docx",
146
+ "content": {
147
+ "title": "Project Report",
148
+ "author": "Loxia Agent",
149
+ "sections": [{
150
+ "children": [
151
+ { "type": "heading", "level": 1, "text": "Introduction" },
152
+ { "type": "paragraph", "text": "This is the introduction paragraph." },
153
+ { "type": "heading", "level": 2, "text": "Data Summary" },
154
+ { "type": "table", "headers": ["Metric", "Value"], "rows": [["Users", "1000"], ["Revenue", "$50K"]] },
155
+ { "type": "list", "ordered": true, "items": ["First point", "Second point", "Third point"] }
156
+ ]
157
+ }]
158
+ }
159
+ }]
160
+ }
161
+ \`\`\`
162
+
163
+ NOTES:
164
+ - For reading, mammoth provides clean text/HTML extraction
165
+ - For creation, the docx package supports rich formatting
166
+ - fontSize is in half-points (24 = 12pt, 28 = 14pt, etc.)
167
+ - alignment options: "left", "center", "right", "justified"
168
+ - Table widths are percentages that should sum to 100
169
+ `.trim();
170
+ }
171
+
172
+ /**
173
+ * Parse parameters from tool command content
174
+ * @param {string} content
175
+ * @returns {Object}
176
+ */
177
+ parseParameters(content) {
178
+ try {
179
+ const actionMatches = TagParser.extractContent(content, 'action');
180
+ const filePathMatches = TagParser.extractContent(content, 'filePath');
181
+ const formatMatches = TagParser.extractContent(content, 'format');
182
+
183
+ return {
184
+ actions: [{
185
+ action: actionMatches.length > 0 ? actionMatches[0].trim() : 'get-info',
186
+ filePath: filePathMatches.length > 0 ? filePathMatches[0].trim() : '',
187
+ format: formatMatches.length > 0 ? formatMatches[0].trim() : 'text'
188
+ }]
189
+ };
190
+ } catch (error) {
191
+ throw new Error(`Failed to parse Document tool parameters: ${error.message}`);
192
+ }
193
+ }
194
+
195
+ /**
196
+ * Get supported actions
197
+ * @returns {Array<string>}
198
+ */
199
+ getSupportedActions() {
200
+ return ['get-info', 'read', 'create'];
201
+ }
202
+
203
+ /**
204
+ * Execute document tool action
205
+ * @param {Object} params
206
+ * @param {Object} context
207
+ * @returns {Promise<Object>}
208
+ */
209
+ async execute(params, context) {
210
+ const { actions } = params;
211
+
212
+ if (!actions || actions.length === 0) {
213
+ return {
214
+ success: false,
215
+ error: 'No actions provided',
216
+ output: 'Please specify an action (get-info, read, or create)'
217
+ };
218
+ }
219
+
220
+ const action = actions[0];
221
+
222
+ // Handle create action (no existing file required)
223
+ if (action.action === 'create') {
224
+ try {
225
+ return await this.createDocument(action, context);
226
+ } catch (error) {
227
+ this.logger?.error('DOCX creation error', { error: error.message });
228
+ return {
229
+ success: false,
230
+ error: error.message,
231
+ output: `Failed to create document: ${error.message}`
232
+ };
233
+ }
234
+ }
235
+
236
+ // Read-oriented actions require file path
237
+ const { projectDir } = context;
238
+ let filePath = action.filePath;
239
+
240
+ if (!filePath) {
241
+ return {
242
+ success: false,
243
+ error: 'File path is required',
244
+ output: 'Please provide a filePath parameter'
245
+ };
246
+ }
247
+
248
+ if (!path.isAbsolute(filePath)) {
249
+ filePath = path.resolve(projectDir || process.cwd(), filePath);
250
+ }
251
+
252
+ // Check file exists
253
+ try {
254
+ await fs.access(filePath);
255
+ } catch {
256
+ return {
257
+ success: false,
258
+ error: `File not found: ${filePath}`,
259
+ output: `The DOCX file does not exist: ${filePath}`
260
+ };
261
+ }
262
+
263
+ // Check extension
264
+ if (!filePath.toLowerCase().endsWith('.docx') && !filePath.toLowerCase().endsWith('.doc')) {
265
+ return {
266
+ success: false,
267
+ error: 'Not a DOCX file',
268
+ output: `The file must have a .docx or .doc extension: ${filePath}`
269
+ };
270
+ }
271
+
272
+ try {
273
+ switch (action.action) {
274
+ case 'get-info':
275
+ return await this.getInfo(filePath);
276
+ case 'read':
277
+ return await this.readDocument(filePath, action.format || 'text');
278
+ default:
279
+ return {
280
+ success: false,
281
+ error: `Unknown action: ${action.action}`,
282
+ output: 'Supported actions: get-info, read, create'
283
+ };
284
+ }
285
+ } catch (error) {
286
+ this.logger?.error('DOCX tool error', { action: action.action, filePath, error: error.message });
287
+ return {
288
+ success: false,
289
+ error: error.message,
290
+ output: `Failed to process document: ${error.message}`
291
+ };
292
+ }
293
+ }
294
+
295
+ /**
296
+ * Get document info (file stats + word count)
297
+ * @param {string} filePath
298
+ * @returns {Promise<Object>}
299
+ */
300
+ async getInfo(filePath) {
301
+ const loaded = await this.loadMammoth();
302
+ if (!loaded) {
303
+ return {
304
+ success: false,
305
+ error: 'mammoth module not available',
306
+ output: `Document reading module could not be loaded: ${this.mammothError}`
307
+ };
308
+ }
309
+
310
+ const stats = await fs.stat(filePath);
311
+ const buffer = await fs.readFile(filePath);
312
+ const result = await mammothModule.extractRawText({ buffer });
313
+ const text = result.value || '';
314
+ const wordCount = text.split(/\s+/).filter(w => w.length > 0).length;
315
+
316
+ const info = {
317
+ fileName: path.basename(filePath),
318
+ fileSize: stats.size,
319
+ modified: stats.mtime.toISOString(),
320
+ wordCount
321
+ };
322
+
323
+ let output = `Document Info: ${info.fileName}\n`;
324
+ output += `━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n`;
325
+ output += `File size: ${(info.fileSize / 1024).toFixed(1)} KB\n`;
326
+ output += `Word count: ${info.wordCount}\n`;
327
+ output += `Last modified: ${info.modified}\n`;
328
+
329
+ return {
330
+ success: true,
331
+ action: 'get-info',
332
+ filePath,
333
+ info,
334
+ output,
335
+ message: `Document: ${info.fileName} (${info.wordCount} words)`
336
+ };
337
+ }
338
+
339
+ /**
340
+ * Read document content as text or HTML
341
+ * @param {string} filePath
342
+ * @param {string} format - "text" or "html"
343
+ * @returns {Promise<Object>}
344
+ */
345
+ async readDocument(filePath, format = 'text') {
346
+ const loaded = await this.loadMammoth();
347
+ if (!loaded) {
348
+ return {
349
+ success: false,
350
+ error: 'mammoth module not available',
351
+ output: `Document reading module could not be loaded: ${this.mammothError}`
352
+ };
353
+ }
354
+
355
+ const buffer = await fs.readFile(filePath);
356
+ let result;
357
+
358
+ if (format === 'html') {
359
+ result = await mammothModule.convertToHtml({ buffer });
360
+ } else {
361
+ result = await mammothModule.extractRawText({ buffer });
362
+ }
363
+
364
+ const content = result.value || '';
365
+ const warnings = result.messages?.filter(m => m.type === 'warning').map(m => m.message) || [];
366
+
367
+ let output = `Document Content: ${path.basename(filePath)} (${format})\n`;
368
+ output += `━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n`;
369
+ output += content;
370
+
371
+ if (warnings.length > 0) {
372
+ output += `\n\n⚠️ Warnings:\n${warnings.map(w => `- ${w}`).join('\n')}`;
373
+ }
374
+
375
+ return {
376
+ success: true,
377
+ action: 'read',
378
+ filePath,
379
+ format,
380
+ content,
381
+ warnings,
382
+ output,
383
+ message: `Read ${path.basename(filePath)} as ${format} (${content.length} chars)`
384
+ };
385
+ }
386
+
387
+ /**
388
+ * Create a DOCX document from structured content
389
+ * @param {Object} action - Action parameters
390
+ * @param {Object} context - Execution context
391
+ * @returns {Promise<Object>}
392
+ */
393
+ async createDocument(action, context) {
394
+ const { projectDir } = context;
395
+ const { outputPath, content } = action;
396
+
397
+ if (!outputPath) {
398
+ return {
399
+ success: false,
400
+ error: 'Output path is required',
401
+ output: 'Please provide an outputPath parameter'
402
+ };
403
+ }
404
+
405
+ if (!content || !content.sections || !Array.isArray(content.sections)) {
406
+ return {
407
+ success: false,
408
+ error: 'Content with sections array is required',
409
+ output: 'Please provide content with a "sections" array containing document elements'
410
+ };
411
+ }
412
+
413
+ // Resolve output path
414
+ let resolvedPath = outputPath;
415
+ if (!path.isAbsolute(resolvedPath)) {
416
+ resolvedPath = path.resolve(projectDir || process.cwd(), resolvedPath);
417
+ }
418
+
419
+ // Security: prevent path traversal
420
+ const baseDir = projectDir || process.cwd();
421
+ const normalizedPath = path.normalize(resolvedPath);
422
+ if (!normalizedPath.startsWith(path.normalize(baseDir))) {
423
+ return {
424
+ success: false,
425
+ error: 'Path traversal detected',
426
+ output: 'Output path must be within the project directory'
427
+ };
428
+ }
429
+
430
+ // Ensure output directory exists
431
+ const outputDir = path.dirname(resolvedPath);
432
+ await fs.mkdir(outputDir, { recursive: true });
433
+
434
+ // Ensure .docx extension
435
+ if (!resolvedPath.toLowerCase().endsWith('.docx')) {
436
+ resolvedPath += '.docx';
437
+ }
438
+
439
+ // Load docx module
440
+ const loaded = await this.loadDocx();
441
+ if (!loaded) {
442
+ return {
443
+ success: false,
444
+ error: 'docx module not available',
445
+ output: `Document creation module could not be loaded: ${this.docxError}`
446
+ };
447
+ }
448
+
449
+ const { Document, Packer, Paragraph, TextRun, HeadingLevel, Table, TableRow, TableCell, WidthType, AlignmentType, BorderStyle, PageBreak, LevelFormat } = docxModule;
450
+
451
+ // Map alignment strings to AlignmentType
452
+ const alignmentMap = {
453
+ 'left': AlignmentType.LEFT,
454
+ 'center': AlignmentType.CENTER,
455
+ 'right': AlignmentType.RIGHT,
456
+ 'justified': AlignmentType.JUSTIFIED
457
+ };
458
+
459
+ // Map heading levels
460
+ const headingMap = {
461
+ 1: HeadingLevel.HEADING_1,
462
+ 2: HeadingLevel.HEADING_2,
463
+ 3: HeadingLevel.HEADING_3,
464
+ 4: HeadingLevel.HEADING_4,
465
+ 5: HeadingLevel.HEADING_5,
466
+ 6: HeadingLevel.HEADING_6
467
+ };
468
+
469
+ // Build sections
470
+ const docSections = [];
471
+
472
+ for (const section of content.sections) {
473
+ const children = [];
474
+
475
+ if (!section.children || !Array.isArray(section.children)) continue;
476
+
477
+ for (const element of section.children) {
478
+ switch (element.type) {
479
+ case 'heading': {
480
+ children.push(new Paragraph({
481
+ text: element.text || '',
482
+ heading: headingMap[element.level] || HeadingLevel.HEADING_1,
483
+ alignment: alignmentMap[element.alignment] || undefined
484
+ }));
485
+ break;
486
+ }
487
+
488
+ case 'paragraph': {
489
+ const runs = [new TextRun({
490
+ text: element.text || '',
491
+ bold: element.bold || false,
492
+ italics: element.italic || false,
493
+ size: element.fontSize || undefined
494
+ })];
495
+ children.push(new Paragraph({
496
+ children: runs,
497
+ alignment: alignmentMap[element.alignment] || undefined
498
+ }));
499
+ break;
500
+ }
501
+
502
+ case 'table': {
503
+ const rows = [];
504
+
505
+ // Header row
506
+ if (element.headers && Array.isArray(element.headers)) {
507
+ rows.push(new TableRow({
508
+ children: element.headers.map((header, i) => new TableCell({
509
+ children: [new Paragraph({
510
+ children: [new TextRun({ text: String(header), bold: true })]
511
+ })],
512
+ width: element.widths?.[i]
513
+ ? { size: element.widths[i], type: WidthType.PERCENTAGE }
514
+ : undefined
515
+ }))
516
+ }));
517
+ }
518
+
519
+ // Data rows
520
+ if (element.rows && Array.isArray(element.rows)) {
521
+ for (const row of element.rows) {
522
+ rows.push(new TableRow({
523
+ children: (Array.isArray(row) ? row : []).map((cell, i) => new TableCell({
524
+ children: [new Paragraph({ text: String(cell) })],
525
+ width: element.widths?.[i]
526
+ ? { size: element.widths[i], type: WidthType.PERCENTAGE }
527
+ : undefined
528
+ }))
529
+ }));
530
+ }
531
+ }
532
+
533
+ if (rows.length > 0) {
534
+ children.push(new Table({ rows }));
535
+ }
536
+ break;
537
+ }
538
+
539
+ case 'list': {
540
+ const items = element.items || [];
541
+ for (let i = 0; i < items.length; i++) {
542
+ children.push(new Paragraph({
543
+ text: String(items[i]),
544
+ numbering: element.ordered
545
+ ? { reference: 'ordered-list', level: 0 }
546
+ : { reference: 'bullet-list', level: 0 }
547
+ }));
548
+ }
549
+ break;
550
+ }
551
+
552
+ case 'pageBreak': {
553
+ children.push(new Paragraph({
554
+ children: [new PageBreak()]
555
+ }));
556
+ break;
557
+ }
558
+
559
+ default:
560
+ // Unknown element type, skip
561
+ break;
562
+ }
563
+ }
564
+
565
+ docSections.push({ children });
566
+ }
567
+
568
+ // Create document
569
+ const doc = new Document({
570
+ title: content.title || undefined,
571
+ creator: content.author || 'Loxia Agent',
572
+ numbering: {
573
+ config: [
574
+ {
575
+ reference: 'bullet-list',
576
+ levels: [{
577
+ level: 0,
578
+ format: LevelFormat.BULLET,
579
+ text: '\u2022',
580
+ alignment: AlignmentType.LEFT,
581
+ style: { paragraph: { indent: { left: 720, hanging: 360 } } }
582
+ }]
583
+ },
584
+ {
585
+ reference: 'ordered-list',
586
+ levels: [{
587
+ level: 0,
588
+ format: LevelFormat.DECIMAL,
589
+ text: '%1.',
590
+ alignment: AlignmentType.LEFT,
591
+ style: { paragraph: { indent: { left: 720, hanging: 360 } } }
592
+ }]
593
+ }
594
+ ]
595
+ },
596
+ sections: docSections
597
+ });
598
+
599
+ // Generate and write file
600
+ const buffer = await Packer.toBuffer(doc);
601
+ await fs.writeFile(resolvedPath, buffer);
602
+
603
+ const stats = await fs.stat(resolvedPath);
604
+
605
+ const output = `Document created successfully!\n` +
606
+ `━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n` +
607
+ `File: ${resolvedPath}\n` +
608
+ `Size: ${(stats.size / 1024).toFixed(1)} KB\n` +
609
+ (content.title ? `Title: ${content.title}\n` : '') +
610
+ `Sections: ${content.sections.length}`;
611
+
612
+ return {
613
+ success: true,
614
+ action: 'create',
615
+ outputPath: resolvedPath,
616
+ fileSize: stats.size,
617
+ output,
618
+ message: `Document created: ${resolvedPath} (${(stats.size / 1024).toFixed(1)} KB)`
619
+ };
620
+ }
621
+ }
622
+
623
+ export default DocxTool;