Перейти к содержимому
FastOffice

Транспорт и envelope

JSONL stdio, loopback WebSocket, формат Request/Response, коды ошибок и таймауты.

Источник полноты. Каталог построен по живому FastDocShellApi + preload: 304 routes. Датированный generated registry содержит 241; отстаёт на 63. Поэтому registry metadata показывается только там, где она существует.

Окно терминала
fastdoc-cli serve
{
"schema": "fastdoc.session-serve.v1",
"stage_id": "D7",
"session_kind": "jsonl-stdio-document-session-prototype",
"supported_commands": [
"apply-composition",
"apply-text-transaction",
"commit-snapshot",
"commit-structural-snapshot",
"compatibility-inspect",
"compose",
"model",
"mutate",
"open",
"paginate",
"ping",
"print",
"print-delta",
"print-summary",
"print-window",
"redo",
"report",
"review",
"save",
"save-checkpoint",
"set-selection",
"shutdown",
"simple-field-inventory",
"squash-history",
"status",
"style",
"track-revisions-state",
"undo"
],
"ready": true
}
Окно терминала
fastdoc-cli serve --ws 0 [--token <token>]
{"schema":"fastdoc.session-ws-bootstrap.v1","transport":"websocket","host":"127.0.0.1","port":49152,"token":"<64 hex>","ready":true}

WS принимает только UTF-8 text frames, слушает 127.0.0.1 и проверяет token в handshake query. После соединения отправляет ту же ready-схему, что stdio.

interface Request { id?: unknown; cmd: SessionCommandName; /* command fields flattened */ }
interface Response<T=unknown> { id:unknown; ok:boolean; cmd?:string; elapsed_ms?:number; result?:T; error?:string; }
Показатель Значение
parse / no cmd ok:false; each request line must be a JSON object with a string cmd field
unknown cmd ok:false; unknown session command: <cmd>
no open document ok:false; no document is open in this session
panic boundary ok:false; internal error … panicked; SessionHost остаётся жив
shell request timeout 30 000 ms
full snapshot timeout 120 000 ms
surface request timeout 15 000 ms

Ассистент документации

Ответ собран из документации и может быть неточным — сверяйтесь с источниками.