@agentuity/core 2.0.10 → 2.0.12

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 (110) hide show
  1. package/dist/services/api.d.ts +1 -1
  2. package/dist/services/api.d.ts.map +1 -1
  3. package/dist/services/api.js +4 -6
  4. package/dist/services/api.js.map +1 -1
  5. package/dist/services/coder/agents.d.ts +172 -0
  6. package/dist/services/coder/agents.d.ts.map +1 -0
  7. package/dist/services/coder/agents.js +77 -0
  8. package/dist/services/coder/agents.js.map +1 -0
  9. package/dist/services/coder/api-reference.d.ts.map +1 -1
  10. package/dist/services/coder/api-reference.js +459 -39
  11. package/dist/services/coder/api-reference.js.map +1 -1
  12. package/dist/services/coder/client.d.ts +47 -1
  13. package/dist/services/coder/client.d.ts.map +1 -1
  14. package/dist/services/coder/client.js +94 -1
  15. package/dist/services/coder/client.js.map +1 -1
  16. package/dist/services/coder/close-codes.d.ts +76 -0
  17. package/dist/services/coder/close-codes.d.ts.map +1 -0
  18. package/dist/services/coder/close-codes.js +77 -0
  19. package/dist/services/coder/close-codes.js.map +1 -0
  20. package/dist/services/coder/index.d.ts +10 -3
  21. package/dist/services/coder/index.d.ts.map +1 -1
  22. package/dist/services/coder/index.js +6 -1
  23. package/dist/services/coder/index.js.map +1 -1
  24. package/dist/services/coder/protocol.d.ts +2225 -0
  25. package/dist/services/coder/protocol.d.ts.map +1 -0
  26. package/dist/services/coder/protocol.js +1122 -0
  27. package/dist/services/coder/protocol.js.map +1 -0
  28. package/dist/services/coder/sessions.d.ts +31 -0
  29. package/dist/services/coder/sessions.d.ts.map +1 -1
  30. package/dist/services/coder/sessions.js +40 -7
  31. package/dist/services/coder/sessions.js.map +1 -1
  32. package/dist/services/coder/sse.d.ts +255 -0
  33. package/dist/services/coder/sse.d.ts.map +1 -0
  34. package/dist/services/coder/sse.js +788 -0
  35. package/dist/services/coder/sse.js.map +1 -0
  36. package/dist/services/coder/types.d.ts +1578 -0
  37. package/dist/services/coder/types.d.ts.map +1 -1
  38. package/dist/services/coder/types.js +377 -1
  39. package/dist/services/coder/types.js.map +1 -1
  40. package/dist/services/coder/websocket.d.ts +358 -0
  41. package/dist/services/coder/websocket.d.ts.map +1 -0
  42. package/dist/services/coder/websocket.js +863 -0
  43. package/dist/services/coder/websocket.js.map +1 -0
  44. package/dist/services/oauth/types.d.ts +10 -0
  45. package/dist/services/oauth/types.d.ts.map +1 -1
  46. package/dist/services/oauth/types.js +3 -0
  47. package/dist/services/oauth/types.js.map +1 -1
  48. package/dist/services/project/deploy.d.ts +1 -1
  49. package/dist/services/sandbox/api-reference.js +7 -7
  50. package/dist/services/sandbox/api-reference.js.map +1 -1
  51. package/dist/services/sandbox/client.d.ts +3 -2
  52. package/dist/services/sandbox/client.d.ts.map +1 -1
  53. package/dist/services/sandbox/client.js.map +1 -1
  54. package/dist/services/sandbox/create.d.ts +5 -0
  55. package/dist/services/sandbox/create.d.ts.map +1 -1
  56. package/dist/services/sandbox/create.js +8 -0
  57. package/dist/services/sandbox/create.js.map +1 -1
  58. package/dist/services/sandbox/get.d.ts +8 -4
  59. package/dist/services/sandbox/get.d.ts.map +1 -1
  60. package/dist/services/sandbox/get.js +28 -3
  61. package/dist/services/sandbox/get.js.map +1 -1
  62. package/dist/services/sandbox/getStatus.d.ts +2 -0
  63. package/dist/services/sandbox/getStatus.d.ts.map +1 -1
  64. package/dist/services/sandbox/getStatus.js +17 -1
  65. package/dist/services/sandbox/getStatus.js.map +1 -1
  66. package/dist/services/sandbox/index.d.ts +1 -1
  67. package/dist/services/sandbox/index.d.ts.map +1 -1
  68. package/dist/services/sandbox/list.d.ts +3 -0
  69. package/dist/services/sandbox/list.d.ts.map +1 -1
  70. package/dist/services/sandbox/list.js +5 -0
  71. package/dist/services/sandbox/list.js.map +1 -1
  72. package/dist/services/sandbox/pause.d.ts +17 -1
  73. package/dist/services/sandbox/pause.d.ts.map +1 -1
  74. package/dist/services/sandbox/pause.js +21 -3
  75. package/dist/services/sandbox/pause.js.map +1 -1
  76. package/dist/services/sandbox/run.d.ts +3 -2
  77. package/dist/services/sandbox/run.d.ts.map +1 -1
  78. package/dist/services/sandbox/run.js +145 -85
  79. package/dist/services/sandbox/run.js.map +1 -1
  80. package/dist/services/sandbox/types.d.ts +10 -4
  81. package/dist/services/sandbox/types.d.ts.map +1 -1
  82. package/dist/services/sandbox/types.js +10 -0
  83. package/dist/services/sandbox/types.js.map +1 -1
  84. package/dist/services/stream/namespaces.d.ts +2 -2
  85. package/dist/services/stream/namespaces.js +2 -2
  86. package/dist/services/stream/namespaces.js.map +1 -1
  87. package/package.json +2 -2
  88. package/src/services/api.ts +6 -7
  89. package/src/services/coder/agents.ts +148 -0
  90. package/src/services/coder/api-reference.ts +479 -43
  91. package/src/services/coder/client.ts +143 -0
  92. package/src/services/coder/close-codes.ts +83 -0
  93. package/src/services/coder/index.ts +32 -1
  94. package/src/services/coder/protocol.ts +1364 -0
  95. package/src/services/coder/sessions.ts +66 -10
  96. package/src/services/coder/sse.ts +955 -0
  97. package/src/services/coder/types.ts +462 -1
  98. package/src/services/coder/websocket.ts +1042 -0
  99. package/src/services/oauth/types.ts +3 -0
  100. package/src/services/sandbox/api-reference.ts +7 -7
  101. package/src/services/sandbox/client.ts +4 -4
  102. package/src/services/sandbox/create.ts +10 -0
  103. package/src/services/sandbox/get.ts +32 -3
  104. package/src/services/sandbox/getStatus.ts +20 -1
  105. package/src/services/sandbox/index.ts +1 -1
  106. package/src/services/sandbox/list.ts +5 -0
  107. package/src/services/sandbox/pause.ts +38 -4
  108. package/src/services/sandbox/run.ts +202 -108
  109. package/src/services/sandbox/types.ts +15 -2
  110. package/src/services/stream/namespaces.ts +2 -2
