openvibers/openvibe.contracts Commits

v0.11.0: Tools jobs — tools.job.create, tools.job.read, tools.job.cancel

OP OpenVibers committed 23 Sept 2026 · 07735b85ad · 5 files, +69 −5


Changes

ddiff --git a/manifests/capabilities/tools.job.cancel.json b/manifests/capabilities/tools.job.cancel.json
nnew file mode 100644
iindex 00000000..11a3c220
---- /dev/null
++++ b/manifests/capabilities/tools.job.cancel.json
@@@ -0,0 +1,19 @@
++{
++ "id": "tools.job.cancel",
++ "version": "1.0",
++ "owner": "tools",
++ "status": "active",
++ "visibility": "public",
++ "description": "Cancel a queued or running job the calling principal created.",
++ "permissions": [
++ "tools:jobs:write"
++ ],
++ "resourceConstraints": [
++ "owner"
++ ],
++ "quotaClass": "tools-job",
++ "events": [],
++ "implementedBy": [
++ "DELETE /api/v1/jobs/:id"
++ ]
++}
ddiff --git a/manifests/capabilities/tools.job.create.json b/manifests/capabilities/tools.job.create.json
nnew file mode 100644
iindex 00000000..8e9a4912
---- /dev/null
++++ b/manifests/capabilities/tools.job.create.json
@@@ -0,0 +1,19 @@
++{
++ "id": "tools.job.create",
++ "version": "1.0",
++ "owner": "tools",
++ "status": "active",
++ "visibility": "public",
++ "description": "Submit an asynchronous tool job (img.process, audio.process, docs.process) with its input files; the job is owned by the calling principal. Idempotency-Key supported.",
++ "permissions": [
++ "tools:jobs:write"
++ ],
++ "resourceConstraints": [
++ "owner"
++ ],
++ "quotaClass": "tools-job",
++ "events": [],
++ "implementedBy": [
++ "POST /api/v1/jobs (Tools satellites: img, audio, docs)"
++ ]
++}
ddiff --git a/manifests/capabilities/tools.job.read.json b/manifests/capabilities/tools.job.read.json
nnew file mode 100644
iindex 00000000..ac7b3ffa
---- /dev/null
++++ b/manifests/capabilities/tools.job.read.json
@@@ -0,0 +1,21 @@
++{
++ "id": "tools.job.read",
++ "version": "1.0",
++ "owner": "tools",
++ "status": "active",
++ "visibility": "public",
++ "description": "Read a job the calling principal created: state, progress, result (Media object references or local files), SSE progress with Last-Event-ID resume, result files.",
++ "permissions": [
++ "tools:jobs:read"
++ ],
++ "resourceConstraints": [
++ "owner"
++ ],
++ "quotaClass": "tools-read",
++ "events": [],
++ "implementedBy": [
++ "GET /api/v1/jobs/:id",
++ "GET /api/v1/jobs/:id/events",
++ "GET /api/v1/jobs/:id/files/:n"
++ ]
++}
ddiff --git a/manifests/services/tools.json b/manifests/services/tools.json
iindex b527e82c..17758501 100644
---- a/manifests/services/tools.json
++++ b/manifests/services/tools.json
@@@ -1,7 +1,7 @@
{
-- "version": "0.1.0",
++ "version": "0.2.0",
"contractRanges": {
-- "openvibe-contracts": ">=0.2.0 <1.0.0"
++ "openvibe-contracts": ">=0.7.0 <1.0.0"
},
"id": "tools",
"name": "OpenVibe.Tools",
@@@ -12,10 +12,15 @@
],
"publicOrigin": "https://openvibe.tools",
"health": "/api/health",
-- "capabilities": [],
++ "capabilities": [
++ "tools.job.create",
++ "tools.job.read",
++ "tools.job.cancel"
++ ],
"eventsProduced": [],
"eventsConsumed": [],
"namespacesOwned": [
"tools.*"
-- ]
++ ],
++ "notes": "Wave 11: asynchronous jobs on the img, audio and docs satellites (POST/GET/DELETE /api/v1/jobs, SSE events). Job lifecycle is not yet published to OpenVibe.Events, so eventsProduced stays empty. Tools consumes media.object.upload and media.object.read (namespace tools) when TOOLS_JOB_RESULTS=media."
}
ddiff --git a/package.json b/package.json
iindex c58237d4..a227af8e 100644
---- a/package.json
++++ b/package.json
@@@ -1,6 +1,6 @@
{
"name": "openvibe-contracts",
-- "version": "0.10.0",
++ "version": "0.11.0",
"description": "Machine-readable contracts for the OpenVibe network: schemas, manifests, ids, error envelope, capability checks.",
"main": "index.js",
"types": "generated/typescript/index.d.ts",