omnius 1.0.641 → 1.0.643
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 +1755 -884
- package/dist/postinstall-daemon.cjs +19 -0
- package/dist/scripts/audio-clap-semantic-worker.py +2 -0
- package/dist/scripts/ocr-advanced.py +81 -13
- package/dist/scripts/speaker-diarization-worker.py +85 -2
- package/dist/scripts/vision-open-clip-worker.py +103 -46
- package/dist/update-worker.js +22 -0
- package/docs/DISCOVERY.json +36 -29
- package/docs/DISCOVERY.md +2 -2
- package/docs/reference/configuration.md +16 -0
- package/docs/rest/endpoints/chat.md +2 -1
- package/docs/rest/endpoints/voice-vision.md +72 -28
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
package/docs/DISCOVERY.json
CHANGED
|
@@ -4473,7 +4473,7 @@
|
|
|
4473
4473
|
"tags": [
|
|
4474
4474
|
"Audio"
|
|
4475
4475
|
],
|
|
4476
|
-
"description": "Managed inference contract: {session_id,file,asset_digest?,channel?,sample_rate_hz?,timeout_ms?}. It accepts only a retained mono PCM16/16 kHz WAV greater than 0 and at most 6 seconds. The
|
|
4476
|
+
"description": "Managed inference contract: {session_id,file,asset_digest?,channel?,sample_rate_hz?,timeout_ms?}. It accepts only a retained mono PCM16/16 kHz WAV greater than 0 and at most 6 seconds. The controller is limited to one active job plus one queued job; cancellation terminates its process group before clearing both. Output is omnius.speaker-diarization.v1 SpeakerTurnSpan[] with explicit overlap and session-local labels. Inference may activate an already-provisioned runtime but never installs packages, builds code, or downloads model bytes.",
|
|
4477
4477
|
"responses": {
|
|
4478
4478
|
"200": {
|
|
4479
4479
|
"description": "Typed managed diarization spans."
|
|
@@ -4631,7 +4631,7 @@
|
|
|
4631
4631
|
"tags": [
|
|
4632
4632
|
"Audio"
|
|
4633
4633
|
],
|
|
4634
|
-
"description": "Non-mutating readiness for NVIDIA diar_streaming_sortformer_4spk-v2. It never downloads, installs, creates environments, or loads a model.
|
|
4634
|
+
"description": "Non-mutating readiness for NVIDIA diar_streaming_sortformer_4spk-v2. It never downloads, installs, creates environments, or loads a model. Managed JetPack setup pins NVIDIA's Q8 GGUF plus NeMo-Speech.cpp source revision and keeps one persistent worker/controller serialized; operator-provided .nemo/Python snapshots remain supported. 200 requires the verified runtime worker to be active. Session-local labels are never durable identities.",
|
|
4635
4635
|
"responses": {
|
|
4636
4636
|
"200": {
|
|
4637
4637
|
"description": "Verified local snapshot and warm managed live worker."
|
|
@@ -4651,7 +4651,7 @@
|
|
|
4651
4651
|
"id": "api.v1-audio-diarization-live-setup",
|
|
4652
4652
|
"kind": "api",
|
|
4653
4653
|
"title": "/v1/audio/diarization/live/setup",
|
|
4654
|
-
"summary": "
|
|
4654
|
+
"summary": "Provision and activate live Sortformer on JetPack",
|
|
4655
4655
|
"aliases": [
|
|
4656
4656
|
"/v1/audio/diarization/live/setup"
|
|
4657
4657
|
],
|
|
@@ -4703,32 +4703,28 @@
|
|
|
4703
4703
|
],
|
|
4704
4704
|
"operations": {
|
|
4705
4705
|
"post": {
|
|
4706
|
-
"summary": "
|
|
4706
|
+
"summary": "Provision and activate live Sortformer on JetPack",
|
|
4707
4707
|
"tags": [
|
|
4708
4708
|
"Audio"
|
|
4709
4709
|
],
|
|
4710
|
-
"description": "Admin-only
|
|
4710
|
+
"description": "Admin-only and asynchronous. An empty JSON object provisions the pinned public Q8 Sortformer artifact and builds an immutable-revision CUDA NeMo-Speech.cpp runtime under ~/.omnius without modifying JetPack Torch. Poll readiness after HTTP 202. Advanced operators may instead provide snapshot_path/manifest_path plus python_path for a checksum-pinned .nemo runtime. Setup may download/build; inference never does.",
|
|
4711
4711
|
"requestBody": {
|
|
4712
4712
|
"required": true,
|
|
4713
4713
|
"content": {
|
|
4714
4714
|
"application/json": {
|
|
4715
4715
|
"schema": {
|
|
4716
4716
|
"type": "object",
|
|
4717
|
-
"required": [
|
|
4718
|
-
"snapshot_path"
|
|
4719
|
-
],
|
|
4720
4717
|
"properties": {
|
|
4721
4718
|
"snapshot_path": {
|
|
4722
4719
|
"type": "string",
|
|
4723
|
-
"description": "
|
|
4720
|
+
"description": "Optional absolute operator snapshot; omit for managed Q8 setup."
|
|
4724
4721
|
},
|
|
4725
4722
|
"manifest_path": {
|
|
4726
|
-
"type": "string"
|
|
4727
|
-
"description": "Optional absolute manifest path; defaults to snapshot_path/omnius-model-manifest.json."
|
|
4723
|
+
"type": "string"
|
|
4728
4724
|
},
|
|
4729
4725
|
"python_path": {
|
|
4730
4726
|
"type": "string",
|
|
4731
|
-
"description": "
|
|
4727
|
+
"description": "Optional absolute external NeMo Python for an operator .nemo snapshot."
|
|
4732
4728
|
}
|
|
4733
4729
|
}
|
|
4734
4730
|
}
|
|
@@ -4737,10 +4733,13 @@
|
|
|
4737
4733
|
},
|
|
4738
4734
|
"responses": {
|
|
4739
4735
|
"200": {
|
|
4740
|
-
"description": "
|
|
4736
|
+
"description": "Already ready."
|
|
4737
|
+
},
|
|
4738
|
+
"202": {
|
|
4739
|
+
"description": "Managed single-flight setup accepted; poll readiness."
|
|
4741
4740
|
},
|
|
4742
4741
|
"400": {
|
|
4743
|
-
"description": "
|
|
4742
|
+
"description": "Setup request or prerequisite validation failed before launch."
|
|
4744
4743
|
},
|
|
4745
4744
|
"403": {
|
|
4746
4745
|
"description": "Admin scope required."
|
|
@@ -4812,7 +4811,7 @@
|
|
|
4812
4811
|
"tags": [
|
|
4813
4812
|
"Audio"
|
|
4814
4813
|
],
|
|
4815
|
-
"description": "Managed offline/dream contract: {file,observation_ids,episode_id?,timeout_ms?}. file is a retained
|
|
4814
|
+
"description": "Managed offline/dream contract: {file,observation_ids,episode_id?,timeout_ms?}. file is a retained uncompressed PCM16 WAV and may be longer than the live six-second window. The supplied IDs refer to role-isolated AudioObservation records. The pyannote worker returns only OfflineReconciliationProposal records with durable_identity:forbidden. Inference may activate the already-provisioned private CPU runtime but never installs, downloads, or modifies runtime dependencies or model bytes.",
|
|
4816
4815
|
"responses": {
|
|
4817
4816
|
"200": {
|
|
4818
4817
|
"description": "Typed review-required reconciliation proposals and spans."
|
|
@@ -4970,7 +4969,7 @@
|
|
|
4970
4969
|
"tags": [
|
|
4971
4970
|
"Audio"
|
|
4972
4971
|
],
|
|
4973
|
-
"description": "Non-mutating readiness for pyannote/speaker-diarization-community-1. It never downloads, installs, creates environments, or loads a model.
|
|
4972
|
+
"description": "Non-mutating readiness for pyannote/speaker-diarization-community-1. It never downloads, installs, creates environments, or loads a model. Managed setup creates a private CPU-only PyTorch/pyannote environment, leaving JetPack CUDA Torch untouched, and stores a complete checksummed offline model tree. Reconciliation makes reviewable cluster proposals, never durable identity claims.",
|
|
4974
4973
|
"responses": {
|
|
4975
4974
|
"200": {
|
|
4976
4975
|
"description": "Verified complete local Community-1 snapshot and warm managed worker."
|
|
@@ -4990,7 +4989,7 @@
|
|
|
4990
4989
|
"id": "api.v1-audio-diarization-reconcile-setup",
|
|
4991
4990
|
"kind": "api",
|
|
4992
4991
|
"title": "/v1/audio/diarization/reconcile/setup",
|
|
4993
|
-
"summary": "
|
|
4992
|
+
"summary": "Provision and activate offline Community-1 reconciliation",
|
|
4994
4993
|
"aliases": [
|
|
4995
4994
|
"/v1/audio/diarization/reconcile/setup"
|
|
4996
4995
|
],
|
|
@@ -5042,11 +5041,11 @@
|
|
|
5042
5041
|
],
|
|
5043
5042
|
"operations": {
|
|
5044
5043
|
"post": {
|
|
5045
|
-
"summary": "
|
|
5044
|
+
"summary": "Provision and activate offline Community-1 reconciliation",
|
|
5046
5045
|
"tags": [
|
|
5047
5046
|
"Audio"
|
|
5048
5047
|
],
|
|
5049
|
-
"description": "Admin-only
|
|
5048
|
+
"description": "Admin-only and asynchronous. With pyannote_terms_accepted=true and OMNIUS_HF_TOKEN in the daemon environment, setup creates a private CPython 3.10 CPU runtime with pinned PyTorch/Torchaudio/pyannote versions, downloads the immutable Community-1 revision, removes setup credentials, checksums the complete offline model tree, and warms the worker. TorchCodec is deliberately omitted because it has no CPython 3.10/aarch64 wheel; the worker uses pyannote's supported in-memory waveform input for retained PCM16 WAV instead. It never modifies JetPack CUDA Torch. Operator-provided snapshot_path/python_path remains supported. Credentials are rejected in the HTTP body and are never persisted or passed to inference.",
|
|
5050
5049
|
"requestBody": {
|
|
5051
5050
|
"required": true,
|
|
5052
5051
|
"content": {
|
|
@@ -5054,19 +5053,19 @@
|
|
|
5054
5053
|
"schema": {
|
|
5055
5054
|
"type": "object",
|
|
5056
5055
|
"required": [
|
|
5057
|
-
"snapshot_path",
|
|
5058
5056
|
"pyannote_terms_accepted"
|
|
5059
5057
|
],
|
|
5060
5058
|
"properties": {
|
|
5061
5059
|
"snapshot_path": {
|
|
5062
|
-
"type": "string"
|
|
5060
|
+
"type": "string",
|
|
5061
|
+
"description": "Optional operator snapshot; omit for managed gated download."
|
|
5063
5062
|
},
|
|
5064
5063
|
"manifest_path": {
|
|
5065
5064
|
"type": "string"
|
|
5066
5065
|
},
|
|
5067
5066
|
"python_path": {
|
|
5068
5067
|
"type": "string",
|
|
5069
|
-
"description": "
|
|
5068
|
+
"description": "Optional pre-provisioned external pyannote Python."
|
|
5070
5069
|
},
|
|
5071
5070
|
"pyannote_terms_accepted": {
|
|
5072
5071
|
"type": "boolean",
|
|
@@ -5081,10 +5080,13 @@
|
|
|
5081
5080
|
},
|
|
5082
5081
|
"responses": {
|
|
5083
5082
|
"200": {
|
|
5084
|
-
"description": "
|
|
5083
|
+
"description": "Already ready."
|
|
5084
|
+
},
|
|
5085
|
+
"202": {
|
|
5086
|
+
"description": "Managed single-flight setup accepted; poll readiness."
|
|
5085
5087
|
},
|
|
5086
5088
|
"400": {
|
|
5087
|
-
"description": "Terms attestation,
|
|
5089
|
+
"description": "Terms attestation, setup request, or prerequisite validation failed before launch."
|
|
5088
5090
|
},
|
|
5089
5091
|
"403": {
|
|
5090
5092
|
"description": "Admin scope required."
|
|
@@ -5399,7 +5401,7 @@
|
|
|
5399
5401
|
"tags": [
|
|
5400
5402
|
"Audio"
|
|
5401
5403
|
],
|
|
5402
|
-
"description": "Admin-only. Requires kind=acoustic|speaker|semantic in the query (canonical) or JSON body. acoustic reuses
|
|
5404
|
+
"description": "Admin-only. Requires kind=acoustic|speaker|semantic in the query (canonical) or JSON body. acoustic reuses pinned JetPack YAMNet/TensorRT. speaker creates a private CPU-only WeSpeaker CAM++ venv with checksum-pinned NumPy/ONNX Runtime wheels and no Torch/Torchaudio dependency. semantic installs a checksum-locked CPython 3.10/aarch64 dependency closure plus the immutable CLAP revision while leaving vendor Torch untouched. Omnius never imports, links, replaces, or resolves a generic Torch package over JetPack Torch for either isolated runtime. JetPack daemon bootstrap provisions all three roles by default; OMNIUS_AUDIO_AUTO_SETUP=0 disables all and OMNIUS_SEMANTIC_AUDIO_AUTO_SETUP=0 disables CLAP. Semantic provisioning may finish under memory pressure, while activation/inference still requires the 8 GiB admission threshold and never evicts another workload. This is the only REST operation allowed to provision, and no role is substituted for another.",
|
|
5403
5405
|
"parameters": [
|
|
5404
5406
|
{
|
|
5405
5407
|
"name": "kind",
|
|
@@ -6163,6 +6165,11 @@
|
|
|
6163
6165
|
"default": 1,
|
|
6164
6166
|
"description": "Maximum daemon-tool planning rounds. The default executes one tool round, then removes daemon schemas for lower-latency final synthesis."
|
|
6165
6167
|
},
|
|
6168
|
+
"agent_prefetch_web_search": {
|
|
6169
|
+
"type": "boolean",
|
|
6170
|
+
"default": false,
|
|
6171
|
+
"description": "Explicitly execute authorized web_search with the latest user text before one backend synthesis. factual-first enables this automatically."
|
|
6172
|
+
},
|
|
6166
6173
|
"max_turns": {
|
|
6167
6174
|
"type": "integer",
|
|
6168
6175
|
"description": "Q2 — agent_loop max iterations (default 8, max 64)."
|
|
@@ -6172,7 +6179,7 @@
|
|
|
6172
6179
|
"enum": [
|
|
6173
6180
|
"factual-first"
|
|
6174
6181
|
],
|
|
6175
|
-
"description": "
|
|
6182
|
+
"description": "Factual-first prefetches authorized web_search from the latest user turn and performs one grounded synthesis generation."
|
|
6176
6183
|
}
|
|
6177
6184
|
}
|
|
6178
6185
|
}
|
|
@@ -16814,7 +16821,7 @@
|
|
|
16814
16821
|
"tags": [
|
|
16815
16822
|
"Vision"
|
|
16816
16823
|
],
|
|
16817
|
-
"description": "Non-mutating status for the isolated ~/.omnius/runtimes/vision/open-clip runtime. It never imports Python, installs dependencies, downloads weights, or loads a model.
|
|
16824
|
+
"description": "Non-mutating status for the isolated ~/.omnius/runtimes/vision/open-clip runtime. It never imports Python, installs dependencies, downloads weights, or loads a model. It distinguishes installed/weightsReady from inferenceAvailable: a fully provisioned runtime remains HTTP 503 while Jetson unified-memory admission is temporarily blocked.",
|
|
16818
16825
|
"responses": {
|
|
16819
16826
|
"200": {
|
|
16820
16827
|
"description": "Verified OpenCLIP runtime is ready"
|
|
@@ -16889,10 +16896,10 @@
|
|
|
16889
16896
|
"tags": [
|
|
16890
16897
|
"Vision"
|
|
16891
16898
|
],
|
|
16892
|
-
"description": "Admin-only single-flight setup. It creates a --system-site-packages venv,
|
|
16899
|
+
"description": "Admin-only single-flight setup, also daemon-bootstrapped by default on JetPack (OMNIUS_VISION_AUTO_SETUP=0 disables). It creates a --system-site-packages venv, inherits existing CUDA Torch and vendor torchvision, installs a fully pinned non-Torch wheel closure with --no-deps, and then validates the managed runtime with user-site packages disabled. It downloads the OpenCLIP checkpoint from immutable revision 1a25a446712ba5ee05982a381eed697ef9b435cf with a fixed SHA-256. It never resolves Torch/torchvision from generic PyPI. A checksum-pinned local torchvision wheel override remains supported. Provisioning completes despite transient memory pressure; only model loading/inference applies the 8 GiB admission gate.",
|
|
16893
16900
|
"responses": {
|
|
16894
16901
|
"200": {
|
|
16895
|
-
"description": "
|
|
16902
|
+
"description": "Provisioned; readiness may still report memory-blocked until model loading is admitted"
|
|
16896
16903
|
},
|
|
16897
16904
|
"202": {
|
|
16898
16905
|
"description": "Single-flight setup accepted; poll readiness"
|
package/docs/DISCOVERY.md
CHANGED
|
@@ -104,11 +104,11 @@ Daemon equivalents are `GET /v1/discovery/bootstrap`, `GET /v1/discovery?q=<inte
|
|
|
104
104
|
| `api.v1-audio-diarization-live` | /v1/audio/diarization/live | Diarize live/session-local speaker turns |
|
|
105
105
|
| `api.v1-audio-diarization-live-cancel` | /v1/audio/diarization/live/cancel | Cancel live diarization work |
|
|
106
106
|
| `api.v1-audio-diarization-live-readiness` | /v1/audio/diarization/live/readiness | Read managed live speaker-turn diarization readiness |
|
|
107
|
-
| `api.v1-audio-diarization-live-setup` | /v1/audio/diarization/live/setup |
|
|
107
|
+
| `api.v1-audio-diarization-live-setup` | /v1/audio/diarization/live/setup | Provision and activate live Sortformer on JetPack |
|
|
108
108
|
| `api.v1-audio-diarization-reconcile` | /v1/audio/diarization/reconcile | Reconcile offline/dream diarization observations |
|
|
109
109
|
| `api.v1-audio-diarization-reconcile-cancel` | /v1/audio/diarization/reconcile/cancel | Cancel offline diarization reconciliation work |
|
|
110
110
|
| `api.v1-audio-diarization-reconcile-readiness` | /v1/audio/diarization/reconcile/readiness | Read offline/dream speaker-reconciliation readiness |
|
|
111
|
-
| `api.v1-audio-diarization-reconcile-setup` | /v1/audio/diarization/reconcile/setup |
|
|
111
|
+
| `api.v1-audio-diarization-reconcile-setup` | /v1/audio/diarization/reconcile/setup | Provision and activate offline Community-1 reconciliation |
|
|
112
112
|
| `api.v1-audio-embed` | /v1/audio/embed | Create a managed role-typed audio embedding |
|
|
113
113
|
| `api.v1-audio-embed-health` | /v1/audio/embed/health | Read role-typed audio embedding readiness |
|
|
114
114
|
| `api.v1-audio-embed-setup` | /v1/audio/embed/setup | Provision and activate one role-typed audio embedding runtime |
|
|
@@ -22,6 +22,15 @@ Configuration is layered from environment, global user settings, project setting
|
|
|
22
22
|
| `OMNIUS_VIBEVOICE_PYTHON` | Host Python used to create the VibeVoice venv; its CUDA-enabled Torch is inherited with `--system-site-packages` |
|
|
23
23
|
| `OMNIUS_VIBEVOICE_ATTN` | VibeVoice attention implementation (`sdpa` by default; use a host-supported implementation) |
|
|
24
24
|
| `OMNIUS_VIBEVOICE_MAX_NEW_TOKENS` | Explicit VibeVoice structured-transcript generation ceiling (default `32768`) |
|
|
25
|
+
| `OMNIUS_AUDIO_PYTHON` | Preferred JetPack CPython 3.10 interpreter containing vendor CUDA Torch; bounded workspace discovery is used when unset |
|
|
26
|
+
| `OMNIUS_AUDIO_AUTO_SETUP` | Set to `0` to disable daemon-owned acoustic, speaker, and semantic audio setup |
|
|
27
|
+
| `OMNIUS_SEMANTIC_AUDIO_AUTO_SETUP` | Set to `0` to disable CLAP setup specifically; JetPack default is enabled |
|
|
28
|
+
| `OMNIUS_VISION_AUTO_SETUP` | Set to `0` to disable managed OpenCLIP provisioning on JetPack |
|
|
29
|
+
| `OMNIUS_VISION_PYTHON` | Explicit vendor CUDA Python for the isolated OpenCLIP runtime |
|
|
30
|
+
| `OMNIUS_NEMO_SPEECH_BIN` | Optional existing CUDA-enabled NeMo-Speech.cpp binary; otherwise live diarization builds the pinned source revision |
|
|
31
|
+
| `OMNIUS_DIARIZATION_AUTO_SETUP` | Set to `0` to disable managed diarizer provisioning; live Sortformer defaults on for JetPack |
|
|
32
|
+
| `OMNIUS_HF_TOKEN` | Setup-only Hugging Face token for gated Community-1 download; never persisted or passed to inference |
|
|
33
|
+
| `OMNIUS_PYANNOTE_TERMS_ACCEPTED` | Set to `1` only after accepting Community-1 terms; permits gated daemon bootstrap when a token is present |
|
|
25
34
|
|
|
26
35
|
## Provider Key Precedence
|
|
27
36
|
|
|
@@ -41,6 +50,13 @@ The first defined value wins. `OMNIUS_REST_API_KEY` and
|
|
|
41
50
|
`OMNIUS_REST_API_KEYS` authenticate callers to the Omnius daemon; they are not
|
|
42
51
|
upstream provider credentials.
|
|
43
52
|
|
|
53
|
+
Linux installations load optional daemon-only overrides from
|
|
54
|
+
`~/.config/omnius/daemon.env`. The postinstall creates this file with mode
|
|
55
|
+
`0600` and the systemd unit references it with an optional `EnvironmentFile`.
|
|
56
|
+
This is the appropriate place for `OMNIUS_AUDIO_PYTHON` or a setup-only gated
|
|
57
|
+
model token; credentials do not need to be embedded in the unit or sent in a
|
|
58
|
+
REST request.
|
|
59
|
+
|
|
44
60
|
## Provider Protocol
|
|
45
61
|
|
|
46
62
|
Known provider presets select one of `ollama`, `openai-chat`, or
|
|
@@ -47,6 +47,7 @@ Important body fields:
|
|
|
47
47
|
| `daemon_tool_names` | array | Exact daemon-tool allowlist; recommended for local models |
|
|
48
48
|
| `agent_timeout_s` | number | Whole-loop deadline, default 45 seconds and maximum 600 |
|
|
49
49
|
| `agent_max_tool_rounds` | integer | Daemon tool rounds before forced final synthesis; default 1 |
|
|
50
|
+
| `agent_prefetch_web_search` | boolean | Explicit one-generation web-search prefetch; factual-first enables it automatically |
|
|
50
51
|
| `max_turns` | integer | Server-side agent loop turn cap |
|
|
51
52
|
| `prompt_template` | string | Optional template such as `factual-first` |
|
|
52
53
|
|
|
@@ -130,4 +131,4 @@ For ASR/TTS systems that only need the text brain, use `/realtime` or `/v1/realt
|
|
|
130
131
|
|
|
131
132
|
`/v1/chat/completions` can run an internal tool loop when `agent_loop: true`. This lets clients collapse multiple model/tool round trips into one daemon request. Daemon tool calls execute inline; client-owned tool calls can still be yielded in OpenAI-compatible shape.
|
|
132
133
|
|
|
133
|
-
Ollama-backed loops use its native `/api/chat` tool protocol. `timeout_s` applies to each backend round, while `agent_timeout_s` bounds the complete loop and defaults to 45 seconds.
|
|
134
|
+
Ollama-backed loops use its native `/api/chat` tool protocol. `timeout_s` applies to each backend round, while `agent_timeout_s` bounds the complete loop and defaults to 45 seconds. For a normal loop, the planning turn is capped at 96 output tokens; one daemon-tool round is the default, after which Omnius removes daemon schemas for final synthesis. `prompt_template: "factual-first"` skips that model-planning round entirely: Omnius executes the already-mandated, authorized `web_search` using the latest user turn, inserts the protocol-correct tool evidence, and performs one grounded synthesis generation. `agent_prefetch_web_search: true` opts into the same path directly. Generic/deeper tool workflows remain available through `agent_max_tool_rounds`. Omnius returns typed HTTP 504/508 failures, caps tool evidence at 6,000 characters, and limits the implicit catalog unless `daemon_tool_names` requests exact additions.
|
|
@@ -83,16 +83,25 @@ HTTP 503 until the isolated runtime and checksum-manifested weights are ready.
|
|
|
83
83
|
Use the admin-scoped `POST /v1/vision/embed/setup` to create the
|
|
84
84
|
`--system-site-packages` runtime under
|
|
85
85
|
`~/.omnius/runtimes/vision/open-clip`, install pinned non-Torch dependencies,
|
|
86
|
-
and fetch/verify the checkpoint
|
|
87
|
-
|
|
88
|
-
|
|
86
|
+
and fetch/verify the checkpoint from immutable revision
|
|
87
|
+
`1a25a446712ba5ee05982a381eed697ef9b435cf`. Setup is single-flight and
|
|
88
|
+
daemon-bootstrapped by default on JetPack; set `OMNIUS_VISION_AUTO_SETUP=0`
|
|
89
|
+
to disable it. Inference never installs packages or downloads artifacts, and
|
|
90
|
+
its Python worker is network-denied.
|
|
89
91
|
|
|
90
92
|
JetPack Torch is inherited and never replaced. `torchvision` must either be
|
|
91
93
|
present in the compatible vendor stack or be supplied explicitly with the local
|
|
92
94
|
`OMNIUS_VISION_TORCHVISION_WHEEL` and immutable
|
|
93
95
|
`OMNIUS_VISION_TORCHVISION_WHEEL_SHA256`; generic PyPI Torch/torchvision is
|
|
94
|
-
blocked.
|
|
95
|
-
|
|
96
|
+
blocked. Bootstrap discovery may inspect the selected vendor interpreter, but
|
|
97
|
+
the managed runtime installs its own pinned support closure and proves Torch,
|
|
98
|
+
torchvision, and OpenCLIP with user-site packages disabled. On memory-constrained
|
|
99
|
+
Jetson systems model loading and embedding fail with a typed 503 rather than
|
|
100
|
+
evicting a resident ASR/Ollama model. Dependency and
|
|
101
|
+
weight provisioning itself is allowed to finish under transient pressure;
|
|
102
|
+
readiness separately reports `installed`, `weightsReady`,
|
|
103
|
+
`inferenceAvailable`, and the current admission result. The model is loaded
|
|
104
|
+
only after at least 8 GiB is available.
|
|
96
105
|
|
|
97
106
|
## Advanced OCR
|
|
98
107
|
|
|
@@ -128,9 +137,12 @@ needs `run` scope because optional
|
|
|
128
137
|
|
|
129
138
|
The managed pipeline is bounded: it starts with high-yield preprocessing and
|
|
130
139
|
expands variants only for low-evidence or larger images. Small crops avoid the
|
|
131
|
-
former all-variant/all-PSM explosion
|
|
132
|
-
|
|
133
|
-
|
|
140
|
+
former all-variant/all-PSM explosion and use a six-second cap per Tesseract
|
|
141
|
+
attempt. If the first small-crop pass proves high-volume very-low-confidence or
|
|
142
|
+
distinctly symbol-heavy garbage, recovery stops immediately; blanks and
|
|
143
|
+
plausibly recoverable text still receive the second high-yield attempt. The
|
|
144
|
+
REST default is 90 seconds (maximum 180 seconds), while the worker has an
|
|
145
|
+
80-second internal deadline so it can return diagnostics. A timeout or cancellation returns
|
|
134
146
|
`result.data.schema=omnius.ocr-diagnostic.v1` with code `ocr_timeout` or
|
|
135
147
|
`ocr_cancelled`; cancellation terminates the Python/Tesseract process group
|
|
136
148
|
with TERM followed by KILL.
|
|
@@ -263,8 +275,15 @@ It is the only endpoint that installs dependencies or retrieves pinned weights:
|
|
|
263
275
|
acoustic reuses the pinned JetPack YAMNet/TensorRT setup, speaker provisions
|
|
264
276
|
the isolated CPU-only WeSpeaker runtime, and semantic provisions the isolated
|
|
265
277
|
JetPack CUDA CLAP runtime. It activates only the selected role. Normal Jetson
|
|
266
|
-
startup
|
|
267
|
-
|
|
278
|
+
startup provisions acoustic, speaker, and semantic roles by default; set
|
|
279
|
+
`OMNIUS_AUDIO_AUTO_SETUP=0` to disable all audio setup or
|
|
280
|
+
`OMNIUS_SEMANTIC_AUDIO_AUTO_SETUP=0` to disable CLAP specifically.
|
|
281
|
+
|
|
282
|
+
CLAP provisioning installs a checksum-locked CPython 3.10/aarch64 wheel
|
|
283
|
+
closure and the immutable model revision without loading the model. It is
|
|
284
|
+
allowed to finish while unified memory is busy. Worker activation and
|
|
285
|
+
inference retain the 8 GiB admission gate and idle eviction, so setup cannot
|
|
286
|
+
silently evict ASR, Ollama, or another CUDA workload.
|
|
268
287
|
|
|
269
288
|
On JetPack, speaker setup deliberately leaves `OMNIUS_AUDIO_PYTHON` (including
|
|
270
289
|
an Egg project `.venv`) unchanged. It creates a private, non-system-site
|
|
@@ -313,9 +332,9 @@ provision themselves during inference.
|
|
|
313
332
|
WAV windows of at most six seconds. It returns typed turn spans with explicit
|
|
314
333
|
overlap and labels scoped only to the supplied `session_id`.
|
|
315
334
|
- `POST /v1/audio/diarization/reconcile` uses
|
|
316
|
-
`pyannote/speaker-diarization-community-1` over retained
|
|
317
|
-
length. It requires persisted observation IDs and returns
|
|
318
|
-
cluster proposals, never an identity assertion.
|
|
335
|
+
`pyannote/speaker-diarization-community-1` over retained uncompressed PCM16
|
|
336
|
+
WAV audio of any length. It requires persisted observation IDs and returns
|
|
337
|
+
review-required cluster proposals, never an identity assertion.
|
|
319
338
|
|
|
320
339
|
`GET /v1/audio/diarization/{live|reconcile}/readiness` is non-mutating: it
|
|
321
340
|
does not download weights, install packages, create an environment, or load a
|
|
@@ -324,35 +343,60 @@ loaded the verified local model; otherwise it returns typed HTTP 503 with the
|
|
|
324
343
|
exact remediation. Inference is likewise non-provisioning and returns typed
|
|
325
344
|
`speaker_diarization_runtime_unavailable` until admin setup succeeds.
|
|
326
345
|
|
|
327
|
-
Admin setup
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
346
|
+
Admin setup is asynchronous and single-flight. It returns HTTP 202 while it
|
|
347
|
+
provisions, and readiness exposes the exact phase or terminal error. Existing
|
|
348
|
+
ready workers return HTTP 200. Inference never performs these setup actions.
|
|
349
|
+
|
|
350
|
+
On JetPack, live setup with an empty object downloads the immutable,
|
|
351
|
+
checksum-pinned Q8 Sortformer artifact and builds NVIDIA NeMo-Speech.cpp at a
|
|
352
|
+
pinned source revision under `~/.omnius`. Build tooling is isolated and the
|
|
353
|
+
JetPack Torch installation is not imported or modified:
|
|
332
354
|
|
|
333
355
|
```json
|
|
334
356
|
POST /v1/audio/diarization/live/setup
|
|
335
|
-
{
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
357
|
+
{}
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
The native build requires the JetPack CUDA compiler plus `git` and a C++17
|
|
361
|
+
compiler. Omnius installs pinned CMake/Ninja only in its private build-tools
|
|
362
|
+
venv and never invokes `sudo`; missing native prerequisites are reported by
|
|
363
|
+
readiness for operator installation outside inference. Set
|
|
364
|
+
`OMNIUS_NEMO_SPEECH_BIN` to reuse a prebuilt CUDA-enabled binary.
|
|
365
|
+
|
|
366
|
+
Managed Community-1 setup creates a separate CPU-only CPython environment, so
|
|
367
|
+
its PyTorch/Torchaudio packages cannot replace or conflict with JetPack CUDA
|
|
368
|
+
Torch. TorchCodec is deliberately omitted because it has no CPython
|
|
369
|
+
3.10/aarch64 wheel; the worker decodes retained PCM16 WAV itself and passes
|
|
370
|
+
pyannote its supported in-memory waveform mapping. After accepting the gated
|
|
371
|
+
model conditions, expose `OMNIUS_HF_TOKEN` to the daemon and submit:
|
|
372
|
+
|
|
373
|
+
```json
|
|
374
|
+
POST /v1/audio/diarization/reconcile/setup
|
|
375
|
+
{ "pyannote_terms_accepted": true }
|
|
340
376
|
```
|
|
341
377
|
|
|
378
|
+
The token is used only for the pinned setup download, is rejected in HTTP
|
|
379
|
+
bodies, is never written to disk, and is removed from the offline worker
|
|
380
|
+
environment. `OMNIUS_PYANNOTE_TERMS_ACCEPTED=1` may persist only the terms
|
|
381
|
+
attestation, not the credential.
|
|
382
|
+
|
|
342
383
|
Every manifest is `omnius.audio-diarization-model-snapshot.v1` and pins the
|
|
343
384
|
exact role model, a full immutable 40- or 64-hex revision, a relative artifact, and its
|
|
344
385
|
`sha256:<digest>`. Community-1 is a directory pipeline: its manifest also
|
|
345
386
|
needs a complete `files` checksum object for every regular model/config file.
|
|
346
387
|
Setup streams and verifies all declared bytes; later readiness and inference
|
|
347
388
|
reject changed, missing, or added snapshot files by metadata before a worker
|
|
348
|
-
can load them.
|
|
349
|
-
|
|
350
|
-
|
|
389
|
+
can load them. Advanced operators may still provide `snapshot_path`,
|
|
390
|
+
`manifest_path`, and a role-specific `python_path`; those paths retain the
|
|
391
|
+
same immutable manifest validation.
|
|
351
392
|
|
|
352
393
|
Both roles allow one active request plus one queued request. A third request is
|
|
353
394
|
typed busy. `POST /v1/audio/diarization/{live|reconcile}/cancel` terminates the
|
|
354
|
-
worker before clearing both active and queued work.
|
|
355
|
-
only a previously verified binding
|
|
395
|
+
worker process group before clearing both active and queued work. Inference and
|
|
396
|
+
readiness may warm only a previously verified binding and never download or
|
|
397
|
+
install anything. The separate JetPack daemon bootstrap may provision the
|
|
398
|
+
public live model by default; gated Community-1 is provisioned only when both
|
|
399
|
+
the terms attestation and setup-only token are configured.
|
|
356
400
|
|
|
357
401
|
Live responses are `omnius.speaker-diarization.v1` `SpeakerTurnSpan[]` with
|
|
358
402
|
`start_ms`, `end_ms`, `channel`, explicit overlap, and session-local
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "omnius",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.643",
|
|
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.643",
|
|
10
10
|
"bundleDependencies": [
|
|
11
11
|
"image-to-ascii"
|
|
12
12
|
],
|
package/package.json
CHANGED