omnius 1.0.631 → 1.0.633
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/dist/index.js +57 -38
- package/dist/postinstall-daemon.cjs +22 -11
- package/dist/update-worker.js +3 -0
- package/docs/DISCOVERY.json +2 -2
- package/docs/DISCOVERY.md +1 -1
- package/docs/rest/endpoints/voice-vision.md +5 -2
- package/npm-shrinkwrap.json +8 -8
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -3849,7 +3849,7 @@ function sha256File(path16) {
|
|
|
3849
3849
|
function loadManifest() {
|
|
3850
3850
|
try {
|
|
3851
3851
|
const manifest = JSON.parse(readFileSync7(manifestPath(), "utf8"));
|
|
3852
|
-
if (manifest.runtimeVersion !== RUNTIME_VERSION || manifest.model !== MODEL_NAME || manifest.modelRevision !== MODEL_REVISION || manifest.modelDigest !== `sha256:${MODEL_SHA256}` || manifest.classMapDigest !== `sha256:${CLASS_MAP_SHA256}` || manifest.backend !== "tensorrt-fp16" || !manifest.tensorRtVersion || manifest.cudaRuntimeVersion !== 12020 || !manifest.l4tRelease || !manifest.
|
|
3852
|
+
if (manifest.runtimeVersion !== RUNTIME_VERSION || manifest.model !== MODEL_NAME || manifest.modelRevision !== MODEL_REVISION || manifest.modelDigest !== `sha256:${MODEL_SHA256}` || manifest.classMapDigest !== `sha256:${CLASS_MAP_SHA256}` || manifest.backend !== "tensorrt-fp16" || !manifest.tensorRtVersion || manifest.cudaRuntimeVersion !== 12020 || !manifest.l4tRelease || !manifest.engineBuilderVersion || !existsSync8(modelPath()) || !existsSync8(classMapPath()) || !existsSync8(enginePath()))
|
|
3853
3853
|
return null;
|
|
3854
3854
|
if (sha256File(modelPath()) !== MODEL_SHA256 || sha256File(classMapPath()) !== CLASS_MAP_SHA256 || manifest.engineDigest !== `sha256:${sha256File(enginePath())}`)
|
|
3855
3855
|
return null;
|
|
@@ -4027,18 +4027,15 @@ async function probeAudioPlatform(python2) {
|
|
|
4027
4027
|
const output2 = await execFileText2(python2, ["-c", script], { timeout: 3e4, env: managedEnv() });
|
|
4028
4028
|
const parsed = JSON.parse(output2.trim().split(/\r?\n/).pop() || "{}");
|
|
4029
4029
|
const l4tRelease = readFileSync7("/etc/nv_tegra_release", "utf8").replace(/\s+/g, " ").trim();
|
|
4030
|
-
const
|
|
4031
|
-
|
|
4032
|
-
env: managedEnv()
|
|
4033
|
-
})).replace(/\s+/g, " ").trim().slice(0, 1e3);
|
|
4034
|
-
if (!parsed.tensorrt || parsed.cuda_runtime !== 12020 || !l4tRelease || !trtexecVersion) {
|
|
4030
|
+
const engineBuilderVersion = `TensorRT ${parsed.tensorrt ?? ""}`.trim();
|
|
4031
|
+
if (!parsed.tensorrt || parsed.cuda_runtime !== 12020 || !l4tRelease) {
|
|
4035
4032
|
throw new Error("Could not fingerprint the exact JetPack TensorRT/CUDA engine builder runtime");
|
|
4036
4033
|
}
|
|
4037
4034
|
return {
|
|
4038
4035
|
tensorRtVersion: parsed.tensorrt,
|
|
4039
4036
|
cudaRuntimeVersion: parsed.cuda_runtime,
|
|
4040
4037
|
l4tRelease,
|
|
4041
|
-
|
|
4038
|
+
engineBuilderVersion
|
|
4042
4039
|
};
|
|
4043
4040
|
}
|
|
4044
4041
|
function assertTensorRtPython(python2) {
|
|
@@ -4104,7 +4101,7 @@ async function ensureAudioClassifierSetup() {
|
|
|
4104
4101
|
await downloadChecked(MODEL_URL, modelPath(), MODEL_SHA256);
|
|
4105
4102
|
await downloadChecked(CLASS_MAP_URL, classMapPath(), CLASS_MAP_SHA256);
|
|
4106
4103
|
const current = loadManifest();
|
|
4107
|
-
if (!current || current.device !== device2.name || current.computeCapability !== device2.computeCapability || current.tensorRtVersion !== platformFingerprint.tensorRtVersion || current.cudaRuntimeVersion !== platformFingerprint.cudaRuntimeVersion || current.l4tRelease !== platformFingerprint.l4tRelease || current.
|
|
4104
|
+
if (!current || current.device !== device2.name || current.computeCapability !== device2.computeCapability || current.tensorRtVersion !== platformFingerprint.tensorRtVersion || current.cudaRuntimeVersion !== platformFingerprint.cudaRuntimeVersion || current.l4tRelease !== platformFingerprint.l4tRelease || current.engineBuilderVersion !== platformFingerprint.engineBuilderVersion) {
|
|
4108
4105
|
await buildEngine(device2);
|
|
4109
4106
|
const manifest = {
|
|
4110
4107
|
runtimeVersion: RUNTIME_VERSION,
|
|
@@ -4381,7 +4378,7 @@ var init_audio_classifier_runtime = __esm({
|
|
|
4381
4378
|
init_jetson_monitor();
|
|
4382
4379
|
init_model_store();
|
|
4383
4380
|
init_venv_paths();
|
|
4384
|
-
RUNTIME_VERSION =
|
|
4381
|
+
RUNTIME_VERSION = 3;
|
|
4385
4382
|
MODEL_NAME = "yamnet";
|
|
4386
4383
|
MODEL_REVISION = "ac2ca3bd45d12ec1f19f1144205ea529b4e9dedf";
|
|
4387
4384
|
MODEL_URL = `https://huggingface.co/zeropointnine/yamnet-onnx/resolve/${MODEL_REVISION}/yamnet.onnx`;
|
|
@@ -4464,16 +4461,28 @@ function updateJob(job, state3, error = null) {
|
|
|
4464
4461
|
job.updated_at = (/* @__PURE__ */ new Date()).toISOString();
|
|
4465
4462
|
persistJob(job);
|
|
4466
4463
|
}
|
|
4464
|
+
function resolveOcrNativeProvider(name10, probed) {
|
|
4465
|
+
const providers = OCR_JETSON_NATIVE_PROVIDERS[name10] ?? [name10];
|
|
4466
|
+
for (const provider of providers) {
|
|
4467
|
+
const version5 = probed[provider];
|
|
4468
|
+
if (version5)
|
|
4469
|
+
return { name: name10, installed: true, version: version5, provider };
|
|
4470
|
+
}
|
|
4471
|
+
return { name: name10, installed: false };
|
|
4472
|
+
}
|
|
4467
4473
|
async function probeNativePackage(name10) {
|
|
4468
4474
|
if (process.platform !== "linux")
|
|
4469
4475
|
return { name: name10, installed: false };
|
|
4470
|
-
|
|
4471
|
-
|
|
4472
|
-
|
|
4473
|
-
|
|
4474
|
-
|
|
4475
|
-
|
|
4476
|
+
const probed = {};
|
|
4477
|
+
for (const provider of OCR_JETSON_NATIVE_PROVIDERS[name10] ?? [name10]) {
|
|
4478
|
+
try {
|
|
4479
|
+
const output2 = (await execFileText2("dpkg-query", ["-W", "-f=${Status} ${Version}", provider], { timeout: 5e3 })).trim();
|
|
4480
|
+
probed[provider] = /^install ok installed\t(.+)$/.exec(output2)?.[1];
|
|
4481
|
+
} catch {
|
|
4482
|
+
probed[provider] = void 0;
|
|
4483
|
+
}
|
|
4476
4484
|
}
|
|
4485
|
+
return resolveOcrNativeProvider(name10, probed);
|
|
4477
4486
|
}
|
|
4478
4487
|
async function probeTesseract(requested) {
|
|
4479
4488
|
try {
|
|
@@ -4557,15 +4566,17 @@ async function getOcrRuntimeReadiness(language = "eng") {
|
|
|
4557
4566
|
{ name: "pytesseract", installed: modules["pytesseract"]?.version === OCR_PYTESTERACT_VERSION, version: modules["pytesseract"]?.version, required_version: OCR_PYTESTERACT_VERSION, source: selected.managed ? "venv" : "system" }
|
|
4558
4567
|
];
|
|
4559
4568
|
const pipelineAvailable = Boolean(findAdvancedOcrScript());
|
|
4560
|
-
const nativeReady = !jetson || native.every((item) => item.installed);
|
|
4561
4569
|
const importsVerified = pythonPackages.every((item) => item.installed);
|
|
4562
|
-
const ready =
|
|
4570
|
+
const ready = engine.available && engine.languages_ready && python2.available && importsVerified && pipelineAvailable;
|
|
4563
4571
|
const persisted = activeSetup?.job ?? readPersistedJob();
|
|
4564
4572
|
const state3 = activeSetup?.job.state ?? (ready ? "ready" : persisted?.state === "failed" ? "failed" : "unprovisioned");
|
|
4565
|
-
const missingNative = native.filter((item) => !item.installed).map((item) => item.name);
|
|
4566
4573
|
const missingLanguages = requested.filter((item) => !engine.languages.includes(item));
|
|
4567
|
-
const
|
|
4568
|
-
|
|
4574
|
+
const actualNativeInstallNames = [
|
|
4575
|
+
...!engine.available ? ["tesseract-ocr"] : [],
|
|
4576
|
+
...languagePackages(missingLanguages)
|
|
4577
|
+
];
|
|
4578
|
+
const missingPython = pythonPackages.filter((item) => !item.installed).map((item) => item.name);
|
|
4579
|
+
const detail = ready ? "Advanced OCR runtime is ready." : selected.override ? !python2.available ? "OMNIUS_OCR_PYTHON does not name a usable Python interpreter." : `OMNIUS_OCR_PYTHON is missing required isolated imports or versions: ${missingPython.join(", ") || "none"}. Omnius will not modify the operator-managed interpreter.` : actualNativeInstallNames.length > 0 ? `Actual Tesseract capabilities are missing: ${actualNativeInstallNames.join(", ")}. Install them outside inference, then POST /v1/ocr/setup.` : python2.available && missingPython.length > 0 ? `Managed OCR imports are unavailable: ${missingPython.join(", ")}. On JetPack, preserve NVIDIA providers such as libopencv-python; do not install a second generic OpenCV stack.` : "Run POST /v1/ocr/setup to create and validate the isolated OCR runtime.";
|
|
4569
4580
|
return {
|
|
4570
4581
|
schema: "omnius.ocr-readiness.v1",
|
|
4571
4582
|
ready,
|
|
@@ -4587,7 +4598,7 @@ async function getOcrRuntimeReadiness(language = "eng") {
|
|
|
4587
4598
|
setup: persisted,
|
|
4588
4599
|
setup_url: "/v1/ocr/setup",
|
|
4589
4600
|
readiness_url: "/v1/ocr/readiness",
|
|
4590
|
-
...!ready ? { remediation: { ...
|
|
4601
|
+
...!ready ? { remediation: { ...actualNativeInstallNames.length > 0 ? { native_install_command: `sudo apt-get install -y ${actualNativeInstallNames.join(" ")}` } : {}, detail } } : {}
|
|
4591
4602
|
};
|
|
4592
4603
|
}
|
|
4593
4604
|
async function performSetup(job) {
|
|
@@ -4598,16 +4609,15 @@ async function performSetup(job) {
|
|
|
4598
4609
|
updateJob(job, "ready");
|
|
4599
4610
|
return;
|
|
4600
4611
|
}
|
|
4601
|
-
if (before.platform.jetson) {
|
|
4602
|
-
const missing = before.packages.native.filter((item) => !item.installed).map((item) => item.name);
|
|
4603
|
-
const missingLanguages = before.engine.requested_languages.filter((item) => !before.engine.languages.includes(item));
|
|
4604
|
-
const allMissing = [...missing, ...languagePackages(missingLanguages)];
|
|
4605
|
-
if (allMissing.length > 0) {
|
|
4606
|
-
throw new Error(`Native OCR prerequisites must be provisioned outside inference: sudo apt-get install -y ${allMissing.join(" ")}`);
|
|
4607
|
-
}
|
|
4608
|
-
}
|
|
4609
4612
|
if (!before.pipeline.available)
|
|
4610
4613
|
throw new Error("Bundled advanced OCR pipeline script is unavailable.");
|
|
4614
|
+
if (!before.engine.available) {
|
|
4615
|
+
throw new Error("Tesseract is unavailable. Provision tesseract-ocr outside inference, then retry OCR setup.");
|
|
4616
|
+
}
|
|
4617
|
+
if (!before.engine.languages_ready) {
|
|
4618
|
+
const missingLanguages = before.engine.requested_languages.filter((item) => !before.engine.languages.includes(item));
|
|
4619
|
+
throw new Error(`Tesseract language data is unavailable: ${languagePackages(missingLanguages).join(", ")}. Provision it outside inference, then retry OCR setup.`);
|
|
4620
|
+
}
|
|
4611
4621
|
const selected = configuredOcrPython();
|
|
4612
4622
|
if (selected.override) {
|
|
4613
4623
|
throw new Error("OMNIUS_OCR_PYTHON is configured but not ready. Omnius will not modify an operator-managed Python environment.");
|
|
@@ -4617,13 +4627,17 @@ async function performSetup(job) {
|
|
|
4617
4627
|
const mustCreate = !existsSync9(selected.executable);
|
|
4618
4628
|
const mustRepairJetsonVenv = before.platform.jetson && before.python.system_site_packages !== true;
|
|
4619
4629
|
if (mustCreate || mustRepairJetsonVenv) {
|
|
4620
|
-
|
|
4621
|
-
"
|
|
4622
|
-
|
|
4623
|
-
|
|
4624
|
-
|
|
4625
|
-
|
|
4626
|
-
|
|
4630
|
+
try {
|
|
4631
|
+
await execFileText2("python3", [
|
|
4632
|
+
"-m",
|
|
4633
|
+
"venv",
|
|
4634
|
+
...mustRepairJetsonVenv ? ["--clear"] : [],
|
|
4635
|
+
...before.platform.jetson ? ["--system-site-packages"] : [],
|
|
4636
|
+
ocrRuntimeDir()
|
|
4637
|
+
], { timeout: 12e4 });
|
|
4638
|
+
} catch (error) {
|
|
4639
|
+
throw new Error(`Could not create the isolated OCR venv. Ensure the active Python venv module is provisioned (Ubuntu package: python3-venv): ${error instanceof Error ? error.message : String(error)}`);
|
|
4640
|
+
}
|
|
4627
4641
|
}
|
|
4628
4642
|
updateJob(job, "installing_python_dependencies");
|
|
4629
4643
|
const pythonRequirements = before.platform.jetson ? ["--no-deps", `pytesseract==${OCR_PYTESTERACT_VERSION}`] : [
|
|
@@ -4686,7 +4700,7 @@ async function ensureOcrRuntimeSetup(options2 = {}) {
|
|
|
4686
4700
|
await activeSetup.promise;
|
|
4687
4701
|
return getOcrRuntimeReadiness(options2.language);
|
|
4688
4702
|
}
|
|
4689
|
-
var OCR_PYTESTERACT_VERSION, OCR_JETSON_NATIVE_PACKAGES, activeSetup;
|
|
4703
|
+
var OCR_PYTESTERACT_VERSION, OCR_JETSON_NATIVE_PACKAGES, OCR_JETSON_NATIVE_PROVIDERS, activeSetup;
|
|
4690
4704
|
var init_ocr_advanced_runtime = __esm({
|
|
4691
4705
|
"packages/execution/dist/ocr-advanced-runtime.js"() {
|
|
4692
4706
|
"use strict";
|
|
@@ -4703,6 +4717,9 @@ var init_ocr_advanced_runtime = __esm({
|
|
|
4703
4717
|
"python3-pil",
|
|
4704
4718
|
"python3-reportlab"
|
|
4705
4719
|
];
|
|
4720
|
+
OCR_JETSON_NATIVE_PROVIDERS = Object.freeze({
|
|
4721
|
+
"python3-opencv": ["python3-opencv", "libopencv-python"]
|
|
4722
|
+
});
|
|
4706
4723
|
activeSetup = null;
|
|
4707
4724
|
}
|
|
4708
4725
|
});
|
|
@@ -613334,6 +613351,7 @@ __export(dist_exports2, {
|
|
|
613334
613351
|
NotebookEditTool: () => NotebookEditTool,
|
|
613335
613352
|
OCRTool: () => OCRTool,
|
|
613336
613353
|
OCR_JETSON_NATIVE_PACKAGES: () => OCR_JETSON_NATIVE_PACKAGES,
|
|
613354
|
+
OCR_JETSON_NATIVE_PROVIDERS: () => OCR_JETSON_NATIVE_PROVIDERS,
|
|
613337
613355
|
OCR_PYTESTERACT_VERSION: () => OCR_PYTESTERACT_VERSION,
|
|
613338
613356
|
OcrImageAdvancedTool: () => OcrImageAdvancedTool,
|
|
613339
613357
|
OcrPdfTool: () => OcrPdfTool,
|
|
@@ -613754,6 +613772,7 @@ __export(dist_exports2, {
|
|
|
613754
613772
|
resolveAsrSelection: () => resolveAsrSelection,
|
|
613755
613773
|
resolveMediaCudaVisibleDevicesForEnv: () => resolveMediaCudaVisibleDevicesForEnv,
|
|
613756
613774
|
resolveMediaModel: () => resolveMediaModel,
|
|
613775
|
+
resolveOcrNativeProvider: () => resolveOcrNativeProvider,
|
|
613757
613776
|
resolveSecret: () => resolveSecret,
|
|
613758
613777
|
resolveTranscribeCliPython: () => resolveTranscribeCliPython,
|
|
613759
613778
|
resolveVendorCudaPythonSync: () => resolveVendorCudaPythonSync,
|
|
@@ -824173,7 +824192,7 @@ function getOpenApiSpec() {
|
|
|
824173
824192
|
get: {
|
|
824174
824193
|
summary: "Probe advanced OCR runtime readiness without mutation",
|
|
824175
824194
|
tags: ["Tools", "Vision"],
|
|
824176
|
-
description: "Reports exact Tesseract engine/language, native
|
|
824195
|
+
description: "Reports exact Tesseract engine/language, native provider inventory, Python import/version, backend, override, and bundled-pipeline state. Successful isolated imports are authoritative, including NVIDIA libopencv-python; readiness does not require Ubuntu's python3-opencv dpkg name. This endpoint never invokes sudo, apt, pip, venv creation, or inference. Optional query: ?language=eng+fra.",
|
|
824177
824196
|
responses: { 200: { description: "OCR runtime is ready" }, 400: { description: "Invalid language expression" }, 503: { description: "OCR runtime is unprovisioned, provisioning, or failed" } }
|
|
824178
824197
|
}
|
|
824179
824198
|
},
|
|
@@ -99,7 +99,8 @@ function hasCmd(name) {
|
|
|
99
99
|
return runQuiet("which " + name);
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
-
// Advanced OCR on JetPack
|
|
102
|
+
// Advanced OCR on JetPack preserves whichever ABI-matched system Python stack
|
|
103
|
+
// is actually usable, including NVIDIA's libopencv-python provider.
|
|
103
104
|
// Native packages belong to package installation, never to an inference or
|
|
104
105
|
// readiness request. Jammy has no python3-pytesseract candidate, so that one
|
|
105
106
|
// pure-Python package is intentionally handled later by /v1/ocr/setup.
|
|
@@ -114,17 +115,27 @@ function ensureJetsonOcrNativeDependencies() {
|
|
|
114
115
|
}
|
|
115
116
|
if (!jetson || !hasCmd("apt-get") || !hasCmd("dpkg-query")) return;
|
|
116
117
|
|
|
117
|
-
var
|
|
118
|
-
|
|
119
|
-
"
|
|
120
|
-
"python3-
|
|
121
|
-
"python3-
|
|
122
|
-
"python3-
|
|
123
|
-
"python3-
|
|
118
|
+
var systemPython = fs.existsSync("/usr/bin/python3") ? "/usr/bin/python3" : "python3";
|
|
119
|
+
var dependencies = [
|
|
120
|
+
{ package: "tesseract-ocr", command: "tesseract" },
|
|
121
|
+
{ package: "python3-venv" },
|
|
122
|
+
{ package: "python3-opencv", module: "cv2", providers: ["python3-opencv", "libopencv-python"] },
|
|
123
|
+
{ package: "python3-numpy", module: "numpy" },
|
|
124
|
+
{ package: "python3-pil", module: "PIL" },
|
|
125
|
+
{ package: "python3-reportlab", module: "reportlab" },
|
|
124
126
|
];
|
|
125
|
-
var missing =
|
|
126
|
-
|
|
127
|
-
|
|
127
|
+
var missing = dependencies.filter(function (dependency) {
|
|
128
|
+
// Successful imports with user-site disabled are authoritative. This
|
|
129
|
+
// avoids replacing NVIDIA OpenCV 4.8 with Ubuntu's generic OpenCV 4.5 just
|
|
130
|
+
// because the provider package has a different dpkg name.
|
|
131
|
+
if (dependency.command && hasCmd(dependency.command)) return false;
|
|
132
|
+
if (dependency.module && runQuiet(
|
|
133
|
+
"PYTHONNOUSERSITE=1 " + shellQuote(systemPython) + " -c " + shellQuote("import " + dependency.module),
|
|
134
|
+
)) return false;
|
|
135
|
+
return !(dependency.providers || [dependency.package]).some(function (provider) {
|
|
136
|
+
return runQuiet("dpkg-query -W -f='${Status}' " + shellQuote(provider) + " 2>/dev/null | grep -q 'install ok installed'");
|
|
137
|
+
});
|
|
138
|
+
}).map(function (dependency) { return dependency.package; });
|
|
128
139
|
if (missing.length === 0) {
|
|
129
140
|
log("Jetson advanced-OCR native dependencies are installed.");
|
|
130
141
|
return;
|
package/dist/update-worker.js
CHANGED
|
@@ -245090,6 +245090,9 @@ init_process_async();
|
|
|
245090
245090
|
init_jetson_monitor();
|
|
245091
245091
|
init_venv_paths();
|
|
245092
245092
|
init_model_store();
|
|
245093
|
+
var OCR_JETSON_NATIVE_PROVIDERS = Object.freeze({
|
|
245094
|
+
"python3-opencv": ["python3-opencv", "libopencv-python"]
|
|
245095
|
+
});
|
|
245093
245096
|
|
|
245094
245097
|
// packages/execution/dist/broker-mediated-backend.js
|
|
245095
245098
|
init_model_broker();
|
package/docs/DISCOVERY.json
CHANGED
|
@@ -10862,7 +10862,7 @@
|
|
|
10862
10862
|
"Tools",
|
|
10863
10863
|
"Vision"
|
|
10864
10864
|
],
|
|
10865
|
-
"description": "Reports exact Tesseract engine/language, native
|
|
10865
|
+
"description": "Reports exact Tesseract engine/language, native provider inventory, Python import/version, backend, override, and bundled-pipeline state. Successful isolated imports are authoritative, including NVIDIA libopencv-python; readiness does not require Ubuntu's python3-opencv dpkg name. This endpoint never invokes sudo, apt, pip, venv creation, or inference. Optional query: ?language=eng+fra.",
|
|
10866
10866
|
"responses": {
|
|
10867
10867
|
"200": {
|
|
10868
10868
|
"description": "OCR runtime is ready"
|
|
@@ -29108,7 +29108,7 @@
|
|
|
29108
29108
|
"id": "guide.rest-endpoints-voice-vision",
|
|
29109
29109
|
"kind": "guide",
|
|
29110
29110
|
"title": "Voice, Audio, Vision, And Voicechat",
|
|
29111
|
-
"summary": "First poll GET /v1/ocr/readiness?language=eng. On Jetson, a privileged or interactive npm installation/bootstrap provisions tesseract-ocr, python3-venv,
|
|
29111
|
+
"summary": "First poll GET /v1/ocr/readiness?language=eng. On Jetson, a privileged or interactive npm installation/bootstrap provisions tesseract-ocr, python3-venv, an import-verified system OpenCV provider (including NVIDIA libopencv-python), python3-numpy, python3-pil, and python3-reportlab. Daemon startup then creates (or repairs) ~/.omnius/runtimes/vision/ocr-advanc",
|
|
29112
29112
|
"keywords": [
|
|
29113
29113
|
"rest",
|
|
29114
29114
|
"endpoints",
|
package/docs/DISCOVERY.md
CHANGED
|
@@ -463,7 +463,7 @@ Daemon equivalents are `GET /v1/discovery/bootstrap`, `GET /v1/discovery?q=<inte
|
|
|
463
463
|
| `guide.rest-endpoints-run` | Runs, Jobs, Todos, And Scheduled Work | Submits a long-running task to the daemon and returns an accepted job record. Runs are tracked under .omnius/jobs/. |
|
|
464
464
|
| `guide.rest-endpoints-skills` | Skills And Commands | The REST docs bundle is available as: |
|
|
465
465
|
| `guide.rest-endpoints-tools` | Tools, MCP, Hooks, Agents, And Code Graph | GET /v1/tools and POST /v1/tools/{name}/call use the same direct-call registry, built from the @omnius/execution tool manifest plus virtual lifecycle tools such as taskcomplete. If a tool appears in /v1/tools with directcallable: true, the same name is callable at /v1/tools/{name}/call. |
|
|
466
|
-
| `guide.rest-endpoints-voice-vision` | Voice, Audio, Vision, And Voicechat | First poll GET /v1/ocr/readiness?language=eng. On Jetson, a privileged or interactive npm installation/bootstrap provisions tesseract-ocr, python3-venv,
|
|
466
|
+
| `guide.rest-endpoints-voice-vision` | Voice, Audio, Vision, And Voicechat | First poll GET /v1/ocr/readiness?language=eng. On Jetson, a privileged or interactive npm installation/bootstrap provisions tesseract-ocr, python3-venv, an import-verified system OpenCV provider (including NVIDIA libopencv-python), python3-numpy, python3-pil, and python3-reportlab. Daemon startup then creates (or repairs) ~/.omnius/runtimes/vision/ocr-advanc |
|
|
467
467
|
| `guide.rest-errors-pagination-etags` | Errors, Pagination, ETags, And Request IDs | The OpenAPI contract documents RFC 7807 Problem Details for common errors: |
|
|
468
468
|
| `guide.rest-examples-curl` | Curl Examples | curl -s "$BASE/openapi.json" \| jq '.info.title, .info.version' |
|
|
469
469
|
| `guide.rest-examples-openai-sdk` | OpenAI SDK Examples | Omnius exposes an OpenAI-compatible chat-completions endpoint at /v1/chat/completions. |
|
|
@@ -41,7 +41,8 @@
|
|
|
41
41
|
|
|
42
42
|
First poll `GET /v1/ocr/readiness?language=eng`. On Jetson, a privileged or
|
|
43
43
|
interactive npm installation/bootstrap provisions `tesseract-ocr`, `python3-venv`,
|
|
44
|
-
|
|
44
|
+
an import-verified system OpenCV provider (including NVIDIA
|
|
45
|
+
`libopencv-python`), `python3-numpy`, `python3-pil`, and `python3-reportlab`.
|
|
45
46
|
Daemon startup then creates (or repairs)
|
|
46
47
|
`~/.omnius/runtimes/vision/ocr-advanced` with `--system-site-packages` and
|
|
47
48
|
installs only `pytesseract==0.3.13 --no-deps`. `POST /v1/ocr/setup` is the
|
|
@@ -63,7 +64,9 @@ curl -sS -X POST http://127.0.0.1:11435/v1/ocr/advanced \
|
|
|
63
64
|
Inference never invokes sudo, apt, pip, or venv creation. If readiness is
|
|
64
65
|
false, the tool returns `result.data.code=ocr_runtime_not_ready` with setup and
|
|
65
66
|
readiness URLs. Jetson never installs generic CUDA, Torch, OpenCV, or NumPy
|
|
66
|
-
packages.
|
|
67
|
+
packages. A valid `OMNIUS_OCR_PYTHON` is accepted from its isolated import and
|
|
68
|
+
version results without requiring particular dpkg package names. The caller
|
|
69
|
+
needs `run` scope because optional
|
|
67
70
|
`output_dir`, batch, and debug modes write OCR artifacts.
|
|
68
71
|
|
|
69
72
|
## TTS
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "omnius",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.633",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "omnius",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.633",
|
|
10
10
|
"bundleDependencies": [
|
|
11
11
|
"image-to-ascii"
|
|
12
12
|
],
|
|
@@ -4091,9 +4091,9 @@
|
|
|
4091
4091
|
}
|
|
4092
4092
|
},
|
|
4093
4093
|
"node_modules/hono": {
|
|
4094
|
-
"version": "4.13.
|
|
4095
|
-
"resolved": "https://registry.npmjs.org/hono/-/hono-4.13.
|
|
4096
|
-
"integrity": "sha512-
|
|
4094
|
+
"version": "4.13.2",
|
|
4095
|
+
"resolved": "https://registry.npmjs.org/hono/-/hono-4.13.2.tgz",
|
|
4096
|
+
"integrity": "sha512-JydRilDRkYBQMt9qR9U92mXxmbGqsqSn/IKOrh4e7/gEbn+0zSr8igTu0obwJoNGN4sez28DIql7FBHWydoJpA==",
|
|
4097
4097
|
"license": "MIT",
|
|
4098
4098
|
"engines": {
|
|
4099
4099
|
"node": ">=16.9.0"
|
|
@@ -5138,9 +5138,9 @@
|
|
|
5138
5138
|
}
|
|
5139
5139
|
},
|
|
5140
5140
|
"node_modules/main-event": {
|
|
5141
|
-
"version": "1.0.
|
|
5142
|
-
"resolved": "https://registry.npmjs.org/main-event/-/main-event-1.0.
|
|
5143
|
-
"integrity": "sha512-
|
|
5141
|
+
"version": "1.0.5",
|
|
5142
|
+
"resolved": "https://registry.npmjs.org/main-event/-/main-event-1.0.5.tgz",
|
|
5143
|
+
"integrity": "sha512-4l9z8r7Q446mhhVTwdHmfPksOYBwN2xa7ewEW2yxPVNQapIaAf57ORFLMB91SpMEMa4wXowect7fq3uMLjDnGA==",
|
|
5144
5144
|
"license": "Apache-2.0 OR MIT"
|
|
5145
5145
|
},
|
|
5146
5146
|
"node_modules/math-intrinsics": {
|
package/package.json
CHANGED