clay-server 2.27.0-beta.9 → 2.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/README.md +10 -0
  2. package/lib/daemon-projects.js +164 -0
  3. package/lib/daemon.js +13 -126
  4. package/lib/mates-identity.js +132 -0
  5. package/lib/mates-knowledge.js +113 -0
  6. package/lib/mates-prompts.js +398 -0
  7. package/lib/mates.js +40 -599
  8. package/lib/project-connection.js +2 -0
  9. package/lib/project-http.js +4 -2
  10. package/lib/project-loop.js +110 -48
  11. package/lib/project-mate-interaction.js +4 -0
  12. package/lib/project-notifications.js +210 -0
  13. package/lib/project-sessions.js +5 -2
  14. package/lib/project-user-message.js +2 -1
  15. package/lib/project.js +26 -2
  16. package/lib/public/app.js +1193 -8517
  17. package/lib/public/css/command-palette.css +14 -0
  18. package/lib/public/css/loop.css +301 -0
  19. package/lib/public/css/notifications-center.css +190 -0
  20. package/lib/public/css/rewind.css +6 -0
  21. package/lib/public/index.html +89 -35
  22. package/lib/public/modules/app-connection.js +160 -0
  23. package/lib/public/modules/app-cursors.js +473 -0
  24. package/lib/public/modules/app-debate-ui.js +389 -0
  25. package/lib/public/modules/app-dm.js +627 -0
  26. package/lib/public/modules/app-favicon.js +212 -0
  27. package/lib/public/modules/app-header.js +229 -0
  28. package/lib/public/modules/app-home-hub.js +600 -0
  29. package/lib/public/modules/app-loop-ui.js +589 -0
  30. package/lib/public/modules/app-loop-wizard.js +439 -0
  31. package/lib/public/modules/app-messages.js +1560 -0
  32. package/lib/public/modules/app-misc.js +299 -0
  33. package/lib/public/modules/app-notifications.js +372 -0
  34. package/lib/public/modules/app-panels.js +888 -0
  35. package/lib/public/modules/app-projects.js +798 -0
  36. package/lib/public/modules/app-rate-limit.js +451 -0
  37. package/lib/public/modules/app-rendering.js +597 -0
  38. package/lib/public/modules/app-skills-install.js +234 -0
  39. package/lib/public/modules/command-palette.js +27 -4
  40. package/lib/public/modules/input.js +31 -20
  41. package/lib/public/modules/scheduler-config.js +1532 -0
  42. package/lib/public/modules/scheduler-history.js +79 -0
  43. package/lib/public/modules/scheduler.js +33 -1554
  44. package/lib/public/modules/session-search.js +13 -1
  45. package/lib/public/modules/sidebar-mates.js +812 -0
  46. package/lib/public/modules/sidebar-mobile.js +1269 -0
  47. package/lib/public/modules/sidebar-projects.js +1449 -0
  48. package/lib/public/modules/sidebar-sessions.js +986 -0
  49. package/lib/public/modules/sidebar.js +232 -4591
  50. package/lib/public/modules/store.js +27 -0
  51. package/lib/public/modules/ws-ref.js +7 -0
  52. package/lib/public/style.css +1 -0
  53. package/lib/sdk-bridge.js +96 -717
  54. package/lib/sdk-message-processor.js +587 -0
  55. package/lib/sdk-message-queue.js +42 -0
  56. package/lib/sdk-skill-discovery.js +131 -0
  57. package/lib/server-admin.js +712 -0
  58. package/lib/server-auth.js +737 -0
  59. package/lib/server-dm.js +221 -0
  60. package/lib/server-mates.js +281 -0
  61. package/lib/server-palette.js +110 -0
  62. package/lib/server-settings.js +479 -0
  63. package/lib/server-skills.js +280 -0
  64. package/lib/server.js +246 -2755
  65. package/lib/sessions.js +11 -4
  66. package/lib/users-auth.js +146 -0
  67. package/lib/users-permissions.js +118 -0
  68. package/lib/users-preferences.js +210 -0
  69. package/lib/users.js +48 -398
  70. package/lib/ws-schema.js +498 -0
  71. package/package.json +1 -1
