omnius 1.0.633 → 1.0.634
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 +16 -4
- package/dist/index.js +17581 -14391
- package/dist/memory-maintenance-worker.js +116 -0
- package/dist/scripts/audio-clap-semantic-worker.py +171 -0
- package/dist/scripts/audio-speaker-embedding-worker.py +259 -0
- package/dist/scripts/audio-yamnet-tensorrt-worker.py +69 -21
- package/dist/scripts/embed-image.py +34 -0
- package/dist/scripts/embed-text.py +26 -0
- package/dist/update-worker.js +33 -0
- package/docs/DISCOVERY.json +1285 -7
- package/docs/DISCOVERY.md +13 -1
- package/docs/reference/rest-api.md +13 -1
- package/docs/rest/INDEX.md +1 -1
- package/docs/rest/REST-DOCS-MANIFEST.json +1 -1
- package/docs/rest/endpoints/memory.md +54 -0
- package/docs/rest/endpoints/voice-vision.md +122 -1
- package/npm-shrinkwrap.json +8 -8
- package/package.json +2 -2
package/docs/DISCOVERY.json
CHANGED
|
@@ -4414,11 +4414,673 @@
|
|
|
4414
4414
|
"packages/cli/src/api/openapi.ts"
|
|
4415
4415
|
]
|
|
4416
4416
|
},
|
|
4417
|
+
{
|
|
4418
|
+
"id": "api.v1-audio-diarization-live",
|
|
4419
|
+
"kind": "api",
|
|
4420
|
+
"title": "/v1/audio/diarization/live",
|
|
4421
|
+
"summary": "Diarize live/session-local speaker turns",
|
|
4422
|
+
"aliases": [
|
|
4423
|
+
"/v1/audio/diarization/live"
|
|
4424
|
+
],
|
|
4425
|
+
"keywords": [
|
|
4426
|
+
"rest",
|
|
4427
|
+
"openapi",
|
|
4428
|
+
"POST",
|
|
4429
|
+
"Audio",
|
|
4430
|
+
"v1",
|
|
4431
|
+
"audio",
|
|
4432
|
+
"diarization",
|
|
4433
|
+
"live"
|
|
4434
|
+
],
|
|
4435
|
+
"maturity": "stable",
|
|
4436
|
+
"layer": "interface",
|
|
4437
|
+
"audiences": [
|
|
4438
|
+
"integrator",
|
|
4439
|
+
"service-agent",
|
|
4440
|
+
"coding-agent"
|
|
4441
|
+
],
|
|
4442
|
+
"interfaces": [
|
|
4443
|
+
{
|
|
4444
|
+
"type": "rest",
|
|
4445
|
+
"target": "POST /v1/audio/diarization/live"
|
|
4446
|
+
},
|
|
4447
|
+
{
|
|
4448
|
+
"type": "openapi",
|
|
4449
|
+
"target": "/openapi.json"
|
|
4450
|
+
}
|
|
4451
|
+
],
|
|
4452
|
+
"references": [
|
|
4453
|
+
{
|
|
4454
|
+
"type": "source",
|
|
4455
|
+
"target": "packages/cli/src/api/openapi.ts",
|
|
4456
|
+
"relation": "openapi-source"
|
|
4457
|
+
},
|
|
4458
|
+
{
|
|
4459
|
+
"type": "documentation",
|
|
4460
|
+
"target": "docs/reference/rest-api.md",
|
|
4461
|
+
"relation": "endpoint-inventory"
|
|
4462
|
+
}
|
|
4463
|
+
],
|
|
4464
|
+
"methods": [
|
|
4465
|
+
"POST"
|
|
4466
|
+
],
|
|
4467
|
+
"tags": [
|
|
4468
|
+
"Audio"
|
|
4469
|
+
],
|
|
4470
|
+
"operations": {
|
|
4471
|
+
"post": {
|
|
4472
|
+
"summary": "Diarize live/session-local speaker turns",
|
|
4473
|
+
"tags": [
|
|
4474
|
+
"Audio"
|
|
4475
|
+
],
|
|
4476
|
+
"description": "Reserved managed-inference contract: {session_id,file,asset_digest?,channel?,sample_rate_hz?,timeout_ms?}. A future persistent worker is limited to one active job plus one queued job and cancellation terminates the worker before clearing both. This build returns typed HTTP 503 speaker_diarization_runtime_unavailable rather than running a generic transcription diarization fallback. When available, output is omnius.speaker-diarization.v1 SpeakerTurnSpan[] with start_ms/end_ms/channel, explicit overlap, and labels scoped only to session_id; spans may populate audio_observation.diarizationClusterId but cannot create durable identities. Inference never installs or downloads.",
|
|
4477
|
+
"responses": {
|
|
4478
|
+
"200": {
|
|
4479
|
+
"description": "Reserved for a future successful managed diarization result; current builds never return this response."
|
|
4480
|
+
},
|
|
4481
|
+
"403": {
|
|
4482
|
+
"description": "Run scope required."
|
|
4483
|
+
},
|
|
4484
|
+
"503": {
|
|
4485
|
+
"description": "Managed live diarization worker not shipped or not proven ready."
|
|
4486
|
+
}
|
|
4487
|
+
}
|
|
4488
|
+
}
|
|
4489
|
+
},
|
|
4490
|
+
"source_of_truth": [
|
|
4491
|
+
"GET /openapi.json",
|
|
4492
|
+
"packages/cli/src/api/openapi.ts"
|
|
4493
|
+
]
|
|
4494
|
+
},
|
|
4495
|
+
{
|
|
4496
|
+
"id": "api.v1-audio-diarization-live-cancel",
|
|
4497
|
+
"kind": "api",
|
|
4498
|
+
"title": "/v1/audio/diarization/live/cancel",
|
|
4499
|
+
"summary": "Cancel live diarization work",
|
|
4500
|
+
"aliases": [
|
|
4501
|
+
"/v1/audio/diarization/live/cancel"
|
|
4502
|
+
],
|
|
4503
|
+
"keywords": [
|
|
4504
|
+
"rest",
|
|
4505
|
+
"openapi",
|
|
4506
|
+
"POST",
|
|
4507
|
+
"Audio",
|
|
4508
|
+
"v1",
|
|
4509
|
+
"audio",
|
|
4510
|
+
"diarization",
|
|
4511
|
+
"live",
|
|
4512
|
+
"cancel"
|
|
4513
|
+
],
|
|
4514
|
+
"maturity": "stable",
|
|
4515
|
+
"layer": "interface",
|
|
4516
|
+
"audiences": [
|
|
4517
|
+
"integrator",
|
|
4518
|
+
"service-agent",
|
|
4519
|
+
"coding-agent"
|
|
4520
|
+
],
|
|
4521
|
+
"interfaces": [
|
|
4522
|
+
{
|
|
4523
|
+
"type": "rest",
|
|
4524
|
+
"target": "POST /v1/audio/diarization/live/cancel"
|
|
4525
|
+
},
|
|
4526
|
+
{
|
|
4527
|
+
"type": "openapi",
|
|
4528
|
+
"target": "/openapi.json"
|
|
4529
|
+
}
|
|
4530
|
+
],
|
|
4531
|
+
"references": [
|
|
4532
|
+
{
|
|
4533
|
+
"type": "source",
|
|
4534
|
+
"target": "packages/cli/src/api/openapi.ts",
|
|
4535
|
+
"relation": "openapi-source"
|
|
4536
|
+
},
|
|
4537
|
+
{
|
|
4538
|
+
"type": "documentation",
|
|
4539
|
+
"target": "docs/reference/rest-api.md",
|
|
4540
|
+
"relation": "endpoint-inventory"
|
|
4541
|
+
}
|
|
4542
|
+
],
|
|
4543
|
+
"methods": [
|
|
4544
|
+
"POST"
|
|
4545
|
+
],
|
|
4546
|
+
"tags": [
|
|
4547
|
+
"Audio"
|
|
4548
|
+
],
|
|
4549
|
+
"operations": {
|
|
4550
|
+
"post": {
|
|
4551
|
+
"summary": "Cancel live diarization work",
|
|
4552
|
+
"tags": [
|
|
4553
|
+
"Audio"
|
|
4554
|
+
],
|
|
4555
|
+
"description": "Run scope required. The persistent-worker cancellation contract terminates the worker and clears its one active plus one queued request. Current builds return cancelled:false because no worker has been started.",
|
|
4556
|
+
"responses": {
|
|
4557
|
+
"200": {
|
|
4558
|
+
"description": "Cancellation state."
|
|
4559
|
+
},
|
|
4560
|
+
"403": {
|
|
4561
|
+
"description": "Run scope required."
|
|
4562
|
+
}
|
|
4563
|
+
}
|
|
4564
|
+
}
|
|
4565
|
+
},
|
|
4566
|
+
"source_of_truth": [
|
|
4567
|
+
"GET /openapi.json",
|
|
4568
|
+
"packages/cli/src/api/openapi.ts"
|
|
4569
|
+
]
|
|
4570
|
+
},
|
|
4571
|
+
{
|
|
4572
|
+
"id": "api.v1-audio-diarization-live-readiness",
|
|
4573
|
+
"kind": "api",
|
|
4574
|
+
"title": "/v1/audio/diarization/live/readiness",
|
|
4575
|
+
"summary": "Read managed live speaker-turn diarization readiness",
|
|
4576
|
+
"aliases": [
|
|
4577
|
+
"/v1/audio/diarization/live/readiness"
|
|
4578
|
+
],
|
|
4579
|
+
"keywords": [
|
|
4580
|
+
"rest",
|
|
4581
|
+
"openapi",
|
|
4582
|
+
"GET",
|
|
4583
|
+
"Audio",
|
|
4584
|
+
"v1",
|
|
4585
|
+
"audio",
|
|
4586
|
+
"diarization",
|
|
4587
|
+
"live",
|
|
4588
|
+
"readiness"
|
|
4589
|
+
],
|
|
4590
|
+
"maturity": "stable",
|
|
4591
|
+
"layer": "interface",
|
|
4592
|
+
"audiences": [
|
|
4593
|
+
"integrator",
|
|
4594
|
+
"service-agent",
|
|
4595
|
+
"coding-agent"
|
|
4596
|
+
],
|
|
4597
|
+
"interfaces": [
|
|
4598
|
+
{
|
|
4599
|
+
"type": "rest",
|
|
4600
|
+
"target": "GET /v1/audio/diarization/live/readiness"
|
|
4601
|
+
},
|
|
4602
|
+
{
|
|
4603
|
+
"type": "openapi",
|
|
4604
|
+
"target": "/openapi.json"
|
|
4605
|
+
}
|
|
4606
|
+
],
|
|
4607
|
+
"references": [
|
|
4608
|
+
{
|
|
4609
|
+
"type": "source",
|
|
4610
|
+
"target": "packages/cli/src/api/openapi.ts",
|
|
4611
|
+
"relation": "openapi-source"
|
|
4612
|
+
},
|
|
4613
|
+
{
|
|
4614
|
+
"type": "documentation",
|
|
4615
|
+
"target": "docs/reference/rest-api.md",
|
|
4616
|
+
"relation": "endpoint-inventory"
|
|
4617
|
+
}
|
|
4618
|
+
],
|
|
4619
|
+
"methods": [
|
|
4620
|
+
"GET"
|
|
4621
|
+
],
|
|
4622
|
+
"tags": [
|
|
4623
|
+
"Audio"
|
|
4624
|
+
],
|
|
4625
|
+
"operations": {
|
|
4626
|
+
"get": {
|
|
4627
|
+
"summary": "Read managed live speaker-turn diarization readiness",
|
|
4628
|
+
"tags": [
|
|
4629
|
+
"Audio"
|
|
4630
|
+
],
|
|
4631
|
+
"description": "Non-mutating readiness for NVIDIA diar_streaming_sortformer_4spk-v2. It never downloads, installs, creates environments, or loads a model. Current Omnius builds intentionally return 503 until a managed persistent worker proves it can load an operator-verified local snapshot. The output contract is typed speaker-turn spans with explicit overlap and session-local labels only; those labels are never durable identities.",
|
|
4632
|
+
"responses": {
|
|
4633
|
+
"200": {
|
|
4634
|
+
"description": "Reserved for a future worker-proven ready state; current builds never return this response."
|
|
4635
|
+
},
|
|
4636
|
+
"503": {
|
|
4637
|
+
"description": "No verified managed live diarization worker is available; body still describes the exact model, snapshot state, and span/observation contract."
|
|
4638
|
+
}
|
|
4639
|
+
}
|
|
4640
|
+
}
|
|
4641
|
+
},
|
|
4642
|
+
"source_of_truth": [
|
|
4643
|
+
"GET /openapi.json",
|
|
4644
|
+
"packages/cli/src/api/openapi.ts"
|
|
4645
|
+
]
|
|
4646
|
+
},
|
|
4647
|
+
{
|
|
4648
|
+
"id": "api.v1-audio-diarization-live-setup",
|
|
4649
|
+
"kind": "api",
|
|
4650
|
+
"title": "/v1/audio/diarization/live/setup",
|
|
4651
|
+
"summary": "Register a verified local live-diarization snapshot",
|
|
4652
|
+
"aliases": [
|
|
4653
|
+
"/v1/audio/diarization/live/setup"
|
|
4654
|
+
],
|
|
4655
|
+
"keywords": [
|
|
4656
|
+
"rest",
|
|
4657
|
+
"openapi",
|
|
4658
|
+
"POST",
|
|
4659
|
+
"Audio",
|
|
4660
|
+
"v1",
|
|
4661
|
+
"audio",
|
|
4662
|
+
"diarization",
|
|
4663
|
+
"live",
|
|
4664
|
+
"setup"
|
|
4665
|
+
],
|
|
4666
|
+
"maturity": "stable",
|
|
4667
|
+
"layer": "interface",
|
|
4668
|
+
"audiences": [
|
|
4669
|
+
"integrator",
|
|
4670
|
+
"service-agent",
|
|
4671
|
+
"coding-agent"
|
|
4672
|
+
],
|
|
4673
|
+
"interfaces": [
|
|
4674
|
+
{
|
|
4675
|
+
"type": "rest",
|
|
4676
|
+
"target": "POST /v1/audio/diarization/live/setup"
|
|
4677
|
+
},
|
|
4678
|
+
{
|
|
4679
|
+
"type": "openapi",
|
|
4680
|
+
"target": "/openapi.json"
|
|
4681
|
+
}
|
|
4682
|
+
],
|
|
4683
|
+
"references": [
|
|
4684
|
+
{
|
|
4685
|
+
"type": "source",
|
|
4686
|
+
"target": "packages/cli/src/api/openapi.ts",
|
|
4687
|
+
"relation": "openapi-source"
|
|
4688
|
+
},
|
|
4689
|
+
{
|
|
4690
|
+
"type": "documentation",
|
|
4691
|
+
"target": "docs/reference/rest-api.md",
|
|
4692
|
+
"relation": "endpoint-inventory"
|
|
4693
|
+
}
|
|
4694
|
+
],
|
|
4695
|
+
"methods": [
|
|
4696
|
+
"POST"
|
|
4697
|
+
],
|
|
4698
|
+
"tags": [
|
|
4699
|
+
"Audio"
|
|
4700
|
+
],
|
|
4701
|
+
"operations": {
|
|
4702
|
+
"post": {
|
|
4703
|
+
"summary": "Register a verified local live-diarization snapshot",
|
|
4704
|
+
"tags": [
|
|
4705
|
+
"Audio"
|
|
4706
|
+
],
|
|
4707
|
+
"description": "Admin-only. Body requires absolute snapshot_path and optional absolute manifest_path. The manifest must be omnius.audio-diarization-model-snapshot.v1 for nvidia/diar_streaming_sortformer_4spk-v2 with an immutable revision, relative artifact path, and sha256:<digest>; setup verifies those exact local bytes and records a private binding. It never downloads NeMo, CUDA, model weights, or dependencies and returns 202 because inference remains disabled until a worker is shipped.",
|
|
4708
|
+
"requestBody": {
|
|
4709
|
+
"required": true,
|
|
4710
|
+
"content": {
|
|
4711
|
+
"application/json": {
|
|
4712
|
+
"schema": {
|
|
4713
|
+
"type": "object",
|
|
4714
|
+
"required": [
|
|
4715
|
+
"snapshot_path"
|
|
4716
|
+
],
|
|
4717
|
+
"properties": {
|
|
4718
|
+
"snapshot_path": {
|
|
4719
|
+
"type": "string",
|
|
4720
|
+
"description": "Absolute local directory containing the operator-provided snapshot."
|
|
4721
|
+
},
|
|
4722
|
+
"manifest_path": {
|
|
4723
|
+
"type": "string",
|
|
4724
|
+
"description": "Optional absolute manifest path; defaults to snapshot_path/omnius-model-manifest.json."
|
|
4725
|
+
}
|
|
4726
|
+
}
|
|
4727
|
+
}
|
|
4728
|
+
}
|
|
4729
|
+
}
|
|
4730
|
+
},
|
|
4731
|
+
"responses": {
|
|
4732
|
+
"202": {
|
|
4733
|
+
"description": "snapshot_registered=true means only the local artifact bytes were verified; the runtime remains unavailable."
|
|
4734
|
+
},
|
|
4735
|
+
"400": {
|
|
4736
|
+
"description": "Snapshot path or immutable manifest/digest validation failed."
|
|
4737
|
+
},
|
|
4738
|
+
"403": {
|
|
4739
|
+
"description": "Admin scope required."
|
|
4740
|
+
}
|
|
4741
|
+
}
|
|
4742
|
+
}
|
|
4743
|
+
},
|
|
4744
|
+
"source_of_truth": [
|
|
4745
|
+
"GET /openapi.json",
|
|
4746
|
+
"packages/cli/src/api/openapi.ts"
|
|
4747
|
+
]
|
|
4748
|
+
},
|
|
4749
|
+
{
|
|
4750
|
+
"id": "api.v1-audio-diarization-reconcile",
|
|
4751
|
+
"kind": "api",
|
|
4752
|
+
"title": "/v1/audio/diarization/reconcile",
|
|
4753
|
+
"summary": "Reconcile offline/dream diarization observations",
|
|
4754
|
+
"aliases": [
|
|
4755
|
+
"/v1/audio/diarization/reconcile"
|
|
4756
|
+
],
|
|
4757
|
+
"keywords": [
|
|
4758
|
+
"rest",
|
|
4759
|
+
"openapi",
|
|
4760
|
+
"POST",
|
|
4761
|
+
"Audio",
|
|
4762
|
+
"v1",
|
|
4763
|
+
"audio",
|
|
4764
|
+
"diarization",
|
|
4765
|
+
"reconcile"
|
|
4766
|
+
],
|
|
4767
|
+
"maturity": "stable",
|
|
4768
|
+
"layer": "interface",
|
|
4769
|
+
"audiences": [
|
|
4770
|
+
"integrator",
|
|
4771
|
+
"service-agent",
|
|
4772
|
+
"coding-agent"
|
|
4773
|
+
],
|
|
4774
|
+
"interfaces": [
|
|
4775
|
+
{
|
|
4776
|
+
"type": "rest",
|
|
4777
|
+
"target": "POST /v1/audio/diarization/reconcile"
|
|
4778
|
+
},
|
|
4779
|
+
{
|
|
4780
|
+
"type": "openapi",
|
|
4781
|
+
"target": "/openapi.json"
|
|
4782
|
+
}
|
|
4783
|
+
],
|
|
4784
|
+
"references": [
|
|
4785
|
+
{
|
|
4786
|
+
"type": "source",
|
|
4787
|
+
"target": "packages/cli/src/api/openapi.ts",
|
|
4788
|
+
"relation": "openapi-source"
|
|
4789
|
+
},
|
|
4790
|
+
{
|
|
4791
|
+
"type": "documentation",
|
|
4792
|
+
"target": "docs/reference/rest-api.md",
|
|
4793
|
+
"relation": "endpoint-inventory"
|
|
4794
|
+
}
|
|
4795
|
+
],
|
|
4796
|
+
"methods": [
|
|
4797
|
+
"POST"
|
|
4798
|
+
],
|
|
4799
|
+
"tags": [
|
|
4800
|
+
"Audio"
|
|
4801
|
+
],
|
|
4802
|
+
"operations": {
|
|
4803
|
+
"post": {
|
|
4804
|
+
"summary": "Reconcile offline/dream diarization observations",
|
|
4805
|
+
"tags": [
|
|
4806
|
+
"Audio"
|
|
4807
|
+
],
|
|
4808
|
+
"description": "Reserved managed-inference contract: {observation_ids,episode_id?,timeout_ms?}. The supplied IDs refer to role-isolated AudioObservation records. A future pyannote worker can return only OfflineReconciliationProposal records: a proposed diarization_cluster_id, review requirement, and durable_identity:forbidden. This build returns typed HTTP 503 speaker_diarization_runtime_unavailable rather than pretending that a model catalogue entry is live. Inference never installs or downloads.",
|
|
4809
|
+
"responses": {
|
|
4810
|
+
"200": {
|
|
4811
|
+
"description": "Reserved for a future successful managed reconciliation result; current builds never return this response."
|
|
4812
|
+
},
|
|
4813
|
+
"403": {
|
|
4814
|
+
"description": "Run scope required."
|
|
4815
|
+
},
|
|
4816
|
+
"503": {
|
|
4817
|
+
"description": "Managed reconciliation worker not shipped or not proven ready."
|
|
4818
|
+
}
|
|
4819
|
+
}
|
|
4820
|
+
}
|
|
4821
|
+
},
|
|
4822
|
+
"source_of_truth": [
|
|
4823
|
+
"GET /openapi.json",
|
|
4824
|
+
"packages/cli/src/api/openapi.ts"
|
|
4825
|
+
]
|
|
4826
|
+
},
|
|
4827
|
+
{
|
|
4828
|
+
"id": "api.v1-audio-diarization-reconcile-cancel",
|
|
4829
|
+
"kind": "api",
|
|
4830
|
+
"title": "/v1/audio/diarization/reconcile/cancel",
|
|
4831
|
+
"summary": "Cancel offline diarization reconciliation work",
|
|
4832
|
+
"aliases": [
|
|
4833
|
+
"/v1/audio/diarization/reconcile/cancel"
|
|
4834
|
+
],
|
|
4835
|
+
"keywords": [
|
|
4836
|
+
"rest",
|
|
4837
|
+
"openapi",
|
|
4838
|
+
"POST",
|
|
4839
|
+
"Audio",
|
|
4840
|
+
"v1",
|
|
4841
|
+
"audio",
|
|
4842
|
+
"diarization",
|
|
4843
|
+
"reconcile",
|
|
4844
|
+
"cancel"
|
|
4845
|
+
],
|
|
4846
|
+
"maturity": "stable",
|
|
4847
|
+
"layer": "interface",
|
|
4848
|
+
"audiences": [
|
|
4849
|
+
"integrator",
|
|
4850
|
+
"service-agent",
|
|
4851
|
+
"coding-agent"
|
|
4852
|
+
],
|
|
4853
|
+
"interfaces": [
|
|
4854
|
+
{
|
|
4855
|
+
"type": "rest",
|
|
4856
|
+
"target": "POST /v1/audio/diarization/reconcile/cancel"
|
|
4857
|
+
},
|
|
4858
|
+
{
|
|
4859
|
+
"type": "openapi",
|
|
4860
|
+
"target": "/openapi.json"
|
|
4861
|
+
}
|
|
4862
|
+
],
|
|
4863
|
+
"references": [
|
|
4864
|
+
{
|
|
4865
|
+
"type": "source",
|
|
4866
|
+
"target": "packages/cli/src/api/openapi.ts",
|
|
4867
|
+
"relation": "openapi-source"
|
|
4868
|
+
},
|
|
4869
|
+
{
|
|
4870
|
+
"type": "documentation",
|
|
4871
|
+
"target": "docs/reference/rest-api.md",
|
|
4872
|
+
"relation": "endpoint-inventory"
|
|
4873
|
+
}
|
|
4874
|
+
],
|
|
4875
|
+
"methods": [
|
|
4876
|
+
"POST"
|
|
4877
|
+
],
|
|
4878
|
+
"tags": [
|
|
4879
|
+
"Audio"
|
|
4880
|
+
],
|
|
4881
|
+
"operations": {
|
|
4882
|
+
"post": {
|
|
4883
|
+
"summary": "Cancel offline diarization reconciliation work",
|
|
4884
|
+
"tags": [
|
|
4885
|
+
"Audio"
|
|
4886
|
+
],
|
|
4887
|
+
"description": "Run scope required. A future persistent worker is limited to one active job plus one queued job; cancellation terminates the worker before clearing both. Current builds return cancelled:false because no worker has been started.",
|
|
4888
|
+
"responses": {
|
|
4889
|
+
"200": {
|
|
4890
|
+
"description": "Cancellation state."
|
|
4891
|
+
},
|
|
4892
|
+
"403": {
|
|
4893
|
+
"description": "Run scope required."
|
|
4894
|
+
}
|
|
4895
|
+
}
|
|
4896
|
+
}
|
|
4897
|
+
},
|
|
4898
|
+
"source_of_truth": [
|
|
4899
|
+
"GET /openapi.json",
|
|
4900
|
+
"packages/cli/src/api/openapi.ts"
|
|
4901
|
+
]
|
|
4902
|
+
},
|
|
4903
|
+
{
|
|
4904
|
+
"id": "api.v1-audio-diarization-reconcile-readiness",
|
|
4905
|
+
"kind": "api",
|
|
4906
|
+
"title": "/v1/audio/diarization/reconcile/readiness",
|
|
4907
|
+
"summary": "Read offline/dream speaker-reconciliation readiness",
|
|
4908
|
+
"aliases": [
|
|
4909
|
+
"/v1/audio/diarization/reconcile/readiness"
|
|
4910
|
+
],
|
|
4911
|
+
"keywords": [
|
|
4912
|
+
"rest",
|
|
4913
|
+
"openapi",
|
|
4914
|
+
"GET",
|
|
4915
|
+
"Audio",
|
|
4916
|
+
"v1",
|
|
4917
|
+
"audio",
|
|
4918
|
+
"diarization",
|
|
4919
|
+
"reconcile",
|
|
4920
|
+
"readiness"
|
|
4921
|
+
],
|
|
4922
|
+
"maturity": "stable",
|
|
4923
|
+
"layer": "interface",
|
|
4924
|
+
"audiences": [
|
|
4925
|
+
"integrator",
|
|
4926
|
+
"service-agent",
|
|
4927
|
+
"coding-agent"
|
|
4928
|
+
],
|
|
4929
|
+
"interfaces": [
|
|
4930
|
+
{
|
|
4931
|
+
"type": "rest",
|
|
4932
|
+
"target": "GET /v1/audio/diarization/reconcile/readiness"
|
|
4933
|
+
},
|
|
4934
|
+
{
|
|
4935
|
+
"type": "openapi",
|
|
4936
|
+
"target": "/openapi.json"
|
|
4937
|
+
}
|
|
4938
|
+
],
|
|
4939
|
+
"references": [
|
|
4940
|
+
{
|
|
4941
|
+
"type": "source",
|
|
4942
|
+
"target": "packages/cli/src/api/openapi.ts",
|
|
4943
|
+
"relation": "openapi-source"
|
|
4944
|
+
},
|
|
4945
|
+
{
|
|
4946
|
+
"type": "documentation",
|
|
4947
|
+
"target": "docs/reference/rest-api.md",
|
|
4948
|
+
"relation": "endpoint-inventory"
|
|
4949
|
+
}
|
|
4950
|
+
],
|
|
4951
|
+
"methods": [
|
|
4952
|
+
"GET"
|
|
4953
|
+
],
|
|
4954
|
+
"tags": [
|
|
4955
|
+
"Audio"
|
|
4956
|
+
],
|
|
4957
|
+
"operations": {
|
|
4958
|
+
"get": {
|
|
4959
|
+
"summary": "Read offline/dream speaker-reconciliation readiness",
|
|
4960
|
+
"tags": [
|
|
4961
|
+
"Audio"
|
|
4962
|
+
],
|
|
4963
|
+
"description": "Non-mutating readiness for pyannote/speaker-diarization-community-1. It never downloads, installs, creates environments, or loads a model. Current Omnius builds intentionally return 503 until a managed persistent worker proves it can load an operator-verified local snapshot. Reconciliation may make only reviewable file/episode cluster proposals, never durable identity claims.",
|
|
4964
|
+
"responses": {
|
|
4965
|
+
"200": {
|
|
4966
|
+
"description": "Reserved for a future worker-proven ready state; current builds never return this response."
|
|
4967
|
+
},
|
|
4968
|
+
"503": {
|
|
4969
|
+
"description": "No verified managed reconciliation worker is available; body still describes the exact model, snapshot state, and proposal/observation contract."
|
|
4970
|
+
}
|
|
4971
|
+
}
|
|
4972
|
+
}
|
|
4973
|
+
},
|
|
4974
|
+
"source_of_truth": [
|
|
4975
|
+
"GET /openapi.json",
|
|
4976
|
+
"packages/cli/src/api/openapi.ts"
|
|
4977
|
+
]
|
|
4978
|
+
},
|
|
4979
|
+
{
|
|
4980
|
+
"id": "api.v1-audio-diarization-reconcile-setup",
|
|
4981
|
+
"kind": "api",
|
|
4982
|
+
"title": "/v1/audio/diarization/reconcile/setup",
|
|
4983
|
+
"summary": "Register a verified local reconciliation snapshot",
|
|
4984
|
+
"aliases": [
|
|
4985
|
+
"/v1/audio/diarization/reconcile/setup"
|
|
4986
|
+
],
|
|
4987
|
+
"keywords": [
|
|
4988
|
+
"rest",
|
|
4989
|
+
"openapi",
|
|
4990
|
+
"POST",
|
|
4991
|
+
"Audio",
|
|
4992
|
+
"v1",
|
|
4993
|
+
"audio",
|
|
4994
|
+
"diarization",
|
|
4995
|
+
"reconcile",
|
|
4996
|
+
"setup"
|
|
4997
|
+
],
|
|
4998
|
+
"maturity": "stable",
|
|
4999
|
+
"layer": "interface",
|
|
5000
|
+
"audiences": [
|
|
5001
|
+
"integrator",
|
|
5002
|
+
"service-agent",
|
|
5003
|
+
"coding-agent"
|
|
5004
|
+
],
|
|
5005
|
+
"interfaces": [
|
|
5006
|
+
{
|
|
5007
|
+
"type": "rest",
|
|
5008
|
+
"target": "POST /v1/audio/diarization/reconcile/setup"
|
|
5009
|
+
},
|
|
5010
|
+
{
|
|
5011
|
+
"type": "openapi",
|
|
5012
|
+
"target": "/openapi.json"
|
|
5013
|
+
}
|
|
5014
|
+
],
|
|
5015
|
+
"references": [
|
|
5016
|
+
{
|
|
5017
|
+
"type": "source",
|
|
5018
|
+
"target": "packages/cli/src/api/openapi.ts",
|
|
5019
|
+
"relation": "openapi-source"
|
|
5020
|
+
},
|
|
5021
|
+
{
|
|
5022
|
+
"type": "documentation",
|
|
5023
|
+
"target": "docs/reference/rest-api.md",
|
|
5024
|
+
"relation": "endpoint-inventory"
|
|
5025
|
+
}
|
|
5026
|
+
],
|
|
5027
|
+
"methods": [
|
|
5028
|
+
"POST"
|
|
5029
|
+
],
|
|
5030
|
+
"tags": [
|
|
5031
|
+
"Audio"
|
|
5032
|
+
],
|
|
5033
|
+
"operations": {
|
|
5034
|
+
"post": {
|
|
5035
|
+
"summary": "Register a verified local reconciliation snapshot",
|
|
5036
|
+
"tags": [
|
|
5037
|
+
"Audio"
|
|
5038
|
+
],
|
|
5039
|
+
"description": "Admin-only. Body requires absolute snapshot_path and optional absolute manifest_path. The manifest must be omnius.audio-diarization-model-snapshot.v1 for pyannote/speaker-diarization-community-1 with an immutable revision, relative artifact path, and sha256:<digest>; setup verifies those exact local bytes and records a private binding. It never downloads pyannote, model weights, or dependencies and returns 202 because inference remains disabled until a worker is shipped.",
|
|
5040
|
+
"requestBody": {
|
|
5041
|
+
"required": true,
|
|
5042
|
+
"content": {
|
|
5043
|
+
"application/json": {
|
|
5044
|
+
"schema": {
|
|
5045
|
+
"type": "object",
|
|
5046
|
+
"required": [
|
|
5047
|
+
"snapshot_path"
|
|
5048
|
+
],
|
|
5049
|
+
"properties": {
|
|
5050
|
+
"snapshot_path": {
|
|
5051
|
+
"type": "string"
|
|
5052
|
+
},
|
|
5053
|
+
"manifest_path": {
|
|
5054
|
+
"type": "string"
|
|
5055
|
+
}
|
|
5056
|
+
}
|
|
5057
|
+
}
|
|
5058
|
+
}
|
|
5059
|
+
}
|
|
5060
|
+
},
|
|
5061
|
+
"responses": {
|
|
5062
|
+
"202": {
|
|
5063
|
+
"description": "snapshot_registered=true means only the local artifact bytes were verified; the runtime remains unavailable."
|
|
5064
|
+
},
|
|
5065
|
+
"400": {
|
|
5066
|
+
"description": "Snapshot path or immutable manifest/digest validation failed."
|
|
5067
|
+
},
|
|
5068
|
+
"403": {
|
|
5069
|
+
"description": "Admin scope required."
|
|
5070
|
+
}
|
|
5071
|
+
}
|
|
5072
|
+
}
|
|
5073
|
+
},
|
|
5074
|
+
"source_of_truth": [
|
|
5075
|
+
"GET /openapi.json",
|
|
5076
|
+
"packages/cli/src/api/openapi.ts"
|
|
5077
|
+
]
|
|
5078
|
+
},
|
|
4417
5079
|
{
|
|
4418
5080
|
"id": "api.v1-audio-embed",
|
|
4419
5081
|
"kind": "api",
|
|
4420
5082
|
"title": "/v1/audio/embed",
|
|
4421
|
-
"summary": "Create
|
|
5083
|
+
"summary": "Create a managed role-typed audio embedding",
|
|
4422
5084
|
"aliases": [
|
|
4423
5085
|
"/v1/audio/embed"
|
|
4424
5086
|
],
|
|
@@ -4426,7 +5088,7 @@
|
|
|
4426
5088
|
"rest",
|
|
4427
5089
|
"openapi",
|
|
4428
5090
|
"POST",
|
|
4429
|
-
"
|
|
5091
|
+
"Audio",
|
|
4430
5092
|
"v1",
|
|
4431
5093
|
"audio",
|
|
4432
5094
|
"embed"
|
|
@@ -4464,20 +5126,310 @@
|
|
|
4464
5126
|
"POST"
|
|
4465
5127
|
],
|
|
4466
5128
|
"tags": [
|
|
4467
|
-
"
|
|
5129
|
+
"Audio"
|
|
4468
5130
|
],
|
|
4469
5131
|
"operations": {
|
|
4470
5132
|
"post": {
|
|
4471
|
-
"summary": "Create
|
|
5133
|
+
"summary": "Create a managed role-typed audio embedding",
|
|
4472
5134
|
"tags": [
|
|
4473
|
-
"
|
|
5135
|
+
"Audio"
|
|
5136
|
+
],
|
|
5137
|
+
"description": "Alias of POST /v1/tools/audio_analyze/call with args.action forced to embed. Canonical form: POST /v1/audio/embed?kind=acoustic|speaker|semantic with {args:{file|path,...},timeout_ms?,profile?,working_dir?}; body.kind and args.kind are compatibility aliases. Legacy top-level path/file is normalized into args. bytesBase64 is rejected because every managed runtime accepts a retained caller-supplied WAV path only. It preserves the exact direct-tool auth, profile, origin, output-cap, timeout, and cancellation contract. The route passes the requested role through exactly and never substitutes vector spaces. Poll /v1/audio/embed/health?kind=<role> first; inference never installs dependencies or downloads weights.",
|
|
5138
|
+
"parameters": [
|
|
5139
|
+
{
|
|
5140
|
+
"name": "kind",
|
|
5141
|
+
"in": "query",
|
|
5142
|
+
"required": false,
|
|
5143
|
+
"schema": {
|
|
5144
|
+
"type": "string",
|
|
5145
|
+
"enum": [
|
|
5146
|
+
"acoustic",
|
|
5147
|
+
"speaker",
|
|
5148
|
+
"semantic"
|
|
5149
|
+
]
|
|
5150
|
+
},
|
|
5151
|
+
"description": "Canonical location for the required role kind; body.kind is accepted for compatibility."
|
|
5152
|
+
}
|
|
5153
|
+
],
|
|
5154
|
+
"requestBody": {
|
|
5155
|
+
"required": true,
|
|
5156
|
+
"content": {
|
|
5157
|
+
"application/json": {
|
|
5158
|
+
"schema": {
|
|
5159
|
+
"type": "object",
|
|
5160
|
+
"properties": {
|
|
5161
|
+
"kind": {
|
|
5162
|
+
"type": "string",
|
|
5163
|
+
"enum": [
|
|
5164
|
+
"acoustic",
|
|
5165
|
+
"speaker",
|
|
5166
|
+
"semantic"
|
|
5167
|
+
]
|
|
5168
|
+
},
|
|
5169
|
+
"path": {
|
|
5170
|
+
"type": "string",
|
|
5171
|
+
"description": "Compatibility input; normalized into args.path."
|
|
5172
|
+
},
|
|
5173
|
+
"file": {
|
|
5174
|
+
"type": "string",
|
|
5175
|
+
"description": "Compatibility input; normalized into args.file."
|
|
5176
|
+
},
|
|
5177
|
+
"args": {
|
|
5178
|
+
"type": "object",
|
|
5179
|
+
"properties": {
|
|
5180
|
+
"file": {
|
|
5181
|
+
"type": "string"
|
|
5182
|
+
},
|
|
5183
|
+
"path": {
|
|
5184
|
+
"type": "string"
|
|
5185
|
+
}
|
|
5186
|
+
}
|
|
5187
|
+
},
|
|
5188
|
+
"timeout_ms": {
|
|
5189
|
+
"type": "integer",
|
|
5190
|
+
"minimum": 1000,
|
|
5191
|
+
"maximum": 120000
|
|
5192
|
+
},
|
|
5193
|
+
"max_output_chars": {
|
|
5194
|
+
"type": "integer"
|
|
5195
|
+
},
|
|
5196
|
+
"profile": {
|
|
5197
|
+
"type": "string"
|
|
5198
|
+
},
|
|
5199
|
+
"working_dir": {
|
|
5200
|
+
"type": "string",
|
|
5201
|
+
"description": "Admin scope only."
|
|
5202
|
+
}
|
|
5203
|
+
}
|
|
5204
|
+
}
|
|
5205
|
+
}
|
|
5206
|
+
}
|
|
5207
|
+
},
|
|
5208
|
+
"responses": {
|
|
5209
|
+
"200": {
|
|
5210
|
+
"description": "Direct audio_analyze result envelope; consume result.data for the role-typed embedding."
|
|
5211
|
+
},
|
|
5212
|
+
"400": {
|
|
5213
|
+
"description": "Invalid body or embedding kind"
|
|
5214
|
+
},
|
|
5215
|
+
"403": {
|
|
5216
|
+
"description": "Direct-tool scope/profile/origin policy denied the call"
|
|
5217
|
+
},
|
|
5218
|
+
"503": {
|
|
5219
|
+
"description": "Requested role runtime is unavailable"
|
|
5220
|
+
}
|
|
5221
|
+
}
|
|
5222
|
+
}
|
|
5223
|
+
},
|
|
5224
|
+
"source_of_truth": [
|
|
5225
|
+
"GET /openapi.json",
|
|
5226
|
+
"packages/cli/src/api/openapi.ts"
|
|
5227
|
+
]
|
|
5228
|
+
},
|
|
5229
|
+
{
|
|
5230
|
+
"id": "api.v1-audio-embed-health",
|
|
5231
|
+
"kind": "api",
|
|
5232
|
+
"title": "/v1/audio/embed/health",
|
|
5233
|
+
"summary": "Read role-typed audio embedding readiness",
|
|
5234
|
+
"aliases": [
|
|
5235
|
+
"/v1/audio/embed/health"
|
|
5236
|
+
],
|
|
5237
|
+
"keywords": [
|
|
5238
|
+
"rest",
|
|
5239
|
+
"openapi",
|
|
5240
|
+
"GET",
|
|
5241
|
+
"Audio",
|
|
5242
|
+
"v1",
|
|
5243
|
+
"audio",
|
|
5244
|
+
"embed",
|
|
5245
|
+
"health"
|
|
5246
|
+
],
|
|
5247
|
+
"maturity": "stable",
|
|
5248
|
+
"layer": "interface",
|
|
5249
|
+
"audiences": [
|
|
5250
|
+
"integrator",
|
|
5251
|
+
"service-agent",
|
|
5252
|
+
"coding-agent"
|
|
5253
|
+
],
|
|
5254
|
+
"interfaces": [
|
|
5255
|
+
{
|
|
5256
|
+
"type": "rest",
|
|
5257
|
+
"target": "GET /v1/audio/embed/health"
|
|
5258
|
+
},
|
|
5259
|
+
{
|
|
5260
|
+
"type": "openapi",
|
|
5261
|
+
"target": "/openapi.json"
|
|
5262
|
+
}
|
|
5263
|
+
],
|
|
5264
|
+
"references": [
|
|
5265
|
+
{
|
|
5266
|
+
"type": "source",
|
|
5267
|
+
"target": "packages/cli/src/api/openapi.ts",
|
|
5268
|
+
"relation": "openapi-source"
|
|
5269
|
+
},
|
|
5270
|
+
{
|
|
5271
|
+
"type": "documentation",
|
|
5272
|
+
"target": "docs/reference/rest-api.md",
|
|
5273
|
+
"relation": "endpoint-inventory"
|
|
5274
|
+
}
|
|
5275
|
+
],
|
|
5276
|
+
"methods": [
|
|
5277
|
+
"GET"
|
|
5278
|
+
],
|
|
5279
|
+
"tags": [
|
|
5280
|
+
"Audio"
|
|
5281
|
+
],
|
|
5282
|
+
"operations": {
|
|
5283
|
+
"get": {
|
|
5284
|
+
"summary": "Read role-typed audio embedding readiness",
|
|
5285
|
+
"tags": [
|
|
5286
|
+
"Audio"
|
|
5287
|
+
],
|
|
5288
|
+
"description": "Requires kind=acoustic|speaker|semantic. Each kind dispatches only to its role-correct managed runtime: acoustic is Jetson TensorRT YAMNet (1024d), speaker is CPU-only WeSpeaker CAM++ (512d), and semantic is Jetson CUDA CLAP (512d). A 503 means that requested role is unprovisioned or its worker is unready; Omnius never substitutes another vector space. This endpoint is non-provisioning: it never installs dependencies, downloads weights, or runs embedding inference.",
|
|
5289
|
+
"parameters": [
|
|
5290
|
+
{
|
|
5291
|
+
"name": "kind",
|
|
5292
|
+
"in": "query",
|
|
5293
|
+
"required": true,
|
|
5294
|
+
"schema": {
|
|
5295
|
+
"type": "string",
|
|
5296
|
+
"enum": [
|
|
5297
|
+
"acoustic",
|
|
5298
|
+
"speaker",
|
|
5299
|
+
"semantic"
|
|
5300
|
+
]
|
|
5301
|
+
}
|
|
5302
|
+
}
|
|
5303
|
+
],
|
|
5304
|
+
"responses": {
|
|
5305
|
+
"200": {
|
|
5306
|
+
"description": "The requested role-specific embedding runtime is warm and ready."
|
|
5307
|
+
},
|
|
5308
|
+
"400": {
|
|
5309
|
+
"description": "kind is missing or invalid"
|
|
5310
|
+
},
|
|
5311
|
+
"503": {
|
|
5312
|
+
"description": "The requested role runtime is unprovisioned or unready; response retains that role's exact vector-space metadata."
|
|
5313
|
+
}
|
|
5314
|
+
}
|
|
5315
|
+
}
|
|
5316
|
+
},
|
|
5317
|
+
"source_of_truth": [
|
|
5318
|
+
"GET /openapi.json",
|
|
5319
|
+
"packages/cli/src/api/openapi.ts"
|
|
5320
|
+
]
|
|
5321
|
+
},
|
|
5322
|
+
{
|
|
5323
|
+
"id": "api.v1-audio-embed-setup",
|
|
5324
|
+
"kind": "api",
|
|
5325
|
+
"title": "/v1/audio/embed/setup",
|
|
5326
|
+
"summary": "Provision and activate one role-typed audio embedding runtime",
|
|
5327
|
+
"aliases": [
|
|
5328
|
+
"/v1/audio/embed/setup"
|
|
5329
|
+
],
|
|
5330
|
+
"keywords": [
|
|
5331
|
+
"rest",
|
|
5332
|
+
"openapi",
|
|
5333
|
+
"POST",
|
|
5334
|
+
"Audio",
|
|
5335
|
+
"v1",
|
|
5336
|
+
"audio",
|
|
5337
|
+
"embed",
|
|
5338
|
+
"setup"
|
|
5339
|
+
],
|
|
5340
|
+
"maturity": "stable",
|
|
5341
|
+
"layer": "interface",
|
|
5342
|
+
"audiences": [
|
|
5343
|
+
"integrator",
|
|
5344
|
+
"service-agent",
|
|
5345
|
+
"coding-agent"
|
|
5346
|
+
],
|
|
5347
|
+
"interfaces": [
|
|
5348
|
+
{
|
|
5349
|
+
"type": "rest",
|
|
5350
|
+
"target": "POST /v1/audio/embed/setup"
|
|
5351
|
+
},
|
|
5352
|
+
{
|
|
5353
|
+
"type": "openapi",
|
|
5354
|
+
"target": "/openapi.json"
|
|
5355
|
+
}
|
|
5356
|
+
],
|
|
5357
|
+
"references": [
|
|
5358
|
+
{
|
|
5359
|
+
"type": "source",
|
|
5360
|
+
"target": "packages/cli/src/api/openapi.ts",
|
|
5361
|
+
"relation": "openapi-source"
|
|
5362
|
+
},
|
|
5363
|
+
{
|
|
5364
|
+
"type": "documentation",
|
|
5365
|
+
"target": "docs/reference/rest-api.md",
|
|
5366
|
+
"relation": "endpoint-inventory"
|
|
5367
|
+
}
|
|
5368
|
+
],
|
|
5369
|
+
"methods": [
|
|
5370
|
+
"POST"
|
|
5371
|
+
],
|
|
5372
|
+
"tags": [
|
|
5373
|
+
"Audio"
|
|
5374
|
+
],
|
|
5375
|
+
"operations": {
|
|
5376
|
+
"post": {
|
|
5377
|
+
"summary": "Provision and activate one role-typed audio embedding runtime",
|
|
5378
|
+
"tags": [
|
|
5379
|
+
"Audio"
|
|
5380
|
+
],
|
|
5381
|
+
"description": "Admin-only. Requires kind=acoustic|speaker|semantic in the query (canonical) or JSON body. acoustic reuses the pinned JetPack YAMNet/TensorRT setup; speaker installs the isolated CPU-only WeSpeaker CAM++ ONNX Runtime and pinned model; semantic installs the isolated JetPack CUDA CLAP dependencies and pinned model. This is the only REST operation allowed to provision. It activates and warms only the requested role worker; no role is substituted for another.",
|
|
5382
|
+
"parameters": [
|
|
5383
|
+
{
|
|
5384
|
+
"name": "kind",
|
|
5385
|
+
"in": "query",
|
|
5386
|
+
"required": false,
|
|
5387
|
+
"schema": {
|
|
5388
|
+
"type": "string",
|
|
5389
|
+
"enum": [
|
|
5390
|
+
"acoustic",
|
|
5391
|
+
"speaker",
|
|
5392
|
+
"semantic"
|
|
5393
|
+
]
|
|
5394
|
+
},
|
|
5395
|
+
"description": "Canonical required role selector; JSON body.kind is accepted for compatibility."
|
|
5396
|
+
}
|
|
4474
5397
|
],
|
|
5398
|
+
"requestBody": {
|
|
5399
|
+
"required": false,
|
|
5400
|
+
"content": {
|
|
5401
|
+
"application/json": {
|
|
5402
|
+
"schema": {
|
|
5403
|
+
"type": "object",
|
|
5404
|
+
"properties": {
|
|
5405
|
+
"kind": {
|
|
5406
|
+
"type": "string",
|
|
5407
|
+
"enum": [
|
|
5408
|
+
"acoustic",
|
|
5409
|
+
"speaker",
|
|
5410
|
+
"semantic"
|
|
5411
|
+
]
|
|
5412
|
+
}
|
|
5413
|
+
}
|
|
5414
|
+
}
|
|
5415
|
+
}
|
|
5416
|
+
}
|
|
5417
|
+
},
|
|
4475
5418
|
"responses": {
|
|
4476
5419
|
"200": {
|
|
4477
|
-
"description": "
|
|
5420
|
+
"description": "Requested role runtime provisioned and warm."
|
|
5421
|
+
},
|
|
5422
|
+
"202": {
|
|
5423
|
+
"description": "Provisioning finished but requested role did not prove warm; poll its health URL."
|
|
4478
5424
|
},
|
|
4479
5425
|
"400": {
|
|
4480
|
-
"description": "
|
|
5426
|
+
"description": "kind is missing or invalid."
|
|
5427
|
+
},
|
|
5428
|
+
"403": {
|
|
5429
|
+
"description": "Admin scope required."
|
|
5430
|
+
},
|
|
5431
|
+
"500": {
|
|
5432
|
+
"description": "Role-specific setup/preflight failed."
|
|
4481
5433
|
}
|
|
4482
5434
|
}
|
|
4483
5435
|
}
|
|
@@ -10371,6 +11323,332 @@
|
|
|
10371
11323
|
"packages/cli/src/api/openapi.ts"
|
|
10372
11324
|
]
|
|
10373
11325
|
},
|
|
11326
|
+
{
|
|
11327
|
+
"id": "api.v1-memory-speaker-identities-enroll",
|
|
11328
|
+
"kind": "api",
|
|
11329
|
+
"title": "/v1/memory/speaker-identities/enroll",
|
|
11330
|
+
"summary": "Enroll an explicitly self-identified speaker exemplar",
|
|
11331
|
+
"aliases": [
|
|
11332
|
+
"/v1/memory/speaker-identities/enroll"
|
|
11333
|
+
],
|
|
11334
|
+
"keywords": [
|
|
11335
|
+
"rest",
|
|
11336
|
+
"openapi",
|
|
11337
|
+
"POST",
|
|
11338
|
+
"Memory",
|
|
11339
|
+
"Audio",
|
|
11340
|
+
"v1",
|
|
11341
|
+
"memory",
|
|
11342
|
+
"speaker-identities",
|
|
11343
|
+
"enroll"
|
|
11344
|
+
],
|
|
11345
|
+
"maturity": "stable",
|
|
11346
|
+
"layer": "interface",
|
|
11347
|
+
"audiences": [
|
|
11348
|
+
"integrator",
|
|
11349
|
+
"service-agent",
|
|
11350
|
+
"coding-agent"
|
|
11351
|
+
],
|
|
11352
|
+
"interfaces": [
|
|
11353
|
+
{
|
|
11354
|
+
"type": "rest",
|
|
11355
|
+
"target": "POST /v1/memory/speaker-identities/enroll"
|
|
11356
|
+
},
|
|
11357
|
+
{
|
|
11358
|
+
"type": "openapi",
|
|
11359
|
+
"target": "/openapi.json"
|
|
11360
|
+
}
|
|
11361
|
+
],
|
|
11362
|
+
"references": [
|
|
11363
|
+
{
|
|
11364
|
+
"type": "source",
|
|
11365
|
+
"target": "packages/cli/src/api/openapi.ts",
|
|
11366
|
+
"relation": "openapi-source"
|
|
11367
|
+
},
|
|
11368
|
+
{
|
|
11369
|
+
"type": "documentation",
|
|
11370
|
+
"target": "docs/reference/rest-api.md",
|
|
11371
|
+
"relation": "endpoint-inventory"
|
|
11372
|
+
}
|
|
11373
|
+
],
|
|
11374
|
+
"methods": [
|
|
11375
|
+
"POST"
|
|
11376
|
+
],
|
|
11377
|
+
"tags": [
|
|
11378
|
+
"Memory",
|
|
11379
|
+
"Audio"
|
|
11380
|
+
],
|
|
11381
|
+
"operations": {
|
|
11382
|
+
"post": {
|
|
11383
|
+
"summary": "Enroll an explicitly self-identified speaker exemplar",
|
|
11384
|
+
"tags": [
|
|
11385
|
+
"Memory",
|
|
11386
|
+
"Audio"
|
|
11387
|
+
],
|
|
11388
|
+
"description": "Admin-only durable biometric enrollment. Body requires {scope_id, identity, observation_id, consent:{basis:'explicit_self_identification', asserted_by,...}, space:{embedding_set_slug,model,model_revision,model_digest,dimensions,normalization:'l2'}}. observation_id must already hold exactly one role-isolated speaker_identity_embedding in that exact model/revision/digest/set/dimension. Sender metadata and diarization labels are never identity proof; this endpoint creates no voice_sample_of or other identity graph edges and never returns a centroid/vector.",
|
|
11389
|
+
"requestBody": {
|
|
11390
|
+
"required": true,
|
|
11391
|
+
"content": {
|
|
11392
|
+
"application/json": {
|
|
11393
|
+
"schema": {
|
|
11394
|
+
"type": "object",
|
|
11395
|
+
"required": [
|
|
11396
|
+
"scope_id",
|
|
11397
|
+
"identity",
|
|
11398
|
+
"observation_id",
|
|
11399
|
+
"consent",
|
|
11400
|
+
"space"
|
|
11401
|
+
],
|
|
11402
|
+
"properties": {
|
|
11403
|
+
"scope_id": {
|
|
11404
|
+
"type": "string"
|
|
11405
|
+
},
|
|
11406
|
+
"identity": {
|
|
11407
|
+
"type": "string"
|
|
11408
|
+
},
|
|
11409
|
+
"observation_id": {
|
|
11410
|
+
"type": "string"
|
|
11411
|
+
},
|
|
11412
|
+
"consent": {
|
|
11413
|
+
"type": "object",
|
|
11414
|
+
"required": [
|
|
11415
|
+
"basis",
|
|
11416
|
+
"asserted_by"
|
|
11417
|
+
],
|
|
11418
|
+
"properties": {
|
|
11419
|
+
"basis": {
|
|
11420
|
+
"type": "string",
|
|
11421
|
+
"enum": [
|
|
11422
|
+
"explicit_self_identification"
|
|
11423
|
+
]
|
|
11424
|
+
},
|
|
11425
|
+
"asserted_by": {
|
|
11426
|
+
"type": "string"
|
|
11427
|
+
},
|
|
11428
|
+
"asserted_at": {
|
|
11429
|
+
"type": "string",
|
|
11430
|
+
"format": "date-time"
|
|
11431
|
+
},
|
|
11432
|
+
"note": {
|
|
11433
|
+
"type": "string"
|
|
11434
|
+
}
|
|
11435
|
+
}
|
|
11436
|
+
},
|
|
11437
|
+
"space": {
|
|
11438
|
+
"type": "object",
|
|
11439
|
+
"required": [
|
|
11440
|
+
"embedding_set_slug",
|
|
11441
|
+
"model",
|
|
11442
|
+
"model_revision",
|
|
11443
|
+
"model_digest",
|
|
11444
|
+
"dimensions",
|
|
11445
|
+
"normalization"
|
|
11446
|
+
],
|
|
11447
|
+
"properties": {
|
|
11448
|
+
"embedding_set_slug": {
|
|
11449
|
+
"type": "string"
|
|
11450
|
+
},
|
|
11451
|
+
"model": {
|
|
11452
|
+
"type": "string"
|
|
11453
|
+
},
|
|
11454
|
+
"model_revision": {
|
|
11455
|
+
"type": "string"
|
|
11456
|
+
},
|
|
11457
|
+
"model_digest": {
|
|
11458
|
+
"type": "string"
|
|
11459
|
+
},
|
|
11460
|
+
"dimensions": {
|
|
11461
|
+
"type": "integer",
|
|
11462
|
+
"minimum": 1
|
|
11463
|
+
},
|
|
11464
|
+
"normalization": {
|
|
11465
|
+
"type": "string",
|
|
11466
|
+
"enum": [
|
|
11467
|
+
"l2"
|
|
11468
|
+
]
|
|
11469
|
+
}
|
|
11470
|
+
}
|
|
11471
|
+
}
|
|
11472
|
+
}
|
|
11473
|
+
}
|
|
11474
|
+
}
|
|
11475
|
+
}
|
|
11476
|
+
},
|
|
11477
|
+
"responses": {
|
|
11478
|
+
"201": {
|
|
11479
|
+
"description": "Consent-gated profile updated; only exemplar IDs and metadata are returned."
|
|
11480
|
+
},
|
|
11481
|
+
"400": {
|
|
11482
|
+
"description": "Consent, observation role, or exact vector-space contract invalid."
|
|
11483
|
+
},
|
|
11484
|
+
"403": {
|
|
11485
|
+
"description": "Admin scope required."
|
|
11486
|
+
}
|
|
11487
|
+
}
|
|
11488
|
+
}
|
|
11489
|
+
},
|
|
11490
|
+
"source_of_truth": [
|
|
11491
|
+
"GET /openapi.json",
|
|
11492
|
+
"packages/cli/src/api/openapi.ts"
|
|
11493
|
+
]
|
|
11494
|
+
},
|
|
11495
|
+
{
|
|
11496
|
+
"id": "api.v1-memory-speaker-identities-match",
|
|
11497
|
+
"kind": "api",
|
|
11498
|
+
"title": "/v1/memory/speaker-identities/match",
|
|
11499
|
+
"summary": "Query durable speaker candidates in one exact vector space",
|
|
11500
|
+
"aliases": [
|
|
11501
|
+
"/v1/memory/speaker-identities/match"
|
|
11502
|
+
],
|
|
11503
|
+
"keywords": [
|
|
11504
|
+
"rest",
|
|
11505
|
+
"openapi",
|
|
11506
|
+
"POST",
|
|
11507
|
+
"Memory",
|
|
11508
|
+
"Audio",
|
|
11509
|
+
"v1",
|
|
11510
|
+
"memory",
|
|
11511
|
+
"speaker-identities",
|
|
11512
|
+
"match"
|
|
11513
|
+
],
|
|
11514
|
+
"maturity": "stable",
|
|
11515
|
+
"layer": "interface",
|
|
11516
|
+
"audiences": [
|
|
11517
|
+
"integrator",
|
|
11518
|
+
"service-agent",
|
|
11519
|
+
"coding-agent"
|
|
11520
|
+
],
|
|
11521
|
+
"interfaces": [
|
|
11522
|
+
{
|
|
11523
|
+
"type": "rest",
|
|
11524
|
+
"target": "POST /v1/memory/speaker-identities/match"
|
|
11525
|
+
},
|
|
11526
|
+
{
|
|
11527
|
+
"type": "openapi",
|
|
11528
|
+
"target": "/openapi.json"
|
|
11529
|
+
}
|
|
11530
|
+
],
|
|
11531
|
+
"references": [
|
|
11532
|
+
{
|
|
11533
|
+
"type": "source",
|
|
11534
|
+
"target": "packages/cli/src/api/openapi.ts",
|
|
11535
|
+
"relation": "openapi-source"
|
|
11536
|
+
},
|
|
11537
|
+
{
|
|
11538
|
+
"type": "documentation",
|
|
11539
|
+
"target": "docs/reference/rest-api.md",
|
|
11540
|
+
"relation": "endpoint-inventory"
|
|
11541
|
+
}
|
|
11542
|
+
],
|
|
11543
|
+
"methods": [
|
|
11544
|
+
"POST"
|
|
11545
|
+
],
|
|
11546
|
+
"tags": [
|
|
11547
|
+
"Memory",
|
|
11548
|
+
"Audio"
|
|
11549
|
+
],
|
|
11550
|
+
"operations": {
|
|
11551
|
+
"post": {
|
|
11552
|
+
"summary": "Query durable speaker candidates in one exact vector space",
|
|
11553
|
+
"tags": [
|
|
11554
|
+
"Memory",
|
|
11555
|
+
"Audio"
|
|
11556
|
+
],
|
|
11557
|
+
"description": "Admin-only exact-space biometric candidate query. Body requires {scope_id, vector, dimensions, space:{embedding_set_slug,model,model_revision,model_digest,normalization:'l2'}} and optional thresholds. It searches only consented speaker_identity_embedding centroids in the same scope and exact set/model/revision/digest/dimension—never generic memory vectors, acoustic vectors, semantic vectors, sender data, or diarization labels. Outcomes are provisional, ambiguous, or no_match and never assign a durable identity.",
|
|
11558
|
+
"requestBody": {
|
|
11559
|
+
"required": true,
|
|
11560
|
+
"content": {
|
|
11561
|
+
"application/json": {
|
|
11562
|
+
"schema": {
|
|
11563
|
+
"type": "object",
|
|
11564
|
+
"required": [
|
|
11565
|
+
"scope_id",
|
|
11566
|
+
"vector",
|
|
11567
|
+
"dimensions",
|
|
11568
|
+
"space"
|
|
11569
|
+
],
|
|
11570
|
+
"properties": {
|
|
11571
|
+
"scope_id": {
|
|
11572
|
+
"type": "string"
|
|
11573
|
+
},
|
|
11574
|
+
"vector": {
|
|
11575
|
+
"type": "array",
|
|
11576
|
+
"items": {
|
|
11577
|
+
"type": "number"
|
|
11578
|
+
}
|
|
11579
|
+
},
|
|
11580
|
+
"dimensions": {
|
|
11581
|
+
"type": "integer",
|
|
11582
|
+
"minimum": 1
|
|
11583
|
+
},
|
|
11584
|
+
"space": {
|
|
11585
|
+
"type": "object",
|
|
11586
|
+
"required": [
|
|
11587
|
+
"embedding_set_slug",
|
|
11588
|
+
"model",
|
|
11589
|
+
"model_revision",
|
|
11590
|
+
"model_digest",
|
|
11591
|
+
"normalization"
|
|
11592
|
+
],
|
|
11593
|
+
"properties": {
|
|
11594
|
+
"embedding_set_slug": {
|
|
11595
|
+
"type": "string"
|
|
11596
|
+
},
|
|
11597
|
+
"model": {
|
|
11598
|
+
"type": "string"
|
|
11599
|
+
},
|
|
11600
|
+
"model_revision": {
|
|
11601
|
+
"type": "string"
|
|
11602
|
+
},
|
|
11603
|
+
"model_digest": {
|
|
11604
|
+
"type": "string"
|
|
11605
|
+
},
|
|
11606
|
+
"normalization": {
|
|
11607
|
+
"type": "string",
|
|
11608
|
+
"enum": [
|
|
11609
|
+
"l2"
|
|
11610
|
+
]
|
|
11611
|
+
}
|
|
11612
|
+
}
|
|
11613
|
+
},
|
|
11614
|
+
"thresholds": {
|
|
11615
|
+
"type": "object",
|
|
11616
|
+
"properties": {
|
|
11617
|
+
"provisional": {
|
|
11618
|
+
"type": "number",
|
|
11619
|
+
"minimum": 0,
|
|
11620
|
+
"maximum": 1
|
|
11621
|
+
},
|
|
11622
|
+
"ambiguity_margin": {
|
|
11623
|
+
"type": "number",
|
|
11624
|
+
"minimum": 0,
|
|
11625
|
+
"maximum": 1
|
|
11626
|
+
}
|
|
11627
|
+
}
|
|
11628
|
+
}
|
|
11629
|
+
}
|
|
11630
|
+
}
|
|
11631
|
+
}
|
|
11632
|
+
}
|
|
11633
|
+
},
|
|
11634
|
+
"responses": {
|
|
11635
|
+
"200": {
|
|
11636
|
+
"description": "Typed provisional/ambiguous/no_match outcome with candidates but no stored vectors."
|
|
11637
|
+
},
|
|
11638
|
+
"400": {
|
|
11639
|
+
"description": "Query vector or exact-space contract invalid."
|
|
11640
|
+
},
|
|
11641
|
+
"403": {
|
|
11642
|
+
"description": "Admin scope required."
|
|
11643
|
+
}
|
|
11644
|
+
}
|
|
11645
|
+
}
|
|
11646
|
+
},
|
|
11647
|
+
"source_of_truth": [
|
|
11648
|
+
"GET /openapi.json",
|
|
11649
|
+
"packages/cli/src/api/openapi.ts"
|
|
11650
|
+
]
|
|
11651
|
+
},
|
|
10374
11652
|
{
|
|
10375
11653
|
"id": "api.v1-memory-write",
|
|
10376
11654
|
"kind": "api",
|