@xalia/agent 0.6.10 → 0.6.11

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 (161) hide show
  1. package/package.json +5 -2
  2. package/.env.development +0 -6
  3. package/.env.test +0 -7
  4. package/.prettierrc.json +0 -11
  5. package/context_system.md +0 -498
  6. package/eslint.config.mjs +0 -38
  7. package/scripts/chat_server +0 -8
  8. package/scripts/git_message +0 -31
  9. package/scripts/git_wip +0 -21
  10. package/scripts/pr_message +0 -18
  11. package/scripts/pr_review +0 -16
  12. package/scripts/setup_chat +0 -90
  13. package/scripts/shutdown_chat_server +0 -42
  14. package/scripts/start_chat_server +0 -24
  15. package/scripts/sudomcp_import +0 -23
  16. package/scripts/test_chat +0 -327
  17. package/src/agent/agent.ts +0 -699
  18. package/src/agent/agentUtils.ts +0 -286
  19. package/src/agent/compressingContextManager.ts +0 -129
  20. package/src/agent/context.ts +0 -265
  21. package/src/agent/contextWithWorkspace.ts +0 -162
  22. package/src/agent/documentSummarizer.ts +0 -157
  23. package/src/agent/dummyLLM.ts +0 -130
  24. package/src/agent/iAgentEventHandler.ts +0 -64
  25. package/src/agent/imageGenLLM.ts +0 -101
  26. package/src/agent/imageGenerator.ts +0 -45
  27. package/src/agent/iplatform.ts +0 -18
  28. package/src/agent/llm.ts +0 -74
  29. package/src/agent/mcpServerManager.ts +0 -541
  30. package/src/agent/nullAgentEventHandler.ts +0 -26
  31. package/src/agent/nullPlatform.ts +0 -13
  32. package/src/agent/openAI.ts +0 -123
  33. package/src/agent/openAILLM.ts +0 -99
  34. package/src/agent/openAILLMStreaming.ts +0 -648
  35. package/src/agent/promptProvider.ts +0 -87
  36. package/src/agent/repeatLLM.ts +0 -62
  37. package/src/agent/sudoMcpServerManager.ts +0 -361
  38. package/src/agent/test_data/harrypotter.txt +0 -6065
  39. package/src/agent/tokenAuth.ts +0 -50
  40. package/src/agent/tokenCounter.test.ts +0 -243
  41. package/src/agent/tokenCounter.ts +0 -483
  42. package/src/agent/toolSettings.ts +0 -24
  43. package/src/agent/tools/calculatorTool.ts +0 -50
  44. package/src/agent/tools/contentExtractors/htmlToText.ts +0 -61
  45. package/src/agent/tools/contentExtractors/pdfToText.ts +0 -60
  46. package/src/agent/tools/datetimeTool.ts +0 -41
  47. package/src/agent/tools/fileManager/fileManagerTool.ts +0 -199
  48. package/src/agent/tools/fileManager/index.ts +0 -50
  49. package/src/agent/tools/fileManager/memoryFileManager.ts +0 -120
  50. package/src/agent/tools/fileManager/mimeTypes.ts +0 -60
  51. package/src/agent/tools/fileManager/prompt.ts +0 -38
  52. package/src/agent/tools/fileManager/types.ts +0 -189
  53. package/src/agent/tools/index.ts +0 -49
  54. package/src/agent/tools/openUrlTool.ts +0 -62
  55. package/src/agent/tools/renderTool.ts +0 -92
  56. package/src/agent/tools/utils.ts +0 -74
  57. package/src/agent/tools/webSearch.ts +0 -138
  58. package/src/agent/tools/webSearchTool.ts +0 -44
  59. package/src/chat/client/chatClient.ts +0 -967
  60. package/src/chat/client/connection.test.ts +0 -241
  61. package/src/chat/client/connection.ts +0 -286
  62. package/src/chat/client/constants.ts +0 -1
  63. package/src/chat/client/index.ts +0 -21
  64. package/src/chat/client/interfaces.ts +0 -34
  65. package/src/chat/client/sessionClient.ts +0 -574
  66. package/src/chat/client/sessionFiles.ts +0 -142
  67. package/src/chat/client/teamManager.ts +0 -29
  68. package/src/chat/constants.ts +0 -6
  69. package/src/chat/data/apiKeyManager.ts +0 -76
  70. package/src/chat/data/dataModels.ts +0 -107
  71. package/src/chat/data/database.ts +0 -997
  72. package/src/chat/data/dbMcpServerConfigs.ts +0 -59
  73. package/src/chat/data/dbSessionFiles.ts +0 -107
  74. package/src/chat/data/dbSessionMessages.ts +0 -102
  75. package/src/chat/protocol/connectionMessages.ts +0 -49
  76. package/src/chat/protocol/constants.ts +0 -55
  77. package/src/chat/protocol/errors.ts +0 -16
  78. package/src/chat/protocol/messages.ts +0 -899
  79. package/src/chat/server/README.md +0 -127
  80. package/src/chat/server/chatContextManager.ts +0 -660
  81. package/src/chat/server/connectionManager.test.ts +0 -246
  82. package/src/chat/server/connectionManager.ts +0 -506
  83. package/src/chat/server/conversation.ts +0 -319
  84. package/src/chat/server/errorUtils.ts +0 -28
  85. package/src/chat/server/imageGeneratorTools.ts +0 -179
  86. package/src/chat/server/openAIRouterLLM.ts +0 -168
  87. package/src/chat/server/openSession.ts +0 -1945
  88. package/src/chat/server/openSessionMessageSender.ts +0 -4
  89. package/src/chat/server/promptRefiner.ts +0 -106
  90. package/src/chat/server/server.ts +0 -178
  91. package/src/chat/server/sessionFileManager.ts +0 -151
  92. package/src/chat/server/sessionRegistry.test.ts +0 -137
  93. package/src/chat/server/sessionRegistry.ts +0 -1553
  94. package/src/chat/server/test-utils/mockFactories.ts +0 -422
  95. package/src/chat/server/titleGenerator.test.ts +0 -103
  96. package/src/chat/server/titleGenerator.ts +0 -143
  97. package/src/chat/server/tools.ts +0 -170
  98. package/src/chat/utils/agentSessionMap.ts +0 -76
  99. package/src/chat/utils/approvalManager.ts +0 -189
  100. package/src/chat/utils/asyncLock.ts +0 -43
  101. package/src/chat/utils/asyncQueue.ts +0 -62
  102. package/src/chat/utils/multiAsyncQueue.ts +0 -66
  103. package/src/chat/utils/responseAwaiter.ts +0 -181
  104. package/src/chat/utils/userResolver.ts +0 -48
  105. package/src/chat/utils/websocket.ts +0 -16
  106. package/src/index.ts +0 -0
  107. package/src/test/agent.test.ts +0 -584
  108. package/src/test/approvalManager.test.ts +0 -141
  109. package/src/test/chatContextManager.test.ts +0 -552
  110. package/src/test/clientServerConnection.test.ts +0 -205
  111. package/src/test/compressingContextManager.test.ts +0 -77
  112. package/src/test/context.test.ts +0 -150
  113. package/src/test/contextTestTools.ts +0 -95
  114. package/src/test/conversation.test.ts +0 -109
  115. package/src/test/db.test.ts +0 -363
  116. package/src/test/dbMcpServerConfigs.test.ts +0 -112
  117. package/src/test/dbSessionFiles.test.ts +0 -258
  118. package/src/test/dbSessionMessages.test.ts +0 -85
  119. package/src/test/dbTestTools.ts +0 -157
  120. package/src/test/imageLoad.test.ts +0 -15
  121. package/src/test/mcpServerManager.test.ts +0 -114
  122. package/src/test/multiAsyncQueue.test.ts +0 -183
  123. package/src/test/openaiStreaming.test.ts +0 -177
  124. package/src/test/prompt.test.ts +0 -27
  125. package/src/test/promptProvider.test.ts +0 -33
  126. package/src/test/responseAwaiter.test.ts +0 -103
  127. package/src/test/sudoMcpServerManager.test.ts +0 -63
  128. package/src/test/testTools.ts +0 -176
  129. package/src/test/tools.test.ts +0 -64
  130. package/src/tool/agentChat.ts +0 -203
  131. package/src/tool/agentMain.ts +0 -180
  132. package/src/tool/chatMain.ts +0 -621
  133. package/src/tool/commandPrompt.ts +0 -264
  134. package/src/tool/files.ts +0 -82
  135. package/src/tool/main.ts +0 -25
  136. package/src/tool/nodePlatform.ts +0 -73
  137. package/src/tool/options.ts +0 -144
  138. package/src/tool/prompt.ts +0 -101
  139. package/test_data/background_test_profile.json +0 -6
  140. package/test_data/background_test_script.json +0 -11
  141. package/test_data/dummyllm_script_crash.json +0 -32
  142. package/test_data/dummyllm_script_image_gen.json +0 -19
  143. package/test_data/dummyllm_script_image_gen_fe.json +0 -29
  144. package/test_data/dummyllm_script_invoke_image_gen_tool.json +0 -37
  145. package/test_data/dummyllm_script_render_tool.json +0 -29
  146. package/test_data/dummyllm_script_simplecalc.json +0 -28
  147. package/test_data/dummyllm_script_test_auto_approve.json +0 -81
  148. package/test_data/dummyllm_script_test_simplecalc_addition.json +0 -29
  149. package/test_data/frog.png +0 -0
  150. package/test_data/frog.png.b64 +0 -1
  151. package/test_data/git_message_profile.json +0 -4
  152. package/test_data/git_wip_system.txt +0 -5
  153. package/test_data/image_gen_test_profile.json +0 -5
  154. package/test_data/pr_message_profile.json +0 -4
  155. package/test_data/pr_review_profile.json +0 -4
  156. package/test_data/prompt_simplecalc.txt +0 -1
  157. package/test_data/simplecalc_profile.json +0 -4
  158. package/test_data/sudomcp_import_profile.json +0 -4
  159. package/test_data/test_script_profile.json +0 -8
  160. package/tsconfig.json +0 -13
  161. package/vitest.config.ts +0 -39
