@@ -12,8 +12,8 @@ description: Websocket protocol schemas
1212## TypeScript Usage
1313
1414``` typescript
15- import { AckMessageSchema , CursorMessageSchema , CursorPositionSchema , DocumentStateSchema , EditMessageSchema , EditOperationSchema , EditOperationTypeSchema , ErrorMessageSchema , EventFilterSchema , EventFilterConditionSchema , EventMessageSchema , EventPatternSchema , EventSubscriptionSchema , FilterOperatorSchema , PingMessageSchema , PongMessageSchema , PresenceMessageSchema , PresenceStateSchema , PresenceUpdateSchema , SubscribeMessageSchema , UnsubscribeMessageSchema , UnsubscribeRequestSchema , WebSocketConfigSchema , WebSocketMessageSchema , WebSocketMessageTypeSchema , WebSocketPresenceStatusSchema } from ' @objectstack/spec/api' ;
16- import type { AckMessage , CursorMessage , CursorPosition , DocumentState , EditMessage , EditOperation , EditOperationType , ErrorMessage , EventFilter , EventFilterCondition , EventMessage , EventPattern , EventSubscription , FilterOperator , PingMessage , PongMessage , PresenceMessage , PresenceState , PresenceUpdate , SubscribeMessage , UnsubscribeMessage , UnsubscribeRequest , WebSocketConfig , WebSocketMessage , WebSocketMessageType , WebSocketPresenceStatus } from ' @objectstack/spec/api' ;
15+ import { AckMessageSchema , CursorMessageSchema , CursorPositionSchema , DocumentStateSchema , EditMessageSchema , EditOperationSchema , EditOperationTypeSchema , ErrorMessageSchema , EventFilterSchema , EventFilterConditionSchema , EventMessageSchema , EventPatternSchema , EventSubscriptionSchema , FilterOperatorSchema , PingMessageSchema , PongMessageSchema , PresenceMessageSchema , PresenceStateSchema , PresenceUpdateSchema , SimpleCursorPositionSchema , SimplePresenceStateSchema , SubscribeMessageSchema , UnsubscribeMessageSchema , UnsubscribeRequestSchema , WebSocketConfigSchema , WebSocketEventSchema , WebSocketMessageSchema , WebSocketMessageTypeSchema , WebSocketPresenceStatusSchema , WebSocketServerConfigSchema } from ' @objectstack/spec/api' ;
16+ import type { AckMessage , CursorMessage , CursorPosition , DocumentState , EditMessage , EditOperation , EditOperationType , ErrorMessage , EventFilter , EventFilterCondition , EventMessage , EventPattern , EventSubscription , FilterOperator , PingMessage , PongMessage , PresenceMessage , PresenceState , PresenceUpdate , SimpleCursorPosition , SimplePresenceState , SubscribeMessage , UnsubscribeMessage , UnsubscribeRequest , WebSocketConfig , WebSocketEvent , WebSocketMessage , WebSocketMessageType , WebSocketPresenceStatus , WebSocketServerConfig } from ' @objectstack/spec/api' ;
1717
1818// Validate data
1919const result = AckMessageSchema .parse (data );
@@ -289,6 +289,34 @@ Event pattern (supports wildcards like "record.*" or "*.created")
289289
290290---
291291
292+ ## SimpleCursorPosition
293+
294+ ### Properties
295+
296+ | Property | Type | Required | Description |
297+ | :--- | :--- | :--- | :--- |
298+ | ** userId** | ` string ` | ✅ | User identifier |
299+ | ** recordId** | ` string ` | ✅ | Record identifier being edited |
300+ | ** fieldName** | ` string ` | ✅ | Field name being edited |
301+ | ** position** | ` number ` | ✅ | Cursor position (character offset from start) |
302+ | ** selection** | ` object ` | optional | Text selection range (if text is selected) |
303+
304+ ---
305+
306+ ## SimplePresenceState
307+
308+ ### Properties
309+
310+ | Property | Type | Required | Description |
311+ | :--- | :--- | :--- | :--- |
312+ | ** userId** | ` string ` | ✅ | User identifier |
313+ | ** userName** | ` string ` | ✅ | User display name |
314+ | ** status** | ` Enum<'online' \| 'away' \| 'offline'> ` | ✅ | User presence status |
315+ | ** lastSeen** | ` number ` | ✅ | Unix timestamp of last activity in milliseconds |
316+ | ** metadata** | ` Record<string, any> ` | optional | Additional presence metadata (e.g., current page, custom status) |
317+
318+ ---
319+
292320## SubscribeMessage
293321
294322### Properties
@@ -342,6 +370,19 @@ Event pattern (supports wildcards like "record.*" or "*.created")
342370
343371---
344372
373+ ## WebSocketEvent
374+
375+ ### Properties
376+
377+ | Property | Type | Required | Description |
378+ | :--- | :--- | :--- | :--- |
379+ | ** type** | ` Enum<'subscribe' \| 'unsubscribe' \| 'data-change' \| 'presence-update' \| 'cursor-update' \| 'error'> ` | ✅ | Event type |
380+ | ** channel** | ` string ` | ✅ | Channel identifier (e.g., "record.account.123", "user.456") |
381+ | ** payload** | ` any ` | optional | Event payload data |
382+ | ** timestamp** | ` number ` | ✅ | Unix timestamp in milliseconds |
383+
384+ ---
385+
345386## WebSocketMessage
346387
347388---
@@ -372,3 +413,18 @@ Event pattern (supports wildcards like "record.*" or "*.created")
372413* ` busy `
373414* ` offline `
374415
416+ ---
417+
418+ ## WebSocketServerConfig
419+
420+ ### Properties
421+
422+ | Property | Type | Required | Description |
423+ | :--- | :--- | :--- | :--- |
424+ | ** enabled** | ` boolean ` | optional | Enable WebSocket server |
425+ | ** path** | ` string ` | optional | WebSocket endpoint path |
426+ | ** heartbeatInterval** | ` number ` | optional | Heartbeat interval in milliseconds |
427+ | ** reconnectAttempts** | ` number ` | optional | Maximum reconnection attempts for clients |
428+ | ** presence** | ` boolean ` | optional | Enable presence tracking |
429+ | ** cursorSharing** | ` boolean ` | optional | Enable collaborative cursor sharing |
430+
0 commit comments