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,415 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Command Constants
|
|
3
|
+
*
|
|
4
|
+
* Centralized constants for tool command recognition and parsing
|
|
5
|
+
* This ensures consistent tool identification across the system
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Tool IDs - The canonical identifiers for each tool
|
|
10
|
+
*/
|
|
11
|
+
export const TOOL_IDS = {
|
|
12
|
+
AGENT_COMMUNICATION: 'agentcommunication',
|
|
13
|
+
TERMINAL: 'terminal',
|
|
14
|
+
FILESYSTEM: 'filesystem',
|
|
15
|
+
// BROWSER: 'browser', // DEPRECATED - use WEB instead
|
|
16
|
+
AGENT_DELAY: 'agentdelay',
|
|
17
|
+
JOB_DONE: 'jobdone',
|
|
18
|
+
TASK_MANAGER: 'taskmanager',
|
|
19
|
+
IMPORT_ANALYZER: 'import-analyzer',
|
|
20
|
+
DEPENDENCY_RESOLVER: 'dependency-resolver',
|
|
21
|
+
IMAGE_GEN: 'image-gen',
|
|
22
|
+
VIDEO_GEN: 'video-gen',
|
|
23
|
+
CLONE_DETECTION: 'clonedetection',
|
|
24
|
+
FILE_TREE: 'file-tree',
|
|
25
|
+
FILE_CONTENT_REPLACE: 'file-content-replace',
|
|
26
|
+
SEEK: 'seek',
|
|
27
|
+
WEB: 'web',
|
|
28
|
+
STATIC_ANALYSIS: 'staticanalysis',
|
|
29
|
+
HELP: 'help',
|
|
30
|
+
PDF: 'pdf',
|
|
31
|
+
DOC: 'doc',
|
|
32
|
+
SPREADSHEET: 'spreadsheet',
|
|
33
|
+
SKILLS: 'skills',
|
|
34
|
+
VISION: 'vision'
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Agent Communication Tool Actions
|
|
39
|
+
* These are the valid action types for the agent communication tool
|
|
40
|
+
*/
|
|
41
|
+
export const AGENT_COMM_ACTIONS = {
|
|
42
|
+
GET_AVAILABLE: 'get-available-agents',
|
|
43
|
+
SEND_MESSAGE: 'send-message',
|
|
44
|
+
REPLY_MESSAGE: 'reply-to-message',
|
|
45
|
+
GET_UNREPLIED: 'get-unreplied-messages',
|
|
46
|
+
MARK_ENDED: 'mark-conversation-ended'
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Terminal Tool Actions
|
|
51
|
+
*/
|
|
52
|
+
export const TERMINAL_ACTIONS = {
|
|
53
|
+
RUN_COMMAND: 'run-command',
|
|
54
|
+
CHANGE_DIR: 'change-directory',
|
|
55
|
+
LIST_DIR: 'list-directory',
|
|
56
|
+
CREATE_DIR: 'create-directory',
|
|
57
|
+
GET_CWD: 'get-working-directory'
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Filesystem Tool Actions
|
|
62
|
+
*/
|
|
63
|
+
export const FILESYSTEM_ACTIONS = {
|
|
64
|
+
READ_FILE: 'read-file',
|
|
65
|
+
WRITE_FILE: 'write-file',
|
|
66
|
+
APPEND_FILE: 'append-file',
|
|
67
|
+
DELETE_FILE: 'delete-file',
|
|
68
|
+
LIST_FILES: 'list-files',
|
|
69
|
+
CREATE_DIR: 'fs-create-directory', // Prefixed to avoid conflict with terminal
|
|
70
|
+
DELETE_DIR: 'fs-delete-directory', // Prefixed for consistency
|
|
71
|
+
MOVE_FILE: 'move-file',
|
|
72
|
+
COPY_FILE: 'copy-file',
|
|
73
|
+
GET_INFO: 'get-file-info'
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Browser Tool Actions
|
|
78
|
+
* @deprecated Use WEB tool instead - Browser tool is deprecated as of December 2024
|
|
79
|
+
*/
|
|
80
|
+
export const BROWSER_ACTIONS = {
|
|
81
|
+
NAVIGATE: 'navigate',
|
|
82
|
+
CLICK: 'click',
|
|
83
|
+
TYPE: 'type',
|
|
84
|
+
SCREENSHOT: 'screenshot',
|
|
85
|
+
GET_TEXT: 'get-text',
|
|
86
|
+
WAIT: 'wait-for-element',
|
|
87
|
+
SCROLL: 'scroll',
|
|
88
|
+
CLOSE: 'close-browser'
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Job Done Tool Actions
|
|
93
|
+
*/
|
|
94
|
+
export const JOBDONE_ACTIONS = {
|
|
95
|
+
COMPLETE: 'complete',
|
|
96
|
+
COMPLETE_WITH_RESULT: 'complete-with-result',
|
|
97
|
+
FAIL: 'fail-with-error'
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Agent Delay Tool Actions
|
|
102
|
+
*/
|
|
103
|
+
export const DELAY_ACTIONS = {
|
|
104
|
+
DELAY: 'delay',
|
|
105
|
+
PAUSE: 'pause'
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* TaskManager Tool Actions
|
|
110
|
+
*/
|
|
111
|
+
export const TASK_MANAGER_ACTIONS = {
|
|
112
|
+
CREATE: 'create',
|
|
113
|
+
UPDATE: 'update',
|
|
114
|
+
LIST: 'list',
|
|
115
|
+
COMPLETE: 'complete',
|
|
116
|
+
CANCEL: 'cancel',
|
|
117
|
+
CLEAR: 'clear',
|
|
118
|
+
DEPEND: 'depend',
|
|
119
|
+
RELATE: 'relate',
|
|
120
|
+
SUBTASK: 'subtask',
|
|
121
|
+
PRIORITIZE: 'prioritize',
|
|
122
|
+
TEMPLATE: 'template',
|
|
123
|
+
PROGRESS: 'progress',
|
|
124
|
+
ANALYTICS: 'analytics'
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Clone Detection Tool Actions
|
|
129
|
+
*/
|
|
130
|
+
export const CLONE_DETECTION_ACTIONS = {
|
|
131
|
+
DETECT_CLONES: 'detect-clones'
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Help Tool Actions
|
|
136
|
+
*/
|
|
137
|
+
export const HELP_ACTIONS = {
|
|
138
|
+
GET_DESCRIPTION: 'get-description',
|
|
139
|
+
LIST_TOOLS: 'list-tools'
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* PDF Tool Actions
|
|
144
|
+
*/
|
|
145
|
+
export const PDF_ACTIONS = {
|
|
146
|
+
GET_INFO: 'get-info',
|
|
147
|
+
READ_PAGES: 'read-pages',
|
|
148
|
+
CREATE_PDF: 'create-pdf'
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Document (DOCX) Tool Actions
|
|
153
|
+
*/
|
|
154
|
+
export const DOC_ACTIONS = {
|
|
155
|
+
GET_INFO: 'get-info',
|
|
156
|
+
READ: 'read',
|
|
157
|
+
CREATE: 'create'
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Spreadsheet (Excel) Tool Actions
|
|
162
|
+
*/
|
|
163
|
+
export const SPREADSHEET_ACTIONS = {
|
|
164
|
+
GET_INFO: 'get-info',
|
|
165
|
+
READ: 'read',
|
|
166
|
+
CREATE: 'create'
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Skills Tool Actions
|
|
171
|
+
*/
|
|
172
|
+
export const SKILLS_ACTIONS = {
|
|
173
|
+
LIST: 'list',
|
|
174
|
+
DESCRIBE: 'describe',
|
|
175
|
+
READ: 'read',
|
|
176
|
+
READ_SECTION: 'read-section',
|
|
177
|
+
READ_FILE: 'read-file',
|
|
178
|
+
CREATE: 'create',
|
|
179
|
+
UPDATE: 'update',
|
|
180
|
+
DELETE: 'delete',
|
|
181
|
+
IMPORT: 'import'
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Tool Command Formats
|
|
186
|
+
* JSON is the LLM industry standard format (preferred)
|
|
187
|
+
* XML and bracket notation are supported for backward compatibility
|
|
188
|
+
*/
|
|
189
|
+
export const COMMAND_FORMATS = {
|
|
190
|
+
JSON: 'json', // Standard format: ```json {...} ```
|
|
191
|
+
JSON_PLAIN: 'json-plain', // Plain JSON (fallback, not recommended)
|
|
192
|
+
XML: 'xml', // Legacy: <toolname>...</toolname>
|
|
193
|
+
BRACKET: 'bracket', // Legacy: [tool id="..."]...[/tool]
|
|
194
|
+
REDIRECT: 'redirect' // Agent redirects
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Tool Recognition Map
|
|
199
|
+
* Maps action types to their corresponding tool IDs
|
|
200
|
+
* This is the single source of truth for tool identification
|
|
201
|
+
*/
|
|
202
|
+
export const TOOL_ACTION_MAP = {
|
|
203
|
+
// Agent Communication Tool
|
|
204
|
+
[AGENT_COMM_ACTIONS.GET_AVAILABLE]: TOOL_IDS.AGENT_COMMUNICATION,
|
|
205
|
+
[AGENT_COMM_ACTIONS.SEND_MESSAGE]: TOOL_IDS.AGENT_COMMUNICATION,
|
|
206
|
+
[AGENT_COMM_ACTIONS.REPLY_MESSAGE]: TOOL_IDS.AGENT_COMMUNICATION,
|
|
207
|
+
[AGENT_COMM_ACTIONS.GET_UNREPLIED]: TOOL_IDS.AGENT_COMMUNICATION,
|
|
208
|
+
[AGENT_COMM_ACTIONS.MARK_ENDED]: TOOL_IDS.AGENT_COMMUNICATION,
|
|
209
|
+
|
|
210
|
+
// Terminal Tool
|
|
211
|
+
[TERMINAL_ACTIONS.RUN_COMMAND]: TOOL_IDS.TERMINAL,
|
|
212
|
+
[TERMINAL_ACTIONS.CHANGE_DIR]: TOOL_IDS.TERMINAL,
|
|
213
|
+
[TERMINAL_ACTIONS.LIST_DIR]: TOOL_IDS.TERMINAL,
|
|
214
|
+
[TERMINAL_ACTIONS.CREATE_DIR]: TOOL_IDS.TERMINAL,
|
|
215
|
+
[TERMINAL_ACTIONS.GET_CWD]: TOOL_IDS.TERMINAL,
|
|
216
|
+
|
|
217
|
+
// Filesystem Tool
|
|
218
|
+
[FILESYSTEM_ACTIONS.READ_FILE]: TOOL_IDS.FILESYSTEM,
|
|
219
|
+
[FILESYSTEM_ACTIONS.WRITE_FILE]: TOOL_IDS.FILESYSTEM,
|
|
220
|
+
[FILESYSTEM_ACTIONS.APPEND_FILE]: TOOL_IDS.FILESYSTEM,
|
|
221
|
+
[FILESYSTEM_ACTIONS.DELETE_FILE]: TOOL_IDS.FILESYSTEM,
|
|
222
|
+
[FILESYSTEM_ACTIONS.LIST_FILES]: TOOL_IDS.FILESYSTEM,
|
|
223
|
+
[FILESYSTEM_ACTIONS.CREATE_DIR]: TOOL_IDS.FILESYSTEM,
|
|
224
|
+
[FILESYSTEM_ACTIONS.DELETE_DIR]: TOOL_IDS.FILESYSTEM,
|
|
225
|
+
[FILESYSTEM_ACTIONS.MOVE_FILE]: TOOL_IDS.FILESYSTEM,
|
|
226
|
+
[FILESYSTEM_ACTIONS.COPY_FILE]: TOOL_IDS.FILESYSTEM,
|
|
227
|
+
[FILESYSTEM_ACTIONS.GET_INFO]: TOOL_IDS.FILESYSTEM,
|
|
228
|
+
|
|
229
|
+
// Browser Tool - DEPRECATED, use WEB tool instead
|
|
230
|
+
// [BROWSER_ACTIONS.NAVIGATE]: TOOL_IDS.BROWSER,
|
|
231
|
+
// [BROWSER_ACTIONS.CLICK]: TOOL_IDS.BROWSER,
|
|
232
|
+
// [BROWSER_ACTIONS.TYPE]: TOOL_IDS.BROWSER,
|
|
233
|
+
// [BROWSER_ACTIONS.SCREENSHOT]: TOOL_IDS.BROWSER,
|
|
234
|
+
// [BROWSER_ACTIONS.GET_TEXT]: TOOL_IDS.BROWSER,
|
|
235
|
+
// [BROWSER_ACTIONS.WAIT]: TOOL_IDS.BROWSER,
|
|
236
|
+
// [BROWSER_ACTIONS.SCROLL]: TOOL_IDS.BROWSER,
|
|
237
|
+
// [BROWSER_ACTIONS.CLOSE]: TOOL_IDS.BROWSER,
|
|
238
|
+
|
|
239
|
+
// Job Done Tool
|
|
240
|
+
[JOBDONE_ACTIONS.COMPLETE]: TOOL_IDS.JOB_DONE,
|
|
241
|
+
[JOBDONE_ACTIONS.COMPLETE_WITH_RESULT]: TOOL_IDS.JOB_DONE,
|
|
242
|
+
[JOBDONE_ACTIONS.FAIL]: TOOL_IDS.JOB_DONE,
|
|
243
|
+
|
|
244
|
+
// Delay Tool
|
|
245
|
+
[DELAY_ACTIONS.DELAY]: TOOL_IDS.AGENT_DELAY,
|
|
246
|
+
[DELAY_ACTIONS.PAUSE]: TOOL_IDS.AGENT_DELAY,
|
|
247
|
+
|
|
248
|
+
// TaskManager Tool
|
|
249
|
+
[TASK_MANAGER_ACTIONS.CREATE]: TOOL_IDS.TASK_MANAGER,
|
|
250
|
+
[TASK_MANAGER_ACTIONS.UPDATE]: TOOL_IDS.TASK_MANAGER,
|
|
251
|
+
[TASK_MANAGER_ACTIONS.LIST]: TOOL_IDS.TASK_MANAGER,
|
|
252
|
+
[TASK_MANAGER_ACTIONS.COMPLETE]: TOOL_IDS.TASK_MANAGER,
|
|
253
|
+
[TASK_MANAGER_ACTIONS.CANCEL]: TOOL_IDS.TASK_MANAGER,
|
|
254
|
+
[TASK_MANAGER_ACTIONS.CLEAR]: TOOL_IDS.TASK_MANAGER,
|
|
255
|
+
[TASK_MANAGER_ACTIONS.DEPEND]: TOOL_IDS.TASK_MANAGER,
|
|
256
|
+
[TASK_MANAGER_ACTIONS.RELATE]: TOOL_IDS.TASK_MANAGER,
|
|
257
|
+
[TASK_MANAGER_ACTIONS.SUBTASK]: TOOL_IDS.TASK_MANAGER,
|
|
258
|
+
[TASK_MANAGER_ACTIONS.PRIORITIZE]: TOOL_IDS.TASK_MANAGER,
|
|
259
|
+
[TASK_MANAGER_ACTIONS.TEMPLATE]: TOOL_IDS.TASK_MANAGER,
|
|
260
|
+
[TASK_MANAGER_ACTIONS.PROGRESS]: TOOL_IDS.TASK_MANAGER,
|
|
261
|
+
[TASK_MANAGER_ACTIONS.ANALYTICS]: TOOL_IDS.TASK_MANAGER,
|
|
262
|
+
|
|
263
|
+
// Clone Detection Tool
|
|
264
|
+
[CLONE_DETECTION_ACTIONS.DETECT_CLONES]: TOOL_IDS.CLONE_DETECTION,
|
|
265
|
+
|
|
266
|
+
// Help Tool
|
|
267
|
+
[HELP_ACTIONS.GET_DESCRIPTION]: TOOL_IDS.HELP,
|
|
268
|
+
[HELP_ACTIONS.LIST_TOOLS]: TOOL_IDS.HELP,
|
|
269
|
+
|
|
270
|
+
// PDF Tool
|
|
271
|
+
[PDF_ACTIONS.GET_INFO]: TOOL_IDS.PDF,
|
|
272
|
+
[PDF_ACTIONS.READ_PAGES]: TOOL_IDS.PDF,
|
|
273
|
+
[PDF_ACTIONS.CREATE_PDF]: TOOL_IDS.PDF,
|
|
274
|
+
|
|
275
|
+
// Document (DOCX) Tool
|
|
276
|
+
[DOC_ACTIONS.GET_INFO]: TOOL_IDS.DOC,
|
|
277
|
+
[DOC_ACTIONS.READ]: TOOL_IDS.DOC,
|
|
278
|
+
[DOC_ACTIONS.CREATE]: TOOL_IDS.DOC,
|
|
279
|
+
|
|
280
|
+
// Spreadsheet (Excel) Tool
|
|
281
|
+
[SPREADSHEET_ACTIONS.GET_INFO]: TOOL_IDS.SPREADSHEET,
|
|
282
|
+
[SPREADSHEET_ACTIONS.READ]: TOOL_IDS.SPREADSHEET,
|
|
283
|
+
[SPREADSHEET_ACTIONS.CREATE]: TOOL_IDS.SPREADSHEET,
|
|
284
|
+
|
|
285
|
+
// Skills Tool
|
|
286
|
+
[SKILLS_ACTIONS.LIST]: TOOL_IDS.SKILLS,
|
|
287
|
+
[SKILLS_ACTIONS.DESCRIBE]: TOOL_IDS.SKILLS,
|
|
288
|
+
[SKILLS_ACTIONS.READ]: TOOL_IDS.SKILLS,
|
|
289
|
+
[SKILLS_ACTIONS.READ_SECTION]: TOOL_IDS.SKILLS,
|
|
290
|
+
[SKILLS_ACTIONS.READ_FILE]: TOOL_IDS.SKILLS,
|
|
291
|
+
[SKILLS_ACTIONS.CREATE]: TOOL_IDS.SKILLS,
|
|
292
|
+
[SKILLS_ACTIONS.UPDATE]: TOOL_IDS.SKILLS,
|
|
293
|
+
[SKILLS_ACTIONS.DELETE]: TOOL_IDS.SKILLS,
|
|
294
|
+
[SKILLS_ACTIONS.IMPORT]: TOOL_IDS.SKILLS
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* JSON Command Structure Types
|
|
299
|
+
* Different JSON structures we support
|
|
300
|
+
*/
|
|
301
|
+
export const JSON_STRUCTURES = {
|
|
302
|
+
// Standard format: {"toolId": "...", "parameters": {...}}
|
|
303
|
+
STANDARD: 'standard',
|
|
304
|
+
|
|
305
|
+
// Actions format: {"actions": [{"type": "...", ...}]}
|
|
306
|
+
ACTIONS_ARRAY: 'actions-array',
|
|
307
|
+
|
|
308
|
+
// Tool commands format: {"toolCommands": [{...}]}
|
|
309
|
+
TOOL_COMMANDS: 'tool-commands',
|
|
310
|
+
|
|
311
|
+
// Direct action format: {"type": "...", ...}
|
|
312
|
+
DIRECT_ACTION: 'direct-action'
|
|
313
|
+
};
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* Identify which JSON structure is being used
|
|
317
|
+
*/
|
|
318
|
+
export function identifyJsonStructure(jsonData) {
|
|
319
|
+
if (!jsonData || typeof jsonData !== 'object') {
|
|
320
|
+
return null;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
if (jsonData.toolId && (jsonData.parameters || jsonData.actions)) {
|
|
324
|
+
return JSON_STRUCTURES.STANDARD;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
if (jsonData.actions && Array.isArray(jsonData.actions)) {
|
|
328
|
+
return JSON_STRUCTURES.ACTIONS_ARRAY;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
if (jsonData.toolCommands && Array.isArray(jsonData.toolCommands)) {
|
|
332
|
+
return JSON_STRUCTURES.TOOL_COMMANDS;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
if (jsonData.type && typeof jsonData.type === 'string') {
|
|
336
|
+
return JSON_STRUCTURES.DIRECT_ACTION;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
return null;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
/**
|
|
343
|
+
* Get tool ID from action type
|
|
344
|
+
* This is the primary method for determining which tool to use
|
|
345
|
+
*/
|
|
346
|
+
export function getToolIdFromAction(actionType) {
|
|
347
|
+
if (!actionType) return null;
|
|
348
|
+
|
|
349
|
+
// Normalize the action type to handle case variations
|
|
350
|
+
const normalizedAction = actionType.trim();
|
|
351
|
+
|
|
352
|
+
// Direct lookup first (most efficient)
|
|
353
|
+
if (TOOL_ACTION_MAP[normalizedAction]) {
|
|
354
|
+
return TOOL_ACTION_MAP[normalizedAction];
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
// Case-insensitive lookup as fallback
|
|
358
|
+
const lowerAction = normalizedAction.toLowerCase();
|
|
359
|
+
for (const [action, toolId] of Object.entries(TOOL_ACTION_MAP)) {
|
|
360
|
+
if (action.toLowerCase() === lowerAction) {
|
|
361
|
+
return toolId;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
// Log unrecognized actions for debugging
|
|
366
|
+
console.warn(`Unrecognized action type: "${actionType}"`);
|
|
367
|
+
|
|
368
|
+
return null;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* Validate if a tool ID is valid
|
|
373
|
+
*/
|
|
374
|
+
export function isValidToolId(toolId) {
|
|
375
|
+
return Object.values(TOOL_IDS).includes(toolId);
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* Get all valid actions for a specific tool
|
|
380
|
+
*/
|
|
381
|
+
export function getToolActions(toolId) {
|
|
382
|
+
const actions = [];
|
|
383
|
+
for (const [action, tool] of Object.entries(TOOL_ACTION_MAP)) {
|
|
384
|
+
if (tool === toolId) {
|
|
385
|
+
actions.push(action);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
return actions;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* Export all constants for easy access
|
|
393
|
+
*/
|
|
394
|
+
export default {
|
|
395
|
+
TOOL_IDS,
|
|
396
|
+
AGENT_COMM_ACTIONS,
|
|
397
|
+
TERMINAL_ACTIONS,
|
|
398
|
+
FILESYSTEM_ACTIONS,
|
|
399
|
+
BROWSER_ACTIONS,
|
|
400
|
+
JOBDONE_ACTIONS,
|
|
401
|
+
DELAY_ACTIONS,
|
|
402
|
+
TASK_MANAGER_ACTIONS,
|
|
403
|
+
CLONE_DETECTION_ACTIONS,
|
|
404
|
+
HELP_ACTIONS,
|
|
405
|
+
PDF_ACTIONS,
|
|
406
|
+
DOC_ACTIONS,
|
|
407
|
+
SPREADSHEET_ACTIONS,
|
|
408
|
+
COMMAND_FORMATS,
|
|
409
|
+
TOOL_ACTION_MAP,
|
|
410
|
+
JSON_STRUCTURES,
|
|
411
|
+
identifyJsonStructure,
|
|
412
|
+
getToolIdFromAction,
|
|
413
|
+
isValidToolId,
|
|
414
|
+
getToolActions
|
|
415
|
+
};
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User Data Directory Utility
|
|
3
|
+
*
|
|
4
|
+
* Determines the appropriate persistent storage location for user data
|
|
5
|
+
* that survives package updates (npm i -g).
|
|
6
|
+
*
|
|
7
|
+
* This solves the critical issue where user data (agents, conversations,
|
|
8
|
+
* settings, API keys) was lost when updating the globally installed package
|
|
9
|
+
* because data was stored relative to the package installation directory.
|
|
10
|
+
*
|
|
11
|
+
* Storage Locations by Platform:
|
|
12
|
+
* - Linux: ~/.local/share/loxia-autopilot/
|
|
13
|
+
* - macOS: ~/Library/Application Support/loxia-autopilot/
|
|
14
|
+
* - Windows: %LOCALAPPDATA%/loxia-autopilot/ (typically C:\Users\<user>\AppData\Local\loxia-autopilot)
|
|
15
|
+
*
|
|
16
|
+
* Environment Variable Override:
|
|
17
|
+
* - LOXIA_DATA_DIR: If set, uses this path instead of the platform default
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
import os from 'os';
|
|
21
|
+
import path from 'path';
|
|
22
|
+
import { promises as fs } from 'fs';
|
|
23
|
+
|
|
24
|
+
const APP_NAME = 'loxia-autopilot';
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Get the platform-appropriate user data directory
|
|
28
|
+
* @returns {string} Absolute path to user data directory
|
|
29
|
+
*/
|
|
30
|
+
export function getUserDataDir() {
|
|
31
|
+
// Allow override via environment variable
|
|
32
|
+
if (process.env.LOXIA_DATA_DIR) {
|
|
33
|
+
return path.resolve(process.env.LOXIA_DATA_DIR);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const platform = process.platform;
|
|
37
|
+
const homeDir = os.homedir();
|
|
38
|
+
|
|
39
|
+
switch (platform) {
|
|
40
|
+
case 'win32': {
|
|
41
|
+
// Windows: Use LOCALAPPDATA (persists locally, not roamed)
|
|
42
|
+
// Falls back to APPDATA, then to home directory
|
|
43
|
+
const localAppData = process.env.LOCALAPPDATA || process.env.APPDATA;
|
|
44
|
+
if (localAppData) {
|
|
45
|
+
return path.join(localAppData, APP_NAME);
|
|
46
|
+
}
|
|
47
|
+
return path.join(homeDir, 'AppData', 'Local', APP_NAME);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
case 'darwin': {
|
|
51
|
+
// macOS: Use Application Support directory
|
|
52
|
+
return path.join(homeDir, 'Library', 'Application Support', APP_NAME);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
case 'linux':
|
|
56
|
+
default: {
|
|
57
|
+
// Linux/Unix: Follow XDG Base Directory Specification
|
|
58
|
+
// Use XDG_DATA_HOME if set, otherwise ~/.local/share
|
|
59
|
+
const xdgDataHome = process.env.XDG_DATA_HOME;
|
|
60
|
+
if (xdgDataHome) {
|
|
61
|
+
return path.join(xdgDataHome, APP_NAME);
|
|
62
|
+
}
|
|
63
|
+
return path.join(homeDir, '.local', 'share', APP_NAME);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Get specific subdirectories within user data directory
|
|
70
|
+
*/
|
|
71
|
+
export function getUserDataPaths() {
|
|
72
|
+
const baseDir = getUserDataDir();
|
|
73
|
+
|
|
74
|
+
return {
|
|
75
|
+
base: baseDir,
|
|
76
|
+
state: path.join(baseDir, 'state'), // Agent state, conversations
|
|
77
|
+
agents: path.join(baseDir, 'state', 'agents'), // Individual agent data
|
|
78
|
+
settings: path.join(baseDir, 'settings'), // User settings, API keys
|
|
79
|
+
attachments: path.join(baseDir, 'attachments'), // File attachments
|
|
80
|
+
logs: path.join(baseDir, 'logs'), // Application logs
|
|
81
|
+
cache: path.join(baseDir, 'cache'), // Temporary cache data
|
|
82
|
+
operations: path.join(baseDir, 'state', 'operations'), // Async operations
|
|
83
|
+
models: path.join(baseDir, 'state', 'models'), // Model router cache
|
|
84
|
+
runtime: path.join(baseDir, 'runtime'), // Runtime data (port registry, etc.)
|
|
85
|
+
skills: path.join(baseDir, 'state', 'skills'), // Global skills library
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Ensure user data directory structure exists
|
|
91
|
+
* @returns {Promise<Object>} Created paths
|
|
92
|
+
*/
|
|
93
|
+
export async function ensureUserDataDirs() {
|
|
94
|
+
const paths = getUserDataPaths();
|
|
95
|
+
|
|
96
|
+
const dirsToCreate = [
|
|
97
|
+
paths.base,
|
|
98
|
+
paths.state,
|
|
99
|
+
paths.agents,
|
|
100
|
+
paths.settings,
|
|
101
|
+
paths.attachments,
|
|
102
|
+
paths.logs,
|
|
103
|
+
paths.cache,
|
|
104
|
+
paths.operations,
|
|
105
|
+
paths.models,
|
|
106
|
+
paths.runtime,
|
|
107
|
+
paths.skills,
|
|
108
|
+
];
|
|
109
|
+
|
|
110
|
+
for (const dir of dirsToCreate) {
|
|
111
|
+
try {
|
|
112
|
+
await fs.mkdir(dir, { recursive: true });
|
|
113
|
+
} catch (error) {
|
|
114
|
+
// Ignore if already exists
|
|
115
|
+
if (error.code !== 'EEXIST') {
|
|
116
|
+
throw error;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
return paths;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Check if user data directory exists and is accessible
|
|
126
|
+
* @returns {Promise<boolean>}
|
|
127
|
+
*/
|
|
128
|
+
export async function userDataDirExists() {
|
|
129
|
+
try {
|
|
130
|
+
const baseDir = getUserDataDir();
|
|
131
|
+
const stats = await fs.stat(baseDir);
|
|
132
|
+
return stats.isDirectory();
|
|
133
|
+
} catch (error) {
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Migrate data from old location to new user data directory
|
|
140
|
+
* This helps users transition from the old storage location
|
|
141
|
+
*
|
|
142
|
+
* @param {string} oldDir - Old data directory path
|
|
143
|
+
* @param {Object} options - Migration options
|
|
144
|
+
* @returns {Promise<Object>} Migration result
|
|
145
|
+
*/
|
|
146
|
+
export async function migrateFromOldLocation(oldDir, options = {}) {
|
|
147
|
+
const { dryRun = false, logger = null } = options;
|
|
148
|
+
const newPaths = getUserDataPaths();
|
|
149
|
+
|
|
150
|
+
const result = {
|
|
151
|
+
migrated: [],
|
|
152
|
+
skipped: [],
|
|
153
|
+
errors: [],
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
try {
|
|
157
|
+
// Check if old directory exists
|
|
158
|
+
try {
|
|
159
|
+
await fs.access(oldDir);
|
|
160
|
+
} catch {
|
|
161
|
+
logger?.info('No old data directory found, skipping migration', { oldDir });
|
|
162
|
+
return result;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// Check if new directory already has data (don't overwrite)
|
|
166
|
+
const newHasData = await userDataDirExists();
|
|
167
|
+
if (newHasData) {
|
|
168
|
+
const newStateDir = newPaths.state;
|
|
169
|
+
try {
|
|
170
|
+
const files = await fs.readdir(newStateDir);
|
|
171
|
+
if (files.length > 0) {
|
|
172
|
+
logger?.info('New data directory already has data, skipping migration to prevent overwrite');
|
|
173
|
+
result.skipped.push({ reason: 'new_location_has_data', path: newStateDir });
|
|
174
|
+
return result;
|
|
175
|
+
}
|
|
176
|
+
} catch {
|
|
177
|
+
// Directory doesn't exist or is empty, continue with migration
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// Ensure new directories exist
|
|
182
|
+
if (!dryRun) {
|
|
183
|
+
await ensureUserDataDirs();
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// Migration mappings: oldSubPath -> newPath
|
|
187
|
+
const migrations = [
|
|
188
|
+
{ old: 'agents', new: newPaths.agents },
|
|
189
|
+
{ old: 'operations', new: newPaths.operations },
|
|
190
|
+
{ old: 'models', new: newPaths.models },
|
|
191
|
+
{ old: 'attachments', new: newPaths.attachments },
|
|
192
|
+
{ old: 'terminal-settings.json', new: path.join(newPaths.settings, 'terminal-settings.json') },
|
|
193
|
+
{ old: 'project-state.json', new: path.join(newPaths.state, 'project-state.json') },
|
|
194
|
+
{ old: 'agent-index.json', new: path.join(newPaths.state, 'agent-index.json') },
|
|
195
|
+
{ old: 'last-session.json', new: path.join(newPaths.state, 'last-session.json') },
|
|
196
|
+
];
|
|
197
|
+
|
|
198
|
+
for (const migration of migrations) {
|
|
199
|
+
const oldPath = path.join(oldDir, migration.old);
|
|
200
|
+
const newPath = migration.new;
|
|
201
|
+
|
|
202
|
+
try {
|
|
203
|
+
await fs.access(oldPath);
|
|
204
|
+
|
|
205
|
+
if (dryRun) {
|
|
206
|
+
result.migrated.push({ from: oldPath, to: newPath, dryRun: true });
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// Check if it's a directory or file
|
|
211
|
+
const stats = await fs.stat(oldPath);
|
|
212
|
+
|
|
213
|
+
if (stats.isDirectory()) {
|
|
214
|
+
// Copy directory contents recursively
|
|
215
|
+
await copyDir(oldPath, newPath);
|
|
216
|
+
} else {
|
|
217
|
+
// Copy single file
|
|
218
|
+
await fs.copyFile(oldPath, newPath);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
result.migrated.push({ from: oldPath, to: newPath });
|
|
222
|
+
logger?.info('Migrated data', { from: oldPath, to: newPath });
|
|
223
|
+
|
|
224
|
+
} catch (error) {
|
|
225
|
+
if (error.code === 'ENOENT') {
|
|
226
|
+
// File/dir doesn't exist, skip silently
|
|
227
|
+
result.skipped.push({ path: oldPath, reason: 'not_found' });
|
|
228
|
+
} else {
|
|
229
|
+
result.errors.push({ path: oldPath, error: error.message });
|
|
230
|
+
logger?.warn('Migration error', { path: oldPath, error: error.message });
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
if (result.migrated.length > 0 && !dryRun) {
|
|
236
|
+
logger?.info('Data migration completed', {
|
|
237
|
+
migratedCount: result.migrated.length,
|
|
238
|
+
skippedCount: result.skipped.length,
|
|
239
|
+
errorCount: result.errors.length,
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
} catch (error) {
|
|
244
|
+
result.errors.push({ path: oldDir, error: error.message });
|
|
245
|
+
logger?.error('Migration failed', { error: error.message });
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
return result;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Recursively copy a directory
|
|
253
|
+
* @param {string} src - Source directory
|
|
254
|
+
* @param {string} dest - Destination directory
|
|
255
|
+
*/
|
|
256
|
+
async function copyDir(src, dest) {
|
|
257
|
+
await fs.mkdir(dest, { recursive: true });
|
|
258
|
+
const entries = await fs.readdir(src, { withFileTypes: true });
|
|
259
|
+
|
|
260
|
+
for (const entry of entries) {
|
|
261
|
+
const srcPath = path.join(src, entry.name);
|
|
262
|
+
const destPath = path.join(dest, entry.name);
|
|
263
|
+
|
|
264
|
+
if (entry.isDirectory()) {
|
|
265
|
+
await copyDir(srcPath, destPath);
|
|
266
|
+
} else {
|
|
267
|
+
await fs.copyFile(srcPath, destPath);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* Get legacy data directory paths for migration detection
|
|
274
|
+
* @returns {string[]} Array of potential old data locations
|
|
275
|
+
*/
|
|
276
|
+
export function getLegacyDataPaths() {
|
|
277
|
+
const paths = [];
|
|
278
|
+
|
|
279
|
+
// Old location: relative to package install (inside node_modules)
|
|
280
|
+
// This won't work after package update, but useful for first-run detection
|
|
281
|
+
|
|
282
|
+
// Old location: process.cwd() based
|
|
283
|
+
const cwdBased = path.join(process.cwd(), '.loxia-state');
|
|
284
|
+
paths.push(cwdBased);
|
|
285
|
+
|
|
286
|
+
// Alternative old location
|
|
287
|
+
const cwdBasedAlt = path.join(process.cwd(), 'loxia-state');
|
|
288
|
+
paths.push(cwdBasedAlt);
|
|
289
|
+
|
|
290
|
+
return paths;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
export default {
|
|
294
|
+
getUserDataDir,
|
|
295
|
+
getUserDataPaths,
|
|
296
|
+
ensureUserDataDirs,
|
|
297
|
+
userDataDirExists,
|
|
298
|
+
migrateFromOldLocation,
|
|
299
|
+
getLegacyDataPaths,
|
|
300
|
+
};
|