@@ -1,899 +0,0 @@
1
- import { Tool, Resource } from "@modelcontextprotocol/sdk/types.js";
2
-
3
- import {
4
- AgentPreferences,
5
- McpServerBrief,
6
- McpServerConfiguration,
7
- SavedAgentProfile,
8
- } from "@xalia/xmcp/sdk";
9
-
10
- import {
11
- TeamRole,
12
- TeamInfo,
13
- TeamParticipant,
14
- UserMessageData,
15
- SessionDescriptor,
16
- CustomMcpServerDescriptor,
17
- } from "../data/dataModels";
18
- import { SessionFileDescriptor } from "../../agent/tools/fileManager";
19
- import {
20
- AssistantMessageParam,
21
- MessageParam,
22
- MessageToolCall,
23
- ToolMessageParam,
24
- } from "../../agent/llm";
25
- import { ResourceContent } from "../../agent/mcpServerManager";
26
-
27
- export interface ClientToServerBase {
28
- type: string;
29
- client_message_id: string; // TODO: hide by putting on ClientToServer?
30
- }
31
-
32
- // Session-level messages all have a `session_id`
33
- export interface ClientSessionMessageBase extends ClientToServerBase {
34
- session_id: string;
35
- }
36
-
37
- //
38
- // Session-management messages
39
- //
40
-
41
- export type ClientControlAgentProfileCreate = {
42
- type: "control_agent_profile_create";
43
- title: string;
44
- user_uuid?: string | undefined;
45
- team_uuid?: string | undefined;
46
- template_name?: string | undefined;
47
- model?: string | undefined;
48
- };
49
-
50
- export type ClientControlAgentProfileDelete = {
51
- type: "control_agent_profile_delete";
52
- agent_profile_uuid: string;
53
- };
54
-
55
- /**
56
- * Create a new team with initial members.
57
- * Initial_members doesn't need to include the owner.
58
- */
59
- export type ClientControlTeamCreate = {
60
- type: "control_team_create";
61
- team_name: string;
62
- initial_members: Array<string>;
63
- } & ClientToServerBase;
64
-
65
- /**
66
- * Request list of available sessions for the user
67
- */
68
- export type ClientControlGetSessionList = {
69
- type: "control_get_session_list";
70
- } & ClientToServerBase;
71
-
72
- /**
73
- * Create a new session
74
- */
75
- export type ClientControlSessionCreate = {
76
- type: "control_session_create";
77
- title: string;
78
- agent_profile_id?: string;
79
- team_id?: string;
80
- } & ClientToServerBase;
81
-
82
- /**
83
- * Join an existing session
84
- * Note: Uses target_session_id to avoid conflict with session_id: never
85
- * from base
86
- */
87
- export type ClientControlSessionJoin = {
88
- type: "control_session_join";
89
- target_session_id: string;
90
- } & ClientToServerBase;
91
-
92
- /**
93
- * Delete a session
94
- */
95
- export type ClientControlSessionDelete = {
96
- type: "control_session_delete";
97
- target_session_id: string;
98
- } & ClientToServerBase;
99
-
100
- /**
101
- * Add a user to a team
102
- */
103
- export type ClientControlAddTeamUser = {
104
- type: "control_add_team_user";
105
- user_uuid_or_email: string;
106
- target_team_id: string;
107
- } & ClientToServerBase;
108
-
109
- /**
110
- * Remove a user from a team
111
- */
112
- export type ClientControlRemoveTeamUser = {
113
- type: "control_remove_team_user";
114
- user_uuid_or_email: string;
115
- target_team_id: string;
116
- } & ClientToServerBase;
117
-
118
- export type ClientControlAddCustomMcpServer = {
119
- type: "control_add_custom_mcp_server";
120
- server_name: string;
121
- description: string;
122
- url: string;
123
- };
124
-
125
- export type ClientControlRemoveCustomMcpServer = {
126
- type: "control_remove_custom_mcp_server";
127
- server_name: string;
128
- };
129
-
130
- export type ClientControlRefinePrompt = {
131
- type: "control_refine_prompt";
132
- prompt: string;
133
- } & ClientToServerBase;
134
-
135
- export type ClientControlMessage =
136
- | ClientControlAgentProfileCreate
137
- | ClientControlAgentProfileDelete
138
- | ClientControlGetSessionList
139
- | ClientControlSessionCreate
140
- | ClientControlSessionJoin
141
- | ClientControlTeamCreate
142
- | ClientControlSessionDelete
143
- | ClientControlAddTeamUser
144
- | ClientControlRemoveTeamUser
145
- | ClientControlAddCustomMcpServer
146
- | ClientControlRemoveCustomMcpServer
147
- | ClientControlRefinePrompt;
148
-
149
- //
150
- // Messages for specific sessions
151
- //
152
-
153
- export type ClientUserMessage = {
154
- type: "msg";
155
- race_mode?: string;
156
- } & UserMessageData;
157
-
158
- /// Signal any currently running agent to stop
159
- export type ClientStop = {
160
- type: "stop";
161
- };
162
-
163
- export type ClientSetWorkspace = {
164
- type: "set_workspace";
165
- } & UserMessageData;
166
-
167
- export type ClientAddMcpServer = {
168
- type: "add_mcp_server";
169
- server_name: string;
170
- enable_all: boolean;
171
- };
172
-
173
- export type ClientRemoveMcpServer = {
174
- type: "remove_mcp_server";
175
- server_name: string;
176
- };
177
-
178
- export type ClientEnableMcpServerTool = {
179
- type: "enable_mcp_server_tool";
180
- server_name: string;
181
- tool: string;
182
- };
183
-
184
- export type ClientDisableMcpServerTool = {
185
- type: "disable_mcp_server_tool";
186
- server_name: string;
187
- tool: string;
188
- };
189
-
190
- export type ClientEnableAllMcpServerTools = {
191
- type: "enable_all_mcp_server_tools";
192
- server_name: string;
193
- };
194
-
195
- export type ClientDisableAllMcpServerTools = {
196
- type: "disable_all_mcp_server_tools";
197
- server_name: string;
198
- };
199
-
200
- export type ClientToolCallApprovalResult = {
201
- type: "tool_call_approval_result";
202
- id: string;
203
- result: boolean;
204
- auto_approve: boolean;
205
- };
206
-
207
- export type ClientSessionFileGetContent = {
208
- type: "session_file_get_content";
209
- name: string;
210
- };
211
-
212
- export type ClientSessionFileDelete = {
213
- type: "session_file_delete";
214
- name: string;
215
- };
216
-
217
- export type ClientSessionFilePutContent = {
218
- type: "session_file_put_content";
219
- name?: string;
220
- summary?: string;
221
- data_url: string;
222
- };
223
-
224
- export type ClientSetAutoApproval = {
225
- type: "set_auto_approval";
226
- server_name: string;
227
- tool: string;
228
- auto_approve: boolean;
229
- };
230
-
231
- export type ClientSetSystemPrompt = {
232
- type: "set_system_prompt";
233
- system_prompt: string;
234
- };
235
-
236
- export type ClientSetModel = {
237
- type: "set_model";
238
- model: string;
239
- };
240
-
241
- export type ClientSetAgentPaused = {
242
- type: "set_agent_paused";
243
- paused: boolean;
244
- };
245
-
246
- export type ClientGetMcpResource = {
247
- type: "get_mcp_resource";
248
- client_message_id: string;
249
- server_name: string; // server name
250
- uri: string; // uri on server
251
- };
252
-
253
- export type ClientSetMcpServerConfig = {
254
- type: "set_mcp_server_config";
255
- server_name: string;
256
- config?: McpServerConfiguration;
257
- };
258
-
259
- export type ClientShareSession = {
260
- type: "share_session";
261
- };
262
-
263
- export type ClientRaceModeResult = {
264
- type: "race_mode_result";
265
- message_id: string;
266
- result: string;
267
- } & UserMessageData;
268
-
269
- export type ClientSessionMessageData =
270
- | ClientUserMessage
271
- | ClientStop
272
- | ClientSetWorkspace
273
- | ClientAddMcpServer
274
- | ClientRemoveMcpServer
275
- | ClientEnableMcpServerTool
276
- | ClientDisableMcpServerTool
277
- | ClientEnableAllMcpServerTools
278
- | ClientDisableAllMcpServerTools
279
- | ClientToolCallApprovalResult
280
- | ClientSessionFileGetContent
281
- | ClientSessionFileDelete
282
- | ClientSessionFilePutContent
283
- | ClientSetAutoApproval
284
- | ClientSetSystemPrompt
285
- | ClientSetModel
286
- | ClientSetAgentPaused
287
- | ClientGetMcpResource
288
- | ClientSetMcpServerConfig
289
- | ClientShareSession
290
- | ClientRaceModeResult;
291
-
292
- export type ClientSessionMessage = ClientSessionMessageBase &
293
- ClientSessionMessageData;
294
-
295
- //
296
- // Client Message Union Types
297
- //
298
-
299
- export type ClientToServer = ClientControlMessage | ClientSessionMessage;
300
-
301
- export function isClientControlMessage(
302
- message: ClientToServer
303
- ): message is ClientControlMessage {
304
- const msg = message as ClientControlMessage;
305
- switch (msg.type) {
306
- case "control_agent_profile_create":
307
- case "control_agent_profile_delete":
308
- case "control_get_session_list":
309
- case "control_session_create":
310
- case "control_session_delete":
311
- case "control_session_join":
312
- case "control_team_create":
313
- case "control_add_team_user":
314
- case "control_remove_team_user":
315
- case "control_add_custom_mcp_server":
316
- case "control_remove_custom_mcp_server":
317
- case "control_refine_prompt":
318
- return true;
319
- default: {
320
- const _: never = msg;
321
- return false;
322
- }
323
- }
324
- }
325
-
326
- // TODO: factor this as above
327
-
328
- /**
329
- * Base interface for messages from server to client scoped to a session
330
- */
331
- interface ServerSessionMessage {
332
- session_id: string;
333
- }
334
-
335
- /**
336
- * Base interface for connection-level server responses needing correlation
337
- */
338
- interface ControlResponseMessage {
339
- client_message_id: string; // Echo back client's message ID for correlation
340
- }
341
-
342
- ///
343
- /// Server -> Client Messages
344
- ///
345
-
346
- /**
347
- * Error in response to an invalid request from the client
348
- * with a sesion scoped.
349
- */
350
- export type ServerSessionError = {
351
- type: "session_error";
352
- message: string;
353
- client_message_id?: string;
354
- } & ServerSessionMessage;
355
-
356
- /**
357
- * Session info can be requested normally, or when the client is
358
- * joining a session or creating a new session.
359
- */
360
- export type ServerSessionInfo = {
361
- type: "session_info";
362
- owner_uuid: string;
363
- title: string;
364
- saved_agent_profile: SavedAgentProfile;
365
- workspace: UserMessageData | undefined;
366
- updated_at: string;
367
- participants: TeamParticipant[];
368
- mcp_server_briefs: McpServerBrief[];
369
- agent_preferences: AgentPreferences;
370
- client_message_id: string;
371
- team_uuid: string | undefined;
372
- agent_paused: boolean;
373
- } & ServerSessionMessage;
374
-
375
- /**
376
- * (from server) Chat history
377
- */
378
- export type ServerHistory = {
379
- type: "history";
380
- /// Conversation history in the form we expect. The `name` attribute of
381
- /// `ChatCompletionUserMessageParam` (role: "user") holds the original
382
- /// message sender.
383
- messages: MessageParam[];
384
- } & ServerSessionMessage;
385
-
386
- /**
387
- * Message from the server, informing us of a message in the chat history
388
- */
389
- export type ServerUserMessage = {
390
- type: "user_msg";
391
- user_uuid: string;
392
- user_nickname: string;
393
- message_idx: number;
394
- race_mode?: string;
395
- } & UserMessageData &
396
- ServerSessionMessage;
397
-
398
- export type ServerAgentMessage = {
399
- type: "agent_msg";
400
- message: AssistantMessageParam;
401
- message_idx: number;
402
- } & ServerSessionMessage;
403
-
404
- export type ServerAgentMessageChunk = {
405
- type: "agent_msg_chunk";
406
- message: string;
407
- message_idx: number;
408
- end: boolean;
409
- alt?: string;
410
- } & ServerSessionMessage;
411
-
412
- export type ServerReasoningChunk = {
413
- type: "agent_reasoning_chunk";
414
- reasoning: string;
415
- alt?: string;
416
- } & ServerSessionMessage;
417
-
418
- //
419
- // Notifications
420
- ///
421
-
422
- export type ServerUserJoined = {
423
- type: "user_joined";
424
- user_uuid: string;
425
- user_name: string;
426
- } & ServerSessionMessage;
427
-
428
- export type ServerUserLeft = {
429
- type: "user_left";
430
- user_uuid: string;
431
- } & ServerSessionMessage;
432
-
433
- // Note: ChatCompletionMessageToolCall contains the tool call id so we don't
434
- // need an extra id field.
435
- export type ServerToolCall = {
436
- type: "tool_call";
437
- tool_call: MessageToolCall;
438
- alt?: string;
439
- } & ServerSessionMessage;
440
-
441
- export type ServerToolCallApprovalResult = {
442
- type: "tool_call_approval_result";
443
- id: string;
444
- result: boolean;
445
- alt?: string;
446
- } & ServerSessionMessage;
447
-
448
- export type ServerToolCallResult = {
449
- type: "tool_call_result";
450
- message_idx: number;
451
- result: ToolMessageParam;
452
- alt?: string;
453
- } & ServerSessionMessage;
454
-
455
- export type ServerToolAutoApprovalSet = {
456
- type: "tool_auto_approval_set";
457
- server_name: string;
458
- tool: string;
459
- auto_approve: boolean;
460
- } & ServerSessionMessage;
461
-
462
- // TODO: include mcp server name
463
-
464
- export type ServerAuthenticationStarted = {
465
- type: "authentication_started";
466
- url: string;
467
- } & ServerSessionMessage;
468
-
469
- // TODO: include richer results (success/failure/timeout)
470
-
471
- export type ServerAuthenticationFinished = {
472
- type: "authentication_finished";
473
- url: string;
474
- result: boolean;
475
- } & ServerSessionMessage;
476
-
477
- export type ServerUserTyping = {
478
- type: "user_typing";
479
- user_uuid: string;
480
- } & ServerSessionMessage;
481
-
482
- export type ServerToClientNotifications =
483
- | ServerUserJoined
484
- | ServerUserLeft
485
- | ServerToolAutoApprovalSet
486
- | ServerToolCall
487
- | ServerToolCallApprovalResult
488
- | ServerToolCallResult
489
- | ServerAuthenticationStarted
490
- | ServerAuthenticationFinished
491
- | ServerUserTyping;
492
-
493
- //
494
- // session-file related messages
495
- //
496
-
497
- export type ServerSessionFileChanged = {
498
- type: "session_file_changed";
499
- descriptor: SessionFileDescriptor;
500
- new_file: boolean;
501
- } & ServerSessionMessage;
502
-
503
- export type ServerSessionFileDeleted = {
504
- type: "session_file_deleted";
505
- name: string;
506
- } & ServerSessionMessage;
507
-
508
- export type ServerSessionFileContent = {
509
- type: "session_file_content";
510
- name: string;
511
- data_url: string;
512
- client_message_id: string;
513
- } & ServerSessionMessage;
514
-
515
- export type ServerSessionFileMessage =
516
- | ServerSessionFileChanged
517
- | ServerSessionFileDeleted
518
- | ServerSessionFileContent;
519
-
520
- //
521
- // state updates
522
- //
523
- export type ServerMcpServerAdded = {
524
- type: "mcp_server_added";
525
- server_name: string;
526
- tools: Tool[];
527
- resources: Resource[];
528
- enabled_tools: string[];
529
- } & ServerSessionMessage;
530
-
531
- export type ServerMcpServerRemoved = {
532
- type: "mcp_server_removed";
533
- server_name: string;
534
- } & ServerSessionMessage;
535
-
536
- export type ServerMcpServerToolEnabled = {
537
- type: "mcp_server_tool_enabled";
538
- server_name: string;
539
- tool: string;
540
- } & ServerSessionMessage;
541
-
542
- export type ServerMcpServerToolDisabled = {
543
- type: "mcp_server_tool_disabled";
544
- server_name: string;
545
- tool: string;
546
- } & ServerSessionMessage;
547
-
548
- export type ServerSystemPromptUpdated = {
549
- type: "system_prompt_updated";
550
- system_prompt: string;
551
- } & ServerSessionMessage;
552
-
553
- export type ServerModelUpdated = {
554
- type: "model_updated";
555
- model: string;
556
- } & ServerSessionMessage;
557
-
558
- export type ServerAgentPaused = {
559
- type: "agent_paused";
560
- paused: boolean;
561
- } & ServerSessionMessage;
562
-
563
- export type ServerUserAdded = {
564
- type: "user_added";
565
- user_uuid: string;
566
- nickname: string;
567
- email: string;
568
- role: TeamRole;
569
- } & ServerSessionMessage;
570
-
571
- export type ServerUserRemoved = {
572
- type: "user_removed";
573
- user_uuid: string;
574
- } & ServerSessionMessage;
575
-
576
- export type ServerSessionShared = {
577
- type: "session_shared";
578
- access_token: string;
579
- client_message_id: string;
580
- } & ServerSessionMessage;
581
-
582
- export type ServerMcpResource = {
583
- type: "mcp_resource";
584
- client_message_id: string;
585
- server_name: string;
586
- contents: ResourceContent[];
587
- } & ServerSessionMessage;
588
-
589
- export type ServerContextUsage = {
590
- type: "context_usage";
591
- used_tokens: number;
592
- max_tokens: number;
593
- } & ServerSessionMessage;
594
-
595
- export type ServerToClientStateUpdate =
596
- | ServerMcpServerAdded
597
- | ServerMcpServerRemoved
598
- | ServerMcpServerToolEnabled
599
- | ServerMcpServerToolDisabled
600
- | ServerSystemPromptUpdated
601
- | ServerModelUpdated
602
- | ServerAgentPaused
603
- | ServerUserAdded
604
- | ServerUserRemoved
605
- | ServerSessionShared
606
- | ServerMcpResource
607
- | ServerContextUsage;
608
-
609
- //
610
- // actions
611
- //
612
-
613
- export type ServerAuthenticate = {
614
- type: "authenticate";
615
- url: string;
616
- display_name: string;
617
- } & ServerSessionMessage;
618
-
619
- export type ServerApproveToolCall = {
620
- type: "approve_tool_call";
621
- id: string;
622
- tool_call: MessageToolCall;
623
- alt?: string;
624
- } & ServerSessionMessage;
625
-
626
- export type ServerRenderHTML = {
627
- type: "render_html";
628
- html: string;
629
- } & ServerSessionMessage;
630
-
631
- export type ServerEditorUpdate = {
632
- type: "editor_update";
633
- operation: "replace" | "append" | "prepend" | "replace_selection";
634
- content: string;
635
- format: "markdown";
636
- selectionId?: string;
637
- } & ServerSessionMessage;
638
-
639
- export type ServerRaceModeGetResult = {
640
- type: "race_mode_get_result";
641
- message_id: string;
642
- alts: string[];
643
- } & ServerSessionMessage;
644
-
645
- export type ServerToClientActions =
646
- | ServerAuthenticate
647
- | ServerApproveToolCall
648
- | ServerRenderHTML
649
- | ServerEditorUpdate
650
- | ServerRaceModeGetResult;
651
-
652
- //
653
- // Control-level messages (session management)
654
- //
655
-
656
- export type ServerControlAgentProfileCreated = {
657
- type: "control_agent_profile_created";
658
- profile: SavedAgentProfile;
659
- };
660
-
661
- export type ServerControlAgentProfileDeleted = {
662
- type: "control_agent_profile_deleted";
663
- profile_uuid: string;
664
- };
665
-
666
- /**
667
- * A new team has been created.
668
- * The members array contains the members of the team.
669
- * The members array contains undefined for failed lookups.
670
- */
671
- export type ServerControlTeamCreated = {
672
- type: "control_team_created";
673
- team_uuid: string;
674
- team_owner_uuid: string;
675
- team_name: string;
676
- members: Array<TeamParticipant>;
677
- failed_lookups: Array<string>;
678
- };
679
-
680
- /**
681
- * Team members have been updated (added or removed).
682
- */
683
- export type ServerControlTeamMembersUpdated = {
684
- type: "control_team_members_updated";
685
- team_uuid: string;
686
- members: Array<TeamParticipant>;
687
- };
688
-
689
- /**
690
- * List of available sessions for user
691
- */
692
- export type ServerControlSessionList = {
693
- type: "control_session_list";
694
- user_sessions: Array<SessionDescriptor>;
695
- user_agents: Array<SavedAgentProfile>;
696
- team_sessions: Array<TeamInfo>;
697
- custom_mcp_servers: Record<string, CustomMcpServerDescriptor>;
698
- } & ControlResponseMessage;
699
-
700
- /**
701
- * Confirmation of session leave, for example,
702
- * a user is kicked from a session.
703
- */
704
- export type ServerControlSessionLeft = {
705
- type: "control_session_left";
706
- session_id: string;
707
- } & ControlResponseMessage;
708
-
709
- /**
710
- * Confirmation of session delete.
711
- */
712
- export type ServerControlSessionDeleted = {
713
- type: "control_session_deleted";
714
- session_id: string;
715
- agent_profile_uuid: string;
716
- team_uuid?: string;
717
- } & ControlResponseMessage;
718
-
719
- export type ServerControlCustomMcpServerAdded = {
720
- type: "control_custom_mcp_server_added";
721
- server_name: string;
722
- url: string;
723
- };
724
-
725
- export type ServerControlCustomMcpServerRemoved = {
726
- type: "control_custom_mcp_server_removed";
727
- server_name: string;
728
- };
729
-
730
- export type ServerControlRefinePromptResult = {
731
- type: "control_refine_prompt_result";
732
- refined_prompt: string;
733
- client_message_id: string;
734
- };
735
-
736
- /**
737
- * Connection-level errors
738
- * Error in response to an invalid request from the client
739
- * with a connection scoped.
740
- */
741
- export type ServerControlError = {
742
- type: "control_error";
743
- message: string;
744
- client_message_id?: string;
745
- };
746
-
747
- export type ServerControlMessage =
748
- | ServerControlSessionList
749
- | ServerControlSessionLeft
750
- | ServerControlSessionDeleted
751
- | ServerControlAgentProfileCreated
752
- | ServerControlAgentProfileDeleted
753
- | ServerControlTeamCreated
754
- | ServerControlTeamMembersUpdated
755
- | ServerControlCustomMcpServerAdded
756
- | ServerControlCustomMcpServerRemoved
757
- | ServerControlRefinePromptResult
758
- | ServerControlError;
759
-
760
- export type ServerSessionScopedMessage =
761
- | ServerSessionError
762
- | ServerSessionInfo
763
- | ServerUserMessage
764
- | ServerAgentMessage
765
- | ServerAgentMessageChunk
766
- | ServerReasoningChunk
767
- | ServerToClientNotifications
768
- | ServerSessionFileMessage
769
- | ServerToClientStateUpdate
770
- | ServerToClientActions;
771
-
772
- export type ServerToClient = ServerControlMessage | ServerSessionScopedMessage;
773
-
774
- //
775
- // Type guard helper functions
776
- //
777
-
778
- export function isServerControlMessage(
779
- message: ServerToClient
780
- ): message is ServerControlMessage {
781
- const msg = message as ServerControlMessage;
782
- switch (msg.type) {
783
- case "control_agent_profile_created":
784
- case "control_agent_profile_deleted":
785
- case "control_session_list":
786
- case "control_session_left":
787
- case "control_session_deleted":
788
- case "control_team_created":
789
- case "control_team_members_updated":
790
- case "control_custom_mcp_server_added":
791
- case "control_custom_mcp_server_removed":
792
- case "control_refine_prompt_result":
793
- case "control_error":
794
- return true;
795
- default: {
796
- const _: never = msg;
797
- return false;
798
- }
799
- }
800
- }
801
-
802
- export function isServerSessionFileMessage(
803
- message: ServerToClient
804
- ): message is ServerSessionFileMessage {
805
- const msg = message as ServerSessionFileMessage;
806
- switch (msg.type) {
807
- case "session_file_changed":
808
- case "session_file_deleted":
809
- case "session_file_content":
810
- return true;
811
- default: {
812
- const _: never = msg;
813
- return false;
814
- }
815
- }
816
- }
817
-
818
- /**
819
- * Type guard to check if a ServerToClient message is a session-scoped message
820
- */
821
- export function isServerSessionScopedMessage(
822
- message: ServerToClient
823
- ): message is ServerSessionScopedMessage {
824
- const msg = message as ServerSessionScopedMessage;
825
- switch (msg.type) {
826
- case "session_error":
827
- case "session_info":
828
- case "user_msg":
829
- case "agent_msg":
830
- case "agent_msg_chunk":
831
- case "agent_reasoning_chunk":
832
- case "user_joined":
833
- case "user_left":
834
- case "tool_auto_approval_set":
835
- case "tool_call":
836
- case "tool_call_approval_result":
837
- case "tool_call_result":
838
- case "authentication_started":
839
- case "authentication_finished":
840
- case "user_typing":
841
- case "session_file_changed":
842
- case "session_file_deleted":
843
- case "session_file_content":
844
- case "mcp_server_added":
845
- case "mcp_server_removed":
846
- case "mcp_server_tool_enabled":
847
- case "mcp_server_tool_disabled":
848
- case "system_prompt_updated":
849
- case "model_updated":
850
- case "agent_paused":
851
- case "user_added":
852
- case "user_removed":
853
- case "authenticate":
854
- case "approve_tool_call":
855
- case "render_html":
856
- case "editor_update":
857
- case "race_mode_get_result":
858
- case "session_shared":
859
- case "mcp_resource":
860
- case "context_usage":
861
- return true;
862
-
863
- default: {
864
- const _: never = msg;
865
- return false;
866
- }
867
- }
868
- }
869
-
870
- export function decodeAssistantMessageParam(
871
- msg: AssistantMessageParam
872
- ): string {
873
- let text = "";
874
-
875
- if (msg.audio) {
876
- throw new Error("decodeAssistantMessageParam; audio unimplemented");
877
- }
878
-
879
- if (msg.content) {
880
- if (typeof msg.content === "string") {
881
- text = msg.content;
882
- } else if (msg.content instanceof Array) {
883
- for (const c of msg.content) {
884
- switch (c.type) {
885
- case "text":
886
- text += c.text;
887
- break;
888
- case "refusal":
889
- text += c.refusal;
890
- break;
891
- default:
892
- throw Error("unexpected AssistantMessageParam.content entry");
893
- }
894
- }
895
- }
896
- }
897
-
898
- return text;
899
- }