ActorTaskEvent actor.task-event@1

Generated at from openvibe-contracts v0.127.0 and openvibe-sdk v0.37.0.

Version
1.0.0
Owner
actor
Visibility
public
Status
active
Compatibility
backward
Decision
ADR-044
Schema
https://openvibe.network/contracts/actor/task-event.v1.json

actor.task-event@1: one event on a task's live stream (GET /api/v1/tasks/:id/events, text/event-stream; the SSE id is SEQ, so a reader resumes with Last-Event-ID). KIND is run.job-stream-event@1's three, as platform.task@1 progress names them: state (the task moved to STATE), output (one step of the agent's work: AGENT says what it is doing in TEXT, or calls TOOL with a short INPUT summary, or a tool answered), end (the task ended in STATE; nothing follows). Events are best-effort; the task record (GET /api/v1/tasks/:id) is the source of truth.

Fields

FieldTypeRequiredDescriptionConstraints
task_idstringyes
  • pattern ^tsk_[0-9A-HJKMNP-TV-Z]{26}$
seqintegeryes
  • minimum 1
kindenumyes
  • one of "state", "output", "end"
atstringyes
  • format date-time
stateenum
  • one of "queued", "running", "verifying", "succeeded", "failed", "cancelled"
agentstring
  • pattern ^[a-z][a-z0-9-]{1,63}$
stepenum
  • one of "plan", "text", "tool_call", "tool_result", "check", "handoff"
textstring
  • maxLength 8000
toolstring
  • maxLength 128
inputstring
  • maxLength 2000
is_errorboolean

Examples

From the contract's own test fixtures: valid ones validate, rejected ones must fail.

Valid: end
{
  "task_id": "tsk_01JAB2C3D4E5F6G7H8J9K0MNPS",
  "seq": 9,
  "kind": "end",
  "at": "2026-10-08T19:00:09.000Z",
  "state": "succeeded"
}
Valid: state
{
  "task_id": "tsk_01JAB2C3D4E5F6G7H8J9K0MNPS",
  "seq": 1,
  "kind": "state",
  "at": "2026-10-08T19:00:00.000Z",
  "state": "running",
  "agent": "openvibe-runtime"
}
Valid: tool-call
{
  "task_id": "tsk_01JAB2C3D4E5F6G7H8J9K0MNPS",
  "seq": 2,
  "kind": "output",
  "at": "2026-10-08T19:00:01.000Z",
  "agent": "openvibe-runtime",
  "step": "tool_call",
  "tool": "tools.mx",
  "input": "openvibe.network"
}
Rejected: end-without-state
{
  "task_id": "tsk_01JAB2C3D4E5F6G7H8J9K0MNPS",
  "seq": 9,
  "kind": "end",
  "at": "2026-10-08T19:00:09.000Z"
}
Rejected: output-without-step
{
  "task_id": "tsk_01JAB2C3D4E5F6G7H8J9K0MNPS",
  "seq": 2,
  "kind": "output",
  "at": "2026-10-08T19:00:01.000Z"
}

Validate

const contracts = require('openvibe-contracts');
contracts.validate('actor.task-event@1', value);   // { valid, errors: [{ path, message }] }