{
  "openapi": "3.1.0",
  "info": {
    "title": "Manager console HTTP API",
    "version": "1",
    "description": "Operator HTTP interface of the reference manager console. This is separate from the Dashboard HTTP API. The default bind is 127.0.0.1 on an allocated port; an operator can configure the bind host and port. Every data operation requires the per-manager console token, even on loopback. Supply a bearer header or query parameter t. If both are present, t takes precedence. The launch page keeps its token in the URL fragment.\n\nRead routes also accept other bodyless methods; only the documented GET behavior is promised. Query strings are removed for route dispatch. Session establishment mints credentials for a broker WebSocket connection; the console does not expose a WebSocket terminal endpoint. Static HTML, scripts, styles and favicon resources are outside this API reference.",
    "license": {
      "name": "Apache-2.0"
    }
  },
  "servers": [
    {
      "url": "http://{host}:{port}",
      "variables": {
        "host": {
          "default": "127.0.0.1"
        },
        "port": {
          "default": "12345",
          "description": "Example only. Replace with the port announced by the running service or its owner-private discovery record."
        }
      },
      "description": "Use the manager console address announced by the running manager."
    }
  ],
  "security": [
    {
      "ConsoleBearer": []
    },
    {
      "ConsoleQuery": []
    }
  ],
  "paths": {
    "/agents": {
      "get": {
        "operationId": "list-console-agents",
        "summary": "List managed console agents",
        "description": "Return the manager-owned seats with process status, incarnation coordinates and available presence observations. mesh is a verdict only when meshView is current and the observed identity matches the managed seat. Optional facts are absent when not recorded.",
        "responses": {
          "200": {
            "description": "Current managed seats.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ManagedAgent"
                  }
                }
              }
            }
          },
          "401": {
            "description": "The manager console token is missing or invalid.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected request failure.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/feed": {
      "get": {
        "operationId": "watch-console-feed",
        "summary": "Watch the manager console feed",
        "description": "Open the manager console SSE stream. It begins with retry: 2000, replays the current roster snapshot as a named roster event, and sends a comment heartbeat every 20 seconds. Event data is JSON. The stock manager supplies the initial roster; this reference does not promise continuous roster updates. This feed is distinct from the Dashboard /feed stream.",
        "responses": {
          "200": {
            "description": "Named SSE frames and comment heartbeats.",
            "content": {
              "text/event-stream": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "const": "no-cache"
                }
              }
            }
          },
          "401": {
            "description": "The manager console token is missing or invalid.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "x-sse-events": {
          "roster": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RosterPresence"
            }
          }
        }
      }
    },
    "/session/{name}": {
      "post": {
        "operationId": "establish-console-session",
        "summary": "Establish a console mesh session",
        "description": "Mint a holder-bound mesh session offer and per-session caller credential for a managed agent. No request body is parsed. The agent name is percent-decoded. Token authorization precedes method and name checks. An open mesh or a manager without a session establisher returns 503 before name validation. Treat the returned creds as secret.",
        "parameters": [
          {
            "name": "name",
            "in": "path",
            "required": true,
            "description": "Percent-encoded managed agent name.",
            "schema": {
              "type": "string",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Session grant and broker caller connection material.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionEstablishment"
                }
              }
            }
          },
          "400": {
            "description": "Missing agent name or malformed percent encoding.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "The manager console token is missing or invalid.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "Only POST is accepted.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "headers": {
              "Allow": {
                "schema": {
                  "const": "POST"
                }
              }
            }
          },
          "429": {
            "description": "Session capacity is exhausted; code is resource-exhausted.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Session establishment failed; native refusals include code.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Session establishment is not available on this manager.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "ConsoleBearer": {
        "type": "http",
        "scheme": "bearer",
        "description": "Per-manager console token."
      },
      "ConsoleQuery": {
        "type": "apiKey",
        "in": "query",
        "name": "t",
        "description": "Per-manager console token. Takes precedence over Authorization when present."
      }
    },
    "schemas": {
      "Error": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "outcome": {
            "type": "string",
            "enum": [
              "not-executed",
              "executed",
              "unknown"
            ]
          },
          "details": {}
        },
        "required": [
          "error"
        ]
      },
      "ManagedAgent": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "role": {
            "type": "string"
          },
          "agent": {
            "type": "string"
          },
          "space": {
            "type": "string"
          },
          "mode": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "mesh": {
            "type": "string"
          },
          "meshView": {
            "type": "string"
          },
          "lifecycleUid": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "variant": {
            "type": "string"
          },
          "provider": {
            "type": "string"
          },
          "cwd": {
            "type": "string"
          },
          "spawner": {
            "type": "string"
          },
          "instanceId": {
            "type": "string"
          },
          "host": {
            "type": "string"
          },
          "authHealth": {
            "type": "string"
          },
          "authReason": {
            "type": "string"
          },
          "uptimeMs": {
            "type": "integer"
          },
          "pid": {
            "type": "integer"
          },
          "activeAt": {
            "type": "number"
          },
          "presenceIdentityVerified": {
            "type": "boolean"
          },
          "presenceObservedAt": {
            "type": "integer"
          },
          "offlineSince": {
            "type": "integer"
          },
          "condition": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "source": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "since": {
                "type": "number"
              }
            },
            "required": [
              "code"
            ]
          },
          "joinHealth": {
            "type": "object",
            "properties": {
              "state": {
                "const": "degraded"
              },
              "reason": {
                "type": "string"
              }
            },
            "required": [
              "state",
              "reason"
            ]
          },
          "resume": {
            "type": "object",
            "description": "Recorded fork provenance when this seat resumed a prior session."
          }
        },
        "required": [
          "name",
          "id",
          "agent",
          "space",
          "mode",
          "status",
          "uptimeMs",
          "mesh",
          "meshView",
          "presenceIdentityVerified",
          "lifecycleUid",
          "spawner",
          "instanceId",
          "host"
        ]
      },
      "RosterPresence": {
        "$ref": "#/components/schemas/WirePresence"
      },
      "SessionEstablishment": {
        "type": "object",
        "properties": {
          "grant": {
            "type": "object",
            "description": "Native holder-bound session offer from the manager session plane, defined by SPEC section 13.6. The offer alone is not a bearer credential."
          },
          "wsUrl": {
            "type": "string",
            "description": "Broker WebSocket URL used for the mesh session."
          },
          "creds": {
            "type": "string",
            "description": "Per-session rails-only caller credential."
          }
        },
        "required": [
          "grant",
          "wsUrl",
          "creds"
        ],
        "additionalProperties": false
      },
      "WireCotalMessage": {
        "description": "A message on the mesh (chat / direct message for now; extensible to other families).",
        "oneOf": [
          {
            "properties": {
              "channel": {
                "description": "Channel name — multicast (broadcast to everyone on the channel).",
                "type": "string"
              },
              "contextId": {
                "description": "Conversation / thread correlation id.",
                "type": "string"
              },
              "from": {
                "$ref": "#/components/schemas/WireEndpointRef"
              },
              "id": {
                "description": "Unique message id.",
                "type": "string"
              },
              "mentions": {
                "description": "Lowercased peer names called out within a `channel` message — a wake hint that also, on a `live` channel, routes a durable copy to each mentioned target **authorized to read that channel** (SPEC §4/§5). It never carries content outside the target's read ACL and is not a routing substitute for `channel`/`to`; the message still multicasts to the whole channel. Omitted when empty.",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "parts": {
                "items": {
                  "$ref": "#/components/schemas/WirePart"
                },
                "type": "array"
              },
              "replyTo": {
                "description": "Id of the message being replied to.",
                "type": "string"
              },
              "space": {
                "type": "string"
              },
              "ts": {
                "description": "Epoch ms.",
                "type": "number"
              }
            },
            "required": [
              "channel",
              "from",
              "id",
              "parts",
              "space",
              "ts"
            ],
            "type": "object",
            "not": {
              "anyOf": [
                {
                  "required": [
                    "to"
                  ]
                },
                {
                  "required": [
                    "toService"
                  ]
                }
              ]
            }
          },
          {
            "properties": {
              "contextId": {
                "description": "Conversation / thread correlation id.",
                "type": "string"
              },
              "from": {
                "$ref": "#/components/schemas/WireEndpointRef"
              },
              "id": {
                "description": "Unique message id.",
                "type": "string"
              },
              "mentions": {
                "description": "Lowercased peer names called out within a `channel` message — a wake hint that also, on a `live` channel, routes a durable copy to each mentioned target **authorized to read that channel** (SPEC §4/§5). It never carries content outside the target's read ACL and is not a routing substitute for `channel`/`to`; the message still multicasts to the whole channel. Omitted when empty.",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "parts": {
                "items": {
                  "$ref": "#/components/schemas/WirePart"
                },
                "type": "array"
              },
              "replyTo": {
                "description": "Id of the message being replied to.",
                "type": "string"
              },
              "space": {
                "type": "string"
              },
              "to": {
                "description": "Instance id — unicast (direct to one specific endpoint).",
                "type": "string"
              },
              "ts": {
                "description": "Epoch ms.",
                "type": "number"
              }
            },
            "required": [
              "from",
              "id",
              "parts",
              "space",
              "to",
              "ts"
            ],
            "type": "object",
            "not": {
              "anyOf": [
                {
                  "required": [
                    "channel"
                  ]
                },
                {
                  "required": [
                    "toService"
                  ]
                }
              ]
            }
          },
          {
            "properties": {
              "contextId": {
                "description": "Conversation / thread correlation id.",
                "type": "string"
              },
              "from": {
                "$ref": "#/components/schemas/WireEndpointRef"
              },
              "id": {
                "description": "Unique message id.",
                "type": "string"
              },
              "mentions": {
                "description": "Lowercased peer names called out within a `channel` message — a wake hint that also, on a `live` channel, routes a durable copy to each mentioned target **authorized to read that channel** (SPEC §4/§5). It never carries content outside the target's read ACL and is not a routing substitute for `channel`/`to`; the message still multicasts to the whole channel. Omitted when empty.",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "parts": {
                "items": {
                  "$ref": "#/components/schemas/WirePart"
                },
                "type": "array"
              },
              "replyTo": {
                "description": "Id of the message being replied to.",
                "type": "string"
              },
              "space": {
                "type": "string"
              },
              "toService": {
                "description": "Service / role — anycast (any one instance of the service receives it).",
                "type": "string"
              },
              "ts": {
                "description": "Epoch ms.",
                "type": "number"
              }
            },
            "required": [
              "from",
              "id",
              "parts",
              "space",
              "toService",
              "ts"
            ],
            "type": "object",
            "not": {
              "anyOf": [
                {
                  "required": [
                    "channel"
                  ]
                },
                {
                  "required": [
                    "to"
                  ]
                }
              ]
            }
          }
        ]
      },
      "WireEndpointRef": {
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "role": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "type": "object"
      },
      "WireExtensionPartKind": {
        "description": "Reverse-DNS extension part kind, e.g. `com.acme.snapshot`.",
        "pattern": "^[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)+$",
        "type": "string"
      },
      "WireJsonValue": {
        "anyOf": [
          {
            "type": "null"
          },
          {
            "type": "boolean"
          },
          {
            "type": "number"
          },
          {
            "type": "string"
          },
          {
            "items": {
              "$ref": "#/components/schemas/WireJsonValue"
            },
            "type": "array"
          },
          {
            "additionalProperties": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/WireJsonValue"
                },
                {
                  "not": {}
                }
              ]
            },
            "type": "object"
          }
        ],
        "description": "Any JSON value (SPEC §5): `null`, a boolean, a number, a string, an array, or an object whose members are JSON values. `undefined` is not a JSON value — `JSON.stringify` omits the key carrying it — so it is excluded at the top level, where it would drop the whole `data` key; an optional member is allowed because serialization drops just that key."
      },
      "WirePart": {
        "oneOf": [
          {
            "properties": {
              "kind": {
                "const": "text",
                "type": "string"
              },
              "text": {
                "type": "string"
              }
            },
            "required": [
              "kind",
              "text"
            ],
            "type": "object"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/WireJsonValue"
              },
              "kind": {
                "const": "data",
                "type": "string"
              }
            },
            "required": [
              "kind",
              "data"
            ],
            "type": "object"
          },
          {
            "description": "Reference to bytes in the space's artifact store — SPEC §5's reserved slot, now defined. Bare (not reverse-DNS) because it is Cotal's own core primitive: extension kinds wrap EXTERNAL vocabularies, core kinds are the standard's own. The full contract, the guard, and the object-store digest boundary live in `artifact.ts`.",
            "properties": {
              "digest": {
                "description": "`sha256:<hex>` over the raw bytes — the artifact's identity. The only self-verifying field.",
                "type": "string",
                "pattern": "^sha256:[0-9a-f]{64}$"
              },
              "kind": {
                "const": "artifact",
                "type": "string"
              },
              "mediaType": {
                "description": "MIME type. A publisher's claim.",
                "type": "string"
              },
              "name": {
                "description": "Human name, e.g. `coverage-report.html`. A publisher's claim, not a checked fact.",
                "type": "string"
              },
              "size": {
                "description": "Size in bytes. A publisher's claim: a receiver must never preallocate from it.",
                "type": "integer",
                "minimum": 0
              }
            },
            "required": [
              "kind",
              "name",
              "mediaType",
              "digest",
              "size"
            ],
            "type": "object"
          },
          {
            "additionalProperties": {},
            "properties": {
              "kind": {
                "$ref": "#/components/schemas/WireExtensionPartKind"
              }
            },
            "required": [
              "kind"
            ],
            "type": "object"
          }
        ]
      },
      "WireAgentCard": {
        "description": "A2A-inspired identity record for an endpoint or agent.",
        "properties": {
          "actor": {
            "description": "The agent-instance actor token under  {@link  owner }  (server-derived from the spawn ledger in user mode; the connection id in the dev default). The other half of  {@link  id } .",
            "type": "string"
          },
          "description": {
            "description": "A2A-style one-line summary of what this agent does (discovery / observability).",
            "type": "string"
          },
          "id": {
            "description": "Unique, stable for the lifetime of this connection. The owner+actor **principal dot-form** `<owner>.<actor>` (= `principalKey().key`) under the owner+actor grammar — the wire identity every `msg.from.id` carries and every sender guard compares against. Peers address each other by this.",
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/WireEndpointKind",
            "description": "'agent' (participates in coordination) or a plain 'endpoint' (logger, dashboard…)."
          },
          "meta": {
            "additionalProperties": {},
            "description": "Free-form advisory display metadata. Reserved flat string keys are `connector`, `model`, `provider` (the effective provider the connector reported), `host`, `cwd`, `repo`, `branch`, `head`, `sessionKind`, and `sessionId`.",
            "type": "object"
          },
          "name": {
            "description": "Human-readable display name.",
            "type": "string"
          },
          "owner": {
            "description": "The human/account owner token this agent acts under (opaque, per-space; `\"local\"` in the no-login dev default). One of the two halves of  {@link  id } ; travels in presence so peers resolve name→principal.",
            "type": "string"
          },
          "protocolVersion": {
            "description": "Wire-contract version this participant speaks (the SPEC.md version, `\"0.2\"` today). A change signal, not negotiation: v0 has none, but a peer can detect a mismatch instead of silently misreading a future envelope. Omitted ⇒ assume the v0.x line.",
            "type": "string"
          },
          "role": {
            "description": "Cotal addition: the role this participant plays (planner, reviewer, …).",
            "type": "string"
          },
          "skills": {
            "items": {
              "$ref": "#/components/schemas/WireAgentSkill"
            },
            "type": "array"
          },
          "tags": {
            "description": "Cotal: free-form \"what it can do\" tags (A2A skill-tags, flattened) — discovery only.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "name",
          "kind"
        ],
        "type": "object"
      },
      "WireAgentSkill": {
        "properties": {
          "description": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "type": "object"
      },
      "WireAttentionMode": {
        "description": "How aggressively peer traffic interrupts an agent — chosen by the agent, orthogonal to  {@link  PresenceStatus } . Defined here (the wire layer) because it is now published in  {@link  Presence } ; the connector imports it. Advisory observability, not a security boundary.",
        "enum": [
          "open",
          "dnd",
          "focus"
        ],
        "type": "string"
      },
      "WireChannelMode": {
        "description": "Per-channel attention override (more specific than the global  {@link  AttentionMode } ).\n- `quiet` — still delivered + buffered, but never wakes; an `@`-mention still wakes (per-channel `dnd`).\n- `muted` — channel messages dropped on receive, incl. `@`-mentions (\"don't receive this channel\").",
        "enum": [
          "quiet",
          "muted"
        ],
        "type": "string"
      },
      "WireEndpointKind": {
        "description": "Cotal wire types (v0.2).\n\nThese are the shapes that travel on the mesh. They are intentionally A2A-inspired (AgentCard / Message / Part) but transport-agnostic. This file IS part of the \"wire contract\" — treat changes here as protocol changes.",
        "enum": [
          "agent",
          "endpoint"
        ],
        "type": "string"
      },
      "WirePresence": {
        "description": "Live presence record. Stored in the space's KV bucket under key = card.id.",
        "properties": {
          "activeAt": {
            "description": "Epoch ms of the last work progress the harness reported (a turn event such as a token or a tool call). `ts` is only the heartbeat: a seat whose turn stopped advancing keeps heartbeating while this stays old. Missing means the connector reports none.",
            "type": "number"
          },
          "activity": {
            "description": "Freeform \"what I'm doing right now\".",
            "type": "string"
          },
          "activitySince": {
            "description": "Epoch ms when the current `activity` was set. A status change does not move it, so an activity left behind while hooks flip the status every turn still reads as old.",
            "type": "number"
          },
          "attention": {
            "$ref": "#/components/schemas/WireAttentionMode",
            "description": "This instance's current global attention mode. Advisory, within-space observability — a peer can see \"they're in focus\" and choose to DM. Published from the connector's authoritative state (presence is a mirror, never the source of truth for delivery). `open`/absent ⇒ receives all."
          },
          "card": {
            "$ref": "#/components/schemas/WireAgentCard"
          },
          "channelModes": {
            "additionalProperties": {
              "$ref": "#/components/schemas/WireChannelMode"
            },
            "description": "Per-channel attention overrides this instance currently has (runtime, reset on restart). Keys are concrete channel names. Advisory: lets a peer see \"locally muted #deploys → DM to reach me\". NOT access control — the broker still authorizes and delivers; this is a receive-side presentation.",
            "type": "object"
          },
          "condition": {
            "$ref": "#/components/schemas/WirePresenceCondition",
            "description": "Structured condition reported by the harness. Missing means nothing was reported."
          },
          "environment": {
            "description": "Opaque reference whose meaning belongs to the provider that issued it.",
            "type": "string"
          },
          "lifecycleUid": {
            "description": "This incarnation's lifecycle UID (SPEC §6/§13.1: MUST in auth mode from v0.4) — the value the alias currently maps to, published so peers/observers can attribute the alias's live occupant. Advisory observability, never authority (authority is the ledger/broker grants).",
            "type": "string"
          },
          "runtime": {
            "$ref": "#/components/schemas/WirePresenceRuntime",
            "description": "The process that publishes this record, with its observed start. Status, activity, heartbeats and reconnects inside the process leave it unchanged; a new process publishes a new one. An offline record keeps it to name the process that went away, so it dates a running duration only while the record is live. Missing means the publisher reports none: unknown, not zero."
          },
          "status": {
            "$ref": "#/components/schemas/WirePresenceStatus"
          },
          "statusSince": {
            "description": "Epoch ms when the instance entered its current `status` and `activity`. A change to either moves it; a heartbeat or a repeated report does not, so an activity that outlived what it described reads as old even while `ts` stays fresh. Never carried by an offline record.",
            "type": "number"
          },
          "ts": {
            "description": "Epoch ms of the last heartbeat.",
            "type": "number"
          }
        },
        "required": [
          "card",
          "status",
          "ts"
        ],
        "type": "object"
      },
      "WirePresenceCondition": {
        "description": "A condition the harness reported. Connectors relay it and never infer one from absence.",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/WirePresenceConditionCode"
          },
          "message": {
            "description": "Free-text detail reported by the harness.",
            "type": "string"
          },
          "since": {
            "description": "Epoch ms when this condition began.",
            "type": "number"
          },
          "source": {
            "description": "The harness's native value, preserved verbatim.",
            "type": "string"
          }
        },
        "required": [
          "code"
        ],
        "type": "object"
      },
      "WirePresenceConditionCode": {
        "description": "Closed, provider-neutral categories a connector may relay from its harness's native signal.",
        "enum": [
          "rate_limit",
          "overloaded",
          "auth",
          "billing",
          "budget",
          "context",
          "model",
          "request",
          "server",
          "retrying",
          "approval",
          "input",
          "failed"
        ],
        "type": "string"
      },
      "WirePresenceRuntime": {
        "description": "The running process behind a presence record, as that process observed itself. Advisory display data, never authority. It carries no pid, host, path, command line or environment.",
        "properties": {
          "id": {
            "description": "Opaque CSPRNG id minted once per OS process and lifecycleUid scope, never reused. A new process or lifecycle scope gets a new id; reconnect within that scope keeps it.",
            "type": "string"
          },
          "source": {
            "$ref": "#/components/schemas/WirePresenceRuntimeSource"
          },
          "startedAt": {
            "description": "Epoch ms when the process started, read in-process from its own clock origin (`performance.timeOrigin`). Never a launch request, registration, heartbeat, status or activity time. Every lifecycle in this process shares this start, including one registered later. It does not date a separate parent, model harness or lifecycle.",
            "type": "number"
          }
        },
        "required": [
          "id",
          "startedAt",
          "source"
        ],
        "type": "object"
      },
      "WirePresenceRuntimeSource": {
        "const": "endpoint-process",
        "description": "Where a  {@link  PresenceRuntime }  start was observed. Closed: a consumer that meets any other value treats the observation as unsupported rather than guessing what it dates.\n- `endpoint-process`: the OS process that holds this presence's mesh connection, observed by   that process itself.",
        "type": "string"
      },
      "WirePresenceStatus": {
        "description": "Lifecycle status of a participant.\n- `idle`: connected, no active task\n- `waiting`: blocked — awaiting input, approval, or a peer\n- `working`: actively executing a task / in a turn\n- `offline`: disconnected or heartbeat lapsed (derived by observers, not self-set while live)",
        "enum": [
          "idle",
          "waiting",
          "working",
          "offline"
        ],
        "type": "string"
      }
    }
  },
  "x-source": "implementations/manager/src/attach-endpoint.ts; production roster and replay injection in manager.ts"
}