@@ -0,0 +1,358 @@
1
+ /**
2
+ * WebSocket client for the Coder Hub real-time communication.
3
+ *
4
+ * Provides bidirectional communication between clients and the Coder Hub server,
5
+ * supporting multiple connection roles (lead, observer, controller) with
6
+ * automatic reconnection, heartbeat, and message queuing.
7
+ *
8
+ * @module coder/websocket
9
+ *
10
+ * @example Class-based API with callbacks
11
+ * ```typescript
12
+ * import { CoderHubWebSocketClient } from '@agentuity/core/coder';
13
+ *
14
+ * const client = new CoderHubWebSocketClient({
15
+ * apiKey: 'your-api-key',
16
+ * sessionId: 'session-123',
17
+ * role: 'observer',
18
+ * onInit: (init) => {
19
+ * console.log('Connected to session:', init.sessionId);
20
+ * console.log('Available agents:', init.agents);
21
+ * },
22
+ * onMessage: (msg) => {
23
+ * console.log('Received:', msg);
24
+ * },
25
+ * onStateChange: (state) => {
26
+ * console.log('Connection state:', state);
27
+ * },
28
+ * });
29
+ *
30
+ * client.connect();
31
+ *
32
+ * // Send a message
33
+ * client.send({
34
+ * type: 'ping',
35
+ * timestamp: Date.now(),
36
+ * });
37
+ *
38
+ * // Close when done
39
+ * client.close();
40
+ * ```
41
+ *
42
+ * @example Async iterator API
43
+ * ```typescript
44
+ * import { subscribeToCoderHub } from '@agentuity/core/coder';
45
+ *
46
+ * for await (const message of subscribeToCoderHub({
47
+ * sessionId: 'session-123',
48
+ * role: 'observer',
49
+ * })) {
50
+ * if (message.type === 'broadcast') {
51
+ * console.log('Event:', message.event, message.data);
52
+ * }
53
+ * }
54
+ * ```
55
+ */
56
+ import { z } from 'zod/v4';
57
+ import type { Logger } from '../../logger.ts';
58
+ import type { ClientMessage, CoderHubInitMessage, CoderHubResponse, ServerMessage } from './protocol.ts';
59
+ /**
60
+ * Connection state for the WebSocket client.
61
+ *
62
+ * - `'connecting'` - Initial WebSocket connection in progress
63
+ * - `'authenticating'` - WebSocket connected, sending auth message
64
+ * - `'connected'` - Authenticated and ready to send/receive messages
65
+ * - `'reconnecting'` - Reconnecting after disconnect
66
+ * - `'closed'` - Connection closed (manually or after max retries)
67
+ */
68
+ export type CoderHubWebSocketState = 'connecting' | 'authenticating' | 'connected' | 'reconnecting' | 'closed';
69
+ /**
70
+ * Options for the WebSocket client.
71
+ */
72
+ export declare const CoderHubWebSocketOptionsSchema: z.ZodObject<{
73
+ apiKey: z.ZodOptional<z.ZodString>;
74
+ orgId: z.ZodOptional<z.ZodString>;
75
+ url: z.ZodOptional<z.ZodString>;
76
+ region: z.ZodOptional<z.ZodString>;
77
+ sessionId: z.ZodOptional<z.ZodString>;
78
+ role: z.ZodOptional<z.ZodEnum<{
79
+ lead: "lead";
80
+ observer: "observer";
81
+ controller: "controller";
82
+ }>>;
83
+ agent: z.ZodOptional<z.ZodString>;
84
+ parentSessionId: z.ZodOptional<z.ZodString>;
85
+ task: z.ZodOptional<z.ZodString>;
86
+ label: z.ZodOptional<z.ZodString>;
87
+ subscribe: z.ZodOptional<z.ZodArray<z.ZodString>>;
88
+ origin: z.ZodOptional<z.ZodEnum<{
89
+ tui: "tui";
90
+ web: "web";
91
+ desktop: "desktop";
92
+ sdk: "sdk";
93
+ }>>;
94
+ driverMode: z.ZodOptional<z.ZodEnum<{
95
+ rpc: "rpc";
96
+ }>>;
97
+ driverInstanceId: z.ZodOptional<z.ZodString>;
98
+ driverVersion: z.ZodOptional<z.ZodString>;
99
+ logger: z.ZodOptional<z.ZodCustom<Logger, Logger>>;
100
+ autoReconnect: z.ZodOptional<z.ZodBoolean>;
101
+ maxReconnectAttempts: z.ZodOptional<z.ZodNumber>;
102
+ reconnectDelayMs: z.ZodOptional<z.ZodNumber>;
103
+ maxReconnectDelayMs: z.ZodOptional<z.ZodNumber>;
104
+ heartbeatIntervalMs: z.ZodOptional<z.ZodNumber>;
105
+ heartbeatTimeoutMs: z.ZodOptional<z.ZodNumber>;
106
+ maxMessageQueueSize: z.ZodOptional<z.ZodNumber>;
107
+ onOpen: z.ZodOptional<z.ZodCustom<() => void, () => void>>;
108
+ onClose: z.ZodOptional<z.ZodCustom<(code: number, reason: string) => void, (code: number, reason: string) => void>>;
109
+ onError: z.ZodOptional<z.ZodCustom<(error: Error) => void, (error: Error) => void>>;
110
+ onMessage: z.ZodOptional<z.ZodCustom<(message: ServerMessage) => void, (message: ServerMessage) => void>>;
111
+ onInit: z.ZodOptional<z.ZodCustom<(message: CoderHubInitMessage) => void, (message: CoderHubInitMessage) => void>>;
112
+ onStateChange: z.ZodOptional<z.ZodCustom<(state: CoderHubWebSocketState) => void, (state: CoderHubWebSocketState) => void>>;
113
+ }, z.core.$strip>;
114
+ export type CoderHubWebSocketOptions = z.infer<typeof CoderHubWebSocketOptionsSchema>;
115
+ /**
116
+ * Error type for WebSocket operations.
117
+ *
118
+ * @example
119
+ * ```typescript
120
+ * try {
121
+ * await client.sendAndWait({ type: 'tool', name: 'read', ... });
122
+ * } catch (err) {
123
+ * if (err instanceof CoderHubWebSocketError) {
124
+ * if (err.code === 'response_timeout') {
125
+ * console.log('Server did not respond in time');
126
+ * }
127
+ * }
128
+ * }
129
+ * ```
130
+ */
131
+ export declare const CoderHubWebSocketError: {
132
+ new (args?: ({
133
+ code: "connection_failed" | "auth_failed" | "connection_error" | "max_reconnects_exceeded" | "send_while_disconnected" | "response_timeout" | "invalid_response";
134
+ sessionId?: string;
135
+ serverCode?: string;
136
+ serverMessage?: string;
137
+ serverMessageType?: "connection_rejected" | "protocol_error";
138
+ closeCode?: number;
139
+ closeReason?: string;
140
+ } & {
141
+ message?: string;
142
+ cause?: unknown;
143
+ }) | undefined): import("../../error.ts").RichError & {
144
+ readonly _tag: "CoderHubWebSocketError";
145
+ } & Readonly<{
146
+ code: "connection_failed" | "auth_failed" | "connection_error" | "max_reconnects_exceeded" | "send_while_disconnected" | "response_timeout" | "invalid_response";
147
+ sessionId?: string;
148
+ serverCode?: string;
149
+ serverMessage?: string;
150
+ serverMessageType?: "connection_rejected" | "protocol_error";
151
+ closeCode?: number;
152
+ closeReason?: string;
153
+ }>;
154
+ readonly defaultMessage?: string;
155
+ };
156
+ export type CoderHubWebSocketErrorInstance = InstanceType<typeof CoderHubWebSocketError>;
157
+ /**
158
+ * WebSocket client for real-time Coder Hub communication.
159
+ *
160
+ * Supports multiple connection roles and provides automatic reconnection,
161
+ * heartbeat management, and message queuing for resilient connections.
162
+ *
163
+ * @example Observer connection
164
+ * ```typescript
165
+ * const client = new CoderHubWebSocketClient({
166
+ * sessionId: 'session-123',
167
+ * role: 'observer',
168
+ * onMessage: (msg) => {
169
+ * if (msg.type === 'broadcast') {
170
+ * console.log('Event:', msg.event);
171
+ * }
172
+ * },
173
+ * });
174
+ * client.connect();
175
+ * ```
176
+ *
177
+ * @example Controller connection with sendAndWait
178
+ * ```typescript
179
+ * const client = new CoderHubWebSocketClient({
180
+ * sessionId: 'session-123',
181
+ * role: 'controller',
182
+ * });
183
+ * client.connect();
184
+ *
185
+ * // Wait for connection
186
+ * await new Promise(resolve => {
187
+ * client.onInit = () => resolve(undefined);
188
+ * });
189
+ *
190
+ * // Send a request and wait for response
191
+ * const response = await client.sendAndWait({
192
+ * type: 'event',
193
+ * event: 'steer',
194
+ * data: { direction: 'continue' },
195
+ * });
196
+ * console.log('Response:', response);
197
+ * ```
198
+ *
199
+ * @example Sub-agent connection
200
+ * ```typescript
201
+ * const client = new CoderHubWebSocketClient({
202
+ * role: 'observer', // Sub-agents connect as observers to parent
203
+ * agent: 'scout',
204
+ * parentSessionId: 'parent-session-456',
205
+ * });
206
+ * client.connect();
207
+ * ```
208
+ */
209
+ export declare class CoderHubWebSocketClient {
210
+ #private;
211
+ constructor(options?: CoderHubWebSocketOptions);
212
+ /**
213
+ * The current connection state.
214
+ *
215
+ * @see CoderHubWebSocketState for state descriptions
216
+ */
217
+ get state(): CoderHubWebSocketState;
218
+ /**
219
+ * The session ID for this connection.
220
+ *
221
+ * Returns the server-assigned session ID (from init message) if available,
222
+ * otherwise returns the session ID passed in options.
223
+ */
224
+ get sessionId(): string | undefined;
225
+ /**
226
+ * The init message received from the server after authentication.
227
+ *
228
+ * Contains session configuration, available agents, tools, and other metadata.
229
+ * Only available after successful authentication.
230
+ */
231
+ get initMessage(): CoderHubInitMessage | null;
232
+ /**
233
+ * Whether the client is currently connected and authenticated.
234
+ *
235
+ * Returns `true` only when state is 'connected' AND WebSocket is open.
236
+ */
237
+ get isConnected(): boolean;
238
+ /**
239
+ * Establish the WebSocket connection and authenticate.
240
+ *
241
+ * If already connected or connecting, this is a no-op.
242
+ * Automatically reconnects on disconnection unless `close()` was called.
243
+ *
244
+ * The connection goes through these states:
245
+ * 1. `'connecting'` - WebSocket opening
246
+ * 2. `'authenticating'` - Sending auth message
247
+ * 3. `'connected'` - Received init message
248
+ */
249
+ connect(): void;
250
+ /**
251
+ * Close the WebSocket connection.
252
+ *
253
+ * After calling `close()`, you can call `connect()` again to reconnect.
254
+ * Any pending requests will be rejected with an error.
255
+ *
256
+ * @param code - Optional close code (default: 1000 for normal close)
257
+ * @param reason - Optional close reason string
258
+ */
259
+ close(code?: number, reason?: string): void;
260
+ /**
261
+ * Send a message to the server.
262
+ *
263
+ * If not connected, the message will be queued and sent when reconnected
264
+ * (up to `maxMessageQueueSize` messages). If the queue is full, an error
265
+ * is emitted via `onError`.
266
+ *
267
+ * @param message - The message to send
268
+ *
269
+ * @example
270
+ * ```typescript
271
+ * client.send({
272
+ * type: 'ping',
273
+ * timestamp: Date.now(),
274
+ * });
275
+ *
276
+ * client.send({
277
+ * type: 'session_entry',
278
+ * path: 'entries.jsonl',
279
+ * line: JSON.stringify({ type: 'message', content: 'Hello' }),
280
+ * });
281
+ * ```
282
+ */
283
+ send(message: ClientMessage): void;
284
+ /**
285
+ * Send a message and wait for a response.
286
+ *
287
+ * Automatically adds a unique `id` to the message and waits for a
288
+ * response with matching `id`. Useful for request/response patterns
289
+ * like tool calls or RPC commands.
290
+ *
291
+ * @param message - The message to send (without `id` field)
292
+ * @param timeoutMs - Timeout in milliseconds (default: 30000)
293
+ * @returns Promise that resolves with the response
294
+ * @throws {CoderHubWebSocketError} If timeout exceeded or connection closed
295
+ *
296
+ * @example
297
+ * ```typescript
298
+ * try {
299
+ * const response = await client.sendAndWait({
300
+ * type: 'tool',
301
+ * name: 'read_file',
302
+ * toolCallId: 'call-123',
303
+ * params: { path: '/src/index.ts' },
304
+ * });
305
+ * console.log('Tool result:', response.actions);
306
+ * } catch (err) {
307
+ * if (err instanceof CoderHubWebSocketError && err.code === 'response_timeout') {
308
+ * console.log('Tool call timed out');
309
+ * }
310
+ * }
311
+ * ```
312
+ */
313
+ sendAndWait(message: Omit<ClientMessage, 'id'>, timeoutMs?: number): Promise<CoderHubResponse>;
314
+ }
315
+ /**
316
+ * Subscribe to a Coder Hub session via WebSocket using async iteration.
317
+ *
318
+ * Returns an async iterator that yields server messages as they arrive.
319
+ * The connection is automatically managed (auth, reconnection, cleanup).
320
+ *
321
+ * @param options - Configuration for the WebSocket connection
322
+ * @yields Server messages as they arrive
323
+ * @throws {CoderHubWebSocketError} If connection fails or max reconnection attempts exceeded
324
+ *
325
+ * @example Basic usage
326
+ * ```typescript
327
+ * import { subscribeToCoderHub } from '@agentuity/core/coder';
328
+ *
329
+ * for await (const message of subscribeToCoderHub({
330
+ * sessionId: 'session-123',
331
+ * role: 'observer',
332
+ * })) {
333
+ * switch (message.type) {
334
+ * case 'broadcast':
335
+ * console.log('Event:', message.event);
336
+ * break;
337
+ * case 'presence':
338
+ * console.log('Participant:', message.participant);
339
+ * break;
340
+ * }
341
+ * }
342
+ * ```
343
+ *
344
+ * @example With error handling
345
+ * ```typescript
346
+ * try {
347
+ * for await (const message of subscribeToCoderHub({ sessionId: 'session-123' })) {
348
+ * console.log(message);
349
+ * }
350
+ * } catch (err) {
351
+ * if (err instanceof CoderHubWebSocketError) {
352
+ * console.log('WebSocket error:', err.code);
353
+ * }
354
+ * }
355
+ * ```
356
+ */
357
+ export declare function subscribeToCoderHub(options: CoderHubWebSocketOptions): AsyncGenerator<ServerMessage, void, unknown>;
358
+ //# sourceMappingURL=websocket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../../src/services/coder/websocket.ts"],"names":[],"mappings":"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"}