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.
- package/LICENSE +267 -0
- package/README.md +425 -0
- package/bin/cli.js +556 -0
- package/bin/loxia-terminal-v2.js +162 -0
- package/bin/loxia-terminal.js +90 -0
- package/bin/start-with-terminal.js +200 -0
- package/node_modules/@isaacs/balanced-match/LICENSE.md +23 -0
- package/node_modules/@isaacs/balanced-match/README.md +60 -0
- package/node_modules/@isaacs/balanced-match/dist/commonjs/index.d.ts +9 -0
- package/node_modules/@isaacs/balanced-match/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/@isaacs/balanced-match/dist/commonjs/index.js +59 -0
- package/node_modules/@isaacs/balanced-match/dist/commonjs/index.js.map +1 -0
- package/node_modules/@isaacs/balanced-match/dist/commonjs/package.json +3 -0
- package/node_modules/@isaacs/balanced-match/dist/esm/index.d.ts +9 -0
- package/node_modules/@isaacs/balanced-match/dist/esm/index.d.ts.map +1 -0
- package/node_modules/@isaacs/balanced-match/dist/esm/index.js +54 -0
- package/node_modules/@isaacs/balanced-match/dist/esm/index.js.map +1 -0
- package/node_modules/@isaacs/balanced-match/dist/esm/package.json +3 -0
- package/node_modules/@isaacs/balanced-match/package.json +79 -0
- package/node_modules/@isaacs/brace-expansion/LICENSE +23 -0
- package/node_modules/@isaacs/brace-expansion/README.md +97 -0
- package/node_modules/@isaacs/brace-expansion/dist/commonjs/index.d.ts +6 -0
- package/node_modules/@isaacs/brace-expansion/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/@isaacs/brace-expansion/dist/commonjs/index.js +199 -0
- package/node_modules/@isaacs/brace-expansion/dist/commonjs/index.js.map +1 -0
- package/node_modules/@isaacs/brace-expansion/dist/commonjs/package.json +3 -0
- package/node_modules/@isaacs/brace-expansion/dist/esm/index.d.ts +6 -0
- package/node_modules/@isaacs/brace-expansion/dist/esm/index.d.ts.map +1 -0
- package/node_modules/@isaacs/brace-expansion/dist/esm/index.js +195 -0
- package/node_modules/@isaacs/brace-expansion/dist/esm/index.js.map +1 -0
- package/node_modules/@isaacs/brace-expansion/dist/esm/package.json +3 -0
- package/node_modules/@isaacs/brace-expansion/package.json +60 -0
- package/node_modules/glob/LICENSE.md +63 -0
- package/node_modules/glob/README.md +1177 -0
- package/node_modules/glob/dist/commonjs/glob.d.ts +388 -0
- package/node_modules/glob/dist/commonjs/glob.d.ts.map +1 -0
- package/node_modules/glob/dist/commonjs/glob.js +247 -0
- package/node_modules/glob/dist/commonjs/glob.js.map +1 -0
- package/node_modules/glob/dist/commonjs/has-magic.d.ts +14 -0
- package/node_modules/glob/dist/commonjs/has-magic.d.ts.map +1 -0
- package/node_modules/glob/dist/commonjs/has-magic.js +27 -0
- package/node_modules/glob/dist/commonjs/has-magic.js.map +1 -0
- package/node_modules/glob/dist/commonjs/ignore.d.ts +24 -0
- package/node_modules/glob/dist/commonjs/ignore.d.ts.map +1 -0
- package/node_modules/glob/dist/commonjs/ignore.js +119 -0
- package/node_modules/glob/dist/commonjs/ignore.js.map +1 -0
- package/node_modules/glob/dist/commonjs/index.d.ts +97 -0
- package/node_modules/glob/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/glob/dist/commonjs/index.js +68 -0
- package/node_modules/glob/dist/commonjs/index.js.map +1 -0
- package/node_modules/glob/dist/commonjs/index.min.js +4 -0
- package/node_modules/glob/dist/commonjs/index.min.js.map +7 -0
- package/node_modules/glob/dist/commonjs/package.json +3 -0
- package/node_modules/glob/dist/commonjs/pattern.d.ts +76 -0
- package/node_modules/glob/dist/commonjs/pattern.d.ts.map +1 -0
- package/node_modules/glob/dist/commonjs/pattern.js +219 -0
- package/node_modules/glob/dist/commonjs/pattern.js.map +1 -0
- package/node_modules/glob/dist/commonjs/processor.d.ts +59 -0
- package/node_modules/glob/dist/commonjs/processor.d.ts.map +1 -0
- package/node_modules/glob/dist/commonjs/processor.js +301 -0
- package/node_modules/glob/dist/commonjs/processor.js.map +1 -0
- package/node_modules/glob/dist/commonjs/walker.d.ts +97 -0
- package/node_modules/glob/dist/commonjs/walker.d.ts.map +1 -0
- package/node_modules/glob/dist/commonjs/walker.js +387 -0
- package/node_modules/glob/dist/commonjs/walker.js.map +1 -0
- package/node_modules/glob/dist/esm/glob.d.ts +388 -0
- package/node_modules/glob/dist/esm/glob.d.ts.map +1 -0
- package/node_modules/glob/dist/esm/glob.js +243 -0
- package/node_modules/glob/dist/esm/glob.js.map +1 -0
- package/node_modules/glob/dist/esm/has-magic.d.ts +14 -0
- package/node_modules/glob/dist/esm/has-magic.d.ts.map +1 -0
- package/node_modules/glob/dist/esm/has-magic.js +23 -0
- package/node_modules/glob/dist/esm/has-magic.js.map +1 -0
- package/node_modules/glob/dist/esm/ignore.d.ts +24 -0
- package/node_modules/glob/dist/esm/ignore.d.ts.map +1 -0
- package/node_modules/glob/dist/esm/ignore.js +115 -0
- package/node_modules/glob/dist/esm/ignore.js.map +1 -0
- package/node_modules/glob/dist/esm/index.d.ts +97 -0
- package/node_modules/glob/dist/esm/index.d.ts.map +1 -0
- package/node_modules/glob/dist/esm/index.js +55 -0
- package/node_modules/glob/dist/esm/index.js.map +1 -0
- package/node_modules/glob/dist/esm/index.min.js +4 -0
- package/node_modules/glob/dist/esm/index.min.js.map +7 -0
- package/node_modules/glob/dist/esm/package.json +3 -0
- package/node_modules/glob/dist/esm/pattern.d.ts +76 -0
- package/node_modules/glob/dist/esm/pattern.d.ts.map +1 -0
- package/node_modules/glob/dist/esm/pattern.js +215 -0
- package/node_modules/glob/dist/esm/pattern.js.map +1 -0
- package/node_modules/glob/dist/esm/processor.d.ts +59 -0
- package/node_modules/glob/dist/esm/processor.d.ts.map +1 -0
- package/node_modules/glob/dist/esm/processor.js +294 -0
- package/node_modules/glob/dist/esm/processor.js.map +1 -0
- package/node_modules/glob/dist/esm/walker.d.ts +97 -0
- package/node_modules/glob/dist/esm/walker.d.ts.map +1 -0
- package/node_modules/glob/dist/esm/walker.js +381 -0
- package/node_modules/glob/dist/esm/walker.js.map +1 -0
- package/node_modules/glob/node_modules/minimatch/LICENSE.md +55 -0
- package/node_modules/glob/node_modules/minimatch/README.md +453 -0
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/assert-valid-pattern.d.ts +2 -0
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/assert-valid-pattern.d.ts.map +1 -0
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/assert-valid-pattern.js +14 -0
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/assert-valid-pattern.js.map +1 -0
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/ast.d.ts +20 -0
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/ast.d.ts.map +1 -0
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/ast.js +591 -0
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/ast.js.map +1 -0
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/brace-expressions.d.ts +8 -0
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/brace-expressions.d.ts.map +1 -0
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/brace-expressions.js +152 -0
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/brace-expressions.js.map +1 -0
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/escape.d.ts +15 -0
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/escape.d.ts.map +1 -0
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/escape.js +30 -0
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/escape.js.map +1 -0
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/index.d.ts +94 -0
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/index.js +1029 -0
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/index.js.map +1 -0
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/package.json +3 -0
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/unescape.d.ts +22 -0
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/unescape.d.ts.map +1 -0
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/unescape.js +38 -0
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/unescape.js.map +1 -0
- package/node_modules/glob/node_modules/minimatch/dist/esm/assert-valid-pattern.d.ts +2 -0
- package/node_modules/glob/node_modules/minimatch/dist/esm/assert-valid-pattern.d.ts.map +1 -0
- package/node_modules/glob/node_modules/minimatch/dist/esm/assert-valid-pattern.js +10 -0
- package/node_modules/glob/node_modules/minimatch/dist/esm/assert-valid-pattern.js.map +1 -0
- package/node_modules/glob/node_modules/minimatch/dist/esm/ast.d.ts +20 -0
- package/node_modules/glob/node_modules/minimatch/dist/esm/ast.d.ts.map +1 -0
- package/node_modules/glob/node_modules/minimatch/dist/esm/ast.js +587 -0
- package/node_modules/glob/node_modules/minimatch/dist/esm/ast.js.map +1 -0
- package/node_modules/glob/node_modules/minimatch/dist/esm/brace-expressions.d.ts +8 -0
- package/node_modules/glob/node_modules/minimatch/dist/esm/brace-expressions.d.ts.map +1 -0
- package/node_modules/glob/node_modules/minimatch/dist/esm/brace-expressions.js +148 -0
- package/node_modules/glob/node_modules/minimatch/dist/esm/brace-expressions.js.map +1 -0
- package/node_modules/glob/node_modules/minimatch/dist/esm/escape.d.ts +15 -0
- package/node_modules/glob/node_modules/minimatch/dist/esm/escape.d.ts.map +1 -0
- package/node_modules/glob/node_modules/minimatch/dist/esm/escape.js +26 -0
- package/node_modules/glob/node_modules/minimatch/dist/esm/escape.js.map +1 -0
- package/node_modules/glob/node_modules/minimatch/dist/esm/index.d.ts +94 -0
- package/node_modules/glob/node_modules/minimatch/dist/esm/index.d.ts.map +1 -0
- package/node_modules/glob/node_modules/minimatch/dist/esm/index.js +1016 -0
- package/node_modules/glob/node_modules/minimatch/dist/esm/index.js.map +1 -0
- package/node_modules/glob/node_modules/minimatch/dist/esm/package.json +3 -0
- package/node_modules/glob/node_modules/minimatch/dist/esm/unescape.d.ts +22 -0
- package/node_modules/glob/node_modules/minimatch/dist/esm/unescape.d.ts.map +1 -0
- package/node_modules/glob/node_modules/minimatch/dist/esm/unescape.js +34 -0
- package/node_modules/glob/node_modules/minimatch/dist/esm/unescape.js.map +1 -0
- package/node_modules/glob/node_modules/minimatch/package.json +67 -0
- package/node_modules/glob/package.json +101 -0
- package/node_modules/minipass/LICENSE +15 -0
- package/node_modules/minipass/README.md +825 -0
- package/node_modules/minipass/dist/commonjs/index.d.ts +549 -0
- package/node_modules/minipass/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/minipass/dist/commonjs/index.js +1028 -0
- package/node_modules/minipass/dist/commonjs/index.js.map +1 -0
- package/node_modules/minipass/dist/commonjs/package.json +3 -0
- package/node_modules/minipass/dist/esm/index.d.ts +549 -0
- package/node_modules/minipass/dist/esm/index.d.ts.map +1 -0
- package/node_modules/minipass/dist/esm/index.js +1018 -0
- package/node_modules/minipass/dist/esm/index.js.map +1 -0
- package/node_modules/minipass/dist/esm/package.json +3 -0
- package/node_modules/minipass/package.json +82 -0
- package/node_modules/package-json-from-dist/LICENSE.md +63 -0
- package/node_modules/package-json-from-dist/README.md +110 -0
- package/node_modules/package-json-from-dist/dist/commonjs/index.d.ts +89 -0
- package/node_modules/package-json-from-dist/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/package-json-from-dist/dist/commonjs/index.js +134 -0
- package/node_modules/package-json-from-dist/dist/commonjs/index.js.map +1 -0
- package/node_modules/package-json-from-dist/dist/commonjs/package.json +3 -0
- package/node_modules/package-json-from-dist/dist/esm/index.d.ts +89 -0
- package/node_modules/package-json-from-dist/dist/esm/index.d.ts.map +1 -0
- package/node_modules/package-json-from-dist/dist/esm/index.js +129 -0
- package/node_modules/package-json-from-dist/dist/esm/index.js.map +1 -0
- package/node_modules/package-json-from-dist/dist/esm/package.json +3 -0
- package/node_modules/package-json-from-dist/package.json +68 -0
- package/node_modules/path-scurry/LICENSE.md +55 -0
- package/node_modules/path-scurry/README.md +636 -0
- package/node_modules/path-scurry/dist/commonjs/index.d.ts +1115 -0
- package/node_modules/path-scurry/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/path-scurry/dist/commonjs/index.js +2018 -0
- package/node_modules/path-scurry/dist/commonjs/index.js.map +1 -0
- package/node_modules/path-scurry/dist/commonjs/package.json +3 -0
- package/node_modules/path-scurry/dist/esm/index.d.ts +1115 -0
- package/node_modules/path-scurry/dist/esm/index.d.ts.map +1 -0
- package/node_modules/path-scurry/dist/esm/index.js +1983 -0
- package/node_modules/path-scurry/dist/esm/index.js.map +1 -0
- package/node_modules/path-scurry/dist/esm/package.json +3 -0
- package/node_modules/path-scurry/node_modules/lru-cache/LICENSE.md +55 -0
- package/node_modules/path-scurry/node_modules/lru-cache/README.md +383 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/index.d.ts +1323 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/index.js +1589 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/index.js.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/index.min.js +2 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/index.min.js.map +7 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/package.json +3 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/index.d.ts +1323 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/index.d.ts.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/index.js +1585 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/index.js.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/index.min.js +2 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/index.min.js.map +7 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/package.json +3 -0
- package/node_modules/path-scurry/node_modules/lru-cache/package.json +101 -0
- package/node_modules/path-scurry/package.json +88 -0
- package/node_modules/rimraf/LICENSE.md +55 -0
- package/node_modules/rimraf/README.md +226 -0
- package/node_modules/rimraf/dist/commonjs/default-tmp.d.ts +3 -0
- package/node_modules/rimraf/dist/commonjs/default-tmp.d.ts.map +1 -0
- package/node_modules/rimraf/dist/commonjs/default-tmp.js +58 -0
- package/node_modules/rimraf/dist/commonjs/default-tmp.js.map +1 -0
- package/node_modules/rimraf/dist/commonjs/error.d.ts +6 -0
- package/node_modules/rimraf/dist/commonjs/error.d.ts.map +1 -0
- package/node_modules/rimraf/dist/commonjs/error.js +10 -0
- package/node_modules/rimraf/dist/commonjs/error.js.map +1 -0
- package/node_modules/rimraf/dist/commonjs/fix-eperm.d.ts +3 -0
- package/node_modules/rimraf/dist/commonjs/fix-eperm.d.ts.map +1 -0
- package/node_modules/rimraf/dist/commonjs/fix-eperm.js +38 -0
- package/node_modules/rimraf/dist/commonjs/fix-eperm.js.map +1 -0
- package/node_modules/rimraf/dist/commonjs/fs.d.ts +15 -0
- package/node_modules/rimraf/dist/commonjs/fs.d.ts.map +1 -0
- package/node_modules/rimraf/dist/commonjs/fs.js +33 -0
- package/node_modules/rimraf/dist/commonjs/fs.js.map +1 -0
- package/node_modules/rimraf/dist/commonjs/ignore-enoent.d.ts +3 -0
- package/node_modules/rimraf/dist/commonjs/ignore-enoent.d.ts.map +1 -0
- package/node_modules/rimraf/dist/commonjs/ignore-enoent.js +24 -0
- package/node_modules/rimraf/dist/commonjs/ignore-enoent.js.map +1 -0
- package/node_modules/rimraf/dist/commonjs/index.d.ts +50 -0
- package/node_modules/rimraf/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/rimraf/dist/commonjs/index.js +78 -0
- package/node_modules/rimraf/dist/commonjs/index.js.map +1 -0
- package/node_modules/rimraf/dist/commonjs/opt-arg.d.ts +34 -0
- package/node_modules/rimraf/dist/commonjs/opt-arg.d.ts.map +1 -0
- package/node_modules/rimraf/dist/commonjs/opt-arg.js +53 -0
- package/node_modules/rimraf/dist/commonjs/opt-arg.js.map +1 -0
- package/node_modules/rimraf/dist/commonjs/package.json +3 -0
- package/node_modules/rimraf/dist/commonjs/path-arg.d.ts +4 -0
- package/node_modules/rimraf/dist/commonjs/path-arg.d.ts.map +1 -0
- package/node_modules/rimraf/dist/commonjs/path-arg.js +48 -0
- package/node_modules/rimraf/dist/commonjs/path-arg.js.map +1 -0
- package/node_modules/rimraf/dist/commonjs/readdir-or-error.d.ts +3 -0
- package/node_modules/rimraf/dist/commonjs/readdir-or-error.d.ts.map +1 -0
- package/node_modules/rimraf/dist/commonjs/readdir-or-error.js +19 -0
- package/node_modules/rimraf/dist/commonjs/readdir-or-error.js.map +1 -0
- package/node_modules/rimraf/dist/commonjs/retry-busy.d.ts +8 -0
- package/node_modules/rimraf/dist/commonjs/retry-busy.d.ts.map +1 -0
- package/node_modules/rimraf/dist/commonjs/retry-busy.js +65 -0
- package/node_modules/rimraf/dist/commonjs/retry-busy.js.map +1 -0
- package/node_modules/rimraf/dist/commonjs/rimraf-manual.d.ts +3 -0
- package/node_modules/rimraf/dist/commonjs/rimraf-manual.d.ts.map +1 -0
- package/node_modules/rimraf/dist/commonjs/rimraf-manual.js +8 -0
- package/node_modules/rimraf/dist/commonjs/rimraf-manual.js.map +1 -0
- package/node_modules/rimraf/dist/commonjs/rimraf-move-remove.d.ts +4 -0
- package/node_modules/rimraf/dist/commonjs/rimraf-move-remove.d.ts.map +1 -0
- package/node_modules/rimraf/dist/commonjs/rimraf-move-remove.js +138 -0
- package/node_modules/rimraf/dist/commonjs/rimraf-move-remove.js.map +1 -0
- package/node_modules/rimraf/dist/commonjs/rimraf-native.d.ts +4 -0
- package/node_modules/rimraf/dist/commonjs/rimraf-native.d.ts.map +1 -0
- package/node_modules/rimraf/dist/commonjs/rimraf-native.js +24 -0
- package/node_modules/rimraf/dist/commonjs/rimraf-native.js.map +1 -0
- package/node_modules/rimraf/dist/commonjs/rimraf-posix.d.ts +4 -0
- package/node_modules/rimraf/dist/commonjs/rimraf-posix.d.ts.map +1 -0
- package/node_modules/rimraf/dist/commonjs/rimraf-posix.js +103 -0
- package/node_modules/rimraf/dist/commonjs/rimraf-posix.js.map +1 -0
- package/node_modules/rimraf/dist/commonjs/rimraf-windows.d.ts +4 -0
- package/node_modules/rimraf/dist/commonjs/rimraf-windows.d.ts.map +1 -0
- package/node_modules/rimraf/dist/commonjs/rimraf-windows.js +159 -0
- package/node_modules/rimraf/dist/commonjs/rimraf-windows.js.map +1 -0
- package/node_modules/rimraf/dist/commonjs/use-native.d.ts +4 -0
- package/node_modules/rimraf/dist/commonjs/use-native.d.ts.map +1 -0
- package/node_modules/rimraf/dist/commonjs/use-native.js +18 -0
- package/node_modules/rimraf/dist/commonjs/use-native.js.map +1 -0
- package/node_modules/rimraf/dist/esm/bin.d.mts +3 -0
- package/node_modules/rimraf/dist/esm/bin.d.mts.map +1 -0
- package/node_modules/rimraf/dist/esm/bin.mjs +250 -0
- package/node_modules/rimraf/dist/esm/bin.mjs.map +1 -0
- package/node_modules/rimraf/dist/esm/default-tmp.d.ts +3 -0
- package/node_modules/rimraf/dist/esm/default-tmp.d.ts.map +1 -0
- package/node_modules/rimraf/dist/esm/default-tmp.js +55 -0
- package/node_modules/rimraf/dist/esm/default-tmp.js.map +1 -0
- package/node_modules/rimraf/dist/esm/error.d.ts +6 -0
- package/node_modules/rimraf/dist/esm/error.d.ts.map +1 -0
- package/node_modules/rimraf/dist/esm/error.js +5 -0
- package/node_modules/rimraf/dist/esm/error.js.map +1 -0
- package/node_modules/rimraf/dist/esm/fix-eperm.d.ts +3 -0
- package/node_modules/rimraf/dist/esm/fix-eperm.d.ts.map +1 -0
- package/node_modules/rimraf/dist/esm/fix-eperm.js +33 -0
- package/node_modules/rimraf/dist/esm/fix-eperm.js.map +1 -0
- package/node_modules/rimraf/dist/esm/fs.d.ts +15 -0
- package/node_modules/rimraf/dist/esm/fs.d.ts.map +1 -0
- package/node_modules/rimraf/dist/esm/fs.js +18 -0
- package/node_modules/rimraf/dist/esm/fs.js.map +1 -0
- package/node_modules/rimraf/dist/esm/ignore-enoent.d.ts +3 -0
- package/node_modules/rimraf/dist/esm/ignore-enoent.d.ts.map +1 -0
- package/node_modules/rimraf/dist/esm/ignore-enoent.js +19 -0
- package/node_modules/rimraf/dist/esm/ignore-enoent.js.map +1 -0
- package/node_modules/rimraf/dist/esm/index.d.ts +50 -0
- package/node_modules/rimraf/dist/esm/index.d.ts.map +1 -0
- package/node_modules/rimraf/dist/esm/index.js +70 -0
- package/node_modules/rimraf/dist/esm/index.js.map +1 -0
- package/node_modules/rimraf/dist/esm/opt-arg.d.ts +34 -0
- package/node_modules/rimraf/dist/esm/opt-arg.d.ts.map +1 -0
- package/node_modules/rimraf/dist/esm/opt-arg.js +46 -0
- package/node_modules/rimraf/dist/esm/opt-arg.js.map +1 -0
- package/node_modules/rimraf/dist/esm/package.json +3 -0
- package/node_modules/rimraf/dist/esm/path-arg.d.ts +4 -0
- package/node_modules/rimraf/dist/esm/path-arg.d.ts.map +1 -0
- package/node_modules/rimraf/dist/esm/path-arg.js +46 -0
- package/node_modules/rimraf/dist/esm/path-arg.js.map +1 -0
- package/node_modules/rimraf/dist/esm/readdir-or-error.d.ts +3 -0
- package/node_modules/rimraf/dist/esm/readdir-or-error.d.ts.map +1 -0
- package/node_modules/rimraf/dist/esm/readdir-or-error.js +14 -0
- package/node_modules/rimraf/dist/esm/readdir-or-error.js.map +1 -0
- package/node_modules/rimraf/dist/esm/retry-busy.d.ts +8 -0
- package/node_modules/rimraf/dist/esm/retry-busy.d.ts.map +1 -0
- package/node_modules/rimraf/dist/esm/retry-busy.js +60 -0
- package/node_modules/rimraf/dist/esm/retry-busy.js.map +1 -0
- package/node_modules/rimraf/dist/esm/rimraf-manual.d.ts +3 -0
- package/node_modules/rimraf/dist/esm/rimraf-manual.d.ts.map +1 -0
- package/node_modules/rimraf/dist/esm/rimraf-manual.js +5 -0
- package/node_modules/rimraf/dist/esm/rimraf-manual.js.map +1 -0
- package/node_modules/rimraf/dist/esm/rimraf-move-remove.d.ts +4 -0
- package/node_modules/rimraf/dist/esm/rimraf-move-remove.d.ts.map +1 -0
- package/node_modules/rimraf/dist/esm/rimraf-move-remove.js +133 -0
- package/node_modules/rimraf/dist/esm/rimraf-move-remove.js.map +1 -0
- package/node_modules/rimraf/dist/esm/rimraf-native.d.ts +4 -0
- package/node_modules/rimraf/dist/esm/rimraf-native.d.ts.map +1 -0
- package/node_modules/rimraf/dist/esm/rimraf-native.js +19 -0
- package/node_modules/rimraf/dist/esm/rimraf-native.js.map +1 -0
- package/node_modules/rimraf/dist/esm/rimraf-posix.d.ts +4 -0
- package/node_modules/rimraf/dist/esm/rimraf-posix.d.ts.map +1 -0
- package/node_modules/rimraf/dist/esm/rimraf-posix.js +98 -0
- package/node_modules/rimraf/dist/esm/rimraf-posix.js.map +1 -0
- package/node_modules/rimraf/dist/esm/rimraf-windows.d.ts +4 -0
- package/node_modules/rimraf/dist/esm/rimraf-windows.d.ts.map +1 -0
- package/node_modules/rimraf/dist/esm/rimraf-windows.js +154 -0
- package/node_modules/rimraf/dist/esm/rimraf-windows.js.map +1 -0
- package/node_modules/rimraf/dist/esm/use-native.d.ts +4 -0
- package/node_modules/rimraf/dist/esm/use-native.d.ts.map +1 -0
- package/node_modules/rimraf/dist/esm/use-native.js +15 -0
- package/node_modules/rimraf/dist/esm/use-native.js.map +1 -0
- package/node_modules/rimraf/package.json +92 -0
- package/package.json +152 -0
- package/scripts/install-scanners.js +258 -0
- package/scripts/watchdog.js +147 -0
- package/src/analyzers/CSSAnalyzer.js +297 -0
- package/src/analyzers/ConfigValidator.js +690 -0
- package/src/analyzers/ESLintAnalyzer.js +320 -0
- package/src/analyzers/JavaScriptAnalyzer.js +261 -0
- package/src/analyzers/PrettierFormatter.js +247 -0
- package/src/analyzers/PythonAnalyzer.js +283 -0
- package/src/analyzers/SecurityAnalyzer.js +729 -0
- package/src/analyzers/SparrowAnalyzer.js +341 -0
- package/src/analyzers/TypeScriptAnalyzer.js +247 -0
- package/src/analyzers/codeCloneDetector/analyzer.js +344 -0
- package/src/analyzers/codeCloneDetector/detector.js +250 -0
- package/src/analyzers/codeCloneDetector/index.js +192 -0
- package/src/analyzers/codeCloneDetector/parser.js +199 -0
- package/src/analyzers/codeCloneDetector/reporter.js +148 -0
- package/src/analyzers/codeCloneDetector/scanner.js +88 -0
- package/src/core/agentPool.js +1957 -0
- package/src/core/agentScheduler.js +3212 -0
- package/src/core/contextManager.js +709 -0
- package/src/core/flowExecutor.js +928 -0
- package/src/core/messageProcessor.js +808 -0
- package/src/core/orchestrator.js +584 -0
- package/src/core/stateManager.js +1500 -0
- package/src/index.js +972 -0
- package/src/interfaces/cli.js +553 -0
- package/src/interfaces/terminal/__tests__/smoke/advancedFeatures.test.js +208 -0
- package/src/interfaces/terminal/__tests__/smoke/agentControl.test.js +236 -0
- package/src/interfaces/terminal/__tests__/smoke/agents.test.js +138 -0
- package/src/interfaces/terminal/__tests__/smoke/components.test.js +137 -0
- package/src/interfaces/terminal/__tests__/smoke/connection.test.js +350 -0
- package/src/interfaces/terminal/__tests__/smoke/enhancements.test.js +156 -0
- package/src/interfaces/terminal/__tests__/smoke/imports.test.js +332 -0
- package/src/interfaces/terminal/__tests__/smoke/messages.test.js +256 -0
- package/src/interfaces/terminal/__tests__/smoke/tools.test.js +388 -0
- package/src/interfaces/terminal/api/apiClient.js +299 -0
- package/src/interfaces/terminal/api/messageRouter.js +262 -0
- package/src/interfaces/terminal/api/session.js +266 -0
- package/src/interfaces/terminal/api/websocket.js +497 -0
- package/src/interfaces/terminal/components/AgentCreator.js +705 -0
- package/src/interfaces/terminal/components/AgentEditor.js +678 -0
- package/src/interfaces/terminal/components/AgentSwitcher.js +330 -0
- package/src/interfaces/terminal/components/ErrorBoundary.js +92 -0
- package/src/interfaces/terminal/components/ErrorPanel.js +264 -0
- package/src/interfaces/terminal/components/Header.js +28 -0
- package/src/interfaces/terminal/components/HelpPanel.js +231 -0
- package/src/interfaces/terminal/components/InputBox.js +118 -0
- package/src/interfaces/terminal/components/Layout.js +603 -0
- package/src/interfaces/terminal/components/LoadingSpinner.js +71 -0
- package/src/interfaces/terminal/components/MessageList.js +281 -0
- package/src/interfaces/terminal/components/MultilineTextInput.js +251 -0
- package/src/interfaces/terminal/components/SearchPanel.js +265 -0
- package/src/interfaces/terminal/components/SettingsPanel.js +415 -0
- package/src/interfaces/terminal/components/StatusBar.js +65 -0
- package/src/interfaces/terminal/components/TextInput.js +127 -0
- package/src/interfaces/terminal/config/agentEditorConstants.js +227 -0
- package/src/interfaces/terminal/config/constants.js +393 -0
- package/src/interfaces/terminal/index.js +168 -0
- package/src/interfaces/terminal/state/useAgentControl.js +496 -0
- package/src/interfaces/terminal/state/useAgents.js +537 -0
- package/src/interfaces/terminal/state/useConnection.js +444 -0
- package/src/interfaces/terminal/state/useMessages.js +630 -0
- package/src/interfaces/terminal/state/useTools.js +554 -0
- package/src/interfaces/terminal/utils/debugLogger.js +44 -0
- package/src/interfaces/terminal/utils/settingsStorage.js +232 -0
- package/src/interfaces/terminal/utils/theme.js +85 -0
- package/src/interfaces/webServer.js +5457 -0
- package/src/modules/fileExplorer/controller.js +413 -0
- package/src/modules/fileExplorer/index.js +37 -0
- package/src/modules/fileExplorer/middleware.js +92 -0
- package/src/modules/fileExplorer/routes.js +158 -0
- package/src/modules/fileExplorer/types.js +44 -0
- package/src/services/agentActivityService.js +399 -0
- package/src/services/aiService.js +2618 -0
- package/src/services/apiKeyManager.js +334 -0
- package/src/services/benchmarkService.js +196 -0
- package/src/services/budgetService.js +565 -0
- package/src/services/contextInjectionService.js +268 -0
- package/src/services/conversationCompactionService.js +1103 -0
- package/src/services/credentialVault.js +685 -0
- package/src/services/errorHandler.js +810 -0
- package/src/services/fileAttachmentService.js +547 -0
- package/src/services/flowContextService.js +189 -0
- package/src/services/memoryService.js +521 -0
- package/src/services/modelRouterService.js +365 -0
- package/src/services/modelsService.js +323 -0
- package/src/services/ollamaService.js +452 -0
- package/src/services/portRegistry.js +336 -0
- package/src/services/portTracker.js +223 -0
- package/src/services/projectDetector.js +404 -0
- package/src/services/promptService.js +372 -0
- package/src/services/qualityInspector.js +796 -0
- package/src/services/scheduleService.js +725 -0
- package/src/services/serviceRegistry.js +386 -0
- package/src/services/skillsService.js +486 -0
- package/src/services/telegramService.js +920 -0
- package/src/services/tokenCountingService.js +316 -0
- package/src/services/visualEditorBridge.js +1033 -0
- package/src/services/visualEditorServer.js +1727 -0
- package/src/services/whatsappService.js +663 -0
- package/src/tools/__tests__/webTool.e2e.test.js +569 -0
- package/src/tools/__tests__/webTool.unit.test.js +195 -0
- package/src/tools/agentCommunicationTool.js +1343 -0
- package/src/tools/agentDelayTool.js +498 -0
- package/src/tools/asyncToolManager.js +604 -0
- package/src/tools/baseTool.js +887 -0
- package/src/tools/browserTool.js +897 -0
- package/src/tools/cloneDetectionTool.js +581 -0
- package/src/tools/codeMapTool.js +857 -0
- package/src/tools/dependencyResolverTool.js +1212 -0
- package/src/tools/docxTool.js +623 -0
- package/src/tools/excelTool.js +636 -0
- package/src/tools/fileContentReplaceTool.js +840 -0
- package/src/tools/fileTreeTool.js +833 -0
- package/src/tools/filesystemTool.js +1217 -0
- package/src/tools/helpTool.js +198 -0
- package/src/tools/imageTool.js +1034 -0
- package/src/tools/importAnalyzerTool.js +1056 -0
- package/src/tools/jobDoneTool.js +388 -0
- package/src/tools/memoryTool.js +554 -0
- package/src/tools/pdfTool.js +627 -0
- package/src/tools/seekTool.js +883 -0
- package/src/tools/skillsTool.js +276 -0
- package/src/tools/staticAnalysisTool.js +2146 -0
- package/src/tools/taskManagerTool.js +2836 -0
- package/src/tools/terminalTool.js +2486 -0
- package/src/tools/userPromptTool.js +474 -0
- package/src/tools/videoTool.js +1139 -0
- package/src/tools/visionTool.js +507 -0
- package/src/tools/visualEditorTool.js +1175 -0
- package/src/tools/webTool.js +3114 -0
- package/src/tools/whatsappTool.js +457 -0
- package/src/types/agent.js +519 -0
- package/src/types/contextReference.js +972 -0
- package/src/types/conversation.js +730 -0
- package/src/types/toolCommand.js +747 -0
- package/src/utilities/attachmentValidator.js +288 -0
- package/src/utilities/browserStealth.js +630 -0
- package/src/utilities/configManager.js +618 -0
- package/src/utilities/constants.js +870 -0
- package/src/utilities/directoryAccessManager.js +566 -0
- package/src/utilities/fileProcessor.js +307 -0
- package/src/utilities/humanBehavior.js +453 -0
- package/src/utilities/jsonRepair.js +242 -0
- package/src/utilities/logger.js +436 -0
- package/src/utilities/platformUtils.js +255 -0
- package/src/utilities/platformUtils.test.js +98 -0
- package/src/utilities/stealthConstants.js +377 -0
- package/src/utilities/structuredFileValidator.js +699 -0
- package/src/utilities/tagParser.js +878 -0
- package/src/utilities/toolConstants.js +415 -0
- package/src/utilities/userDataDir.js +300 -0
- package/web-ui/build/brands/autopilot/favicon.svg +1 -0
- package/web-ui/build/brands/autopilot/logo.webp +0 -0
- package/web-ui/build/brands/onbuzz/favicon.svg +1 -0
- package/web-ui/build/brands/onbuzz/logo-text.webp +0 -0
- package/web-ui/build/brands/onbuzz/logo.webp +0 -0
- package/web-ui/build/index.html +15 -0
- package/web-ui/build/logo.png +0 -0
- package/web-ui/build/logo2.png +0 -0
- package/web-ui/build/static/index-SmQFfvBs.js +746 -0
- package/web-ui/build/static/index-V2ySwjHp.css +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-native.js","sourceRoot":"","sources":["../../src/use-native.ts"],"names":[],"mappings":"AAEA,oBAAoB;AACpB,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO;KAC3C,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;KACjB,KAAK,CAAC,GAAG,CAAC;KACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;AAC5B,MAAM,SAAS,GAAG,KAAK,GAAG,EAAE,IAAI,CAAC,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC,CAAA;AAE7D,oEAAoE;AACpE,yEAAyE;AACzE,MAAM,CAAC,MAAM,SAAS,GACpB,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IAC1C,GAAG,EAAE,CAAC,KAAK;IACb,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,MAAM,CAAA;AACvC,MAAM,CAAC,MAAM,aAAa,GACxB,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IAC1C,GAAG,EAAE,CAAC,KAAK;IACb,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,MAAM,CAAA","sourcesContent":["import { RimrafAsyncOptions, RimrafOptions } from './index.js'\n\n/* c8 ignore next */\nconst [major = 0, minor = 0] = process.version\n .replace(/^v/, '')\n .split('.')\n .map(v => parseInt(v, 10))\nconst hasNative = major > 14 || (major === 14 && minor >= 14)\n\n// we do NOT use native by default on Windows, because Node's native\n// rm implementation is less advanced. Change this code if that changes.\nexport const useNative: (opt?: RimrafAsyncOptions) => boolean =\n !hasNative || process.platform === 'win32' ?\n () => false\n : opt => !opt?.signal && !opt?.filter\nexport const useNativeSync: (opt?: RimrafOptions) => boolean =\n !hasNative || process.platform === 'win32' ?\n () => false\n : opt => !opt?.signal && !opt?.filter\n"]}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "rimraf",
|
|
3
|
+
"version": "6.1.2",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"tshy": {
|
|
6
|
+
"main": true,
|
|
7
|
+
"exports": {
|
|
8
|
+
"./package.json": "./package.json",
|
|
9
|
+
".": "./src/index.ts"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"bin": "./dist/esm/bin.mjs",
|
|
13
|
+
"main": "./dist/commonjs/index.js",
|
|
14
|
+
"types": "./dist/commonjs/index.d.ts",
|
|
15
|
+
"exports": {
|
|
16
|
+
"./package.json": "./package.json",
|
|
17
|
+
".": {
|
|
18
|
+
"import": {
|
|
19
|
+
"types": "./dist/esm/index.d.ts",
|
|
20
|
+
"default": "./dist/esm/index.js"
|
|
21
|
+
},
|
|
22
|
+
"require": {
|
|
23
|
+
"types": "./dist/commonjs/index.d.ts",
|
|
24
|
+
"default": "./dist/commonjs/index.js"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"files": [
|
|
29
|
+
"dist"
|
|
30
|
+
],
|
|
31
|
+
"description": "A deep deletion module for node (like `rm -rf`)",
|
|
32
|
+
"author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
|
|
33
|
+
"license": "BlueOak-1.0.0",
|
|
34
|
+
"repository": "git@github.com:isaacs/rimraf.git",
|
|
35
|
+
"scripts": {
|
|
36
|
+
"preversion": "npm test",
|
|
37
|
+
"postversion": "npm publish",
|
|
38
|
+
"prepublishOnly": "git push origin --follow-tags",
|
|
39
|
+
"prepare": "tshy",
|
|
40
|
+
"pretest": "npm run prepare",
|
|
41
|
+
"presnap": "npm run prepare",
|
|
42
|
+
"test": "tap",
|
|
43
|
+
"snap": "tap",
|
|
44
|
+
"format": "prettier --write . --log-level warn",
|
|
45
|
+
"benchmark": "node benchmark/index.js",
|
|
46
|
+
"typedoc": "typedoc --tsconfig .tshy/esm.json ./src/*.ts"
|
|
47
|
+
},
|
|
48
|
+
"prettier": {
|
|
49
|
+
"experimentalTernaries": true,
|
|
50
|
+
"semi": false,
|
|
51
|
+
"printWidth": 80,
|
|
52
|
+
"tabWidth": 2,
|
|
53
|
+
"useTabs": false,
|
|
54
|
+
"singleQuote": true,
|
|
55
|
+
"jsxSingleQuote": false,
|
|
56
|
+
"bracketSameLine": true,
|
|
57
|
+
"arrowParens": "avoid",
|
|
58
|
+
"endOfLine": "lf"
|
|
59
|
+
},
|
|
60
|
+
"devDependencies": {
|
|
61
|
+
"@types/node": "^24.9.2",
|
|
62
|
+
"mkdirp": "^3.0.1",
|
|
63
|
+
"prettier": "^3.6.2",
|
|
64
|
+
"tap": "^21.1.1",
|
|
65
|
+
"tshy": "^3.0.3",
|
|
66
|
+
"typedoc": "^0.28.14"
|
|
67
|
+
},
|
|
68
|
+
"funding": {
|
|
69
|
+
"url": "https://github.com/sponsors/isaacs"
|
|
70
|
+
},
|
|
71
|
+
"engines": {
|
|
72
|
+
"node": "20 || >=22"
|
|
73
|
+
},
|
|
74
|
+
"dependencies": {
|
|
75
|
+
"glob": "^13.0.0",
|
|
76
|
+
"package-json-from-dist": "^1.0.1"
|
|
77
|
+
},
|
|
78
|
+
"keywords": [
|
|
79
|
+
"rm",
|
|
80
|
+
"rm -rf",
|
|
81
|
+
"rm -fr",
|
|
82
|
+
"remove",
|
|
83
|
+
"directory",
|
|
84
|
+
"cli",
|
|
85
|
+
"rmdir",
|
|
86
|
+
"recursive"
|
|
87
|
+
],
|
|
88
|
+
"module": "./dist/esm/index.js",
|
|
89
|
+
"tap": {
|
|
90
|
+
"coverage-map": "map.js"
|
|
91
|
+
}
|
|
92
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "onbuzz",
|
|
3
|
+
"version": "3.3.0",
|
|
4
|
+
"description": "Loxia OnBuzz — Your AI Fleet",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "src/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"onbuzz": "./bin/cli.js"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"start": "node src/index.js",
|
|
12
|
+
"dev": "node --inspect src/index.js",
|
|
13
|
+
"terminal-ui": "node bin/loxia-terminal.js",
|
|
14
|
+
"terminal-ui-v2": "node bin/loxia-terminal-v2.js",
|
|
15
|
+
"start:terminal": "node bin/start-with-terminal.js",
|
|
16
|
+
"test": "NODE_OPTIONS='--experimental-vm-modules' jest",
|
|
17
|
+
"lint": "eslint src/",
|
|
18
|
+
"typecheck": "echo 'No TypeScript - skipping typecheck'",
|
|
19
|
+
"build": "npm run build:web-ui",
|
|
20
|
+
"build:web-ui": "cd web-ui && npm install && npm run build && cd ..",
|
|
21
|
+
"build:binary": "pkg . --compress GZip",
|
|
22
|
+
"build:binary:win": "pkg . --target node20-win-x64 --output dist/loxia.exe --compress GZip",
|
|
23
|
+
"build:binary:mac": "pkg . --target node20-macos-x64 --output dist/loxia-macos --compress GZip",
|
|
24
|
+
"build:binary:linux": "pkg . --target node20-linux-x64 --output dist/loxia-linux --compress GZip",
|
|
25
|
+
"docs": "jsdoc -c jsdoc.config.json",
|
|
26
|
+
"postinstall": "node scripts/install-scanners.js",
|
|
27
|
+
"prepublishOnly": "npm run build"
|
|
28
|
+
},
|
|
29
|
+
"keywords": [
|
|
30
|
+
"ai",
|
|
31
|
+
"agents",
|
|
32
|
+
"automation",
|
|
33
|
+
"coding-assistant",
|
|
34
|
+
"no-code",
|
|
35
|
+
"vibe-code"
|
|
36
|
+
],
|
|
37
|
+
"author": "Loxia AI",
|
|
38
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
39
|
+
"files": [
|
|
40
|
+
"bin/",
|
|
41
|
+
"src/",
|
|
42
|
+
"web-ui/build/",
|
|
43
|
+
"web-ui/dist/",
|
|
44
|
+
"scripts/",
|
|
45
|
+
"README.md",
|
|
46
|
+
"LICENSE"
|
|
47
|
+
],
|
|
48
|
+
"bundledDependencies": [
|
|
49
|
+
"glob",
|
|
50
|
+
"rimraf"
|
|
51
|
+
],
|
|
52
|
+
"engines": {
|
|
53
|
+
"node": ">=20.0.0"
|
|
54
|
+
},
|
|
55
|
+
"dependencies": {
|
|
56
|
+
"@babel/parser": "^7.28.5",
|
|
57
|
+
"@babel/traverse": "^7.28.5",
|
|
58
|
+
"blessed": "^0.1.81",
|
|
59
|
+
"blessed-contrib": "^4.11.0",
|
|
60
|
+
"chalk": "^5.6.2",
|
|
61
|
+
"docx": "^9.5.3",
|
|
62
|
+
"exceljs": "^4.4.0",
|
|
63
|
+
"express": "^4.18.2",
|
|
64
|
+
"ghost-cursor": "^1.4.2",
|
|
65
|
+
"glob": "^13.0.0",
|
|
66
|
+
"http-proxy-middleware": "^3.0.5",
|
|
67
|
+
"ink": "^5.2.1",
|
|
68
|
+
"jsonrepair": "^3.13.2",
|
|
69
|
+
"mammoth": "^1.11.0",
|
|
70
|
+
"node-telegram-bot-api": "^0.67.0",
|
|
71
|
+
"ollama": "^0.6.3",
|
|
72
|
+
"pdf2json": "^3.1.4",
|
|
73
|
+
"postcss": "^8.5.6",
|
|
74
|
+
"postcss-less": "^6.0.0",
|
|
75
|
+
"postcss-scss": "^4.0.9",
|
|
76
|
+
"prettier": "^3.6.2",
|
|
77
|
+
"puppeteer": "^24.25.0",
|
|
78
|
+
"puppeteer-extra": "^3.3.6",
|
|
79
|
+
"puppeteer-extra-plugin-stealth": "^2.11.2",
|
|
80
|
+
"react": "^18.3.1",
|
|
81
|
+
"rimraf": "^6.0.0",
|
|
82
|
+
"sparrow-sast": "^1.0.1",
|
|
83
|
+
"strip-ansi": "^7.1.2",
|
|
84
|
+
"stylelint": "^16.25.0",
|
|
85
|
+
"stylelint-config-standard": "^39.0.1",
|
|
86
|
+
"tiktoken": "^1.0.15",
|
|
87
|
+
"typescript": "^5.9.3",
|
|
88
|
+
"uuid": "^11.1.0",
|
|
89
|
+
"ws": "^8.16.0"
|
|
90
|
+
},
|
|
91
|
+
"optionalDependencies": {
|
|
92
|
+
"whatsapp-web.js": "^1.34.6"
|
|
93
|
+
},
|
|
94
|
+
"devDependencies": {
|
|
95
|
+
"@types/blessed": "^0.1.25",
|
|
96
|
+
"@yao-pkg/pkg": "^6.0.0",
|
|
97
|
+
"ajv": "^8.17.1",
|
|
98
|
+
"ajv-formats": "^3.0.1",
|
|
99
|
+
"esbuild": "^0.24.0",
|
|
100
|
+
"eslint": "^8.57.1",
|
|
101
|
+
"eslint-plugin-security": "^3.0.1",
|
|
102
|
+
"jest": "^29.7.0",
|
|
103
|
+
"jsdoc": "^4.0.2"
|
|
104
|
+
},
|
|
105
|
+
"pkg": {
|
|
106
|
+
"scripts": [
|
|
107
|
+
"src/**/*.js",
|
|
108
|
+
"bin/**/*.js"
|
|
109
|
+
],
|
|
110
|
+
"assets": [
|
|
111
|
+
"web-ui/build/**/*",
|
|
112
|
+
"config/**/*",
|
|
113
|
+
"node_modules/tiktoken/**/*",
|
|
114
|
+
"node_modules/puppeteer/**/*"
|
|
115
|
+
],
|
|
116
|
+
"targets": [
|
|
117
|
+
"node20-win-x64",
|
|
118
|
+
"node20-macos-x64",
|
|
119
|
+
"node20-linux-x64"
|
|
120
|
+
],
|
|
121
|
+
"outputPath": "dist"
|
|
122
|
+
},
|
|
123
|
+
"jest": {
|
|
124
|
+
"testEnvironment": "node",
|
|
125
|
+
"transform": {},
|
|
126
|
+
"collectCoverageFrom": [
|
|
127
|
+
"src/**/*.js",
|
|
128
|
+
"!src/**/*.test.js"
|
|
129
|
+
]
|
|
130
|
+
},
|
|
131
|
+
"eslintConfig": {
|
|
132
|
+
"env": {
|
|
133
|
+
"node": true,
|
|
134
|
+
"es2022": true
|
|
135
|
+
},
|
|
136
|
+
"extends": [
|
|
137
|
+
"eslint:recommended"
|
|
138
|
+
],
|
|
139
|
+
"parserOptions": {
|
|
140
|
+
"ecmaVersion": 2022,
|
|
141
|
+
"sourceType": "module"
|
|
142
|
+
},
|
|
143
|
+
"rules": {
|
|
144
|
+
"no-unused-vars": "warn",
|
|
145
|
+
"no-console": "off"
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
"bundleDependencies": [
|
|
149
|
+
"glob",
|
|
150
|
+
"rimraf"
|
|
151
|
+
]
|
|
152
|
+
}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Post-install script to set up security scanners
|
|
4
|
+
* Automatically installs required scanners for the platform
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { exec } from 'child_process';
|
|
8
|
+
import { promisify } from 'util';
|
|
9
|
+
import https from 'https';
|
|
10
|
+
import http from 'http';
|
|
11
|
+
import fs from 'fs';
|
|
12
|
+
import path from 'path';
|
|
13
|
+
import { fileURLToPath } from 'url';
|
|
14
|
+
import { createWriteStream } from 'fs';
|
|
15
|
+
import { pipeline } from 'stream/promises';
|
|
16
|
+
|
|
17
|
+
const execAsync = promisify(exec);
|
|
18
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
19
|
+
const __dirname = path.dirname(__filename);
|
|
20
|
+
|
|
21
|
+
const SCANNER_DIR = path.join(__dirname, '..', 'node_modules', '.scanners');
|
|
22
|
+
const SEMGREP_VERSION = 'v1.55.0';
|
|
23
|
+
|
|
24
|
+
console.log('═══════════════════════════════════════════════════════════');
|
|
25
|
+
console.log(' Installing Security Scanners');
|
|
26
|
+
console.log(` Platform: ${process.platform} (${process.arch})`);
|
|
27
|
+
console.log('═══════════════════════════════════════════════════════════\n');
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Main installation function
|
|
31
|
+
*/
|
|
32
|
+
async function installScanners() {
|
|
33
|
+
// Ensure scanner directory exists
|
|
34
|
+
await fs.promises.mkdir(SCANNER_DIR, { recursive: true });
|
|
35
|
+
|
|
36
|
+
// 1. Check ESLint Security Plugin (should be in package.json)
|
|
37
|
+
await checkESLintSecurity();
|
|
38
|
+
|
|
39
|
+
// 2. Install Semgrep standalone binary
|
|
40
|
+
await installSemgrep();
|
|
41
|
+
|
|
42
|
+
// 3. Optionally install Python scanners if Python is available
|
|
43
|
+
await installPythonScanners();
|
|
44
|
+
|
|
45
|
+
console.log('\n═══════════════════════════════════════════════════════════');
|
|
46
|
+
console.log(' Installation Complete');
|
|
47
|
+
console.log('═══════════════════════════════════════════════════════════\n');
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Check if ESLint Security Plugin is installed
|
|
52
|
+
*/
|
|
53
|
+
async function checkESLintSecurity() {
|
|
54
|
+
console.log('📦 Checking ESLint Security Plugin...');
|
|
55
|
+
try {
|
|
56
|
+
await import('eslint-plugin-security');
|
|
57
|
+
console.log(' ✅ eslint-plugin-security is installed\n');
|
|
58
|
+
} catch (error) {
|
|
59
|
+
console.log(' ⚠️ eslint-plugin-security not found');
|
|
60
|
+
console.log(' Run: npm install --save-dev eslint-plugin-security\n');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Install Semgrep standalone binary for the current platform
|
|
66
|
+
*/
|
|
67
|
+
async function installSemgrep() {
|
|
68
|
+
console.log('🔍 Installing Semgrep...');
|
|
69
|
+
|
|
70
|
+
const platform = process.platform;
|
|
71
|
+
const arch = process.arch;
|
|
72
|
+
|
|
73
|
+
// Check if semgrep is already installed globally
|
|
74
|
+
try {
|
|
75
|
+
const result = await execAsync('semgrep --version', { timeout: 5000 });
|
|
76
|
+
console.log(` ✅ Semgrep already installed: ${result.stdout.trim()}`);
|
|
77
|
+
console.log(' Using system-installed Semgrep\n');
|
|
78
|
+
return;
|
|
79
|
+
} catch (error) {
|
|
80
|
+
console.log(' Semgrep not found in PATH, installing standalone binary...');
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Determine download URL based on platform
|
|
84
|
+
const binaryInfo = getSemgrepBinaryInfo(platform, arch);
|
|
85
|
+
|
|
86
|
+
if (!binaryInfo) {
|
|
87
|
+
console.log(` ⚠️ No Semgrep binary available for ${platform}-${arch}`);
|
|
88
|
+
console.log(' Please install manually: https://semgrep.dev/docs/getting-started/\n');
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
try {
|
|
93
|
+
const binaryPath = path.join(SCANNER_DIR, 'semgrep');
|
|
94
|
+
|
|
95
|
+
console.log(` Downloading from ${binaryInfo.url}...`);
|
|
96
|
+
await downloadFile(binaryInfo.url, binaryPath);
|
|
97
|
+
|
|
98
|
+
// Make executable
|
|
99
|
+
await fs.promises.chmod(binaryPath, 0o755);
|
|
100
|
+
|
|
101
|
+
console.log(' ✅ Semgrep installed successfully');
|
|
102
|
+
console.log(` Location: ${binaryPath}\n`);
|
|
103
|
+
|
|
104
|
+
// Add to PATH environment note
|
|
105
|
+
console.log(' Note: To use system-wide, add to PATH or install globally:');
|
|
106
|
+
console.log(' pip install semgrep\n');
|
|
107
|
+
} catch (error) {
|
|
108
|
+
console.log(` ⚠️ Failed to install Semgrep: ${error.message}`);
|
|
109
|
+
console.log(' You can install manually: pip install semgrep\n');
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Get Semgrep binary info for platform
|
|
115
|
+
*/
|
|
116
|
+
function getSemgrepBinaryInfo(platform, arch) {
|
|
117
|
+
// Semgrep binary URLs (using latest stable release)
|
|
118
|
+
// Note: Semgrep doesn't provide standalone binaries anymore for all platforms
|
|
119
|
+
// They recommend using pip install or Docker
|
|
120
|
+
|
|
121
|
+
// For now, we'll provide instructions rather than downloading
|
|
122
|
+
// The actual implementation would use Semgrep's Python package
|
|
123
|
+
|
|
124
|
+
return null; // Will trigger manual installation message
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Install Python-based scanners (Bandit, pip-audit) if Python is available
|
|
129
|
+
*/
|
|
130
|
+
async function installPythonScanners() {
|
|
131
|
+
console.log('🐍 Checking Python scanners...');
|
|
132
|
+
|
|
133
|
+
// Check if Python is available
|
|
134
|
+
let pythonCommand = null;
|
|
135
|
+
|
|
136
|
+
try {
|
|
137
|
+
await execAsync('python3 --version', { timeout: 5000 });
|
|
138
|
+
pythonCommand = 'python3';
|
|
139
|
+
} catch (error) {
|
|
140
|
+
try {
|
|
141
|
+
await execAsync('python --version', { timeout: 5000 });
|
|
142
|
+
pythonCommand = 'python';
|
|
143
|
+
} catch (error2) {
|
|
144
|
+
console.log(' ⚠️ Python not found - skipping Python scanners');
|
|
145
|
+
console.log(' To enable Python scanning, install Python and run:');
|
|
146
|
+
console.log(' pip install semgrep bandit pip-audit checkov yamllint\n');
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
console.log(` ✅ Python found: ${pythonCommand}`);
|
|
152
|
+
|
|
153
|
+
// Security scanners
|
|
154
|
+
await installViaPip('semgrep', pythonCommand);
|
|
155
|
+
await installViaPip('bandit', pythonCommand);
|
|
156
|
+
await installViaPip('pip-audit', pythonCommand);
|
|
157
|
+
|
|
158
|
+
// Config validation tools
|
|
159
|
+
await installViaPip('checkov', pythonCommand);
|
|
160
|
+
await installViaPip('yamllint', pythonCommand);
|
|
161
|
+
|
|
162
|
+
console.log('');
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Check if Python is from Homebrew installation (macOS)
|
|
167
|
+
* Homebrew Python doesn't support --user flag
|
|
168
|
+
*/
|
|
169
|
+
async function isHomebrewPython(pythonCommand) {
|
|
170
|
+
try {
|
|
171
|
+
const { stdout } = await execAsync(`${pythonCommand} -c "import sys; print(sys.prefix)"`, {
|
|
172
|
+
timeout: 5000
|
|
173
|
+
});
|
|
174
|
+
return stdout.includes('/opt/homebrew') || stdout.includes('/usr/local/Cellar');
|
|
175
|
+
} catch {
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Install a Python package via pip
|
|
182
|
+
* Automatically detects Homebrew Python and skips --user flag
|
|
183
|
+
*/
|
|
184
|
+
async function installViaPip(packageName, pythonCommand) {
|
|
185
|
+
try {
|
|
186
|
+
// Check if already installed
|
|
187
|
+
const checkResult = await execAsync(`${pythonCommand} -m pip show ${packageName}`, {
|
|
188
|
+
timeout: 5000
|
|
189
|
+
});
|
|
190
|
+
console.log(` ✅ ${packageName} already installed`);
|
|
191
|
+
return true;
|
|
192
|
+
} catch (error) {
|
|
193
|
+
// Not installed, try to install
|
|
194
|
+
console.log(` Installing ${packageName}...`);
|
|
195
|
+
try {
|
|
196
|
+
// Detect if using Homebrew Python (skip --user flag)
|
|
197
|
+
const isHomebrew = await isHomebrewPython(pythonCommand);
|
|
198
|
+
const userFlag = isHomebrew ? '' : '--user';
|
|
199
|
+
|
|
200
|
+
const installCmd = `${pythonCommand} -m pip install ${userFlag} ${packageName}`.replace(/\s+/g, ' ').trim();
|
|
201
|
+
await execAsync(installCmd, {
|
|
202
|
+
timeout: 60000
|
|
203
|
+
});
|
|
204
|
+
console.log(` ✅ ${packageName} installed successfully`);
|
|
205
|
+
return true;
|
|
206
|
+
} catch (installError) {
|
|
207
|
+
console.log(` ⚠️ Failed to install ${packageName}: ${installError.message}`);
|
|
208
|
+
console.log(` You can install manually: pip install ${packageName}`);
|
|
209
|
+
return false;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Download a file from URL
|
|
216
|
+
*/
|
|
217
|
+
async function downloadFile(url, outputPath) {
|
|
218
|
+
return new Promise((resolve, reject) => {
|
|
219
|
+
const client = url.startsWith('https') ? https : http;
|
|
220
|
+
|
|
221
|
+
client.get(url, (response) => {
|
|
222
|
+
if (response.statusCode === 302 || response.statusCode === 301) {
|
|
223
|
+
// Follow redirect
|
|
224
|
+
downloadFile(response.headers.location, outputPath)
|
|
225
|
+
.then(resolve)
|
|
226
|
+
.catch(reject);
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
if (response.statusCode !== 200) {
|
|
231
|
+
reject(new Error(`Failed to download: HTTP ${response.statusCode}`));
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
const fileStream = createWriteStream(outputPath);
|
|
236
|
+
response.pipe(fileStream);
|
|
237
|
+
|
|
238
|
+
fileStream.on('finish', () => {
|
|
239
|
+
fileStream.close();
|
|
240
|
+
resolve();
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
fileStream.on('error', (error) => {
|
|
244
|
+
fs.unlink(outputPath, () => {}); // Delete partial file
|
|
245
|
+
reject(error);
|
|
246
|
+
});
|
|
247
|
+
}).on('error', reject);
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
// Run installation
|
|
252
|
+
installScanners().catch((error) => {
|
|
253
|
+
console.error('❌ Installation failed:', error.message);
|
|
254
|
+
console.error('\nYou can manually install scanners:');
|
|
255
|
+
console.error(' npm install --save-dev eslint-plugin-security');
|
|
256
|
+
console.error(' pip install semgrep bandit pip-audit');
|
|
257
|
+
process.exit(0); // Don't fail npm install
|
|
258
|
+
});
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Watchdog Script - External process for restarting Loxia Autopilot
|
|
4
|
+
*
|
|
5
|
+
* This script is spawned as an independent process before the main Loxia
|
|
6
|
+
* process terminates. It waits for the specified delay, then restarts
|
|
7
|
+
* Loxia using the configured command.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* node watchdog.js [options]
|
|
11
|
+
*
|
|
12
|
+
* Options:
|
|
13
|
+
* --delay <ms> Delay before restart in milliseconds (default: 5000)
|
|
14
|
+
* --command <cmd> Command to run (default: "loxia web")
|
|
15
|
+
* --pid <pid> Parent PID to wait for (optional)
|
|
16
|
+
*
|
|
17
|
+
* Examples:
|
|
18
|
+
* node watchdog.js --delay 3000 --command "loxia web"
|
|
19
|
+
* node watchdog.js --command "npx @loxia-labs/loxia-autopilot-one web"
|
|
20
|
+
* node watchdog.js --delay 5000 --command "loxia web --port 3000"
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
const { spawn, execSync } = require('child_process');
|
|
24
|
+
const path = require('path');
|
|
25
|
+
const fs = require('fs');
|
|
26
|
+
|
|
27
|
+
// Log to file for debugging (since stdio might be ignored)
|
|
28
|
+
// Use script directory for reliable location
|
|
29
|
+
const logFile = path.join(__dirname, 'watchdog.log');
|
|
30
|
+
function log(message) {
|
|
31
|
+
const timestamp = new Date().toISOString();
|
|
32
|
+
const line = `[${timestamp}] ${message}\n`;
|
|
33
|
+
console.log(message);
|
|
34
|
+
try {
|
|
35
|
+
fs.appendFileSync(logFile, line);
|
|
36
|
+
} catch (e) {
|
|
37
|
+
// Ignore file write errors
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Log startup immediately
|
|
42
|
+
log('[Watchdog] Script loaded');
|
|
43
|
+
|
|
44
|
+
// Parse command line arguments
|
|
45
|
+
function parseArgs() {
|
|
46
|
+
const args = process.argv.slice(2);
|
|
47
|
+
const options = {
|
|
48
|
+
delay: 5000,
|
|
49
|
+
command: 'loxia web',
|
|
50
|
+
pid: null
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
for (let i = 0; i < args.length; i++) {
|
|
54
|
+
switch (args[i]) {
|
|
55
|
+
case '--delay':
|
|
56
|
+
options.delay = parseInt(args[++i], 10) || 5000;
|
|
57
|
+
break;
|
|
58
|
+
case '--command':
|
|
59
|
+
options.command = args[++i] || 'loxia web';
|
|
60
|
+
break;
|
|
61
|
+
case '--pid':
|
|
62
|
+
options.pid = parseInt(args[++i], 10) || null;
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return options;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Check if a process is still running
|
|
71
|
+
function isProcessRunning(pid) {
|
|
72
|
+
try {
|
|
73
|
+
process.kill(pid, 0);
|
|
74
|
+
return true;
|
|
75
|
+
} catch (e) {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// Wait for parent process to terminate (optional)
|
|
81
|
+
async function waitForParentExit(pid, timeout = 30000) {
|
|
82
|
+
if (!pid) return;
|
|
83
|
+
|
|
84
|
+
const startTime = Date.now();
|
|
85
|
+
|
|
86
|
+
while (isProcessRunning(pid)) {
|
|
87
|
+
if (Date.now() - startTime > timeout) {
|
|
88
|
+
log(`[Watchdog] Parent process ${pid} still running after ${timeout}ms, proceeding anyway`);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
log(`[Watchdog] Parent process ${pid} has terminated`);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// Main execution
|
|
98
|
+
async function main() {
|
|
99
|
+
const options = parseArgs();
|
|
100
|
+
|
|
101
|
+
log(`[Watchdog] Started with options:`, {
|
|
102
|
+
delay: options.delay,
|
|
103
|
+
command: options.command,
|
|
104
|
+
pid: options.pid
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
// Wait for parent to exit if PID provided
|
|
108
|
+
if (options.pid) {
|
|
109
|
+
log(`[Watchdog] Waiting for parent process ${options.pid} to exit...`);
|
|
110
|
+
await waitForParentExit(options.pid);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// Wait for configured delay
|
|
114
|
+
log(`[Watchdog] Waiting ${options.delay}ms before restart...`);
|
|
115
|
+
await new Promise(resolve => setTimeout(resolve, options.delay));
|
|
116
|
+
|
|
117
|
+
// Parse command and arguments
|
|
118
|
+
const parts = options.command.split(' ');
|
|
119
|
+
const cmd = parts[0];
|
|
120
|
+
const args = parts.slice(1);
|
|
121
|
+
|
|
122
|
+
log(`[Watchdog] Executing: ${cmd} ${args.join(' ')}`);
|
|
123
|
+
|
|
124
|
+
// Spawn the new process
|
|
125
|
+
// Use shell on all platforms for proper resolution of npm global commands (like 'loxia')
|
|
126
|
+
const isWindows = process.platform === 'win32';
|
|
127
|
+
|
|
128
|
+
const child = spawn(cmd, args, {
|
|
129
|
+
detached: true,
|
|
130
|
+
stdio: 'ignore', // Ignore stdio - Loxia web server will be accessible via browser
|
|
131
|
+
shell: true, // Use shell for command resolution (npm globals, PATH, etc.)
|
|
132
|
+
windowsHide: false // Show console on Windows so user knows it's running
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
child.unref();
|
|
136
|
+
|
|
137
|
+
log(`[Watchdog] Loxia restarted with PID ${child.pid}`);
|
|
138
|
+
log(`[Watchdog] Watchdog exiting...`);
|
|
139
|
+
|
|
140
|
+
// Give the child process a moment to start
|
|
141
|
+
setTimeout(() => process.exit(0), 1000);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
main().catch(error => {
|
|
145
|
+
log(`[Watchdog] Error: ${error.message}`);
|
|
146
|
+
process.exit(1);
|
|
147
|
+
});
|