AiDeepDiveUpdatedPayload ai.deep_dive.updated@1

Generated at from openvibe-contracts v0.419.0 and openvibe-sdk v0.161.0.

Version
1.0.0
Owner
ai
Visibility
first-party
Status
active
Compatibility
backward
Decision
ADR-015
Schema
https://openvibe.network/contracts/events/payloads/ai.deep_dive.updated.v1.json

ai.deep_dive.updated v1 (OpenVibe.AI server/deep-dive): a deep dive's step changed or it ended. One event per step transition and one at the end, so a page (OpenVibe.Exchange's /deep-dive) can follow a run without polling, and OpenVibe.Design can attach a finished report. The payload carries the run and deep-dive ids, the step, the progress and the status; never the question's answer, a capture or a prompt. Envelope: subject { type: run, id: <run_id> }, visibility internal, priority low (important on failed), actor service:ai.

Fields

FieldTypeRequiredDescriptionConstraints
deep_dive_idstringyes
  • pattern ^run_[0-9A-HJKMNP-TV-Z]{26}$
run_idstringyes
  • pattern ^run_[0-9A-HJKMNP-TV-Z]{26}$
statusenumyes
  • one of "queued", "running", "choosing", "succeeded", "failed", "cancelled"
stepenumyes
  • one of "plan", "search", "choose", "capture", "analyse", "synthesise", "report", "done", null
progressnumberyes
  • minimum 0
  • maximum 1
stepsarray of objectyes
  • items: no other fields
steps[].keyenumyes
  • one of "plan", "search", "choose", "capture", "analyse", "synthesise", "report"
steps[].statusenumyes
  • one of "pending", "running", "done", "skipped", "failed"
depthenumyes
  • one of "quick", "thorough", "expert"
requesteridentity.subject-refyes
on_behalf_ofone ofyes
urlstringyes
  • pattern ^https://
  • format uri
errorone ofyes
occurred_atstringyes
  • format date-time

Examples

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

Valid: capturing
{
  "deep_dive_id": "run_01JAB2C3D4E5F6G7H8J9K0MNPQ",
  "run_id": "run_01JAB2C3D4E5F6G7H8J9K0MNPQ",
  "status": "running",
  "step": "capture",
  "progress": 0.5,
  "steps": [
    {
      "key": "plan",
      "status": "done"
    },
    {
      "key": "search",
      "status": "done"
    },
    {
      "key": "choose",
      "status": "done"
    },
    {
      "key": "capture",
      "status": "running"
    },
    {
      "key": "analyse",
      "status": "pending"
    },
    {
      "key": "synthesise",
      "status": "pending"
    },
    {
      "key": "report",
      "status": "pending"
    }
  ],
  "depth": "quick",
  "requester": {
    "type": "service",
    "id": "exchange"
  },
  "on_behalf_of": {
    "type": "user",
    "id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ"
  },
  "url": "https://openvibe.exchange/deep-dive/run_01JAB2C3D4E5F6G7H8J9K0MNPQ",
  "error": null,
  "occurred_at": "2026-11-11T10:01:00.000Z"
}
Rejected: progress-over-one
{
  "deep_dive_id": "run_01JAB2C3D4E5F6G7H8J9K0MNPQ",
  "run_id": "run_01JAB2C3D4E5F6G7H8J9K0MNPQ",
  "status": "running",
  "step": "capture",
  "progress": 4.5,
  "steps": [],
  "depth": "quick",
  "requester": {
    "type": "service",
    "id": "exchange"
  },
  "on_behalf_of": null,
  "url": "https://openvibe.exchange/deep-dive/run_01JAB2C3D4E5F6G7H8J9K0MNPQ",
  "error": null,
  "occurred_at": "2026-11-11T10:01:00.000Z"
}

Validate

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