omnius 1.0.628 → 1.0.631
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/README.md +3 -0
- package/dist/index.js +5088 -4568
- package/dist/postinstall-daemon.cjs +71 -6
- package/dist/scripts/audio-yamnet-tensorrt-worker.py +18 -1
- package/dist/scripts/ocr-advanced.py +22 -12
- package/dist/update-worker.js +142 -135
- package/docs/DISCOVERY.json +1034 -1284
- package/docs/DISCOVERY.md +130 -128
- package/docs/reference/rest-api.md +3 -1
- package/docs/rest/INDEX.md +1 -1
- package/docs/rest/endpoints/voice-vision.md +43 -4
- package/npm-shrinkwrap.json +5 -5
- package/package.json +2 -2
package/dist/update-worker.js
CHANGED
|
@@ -1199,7 +1199,7 @@ var require_util = __commonJS({
|
|
|
1199
1199
|
return path;
|
|
1200
1200
|
}
|
|
1201
1201
|
exports.normalize = normalize;
|
|
1202
|
-
function
|
|
1202
|
+
function join18(aRoot, aPath) {
|
|
1203
1203
|
if (aRoot === "") {
|
|
1204
1204
|
aRoot = ".";
|
|
1205
1205
|
}
|
|
@@ -1231,7 +1231,7 @@ var require_util = __commonJS({
|
|
|
1231
1231
|
}
|
|
1232
1232
|
return joined;
|
|
1233
1233
|
}
|
|
1234
|
-
exports.join =
|
|
1234
|
+
exports.join = join18;
|
|
1235
1235
|
exports.isAbsolute = function(aPath) {
|
|
1236
1236
|
return aPath.charAt(0) === "/" || urlRegexp.test(aPath);
|
|
1237
1237
|
};
|
|
@@ -1404,7 +1404,7 @@ var require_util = __commonJS({
|
|
|
1404
1404
|
parsed.path = parsed.path.substring(0, index + 1);
|
|
1405
1405
|
}
|
|
1406
1406
|
}
|
|
1407
|
-
sourceURL =
|
|
1407
|
+
sourceURL = join18(urlGenerate(parsed), sourceURL);
|
|
1408
1408
|
}
|
|
1409
1409
|
return normalize(sourceURL);
|
|
1410
1410
|
}
|
|
@@ -127572,7 +127572,7 @@ ${lanes.join("\n")}
|
|
|
127572
127572
|
}
|
|
127573
127573
|
}
|
|
127574
127574
|
function createImportCallExpressionAMD(arg2, containsLexicalThis) {
|
|
127575
|
-
const
|
|
127575
|
+
const resolve11 = factory2.createUniqueName("resolve");
|
|
127576
127576
|
const reject = factory2.createUniqueName("reject");
|
|
127577
127577
|
const parameters = [
|
|
127578
127578
|
factory2.createParameterDeclaration(
|
|
@@ -127581,7 +127581,7 @@ ${lanes.join("\n")}
|
|
|
127581
127581
|
/*dotDotDotToken*/
|
|
127582
127582
|
void 0,
|
|
127583
127583
|
/*name*/
|
|
127584
|
-
|
|
127584
|
+
resolve11
|
|
127585
127585
|
),
|
|
127586
127586
|
factory2.createParameterDeclaration(
|
|
127587
127587
|
/*modifiers*/
|
|
@@ -127598,7 +127598,7 @@ ${lanes.join("\n")}
|
|
|
127598
127598
|
factory2.createIdentifier("require"),
|
|
127599
127599
|
/*typeArguments*/
|
|
127600
127600
|
void 0,
|
|
127601
|
-
[factory2.createArrayLiteralExpression([arg2 || factory2.createOmittedExpression()]),
|
|
127601
|
+
[factory2.createArrayLiteralExpression([arg2 || factory2.createOmittedExpression()]), resolve11, reject]
|
|
127602
127602
|
)
|
|
127603
127603
|
)
|
|
127604
127604
|
]);
|
|
@@ -140409,9 +140409,9 @@ ${lanes.join("\n")}
|
|
|
140409
140409
|
/*ignoreCase*/
|
|
140410
140410
|
false
|
|
140411
140411
|
)) {
|
|
140412
|
-
const
|
|
140413
|
-
if (
|
|
140414
|
-
const name = removeSuffix(removePrefix(
|
|
140412
|
+
const basename9 = getBaseFileName(a.fileName);
|
|
140413
|
+
if (basename9 === "lib.d.ts" || basename9 === "lib.es6.d.ts") return 0;
|
|
140414
|
+
const name = removeSuffix(removePrefix(basename9, "lib."), ".d.ts");
|
|
140415
140415
|
const index = libs.indexOf(name);
|
|
140416
140416
|
if (index !== -1) return index + 1;
|
|
140417
140417
|
}
|
|
@@ -204337,8 +204337,8 @@ ${options.prefix}` : "\n" : options.prefix
|
|
|
204337
204337
|
}
|
|
204338
204338
|
};
|
|
204339
204339
|
for (const file of files) {
|
|
204340
|
-
const
|
|
204341
|
-
if (
|
|
204340
|
+
const basename9 = getBaseFileName(file);
|
|
204341
|
+
if (basename9 === "package.json" || basename9 === "bower.json") {
|
|
204342
204342
|
createProjectWatcher(
|
|
204343
204343
|
file,
|
|
204344
204344
|
"FileWatcher"
|
|
@@ -208022,8 +208022,8 @@ All files are: ${JSON.stringify(names)}`,
|
|
|
208022
208022
|
var _a2;
|
|
208023
208023
|
const fileOrDirectoryPath = removeIgnoredPath(this.toPath(fileOrDirectory));
|
|
208024
208024
|
if (!fileOrDirectoryPath) return;
|
|
208025
|
-
const
|
|
208026
|
-
if (((_a2 = result.affectedModuleSpecifierCacheProjects) == null ? void 0 : _a2.size) && (
|
|
208025
|
+
const basename9 = getBaseFileName(fileOrDirectoryPath);
|
|
208026
|
+
if (((_a2 = result.affectedModuleSpecifierCacheProjects) == null ? void 0 : _a2.size) && (basename9 === "package.json" || basename9 === "node_modules")) {
|
|
208027
208027
|
result.affectedModuleSpecifierCacheProjects.forEach((project) => {
|
|
208028
208028
|
var _a22;
|
|
208029
208029
|
(_a22 = project.getModuleSpecifierCache()) == null ? void 0 : _a22.clear();
|
|
@@ -214509,8 +214509,8 @@ Additional information: BADCLIENT: Bad error code, ${badCode} not found in range
|
|
|
214509
214509
|
installPackage(options) {
|
|
214510
214510
|
this.packageInstallId++;
|
|
214511
214511
|
const request = { kind: "installPackage", ...options, id: this.packageInstallId };
|
|
214512
|
-
const promise = new Promise((
|
|
214513
|
-
(this.packageInstalledPromise ?? (this.packageInstalledPromise = /* @__PURE__ */ new Map())).set(this.packageInstallId, { resolve:
|
|
214512
|
+
const promise = new Promise((resolve11, reject) => {
|
|
214513
|
+
(this.packageInstalledPromise ?? (this.packageInstalledPromise = /* @__PURE__ */ new Map())).set(this.packageInstallId, { resolve: resolve11, reject });
|
|
214514
214514
|
});
|
|
214515
214515
|
this.installer.send(request);
|
|
214516
214516
|
return promise;
|
|
@@ -216770,7 +216770,7 @@ var require_path_browserify = __commonJS({
|
|
|
216770
216770
|
}
|
|
216771
216771
|
var posix = {
|
|
216772
216772
|
// path.resolve([from ...], to)
|
|
216773
|
-
resolve: function
|
|
216773
|
+
resolve: function resolve11() {
|
|
216774
216774
|
var resolvedPath = "";
|
|
216775
216775
|
var resolvedAbsolute = false;
|
|
216776
216776
|
var cwd;
|
|
@@ -216817,7 +216817,7 @@ var require_path_browserify = __commonJS({
|
|
|
216817
216817
|
assertPath(path);
|
|
216818
216818
|
return path.length > 0 && path.charCodeAt(0) === 47;
|
|
216819
216819
|
},
|
|
216820
|
-
join: function
|
|
216820
|
+
join: function join18() {
|
|
216821
216821
|
if (arguments.length === 0)
|
|
216822
216822
|
return ".";
|
|
216823
216823
|
var joined;
|
|
@@ -216904,7 +216904,7 @@ var require_path_browserify = __commonJS({
|
|
|
216904
216904
|
_makeLong: function _makeLong(path) {
|
|
216905
216905
|
return path;
|
|
216906
216906
|
},
|
|
216907
|
-
dirname: function
|
|
216907
|
+
dirname: function dirname10(path) {
|
|
216908
216908
|
assertPath(path);
|
|
216909
216909
|
if (path.length === 0) return ".";
|
|
216910
216910
|
var code = path.charCodeAt(0);
|
|
@@ -216926,7 +216926,7 @@ var require_path_browserify = __commonJS({
|
|
|
216926
216926
|
if (hasRoot && end === 1) return "//";
|
|
216927
216927
|
return path.slice(0, end);
|
|
216928
216928
|
},
|
|
216929
|
-
basename: function
|
|
216929
|
+
basename: function basename9(path, ext) {
|
|
216930
216930
|
if (ext !== void 0 && typeof ext !== "string") throw new TypeError('"ext" argument must be a string');
|
|
216931
216931
|
assertPath(path);
|
|
216932
216932
|
var start = 0;
|
|
@@ -220961,12 +220961,12 @@ ${nodeLocation}` : message;
|
|
|
220961
220961
|
};
|
|
220962
220962
|
var NodeRuntimeFileSystem = class {
|
|
220963
220963
|
delete(path2) {
|
|
220964
|
-
return new Promise((
|
|
220964
|
+
return new Promise((resolve11, reject) => {
|
|
220965
220965
|
fs__namespace.rm(path2, { recursive: true }, (err) => {
|
|
220966
220966
|
if (err)
|
|
220967
220967
|
reject(err);
|
|
220968
220968
|
else
|
|
220969
|
-
|
|
220969
|
+
resolve11();
|
|
220970
220970
|
});
|
|
220971
220971
|
});
|
|
220972
220972
|
}
|
|
@@ -220985,12 +220985,12 @@ ${nodeLocation}` : message;
|
|
|
220985
220985
|
}));
|
|
220986
220986
|
}
|
|
220987
220987
|
readFile(filePath, encoding = "utf-8") {
|
|
220988
|
-
return new Promise((
|
|
220988
|
+
return new Promise((resolve11, reject) => {
|
|
220989
220989
|
fs__namespace.readFile(filePath, encoding, (err, data) => {
|
|
220990
220990
|
if (err)
|
|
220991
220991
|
reject(err);
|
|
220992
220992
|
else
|
|
220993
|
-
|
|
220993
|
+
resolve11(data);
|
|
220994
220994
|
});
|
|
220995
220995
|
});
|
|
220996
220996
|
}
|
|
@@ -220998,12 +220998,12 @@ ${nodeLocation}` : message;
|
|
|
220998
220998
|
return fs__namespace.readFileSync(filePath, encoding);
|
|
220999
220999
|
}
|
|
221000
221000
|
async writeFile(filePath, fileText) {
|
|
221001
|
-
await new Promise((
|
|
221001
|
+
await new Promise((resolve11, reject) => {
|
|
221002
221002
|
fs__namespace.writeFile(filePath, fileText, (err) => {
|
|
221003
221003
|
if (err)
|
|
221004
221004
|
reject(err);
|
|
221005
221005
|
else
|
|
221006
|
-
|
|
221006
|
+
resolve11();
|
|
221007
221007
|
});
|
|
221008
221008
|
});
|
|
221009
221009
|
}
|
|
@@ -221017,12 +221017,12 @@ ${nodeLocation}` : message;
|
|
|
221017
221017
|
fs__namespace.mkdirSync(dirPath, { recursive: true });
|
|
221018
221018
|
}
|
|
221019
221019
|
move(srcPath, destPath) {
|
|
221020
|
-
return new Promise((
|
|
221020
|
+
return new Promise((resolve11, reject) => {
|
|
221021
221021
|
fs__namespace.rename(srcPath, destPath, (err) => {
|
|
221022
221022
|
if (err)
|
|
221023
221023
|
reject(err);
|
|
221024
221024
|
else
|
|
221025
|
-
|
|
221025
|
+
resolve11();
|
|
221026
221026
|
});
|
|
221027
221027
|
});
|
|
221028
221028
|
}
|
|
@@ -221030,12 +221030,12 @@ ${nodeLocation}` : message;
|
|
|
221030
221030
|
fs__namespace.renameSync(srcPath, destPath);
|
|
221031
221031
|
}
|
|
221032
221032
|
copy(srcPath, destPath) {
|
|
221033
|
-
return new Promise((
|
|
221033
|
+
return new Promise((resolve11, reject) => {
|
|
221034
221034
|
fs__namespace.copyFile(srcPath, destPath, (err) => {
|
|
221035
221035
|
if (err)
|
|
221036
221036
|
reject(err);
|
|
221037
221037
|
else
|
|
221038
|
-
|
|
221038
|
+
resolve11();
|
|
221039
221039
|
});
|
|
221040
221040
|
});
|
|
221041
221041
|
}
|
|
@@ -221043,15 +221043,15 @@ ${nodeLocation}` : message;
|
|
|
221043
221043
|
fs__namespace.copyFileSync(srcPath, destPath);
|
|
221044
221044
|
}
|
|
221045
221045
|
stat(path2) {
|
|
221046
|
-
return new Promise((
|
|
221046
|
+
return new Promise((resolve11, reject) => {
|
|
221047
221047
|
fs__namespace.stat(path2, (err, stat) => {
|
|
221048
221048
|
if (err) {
|
|
221049
221049
|
if (err.code === "ENOENT" || err.code === "ENOTDIR")
|
|
221050
|
-
|
|
221050
|
+
resolve11(void 0);
|
|
221051
221051
|
else
|
|
221052
221052
|
reject(err);
|
|
221053
221053
|
} else {
|
|
221054
|
-
|
|
221054
|
+
resolve11(stat);
|
|
221055
221055
|
}
|
|
221056
221056
|
});
|
|
221057
221057
|
});
|
|
@@ -245054,16 +245054,16 @@ var init_nexus = __esm({
|
|
|
245054
245054
|
|
|
245055
245055
|
// packages/cli/src/update-worker.ts
|
|
245056
245056
|
import { spawn as spawn4 } from "node:child_process";
|
|
245057
|
-
import { join as
|
|
245057
|
+
import { join as join17 } from "node:path";
|
|
245058
245058
|
|
|
245059
245059
|
// packages/cli/src/daemon.ts
|
|
245060
245060
|
import { spawn } from "node:child_process";
|
|
245061
245061
|
import { existsSync as existsSync4, readFileSync as readFileSync4, writeFileSync as writeFileSync2, mkdirSync as mkdirSync3, unlinkSync, openSync, closeSync, writeSync, statSync as statSync2, renameSync as renameSync2 } from "node:fs";
|
|
245062
|
-
import { join as
|
|
245063
|
-
import { homedir as
|
|
245062
|
+
import { join as join13 } from "node:path";
|
|
245063
|
+
import { homedir as homedir13 } from "node:os";
|
|
245064
245064
|
import { createServer as createNetServer } from "node:net";
|
|
245065
245065
|
import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
245066
|
-
import { dirname as
|
|
245066
|
+
import { dirname as dirname7 } from "node:path";
|
|
245067
245067
|
|
|
245068
245068
|
// packages/execution/dist/index.js
|
|
245069
245069
|
init_model_broker();
|
|
@@ -245079,11 +245079,18 @@ init_venv_paths();
|
|
|
245079
245079
|
// packages/execution/dist/audio-classifier-runtime.js
|
|
245080
245080
|
init_jetson_monitor();
|
|
245081
245081
|
init_model_store();
|
|
245082
|
+
init_venv_paths();
|
|
245082
245083
|
var MODEL_REVISION = "ac2ca3bd45d12ec1f19f1144205ea529b4e9dedf";
|
|
245083
245084
|
var MODEL_URL = `https://huggingface.co/zeropointnine/yamnet-onnx/resolve/${MODEL_REVISION}/yamnet.onnx`;
|
|
245084
245085
|
var CLASS_MAP_URL = `https://huggingface.co/zeropointnine/yamnet-onnx/resolve/${MODEL_REVISION}/yamnet_class_map.csv`;
|
|
245085
245086
|
var SETUP_TIMEOUT_MS = 20 * 6e4;
|
|
245086
245087
|
|
|
245088
|
+
// packages/execution/dist/ocr-advanced-runtime.js
|
|
245089
|
+
init_process_async();
|
|
245090
|
+
init_jetson_monitor();
|
|
245091
|
+
init_venv_paths();
|
|
245092
|
+
init_model_store();
|
|
245093
|
+
|
|
245087
245094
|
// packages/execution/dist/broker-mediated-backend.js
|
|
245088
245095
|
init_model_broker();
|
|
245089
245096
|
|
|
@@ -293034,30 +293041,27 @@ init_process_async();
|
|
|
293034
293041
|
var MAX_IMAGE_BYTES = 8 * 1024 * 1024;
|
|
293035
293042
|
|
|
293036
293043
|
// packages/execution/dist/tools/ocr-image-advanced.js
|
|
293037
|
-
|
|
293038
|
-
|
|
293039
|
-
init_venv_paths();
|
|
293040
|
-
import { homedir as homedir6, tmpdir as tmpdir3 } from "node:os";
|
|
293041
|
-
var OCR_VENV_DIR = join5(homedir6(), ".omnius", "venv");
|
|
293044
|
+
init_process_async();
|
|
293045
|
+
var OCR_PIPELINE_TIMEOUT_MS = 5 * 6e4;
|
|
293042
293046
|
|
|
293043
293047
|
// packages/execution/dist/tools/browser-action.js
|
|
293044
293048
|
init_process_lifecycle();
|
|
293045
293049
|
import { copyFileSync, existsSync as existsSync2, mkdirSync as mkdirSync2, readFileSync as readFileSync2 } from "node:fs";
|
|
293046
|
-
import { basename as
|
|
293050
|
+
import { basename as basename2, dirname as dirname4, join as join5, resolve as resolve5 } from "node:path";
|
|
293047
293051
|
import { fileURLToPath } from "node:url";
|
|
293048
293052
|
init_model_store();
|
|
293049
|
-
var __dirname2 =
|
|
293053
|
+
var __dirname2 = dirname4(fileURLToPath(import.meta.url));
|
|
293050
293054
|
var DEFAULT_PORT = 8130;
|
|
293051
293055
|
function findScrapeScript() {
|
|
293052
293056
|
const candidates = [
|
|
293053
293057
|
// Published npm package: dist/scripts/web_scrape.py
|
|
293054
|
-
|
|
293058
|
+
join5(__dirname2, "scripts", "web_scrape.py"),
|
|
293055
293059
|
// Published npm package (from node_modules): node_modules/omnius/dist/scripts/
|
|
293056
|
-
|
|
293060
|
+
join5(__dirname2, "..", "node_modules", "omnius", "dist", "scripts", "web_scrape.py"),
|
|
293057
293061
|
// Dev monorepo: packages/execution/src/tools/../../scripts/
|
|
293058
|
-
|
|
293062
|
+
join5(__dirname2, "..", "..", "scripts", "web_scrape.py"),
|
|
293059
293063
|
// Dev monorepo alt: packages/execution/scripts/
|
|
293060
|
-
|
|
293064
|
+
join5(__dirname2, "..", "scripts", "web_scrape.py")
|
|
293061
293065
|
];
|
|
293062
293066
|
return candidates.find((p) => existsSync2(p)) || candidates[0];
|
|
293063
293067
|
}
|
|
@@ -293341,33 +293345,34 @@ var MESH_VENV = "/tmp/mesh-venv";
|
|
|
293341
293345
|
var MESH_CLI = `${MESH_VENV}/bin/meshtastic`;
|
|
293342
293346
|
|
|
293343
293347
|
// packages/execution/dist/tools/audio-analyze.js
|
|
293344
|
-
import { basename as
|
|
293345
|
-
import { homedir as
|
|
293348
|
+
import { basename as basename3, isAbsolute as isAbsolute2, join as join6, resolve as resolve6 } from "node:path";
|
|
293349
|
+
import { homedir as homedir6, tmpdir as tmpdir3 } from "node:os";
|
|
293346
293350
|
init_cuda_device_filter();
|
|
293347
293351
|
init_process_async();
|
|
293348
|
-
var VENV_DIR =
|
|
293349
|
-
var VENV_PIP =
|
|
293350
|
-
var VENV_PYTHON =
|
|
293352
|
+
var VENV_DIR = join6(homedir6(), ".omnius", "audio-ml-venv");
|
|
293353
|
+
var VENV_PIP = join6(VENV_DIR, "bin", "pip");
|
|
293354
|
+
var VENV_PYTHON = join6(VENV_DIR, "bin", "python3");
|
|
293351
293355
|
|
|
293352
293356
|
// packages/execution/dist/tools/visual-memory.js
|
|
293353
293357
|
init_cuda_device_filter();
|
|
293354
|
-
import { join as
|
|
293355
|
-
import { homedir as
|
|
293356
|
-
var VMEM_DIR =
|
|
293357
|
-
var VENV_DIR2 =
|
|
293358
|
-
var VENV_PY =
|
|
293359
|
-
var VENV_PIP2 =
|
|
293358
|
+
import { join as join7 } from "node:path";
|
|
293359
|
+
import { homedir as homedir7, tmpdir as tmpdir4 } from "node:os";
|
|
293360
|
+
var VMEM_DIR = join7(homedir7(), ".omnius", "visual-memory");
|
|
293361
|
+
var VENV_DIR2 = join7(homedir7(), ".omnius", "vision-ml-venv");
|
|
293362
|
+
var VENV_PY = join7(VENV_DIR2, "bin", "python3");
|
|
293363
|
+
var VENV_PIP2 = join7(VENV_DIR2, "bin", "pip");
|
|
293360
293364
|
|
|
293361
293365
|
// packages/execution/dist/tools/multimodal-memory.js
|
|
293362
|
-
import { join as
|
|
293363
|
-
import { homedir as
|
|
293366
|
+
import { join as join8 } from "node:path";
|
|
293367
|
+
import { homedir as homedir8, tmpdir as tmpdir5 } from "node:os";
|
|
293364
293368
|
init_camera_capture();
|
|
293365
|
-
var MM_DIR =
|
|
293366
|
-
var MM_INDEX =
|
|
293369
|
+
var MM_DIR = join8(homedir8(), ".omnius", "multimodal-episodes");
|
|
293370
|
+
var MM_INDEX = join8(MM_DIR, "index.json");
|
|
293367
293371
|
|
|
293368
293372
|
// packages/execution/dist/asr/registry.js
|
|
293369
293373
|
var VIBEVOICE_ASR_MODEL_REVISION = "d0c9efdb8d614685062c04425d91e01b6f37d944";
|
|
293370
293374
|
var VIBEVOICE_ASR_WEIGHTS_BYTES = 17348198410;
|
|
293375
|
+
var NEMOTRON_DISABLED_REASON = "Nemotron is catalogued but its legacy self-installing worker is disabled until it is migrated to the managed fail-closed runtime.";
|
|
293371
293376
|
var whisperCapabilities = Object.freeze({
|
|
293372
293377
|
file: true,
|
|
293373
293378
|
pcmStream: true,
|
|
@@ -293416,6 +293421,8 @@ var ASR_ENGINES = Object.freeze([
|
|
|
293416
293421
|
provider: "NVIDIA",
|
|
293417
293422
|
runtime: "python",
|
|
293418
293423
|
setupMode: "managed",
|
|
293424
|
+
availability: "disabled",
|
|
293425
|
+
unavailableReason: NEMOTRON_DISABLED_REASON,
|
|
293419
293426
|
models: [
|
|
293420
293427
|
{
|
|
293421
293428
|
id: "nemotron-speech-streaming-en-0.6b",
|
|
@@ -293627,32 +293634,32 @@ init_secret_quarantine();
|
|
|
293627
293634
|
init_agent_tools();
|
|
293628
293635
|
|
|
293629
293636
|
// packages/execution/dist/tools/video-understand.js
|
|
293630
|
-
import { join as
|
|
293631
|
-
import { homedir as
|
|
293637
|
+
import { join as join9, basename as basename4, isAbsolute as isAbsolute3, resolve as resolve7 } from "node:path";
|
|
293638
|
+
import { homedir as homedir9 } from "node:os";
|
|
293632
293639
|
init_model_broker();
|
|
293633
293640
|
init_vision();
|
|
293634
293641
|
init_process_async();
|
|
293635
293642
|
init_venv_paths();
|
|
293636
|
-
var YT_DLP_VENV2 =
|
|
293643
|
+
var YT_DLP_VENV2 = join9(homedir9(), ".omnius", "runtimes", "media-tools", ".venv-ytdlp");
|
|
293637
293644
|
|
|
293638
293645
|
// packages/execution/dist/tools/video-scan.js
|
|
293639
|
-
import { resolve as
|
|
293640
|
-
import { homedir as
|
|
293641
|
-
var CONFIG_PATH =
|
|
293646
|
+
import { resolve as resolve8, dirname as dirname5, join as join10, basename as basename5 } from "node:path";
|
|
293647
|
+
import { homedir as homedir10 } from "node:os";
|
|
293648
|
+
var CONFIG_PATH = join10(homedir10(), ".omnius", "video-scan.json");
|
|
293642
293649
|
|
|
293643
293650
|
// packages/execution/dist/tools/live-media-loop.js
|
|
293644
293651
|
init_process_async();
|
|
293645
293652
|
init_venv_paths();
|
|
293646
|
-
import { homedir as
|
|
293647
|
-
import { basename as
|
|
293653
|
+
import { homedir as homedir11, tmpdir as tmpdir6 } from "node:os";
|
|
293654
|
+
import { basename as basename6, isAbsolute as isAbsolute4, join as join11, resolve as resolve9 } from "node:path";
|
|
293648
293655
|
init_camera_capture();
|
|
293649
|
-
var LIVE_MEDIA_ROOT =
|
|
293650
|
-
var YOLO26_VENV =
|
|
293656
|
+
var LIVE_MEDIA_ROOT = join11(homedir11(), ".omnius", "runtimes", "live-media");
|
|
293657
|
+
var YOLO26_VENV = join11(LIVE_MEDIA_ROOT, ".venv-yolo26");
|
|
293651
293658
|
|
|
293652
293659
|
// packages/execution/dist/tools/lance.js
|
|
293653
|
-
import { resolve as
|
|
293654
|
-
import { homedir as
|
|
293655
|
-
var CONFIG_PATH2 =
|
|
293660
|
+
import { resolve as resolve10, dirname as dirname6, join as join12, basename as basename7 } from "node:path";
|
|
293661
|
+
import { homedir as homedir12 } from "node:os";
|
|
293662
|
+
var CONFIG_PATH2 = join12(homedir12(), ".omnius", "lance.json");
|
|
293656
293663
|
var RUN_TIMEOUT_MS = 30 * 60 * 1e3;
|
|
293657
293664
|
|
|
293658
293665
|
// packages/execution/dist/index.js
|
|
@@ -293662,8 +293669,8 @@ init_system_deps();
|
|
|
293662
293669
|
init_process_kill();
|
|
293663
293670
|
|
|
293664
293671
|
// packages/cli/src/daemon.ts
|
|
293665
|
-
var OMNIUS_DIR = process.env["OMNIUS_HOME"]?.trim() ||
|
|
293666
|
-
var PID_FILE =
|
|
293672
|
+
var OMNIUS_DIR = process.env["OMNIUS_HOME"]?.trim() || join13(homedir13(), ".omnius");
|
|
293673
|
+
var PID_FILE = join13(OMNIUS_DIR, "daemon.pid");
|
|
293667
293674
|
var DEFAULT_PORT2 = 11435;
|
|
293668
293675
|
var LOCK_INITIALIZATION_GRACE_MS = 5e3;
|
|
293669
293676
|
var DAEMON_GRACEFUL_STOP_ATTEMPTS = 20;
|
|
@@ -293680,7 +293687,7 @@ function daemonEndpoint(port) {
|
|
|
293680
293687
|
return `127.0.0.1:${port}`;
|
|
293681
293688
|
}
|
|
293682
293689
|
function daemonLockFile(port) {
|
|
293683
|
-
return
|
|
293690
|
+
return join13(OMNIUS_DIR, `daemon-${port}.lock`);
|
|
293684
293691
|
}
|
|
293685
293692
|
function processIsAlive(pid) {
|
|
293686
293693
|
try {
|
|
@@ -293803,7 +293810,7 @@ async function getDaemonReportedVersion(port) {
|
|
|
293803
293810
|
async function waitForDaemonReady(port, expectedVersion, attempts = 24) {
|
|
293804
293811
|
let observedVersion = null;
|
|
293805
293812
|
for (let attempt = 0; attempt < attempts; attempt++) {
|
|
293806
|
-
await new Promise((
|
|
293813
|
+
await new Promise((resolve11) => setTimeout(resolve11, 500));
|
|
293807
293814
|
if (!await isDaemonRunning(port)) continue;
|
|
293808
293815
|
observedVersion = await getDaemonReportedVersion(port);
|
|
293809
293816
|
if (!expectedVersion || expectedVersion === "0.0.0" || observedVersion === expectedVersion) {
|
|
@@ -293813,7 +293820,7 @@ async function waitForDaemonReady(port, expectedVersion, attempts = 24) {
|
|
|
293813
293820
|
return { ok: false, observedVersion };
|
|
293814
293821
|
}
|
|
293815
293822
|
function delay(ms) {
|
|
293816
|
-
return new Promise((
|
|
293823
|
+
return new Promise((resolve11) => setTimeout(resolve11, ms));
|
|
293817
293824
|
}
|
|
293818
293825
|
async function runUserSystemctl(args, timeout = 2e4) {
|
|
293819
293826
|
try {
|
|
@@ -293899,10 +293906,10 @@ async function repairManagedDaemonUnit(port, preferredEntrypoint) {
|
|
|
293899
293906
|
const command = await resolveDaemonCommand(process.execPath, preferredEntrypoint);
|
|
293900
293907
|
if (!command) return false;
|
|
293901
293908
|
try {
|
|
293902
|
-
const configHome = process.env["XDG_CONFIG_HOME"] ||
|
|
293903
|
-
const unitDir =
|
|
293904
|
-
const unitPath =
|
|
293905
|
-
const logDir =
|
|
293909
|
+
const configHome = process.env["XDG_CONFIG_HOME"] || join13(homedir13(), ".config");
|
|
293910
|
+
const unitDir = join13(configHome, "systemd", "user");
|
|
293911
|
+
const unitPath = join13(unitDir, "omnius-daemon.service");
|
|
293912
|
+
const logDir = join13(OMNIUS_DIR);
|
|
293906
293913
|
mkdirSync3(unitDir, { recursive: true });
|
|
293907
293914
|
mkdirSync3(logDir, { recursive: true });
|
|
293908
293915
|
const execStart = [command.command, ...command.args].map(systemdQuote).join(" ");
|
|
@@ -293922,8 +293929,8 @@ async function repairManagedDaemonUnit(port, preferredEntrypoint) {
|
|
|
293922
293929
|
`ExecStart=${execStart}`,
|
|
293923
293930
|
"Restart=always",
|
|
293924
293931
|
"RestartSec=3",
|
|
293925
|
-
`StandardOutput=append:${
|
|
293926
|
-
`StandardError=append:${
|
|
293932
|
+
`StandardOutput=append:${join13(logDir, "daemon.log")}`,
|
|
293933
|
+
`StandardError=append:${join13(logDir, "daemon.err.log")}`,
|
|
293927
293934
|
"",
|
|
293928
293935
|
"[Install]",
|
|
293929
293936
|
"WantedBy=default.target",
|
|
@@ -293962,13 +293969,13 @@ ${fuser.stderr ?? ""}`;
|
|
|
293962
293969
|
}
|
|
293963
293970
|
}
|
|
293964
293971
|
async function daemonPortIsFree(port) {
|
|
293965
|
-
return new Promise((
|
|
293972
|
+
return new Promise((resolve11) => {
|
|
293966
293973
|
const probe = createNetServer();
|
|
293967
293974
|
let settled = false;
|
|
293968
293975
|
const finish = (free) => {
|
|
293969
293976
|
if (settled) return;
|
|
293970
293977
|
settled = true;
|
|
293971
|
-
|
|
293978
|
+
resolve11(free);
|
|
293972
293979
|
};
|
|
293973
293980
|
probe.once("error", () => finish(false));
|
|
293974
293981
|
probe.once("listening", () => {
|
|
@@ -294162,8 +294169,8 @@ function commandForEntrypoint(path, nodeExe) {
|
|
|
294162
294169
|
async function resolveDaemonCommand(nodeExe, preferredEntrypoint) {
|
|
294163
294170
|
const candidates = [];
|
|
294164
294171
|
if (preferredEntrypoint) candidates.push(preferredEntrypoint);
|
|
294165
|
-
const thisDir =
|
|
294166
|
-
candidates.push(
|
|
294172
|
+
const thisDir = dirname7(fileURLToPath2(import.meta.url));
|
|
294173
|
+
candidates.push(join13(thisDir, "index.js"));
|
|
294167
294174
|
if (process.argv[1]) candidates.push(process.argv[1]);
|
|
294168
294175
|
try {
|
|
294169
294176
|
const { spawnSync: spawnSync3 } = await import("node:child_process");
|
|
@@ -294198,8 +294205,8 @@ async function startDaemon(port = getDaemonPort(), preferredEntrypoint) {
|
|
|
294198
294205
|
let outFd = null;
|
|
294199
294206
|
let errFd = null;
|
|
294200
294207
|
try {
|
|
294201
|
-
outFd = openSync(
|
|
294202
|
-
errFd = openSync(
|
|
294208
|
+
outFd = openSync(join13(OMNIUS_DIR, "daemon.log"), "a");
|
|
294209
|
+
errFd = openSync(join13(OMNIUS_DIR, "daemon.err.log"), "a");
|
|
294203
294210
|
const leaseId = newProcessLeaseId("daemon");
|
|
294204
294211
|
const ownerId = `daemon:${daemonPort}`;
|
|
294205
294212
|
const child = spawn(daemonCommand.command, daemonCommand.args, {
|
|
@@ -294289,8 +294296,8 @@ import {
|
|
|
294289
294296
|
writeFileSync as writeFileSync3,
|
|
294290
294297
|
writeSync as writeSync2
|
|
294291
294298
|
} from "node:fs";
|
|
294292
|
-
import { homedir as
|
|
294293
|
-
import { dirname as
|
|
294299
|
+
import { homedir as homedir14 } from "node:os";
|
|
294300
|
+
import { dirname as dirname8, join as join14 } from "node:path";
|
|
294294
294301
|
|
|
294295
294302
|
// packages/cli/src/service-version.ts
|
|
294296
294303
|
var OmniusVersionError = class extends Error {
|
|
@@ -294346,17 +294353,17 @@ function compareOmniusVersions(left, right) {
|
|
|
294346
294353
|
}
|
|
294347
294354
|
|
|
294348
294355
|
// packages/cli/src/update-service.ts
|
|
294349
|
-
function resolveUpdatePaths(env = process.env, platform2 = process.platform, home =
|
|
294350
|
-
const stateBase = platform2 === "win32" ? env["LOCALAPPDATA"] ||
|
|
294351
|
-
const cacheBase = platform2 === "win32" ? env["LOCALAPPDATA"] ||
|
|
294352
|
-
const stateDir =
|
|
294353
|
-
const cacheDir =
|
|
294356
|
+
function resolveUpdatePaths(env = process.env, platform2 = process.platform, home = homedir14()) {
|
|
294357
|
+
const stateBase = platform2 === "win32" ? env["LOCALAPPDATA"] || join14(home, "AppData", "Local") : platform2 === "darwin" ? join14(home, "Library", "Application Support") : env["XDG_STATE_HOME"] || join14(home, ".local", "state");
|
|
294358
|
+
const cacheBase = platform2 === "win32" ? env["LOCALAPPDATA"] || join14(home, "AppData", "Local") : platform2 === "darwin" ? join14(home, "Library", "Caches") : env["XDG_CACHE_HOME"] || join14(home, ".cache");
|
|
294359
|
+
const stateDir = join14(stateBase, platform2 === "win32" ? "Omnius" : "omnius", "update");
|
|
294360
|
+
const cacheDir = join14(cacheBase, platform2 === "win32" ? "Omnius" : "omnius", "npm-update");
|
|
294354
294361
|
return {
|
|
294355
294362
|
stateDir,
|
|
294356
294363
|
cacheDir,
|
|
294357
|
-
stateFile:
|
|
294358
|
-
lockFile:
|
|
294359
|
-
logFile:
|
|
294364
|
+
stateFile: join14(stateDir, "state.json"),
|
|
294365
|
+
lockFile: join14(stateDir, "update.lock"),
|
|
294366
|
+
logFile: join14(stateDir, "update.log")
|
|
294360
294367
|
};
|
|
294361
294368
|
}
|
|
294362
294369
|
function ensurePrivateDirectories(paths) {
|
|
@@ -294437,8 +294444,8 @@ function assertExactUpdateTarget(targetVersion, fromVersion) {
|
|
|
294437
294444
|
return target;
|
|
294438
294445
|
}
|
|
294439
294446
|
function npmCandidates(execPath = process.execPath) {
|
|
294440
|
-
const nodeDir =
|
|
294441
|
-
return process.platform === "win32" ? [
|
|
294447
|
+
const nodeDir = dirname8(execPath);
|
|
294448
|
+
return process.platform === "win32" ? [join14(nodeDir, "npm.cmd"), join14(nodeDir, "npm.exe"), "npm.cmd", "npm"] : [join14(nodeDir, "npm"), "/usr/local/bin/npm", "/usr/bin/npm", "npm"];
|
|
294442
294449
|
}
|
|
294443
294450
|
function runnableCommand(candidate) {
|
|
294444
294451
|
return candidate.includes("/") || candidate.includes("\\") ? existsSync5(candidate) : true;
|
|
@@ -294462,10 +294469,10 @@ function runSync(command, args, options = {}) {
|
|
|
294462
294469
|
});
|
|
294463
294470
|
}
|
|
294464
294471
|
function globalPackageCandidates(prefix) {
|
|
294465
|
-
return process.platform === "win32" ? [
|
|
294472
|
+
return process.platform === "win32" ? [join14(prefix, "node_modules", "omnius", "package.json"), join14(prefix, "omnius", "package.json")] : [join14(prefix, "lib", "node_modules", "omnius", "package.json"), join14(prefix, "node_modules", "omnius", "package.json")];
|
|
294466
294473
|
}
|
|
294467
294474
|
function globalExecutableCandidates(prefix) {
|
|
294468
|
-
return process.platform === "win32" ? [
|
|
294475
|
+
return process.platform === "win32" ? [join14(prefix, "omnius.cmd"), join14(prefix, "omnius.exe"), join14(prefix, "bin", "omnius.cmd")] : [join14(prefix, "bin", "omnius")];
|
|
294469
294476
|
}
|
|
294470
294477
|
function inspectGlobalOmniusInstall(expectedVersion, options = {}) {
|
|
294471
294478
|
const npmPath = options.npmPath ?? resolveNpmPath();
|
|
@@ -294510,7 +294517,7 @@ function permissionRemediation(evidence) {
|
|
|
294510
294517
|
return /EACCES|EPERM|permission denied/i.test(evidence) ? "The discovered npm global prefix is not writable. Configure a user-owned npm prefix or rerun the explicit update from a privileged terminal; Omnius never silently elevates." : void 0;
|
|
294511
294518
|
}
|
|
294512
294519
|
function installGlobalPackageStreaming(input) {
|
|
294513
|
-
return new Promise((
|
|
294520
|
+
return new Promise((resolve11) => {
|
|
294514
294521
|
const stderrTail = [];
|
|
294515
294522
|
let settled = false;
|
|
294516
294523
|
let timedOut = false;
|
|
@@ -294518,7 +294525,7 @@ function installGlobalPackageStreaming(input) {
|
|
|
294518
294525
|
if (settled) return;
|
|
294519
294526
|
settled = true;
|
|
294520
294527
|
clearTimeout(timer);
|
|
294521
|
-
|
|
294528
|
+
resolve11({ exitCode, ...error ? { error } : {} });
|
|
294522
294529
|
};
|
|
294523
294530
|
const child = spawn2(
|
|
294524
294531
|
input.npmPath,
|
|
@@ -294578,7 +294585,7 @@ async function runVerifiedUpdateTransaction(initial, dependencies, paths = resol
|
|
|
294578
294585
|
const npmPath = resolveNpmPath();
|
|
294579
294586
|
const env = {
|
|
294580
294587
|
...process.env,
|
|
294581
|
-
PATH: [
|
|
294588
|
+
PATH: [dirname8(process.execPath), process.env.PATH ?? ""].filter(Boolean).join(process.platform === "win32" ? ";" : ":"),
|
|
294582
294589
|
NPM_CONFIG_CACHE: paths.cacheDir,
|
|
294583
294590
|
npm_config_cache: paths.cacheDir,
|
|
294584
294591
|
npm_config_prefer_online: "true",
|
|
@@ -294625,7 +294632,7 @@ async function runVerifiedUpdateTransaction(initial, dependencies, paths = resol
|
|
|
294625
294632
|
if (daemon?.bootVersion === target && daemon.bootPackageHash === evidence.packageHash) {
|
|
294626
294633
|
break;
|
|
294627
294634
|
}
|
|
294628
|
-
if (attempt < 3) await new Promise((
|
|
294635
|
+
if (attempt < 3) await new Promise((resolve11) => setTimeout(resolve11, 1e3));
|
|
294629
294636
|
}
|
|
294630
294637
|
if (!daemon || daemon.bootVersion !== target) {
|
|
294631
294638
|
const observed = daemon?.bootVersion ?? "unreachable";
|
|
@@ -294702,34 +294709,34 @@ import {
|
|
|
294702
294709
|
writeFileSync as writeFileSync4,
|
|
294703
294710
|
writeSync as writeSync3
|
|
294704
294711
|
} from "node:fs";
|
|
294705
|
-
import { homedir as
|
|
294706
|
-
import { basename as
|
|
294712
|
+
import { homedir as homedir15, tmpdir as tmpdir7 } from "node:os";
|
|
294713
|
+
import { basename as basename8, dirname as dirname9, join as join16 } from "node:path";
|
|
294707
294714
|
|
|
294708
294715
|
// packages/cli/src/updater.ts
|
|
294709
|
-
import { join as
|
|
294716
|
+
import { join as join15 } from "node:path";
|
|
294710
294717
|
var CHECK_INTERVAL_MS = 60 * 1e3;
|
|
294711
294718
|
var CACHE_DIR = resolveUpdatePaths().stateDir;
|
|
294712
|
-
var CACHE_FILE =
|
|
294719
|
+
var CACHE_FILE = join15(CACHE_DIR, "registry-check.json");
|
|
294713
294720
|
|
|
294714
294721
|
// packages/cli/src/tray.ts
|
|
294715
294722
|
var DEFAULT_ENDPOINT = "http://127.0.0.1:11435";
|
|
294716
294723
|
function uidSuffix() {
|
|
294717
294724
|
return typeof process.getuid === "function" ? String(process.getuid()) : "user";
|
|
294718
294725
|
}
|
|
294719
|
-
function resolveTrayPaths(env = process.env, platform2 = process.platform, home =
|
|
294720
|
-
const runtimeBase = env["XDG_RUNTIME_DIR"] ||
|
|
294721
|
-
const stateBase = platform2 === "win32" ? env["LOCALAPPDATA"] ||
|
|
294722
|
-
const configBase = platform2 === "win32" ? env["APPDATA"] ||
|
|
294723
|
-
const runtimeDir =
|
|
294724
|
-
const stateDir = platform2 === "win32" ?
|
|
294725
|
-
const autostartFile = platform2 === "darwin" ?
|
|
294726
|
+
function resolveTrayPaths(env = process.env, platform2 = process.platform, home = homedir15()) {
|
|
294727
|
+
const runtimeBase = env["XDG_RUNTIME_DIR"] || join16(tmpdir7(), `omnius-${uidSuffix()}`);
|
|
294728
|
+
const stateBase = platform2 === "win32" ? env["LOCALAPPDATA"] || join16(home, "AppData", "Local") : env["XDG_STATE_HOME"] || join16(home, ".local", "state");
|
|
294729
|
+
const configBase = platform2 === "win32" ? env["APPDATA"] || join16(home, "AppData", "Roaming") : env["XDG_CONFIG_HOME"] || join16(home, ".config");
|
|
294730
|
+
const runtimeDir = join16(runtimeBase, "omnius");
|
|
294731
|
+
const stateDir = platform2 === "win32" ? join16(stateBase, "Omnius") : join16(stateBase, "omnius");
|
|
294732
|
+
const autostartFile = platform2 === "darwin" ? join16(home, "Library", "LaunchAgents", "ai.omnius.tray.plist") : platform2 === "win32" ? join16(configBase, "Microsoft", "Windows", "Start Menu", "Programs", "Startup", "omnius-tray.cmd") : join16(configBase, "autostart", "omnius-tray.desktop");
|
|
294726
294733
|
return {
|
|
294727
294734
|
runtimeDir,
|
|
294728
294735
|
stateDir,
|
|
294729
|
-
pidFile:
|
|
294730
|
-
stateFile:
|
|
294731
|
-
stdoutLog:
|
|
294732
|
-
stderrLog:
|
|
294736
|
+
pidFile: join16(runtimeDir, "tray.pid"),
|
|
294737
|
+
stateFile: join16(runtimeDir, "tray-state.json"),
|
|
294738
|
+
stdoutLog: join16(stateDir, "tray.log"),
|
|
294739
|
+
stderrLog: join16(stateDir, "tray.err.log"),
|
|
294733
294740
|
autostartFile
|
|
294734
294741
|
};
|
|
294735
294742
|
}
|
|
@@ -294904,7 +294911,7 @@ async function stopTray() {
|
|
|
294904
294911
|
}
|
|
294905
294912
|
return true;
|
|
294906
294913
|
}
|
|
294907
|
-
await new Promise((
|
|
294914
|
+
await new Promise((resolve11) => setTimeout(resolve11, 100));
|
|
294908
294915
|
}
|
|
294909
294916
|
if (!trayProcessCommandLooksOwned(processCommandLine(pid))) return false;
|
|
294910
294917
|
try {
|
|
@@ -294923,7 +294930,7 @@ async function stopTray() {
|
|
|
294923
294930
|
}
|
|
294924
294931
|
return true;
|
|
294925
294932
|
}
|
|
294926
|
-
await new Promise((
|
|
294933
|
+
await new Promise((resolve11) => setTimeout(resolve11, 100));
|
|
294927
294934
|
}
|
|
294928
294935
|
return false;
|
|
294929
294936
|
}
|
|
@@ -294940,14 +294947,14 @@ function pathsFromEnvironment() {
|
|
|
294940
294947
|
return {
|
|
294941
294948
|
stateDir,
|
|
294942
294949
|
cacheDir,
|
|
294943
|
-
stateFile:
|
|
294944
|
-
lockFile:
|
|
294945
|
-
logFile:
|
|
294950
|
+
stateFile: join17(stateDir, "state.json"),
|
|
294951
|
+
lockFile: join17(stateDir, "update.lock"),
|
|
294952
|
+
logFile: join17(stateDir, "update.log")
|
|
294946
294953
|
};
|
|
294947
294954
|
}
|
|
294948
294955
|
async function restartTrayWithInstalledExecutable(executable, endpoint) {
|
|
294949
294956
|
await stopTray();
|
|
294950
|
-
const launched = await new Promise((
|
|
294957
|
+
const launched = await new Promise((resolve11) => {
|
|
294951
294958
|
const child = spawn4(executable, ["tray", "start", "--endpoint", endpoint], {
|
|
294952
294959
|
stdio: "ignore",
|
|
294953
294960
|
windowsHide: true
|
|
@@ -294958,22 +294965,22 @@ async function restartTrayWithInstalledExecutable(executable, endpoint) {
|
|
|
294958
294965
|
} catch {
|
|
294959
294966
|
}
|
|
294960
294967
|
;
|
|
294961
|
-
|
|
294968
|
+
resolve11(false);
|
|
294962
294969
|
}, 15e3);
|
|
294963
294970
|
child.once("error", () => {
|
|
294964
294971
|
clearTimeout(timer);
|
|
294965
|
-
|
|
294972
|
+
resolve11(false);
|
|
294966
294973
|
});
|
|
294967
294974
|
child.once("close", (code) => {
|
|
294968
294975
|
clearTimeout(timer);
|
|
294969
|
-
|
|
294976
|
+
resolve11(code === 0);
|
|
294970
294977
|
});
|
|
294971
294978
|
});
|
|
294972
294979
|
if (!launched) return false;
|
|
294973
294980
|
for (let attempt = 0; attempt < 30; attempt++) {
|
|
294974
294981
|
const status = await getTrayStatus(endpoint);
|
|
294975
294982
|
if (status.running && status.ready && status.endpoint === endpoint) return true;
|
|
294976
|
-
await new Promise((
|
|
294983
|
+
await new Promise((resolve11) => setTimeout(resolve11, 250));
|
|
294977
294984
|
}
|
|
294978
294985
|
return false;
|
|
294979
294986
|
}
|