openvibers/openvibe.contracts Commits

0.253.0: A2A for OpenVibe.Actor (actor.a2a.task) (#261)

OP OpenVibers committed 14 days ago · a9fdebc894 · 55 files, +1771 −84

The new capability actor.a2a.task (owner actor, active, first-party, sensitive) lets a Network service
token hand Actor one agent-to-agent task: POST /a2a/v1/tasks with the A2A message shape (text parts, an
optional skill). The task runs under that person's allowance, budget and allow-list, exactly like a task
they started; an anonymous caller gets 401 and a token without the capability gets 403. The agent card is
/.well-known/agent.json.

Two additive v1 contracts: actor.a2a-task-request@1 and actor.a2a-task-result@1. The actor service manifest
names the new capability; every other contract is unchanged.

Changes

ddiff --git a/CHANGELOG.md b/CHANGELOG.md
iindex 5207d524..89f0fb3c 100644
---- a/CHANGELOG.md
++++ b/CHANGELOG.md
@@@ -1,5 +1,14 @@
# Changelog
++## 0.253.0 — 2026-10-30
++
++- **A2A for OpenVibe.Actor** (Actor v2 stage V2-11). New capability `actor.a2a.task` (owner `actor`, active,
++ first-party, sensitive): a Network service token with it may hand Actor one agent-to-agent task
++ (`POST /a2a/v1/tasks`, the A2A message shape: text parts, an optional skill). The task runs under the person's
++ allowance, budget and allow-list, exactly like a task they started; anonymous callers get 401 and a token
++ without the capability 403. The agent card is `/.well-known/agent.json`.
++- **Two additive v1 contracts** (new files, no existing schema changed): `actor.a2a-task-request@1` and
++ `actor.a2a-task-result@1`.
## 0.252.0 — 2026-10-30
- **Memory M2 capabilities and contracts** (OpenVibe.AI; plan `OpenVibe_Memory_Plan_2026-10-30.md`, spec
ddiff --git a/contracts/actor/a2a-task-request.v1.json b/contracts/actor/a2a-task-request.v1.json
nnew file mode 100644
iindex 00000000..a195418b
---- /dev/null
++++ b/contracts/actor/a2a-task-request.v1.json
@@@ -0,0 +1,60 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/actor/a2a-task-request.v1.json",
++ "title": "ActorA2ATaskRequest",
++ "description": "actor.a2a-task-request@1: POST /a2a/v1/tasks gives OpenVibe.Actor one A2A task (the Agent2Agent shape: a message with text parts, an optional skill and an optional id to continue). The caller is a Network service token with the capability actor.a2a.task acting for a person (X-OV-Subject); the task runs under that person's allowance and allow-list, exactly like a task they started. Answered 201 with the A2A task (actor.a2a-task-result@1).",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "message"
++ ],
++ "properties": {
++ "message": {
++ "type": "object",
++ "additionalProperties": true,
++ "required": [
++ "parts"
++ ],
++ "properties": {
++ "role": {
++ "type": "string",
++ "enum": [
++ "user"
++ ]
++ },
++ "parts": {
++ "type": "array",
++ "minItems": 1,
++ "maxItems": 20,
++ "items": {
++ "type": "object",
++ "additionalProperties": true,
++ "required": [
++ "type"
++ ],
++ "properties": {
++ "type": {
++ "type": "string",
++ "enum": [
++ "text"
++ ]
++ },
++ "text": {
++ "type": "string",
++ "maxLength": 8000
++ }
++ }
++ }
++ }
++ }
++ },
++ "skillId": {
++ "type": "string",
++ "maxLength": 64
++ },
++ "taskId": {
++ "type": "string",
++ "maxLength": 64
++ }
++ }
++}
ddiff --git a/contracts/actor/a2a-task-result.v1.json b/contracts/actor/a2a-task-result.v1.json
nnew file mode 100644
iindex 00000000..a3113257
---- /dev/null
++++ b/contracts/actor/a2a-task-result.v1.json
@@@ -0,0 +1,39 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/actor/a2a-task-result.v1.json",
++ "title": "ActorA2ATaskResult",
++ "description": "actor.a2a-task-result@1: the A2A task OpenVibe.Actor accepted or answered: its id, its state (submitted, working, completed, failed), the text answer when it has one and the id of the Actor task behind it. Never a credential.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "id",
++ "state"
++ ],
++ "properties": {
++ "id": {
++ "type": "string",
++ "maxLength": 64
++ },
++ "state": {
++ "type": "string",
++ "enum": [
++ "submitted",
++ "working",
++ "completed",
++ "failed"
++ ]
++ },
++ "answer": {
++ "type": "string",
++ "maxLength": 20000
++ },
++ "taskId": {
++ "type": "string",
++ "maxLength": 64
++ },
++ "error": {
++ "type": "string",
++ "maxLength": 500
++ }
++ }
++}
ddiff --git a/contracts/catalog.json b/contracts/catalog.json
iindex 26ec5459..635468d0 100644
---- a/contracts/catalog.json
++++ b/contracts/catalog.json
@@@ -6742,6 +6742,24 @@
"compatibility": "backward",
"status": "active"
},
++ {
++ "id": "actor.a2a-task-request",
++ "version": "1.0.0",
++ "owner": "actor",
++ "schema": "actor/a2a-task-request.v1.json",
++ "visibility": "first-party",
++ "compatibility": "backward",
++ "status": "active"
++ },
++ {
++ "id": "actor.a2a-task-result",
++ "version": "1.0.0",
++ "owner": "actor",
++ "schema": "actor/a2a-task-result.v1.json",
++ "visibility": "first-party",
++ "compatibility": "backward",
++ "status": "active"
++ },
{
"id": "actor.task-event",
"version": "1.0.0",
ddiff --git a/fixtures/actor.a2a-task-request/invalid/bad-part.json b/fixtures/actor.a2a-task-request/invalid/bad-part.json
nnew file mode 100644
iindex 00000000..7265a61b
---- /dev/null
++++ b/fixtures/actor.a2a-task-request/invalid/bad-part.json
@@@ -0,0 +1,11 @@
++{
++ "message": {
++ "role": "user",
++ "parts": [
++ {
++ "type": "image",
++ "text": "x"
++ }
++ ]
++ }
++}
ddiff --git a/fixtures/actor.a2a-task-request/invalid/no-message.json b/fixtures/actor.a2a-task-request/invalid/no-message.json
nnew file mode 100644
iindex 00000000..ea468f30
---- /dev/null
++++ b/fixtures/actor.a2a-task-request/invalid/no-message.json
@@@ -0,0 +1,3 @@
++{
++ "skillId": "answer"
++}
ddiff --git a/fixtures/actor.a2a-task-request/valid/one.json b/fixtures/actor.a2a-task-request/valid/one.json
nnew file mode 100644
iindex 00000000..bb5ab5b3
---- /dev/null
++++ b/fixtures/actor.a2a-task-request/valid/one.json
@@@ -0,0 +1,12 @@
++{
++ "message": {
++ "role": "user",
++ "parts": [
++ {
++ "type": "text",
++ "text": "What is the weather in Paris?"
++ }
++ ]
++ },
++ "skillId": "answer"
++}
ddiff --git a/fixtures/actor.a2a-task-result/invalid/bad-state.json b/fixtures/actor.a2a-task-result/invalid/bad-state.json
nnew file mode 100644
iindex 00000000..e6c5d29b
---- /dev/null
++++ b/fixtures/actor.a2a-task-result/invalid/bad-state.json
@@@ -0,0 +1,4 @@
++{
++ "id": "a2a_1",
++ "state": "maybe"
++}
ddiff --git a/fixtures/actor.a2a-task-result/valid/one.json b/fixtures/actor.a2a-task-result/valid/one.json
nnew file mode 100644
iindex 00000000..bee03b34
---- /dev/null
++++ b/fixtures/actor.a2a-task-result/valid/one.json
@@@ -0,0 +1,6 @@
++{
++ "id": "a2a_1",
++ "state": "completed",
++ "answer": "Sunny, 21 °C.",
++ "taskId": "tsk_1"
++}
ddiff --git a/generated/json-schema/bundle.json b/generated/json-schema/bundle.json
iindex 923dda9a..5e83a124 100644
---- a/generated/json-schema/bundle.json
++++ b/generated/json-schema/bundle.json
@@@ -78913,6 +78913,115 @@
}
}
},
++ "actor.a2a-task-request": {
++ "version": "1.0.0",
++ "owner": "actor",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/actor/a2a-task-request.v1.json",
++ "title": "ActorA2ATaskRequest",
++ "description": "actor.a2a-task-request@1: POST /a2a/v1/tasks gives OpenVibe.Actor one A2A task (the Agent2Agent shape: a message with text parts, an optional skill and an optional id to continue). The caller is a Network service token with the capability actor.a2a.task acting for a person (X-OV-Subject); the task runs under that person's allowance and allow-list, exactly like a task they started. Answered 201 with the A2A task (actor.a2a-task-result@1).",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "message"
++ ],
++ "properties": {
++ "message": {
++ "type": "object",
++ "additionalProperties": true,
++ "required": [
++ "parts"
++ ],
++ "properties": {
++ "role": {
++ "type": "string",
++ "enum": [
++ "user"
++ ]
++ },
++ "parts": {
++ "type": "array",
++ "minItems": 1,
++ "maxItems": 20,
++ "items": {
++ "type": "object",
++ "additionalProperties": true,
++ "required": [
++ "type"
++ ],
++ "properties": {
++ "type": {
++ "type": "string",
++ "enum": [
++ "text"
++ ]
++ },
++ "text": {
++ "type": "string",
++ "maxLength": 8000
++ }
++ }
++ }
++ }
++ }
++ },
++ "skillId": {
++ "type": "string",
++ "maxLength": 64
++ },
++ "taskId": {
++ "type": "string",
++ "maxLength": 64
++ }
++ }
++ }
++ },
++ "actor.a2a-task-result": {
++ "version": "1.0.0",
++ "owner": "actor",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/actor/a2a-task-result.v1.json",
++ "title": "ActorA2ATaskResult",
++ "description": "actor.a2a-task-result@1: the A2A task OpenVibe.Actor accepted or answered: its id, its state (submitted, working, completed, failed), the text answer when it has one and the id of the Actor task behind it. Never a credential.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "id",
++ "state"
++ ],
++ "properties": {
++ "id": {
++ "type": "string",
++ "maxLength": 64
++ },
++ "state": {
++ "type": "string",
++ "enum": [
++ "submitted",
++ "working",
++ "completed",
++ "failed"
++ ]
++ },
++ "answer": {
++ "type": "string",
++ "maxLength": 20000
++ },
++ "taskId": {
++ "type": "string",
++ "maxLength": 64
++ },
++ "error": {
++ "type": "string",
++ "maxLength": 500
++ }
++ }
++ }
++ },
"actor.task-event@1": {
"version": "1.0.0",
"owner": "actor",
ddiff --git a/generated/openapi/actor.json b/generated/openapi/actor.json
iindex 8c70a361..44aa17b6 100644
---- a/generated/openapi/actor.json
++++ b/generated/openapi/actor.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Actor API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
@@@ -16,6 +16,183 @@
}
],
"paths": {
++ "/a2a/v1/tasks": {
++ "post": {
++ "operationId": "post_a2a_v1_tasks",
++ "summary": "Give OpenVibe.Actor one A2A (agent-to-agent) task: POST /a2a/v1/tasks with a message (text parts) and an optional skill.",
++ "description": "**actor.a2a.task** (first-party): Give OpenVibe.Actor one A2A (agent-to-agent) task: POST /a2a/v1/tasks with a message (text parts) and an optional skill. The caller is a Network service token with this capability acting for a person (X-OV-Subject); the task runs under that person's allowance, budget and allow-list, exactly like a task they started, and answers with the A2A task (actor.a2a-task-result@1). The agent card is /.well-known/agent.json. Anonymous callers are refused (401) and a token without this capability is refused (403).",
++ "tags": [
++ "actor.a2a"
++ ],
++ "x-openvibe-capabilities": [
++ "actor.a2a.task"
++ ],
++ "x-openvibe-visibility": [
++ "first-party"
++ ],
++ "x-openvibe-quota-class": "actor-task",
++ "security": [
++ {
++ "openvibeToken": [
++ "actor.a2a.task"
++ ]
++ }
++ ],
++ "requestBody": {
++ "required": false,
++ "content": {
++ "application/json": {
++ "schema": {
++ "$ref": "#/components/schemas/actor.a2a-task-request.v1"
++ }
++ }
++ }
++ },
++ "responses": {
++ "2XX": {
++ "description": "Success",
++ "content": {
++ "application/json": {
++ "schema": {
++ "$ref": "#/components/schemas/actor.a2a-task-result.v1"
++ }
++ }
++ }
++ },
++ "default": {
++ "description": "An error (RFC 9457 problem details)",
++ "content": {
++ "application/problem+json": {
++ "schema": {
++ "$ref": "#/components/schemas/errors.problem.v1"
++ }
++ }
++ }
++ }
++ }
++ }
++ },
++ "/a2a/v1/tasks/{id}": {
++ "get": {
++ "operationId": "get_a2a_v1_tasks_id",
++ "summary": "Give OpenVibe.Actor one A2A (agent-to-agent) task: POST /a2a/v1/tasks with a message (text parts) and an optional skill.",
++ "description": "**actor.a2a.task** (first-party): Give OpenVibe.Actor one A2A (agent-to-agent) task: POST /a2a/v1/tasks with a message (text parts) and an optional skill. The caller is a Network service token with this capability acting for a person (X-OV-Subject); the task runs under that person's allowance, budget and allow-list, exactly like a task they started, and answers with the A2A task (actor.a2a-task-result@1). The agent card is /.well-known/agent.json. Anonymous callers are refused (401) and a token without this capability is refused (403).",
++ "tags": [
++ "actor.a2a"
++ ],
++ "x-openvibe-capabilities": [
++ "actor.a2a.task"
++ ],
++ "x-openvibe-visibility": [
++ "first-party"
++ ],
++ "x-openvibe-quota-class": "actor-task",
++ "security": [
++ {
++ "openvibeToken": [
++ "actor.a2a.task"
++ ]
++ }
++ ],
++ "x-openvibe-input": {
++ "$ref": "#/components/schemas/actor.a2a-task-request.v1"
++ },
++ "parameters": [
++ {
++ "name": "id",
++ "in": "path",
++ "required": true,
++ "schema": {
++ "type": "string"
++ }
++ },
++ {
++ "name": "message",
++ "in": "query",
++ "required": true,
++ "schema": {
++ "type": "object",
++ "additionalProperties": true,
++ "required": [
++ "parts"
++ ],
++ "properties": {
++ "role": {
++ "type": "string",
++ "enum": [
++ "user"
++ ]
++ },
++ "parts": {
++ "type": "array",
++ "minItems": 1,
++ "maxItems": 20,
++ "items": {
++ "type": "object",
++ "additionalProperties": true,
++ "required": [
++ "type"
++ ],
++ "properties": {
++ "type": {
++ "type": "string",
++ "enum": [
++ "text"
++ ]
++ },
++ "text": {
++ "type": "string",
++ "maxLength": 8000
++ }
++ }
++ }
++ }
++ }
++ }
++ },
++ {
++ "name": "skillId",
++ "in": "query",
++ "required": false,
++ "schema": {
++ "type": "string",
++ "maxLength": 64
++ }
++ },
++ {
++ "name": "taskId",
++ "in": "query",
++ "required": false,
++ "schema": {
++ "type": "string",
++ "maxLength": 64
++ }
++ }
++ ],
++ "responses": {
++ "2XX": {
++ "description": "Success",
++ "content": {
++ "application/json": {
++ "schema": {
++ "$ref": "#/components/schemas/actor.a2a-task-result.v1"
++ }
++ }
++ }
++ },
++ "default": {
++ "description": "An error (RFC 9457 problem details)",
++ "content": {
++ "application/problem+json": {
++ "schema": {
++ "$ref": "#/components/schemas/errors.problem.v1"
++ }
++ }
++ }
++ }
++ }
++ }
++ },
"/api/v1/actions": {
"get": {
"operationId": "get_api_v1_actions",
@@@ -1590,6 +1767,101 @@
},
"components": {
"schemas": {
++ "actor.a2a-task-request.v1": {
++ "title": "ActorA2ATaskRequest",
++ "description": "actor.a2a-task-request@1: POST /a2a/v1/tasks gives OpenVibe.Actor one A2A task (the Agent2Agent shape: a message with text parts, an optional skill and an optional id to continue). The caller is a Network service token with the capability actor.a2a.task acting for a person (X-OV-Subject); the task runs under that person's allowance and allow-list, exactly like a task they started. Answered 201 with the A2A task (actor.a2a-task-result@1).",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "message"
++ ],
++ "properties": {
++ "message": {
++ "type": "object",
++ "additionalProperties": true,
++ "required": [
++ "parts"
++ ],
++ "properties": {
++ "role": {
++ "type": "string",
++ "enum": [
++ "user"
++ ]
++ },
++ "parts": {
++ "type": "array",
++ "minItems": 1,
++ "maxItems": 20,
++ "items": {
++ "type": "object",
++ "additionalProperties": true,
++ "required": [
++ "type"
++ ],
++ "properties": {
++ "type": {
++ "type": "string",
++ "enum": [
++ "text"
++ ]
++ },
++ "text": {
++ "type": "string",
++ "maxLength": 8000
++ }
++ }
++ }
++ }
++ }
++ },
++ "skillId": {
++ "type": "string",
++ "maxLength": 64
++ },
++ "taskId": {
++ "type": "string",
++ "maxLength": 64
++ }
++ }
++ },
++ "actor.a2a-task-result.v1": {
++ "title": "ActorA2ATaskResult",
++ "description": "actor.a2a-task-result@1: the A2A task OpenVibe.Actor accepted or answered: its id, its state (submitted, working, completed, failed), the text answer when it has one and the id of the Actor task behind it. Never a credential.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "id",
++ "state"
++ ],
++ "properties": {
++ "id": {
++ "type": "string",
++ "maxLength": 64
++ },
++ "state": {
++ "type": "string",
++ "enum": [
++ "submitted",
++ "working",
++ "completed",
++ "failed"
++ ]
++ },
++ "answer": {
++ "type": "string",
++ "maxLength": 20000
++ },
++ "taskId": {
++ "type": "string",
++ "maxLength": 64
++ },
++ "error": {
++ "type": "string",
++ "maxLength": 500
++ }
++ }
++ },
"actor.agent-list-result.v2": {
"title": "ActorAgentListResult",
"description": "actor.agent-list-result@2: GET /api/v1/agents (capability actor.agent.read). Every field of agent-list-result@1 keeps its meaning and shape (AGENTS: the systems Actor can run a task on, with trust, capabilities, rate card and availability). v2 adds what Actor's one agent loop resolves its model tiers to: TIERS is the model behind each tier (fast: classifying and small steps; smart: the loop; best: hard tasks and best mode; check: the verifier of another family; vision: reading images and screens), and MODELS lists the models the server's keys reach. A tier always names its provider and model, so a caller never has to guess which backend a task will run on.",
ddiff --git a/generated/openapi/ai.json b/generated/openapi/ai.json
iindex 8ab9a859..6d3a1acc 100644
---- a/generated/openapi/ai.json
++++ b/generated/openapi/ai.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.AI API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/bench.json b/generated/openapi/bench.json
iindex 052999e0..764d20fa 100644
---- a/generated/openapi/bench.json
++++ b/generated/openapi/bench.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Bench API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Bench as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Bench as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/billing.json b/generated/openapi/billing.json
iindex a3ee41b5..7fc1e56e 100644
---- a/generated/openapi/billing.json
++++ b/generated/openapi/billing.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Billing API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/blog.json b/generated/openapi/blog.json
iindex deea04d5..4a40bad6 100644
---- a/generated/openapi/blog.json
++++ b/generated/openapi/blog.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Blog API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/bot.json b/generated/openapi/bot.json
iindex 74c68bb7..1bc0b29e 100644
---- a/generated/openapi/bot.json
++++ b/generated/openapi/bot.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Bot API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/chat.json b/generated/openapi/chat.json
iindex f1dca534..c52a0b5c 100644
---- a/generated/openapi/chat.json
++++ b/generated/openapi/chat.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Chat API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/codes.json b/generated/openapi/codes.json
iindex c1c5a7db..8bfa9143 100644
---- a/generated/openapi/codes.json
++++ b/generated/openapi/codes.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Codes API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/community.json b/generated/openapi/community.json
iindex eeccf2cc..82cd99b1 100644
---- a/generated/openapi/community.json
++++ b/generated/openapi/community.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Community API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/coupons.json b/generated/openapi/coupons.json
iindex 424d4610..e8dc4752 100644
---- a/generated/openapi/coupons.json
++++ b/generated/openapi/coupons.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Coupons API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/deals.json b/generated/openapi/deals.json
iindex e7c1683f..718c0c34 100644
---- a/generated/openapi/deals.json
++++ b/generated/openapi/deals.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Deals API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/domains.json b/generated/openapi/domains.json
iindex 0e716924..2a031870 100644
---- a/generated/openapi/domains.json
++++ b/generated/openapi/domains.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Domains API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Domains as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Domains as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/events.json b/generated/openapi/events.json
iindex f948951f..01242c51 100644
---- a/generated/openapi/events.json
++++ b/generated/openapi/events.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Events API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/food.json b/generated/openapi/food.json
iindex a8e9e361..24b3359d 100644
---- a/generated/openapi/food.json
++++ b/generated/openapi/food.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Food API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/games.json b/generated/openapi/games.json
iindex e20ee264..77cc6ed9 100644
---- a/generated/openapi/games.json
++++ b/generated/openapi/games.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Games API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/host.json b/generated/openapi/host.json
iindex d7c065e1..fc17cee6 100644
---- a/generated/openapi/host.json
++++ b/generated/openapi/host.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Host API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/index.json b/generated/openapi/index.json
iindex f077fe3e..a569a810 100644
---- a/generated/openapi/index.json
++++ b/generated/openapi/index.json
@@@ -5,8 +5,8 @@
"service": "actor",
"name": "OpenVibe.Actor",
"origin": "https://openvibe.actor",
-- "operations": 27,
-- "capabilities": 10
++ "operations": 29,
++ "capabilities": 11
},
{
"service": "ai",
ddiff --git a/generated/openapi/inventory.json b/generated/openapi/inventory.json
iindex 4d5f5c07..9b8444fd 100644
---- a/generated/openapi/inventory.json
++++ b/generated/openapi/inventory.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Inventory API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/live.json b/generated/openapi/live.json
iindex ca27c1ef..f0c790e8 100644
---- a/generated/openapi/live.json
++++ b/generated/openapi/live.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Live API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/media-hub.json b/generated/openapi/media-hub.json
iindex 7f67aab1..92995ab1 100644
---- a/generated/openapi/media-hub.json
++++ b/generated/openapi/media-hub.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.MediaHub API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/media.json b/generated/openapi/media.json
iindex f39b581e..533b87d7 100644
---- a/generated/openapi/media.json
++++ b/generated/openapi/media.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Media API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/network.json b/generated/openapi/network.json
iindex b5e90e78..d8006213 100644
---- a/generated/openapi/network.json
++++ b/generated/openapi/network.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Network API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/news.json b/generated/openapi/news.json
iindex b2286cd4..16983b9f 100644
---- a/generated/openapi/news.json
++++ b/generated/openapi/news.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.News API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/openre.json b/generated/openapi/openre.json
iindex 18ddfb98..a9dd36a6 100644
---- a/generated/openapi/openre.json
++++ b/generated/openapi/openre.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenRestream API",
-- "version": "0.252.0",
-- "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/play.json b/generated/openapi/play.json
iindex 84b212a3..8f16b796 100644
---- a/generated/openapi/play.json
++++ b/generated/openapi/play.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Play API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/quest.json b/generated/openapi/quest.json
iindex c384a381..be4c44c7 100644
---- a/generated/openapi/quest.json
++++ b/generated/openapi/quest.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Quest API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/reviews.json b/generated/openapi/reviews.json
iindex 6ff80d38..c1e46ffc 100644
---- a/generated/openapi/reviews.json
++++ b/generated/openapi/reviews.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Reviews API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/run.json b/generated/openapi/run.json
iindex 52f3b9ea..cd6f647e 100644
---- a/generated/openapi/run.json
++++ b/generated/openapi/run.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Run API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/search.json b/generated/openapi/search.json
iindex 6b887b6f..8b302569 100644
---- a/generated/openapi/search.json
++++ b/generated/openapi/search.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Search API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/services.json b/generated/openapi/services.json
iindex 86298bad..0cfdafa5 100644
---- a/generated/openapi/services.json
++++ b/generated/openapi/services.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Services API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/sources.json b/generated/openapi/sources.json
iindex 44a024b3..511891ab 100644
---- a/generated/openapi/sources.json
++++ b/generated/openapi/sources.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Sources API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/space.json b/generated/openapi/space.json
iindex 733e1faf..b6b98395 100644
---- a/generated/openapi/space.json
++++ b/generated/openapi/space.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Space API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/tips.json b/generated/openapi/tips.json
iindex 89c2487c..53d25d15 100644
---- a/generated/openapi/tips.json
++++ b/generated/openapi/tips.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Tips API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/tools.json b/generated/openapi/tools.json
iindex 654e7174..a017ab2f 100644
---- a/generated/openapi/tools.json
++++ b/generated/openapi/tools.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Tools API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/trade.json b/generated/openapi/trade.json
iindex 3eea941b..8cdf5a9c 100644
---- a/generated/openapi/trade.json
++++ b/generated/openapi/trade.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Trade API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/vip.json b/generated/openapi/vip.json
iindex 484fa962..b18c5335 100644
---- a/generated/openapi/vip.json
++++ b/generated/openapi/vip.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.VIP API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/vision.json b/generated/openapi/vision.json
iindex fcd6cbef..7d67f474 100644
---- a/generated/openapi/vision.json
++++ b/generated/openapi/vision.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Vision API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Vision as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Vision as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/watch.json b/generated/openapi/watch.json
iindex 58fc44cf..890db748 100644
---- a/generated/openapi/watch.json
++++ b/generated/openapi/watch.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Watch API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/wiki.json b/generated/openapi/wiki.json
iindex 113ead9f..abb1352e 100644
---- a/generated/openapi/wiki.json
++++ b/generated/openapi/wiki.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Wiki API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/work.json b/generated/openapi/work.json
iindex b4db7827..9ae67c16 100644
---- a/generated/openapi/work.json
++++ b/generated/openapi/work.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Work API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/zone.json b/generated/openapi/zone.json
iindex 61a53ee7..edf40a28 100644
---- a/generated/openapi/zone.json
++++ b/generated/openapi/zone.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Zone API",
-- "version": "0.252.0",
-- "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.252.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.253.0",
++ "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.253.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/typescript/index.d.ts b/generated/typescript/index.d.ts
iindex 24e9f29f..c93a1c5d 100644
---- a/generated/typescript/index.d.ts
++++ b/generated/typescript/index.d.ts
@@@ -256092,6 +256092,1126 @@ export interface ActorAgentRunRequest {
input?: string;
}
++/** [email protected] (owner: actor) */
++/**
++ * actor.a2a-task-request@1: POST /a2a/v1/tasks gives OpenVibe.Actor one A2A task (the Agent2Agent shape: a message with text parts, an optional skill and an optional id to continue). The caller is a Network service token with the capability actor.a2a.task acting for a person (X-OV-Subject); the task runs under that person's allowance and allow-list, exactly like a task they started. Answered 201 with the A2A task (actor.a2a-task-result@1).
++ */
++export interface ActorA2ATaskRequest {
++ message: {
++ role?: "user";
++ /**
++ * @minItems 1
++ * @maxItems 20
++ */
++ parts:
++ | [
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ }
++ ]
++ | [
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ }
++ ]
++ | [
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ }
++ ]
++ | [
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ }
++ ]
++ | [
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ }
++ ]
++ | [
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ }
++ ]
++ | [
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ }
++ ]
++ | [
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ }
++ ]
++ | [
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ }
++ ]
++ | [
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ }
++ ]
++ | [
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ }
++ ]
++ | [
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ }
++ ]
++ | [
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ }
++ ]
++ | [
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ }
++ ]
++ | [
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ }
++ ]
++ | [
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ }
++ ]
++ | [
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ }
++ ]
++ | [
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ }
++ ]
++ | [
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ }
++ ]
++ | [
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ },
++ {
++ type: "text";
++ text?: string;
++ [k: string]: unknown | undefined;
++ }
++ ];
++ [k: string]: unknown | undefined;
++ };
++ skillId?: string;
++ taskId?: string;
++}
++
++/** [email protected] (owner: actor) */
++/**
++ * actor.a2a-task-result@1: the A2A task OpenVibe.Actor accepted or answered: its id, its state (submitted, working, completed, failed), the text answer when it has one and the id of the Actor task behind it. Never a credential.
++ */
++export interface ActorA2ATaskResult {
++ id: string;
++ state: "submitted" | "working" | "completed" | "failed";
++ answer?: string;
++ taskId?: string;
++ error?: string;
++}
++
/** [email protected] (owner: actor) */
/**
* actor.task-event@1: one event on a task's live stream (GET /api/v1/tasks/:id/events, text/event-stream; the SSE id is SEQ, so a reader resumes with Last-Event-ID). KIND is run.job-stream-event@1's three, as platform.task@1 progress names them: state (the task moved to STATE), output (one step of the agent's work: AGENT says what it is doing in TEXT, or calls TOOL with a short INPUT summary, or a tool answered), end (the task ended in STATE; nothing follows). Events are best-effort; the task record (GET /api/v1/tasks/:id) is the source of truth.
ddiff --git a/manifests/capabilities/actor.a2a.task.json b/manifests/capabilities/actor.a2a.task.json
nnew file mode 100644
iindex 00000000..789b4102
---- /dev/null
++++ b/manifests/capabilities/actor.a2a.task.json
@@@ -0,0 +1,23 @@
++{
++ "id": "actor.a2a.task",
++ "version": "1.0",
++ "owner": "actor",
++ "status": "active",
++ "visibility": "first-party",
++ "sensitive": true,
++ "description": "Give OpenVibe.Actor one A2A (agent-to-agent) task: POST /a2a/v1/tasks with a message (text parts) and an optional skill. The caller is a Network service token with this capability acting for a person (X-OV-Subject); the task runs under that person's allowance, budget and allow-list, exactly like a task they started, and answers with the A2A task (actor.a2a-task-result@1). The agent card is /.well-known/agent.json. Anonymous callers are refused (401) and a token without this capability is refused (403).",
++ "inputSchema": "actor.a2a-task-request@1",
++ "outputSchema": "actor.a2a-task-result@1",
++ "permissions": [
++ "actor:tasks:create"
++ ],
++ "resourceConstraints": [
++ "owner"
++ ],
++ "quotaClass": "actor-task",
++ "events": [],
++ "implementedBy": [
++ "POST /a2a/v1/tasks",
++ "GET /a2a/v1/tasks/:id"
++ ]
++}
ddiff --git a/manifests/services/actor.json b/manifests/services/actor.json
iindex 0183bafc..f99c97ad 100644
---- a/manifests/services/actor.json
++++ b/manifests/services/actor.json
@@@ -25,7 +25,8 @@
"actor.agent.manage",
"actor.agent.run",
"actor.actions.read",
-- "actor.approval.decide"
++ "actor.approval.decide",
++ "actor.a2a.task"
],
"eventsProduced": [],
"eventsConsumed": [
ddiff --git a/package.json b/package.json
iindex a4d458fa..1f9877fc 100644
---- a/package.json
++++ b/package.json
@@@ -1,6 +1,6 @@
{
"name": "openvibe-contracts",
-- "version": "0.252.0",
++ "version": "0.253.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",