@@ -0,0 +1,498 @@
1
+ /**
2
+ * WebSocket message type registry.
3
+ *
4
+ * Documents every message type flowing between client and server.
5
+ * Each entry: { direction, handler, description }
6
+ * direction: "c2s" (client to server), "s2c" (server to client), "both" (bidirectional)
7
+ * handler: file path where this message type is processed
8
+ * description: brief description
9
+ *
10
+ * This file is informational. It is not imported at runtime.
11
+ * Use it as a reference when adding new message types.
12
+ */
13
+
14
+ var schema = {
15
+
16
+ // -----------------------------------------------------------------------
17
+ // Session management
18
+ // -----------------------------------------------------------------------
19
+ "switch_session": { direction: "c2s", handler: "lib/project-sessions.js", description: "Switch the active session by local ID" },
20
+ "new_session": { direction: "c2s", handler: "lib/project-sessions.js", description: "Create a new blank session" },
21
+ "delete_session": { direction: "c2s", handler: "lib/project-sessions.js", description: "Delete a session by ID" },
22
+ "rename_session": { direction: "c2s", handler: "lib/project-sessions.js", description: "Rename a session" },
23
+ "resume_session": { direction: "c2s", handler: "lib/project-sessions.js", description: "Resume a CLI session by its CLI session ID" },
24
+ "set_session_visibility": { direction: "c2s", handler: "lib/project-sessions.js", description: "Show or hide a session in the sidebar" },
25
+ "search_sessions": { direction: "c2s", handler: "lib/project-sessions.js", description: "Search session titles" },
26
+ "search_session_content": { direction: "c2s", handler: "lib/project-sessions.js", description: "Full-text search within a session" },
27
+ "list_cli_sessions": { direction: "c2s", handler: "lib/project-sessions.js", description: "List active CLI sessions available for resume" },
28
+ "load_more_history": { direction: "c2s", handler: "lib/project-sessions.js", description: "Request older history entries for the current session" },
29
+ "fork_session": { direction: "c2s", handler: "lib/project-sessions.js", description: "Fork a session from a given message UUID" },
30
+ "input_sync": { direction: "c2s", handler: "lib/project-sessions.js", description: "Sync the current input field text to other clients" },
31
+
32
+ "session_list": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Full list of sessions for the sidebar" },
33
+ "session_switched": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Confirmation that active session changed" },
34
+ "session_id": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "CLI session ID assigned to the current session" },
35
+ "session_presence": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Which users are present in which sessions" },
36
+ "session_io": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Notify that a session has new output activity" },
37
+ "session_unread": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Unread message count for a session" },
38
+ "search_results": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Session title search results" },
39
+ "search_content_results": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Full-text content search results" },
40
+ "cli_session_list": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "List of resumable CLI sessions" },
41
+ "fork_complete": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Fork succeeded, includes new session ID" },
42
+ "input_sync_broadcast": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Broadcast input text from another client" },
43
+
44
+ // -----------------------------------------------------------------------
45
+ // History replay
46
+ // -----------------------------------------------------------------------
47
+ "history_meta": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Metadata about history replay (total count, starting index)" },
48
+ "history_prepend": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Batch of older history entries prepended to timeline" },
49
+ "history_done": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "History replay finished, includes last usage stats" },
50
+
51
+ // -----------------------------------------------------------------------
52
+ // Chat / streaming
53
+ // -----------------------------------------------------------------------
54
+ "message": { direction: "c2s", handler: "lib/project-user-message.js", description: "Send a user chat message" },
55
+ "user_message": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Echo of the user message in the timeline" },
56
+ "delta": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Incremental text delta from the assistant" },
57
+ "result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Final assistant result text" },
58
+ "status": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Processing status update (e.g. 'processing')" },
59
+ "done": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Query complete, includes exit code" },
60
+ "error": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Error message from server" },
61
+ "info": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Project info payload sent on connection" },
62
+ "stderr": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "stderr output from Claude process" },
63
+ "compacting": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Conversation compaction in progress (active: true/false)" },
64
+ "message_uuid": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "UUID assigned to a user or assistant message" },
65
+ "prompt_suggestion": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Suggested follow-up prompt from the assistant" },
66
+ "context_preview": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Preview of context sources included in a query" },
67
+
68
+ // -----------------------------------------------------------------------
69
+ // Thinking
70
+ // -----------------------------------------------------------------------
71
+ "thinking_start": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Assistant started a thinking block" },
72
+ "thinking_delta": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Incremental thinking text delta" },
73
+ "thinking_stop": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Thinking block finished, includes duration" },
74
+
75
+ // -----------------------------------------------------------------------
76
+ // Tools
77
+ // -----------------------------------------------------------------------
78
+ "tool_start": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Assistant started a tool use block" },
79
+ "tool_executing": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Tool is executing with parsed input" },
80
+ "tool_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Tool execution result" },
81
+ "slash_command_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Output of a slash command" },
82
+
83
+ // -----------------------------------------------------------------------
84
+ // Subagents / tasks
85
+ // -----------------------------------------------------------------------
86
+ "subagent_activity": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Activity indicator for a subagent" },
87
+ "subagent_tool": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Subagent tool use event" },
88
+ "subagent_done": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Subagent task completed" },
89
+ "task_started": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Background task started" },
90
+ "task_progress": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Background task progress update" },
91
+
92
+ // -----------------------------------------------------------------------
93
+ // Permissions
94
+ // -----------------------------------------------------------------------
95
+ "permission_request": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Tool permission request from assistant" },
96
+ "permission_request_pending": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Permission request that was pending when client connected" },
97
+ "permission_response": { direction: "c2s", handler: "lib/project-sessions.js", description: "User response to a permission request" },
98
+ "permission_resolved": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Permission request resolved" },
99
+ "permission_cancel": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Permission request cancelled (e.g. interrupted)" },
100
+
101
+ // -----------------------------------------------------------------------
102
+ // Ask user (interactive input)
103
+ // -----------------------------------------------------------------------
104
+ "ask_user": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Assistant is requesting user input via ask_user tool" },
105
+ "ask_user_response": { direction: "c2s", handler: "lib/project-sessions.js", description: "User reply to an ask_user request" },
106
+ "ask_user_answered": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Confirmation that ask_user was answered" },
107
+
108
+ // -----------------------------------------------------------------------
109
+ // Elicitation
110
+ // -----------------------------------------------------------------------
111
+ "elicitation_request": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Structured form elicitation request from assistant" },
112
+ "elicitation_response": { direction: "c2s", handler: "lib/project-sessions.js", description: "User response to an elicitation form" },
113
+ "elicitation_resolved": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Elicitation request resolved" },
114
+
115
+ // -----------------------------------------------------------------------
116
+ // Stop / control
117
+ // -----------------------------------------------------------------------
118
+ "stop": { direction: "c2s", handler: "lib/project-sessions.js", description: "Stop the current assistant query" },
119
+ "stop_task": { direction: "c2s", handler: "lib/project-sessions.js", description: "Stop a specific background task by ID" },
120
+ "kill_process": { direction: "c2s", handler: "lib/project-sessions.js", description: "Kill a system process by PID" },
121
+ "process_killed": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Process was successfully killed" },
122
+ "process_conflict": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Conflict: another process is using the session" },
123
+
124
+ // -----------------------------------------------------------------------
125
+ // Context / usage
126
+ // -----------------------------------------------------------------------
127
+ "context_usage": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Token usage and context window stats" },
128
+ "context_overflow": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Conversation too long to continue" },
129
+
130
+ // -----------------------------------------------------------------------
131
+ // Auth
132
+ // -----------------------------------------------------------------------
133
+ "auth_required": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Authentication required (e.g. API key needed)" },
134
+
135
+ // -----------------------------------------------------------------------
136
+ // Rate limiting / scheduling
137
+ // -----------------------------------------------------------------------
138
+ "rate_limit": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Rate limit hit, includes wait time" },
139
+ "rate_limit_usage": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Current rate limit usage stats" },
140
+ "schedule_message": { direction: "c2s", handler: "lib/project-user-message.js", description: "Schedule a message to be sent at a future time" },
141
+ "send_scheduled_now": { direction: "c2s", handler: "lib/project-user-message.js", description: "Send the scheduled message immediately" },
142
+ "cancel_scheduled_message": { direction: "c2s", handler: "lib/project-user-message.js", description: "Cancel the pending scheduled message" },
143
+ "scheduled_message_queued": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Scheduled message has been queued" },
144
+ "scheduled_message_sent": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Scheduled message was sent" },
145
+ "scheduled_message_cancelled": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Scheduled message was cancelled" },
146
+ "auto_continue_scheduled": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Auto-continue was scheduled after rate limit" },
147
+ "auto_continue_fired": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Auto-continue timer fired" },
148
+
149
+ // -----------------------------------------------------------------------
150
+ // Model / config
151
+ // -----------------------------------------------------------------------
152
+ "set_model": { direction: "c2s", handler: "lib/project-sessions.js", description: "Set the model for the current session" },
153
+ "set_server_default_model": { direction: "c2s", handler: "lib/project-sessions.js", description: "Set the server-wide default model" },
154
+ "set_project_default_model": { direction: "c2s", handler: "lib/project-sessions.js", description: "Set the project default model" },
155
+ "set_permission_mode": { direction: "c2s", handler: "lib/project-sessions.js", description: "Set permission mode for the current session" },
156
+ "set_server_default_mode": { direction: "c2s", handler: "lib/project-sessions.js", description: "Set the server-wide default permission mode" },
157
+ "set_project_default_mode": { direction: "c2s", handler: "lib/project-sessions.js", description: "Set the project default permission mode" },
158
+ "set_effort": { direction: "c2s", handler: "lib/project-sessions.js", description: "Set effort level for the current session" },
159
+ "set_server_default_effort": { direction: "c2s", handler: "lib/project-sessions.js", description: "Set the server-wide default effort level" },
160
+ "set_project_default_effort": { direction: "c2s", handler: "lib/project-sessions.js", description: "Set the project default effort level" },
161
+ "set_betas": { direction: "c2s", handler: "lib/project-sessions.js", description: "Set beta feature flags" },
162
+ "set_thinking": { direction: "c2s", handler: "lib/project-sessions.js", description: "Set thinking mode and budget" },
163
+ "model_info": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Current model and available models list" },
164
+ "config_state": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Full config state: model, mode, effort, betas, thinking" },
165
+ "slash_commands": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Available slash commands list" },
166
+ "fast_mode_state": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Fast mode toggle state" },
167
+ "client_count": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Number of connected clients" },
168
+
169
+ // -----------------------------------------------------------------------
170
+ // Rewind
171
+ // -----------------------------------------------------------------------
172
+ "rewind_preview": { direction: "c2s", handler: "lib/project-sessions.js", description: "Request a preview of rewinding to a message UUID" },
173
+ "rewind_execute": { direction: "c2s", handler: "lib/project-sessions.js", description: "Execute the rewind to a message UUID" },
174
+ "rewind_preview_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Rewind preview data and diffs" },
175
+ "rewind_complete": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Rewind executed successfully" },
176
+ "rewind_error": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Rewind failed" },
177
+
178
+ // -----------------------------------------------------------------------
179
+ // Cursors / presence
180
+ // -----------------------------------------------------------------------
181
+ "cursor_move": { direction: "both", handler: "lib/project-sessions.js", description: "Cursor position update from a user" },
182
+ "cursor_leave": { direction: "both", handler: "lib/project-sessions.js", description: "User cursor left the viewport" },
183
+ "text_select": { direction: "both", handler: "lib/project-sessions.js", description: "Text selection ranges from a user" },
184
+
185
+ // -----------------------------------------------------------------------
186
+ // Push notifications
187
+ // -----------------------------------------------------------------------
188
+ "push_subscribe": { direction: "c2s", handler: "lib/project-sessions.js", description: "Register a push notification subscription" },
189
+
190
+ // -----------------------------------------------------------------------
191
+ // Updates
192
+ // -----------------------------------------------------------------------
193
+ "set_update_channel": { direction: "c2s", handler: "lib/project-sessions.js", description: "Set the update channel (stable/beta)" },
194
+ "check_update": { direction: "c2s", handler: "lib/project-sessions.js", description: "Check if an update is available" },
195
+ "update_now": { direction: "c2s", handler: "lib/project-sessions.js", description: "Start the update process" },
196
+ "update_available": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "A new version is available" },
197
+ "up_to_date": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Server is already on the latest version" },
198
+ "update_started": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Update download/install has started" },
199
+
200
+ // -----------------------------------------------------------------------
201
+ // Process stats
202
+ // -----------------------------------------------------------------------
203
+ "process_stats": { direction: "both", handler: "lib/project-sessions.js", description: "Request (c2s) or response (s2c) of system process stats" },
204
+
205
+ // -----------------------------------------------------------------------
206
+ // Server settings / daemon
207
+ // -----------------------------------------------------------------------
208
+ "get_daemon_config": { direction: "c2s", handler: "lib/project-sessions.js", description: "Request daemon configuration" },
209
+ "daemon_config": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Daemon configuration payload" },
210
+ "set_pin": { direction: "c2s", handler: "lib/project-sessions.js", description: "Set or clear the server access PIN" },
211
+ "set_pin_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "PIN set result" },
212
+ "set_keep_awake": { direction: "c2s", handler: "lib/project-sessions.js", description: "Enable or disable keep-awake" },
213
+ "set_keep_awake_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Keep-awake setting result" },
214
+ "keep_awake_changed": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Broadcast: keep-awake state changed" },
215
+ "set_auto_continue": { direction: "c2s", handler: "lib/project-sessions.js", description: "Enable or disable auto-continue on rate limit" },
216
+ "set_auto_continue_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Auto-continue setting result" },
217
+ "auto_continue_changed": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Broadcast: auto-continue state changed" },
218
+ "set_image_retention": { direction: "c2s", handler: "lib/project-sessions.js", description: "Set image retention period in days" },
219
+ "set_image_retention_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Image retention setting result" },
220
+ "shutdown_server": { direction: "c2s", handler: "lib/project-sessions.js", description: "Request server shutdown" },
221
+ "shutdown_server_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Shutdown request result" },
222
+ "restart_server": { direction: "c2s", handler: "lib/project-sessions.js", description: "Request server restart" },
223
+ "restart_server_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Restart request result" },
224
+ "toast": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Ephemeral toast notification" },
225
+
226
+ // -----------------------------------------------------------------------
227
+ // Projects
228
+ // -----------------------------------------------------------------------
229
+ "browse_dir": { direction: "c2s", handler: "lib/project-sessions.js", description: "Browse directory entries for project creation" },
230
+ "browse_dir_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Directory listing result" },
231
+ "add_project": { direction: "c2s", handler: "lib/project-sessions.js", description: "Add an existing directory as a project" },
232
+ "add_project_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Add project result" },
233
+ "create_project": { direction: "c2s", handler: "lib/project-sessions.js", description: "Create a new empty project directory" },
234
+ "clone_project": { direction: "c2s", handler: "lib/project-sessions.js", description: "Clone a git repository as a new project" },
235
+ "clone_project_progress": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Git clone progress indicator" },
236
+ "create_worktree": { direction: "c2s", handler: "lib/project-sessions.js", description: "Create a git worktree branch as a new project" },
237
+ "create_worktree_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Worktree creation result" },
238
+ "remove_project_check": { direction: "c2s", handler: "lib/project-sessions.js", description: "Check how many schedules a project has before removal" },
239
+ "remove_project_check_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Schedule count for project about to be removed" },
240
+ "remove_project": { direction: "c2s", handler: "lib/project-sessions.js", description: "Remove a project" },
241
+ "remove_project_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Remove project result" },
242
+ "reorder_projects": { direction: "c2s", handler: "lib/project-sessions.js", description: "Reorder project list by slug array" },
243
+ "reorder_projects_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Reorder result" },
244
+ "set_project_title": { direction: "c2s", handler: "lib/project-sessions.js", description: "Rename a project" },
245
+ "set_project_title_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Rename project result" },
246
+ "set_project_icon": { direction: "c2s", handler: "lib/project-sessions.js", description: "Set or clear a project emoji icon" },
247
+ "set_project_icon_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Set icon result" },
248
+ "transfer_project_owner": { direction: "c2s", handler: "lib/project-sessions.js", description: "Transfer project ownership to another user" },
249
+ "project_owner_changed": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Project ownership was transferred" },
250
+ "projects_updated": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Broadcast: project list changed" },
251
+ "schedule_move": { direction: "c2s", handler: "lib/project-sessions.js", description: "Move a schedule to a different project" },
252
+ "schedule_move_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Schedule move result" },
253
+
254
+ // -----------------------------------------------------------------------
255
+ // Filesystem
256
+ // -----------------------------------------------------------------------
257
+ "fs_list": { direction: "c2s", handler: "lib/project-filesystem.js", description: "List directory contents" },
258
+ "fs_list_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Directory listing result" },
259
+ "fs_read": { direction: "c2s", handler: "lib/project-filesystem.js", description: "Read file contents" },
260
+ "fs_read_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "File content result" },
261
+ "fs_write": { direction: "c2s", handler: "lib/project-filesystem.js", description: "Write file contents" },
262
+ "fs_write_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "File write result" },
263
+ "fs_delete": { direction: "c2s", handler: "lib/project-filesystem.js", description: "Delete a file" },
264
+ "fs_rename": { direction: "c2s", handler: "lib/project-filesystem.js", description: "Rename a file" },
265
+ "fs_mkdir": { direction: "c2s", handler: "lib/project-filesystem.js", description: "Create a directory" },
266
+ "fs_upload": { direction: "c2s", handler: "lib/project-filesystem.js", description: "Upload a file" },
267
+ "fs_watch": { direction: "c2s", handler: "lib/project-filesystem.js", description: "Start watching a file for changes" },
268
+ "fs_unwatch": { direction: "c2s", handler: "lib/project-filesystem.js", description: "Stop watching a file" },
269
+ "fs_file_changed": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Watched file content changed" },
270
+ "fs_dir_changed": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Watched directory contents changed" },
271
+ "fs_file_history": { direction: "c2s", handler: "lib/project-filesystem.js", description: "Request git history for a file" },
272
+ "fs_file_history_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Git file history entries" },
273
+ "fs_git_diff": { direction: "c2s", handler: "lib/project-filesystem.js", description: "Request a git diff for a commit/file" },
274
+ "fs_git_diff_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Git diff result" },
275
+ "fs_file_at": { direction: "c2s", handler: "lib/project-filesystem.js", description: "Read a file at a specific git commit hash" },
276
+ "fs_file_at_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "File content at a specific commit" },
277
+
278
+ // -----------------------------------------------------------------------
279
+ // Project env / CLAUDE.md
280
+ // -----------------------------------------------------------------------
281
+ "get_project_env": { direction: "c2s", handler: "lib/project-filesystem.js", description: "Read the project .envrc" },
282
+ "project_env_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Project .envrc content" },
283
+ "set_project_env": { direction: "c2s", handler: "lib/project-filesystem.js", description: "Write the project .envrc" },
284
+ "set_project_env_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Project .envrc write result" },
285
+ "read_global_claude_md": { direction: "c2s", handler: "lib/project-filesystem.js", description: "Read the global CLAUDE.md" },
286
+ "global_claude_md_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Global CLAUDE.md content" },
287
+ "write_global_claude_md": { direction: "c2s", handler: "lib/project-filesystem.js", description: "Write the global CLAUDE.md" },
288
+ "write_global_claude_md_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Global CLAUDE.md write result" },
289
+ "get_shared_env": { direction: "c2s", handler: "lib/project-filesystem.js", description: "Read the shared .envrc" },
290
+ "shared_env_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Shared .envrc content" },
291
+ "set_shared_env": { direction: "c2s", handler: "lib/project-filesystem.js", description: "Write the shared .envrc" },
292
+ "set_shared_env_result": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Shared .envrc write result" },
293
+
294
+ // -----------------------------------------------------------------------
295
+ // Context sources
296
+ // -----------------------------------------------------------------------
297
+ "context_sources_save": { direction: "c2s", handler: "lib/project-user-message.js", description: "Save active context source configuration" },
298
+ "context_sources_state": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Current active context sources list" },
299
+
300
+ // -----------------------------------------------------------------------
301
+ // Terminal
302
+ // -----------------------------------------------------------------------
303
+ "term_create": { direction: "c2s", handler: "lib/project-user-message.js", description: "Create a new terminal session" },
304
+ "term_created": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Terminal was created, includes ID" },
305
+ "term_attach": { direction: "c2s", handler: "lib/project-user-message.js", description: "Attach to a terminal to receive output" },
306
+ "term_detach": { direction: "c2s", handler: "lib/project-user-message.js", description: "Detach from a terminal" },
307
+ "term_input": { direction: "c2s", handler: "lib/project-user-message.js", description: "Send input to a terminal" },
308
+ "term_resize": { direction: "c2s", handler: "lib/project-user-message.js", description: "Resize a terminal" },
309
+ "term_close": { direction: "c2s", handler: "lib/project-user-message.js", description: "Close a terminal session" },
310
+ "term_rename": { direction: "c2s", handler: "lib/project-user-message.js", description: "Rename a terminal tab" },
311
+ "term_output": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Terminal output data" },
312
+ "term_resized": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Terminal was resized" },
313
+ "term_exited": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Terminal process exited" },
314
+ "term_closed": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Terminal session was closed" },
315
+ "term_list": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Full list of open terminals" },
316
+ "term_error": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Terminal error (e.g. access denied)" },
317
+
318
+ // -----------------------------------------------------------------------
319
+ // Sticky notes
320
+ // -----------------------------------------------------------------------
321
+ "note_create": { direction: "c2s", handler: "lib/project-user-message.js", description: "Create a new sticky note" },
322
+ "note_created": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Sticky note was created" },
323
+ "note_update": { direction: "c2s", handler: "lib/project-user-message.js", description: "Update a sticky note" },
324
+ "note_updated": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Sticky note was updated" },
325
+ "note_delete": { direction: "c2s", handler: "lib/project-user-message.js", description: "Delete a sticky note" },
326
+ "note_deleted": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Sticky note was deleted" },
327
+ "note_list_request": { direction: "c2s", handler: "lib/project-user-message.js", description: "Request the full notes list" },
328
+ "note_bring_front": { direction: "c2s", handler: "lib/project-user-message.js", description: "Bring a note to front (update z-order)" },
329
+ "notes_list": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Full list of sticky notes" },
330
+
331
+ // -----------------------------------------------------------------------
332
+ // Browser extension
333
+ // -----------------------------------------------------------------------
334
+ "browser_tab_list": { direction: "c2s", handler: "lib/project-user-message.js", description: "Provide browser tab list from the extension" },
335
+ "extension_result": { direction: "c2s", handler: "lib/project-user-message.js", description: "Result from a browser extension command" },
336
+ "extension_command": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Command for the browser extension to execute" },
337
+ "clay_ext_tab_list": { direction: "s2c", handler: "lib/public/modules/app-misc.js", description: "Browser tab list from the extension (broadcast)" },
338
+ "clay_ext_result": { direction: "s2c", handler: "lib/public/modules/app-misc.js", description: "Browser extension command result (broadcast)" },
339
+ "clay_ext_command": { direction: "c2s", handler: "lib/public/modules/app-misc.js", description: "Send a command to the browser extension" },
340
+
341
+ // -----------------------------------------------------------------------
342
+ // Skills
343
+ // -----------------------------------------------------------------------
344
+ "skill_installed": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Skill was installed" },
345
+ "skill_uninstalled": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Skill was uninstalled" },
346
+
347
+ // -----------------------------------------------------------------------
348
+ // DMs (direct messages)
349
+ // -----------------------------------------------------------------------
350
+ "dm_list": { direction: "both", handler: "lib/server-dm.js", description: "Request (c2s) or receive (s2c) DM conversation list" },
351
+ "dm_open": { direction: "c2s", handler: "lib/server-dm.js", description: "Open a DM conversation with a user/mate" },
352
+ "dm_history": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "DM conversation history" },
353
+ "dm_send": { direction: "c2s", handler: "lib/server-dm.js", description: "Send a DM message" },
354
+ "dm_message": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Incoming DM message" },
355
+ "dm_typing": { direction: "both", handler: "lib/server-dm.js", description: "DM typing indicator" },
356
+ "dm_add_favorite": { direction: "c2s", handler: "lib/server-dm.js", description: "Add a mate to DM favorites" },
357
+ "dm_remove_favorite": { direction: "c2s", handler: "lib/server-dm.js", description: "Remove a mate from DM favorites" },
358
+ "dm_favorites_updated": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "DM favorites list updated" },
359
+ "set_mate_dm": { direction: "c2s", handler: "lib/project-sessions.js", description: "Set active mate for DM mode in a session" },
360
+ "restore_mate_dm": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Restore mate DM mode on reconnect" },
361
+
362
+ // -----------------------------------------------------------------------
363
+ // Mates (AI personas)
364
+ // -----------------------------------------------------------------------
365
+ "mate_create": { direction: "c2s", handler: "lib/server-mates.js", description: "Create a new mate" },
366
+ "mate_created": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Mate was created" },
367
+ "mate_list": { direction: "both", handler: "lib/server-mates.js", description: "Request (c2s) or receive (s2c) mate list" },
368
+ "mate_delete": { direction: "c2s", handler: "lib/server-mates.js", description: "Delete a mate" },
369
+ "mate_deleted": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Mate was deleted" },
370
+ "mate_update": { direction: "c2s", handler: "lib/server-mates.js", description: "Update a mate's properties" },
371
+ "mate_updated": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Mate was updated" },
372
+ "mate_readd_builtin": { direction: "c2s", handler: "lib/server-mates.js", description: "Re-add a previously deleted built-in mate" },
373
+ "mate_list_available_builtins": { direction: "c2s", handler: "lib/server-mates.js", description: "List built-in mates available for re-adding" },
374
+ "mate_available_builtins": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Available built-in mates list" },
375
+ "mate_error": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Mate operation error" },
376
+
377
+ // -----------------------------------------------------------------------
378
+ // Mentions (@mate)
379
+ // -----------------------------------------------------------------------
380
+ "mention": { direction: "c2s", handler: "lib/project.js", description: "Mention a mate in the conversation" },
381
+ "mention_stop": { direction: "c2s", handler: "lib/project.js", description: "Stop a running mention" },
382
+ "mention_processing": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Mention processing state changed" },
383
+ "mention_start": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Mention response started" },
384
+ "mention_activity": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Mention activity indicator" },
385
+ "mention_stream": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Incremental mention response text" },
386
+ "mention_done": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Mention response complete" },
387
+ "mention_error": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Mention processing error" },
388
+ "mention_user": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Echo of user's mention message in timeline" },
389
+ "mention_response": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Full mention response entry in timeline" },
390
+
391
+ // -----------------------------------------------------------------------
392
+ // Debate
393
+ // -----------------------------------------------------------------------
394
+ "debate_start": { direction: "c2s", handler: "lib/project.js", description: "Start a new debate" },
395
+ "debate_hand_raise": { direction: "c2s", handler: "lib/project.js", description: "Raise hand during a debate" },
396
+ "debate_comment": { direction: "c2s", handler: "lib/project.js", description: "Submit a comment during a debate" },
397
+ "debate_stop": { direction: "c2s", handler: "lib/project.js", description: "Stop the current debate" },
398
+ "debate_conclude_response": { direction: "c2s", handler: "lib/project.js", description: "Respond to a debate conclude prompt (end or continue)" },
399
+ "debate_confirm_brief": { direction: "c2s", handler: "lib/project.js", description: "Confirm the debate brief and start the debate" },
400
+ "debate_proposal_response": { direction: "c2s", handler: "lib/project.js", description: "Respond to a debate proposal" },
401
+ "debate_user_floor_response": { direction: "c2s", handler: "lib/project.js", description: "User submits their statement during user floor turn" },
402
+ "debate_preparing": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Debate is being prepared" },
403
+ "debate_brief_ready": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Debate brief is ready for user approval" },
404
+ "debate_started": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Debate has started" },
405
+ "debate_turn": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "A new debate turn is starting" },
406
+ "debate_activity": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Debate panelist activity indicator" },
407
+ "debate_stream": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Incremental debate response text" },
408
+ "debate_turn_done": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Debate turn completed with full text" },
409
+ "debate_hand_raised": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "User hand raise was acknowledged" },
410
+ "debate_comment_queued": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "User comment was queued for injection" },
411
+ "debate_comment_injected": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "User comment was injected into the debate" },
412
+ "debate_conclude_confirm": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Moderator wants to conclude, asking for confirmation" },
413
+ "debate_user_floor": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "User has the floor to speak" },
414
+ "debate_user_floor_done": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "User floor turn ended" },
415
+ "debate_user_resume": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "User resumed debate with instruction" },
416
+ "debate_resumed": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Debate resumed after user floor" },
417
+ "debate_ended": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Debate has ended" },
418
+ "debate_error": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Debate error" },
419
+
420
+ // -----------------------------------------------------------------------
421
+ // Knowledge (mate knowledge files)
422
+ // -----------------------------------------------------------------------
423
+ "knowledge_list": { direction: "both", handler: "lib/project-knowledge.js", description: "Request (c2s) or receive (s2c) knowledge file list" },
424
+ "knowledge_read": { direction: "c2s", handler: "lib/project-knowledge.js", description: "Read a knowledge file" },
425
+ "knowledge_content": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Knowledge file content" },
426
+ "knowledge_save": { direction: "c2s", handler: "lib/project-knowledge.js", description: "Save a knowledge file" },
427
+ "knowledge_saved": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Knowledge file was saved" },
428
+ "knowledge_delete": { direction: "c2s", handler: "lib/project-knowledge.js", description: "Delete a knowledge file" },
429
+ "knowledge_deleted": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Knowledge file was deleted" },
430
+ "knowledge_promote": { direction: "c2s", handler: "lib/project-knowledge.js", description: "Promote a knowledge file to always-active" },
431
+ "knowledge_promoted": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Knowledge file was promoted" },
432
+ "knowledge_depromote": { direction: "c2s", handler: "lib/project-knowledge.js", description: "Depromote a knowledge file from always-active" },
433
+ "knowledge_depromoted": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Knowledge file was depromoted" },
434
+
435
+ // -----------------------------------------------------------------------
436
+ // Memory (mate memory)
437
+ // -----------------------------------------------------------------------
438
+ "memory_list": { direction: "both", handler: "lib/project.js", description: "Request (c2s) or receive (s2c) memory entries" },
439
+ "memory_search": { direction: "c2s", handler: "lib/project.js", description: "Search memory entries" },
440
+ "memory_search_results": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Memory search results" },
441
+ "memory_delete": { direction: "c2s", handler: "lib/project.js", description: "Delete a memory entry by index" },
442
+ "memory_deleted": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Memory entry was deleted" },
443
+
444
+ // -----------------------------------------------------------------------
445
+ // Loop (automated task runner)
446
+ // -----------------------------------------------------------------------
447
+ "loop_start": { direction: "c2s", handler: "lib/project-loop.js", description: "Start the loop runner" },
448
+ "loop_stop": { direction: "c2s", handler: "lib/project-loop.js", description: "Stop the running loop" },
449
+ "loop_available": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Loop configuration is available" },
450
+ "loop_started": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Loop has started running" },
451
+ "loop_iteration": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Loop iteration progress update" },
452
+ "loop_judging": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Loop is running the judge step" },
453
+ "loop_verdict": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Judge verdict for a loop iteration" },
454
+ "loop_stopping": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Loop is in the process of stopping" },
455
+ "loop_finished": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Loop has finished" },
456
+ "loop_error": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Loop error" },
457
+ "loop_scheduled": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Loop was scheduled via cron" },
458
+ "loop_rerun_started": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "A loop registry entry re-run has started" },
459
+
460
+ // -----------------------------------------------------------------------
461
+ // Loop registry (task schedule management)
462
+ // -----------------------------------------------------------------------
463
+ "loop_registry_list": { direction: "c2s", handler: "lib/project-loop.js", description: "Request the loop registry list" },
464
+ "loop_registry_update": { direction: "c2s", handler: "lib/project-loop.js", description: "Update a loop registry entry" },
465
+ "loop_registry_rename": { direction: "c2s", handler: "lib/project-loop.js", description: "Rename a loop registry entry" },
466
+ "loop_registry_remove": { direction: "c2s", handler: "lib/project-loop.js", description: "Remove a loop registry entry" },
467
+ "loop_registry_convert": { direction: "c2s", handler: "lib/project-loop.js", description: "Convert a loop registry entry type" },
468
+ "loop_registry_toggle": { direction: "c2s", handler: "lib/project-loop.js", description: "Toggle a loop registry entry on/off" },
469
+ "loop_registry_rerun": { direction: "c2s", handler: "lib/project-loop.js", description: "Re-run a loop registry entry" },
470
+ "loop_registry_files": { direction: "c2s", handler: "lib/project-loop.js", description: "Request loop registry file contents (PROMPT.md / JUDGE.md)" },
471
+ "loop_registry_files_content": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Loop registry file contents" },
472
+ "loop_registry_updated": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Broadcast: loop registry was updated" },
473
+ "loop_registry_error": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Loop registry operation error" },
474
+ "delete_loop_group": { direction: "c2s", handler: "lib/project-loop.js", description: "Delete all sessions for a loop group" },
475
+
476
+ // -----------------------------------------------------------------------
477
+ // Schedules (hub-level)
478
+ // -----------------------------------------------------------------------
479
+ "schedule_create": { direction: "c2s", handler: "lib/project-loop.js", description: "Create a new schedule" },
480
+ "hub_schedules_list": { direction: "c2s", handler: "lib/project-loop.js", description: "Request the hub schedules list" },
481
+ "hub_schedules": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Hub schedules list" },
482
+ "schedule_run_started": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "A scheduled run has started" },
483
+ "schedule_run_finished": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "A scheduled run has finished" },
484
+
485
+ // -----------------------------------------------------------------------
486
+ // Ralph (loop wizard / crafting)
487
+ // -----------------------------------------------------------------------
488
+ "ralph_wizard_complete": { direction: "c2s", handler: "lib/project-loop.js", description: "Submit completed wizard data" },
489
+ "ralph_wizard_cancel": { direction: "c2s", handler: "lib/project-loop.js", description: "Cancel the wizard" },
490
+ "ralph_preview_files": { direction: "c2s", handler: "lib/project-loop.js", description: "Request preview of loop files" },
491
+ "ralph_cancel_crafting": { direction: "c2s", handler: "lib/project-loop.js", description: "Cancel file crafting in progress" },
492
+ "ralph_phase": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Current ralph wizard phase" },
493
+ "ralph_crafting_started": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "File crafting session started" },
494
+ "ralph_files_status": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Prompt/judge file readiness status" },
495
+ "ralph_files_content": { direction: "s2c", handler: "lib/public/modules/app-messages.js", description: "Loop file contents (prompt and judge)" }
496
+ };
497
+
498
+ module.exports = { schema: schema };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clay-server",
3
- "version": "2.27.0-beta.9",
3
+ "version": "2.27.0",
4
4
  "description": "Self-hosted Claude Code in your browser. Multi-session, multi-user, push notifications.",
5
5
  "bin": {
6
6
  "clay-server": "./bin/cli.js",