openvibers/openvibe.contracts Commits
openvibe-contracts 0.417.0: who asked, what a run continues, plays and sources (#469)
Changes
@@@ -1,17 +1,32 @@# Changelog--## Unreleased — a plain Stop, not an E-STOP----Small hobby robots: the panel's Stop is one ordinary, optional control that sends the machine's own halt.----- `bot.robot@1`: the description and the old latch field say it is legacy (always false); schemas are unchanged.--- `bot.device-message@1`: the old latch frame and the `estop_*` fields are described as legacy names devices may still-- send, not as a remote latch; Bot's config always sends the latch false.--- `bot.command-result@1`, `bot.robot-control-result@1`, `bot.robot-manage-result@1`, `bot.command.refused@1`: the old-- stop endpoint and refusal code are gone from the descriptions.--- `bot.estop.set@1` and `bot.estop.cleared@1` are retired (fixtures and schemas stay for the contract window).--- `ui.surface@1`: Stop is not a required part; `ui.action@1` no longer names an E-STOP; `ui.trigger@1` adds `stop`.--- Manifests and ADRs use Stop; `bot.resource.control` stop sends halt and resume is a calm no-op.++## 0.417.0 — 2026-11-12++++**The agent engine's next shapes:** who asked, what a run continues, how several agents share one ask, and where the++money went (agent-engine.md §§3-5, from the code study). Every field is optional and the new contracts are new.++++- **`agents.run@1` 1.2.0:**++ - `mandate`: an ask taken in from the feed, a room, an issue: where, by whom, explicit or inferred, and the scope;++ - `lineage`: a fork, a hand-off or a regenerated turn, with the run and turn it came from;++ - `play` and `role`;++ - `agent.capabilities`;++ - `cost.by`: the spend on each rung of the ladder (machine, plan, key, allowance, credits).++- **`agents.step@1` 1.2.0:** `turn`.++- **`agents.run-start@1` 1.1.0:** `play`, `lineage`, and `mandate` (from intake only).++- **New `agents.play@1`:** a play as data, made of roles, phases, checks, a stop rule and a budget split. Fixtures:++ advisor, grader loop, fan-out.++- **New `agents.source@1`:** one place asks are taken in: who may ask, what counts as an ask, the run it becomes, its++ budget, and how the run answers. Fixtures: the owner's feed, Vibe in a room.++- **Stop is a plain control.** On small hobby robots, the panel's Stop is one ordinary, optional control that sends++ the machine's own halt:++ - `bot.robot@1`: the description and the old latch field say it is legacy (always false); schemas are unchanged.++ - `bot.device-message@1`: the old latch frame and the `estop_*` fields are described as legacy names devices may++ still send, not as a remote latch; Bot's config always sends the latch false.++ - `bot.command-result@1`, `bot.robot-control-result@1`, `bot.robot-manage-result@1`, `bot.command.refused@1`: the++ old stop endpoint and refusal code are gone from the descriptions.++ - `bot.estop.set@1` and `bot.estop.cleared@1` are retired (fixtures and schemas stay for the contract window).++ - `ui.surface@1`: Stop is not a required part; `ui.action@1` names Stop alone; `ui.trigger@1` adds `stop`.++ - Manifests and ADRs use Stop; `bot.resource.control` stop sends halt and resume is a calm no-op.## 0.416.0 — 2026-11-12nnew file mode 100644@@@ -0,0 +1,234 @@++{++ "$schema": "https://json-schema.org/draft/2020-12/schema",++ "$id": "https://openvibe.network/contracts/agents/play.v1.json",++ "title": "AgentsPlay",++ "description": "agents.play@1 (agent-engine.md §4, 2026-11-12): a named way for several agents to work on one ask, as data, so a person or an AI can write one and openvibe.run can list it. ROLES are the agents it uses (each with what it does, the size of model it wants, and how many may run at once); PHASES run in order, the roles in a phase together when PARALLEL; CHECKS say who checks whose work, against a written BAR; STOP says when the play is over; BUDGET.SPLIT gives each role its share of the parent's budget. The orchestrator turns a play into child runs (agents.run@1's PARENT_RUN, PLAY and ROLE). Rules every play keeps, whatever it says: a child's end never ends its parent; a person's message never waits behind new work; a child's budget is a slice of its parent's.",++ "type": "object",++ "additionalProperties": false,++ "required": [++ "id",++ "name",++ "roles",++ "stop"++ ],++ "properties": {++ "id": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,60}$"++ },++ "version": {++ "type": "integer",++ "minimum": 1++ },++ "name": {++ "type": "string",++ "minLength": 1,++ "maxLength": 120++ },++ "summary": {++ "type": "string",++ "minLength": 1,++ "maxLength": 1000,++ "description": "When to use it, in a sentence or two."++ },++ "roles": {++ "type": "array",++ "minItems": 1,++ "maxItems": 12,++ "items": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "id",++ "does"++ ],++ "properties": {++ "id": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,60}$"++ },++ "name": {++ "type": "string",++ "minLength": 1,++ "maxLength": 80++ },++ "does": {++ "type": "string",++ "minLength": 1,++ "maxLength": 2000,++ "description": "What this role does, as its instructions begin."++ },++ "model": {++ "enum": [++ "small",++ "strong",++ "same",++ "other-family"++ ],++ "description": "small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader)."++ },++ "agent": {++ "type": "string",++ "minLength": 1,++ "maxLength": 160,++ "description": "A particular agent's id, when the role is always the same agent."++ },++ "count": {++ "type": "object",++ "additionalProperties": false,++ "properties": {++ "min": {++ "type": "integer",++ "minimum": 1,++ "maximum": 64++ },++ "max": {++ "type": "integer",++ "minimum": 1,++ "maximum": 64++ }++ }++ },++ "consults": {++ "type": "integer",++ "minimum": 0,++ "maximum": 50,++ "description": "How many times another role may consult this one (an advisor's limit)."++ }++ }++ }++ },++ "phases": {++ "type": "array",++ "maxItems": 20,++ "items": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "id",++ "roles"++ ],++ "properties": {++ "id": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,60}$"++ },++ "name": {++ "type": "string",++ "minLength": 1,++ "maxLength": 120++ },++ "roles": {++ "type": "array",++ "minItems": 1,++ "maxItems": 12,++ "items": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,60}$"++ }++ },++ "parallel": {++ "type": "boolean"++ }++ }++ }++ },++ "checks": {++ "type": "array",++ "maxItems": 12,++ "items": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "by",++ "of"++ ],++ "properties": {++ "by": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,60}$"++ },++ "of": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,60}$"++ },++ "bar": {++ "type": "string",++ "minLength": 1,++ "maxLength": 2000,++ "description": "What passing means, in words the checker can apply."++ }++ }++ }++ },++ "stop": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "when"++ ],++ "properties": {++ "when": {++ "enum": [++ "done",++ "passes",++ "rounds",++ "person"++ ],++ "description": "done: when the last phase ends; passes: when the checks pass; rounds: after ROUNDS rounds; person: when the person says so."++ },++ "rounds": {++ "type": "integer",++ "minimum": 1,++ "maximum": 20++ }++ }++ },++ "budget": {++ "type": "object",++ "additionalProperties": false,++ "properties": {++ "split": {++ "type": "object",++ "propertyNames": {++ "pattern": "^[a-z][a-z0-9-]{0,60}$"++ },++ "additionalProperties": {++ "type": "number",++ "minimum": 0,++ "maximum": 1++ },++ "description": "Each role's share of the parent's budget (the shares add up to at most 1)."++ }++ }++ },++ "visibility": {++ "enum": [++ "private",++ "public"++ ]++ },++ "author": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "type",++ "id"++ ],++ "properties": {++ "type": {++ "enum": [++ "user",++ "agent",++ "service"++ ]++ },++ "id": {++ "type": "string",++ "minLength": 1,++ "maxLength": 160++ }++ }++ }++ }++}@@@ -2,7 +2,7 @@"$schema": "https://json-schema.org/draft/2020-12/schema","$id": "https://openvibe.network/contracts/agents/run-start.v1.json","title": "AgentsRunStart",-- "description": "agents.run-start@1 (agent-engine.md, 2026-11-12): what starts a run, the same on every product's POST /api/v1/runs and on the Frame's POST /api/frame/runs. Only TEXT is required: the goal, the question or the first message, in the person's own words. KIND chooses the sort of run (agents.run@1's kinds); absent, the Frame's orchestrator decides whether to answer, plan, or hand the work to another product as a child run. AGENT names who does it (an agent's id; auto lets the product choose). MODEL and WHERE are the picker's choices; TARGET is a code run's (new, openvibe or a repository); CONTEXT is where it was asked; ATTACHMENTS are files by Media id or address; SOURCES and DEPTH are an answer's (frame.ask@1's); PARENT_RUN makes it a sub-agent's run inside its parent's budget; BUDGET is its own hard limit. An Idempotency-Key header makes a repeated start return the first run.",++ "description": "agents.run-start@1 (agent-engine.md, 2026-11-12): what starts a run, the same on every product's POST /api/v1/runs and on the Frame's POST /api/frame/runs. Only TEXT is required: the goal, the question or the first message, in the person's own words. KIND chooses the sort of run (agents.run@1's kinds); absent, the Frame's orchestrator decides whether to answer, plan, or hand the work to another product as a child run. AGENT names who does it (an agent's id; auto lets the product choose). MODEL and WHERE are the picker's choices; TARGET is a code run's (new, openvibe or a repository); CONTEXT is where it was asked; ATTACHMENTS are files by Media id or address; SOURCES and DEPTH are an answer's (frame.ask@1's); PARENT_RUN makes it a sub-agent's run inside its parent's budget; BUDGET is its own hard limit. An Idempotency-Key header makes a repeated start return the first run. Since 1.1.0 a start may name a PLAY, continue another run (LINEAGE), and carry intake's MANDATE.","type": "object","additionalProperties": false,"required": [@@@ -262,6 +262,134 @@"minimum": 1}}++ },++ "play": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,60}$",++ "description": "The play to run (agents.play@1's ID); absent, the orchestrator chooses (most asks are solo)."++ },++ "mandate": {++ "type": [++ "object",++ "null"++ ],++ "additionalProperties": false,++ "required": [++ "source",++ "asked_by",++ "strength"++ ],++ "description": "Set by intake, never by a browser: the Source, thread and asker the run is answering (agents.run@1's MANDATE). A product ignores it from a caller that is not the intake service.",++ "properties": {++ "source": {++ "enum": [++ "feed",++ "chat",++ "comments",++ "git",++ "composer",++ "notifications",++ "mail",++ "schedule",++ "goal",++ "webhook",++ "machine"++ ]++ },++ "thread": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "service",++ "kind",++ "id"++ ],++ "properties": {++ "service": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,40}$"++ },++ "kind": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9_-]{0,40}$"++ },++ "id": {++ "type": "string",++ "minLength": 1,++ "maxLength": 200++ },++ "url": {++ "type": "string",++ "format": "uri",++ "pattern": "^https://",++ "maxLength": 2048++ }++ }++ },++ "asked_by": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "type",++ "id"++ ],++ "properties": {++ "type": {++ "enum": [++ "user",++ "agent",++ "service"++ ]++ },++ "id": {++ "type": "string",++ "minLength": 1,++ "maxLength": 160++ }++ }++ },++ "strength": {++ "enum": [++ "explicit",++ "inferred"++ ]++ },++ "scope": {++ "type": "string",++ "minLength": 1,++ "maxLength": 1000++ }++ }++ },++ "lineage": {++ "type": [++ "object",++ "null"++ ],++ "additionalProperties": false,++ "required": [++ "from",++ "how"++ ],++ "description": "Start as a continuation of another run of the same person: a fork at a turn, a hand-off, or a regenerated turn (agents.run@1's LINEAGE).",++ "properties": {++ "from": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,40}:[A-Za-z0-9._~-]{1,160}$",++ "description": "A run's ref: the product, a colon, the product's own run id (agents.run@1's REF)."++ },++ "at_turn": {++ "type": "integer",++ "minimum": 0++ },++ "how": {++ "enum": [++ "fork",++ "handoff",++ "regenerate"++ ]++ }++ }}}}@@@ -2,7 +2,7 @@"$schema": "https://json-schema.org/draft/2020-12/schema","$id": "https://openvibe.network/contracts/agents/run.v1.json","title": "AgentsRun",-- "description": "agents.run@1 (one agent system, 2026-11-12): one run of an agent, the same shape on every product (Actor, Codes, Run and anything else on openvibe-sdk/agents). The owner is the person or agent the work belongs to; AGENT names the agent or harness that runs it and the product it comes from; PARENT_RUN makes sub-agent runs a tree; BUDGET is the hard limit and COST what the run has spent; STATUS is where the run is now. The run is stored by its product, not here: this contract is the wire shape. GET /api/v1/runs, /api/v1/runs/{id} and /api/v1/runs/{id}/steps serve it (OpenVibe.Actor) and the SDK's runs client reads it. The product's own id is kept, never reused. A run that ends keeps its end status. Since 1.1.0 (agent-engine.md) a run also says what a person calls it (TITLE), what sort it is (KIND), where it lives (REF on the Frame, URL on its product), which model runs it and where, what it is doing now (DOING), what it waits for (WAITING), its last line (PREVIEW), where it was asked (CONTEXT) and what it made (OUTPUTS); a chat with Vibe is a run of KIND chat that is waiting for a message. Every added field is optional. This v1 contract may grow optional fields; a step is agents.step@1 and an approval is agents.approval@1.",++ "description": "agents.run@1 (one agent system, 2026-11-12): one run of an agent, the same shape on every product (Actor, Codes, Run and anything else on openvibe-sdk/agents). The owner is the person or agent the work belongs to; AGENT names the agent or harness that runs it and the product it comes from; PARENT_RUN makes sub-agent runs a tree; BUDGET is the hard limit and COST what the run has spent; STATUS is where the run is now. The run is stored by its product, not here: this contract is the wire shape. GET /api/v1/runs, /api/v1/runs/{id} and /api/v1/runs/{id}/steps serve it (OpenVibe.Actor) and the SDK's runs client reads it. The product's own id is kept, never reused. A run that ends keeps its end status. Since 1.1.0 (agent-engine.md) a run also says what a person calls it (TITLE), what sort it is (KIND), where it lives (REF on the Frame, URL on its product), which model runs it and where, what it is doing now (DOING), what it waits for (WAITING), its last line (PREVIEW), where it was asked (CONTEXT) and what it made (OUTPUTS); a chat with Vibe is a run of KIND chat that is waiting for a message. Every added field is optional. This v1 contract may grow optional fields; a step is agents.step@1 and an approval is agents.approval@1. Since 1.2.0 (agent-engine.md §§3-5, from the code study) a run may also say why it exists (MANDATE: an ask taken in from the feed, a room, an issue), what it continues (LINEAGE: a fork, a hand-off, a regenerated turn), the play its tree follows and a child's ROLE in it, what its agent's harness can do (AGENT.CAPABILITIES), and what it spent on each rung of the ladder (COST.BY). Every added field is optional.","type": "object","additionalProperties": false,"required": [@@@ -34,7 +34,7 @@"required": ["id"],-- "description": "The agent or harness that runs it. ID is the product's own agent id or slug; NAME is what a person reads; PRODUCT is the product it comes from (actor, codes, run, chat, …). GLYPH, HUE and AVATAR_URL are its face; HARNESS is the loop that runs it.",++ "description": "The agent or harness that runs it. ID is the product's own agent id or slug; NAME is what a person reads; PRODUCT is the product it comes from (actor, codes, run, chat, …). GLYPH, HUE and AVATAR_URL are its face; HARNESS is the loop that runs it. Since 1.2.0, CAPABILITIES says what its harness can do.","properties": {"id": {"type": "string",@@@ -72,6 +72,29 @@"type": "string","pattern": "^[a-z][a-z0-9-]{0,59}$","description": "The loop that runs it: openvibe (the SDK's own), or another harness run through an adapter (codex, claude-code, opencode, deepseek, …)."++ },++ "capabilities": {++ "type": "array",++ "uniqueItems": true,++ "maxItems": 20,++ "description": "What the agent's harness can do, so the Dispatcher chooses by capability and never by name: resume and fork a thread, ask approvals, read images, start sub-agents, use desks, browse, search the web, use MCP tools, plan before acting, read and write files, run a shell, speak and listen.",++ "items": {++ "enum": [++ "resume",++ "fork",++ "approvals",++ "images",++ "subagents",++ "desks",++ "browser",++ "web-search",++ "mcp",++ "plan-mode",++ "files",++ "shell",++ "voice"++ ]++ }}}},@@@ -157,6 +180,103 @@"steps": {"type": "integer","minimum": 0++ },++ "by": {++ "type": "object",++ "additionalProperties": false,++ "description": "The spend by rung of the Dispatcher's ladder (agent-engine.md §3): MACHINE, a model on the person's own computer (free); PLAN, a signed-in plan through its harness (flat); KEY, the person's own provider key (no fee); ALLOWANCE, OpenVibe's free allowance; CREDITS, bought (Exchange's offers). The parts add up to the run's own totals.",++ "properties": {++ "machine": {++ "type": "object",++ "additionalProperties": false,++ "properties": {++ "usd": {++ "type": "number",++ "minimum": 0++ },++ "tokens": {++ "type": "integer",++ "minimum": 0++ },++ "seconds": {++ "type": "number",++ "minimum": 0++ }++ }++ },++ "plan": {++ "type": "object",++ "additionalProperties": false,++ "properties": {++ "usd": {++ "type": "number",++ "minimum": 0++ },++ "tokens": {++ "type": "integer",++ "minimum": 0++ },++ "seconds": {++ "type": "number",++ "minimum": 0++ }++ }++ },++ "key": {++ "type": "object",++ "additionalProperties": false,++ "properties": {++ "usd": {++ "type": "number",++ "minimum": 0++ },++ "tokens": {++ "type": "integer",++ "minimum": 0++ },++ "seconds": {++ "type": "number",++ "minimum": 0++ }++ }++ },++ "allowance": {++ "type": "object",++ "additionalProperties": false,++ "properties": {++ "usd": {++ "type": "number",++ "minimum": 0++ },++ "tokens": {++ "type": "integer",++ "minimum": 0++ },++ "seconds": {++ "type": "number",++ "minimum": 0++ }++ }++ },++ "credits": {++ "type": "object",++ "additionalProperties": false,++ "properties": {++ "usd": {++ "type": "number",++ "minimum": 0++ },++ "tokens": {++ "type": "integer",++ "minimum": 0++ },++ "seconds": {++ "type": "number",++ "minimum": 0++ }++ }++ }++ }}}},@@@ -493,6 +613,139 @@],"format": "date-time","description": "When the run reached an end status. Null while it has not."++ },++ "mandate": {++ "type": [++ "object",++ "null"++ ],++ "additionalProperties": false,++ "required": [++ "source",++ "asked_by",++ "strength"++ ],++ "description": "Why the run exists when it came through intake (agent-engine.md §5): SOURCE is where the ask was made; THREAD is the conversation it was made in (a post, a room, an issue: its service, kind and id, and its address), where the run answers and from which later messages reach it; ASKED_BY is who asked; STRENGTH says whether they asked outright (explicit) or the Source's rule read an ask in what they wrote (inferred: such a run confirms before it acts); SCOPE says in words what the run may do for them. Null (or absent) for a run a person started themselves.",++ "properties": {++ "source": {++ "enum": [++ "feed",++ "chat",++ "comments",++ "git",++ "composer",++ "notifications",++ "mail",++ "schedule",++ "goal",++ "webhook",++ "machine"++ ]++ },++ "thread": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "service",++ "kind",++ "id"++ ],++ "properties": {++ "service": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,40}$"++ },++ "kind": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9_-]{0,40}$"++ },++ "id": {++ "type": "string",++ "minLength": 1,++ "maxLength": 200++ },++ "url": {++ "type": "string",++ "format": "uri",++ "pattern": "^https://",++ "maxLength": 2048++ }++ }++ },++ "asked_by": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "type",++ "id"++ ],++ "properties": {++ "type": {++ "enum": [++ "user",++ "agent",++ "service"++ ]++ },++ "id": {++ "type": "string",++ "minLength": 1,++ "maxLength": 160++ }++ }++ },++ "strength": {++ "enum": [++ "explicit",++ "inferred"++ ]++ },++ "scope": {++ "type": "string",++ "minLength": 1,++ "maxLength": 1000++ }++ }++ },++ "lineage": {++ "type": [++ "object",++ "null"++ ],++ "additionalProperties": false,++ "required": [++ "from",++ "how"++ ],++ "description": "Where the run came from when it continues another (agent-engine.md, from the code study): FROM is that run's ref; AT_TURN is the turn it was taken from (agents.step@1's TURN; the steps before it are the new run's history); HOW is fork (a person branched the conversation), handoff (another harness or model took it on, with a written summary as its first step) or regenerate (the same turn answered again). Null for a run that starts fresh.",++ "properties": {++ "from": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,40}:[A-Za-z0-9._~-]{1,160}$",++ "description": "A run's ref: the product, a colon, the product's own run id (agents.run@1's REF)."++ },++ "at_turn": {++ "type": "integer",++ "minimum": 0++ },++ "how": {++ "enum": [++ "fork",++ "handoff",++ "regenerate"++ ]++ }++ }++ },++ "play": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,60}$",++ "description": "The play (agents.play@1's ID) this run's tree follows: solo, advisor, plan-execute, fan-out, team, grader-loop, research-build, issue-to-pr, watch, or a person's own. On a child run it is its parent's."++ },++ "role": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,60}$",++ "description": "A child run's role in its parent's play (one of the play's role ids: planner, executor, advisor, grader, reviewer, searcher, worker…)."}}}nnew file mode 100644@@@ -0,0 +1,226 @@++{++ "$schema": "https://json-schema.org/draft/2020-12/schema",++ "$id": "https://openvibe.network/contracts/agents/source.v1.json",++ "title": "AgentsSource",++ "description": "agents.source@1 (agent-engine.md §5, 2026-11-12): one place where asks are taken in without opening an agent app, and how. KIND is the place (the feed, chat rooms and DMs, comments, git.openvibe.codes, a composer, notifications, mail, a schedule or a goal, a webhook, a machine's events); ON turns it on; WHO says whose words may start work there (only its owner, a list of people, their followers, or anyone); RULE says in words what counts as an ask; CREATES is the run an accepted ask becomes (its kind, target, agent and play); BUDGET is each such run's hard limit; ANSWER is how the run speaks back on the thread (a reply, a card that follows the run, a notice, or nothing). Intake stores the ask first and acts after, with backoff; an inferred ask confirms before it acts (agents.run@1's MANDATE.STRENGTH).",++ "type": "object",++ "additionalProperties": false,++ "required": [++ "id",++ "kind",++ "owner",++ "on",++ "who",++ "creates"++ ],++ "properties": {++ "id": {++ "type": "string",++ "pattern": "^src_[A-Za-z0-9]{8,40}$"++ },++ "kind": {++ "enum": [++ "feed",++ "chat",++ "comments",++ "git",++ "composer",++ "notifications",++ "mail",++ "schedule",++ "goal",++ "webhook",++ "machine"++ ]++ },++ "name": {++ "type": "string",++ "minLength": 1,++ "maxLength": 120++ },++ "owner": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "type",++ "id"++ ],++ "properties": {++ "type": {++ "enum": [++ "user",++ "agent",++ "service"++ ]++ },++ "id": {++ "type": "string",++ "minLength": 1,++ "maxLength": 160++ }++ }++ },++ "on": {++ "type": "boolean"++ },++ "where": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "service"++ ],++ "description": "Which one of that kind: a room, a repository, a feed, a machine.",++ "properties": {++ "service": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,40}$"++ },++ "kind": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9_-]{0,40}$"++ },++ "id": {++ "type": "string",++ "minLength": 1,++ "maxLength": 200++ },++ "url": {++ "type": "string",++ "format": "uri",++ "pattern": "^https://",++ "maxLength": 2048++ }++ }++ },++ "who": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "may"++ ],++ "properties": {++ "may": {++ "enum": [++ "owner",++ "list",++ "followers",++ "anyone"++ ]++ },++ "list": {++ "type": "array",++ "maxItems": 200,++ "uniqueItems": true,++ "items": {++ "type": "string",++ "pattern": "^usr_[A-Za-z0-9]{6,40}$"++ }++ }++ }++ },++ "rule": {++ "type": "string",++ "minLength": 1,++ "maxLength": 2000,++ "description": "What counts as an ask here, in words (a post that asks for a feature or reports a bug; a message that names @Vibe)."++ },++ "creates": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "kind"++ ],++ "properties": {++ "kind": {++ "enum": [++ "chat",++ "ask",++ "task",++ "code",++ "machine",++ "goal"++ ]++ },++ "target": {++ "description": "What a code run works on. new: a new project in the person's own space. openvibe: OpenVibe itself; the orchestrator finds the repositories and opens pull requests, never merges. An object names one repository.",++ "anyOf": [++ {++ "enum": [++ "new",++ "openvibe"++ ]++ },++ {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "repo"++ ],++ "properties": {++ "repo": {++ "type": "string",++ "minLength": 1,++ "maxLength": 300,++ "description": "owner/name, or the repository's address."++ },++ "branch": {++ "type": "string",++ "minLength": 1,++ "maxLength": 200++ }++ }++ }++ ]++ },++ "agent": {++ "type": "string",++ "minLength": 1,++ "maxLength": 160++ },++ "play": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,60}$",++ "description": "The play (agents.play@1's ID) this run's tree follows: solo, advisor, plan-execute, fan-out, team, grader-loop, research-build, issue-to-pr, watch, or a person's own. On a child run it is its parent's."++ }++ }++ },++ "budget": {++ "type": "object",++ "additionalProperties": false,++ "properties": {++ "usd": {++ "type": "number",++ "minimum": 0++ },++ "tokens": {++ "type": "integer",++ "minimum": 0++ },++ "seconds": {++ "type": "number",++ "minimum": 0++ },++ "steps": {++ "type": "integer",++ "minimum": 1++ }++ }++ },++ "answer": {++ "enum": [++ "reply",++ "card",++ "notice",++ "none"++ ]++ },++ "created_at": {++ "type": "string",++ "format": "date-time"++ },++ "updated_at": {++ "type": "string",++ "format": "date-time"++ }++ }++}@@@ -2,7 +2,7 @@"$schema": "https://json-schema.org/draft/2020-12/schema","$id": "https://openvibe.network/contracts/agents/step.v1.json","title": "AgentsStep",-- "description": "agents.step@1 (one agent system, 2026-11-12): one entry of a run's append-only step log, as GET /api/v1/runs/{id}/steps returns it and as agents.step.appended@1 publishes it. SEQ is the run's own order (1, 2, …), never renumbered; a reader pages with ?after=SEQ. KIND says what the entry is: think (a plan, a check, a note to self), tool (a tool call or its result), message (words for the person), approval (the run asked), child (a sub-agent or a hand-off) or file (a file the run made). TEXT is what a person reads; TOOL_CALL is the tool's name and input on a tool entry; RESULT is what came back. The product's own event may split a call and its result into two steps: both carry KIND tool and the call's seq is the earlier one. A step carries no credential, no key and no token; a secret a tool saw is redacted before it is stored. Since 1.1.0 (agent-engine.md) a step also says who spoke (FROM: the person's own words are steps too), whether it is still under way (STATUS), a short TITLE and GLYPH for a tool or a thought, the files that go with it (ATTACHMENTS), numbered SOURCES, a rich card (UI) and, where a computer was used, the DESK picture and action for replay. Every added field is optional.",++ "description": "agents.step@1 (one agent system, 2026-11-12): one entry of a run's append-only step log, as GET /api/v1/runs/{id}/steps returns it and as agents.step.appended@1 publishes it. SEQ is the run's own order (1, 2, …), never renumbered; a reader pages with ?after=SEQ. KIND says what the entry is: think (a plan, a check, a note to self), tool (a tool call or its result), message (words for the person), approval (the run asked), child (a sub-agent or a hand-off) or file (a file the run made). TEXT is what a person reads; TOOL_CALL is the tool's name and input on a tool entry; RESULT is what came back. The product's own event may split a call and its result into two steps: both carry KIND tool and the call's seq is the earlier one. A step carries no credential, no key and no token; a secret a tool saw is redacted before it is stored. Since 1.1.0 (agent-engine.md) a step also says who spoke (FROM: the person's own words are steps too), whether it is still under way (STATUS), a short TITLE and GLYPH for a tool or a thought, the files that go with it (ATTACHMENTS), numbered SOURCES, a rich card (UI) and, where a computer was used, the DESK picture and action for replay. Every added field is optional. Since 1.2.0 a step says the TURN it belongs to.","type": "object","additionalProperties": false,"required": [@@@ -321,6 +321,11 @@}}}++ },++ "turn": {++ "type": "integer",++ "minimum": 0,++ "description": "The turn the step belongs to. A person's message opens a turn (turn 0 is what the run started with); every step until their next message is in it. A fork, a hand-off or a regenerated answer starts at a turn boundary (agents.run@1's LINEAGE.AT_TURN)."}}}@@@ -11760,7 +11760,7 @@},{"id": "agents.run",-- "version": "1.1.0",++ "version": "1.2.0","owner": "actor","schema": "agents/run.v1.json","visibility": "public",@@@ -11770,7 +11770,7 @@},{"id": "agents.step",-- "version": "1.1.0",++ "version": "1.2.0","owner": "actor","schema": "agents/step.v1.json","visibility": "public",@@@ -11800,7 +11800,7 @@},{"id": "agents.run-start",-- "version": "1.0.0",++ "version": "1.1.0","owner": "network","schema": "agents/run-start.v1.json","visibility": "public",@@@ -11828,6 +11828,26 @@"status": "active","adr": "ADR-044"},++ {++ "id": "agents.play",++ "version": "1.0.0",++ "owner": "network",++ "schema": "agents/play.v1.json",++ "visibility": "public",++ "compatibility": "backward",++ "status": "active",++ "adr": "ADR-044"++ },++ {++ "id": "agents.source",++ "version": "1.0.0",++ "owner": "network",++ "schema": "agents/source.v1.json",++ "visibility": "public",++ "compatibility": "backward",++ "status": "active",++ "adr": "ADR-044"++ },{"id": "feed.item","version": "1.0.0",@@@ -160,6 +160,40 @@ writer of 0.412.0 stays valid.**A conversation is a run that is `waiting` for a `message`.** The same status covers an approval (`for: approval`)and something only the person can do (`for: takeover`), so no reader needs a second model for chats.++### Who asked, what it continues, how several agents share it (0.417.0)++++From the agent engine's code study (agent-engine.md §§3-5). Every field is optional.++++- `agents.run@1` (1.2.0):++ - **`mandate`:** why a run exists when it came through intake. Its `source` is where the ask was made (the feed, a++ room, comments, git, a composer, notifications, mail, a schedule or goal, a webhook, a machine). Its `thread` is++ where the run answers. `asked_by` says who asked. `strength` is `explicit`, or `inferred`, and an inferred ask++ confirms before it acts. `scope` says in words what the run may do.++ - **`lineage`:** what a run continues. `from` is that run's ref and `at_turn` its turn; `how` is `fork`, `handoff`++ (another harness or model takes it on, with a written summary as its first step) or `regenerate`.++ - **`play` and `role`:** the play a run tree follows, and a child's part in it.++ - **`agent.capabilities`:** what the harness can do: resume, fork, approvals, images, sub-agents, desks, browser,++ web search, MCP, plan mode, files, shell, voice. The Dispatcher chooses by capability, never by name.++ - **`cost.by`:** the spend on each rung of the ladder: `machine` (the person's own computer), `plan` (a signed-in++ plan), `key` (their own key), `allowance` (OpenVibe's free part) and `credits`.++- **`agents.step@1` (1.2.0) adds `turn`.** A person's message opens a turn. Forks and regenerated answers start on a++ turn's boundary.++- **`agents.run-start@1` (1.1.0)** takes a `play`, a `lineage` (to fork or hand off), and, from intake only, a++ `mandate`.++- **`agents.play@1`:** a play as data.++ - Its `roles` say what each does, the size of model it wants (`small`, `strong`, `same`, `other-family`), how many++ run at once, and how often it may be consulted.++ - `phases` run in order, a phase's roles together when it is `parallel`. `checks` say who checks whom against a++ written `bar`, and `stop` says when the play is over (`done`, `passes`, `rounds`, `person`).++ - `budget.split` gives each role its share of the parent's budget.++ - The stock plays: solo, advisor, plan-execute, fan-out, team, grader-loop, research-build, issue-to-pr and watch.++- **`agents.source@1`:** one place where asks are taken in, and how.++ - `who` may ask there: its `owner`, a `list` of people, `followers` or `anyone`. The `rule` says in words what++ counts as an ask.++ - `creates` is the run an ask becomes, with its kind, target, agent and play. `budget` caps each such run.++ - `answer` is how the run speaks back: a `reply`, a `card`, a `notice` or `none`.++ - Intake stores the ask first and acts afterwards.++### The Run APIThe same routes on every product (`/api/v1`) and, for every product at once, on the Frame (`/api/frame`, where the idnnew file mode 100644@@@ -0,0 +1,43 @@++{++ "id": "advisor",++ "version": 1,++ "name": "Advisor",++ "summary": "A small model does the work and asks a strong one at the few hard decisions.",++ "roles": [++ {++ "id": "executor",++ "name": "Executor",++ "does": "Do the task step by step. Ask the advisor only when a decision is hard to undo.",++ "model": "small"++ },++ {++ "id": "advisor",++ "name": "Advisor",++ "does": "Answer the executor's question in a few sentences: what to do and why.",++ "model": "strong",++ "consults": 3++ }++ ],++ "phases": [++ {++ "id": "work",++ "roles": [++ "executor"++ ]++ }++ ],++ "stop": {++ "when": "done"++ },++ "budget": {++ "split": {++ "executor": 0.7,++ "advisor": 1.5++ }++ },++ "visibility": "public",++ "author": {++ "type": "service",++ "id": "network"++ }++}nnew file mode 100644@@@ -0,0 +1,8 @@++{++ "id": "empty",++ "name": "Empty",++ "roles": [],++ "stop": {++ "when": "done"++ }++}nnew file mode 100644@@@ -0,0 +1,40 @@++{++ "id": "advisor",++ "version": 1,++ "name": "Advisor",++ "summary": "A small model does the work and asks a strong one at the few hard decisions.",++ "roles": [++ {++ "id": "executor",++ "name": "Executor",++ "does": "Do the task step by step. Ask the advisor only when a decision is hard to undo.",++ "model": "small"++ },++ {++ "id": "advisor",++ "name": "Advisor",++ "does": "Answer the executor's question in a few sentences: what to do and why.",++ "model": "strong",++ "consults": 3++ }++ ],++ "phases": [++ {++ "id": "work",++ "roles": [++ "executor"++ ]++ }++ ],++ "budget": {++ "split": {++ "executor": 0.7,++ "advisor": 0.3++ }++ },++ "visibility": "public",++ "author": {++ "type": "service",++ "id": "network"++ }++}nnew file mode 100644@@@ -0,0 +1,43 @@++{++ "id": "advisor",++ "version": 1,++ "name": "Advisor",++ "summary": "A small model does the work and asks a strong one at the few hard decisions.",++ "roles": [++ {++ "id": "executor",++ "name": "Executor",++ "does": "Do the task step by step. Ask the advisor only when a decision is hard to undo.",++ "model": "small"++ },++ {++ "id": "advisor",++ "name": "Advisor",++ "does": "Answer the executor's question in a few sentences: what to do and why.",++ "model": "strong",++ "consults": 3++ }++ ],++ "phases": [++ {++ "id": "work",++ "roles": [++ "executor"++ ]++ }++ ],++ "stop": {++ "when": "done"++ },++ "budget": {++ "split": {++ "executor": 0.7,++ "advisor": 0.3++ }++ },++ "visibility": "public",++ "author": {++ "type": "service",++ "id": "network"++ }++}nnew file mode 100644@@@ -0,0 +1,50 @@++{++ "id": "fan-out",++ "name": "Fan-out",++ "summary": "Split the work across many small agents, then merge.",++ "roles": [++ {++ "id": "splitter",++ "does": "Split the work into parts that do not touch each other.",++ "model": "strong"++ },++ {++ "id": "worker",++ "does": "Do one part.",++ "model": "small",++ "count": {++ "min": 1,++ "max": 16++ }++ },++ {++ "id": "merger",++ "does": "Merge the parts and check they fit.",++ "model": "strong"++ }++ ],++ "phases": [++ {++ "id": "split",++ "roles": [++ "splitter"++ ]++ },++ {++ "id": "work",++ "roles": [++ "worker"++ ],++ "parallel": true++ },++ {++ "id": "merge",++ "roles": [++ "merger"++ ]++ }++ ],++ "stop": {++ "when": "done"++ }++}nnew file mode 100644@@@ -0,0 +1,42 @@++{++ "id": "grader-loop",++ "name": "Grader loop",++ "summary": "Do it again until a grader of another model family says it meets the bar.",++ "roles": [++ {++ "id": "doer",++ "does": "Do the task; take the grader's notes into the next round.",++ "model": "same"++ },++ {++ "id": "grader",++ "does": "Check the work against the bar and say pass, or what is missing.",++ "model": "other-family"++ }++ ],++ "phases": [++ {++ "id": "do",++ "roles": [++ "doer"++ ]++ },++ {++ "id": "check",++ "roles": [++ "grader"++ ]++ }++ ],++ "checks": [++ {++ "by": "grader",++ "of": "doer",++ "bar": "Every claim has a source; nothing the person asked for is missing."++ }++ ],++ "stop": {++ "when": "passes",++ "rounds": 4++ }++}nnew file mode 100644@@@ -0,0 +1,4 @@++{++ "text": "Do it",++ "play": "Grader Loop!"++}nnew file mode 100644@@@ -0,0 +1,8 @@++{++ "text": "Same idea, but for a phone screen",++ "lineage": {++ "from": "chat:c_8f3k2m",++ "at_turn": 3,++ "how": "fork"++ }++}nnew file mode 100644@@@ -0,0 +1,5 @@++{++ "text": "Write the patch notes for 4.225.0 and have them checked",++ "kind": "task",++ "play": "grader-loop"++}nnew file mode 100644@@@ -0,0 +1,88 @@++{++ "id": "tsk_01K9R2V6M8Q4T0B7C3D5E9F2GH",++ "ref": "codes:tsk_01K9R2V6M8Q4T0B7C3D5E9F2GH",++ "kind": "code",++ "title": "A dark mode toggle on the overlay page",++ "owner": {++ "type": "user",++ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"++ },++ "agent": {++ "id": "orchestrator",++ "name": "Codes",++ "product": "codes",++ "glyph": "code",++ "hue": 262,++ "harness": "codex",++ "capabilities": [++ "files",++ "telepathy"++ ]++ },++ "target": "openvibe",++ "status": "running",++ "doing": {++ "text": "Reading OpenVibe.Live's overlay code",++ "glyph": "book-open"++ },++ "model": {++ "id": "plans/codex|gpt-6-sol",++ "source": "plans",++ "name": "GPT-6 Sol",++ "effort": "xhigh"++ },++ "where": {++ "kind": "runner",++ "id": "run_ws1",++ "name": "Workstation"++ },++ "outputs": [++ {++ "kind": "pr",++ "title": "Live: a goal bar overlay",++ "url": "https://git.openvibe.codes/OpenVibers/OpenVibe.Live/pulls/871",++ "state": "open"++ }++ ],++ "counts": {++ "steps": 41,++ "children": 2,++ "files": 5++ },++ "budget": {++ "usd": 5,++ "steps": 400++ },++ "cost": {++ "usd": 0.84,++ "steps": 41,++ "by": {++ "machine": {++ "tokens": 182000++ },++ "credits": {++ "usd": 0.84,++ "tokens": 61000++ }++ }++ },++ "created_at": "2026-11-12T10:00:00Z",++ "updated_at": "2026-11-12T10:09:30Z",++ "ended_at": null,++ "mandate": {++ "source": "feed",++ "thread": {++ "service": "community",++ "kind": "post",++ "id": "pst_01K9R3A1B2C3D4E5F6G7H8J9KM",++ "url": "https://openvibe.community/p/pst_01K9R3A1B2C3D4E5F6G7H8J9KM"++ },++ "asked_by": {++ "type": "user",++ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"++ },++ "strength": "explicit",++ "scope": "Change OpenVibe.Live and open pull requests for the owner to review; never merge."++ },++ "play": "issue-to-pr"++}nnew file mode 100644@@@ -0,0 +1,54 @@++{++ "id": "c_8f3k2mx",++ "ref": "chat:c_8f3k2mx",++ "kind": "chat",++ "title": "Keyboard Scout",++ "owner": {++ "type": "user",++ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"++ },++ "agent": {++ "id": "vibe",++ "name": "Keyboard Scout",++ "product": "chat",++ "glyph": "search",++ "hue": 212,++ "harness": "openvibe"++ },++ "status": "waiting",++ "waiting": {++ "for": "message",++ "since": "2026-11-12T10:02:00Z"++ },++ "preview": {++ "text": "Three picks under $90, with sources.",++ "from": "agent",++ "at": "2026-11-12T10:02:00Z"++ },++ "model": {++ "id": "openvibe/auto",++ "source": "openvibe",++ "name": "Auto"++ },++ "where": {++ "kind": "openvibe"++ },++ "context": {++ "site": "deals",++ "url": "https://openvibe.deals/",++ "title": "Deals"++ },++ "url": "https://openvibe.chat/vibe/c_8f3k2m",++ "counts": {++ "steps": 6,++ "unread": 1++ },++ "visibility": "private",++ "created_at": "2026-11-12T10:00:00Z",++ "updated_at": "2026-11-12T10:02:00Z",++ "lineage": {++ "from": "not a run",++ "at_turn": 3,++ "how": "fork"++ }++}nnew file mode 100644@@@ -0,0 +1,88 @@++{++ "id": "tsk_01K9R2V6M8Q4T0B7C3D5E9F2GH",++ "ref": "codes:tsk_01K9R2V6M8Q4T0B7C3D5E9F2GH",++ "kind": "code",++ "title": "A dark mode toggle on the overlay page",++ "owner": {++ "type": "user",++ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"++ },++ "agent": {++ "id": "orchestrator",++ "name": "Codes",++ "product": "codes",++ "glyph": "code",++ "hue": 262,++ "harness": "codex",++ "capabilities": [++ "resume",++ "approvals",++ "subagents",++ "files",++ "shell",++ "mcp"++ ]++ },++ "target": "openvibe",++ "status": "running",++ "doing": {++ "text": "Reading OpenVibe.Live's overlay code",++ "glyph": "book-open"++ },++ "model": {++ "id": "plans/codex|gpt-6-sol",++ "source": "plans",++ "name": "GPT-6 Sol",++ "effort": "xhigh"++ },++ "where": {++ "kind": "runner",++ "id": "run_ws1",++ "name": "Workstation"++ },++ "outputs": [++ {++ "kind": "pr",++ "title": "Live: a goal bar overlay",++ "url": "https://git.openvibe.codes/OpenVibers/OpenVibe.Live/pulls/871",++ "state": "open"++ }++ ],++ "counts": {++ "steps": 41,++ "children": 2,++ "files": 5++ },++ "budget": {++ "usd": 5,++ "steps": 400++ },++ "cost": {++ "usd": 0.84,++ "steps": 41,++ "by": {++ "machine": {++ "tokens": 182000++ },++ "credits": {++ "usd": 0.84,++ "tokens": 61000++ }++ }++ },++ "created_at": "2026-11-12T10:00:00Z",++ "updated_at": "2026-11-12T10:09:30Z",++ "ended_at": null,++ "mandate": {++ "source": "feed",++ "thread": {++ "service": "community",++ "kind": "post",++ "id": "pst_01K9R3A1B2C3D4E5F6G7H8J9KM",++ "url": "https://openvibe.community/p/pst_01K9R3A1B2C3D4E5F6G7H8J9KM"++ },++ "strength": "explicit",++ "scope": "Change OpenVibe.Live and open pull requests for the owner to review; never merge."++ },++ "play": "issue-to-pr"++}nnew file mode 100644@@@ -0,0 +1,95 @@++{++ "id": "tsk_01K9R2V6M8Q4T0B7C3D5E9F2GH",++ "ref": "codes:tsk_01K9R2V6M8Q4T0B7C3D5E9F2GH",++ "kind": "code",++ "title": "A dark mode toggle on the overlay page",++ "owner": {++ "type": "user",++ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"++ },++ "agent": {++ "id": "orchestrator",++ "name": "Codes",++ "product": "codes",++ "glyph": "code",++ "hue": 262,++ "harness": "codex",++ "capabilities": [++ "resume",++ "approvals",++ "subagents",++ "files",++ "shell",++ "mcp"++ ]++ },++ "target": "openvibe",++ "status": "running",++ "doing": {++ "text": "Reading OpenVibe.Live's overlay code",++ "glyph": "book-open"++ },++ "model": {++ "id": "plans/codex|gpt-6-sol",++ "source": "plans",++ "name": "GPT-6 Sol",++ "effort": "xhigh"++ },++ "where": {++ "kind": "runner",++ "id": "run_ws1",++ "name": "Workstation"++ },++ "outputs": [++ {++ "kind": "pr",++ "title": "Live: a goal bar overlay",++ "url": "https://git.openvibe.codes/OpenVibers/OpenVibe.Live/pulls/871",++ "state": "open"++ }++ ],++ "counts": {++ "steps": 41,++ "children": 2,++ "files": 5++ },++ "budget": {++ "usd": 5,++ "steps": 400++ },++ "cost": {++ "usd": 0.84,++ "steps": 41,++ "by": {++ "machine": {++ "tokens": 182000++ },++ "credits": {++ "usd": 0.84,++ "tokens": 61000++ },++ "gift": {++ "usd": 1++ }++ }++ },++ "created_at": "2026-11-12T10:00:00Z",++ "updated_at": "2026-11-12T10:09:30Z",++ "ended_at": null,++ "mandate": {++ "source": "feed",++ "thread": {++ "service": "community",++ "kind": "post",++ "id": "pst_01K9R3A1B2C3D4E5F6G7H8J9KM",++ "url": "https://openvibe.community/p/pst_01K9R3A1B2C3D4E5F6G7H8J9KM"++ },++ "asked_by": {++ "type": "user",++ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"++ },++ "strength": "explicit",++ "scope": "Change OpenVibe.Live and open pull requests for the owner to review; never merge."++ },++ "play": "issue-to-pr"++}nnew file mode 100644@@@ -0,0 +1,54 @@++{++ "id": "c_8f3k2mx",++ "ref": "chat:c_8f3k2mx",++ "kind": "chat",++ "title": "Keyboard Scout",++ "owner": {++ "type": "user",++ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"++ },++ "agent": {++ "id": "vibe",++ "name": "Keyboard Scout",++ "product": "chat",++ "glyph": "search",++ "hue": 212,++ "harness": "openvibe"++ },++ "status": "waiting",++ "waiting": {++ "for": "message",++ "since": "2026-11-12T10:02:00Z"++ },++ "preview": {++ "text": "Three picks under $90, with sources.",++ "from": "agent",++ "at": "2026-11-12T10:02:00Z"++ },++ "model": {++ "id": "openvibe/auto",++ "source": "openvibe",++ "name": "Auto"++ },++ "where": {++ "kind": "openvibe"++ },++ "context": {++ "site": "deals",++ "url": "https://openvibe.deals/",++ "title": "Deals"++ },++ "url": "https://openvibe.chat/vibe/c_8f3k2m",++ "counts": {++ "steps": 6,++ "unread": 1++ },++ "visibility": "private",++ "created_at": "2026-11-12T10:00:00Z",++ "updated_at": "2026-11-12T10:02:00Z",++ "lineage": {++ "from": "chat:c_8f3k2m",++ "at_turn": 3,++ "how": "fork"++ }++}nnew file mode 100644@@@ -0,0 +1,53 @@++{++ "id": "tsk_01K9R4C5D6E7F8G9H0J1K2M3NP",++ "ref": "codes:tsk_01K9R4C5D6E7F8G9H0J1K2M3NP",++ "kind": "code",++ "title": "Review: a dark mode toggle",++ "owner": {++ "type": "user",++ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"++ },++ "agent": {++ "id": "orchestrator",++ "name": "Codes",++ "product": "codes",++ "glyph": "code",++ "hue": 262,++ "harness": "codex"++ },++ "target": "openvibe",++ "status": "running",++ "doing": {++ "text": "Reading OpenVibe.Live's overlay code",++ "glyph": "book-open"++ },++ "model": {++ "id": "plans/codex|gpt-6-sol",++ "source": "plans",++ "name": "GPT-6 Sol",++ "effort": "xhigh"++ },++ "where": {++ "kind": "runner",++ "id": "run_ws1",++ "name": "Workstation"++ },++ "outputs": [],++ "counts": {++ "steps": 6++ },++ "budget": {++ "usd": 5,++ "steps": 400++ },++ "cost": {++ "usd": 0.84,++ "steps": 41++ },++ "created_at": "2026-11-12T10:00:00Z",++ "updated_at": "2026-11-12T10:09:30Z",++ "ended_at": null,++ "parent_run": "tsk_01K9R2V6M8Q4T0B7C3D5E9F2GH",++ "play": "issue-to-pr",++ "role": "reviewer"++}nnew file mode 100644@@@ -0,0 +1,92 @@++{++ "id": "tsk_01K9R2V6M8Q4T0B7C3D5E9F2GH",++ "ref": "codes:tsk_01K9R2V6M8Q4T0B7C3D5E9F2GH",++ "kind": "code",++ "title": "A dark mode toggle on the overlay page",++ "owner": {++ "type": "user",++ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"++ },++ "agent": {++ "id": "orchestrator",++ "name": "Codes",++ "product": "codes",++ "glyph": "code",++ "hue": 262,++ "harness": "codex",++ "capabilities": [++ "resume",++ "approvals",++ "subagents",++ "files",++ "shell",++ "mcp"++ ]++ },++ "target": "openvibe",++ "status": "running",++ "doing": {++ "text": "Reading OpenVibe.Live's overlay code",++ "glyph": "book-open"++ },++ "model": {++ "id": "plans/codex|gpt-6-sol",++ "source": "plans",++ "name": "GPT-6 Sol",++ "effort": "xhigh"++ },++ "where": {++ "kind": "runner",++ "id": "run_ws1",++ "name": "Workstation"++ },++ "outputs": [++ {++ "kind": "pr",++ "title": "Live: a goal bar overlay",++ "url": "https://git.openvibe.codes/OpenVibers/OpenVibe.Live/pulls/871",++ "state": "open"++ }++ ],++ "counts": {++ "steps": 41,++ "children": 2,++ "files": 5++ },++ "budget": {++ "usd": 5,++ "steps": 400++ },++ "cost": {++ "usd": 0.84,++ "steps": 41,++ "by": {++ "machine": {++ "tokens": 182000++ },++ "credits": {++ "usd": 0.84,++ "tokens": 61000++ }++ }++ },++ "created_at": "2026-11-12T10:00:00Z",++ "updated_at": "2026-11-12T10:09:30Z",++ "ended_at": null,++ "mandate": {++ "source": "feed",++ "thread": {++ "service": "community",++ "kind": "post",++ "id": "pst_01K9R3A1B2C3D4E5F6G7H8J9KM",++ "url": "https://openvibe.community/p/pst_01K9R3A1B2C3D4E5F6G7H8J9KM"++ },++ "asked_by": {++ "type": "user",++ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"++ },++ "strength": "explicit",++ "scope": "Change OpenVibe.Live and open pull requests for the owner to review; never merge."++ },++ "play": "issue-to-pr"++}nnew file mode 100644@@@ -0,0 +1,30 @@++{++ "id": "src_01K9R5ABCDEF",++ "kind": "carrier-pigeon",++ "name": "Asks on my feed",++ "owner": {++ "type": "user",++ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"++ },++ "on": true,++ "where": {++ "service": "community",++ "kind": "feed",++ "id": "home"++ },++ "who": {++ "may": "owner"++ },++ "rule": "A post that asks for a feature or reports a bug in OpenVibe.",++ "creates": {++ "kind": "code",++ "target": "openvibe",++ "play": "issue-to-pr"++ },++ "budget": {++ "usd": 5++ },++ "answer": "card",++ "created_at": "2026-11-12T11:00:00Z",++ "updated_at": "2026-11-12T11:00:00Z"++}nnew file mode 100644@@@ -0,0 +1,33 @@++{++ "id": "src_01K9R5ABCDEF",++ "kind": "feed",++ "name": "Asks on my feed",++ "owner": {++ "type": "user",++ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"++ },++ "on": true,++ "where": {++ "service": "community",++ "kind": "feed",++ "id": "home"++ },++ "who": {++ "may": "list",++ "list": [++ "[email protected]"++ ]++ },++ "rule": "A post that asks for a feature or reports a bug in OpenVibe.",++ "creates": {++ "kind": "code",++ "target": "openvibe",++ "play": "issue-to-pr"++ },++ "budget": {++ "usd": 5++ },++ "answer": "card",++ "created_at": "2026-11-12T11:00:00Z",++ "updated_at": "2026-11-12T11:00:00Z"++}nnew file mode 100644@@@ -0,0 +1,25 @@++{++ "id": "src_01K9R5ABCDEF",++ "kind": "feed",++ "name": "Asks on my feed",++ "owner": {++ "type": "user",++ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"++ },++ "on": true,++ "where": {++ "service": "community",++ "kind": "feed",++ "id": "home"++ },++ "who": {++ "may": "owner"++ },++ "rule": "A post that asks for a feature or reports a bug in OpenVibe.",++ "budget": {++ "usd": 5++ },++ "answer": "card",++ "created_at": "2026-11-12T11:00:00Z",++ "updated_at": "2026-11-12T11:00:00Z"++}nnew file mode 100644@@@ -0,0 +1,30 @@++{++ "id": "src_01K9R5ABCDEF",++ "kind": "feed",++ "name": "Asks on my feed",++ "owner": {++ "type": "user",++ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"++ },++ "on": true,++ "where": {++ "service": "community",++ "kind": "feed",++ "id": "home"++ },++ "who": {++ "may": "owner"++ },++ "rule": "A post that asks for a feature or reports a bug in OpenVibe.",++ "creates": {++ "kind": "code",++ "target": "openvibe",++ "play": "issue-to-pr"++ },++ "budget": {++ "usd": 5++ },++ "answer": "card",++ "created_at": "2026-11-12T11:00:00Z",++ "updated_at": "2026-11-12T11:00:00Z"++}nnew file mode 100644@@@ -0,0 +1,26 @@++{++ "id": "src_01K9R5GHJKMN",++ "kind": "chat",++ "owner": {++ "type": "user",++ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"++ },++ "on": true,++ "where": {++ "service": "chat",++ "kind": "room",++ "id": "design-crit",++ "url": "https://openvibe.chat/r/design-crit"++ },++ "who": {++ "may": "list",++ "list": [++ "usr_01K9R6PQRSTVWXYZ0123456789"++ ]++ },++ "rule": "A message that names @Vibe.",++ "creates": {++ "kind": "chat"++ },++ "answer": "reply"++}nnew file mode 100644@@@ -0,0 +1,29 @@++{++ "run_id": "tsk_01K9R2V6M8Q4T0B7C3D5E9F2GH",++ "seq": 7,++ "kind": "tool",++ "from": "tool",++ "status": "done",++ "title": "Typing in the search box",++ "glyph": "search",++ "text": "Typed \"mechanical keyboard 75%\" in the search box.",++ "tool_call": {++ "name": "computer.type",++ "input": {++ "text": "mechanical keyboard 75%"++ }++ },++ "desk": {++ "id": "desk_private_1",++ "still_url": "https://openvibe.media/s/still_01K9R2V6M8Q4T0B7C3D5E9F2GH.jpg",++ "action": {++ "type": "type",++ "x": 512,++ "y": 96,++ "text": "mechanical keyboard 75%"++ }++ },++ "started_at": "2026-11-12T10:03:00Z",++ "ended_at": "2026-11-12T10:03:01Z",++ "turn": -1++}nnew file mode 100644@@@ -0,0 +1,29 @@++{++ "run_id": "tsk_01K9R2V6M8Q4T0B7C3D5E9F2GH",++ "seq": 7,++ "kind": "tool",++ "from": "tool",++ "status": "done",++ "title": "Typing in the search box",++ "glyph": "search",++ "text": "Typed \"mechanical keyboard 75%\" in the search box.",++ "tool_call": {++ "name": "computer.type",++ "input": {++ "text": "mechanical keyboard 75%"++ }++ },++ "desk": {++ "id": "desk_private_1",++ "still_url": "https://openvibe.media/s/still_01K9R2V6M8Q4T0B7C3D5E9F2GH.jpg",++ "action": {++ "type": "type",++ "x": 512,++ "y": 96,++ "text": "mechanical keyboard 75%"++ }++ },++ "started_at": "2026-11-12T10:03:00Z",++ "ended_at": "2026-11-12T10:03:01Z",++ "turn": 2++}@@@ -135249,14 +135249,14 @@}},"agents.run": {-- "version": "1.1.0",++ "version": "1.2.0","owner": "actor","status": "active","schema": {"$schema": "https://json-schema.org/draft/2020-12/schema","$id": "https://openvibe.network/contracts/agents/run.v1.json","title": "AgentsRun",-- "description": "agents.run@1 (one agent system, 2026-11-12): one run of an agent, the same shape on every product (Actor, Codes, Run and anything else on openvibe-sdk/agents). The owner is the person or agent the work belongs to; AGENT names the agent or harness that runs it and the product it comes from; PARENT_RUN makes sub-agent runs a tree; BUDGET is the hard limit and COST what the run has spent; STATUS is where the run is now. The run is stored by its product, not here: this contract is the wire shape. GET /api/v1/runs, /api/v1/runs/{id} and /api/v1/runs/{id}/steps serve it (OpenVibe.Actor) and the SDK's runs client reads it. The product's own id is kept, never reused. A run that ends keeps its end status. Since 1.1.0 (agent-engine.md) a run also says what a person calls it (TITLE), what sort it is (KIND), where it lives (REF on the Frame, URL on its product), which model runs it and where, what it is doing now (DOING), what it waits for (WAITING), its last line (PREVIEW), where it was asked (CONTEXT) and what it made (OUTPUTS); a chat with Vibe is a run of KIND chat that is waiting for a message. Every added field is optional. This v1 contract may grow optional fields; a step is agents.step@1 and an approval is agents.approval@1.",++ "description": "agents.run@1 (one agent system, 2026-11-12): one run of an agent, the same shape on every product (Actor, Codes, Run and anything else on openvibe-sdk/agents). The owner is the person or agent the work belongs to; AGENT names the agent or harness that runs it and the product it comes from; PARENT_RUN makes sub-agent runs a tree; BUDGET is the hard limit and COST what the run has spent; STATUS is where the run is now. The run is stored by its product, not here: this contract is the wire shape. GET /api/v1/runs, /api/v1/runs/{id} and /api/v1/runs/{id}/steps serve it (OpenVibe.Actor) and the SDK's runs client reads it. The product's own id is kept, never reused. A run that ends keeps its end status. Since 1.1.0 (agent-engine.md) a run also says what a person calls it (TITLE), what sort it is (KIND), where it lives (REF on the Frame, URL on its product), which model runs it and where, what it is doing now (DOING), what it waits for (WAITING), its last line (PREVIEW), where it was asked (CONTEXT) and what it made (OUTPUTS); a chat with Vibe is a run of KIND chat that is waiting for a message. Every added field is optional. This v1 contract may grow optional fields; a step is agents.step@1 and an approval is agents.approval@1. Since 1.2.0 (agent-engine.md §§3-5, from the code study) a run may also say why it exists (MANDATE: an ask taken in from the feed, a room, an issue), what it continues (LINEAGE: a fork, a hand-off, a regenerated turn), the play its tree follows and a child's ROLE in it, what its agent's harness can do (AGENT.CAPABILITIES), and what it spent on each rung of the ladder (COST.BY). Every added field is optional.","type": "object","additionalProperties": false,"required": [@@@ -135288,7 +135288,7 @@"required": ["id"],-- "description": "The agent or harness that runs it. ID is the product's own agent id or slug; NAME is what a person reads; PRODUCT is the product it comes from (actor, codes, run, chat, …). GLYPH, HUE and AVATAR_URL are its face; HARNESS is the loop that runs it.",++ "description": "The agent or harness that runs it. ID is the product's own agent id or slug; NAME is what a person reads; PRODUCT is the product it comes from (actor, codes, run, chat, …). GLYPH, HUE and AVATAR_URL are its face; HARNESS is the loop that runs it. Since 1.2.0, CAPABILITIES says what its harness can do.","properties": {"id": {"type": "string",@@@ -135326,6 +135326,29 @@"type": "string","pattern": "^[a-z][a-z0-9-]{0,59}$","description": "The loop that runs it: openvibe (the SDK's own), or another harness run through an adapter (codex, claude-code, opencode, deepseek, …)."++ },++ "capabilities": {++ "type": "array",++ "uniqueItems": true,++ "maxItems": 20,++ "description": "What the agent's harness can do, so the Dispatcher chooses by capability and never by name: resume and fork a thread, ask approvals, read images, start sub-agents, use desks, browse, search the web, use MCP tools, plan before acting, read and write files, run a shell, speak and listen.",++ "items": {++ "enum": [++ "resume",++ "fork",++ "approvals",++ "images",++ "subagents",++ "desks",++ "browser",++ "web-search",++ "mcp",++ "plan-mode",++ "files",++ "shell",++ "voice"++ ]++ }}}},@@@ -135411,6 +135434,103 @@"steps": {"type": "integer","minimum": 0++ },++ "by": {++ "type": "object",++ "additionalProperties": false,++ "description": "The spend by rung of the Dispatcher's ladder (agent-engine.md §3): MACHINE, a model on the person's own computer (free); PLAN, a signed-in plan through its harness (flat); KEY, the person's own provider key (no fee); ALLOWANCE, OpenVibe's free allowance; CREDITS, bought (Exchange's offers). The parts add up to the run's own totals.",++ "properties": {++ "machine": {++ "type": "object",++ "additionalProperties": false,++ "properties": {++ "usd": {++ "type": "number",++ "minimum": 0++ },++ "tokens": {++ "type": "integer",++ "minimum": 0++ },++ "seconds": {++ "type": "number",++ "minimum": 0++ }++ }++ },++ "plan": {++ "type": "object",++ "additionalProperties": false,++ "properties": {++ "usd": {++ "type": "number",++ "minimum": 0++ },++ "tokens": {++ "type": "integer",++ "minimum": 0++ },++ "seconds": {++ "type": "number",++ "minimum": 0++ }++ }++ },++ "key": {++ "type": "object",++ "additionalProperties": false,++ "properties": {++ "usd": {++ "type": "number",++ "minimum": 0++ },++ "tokens": {++ "type": "integer",++ "minimum": 0++ },++ "seconds": {++ "type": "number",++ "minimum": 0++ }++ }++ },++ "allowance": {++ "type": "object",++ "additionalProperties": false,++ "properties": {++ "usd": {++ "type": "number",++ "minimum": 0++ },++ "tokens": {++ "type": "integer",++ "minimum": 0++ },++ "seconds": {++ "type": "number",++ "minimum": 0++ }++ }++ },++ "credits": {++ "type": "object",++ "additionalProperties": false,++ "properties": {++ "usd": {++ "type": "number",++ "minimum": 0++ },++ "tokens": {++ "type": "integer",++ "minimum": 0++ },++ "seconds": {++ "type": "number",++ "minimum": 0++ }++ }++ }++ }}}},@@@ -135747,19 +135867,152 @@],"format": "date-time","description": "When the run reached an end status. Null while it has not."++ },++ "mandate": {++ "type": [++ "object",++ "null"++ ],++ "additionalProperties": false,++ "required": [++ "source",++ "asked_by",++ "strength"++ ],++ "description": "Why the run exists when it came through intake (agent-engine.md §5): SOURCE is where the ask was made; THREAD is the conversation it was made in (a post, a room, an issue: its service, kind and id, and its address), where the run answers and from which later messages reach it; ASKED_BY is who asked; STRENGTH says whether they asked outright (explicit) or the Source's rule read an ask in what they wrote (inferred: such a run confirms before it acts); SCOPE says in words what the run may do for them. Null (or absent) for a run a person started themselves.",++ "properties": {++ "source": {++ "enum": [++ "feed",++ "chat",++ "comments",++ "git",++ "composer",++ "notifications",++ "mail",++ "schedule",++ "goal",++ "webhook",++ "machine"++ ]++ },++ "thread": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "service",++ "kind",++ "id"++ ],++ "properties": {++ "service": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,40}$"++ },++ "kind": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9_-]{0,40}$"++ },++ "id": {++ "type": "string",++ "minLength": 1,++ "maxLength": 200++ },++ "url": {++ "type": "string",++ "format": "uri",++ "pattern": "^https://",++ "maxLength": 2048++ }++ }++ },++ "asked_by": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "type",++ "id"++ ],++ "properties": {++ "type": {++ "enum": [++ "user",++ "agent",++ "service"++ ]++ },++ "id": {++ "type": "string",++ "minLength": 1,++ "maxLength": 160++ }++ }++ },++ "strength": {++ "enum": [++ "explicit",++ "inferred"++ ]++ },++ "scope": {++ "type": "string",++ "minLength": 1,++ "maxLength": 1000++ }++ }++ },++ "lineage": {++ "type": [++ "object",++ "null"++ ],++ "additionalProperties": false,++ "required": [++ "from",++ "how"++ ],++ "description": "Where the run came from when it continues another (agent-engine.md, from the code study): FROM is that run's ref; AT_TURN is the turn it was taken from (agents.step@1's TURN; the steps before it are the new run's history); HOW is fork (a person branched the conversation), handoff (another harness or model took it on, with a written summary as its first step) or regenerate (the same turn answered again). Null for a run that starts fresh.",++ "properties": {++ "from": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,40}:[A-Za-z0-9._~-]{1,160}$",++ "description": "A run's ref: the product, a colon, the product's own run id (agents.run@1's REF)."++ },++ "at_turn": {++ "type": "integer",++ "minimum": 0++ },++ "how": {++ "enum": [++ "fork",++ "handoff",++ "regenerate"++ ]++ }++ }++ },++ "play": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,60}$",++ "description": "The play (agents.play@1's ID) this run's tree follows: solo, advisor, plan-execute, fan-out, team, grader-loop, research-build, issue-to-pr, watch, or a person's own. On a child run it is its parent's."++ },++ "role": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,60}$",++ "description": "A child run's role in its parent's play (one of the play's role ids: planner, executor, advisor, grader, reviewer, searcher, worker…)."}}}},"agents.step": {-- "version": "1.1.0",++ "version": "1.2.0","owner": "actor","status": "active","schema": {"$schema": "https://json-schema.org/draft/2020-12/schema","$id": "https://openvibe.network/contracts/agents/step.v1.json","title": "AgentsStep",-- "description": "agents.step@1 (one agent system, 2026-11-12): one entry of a run's append-only step log, as GET /api/v1/runs/{id}/steps returns it and as agents.step.appended@1 publishes it. SEQ is the run's own order (1, 2, …), never renumbered; a reader pages with ?after=SEQ. KIND says what the entry is: think (a plan, a check, a note to self), tool (a tool call or its result), message (words for the person), approval (the run asked), child (a sub-agent or a hand-off) or file (a file the run made). TEXT is what a person reads; TOOL_CALL is the tool's name and input on a tool entry; RESULT is what came back. The product's own event may split a call and its result into two steps: both carry KIND tool and the call's seq is the earlier one. A step carries no credential, no key and no token; a secret a tool saw is redacted before it is stored. Since 1.1.0 (agent-engine.md) a step also says who spoke (FROM: the person's own words are steps too), whether it is still under way (STATUS), a short TITLE and GLYPH for a tool or a thought, the files that go with it (ATTACHMENTS), numbered SOURCES, a rich card (UI) and, where a computer was used, the DESK picture and action for replay. Every added field is optional.",++ "description": "agents.step@1 (one agent system, 2026-11-12): one entry of a run's append-only step log, as GET /api/v1/runs/{id}/steps returns it and as agents.step.appended@1 publishes it. SEQ is the run's own order (1, 2, …), never renumbered; a reader pages with ?after=SEQ. KIND says what the entry is: think (a plan, a check, a note to self), tool (a tool call or its result), message (words for the person), approval (the run asked), child (a sub-agent or a hand-off) or file (a file the run made). TEXT is what a person reads; TOOL_CALL is the tool's name and input on a tool entry; RESULT is what came back. The product's own event may split a call and its result into two steps: both carry KIND tool and the call's seq is the earlier one. A step carries no credential, no key and no token; a secret a tool saw is redacted before it is stored. Since 1.1.0 (agent-engine.md) a step also says who spoke (FROM: the person's own words are steps too), whether it is still under way (STATUS), a short TITLE and GLYPH for a tool or a thought, the files that go with it (ATTACHMENTS), numbered SOURCES, a rich card (UI) and, where a computer was used, the DESK picture and action for replay. Every added field is optional. Since 1.2.0 a step says the TURN it belongs to.","type": "object","additionalProperties": false,"required": [@@@ -136078,6 +136331,11 @@}}}++ },++ "turn": {++ "type": "integer",++ "minimum": 0,++ "description": "The turn the step belongs to. A person's message opens a turn (turn 0 is what the run started with); every step until their next message is in it. A fork, a hand-off or a regenerated answer starts at a turn boundary (agents.run@1's LINEAGE.AT_TURN)."}}}@@@ -136190,14 +136448,14 @@}},"agents.run-start": {-- "version": "1.0.0",++ "version": "1.1.0","owner": "network","status": "active","schema": {"$schema": "https://json-schema.org/draft/2020-12/schema","$id": "https://openvibe.network/contracts/agents/run-start.v1.json","title": "AgentsRunStart",-- "description": "agents.run-start@1 (agent-engine.md, 2026-11-12): what starts a run, the same on every product's POST /api/v1/runs and on the Frame's POST /api/frame/runs. Only TEXT is required: the goal, the question or the first message, in the person's own words. KIND chooses the sort of run (agents.run@1's kinds); absent, the Frame's orchestrator decides whether to answer, plan, or hand the work to another product as a child run. AGENT names who does it (an agent's id; auto lets the product choose). MODEL and WHERE are the picker's choices; TARGET is a code run's (new, openvibe or a repository); CONTEXT is where it was asked; ATTACHMENTS are files by Media id or address; SOURCES and DEPTH are an answer's (frame.ask@1's); PARENT_RUN makes it a sub-agent's run inside its parent's budget; BUDGET is its own hard limit. An Idempotency-Key header makes a repeated start return the first run.",++ "description": "agents.run-start@1 (agent-engine.md, 2026-11-12): what starts a run, the same on every product's POST /api/v1/runs and on the Frame's POST /api/frame/runs. Only TEXT is required: the goal, the question or the first message, in the person's own words. KIND chooses the sort of run (agents.run@1's kinds); absent, the Frame's orchestrator decides whether to answer, plan, or hand the work to another product as a child run. AGENT names who does it (an agent's id; auto lets the product choose). MODEL and WHERE are the picker's choices; TARGET is a code run's (new, openvibe or a repository); CONTEXT is where it was asked; ATTACHMENTS are files by Media id or address; SOURCES and DEPTH are an answer's (frame.ask@1's); PARENT_RUN makes it a sub-agent's run inside its parent's budget; BUDGET is its own hard limit. An Idempotency-Key header makes a repeated start return the first run. Since 1.1.0 a start may name a PLAY, continue another run (LINEAGE), and carry intake's MANDATE.","type": "object","additionalProperties": false,"required": [@@@ -136457,63 +136715,191 @@"minimum": 1}}-- }-- }-- }-- },-- "agents.event": {-- "version": "1.0.0",-- "owner": "network",-- "status": "active",-- "schema": {-- "$schema": "https://json-schema.org/draft/2020-12/schema",-- "$id": "https://openvibe.network/contracts/agents/event.v1.json",-- "title": "AgentsEvent",-- "description": "agents.event@1 (agent-engine.md, 2026-11-12): one event of a run's stream, GET /api/v1/runs/{id}/events (and /api/frame/runs/{ref}/events), as server-sent events whose event name is TYPE and whose id is the newest step's seq, so Last-Event-ID resumes after it. run: the run changed; RUN is its new snapshot. step: a step was appended; STEP is it, whole. delta: more TEXT for the step SEQ that is still being written (its STATUS is running); a reader appends it. approval: an approval was asked or answered; APPROVAL is it. end: the run reached an end status; the stream closes after it. A reader ignores a type it does not know.",-- "type": "object",-- "required": [-- "type"-- ],-- "properties": {-- "type": {-- "enum": [-- "run",-- "step",-- "delta",-- "approval",-- "end"-- ]-- },-- "run": {-- "$ref": "run.v1.json"-- },-- "step": {-- "$ref": "step.v1.json"-- },-- "approval": {-- "$ref": "approval.v1.json"-- },-- "run_id": {-- "type": "string",-- "minLength": 1,-- "maxLength": 160-- },-- "seq": {-- "type": "integer",-- "minimum": 1},-- "text": {++ "play": {"type": "string",-- "maxLength": 65536++ "pattern": "^[a-z][a-z0-9-]{0,60}$",++ "description": "The play to run (agents.play@1's ID); absent, the orchestrator chooses (most asks are solo)."},-- "status": {-- "enum": [-- "done",-- "failed",-- "stopped"-- ]-- }-- },++ "mandate": {++ "type": [++ "object",++ "null"++ ],++ "additionalProperties": false,++ "required": [++ "source",++ "asked_by",++ "strength"++ ],++ "description": "Set by intake, never by a browser: the Source, thread and asker the run is answering (agents.run@1's MANDATE). A product ignores it from a caller that is not the intake service.",++ "properties": {++ "source": {++ "enum": [++ "feed",++ "chat",++ "comments",++ "git",++ "composer",++ "notifications",++ "mail",++ "schedule",++ "goal",++ "webhook",++ "machine"++ ]++ },++ "thread": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "service",++ "kind",++ "id"++ ],++ "properties": {++ "service": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,40}$"++ },++ "kind": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9_-]{0,40}$"++ },++ "id": {++ "type": "string",++ "minLength": 1,++ "maxLength": 200++ },++ "url": {++ "type": "string",++ "format": "uri",++ "pattern": "^https://",++ "maxLength": 2048++ }++ }++ },++ "asked_by": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "type",++ "id"++ ],++ "properties": {++ "type": {++ "enum": [++ "user",++ "agent",++ "service"++ ]++ },++ "id": {++ "type": "string",++ "minLength": 1,++ "maxLength": 160++ }++ }++ },++ "strength": {++ "enum": [++ "explicit",++ "inferred"++ ]++ },++ "scope": {++ "type": "string",++ "minLength": 1,++ "maxLength": 1000++ }++ }++ },++ "lineage": {++ "type": [++ "object",++ "null"++ ],++ "additionalProperties": false,++ "required": [++ "from",++ "how"++ ],++ "description": "Start as a continuation of another run of the same person: a fork at a turn, a hand-off, or a regenerated turn (agents.run@1's LINEAGE).",++ "properties": {++ "from": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,40}:[A-Za-z0-9._~-]{1,160}$",++ "description": "A run's ref: the product, a colon, the product's own run id (agents.run@1's REF)."++ },++ "at_turn": {++ "type": "integer",++ "minimum": 0++ },++ "how": {++ "enum": [++ "fork",++ "handoff",++ "regenerate"++ ]++ }++ }++ }++ }++ }++ },++ "agents.event": {++ "version": "1.0.0",++ "owner": "network",++ "status": "active",++ "schema": {++ "$schema": "https://json-schema.org/draft/2020-12/schema",++ "$id": "https://openvibe.network/contracts/agents/event.v1.json",++ "title": "AgentsEvent",++ "description": "agents.event@1 (agent-engine.md, 2026-11-12): one event of a run's stream, GET /api/v1/runs/{id}/events (and /api/frame/runs/{ref}/events), as server-sent events whose event name is TYPE and whose id is the newest step's seq, so Last-Event-ID resumes after it. run: the run changed; RUN is its new snapshot. step: a step was appended; STEP is it, whole. delta: more TEXT for the step SEQ that is still being written (its STATUS is running); a reader appends it. approval: an approval was asked or answered; APPROVAL is it. end: the run reached an end status; the stream closes after it. A reader ignores a type it does not know.",++ "type": "object",++ "required": [++ "type"++ ],++ "properties": {++ "type": {++ "enum": [++ "run",++ "step",++ "delta",++ "approval",++ "end"++ ]++ },++ "run": {++ "$ref": "run.v1.json"++ },++ "step": {++ "$ref": "step.v1.json"++ },++ "approval": {++ "$ref": "approval.v1.json"++ },++ "run_id": {++ "type": "string",++ "minLength": 1,++ "maxLength": 160++ },++ "seq": {++ "type": "integer",++ "minimum": 1++ },++ "text": {++ "type": "string",++ "maxLength": 65536++ },++ "status": {++ "enum": [++ "done",++ "failed",++ "stopped"++ ]++ }++ },"additionalProperties": false,"allOf": [{@@@ -136619,6 +137005,476 @@"$ref": "../../agents/run.v1.json"}},++ "agents.play": {++ "version": "1.0.0",++ "owner": "network",++ "status": "active",++ "schema": {++ "$schema": "https://json-schema.org/draft/2020-12/schema",++ "$id": "https://openvibe.network/contracts/agents/play.v1.json",++ "title": "AgentsPlay",++ "description": "agents.play@1 (agent-engine.md §4, 2026-11-12): a named way for several agents to work on one ask, as data, so a person or an AI can write one and openvibe.run can list it. ROLES are the agents it uses (each with what it does, the size of model it wants, and how many may run at once); PHASES run in order, the roles in a phase together when PARALLEL; CHECKS say who checks whose work, against a written BAR; STOP says when the play is over; BUDGET.SPLIT gives each role its share of the parent's budget. The orchestrator turns a play into child runs (agents.run@1's PARENT_RUN, PLAY and ROLE). Rules every play keeps, whatever it says: a child's end never ends its parent; a person's message never waits behind new work; a child's budget is a slice of its parent's.",++ "type": "object",++ "additionalProperties": false,++ "required": [++ "id",++ "name",++ "roles",++ "stop"++ ],++ "properties": {++ "id": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,60}$"++ },++ "version": {++ "type": "integer",++ "minimum": 1++ },++ "name": {++ "type": "string",++ "minLength": 1,++ "maxLength": 120++ },++ "summary": {++ "type": "string",++ "minLength": 1,++ "maxLength": 1000,++ "description": "When to use it, in a sentence or two."++ },++ "roles": {++ "type": "array",++ "minItems": 1,++ "maxItems": 12,++ "items": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "id",++ "does"++ ],++ "properties": {++ "id": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,60}$"++ },++ "name": {++ "type": "string",++ "minLength": 1,++ "maxLength": 80++ },++ "does": {++ "type": "string",++ "minLength": 1,++ "maxLength": 2000,++ "description": "What this role does, as its instructions begin."++ },++ "model": {++ "enum": [++ "small",++ "strong",++ "same",++ "other-family"++ ],++ "description": "small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader)."++ },++ "agent": {++ "type": "string",++ "minLength": 1,++ "maxLength": 160,++ "description": "A particular agent's id, when the role is always the same agent."++ },++ "count": {++ "type": "object",++ "additionalProperties": false,++ "properties": {++ "min": {++ "type": "integer",++ "minimum": 1,++ "maximum": 64++ },++ "max": {++ "type": "integer",++ "minimum": 1,++ "maximum": 64++ }++ }++ },++ "consults": {++ "type": "integer",++ "minimum": 0,++ "maximum": 50,++ "description": "How many times another role may consult this one (an advisor's limit)."++ }++ }++ }++ },++ "phases": {++ "type": "array",++ "maxItems": 20,++ "items": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "id",++ "roles"++ ],++ "properties": {++ "id": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,60}$"++ },++ "name": {++ "type": "string",++ "minLength": 1,++ "maxLength": 120++ },++ "roles": {++ "type": "array",++ "minItems": 1,++ "maxItems": 12,++ "items": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,60}$"++ }++ },++ "parallel": {++ "type": "boolean"++ }++ }++ }++ },++ "checks": {++ "type": "array",++ "maxItems": 12,++ "items": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "by",++ "of"++ ],++ "properties": {++ "by": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,60}$"++ },++ "of": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,60}$"++ },++ "bar": {++ "type": "string",++ "minLength": 1,++ "maxLength": 2000,++ "description": "What passing means, in words the checker can apply."++ }++ }++ }++ },++ "stop": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "when"++ ],++ "properties": {++ "when": {++ "enum": [++ "done",++ "passes",++ "rounds",++ "person"++ ],++ "description": "done: when the last phase ends; passes: when the checks pass; rounds: after ROUNDS rounds; person: when the person says so."++ },++ "rounds": {++ "type": "integer",++ "minimum": 1,++ "maximum": 20++ }++ }++ },++ "budget": {++ "type": "object",++ "additionalProperties": false,++ "properties": {++ "split": {++ "type": "object",++ "propertyNames": {++ "pattern": "^[a-z][a-z0-9-]{0,60}$"++ },++ "additionalProperties": {++ "type": "number",++ "minimum": 0,++ "maximum": 1++ },++ "description": "Each role's share of the parent's budget (the shares add up to at most 1)."++ }++ }++ },++ "visibility": {++ "enum": [++ "private",++ "public"++ ]++ },++ "author": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "type",++ "id"++ ],++ "properties": {++ "type": {++ "enum": [++ "user",++ "agent",++ "service"++ ]++ },++ "id": {++ "type": "string",++ "minLength": 1,++ "maxLength": 160++ }++ }++ }++ }++ }++ },++ "agents.source": {++ "version": "1.0.0",++ "owner": "network",++ "status": "active",++ "schema": {++ "$schema": "https://json-schema.org/draft/2020-12/schema",++ "$id": "https://openvibe.network/contracts/agents/source.v1.json",++ "title": "AgentsSource",++ "description": "agents.source@1 (agent-engine.md §5, 2026-11-12): one place where asks are taken in without opening an agent app, and how. KIND is the place (the feed, chat rooms and DMs, comments, git.openvibe.codes, a composer, notifications, mail, a schedule or a goal, a webhook, a machine's events); ON turns it on; WHO says whose words may start work there (only its owner, a list of people, their followers, or anyone); RULE says in words what counts as an ask; CREATES is the run an accepted ask becomes (its kind, target, agent and play); BUDGET is each such run's hard limit; ANSWER is how the run speaks back on the thread (a reply, a card that follows the run, a notice, or nothing). Intake stores the ask first and acts after, with backoff; an inferred ask confirms before it acts (agents.run@1's MANDATE.STRENGTH).",++ "type": "object",++ "additionalProperties": false,++ "required": [++ "id",++ "kind",++ "owner",++ "on",++ "who",++ "creates"++ ],++ "properties": {++ "id": {++ "type": "string",++ "pattern": "^src_[A-Za-z0-9]{8,40}$"++ },++ "kind": {++ "enum": [++ "feed",++ "chat",++ "comments",++ "git",++ "composer",++ "notifications",++ "mail",++ "schedule",++ "goal",++ "webhook",++ "machine"++ ]++ },++ "name": {++ "type": "string",++ "minLength": 1,++ "maxLength": 120++ },++ "owner": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "type",++ "id"++ ],++ "properties": {++ "type": {++ "enum": [++ "user",++ "agent",++ "service"++ ]++ },++ "id": {++ "type": "string",++ "minLength": 1,++ "maxLength": 160++ }++ }++ },++ "on": {++ "type": "boolean"++ },++ "where": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "service"++ ],++ "description": "Which one of that kind: a room, a repository, a feed, a machine.",++ "properties": {++ "service": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,40}$"++ },++ "kind": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9_-]{0,40}$"++ },++ "id": {++ "type": "string",++ "minLength": 1,++ "maxLength": 200++ },++ "url": {++ "type": "string",++ "format": "uri",++ "pattern": "^https://",++ "maxLength": 2048++ }++ }++ },++ "who": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "may"++ ],++ "properties": {++ "may": {++ "enum": [++ "owner",++ "list",++ "followers",++ "anyone"++ ]++ },++ "list": {++ "type": "array",++ "maxItems": 200,++ "uniqueItems": true,++ "items": {++ "type": "string",++ "pattern": "^usr_[A-Za-z0-9]{6,40}$"++ }++ }++ }++ },++ "rule": {++ "type": "string",++ "minLength": 1,++ "maxLength": 2000,++ "description": "What counts as an ask here, in words (a post that asks for a feature or reports a bug; a message that names @Vibe)."++ },++ "creates": {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "kind"++ ],++ "properties": {++ "kind": {++ "enum": [++ "chat",++ "ask",++ "task",++ "code",++ "machine",++ "goal"++ ]++ },++ "target": {++ "description": "What a code run works on. new: a new project in the person's own space. openvibe: OpenVibe itself; the orchestrator finds the repositories and opens pull requests, never merges. An object names one repository.",++ "anyOf": [++ {++ "enum": [++ "new",++ "openvibe"++ ]++ },++ {++ "type": "object",++ "additionalProperties": false,++ "required": [++ "repo"++ ],++ "properties": {++ "repo": {++ "type": "string",++ "minLength": 1,++ "maxLength": 300,++ "description": "owner/name, or the repository's address."++ },++ "branch": {++ "type": "string",++ "minLength": 1,++ "maxLength": 200++ }++ }++ }++ ]++ },++ "agent": {++ "type": "string",++ "minLength": 1,++ "maxLength": 160++ },++ "play": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{0,60}$",++ "description": "The play (agents.play@1's ID) this run's tree follows: solo, advisor, plan-execute, fan-out, team, grader-loop, research-build, issue-to-pr, watch, or a person's own. On a child run it is its parent's."++ }++ }++ },++ "budget": {++ "type": "object",++ "additionalProperties": false,++ "properties": {++ "usd": {++ "type": "number",++ "minimum": 0++ },++ "tokens": {++ "type": "integer",++ "minimum": 0++ },++ "seconds": {++ "type": "number",++ "minimum": 0++ },++ "steps": {++ "type": "integer",++ "minimum": 1++ }++ }++ },++ "answer": {++ "enum": [++ "reply",++ "card",++ "notice",++ "none"++ ]++ },++ "created_at": {++ "type": "string",++ "format": "date-time"++ },++ "updated_at": {++ "type": "string",++ "format": "date-time"++ }++ }++ }++ },"feed.item": {"version": "1.0.0","owner": "network",@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Actor API",-- "version": "0.416.0",-- "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.Bench API",-- "version": "0.416.0",-- "description": "Routes of OpenVibe.Bench as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Bench as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.417.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 Connect API",-- "version": "0.416.0",-- "description": "Routes of OpenVibe Connect as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe Connect as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.Design API",-- "version": "0.416.0",-- "description": "Routes of OpenVibe.Design as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Design as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.Domains API",-- "version": "0.416.0",-- "description": "Routes of OpenVibe.Domains as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Domains as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.Exchange API",-- "version": "0.416.0",-- "description": "Routes of OpenVibe.Exchange as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Exchange as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.Git API",-- "version": "0.416.0",-- "description": "Routes of OpenVibe.Git as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Git as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.Mail API",-- "version": "0.416.0",-- "description": "Routes of OpenVibe.Mail as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Mail as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.Report API",-- "version": "0.416.0",-- "description": "Routes of OpenVibe.Report as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Report as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.Today API",-- "version": "0.416.0",-- "description": "Routes of OpenVibe.Today as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Today as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.Vision API",-- "version": "0.416.0",-- "description": "Routes of OpenVibe.Vision as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Vision as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",-- "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",++ "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.417.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"@@@ -342623,9 +342623,9 @@ export interface FrameMentions {];}--/** [email protected] (owner: actor) */++/** [email protected] (owner: actor) *//**-- * agents.run@1 (one agent system, 2026-11-12): one run of an agent, the same shape on every product (Actor, Codes, Run and anything else on openvibe-sdk/agents). The owner is the person or agent the work belongs to; AGENT names the agent or harness that runs it and the product it comes from; PARENT_RUN makes sub-agent runs a tree; BUDGET is the hard limit and COST what the run has spent; STATUS is where the run is now. The run is stored by its product, not here: this contract is the wire shape. GET /api/v1/runs, /api/v1/runs/{id} and /api/v1/runs/{id}/steps serve it (OpenVibe.Actor) and the SDK's runs client reads it. The product's own id is kept, never reused. A run that ends keeps its end status. Since 1.1.0 (agent-engine.md) a run also says what a person calls it (TITLE), what sort it is (KIND), where it lives (REF on the Frame, URL on its product), which model runs it and where, what it is doing now (DOING), what it waits for (WAITING), its last line (PREVIEW), where it was asked (CONTEXT) and what it made (OUTPUTS); a chat with Vibe is a run of KIND chat that is waiting for a message. Every added field is optional. This v1 contract may grow optional fields; a step is agents.step@1 and an approval is agents.approval@1.++ * agents.run@1 (one agent system, 2026-11-12): one run of an agent, the same shape on every product (Actor, Codes, Run and anything else on openvibe-sdk/agents). The owner is the person or agent the work belongs to; AGENT names the agent or harness that runs it and the product it comes from; PARENT_RUN makes sub-agent runs a tree; BUDGET is the hard limit and COST what the run has spent; STATUS is where the run is now. The run is stored by its product, not here: this contract is the wire shape. GET /api/v1/runs, /api/v1/runs/{id} and /api/v1/runs/{id}/steps serve it (OpenVibe.Actor) and the SDK's runs client reads it. The product's own id is kept, never reused. A run that ends keeps its end status. Since 1.1.0 (agent-engine.md) a run also says what a person calls it (TITLE), what sort it is (KIND), where it lives (REF on the Frame, URL on its product), which model runs it and where, what it is doing now (DOING), what it waits for (WAITING), its last line (PREVIEW), where it was asked (CONTEXT) and what it made (OUTPUTS); a chat with Vibe is a run of KIND chat that is waiting for a message. Every added field is optional. This v1 contract may grow optional fields; a step is agents.step@1 and an approval is agents.approval@1. Since 1.2.0 (agent-engine.md §§3-5, from the code study) a run may also say why it exists (MANDATE: an ask taken in from the feed, a room, an issue), what it continues (LINEAGE: a fork, a hand-off, a regenerated turn), the play its tree follows and a child's ROLE in it, what its agent's harness can do (AGENT.CAPABILITIES), and what it spent on each rung of the ladder (COST.BY). Every added field is optional.*/export interface AgentsRun {/**@@@ -342637,7 +342637,7 @@ export interface AgentsRun {*/owner: SubjectRef;/**-- * The agent or harness that runs it. ID is the product's own agent id or slug; NAME is what a person reads; PRODUCT is the product it comes from (actor, codes, run, chat, …). GLYPH, HUE and AVATAR_URL are its face; HARNESS is the loop that runs it.++ * The agent or harness that runs it. ID is the product's own agent id or slug; NAME is what a person reads; PRODUCT is the product it comes from (actor, codes, run, chat, …). GLYPH, HUE and AVATAR_URL are its face; HARNESS is the loop that runs it. Since 1.2.0, CAPABILITIES says what its harness can do.*/agent: {id: string;@@@ -342659,264 +342659,9746 @@ export interface AgentsRun {* The loop that runs it: openvibe (the SDK's own), or another harness run through an adapter (codex, claude-code, opencode, deepseek, …).*/harness?: string;-- };-- /**-- * The run that started this one (a sub-agent), or null. The parent's run card nests children; the child's budget is a slice of the parent's.-- */-- parent_run?: string | null;-- /**-- * The hard limit the run may not exceed. A field that is absent is not limited. USD is money; TOKENS counts model tokens in and out; SECONDS is wall time; STEPS counts the appended steps.-- */-- budget?: {-- usd?: number;-- tokens?: number;-- seconds?: number;-- steps?: number;-- };-- /**-- * planning: accepted, no step yet. running: a step is under way. waiting: the run waits for its person (an approval or a takeover) and costs nothing. done, failed and stopped are the end statuses; an end status never changes.-- */-- status: "planning" | "running" | "waiting" | "done" | "failed" | "stopped";-- created_at: string;-- /**-- * When the run last changed: its newest step, its end, or its creation when nothing has happened yet.-- */-- updated_at: string;-- /**-- * What the run answered or what is left, in plain words, for a run card. The full result stays the product's (Actor's result, Codes' result.summary). Null until there is one.-- */-- result_summary?: string | null;-- /**-- * What the run has spent so far, to the product's own precision. Null before anything is known.-- */-- cost?: {-- usd?: number;-- tokens?: number;-- seconds?: number;-- steps?: number;-- } | null;-- /**-- * What a person calls this run: a chat's name, a task's goal in a few words.-- */-- title?: string;-- /**-- * What sort of run it is. chat: a conversation that stays open. ask: one question and its answer. task: work an agent does for its person. code: a coding task. machine: a job on a computer or a robot. goal: a standing goal that runs on its own schedule. A product may add its own; a reader treats an unknown kind as task.-- */-- kind?: string;-- /**-- * The run's address on the Frame: its product, a colon, the product's own id (chat:…, codes:tsk_…, actor:tsk_…). /api/frame/runs/{ref} reads it wherever it lives.-- */-- ref?: string;-- /**-- * The run's own page on its product.-- */-- url?: string;-- /**-- * The model that runs it, as the picker chose it (frame.choices@1's choice, with the name a person reads). EFFORT is the reasoning effort where the model has one.-- */-- model?: {-- id: string;-- /**-- * openvibe: Exchange's directory, paid in credits. keys: the person's own key. machines: a model on the person's own computer (Link). plans: a signed-in plan through a harness.-- */-- source?: "openvibe" | "keys" | "machines" | "plans";-- machine?: string;-- name?: string;-- effort?: string;-- };-- /**-- * Where the run's work happens. openvibe: OpenVibe's own computers. machine: the person's own computer or robot through Link (ID is the device). runner: a Codes runner. this-computer: the machine that serves the run itself (Link's agent serve).-- */-- where?: {-- kind: "openvibe" | "machine" | "runner" | "this-computer";-- id?: string;-- name?: string;-- };-- /**-- * What a code run works on. new: a new project in the person's own space. openvibe: OpenVibe itself; the orchestrator finds the repositories and opens pull requests, never merges. An object names one repository.-- */-- target?:-- | ("new" | "openvibe")-- | {-- /**-- * owner/name, or the repository's address.-- */-- repo: string;-- branch?: string;-- };-- /**-- * What the run is doing now, for its agent's face: a few words and a glyph. Null when it is not working.-- */-- doing?: {-- text: string;-- /**-- * A glyph's name in the openvibe-shared glyph registry (openvibe.design/icons). A reader that does not know it draws its default.-- */-- glyph?: string;-- } | null;-- /**-- * Why a waiting run waits. message: it is the person's turn to speak (a conversation between turns). approval: it asked before an act (APPROVAL is the agents.approval@1 id). takeover: it met something only its person can do (a sign-in, a code). payment: it needs funds. WHAT says it in words. Null unless STATUS is waiting.-- */-- waiting?: {-- for: "message" | "approval" | "takeover" | "payment";-- what?: string;-- approval?: string;-- since?: string;-- } | null;-- /**-- * The last thing said in the run, for a list: the words, who said them and when.-- */-- preview?: {-- text: string;-- from?: "person" | "agent" | "system" | "tool";-- at?: string;-- } | null;-- /**-- * Where the run was asked: the site, the page and what the page is about. A run may use it; it never grants access.-- */-- context?: {-- site?: string;-- /**-- * The page's address.-- */-- url?: string;-- title?: string;-- kind?: string;-- id?: string;-- };-- /**-- * What the run made, newest last: for its card, and for the feed when it is shared.-- *-- * @maxItems 50-- */-- outputs?: {-- kind: "link" | "file" | "image" | "video" | "audio" | "pr" | "repo" | "page" | "post" | "run";-- title: string;-- /**-- * Where it is.-- */-- url?: string;-- /**-- * A small picture of it.-- */-- thumb?: string;-- media_id?: string;-- /**-- * A pull request's or a check's state in a word (open, green, red, merged).-- */-- state?: string;-- }[];-- /**-- * Counts a list shows without reading the steps.-- */-- counts?: {-- steps?: number;-- children?: number;-- files?: number;-- approvals?: number;-- unread?: number;-- };-- /**-- * Who may read the run: its owner only, people it was shared with, or anyone with its address.-- */-- visibility?: "private" | "shared" | "public";-- /**-- * When the run reached an end status. Null while it has not.-- */-- ended_at?: string | null;--}----/** [email protected] (owner: actor) */--/**-- * agents.step@1 (one agent system, 2026-11-12): one entry of a run's append-only step log, as GET /api/v1/runs/{id}/steps returns it and as agents.step.appended@1 publishes it. SEQ is the run's own order (1, 2, …), never renumbered; a reader pages with ?after=SEQ. KIND says what the entry is: think (a plan, a check, a note to self), tool (a tool call or its result), message (words for the person), approval (the run asked), child (a sub-agent or a hand-off) or file (a file the run made). TEXT is what a person reads; TOOL_CALL is the tool's name and input on a tool entry; RESULT is what came back. The product's own event may split a call and its result into two steps: both carry KIND tool and the call's seq is the earlier one. A step carries no credential, no key and no token; a secret a tool saw is redacted before it is stored. Since 1.1.0 (agent-engine.md) a step also says who spoke (FROM: the person's own words are steps too), whether it is still under way (STATUS), a short TITLE and GLYPH for a tool or a thought, the files that go with it (ATTACHMENTS), numbered SOURCES, a rich card (UI) and, where a computer was used, the DESK picture and action for replay. Every added field is optional.-- */--export interface AgentsStep {-- /**-- * The run this step belongs to (agents.run@1's id).-- */-- run_id: string;-- /**-- * The run's own order for this entry, starting at 1 and never renumbered. ?after=SEQ reads the entries after it.-- */-- seq: number;-- /**-- * think: a plan, a check or reasoning. tool: a tool call or its result. message: words for the person. approval: the run asked its person. child: a sub-agent run or a hand-off. file: a file the run made.-- */-- kind: "think" | "tool" | "message" | "approval" | "child" | "file";-- /**-- * What a person reads for this step: the plan line, the message, the short tool answer or the file's name. Never a prompt or a secret.-- */-- text?: string | null;-- /**-- * The tool this entry called. On a product that logs a call and its result as two steps, the call names the tool and the result entry has no TOOL_CALL.-- */-- tool_call?: {-- name: string;-- /**-- * The call's input, as the product recorded it: an object, a short summary string, or null. Credential-shaped fields are already redacted.-- */-- input?: {-- [k: string]: unknown | undefined;-- };-- } | null;-- /**-- * What the step answered: a tool's output, a check's verdict, a file's reference. Any JSON; never a credential.-- */-- result?: string | {} | unknown[] | number | boolean | null;-- /**-- * What this step spent, when the product meters per step. Null when it meters per run only.-- */-- cost?: {-- usd?: number;-- tokens?: number;-- seconds?: number;-- } | null;-- started_at: string;-- /**-- * When the step ended, when the product records an end. A product that logs a point event sets it to the event's time; null when the step is still open.-- */-- ended_at?: string | null;-- /**-- * The child run this step started, on KIND child. Null elsewhere.-- */-- child_run?: string | null;-- /**-- * Who this entry is from. person: the run's person (their message). agent: the agent. system: the product (a notice, a limit reached). tool: a tool's own words. Absent means agent.-- */-- from?: "person" | "agent" | "system" | "tool";-- /**-- * Who spoke, when a thread has several people or agents: a name and a picture. Absent for the run's own person and agent.-- */-- author?: {-- id?: string;-- name: string;/**-- * Their picture.++ * What the agent's harness can do, so the Dispatcher chooses by capability and never by name: resume and fork a thread, ask approvals, read images, start sub-agents, use desks, browse, search the web, use MCP tools, plan before acting, read and write files, run a shell, speak and listen.++ *++ * @maxItems 20*/-- avatar_url?: string;-- };-- /**-- * Whether the entry is still under way (a tool that runs, a message being written). Absent means done.-- */-- status?: "running" | "done" | "failed";-- /**-- * The entry in a few words, for a tool or a thought: "Searching the web", "Reading 3 files".-- */-- title?: string;-- /**-- * A glyph's name in the openvibe-shared glyph registry (openvibe.design/icons). A reader that does not know it draws its default.-- */-- glyph?: string;-- /**-- * @maxItems 20-- */-- attachments?:-- | []-- | [-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**++ capabilities?:++ | []++ | [++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ];++ };++ /**++ * The run that started this one (a sub-agent), or null. The parent's run card nests children; the child's budget is a slice of the parent's.++ */++ parent_run?: string | null;++ /**++ * The hard limit the run may not exceed. A field that is absent is not limited. USD is money; TOKENS counts model tokens in and out; SECONDS is wall time; STEPS counts the appended steps.++ */++ budget?: {++ usd?: number;++ tokens?: number;++ seconds?: number;++ steps?: number;++ };++ /**++ * planning: accepted, no step yet. running: a step is under way. waiting: the run waits for its person (an approval or a takeover) and costs nothing. done, failed and stopped are the end statuses; an end status never changes.++ */++ status: "planning" | "running" | "waiting" | "done" | "failed" | "stopped";++ created_at: string;++ /**++ * When the run last changed: its newest step, its end, or its creation when nothing has happened yet.++ */++ updated_at: string;++ /**++ * What the run answered or what is left, in plain words, for a run card. The full result stays the product's (Actor's result, Codes' result.summary). Null until there is one.++ */++ result_summary?: string | null;++ /**++ * What the run has spent so far, to the product's own precision. Null before anything is known.++ */++ cost?: {++ usd?: number;++ tokens?: number;++ seconds?: number;++ steps?: number;++ /**++ * The spend by rung of the Dispatcher's ladder (agent-engine.md §3): MACHINE, a model on the person's own computer (free); PLAN, a signed-in plan through its harness (flat); KEY, the person's own provider key (no fee); ALLOWANCE, OpenVibe's free allowance; CREDITS, bought (Exchange's offers). The parts add up to the run's own totals.++ */++ by?: {++ machine?: {++ usd?: number;++ tokens?: number;++ seconds?: number;++ };++ plan?: {++ usd?: number;++ tokens?: number;++ seconds?: number;++ };++ key?: {++ usd?: number;++ tokens?: number;++ seconds?: number;++ };++ allowance?: {++ usd?: number;++ tokens?: number;++ seconds?: number;++ };++ credits?: {++ usd?: number;++ tokens?: number;++ seconds?: number;++ };++ };++ } | null;++ /**++ * What a person calls this run: a chat's name, a task's goal in a few words.++ */++ title?: string;++ /**++ * What sort of run it is. chat: a conversation that stays open. ask: one question and its answer. task: work an agent does for its person. code: a coding task. machine: a job on a computer or a robot. goal: a standing goal that runs on its own schedule. A product may add its own; a reader treats an unknown kind as task.++ */++ kind?: string;++ /**++ * The run's address on the Frame: its product, a colon, the product's own id (chat:…, codes:tsk_…, actor:tsk_…). /api/frame/runs/{ref} reads it wherever it lives.++ */++ ref?: string;++ /**++ * The run's own page on its product.++ */++ url?: string;++ /**++ * The model that runs it, as the picker chose it (frame.choices@1's choice, with the name a person reads). EFFORT is the reasoning effort where the model has one.++ */++ model?: {++ id: string;++ /**++ * openvibe: Exchange's directory, paid in credits. keys: the person's own key. machines: a model on the person's own computer (Link). plans: a signed-in plan through a harness.++ */++ source?: "openvibe" | "keys" | "machines" | "plans";++ machine?: string;++ name?: string;++ effort?: string;++ };++ /**++ * Where the run's work happens. openvibe: OpenVibe's own computers. machine: the person's own computer or robot through Link (ID is the device). runner: a Codes runner. this-computer: the machine that serves the run itself (Link's agent serve).++ */++ where?: {++ kind: "openvibe" | "machine" | "runner" | "this-computer";++ id?: string;++ name?: string;++ };++ /**++ * What a code run works on. new: a new project in the person's own space. openvibe: OpenVibe itself; the orchestrator finds the repositories and opens pull requests, never merges. An object names one repository.++ */++ target?:++ | ("new" | "openvibe")++ | {++ /**++ * owner/name, or the repository's address.++ */++ repo: string;++ branch?: string;++ };++ /**++ * What the run is doing now, for its agent's face: a few words and a glyph. Null when it is not working.++ */++ doing?: {++ text: string;++ /**++ * A glyph's name in the openvibe-shared glyph registry (openvibe.design/icons). A reader that does not know it draws its default.++ */++ glyph?: string;++ } | null;++ /**++ * Why a waiting run waits. message: it is the person's turn to speak (a conversation between turns). approval: it asked before an act (APPROVAL is the agents.approval@1 id). takeover: it met something only its person can do (a sign-in, a code). payment: it needs funds. WHAT says it in words. Null unless STATUS is waiting.++ */++ waiting?: {++ for: "message" | "approval" | "takeover" | "payment";++ what?: string;++ approval?: string;++ since?: string;++ } | null;++ /**++ * The last thing said in the run, for a list: the words, who said them and when.++ */++ preview?: {++ text: string;++ from?: "person" | "agent" | "system" | "tool";++ at?: string;++ } | null;++ /**++ * Where the run was asked: the site, the page and what the page is about. A run may use it; it never grants access.++ */++ context?: {++ site?: string;++ /**++ * The page's address.++ */++ url?: string;++ title?: string;++ kind?: string;++ id?: string;++ };++ /**++ * What the run made, newest last: for its card, and for the feed when it is shared.++ *++ * @maxItems 50++ */++ outputs?: {++ kind: "link" | "file" | "image" | "video" | "audio" | "pr" | "repo" | "page" | "post" | "run";++ title: string;++ /**++ * Where it is.++ */++ url?: string;++ /**++ * A small picture of it.++ */++ thumb?: string;++ media_id?: string;++ /**++ * A pull request's or a check's state in a word (open, green, red, merged).++ */++ state?: string;++ }[];++ /**++ * Counts a list shows without reading the steps.++ */++ counts?: {++ steps?: number;++ children?: number;++ files?: number;++ approvals?: number;++ unread?: number;++ };++ /**++ * Who may read the run: its owner only, people it was shared with, or anyone with its address.++ */++ visibility?: "private" | "shared" | "public";++ /**++ * When the run reached an end status. Null while it has not.++ */++ ended_at?: string | null;++ /**++ * Why the run exists when it came through intake (agent-engine.md §5): SOURCE is where the ask was made; THREAD is the conversation it was made in (a post, a room, an issue: its service, kind and id, and its address), where the run answers and from which later messages reach it; ASKED_BY is who asked; STRENGTH says whether they asked outright (explicit) or the Source's rule read an ask in what they wrote (inferred: such a run confirms before it acts); SCOPE says in words what the run may do for them. Null (or absent) for a run a person started themselves.++ */++ mandate?: {++ source:++ | "feed"++ | "chat"++ | "comments"++ | "git"++ | "composer"++ | "notifications"++ | "mail"++ | "schedule"++ | "goal"++ | "webhook"++ | "machine";++ thread?: {++ service: string;++ kind: string;++ id: string;++ url?: string;++ };++ asked_by: {++ type: "user" | "agent" | "service";++ id: string;++ };++ strength: "explicit" | "inferred";++ scope?: string;++ } | null;++ /**++ * Where the run came from when it continues another (agent-engine.md, from the code study): FROM is that run's ref; AT_TURN is the turn it was taken from (agents.step@1's TURN; the steps before it are the new run's history); HOW is fork (a person branched the conversation), handoff (another harness or model took it on, with a written summary as its first step) or regenerate (the same turn answered again). Null for a run that starts fresh.++ */++ lineage?: {++ /**++ * A run's ref: the product, a colon, the product's own run id (agents.run@1's REF).++ */++ from: string;++ at_turn?: number;++ how: "fork" | "handoff" | "regenerate";++ } | null;++ /**++ * The play (agents.play@1's ID) this run's tree follows: solo, advisor, plan-execute, fan-out, team, grader-loop, research-build, issue-to-pr, watch, or a person's own. On a child run it is its parent's.++ */++ play?: string;++ /**++ * A child run's role in its parent's play (one of the play's role ids: planner, executor, advisor, grader, reviewer, searcher, worker…).++ */++ role?: string;++}++++/** [email protected] (owner: actor) */++/**++ * agents.step@1 (one agent system, 2026-11-12): one entry of a run's append-only step log, as GET /api/v1/runs/{id}/steps returns it and as agents.step.appended@1 publishes it. SEQ is the run's own order (1, 2, …), never renumbered; a reader pages with ?after=SEQ. KIND says what the entry is: think (a plan, a check, a note to self), tool (a tool call or its result), message (words for the person), approval (the run asked), child (a sub-agent or a hand-off) or file (a file the run made). TEXT is what a person reads; TOOL_CALL is the tool's name and input on a tool entry; RESULT is what came back. The product's own event may split a call and its result into two steps: both carry KIND tool and the call's seq is the earlier one. A step carries no credential, no key and no token; a secret a tool saw is redacted before it is stored. Since 1.1.0 (agent-engine.md) a step also says who spoke (FROM: the person's own words are steps too), whether it is still under way (STATUS), a short TITLE and GLYPH for a tool or a thought, the files that go with it (ATTACHMENTS), numbered SOURCES, a rich card (UI) and, where a computer was used, the DESK picture and action for replay. Every added field is optional. Since 1.2.0 a step says the TURN it belongs to.++ */++export interface AgentsStep {++ /**++ * The run this step belongs to (agents.run@1's id).++ */++ run_id: string;++ /**++ * The run's own order for this entry, starting at 1 and never renumbered. ?after=SEQ reads the entries after it.++ */++ seq: number;++ /**++ * think: a plan, a check or reasoning. tool: a tool call or its result. message: words for the person. approval: the run asked its person. child: a sub-agent run or a hand-off. file: a file the run made.++ */++ kind: "think" | "tool" | "message" | "approval" | "child" | "file";++ /**++ * What a person reads for this step: the plan line, the message, the short tool answer or the file's name. Never a prompt or a secret.++ */++ text?: string | null;++ /**++ * The tool this entry called. On a product that logs a call and its result as two steps, the call names the tool and the result entry has no TOOL_CALL.++ */++ tool_call?: {++ name: string;++ /**++ * The call's input, as the product recorded it: an object, a short summary string, or null. Credential-shaped fields are already redacted.++ */++ input?: {++ [k: string]: unknown | undefined;++ };++ } | null;++ /**++ * What the step answered: a tool's output, a check's verdict, a file's reference. Any JSON; never a credential.++ */++ result?: string | {} | unknown[] | number | boolean | null;++ /**++ * What this step spent, when the product meters per step. Null when it meters per run only.++ */++ cost?: {++ usd?: number;++ tokens?: number;++ seconds?: number;++ } | null;++ started_at: string;++ /**++ * When the step ended, when the product records an end. A product that logs a point event sets it to the event's time; null when the step is still open.++ */++ ended_at?: string | null;++ /**++ * The child run this step started, on KIND child. Null elsewhere.++ */++ child_run?: string | null;++ /**++ * Who this entry is from. person: the run's person (their message). agent: the agent. system: the product (a notice, a limit reached). tool: a tool's own words. Absent means agent.++ */++ from?: "person" | "agent" | "system" | "tool";++ /**++ * Who spoke, when a thread has several people or agents: a name and a picture. Absent for the run's own person and agent.++ */++ author?: {++ id?: string;++ name: string;++ /**++ * Their picture.++ */++ avatar_url?: string;++ };++ /**++ * Whether the entry is still under way (a tool that runs, a message being written). Absent means done.++ */++ status?: "running" | "done" | "failed";++ /**++ * The entry in a few words, for a tool or a thought: "Searching the web", "Reading 3 files".++ */++ title?: string;++ /**++ * A glyph's name in the openvibe-shared glyph registry (openvibe.design/icons). A reader that does not know it draws its default.++ */++ glyph?: string;++ /**++ * @maxItems 20++ */++ attachments?:++ | []++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ];++ /**++ * The sources a message cites, numbered as its text cites them ([1], [2]).++ *++ * @maxItems 40++ */++ sources?: {++ n: number;++ title?: string;++ /**++ * The source's address.++ */++ url: string;++ site?: string;++ }[];++ /**++ * A rich card for this entry. TYPE names it (link, table, code, diff, image, choice, timer, repo, desk, run, or a product's own, prefixed with its product: live-clip); DATA is that card's own content. A reader that does not know the type shows TEXT instead, so TEXT always says the same thing in words.++ */++ ui?: {++ type: string;++ data?: {};++ };++ /**++ * The computer this step used, for the screen tile and the replay: the desk, the picture it saw and what it did. A secret field is blanked before a still is stored.++ */++ desk?: {++ id: string;++ /**++ * The picture the step saw.++ */++ still_url?: string;++ action?: {++ type: string;++ x?: number;++ y?: number;++ text?: string;++ };++ };++ /**++ * The turn the step belongs to. A person's message opens a turn (turn 0 is what the run started with); every step until their next message is in it. A fork, a hand-off or a regenerated answer starts at a turn boundary (agents.run@1's LINEAGE.AT_TURN).++ */++ turn?: number;++}++++/** [email protected] (owner: actor) */++/**++ * agents.approval@1 (one agent system, 2026-11-12): a run stopped at a step to ask its person before it acts. WHAT is the act in plain words; OPTIONS are the answers the product offers, each with an id and the words a person reads; DECIDED_BY and DECIDED_AT are absent (or null) while it waits; ANSWER is the chosen option's id (or the person's own words, when the product allows them). Nothing the approval covers runs before the answer, and an answer decided once is never decided again. The approval is attached to the run's step (STEP_SEQ), so a step log and an approval list line up. OpenVibe.Actor's approval inbox and OpenVibe.Codes' tool approvals are the same shape; the product keeps the grant.++ */++export interface AgentsApproval {++ /**++ * The product's own approval id (apr_…), when it has one; STEP_SEQ is still the link to the run.++ */++ id?: string;++ run_id: string;++ /**++ * The seq of the run's step that asked (agents.step@1's seq).++ */++ step_seq: number;++ /**++ * The act in plain words, with its exact target: "post this to your feed", "run rm -rf build on your machine". Never a raw tool payload.++ */++ what: string;++ /**++ * The answers the product offers, in the order to show them. The floor categories (money, a password, a deletion, a new recipient) are asked every time and have no standing permission.++ *++ * @minItems 1++ * @maxItems 8++ */++ options:++ | [++ {++ id: string;++ label: string;++ }++ ]++ | [++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ }++ ]++ | [++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ }++ ]++ | [++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ }++ ]++ | [++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ }++ ]++ | [++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ }++ ]++ | [++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ }++ ]++ | [++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ },++ {++ id: string;++ label: string;++ }++ ];++ /**++ * Who answered: a person subject, a service or an agent.++ */++ decided_by?: SubjectRef | null;++ decided_at?: string | null;++ /**++ * The chosen option's id, or the person's own words when the product allows them. Null while it waits.++ */++ answer?: string | null;++}++++/** [email protected] (owner: actor) */++/**++ * agents.step.appended v1 (one agent system, 2026-11-12). A step was appended to a run: the payload is the appended agents.step@1, whole. OpenVibe.Events carries it with the run's owner as the subject, the product that ran it as the source (actor, codes, run, …) and visibility subject; a reader follows a run live without polling the step log. The namespace is agents (hyphen-free: Events namespaces cannot contain a hyphen). One producer per run: the product that stores the run publishes its steps, and the step's own product names the agent.++ */++export interface AgentsStepAppendedPayload {++ /**++ * The run this step belongs to (agents.run@1's id).++ */++ run_id: string;++ /**++ * The run's own order for this entry, starting at 1 and never renumbered. ?after=SEQ reads the entries after it.++ */++ seq: number;++ /**++ * think: a plan, a check or reasoning. tool: a tool call or its result. message: words for the person. approval: the run asked its person. child: a sub-agent run or a hand-off. file: a file the run made.++ */++ kind: "think" | "tool" | "message" | "approval" | "child" | "file";++ /**++ * What a person reads for this step: the plan line, the message, the short tool answer or the file's name. Never a prompt or a secret.++ */++ text?: string | null;++ /**++ * The tool this entry called. On a product that logs a call and its result as two steps, the call names the tool and the result entry has no TOOL_CALL.++ */++ tool_call?: {++ name: string;++ /**++ * The call's input, as the product recorded it: an object, a short summary string, or null. Credential-shaped fields are already redacted.++ */++ input?: {++ [k: string]: unknown | undefined;++ };++ } | null;++ /**++ * What the step answered: a tool's output, a check's verdict, a file's reference. Any JSON; never a credential.++ */++ result?: string | {} | unknown[] | number | boolean | null;++ /**++ * What this step spent, when the product meters per step. Null when it meters per run only.++ */++ cost?: {++ usd?: number;++ tokens?: number;++ seconds?: number;++ } | null;++ started_at: string;++ /**++ * When the step ended, when the product records an end. A product that logs a point event sets it to the event's time; null when the step is still open.++ */++ ended_at?: string | null;++ /**++ * The child run this step started, on KIND child. Null elsewhere.++ */++ child_run?: string | null;++ /**++ * Who this entry is from. person: the run's person (their message). agent: the agent. system: the product (a notice, a limit reached). tool: a tool's own words. Absent means agent.++ */++ from?: "person" | "agent" | "system" | "tool";++ /**++ * Who spoke, when a thread has several people or agents: a name and a picture. Absent for the run's own person and agent.++ */++ author?: {++ id?: string;++ name: string;++ /**++ * Their picture.++ */++ avatar_url?: string;++ };++ /**++ * Whether the entry is still under way (a tool that runs, a message being written). Absent means done.++ */++ status?: "running" | "done" | "failed";++ /**++ * The entry in a few words, for a tool or a thought: "Searching the web", "Reading 3 files".++ */++ title?: string;++ /**++ * A glyph's name in the openvibe-shared glyph registry (openvibe.design/icons). A reader that does not know it draws its default.++ */++ glyph?: string;++ /**++ * @maxItems 20++ */++ attachments?:++ | []++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /*** An https address the reader may fetch.*/url?: string;@@@ -342929,9 +352411,24 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- }-- ]-- | [++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -343018,9 +352515,7 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- }-- ]-- | [++ },{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -343088,9 +352583,7 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- }-- ]-- | [++ },{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -343175,9 +352668,24 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- }-- ]-- | [++ },++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -343229,6 +352737,25 @@ export interface AgentsStep {*/alt?: string;},++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -343279,9 +352806,7 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- }-- ]-- | [++ },{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -343400,9 +352925,7 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- }-- ]-- | [++ },{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -343693,9 +353216,7 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- }-- ]-- | [++ },{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -344054,9 +353575,7 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- }-- ]-- | [++ },{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -344209,7 +353728,115 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- },++ }++ ];++ /**++ * The sources a message cites, numbered as its text cites them ([1], [2]).++ *++ * @maxItems 40++ */++ sources?: {++ n: number;++ title?: string;++ /**++ * The source's address.++ */++ url: string;++ site?: string;++ }[];++ /**++ * A rich card for this entry. TYPE names it (link, table, code, diff, image, choice, timer, repo, desk, run, or a product's own, prefixed with its product: live-clip); DATA is that card's own content. A reader that does not know the type shows TEXT instead, so TEXT always says the same thing in words.++ */++ ui?: {++ type: string;++ data?: {};++ };++ /**++ * The computer this step used, for the screen tile and the replay: the desk, the picture it saw and what it did. A secret field is blanked before a still is stored.++ */++ desk?: {++ id: string;++ /**++ * The picture the step saw.++ */++ still_url?: string;++ action?: {++ type: string;++ x?: number;++ y?: number;++ text?: string;++ };++ };++ /**++ * The turn the step belongs to. A person's message opens a turn (turn 0 is what the run started with); every step until their next message is in it. A fork, a hand-off or a regenerated answer starts at a turn boundary (agents.run@1's LINEAGE.AT_TURN).++ */++ turn?: number;++}++++/** [email protected] (owner: network) */++/**++ * agents.run-start@1 (agent-engine.md, 2026-11-12): what starts a run, the same on every product's POST /api/v1/runs and on the Frame's POST /api/frame/runs. Only TEXT is required: the goal, the question or the first message, in the person's own words. KIND chooses the sort of run (agents.run@1's kinds); absent, the Frame's orchestrator decides whether to answer, plan, or hand the work to another product as a child run. AGENT names who does it (an agent's id; auto lets the product choose). MODEL and WHERE are the picker's choices; TARGET is a code run's (new, openvibe or a repository); CONTEXT is where it was asked; ATTACHMENTS are files by Media id or address; SOURCES and DEPTH are an answer's (frame.ask@1's); PARENT_RUN makes it a sub-agent's run inside its parent's budget; BUDGET is its own hard limit. An Idempotency-Key header makes a repeated start return the first run. Since 1.1.0 a start may name a PLAY, continue another run (LINEAGE), and carry intake's MANDATE.++ */++export interface AgentsRunStart {++ text: string;++ title?: string;++ kind?: string;++ /**++ * An agent's id on the product that will run it, or auto.++ */++ agent?: string;++ /**++ * The picker's choice (frame.choices@1). Absent: the person's default for this kind of work.++ */++ model?: {++ id: string;++ /**++ * openvibe: Exchange's directory, paid in credits. keys: the person's own key. machines: a model on the person's own computer (Link). plans: a signed-in plan through a harness.++ */++ source?: "openvibe" | "keys" | "machines" | "plans";++ machine?: string;++ name?: string;++ effort?: string;++ };++ /**++ * Where the run's work happens. openvibe: OpenVibe's own computers. machine: the person's own computer or robot through Link (ID is the device). runner: a Codes runner. this-computer: the machine that serves the run itself (Link's agent serve).++ */++ where?: {++ kind: "openvibe" | "machine" | "runner" | "this-computer";++ id?: string;++ name?: string;++ };++ /**++ * What a code run works on. new: a new project in the person's own space. openvibe: OpenVibe itself; the orchestrator finds the repositories and opens pull requests, never merges. An object names one repository.++ */++ target?:++ | ("new" | "openvibe")++ | {++ /**++ * owner/name, or the repository's address.++ */++ repo: string;++ branch?: string;++ };++ /**++ * Where the run was asked: the site, the page and what the page is about. A run may use it; it never grants access.++ */++ context?: {++ site?: string;++ /**++ * The page's address.++ */++ url?: string;++ title?: string;++ kind?: string;++ id?: string;++ };++ /**++ * @maxItems 20++ */++ attachments?:++ | []++ | [{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -344226,7 +353853,9 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- },++ }++ ]++ | [{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -344313,7 +353942,9 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- },++ }++ ]++ | [{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -344365,6 +353996,25 @@ export interface AgentsStep {*/alt?: string;},++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -344433,6 +354083,25 @@ export interface AgentsStep {*/alt?: string;},++ {++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ }++ ]++ | [{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -344483,9 +354152,7 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- }-- ]-- | [++ },{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -344536,7 +354203,9 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- },++ }++ ]++ | [{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -344655,7 +354324,9 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- },++ }++ ]++ | [{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -344723,9 +354394,7 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- }-- ]-- | [++ },{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -344793,7 +354462,9 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- },++ }++ ]++ | [{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -344946,7 +354617,9 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- },++ }++ ]++ | [{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -344980,9 +354653,7 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- }-- ]-- | [++ },{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -345118,7 +354789,9 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- },++ }++ ]++ | [{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -345254,9 +354927,7 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- }-- ]-- | [++ },{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -345307,7 +354978,9 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- },++ }++ ]++ | [{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -345511,7 +355184,9 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- },++ }++ ]++ | [{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -345545,9 +355220,7 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- }-- ]-- | [++ },{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -345734,7 +355407,9 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- },++ }++ ]++ | [{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -345853,9 +355528,7 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- }-- ]-- | [++ },{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -345974,7 +355647,9 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- },++ }++ ]++ | [{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -346178,9 +355853,7 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- }-- ]-- | [++ },{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -346231,7 +355904,9 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- },++ }++ ]++ | [{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -346503,7 +356178,9 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- },++ }++ ]++ | [{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -346520,330 +356197,177 @@ export interface AgentsStep {* What a picture shows, in words.*/alt?: string;-- }-- ];-- /**-- * The sources a message cites, numbered as its text cites them ([1], [2]).-- *-- * @maxItems 40-- */-- sources?: {-- n: number;-- title?: string;-- /**-- * The source's address.-- */-- url: string;-- site?: string;-- }[];-- /**-- * A rich card for this entry. TYPE names it (link, table, code, diff, image, choice, timer, repo, desk, run, or a product's own, prefixed with its product: live-clip); DATA is that card's own content. A reader that does not know the type shows TEXT instead, so TEXT always says the same thing in words.-- */-- ui?: {-- type: string;-- data?: {};-- };-- /**-- * The computer this step used, for the screen tile and the replay: the desk, the picture it saw and what it did. A secret field is blanked before a still is stored.-- */-- desk?: {-- id: string;-- /**-- * The picture the step saw.-- */-- still_url?: string;-- action?: {-- type: string;-- x?: number;-- y?: number;-- text?: string;-- };-- };--}----/** [email protected] (owner: actor) */--/**-- * agents.approval@1 (one agent system, 2026-11-12): a run stopped at a step to ask its person before it acts. WHAT is the act in plain words; OPTIONS are the answers the product offers, each with an id and the words a person reads; DECIDED_BY and DECIDED_AT are absent (or null) while it waits; ANSWER is the chosen option's id (or the person's own words, when the product allows them). Nothing the approval covers runs before the answer, and an answer decided once is never decided again. The approval is attached to the run's step (STEP_SEQ), so a step log and an approval list line up. OpenVibe.Actor's approval inbox and OpenVibe.Codes' tool approvals are the same shape; the product keeps the grant.-- */--export interface AgentsApproval {-- /**-- * The product's own approval id (apr_…), when it has one; STEP_SEQ is still the link to the run.-- */-- id?: string;-- run_id: string;-- /**-- * The seq of the run's step that asked (agents.step@1's seq).-- */-- step_seq: number;-- /**-- * The act in plain words, with its exact target: "post this to your feed", "run rm -rf build on your machine". Never a raw tool payload.-- */-- what: string;-- /**-- * The answers the product offers, in the order to show them. The floor categories (money, a password, a deletion, a new recipient) are asked every time and have no standing permission.-- *-- * @minItems 1-- * @maxItems 8-- */-- options:-- | [-- {-- id: string;-- label: string;-- }-- ]-- | [-- {-- id: string;-- label: string;-- },-- {-- id: string;-- label: string;-- }-- ]-- | [-- {-- id: string;-- label: string;-- },-- {-- id: string;-- label: string;-- },-- {-- id: string;-- label: string;-- }-- ]-- | [-- {-- id: string;-- label: string;-- },-- {-- id: string;-- label: string;-- },-- {-- id: string;-- label: string;-- },-- {-- id: string;-- label: string;-- }-- ]-- | [-- {-- id: string;-- label: string;-- },-- {-- id: string;-- label: string;-- },-- {-- id: string;-- label: string;-- },-- {-- id: string;-- label: string;-- },-- {-- id: string;-- label: string;-- }-- ]-- | [-- {-- id: string;-- label: string;-- },-- {-- id: string;-- label: string;-- },-- {-- id: string;-- label: string;-- },-- {-- id: string;-- label: string;-- },-- {-- id: string;-- label: string;-- },-- {-- id: string;-- label: string;-- }-- ]-- | [-- {-- id: string;-- label: string;-- },-- {-- id: string;-- label: string;-- },-- {-- id: string;-- label: string;-- },-- {-- id: string;-- label: string;},{-- id: string;-- label: string;++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;},{-- id: string;-- label: string;++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;},{-- id: string;-- label: string;-- }-- ]-- | [-- {-- id: string;-- label: string;++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;},{-- id: string;-- label: string;++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;},{-- id: string;-- label: string;++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;},{-- id: string;-- label: string;++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;},{-- id: string;-- label: string;++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;},{-- id: string;-- label: string;++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;},{-- id: string;-- label: string;++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;},{-- id: string;-- label: string;-- }-- ];-- /**-- * Who answered: a person subject, a service or an agent.-- */-- decided_by?: SubjectRef | null;-- decided_at?: string | null;-- /**-- * The chosen option's id, or the person's own words when the product allows them. Null while it waits.-- */-- answer?: string | null;--}----/** [email protected] (owner: actor) */--/**-- * agents.step.appended v1 (one agent system, 2026-11-12). A step was appended to a run: the payload is the appended agents.step@1, whole. OpenVibe.Events carries it with the run's owner as the subject, the product that ran it as the source (actor, codes, run, …) and visibility subject; a reader follows a run live without polling the step log. The namespace is agents (hyphen-free: Events namespaces cannot contain a hyphen). One producer per run: the product that stores the run publishes its steps, and the step's own product names the agent.-- */--export interface AgentsStepAppendedPayload {-- /**-- * The run this step belongs to (agents.run@1's id).-- */-- run_id: string;-- /**-- * The run's own order for this entry, starting at 1 and never renumbered. ?after=SEQ reads the entries after it.-- */-- seq: number;-- /**-- * think: a plan, a check or reasoning. tool: a tool call or its result. message: words for the person. approval: the run asked its person. child: a sub-agent run or a hand-off. file: a file the run made.-- */-- kind: "think" | "tool" | "message" | "approval" | "child" | "file";-- /**-- * What a person reads for this step: the plan line, the message, the short tool answer or the file's name. Never a prompt or a secret.-- */-- text?: string | null;-- /**-- * The tool this entry called. On a product that logs a call and its result as two steps, the call names the tool and the result entry has no TOOL_CALL.-- */-- tool_call?: {-- name: string;-- /**-- * The call's input, as the product recorded it: an object, a short summary string, or null. Credential-shaped fields are already redacted.-- */-- input?: {-- [k: string]: unknown | undefined;-- };-- } | null;-- /**-- * What the step answered: a tool's output, a check's verdict, a file's reference. Any JSON; never a credential.-- */-- result?: string | {} | unknown[] | number | boolean | null;-- /**-- * What this step spent, when the product meters per step. Null when it meters per run only.-- */-- cost?: {-- usd?: number;-- tokens?: number;-- seconds?: number;-- } | null;-- started_at: string;-- /**-- * When the step ended, when the product records an end. A product that logs a point event sets it to the event's time; null when the step is still open.-- */-- ended_at?: string | null;-- /**-- * The child run this step started, on KIND child. Null elsewhere.-- */-- child_run?: string | null;-- /**-- * Who this entry is from. person: the run's person (their message). agent: the agent. system: the product (a notice, a limit reached). tool: a tool's own words. Absent means agent.-- */-- from?: "person" | "agent" | "system" | "tool";-- /**-- * Who spoke, when a thread has several people or agents: a name and a picture. Absent for the run's own person and agent.-- */-- author?: {-- id?: string;-- name: string;-- /**-- * Their picture.-- */-- avatar_url?: string;-- };-- /**-- * Whether the entry is still under way (a tool that runs, a message being written). Absent means done.-- */-- status?: "running" | "done" | "failed";-- /**-- * The entry in a few words, for a tool or a thought: "Searching the web", "Reading 3 files".-- */-- title?: string;-- /**-- * A glyph's name in the openvibe-shared glyph registry (openvibe.design/icons). A reader that does not know it draws its default.-- */-- glyph?: string;-- /**-- * @maxItems 20-- */-- attachments?:-- | []-- | [++ kind: "image" | "file" | "audio" | "video";++ media_id?: string;++ /**++ * An https address the reader may fetch.++ */++ url?: string;++ name?: string;++ mime?: string;++ bytes?: number;++ width?: number;++ height?: number;++ /**++ * What a picture shows, in words.++ */++ alt?: string;++ },{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -346860,9 +356384,7 @@ export interface AgentsStepAppendedPayload {* What a picture shows, in words.*/alt?: string;-- }-- ]-- | [++ },{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -346896,9 +356418,7 @@ export interface AgentsStepAppendedPayload {* What a picture shows, in words.*/alt?: string;-- }-- ]-- | [++ },{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -347019,9 +356539,7 @@ export interface AgentsStepAppendedPayload {* What a picture shows, in words.*/alt?: string;-- }-- ]-- | [++ },{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -347106,9 +356624,7 @@ export interface AgentsStepAppendedPayload {* What a picture shows, in words.*/alt?: string;-- }-- ]-- | [++ },{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -347210,9 +356726,7 @@ export interface AgentsStepAppendedPayload {* What a picture shows, in words.*/alt?: string;-- }-- ]-- | [++ },{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -347263,7 +356777,9 @@ export interface AgentsStepAppendedPayload {* What a picture shows, in words.*/alt?: string;-- },++ }++ ]++ | [{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -347331,9 +356847,7 @@ export interface AgentsStepAppendedPayload {* What a picture shows, in words.*/alt?: string;-- }-- ]-- | [++ },{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -347469,9 +356983,7 @@ export interface AgentsStepAppendedPayload {* What a picture shows, in words.*/alt?: string;-- }-- ]-- | [++ },{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -347590,7 +357102,9 @@ export interface AgentsStepAppendedPayload {* What a picture shows, in words.*/alt?: string;-- },++ }++ ]++ | [{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -347624,9 +357138,7 @@ export interface AgentsStepAppendedPayload {* What a picture shows, in words.*/alt?: string;-- }-- ]-- | [++ },{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -347796,9 +357308,7 @@ export interface AgentsStepAppendedPayload {* What a picture shows, in words.*/alt?: string;-- }-- ]-- | [++ },{kind: "image" | "file" | "audio" | "video";media_id?: string;@@@ -347934,6482 +357444,10898 @@ export interface AgentsStepAppendedPayload {* What a picture shows, in words.*/alt?: string;-- },++ }++ ];++ /**++ * @maxItems 4++ */++ sources?:++ | []++ | ["web" | "openvibe" | "mine" | "page"]++ | ["web" | "openvibe" | "mine" | "page", "web" | "openvibe" | "mine" | "page"]++ | ["web" | "openvibe" | "mine" | "page", "web" | "openvibe" | "mine" | "page", "web" | "openvibe" | "mine" | "page"]++ | [++ "web" | "openvibe" | "mine" | "page",++ "web" | "openvibe" | "mine" | "page",++ "web" | "openvibe" | "mine" | "page",++ "web" | "openvibe" | "mine" | "page"++ ];++ depth?: "quick" | "balanced" | "deep";++ parent_run?: string;++ /**++ * The hard limit the run may not exceed. A field that is absent is not limited. USD is money; TOKENS counts model tokens in and out; SECONDS is wall time; STEPS counts the appended steps.++ */++ budget?: {++ usd?: number;++ tokens?: number;++ seconds?: number;++ steps?: number;++ };++ /**++ * The play to run (agents.play@1's ID); absent, the orchestrator chooses (most asks are solo).++ */++ play?: string;++ /**++ * Set by intake, never by a browser: the Source, thread and asker the run is answering (agents.run@1's MANDATE). A product ignores it from a caller that is not the intake service.++ */++ mandate?: {++ source:++ | "feed"++ | "chat"++ | "comments"++ | "git"++ | "composer"++ | "notifications"++ | "mail"++ | "schedule"++ | "goal"++ | "webhook"++ | "machine";++ thread?: {++ service: string;++ kind: string;++ id: string;++ url?: string;++ };++ asked_by: {++ type: "user" | "agent" | "service";++ id: string;++ };++ strength: "explicit" | "inferred";++ scope?: string;++ } | null;++ /**++ * Start as a continuation of another run of the same person: a fork at a turn, a hand-off, or a regenerated turn (agents.run@1's LINEAGE).++ */++ lineage?: {++ /**++ * A run's ref: the product, a colon, the product's own run id (agents.run@1's REF).++ */++ from: string;++ at_turn?: number;++ how: "fork" | "handoff" | "regenerate";++ } | null;++}++++/** [email protected] (owner: network) */++/**++ * agents.event@1 (agent-engine.md, 2026-11-12): one event of a run's stream, GET /api/v1/runs/{id}/events (and /api/frame/runs/{ref}/events), as server-sent events whose event name is TYPE and whose id is the newest step's seq, so Last-Event-ID resumes after it. run: the run changed; RUN is its new snapshot. step: a step was appended; STEP is it, whole. delta: more TEXT for the step SEQ that is still being written (its STATUS is running); a reader appends it. approval: an approval was asked or answered; APPROVAL is it. end: the run reached an end status; the stream closes after it. A reader ignores a type it does not know.++ */++export type AgentsEvent = {++ [k: string]: unknown | undefined;++} & {++ type: "run" | "step" | "delta" | "approval" | "end";++ run?: AgentsRun;++ step?: AgentsStep;++ approval?: AgentsApproval;++ run_id?: string;++ seq?: number;++ text?: string;++ status?: "done" | "failed" | "stopped";++};++++/** [email protected] (owner: actor) */++/**++ * agents.run.updated v1 (agent-engine.md, 2026-11-12). A run changed in a way a list shows: it started, its status, title, doing, waiting or preview changed, or it ended. The payload is the run's agents.run@1 snapshot, whole. OpenVibe.Events carries it with the run's owner as the subject, the product that stores it as the source and visibility subject, so the person's run list anywhere stays current without polling. A step is agents.step.appended; this event is not sent for every step, only when the snapshot a list draws changed (at most about once a second per run).++ */++export interface AgentsRunUpdatedPayload {++ /**++ * The product's own run id (Actor's tsk_…, Codes' tsk_…, a Run job's job_…). Unique within its product and never reused.++ */++ id: string;++ /**++ * The person or agent the run belongs to: the subject the work is done for.++ */++ owner: SubjectRef;++ /**++ * The agent or harness that runs it. ID is the product's own agent id or slug; NAME is what a person reads; PRODUCT is the product it comes from (actor, codes, run, chat, …). GLYPH, HUE and AVATAR_URL are its face; HARNESS is the loop that runs it. Since 1.2.0, CAPABILITIES says what its harness can do.++ */++ agent: {++ id: string;++ name?: string;++ product?: string;++ /**++ * The agent's face when it has no picture: a glyph from the registry. A chat's persona sets it per run.++ */++ glyph?: string;++ /**++ * The hue its face is tinted with.++ */++ hue?: number;++ /**++ * The agent's picture, when it has one.++ */++ avatar_url?: string;++ /**++ * The loop that runs it: openvibe (the SDK's own), or another harness run through an adapter (codex, claude-code, opencode, deepseek, …).++ */++ harness?: string;++ /**++ * What the agent's harness can do, so the Dispatcher chooses by capability and never by name: resume and fork a thread, ask approvals, read images, start sub-agents, use desks, browse, search the web, use MCP tools, plan before acting, read and write files, run a shell, speak and listen.++ *++ * @maxItems 20++ */++ capabilities?:++ | []++ | [++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ]++ | [++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ ),++ (++ | "resume"++ | "fork"++ | "approvals"++ | "images"++ | "subagents"++ | "desks"++ | "browser"++ | "web-search"++ | "mcp"++ | "plan-mode"++ | "files"++ | "shell"++ | "voice"++ )++ ];++ };++ /**++ * The run that started this one (a sub-agent), or null. The parent's run card nests children; the child's budget is a slice of the parent's.++ */++ parent_run?: string | null;++ /**++ * The hard limit the run may not exceed. A field that is absent is not limited. USD is money; TOKENS counts model tokens in and out; SECONDS is wall time; STEPS counts the appended steps.++ */++ budget?: {++ usd?: number;++ tokens?: number;++ seconds?: number;++ steps?: number;++ };++ /**++ * planning: accepted, no step yet. running: a step is under way. waiting: the run waits for its person (an approval or a takeover) and costs nothing. done, failed and stopped are the end statuses; an end status never changes.++ */++ status: "planning" | "running" | "waiting" | "done" | "failed" | "stopped";++ created_at: string;++ /**++ * When the run last changed: its newest step, its end, or its creation when nothing has happened yet.++ */++ updated_at: string;++ /**++ * What the run answered or what is left, in plain words, for a run card. The full result stays the product's (Actor's result, Codes' result.summary). Null until there is one.++ */++ result_summary?: string | null;++ /**++ * What the run has spent so far, to the product's own precision. Null before anything is known.++ */++ cost?: {++ usd?: number;++ tokens?: number;++ seconds?: number;++ steps?: number;++ /**++ * The spend by rung of the Dispatcher's ladder (agent-engine.md §3): MACHINE, a model on the person's own computer (free); PLAN, a signed-in plan through its harness (flat); KEY, the person's own provider key (no fee); ALLOWANCE, OpenVibe's free allowance; CREDITS, bought (Exchange's offers). The parts add up to the run's own totals.++ */++ by?: {++ machine?: {++ usd?: number;++ tokens?: number;++ seconds?: number;++ };++ plan?: {++ usd?: number;++ tokens?: number;++ seconds?: number;++ };++ key?: {++ usd?: number;++ tokens?: number;++ seconds?: number;++ };++ allowance?: {++ usd?: number;++ tokens?: number;++ seconds?: number;++ };++ credits?: {++ usd?: number;++ tokens?: number;++ seconds?: number;++ };++ };++ } | null;++ /**++ * What a person calls this run: a chat's name, a task's goal in a few words.++ */++ title?: string;++ /**++ * What sort of run it is. chat: a conversation that stays open. ask: one question and its answer. task: work an agent does for its person. code: a coding task. machine: a job on a computer or a robot. goal: a standing goal that runs on its own schedule. A product may add its own; a reader treats an unknown kind as task.++ */++ kind?: string;++ /**++ * The run's address on the Frame: its product, a colon, the product's own id (chat:…, codes:tsk_…, actor:tsk_…). /api/frame/runs/{ref} reads it wherever it lives.++ */++ ref?: string;++ /**++ * The run's own page on its product.++ */++ url?: string;++ /**++ * The model that runs it, as the picker chose it (frame.choices@1's choice, with the name a person reads). EFFORT is the reasoning effort where the model has one.++ */++ model?: {++ id: string;++ /**++ * openvibe: Exchange's directory, paid in credits. keys: the person's own key. machines: a model on the person's own computer (Link). plans: a signed-in plan through a harness.++ */++ source?: "openvibe" | "keys" | "machines" | "plans";++ machine?: string;++ name?: string;++ effort?: string;++ };++ /**++ * Where the run's work happens. openvibe: OpenVibe's own computers. machine: the person's own computer or robot through Link (ID is the device). runner: a Codes runner. this-computer: the machine that serves the run itself (Link's agent serve).++ */++ where?: {++ kind: "openvibe" | "machine" | "runner" | "this-computer";++ id?: string;++ name?: string;++ };++ /**++ * What a code run works on. new: a new project in the person's own space. openvibe: OpenVibe itself; the orchestrator finds the repositories and opens pull requests, never merges. An object names one repository.++ */++ target?:++ | ("new" | "openvibe")++ | {++ /**++ * owner/name, or the repository's address.++ */++ repo: string;++ branch?: string;++ };++ /**++ * What the run is doing now, for its agent's face: a few words and a glyph. Null when it is not working.++ */++ doing?: {++ text: string;++ /**++ * A glyph's name in the openvibe-shared glyph registry (openvibe.design/icons). A reader that does not know it draws its default.++ */++ glyph?: string;++ } | null;++ /**++ * Why a waiting run waits. message: it is the person's turn to speak (a conversation between turns). approval: it asked before an act (APPROVAL is the agents.approval@1 id). takeover: it met something only its person can do (a sign-in, a code). payment: it needs funds. WHAT says it in words. Null unless STATUS is waiting.++ */++ waiting?: {++ for: "message" | "approval" | "takeover" | "payment";++ what?: string;++ approval?: string;++ since?: string;++ } | null;++ /**++ * The last thing said in the run, for a list: the words, who said them and when.++ */++ preview?: {++ text: string;++ from?: "person" | "agent" | "system" | "tool";++ at?: string;++ } | null;++ /**++ * Where the run was asked: the site, the page and what the page is about. A run may use it; it never grants access.++ */++ context?: {++ site?: string;++ /**++ * The page's address.++ */++ url?: string;++ title?: string;++ kind?: string;++ id?: string;++ };++ /**++ * What the run made, newest last: for its card, and for the feed when it is shared.++ *++ * @maxItems 50++ */++ outputs?: {++ kind: "link" | "file" | "image" | "video" | "audio" | "pr" | "repo" | "page" | "post" | "run";++ title: string;++ /**++ * Where it is.++ */++ url?: string;++ /**++ * A small picture of it.++ */++ thumb?: string;++ media_id?: string;++ /**++ * A pull request's or a check's state in a word (open, green, red, merged).++ */++ state?: string;++ }[];++ /**++ * Counts a list shows without reading the steps.++ */++ counts?: {++ steps?: number;++ children?: number;++ files?: number;++ approvals?: number;++ unread?: number;++ };++ /**++ * Who may read the run: its owner only, people it was shared with, or anyone with its address.++ */++ visibility?: "private" | "shared" | "public";++ /**++ * When the run reached an end status. Null while it has not.++ */++ ended_at?: string | null;++ /**++ * Why the run exists when it came through intake (agent-engine.md §5): SOURCE is where the ask was made; THREAD is the conversation it was made in (a post, a room, an issue: its service, kind and id, and its address), where the run answers and from which later messages reach it; ASKED_BY is who asked; STRENGTH says whether they asked outright (explicit) or the Source's rule read an ask in what they wrote (inferred: such a run confirms before it acts); SCOPE says in words what the run may do for them. Null (or absent) for a run a person started themselves.++ */++ mandate?: {++ source:++ | "feed"++ | "chat"++ | "comments"++ | "git"++ | "composer"++ | "notifications"++ | "mail"++ | "schedule"++ | "goal"++ | "webhook"++ | "machine";++ thread?: {++ service: string;++ kind: string;++ id: string;++ url?: string;++ };++ asked_by: {++ type: "user" | "agent" | "service";++ id: string;++ };++ strength: "explicit" | "inferred";++ scope?: string;++ } | null;++ /**++ * Where the run came from when it continues another (agent-engine.md, from the code study): FROM is that run's ref; AT_TURN is the turn it was taken from (agents.step@1's TURN; the steps before it are the new run's history); HOW is fork (a person branched the conversation), handoff (another harness or model took it on, with a written summary as its first step) or regenerate (the same turn answered again). Null for a run that starts fresh.++ */++ lineage?: {++ /**++ * A run's ref: the product, a colon, the product's own run id (agents.run@1's REF).++ */++ from: string;++ at_turn?: number;++ how: "fork" | "handoff" | "regenerate";++ } | null;++ /**++ * The play (agents.play@1's ID) this run's tree follows: solo, advisor, plan-execute, fan-out, team, grader-loop, research-build, issue-to-pr, watch, or a person's own. On a child run it is its parent's.++ */++ play?: string;++ /**++ * A child run's role in its parent's play (one of the play's role ids: planner, executor, advisor, grader, reviewer, searcher, worker…).++ */++ role?: string;++}++++/** [email protected] (owner: network) */++/**++ * agents.play@1 (agent-engine.md §4, 2026-11-12): a named way for several agents to work on one ask, as data, so a person or an AI can write one and openvibe.run can list it. ROLES are the agents it uses (each with what it does, the size of model it wants, and how many may run at once); PHASES run in order, the roles in a phase together when PARALLEL; CHECKS say who checks whose work, against a written BAR; STOP says when the play is over; BUDGET.SPLIT gives each role its share of the parent's budget. The orchestrator turns a play into child runs (agents.run@1's PARENT_RUN, PLAY and ROLE). Rules every play keeps, whatever it says: a child's end never ends its parent; a person's message never waits behind new work; a child's budget is a slice of its parent's.++ */++export interface AgentsPlay {++ id: string;++ version?: number;++ name: string;++ /**++ * When to use it, in a sentence or two.++ */++ summary?: string;++ /**++ * @minItems 1++ * @maxItems 12++ */++ roles:++ | [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;-- /**-- * What a picture shows, in words.-- */-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;}]| [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;-- /**-- * What a picture shows, in words.-- */-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;-- /**-- * What a picture shows, in words.-- */-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;-- /**-- * What a picture shows, in words.-- */-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;-- /**-- * What a picture shows, in words.-- */-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;-- /**-- * What a picture shows, in words.-- */-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;-- /**-- * What a picture shows, in words.-- */-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;-- /**-- * What a picture shows, in words.-- */-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;-- /**-- * What a picture shows, in words.-- */-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.-- */-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ * What this role does, as its instructions begin.++ */++ does: string;/**-- * An https address the reader may fetch.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ model?: "small" | "strong" | "same" | "other-family";/**-- * What a picture shows, in words.++ * A particular agent's id, when the role is always the same agent.*/-- alt?: string;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };++ /**++ * How many times another role may consult this one (an advisor's limit).++ */++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;}]| [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;-- },++ consults?: number;++ }++ ]++ | [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;++ model?: "small" | "strong" | "same" | "other-family";++ /**++ * A particular agent's id, when the role is always the same agent.++ */++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };++ /**++ * How many times another role may consult this one (an advisor's limit).++ */++ consults?: number;}]| [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;++ model?: "small" | "strong" | "same" | "other-family";++ /**++ * A particular agent's id, when the role is always the same agent.++ */++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };++ /**++ * How many times another role may consult this one (an advisor's limit).++ */++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;++ /**++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).++ */++ model?: "small" | "strong" | "same" | "other-family";++ /**++ * A particular agent's id, when the role is always the same agent.++ */++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;-- },++ consults?: number;++ }++ ]++ | [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;++ model?: "small" | "strong" | "same" | "other-family";++ /**++ * A particular agent's id, when the role is always the same agent.++ */++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };++ /**++ * How many times another role may consult this one (an advisor's limit).++ */++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- }-- ]-- | [-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;-- },++ consults?: number;++ }++ ]++ | [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;++ /**++ * What this role does, as its instructions begin.++ */++ does: string;++ /**++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).++ */++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- }-- ]-- | [-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;-- },++ consults?: number;++ }++ ]++ | [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- }-- ]-- | [-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;-- },++ consults?: number;++ }++ ]++ | [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;++ model?: "small" | "strong" | "same" | "other-family";++ /**++ * A particular agent's id, when the role is always the same agent.++ */++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };++ /**++ * How many times another role may consult this one (an advisor's limit).++ */++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;++ /**++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).++ */++ model?: "small" | "strong" | "same" | "other-family";/**-- * What a picture shows, in words.++ * A particular agent's id, when the role is always the same agent.*/-- alt?: string;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };++ /**++ * How many times another role may consult this one (an advisor's limit).++ */++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;++ model?: "small" | "strong" | "same" | "other-family";++ /**++ * A particular agent's id, when the role is always the same agent.++ */++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };++ /**++ * How many times another role may consult this one (an advisor's limit).++ */++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;++ model?: "small" | "strong" | "same" | "other-family";++ /**++ * A particular agent's id, when the role is always the same agent.++ */++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };++ /**++ * How many times another role may consult this one (an advisor's limit).++ */++ consults?: number;}]| [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;++ model?: "small" | "strong" | "same" | "other-family";++ /**++ * A particular agent's id, when the role is always the same agent.++ */++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };++ /**++ * How many times another role may consult this one (an advisor's limit).++ */++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;++ /**++ * What this role does, as its instructions begin.++ */++ does: string;++ /**++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).++ */++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;}]| [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };++ /**++ * How many times another role may consult this one (an advisor's limit).++ */++ consults?: number;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * What this role does, as its instructions begin.++ */++ does: string;++ /**++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;++ model?: "small" | "strong" | "same" | "other-family";++ /**++ * A particular agent's id, when the role is always the same agent.++ */++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };++ /**++ * How many times another role may consult this one (an advisor's limit).++ */++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;++ model?: "small" | "strong" | "same" | "other-family";++ /**++ * A particular agent's id, when the role is always the same agent.++ */++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };++ /**++ * How many times another role may consult this one (an advisor's limit).++ */++ consults?: number;}]| [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;++ model?: "small" | "strong" | "same" | "other-family";++ /**++ * A particular agent's id, when the role is always the same agent.++ */++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };++ /**++ * How many times another role may consult this one (an advisor's limit).++ */++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;++ model?: "small" | "strong" | "same" | "other-family";++ /**++ * A particular agent's id, when the role is always the same agent.++ */++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };++ /**++ * How many times another role may consult this one (an advisor's limit).++ */++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;++ model?: "small" | "strong" | "same" | "other-family";++ /**++ * A particular agent's id, when the role is always the same agent.++ */++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };++ /**++ * How many times another role may consult this one (an advisor's limit).++ */++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;++ /**++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).++ */++ model?: "small" | "strong" | "same" | "other-family";++ /**++ * A particular agent's id, when the role is always the same agent.++ */++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * What this role does, as its instructions begin.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ does: string;/**-- * What a picture shows, in words.++ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).*/-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ model?: "small" | "strong" | "same" | "other-family";/**-- * An https address the reader may fetch.++ * A particular agent's id, when the role is always the same agent.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ agent?: string;++ count?: {++ min?: number;++ max?: number;++ };/**-- * What a picture shows, in words.++ * How many times another role may consult this one (an advisor's limit).*/-- alt?: string;++ consults?: number;}];-- /**-- * The sources a message cites, numbered as its text cites them ([1], [2]).-- *-- * @maxItems 40-- */-- sources?: {-- n: number;-- title?: string;-- /**-- * The source's address.-- */-- url: string;-- site?: string;-- }[];-- /**-- * A rich card for this entry. TYPE names it (link, table, code, diff, image, choice, timer, repo, desk, run, or a product's own, prefixed with its product: live-clip); DATA is that card's own content. A reader that does not know the type shows TEXT instead, so TEXT always says the same thing in words.-- */-- ui?: {-- type: string;-- data?: {};-- };-- /**-- * The computer this step used, for the screen tile and the replay: the desk, the picture it saw and what it did. A secret field is blanked before a still is stored.-- */-- desk?: {-- id: string;-- /**-- * The picture the step saw.-- */-- still_url?: string;-- action?: {-- type: string;-- x?: number;-- y?: number;-- text?: string;-- };-- };--}----/** [email protected] (owner: network) */--/**-- * agents.run-start@1 (agent-engine.md, 2026-11-12): what starts a run, the same on every product's POST /api/v1/runs and on the Frame's POST /api/frame/runs. Only TEXT is required: the goal, the question or the first message, in the person's own words. KIND chooses the sort of run (agents.run@1's kinds); absent, the Frame's orchestrator decides whether to answer, plan, or hand the work to another product as a child run. AGENT names who does it (an agent's id; auto lets the product choose). MODEL and WHERE are the picker's choices; TARGET is a code run's (new, openvibe or a repository); CONTEXT is where it was asked; ATTACHMENTS are files by Media id or address; SOURCES and DEPTH are an answer's (frame.ask@1's); PARENT_RUN makes it a sub-agent's run inside its parent's budget; BUDGET is its own hard limit. An Idempotency-Key header makes a repeated start return the first run.-- */--export interface AgentsRunStart {-- text: string;-- title?: string;-- kind?: string;-- /**-- * An agent's id on the product that will run it, or auto.-- */-- agent?: string;-- /**-- * The picker's choice (frame.choices@1). Absent: the person's default for this kind of work.-- */-- model?: {-- id: string;-- /**-- * openvibe: Exchange's directory, paid in credits. keys: the person's own key. machines: a model on the person's own computer (Link). plans: a signed-in plan through a harness.-- */-- source?: "openvibe" | "keys" | "machines" | "plans";-- machine?: string;-- name?: string;-- effort?: string;-- };-- /**-- * Where the run's work happens. openvibe: OpenVibe's own computers. machine: the person's own computer or robot through Link (ID is the device). runner: a Codes runner. this-computer: the machine that serves the run itself (Link's agent serve).-- */-- where?: {-- kind: "openvibe" | "machine" | "runner" | "this-computer";-- id?: string;-- name?: string;-- };-- /**-- * What a code run works on. new: a new project in the person's own space. openvibe: OpenVibe itself; the orchestrator finds the repositories and opens pull requests, never merges. An object names one repository.-- */-- target?:-- | ("new" | "openvibe")-- | {-- /**-- * owner/name, or the repository's address.-- */-- repo: string;-- branch?: string;-- };-- /**-- * Where the run was asked: the site, the page and what the page is about. A run may use it; it never grants access.-- */-- context?: {-- site?: string;-- /**-- * The page's address.-- */-- url?: string;-- title?: string;-- kind?: string;-- id?: string;-- };/*** @maxItems 20*/-- attachments?:++ phases?:| []| [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;++ /**++ * @minItems 1++ * @maxItems 12++ */++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ }++ ]++ | [++ {++ id: string;++ name?: string;++ /**++ * @minItems 1++ * @maxItems 12++ */++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;++ name?: string;++ /**++ * @minItems 1++ * @maxItems 12++ */++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ }++ ]++ | [++ {++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;++ name?: string;++ /**++ * @minItems 1++ * @maxItems 12++ */++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;}]| [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;}]| [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;}]| [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;}]| [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;}]| [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ }++ ]++ | [++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;-- }-- ]-- | [++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;}]| [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;}]| [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;}]| [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;}]| [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;}]| [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;}]| [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;}]| [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;}]-- | [-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ | [++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;}]| [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;}]| [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;}]| [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ id: string;++ name?: string;/**-- * An https address the reader may fetch.++ * @minItems 1++ * @maxItems 12*/-- url?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;++ },++ {++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;++ id: string;name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;/**-- * What a picture shows, in words.++ * @minItems 1++ * @maxItems 12*/-- alt?: string;++ roles:++ | [string]++ | [string, string]++ | [string, string, string]++ | [string, string, string, string]++ | [string, string, string, string, string]++ | [string, string, string, string, string, string]++ | [string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string]++ | [string, string, string, string, string, string, string, string, string, string, string, string];++ parallel?: boolean;}-- ]++ ];++ /**++ * @maxItems 12++ */++ checks?:++ | []| [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;-- /**-- * What a picture shows, in words.-- */-- alt?: string;-- },-- {-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ }++ ]++ | [++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ }++ ]++ | [++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;-- /**-- * An https address the reader may fetch.-- */-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ }++ ]++ | [++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ }++ ]++ | [++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;++ }++ ]++ | [++ {++ by: string;++ of: string;++ /**++ * What passing means, in words the checker can apply.++ */++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ }++ ]++ | [++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;-- },++ bar?: string;++ }++ ]++ | [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;}]| [{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ }++ ]++ | [++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ }++ ]++ | [++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;++ }++ ]++ | [++ {++ by: string;++ of: string;++ /**++ * What passing means, in words the checker can apply.++ */++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;},{-- kind: "image" | "file" | "audio" | "video";-- media_id?: string;++ by: string;++ of: string;/**-- * An https address the reader may fetch.++ * What passing means, in words the checker can apply.*/-- url?: string;-- name?: string;-- mime?: string;-- bytes?: number;-- width?: number;-- height?: number;++ bar?: string;++ },++ {++ by: string;++ of: string;++ /**++ * What passing means, in words the checker can apply.++ */++ bar?: string;++ },++ {++ by: string;++ of: string;/**-- * What a picture shows, in words.++ * What passing means, in words the checker can apply.*/-- alt?: string;++ bar?: string;}];-- /**-- * @maxItems 4-- */-- sources?:-- | []-- | ["web" | "openvibe" | "mine" | "page"]-- | ["web" | "openvibe" | "mine" | "page", "web" | "openvibe" | "mine" | "page"]-- | ["web" | "openvibe" | "mine" | "page", "web" | "openvibe" | "mine" | "page", "web" | "openvibe" | "mine" | "page"]-- | [-- "web" | "openvibe" | "mine" | "page",-- "web" | "openvibe" | "mine" | "page",-- "web" | "openvibe" | "mine" | "page",-- "web" | "openvibe" | "mine" | "page"-- ];-- depth?: "quick" | "balanced" | "deep";-- parent_run?: string;-- /**-- * The hard limit the run may not exceed. A field that is absent is not limited. USD is money; TOKENS counts model tokens in and out; SECONDS is wall time; STEPS counts the appended steps.-- */++ stop: {++ /**++ * done: when the last phase ends; passes: when the checks pass; rounds: after ROUNDS rounds; person: when the person says so.++ */++ when: "done" | "passes" | "rounds" | "person";++ rounds?: number;++ };budget?: {-- usd?: number;-- tokens?: number;-- seconds?: number;-- steps?: number;++ /**++ * Each role's share of the parent's budget (the shares add up to at most 1).++ */++ split?: {++ [k: string]: number | undefined;++ };++ };++ visibility?: "private" | "public";++ author?: {++ type: "user" | "agent" | "service";++ id: string;};}--/** [email protected] (owner: network) */--/**-- * agents.event@1 (agent-engine.md, 2026-11-12): one event of a run's stream, GET /api/v1/runs/{id}/events (and /api/frame/runs/{ref}/events), as server-sent events whose event name is TYPE and whose id is the newest step's seq, so Last-Event-ID resumes after it. run: the run changed; RUN is its new snapshot. step: a step was appended; STEP is it, whole. delta: more TEXT for the step SEQ that is still being written (its STATUS is running); a reader appends it. approval: an approval was asked or answered; APPROVAL is it. end: the run reached an end status; the stream closes after it. A reader ignores a type it does not know.-- */--export type AgentsEvent = {-- [k: string]: unknown | undefined;--} & {-- type: "run" | "step" | "delta" | "approval" | "end";-- run?: AgentsRun;-- step?: AgentsStep;-- approval?: AgentsApproval;-- run_id?: string;-- seq?: number;-- text?: string;-- status?: "done" | "failed" | "stopped";--};----/** [email protected] (owner: actor) */++/** [email protected] (owner: network) *//**-- * agents.run.updated v1 (agent-engine.md, 2026-11-12). A run changed in a way a list shows: it started, its status, title, doing, waiting or preview changed, or it ended. The payload is the run's agents.run@1 snapshot, whole. OpenVibe.Events carries it with the run's owner as the subject, the product that stores it as the source and visibility subject, so the person's run list anywhere stays current without polling. A step is agents.step.appended; this event is not sent for every step, only when the snapshot a list draws changed (at most about once a second per run).++ * agents.source@1 (agent-engine.md §5, 2026-11-12): one place where asks are taken in without opening an agent app, and how. KIND is the place (the feed, chat rooms and DMs, comments, git.openvibe.codes, a composer, notifications, mail, a schedule or a goal, a webhook, a machine's events); ON turns it on; WHO says whose words may start work there (only its owner, a list of people, their followers, or anyone); RULE says in words what counts as an ask; CREATES is the run an accepted ask becomes (its kind, target, agent and play); BUDGET is each such run's hard limit; ANSWER is how the run speaks back on the thread (a reply, a card that follows the run, a notice, or nothing). Intake stores the ask first and acts after, with backoff; an inferred ask confirms before it acts (agents.run@1's MANDATE.STRENGTH).*/--export interface AgentsRunUpdatedPayload {-- /**-- * The product's own run id (Actor's tsk_…, Codes' tsk_…, a Run job's job_…). Unique within its product and never reused.-- */++export interface AgentsSource {id: string;-- /**-- * The person or agent the run belongs to: the subject the work is done for.-- */-- owner: SubjectRef;-- /**-- * The agent or harness that runs it. ID is the product's own agent id or slug; NAME is what a person reads; PRODUCT is the product it comes from (actor, codes, run, chat, …). GLYPH, HUE and AVATAR_URL are its face; HARNESS is the loop that runs it.-- */-- agent: {-- id: string;-- name?: string;-- product?: string;-- /**-- * The agent's face when it has no picture: a glyph from the registry. A chat's persona sets it per run.-- */-- glyph?: string;-- /**-- * The hue its face is tinted with.-- */-- hue?: number;-- /**-- * The agent's picture, when it has one.-- */-- avatar_url?: string;-- /**-- * The loop that runs it: openvibe (the SDK's own), or another harness run through an adapter (codex, claude-code, opencode, deepseek, …).-- */-- harness?: string;-- };-- /**-- * The run that started this one (a sub-agent), or null. The parent's run card nests children; the child's budget is a slice of the parent's.-- */-- parent_run?: string | null;-- /**-- * The hard limit the run may not exceed. A field that is absent is not limited. USD is money; TOKENS counts model tokens in and out; SECONDS is wall time; STEPS counts the appended steps.-- */-- budget?: {-- usd?: number;-- tokens?: number;-- seconds?: number;-- steps?: number;-- };-- /**-- * planning: accepted, no step yet. running: a step is under way. waiting: the run waits for its person (an approval or a takeover) and costs nothing. done, failed and stopped are the end statuses; an end status never changes.-- */-- status: "planning" | "running" | "waiting" | "done" | "failed" | "stopped";-- created_at: string;-- /**-- * When the run last changed: its newest step, its end, or its creation when nothing has happened yet.-- */-- updated_at: string;-- /**-- * What the run answered or what is left, in plain words, for a run card. The full result stays the product's (Actor's result, Codes' result.summary). Null until there is one.-- */-- result_summary?: string | null;-- /**-- * What the run has spent so far, to the product's own precision. Null before anything is known.-- */-- cost?: {-- usd?: number;-- tokens?: number;-- seconds?: number;-- steps?: number;-- } | null;-- /**-- * What a person calls this run: a chat's name, a task's goal in a few words.-- */-- title?: string;-- /**-- * What sort of run it is. chat: a conversation that stays open. ask: one question and its answer. task: work an agent does for its person. code: a coding task. machine: a job on a computer or a robot. goal: a standing goal that runs on its own schedule. A product may add its own; a reader treats an unknown kind as task.-- */-- kind?: string;-- /**-- * The run's address on the Frame: its product, a colon, the product's own id (chat:…, codes:tsk_…, actor:tsk_…). /api/frame/runs/{ref} reads it wherever it lives.-- */-- ref?: string;-- /**-- * The run's own page on its product.-- */-- url?: string;-- /**-- * The model that runs it, as the picker chose it (frame.choices@1's choice, with the name a person reads). EFFORT is the reasoning effort where the model has one.-- */-- model?: {++ kind:++ | "feed"++ | "chat"++ | "comments"++ | "git"++ | "composer"++ | "notifications"++ | "mail"++ | "schedule"++ | "goal"++ | "webhook"++ | "machine";++ name?: string;++ owner: {++ type: "user" | "agent" | "service";id: string;-- /**-- * openvibe: Exchange's directory, paid in credits. keys: the person's own key. machines: a model on the person's own computer (Link). plans: a signed-in plan through a harness.-- */-- source?: "openvibe" | "keys" | "machines" | "plans";-- machine?: string;-- name?: string;-- effort?: string;};++ on: boolean;/**-- * Where the run's work happens. openvibe: OpenVibe's own computers. machine: the person's own computer or robot through Link (ID is the device). runner: a Codes runner. this-computer: the machine that serves the run itself (Link's agent serve).++ * Which one of that kind: a room, a repository, a feed, a machine.*/where?: {-- kind: "openvibe" | "machine" | "runner" | "this-computer";++ service: string;++ kind?: string;id?: string;-- name?: string;++ url?: string;};-- /**-- * What a code run works on. new: a new project in the person's own space. openvibe: OpenVibe itself; the orchestrator finds the repositories and opens pull requests, never merges. An object names one repository.-- */-- target?:-- | ("new" | "openvibe")-- | {-- /**-- * owner/name, or the repository's address.-- */-- repo: string;-- branch?: string;-- };-- /**-- * What the run is doing now, for its agent's face: a few words and a glyph. Null when it is not working.-- */-- doing?: {-- text: string;-- /**-- * A glyph's name in the openvibe-shared glyph registry (openvibe.design/icons). A reader that does not know it draws its default.-- */-- glyph?: string;-- } | null;-- /**-- * Why a waiting run waits. message: it is the person's turn to speak (a conversation between turns). approval: it asked before an act (APPROVAL is the agents.approval@1 id). takeover: it met something only its person can do (a sign-in, a code). payment: it needs funds. WHAT says it in words. Null unless STATUS is waiting.-- */-- waiting?: {-- for: "message" | "approval" | "takeover" | "payment";-- what?: string;-- approval?: string;-- since?: string;-- } | null;-- /**-- * The last thing said in the run, for a list: the words, who said them and when.-- */-- preview?: {-- text: string;-- from?: "person" | "agent" | "system" | "tool";-- at?: string;-- } | null;-- /**-- * Where the run was asked: the site, the page and what the page is about. A run may use it; it never grants access.-- */-- context?: {-- site?: string;++ who: {++ may: "owner" | "list" | "followers" | "anyone";/**-- * The page's address.++ * @maxItems 200*/-- url?: string;-- title?: string;-- kind?: string;-- id?: string;++ list?: string[];};/**-- * What the run made, newest last: for its card, and for the feed when it is shared.-- *-- * @maxItems 50++ * What counts as an ask here, in words (a post that asks for a feature or reports a bug; a message that names @Vibe).*/-- outputs?: {-- kind: "link" | "file" | "image" | "video" | "audio" | "pr" | "repo" | "page" | "post" | "run";-- title: string;-- /**-- * Where it is.-- */-- url?: string;++ rule?: string;++ creates: {++ kind: "chat" | "ask" | "task" | "code" | "machine" | "goal";/**-- * A small picture of it.++ * What a code run works on. new: a new project in the person's own space. openvibe: OpenVibe itself; the orchestrator finds the repositories and opens pull requests, never merges. An object names one repository.*/-- thumb?: string;-- media_id?: string;++ target?:++ | ("new" | "openvibe")++ | {++ /**++ * owner/name, or the repository's address.++ */++ repo: string;++ branch?: string;++ };++ agent?: string;/**-- * A pull request's or a check's state in a word (open, green, red, merged).++ * The play (agents.play@1's ID) this run's tree follows: solo, advisor, plan-execute, fan-out, team, grader-loop, research-build, issue-to-pr, watch, or a person's own. On a child run it is its parent's.*/-- state?: string;-- }[];-- /**-- * Counts a list shows without reading the steps.-- */-- counts?: {++ play?: string;++ };++ budget?: {++ usd?: number;++ tokens?: number;++ seconds?: number;steps?: number;-- children?: number;-- files?: number;-- approvals?: number;-- unread?: number;};-- /**-- * Who may read the run: its owner only, people it was shared with, or anyone with its address.-- */-- visibility?: "private" | "shared" | "public";-- /**-- * When the run reached an end status. Null while it has not.-- */-- ended_at?: string | null;++ answer?: "reply" | "card" | "notice" | "none";++ created_at?: string;++ updated_at?: string;}/** [email protected] (owner: network) */@@@ -1,6 +1,6 @@{"name": "openvibe-contracts",-- "version": "0.416.0",++ "version": "0.417.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",
@@ -1,17 +1,32 @@
@@ -1,17 +1,32 @@
# Changelog
# Changelog
-## Unreleased — a plain Stop, not an E-STOP
-
-Small hobby robots: the panel's Stop is one ordinary, optional control that sends the machine's own halt.
-
-- `bot.robot@1`: the description and the old latch field say it is legacy (always false); schemas are unchanged.
-- `bot.device-message@1`: the old latch frame and the `estop_*` fields are described as legacy names devices may still
- send, not as a remote latch; Bot's config always sends the latch false.
-- `bot.command-result@1`, `bot.robot-control-result@1`, `bot.robot-manage-result@1`, `bot.command.refused@1`: the old
- stop endpoint and refusal code are gone from the descriptions.
-- `bot.estop.set@1` and `bot.estop.cleared@1` are retired (fixtures and schemas stay for the contract window).
-- `ui.surface@1`: Stop is not a required part; `ui.action@1` no longer names an E-STOP; `ui.trigger@1` adds `stop`.
-- Manifests and ADRs use Stop; `bot.resource.control` stop sends halt and resume is a calm no-op.
+## 0.417.0 — 2026-11-12
+
+**The agent engine's next shapes:** who asked, what a run continues, how several agents share one ask, and where the
+money went (agent-engine.md §§3-5, from the code study). Every field is optional and the new contracts are new.
+
+- **`agents.run@1` 1.2.0:**
+ - `mandate`: an ask taken in from the feed, a room, an issue: where, by whom, explicit or inferred, and the scope;
+ - `lineage`: a fork, a hand-off or a regenerated turn, with the run and turn it came from;
+ - `play` and `role`;
+ - `agent.capabilities`;
+ - `cost.by`: the spend on each rung of the ladder (machine, plan, key, allowance, credits).
+- **`agents.step@1` 1.2.0:** `turn`.
+- **`agents.run-start@1` 1.1.0:** `play`, `lineage`, and `mandate` (from intake only).
+- **New `agents.play@1`:** a play as data, made of roles, phases, checks, a stop rule and a budget split. Fixtures:
+ advisor, grader loop, fan-out.
+- **New `agents.source@1`:** one place asks are taken in: who may ask, what counts as an ask, the run it becomes, its
+ budget, and how the run answers. Fixtures: the owner's feed, Vibe in a room.
+- **Stop is a plain control.** On small hobby robots, the panel's Stop is one ordinary, optional control that sends
+ the machine's own halt:
+ - `bot.robot@1`: the description and the old latch field say it is legacy (always false); schemas are unchanged.
+ - `bot.device-message@1`: the old latch frame and the `estop_*` fields are described as legacy names devices may
+ still send, not as a remote latch; Bot's config always sends the latch false.
+ - `bot.command-result@1`, `bot.robot-control-result@1`, `bot.robot-manage-result@1`, `bot.command.refused@1`: the
+ old stop endpoint and refusal code are gone from the descriptions.
+ - `bot.estop.set@1` and `bot.estop.cleared@1` are retired (fixtures and schemas stay for the contract window).
+ - `ui.surface@1`: Stop is not a required part; `ui.action@1` names Stop alone; `ui.trigger@1` adds `stop`.
+ - Manifests and ADRs use Stop; `bot.resource.control` stop sends halt and resume is a calm no-op.
## 0.416.0 — 2026-11-12
## 0.416.0 — 2026-11-12
new file mode 100644
new file mode 100644
@@ -0,0 +1,234 @@
@@ -0,0 +1,234 @@
+{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://openvibe.network/contracts/agents/play.v1.json",
+ "title": "AgentsPlay",
+ "description": "agents.play@1 (agent-engine.md §4, 2026-11-12): a named way for several agents to work on one ask, as data, so a person or an AI can write one and openvibe.run can list it. ROLES are the agents it uses (each with what it does, the size of model it wants, and how many may run at once); PHASES run in order, the roles in a phase together when PARALLEL; CHECKS say who checks whose work, against a written BAR; STOP says when the play is over; BUDGET.SPLIT gives each role its share of the parent's budget. The orchestrator turns a play into child runs (agents.run@1's PARENT_RUN, PLAY and ROLE). Rules every play keeps, whatever it says: a child's end never ends its parent; a person's message never waits behind new work; a child's budget is a slice of its parent's.",
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "id",
+ "name",
+ "roles",
+ "stop"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,60}$"
+ },
+ "version": {
+ "type": "integer",
+ "minimum": 1
+ },
+ "name": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 120
+ },
+ "summary": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 1000,
+ "description": "When to use it, in a sentence or two."
+ },
+ "roles": {
+ "type": "array",
+ "minItems": 1,
+ "maxItems": 12,
+ "items": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "id",
+ "does"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,60}$"
+ },
+ "name": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 80
+ },
+ "does": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 2000,
+ "description": "What this role does, as its instructions begin."
+ },
+ "model": {
+ "enum": [
+ "small",
+ "strong",
+ "same",
+ "other-family"
+ ],
+ "description": "small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader)."
+ },
+ "agent": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 160,
+ "description": "A particular agent's id, when the role is always the same agent."
+ },
+ "count": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "min": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 64
+ },
+ "max": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 64
+ }
+ }
+ },
+ "consults": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 50,
+ "description": "How many times another role may consult this one (an advisor's limit)."
+ }
+ }
+ }
+ },
+ "phases": {
+ "type": "array",
+ "maxItems": 20,
+ "items": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "id",
+ "roles"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,60}$"
+ },
+ "name": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 120
+ },
+ "roles": {
+ "type": "array",
+ "minItems": 1,
+ "maxItems": 12,
+ "items": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,60}$"
+ }
+ },
+ "parallel": {
+ "type": "boolean"
+ }
+ }
+ }
+ },
+ "checks": {
+ "type": "array",
+ "maxItems": 12,
+ "items": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "by",
+ "of"
+ ],
+ "properties": {
+ "by": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,60}$"
+ },
+ "of": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,60}$"
+ },
+ "bar": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 2000,
+ "description": "What passing means, in words the checker can apply."
+ }
+ }
+ }
+ },
+ "stop": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "when"
+ ],
+ "properties": {
+ "when": {
+ "enum": [
+ "done",
+ "passes",
+ "rounds",
+ "person"
+ ],
+ "description": "done: when the last phase ends; passes: when the checks pass; rounds: after ROUNDS rounds; person: when the person says so."
+ },
+ "rounds": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 20
+ }
+ }
+ },
+ "budget": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "split": {
+ "type": "object",
+ "propertyNames": {
+ "pattern": "^[a-z][a-z0-9-]{0,60}$"
+ },
+ "additionalProperties": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 1
+ },
+ "description": "Each role's share of the parent's budget (the shares add up to at most 1)."
+ }
+ }
+ },
+ "visibility": {
+ "enum": [
+ "private",
+ "public"
+ ]
+ },
+ "author": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "type",
+ "id"
+ ],
+ "properties": {
+ "type": {
+ "enum": [
+ "user",
+ "agent",
+ "service"
+ ]
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 160
+ }
+ }
+ }
+ }
+}
@@ -2,7 +2,7 @@
@@ -2,7 +2,7 @@
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://openvibe.network/contracts/agents/run-start.v1.json",
"$id": "https://openvibe.network/contracts/agents/run-start.v1.json",
"title": "AgentsRunStart",
"title": "AgentsRunStart",
- "description": "agents.run-start@1 (agent-engine.md, 2026-11-12): what starts a run, the same on every product's POST /api/v1/runs and on the Frame's POST /api/frame/runs. Only TEXT is required: the goal, the question or the first message, in the person's own words. KIND chooses the sort of run (agents.run@1's kinds); absent, the Frame's orchestrator decides whether to answer, plan, or hand the work to another product as a child run. AGENT names who does it (an agent's id; auto lets the product choose). MODEL and WHERE are the picker's choices; TARGET is a code run's (new, openvibe or a repository); CONTEXT is where it was asked; ATTACHMENTS are files by Media id or address; SOURCES and DEPTH are an answer's (frame.ask@1's); PARENT_RUN makes it a sub-agent's run inside its parent's budget; BUDGET is its own hard limit. An Idempotency-Key header makes a repeated start return the first run.",
+ "description": "agents.run-start@1 (agent-engine.md, 2026-11-12): what starts a run, the same on every product's POST /api/v1/runs and on the Frame's POST /api/frame/runs. Only TEXT is required: the goal, the question or the first message, in the person's own words. KIND chooses the sort of run (agents.run@1's kinds); absent, the Frame's orchestrator decides whether to answer, plan, or hand the work to another product as a child run. AGENT names who does it (an agent's id; auto lets the product choose). MODEL and WHERE are the picker's choices; TARGET is a code run's (new, openvibe or a repository); CONTEXT is where it was asked; ATTACHMENTS are files by Media id or address; SOURCES and DEPTH are an answer's (frame.ask@1's); PARENT_RUN makes it a sub-agent's run inside its parent's budget; BUDGET is its own hard limit. An Idempotency-Key header makes a repeated start return the first run. Since 1.1.0 a start may name a PLAY, continue another run (LINEAGE), and carry intake's MANDATE.",
"type": "object",
"type": "object",
"additionalProperties": false,
"additionalProperties": false,
"required": [
"required": [
@@ -262,6 +262,134 @@
@@ -262,6 +262,134 @@
"minimum": 1
"minimum": 1
}
}
}
}
+ },
+ "play": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,60}$",
+ "description": "The play to run (agents.play@1's ID); absent, the orchestrator chooses (most asks are solo)."
+ },
+ "mandate": {
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false,
+ "required": [
+ "source",
+ "asked_by",
+ "strength"
+ ],
+ "description": "Set by intake, never by a browser: the Source, thread and asker the run is answering (agents.run@1's MANDATE). A product ignores it from a caller that is not the intake service.",
+ "properties": {
+ "source": {
+ "enum": [
+ "feed",
+ "chat",
+ "comments",
+ "git",
+ "composer",
+ "notifications",
+ "mail",
+ "schedule",
+ "goal",
+ "webhook",
+ "machine"
+ ]
+ },
+ "thread": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "service",
+ "kind",
+ "id"
+ ],
+ "properties": {
+ "service": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,40}$"
+ },
+ "kind": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9_-]{0,40}$"
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 200
+ },
+ "url": {
+ "type": "string",
+ "format": "uri",
+ "pattern": "^https://",
+ "maxLength": 2048
+ }
+ }
+ },
+ "asked_by": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "type",
+ "id"
+ ],
+ "properties": {
+ "type": {
+ "enum": [
+ "user",
+ "agent",
+ "service"
+ ]
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 160
+ }
+ }
+ },
+ "strength": {
+ "enum": [
+ "explicit",
+ "inferred"
+ ]
+ },
+ "scope": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 1000
+ }
+ }
+ },
+ "lineage": {
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false,
+ "required": [
+ "from",
+ "how"
+ ],
+ "description": "Start as a continuation of another run of the same person: a fork at a turn, a hand-off, or a regenerated turn (agents.run@1's LINEAGE).",
+ "properties": {
+ "from": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,40}:[A-Za-z0-9._~-]{1,160}$",
+ "description": "A run's ref: the product, a colon, the product's own run id (agents.run@1's REF)."
+ },
+ "at_turn": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "how": {
+ "enum": [
+ "fork",
+ "handoff",
+ "regenerate"
+ ]
+ }
+ }
}
}
}
}
}
}
@@ -2,7 +2,7 @@
@@ -2,7 +2,7 @@
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://openvibe.network/contracts/agents/run.v1.json",
"$id": "https://openvibe.network/contracts/agents/run.v1.json",
"title": "AgentsRun",
"title": "AgentsRun",
- "description": "agents.run@1 (one agent system, 2026-11-12): one run of an agent, the same shape on every product (Actor, Codes, Run and anything else on openvibe-sdk/agents). The owner is the person or agent the work belongs to; AGENT names the agent or harness that runs it and the product it comes from; PARENT_RUN makes sub-agent runs a tree; BUDGET is the hard limit and COST what the run has spent; STATUS is where the run is now. The run is stored by its product, not here: this contract is the wire shape. GET /api/v1/runs, /api/v1/runs/{id} and /api/v1/runs/{id}/steps serve it (OpenVibe.Actor) and the SDK's runs client reads it. The product's own id is kept, never reused. A run that ends keeps its end status. Since 1.1.0 (agent-engine.md) a run also says what a person calls it (TITLE), what sort it is (KIND), where it lives (REF on the Frame, URL on its product), which model runs it and where, what it is doing now (DOING), what it waits for (WAITING), its last line (PREVIEW), where it was asked (CONTEXT) and what it made (OUTPUTS); a chat with Vibe is a run of KIND chat that is waiting for a message. Every added field is optional. This v1 contract may grow optional fields; a step is agents.step@1 and an approval is agents.approval@1.",
+ "description": "agents.run@1 (one agent system, 2026-11-12): one run of an agent, the same shape on every product (Actor, Codes, Run and anything else on openvibe-sdk/agents). The owner is the person or agent the work belongs to; AGENT names the agent or harness that runs it and the product it comes from; PARENT_RUN makes sub-agent runs a tree; BUDGET is the hard limit and COST what the run has spent; STATUS is where the run is now. The run is stored by its product, not here: this contract is the wire shape. GET /api/v1/runs, /api/v1/runs/{id} and /api/v1/runs/{id}/steps serve it (OpenVibe.Actor) and the SDK's runs client reads it. The product's own id is kept, never reused. A run that ends keeps its end status. Since 1.1.0 (agent-engine.md) a run also says what a person calls it (TITLE), what sort it is (KIND), where it lives (REF on the Frame, URL on its product), which model runs it and where, what it is doing now (DOING), what it waits for (WAITING), its last line (PREVIEW), where it was asked (CONTEXT) and what it made (OUTPUTS); a chat with Vibe is a run of KIND chat that is waiting for a message. Every added field is optional. This v1 contract may grow optional fields; a step is agents.step@1 and an approval is agents.approval@1. Since 1.2.0 (agent-engine.md §§3-5, from the code study) a run may also say why it exists (MANDATE: an ask taken in from the feed, a room, an issue), what it continues (LINEAGE: a fork, a hand-off, a regenerated turn), the play its tree follows and a child's ROLE in it, what its agent's harness can do (AGENT.CAPABILITIES), and what it spent on each rung of the ladder (COST.BY). Every added field is optional.",
"type": "object",
"type": "object",
"additionalProperties": false,
"additionalProperties": false,
"required": [
"required": [
@@ -34,7 +34,7 @@
@@ -34,7 +34,7 @@
"required": [
"required": [
"id"
"id"
],
],
- "description": "The agent or harness that runs it. ID is the product's own agent id or slug; NAME is what a person reads; PRODUCT is the product it comes from (actor, codes, run, chat, …). GLYPH, HUE and AVATAR_URL are its face; HARNESS is the loop that runs it.",
+ "description": "The agent or harness that runs it. ID is the product's own agent id or slug; NAME is what a person reads; PRODUCT is the product it comes from (actor, codes, run, chat, …). GLYPH, HUE and AVATAR_URL are its face; HARNESS is the loop that runs it. Since 1.2.0, CAPABILITIES says what its harness can do.",
"properties": {
"properties": {
"id": {
"id": {
"type": "string",
"type": "string",
@@ -72,6 +72,29 @@
@@ -72,6 +72,29 @@
"type": "string",
"type": "string",
"pattern": "^[a-z][a-z0-9-]{0,59}$",
"pattern": "^[a-z][a-z0-9-]{0,59}$",
"description": "The loop that runs it: openvibe (the SDK's own), or another harness run through an adapter (codex, claude-code, opencode, deepseek, …)."
"description": "The loop that runs it: openvibe (the SDK's own), or another harness run through an adapter (codex, claude-code, opencode, deepseek, …)."
+ },
+ "capabilities": {
+ "type": "array",
+ "uniqueItems": true,
+ "maxItems": 20,
+ "description": "What the agent's harness can do, so the Dispatcher chooses by capability and never by name: resume and fork a thread, ask approvals, read images, start sub-agents, use desks, browse, search the web, use MCP tools, plan before acting, read and write files, run a shell, speak and listen.",
+ "items": {
+ "enum": [
+ "resume",
+ "fork",
+ "approvals",
+ "images",
+ "subagents",
+ "desks",
+ "browser",
+ "web-search",
+ "mcp",
+ "plan-mode",
+ "files",
+ "shell",
+ "voice"
+ ]
+ }
}
}
}
}
},
},
@@ -157,6 +180,103 @@
@@ -157,6 +180,103 @@
"steps": {
"steps": {
"type": "integer",
"type": "integer",
"minimum": 0
"minimum": 0
+ },
+ "by": {
+ "type": "object",
+ "additionalProperties": false,
+ "description": "The spend by rung of the Dispatcher's ladder (agent-engine.md §3): MACHINE, a model on the person's own computer (free); PLAN, a signed-in plan through its harness (flat); KEY, the person's own provider key (no fee); ALLOWANCE, OpenVibe's free allowance; CREDITS, bought (Exchange's offers). The parts add up to the run's own totals.",
+ "properties": {
+ "machine": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "usd": {
+ "type": "number",
+ "minimum": 0
+ },
+ "tokens": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "seconds": {
+ "type": "number",
+ "minimum": 0
+ }
+ }
+ },
+ "plan": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "usd": {
+ "type": "number",
+ "minimum": 0
+ },
+ "tokens": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "seconds": {
+ "type": "number",
+ "minimum": 0
+ }
+ }
+ },
+ "key": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "usd": {
+ "type": "number",
+ "minimum": 0
+ },
+ "tokens": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "seconds": {
+ "type": "number",
+ "minimum": 0
+ }
+ }
+ },
+ "allowance": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "usd": {
+ "type": "number",
+ "minimum": 0
+ },
+ "tokens": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "seconds": {
+ "type": "number",
+ "minimum": 0
+ }
+ }
+ },
+ "credits": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "usd": {
+ "type": "number",
+ "minimum": 0
+ },
+ "tokens": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "seconds": {
+ "type": "number",
+ "minimum": 0
+ }
+ }
+ }
+ }
}
}
}
}
},
},
@@ -493,6 +613,139 @@
@@ -493,6 +613,139 @@
],
],
"format": "date-time",
"format": "date-time",
"description": "When the run reached an end status. Null while it has not."
"description": "When the run reached an end status. Null while it has not."
+ },
+ "mandate": {
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false,
+ "required": [
+ "source",
+ "asked_by",
+ "strength"
+ ],
+ "description": "Why the run exists when it came through intake (agent-engine.md §5): SOURCE is where the ask was made; THREAD is the conversation it was made in (a post, a room, an issue: its service, kind and id, and its address), where the run answers and from which later messages reach it; ASKED_BY is who asked; STRENGTH says whether they asked outright (explicit) or the Source's rule read an ask in what they wrote (inferred: such a run confirms before it acts); SCOPE says in words what the run may do for them. Null (or absent) for a run a person started themselves.",
+ "properties": {
+ "source": {
+ "enum": [
+ "feed",
+ "chat",
+ "comments",
+ "git",
+ "composer",
+ "notifications",
+ "mail",
+ "schedule",
+ "goal",
+ "webhook",
+ "machine"
+ ]
+ },
+ "thread": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "service",
+ "kind",
+ "id"
+ ],
+ "properties": {
+ "service": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,40}$"
+ },
+ "kind": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9_-]{0,40}$"
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 200
+ },
+ "url": {
+ "type": "string",
+ "format": "uri",
+ "pattern": "^https://",
+ "maxLength": 2048
+ }
+ }
+ },
+ "asked_by": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "type",
+ "id"
+ ],
+ "properties": {
+ "type": {
+ "enum": [
+ "user",
+ "agent",
+ "service"
+ ]
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 160
+ }
+ }
+ },
+ "strength": {
+ "enum": [
+ "explicit",
+ "inferred"
+ ]
+ },
+ "scope": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 1000
+ }
+ }
+ },
+ "lineage": {
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false,
+ "required": [
+ "from",
+ "how"
+ ],
+ "description": "Where the run came from when it continues another (agent-engine.md, from the code study): FROM is that run's ref; AT_TURN is the turn it was taken from (agents.step@1's TURN; the steps before it are the new run's history); HOW is fork (a person branched the conversation), handoff (another harness or model took it on, with a written summary as its first step) or regenerate (the same turn answered again). Null for a run that starts fresh.",
+ "properties": {
+ "from": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,40}:[A-Za-z0-9._~-]{1,160}$",
+ "description": "A run's ref: the product, a colon, the product's own run id (agents.run@1's REF)."
+ },
+ "at_turn": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "how": {
+ "enum": [
+ "fork",
+ "handoff",
+ "regenerate"
+ ]
+ }
+ }
+ },
+ "play": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,60}$",
+ "description": "The play (agents.play@1's ID) this run's tree follows: solo, advisor, plan-execute, fan-out, team, grader-loop, research-build, issue-to-pr, watch, or a person's own. On a child run it is its parent's."
+ },
+ "role": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,60}$",
+ "description": "A child run's role in its parent's play (one of the play's role ids: planner, executor, advisor, grader, reviewer, searcher, worker…)."
}
}
}
}
}
}
new file mode 100644
new file mode 100644
@@ -0,0 +1,226 @@
@@ -0,0 +1,226 @@
+{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://openvibe.network/contracts/agents/source.v1.json",
+ "title": "AgentsSource",
+ "description": "agents.source@1 (agent-engine.md §5, 2026-11-12): one place where asks are taken in without opening an agent app, and how. KIND is the place (the feed, chat rooms and DMs, comments, git.openvibe.codes, a composer, notifications, mail, a schedule or a goal, a webhook, a machine's events); ON turns it on; WHO says whose words may start work there (only its owner, a list of people, their followers, or anyone); RULE says in words what counts as an ask; CREATES is the run an accepted ask becomes (its kind, target, agent and play); BUDGET is each such run's hard limit; ANSWER is how the run speaks back on the thread (a reply, a card that follows the run, a notice, or nothing). Intake stores the ask first and acts after, with backoff; an inferred ask confirms before it acts (agents.run@1's MANDATE.STRENGTH).",
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "id",
+ "kind",
+ "owner",
+ "on",
+ "who",
+ "creates"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "pattern": "^src_[A-Za-z0-9]{8,40}$"
+ },
+ "kind": {
+ "enum": [
+ "feed",
+ "chat",
+ "comments",
+ "git",
+ "composer",
+ "notifications",
+ "mail",
+ "schedule",
+ "goal",
+ "webhook",
+ "machine"
+ ]
+ },
+ "name": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 120
+ },
+ "owner": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "type",
+ "id"
+ ],
+ "properties": {
+ "type": {
+ "enum": [
+ "user",
+ "agent",
+ "service"
+ ]
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 160
+ }
+ }
+ },
+ "on": {
+ "type": "boolean"
+ },
+ "where": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "service"
+ ],
+ "description": "Which one of that kind: a room, a repository, a feed, a machine.",
+ "properties": {
+ "service": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,40}$"
+ },
+ "kind": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9_-]{0,40}$"
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 200
+ },
+ "url": {
+ "type": "string",
+ "format": "uri",
+ "pattern": "^https://",
+ "maxLength": 2048
+ }
+ }
+ },
+ "who": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "may"
+ ],
+ "properties": {
+ "may": {
+ "enum": [
+ "owner",
+ "list",
+ "followers",
+ "anyone"
+ ]
+ },
+ "list": {
+ "type": "array",
+ "maxItems": 200,
+ "uniqueItems": true,
+ "items": {
+ "type": "string",
+ "pattern": "^usr_[A-Za-z0-9]{6,40}$"
+ }
+ }
+ }
+ },
+ "rule": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 2000,
+ "description": "What counts as an ask here, in words (a post that asks for a feature or reports a bug; a message that names @Vibe)."
+ },
+ "creates": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "kind"
+ ],
+ "properties": {
+ "kind": {
+ "enum": [
+ "chat",
+ "ask",
+ "task",
+ "code",
+ "machine",
+ "goal"
+ ]
+ },
+ "target": {
+ "description": "What a code run works on. new: a new project in the person's own space. openvibe: OpenVibe itself; the orchestrator finds the repositories and opens pull requests, never merges. An object names one repository.",
+ "anyOf": [
+ {
+ "enum": [
+ "new",
+ "openvibe"
+ ]
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "repo"
+ ],
+ "properties": {
+ "repo": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 300,
+ "description": "owner/name, or the repository's address."
+ },
+ "branch": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 200
+ }
+ }
+ }
+ ]
+ },
+ "agent": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 160
+ },
+ "play": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,60}$",
+ "description": "The play (agents.play@1's ID) this run's tree follows: solo, advisor, plan-execute, fan-out, team, grader-loop, research-build, issue-to-pr, watch, or a person's own. On a child run it is its parent's."
+ }
+ }
+ },
+ "budget": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "usd": {
+ "type": "number",
+ "minimum": 0
+ },
+ "tokens": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "seconds": {
+ "type": "number",
+ "minimum": 0
+ },
+ "steps": {
+ "type": "integer",
+ "minimum": 1
+ }
+ }
+ },
+ "answer": {
+ "enum": [
+ "reply",
+ "card",
+ "notice",
+ "none"
+ ]
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+}
@@ -2,7 +2,7 @@
@@ -2,7 +2,7 @@
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://openvibe.network/contracts/agents/step.v1.json",
"$id": "https://openvibe.network/contracts/agents/step.v1.json",
"title": "AgentsStep",
"title": "AgentsStep",
- "description": "agents.step@1 (one agent system, 2026-11-12): one entry of a run's append-only step log, as GET /api/v1/runs/{id}/steps returns it and as agents.step.appended@1 publishes it. SEQ is the run's own order (1, 2, …), never renumbered; a reader pages with ?after=SEQ. KIND says what the entry is: think (a plan, a check, a note to self), tool (a tool call or its result), message (words for the person), approval (the run asked), child (a sub-agent or a hand-off) or file (a file the run made). TEXT is what a person reads; TOOL_CALL is the tool's name and input on a tool entry; RESULT is what came back. The product's own event may split a call and its result into two steps: both carry KIND tool and the call's seq is the earlier one. A step carries no credential, no key and no token; a secret a tool saw is redacted before it is stored. Since 1.1.0 (agent-engine.md) a step also says who spoke (FROM: the person's own words are steps too), whether it is still under way (STATUS), a short TITLE and GLYPH for a tool or a thought, the files that go with it (ATTACHMENTS), numbered SOURCES, a rich card (UI) and, where a computer was used, the DESK picture and action for replay. Every added field is optional.",
+ "description": "agents.step@1 (one agent system, 2026-11-12): one entry of a run's append-only step log, as GET /api/v1/runs/{id}/steps returns it and as agents.step.appended@1 publishes it. SEQ is the run's own order (1, 2, …), never renumbered; a reader pages with ?after=SEQ. KIND says what the entry is: think (a plan, a check, a note to self), tool (a tool call or its result), message (words for the person), approval (the run asked), child (a sub-agent or a hand-off) or file (a file the run made). TEXT is what a person reads; TOOL_CALL is the tool's name and input on a tool entry; RESULT is what came back. The product's own event may split a call and its result into two steps: both carry KIND tool and the call's seq is the earlier one. A step carries no credential, no key and no token; a secret a tool saw is redacted before it is stored. Since 1.1.0 (agent-engine.md) a step also says who spoke (FROM: the person's own words are steps too), whether it is still under way (STATUS), a short TITLE and GLYPH for a tool or a thought, the files that go with it (ATTACHMENTS), numbered SOURCES, a rich card (UI) and, where a computer was used, the DESK picture and action for replay. Every added field is optional. Since 1.2.0 a step says the TURN it belongs to.",
"type": "object",
"type": "object",
"additionalProperties": false,
"additionalProperties": false,
"required": [
"required": [
@@ -321,6 +321,11 @@
@@ -321,6 +321,11 @@
}
}
}
}
}
}
+ },
+ "turn": {
+ "type": "integer",
+ "minimum": 0,
+ "description": "The turn the step belongs to. A person's message opens a turn (turn 0 is what the run started with); every step until their next message is in it. A fork, a hand-off or a regenerated answer starts at a turn boundary (agents.run@1's LINEAGE.AT_TURN)."
}
}
}
}
}
}
@@ -11760,7 +11760,7 @@
@@ -11760,7 +11760,7 @@
},
},
{
{
"id": "agents.run",
"id": "agents.run",
- "version": "1.1.0",
+ "version": "1.2.0",
"owner": "actor",
"owner": "actor",
"schema": "agents/run.v1.json",
"schema": "agents/run.v1.json",
"visibility": "public",
"visibility": "public",
@@ -11770,7 +11770,7 @@
@@ -11770,7 +11770,7 @@
},
},
{
{
"id": "agents.step",
"id": "agents.step",
- "version": "1.1.0",
+ "version": "1.2.0",
"owner": "actor",
"owner": "actor",
"schema": "agents/step.v1.json",
"schema": "agents/step.v1.json",
"visibility": "public",
"visibility": "public",
@@ -11800,7 +11800,7 @@
@@ -11800,7 +11800,7 @@
},
},
{
{
"id": "agents.run-start",
"id": "agents.run-start",
- "version": "1.0.0",
+ "version": "1.1.0",
"owner": "network",
"owner": "network",
"schema": "agents/run-start.v1.json",
"schema": "agents/run-start.v1.json",
"visibility": "public",
"visibility": "public",
@@ -11828,6 +11828,26 @@
@@ -11828,6 +11828,26 @@
"status": "active",
"status": "active",
"adr": "ADR-044"
"adr": "ADR-044"
},
},
+ {
+ "id": "agents.play",
+ "version": "1.0.0",
+ "owner": "network",
+ "schema": "agents/play.v1.json",
+ "visibility": "public",
+ "compatibility": "backward",
+ "status": "active",
+ "adr": "ADR-044"
+ },
+ {
+ "id": "agents.source",
+ "version": "1.0.0",
+ "owner": "network",
+ "schema": "agents/source.v1.json",
+ "visibility": "public",
+ "compatibility": "backward",
+ "status": "active",
+ "adr": "ADR-044"
+ },
{
{
"id": "feed.item",
"id": "feed.item",
"version": "1.0.0",
"version": "1.0.0",
@@ -160,6 +160,40 @@ writer of 0.412.0 stays valid.
@@ -160,6 +160,40 @@ writer of 0.412.0 stays valid.
**A conversation is a run that is `waiting` for a `message`.** The same status covers an approval (`for: approval`)
**A conversation is a run that is `waiting` for a `message`.** The same status covers an approval (`for: approval`)
and something only the person can do (`for: takeover`), so no reader needs a second model for chats.
and something only the person can do (`for: takeover`), so no reader needs a second model for chats.
+### Who asked, what it continues, how several agents share it (0.417.0)
+
+From the agent engine's code study (agent-engine.md §§3-5). Every field is optional.
+
+- `agents.run@1` (1.2.0):
+ - **`mandate`:** why a run exists when it came through intake. Its `source` is where the ask was made (the feed, a
+ room, comments, git, a composer, notifications, mail, a schedule or goal, a webhook, a machine). Its `thread` is
+ where the run answers. `asked_by` says who asked. `strength` is `explicit`, or `inferred`, and an inferred ask
+ confirms before it acts. `scope` says in words what the run may do.
+ - **`lineage`:** what a run continues. `from` is that run's ref and `at_turn` its turn; `how` is `fork`, `handoff`
+ (another harness or model takes it on, with a written summary as its first step) or `regenerate`.
+ - **`play` and `role`:** the play a run tree follows, and a child's part in it.
+ - **`agent.capabilities`:** what the harness can do: resume, fork, approvals, images, sub-agents, desks, browser,
+ web search, MCP, plan mode, files, shell, voice. The Dispatcher chooses by capability, never by name.
+ - **`cost.by`:** the spend on each rung of the ladder: `machine` (the person's own computer), `plan` (a signed-in
+ plan), `key` (their own key), `allowance` (OpenVibe's free part) and `credits`.
+- **`agents.step@1` (1.2.0) adds `turn`.** A person's message opens a turn. Forks and regenerated answers start on a
+ turn's boundary.
+- **`agents.run-start@1` (1.1.0)** takes a `play`, a `lineage` (to fork or hand off), and, from intake only, a
+ `mandate`.
+- **`agents.play@1`:** a play as data.
+ - Its `roles` say what each does, the size of model it wants (`small`, `strong`, `same`, `other-family`), how many
+ run at once, and how often it may be consulted.
+ - `phases` run in order, a phase's roles together when it is `parallel`. `checks` say who checks whom against a
+ written `bar`, and `stop` says when the play is over (`done`, `passes`, `rounds`, `person`).
+ - `budget.split` gives each role its share of the parent's budget.
+ - The stock plays: solo, advisor, plan-execute, fan-out, team, grader-loop, research-build, issue-to-pr and watch.
+- **`agents.source@1`:** one place where asks are taken in, and how.
+ - `who` may ask there: its `owner`, a `list` of people, `followers` or `anyone`. The `rule` says in words what
+ counts as an ask.
+ - `creates` is the run an ask becomes, with its kind, target, agent and play. `budget` caps each such run.
+ - `answer` is how the run speaks back: a `reply`, a `card`, a `notice` or `none`.
+ - Intake stores the ask first and acts afterwards.
+
### The Run API
### The Run API
The same routes on every product (`/api/v1`) and, for every product at once, on the Frame (`/api/frame`, where the id
The same routes on every product (`/api/v1`) and, for every product at once, on the Frame (`/api/frame`, where the id
new file mode 100644
new file mode 100644
@@ -0,0 +1,43 @@
@@ -0,0 +1,43 @@
+{
+ "id": "advisor",
+ "version": 1,
+ "name": "Advisor",
+ "summary": "A small model does the work and asks a strong one at the few hard decisions.",
+ "roles": [
+ {
+ "id": "executor",
+ "name": "Executor",
+ "does": "Do the task step by step. Ask the advisor only when a decision is hard to undo.",
+ "model": "small"
+ },
+ {
+ "id": "advisor",
+ "name": "Advisor",
+ "does": "Answer the executor's question in a few sentences: what to do and why.",
+ "model": "strong",
+ "consults": 3
+ }
+ ],
+ "phases": [
+ {
+ "id": "work",
+ "roles": [
+ "executor"
+ ]
+ }
+ ],
+ "stop": {
+ "when": "done"
+ },
+ "budget": {
+ "split": {
+ "executor": 0.7,
+ "advisor": 1.5
+ }
+ },
+ "visibility": "public",
+ "author": {
+ "type": "service",
+ "id": "network"
+ }
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,8 @@
@@ -0,0 +1,8 @@
+{
+ "id": "empty",
+ "name": "Empty",
+ "roles": [],
+ "stop": {
+ "when": "done"
+ }
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,40 @@
@@ -0,0 +1,40 @@
+{
+ "id": "advisor",
+ "version": 1,
+ "name": "Advisor",
+ "summary": "A small model does the work and asks a strong one at the few hard decisions.",
+ "roles": [
+ {
+ "id": "executor",
+ "name": "Executor",
+ "does": "Do the task step by step. Ask the advisor only when a decision is hard to undo.",
+ "model": "small"
+ },
+ {
+ "id": "advisor",
+ "name": "Advisor",
+ "does": "Answer the executor's question in a few sentences: what to do and why.",
+ "model": "strong",
+ "consults": 3
+ }
+ ],
+ "phases": [
+ {
+ "id": "work",
+ "roles": [
+ "executor"
+ ]
+ }
+ ],
+ "budget": {
+ "split": {
+ "executor": 0.7,
+ "advisor": 0.3
+ }
+ },
+ "visibility": "public",
+ "author": {
+ "type": "service",
+ "id": "network"
+ }
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,43 @@
@@ -0,0 +1,43 @@
+{
+ "id": "advisor",
+ "version": 1,
+ "name": "Advisor",
+ "summary": "A small model does the work and asks a strong one at the few hard decisions.",
+ "roles": [
+ {
+ "id": "executor",
+ "name": "Executor",
+ "does": "Do the task step by step. Ask the advisor only when a decision is hard to undo.",
+ "model": "small"
+ },
+ {
+ "id": "advisor",
+ "name": "Advisor",
+ "does": "Answer the executor's question in a few sentences: what to do and why.",
+ "model": "strong",
+ "consults": 3
+ }
+ ],
+ "phases": [
+ {
+ "id": "work",
+ "roles": [
+ "executor"
+ ]
+ }
+ ],
+ "stop": {
+ "when": "done"
+ },
+ "budget": {
+ "split": {
+ "executor": 0.7,
+ "advisor": 0.3
+ }
+ },
+ "visibility": "public",
+ "author": {
+ "type": "service",
+ "id": "network"
+ }
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,50 @@
@@ -0,0 +1,50 @@
+{
+ "id": "fan-out",
+ "name": "Fan-out",
+ "summary": "Split the work across many small agents, then merge.",
+ "roles": [
+ {
+ "id": "splitter",
+ "does": "Split the work into parts that do not touch each other.",
+ "model": "strong"
+ },
+ {
+ "id": "worker",
+ "does": "Do one part.",
+ "model": "small",
+ "count": {
+ "min": 1,
+ "max": 16
+ }
+ },
+ {
+ "id": "merger",
+ "does": "Merge the parts and check they fit.",
+ "model": "strong"
+ }
+ ],
+ "phases": [
+ {
+ "id": "split",
+ "roles": [
+ "splitter"
+ ]
+ },
+ {
+ "id": "work",
+ "roles": [
+ "worker"
+ ],
+ "parallel": true
+ },
+ {
+ "id": "merge",
+ "roles": [
+ "merger"
+ ]
+ }
+ ],
+ "stop": {
+ "when": "done"
+ }
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,42 @@
@@ -0,0 +1,42 @@
+{
+ "id": "grader-loop",
+ "name": "Grader loop",
+ "summary": "Do it again until a grader of another model family says it meets the bar.",
+ "roles": [
+ {
+ "id": "doer",
+ "does": "Do the task; take the grader's notes into the next round.",
+ "model": "same"
+ },
+ {
+ "id": "grader",
+ "does": "Check the work against the bar and say pass, or what is missing.",
+ "model": "other-family"
+ }
+ ],
+ "phases": [
+ {
+ "id": "do",
+ "roles": [
+ "doer"
+ ]
+ },
+ {
+ "id": "check",
+ "roles": [
+ "grader"
+ ]
+ }
+ ],
+ "checks": [
+ {
+ "by": "grader",
+ "of": "doer",
+ "bar": "Every claim has a source; nothing the person asked for is missing."
+ }
+ ],
+ "stop": {
+ "when": "passes",
+ "rounds": 4
+ }
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
+{
+ "text": "Do it",
+ "play": "Grader Loop!"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,8 @@
@@ -0,0 +1,8 @@
+{
+ "text": "Same idea, but for a phone screen",
+ "lineage": {
+ "from": "chat:c_8f3k2m",
+ "at_turn": 3,
+ "how": "fork"
+ }
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,5 @@
@@ -0,0 +1,5 @@
+{
+ "text": "Write the patch notes for 4.225.0 and have them checked",
+ "kind": "task",
+ "play": "grader-loop"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,88 @@
@@ -0,0 +1,88 @@
+{
+ "id": "tsk_01K9R2V6M8Q4T0B7C3D5E9F2GH",
+ "ref": "codes:tsk_01K9R2V6M8Q4T0B7C3D5E9F2GH",
+ "kind": "code",
+ "title": "A dark mode toggle on the overlay page",
+ "owner": {
+ "type": "user",
+ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"
+ },
+ "agent": {
+ "id": "orchestrator",
+ "name": "Codes",
+ "product": "codes",
+ "glyph": "code",
+ "hue": 262,
+ "harness": "codex",
+ "capabilities": [
+ "files",
+ "telepathy"
+ ]
+ },
+ "target": "openvibe",
+ "status": "running",
+ "doing": {
+ "text": "Reading OpenVibe.Live's overlay code",
+ "glyph": "book-open"
+ },
+ "model": {
+ "id": "plans/codex|gpt-6-sol",
+ "source": "plans",
+ "name": "GPT-6 Sol",
+ "effort": "xhigh"
+ },
+ "where": {
+ "kind": "runner",
+ "id": "run_ws1",
+ "name": "Workstation"
+ },
+ "outputs": [
+ {
+ "kind": "pr",
+ "title": "Live: a goal bar overlay",
+ "url": "https://git.openvibe.codes/OpenVibers/OpenVibe.Live/pulls/871",
+ "state": "open"
+ }
+ ],
+ "counts": {
+ "steps": 41,
+ "children": 2,
+ "files": 5
+ },
+ "budget": {
+ "usd": 5,
+ "steps": 400
+ },
+ "cost": {
+ "usd": 0.84,
+ "steps": 41,
+ "by": {
+ "machine": {
+ "tokens": 182000
+ },
+ "credits": {
+ "usd": 0.84,
+ "tokens": 61000
+ }
+ }
+ },
+ "created_at": "2026-11-12T10:00:00Z",
+ "updated_at": "2026-11-12T10:09:30Z",
+ "ended_at": null,
+ "mandate": {
+ "source": "feed",
+ "thread": {
+ "service": "community",
+ "kind": "post",
+ "id": "pst_01K9R3A1B2C3D4E5F6G7H8J9KM",
+ "url": "https://openvibe.community/p/pst_01K9R3A1B2C3D4E5F6G7H8J9KM"
+ },
+ "asked_by": {
+ "type": "user",
+ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"
+ },
+ "strength": "explicit",
+ "scope": "Change OpenVibe.Live and open pull requests for the owner to review; never merge."
+ },
+ "play": "issue-to-pr"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,54 @@
@@ -0,0 +1,54 @@
+{
+ "id": "c_8f3k2mx",
+ "ref": "chat:c_8f3k2mx",
+ "kind": "chat",
+ "title": "Keyboard Scout",
+ "owner": {
+ "type": "user",
+ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"
+ },
+ "agent": {
+ "id": "vibe",
+ "name": "Keyboard Scout",
+ "product": "chat",
+ "glyph": "search",
+ "hue": 212,
+ "harness": "openvibe"
+ },
+ "status": "waiting",
+ "waiting": {
+ "for": "message",
+ "since": "2026-11-12T10:02:00Z"
+ },
+ "preview": {
+ "text": "Three picks under $90, with sources.",
+ "from": "agent",
+ "at": "2026-11-12T10:02:00Z"
+ },
+ "model": {
+ "id": "openvibe/auto",
+ "source": "openvibe",
+ "name": "Auto"
+ },
+ "where": {
+ "kind": "openvibe"
+ },
+ "context": {
+ "site": "deals",
+ "url": "https://openvibe.deals/",
+ "title": "Deals"
+ },
+ "url": "https://openvibe.chat/vibe/c_8f3k2m",
+ "counts": {
+ "steps": 6,
+ "unread": 1
+ },
+ "visibility": "private",
+ "created_at": "2026-11-12T10:00:00Z",
+ "updated_at": "2026-11-12T10:02:00Z",
+ "lineage": {
+ "from": "not a run",
+ "at_turn": 3,
+ "how": "fork"
+ }
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,88 @@
@@ -0,0 +1,88 @@
+{
+ "id": "tsk_01K9R2V6M8Q4T0B7C3D5E9F2GH",
+ "ref": "codes:tsk_01K9R2V6M8Q4T0B7C3D5E9F2GH",
+ "kind": "code",
+ "title": "A dark mode toggle on the overlay page",
+ "owner": {
+ "type": "user",
+ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"
+ },
+ "agent": {
+ "id": "orchestrator",
+ "name": "Codes",
+ "product": "codes",
+ "glyph": "code",
+ "hue": 262,
+ "harness": "codex",
+ "capabilities": [
+ "resume",
+ "approvals",
+ "subagents",
+ "files",
+ "shell",
+ "mcp"
+ ]
+ },
+ "target": "openvibe",
+ "status": "running",
+ "doing": {
+ "text": "Reading OpenVibe.Live's overlay code",
+ "glyph": "book-open"
+ },
+ "model": {
+ "id": "plans/codex|gpt-6-sol",
+ "source": "plans",
+ "name": "GPT-6 Sol",
+ "effort": "xhigh"
+ },
+ "where": {
+ "kind": "runner",
+ "id": "run_ws1",
+ "name": "Workstation"
+ },
+ "outputs": [
+ {
+ "kind": "pr",
+ "title": "Live: a goal bar overlay",
+ "url": "https://git.openvibe.codes/OpenVibers/OpenVibe.Live/pulls/871",
+ "state": "open"
+ }
+ ],
+ "counts": {
+ "steps": 41,
+ "children": 2,
+ "files": 5
+ },
+ "budget": {
+ "usd": 5,
+ "steps": 400
+ },
+ "cost": {
+ "usd": 0.84,
+ "steps": 41,
+ "by": {
+ "machine": {
+ "tokens": 182000
+ },
+ "credits": {
+ "usd": 0.84,
+ "tokens": 61000
+ }
+ }
+ },
+ "created_at": "2026-11-12T10:00:00Z",
+ "updated_at": "2026-11-12T10:09:30Z",
+ "ended_at": null,
+ "mandate": {
+ "source": "feed",
+ "thread": {
+ "service": "community",
+ "kind": "post",
+ "id": "pst_01K9R3A1B2C3D4E5F6G7H8J9KM",
+ "url": "https://openvibe.community/p/pst_01K9R3A1B2C3D4E5F6G7H8J9KM"
+ },
+ "strength": "explicit",
+ "scope": "Change OpenVibe.Live and open pull requests for the owner to review; never merge."
+ },
+ "play": "issue-to-pr"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,95 @@
@@ -0,0 +1,95 @@
+{
+ "id": "tsk_01K9R2V6M8Q4T0B7C3D5E9F2GH",
+ "ref": "codes:tsk_01K9R2V6M8Q4T0B7C3D5E9F2GH",
+ "kind": "code",
+ "title": "A dark mode toggle on the overlay page",
+ "owner": {
+ "type": "user",
+ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"
+ },
+ "agent": {
+ "id": "orchestrator",
+ "name": "Codes",
+ "product": "codes",
+ "glyph": "code",
+ "hue": 262,
+ "harness": "codex",
+ "capabilities": [
+ "resume",
+ "approvals",
+ "subagents",
+ "files",
+ "shell",
+ "mcp"
+ ]
+ },
+ "target": "openvibe",
+ "status": "running",
+ "doing": {
+ "text": "Reading OpenVibe.Live's overlay code",
+ "glyph": "book-open"
+ },
+ "model": {
+ "id": "plans/codex|gpt-6-sol",
+ "source": "plans",
+ "name": "GPT-6 Sol",
+ "effort": "xhigh"
+ },
+ "where": {
+ "kind": "runner",
+ "id": "run_ws1",
+ "name": "Workstation"
+ },
+ "outputs": [
+ {
+ "kind": "pr",
+ "title": "Live: a goal bar overlay",
+ "url": "https://git.openvibe.codes/OpenVibers/OpenVibe.Live/pulls/871",
+ "state": "open"
+ }
+ ],
+ "counts": {
+ "steps": 41,
+ "children": 2,
+ "files": 5
+ },
+ "budget": {
+ "usd": 5,
+ "steps": 400
+ },
+ "cost": {
+ "usd": 0.84,
+ "steps": 41,
+ "by": {
+ "machine": {
+ "tokens": 182000
+ },
+ "credits": {
+ "usd": 0.84,
+ "tokens": 61000
+ },
+ "gift": {
+ "usd": 1
+ }
+ }
+ },
+ "created_at": "2026-11-12T10:00:00Z",
+ "updated_at": "2026-11-12T10:09:30Z",
+ "ended_at": null,
+ "mandate": {
+ "source": "feed",
+ "thread": {
+ "service": "community",
+ "kind": "post",
+ "id": "pst_01K9R3A1B2C3D4E5F6G7H8J9KM",
+ "url": "https://openvibe.community/p/pst_01K9R3A1B2C3D4E5F6G7H8J9KM"
+ },
+ "asked_by": {
+ "type": "user",
+ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"
+ },
+ "strength": "explicit",
+ "scope": "Change OpenVibe.Live and open pull requests for the owner to review; never merge."
+ },
+ "play": "issue-to-pr"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,54 @@
@@ -0,0 +1,54 @@
+{
+ "id": "c_8f3k2mx",
+ "ref": "chat:c_8f3k2mx",
+ "kind": "chat",
+ "title": "Keyboard Scout",
+ "owner": {
+ "type": "user",
+ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"
+ },
+ "agent": {
+ "id": "vibe",
+ "name": "Keyboard Scout",
+ "product": "chat",
+ "glyph": "search",
+ "hue": 212,
+ "harness": "openvibe"
+ },
+ "status": "waiting",
+ "waiting": {
+ "for": "message",
+ "since": "2026-11-12T10:02:00Z"
+ },
+ "preview": {
+ "text": "Three picks under $90, with sources.",
+ "from": "agent",
+ "at": "2026-11-12T10:02:00Z"
+ },
+ "model": {
+ "id": "openvibe/auto",
+ "source": "openvibe",
+ "name": "Auto"
+ },
+ "where": {
+ "kind": "openvibe"
+ },
+ "context": {
+ "site": "deals",
+ "url": "https://openvibe.deals/",
+ "title": "Deals"
+ },
+ "url": "https://openvibe.chat/vibe/c_8f3k2m",
+ "counts": {
+ "steps": 6,
+ "unread": 1
+ },
+ "visibility": "private",
+ "created_at": "2026-11-12T10:00:00Z",
+ "updated_at": "2026-11-12T10:02:00Z",
+ "lineage": {
+ "from": "chat:c_8f3k2m",
+ "at_turn": 3,
+ "how": "fork"
+ }
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,53 @@
@@ -0,0 +1,53 @@
+{
+ "id": "tsk_01K9R4C5D6E7F8G9H0J1K2M3NP",
+ "ref": "codes:tsk_01K9R4C5D6E7F8G9H0J1K2M3NP",
+ "kind": "code",
+ "title": "Review: a dark mode toggle",
+ "owner": {
+ "type": "user",
+ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"
+ },
+ "agent": {
+ "id": "orchestrator",
+ "name": "Codes",
+ "product": "codes",
+ "glyph": "code",
+ "hue": 262,
+ "harness": "codex"
+ },
+ "target": "openvibe",
+ "status": "running",
+ "doing": {
+ "text": "Reading OpenVibe.Live's overlay code",
+ "glyph": "book-open"
+ },
+ "model": {
+ "id": "plans/codex|gpt-6-sol",
+ "source": "plans",
+ "name": "GPT-6 Sol",
+ "effort": "xhigh"
+ },
+ "where": {
+ "kind": "runner",
+ "id": "run_ws1",
+ "name": "Workstation"
+ },
+ "outputs": [],
+ "counts": {
+ "steps": 6
+ },
+ "budget": {
+ "usd": 5,
+ "steps": 400
+ },
+ "cost": {
+ "usd": 0.84,
+ "steps": 41
+ },
+ "created_at": "2026-11-12T10:00:00Z",
+ "updated_at": "2026-11-12T10:09:30Z",
+ "ended_at": null,
+ "parent_run": "tsk_01K9R2V6M8Q4T0B7C3D5E9F2GH",
+ "play": "issue-to-pr",
+ "role": "reviewer"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,92 @@
@@ -0,0 +1,92 @@
+{
+ "id": "tsk_01K9R2V6M8Q4T0B7C3D5E9F2GH",
+ "ref": "codes:tsk_01K9R2V6M8Q4T0B7C3D5E9F2GH",
+ "kind": "code",
+ "title": "A dark mode toggle on the overlay page",
+ "owner": {
+ "type": "user",
+ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"
+ },
+ "agent": {
+ "id": "orchestrator",
+ "name": "Codes",
+ "product": "codes",
+ "glyph": "code",
+ "hue": 262,
+ "harness": "codex",
+ "capabilities": [
+ "resume",
+ "approvals",
+ "subagents",
+ "files",
+ "shell",
+ "mcp"
+ ]
+ },
+ "target": "openvibe",
+ "status": "running",
+ "doing": {
+ "text": "Reading OpenVibe.Live's overlay code",
+ "glyph": "book-open"
+ },
+ "model": {
+ "id": "plans/codex|gpt-6-sol",
+ "source": "plans",
+ "name": "GPT-6 Sol",
+ "effort": "xhigh"
+ },
+ "where": {
+ "kind": "runner",
+ "id": "run_ws1",
+ "name": "Workstation"
+ },
+ "outputs": [
+ {
+ "kind": "pr",
+ "title": "Live: a goal bar overlay",
+ "url": "https://git.openvibe.codes/OpenVibers/OpenVibe.Live/pulls/871",
+ "state": "open"
+ }
+ ],
+ "counts": {
+ "steps": 41,
+ "children": 2,
+ "files": 5
+ },
+ "budget": {
+ "usd": 5,
+ "steps": 400
+ },
+ "cost": {
+ "usd": 0.84,
+ "steps": 41,
+ "by": {
+ "machine": {
+ "tokens": 182000
+ },
+ "credits": {
+ "usd": 0.84,
+ "tokens": 61000
+ }
+ }
+ },
+ "created_at": "2026-11-12T10:00:00Z",
+ "updated_at": "2026-11-12T10:09:30Z",
+ "ended_at": null,
+ "mandate": {
+ "source": "feed",
+ "thread": {
+ "service": "community",
+ "kind": "post",
+ "id": "pst_01K9R3A1B2C3D4E5F6G7H8J9KM",
+ "url": "https://openvibe.community/p/pst_01K9R3A1B2C3D4E5F6G7H8J9KM"
+ },
+ "asked_by": {
+ "type": "user",
+ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"
+ },
+ "strength": "explicit",
+ "scope": "Change OpenVibe.Live and open pull requests for the owner to review; never merge."
+ },
+ "play": "issue-to-pr"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,30 @@
@@ -0,0 +1,30 @@
+{
+ "id": "src_01K9R5ABCDEF",
+ "kind": "carrier-pigeon",
+ "name": "Asks on my feed",
+ "owner": {
+ "type": "user",
+ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"
+ },
+ "on": true,
+ "where": {
+ "service": "community",
+ "kind": "feed",
+ "id": "home"
+ },
+ "who": {
+ "may": "owner"
+ },
+ "rule": "A post that asks for a feature or reports a bug in OpenVibe.",
+ "creates": {
+ "kind": "code",
+ "target": "openvibe",
+ "play": "issue-to-pr"
+ },
+ "budget": {
+ "usd": 5
+ },
+ "answer": "card",
+ "created_at": "2026-11-12T11:00:00Z",
+ "updated_at": "2026-11-12T11:00:00Z"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
+{
+ "id": "src_01K9R5ABCDEF",
+ "kind": "feed",
+ "name": "Asks on my feed",
+ "owner": {
+ "type": "user",
+ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"
+ },
+ "on": true,
+ "where": {
+ "service": "community",
+ "kind": "feed",
+ "id": "home"
+ },
+ "who": {
+ "may": "list",
+ "list": [
+ ]
+ },
+ "rule": "A post that asks for a feature or reports a bug in OpenVibe.",
+ "creates": {
+ "kind": "code",
+ "target": "openvibe",
+ "play": "issue-to-pr"
+ },
+ "budget": {
+ "usd": 5
+ },
+ "answer": "card",
+ "created_at": "2026-11-12T11:00:00Z",
+ "updated_at": "2026-11-12T11:00:00Z"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,25 @@
@@ -0,0 +1,25 @@
+{
+ "id": "src_01K9R5ABCDEF",
+ "kind": "feed",
+ "name": "Asks on my feed",
+ "owner": {
+ "type": "user",
+ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"
+ },
+ "on": true,
+ "where": {
+ "service": "community",
+ "kind": "feed",
+ "id": "home"
+ },
+ "who": {
+ "may": "owner"
+ },
+ "rule": "A post that asks for a feature or reports a bug in OpenVibe.",
+ "budget": {
+ "usd": 5
+ },
+ "answer": "card",
+ "created_at": "2026-11-12T11:00:00Z",
+ "updated_at": "2026-11-12T11:00:00Z"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,30 @@
@@ -0,0 +1,30 @@
+{
+ "id": "src_01K9R5ABCDEF",
+ "kind": "feed",
+ "name": "Asks on my feed",
+ "owner": {
+ "type": "user",
+ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"
+ },
+ "on": true,
+ "where": {
+ "service": "community",
+ "kind": "feed",
+ "id": "home"
+ },
+ "who": {
+ "may": "owner"
+ },
+ "rule": "A post that asks for a feature or reports a bug in OpenVibe.",
+ "creates": {
+ "kind": "code",
+ "target": "openvibe",
+ "play": "issue-to-pr"
+ },
+ "budget": {
+ "usd": 5
+ },
+ "answer": "card",
+ "created_at": "2026-11-12T11:00:00Z",
+ "updated_at": "2026-11-12T11:00:00Z"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,26 @@
@@ -0,0 +1,26 @@
+{
+ "id": "src_01K9R5GHJKMN",
+ "kind": "chat",
+ "owner": {
+ "type": "user",
+ "id": "usr_01K9R2V6M8Q4T0B7C3D5E9F2GH"
+ },
+ "on": true,
+ "where": {
+ "service": "chat",
+ "kind": "room",
+ "id": "design-crit",
+ "url": "https://openvibe.chat/r/design-crit"
+ },
+ "who": {
+ "may": "list",
+ "list": [
+ "usr_01K9R6PQRSTVWXYZ0123456789"
+ ]
+ },
+ "rule": "A message that names @Vibe.",
+ "creates": {
+ "kind": "chat"
+ },
+ "answer": "reply"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,29 @@
@@ -0,0 +1,29 @@
+{
+ "run_id": "tsk_01K9R2V6M8Q4T0B7C3D5E9F2GH",
+ "seq": 7,
+ "kind": "tool",
+ "from": "tool",
+ "status": "done",
+ "title": "Typing in the search box",
+ "glyph": "search",
+ "text": "Typed \"mechanical keyboard 75%\" in the search box.",
+ "tool_call": {
+ "name": "computer.type",
+ "input": {
+ "text": "mechanical keyboard 75%"
+ }
+ },
+ "desk": {
+ "id": "desk_private_1",
+ "still_url": "https://openvibe.media/s/still_01K9R2V6M8Q4T0B7C3D5E9F2GH.jpg",
+ "action": {
+ "type": "type",
+ "x": 512,
+ "y": 96,
+ "text": "mechanical keyboard 75%"
+ }
+ },
+ "started_at": "2026-11-12T10:03:00Z",
+ "ended_at": "2026-11-12T10:03:01Z",
+ "turn": -1
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,29 @@
@@ -0,0 +1,29 @@
+{
+ "run_id": "tsk_01K9R2V6M8Q4T0B7C3D5E9F2GH",
+ "seq": 7,
+ "kind": "tool",
+ "from": "tool",
+ "status": "done",
+ "title": "Typing in the search box",
+ "glyph": "search",
+ "text": "Typed \"mechanical keyboard 75%\" in the search box.",
+ "tool_call": {
+ "name": "computer.type",
+ "input": {
+ "text": "mechanical keyboard 75%"
+ }
+ },
+ "desk": {
+ "id": "desk_private_1",
+ "still_url": "https://openvibe.media/s/still_01K9R2V6M8Q4T0B7C3D5E9F2GH.jpg",
+ "action": {
+ "type": "type",
+ "x": 512,
+ "y": 96,
+ "text": "mechanical keyboard 75%"
+ }
+ },
+ "started_at": "2026-11-12T10:03:00Z",
+ "ended_at": "2026-11-12T10:03:01Z",
+ "turn": 2
+}
@@ -135249,14 +135249,14 @@
@@ -135249,14 +135249,14 @@
}
}
},
},
"agents.run": {
"agents.run": {
- "version": "1.1.0",
+ "version": "1.2.0",
"owner": "actor",
"owner": "actor",
"status": "active",
"status": "active",
"schema": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://openvibe.network/contracts/agents/run.v1.json",
"$id": "https://openvibe.network/contracts/agents/run.v1.json",
"title": "AgentsRun",
"title": "AgentsRun",
- "description": "agents.run@1 (one agent system, 2026-11-12): one run of an agent, the same shape on every product (Actor, Codes, Run and anything else on openvibe-sdk/agents). The owner is the person or agent the work belongs to; AGENT names the agent or harness that runs it and the product it comes from; PARENT_RUN makes sub-agent runs a tree; BUDGET is the hard limit and COST what the run has spent; STATUS is where the run is now. The run is stored by its product, not here: this contract is the wire shape. GET /api/v1/runs, /api/v1/runs/{id} and /api/v1/runs/{id}/steps serve it (OpenVibe.Actor) and the SDK's runs client reads it. The product's own id is kept, never reused. A run that ends keeps its end status. Since 1.1.0 (agent-engine.md) a run also says what a person calls it (TITLE), what sort it is (KIND), where it lives (REF on the Frame, URL on its product), which model runs it and where, what it is doing now (DOING), what it waits for (WAITING), its last line (PREVIEW), where it was asked (CONTEXT) and what it made (OUTPUTS); a chat with Vibe is a run of KIND chat that is waiting for a message. Every added field is optional. This v1 contract may grow optional fields; a step is agents.step@1 and an approval is agents.approval@1.",
+ "description": "agents.run@1 (one agent system, 2026-11-12): one run of an agent, the same shape on every product (Actor, Codes, Run and anything else on openvibe-sdk/agents). The owner is the person or agent the work belongs to; AGENT names the agent or harness that runs it and the product it comes from; PARENT_RUN makes sub-agent runs a tree; BUDGET is the hard limit and COST what the run has spent; STATUS is where the run is now. The run is stored by its product, not here: this contract is the wire shape. GET /api/v1/runs, /api/v1/runs/{id} and /api/v1/runs/{id}/steps serve it (OpenVibe.Actor) and the SDK's runs client reads it. The product's own id is kept, never reused. A run that ends keeps its end status. Since 1.1.0 (agent-engine.md) a run also says what a person calls it (TITLE), what sort it is (KIND), where it lives (REF on the Frame, URL on its product), which model runs it and where, what it is doing now (DOING), what it waits for (WAITING), its last line (PREVIEW), where it was asked (CONTEXT) and what it made (OUTPUTS); a chat with Vibe is a run of KIND chat that is waiting for a message. Every added field is optional. This v1 contract may grow optional fields; a step is agents.step@1 and an approval is agents.approval@1. Since 1.2.0 (agent-engine.md §§3-5, from the code study) a run may also say why it exists (MANDATE: an ask taken in from the feed, a room, an issue), what it continues (LINEAGE: a fork, a hand-off, a regenerated turn), the play its tree follows and a child's ROLE in it, what its agent's harness can do (AGENT.CAPABILITIES), and what it spent on each rung of the ladder (COST.BY). Every added field is optional.",
"type": "object",
"type": "object",
"additionalProperties": false,
"additionalProperties": false,
"required": [
"required": [
@@ -135288,7 +135288,7 @@
@@ -135288,7 +135288,7 @@
"required": [
"required": [
"id"
"id"
],
],
- "description": "The agent or harness that runs it. ID is the product's own agent id or slug; NAME is what a person reads; PRODUCT is the product it comes from (actor, codes, run, chat, …). GLYPH, HUE and AVATAR_URL are its face; HARNESS is the loop that runs it.",
+ "description": "The agent or harness that runs it. ID is the product's own agent id or slug; NAME is what a person reads; PRODUCT is the product it comes from (actor, codes, run, chat, …). GLYPH, HUE and AVATAR_URL are its face; HARNESS is the loop that runs it. Since 1.2.0, CAPABILITIES says what its harness can do.",
"properties": {
"properties": {
"id": {
"id": {
"type": "string",
"type": "string",
@@ -135326,6 +135326,29 @@
@@ -135326,6 +135326,29 @@
"type": "string",
"type": "string",
"pattern": "^[a-z][a-z0-9-]{0,59}$",
"pattern": "^[a-z][a-z0-9-]{0,59}$",
"description": "The loop that runs it: openvibe (the SDK's own), or another harness run through an adapter (codex, claude-code, opencode, deepseek, …)."
"description": "The loop that runs it: openvibe (the SDK's own), or another harness run through an adapter (codex, claude-code, opencode, deepseek, …)."
+ },
+ "capabilities": {
+ "type": "array",
+ "uniqueItems": true,
+ "maxItems": 20,
+ "description": "What the agent's harness can do, so the Dispatcher chooses by capability and never by name: resume and fork a thread, ask approvals, read images, start sub-agents, use desks, browse, search the web, use MCP tools, plan before acting, read and write files, run a shell, speak and listen.",
+ "items": {
+ "enum": [
+ "resume",
+ "fork",
+ "approvals",
+ "images",
+ "subagents",
+ "desks",
+ "browser",
+ "web-search",
+ "mcp",
+ "plan-mode",
+ "files",
+ "shell",
+ "voice"
+ ]
+ }
}
}
}
}
},
},
@@ -135411,6 +135434,103 @@
@@ -135411,6 +135434,103 @@
"steps": {
"steps": {
"type": "integer",
"type": "integer",
"minimum": 0
"minimum": 0
+ },
+ "by": {
+ "type": "object",
+ "additionalProperties": false,
+ "description": "The spend by rung of the Dispatcher's ladder (agent-engine.md §3): MACHINE, a model on the person's own computer (free); PLAN, a signed-in plan through its harness (flat); KEY, the person's own provider key (no fee); ALLOWANCE, OpenVibe's free allowance; CREDITS, bought (Exchange's offers). The parts add up to the run's own totals.",
+ "properties": {
+ "machine": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "usd": {
+ "type": "number",
+ "minimum": 0
+ },
+ "tokens": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "seconds": {
+ "type": "number",
+ "minimum": 0
+ }
+ }
+ },
+ "plan": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "usd": {
+ "type": "number",
+ "minimum": 0
+ },
+ "tokens": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "seconds": {
+ "type": "number",
+ "minimum": 0
+ }
+ }
+ },
+ "key": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "usd": {
+ "type": "number",
+ "minimum": 0
+ },
+ "tokens": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "seconds": {
+ "type": "number",
+ "minimum": 0
+ }
+ }
+ },
+ "allowance": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "usd": {
+ "type": "number",
+ "minimum": 0
+ },
+ "tokens": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "seconds": {
+ "type": "number",
+ "minimum": 0
+ }
+ }
+ },
+ "credits": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "usd": {
+ "type": "number",
+ "minimum": 0
+ },
+ "tokens": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "seconds": {
+ "type": "number",
+ "minimum": 0
+ }
+ }
+ }
+ }
}
}
}
}
},
},
@@ -135747,19 +135867,152 @@
@@ -135747,19 +135867,152 @@
],
],
"format": "date-time",
"format": "date-time",
"description": "When the run reached an end status. Null while it has not."
"description": "When the run reached an end status. Null while it has not."
+ },
+ "mandate": {
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false,
+ "required": [
+ "source",
+ "asked_by",
+ "strength"
+ ],
+ "description": "Why the run exists when it came through intake (agent-engine.md §5): SOURCE is where the ask was made; THREAD is the conversation it was made in (a post, a room, an issue: its service, kind and id, and its address), where the run answers and from which later messages reach it; ASKED_BY is who asked; STRENGTH says whether they asked outright (explicit) or the Source's rule read an ask in what they wrote (inferred: such a run confirms before it acts); SCOPE says in words what the run may do for them. Null (or absent) for a run a person started themselves.",
+ "properties": {
+ "source": {
+ "enum": [
+ "feed",
+ "chat",
+ "comments",
+ "git",
+ "composer",
+ "notifications",
+ "mail",
+ "schedule",
+ "goal",
+ "webhook",
+ "machine"
+ ]
+ },
+ "thread": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "service",
+ "kind",
+ "id"
+ ],
+ "properties": {
+ "service": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,40}$"
+ },
+ "kind": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9_-]{0,40}$"
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 200
+ },
+ "url": {
+ "type": "string",
+ "format": "uri",
+ "pattern": "^https://",
+ "maxLength": 2048
+ }
+ }
+ },
+ "asked_by": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "type",
+ "id"
+ ],
+ "properties": {
+ "type": {
+ "enum": [
+ "user",
+ "agent",
+ "service"
+ ]
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 160
+ }
+ }
+ },
+ "strength": {
+ "enum": [
+ "explicit",
+ "inferred"
+ ]
+ },
+ "scope": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 1000
+ }
+ }
+ },
+ "lineage": {
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false,
+ "required": [
+ "from",
+ "how"
+ ],
+ "description": "Where the run came from when it continues another (agent-engine.md, from the code study): FROM is that run's ref; AT_TURN is the turn it was taken from (agents.step@1's TURN; the steps before it are the new run's history); HOW is fork (a person branched the conversation), handoff (another harness or model took it on, with a written summary as its first step) or regenerate (the same turn answered again). Null for a run that starts fresh.",
+ "properties": {
+ "from": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,40}:[A-Za-z0-9._~-]{1,160}$",
+ "description": "A run's ref: the product, a colon, the product's own run id (agents.run@1's REF)."
+ },
+ "at_turn": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "how": {
+ "enum": [
+ "fork",
+ "handoff",
+ "regenerate"
+ ]
+ }
+ }
+ },
+ "play": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,60}$",
+ "description": "The play (agents.play@1's ID) this run's tree follows: solo, advisor, plan-execute, fan-out, team, grader-loop, research-build, issue-to-pr, watch, or a person's own. On a child run it is its parent's."
+ },
+ "role": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,60}$",
+ "description": "A child run's role in its parent's play (one of the play's role ids: planner, executor, advisor, grader, reviewer, searcher, worker…)."
}
}
}
}
}
}
},
},
"agents.step": {
"agents.step": {
- "version": "1.1.0",
+ "version": "1.2.0",
"owner": "actor",
"owner": "actor",
"status": "active",
"status": "active",
"schema": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://openvibe.network/contracts/agents/step.v1.json",
"$id": "https://openvibe.network/contracts/agents/step.v1.json",
"title": "AgentsStep",
"title": "AgentsStep",
- "description": "agents.step@1 (one agent system, 2026-11-12): one entry of a run's append-only step log, as GET /api/v1/runs/{id}/steps returns it and as agents.step.appended@1 publishes it. SEQ is the run's own order (1, 2, …), never renumbered; a reader pages with ?after=SEQ. KIND says what the entry is: think (a plan, a check, a note to self), tool (a tool call or its result), message (words for the person), approval (the run asked), child (a sub-agent or a hand-off) or file (a file the run made). TEXT is what a person reads; TOOL_CALL is the tool's name and input on a tool entry; RESULT is what came back. The product's own event may split a call and its result into two steps: both carry KIND tool and the call's seq is the earlier one. A step carries no credential, no key and no token; a secret a tool saw is redacted before it is stored. Since 1.1.0 (agent-engine.md) a step also says who spoke (FROM: the person's own words are steps too), whether it is still under way (STATUS), a short TITLE and GLYPH for a tool or a thought, the files that go with it (ATTACHMENTS), numbered SOURCES, a rich card (UI) and, where a computer was used, the DESK picture and action for replay. Every added field is optional.",
+ "description": "agents.step@1 (one agent system, 2026-11-12): one entry of a run's append-only step log, as GET /api/v1/runs/{id}/steps returns it and as agents.step.appended@1 publishes it. SEQ is the run's own order (1, 2, …), never renumbered; a reader pages with ?after=SEQ. KIND says what the entry is: think (a plan, a check, a note to self), tool (a tool call or its result), message (words for the person), approval (the run asked), child (a sub-agent or a hand-off) or file (a file the run made). TEXT is what a person reads; TOOL_CALL is the tool's name and input on a tool entry; RESULT is what came back. The product's own event may split a call and its result into two steps: both carry KIND tool and the call's seq is the earlier one. A step carries no credential, no key and no token; a secret a tool saw is redacted before it is stored. Since 1.1.0 (agent-engine.md) a step also says who spoke (FROM: the person's own words are steps too), whether it is still under way (STATUS), a short TITLE and GLYPH for a tool or a thought, the files that go with it (ATTACHMENTS), numbered SOURCES, a rich card (UI) and, where a computer was used, the DESK picture and action for replay. Every added field is optional. Since 1.2.0 a step says the TURN it belongs to.",
"type": "object",
"type": "object",
"additionalProperties": false,
"additionalProperties": false,
"required": [
"required": [
@@ -136078,6 +136331,11 @@
@@ -136078,6 +136331,11 @@
}
}
}
}
}
}
+ },
+ "turn": {
+ "type": "integer",
+ "minimum": 0,
+ "description": "The turn the step belongs to. A person's message opens a turn (turn 0 is what the run started with); every step until their next message is in it. A fork, a hand-off or a regenerated answer starts at a turn boundary (agents.run@1's LINEAGE.AT_TURN)."
}
}
}
}
}
}
@@ -136190,14 +136448,14 @@
@@ -136190,14 +136448,14 @@
}
}
},
},
"agents.run-start": {
"agents.run-start": {
- "version": "1.0.0",
+ "version": "1.1.0",
"owner": "network",
"owner": "network",
"status": "active",
"status": "active",
"schema": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://openvibe.network/contracts/agents/run-start.v1.json",
"$id": "https://openvibe.network/contracts/agents/run-start.v1.json",
"title": "AgentsRunStart",
"title": "AgentsRunStart",
- "description": "agents.run-start@1 (agent-engine.md, 2026-11-12): what starts a run, the same on every product's POST /api/v1/runs and on the Frame's POST /api/frame/runs. Only TEXT is required: the goal, the question or the first message, in the person's own words. KIND chooses the sort of run (agents.run@1's kinds); absent, the Frame's orchestrator decides whether to answer, plan, or hand the work to another product as a child run. AGENT names who does it (an agent's id; auto lets the product choose). MODEL and WHERE are the picker's choices; TARGET is a code run's (new, openvibe or a repository); CONTEXT is where it was asked; ATTACHMENTS are files by Media id or address; SOURCES and DEPTH are an answer's (frame.ask@1's); PARENT_RUN makes it a sub-agent's run inside its parent's budget; BUDGET is its own hard limit. An Idempotency-Key header makes a repeated start return the first run.",
+ "description": "agents.run-start@1 (agent-engine.md, 2026-11-12): what starts a run, the same on every product's POST /api/v1/runs and on the Frame's POST /api/frame/runs. Only TEXT is required: the goal, the question or the first message, in the person's own words. KIND chooses the sort of run (agents.run@1's kinds); absent, the Frame's orchestrator decides whether to answer, plan, or hand the work to another product as a child run. AGENT names who does it (an agent's id; auto lets the product choose). MODEL and WHERE are the picker's choices; TARGET is a code run's (new, openvibe or a repository); CONTEXT is where it was asked; ATTACHMENTS are files by Media id or address; SOURCES and DEPTH are an answer's (frame.ask@1's); PARENT_RUN makes it a sub-agent's run inside its parent's budget; BUDGET is its own hard limit. An Idempotency-Key header makes a repeated start return the first run. Since 1.1.0 a start may name a PLAY, continue another run (LINEAGE), and carry intake's MANDATE.",
"type": "object",
"type": "object",
"additionalProperties": false,
"additionalProperties": false,
"required": [
"required": [
@@ -136457,63 +136715,191 @@
@@ -136457,63 +136715,191 @@
"minimum": 1
"minimum": 1
}
}
}
}
- }
- }
- }
- },
- "agents.event": {
- "version": "1.0.0",
- "owner": "network",
- "status": "active",
- "schema": {
- "$schema": "https://json-schema.org/draft/2020-12/schema",
- "$id": "https://openvibe.network/contracts/agents/event.v1.json",
- "title": "AgentsEvent",
- "description": "agents.event@1 (agent-engine.md, 2026-11-12): one event of a run's stream, GET /api/v1/runs/{id}/events (and /api/frame/runs/{ref}/events), as server-sent events whose event name is TYPE and whose id is the newest step's seq, so Last-Event-ID resumes after it. run: the run changed; RUN is its new snapshot. step: a step was appended; STEP is it, whole. delta: more TEXT for the step SEQ that is still being written (its STATUS is running); a reader appends it. approval: an approval was asked or answered; APPROVAL is it. end: the run reached an end status; the stream closes after it. A reader ignores a type it does not know.",
- "type": "object",
- "required": [
- "type"
- ],
- "properties": {
- "type": {
- "enum": [
- "run",
- "step",
- "delta",
- "approval",
- "end"
- ]
- },
- "run": {
- "$ref": "run.v1.json"
- },
- "step": {
- "$ref": "step.v1.json"
- },
- "approval": {
- "$ref": "approval.v1.json"
- },
- "run_id": {
- "type": "string",
- "minLength": 1,
- "maxLength": 160
- },
- "seq": {
- "type": "integer",
- "minimum": 1
},
},
- "text": {
+ "play": {
"type": "string",
"type": "string",
- "maxLength": 65536
+ "pattern": "^[a-z][a-z0-9-]{0,60}$",
+ "description": "The play to run (agents.play@1's ID); absent, the orchestrator chooses (most asks are solo)."
},
},
- "status": {
- "enum": [
- "done",
- "failed",
- "stopped"
- ]
- }
- },
+ "mandate": {
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false,
+ "required": [
+ "source",
+ "asked_by",
+ "strength"
+ ],
+ "description": "Set by intake, never by a browser: the Source, thread and asker the run is answering (agents.run@1's MANDATE). A product ignores it from a caller that is not the intake service.",
+ "properties": {
+ "source": {
+ "enum": [
+ "feed",
+ "chat",
+ "comments",
+ "git",
+ "composer",
+ "notifications",
+ "mail",
+ "schedule",
+ "goal",
+ "webhook",
+ "machine"
+ ]
+ },
+ "thread": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "service",
+ "kind",
+ "id"
+ ],
+ "properties": {
+ "service": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,40}$"
+ },
+ "kind": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9_-]{0,40}$"
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 200
+ },
+ "url": {
+ "type": "string",
+ "format": "uri",
+ "pattern": "^https://",
+ "maxLength": 2048
+ }
+ }
+ },
+ "asked_by": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "type",
+ "id"
+ ],
+ "properties": {
+ "type": {
+ "enum": [
+ "user",
+ "agent",
+ "service"
+ ]
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 160
+ }
+ }
+ },
+ "strength": {
+ "enum": [
+ "explicit",
+ "inferred"
+ ]
+ },
+ "scope": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 1000
+ }
+ }
+ },
+ "lineage": {
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false,
+ "required": [
+ "from",
+ "how"
+ ],
+ "description": "Start as a continuation of another run of the same person: a fork at a turn, a hand-off, or a regenerated turn (agents.run@1's LINEAGE).",
+ "properties": {
+ "from": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,40}:[A-Za-z0-9._~-]{1,160}$",
+ "description": "A run's ref: the product, a colon, the product's own run id (agents.run@1's REF)."
+ },
+ "at_turn": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "how": {
+ "enum": [
+ "fork",
+ "handoff",
+ "regenerate"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "agents.event": {
+ "version": "1.0.0",
+ "owner": "network",
+ "status": "active",
+ "schema": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://openvibe.network/contracts/agents/event.v1.json",
+ "title": "AgentsEvent",
+ "description": "agents.event@1 (agent-engine.md, 2026-11-12): one event of a run's stream, GET /api/v1/runs/{id}/events (and /api/frame/runs/{ref}/events), as server-sent events whose event name is TYPE and whose id is the newest step's seq, so Last-Event-ID resumes after it. run: the run changed; RUN is its new snapshot. step: a step was appended; STEP is it, whole. delta: more TEXT for the step SEQ that is still being written (its STATUS is running); a reader appends it. approval: an approval was asked or answered; APPROVAL is it. end: the run reached an end status; the stream closes after it. A reader ignores a type it does not know.",
+ "type": "object",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "enum": [
+ "run",
+ "step",
+ "delta",
+ "approval",
+ "end"
+ ]
+ },
+ "run": {
+ "$ref": "run.v1.json"
+ },
+ "step": {
+ "$ref": "step.v1.json"
+ },
+ "approval": {
+ "$ref": "approval.v1.json"
+ },
+ "run_id": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 160
+ },
+ "seq": {
+ "type": "integer",
+ "minimum": 1
+ },
+ "text": {
+ "type": "string",
+ "maxLength": 65536
+ },
+ "status": {
+ "enum": [
+ "done",
+ "failed",
+ "stopped"
+ ]
+ }
+ },
"additionalProperties": false,
"additionalProperties": false,
"allOf": [
"allOf": [
{
{
@@ -136619,6 +137005,476 @@
@@ -136619,6 +137005,476 @@
"$ref": "../../agents/run.v1.json"
"$ref": "../../agents/run.v1.json"
}
}
},
},
+ "agents.play": {
+ "version": "1.0.0",
+ "owner": "network",
+ "status": "active",
+ "schema": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://openvibe.network/contracts/agents/play.v1.json",
+ "title": "AgentsPlay",
+ "description": "agents.play@1 (agent-engine.md §4, 2026-11-12): a named way for several agents to work on one ask, as data, so a person or an AI can write one and openvibe.run can list it. ROLES are the agents it uses (each with what it does, the size of model it wants, and how many may run at once); PHASES run in order, the roles in a phase together when PARALLEL; CHECKS say who checks whose work, against a written BAR; STOP says when the play is over; BUDGET.SPLIT gives each role its share of the parent's budget. The orchestrator turns a play into child runs (agents.run@1's PARENT_RUN, PLAY and ROLE). Rules every play keeps, whatever it says: a child's end never ends its parent; a person's message never waits behind new work; a child's budget is a slice of its parent's.",
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "id",
+ "name",
+ "roles",
+ "stop"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,60}$"
+ },
+ "version": {
+ "type": "integer",
+ "minimum": 1
+ },
+ "name": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 120
+ },
+ "summary": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 1000,
+ "description": "When to use it, in a sentence or two."
+ },
+ "roles": {
+ "type": "array",
+ "minItems": 1,
+ "maxItems": 12,
+ "items": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "id",
+ "does"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,60}$"
+ },
+ "name": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 80
+ },
+ "does": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 2000,
+ "description": "What this role does, as its instructions begin."
+ },
+ "model": {
+ "enum": [
+ "small",
+ "strong",
+ "same",
+ "other-family"
+ ],
+ "description": "small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader)."
+ },
+ "agent": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 160,
+ "description": "A particular agent's id, when the role is always the same agent."
+ },
+ "count": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "min": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 64
+ },
+ "max": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 64
+ }
+ }
+ },
+ "consults": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 50,
+ "description": "How many times another role may consult this one (an advisor's limit)."
+ }
+ }
+ }
+ },
+ "phases": {
+ "type": "array",
+ "maxItems": 20,
+ "items": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "id",
+ "roles"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,60}$"
+ },
+ "name": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 120
+ },
+ "roles": {
+ "type": "array",
+ "minItems": 1,
+ "maxItems": 12,
+ "items": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,60}$"
+ }
+ },
+ "parallel": {
+ "type": "boolean"
+ }
+ }
+ }
+ },
+ "checks": {
+ "type": "array",
+ "maxItems": 12,
+ "items": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "by",
+ "of"
+ ],
+ "properties": {
+ "by": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,60}$"
+ },
+ "of": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,60}$"
+ },
+ "bar": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 2000,
+ "description": "What passing means, in words the checker can apply."
+ }
+ }
+ }
+ },
+ "stop": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "when"
+ ],
+ "properties": {
+ "when": {
+ "enum": [
+ "done",
+ "passes",
+ "rounds",
+ "person"
+ ],
+ "description": "done: when the last phase ends; passes: when the checks pass; rounds: after ROUNDS rounds; person: when the person says so."
+ },
+ "rounds": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 20
+ }
+ }
+ },
+ "budget": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "split": {
+ "type": "object",
+ "propertyNames": {
+ "pattern": "^[a-z][a-z0-9-]{0,60}$"
+ },
+ "additionalProperties": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 1
+ },
+ "description": "Each role's share of the parent's budget (the shares add up to at most 1)."
+ }
+ }
+ },
+ "visibility": {
+ "enum": [
+ "private",
+ "public"
+ ]
+ },
+ "author": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "type",
+ "id"
+ ],
+ "properties": {
+ "type": {
+ "enum": [
+ "user",
+ "agent",
+ "service"
+ ]
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 160
+ }
+ }
+ }
+ }
+ }
+ },
+ "agents.source": {
+ "version": "1.0.0",
+ "owner": "network",
+ "status": "active",
+ "schema": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://openvibe.network/contracts/agents/source.v1.json",
+ "title": "AgentsSource",
+ "description": "agents.source@1 (agent-engine.md §5, 2026-11-12): one place where asks are taken in without opening an agent app, and how. KIND is the place (the feed, chat rooms and DMs, comments, git.openvibe.codes, a composer, notifications, mail, a schedule or a goal, a webhook, a machine's events); ON turns it on; WHO says whose words may start work there (only its owner, a list of people, their followers, or anyone); RULE says in words what counts as an ask; CREATES is the run an accepted ask becomes (its kind, target, agent and play); BUDGET is each such run's hard limit; ANSWER is how the run speaks back on the thread (a reply, a card that follows the run, a notice, or nothing). Intake stores the ask first and acts after, with backoff; an inferred ask confirms before it acts (agents.run@1's MANDATE.STRENGTH).",
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "id",
+ "kind",
+ "owner",
+ "on",
+ "who",
+ "creates"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "pattern": "^src_[A-Za-z0-9]{8,40}$"
+ },
+ "kind": {
+ "enum": [
+ "feed",
+ "chat",
+ "comments",
+ "git",
+ "composer",
+ "notifications",
+ "mail",
+ "schedule",
+ "goal",
+ "webhook",
+ "machine"
+ ]
+ },
+ "name": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 120
+ },
+ "owner": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "type",
+ "id"
+ ],
+ "properties": {
+ "type": {
+ "enum": [
+ "user",
+ "agent",
+ "service"
+ ]
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 160
+ }
+ }
+ },
+ "on": {
+ "type": "boolean"
+ },
+ "where": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "service"
+ ],
+ "description": "Which one of that kind: a room, a repository, a feed, a machine.",
+ "properties": {
+ "service": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,40}$"
+ },
+ "kind": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9_-]{0,40}$"
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 200
+ },
+ "url": {
+ "type": "string",
+ "format": "uri",
+ "pattern": "^https://",
+ "maxLength": 2048
+ }
+ }
+ },
+ "who": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "may"
+ ],
+ "properties": {
+ "may": {
+ "enum": [
+ "owner",
+ "list",
+ "followers",
+ "anyone"
+ ]
+ },
+ "list": {
+ "type": "array",
+ "maxItems": 200,
+ "uniqueItems": true,
+ "items": {
+ "type": "string",
+ "pattern": "^usr_[A-Za-z0-9]{6,40}$"
+ }
+ }
+ }
+ },
+ "rule": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 2000,
+ "description": "What counts as an ask here, in words (a post that asks for a feature or reports a bug; a message that names @Vibe)."
+ },
+ "creates": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "kind"
+ ],
+ "properties": {
+ "kind": {
+ "enum": [
+ "chat",
+ "ask",
+ "task",
+ "code",
+ "machine",
+ "goal"
+ ]
+ },
+ "target": {
+ "description": "What a code run works on. new: a new project in the person's own space. openvibe: OpenVibe itself; the orchestrator finds the repositories and opens pull requests, never merges. An object names one repository.",
+ "anyOf": [
+ {
+ "enum": [
+ "new",
+ "openvibe"
+ ]
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "repo"
+ ],
+ "properties": {
+ "repo": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 300,
+ "description": "owner/name, or the repository's address."
+ },
+ "branch": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 200
+ }
+ }
+ }
+ ]
+ },
+ "agent": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 160
+ },
+ "play": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{0,60}$",
+ "description": "The play (agents.play@1's ID) this run's tree follows: solo, advisor, plan-execute, fan-out, team, grader-loop, research-build, issue-to-pr, watch, or a person's own. On a child run it is its parent's."
+ }
+ }
+ },
+ "budget": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "usd": {
+ "type": "number",
+ "minimum": 0
+ },
+ "tokens": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "seconds": {
+ "type": "number",
+ "minimum": 0
+ },
+ "steps": {
+ "type": "integer",
+ "minimum": 1
+ }
+ }
+ },
+ "answer": {
+ "enum": [
+ "reply",
+ "card",
+ "notice",
+ "none"
+ ]
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ }
+ },
"feed.item": {
"feed.item": {
"version": "1.0.0",
"version": "1.0.0",
"owner": "network",
"owner": "network",
@@ -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.416.0",
- "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.Bench API",
"title": "OpenVibe.Bench API",
- "version": "0.416.0",
- "description": "Routes of OpenVibe.Bench as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Bench as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.417.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 Connect API",
"title": "OpenVibe Connect API",
- "version": "0.416.0",
- "description": "Routes of OpenVibe Connect as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe Connect as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.Design API",
"title": "OpenVibe.Design API",
- "version": "0.416.0",
- "description": "Routes of OpenVibe.Design as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Design as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.Domains API",
"title": "OpenVibe.Domains API",
- "version": "0.416.0",
- "description": "Routes of OpenVibe.Domains as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Domains as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.Exchange API",
"title": "OpenVibe.Exchange API",
- "version": "0.416.0",
- "description": "Routes of OpenVibe.Exchange as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Exchange as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.Git API",
"title": "OpenVibe.Git API",
- "version": "0.416.0",
- "description": "Routes of OpenVibe.Git as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Git as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.Mail API",
"title": "OpenVibe.Mail API",
- "version": "0.416.0",
- "description": "Routes of OpenVibe.Mail as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Mail as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.Report API",
"title": "OpenVibe.Report API",
- "version": "0.416.0",
- "description": "Routes of OpenVibe.Report as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Report as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.Today API",
"title": "OpenVibe.Today API",
- "version": "0.416.0",
- "description": "Routes of OpenVibe.Today as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Today as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.Vision API",
"title": "OpenVibe.Vision API",
- "version": "0.416.0",
- "description": "Routes of OpenVibe.Vision as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Vision as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.417.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.416.0",
- "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.416.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.417.0",
+ "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.417.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"
@@ -342623,9 +342623,9 @@ export interface FrameMentions {
@@ -342623,9 +342623,9 @@ export interface FrameMentions {
];
];
}
}
-/** [email protected] (owner: actor) */
+/** [email protected] (owner: actor) */
/**
/**
- * agents.run@1 (one agent system, 2026-11-12): one run of an agent, the same shape on every product (Actor, Codes, Run and anything else on openvibe-sdk/agents). The owner is the person or agent the work belongs to; AGENT names the agent or harness that runs it and the product it comes from; PARENT_RUN makes sub-agent runs a tree; BUDGET is the hard limit and COST what the run has spent; STATUS is where the run is now. The run is stored by its product, not here: this contract is the wire shape. GET /api/v1/runs, /api/v1/runs/{id} and /api/v1/runs/{id}/steps serve it (OpenVibe.Actor) and the SDK's runs client reads it. The product's own id is kept, never reused. A run that ends keeps its end status. Since 1.1.0 (agent-engine.md) a run also says what a person calls it (TITLE), what sort it is (KIND), where it lives (REF on the Frame, URL on its product), which model runs it and where, what it is doing now (DOING), what it waits for (WAITING), its last line (PREVIEW), where it was asked (CONTEXT) and what it made (OUTPUTS); a chat with Vibe is a run of KIND chat that is waiting for a message. Every added field is optional. This v1 contract may grow optional fields; a step is agents.step@1 and an approval is agents.approval@1.
+ * agents.run@1 (one agent system, 2026-11-12): one run of an agent, the same shape on every product (Actor, Codes, Run and anything else on openvibe-sdk/agents). The owner is the person or agent the work belongs to; AGENT names the agent or harness that runs it and the product it comes from; PARENT_RUN makes sub-agent runs a tree; BUDGET is the hard limit and COST what the run has spent; STATUS is where the run is now. The run is stored by its product, not here: this contract is the wire shape. GET /api/v1/runs, /api/v1/runs/{id} and /api/v1/runs/{id}/steps serve it (OpenVibe.Actor) and the SDK's runs client reads it. The product's own id is kept, never reused. A run that ends keeps its end status. Since 1.1.0 (agent-engine.md) a run also says what a person calls it (TITLE), what sort it is (KIND), where it lives (REF on the Frame, URL on its product), which model runs it and where, what it is doing now (DOING), what it waits for (WAITING), its last line (PREVIEW), where it was asked (CONTEXT) and what it made (OUTPUTS); a chat with Vibe is a run of KIND chat that is waiting for a message. Every added field is optional. This v1 contract may grow optional fields; a step is agents.step@1 and an approval is agents.approval@1. Since 1.2.0 (agent-engine.md §§3-5, from the code study) a run may also say why it exists (MANDATE: an ask taken in from the feed, a room, an issue), what it continues (LINEAGE: a fork, a hand-off, a regenerated turn), the play its tree follows and a child's ROLE in it, what its agent's harness can do (AGENT.CAPABILITIES), and what it spent on each rung of the ladder (COST.BY). Every added field is optional.
*/
*/
export interface AgentsRun {
export interface AgentsRun {
/**
/**
@@ -342637,7 +342637,7 @@ export interface AgentsRun {
@@ -342637,7 +342637,7 @@ export interface AgentsRun {
*/
*/
owner: SubjectRef;
owner: SubjectRef;
/**
/**
- * The agent or harness that runs it. ID is the product's own agent id or slug; NAME is what a person reads; PRODUCT is the product it comes from (actor, codes, run, chat, …). GLYPH, HUE and AVATAR_URL are its face; HARNESS is the loop that runs it.
+ * The agent or harness that runs it. ID is the product's own agent id or slug; NAME is what a person reads; PRODUCT is the product it comes from (actor, codes, run, chat, …). GLYPH, HUE and AVATAR_URL are its face; HARNESS is the loop that runs it. Since 1.2.0, CAPABILITIES says what its harness can do.
*/
*/
agent: {
agent: {
id: string;
id: string;
@@ -342659,264 +342659,9746 @@ export interface AgentsRun {
@@ -342659,264 +342659,9746 @@ export interface AgentsRun {
* The loop that runs it: openvibe (the SDK's own), or another harness run through an adapter (codex, claude-code, opencode, deepseek, …).
* The loop that runs it: openvibe (the SDK's own), or another harness run through an adapter (codex, claude-code, opencode, deepseek, …).
*/
*/
harness?: string;
harness?: string;
- };
- /**
- * The run that started this one (a sub-agent), or null. The parent's run card nests children; the child's budget is a slice of the parent's.
- */
- parent_run?: string | null;
- /**
- * The hard limit the run may not exceed. A field that is absent is not limited. USD is money; TOKENS counts model tokens in and out; SECONDS is wall time; STEPS counts the appended steps.
- */
- budget?: {
- usd?: number;
- tokens?: number;
- seconds?: number;
- steps?: number;
- };
- /**
- * planning: accepted, no step yet. running: a step is under way. waiting: the run waits for its person (an approval or a takeover) and costs nothing. done, failed and stopped are the end statuses; an end status never changes.
- */
- status: "planning" | "running" | "waiting" | "done" | "failed" | "stopped";
- created_at: string;
- /**
- * When the run last changed: its newest step, its end, or its creation when nothing has happened yet.
- */
- updated_at: string;
- /**
- * What the run answered or what is left, in plain words, for a run card. The full result stays the product's (Actor's result, Codes' result.summary). Null until there is one.
- */
- result_summary?: string | null;
- /**
- * What the run has spent so far, to the product's own precision. Null before anything is known.
- */
- cost?: {
- usd?: number;
- tokens?: number;
- seconds?: number;
- steps?: number;
- } | null;
- /**
- * What a person calls this run: a chat's name, a task's goal in a few words.
- */
- title?: string;
- /**
- * What sort of run it is. chat: a conversation that stays open. ask: one question and its answer. task: work an agent does for its person. code: a coding task. machine: a job on a computer or a robot. goal: a standing goal that runs on its own schedule. A product may add its own; a reader treats an unknown kind as task.
- */
- kind?: string;
- /**
- * The run's address on the Frame: its product, a colon, the product's own id (chat:…, codes:tsk_…, actor:tsk_…). /api/frame/runs/{ref} reads it wherever it lives.
- */
- ref?: string;
- /**
- * The run's own page on its product.
- */
- url?: string;
- /**
- * The model that runs it, as the picker chose it (frame.choices@1's choice, with the name a person reads). EFFORT is the reasoning effort where the model has one.
- */
- model?: {
- id: string;
- /**
- * openvibe: Exchange's directory, paid in credits. keys: the person's own key. machines: a model on the person's own computer (Link). plans: a signed-in plan through a harness.
- */
- source?: "openvibe" | "keys" | "machines" | "plans";
- machine?: string;
- name?: string;
- effort?: string;
- };
- /**
- * Where the run's work happens. openvibe: OpenVibe's own computers. machine: the person's own computer or robot through Link (ID is the device). runner: a Codes runner. this-computer: the machine that serves the run itself (Link's agent serve).
- */
- where?: {
- kind: "openvibe" | "machine" | "runner" | "this-computer";
- id?: string;
- name?: string;
- };
- /**
- * What a code run works on. new: a new project in the person's own space. openvibe: OpenVibe itself; the orchestrator finds the repositories and opens pull requests, never merges. An object names one repository.
- */
- target?:
- | ("new" | "openvibe")
- | {
- /**
- * owner/name, or the repository's address.
- */
- repo: string;
- branch?: string;
- };
- /**
- * What the run is doing now, for its agent's face: a few words and a glyph. Null when it is not working.
- */
- doing?: {
- text: string;
- /**
- * A glyph's name in the openvibe-shared glyph registry (openvibe.design/icons). A reader that does not know it draws its default.
- */
- glyph?: string;
- } | null;
- /**
- * Why a waiting run waits. message: it is the person's turn to speak (a conversation between turns). approval: it asked before an act (APPROVAL is the agents.approval@1 id). takeover: it met something only its person can do (a sign-in, a code). payment: it needs funds. WHAT says it in words. Null unless STATUS is waiting.
- */
- waiting?: {
- for: "message" | "approval" | "takeover" | "payment";
- what?: string;
- approval?: string;
- since?: string;
- } | null;
- /**
- * The last thing said in the run, for a list: the words, who said them and when.
- */
- preview?: {
- text: string;
- from?: "person" | "agent" | "system" | "tool";
- at?: string;
- } | null;
- /**
- * Where the run was asked: the site, the page and what the page is about. A run may use it; it never grants access.
- */
- context?: {
- site?: string;
- /**
- * The page's address.
- */
- url?: string;
- title?: string;
- kind?: string;
- id?: string;
- };
- /**
- * What the run made, newest last: for its card, and for the feed when it is shared.
- *
- * @maxItems 50
- */
- outputs?: {
- kind: "link" | "file" | "image" | "video" | "audio" | "pr" | "repo" | "page" | "post" | "run";
- title: string;
- /**
- * Where it is.
- */
- url?: string;
- /**
- * A small picture of it.
- */
- thumb?: string;
- media_id?: string;
- /**
- * A pull request's or a check's state in a word (open, green, red, merged).
- */
- state?: string;
- }[];
- /**
- * Counts a list shows without reading the steps.
- */
- counts?: {
- steps?: number;
- children?: number;
- files?: number;
- approvals?: number;
- unread?: number;
- };
- /**
- * Who may read the run: its owner only, people it was shared with, or anyone with its address.
- */
- visibility?: "private" | "shared" | "public";
- /**
- * When the run reached an end status. Null while it has not.
- */
- ended_at?: string | null;
-}
-
-/** [email protected] (owner: actor) */
-/**
- * agents.step@1 (one agent system, 2026-11-12): one entry of a run's append-only step log, as GET /api/v1/runs/{id}/steps returns it and as agents.step.appended@1 publishes it. SEQ is the run's own order (1, 2, …), never renumbered; a reader pages with ?after=SEQ. KIND says what the entry is: think (a plan, a check, a note to self), tool (a tool call or its result), message (words for the person), approval (the run asked), child (a sub-agent or a hand-off) or file (a file the run made). TEXT is what a person reads; TOOL_CALL is the tool's name and input on a tool entry; RESULT is what came back. The product's own event may split a call and its result into two steps: both carry KIND tool and the call's seq is the earlier one. A step carries no credential, no key and no token; a secret a tool saw is redacted before it is stored. Since 1.1.0 (agent-engine.md) a step also says who spoke (FROM: the person's own words are steps too), whether it is still under way (STATUS), a short TITLE and GLYPH for a tool or a thought, the files that go with it (ATTACHMENTS), numbered SOURCES, a rich card (UI) and, where a computer was used, the DESK picture and action for replay. Every added field is optional.
- */
-export interface AgentsStep {
- /**
- * The run this step belongs to (agents.run@1's id).
- */
- run_id: string;
- /**
- * The run's own order for this entry, starting at 1 and never renumbered. ?after=SEQ reads the entries after it.
- */
- seq: number;
- /**
- * think: a plan, a check or reasoning. tool: a tool call or its result. message: words for the person. approval: the run asked its person. child: a sub-agent run or a hand-off. file: a file the run made.
- */
- kind: "think" | "tool" | "message" | "approval" | "child" | "file";
- /**
- * What a person reads for this step: the plan line, the message, the short tool answer or the file's name. Never a prompt or a secret.
- */
- text?: string | null;
- /**
- * The tool this entry called. On a product that logs a call and its result as two steps, the call names the tool and the result entry has no TOOL_CALL.
- */
- tool_call?: {
- name: string;
- /**
- * The call's input, as the product recorded it: an object, a short summary string, or null. Credential-shaped fields are already redacted.
- */
- input?: {
- [k: string]: unknown | undefined;
- };
- } | null;
- /**
- * What the step answered: a tool's output, a check's verdict, a file's reference. Any JSON; never a credential.
- */
- result?: string | {} | unknown[] | number | boolean | null;
- /**
- * What this step spent, when the product meters per step. Null when it meters per run only.
- */
- cost?: {
- usd?: number;
- tokens?: number;
- seconds?: number;
- } | null;
- started_at: string;
- /**
- * When the step ended, when the product records an end. A product that logs a point event sets it to the event's time; null when the step is still open.
- */
- ended_at?: string | null;
- /**
- * The child run this step started, on KIND child. Null elsewhere.
- */
- child_run?: string | null;
- /**
- * Who this entry is from. person: the run's person (their message). agent: the agent. system: the product (a notice, a limit reached). tool: a tool's own words. Absent means agent.
- */
- from?: "person" | "agent" | "system" | "tool";
- /**
- * Who spoke, when a thread has several people or agents: a name and a picture. Absent for the run's own person and agent.
- */
- author?: {
- id?: string;
- name: string;
/**
/**
- * Their picture.
+ * What the agent's harness can do, so the Dispatcher chooses by capability and never by name: resume and fork a thread, ask approvals, read images, start sub-agents, use desks, browse, search the web, use MCP tools, plan before acting, read and write files, run a shell, speak and listen.
+ *
+ * @maxItems 20
*/
*/
- avatar_url?: string;
- };
- /**
- * Whether the entry is still under way (a tool that runs, a message being written). Absent means done.
- */
- status?: "running" | "done" | "failed";
- /**
- * The entry in a few words, for a tool or a thought: "Searching the web", "Reading 3 files".
- */
- title?: string;
- /**
- * A glyph's name in the openvibe-shared glyph registry (openvibe.design/icons). A reader that does not know it draws its default.
- */
- glyph?: string;
- /**
- * @maxItems 20
- */
- attachments?:
- | []
- | [
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
+ capabilities?:
+ | []
+ | [
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ];
+ };
+ /**
+ * The run that started this one (a sub-agent), or null. The parent's run card nests children; the child's budget is a slice of the parent's.
+ */
+ parent_run?: string | null;
+ /**
+ * The hard limit the run may not exceed. A field that is absent is not limited. USD is money; TOKENS counts model tokens in and out; SECONDS is wall time; STEPS counts the appended steps.
+ */
+ budget?: {
+ usd?: number;
+ tokens?: number;
+ seconds?: number;
+ steps?: number;
+ };
+ /**
+ * planning: accepted, no step yet. running: a step is under way. waiting: the run waits for its person (an approval or a takeover) and costs nothing. done, failed and stopped are the end statuses; an end status never changes.
+ */
+ status: "planning" | "running" | "waiting" | "done" | "failed" | "stopped";
+ created_at: string;
+ /**
+ * When the run last changed: its newest step, its end, or its creation when nothing has happened yet.
+ */
+ updated_at: string;
+ /**
+ * What the run answered or what is left, in plain words, for a run card. The full result stays the product's (Actor's result, Codes' result.summary). Null until there is one.
+ */
+ result_summary?: string | null;
+ /**
+ * What the run has spent so far, to the product's own precision. Null before anything is known.
+ */
+ cost?: {
+ usd?: number;
+ tokens?: number;
+ seconds?: number;
+ steps?: number;
+ /**
+ * The spend by rung of the Dispatcher's ladder (agent-engine.md §3): MACHINE, a model on the person's own computer (free); PLAN, a signed-in plan through its harness (flat); KEY, the person's own provider key (no fee); ALLOWANCE, OpenVibe's free allowance; CREDITS, bought (Exchange's offers). The parts add up to the run's own totals.
+ */
+ by?: {
+ machine?: {
+ usd?: number;
+ tokens?: number;
+ seconds?: number;
+ };
+ plan?: {
+ usd?: number;
+ tokens?: number;
+ seconds?: number;
+ };
+ key?: {
+ usd?: number;
+ tokens?: number;
+ seconds?: number;
+ };
+ allowance?: {
+ usd?: number;
+ tokens?: number;
+ seconds?: number;
+ };
+ credits?: {
+ usd?: number;
+ tokens?: number;
+ seconds?: number;
+ };
+ };
+ } | null;
+ /**
+ * What a person calls this run: a chat's name, a task's goal in a few words.
+ */
+ title?: string;
+ /**
+ * What sort of run it is. chat: a conversation that stays open. ask: one question and its answer. task: work an agent does for its person. code: a coding task. machine: a job on a computer or a robot. goal: a standing goal that runs on its own schedule. A product may add its own; a reader treats an unknown kind as task.
+ */
+ kind?: string;
+ /**
+ * The run's address on the Frame: its product, a colon, the product's own id (chat:…, codes:tsk_…, actor:tsk_…). /api/frame/runs/{ref} reads it wherever it lives.
+ */
+ ref?: string;
+ /**
+ * The run's own page on its product.
+ */
+ url?: string;
+ /**
+ * The model that runs it, as the picker chose it (frame.choices@1's choice, with the name a person reads). EFFORT is the reasoning effort where the model has one.
+ */
+ model?: {
+ id: string;
+ /**
+ * openvibe: Exchange's directory, paid in credits. keys: the person's own key. machines: a model on the person's own computer (Link). plans: a signed-in plan through a harness.
+ */
+ source?: "openvibe" | "keys" | "machines" | "plans";
+ machine?: string;
+ name?: string;
+ effort?: string;
+ };
+ /**
+ * Where the run's work happens. openvibe: OpenVibe's own computers. machine: the person's own computer or robot through Link (ID is the device). runner: a Codes runner. this-computer: the machine that serves the run itself (Link's agent serve).
+ */
+ where?: {
+ kind: "openvibe" | "machine" | "runner" | "this-computer";
+ id?: string;
+ name?: string;
+ };
+ /**
+ * What a code run works on. new: a new project in the person's own space. openvibe: OpenVibe itself; the orchestrator finds the repositories and opens pull requests, never merges. An object names one repository.
+ */
+ target?:
+ | ("new" | "openvibe")
+ | {
+ /**
+ * owner/name, or the repository's address.
+ */
+ repo: string;
+ branch?: string;
+ };
+ /**
+ * What the run is doing now, for its agent's face: a few words and a glyph. Null when it is not working.
+ */
+ doing?: {
+ text: string;
+ /**
+ * A glyph's name in the openvibe-shared glyph registry (openvibe.design/icons). A reader that does not know it draws its default.
+ */
+ glyph?: string;
+ } | null;
+ /**
+ * Why a waiting run waits. message: it is the person's turn to speak (a conversation between turns). approval: it asked before an act (APPROVAL is the agents.approval@1 id). takeover: it met something only its person can do (a sign-in, a code). payment: it needs funds. WHAT says it in words. Null unless STATUS is waiting.
+ */
+ waiting?: {
+ for: "message" | "approval" | "takeover" | "payment";
+ what?: string;
+ approval?: string;
+ since?: string;
+ } | null;
+ /**
+ * The last thing said in the run, for a list: the words, who said them and when.
+ */
+ preview?: {
+ text: string;
+ from?: "person" | "agent" | "system" | "tool";
+ at?: string;
+ } | null;
+ /**
+ * Where the run was asked: the site, the page and what the page is about. A run may use it; it never grants access.
+ */
+ context?: {
+ site?: string;
+ /**
+ * The page's address.
+ */
+ url?: string;
+ title?: string;
+ kind?: string;
+ id?: string;
+ };
+ /**
+ * What the run made, newest last: for its card, and for the feed when it is shared.
+ *
+ * @maxItems 50
+ */
+ outputs?: {
+ kind: "link" | "file" | "image" | "video" | "audio" | "pr" | "repo" | "page" | "post" | "run";
+ title: string;
+ /**
+ * Where it is.
+ */
+ url?: string;
+ /**
+ * A small picture of it.
+ */
+ thumb?: string;
+ media_id?: string;
+ /**
+ * A pull request's or a check's state in a word (open, green, red, merged).
+ */
+ state?: string;
+ }[];
+ /**
+ * Counts a list shows without reading the steps.
+ */
+ counts?: {
+ steps?: number;
+ children?: number;
+ files?: number;
+ approvals?: number;
+ unread?: number;
+ };
+ /**
+ * Who may read the run: its owner only, people it was shared with, or anyone with its address.
+ */
+ visibility?: "private" | "shared" | "public";
+ /**
+ * When the run reached an end status. Null while it has not.
+ */
+ ended_at?: string | null;
+ /**
+ * Why the run exists when it came through intake (agent-engine.md §5): SOURCE is where the ask was made; THREAD is the conversation it was made in (a post, a room, an issue: its service, kind and id, and its address), where the run answers and from which later messages reach it; ASKED_BY is who asked; STRENGTH says whether they asked outright (explicit) or the Source's rule read an ask in what they wrote (inferred: such a run confirms before it acts); SCOPE says in words what the run may do for them. Null (or absent) for a run a person started themselves.
+ */
+ mandate?: {
+ source:
+ | "feed"
+ | "chat"
+ | "comments"
+ | "git"
+ | "composer"
+ | "notifications"
+ | "mail"
+ | "schedule"
+ | "goal"
+ | "webhook"
+ | "machine";
+ thread?: {
+ service: string;
+ kind: string;
+ id: string;
+ url?: string;
+ };
+ asked_by: {
+ type: "user" | "agent" | "service";
+ id: string;
+ };
+ strength: "explicit" | "inferred";
+ scope?: string;
+ } | null;
+ /**
+ * Where the run came from when it continues another (agent-engine.md, from the code study): FROM is that run's ref; AT_TURN is the turn it was taken from (agents.step@1's TURN; the steps before it are the new run's history); HOW is fork (a person branched the conversation), handoff (another harness or model took it on, with a written summary as its first step) or regenerate (the same turn answered again). Null for a run that starts fresh.
+ */
+ lineage?: {
+ /**
+ * A run's ref: the product, a colon, the product's own run id (agents.run@1's REF).
+ */
+ from: string;
+ at_turn?: number;
+ how: "fork" | "handoff" | "regenerate";
+ } | null;
+ /**
+ * The play (agents.play@1's ID) this run's tree follows: solo, advisor, plan-execute, fan-out, team, grader-loop, research-build, issue-to-pr, watch, or a person's own. On a child run it is its parent's.
+ */
+ play?: string;
+ /**
+ * A child run's role in its parent's play (one of the play's role ids: planner, executor, advisor, grader, reviewer, searcher, worker…).
+ */
+ role?: string;
+}
+
+/** [email protected] (owner: actor) */
+/**
+ * agents.step@1 (one agent system, 2026-11-12): one entry of a run's append-only step log, as GET /api/v1/runs/{id}/steps returns it and as agents.step.appended@1 publishes it. SEQ is the run's own order (1, 2, …), never renumbered; a reader pages with ?after=SEQ. KIND says what the entry is: think (a plan, a check, a note to self), tool (a tool call or its result), message (words for the person), approval (the run asked), child (a sub-agent or a hand-off) or file (a file the run made). TEXT is what a person reads; TOOL_CALL is the tool's name and input on a tool entry; RESULT is what came back. The product's own event may split a call and its result into two steps: both carry KIND tool and the call's seq is the earlier one. A step carries no credential, no key and no token; a secret a tool saw is redacted before it is stored. Since 1.1.0 (agent-engine.md) a step also says who spoke (FROM: the person's own words are steps too), whether it is still under way (STATUS), a short TITLE and GLYPH for a tool or a thought, the files that go with it (ATTACHMENTS), numbered SOURCES, a rich card (UI) and, where a computer was used, the DESK picture and action for replay. Every added field is optional. Since 1.2.0 a step says the TURN it belongs to.
+ */
+export interface AgentsStep {
+ /**
+ * The run this step belongs to (agents.run@1's id).
+ */
+ run_id: string;
+ /**
+ * The run's own order for this entry, starting at 1 and never renumbered. ?after=SEQ reads the entries after it.
+ */
+ seq: number;
+ /**
+ * think: a plan, a check or reasoning. tool: a tool call or its result. message: words for the person. approval: the run asked its person. child: a sub-agent run or a hand-off. file: a file the run made.
+ */
+ kind: "think" | "tool" | "message" | "approval" | "child" | "file";
+ /**
+ * What a person reads for this step: the plan line, the message, the short tool answer or the file's name. Never a prompt or a secret.
+ */
+ text?: string | null;
+ /**
+ * The tool this entry called. On a product that logs a call and its result as two steps, the call names the tool and the result entry has no TOOL_CALL.
+ */
+ tool_call?: {
+ name: string;
+ /**
+ * The call's input, as the product recorded it: an object, a short summary string, or null. Credential-shaped fields are already redacted.
+ */
+ input?: {
+ [k: string]: unknown | undefined;
+ };
+ } | null;
+ /**
+ * What the step answered: a tool's output, a check's verdict, a file's reference. Any JSON; never a credential.
+ */
+ result?: string | {} | unknown[] | number | boolean | null;
+ /**
+ * What this step spent, when the product meters per step. Null when it meters per run only.
+ */
+ cost?: {
+ usd?: number;
+ tokens?: number;
+ seconds?: number;
+ } | null;
+ started_at: string;
+ /**
+ * When the step ended, when the product records an end. A product that logs a point event sets it to the event's time; null when the step is still open.
+ */
+ ended_at?: string | null;
+ /**
+ * The child run this step started, on KIND child. Null elsewhere.
+ */
+ child_run?: string | null;
+ /**
+ * Who this entry is from. person: the run's person (their message). agent: the agent. system: the product (a notice, a limit reached). tool: a tool's own words. Absent means agent.
+ */
+ from?: "person" | "agent" | "system" | "tool";
+ /**
+ * Who spoke, when a thread has several people or agents: a name and a picture. Absent for the run's own person and agent.
+ */
+ author?: {
+ id?: string;
+ name: string;
+ /**
+ * Their picture.
+ */
+ avatar_url?: string;
+ };
+ /**
+ * Whether the entry is still under way (a tool that runs, a message being written). Absent means done.
+ */
+ status?: "running" | "done" | "failed";
+ /**
+ * The entry in a few words, for a tool or a thought: "Searching the web", "Reading 3 files".
+ */
+ title?: string;
+ /**
+ * A glyph's name in the openvibe-shared glyph registry (openvibe.design/icons). A reader that does not know it draws its default.
+ */
+ glyph?: string;
+ /**
+ * @maxItems 20
+ */
+ attachments?:
+ | []
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ];
+ /**
+ * The sources a message cites, numbered as its text cites them ([1], [2]).
+ *
+ * @maxItems 40
+ */
+ sources?: {
+ n: number;
+ title?: string;
+ /**
+ * The source's address.
+ */
+ url: string;
+ site?: string;
+ }[];
+ /**
+ * A rich card for this entry. TYPE names it (link, table, code, diff, image, choice, timer, repo, desk, run, or a product's own, prefixed with its product: live-clip); DATA is that card's own content. A reader that does not know the type shows TEXT instead, so TEXT always says the same thing in words.
+ */
+ ui?: {
+ type: string;
+ data?: {};
+ };
+ /**
+ * The computer this step used, for the screen tile and the replay: the desk, the picture it saw and what it did. A secret field is blanked before a still is stored.
+ */
+ desk?: {
+ id: string;
+ /**
+ * The picture the step saw.
+ */
+ still_url?: string;
+ action?: {
+ type: string;
+ x?: number;
+ y?: number;
+ text?: string;
+ };
+ };
+ /**
+ * The turn the step belongs to. A person's message opens a turn (turn 0 is what the run started with); every step until their next message is in it. A fork, a hand-off or a regenerated answer starts at a turn boundary (agents.run@1's LINEAGE.AT_TURN).
+ */
+ turn?: number;
+}
+
+/** [email protected] (owner: actor) */
+/**
+ * agents.approval@1 (one agent system, 2026-11-12): a run stopped at a step to ask its person before it acts. WHAT is the act in plain words; OPTIONS are the answers the product offers, each with an id and the words a person reads; DECIDED_BY and DECIDED_AT are absent (or null) while it waits; ANSWER is the chosen option's id (or the person's own words, when the product allows them). Nothing the approval covers runs before the answer, and an answer decided once is never decided again. The approval is attached to the run's step (STEP_SEQ), so a step log and an approval list line up. OpenVibe.Actor's approval inbox and OpenVibe.Codes' tool approvals are the same shape; the product keeps the grant.
+ */
+export interface AgentsApproval {
+ /**
+ * The product's own approval id (apr_…), when it has one; STEP_SEQ is still the link to the run.
+ */
+ id?: string;
+ run_id: string;
+ /**
+ * The seq of the run's step that asked (agents.step@1's seq).
+ */
+ step_seq: number;
+ /**
+ * The act in plain words, with its exact target: "post this to your feed", "run rm -rf build on your machine". Never a raw tool payload.
+ */
+ what: string;
+ /**
+ * The answers the product offers, in the order to show them. The floor categories (money, a password, a deletion, a new recipient) are asked every time and have no standing permission.
+ *
+ * @minItems 1
+ * @maxItems 8
+ */
+ options:
+ | [
+ {
+ id: string;
+ label: string;
+ }
+ ]
+ | [
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ }
+ ]
+ | [
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ }
+ ]
+ | [
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ }
+ ]
+ | [
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ }
+ ]
+ | [
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ }
+ ]
+ | [
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ }
+ ]
+ | [
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ },
+ {
+ id: string;
+ label: string;
+ }
+ ];
+ /**
+ * Who answered: a person subject, a service or an agent.
+ */
+ decided_by?: SubjectRef | null;
+ decided_at?: string | null;
+ /**
+ * The chosen option's id, or the person's own words when the product allows them. Null while it waits.
+ */
+ answer?: string | null;
+}
+
+/** [email protected] (owner: actor) */
+/**
+ * agents.step.appended v1 (one agent system, 2026-11-12). A step was appended to a run: the payload is the appended agents.step@1, whole. OpenVibe.Events carries it with the run's owner as the subject, the product that ran it as the source (actor, codes, run, …) and visibility subject; a reader follows a run live without polling the step log. The namespace is agents (hyphen-free: Events namespaces cannot contain a hyphen). One producer per run: the product that stores the run publishes its steps, and the step's own product names the agent.
+ */
+export interface AgentsStepAppendedPayload {
+ /**
+ * The run this step belongs to (agents.run@1's id).
+ */
+ run_id: string;
+ /**
+ * The run's own order for this entry, starting at 1 and never renumbered. ?after=SEQ reads the entries after it.
+ */
+ seq: number;
+ /**
+ * think: a plan, a check or reasoning. tool: a tool call or its result. message: words for the person. approval: the run asked its person. child: a sub-agent run or a hand-off. file: a file the run made.
+ */
+ kind: "think" | "tool" | "message" | "approval" | "child" | "file";
+ /**
+ * What a person reads for this step: the plan line, the message, the short tool answer or the file's name. Never a prompt or a secret.
+ */
+ text?: string | null;
+ /**
+ * The tool this entry called. On a product that logs a call and its result as two steps, the call names the tool and the result entry has no TOOL_CALL.
+ */
+ tool_call?: {
+ name: string;
+ /**
+ * The call's input, as the product recorded it: an object, a short summary string, or null. Credential-shaped fields are already redacted.
+ */
+ input?: {
+ [k: string]: unknown | undefined;
+ };
+ } | null;
+ /**
+ * What the step answered: a tool's output, a check's verdict, a file's reference. Any JSON; never a credential.
+ */
+ result?: string | {} | unknown[] | number | boolean | null;
+ /**
+ * What this step spent, when the product meters per step. Null when it meters per run only.
+ */
+ cost?: {
+ usd?: number;
+ tokens?: number;
+ seconds?: number;
+ } | null;
+ started_at: string;
+ /**
+ * When the step ended, when the product records an end. A product that logs a point event sets it to the event's time; null when the step is still open.
+ */
+ ended_at?: string | null;
+ /**
+ * The child run this step started, on KIND child. Null elsewhere.
+ */
+ child_run?: string | null;
+ /**
+ * Who this entry is from. person: the run's person (their message). agent: the agent. system: the product (a notice, a limit reached). tool: a tool's own words. Absent means agent.
+ */
+ from?: "person" | "agent" | "system" | "tool";
+ /**
+ * Who spoke, when a thread has several people or agents: a name and a picture. Absent for the run's own person and agent.
+ */
+ author?: {
+ id?: string;
+ name: string;
+ /**
+ * Their picture.
+ */
+ avatar_url?: string;
+ };
+ /**
+ * Whether the entry is still under way (a tool that runs, a message being written). Absent means done.
+ */
+ status?: "running" | "done" | "failed";
+ /**
+ * The entry in a few words, for a tool or a thought: "Searching the web", "Reading 3 files".
+ */
+ title?: string;
+ /**
+ * A glyph's name in the openvibe-shared glyph registry (openvibe.design/icons). A reader that does not know it draws its default.
+ */
+ glyph?: string;
+ /**
+ * @maxItems 20
+ */
+ attachments?:
+ | []
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
* An https address the reader may fetch.
* An https address the reader may fetch.
*/
*/
url?: string;
url?: string;
@@ -342929,9 +352411,24 @@ export interface AgentsStep {
@@ -342929,9 +352411,24 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- }
- ]
- | [
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -343018,9 +352515,7 @@ export interface AgentsStep {
@@ -343018,9 +352515,7 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- }
- ]
- | [
+ },
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -343088,9 +352583,7 @@ export interface AgentsStep {
@@ -343088,9 +352583,7 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- }
- ]
- | [
+ },
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -343175,9 +352668,24 @@ export interface AgentsStep {
@@ -343175,9 +352668,24 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- }
- ]
- | [
+ },
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -343229,6 +352737,25 @@ export interface AgentsStep {
@@ -343229,6 +352737,25 @@ export interface AgentsStep {
*/
*/
alt?: string;
alt?: string;
},
},
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -343279,9 +352806,7 @@ export interface AgentsStep {
@@ -343279,9 +352806,7 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- }
- ]
- | [
+ },
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -343400,9 +352925,7 @@ export interface AgentsStep {
@@ -343400,9 +352925,7 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- }
- ]
- | [
+ },
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -343693,9 +353216,7 @@ export interface AgentsStep {
@@ -343693,9 +353216,7 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- }
- ]
- | [
+ },
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -344054,9 +353575,7 @@ export interface AgentsStep {
@@ -344054,9 +353575,7 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- }
- ]
- | [
+ },
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -344209,7 +353728,115 @@ export interface AgentsStep {
@@ -344209,7 +353728,115 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- },
+ }
+ ];
+ /**
+ * The sources a message cites, numbered as its text cites them ([1], [2]).
+ *
+ * @maxItems 40
+ */
+ sources?: {
+ n: number;
+ title?: string;
+ /**
+ * The source's address.
+ */
+ url: string;
+ site?: string;
+ }[];
+ /**
+ * A rich card for this entry. TYPE names it (link, table, code, diff, image, choice, timer, repo, desk, run, or a product's own, prefixed with its product: live-clip); DATA is that card's own content. A reader that does not know the type shows TEXT instead, so TEXT always says the same thing in words.
+ */
+ ui?: {
+ type: string;
+ data?: {};
+ };
+ /**
+ * The computer this step used, for the screen tile and the replay: the desk, the picture it saw and what it did. A secret field is blanked before a still is stored.
+ */
+ desk?: {
+ id: string;
+ /**
+ * The picture the step saw.
+ */
+ still_url?: string;
+ action?: {
+ type: string;
+ x?: number;
+ y?: number;
+ text?: string;
+ };
+ };
+ /**
+ * The turn the step belongs to. A person's message opens a turn (turn 0 is what the run started with); every step until their next message is in it. A fork, a hand-off or a regenerated answer starts at a turn boundary (agents.run@1's LINEAGE.AT_TURN).
+ */
+ turn?: number;
+}
+
+/** [email protected] (owner: network) */
+/**
+ * agents.run-start@1 (agent-engine.md, 2026-11-12): what starts a run, the same on every product's POST /api/v1/runs and on the Frame's POST /api/frame/runs. Only TEXT is required: the goal, the question or the first message, in the person's own words. KIND chooses the sort of run (agents.run@1's kinds); absent, the Frame's orchestrator decides whether to answer, plan, or hand the work to another product as a child run. AGENT names who does it (an agent's id; auto lets the product choose). MODEL and WHERE are the picker's choices; TARGET is a code run's (new, openvibe or a repository); CONTEXT is where it was asked; ATTACHMENTS are files by Media id or address; SOURCES and DEPTH are an answer's (frame.ask@1's); PARENT_RUN makes it a sub-agent's run inside its parent's budget; BUDGET is its own hard limit. An Idempotency-Key header makes a repeated start return the first run. Since 1.1.0 a start may name a PLAY, continue another run (LINEAGE), and carry intake's MANDATE.
+ */
+export interface AgentsRunStart {
+ text: string;
+ title?: string;
+ kind?: string;
+ /**
+ * An agent's id on the product that will run it, or auto.
+ */
+ agent?: string;
+ /**
+ * The picker's choice (frame.choices@1). Absent: the person's default for this kind of work.
+ */
+ model?: {
+ id: string;
+ /**
+ * openvibe: Exchange's directory, paid in credits. keys: the person's own key. machines: a model on the person's own computer (Link). plans: a signed-in plan through a harness.
+ */
+ source?: "openvibe" | "keys" | "machines" | "plans";
+ machine?: string;
+ name?: string;
+ effort?: string;
+ };
+ /**
+ * Where the run's work happens. openvibe: OpenVibe's own computers. machine: the person's own computer or robot through Link (ID is the device). runner: a Codes runner. this-computer: the machine that serves the run itself (Link's agent serve).
+ */
+ where?: {
+ kind: "openvibe" | "machine" | "runner" | "this-computer";
+ id?: string;
+ name?: string;
+ };
+ /**
+ * What a code run works on. new: a new project in the person's own space. openvibe: OpenVibe itself; the orchestrator finds the repositories and opens pull requests, never merges. An object names one repository.
+ */
+ target?:
+ | ("new" | "openvibe")
+ | {
+ /**
+ * owner/name, or the repository's address.
+ */
+ repo: string;
+ branch?: string;
+ };
+ /**
+ * Where the run was asked: the site, the page and what the page is about. A run may use it; it never grants access.
+ */
+ context?: {
+ site?: string;
+ /**
+ * The page's address.
+ */
+ url?: string;
+ title?: string;
+ kind?: string;
+ id?: string;
+ };
+ /**
+ * @maxItems 20
+ */
+ attachments?:
+ | []
+ | [
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -344226,7 +353853,9 @@ export interface AgentsStep {
@@ -344226,7 +353853,9 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- },
+ }
+ ]
+ | [
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -344313,7 +353942,9 @@ export interface AgentsStep {
@@ -344313,7 +353942,9 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- },
+ }
+ ]
+ | [
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -344365,6 +353996,25 @@ export interface AgentsStep {
@@ -344365,6 +353996,25 @@ export interface AgentsStep {
*/
*/
alt?: string;
alt?: string;
},
},
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -344433,6 +354083,25 @@ export interface AgentsStep {
@@ -344433,6 +354083,25 @@ export interface AgentsStep {
*/
*/
alt?: string;
alt?: string;
},
},
+ {
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ }
+ ]
+ | [
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -344483,9 +354152,7 @@ export interface AgentsStep {
@@ -344483,9 +354152,7 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- }
- ]
- | [
+ },
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -344536,7 +354203,9 @@ export interface AgentsStep {
@@ -344536,7 +354203,9 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- },
+ }
+ ]
+ | [
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -344655,7 +354324,9 @@ export interface AgentsStep {
@@ -344655,7 +354324,9 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- },
+ }
+ ]
+ | [
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -344723,9 +354394,7 @@ export interface AgentsStep {
@@ -344723,9 +354394,7 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- }
- ]
- | [
+ },
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -344793,7 +354462,9 @@ export interface AgentsStep {
@@ -344793,7 +354462,9 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- },
+ }
+ ]
+ | [
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -344946,7 +354617,9 @@ export interface AgentsStep {
@@ -344946,7 +354617,9 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- },
+ }
+ ]
+ | [
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -344980,9 +354653,7 @@ export interface AgentsStep {
@@ -344980,9 +354653,7 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- }
- ]
- | [
+ },
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -345118,7 +354789,9 @@ export interface AgentsStep {
@@ -345118,7 +354789,9 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- },
+ }
+ ]
+ | [
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -345254,9 +354927,7 @@ export interface AgentsStep {
@@ -345254,9 +354927,7 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- }
- ]
- | [
+ },
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -345307,7 +354978,9 @@ export interface AgentsStep {
@@ -345307,7 +354978,9 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- },
+ }
+ ]
+ | [
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -345511,7 +355184,9 @@ export interface AgentsStep {
@@ -345511,7 +355184,9 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- },
+ }
+ ]
+ | [
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -345545,9 +355220,7 @@ export interface AgentsStep {
@@ -345545,9 +355220,7 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- }
- ]
- | [
+ },
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -345734,7 +355407,9 @@ export interface AgentsStep {
@@ -345734,7 +355407,9 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- },
+ }
+ ]
+ | [
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -345853,9 +355528,7 @@ export interface AgentsStep {
@@ -345853,9 +355528,7 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- }
- ]
- | [
+ },
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -345974,7 +355647,9 @@ export interface AgentsStep {
@@ -345974,7 +355647,9 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- },
+ }
+ ]
+ | [
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -346178,9 +355853,7 @@ export interface AgentsStep {
@@ -346178,9 +355853,7 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- }
- ]
- | [
+ },
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -346231,7 +355904,9 @@ export interface AgentsStep {
@@ -346231,7 +355904,9 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- },
+ }
+ ]
+ | [
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -346503,7 +356178,9 @@ export interface AgentsStep {
@@ -346503,7 +356178,9 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- },
+ }
+ ]
+ | [
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -346520,330 +356197,177 @@ export interface AgentsStep {
@@ -346520,330 +356197,177 @@ export interface AgentsStep {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- }
- ];
- /**
- * The sources a message cites, numbered as its text cites them ([1], [2]).
- *
- * @maxItems 40
- */
- sources?: {
- n: number;
- title?: string;
- /**
- * The source's address.
- */
- url: string;
- site?: string;
- }[];
- /**
- * A rich card for this entry. TYPE names it (link, table, code, diff, image, choice, timer, repo, desk, run, or a product's own, prefixed with its product: live-clip); DATA is that card's own content. A reader that does not know the type shows TEXT instead, so TEXT always says the same thing in words.
- */
- ui?: {
- type: string;
- data?: {};
- };
- /**
- * The computer this step used, for the screen tile and the replay: the desk, the picture it saw and what it did. A secret field is blanked before a still is stored.
- */
- desk?: {
- id: string;
- /**
- * The picture the step saw.
- */
- still_url?: string;
- action?: {
- type: string;
- x?: number;
- y?: number;
- text?: string;
- };
- };
-}
-
-/** [email protected] (owner: actor) */
-/**
- * agents.approval@1 (one agent system, 2026-11-12): a run stopped at a step to ask its person before it acts. WHAT is the act in plain words; OPTIONS are the answers the product offers, each with an id and the words a person reads; DECIDED_BY and DECIDED_AT are absent (or null) while it waits; ANSWER is the chosen option's id (or the person's own words, when the product allows them). Nothing the approval covers runs before the answer, and an answer decided once is never decided again. The approval is attached to the run's step (STEP_SEQ), so a step log and an approval list line up. OpenVibe.Actor's approval inbox and OpenVibe.Codes' tool approvals are the same shape; the product keeps the grant.
- */
-export interface AgentsApproval {
- /**
- * The product's own approval id (apr_…), when it has one; STEP_SEQ is still the link to the run.
- */
- id?: string;
- run_id: string;
- /**
- * The seq of the run's step that asked (agents.step@1's seq).
- */
- step_seq: number;
- /**
- * The act in plain words, with its exact target: "post this to your feed", "run rm -rf build on your machine". Never a raw tool payload.
- */
- what: string;
- /**
- * The answers the product offers, in the order to show them. The floor categories (money, a password, a deletion, a new recipient) are asked every time and have no standing permission.
- *
- * @minItems 1
- * @maxItems 8
- */
- options:
- | [
- {
- id: string;
- label: string;
- }
- ]
- | [
- {
- id: string;
- label: string;
- },
- {
- id: string;
- label: string;
- }
- ]
- | [
- {
- id: string;
- label: string;
- },
- {
- id: string;
- label: string;
- },
- {
- id: string;
- label: string;
- }
- ]
- | [
- {
- id: string;
- label: string;
- },
- {
- id: string;
- label: string;
- },
- {
- id: string;
- label: string;
- },
- {
- id: string;
- label: string;
- }
- ]
- | [
- {
- id: string;
- label: string;
- },
- {
- id: string;
- label: string;
- },
- {
- id: string;
- label: string;
- },
- {
- id: string;
- label: string;
- },
- {
- id: string;
- label: string;
- }
- ]
- | [
- {
- id: string;
- label: string;
- },
- {
- id: string;
- label: string;
- },
- {
- id: string;
- label: string;
- },
- {
- id: string;
- label: string;
- },
- {
- id: string;
- label: string;
- },
- {
- id: string;
- label: string;
- }
- ]
- | [
- {
- id: string;
- label: string;
- },
- {
- id: string;
- label: string;
- },
- {
- id: string;
- label: string;
- },
- {
- id: string;
- label: string;
},
},
{
{
- id: string;
- label: string;
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
},
},
{
{
- id: string;
- label: string;
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
},
},
{
{
- id: string;
- label: string;
- }
- ]
- | [
- {
- id: string;
- label: string;
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
},
},
{
{
- id: string;
- label: string;
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
},
},
{
{
- id: string;
- label: string;
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
},
},
{
{
- id: string;
- label: string;
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
},
},
{
{
- id: string;
- label: string;
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
},
},
{
{
- id: string;
- label: string;
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
},
},
{
{
- id: string;
- label: string;
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
},
},
{
{
- id: string;
- label: string;
- }
- ];
- /**
- * Who answered: a person subject, a service or an agent.
- */
- decided_by?: SubjectRef | null;
- decided_at?: string | null;
- /**
- * The chosen option's id, or the person's own words when the product allows them. Null while it waits.
- */
- answer?: string | null;
-}
-
-/** [email protected] (owner: actor) */
-/**
- * agents.step.appended v1 (one agent system, 2026-11-12). A step was appended to a run: the payload is the appended agents.step@1, whole. OpenVibe.Events carries it with the run's owner as the subject, the product that ran it as the source (actor, codes, run, …) and visibility subject; a reader follows a run live without polling the step log. The namespace is agents (hyphen-free: Events namespaces cannot contain a hyphen). One producer per run: the product that stores the run publishes its steps, and the step's own product names the agent.
- */
-export interface AgentsStepAppendedPayload {
- /**
- * The run this step belongs to (agents.run@1's id).
- */
- run_id: string;
- /**
- * The run's own order for this entry, starting at 1 and never renumbered. ?after=SEQ reads the entries after it.
- */
- seq: number;
- /**
- * think: a plan, a check or reasoning. tool: a tool call or its result. message: words for the person. approval: the run asked its person. child: a sub-agent run or a hand-off. file: a file the run made.
- */
- kind: "think" | "tool" | "message" | "approval" | "child" | "file";
- /**
- * What a person reads for this step: the plan line, the message, the short tool answer or the file's name. Never a prompt or a secret.
- */
- text?: string | null;
- /**
- * The tool this entry called. On a product that logs a call and its result as two steps, the call names the tool and the result entry has no TOOL_CALL.
- */
- tool_call?: {
- name: string;
- /**
- * The call's input, as the product recorded it: an object, a short summary string, or null. Credential-shaped fields are already redacted.
- */
- input?: {
- [k: string]: unknown | undefined;
- };
- } | null;
- /**
- * What the step answered: a tool's output, a check's verdict, a file's reference. Any JSON; never a credential.
- */
- result?: string | {} | unknown[] | number | boolean | null;
- /**
- * What this step spent, when the product meters per step. Null when it meters per run only.
- */
- cost?: {
- usd?: number;
- tokens?: number;
- seconds?: number;
- } | null;
- started_at: string;
- /**
- * When the step ended, when the product records an end. A product that logs a point event sets it to the event's time; null when the step is still open.
- */
- ended_at?: string | null;
- /**
- * The child run this step started, on KIND child. Null elsewhere.
- */
- child_run?: string | null;
- /**
- * Who this entry is from. person: the run's person (their message). agent: the agent. system: the product (a notice, a limit reached). tool: a tool's own words. Absent means agent.
- */
- from?: "person" | "agent" | "system" | "tool";
- /**
- * Who spoke, when a thread has several people or agents: a name and a picture. Absent for the run's own person and agent.
- */
- author?: {
- id?: string;
- name: string;
- /**
- * Their picture.
- */
- avatar_url?: string;
- };
- /**
- * Whether the entry is still under way (a tool that runs, a message being written). Absent means done.
- */
- status?: "running" | "done" | "failed";
- /**
- * The entry in a few words, for a tool or a thought: "Searching the web", "Reading 3 files".
- */
- title?: string;
- /**
- * A glyph's name in the openvibe-shared glyph registry (openvibe.design/icons). A reader that does not know it draws its default.
- */
- glyph?: string;
- /**
- * @maxItems 20
- */
- attachments?:
- | []
- | [
+ kind: "image" | "file" | "audio" | "video";
+ media_id?: string;
+ /**
+ * An https address the reader may fetch.
+ */
+ url?: string;
+ name?: string;
+ mime?: string;
+ bytes?: number;
+ width?: number;
+ height?: number;
+ /**
+ * What a picture shows, in words.
+ */
+ alt?: string;
+ },
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -346860,9 +356384,7 @@ export interface AgentsStepAppendedPayload {
@@ -346860,9 +356384,7 @@ export interface AgentsStepAppendedPayload {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- }
- ]
- | [
+ },
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -346896,9 +356418,7 @@ export interface AgentsStepAppendedPayload {
@@ -346896,9 +356418,7 @@ export interface AgentsStepAppendedPayload {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- }
- ]
- | [
+ },
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -347019,9 +356539,7 @@ export interface AgentsStepAppendedPayload {
@@ -347019,9 +356539,7 @@ export interface AgentsStepAppendedPayload {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- }
- ]
- | [
+ },
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -347106,9 +356624,7 @@ export interface AgentsStepAppendedPayload {
@@ -347106,9 +356624,7 @@ export interface AgentsStepAppendedPayload {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- }
- ]
- | [
+ },
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -347210,9 +356726,7 @@ export interface AgentsStepAppendedPayload {
@@ -347210,9 +356726,7 @@ export interface AgentsStepAppendedPayload {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- }
- ]
- | [
+ },
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -347263,7 +356777,9 @@ export interface AgentsStepAppendedPayload {
@@ -347263,7 +356777,9 @@ export interface AgentsStepAppendedPayload {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- },
+ }
+ ]
+ | [
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -347331,9 +356847,7 @@ export interface AgentsStepAppendedPayload {
@@ -347331,9 +356847,7 @@ export interface AgentsStepAppendedPayload {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- }
- ]
- | [
+ },
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -347469,9 +356983,7 @@ export interface AgentsStepAppendedPayload {
@@ -347469,9 +356983,7 @@ export interface AgentsStepAppendedPayload {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- }
- ]
- | [
+ },
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -347590,7 +357102,9 @@ export interface AgentsStepAppendedPayload {
@@ -347590,7 +357102,9 @@ export interface AgentsStepAppendedPayload {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- },
+ }
+ ]
+ | [
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -347624,9 +357138,7 @@ export interface AgentsStepAppendedPayload {
@@ -347624,9 +357138,7 @@ export interface AgentsStepAppendedPayload {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- }
- ]
- | [
+ },
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -347796,9 +357308,7 @@ export interface AgentsStepAppendedPayload {
@@ -347796,9 +357308,7 @@ export interface AgentsStepAppendedPayload {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- }
- ]
- | [
+ },
{
{
kind: "image" | "file" | "audio" | "video";
kind: "image" | "file" | "audio" | "video";
media_id?: string;
media_id?: string;
@@ -347934,6482 +357444,10898 @@ export interface AgentsStepAppendedPayload {
@@ -347934,6482 +357444,10898 @@ export interface AgentsStepAppendedPayload {
* What a picture shows, in words.
* What a picture shows, in words.
*/
*/
alt?: string;
alt?: string;
- },
+ }
+ ];
+ /**
+ * @maxItems 4
+ */
+ sources?:
+ | []
+ | ["web" | "openvibe" | "mine" | "page"]
+ | ["web" | "openvibe" | "mine" | "page", "web" | "openvibe" | "mine" | "page"]
+ | ["web" | "openvibe" | "mine" | "page", "web" | "openvibe" | "mine" | "page", "web" | "openvibe" | "mine" | "page"]
+ | [
+ "web" | "openvibe" | "mine" | "page",
+ "web" | "openvibe" | "mine" | "page",
+ "web" | "openvibe" | "mine" | "page",
+ "web" | "openvibe" | "mine" | "page"
+ ];
+ depth?: "quick" | "balanced" | "deep";
+ parent_run?: string;
+ /**
+ * The hard limit the run may not exceed. A field that is absent is not limited. USD is money; TOKENS counts model tokens in and out; SECONDS is wall time; STEPS counts the appended steps.
+ */
+ budget?: {
+ usd?: number;
+ tokens?: number;
+ seconds?: number;
+ steps?: number;
+ };
+ /**
+ * The play to run (agents.play@1's ID); absent, the orchestrator chooses (most asks are solo).
+ */
+ play?: string;
+ /**
+ * Set by intake, never by a browser: the Source, thread and asker the run is answering (agents.run@1's MANDATE). A product ignores it from a caller that is not the intake service.
+ */
+ mandate?: {
+ source:
+ | "feed"
+ | "chat"
+ | "comments"
+ | "git"
+ | "composer"
+ | "notifications"
+ | "mail"
+ | "schedule"
+ | "goal"
+ | "webhook"
+ | "machine";
+ thread?: {
+ service: string;
+ kind: string;
+ id: string;
+ url?: string;
+ };
+ asked_by: {
+ type: "user" | "agent" | "service";
+ id: string;
+ };
+ strength: "explicit" | "inferred";
+ scope?: string;
+ } | null;
+ /**
+ * Start as a continuation of another run of the same person: a fork at a turn, a hand-off, or a regenerated turn (agents.run@1's LINEAGE).
+ */
+ lineage?: {
+ /**
+ * A run's ref: the product, a colon, the product's own run id (agents.run@1's REF).
+ */
+ from: string;
+ at_turn?: number;
+ how: "fork" | "handoff" | "regenerate";
+ } | null;
+}
+
+/** [email protected] (owner: network) */
+/**
+ * agents.event@1 (agent-engine.md, 2026-11-12): one event of a run's stream, GET /api/v1/runs/{id}/events (and /api/frame/runs/{ref}/events), as server-sent events whose event name is TYPE and whose id is the newest step's seq, so Last-Event-ID resumes after it. run: the run changed; RUN is its new snapshot. step: a step was appended; STEP is it, whole. delta: more TEXT for the step SEQ that is still being written (its STATUS is running); a reader appends it. approval: an approval was asked or answered; APPROVAL is it. end: the run reached an end status; the stream closes after it. A reader ignores a type it does not know.
+ */
+export type AgentsEvent = {
+ [k: string]: unknown | undefined;
+} & {
+ type: "run" | "step" | "delta" | "approval" | "end";
+ run?: AgentsRun;
+ step?: AgentsStep;
+ approval?: AgentsApproval;
+ run_id?: string;
+ seq?: number;
+ text?: string;
+ status?: "done" | "failed" | "stopped";
+};
+
+/** [email protected] (owner: actor) */
+/**
+ * agents.run.updated v1 (agent-engine.md, 2026-11-12). A run changed in a way a list shows: it started, its status, title, doing, waiting or preview changed, or it ended. The payload is the run's agents.run@1 snapshot, whole. OpenVibe.Events carries it with the run's owner as the subject, the product that stores it as the source and visibility subject, so the person's run list anywhere stays current without polling. A step is agents.step.appended; this event is not sent for every step, only when the snapshot a list draws changed (at most about once a second per run).
+ */
+export interface AgentsRunUpdatedPayload {
+ /**
+ * The product's own run id (Actor's tsk_…, Codes' tsk_…, a Run job's job_…). Unique within its product and never reused.
+ */
+ id: string;
+ /**
+ * The person or agent the run belongs to: the subject the work is done for.
+ */
+ owner: SubjectRef;
+ /**
+ * The agent or harness that runs it. ID is the product's own agent id or slug; NAME is what a person reads; PRODUCT is the product it comes from (actor, codes, run, chat, …). GLYPH, HUE and AVATAR_URL are its face; HARNESS is the loop that runs it. Since 1.2.0, CAPABILITIES says what its harness can do.
+ */
+ agent: {
+ id: string;
+ name?: string;
+ product?: string;
+ /**
+ * The agent's face when it has no picture: a glyph from the registry. A chat's persona sets it per run.
+ */
+ glyph?: string;
+ /**
+ * The hue its face is tinted with.
+ */
+ hue?: number;
+ /**
+ * The agent's picture, when it has one.
+ */
+ avatar_url?: string;
+ /**
+ * The loop that runs it: openvibe (the SDK's own), or another harness run through an adapter (codex, claude-code, opencode, deepseek, …).
+ */
+ harness?: string;
+ /**
+ * What the agent's harness can do, so the Dispatcher chooses by capability and never by name: resume and fork a thread, ask approvals, read images, start sub-agents, use desks, browse, search the web, use MCP tools, plan before acting, read and write files, run a shell, speak and listen.
+ *
+ * @maxItems 20
+ */
+ capabilities?:
+ | []
+ | [
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ]
+ | [
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ ),
+ (
+ | "resume"
+ | "fork"
+ | "approvals"
+ | "images"
+ | "subagents"
+ | "desks"
+ | "browser"
+ | "web-search"
+ | "mcp"
+ | "plan-mode"
+ | "files"
+ | "shell"
+ | "voice"
+ )
+ ];
+ };
+ /**
+ * The run that started this one (a sub-agent), or null. The parent's run card nests children; the child's budget is a slice of the parent's.
+ */
+ parent_run?: string | null;
+ /**
+ * The hard limit the run may not exceed. A field that is absent is not limited. USD is money; TOKENS counts model tokens in and out; SECONDS is wall time; STEPS counts the appended steps.
+ */
+ budget?: {
+ usd?: number;
+ tokens?: number;
+ seconds?: number;
+ steps?: number;
+ };
+ /**
+ * planning: accepted, no step yet. running: a step is under way. waiting: the run waits for its person (an approval or a takeover) and costs nothing. done, failed and stopped are the end statuses; an end status never changes.
+ */
+ status: "planning" | "running" | "waiting" | "done" | "failed" | "stopped";
+ created_at: string;
+ /**
+ * When the run last changed: its newest step, its end, or its creation when nothing has happened yet.
+ */
+ updated_at: string;
+ /**
+ * What the run answered or what is left, in plain words, for a run card. The full result stays the product's (Actor's result, Codes' result.summary). Null until there is one.
+ */
+ result_summary?: string | null;
+ /**
+ * What the run has spent so far, to the product's own precision. Null before anything is known.
+ */
+ cost?: {
+ usd?: number;
+ tokens?: number;
+ seconds?: number;
+ steps?: number;
+ /**
+ * The spend by rung of the Dispatcher's ladder (agent-engine.md §3): MACHINE, a model on the person's own computer (free); PLAN, a signed-in plan through its harness (flat); KEY, the person's own provider key (no fee); ALLOWANCE, OpenVibe's free allowance; CREDITS, bought (Exchange's offers). The parts add up to the run's own totals.
+ */
+ by?: {
+ machine?: {
+ usd?: number;
+ tokens?: number;
+ seconds?: number;
+ };
+ plan?: {
+ usd?: number;
+ tokens?: number;
+ seconds?: number;
+ };
+ key?: {
+ usd?: number;
+ tokens?: number;
+ seconds?: number;
+ };
+ allowance?: {
+ usd?: number;
+ tokens?: number;
+ seconds?: number;
+ };
+ credits?: {
+ usd?: number;
+ tokens?: number;
+ seconds?: number;
+ };
+ };
+ } | null;
+ /**
+ * What a person calls this run: a chat's name, a task's goal in a few words.
+ */
+ title?: string;
+ /**
+ * What sort of run it is. chat: a conversation that stays open. ask: one question and its answer. task: work an agent does for its person. code: a coding task. machine: a job on a computer or a robot. goal: a standing goal that runs on its own schedule. A product may add its own; a reader treats an unknown kind as task.
+ */
+ kind?: string;
+ /**
+ * The run's address on the Frame: its product, a colon, the product's own id (chat:…, codes:tsk_…, actor:tsk_…). /api/frame/runs/{ref} reads it wherever it lives.
+ */
+ ref?: string;
+ /**
+ * The run's own page on its product.
+ */
+ url?: string;
+ /**
+ * The model that runs it, as the picker chose it (frame.choices@1's choice, with the name a person reads). EFFORT is the reasoning effort where the model has one.
+ */
+ model?: {
+ id: string;
+ /**
+ * openvibe: Exchange's directory, paid in credits. keys: the person's own key. machines: a model on the person's own computer (Link). plans: a signed-in plan through a harness.
+ */
+ source?: "openvibe" | "keys" | "machines" | "plans";
+ machine?: string;
+ name?: string;
+ effort?: string;
+ };
+ /**
+ * Where the run's work happens. openvibe: OpenVibe's own computers. machine: the person's own computer or robot through Link (ID is the device). runner: a Codes runner. this-computer: the machine that serves the run itself (Link's agent serve).
+ */
+ where?: {
+ kind: "openvibe" | "machine" | "runner" | "this-computer";
+ id?: string;
+ name?: string;
+ };
+ /**
+ * What a code run works on. new: a new project in the person's own space. openvibe: OpenVibe itself; the orchestrator finds the repositories and opens pull requests, never merges. An object names one repository.
+ */
+ target?:
+ | ("new" | "openvibe")
+ | {
+ /**
+ * owner/name, or the repository's address.
+ */
+ repo: string;
+ branch?: string;
+ };
+ /**
+ * What the run is doing now, for its agent's face: a few words and a glyph. Null when it is not working.
+ */
+ doing?: {
+ text: string;
+ /**
+ * A glyph's name in the openvibe-shared glyph registry (openvibe.design/icons). A reader that does not know it draws its default.
+ */
+ glyph?: string;
+ } | null;
+ /**
+ * Why a waiting run waits. message: it is the person's turn to speak (a conversation between turns). approval: it asked before an act (APPROVAL is the agents.approval@1 id). takeover: it met something only its person can do (a sign-in, a code). payment: it needs funds. WHAT says it in words. Null unless STATUS is waiting.
+ */
+ waiting?: {
+ for: "message" | "approval" | "takeover" | "payment";
+ what?: string;
+ approval?: string;
+ since?: string;
+ } | null;
+ /**
+ * The last thing said in the run, for a list: the words, who said them and when.
+ */
+ preview?: {
+ text: string;
+ from?: "person" | "agent" | "system" | "tool";
+ at?: string;
+ } | null;
+ /**
+ * Where the run was asked: the site, the page and what the page is about. A run may use it; it never grants access.
+ */
+ context?: {
+ site?: string;
+ /**
+ * The page's address.
+ */
+ url?: string;
+ title?: string;
+ kind?: string;
+ id?: string;
+ };
+ /**
+ * What the run made, newest last: for its card, and for the feed when it is shared.
+ *
+ * @maxItems 50
+ */
+ outputs?: {
+ kind: "link" | "file" | "image" | "video" | "audio" | "pr" | "repo" | "page" | "post" | "run";
+ title: string;
+ /**
+ * Where it is.
+ */
+ url?: string;
+ /**
+ * A small picture of it.
+ */
+ thumb?: string;
+ media_id?: string;
+ /**
+ * A pull request's or a check's state in a word (open, green, red, merged).
+ */
+ state?: string;
+ }[];
+ /**
+ * Counts a list shows without reading the steps.
+ */
+ counts?: {
+ steps?: number;
+ children?: number;
+ files?: number;
+ approvals?: number;
+ unread?: number;
+ };
+ /**
+ * Who may read the run: its owner only, people it was shared with, or anyone with its address.
+ */
+ visibility?: "private" | "shared" | "public";
+ /**
+ * When the run reached an end status. Null while it has not.
+ */
+ ended_at?: string | null;
+ /**
+ * Why the run exists when it came through intake (agent-engine.md §5): SOURCE is where the ask was made; THREAD is the conversation it was made in (a post, a room, an issue: its service, kind and id, and its address), where the run answers and from which later messages reach it; ASKED_BY is who asked; STRENGTH says whether they asked outright (explicit) or the Source's rule read an ask in what they wrote (inferred: such a run confirms before it acts); SCOPE says in words what the run may do for them. Null (or absent) for a run a person started themselves.
+ */
+ mandate?: {
+ source:
+ | "feed"
+ | "chat"
+ | "comments"
+ | "git"
+ | "composer"
+ | "notifications"
+ | "mail"
+ | "schedule"
+ | "goal"
+ | "webhook"
+ | "machine";
+ thread?: {
+ service: string;
+ kind: string;
+ id: string;
+ url?: string;
+ };
+ asked_by: {
+ type: "user" | "agent" | "service";
+ id: string;
+ };
+ strength: "explicit" | "inferred";
+ scope?: string;
+ } | null;
+ /**
+ * Where the run came from when it continues another (agent-engine.md, from the code study): FROM is that run's ref; AT_TURN is the turn it was taken from (agents.step@1's TURN; the steps before it are the new run's history); HOW is fork (a person branched the conversation), handoff (another harness or model took it on, with a written summary as its first step) or regenerate (the same turn answered again). Null for a run that starts fresh.
+ */
+ lineage?: {
+ /**
+ * A run's ref: the product, a colon, the product's own run id (agents.run@1's REF).
+ */
+ from: string;
+ at_turn?: number;
+ how: "fork" | "handoff" | "regenerate";
+ } | null;
+ /**
+ * The play (agents.play@1's ID) this run's tree follows: solo, advisor, plan-execute, fan-out, team, grader-loop, research-build, issue-to-pr, watch, or a person's own. On a child run it is its parent's.
+ */
+ play?: string;
+ /**
+ * A child run's role in its parent's play (one of the play's role ids: planner, executor, advisor, grader, reviewer, searcher, worker…).
+ */
+ role?: string;
+}
+
+/** [email protected] (owner: network) */
+/**
+ * agents.play@1 (agent-engine.md §4, 2026-11-12): a named way for several agents to work on one ask, as data, so a person or an AI can write one and openvibe.run can list it. ROLES are the agents it uses (each with what it does, the size of model it wants, and how many may run at once); PHASES run in order, the roles in a phase together when PARALLEL; CHECKS say who checks whose work, against a written BAR; STOP says when the play is over; BUDGET.SPLIT gives each role its share of the parent's budget. The orchestrator turns a play into child runs (agents.run@1's PARENT_RUN, PLAY and ROLE). Rules every play keeps, whatever it says: a child's end never ends its parent; a person's message never waits behind new work; a child's budget is a slice of its parent's.
+ */
+export interface AgentsPlay {
+ id: string;
+ version?: number;
+ name: string;
+ /**
+ * When to use it, in a sentence or two.
+ */
+ summary?: string;
+ /**
+ * @minItems 1
+ * @maxItems 12
+ */
+ roles:
+ | [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
- /**
- * What a picture shows, in words.
- */
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
}
}
]
]
| [
| [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
- /**
- * What a picture shows, in words.
- */
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
- /**
- * What a picture shows, in words.
- */
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
- /**
- * What a picture shows, in words.
- */
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
- /**
- * What a picture shows, in words.
- */
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
- /**
- * What a picture shows, in words.
- */
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
- /**
- * What a picture shows, in words.
- */
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
- /**
- * What a picture shows, in words.
- */
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
- /**
- * What a picture shows, in words.
- */
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
- */
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ * What this role does, as its instructions begin.
+ */
+ does: string;
/**
/**
- * An https address the reader may fetch.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * What a picture shows, in words.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- alt?: string;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
+ /**
+ * How many times another role may consult this one (an advisor's limit).
+ */
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
}
}
]
]
| [
| [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
- },
+ consults?: number;
+ }
+ ]
+ | [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
+ model?: "small" | "strong" | "same" | "other-family";
+ /**
+ * A particular agent's id, when the role is always the same agent.
+ */
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
+ /**
+ * How many times another role may consult this one (an advisor's limit).
+ */
+ consults?: number;
}
}
]
]
| [
| [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
+ model?: "small" | "strong" | "same" | "other-family";
+ /**
+ * A particular agent's id, when the role is always the same agent.
+ */
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
+ /**
+ * How many times another role may consult this one (an advisor's limit).
+ */
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
+ /**
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
+ */
+ model?: "small" | "strong" | "same" | "other-family";
+ /**
+ * A particular agent's id, when the role is always the same agent.
+ */
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
- },
+ consults?: number;
+ }
+ ]
+ | [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
+ model?: "small" | "strong" | "same" | "other-family";
+ /**
+ * A particular agent's id, when the role is always the same agent.
+ */
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
+ /**
+ * How many times another role may consult this one (an advisor's limit).
+ */
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- }
- ]
- | [
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
- },
+ consults?: number;
+ }
+ ]
+ | [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
+ /**
+ * What this role does, as its instructions begin.
+ */
+ does: string;
+ /**
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
+ */
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- }
- ]
- | [
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
- },
+ consults?: number;
+ }
+ ]
+ | [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- }
- ]
- | [
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
- },
+ consults?: number;
+ }
+ ]
+ | [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
+ model?: "small" | "strong" | "same" | "other-family";
+ /**
+ * A particular agent's id, when the role is always the same agent.
+ */
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
+ /**
+ * How many times another role may consult this one (an advisor's limit).
+ */
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
+ /**
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
+ */
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * What a picture shows, in words.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- alt?: string;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
+ /**
+ * How many times another role may consult this one (an advisor's limit).
+ */
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
+ model?: "small" | "strong" | "same" | "other-family";
+ /**
+ * A particular agent's id, when the role is always the same agent.
+ */
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
+ /**
+ * How many times another role may consult this one (an advisor's limit).
+ */
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
+ model?: "small" | "strong" | "same" | "other-family";
+ /**
+ * A particular agent's id, when the role is always the same agent.
+ */
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
+ /**
+ * How many times another role may consult this one (an advisor's limit).
+ */
+ consults?: number;
}
}
]
]
| [
| [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
+ model?: "small" | "strong" | "same" | "other-family";
+ /**
+ * A particular agent's id, when the role is always the same agent.
+ */
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
+ /**
+ * How many times another role may consult this one (an advisor's limit).
+ */
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
+ /**
+ * What this role does, as its instructions begin.
+ */
+ does: string;
+ /**
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
+ */
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
}
}
]
]
| [
| [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
+ /**
+ * How many times another role may consult this one (an advisor's limit).
+ */
+ consults?: number;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * What this role does, as its instructions begin.
+ */
+ does: string;
+ /**
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
+ model?: "small" | "strong" | "same" | "other-family";
+ /**
+ * A particular agent's id, when the role is always the same agent.
+ */
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
+ /**
+ * How many times another role may consult this one (an advisor's limit).
+ */
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
+ model?: "small" | "strong" | "same" | "other-family";
+ /**
+ * A particular agent's id, when the role is always the same agent.
+ */
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
+ /**
+ * How many times another role may consult this one (an advisor's limit).
+ */
+ consults?: number;
}
}
]
]
| [
| [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
+ model?: "small" | "strong" | "same" | "other-family";
+ /**
+ * A particular agent's id, when the role is always the same agent.
+ */
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
+ /**
+ * How many times another role may consult this one (an advisor's limit).
+ */
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
+ model?: "small" | "strong" | "same" | "other-family";
+ /**
+ * A particular agent's id, when the role is always the same agent.
+ */
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
+ /**
+ * How many times another role may consult this one (an advisor's limit).
+ */
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
+ model?: "small" | "strong" | "same" | "other-family";
+ /**
+ * A particular agent's id, when the role is always the same agent.
+ */
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
+ /**
+ * How many times another role may consult this one (an advisor's limit).
+ */
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
+ /**
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
+ */
+ model?: "small" | "strong" | "same" | "other-family";
+ /**
+ * A particular agent's id, when the role is always the same agent.
+ */
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * What this role does, as its instructions begin.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ does: string;
/**
/**
- * What a picture shows, in words.
+ * small: the cheapest that can; strong: the best available; same: the parent's; other-family: a model of another family than the one it checks (a grader).
*/
*/
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ model?: "small" | "strong" | "same" | "other-family";
/**
/**
- * An https address the reader may fetch.
+ * A particular agent's id, when the role is always the same agent.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ agent?: string;
+ count?: {
+ min?: number;
+ max?: number;
+ };
/**
/**
- * What a picture shows, in words.
+ * How many times another role may consult this one (an advisor's limit).
*/
*/
- alt?: string;
+ consults?: number;
}
}
];
];
- /**
- * The sources a message cites, numbered as its text cites them ([1], [2]).
- *
- * @maxItems 40
- */
- sources?: {
- n: number;
- title?: string;
- /**
- * The source's address.
- */
- url: string;
- site?: string;
- }[];
- /**
- * A rich card for this entry. TYPE names it (link, table, code, diff, image, choice, timer, repo, desk, run, or a product's own, prefixed with its product: live-clip); DATA is that card's own content. A reader that does not know the type shows TEXT instead, so TEXT always says the same thing in words.
- */
- ui?: {
- type: string;
- data?: {};
- };
- /**
- * The computer this step used, for the screen tile and the replay: the desk, the picture it saw and what it did. A secret field is blanked before a still is stored.
- */
- desk?: {
- id: string;
- /**
- * The picture the step saw.
- */
- still_url?: string;
- action?: {
- type: string;
- x?: number;
- y?: number;
- text?: string;
- };
- };
-}
-
-/** [email protected] (owner: network) */
-/**
- * agents.run-start@1 (agent-engine.md, 2026-11-12): what starts a run, the same on every product's POST /api/v1/runs and on the Frame's POST /api/frame/runs. Only TEXT is required: the goal, the question or the first message, in the person's own words. KIND chooses the sort of run (agents.run@1's kinds); absent, the Frame's orchestrator decides whether to answer, plan, or hand the work to another product as a child run. AGENT names who does it (an agent's id; auto lets the product choose). MODEL and WHERE are the picker's choices; TARGET is a code run's (new, openvibe or a repository); CONTEXT is where it was asked; ATTACHMENTS are files by Media id or address; SOURCES and DEPTH are an answer's (frame.ask@1's); PARENT_RUN makes it a sub-agent's run inside its parent's budget; BUDGET is its own hard limit. An Idempotency-Key header makes a repeated start return the first run.
- */
-export interface AgentsRunStart {
- text: string;
- title?: string;
- kind?: string;
- /**
- * An agent's id on the product that will run it, or auto.
- */
- agent?: string;
- /**
- * The picker's choice (frame.choices@1). Absent: the person's default for this kind of work.
- */
- model?: {
- id: string;
- /**
- * openvibe: Exchange's directory, paid in credits. keys: the person's own key. machines: a model on the person's own computer (Link). plans: a signed-in plan through a harness.
- */
- source?: "openvibe" | "keys" | "machines" | "plans";
- machine?: string;
- name?: string;
- effort?: string;
- };
- /**
- * Where the run's work happens. openvibe: OpenVibe's own computers. machine: the person's own computer or robot through Link (ID is the device). runner: a Codes runner. this-computer: the machine that serves the run itself (Link's agent serve).
- */
- where?: {
- kind: "openvibe" | "machine" | "runner" | "this-computer";
- id?: string;
- name?: string;
- };
- /**
- * What a code run works on. new: a new project in the person's own space. openvibe: OpenVibe itself; the orchestrator finds the repositories and opens pull requests, never merges. An object names one repository.
- */
- target?:
- | ("new" | "openvibe")
- | {
- /**
- * owner/name, or the repository's address.
- */
- repo: string;
- branch?: string;
- };
- /**
- * Where the run was asked: the site, the page and what the page is about. A run may use it; it never grants access.
- */
- context?: {
- site?: string;
- /**
- * The page's address.
- */
- url?: string;
- title?: string;
- kind?: string;
- id?: string;
- };
/**
/**
* @maxItems 20
* @maxItems 20
*/
*/
- attachments?:
+ phases?:
| []
| []
| [
| [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
+ /**
+ * @minItems 1
+ * @maxItems 12
+ */
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ }
+ ]
+ | [
+ {
+ id: string;
+ name?: string;
+ /**
+ * @minItems 1
+ * @maxItems 12
+ */
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
+ name?: string;
+ /**
+ * @minItems 1
+ * @maxItems 12
+ */
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ }
+ ]
+ | [
+ {
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
+ name?: string;
+ /**
+ * @minItems 1
+ * @maxItems 12
+ */
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
}
}
]
]
| [
| [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
}
}
]
]
| [
| [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
}
}
]
]
| [
| [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
}
}
]
]
| [
| [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
}
}
]
]
| [
| [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ }
+ ]
+ | [
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
- }
- ]
- | [
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
}
}
]
]
| [
| [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
}
}
]
]
| [
| [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
}
}
]
]
| [
| [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
}
}
]
]
| [
| [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
}
}
]
]
| [
| [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
}
}
]
]
| [
| [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
}
}
]
]
| [
| [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
}
}
]
]
- | [
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ | [
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
}
}
]
]
| [
| [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
}
}
]
]
| [
| [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
}
}
]
]
| [
| [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ id: string;
+ name?: string;
/**
/**
- * An https address the reader may fetch.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- url?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
+ },
+ {
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
+ id: string;
name?: string;
name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
/**
/**
- * What a picture shows, in words.
+ * @minItems 1
+ * @maxItems 12
*/
*/
- alt?: string;
+ roles:
+ | [string]
+ | [string, string]
+ | [string, string, string]
+ | [string, string, string, string]
+ | [string, string, string, string, string]
+ | [string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string]
+ | [string, string, string, string, string, string, string, string, string, string, string, string];
+ parallel?: boolean;
}
}
- ]
+ ];
+ /**
+ * @maxItems 12
+ */
+ checks?:
+ | []
| [
| [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
- /**
- * What a picture shows, in words.
- */
- alt?: string;
- },
- {
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ }
+ ]
+ | [
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ }
+ ]
+ | [
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
- /**
- * An https address the reader may fetch.
- */
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ }
+ ]
+ | [
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ }
+ ]
+ | [
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
+ }
+ ]
+ | [
+ {
+ by: string;
+ of: string;
+ /**
+ * What passing means, in words the checker can apply.
+ */
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ }
+ ]
+ | [
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
- },
+ bar?: string;
+ }
+ ]
+ | [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
}
}
]
]
| [
| [
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ }
+ ]
+ | [
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ }
+ ]
+ | [
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
+ }
+ ]
+ | [
+ {
+ by: string;
+ of: string;
+ /**
+ * What passing means, in words the checker can apply.
+ */
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
},
},
{
{
- kind: "image" | "file" | "audio" | "video";
- media_id?: string;
+ by: string;
+ of: string;
/**
/**
- * An https address the reader may fetch.
+ * What passing means, in words the checker can apply.
*/
*/
- url?: string;
- name?: string;
- mime?: string;
- bytes?: number;
- width?: number;
- height?: number;
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
+ /**
+ * What passing means, in words the checker can apply.
+ */
+ bar?: string;
+ },
+ {
+ by: string;
+ of: string;
/**
/**
- * What a picture shows, in words.
+ * What passing means, in words the checker can apply.
*/
*/
- alt?: string;
+ bar?: string;
}
}
];
];
- /**
- * @maxItems 4
- */
- sources?:
- | []
- | ["web" | "openvibe" | "mine" | "page"]
- | ["web" | "openvibe" | "mine" | "page", "web" | "openvibe" | "mine" | "page"]
- | ["web" | "openvibe" | "mine" | "page", "web" | "openvibe" | "mine" | "page", "web" | "openvibe" | "mine" | "page"]
- | [
- "web" | "openvibe" | "mine" | "page",
- "web" | "openvibe" | "mine" | "page",
- "web" | "openvibe" | "mine" | "page",
- "web" | "openvibe" | "mine" | "page"
- ];
- depth?: "quick" | "balanced" | "deep";
- parent_run?: string;
- /**
- * The hard limit the run may not exceed. A field that is absent is not limited. USD is money; TOKENS counts model tokens in and out; SECONDS is wall time; STEPS counts the appended steps.
- */
+ stop: {
+ /**
+ * done: when the last phase ends; passes: when the checks pass; rounds: after ROUNDS rounds; person: when the person says so.
+ */
+ when: "done" | "passes" | "rounds" | "person";
+ rounds?: number;
+ };
budget?: {
budget?: {
- usd?: number;
- tokens?: number;
- seconds?: number;
- steps?: number;
+ /**
+ * Each role's share of the parent's budget (the shares add up to at most 1).
+ */
+ split?: {
+ [k: string]: number | undefined;
+ };
+ };
+ visibility?: "private" | "public";
+ author?: {
+ type: "user" | "agent" | "service";
+ id: string;
};
};
}
}
-/** [email protected] (owner: network) */
-/**
- * agents.event@1 (agent-engine.md, 2026-11-12): one event of a run's stream, GET /api/v1/runs/{id}/events (and /api/frame/runs/{ref}/events), as server-sent events whose event name is TYPE and whose id is the newest step's seq, so Last-Event-ID resumes after it. run: the run changed; RUN is its new snapshot. step: a step was appended; STEP is it, whole. delta: more TEXT for the step SEQ that is still being written (its STATUS is running); a reader appends it. approval: an approval was asked or answered; APPROVAL is it. end: the run reached an end status; the stream closes after it. A reader ignores a type it does not know.
- */
-export type AgentsEvent = {
- [k: string]: unknown | undefined;
-} & {
- type: "run" | "step" | "delta" | "approval" | "end";
- run?: AgentsRun;
- step?: AgentsStep;
- approval?: AgentsApproval;
- run_id?: string;
- seq?: number;
- text?: string;
- status?: "done" | "failed" | "stopped";
-};
-
-/** [email protected] (owner: actor) */
+/** [email protected] (owner: network) */
/**
/**
- * agents.run.updated v1 (agent-engine.md, 2026-11-12). A run changed in a way a list shows: it started, its status, title, doing, waiting or preview changed, or it ended. The payload is the run's agents.run@1 snapshot, whole. OpenVibe.Events carries it with the run's owner as the subject, the product that stores it as the source and visibility subject, so the person's run list anywhere stays current without polling. A step is agents.step.appended; this event is not sent for every step, only when the snapshot a list draws changed (at most about once a second per run).
+ * agents.source@1 (agent-engine.md §5, 2026-11-12): one place where asks are taken in without opening an agent app, and how. KIND is the place (the feed, chat rooms and DMs, comments, git.openvibe.codes, a composer, notifications, mail, a schedule or a goal, a webhook, a machine's events); ON turns it on; WHO says whose words may start work there (only its owner, a list of people, their followers, or anyone); RULE says in words what counts as an ask; CREATES is the run an accepted ask becomes (its kind, target, agent and play); BUDGET is each such run's hard limit; ANSWER is how the run speaks back on the thread (a reply, a card that follows the run, a notice, or nothing). Intake stores the ask first and acts after, with backoff; an inferred ask confirms before it acts (agents.run@1's MANDATE.STRENGTH).
*/
*/
-export interface AgentsRunUpdatedPayload {
- /**
- * The product's own run id (Actor's tsk_…, Codes' tsk_…, a Run job's job_…). Unique within its product and never reused.
- */
+export interface AgentsSource {
id: string;
id: string;
- /**
- * The person or agent the run belongs to: the subject the work is done for.
- */
- owner: SubjectRef;
- /**
- * The agent or harness that runs it. ID is the product's own agent id or slug; NAME is what a person reads; PRODUCT is the product it comes from (actor, codes, run, chat, …). GLYPH, HUE and AVATAR_URL are its face; HARNESS is the loop that runs it.
- */
- agent: {
- id: string;
- name?: string;
- product?: string;
- /**
- * The agent's face when it has no picture: a glyph from the registry. A chat's persona sets it per run.
- */
- glyph?: string;
- /**
- * The hue its face is tinted with.
- */
- hue?: number;
- /**
- * The agent's picture, when it has one.
- */
- avatar_url?: string;
- /**
- * The loop that runs it: openvibe (the SDK's own), or another harness run through an adapter (codex, claude-code, opencode, deepseek, …).
- */
- harness?: string;
- };
- /**
- * The run that started this one (a sub-agent), or null. The parent's run card nests children; the child's budget is a slice of the parent's.
- */
- parent_run?: string | null;
- /**
- * The hard limit the run may not exceed. A field that is absent is not limited. USD is money; TOKENS counts model tokens in and out; SECONDS is wall time; STEPS counts the appended steps.
- */
- budget?: {
- usd?: number;
- tokens?: number;
- seconds?: number;
- steps?: number;
- };
- /**
- * planning: accepted, no step yet. running: a step is under way. waiting: the run waits for its person (an approval or a takeover) and costs nothing. done, failed and stopped are the end statuses; an end status never changes.
- */
- status: "planning" | "running" | "waiting" | "done" | "failed" | "stopped";
- created_at: string;
- /**
- * When the run last changed: its newest step, its end, or its creation when nothing has happened yet.
- */
- updated_at: string;
- /**
- * What the run answered or what is left, in plain words, for a run card. The full result stays the product's (Actor's result, Codes' result.summary). Null until there is one.
- */
- result_summary?: string | null;
- /**
- * What the run has spent so far, to the product's own precision. Null before anything is known.
- */
- cost?: {
- usd?: number;
- tokens?: number;
- seconds?: number;
- steps?: number;
- } | null;
- /**
- * What a person calls this run: a chat's name, a task's goal in a few words.
- */
- title?: string;
- /**
- * What sort of run it is. chat: a conversation that stays open. ask: one question and its answer. task: work an agent does for its person. code: a coding task. machine: a job on a computer or a robot. goal: a standing goal that runs on its own schedule. A product may add its own; a reader treats an unknown kind as task.
- */
- kind?: string;
- /**
- * The run's address on the Frame: its product, a colon, the product's own id (chat:…, codes:tsk_…, actor:tsk_…). /api/frame/runs/{ref} reads it wherever it lives.
- */
- ref?: string;
- /**
- * The run's own page on its product.
- */
- url?: string;
- /**
- * The model that runs it, as the picker chose it (frame.choices@1's choice, with the name a person reads). EFFORT is the reasoning effort where the model has one.
- */
- model?: {
+ kind:
+ | "feed"
+ | "chat"
+ | "comments"
+ | "git"
+ | "composer"
+ | "notifications"
+ | "mail"
+ | "schedule"
+ | "goal"
+ | "webhook"
+ | "machine";
+ name?: string;
+ owner: {
+ type: "user" | "agent" | "service";
id: string;
id: string;
- /**
- * openvibe: Exchange's directory, paid in credits. keys: the person's own key. machines: a model on the person's own computer (Link). plans: a signed-in plan through a harness.
- */
- source?: "openvibe" | "keys" | "machines" | "plans";
- machine?: string;
- name?: string;
- effort?: string;
};
};
+ on: boolean;
/**
/**
- * Where the run's work happens. openvibe: OpenVibe's own computers. machine: the person's own computer or robot through Link (ID is the device). runner: a Codes runner. this-computer: the machine that serves the run itself (Link's agent serve).
+ * Which one of that kind: a room, a repository, a feed, a machine.
*/
*/
where?: {
where?: {
- kind: "openvibe" | "machine" | "runner" | "this-computer";
+ service: string;
+ kind?: string;
id?: string;
id?: string;
- name?: string;
+ url?: string;
};
};
- /**
- * What a code run works on. new: a new project in the person's own space. openvibe: OpenVibe itself; the orchestrator finds the repositories and opens pull requests, never merges. An object names one repository.
- */
- target?:
- | ("new" | "openvibe")
- | {
- /**
- * owner/name, or the repository's address.
- */
- repo: string;
- branch?: string;
- };
- /**
- * What the run is doing now, for its agent's face: a few words and a glyph. Null when it is not working.
- */
- doing?: {
- text: string;
- /**
- * A glyph's name in the openvibe-shared glyph registry (openvibe.design/icons). A reader that does not know it draws its default.
- */
- glyph?: string;
- } | null;
- /**
- * Why a waiting run waits. message: it is the person's turn to speak (a conversation between turns). approval: it asked before an act (APPROVAL is the agents.approval@1 id). takeover: it met something only its person can do (a sign-in, a code). payment: it needs funds. WHAT says it in words. Null unless STATUS is waiting.
- */
- waiting?: {
- for: "message" | "approval" | "takeover" | "payment";
- what?: string;
- approval?: string;
- since?: string;
- } | null;
- /**
- * The last thing said in the run, for a list: the words, who said them and when.
- */
- preview?: {
- text: string;
- from?: "person" | "agent" | "system" | "tool";
- at?: string;
- } | null;
- /**
- * Where the run was asked: the site, the page and what the page is about. A run may use it; it never grants access.
- */
- context?: {
- site?: string;
+ who: {
+ may: "owner" | "list" | "followers" | "anyone";
/**
/**
- * The page's address.
+ * @maxItems 200
*/
*/
- url?: string;
- title?: string;
- kind?: string;
- id?: string;
+ list?: string[];
};
};
/**
/**
- * What the run made, newest last: for its card, and for the feed when it is shared.
- *
- * @maxItems 50
+ * What counts as an ask here, in words (a post that asks for a feature or reports a bug; a message that names @Vibe).
*/
*/
- outputs?: {
- kind: "link" | "file" | "image" | "video" | "audio" | "pr" | "repo" | "page" | "post" | "run";
- title: string;
- /**
- * Where it is.
- */
- url?: string;
+ rule?: string;
+ creates: {
+ kind: "chat" | "ask" | "task" | "code" | "machine" | "goal";
/**
/**
- * A small picture of it.
+ * What a code run works on. new: a new project in the person's own space. openvibe: OpenVibe itself; the orchestrator finds the repositories and opens pull requests, never merges. An object names one repository.
*/
*/
- thumb?: string;
- media_id?: string;
+ target?:
+ | ("new" | "openvibe")
+ | {
+ /**
+ * owner/name, or the repository's address.
+ */
+ repo: string;
+ branch?: string;
+ };
+ agent?: string;
/**
/**
- * A pull request's or a check's state in a word (open, green, red, merged).
+ * The play (agents.play@1's ID) this run's tree follows: solo, advisor, plan-execute, fan-out, team, grader-loop, research-build, issue-to-pr, watch, or a person's own. On a child run it is its parent's.
*/
*/
- state?: string;
- }[];
- /**
- * Counts a list shows without reading the steps.
- */
- counts?: {
+ play?: string;
+ };
+ budget?: {
+ usd?: number;
+ tokens?: number;
+ seconds?: number;
steps?: number;
steps?: number;
- children?: number;
- files?: number;
- approvals?: number;
- unread?: number;
};
};
- /**
- * Who may read the run: its owner only, people it was shared with, or anyone with its address.
- */
- visibility?: "private" | "shared" | "public";
- /**
- * When the run reached an end status. Null while it has not.
- */
- ended_at?: string | null;
+ answer?: "reply" | "card" | "notice" | "none";
+ created_at?: string;
+ updated_at?: string;
}
}
/** [email protected] (owner: network) */
/** [email protected] (owner: network) */
@@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
{
{
"name": "openvibe-contracts",
"name": "openvibe-contracts",
- "version": "0.416.0",
+ "version": "0.417.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",