mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-02 17:21:34 +00:00
* feat(protocol): add session collaboration contracts * feat(gateway): add session suggestion queue and typing * feat(ui): add session suggestion controls * fix(collaboration): restrict suggestion resolution * fix(collaboration): dedupe suggestion dispatch modes * fix(collaboration): preserve resolver identity * fix(collaboration): reconcile suggestion state * fix(collaboration): filter identityless suggestion events * fix(ui): expose full suggestion text * fix(collaboration): durably claim suggestion dispatch * fix(collaboration): harden suggestion events and typing * fix(collaboration): reconcile suggestion races * fix(ui): reconcile suggestion capabilities * fix(collaboration): close suggestion privacy races * test(ui): satisfy suggestion lifecycle lint * fix(collaboration): fence resolved suggestion events * test(collaboration): type deferred audit result * fix(collaboration): fence delayed typing events * fix(ui): coalesce suggestion refreshes * fix(ui): preserve resolved self suggestions * fix(collaboration): enforce draft suggestion visibility * fix(collaboration): fence post-dispatch finalization * fix(ui): retain suggestions across visibility changes * fix(collaboration): fence suggestion context and archives * fix(collaboration): fence suggestion resolve lifecycle * fix(collaboration): map suggestion replacement races * refactor(gateway): extract session typing state * fix(collaboration): integrate suggestion storage with session nodes * refactor(gateway): extract session sharing snapshot cache * fix(collaboration): satisfy protocol and deadcode gates * fix(ci): register iOS release script entrypoints * fix(collaboration): fence typing by session instance * fix(collaboration): enforce incognito suggestion privacy * docs(ui): clarify solo suggestion dormancy * test(gateway): preserve incognito literal type * test(gateway): split session typing coverage * test(gateway): register collaboration method expectations
62 lines
6.4 KiB
JSON
62 lines
6.4 KiB
JSON
{
|
|
"$comment": "Gateway events each mobile client intentionally does not handle yet, with a one-line reason. Consumed by scripts/check-protocol-event-coverage.mjs (pnpm check:protocol-coverage). Adding a gateway event without a client handler requires either handling it or adding an entry here; the check also fails when an entry goes stale (event removed or now handled).",
|
|
"ios": {
|
|
"session.operation": "Chat UI derives run state from chat/agent events; no session.operation consumer yet.",
|
|
"session.tool": "Session tool stream is not rendered by the iOS chat surface yet.",
|
|
"task.suggestion": "Task suggestion cards are a Control UI-only surface; iOS does not render them.",
|
|
"ui.command": "Web Control UI-only layout commands; iOS does not consume them.",
|
|
"presence": "Presence roster is a control-UI (web/desktop) surface; iOS does not render it.",
|
|
"shutdown": "iOS relies on socket close plus reconnect/backoff instead of the shutdown notice.",
|
|
"heartbeat": "iOS liveness uses tick and WebSocket-level ping; heartbeat is unused.",
|
|
"cron": "Cron run activity is not surfaced in the iOS app.",
|
|
"task": "Background task activity is not surfaced in the iOS app.",
|
|
"node.pair.requested": "Node pairing state is fetched on demand; no push consumer on iOS yet.",
|
|
"node.pair.resolved": "Node pairing state is fetched on demand; no push consumer on iOS yet.",
|
|
"node.presence": "Node activity is reported by macOS nodes and consumed by gateway routing; iOS has no presence reporter yet.",
|
|
"device.pair.requested": "Device pairing flows poll via device.pair.* methods on iOS.",
|
|
"device.pair.resolved": "Device pairing flows poll via device.pair.* methods on iOS.",
|
|
"voicewake.routing.changed": "iOS only consumes voicewake.changed trigger updates; routing changes are not surfaced.",
|
|
"plugin.approval.requested": "Plugin approval prompts are not implemented on iOS.",
|
|
"plugin.approval.resolved": "Plugin approval prompts are not implemented on iOS.",
|
|
"openclaw.approval.requested": "OpenClaw system-agent config approvals are a web/desktop operator surface; iOS has no operator-approval prompt.",
|
|
"openclaw.approval.resolved": "OpenClaw system-agent config approvals are a web/desktop operator surface; iOS has no operator-approval prompt.",
|
|
"terminal.data": "Embedded terminal is a web/desktop surface; iOS has no terminal client.",
|
|
"terminal.exit": "Embedded terminal is a web/desktop surface; iOS has no terminal client.",
|
|
"update.available": "Gateway self-update notices do not apply to iOS; app updates ship via the App Store.",
|
|
"session.approval": "Native approval review uses exec.approval push/nudge delivery; the session-scoped approval stream is a Control UI chat surface.",
|
|
"session.sharing": "Session visibility/membership management is a Control UI operator surface; iOS reads visibility/sharingRole from session rows and has no sharing editor.",
|
|
"session.suggestion": "The suggestion queue is a Control UI collaboration surface; iOS does not render or resolve session suggestions.",
|
|
"session.typing": "Collaborative typing state is a Control UI-only ephemeral indicator; iOS does not render it."
|
|
},
|
|
"android": {
|
|
"session.operation": "Chat UI derives run state from chat/agent events; no session.operation consumer yet.",
|
|
"session.tool": "Session tool stream is not rendered by the Android chat surface yet.",
|
|
"task.suggestion": "Task suggestion cards are a Control UI-only surface; Android does not render them.",
|
|
"ui.command": "Web Control UI-only layout commands; Android does not consume them.",
|
|
"presence": "Presence roster is a control-UI (web/desktop) surface; Android does not render it.",
|
|
"talk.mode": "Android toggles talk mode locally; gateway talk.mode sync is not consumed.",
|
|
"shutdown": "Android relies on socket close plus reconnect/backoff instead of the shutdown notice.",
|
|
"heartbeat": "Android liveness uses tick and WebSocket-level ping; heartbeat is unused.",
|
|
"cron": "Cron run activity is not surfaced in the Android app.",
|
|
"task": "Background task activity is not surfaced in the Android app.",
|
|
"node.pair.requested": "Android's bounded operator session lacks operator.pairing; onboarding refreshes node approval with explicit node.list requests.",
|
|
"node.pair.resolved": "Android's bounded operator session lacks operator.pairing; onboarding refreshes node approval with explicit node.list requests.",
|
|
"node.presence": "Node activity is reported by macOS nodes and consumed by gateway routing; Android has no presence reporter yet.",
|
|
"device.pair.requested": "Device pairing flows poll via device.pair.* methods on Android.",
|
|
"device.pair.resolved": "Device pairing flows poll via device.pair.* methods on Android.",
|
|
"voicewake.routing.changed": "Android reads voicewake state on demand via voicewake.get; no push consumer yet.",
|
|
"plugin.approval.requested": "Plugin approval prompts are not implemented on Android.",
|
|
"plugin.approval.resolved": "Plugin approval prompts are not implemented on Android.",
|
|
"openclaw.approval.requested": "OpenClaw system-agent config approvals are a web/desktop operator surface; Android has no operator-approval prompt.",
|
|
"openclaw.approval.resolved": "OpenClaw system-agent config approvals are a web/desktop operator surface; Android has no operator-approval prompt.",
|
|
"terminal.data": "Embedded terminal is a web/desktop surface; Android has no terminal client.",
|
|
"terminal.exit": "Embedded terminal is a web/desktop surface; Android has no terminal client.",
|
|
"session.approval": "Native approval review uses exec.approval push/nudge delivery; the session-scoped approval stream is a Control UI chat surface.",
|
|
"session.sharing": "Session visibility/membership management is a Control UI operator surface; Android reads visibility/sharingRole from session rows and has no sharing editor.",
|
|
"session.suggestion": "The suggestion queue is a Control UI collaboration surface; Android does not render or resolve session suggestions.",
|
|
"session.typing": "Collaborative typing state is a Control UI-only ephemeral indicator; Android does not render it.",
|
|
"node.invoke.cancel": "Cancel targets streaming agent.cli.claude.run.v1 invokes; app nodes never advertise agent runs, so no cancel can address them.",
|
|
"node.invoke.input": "Carries terminal keystrokes/resize to a node PTY relay invoke; the relay runs on gateway/CLI node hosts and app nodes never host it, so Android has no consumer."
|
|
}
|
|
}
|