openvibers/openvibe.contracts Commits
0.232.0: codes.task.queued|running|succeeded|failed|cancelled; the Codes manifest names run.job.* and the account events it consumes (#240)
Changes
@@@ -4,6 +4,16 @@ All notable changes to `openvibe-contracts`. Releases are git tags (`vX.Y.Z`) thfrom `https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/<tag>`. Before v0.30.0,the notes were in the tag and commit messages (`git tag -n1`).++## 0.232.0 — 2026-10-28++++- **codes.task.queued|running|succeeded|failed|cancelled** (new payload contracts, first-party, owner `codes`; plan++ 2026-10-28 §6, decisions 2 and 3). OpenVibe.Codes announces each state change of a coding task:++ `{ task_id, state, agent, repo, cost_usd, files_changed, started_at, finished_at, error }`. The envelope's subject++ is the owner; the prompt is never in a payload.++- The Codes manifest now names what it produces (the five topics) and consumes: `run.job.*`, which finalize a task++ without polling, and the two account events. Its notes and startup recovery cover the session lines and the++ outbox.++## 0.231.0 — 2026-10-28- **OpenVibe.Surf** (`surf`, live at openvibe.surf, port 5110; plan 2026-10-28 §5.6, the Surf room). One room, three@@@ -7649,6 +7649,51 @@"visibility": "first-party","compatibility": "backward","status": "active"++ },++ {++ "id": "codes.task.queued",++ "version": "1.0.0",++ "owner": "codes",++ "schema": "events/payloads/codes.task.queued.v1.json",++ "visibility": "first-party",++ "compatibility": "backward",++ "status": "active"++ },++ {++ "id": "codes.task.running",++ "version": "1.0.0",++ "owner": "codes",++ "schema": "events/payloads/codes.task.running.v1.json",++ "visibility": "first-party",++ "compatibility": "backward",++ "status": "active"++ },++ {++ "id": "codes.task.succeeded",++ "version": "1.0.0",++ "owner": "codes",++ "schema": "events/payloads/codes.task.succeeded.v1.json",++ "visibility": "first-party",++ "compatibility": "backward",++ "status": "active"++ },++ {++ "id": "codes.task.failed",++ "version": "1.0.0",++ "owner": "codes",++ "schema": "events/payloads/codes.task.failed.v1.json",++ "visibility": "first-party",++ "compatibility": "backward",++ "status": "active"++ },++ {++ "id": "codes.task.cancelled",++ "version": "1.0.0",++ "owner": "codes",++ "schema": "events/payloads/codes.task.cancelled.v1.json",++ "visibility": "first-party",++ "compatibility": "backward",++ "status": "active"}]}nnew file mode 100644@@@ -0,0 +1,26 @@++{++ "$schema": "https://json-schema.org/draft/2020-12/schema",++ "$id": "https://openvibe.network/contracts/events/payloads/codes.task.cancelled.v1.json",++ "title": "CodesTaskCancelledPayload",++ "description": "codes.task.cancelled v1 (OpenVibe.Codes): the task ended cancelled, by its owner or by a service holding codes.task.cancel. Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.",++ "type": "object",++ "additionalProperties": false,++ "required": ["task_id", "state", "agent", "repo", "cost_usd", "files_changed", "started_at", "finished_at", "error"],++ "properties": {++ "task_id": { "type": "string", "pattern": "^tsk_[0-9A-HJKMNP-TV-Z]{26}$" },++ "state": { "const": "cancelled" },++ "agent": { "type": ["string", "null"], "maxLength": 80 },++ "repo": {++ "anyOf": [++ { "type": "string", "pattern": "^[^/\\s]+/[^/\\s]+$", "maxLength": 300 },++ { "type": "null" }++ ],++ "description": "owner/name from the task's repository URL, or null when it is not a repository path."++ },++ "cost_usd": { "type": ["number", "null"], "minimum": 0 },++ "files_changed": { "type": ["integer", "null"], "minimum": 0 },++ "started_at": { "type": ["string", "null"], "format": "date-time" },++ "finished_at": { "type": ["string", "null"], "format": "date-time" },++ "error": { "type": ["string", "null"], "maxLength": 500 }++ }++}nnew file mode 100644@@@ -0,0 +1,26 @@++{++ "$schema": "https://json-schema.org/draft/2020-12/schema",++ "$id": "https://openvibe.network/contracts/events/payloads/codes.task.failed.v1.json",++ "title": "CodesTaskFailedPayload",++ "description": "codes.task.failed v1 (OpenVibe.Codes): the task ended failed, or expired because no machine took it in time (Run's expired state is announced on the failed topic). Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.",++ "type": "object",++ "additionalProperties": false,++ "required": ["task_id", "state", "agent", "repo", "cost_usd", "files_changed", "started_at", "finished_at", "error"],++ "properties": {++ "task_id": { "type": "string", "pattern": "^tsk_[0-9A-HJKMNP-TV-Z]{26}$" },++ "state": { "enum": ["failed", "expired"] },++ "agent": { "type": ["string", "null"], "maxLength": 80 },++ "repo": {++ "anyOf": [++ { "type": "string", "pattern": "^[^/\\s]+/[^/\\s]+$", "maxLength": 300 },++ { "type": "null" }++ ],++ "description": "owner/name from the task's repository URL, or null when it is not a repository path."++ },++ "cost_usd": { "type": ["number", "null"], "minimum": 0 },++ "files_changed": { "type": ["integer", "null"], "minimum": 0 },++ "started_at": { "type": ["string", "null"], "format": "date-time" },++ "finished_at": { "type": ["string", "null"], "format": "date-time" },++ "error": { "type": ["string", "null"], "maxLength": 500 }++ }++}nnew file mode 100644@@@ -0,0 +1,26 @@++{++ "$schema": "https://json-schema.org/draft/2020-12/schema",++ "$id": "https://openvibe.network/contracts/events/payloads/codes.task.queued.v1.json",++ "title": "CodesTaskQueuedPayload",++ "description": "codes.task.queued v1 (OpenVibe.Codes): a coding task was stored and handed to OpenVibe.Run; the person's machine has not started it. Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.",++ "type": "object",++ "additionalProperties": false,++ "required": ["task_id", "state", "agent", "repo", "cost_usd", "files_changed", "started_at", "finished_at", "error"],++ "properties": {++ "task_id": { "type": "string", "pattern": "^tsk_[0-9A-HJKMNP-TV-Z]{26}$" },++ "state": { "const": "queued" },++ "agent": { "type": ["string", "null"], "maxLength": 80 },++ "repo": {++ "anyOf": [++ { "type": "string", "pattern": "^[^/\\s]+/[^/\\s]+$", "maxLength": 300 },++ { "type": "null" }++ ],++ "description": "owner/name from the task's repository URL, or null when it is not a repository path."++ },++ "cost_usd": { "type": ["number", "null"], "minimum": 0 },++ "files_changed": { "type": ["integer", "null"], "minimum": 0 },++ "started_at": { "type": ["string", "null"], "format": "date-time" },++ "finished_at": { "type": ["string", "null"], "format": "date-time" },++ "error": { "type": ["string", "null"], "maxLength": 500 }++ }++}nnew file mode 100644@@@ -0,0 +1,26 @@++{++ "$schema": "https://json-schema.org/draft/2020-12/schema",++ "$id": "https://openvibe.network/contracts/events/payloads/codes.task.running.v1.json",++ "title": "CodesTaskRunningPayload",++ "description": "codes.task.running v1 (OpenVibe.Codes): Run placed or started the task on the person's machine (both task states placed and running announce as running). Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.",++ "type": "object",++ "additionalProperties": false,++ "required": ["task_id", "state", "agent", "repo", "cost_usd", "files_changed", "started_at", "finished_at", "error"],++ "properties": {++ "task_id": { "type": "string", "pattern": "^tsk_[0-9A-HJKMNP-TV-Z]{26}$" },++ "state": { "const": "running" },++ "agent": { "type": ["string", "null"], "maxLength": 80 },++ "repo": {++ "anyOf": [++ { "type": "string", "pattern": "^[^/\\s]+/[^/\\s]+$", "maxLength": 300 },++ { "type": "null" }++ ],++ "description": "owner/name from the task's repository URL, or null when it is not a repository path."++ },++ "cost_usd": { "type": ["number", "null"], "minimum": 0 },++ "files_changed": { "type": ["integer", "null"], "minimum": 0 },++ "started_at": { "type": ["string", "null"], "format": "date-time" },++ "finished_at": { "type": ["string", "null"], "format": "date-time" },++ "error": { "type": ["string", "null"], "maxLength": 500 }++ }++}nnew file mode 100644@@@ -0,0 +1,26 @@++{++ "$schema": "https://json-schema.org/draft/2020-12/schema",++ "$id": "https://openvibe.network/contracts/events/payloads/codes.task.succeeded.v1.json",++ "title": "CodesTaskSucceededPayload",++ "description": "codes.task.succeeded v1 (OpenVibe.Codes): the task ended and its result is stored on the task page. cost_usd and files_changed are the machine's result (null when it returned neither). Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.",++ "type": "object",++ "additionalProperties": false,++ "required": ["task_id", "state", "agent", "repo", "cost_usd", "files_changed", "started_at", "finished_at", "error"],++ "properties": {++ "task_id": { "type": "string", "pattern": "^tsk_[0-9A-HJKMNP-TV-Z]{26}$" },++ "state": { "const": "succeeded" },++ "agent": { "type": ["string", "null"], "maxLength": 80 },++ "repo": {++ "anyOf": [++ { "type": "string", "pattern": "^[^/\\s]+/[^/\\s]+$", "maxLength": 300 },++ { "type": "null" }++ ],++ "description": "owner/name from the task's repository URL, or null when it is not a repository path."++ },++ "cost_usd": { "type": ["number", "null"], "minimum": 0 },++ "files_changed": { "type": ["integer", "null"], "minimum": 0 },++ "started_at": { "type": ["string", "null"], "format": "date-time" },++ "finished_at": { "type": ["string", "null"], "format": "date-time" },++ "error": { "type": ["string", "null"], "maxLength": 500 }++ }++}nnew file mode 100644@@@ -0,0 +1,12 @@++{++ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",++ "agent": "claude",++ "repo": "OpenVibers/OpenVibe.Codes",++ "cost_usd": null,++ "files_changed": null,++ "started_at": "2026-10-28T16:00:00.000Z",++ "finished_at": "2026-10-28T16:04:12.000Z",++ "error": null,++ "state": "cancelled",++ "prompt": "fix the login bug"++}nnew file mode 100644@@@ -0,0 +1,11 @@++{++ "task_id": "job_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",++ "agent": "claude",++ "repo": "OpenVibers/OpenVibe.Codes",++ "cost_usd": null,++ "files_changed": null,++ "started_at": "2026-10-28T16:00:00.000Z",++ "finished_at": "2026-10-28T16:04:12.000Z",++ "error": null,++ "state": "cancelled"++}nnew file mode 100644@@@ -0,0 +1,11 @@++{++ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",++ "agent": null,++ "repo": null,++ "cost_usd": null,++ "files_changed": null,++ "started_at": "2026-10-28T16:00:00.000Z",++ "finished_at": "2026-10-28T16:04:12.000Z",++ "error": null,++ "state": "cancelled"++}nnew file mode 100644@@@ -0,0 +1,11 @@++{++ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",++ "agent": "claude",++ "repo": "OpenVibers/OpenVibe.Codes",++ "cost_usd": null,++ "files_changed": null,++ "started_at": "2026-10-28T16:00:00.000Z",++ "finished_at": "2026-10-28T16:04:12.000Z",++ "error": null,++ "state": "cancelled"++}nnew file mode 100644@@@ -0,0 +1,12 @@++{++ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",++ "agent": "claude",++ "repo": "OpenVibers/OpenVibe.Codes",++ "cost_usd": null,++ "files_changed": null,++ "started_at": "2026-10-28T16:00:00.000Z",++ "finished_at": "2026-10-28T16:04:12.000Z",++ "error": "the machine stopped answering",++ "state": "failed",++ "prompt": "fix the login bug"++}nnew file mode 100644@@@ -0,0 +1,11 @@++{++ "task_id": "job_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",++ "agent": "claude",++ "repo": "OpenVibers/OpenVibe.Codes",++ "cost_usd": null,++ "files_changed": null,++ "started_at": "2026-10-28T16:00:00.000Z",++ "finished_at": "2026-10-28T16:04:12.000Z",++ "error": "the machine stopped answering",++ "state": "failed"++}nnew file mode 100644@@@ -0,0 +1,11 @@++{++ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",++ "agent": null,++ "repo": null,++ "cost_usd": null,++ "files_changed": null,++ "started_at": "2026-10-28T16:00:00.000Z",++ "finished_at": "2026-10-28T16:04:12.000Z",++ "error": "the machine stopped answering",++ "state": "failed"++}nnew file mode 100644@@@ -0,0 +1,11 @@++{++ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",++ "agent": "claude",++ "repo": "OpenVibers/OpenVibe.Codes",++ "cost_usd": null,++ "files_changed": null,++ "started_at": "2026-10-28T16:00:00.000Z",++ "finished_at": "2026-10-28T16:04:12.000Z",++ "error": "the machine stopped answering",++ "state": "failed"++}nnew file mode 100644@@@ -0,0 +1,12 @@++{++ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",++ "agent": "claude",++ "repo": "OpenVibers/OpenVibe.Codes",++ "cost_usd": null,++ "files_changed": null,++ "started_at": null,++ "finished_at": null,++ "error": null,++ "state": "queued",++ "prompt": "fix the login bug"++}nnew file mode 100644@@@ -0,0 +1,11 @@++{++ "task_id": "job_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",++ "agent": "claude",++ "repo": "OpenVibers/OpenVibe.Codes",++ "cost_usd": null,++ "files_changed": null,++ "started_at": null,++ "finished_at": null,++ "error": null,++ "state": "queued"++}nnew file mode 100644@@@ -0,0 +1,11 @@++{++ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",++ "agent": null,++ "repo": null,++ "cost_usd": null,++ "files_changed": null,++ "started_at": null,++ "finished_at": null,++ "error": null,++ "state": "queued"++}nnew file mode 100644@@@ -0,0 +1,11 @@++{++ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",++ "agent": "claude",++ "repo": "OpenVibers/OpenVibe.Codes",++ "cost_usd": null,++ "files_changed": null,++ "started_at": null,++ "finished_at": null,++ "error": null,++ "state": "queued"++}nnew file mode 100644@@@ -0,0 +1,12 @@++{++ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",++ "agent": "claude",++ "repo": "OpenVibers/OpenVibe.Codes",++ "cost_usd": null,++ "files_changed": null,++ "started_at": "2026-10-28T16:00:00.000Z",++ "finished_at": null,++ "error": null,++ "state": "running",++ "prompt": "fix the login bug"++}nnew file mode 100644@@@ -0,0 +1,11 @@++{++ "task_id": "job_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",++ "agent": "claude",++ "repo": "OpenVibers/OpenVibe.Codes",++ "cost_usd": null,++ "files_changed": null,++ "started_at": "2026-10-28T16:00:00.000Z",++ "finished_at": null,++ "error": null,++ "state": "running"++}nnew file mode 100644@@@ -0,0 +1,11 @@++{++ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",++ "agent": null,++ "repo": null,++ "cost_usd": null,++ "files_changed": null,++ "started_at": "2026-10-28T16:00:00.000Z",++ "finished_at": null,++ "error": null,++ "state": "running"++}nnew file mode 100644@@@ -0,0 +1,11 @@++{++ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",++ "agent": "claude",++ "repo": "OpenVibers/OpenVibe.Codes",++ "cost_usd": null,++ "files_changed": null,++ "started_at": "2026-10-28T16:00:00.000Z",++ "finished_at": null,++ "error": null,++ "state": "running"++}nnew file mode 100644@@@ -0,0 +1,12 @@++{++ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",++ "agent": "claude",++ "repo": "OpenVibers/OpenVibe.Codes",++ "cost_usd": 0.42,++ "files_changed": 3,++ "started_at": "2026-10-28T16:00:00.000Z",++ "finished_at": "2026-10-28T16:04:12.000Z",++ "error": null,++ "state": "succeeded",++ "prompt": "fix the login bug"++}nnew file mode 100644@@@ -0,0 +1,11 @@++{++ "task_id": "job_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",++ "agent": "claude",++ "repo": "OpenVibers/OpenVibe.Codes",++ "cost_usd": 0.42,++ "files_changed": 3,++ "started_at": "2026-10-28T16:00:00.000Z",++ "finished_at": "2026-10-28T16:04:12.000Z",++ "error": null,++ "state": "succeeded"++}nnew file mode 100644@@@ -0,0 +1,11 @@++{++ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",++ "agent": null,++ "repo": null,++ "cost_usd": 0.42,++ "files_changed": 3,++ "started_at": "2026-10-28T16:00:00.000Z",++ "finished_at": "2026-10-28T16:04:12.000Z",++ "error": null,++ "state": "succeeded"++}nnew file mode 100644@@@ -0,0 +1,11 @@++{++ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",++ "agent": "claude",++ "repo": "OpenVibers/OpenVibe.Codes",++ "cost_usd": 0.42,++ "files_changed": 3,++ "started_at": "2026-10-28T16:00:00.000Z",++ "finished_at": "2026-10-28T16:04:12.000Z",++ "error": null,++ "state": "succeeded"++}@@@ -85874,6 +85874,449 @@}}}++ },++ "codes.task.queued": {++ "version": "1.0.0",++ "owner": "codes",++ "status": "active",++ "schema": {++ "$schema": "https://json-schema.org/draft/2020-12/schema",++ "$id": "https://openvibe.network/contracts/events/payloads/codes.task.queued.v1.json",++ "title": "CodesTaskQueuedPayload",++ "description": "codes.task.queued v1 (OpenVibe.Codes): a coding task was stored and handed to OpenVibe.Run; the person's machine has not started it. Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.",++ "type": "object",++ "additionalProperties": false,++ "required": [++ "task_id",++ "state",++ "agent",++ "repo",++ "cost_usd",++ "files_changed",++ "started_at",++ "finished_at",++ "error"++ ],++ "properties": {++ "task_id": {++ "type": "string",++ "pattern": "^tsk_[0-9A-HJKMNP-TV-Z]{26}$"++ },++ "state": {++ "const": "queued"++ },++ "agent": {++ "type": [++ "string",++ "null"++ ],++ "maxLength": 80++ },++ "repo": {++ "anyOf": [++ {++ "type": "string",++ "pattern": "^[^/\\s]+/[^/\\s]+$",++ "maxLength": 300++ },++ {++ "type": "null"++ }++ ],++ "description": "owner/name from the task's repository URL, or null when it is not a repository path."++ },++ "cost_usd": {++ "type": [++ "number",++ "null"++ ],++ "minimum": 0++ },++ "files_changed": {++ "type": [++ "integer",++ "null"++ ],++ "minimum": 0++ },++ "started_at": {++ "type": [++ "string",++ "null"++ ],++ "format": "date-time"++ },++ "finished_at": {++ "type": [++ "string",++ "null"++ ],++ "format": "date-time"++ },++ "error": {++ "type": [++ "string",++ "null"++ ],++ "maxLength": 500++ }++ }++ }++ },++ "codes.task.running": {++ "version": "1.0.0",++ "owner": "codes",++ "status": "active",++ "schema": {++ "$schema": "https://json-schema.org/draft/2020-12/schema",++ "$id": "https://openvibe.network/contracts/events/payloads/codes.task.running.v1.json",++ "title": "CodesTaskRunningPayload",++ "description": "codes.task.running v1 (OpenVibe.Codes): Run placed or started the task on the person's machine (both task states placed and running announce as running). Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.",++ "type": "object",++ "additionalProperties": false,++ "required": [++ "task_id",++ "state",++ "agent",++ "repo",++ "cost_usd",++ "files_changed",++ "started_at",++ "finished_at",++ "error"++ ],++ "properties": {++ "task_id": {++ "type": "string",++ "pattern": "^tsk_[0-9A-HJKMNP-TV-Z]{26}$"++ },++ "state": {++ "const": "running"++ },++ "agent": {++ "type": [++ "string",++ "null"++ ],++ "maxLength": 80++ },++ "repo": {++ "anyOf": [++ {++ "type": "string",++ "pattern": "^[^/\\s]+/[^/\\s]+$",++ "maxLength": 300++ },++ {++ "type": "null"++ }++ ],++ "description": "owner/name from the task's repository URL, or null when it is not a repository path."++ },++ "cost_usd": {++ "type": [++ "number",++ "null"++ ],++ "minimum": 0++ },++ "files_changed": {++ "type": [++ "integer",++ "null"++ ],++ "minimum": 0++ },++ "started_at": {++ "type": [++ "string",++ "null"++ ],++ "format": "date-time"++ },++ "finished_at": {++ "type": [++ "string",++ "null"++ ],++ "format": "date-time"++ },++ "error": {++ "type": [++ "string",++ "null"++ ],++ "maxLength": 500++ }++ }++ }++ },++ "codes.task.succeeded": {++ "version": "1.0.0",++ "owner": "codes",++ "status": "active",++ "schema": {++ "$schema": "https://json-schema.org/draft/2020-12/schema",++ "$id": "https://openvibe.network/contracts/events/payloads/codes.task.succeeded.v1.json",++ "title": "CodesTaskSucceededPayload",++ "description": "codes.task.succeeded v1 (OpenVibe.Codes): the task ended and its result is stored on the task page. cost_usd and files_changed are the machine's result (null when it returned neither). Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.",++ "type": "object",++ "additionalProperties": false,++ "required": [++ "task_id",++ "state",++ "agent",++ "repo",++ "cost_usd",++ "files_changed",++ "started_at",++ "finished_at",++ "error"++ ],++ "properties": {++ "task_id": {++ "type": "string",++ "pattern": "^tsk_[0-9A-HJKMNP-TV-Z]{26}$"++ },++ "state": {++ "const": "succeeded"++ },++ "agent": {++ "type": [++ "string",++ "null"++ ],++ "maxLength": 80++ },++ "repo": {++ "anyOf": [++ {++ "type": "string",++ "pattern": "^[^/\\s]+/[^/\\s]+$",++ "maxLength": 300++ },++ {++ "type": "null"++ }++ ],++ "description": "owner/name from the task's repository URL, or null when it is not a repository path."++ },++ "cost_usd": {++ "type": [++ "number",++ "null"++ ],++ "minimum": 0++ },++ "files_changed": {++ "type": [++ "integer",++ "null"++ ],++ "minimum": 0++ },++ "started_at": {++ "type": [++ "string",++ "null"++ ],++ "format": "date-time"++ },++ "finished_at": {++ "type": [++ "string",++ "null"++ ],++ "format": "date-time"++ },++ "error": {++ "type": [++ "string",++ "null"++ ],++ "maxLength": 500++ }++ }++ }++ },++ "codes.task.failed": {++ "version": "1.0.0",++ "owner": "codes",++ "status": "active",++ "schema": {++ "$schema": "https://json-schema.org/draft/2020-12/schema",++ "$id": "https://openvibe.network/contracts/events/payloads/codes.task.failed.v1.json",++ "title": "CodesTaskFailedPayload",++ "description": "codes.task.failed v1 (OpenVibe.Codes): the task ended failed, or expired because no machine took it in time (Run's expired state is announced on the failed topic). Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.",++ "type": "object",++ "additionalProperties": false,++ "required": [++ "task_id",++ "state",++ "agent",++ "repo",++ "cost_usd",++ "files_changed",++ "started_at",++ "finished_at",++ "error"++ ],++ "properties": {++ "task_id": {++ "type": "string",++ "pattern": "^tsk_[0-9A-HJKMNP-TV-Z]{26}$"++ },++ "state": {++ "enum": [++ "failed",++ "expired"++ ]++ },++ "agent": {++ "type": [++ "string",++ "null"++ ],++ "maxLength": 80++ },++ "repo": {++ "anyOf": [++ {++ "type": "string",++ "pattern": "^[^/\\s]+/[^/\\s]+$",++ "maxLength": 300++ },++ {++ "type": "null"++ }++ ],++ "description": "owner/name from the task's repository URL, or null when it is not a repository path."++ },++ "cost_usd": {++ "type": [++ "number",++ "null"++ ],++ "minimum": 0++ },++ "files_changed": {++ "type": [++ "integer",++ "null"++ ],++ "minimum": 0++ },++ "started_at": {++ "type": [++ "string",++ "null"++ ],++ "format": "date-time"++ },++ "finished_at": {++ "type": [++ "string",++ "null"++ ],++ "format": "date-time"++ },++ "error": {++ "type": [++ "string",++ "null"++ ],++ "maxLength": 500++ }++ }++ }++ },++ "codes.task.cancelled": {++ "version": "1.0.0",++ "owner": "codes",++ "status": "active",++ "schema": {++ "$schema": "https://json-schema.org/draft/2020-12/schema",++ "$id": "https://openvibe.network/contracts/events/payloads/codes.task.cancelled.v1.json",++ "title": "CodesTaskCancelledPayload",++ "description": "codes.task.cancelled v1 (OpenVibe.Codes): the task ended cancelled, by its owner or by a service holding codes.task.cancel. Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.",++ "type": "object",++ "additionalProperties": false,++ "required": [++ "task_id",++ "state",++ "agent",++ "repo",++ "cost_usd",++ "files_changed",++ "started_at",++ "finished_at",++ "error"++ ],++ "properties": {++ "task_id": {++ "type": "string",++ "pattern": "^tsk_[0-9A-HJKMNP-TV-Z]{26}$"++ },++ "state": {++ "const": "cancelled"++ },++ "agent": {++ "type": [++ "string",++ "null"++ ],++ "maxLength": 80++ },++ "repo": {++ "anyOf": [++ {++ "type": "string",++ "pattern": "^[^/\\s]+/[^/\\s]+$",++ "maxLength": 300++ },++ {++ "type": "null"++ }++ ],++ "description": "owner/name from the task's repository URL, or null when it is not a repository path."++ },++ "cost_usd": {++ "type": [++ "number",++ "null"++ ],++ "minimum": 0++ },++ "files_changed": {++ "type": [++ "integer",++ "null"++ ],++ "minimum": 0++ },++ "started_at": {++ "type": [++ "string",++ "null"++ ],++ "format": "date-time"++ },++ "finished_at": {++ "type": [++ "string",++ "null"++ ],++ "format": "date-time"++ },++ "error": {++ "type": [++ "string",++ "null"++ ],++ "maxLength": 500++ }++ }++ }}}}@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Actor API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.AI API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Billing API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Blog API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Bot API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Chat API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Codes API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Community API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Coupons API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Deals API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Events API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Food API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Games API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Host API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Inventory API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Live API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.MediaHub API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Media API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Network API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.News API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenRestream API",-- "version": "0.231.0",-- "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Play API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Quest API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Reviews API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Run API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Search API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Services API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Sources API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Space API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Tips API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Tools API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Trade API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.VIP API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Watch API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Wiki API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Work API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Zone API",-- "version": "0.231.0",-- "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",++ "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.232.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"@@@ -212633,3 +212633,98 @@ export interface TodayEventCancelledPayload {*/seq: number;}++++/** [email protected] (owner: codes) */++/**++ * codes.task.queued v1 (OpenVibe.Codes): a coding task was stored and handed to OpenVibe.Run; the person's machine has not started it. Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.++ */++export interface CodesTaskQueuedPayload {++ task_id: string;++ state: "queued";++ agent: string | null;++ /**++ * owner/name from the task's repository URL, or null when it is not a repository path.++ */++ repo: string | null;++ cost_usd: number | null;++ files_changed: number | null;++ started_at: string | null;++ finished_at: string | null;++ error: string | null;++}++++/** [email protected] (owner: codes) */++/**++ * codes.task.running v1 (OpenVibe.Codes): Run placed or started the task on the person's machine (both task states placed and running announce as running). Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.++ */++export interface CodesTaskRunningPayload {++ task_id: string;++ state: "running";++ agent: string | null;++ /**++ * owner/name from the task's repository URL, or null when it is not a repository path.++ */++ repo: string | null;++ cost_usd: number | null;++ files_changed: number | null;++ started_at: string | null;++ finished_at: string | null;++ error: string | null;++}++++/** [email protected] (owner: codes) */++/**++ * codes.task.succeeded v1 (OpenVibe.Codes): the task ended and its result is stored on the task page. cost_usd and files_changed are the machine's result (null when it returned neither). Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.++ */++export interface CodesTaskSucceededPayload {++ task_id: string;++ state: "succeeded";++ agent: string | null;++ /**++ * owner/name from the task's repository URL, or null when it is not a repository path.++ */++ repo: string | null;++ cost_usd: number | null;++ files_changed: number | null;++ started_at: string | null;++ finished_at: string | null;++ error: string | null;++}++++/** [email protected] (owner: codes) */++/**++ * codes.task.failed v1 (OpenVibe.Codes): the task ended failed, or expired because no machine took it in time (Run's expired state is announced on the failed topic). Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.++ */++export interface CodesTaskFailedPayload {++ task_id: string;++ state: "failed" | "expired";++ agent: string | null;++ /**++ * owner/name from the task's repository URL, or null when it is not a repository path.++ */++ repo: string | null;++ cost_usd: number | null;++ files_changed: number | null;++ started_at: string | null;++ finished_at: string | null;++ error: string | null;++}++++/** [email protected] (owner: codes) */++/**++ * codes.task.cancelled v1 (OpenVibe.Codes): the task ended cancelled, by its owner or by a service holding codes.task.cancel. Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.++ */++export interface CodesTaskCancelledPayload {++ task_id: string;++ state: "cancelled";++ agent: string | null;++ /**++ * owner/name from the task's repository URL, or null when it is not a repository path.++ */++ repo: string | null;++ cost_usd: number | null;++ files_changed: number | null;++ started_at: string | null;++ finished_at: string | null;++ error: string | null;++}@@@ -46,8 +46,23 @@"codes.task.cancel","codes.actions.read"],-- "eventsProduced": [],-- "eventsConsumed": [],++ "eventsProduced": [++ "codes.task.queued",++ "codes.task.running",++ "codes.task.succeeded",++ "codes.task.failed",++ "codes.task.cancelled"++ ],++ "eventsConsumed": [++ "run.job.queued",++ "run.job.started",++ "run.job.succeeded",++ "run.job.failed",++ "run.job.cancelled",++ "run.job.expired",++ "network.account.export_requested",++ "network.account.deleted"++ ],"namespacesOwned": ["codes.*"],@@@ -69,6 +84,10 @@{"kind": "sessions","what": "signed-in visitors keep their session cookies (verified offline against Network's JWKS); nothing else is pending: the harness catalog is read from the release at boot"++ },++ {++ "kind": "outbox",++ "what": "codes.task.* rows not yet published are sent by the relay after a restart under their fixed evt_ ids; run.job.* deliveries missed while down are redelivered by OpenVibe.Events and claimed once in codes_events_inbox"}]},@@@ -89,5 +108,5 @@"none": "no claims: one process owns the ov_codes PostgreSQL database; writes are transactions there"}},-- "notes": "Port 4900, unit openvibe-codes.service. The open coding-agent harness (owner 2026-10-08): the harness catalog and router (GET /api/v1/harnesses, POST /api/v1/harnesses/route), the way to improve OpenVibe (contributing, code of conduct, the contributor ladder) and permanent redirects from the former developer-portal paths to openvibe.services, where the portal moved (manifests, releases, trust, playgrounds, docs, OAuth and webhook tools)."++ "notes": "Port 4900, unit openvibe-codes.service. The open coding-agent harness (owner 2026-10-08): the harness catalog and router (GET /api/v1/harnesses, POST /api/v1/harnesses/route), the way to improve OpenVibe (contributing, code of conduct, the contributor ladder) and permanent redirects from the former developer-portal paths to openvibe.services, where the portal moved (manifests, releases, trust, playgrounds, docs, OAuth and webhook tools). Coding tasks on the person's own machine (plan T16) are Run jobs: their sessions are kept line by line in codes_session_lines as the stream arrives (back-filled from the machine's final log; GET /run/tasks/:id/session.json replays them), run.job.* events from OpenVibe.Run finalize a task without polling, and every state change is published as codes.task.queued|running|succeeded|failed|cancelled from a transactional outbox."}@@@ -1,6 +1,6 @@{"name": "openvibe-contracts",-- "version": "0.231.0",++ "version": "0.232.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",
@@ -4,6 +4,16 @@ All notable changes to `openvibe-contracts`. Releases are git tags (`vX.Y.Z`) th
@@ -4,6 +4,16 @@ All notable changes to `openvibe-contracts`. Releases are git tags (`vX.Y.Z`) th
from `https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/<tag>`. Before v0.30.0,
from `https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/<tag>`. Before v0.30.0,
the notes were in the tag and commit messages (`git tag -n1`).
the notes were in the tag and commit messages (`git tag -n1`).
+## 0.232.0 — 2026-10-28
+
+- **codes.task.queued|running|succeeded|failed|cancelled** (new payload contracts, first-party, owner `codes`; plan
+ 2026-10-28 §6, decisions 2 and 3). OpenVibe.Codes announces each state change of a coding task:
+ `{ task_id, state, agent, repo, cost_usd, files_changed, started_at, finished_at, error }`. The envelope's subject
+ is the owner; the prompt is never in a payload.
+- The Codes manifest now names what it produces (the five topics) and consumes: `run.job.*`, which finalize a task
+ without polling, and the two account events. Its notes and startup recovery cover the session lines and the
+ outbox.
+
## 0.231.0 — 2026-10-28
## 0.231.0 — 2026-10-28
- **OpenVibe.Surf** (`surf`, live at openvibe.surf, port 5110; plan 2026-10-28 §5.6, the Surf room). One room, three
- **OpenVibe.Surf** (`surf`, live at openvibe.surf, port 5110; plan 2026-10-28 §5.6, the Surf room). One room, three
@@ -7649,6 +7649,51 @@
@@ -7649,6 +7649,51 @@
"visibility": "first-party",
"visibility": "first-party",
"compatibility": "backward",
"compatibility": "backward",
"status": "active"
"status": "active"
+ },
+ {
+ "id": "codes.task.queued",
+ "version": "1.0.0",
+ "owner": "codes",
+ "schema": "events/payloads/codes.task.queued.v1.json",
+ "visibility": "first-party",
+ "compatibility": "backward",
+ "status": "active"
+ },
+ {
+ "id": "codes.task.running",
+ "version": "1.0.0",
+ "owner": "codes",
+ "schema": "events/payloads/codes.task.running.v1.json",
+ "visibility": "first-party",
+ "compatibility": "backward",
+ "status": "active"
+ },
+ {
+ "id": "codes.task.succeeded",
+ "version": "1.0.0",
+ "owner": "codes",
+ "schema": "events/payloads/codes.task.succeeded.v1.json",
+ "visibility": "first-party",
+ "compatibility": "backward",
+ "status": "active"
+ },
+ {
+ "id": "codes.task.failed",
+ "version": "1.0.0",
+ "owner": "codes",
+ "schema": "events/payloads/codes.task.failed.v1.json",
+ "visibility": "first-party",
+ "compatibility": "backward",
+ "status": "active"
+ },
+ {
+ "id": "codes.task.cancelled",
+ "version": "1.0.0",
+ "owner": "codes",
+ "schema": "events/payloads/codes.task.cancelled.v1.json",
+ "visibility": "first-party",
+ "compatibility": "backward",
+ "status": "active"
}
}
]
]
}
}
new file mode 100644
new file mode 100644
@@ -0,0 +1,26 @@
@@ -0,0 +1,26 @@
+{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://openvibe.network/contracts/events/payloads/codes.task.cancelled.v1.json",
+ "title": "CodesTaskCancelledPayload",
+ "description": "codes.task.cancelled v1 (OpenVibe.Codes): the task ended cancelled, by its owner or by a service holding codes.task.cancel. Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.",
+ "type": "object",
+ "additionalProperties": false,
+ "required": ["task_id", "state", "agent", "repo", "cost_usd", "files_changed", "started_at", "finished_at", "error"],
+ "properties": {
+ "task_id": { "type": "string", "pattern": "^tsk_[0-9A-HJKMNP-TV-Z]{26}$" },
+ "state": { "const": "cancelled" },
+ "agent": { "type": ["string", "null"], "maxLength": 80 },
+ "repo": {
+ "anyOf": [
+ { "type": "string", "pattern": "^[^/\\s]+/[^/\\s]+$", "maxLength": 300 },
+ { "type": "null" }
+ ],
+ "description": "owner/name from the task's repository URL, or null when it is not a repository path."
+ },
+ "cost_usd": { "type": ["number", "null"], "minimum": 0 },
+ "files_changed": { "type": ["integer", "null"], "minimum": 0 },
+ "started_at": { "type": ["string", "null"], "format": "date-time" },
+ "finished_at": { "type": ["string", "null"], "format": "date-time" },
+ "error": { "type": ["string", "null"], "maxLength": 500 }
+ }
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,26 @@
@@ -0,0 +1,26 @@
+{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://openvibe.network/contracts/events/payloads/codes.task.failed.v1.json",
+ "title": "CodesTaskFailedPayload",
+ "description": "codes.task.failed v1 (OpenVibe.Codes): the task ended failed, or expired because no machine took it in time (Run's expired state is announced on the failed topic). Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.",
+ "type": "object",
+ "additionalProperties": false,
+ "required": ["task_id", "state", "agent", "repo", "cost_usd", "files_changed", "started_at", "finished_at", "error"],
+ "properties": {
+ "task_id": { "type": "string", "pattern": "^tsk_[0-9A-HJKMNP-TV-Z]{26}$" },
+ "state": { "enum": ["failed", "expired"] },
+ "agent": { "type": ["string", "null"], "maxLength": 80 },
+ "repo": {
+ "anyOf": [
+ { "type": "string", "pattern": "^[^/\\s]+/[^/\\s]+$", "maxLength": 300 },
+ { "type": "null" }
+ ],
+ "description": "owner/name from the task's repository URL, or null when it is not a repository path."
+ },
+ "cost_usd": { "type": ["number", "null"], "minimum": 0 },
+ "files_changed": { "type": ["integer", "null"], "minimum": 0 },
+ "started_at": { "type": ["string", "null"], "format": "date-time" },
+ "finished_at": { "type": ["string", "null"], "format": "date-time" },
+ "error": { "type": ["string", "null"], "maxLength": 500 }
+ }
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,26 @@
@@ -0,0 +1,26 @@
+{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://openvibe.network/contracts/events/payloads/codes.task.queued.v1.json",
+ "title": "CodesTaskQueuedPayload",
+ "description": "codes.task.queued v1 (OpenVibe.Codes): a coding task was stored and handed to OpenVibe.Run; the person's machine has not started it. Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.",
+ "type": "object",
+ "additionalProperties": false,
+ "required": ["task_id", "state", "agent", "repo", "cost_usd", "files_changed", "started_at", "finished_at", "error"],
+ "properties": {
+ "task_id": { "type": "string", "pattern": "^tsk_[0-9A-HJKMNP-TV-Z]{26}$" },
+ "state": { "const": "queued" },
+ "agent": { "type": ["string", "null"], "maxLength": 80 },
+ "repo": {
+ "anyOf": [
+ { "type": "string", "pattern": "^[^/\\s]+/[^/\\s]+$", "maxLength": 300 },
+ { "type": "null" }
+ ],
+ "description": "owner/name from the task's repository URL, or null when it is not a repository path."
+ },
+ "cost_usd": { "type": ["number", "null"], "minimum": 0 },
+ "files_changed": { "type": ["integer", "null"], "minimum": 0 },
+ "started_at": { "type": ["string", "null"], "format": "date-time" },
+ "finished_at": { "type": ["string", "null"], "format": "date-time" },
+ "error": { "type": ["string", "null"], "maxLength": 500 }
+ }
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,26 @@
@@ -0,0 +1,26 @@
+{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://openvibe.network/contracts/events/payloads/codes.task.running.v1.json",
+ "title": "CodesTaskRunningPayload",
+ "description": "codes.task.running v1 (OpenVibe.Codes): Run placed or started the task on the person's machine (both task states placed and running announce as running). Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.",
+ "type": "object",
+ "additionalProperties": false,
+ "required": ["task_id", "state", "agent", "repo", "cost_usd", "files_changed", "started_at", "finished_at", "error"],
+ "properties": {
+ "task_id": { "type": "string", "pattern": "^tsk_[0-9A-HJKMNP-TV-Z]{26}$" },
+ "state": { "const": "running" },
+ "agent": { "type": ["string", "null"], "maxLength": 80 },
+ "repo": {
+ "anyOf": [
+ { "type": "string", "pattern": "^[^/\\s]+/[^/\\s]+$", "maxLength": 300 },
+ { "type": "null" }
+ ],
+ "description": "owner/name from the task's repository URL, or null when it is not a repository path."
+ },
+ "cost_usd": { "type": ["number", "null"], "minimum": 0 },
+ "files_changed": { "type": ["integer", "null"], "minimum": 0 },
+ "started_at": { "type": ["string", "null"], "format": "date-time" },
+ "finished_at": { "type": ["string", "null"], "format": "date-time" },
+ "error": { "type": ["string", "null"], "maxLength": 500 }
+ }
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,26 @@
@@ -0,0 +1,26 @@
+{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://openvibe.network/contracts/events/payloads/codes.task.succeeded.v1.json",
+ "title": "CodesTaskSucceededPayload",
+ "description": "codes.task.succeeded v1 (OpenVibe.Codes): the task ended and its result is stored on the task page. cost_usd and files_changed are the machine's result (null when it returned neither). Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.",
+ "type": "object",
+ "additionalProperties": false,
+ "required": ["task_id", "state", "agent", "repo", "cost_usd", "files_changed", "started_at", "finished_at", "error"],
+ "properties": {
+ "task_id": { "type": "string", "pattern": "^tsk_[0-9A-HJKMNP-TV-Z]{26}$" },
+ "state": { "const": "succeeded" },
+ "agent": { "type": ["string", "null"], "maxLength": 80 },
+ "repo": {
+ "anyOf": [
+ { "type": "string", "pattern": "^[^/\\s]+/[^/\\s]+$", "maxLength": 300 },
+ { "type": "null" }
+ ],
+ "description": "owner/name from the task's repository URL, or null when it is not a repository path."
+ },
+ "cost_usd": { "type": ["number", "null"], "minimum": 0 },
+ "files_changed": { "type": ["integer", "null"], "minimum": 0 },
+ "started_at": { "type": ["string", "null"], "format": "date-time" },
+ "finished_at": { "type": ["string", "null"], "format": "date-time" },
+ "error": { "type": ["string", "null"], "maxLength": 500 }
+ }
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,12 @@
@@ -0,0 +1,12 @@
+{
+ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
+ "agent": "claude",
+ "repo": "OpenVibers/OpenVibe.Codes",
+ "cost_usd": null,
+ "files_changed": null,
+ "started_at": "2026-10-28T16:00:00.000Z",
+ "finished_at": "2026-10-28T16:04:12.000Z",
+ "error": null,
+ "state": "cancelled",
+ "prompt": "fix the login bug"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
+{
+ "task_id": "job_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
+ "agent": "claude",
+ "repo": "OpenVibers/OpenVibe.Codes",
+ "cost_usd": null,
+ "files_changed": null,
+ "started_at": "2026-10-28T16:00:00.000Z",
+ "finished_at": "2026-10-28T16:04:12.000Z",
+ "error": null,
+ "state": "cancelled"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
+{
+ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
+ "agent": null,
+ "repo": null,
+ "cost_usd": null,
+ "files_changed": null,
+ "started_at": "2026-10-28T16:00:00.000Z",
+ "finished_at": "2026-10-28T16:04:12.000Z",
+ "error": null,
+ "state": "cancelled"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
+{
+ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
+ "agent": "claude",
+ "repo": "OpenVibers/OpenVibe.Codes",
+ "cost_usd": null,
+ "files_changed": null,
+ "started_at": "2026-10-28T16:00:00.000Z",
+ "finished_at": "2026-10-28T16:04:12.000Z",
+ "error": null,
+ "state": "cancelled"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,12 @@
@@ -0,0 +1,12 @@
+{
+ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
+ "agent": "claude",
+ "repo": "OpenVibers/OpenVibe.Codes",
+ "cost_usd": null,
+ "files_changed": null,
+ "started_at": "2026-10-28T16:00:00.000Z",
+ "finished_at": "2026-10-28T16:04:12.000Z",
+ "error": "the machine stopped answering",
+ "state": "failed",
+ "prompt": "fix the login bug"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
+{
+ "task_id": "job_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
+ "agent": "claude",
+ "repo": "OpenVibers/OpenVibe.Codes",
+ "cost_usd": null,
+ "files_changed": null,
+ "started_at": "2026-10-28T16:00:00.000Z",
+ "finished_at": "2026-10-28T16:04:12.000Z",
+ "error": "the machine stopped answering",
+ "state": "failed"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
+{
+ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
+ "agent": null,
+ "repo": null,
+ "cost_usd": null,
+ "files_changed": null,
+ "started_at": "2026-10-28T16:00:00.000Z",
+ "finished_at": "2026-10-28T16:04:12.000Z",
+ "error": "the machine stopped answering",
+ "state": "failed"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
+{
+ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
+ "agent": "claude",
+ "repo": "OpenVibers/OpenVibe.Codes",
+ "cost_usd": null,
+ "files_changed": null,
+ "started_at": "2026-10-28T16:00:00.000Z",
+ "finished_at": "2026-10-28T16:04:12.000Z",
+ "error": "the machine stopped answering",
+ "state": "failed"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,12 @@
@@ -0,0 +1,12 @@
+{
+ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
+ "agent": "claude",
+ "repo": "OpenVibers/OpenVibe.Codes",
+ "cost_usd": null,
+ "files_changed": null,
+ "started_at": null,
+ "finished_at": null,
+ "error": null,
+ "state": "queued",
+ "prompt": "fix the login bug"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
+{
+ "task_id": "job_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
+ "agent": "claude",
+ "repo": "OpenVibers/OpenVibe.Codes",
+ "cost_usd": null,
+ "files_changed": null,
+ "started_at": null,
+ "finished_at": null,
+ "error": null,
+ "state": "queued"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
+{
+ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
+ "agent": null,
+ "repo": null,
+ "cost_usd": null,
+ "files_changed": null,
+ "started_at": null,
+ "finished_at": null,
+ "error": null,
+ "state": "queued"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
+{
+ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
+ "agent": "claude",
+ "repo": "OpenVibers/OpenVibe.Codes",
+ "cost_usd": null,
+ "files_changed": null,
+ "started_at": null,
+ "finished_at": null,
+ "error": null,
+ "state": "queued"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,12 @@
@@ -0,0 +1,12 @@
+{
+ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
+ "agent": "claude",
+ "repo": "OpenVibers/OpenVibe.Codes",
+ "cost_usd": null,
+ "files_changed": null,
+ "started_at": "2026-10-28T16:00:00.000Z",
+ "finished_at": null,
+ "error": null,
+ "state": "running",
+ "prompt": "fix the login bug"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
+{
+ "task_id": "job_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
+ "agent": "claude",
+ "repo": "OpenVibers/OpenVibe.Codes",
+ "cost_usd": null,
+ "files_changed": null,
+ "started_at": "2026-10-28T16:00:00.000Z",
+ "finished_at": null,
+ "error": null,
+ "state": "running"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
+{
+ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
+ "agent": null,
+ "repo": null,
+ "cost_usd": null,
+ "files_changed": null,
+ "started_at": "2026-10-28T16:00:00.000Z",
+ "finished_at": null,
+ "error": null,
+ "state": "running"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
+{
+ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
+ "agent": "claude",
+ "repo": "OpenVibers/OpenVibe.Codes",
+ "cost_usd": null,
+ "files_changed": null,
+ "started_at": "2026-10-28T16:00:00.000Z",
+ "finished_at": null,
+ "error": null,
+ "state": "running"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,12 @@
@@ -0,0 +1,12 @@
+{
+ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
+ "agent": "claude",
+ "repo": "OpenVibers/OpenVibe.Codes",
+ "cost_usd": 0.42,
+ "files_changed": 3,
+ "started_at": "2026-10-28T16:00:00.000Z",
+ "finished_at": "2026-10-28T16:04:12.000Z",
+ "error": null,
+ "state": "succeeded",
+ "prompt": "fix the login bug"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
+{
+ "task_id": "job_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
+ "agent": "claude",
+ "repo": "OpenVibers/OpenVibe.Codes",
+ "cost_usd": 0.42,
+ "files_changed": 3,
+ "started_at": "2026-10-28T16:00:00.000Z",
+ "finished_at": "2026-10-28T16:04:12.000Z",
+ "error": null,
+ "state": "succeeded"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
+{
+ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
+ "agent": null,
+ "repo": null,
+ "cost_usd": 0.42,
+ "files_changed": 3,
+ "started_at": "2026-10-28T16:00:00.000Z",
+ "finished_at": "2026-10-28T16:04:12.000Z",
+ "error": null,
+ "state": "succeeded"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
+{
+ "task_id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
+ "agent": "claude",
+ "repo": "OpenVibers/OpenVibe.Codes",
+ "cost_usd": 0.42,
+ "files_changed": 3,
+ "started_at": "2026-10-28T16:00:00.000Z",
+ "finished_at": "2026-10-28T16:04:12.000Z",
+ "error": null,
+ "state": "succeeded"
+}
@@ -85874,6 +85874,449 @@
@@ -85874,6 +85874,449 @@
}
}
}
}
}
}
+ },
+ "codes.task.queued": {
+ "version": "1.0.0",
+ "owner": "codes",
+ "status": "active",
+ "schema": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://openvibe.network/contracts/events/payloads/codes.task.queued.v1.json",
+ "title": "CodesTaskQueuedPayload",
+ "description": "codes.task.queued v1 (OpenVibe.Codes): a coding task was stored and handed to OpenVibe.Run; the person's machine has not started it. Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.",
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "task_id",
+ "state",
+ "agent",
+ "repo",
+ "cost_usd",
+ "files_changed",
+ "started_at",
+ "finished_at",
+ "error"
+ ],
+ "properties": {
+ "task_id": {
+ "type": "string",
+ "pattern": "^tsk_[0-9A-HJKMNP-TV-Z]{26}$"
+ },
+ "state": {
+ "const": "queued"
+ },
+ "agent": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "maxLength": 80
+ },
+ "repo": {
+ "anyOf": [
+ {
+ "type": "string",
+ "pattern": "^[^/\\s]+/[^/\\s]+$",
+ "maxLength": 300
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "owner/name from the task's repository URL, or null when it is not a repository path."
+ },
+ "cost_usd": {
+ "type": [
+ "number",
+ "null"
+ ],
+ "minimum": 0
+ },
+ "files_changed": {
+ "type": [
+ "integer",
+ "null"
+ ],
+ "minimum": 0
+ },
+ "started_at": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "format": "date-time"
+ },
+ "finished_at": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "format": "date-time"
+ },
+ "error": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "maxLength": 500
+ }
+ }
+ }
+ },
+ "codes.task.running": {
+ "version": "1.0.0",
+ "owner": "codes",
+ "status": "active",
+ "schema": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://openvibe.network/contracts/events/payloads/codes.task.running.v1.json",
+ "title": "CodesTaskRunningPayload",
+ "description": "codes.task.running v1 (OpenVibe.Codes): Run placed or started the task on the person's machine (both task states placed and running announce as running). Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.",
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "task_id",
+ "state",
+ "agent",
+ "repo",
+ "cost_usd",
+ "files_changed",
+ "started_at",
+ "finished_at",
+ "error"
+ ],
+ "properties": {
+ "task_id": {
+ "type": "string",
+ "pattern": "^tsk_[0-9A-HJKMNP-TV-Z]{26}$"
+ },
+ "state": {
+ "const": "running"
+ },
+ "agent": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "maxLength": 80
+ },
+ "repo": {
+ "anyOf": [
+ {
+ "type": "string",
+ "pattern": "^[^/\\s]+/[^/\\s]+$",
+ "maxLength": 300
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "owner/name from the task's repository URL, or null when it is not a repository path."
+ },
+ "cost_usd": {
+ "type": [
+ "number",
+ "null"
+ ],
+ "minimum": 0
+ },
+ "files_changed": {
+ "type": [
+ "integer",
+ "null"
+ ],
+ "minimum": 0
+ },
+ "started_at": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "format": "date-time"
+ },
+ "finished_at": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "format": "date-time"
+ },
+ "error": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "maxLength": 500
+ }
+ }
+ }
+ },
+ "codes.task.succeeded": {
+ "version": "1.0.0",
+ "owner": "codes",
+ "status": "active",
+ "schema": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://openvibe.network/contracts/events/payloads/codes.task.succeeded.v1.json",
+ "title": "CodesTaskSucceededPayload",
+ "description": "codes.task.succeeded v1 (OpenVibe.Codes): the task ended and its result is stored on the task page. cost_usd and files_changed are the machine's result (null when it returned neither). Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.",
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "task_id",
+ "state",
+ "agent",
+ "repo",
+ "cost_usd",
+ "files_changed",
+ "started_at",
+ "finished_at",
+ "error"
+ ],
+ "properties": {
+ "task_id": {
+ "type": "string",
+ "pattern": "^tsk_[0-9A-HJKMNP-TV-Z]{26}$"
+ },
+ "state": {
+ "const": "succeeded"
+ },
+ "agent": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "maxLength": 80
+ },
+ "repo": {
+ "anyOf": [
+ {
+ "type": "string",
+ "pattern": "^[^/\\s]+/[^/\\s]+$",
+ "maxLength": 300
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "owner/name from the task's repository URL, or null when it is not a repository path."
+ },
+ "cost_usd": {
+ "type": [
+ "number",
+ "null"
+ ],
+ "minimum": 0
+ },
+ "files_changed": {
+ "type": [
+ "integer",
+ "null"
+ ],
+ "minimum": 0
+ },
+ "started_at": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "format": "date-time"
+ },
+ "finished_at": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "format": "date-time"
+ },
+ "error": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "maxLength": 500
+ }
+ }
+ }
+ },
+ "codes.task.failed": {
+ "version": "1.0.0",
+ "owner": "codes",
+ "status": "active",
+ "schema": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://openvibe.network/contracts/events/payloads/codes.task.failed.v1.json",
+ "title": "CodesTaskFailedPayload",
+ "description": "codes.task.failed v1 (OpenVibe.Codes): the task ended failed, or expired because no machine took it in time (Run's expired state is announced on the failed topic). Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.",
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "task_id",
+ "state",
+ "agent",
+ "repo",
+ "cost_usd",
+ "files_changed",
+ "started_at",
+ "finished_at",
+ "error"
+ ],
+ "properties": {
+ "task_id": {
+ "type": "string",
+ "pattern": "^tsk_[0-9A-HJKMNP-TV-Z]{26}$"
+ },
+ "state": {
+ "enum": [
+ "failed",
+ "expired"
+ ]
+ },
+ "agent": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "maxLength": 80
+ },
+ "repo": {
+ "anyOf": [
+ {
+ "type": "string",
+ "pattern": "^[^/\\s]+/[^/\\s]+$",
+ "maxLength": 300
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "owner/name from the task's repository URL, or null when it is not a repository path."
+ },
+ "cost_usd": {
+ "type": [
+ "number",
+ "null"
+ ],
+ "minimum": 0
+ },
+ "files_changed": {
+ "type": [
+ "integer",
+ "null"
+ ],
+ "minimum": 0
+ },
+ "started_at": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "format": "date-time"
+ },
+ "finished_at": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "format": "date-time"
+ },
+ "error": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "maxLength": 500
+ }
+ }
+ }
+ },
+ "codes.task.cancelled": {
+ "version": "1.0.0",
+ "owner": "codes",
+ "status": "active",
+ "schema": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://openvibe.network/contracts/events/payloads/codes.task.cancelled.v1.json",
+ "title": "CodesTaskCancelledPayload",
+ "description": "codes.task.cancelled v1 (OpenVibe.Codes): the task ended cancelled, by its owner or by a service holding codes.task.cancel. Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.",
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "task_id",
+ "state",
+ "agent",
+ "repo",
+ "cost_usd",
+ "files_changed",
+ "started_at",
+ "finished_at",
+ "error"
+ ],
+ "properties": {
+ "task_id": {
+ "type": "string",
+ "pattern": "^tsk_[0-9A-HJKMNP-TV-Z]{26}$"
+ },
+ "state": {
+ "const": "cancelled"
+ },
+ "agent": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "maxLength": 80
+ },
+ "repo": {
+ "anyOf": [
+ {
+ "type": "string",
+ "pattern": "^[^/\\s]+/[^/\\s]+$",
+ "maxLength": 300
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "owner/name from the task's repository URL, or null when it is not a repository path."
+ },
+ "cost_usd": {
+ "type": [
+ "number",
+ "null"
+ ],
+ "minimum": 0
+ },
+ "files_changed": {
+ "type": [
+ "integer",
+ "null"
+ ],
+ "minimum": 0
+ },
+ "started_at": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "format": "date-time"
+ },
+ "finished_at": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "format": "date-time"
+ },
+ "error": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "maxLength": 500
+ }
+ }
+ }
}
}
}
}
}
}
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Actor API",
"title": "OpenVibe.Actor API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.AI API",
"title": "OpenVibe.AI API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Billing API",
"title": "OpenVibe.Billing API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Blog API",
"title": "OpenVibe.Blog API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Bot API",
"title": "OpenVibe.Bot API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Chat API",
"title": "OpenVibe.Chat API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Codes API",
"title": "OpenVibe.Codes API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Community API",
"title": "OpenVibe.Community API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Coupons API",
"title": "OpenVibe.Coupons API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Deals API",
"title": "OpenVibe.Deals API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Events API",
"title": "OpenVibe.Events API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Food API",
"title": "OpenVibe.Food API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Games API",
"title": "OpenVibe.Games API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Host API",
"title": "OpenVibe.Host API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Inventory API",
"title": "OpenVibe.Inventory API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Live API",
"title": "OpenVibe.Live API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.MediaHub API",
"title": "OpenVibe.MediaHub API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Media API",
"title": "OpenVibe.Media API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Network API",
"title": "OpenVibe.Network API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.News API",
"title": "OpenVibe.News API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenRestream API",
"title": "OpenRestream API",
- "version": "0.231.0",
- "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Play API",
"title": "OpenVibe.Play API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Quest API",
"title": "OpenVibe.Quest API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Reviews API",
"title": "OpenVibe.Reviews API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Run API",
"title": "OpenVibe.Run API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Search API",
"title": "OpenVibe.Search API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Services API",
"title": "OpenVibe.Services API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Sources API",
"title": "OpenVibe.Sources API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Space API",
"title": "OpenVibe.Space API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Tips API",
"title": "OpenVibe.Tips API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Tools API",
"title": "OpenVibe.Tools API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Trade API",
"title": "OpenVibe.Trade API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.VIP API",
"title": "OpenVibe.VIP API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Watch API",
"title": "OpenVibe.Watch API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Wiki API",
"title": "OpenVibe.Wiki API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Work API",
"title": "OpenVibe.Work API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Zone API",
"title": "OpenVibe.Zone API",
- "version": "0.231.0",
- "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.231.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.232.0",
+ "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.232.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -212633,3 +212633,98 @@ export interface TodayEventCancelledPayload {
@@ -212633,3 +212633,98 @@ export interface TodayEventCancelledPayload {
*/
*/
seq: number;
seq: number;
}
}
+
+/** [email protected] (owner: codes) */
+/**
+ * codes.task.queued v1 (OpenVibe.Codes): a coding task was stored and handed to OpenVibe.Run; the person's machine has not started it. Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.
+ */
+export interface CodesTaskQueuedPayload {
+ task_id: string;
+ state: "queued";
+ agent: string | null;
+ /**
+ * owner/name from the task's repository URL, or null when it is not a repository path.
+ */
+ repo: string | null;
+ cost_usd: number | null;
+ files_changed: number | null;
+ started_at: string | null;
+ finished_at: string | null;
+ error: string | null;
+}
+
+/** [email protected] (owner: codes) */
+/**
+ * codes.task.running v1 (OpenVibe.Codes): Run placed or started the task on the person's machine (both task states placed and running announce as running). Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.
+ */
+export interface CodesTaskRunningPayload {
+ task_id: string;
+ state: "running";
+ agent: string | null;
+ /**
+ * owner/name from the task's repository URL, or null when it is not a repository path.
+ */
+ repo: string | null;
+ cost_usd: number | null;
+ files_changed: number | null;
+ started_at: string | null;
+ finished_at: string | null;
+ error: string | null;
+}
+
+/** [email protected] (owner: codes) */
+/**
+ * codes.task.succeeded v1 (OpenVibe.Codes): the task ended and its result is stored on the task page. cost_usd and files_changed are the machine's result (null when it returned neither). Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.
+ */
+export interface CodesTaskSucceededPayload {
+ task_id: string;
+ state: "succeeded";
+ agent: string | null;
+ /**
+ * owner/name from the task's repository URL, or null when it is not a repository path.
+ */
+ repo: string | null;
+ cost_usd: number | null;
+ files_changed: number | null;
+ started_at: string | null;
+ finished_at: string | null;
+ error: string | null;
+}
+
+/** [email protected] (owner: codes) */
+/**
+ * codes.task.failed v1 (OpenVibe.Codes): the task ended failed, or expired because no machine took it in time (Run's expired state is announced on the failed topic). Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.
+ */
+export interface CodesTaskFailedPayload {
+ task_id: string;
+ state: "failed" | "expired";
+ agent: string | null;
+ /**
+ * owner/name from the task's repository URL, or null when it is not a repository path.
+ */
+ repo: string | null;
+ cost_usd: number | null;
+ files_changed: number | null;
+ started_at: string | null;
+ finished_at: string | null;
+ error: string | null;
+}
+
+/** [email protected] (owner: codes) */
+/**
+ * codes.task.cancelled v1 (OpenVibe.Codes): the task ended cancelled, by its owner or by a service holding codes.task.cancel. Envelope: source codes, subject { type: user, id: <owner usr_> }, visibility internal.
+ */
+export interface CodesTaskCancelledPayload {
+ task_id: string;
+ state: "cancelled";
+ agent: string | null;
+ /**
+ * owner/name from the task's repository URL, or null when it is not a repository path.
+ */
+ repo: string | null;
+ cost_usd: number | null;
+ files_changed: number | null;
+ started_at: string | null;
+ finished_at: string | null;
+ error: string | null;
+}
@@ -46,8 +46,23 @@
@@ -46,8 +46,23 @@
"codes.task.cancel",
"codes.task.cancel",
"codes.actions.read"
"codes.actions.read"
],
],
- "eventsProduced": [],
- "eventsConsumed": [],
+ "eventsProduced": [
+ "codes.task.queued",
+ "codes.task.running",
+ "codes.task.succeeded",
+ "codes.task.failed",
+ "codes.task.cancelled"
+ ],
+ "eventsConsumed": [
+ "run.job.queued",
+ "run.job.started",
+ "run.job.succeeded",
+ "run.job.failed",
+ "run.job.cancelled",
+ "run.job.expired",
+ "network.account.export_requested",
+ "network.account.deleted"
+ ],
"namespacesOwned": [
"namespacesOwned": [
"codes.*"
"codes.*"
],
],
@@ -69,6 +84,10 @@
@@ -69,6 +84,10 @@
{
{
"kind": "sessions",
"kind": "sessions",
"what": "signed-in visitors keep their session cookies (verified offline against Network's JWKS); nothing else is pending: the harness catalog is read from the release at boot"
"what": "signed-in visitors keep their session cookies (verified offline against Network's JWKS); nothing else is pending: the harness catalog is read from the release at boot"
+ },
+ {
+ "kind": "outbox",
+ "what": "codes.task.* rows not yet published are sent by the relay after a restart under their fixed evt_ ids; run.job.* deliveries missed while down are redelivered by OpenVibe.Events and claimed once in codes_events_inbox"
}
}
]
]
},
},
@@ -89,5 +108,5 @@
@@ -89,5 +108,5 @@
"none": "no claims: one process owns the ov_codes PostgreSQL database; writes are transactions there"
"none": "no claims: one process owns the ov_codes PostgreSQL database; writes are transactions there"
}
}
},
},
- "notes": "Port 4900, unit openvibe-codes.service. The open coding-agent harness (owner 2026-10-08): the harness catalog and router (GET /api/v1/harnesses, POST /api/v1/harnesses/route), the way to improve OpenVibe (contributing, code of conduct, the contributor ladder) and permanent redirects from the former developer-portal paths to openvibe.services, where the portal moved (manifests, releases, trust, playgrounds, docs, OAuth and webhook tools)."
+ "notes": "Port 4900, unit openvibe-codes.service. The open coding-agent harness (owner 2026-10-08): the harness catalog and router (GET /api/v1/harnesses, POST /api/v1/harnesses/route), the way to improve OpenVibe (contributing, code of conduct, the contributor ladder) and permanent redirects from the former developer-portal paths to openvibe.services, where the portal moved (manifests, releases, trust, playgrounds, docs, OAuth and webhook tools). Coding tasks on the person's own machine (plan T16) are Run jobs: their sessions are kept line by line in codes_session_lines as the stream arrives (back-filled from the machine's final log; GET /run/tasks/:id/session.json replays them), run.job.* events from OpenVibe.Run finalize a task without polling, and every state change is published as codes.task.queued|running|succeeded|failed|cancelled from a transactional outbox."
}
}
@@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
{
{
"name": "openvibe-contracts",
"name": "openvibe-contracts",
- "version": "0.231.0",
+ "version": "0.232.0",
"description": "Machine-readable contracts for the OpenVibe network: schemas, manifests, ids, error envelope, capability checks.",
"description": "Machine-readable contracts for the OpenVibe network: schemas, manifests, ids, error envelope, capability checks.",
"main": "index.js",
"main": "index.js",
"types": "generated/typescript/index.d.ts",
"types": "generated/typescript/index.d.ts",