@agentick/client 0.0.1

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.
@@ -0,0 +1,408 @@
1
+ /**
2
+ * WebSocket Transport
3
+ *
4
+ * Implements the ClientTransport interface using WebSocket connections.
5
+ * Compatible with the Gateway's WebSocket protocol.
6
+ */
7
+ // ============================================================================
8
+ // WebSocket Transport Implementation
9
+ // ============================================================================
10
+ export class WSTransport {
11
+ config;
12
+ WSCtor;
13
+ socket;
14
+ _state = "disconnected";
15
+ _connectionId;
16
+ connectionPromise;
17
+ reconnectAttempts = 0;
18
+ requestCounter = 0;
19
+ pendingRequests = new Map();
20
+ eventHandlers = new Set();
21
+ stateHandlers = new Set();
22
+ subscriptions = new Set();
23
+ // For streaming sends - map executionId to queue
24
+ sendStreams = new Map();
25
+ constructor(config) {
26
+ this.config = config;
27
+ this.WSCtor = config.WebSocket ?? globalThis.WebSocket;
28
+ }
29
+ get state() {
30
+ return this._state;
31
+ }
32
+ get connectionId() {
33
+ return this._connectionId;
34
+ }
35
+ setState(state) {
36
+ if (this._state === state)
37
+ return;
38
+ this._state = state;
39
+ for (const handler of this.stateHandlers) {
40
+ try {
41
+ handler(state);
42
+ }
43
+ catch (error) {
44
+ console.error("Error in state handler:", error);
45
+ }
46
+ }
47
+ }
48
+ async connect() {
49
+ if (this._state === "connected") {
50
+ return;
51
+ }
52
+ if (this.connectionPromise) {
53
+ await this.connectionPromise;
54
+ return;
55
+ }
56
+ this.setState("connecting");
57
+ this.connectionPromise = this.openWebSocket();
58
+ try {
59
+ await this.connectionPromise;
60
+ this.setState("connected");
61
+ this.reconnectAttempts = 0;
62
+ }
63
+ catch (error) {
64
+ this.setState("error");
65
+ throw error;
66
+ }
67
+ finally {
68
+ this.connectionPromise = undefined;
69
+ }
70
+ }
71
+ disconnect() {
72
+ this.closeWebSocket();
73
+ }
74
+ async openWebSocket() {
75
+ this.closeWebSocket();
76
+ // Convert http:// to ws:// or https:// to wss://
77
+ let url = this.config.baseUrl.replace(/\/$/, "");
78
+ if (url.startsWith("http://")) {
79
+ url = url.replace("http://", "ws://");
80
+ }
81
+ else if (url.startsWith("https://")) {
82
+ url = url.replace("https://", "wss://");
83
+ }
84
+ return new Promise((resolve, reject) => {
85
+ try {
86
+ this.socket = new this.WSCtor(url);
87
+ this.socket.onopen = () => {
88
+ // Send connect message
89
+ this.sendRaw({
90
+ type: "connect",
91
+ clientId: this.config.clientId ?? `client-${Date.now().toString(36)}`,
92
+ token: this.config.token,
93
+ });
94
+ // Set connection ID immediately (will be updated if server sends one)
95
+ this._connectionId = this.config.clientId ?? `client-${Date.now().toString(36)}`;
96
+ resolve();
97
+ };
98
+ this.socket.onmessage = (event) => {
99
+ try {
100
+ const data = JSON.parse(event.data);
101
+ this.handleMessage(data);
102
+ }
103
+ catch (error) {
104
+ console.error("Failed to parse WebSocket message:", error);
105
+ }
106
+ };
107
+ this.socket.onerror = () => {
108
+ if (this._state === "connecting") {
109
+ reject(new Error("WebSocket connection failed"));
110
+ }
111
+ };
112
+ this.socket.onclose = () => {
113
+ this.handleClose();
114
+ };
115
+ }
116
+ catch (error) {
117
+ reject(error);
118
+ }
119
+ });
120
+ }
121
+ closeWebSocket() {
122
+ if (!this.socket)
123
+ return;
124
+ // Clear all pending requests
125
+ for (const [, pending] of this.pendingRequests) {
126
+ clearTimeout(pending.timeout);
127
+ pending.reject(new Error("Connection closed"));
128
+ }
129
+ this.pendingRequests.clear();
130
+ // Close all send streams
131
+ for (const [, stream] of this.sendStreams) {
132
+ stream.closed = true;
133
+ for (const resolver of stream.resolvers) {
134
+ resolver({ value: undefined, done: true });
135
+ }
136
+ }
137
+ this.sendStreams.clear();
138
+ this.socket.close();
139
+ this.socket = undefined;
140
+ this._connectionId = undefined;
141
+ this.subscriptions.clear();
142
+ this.setState("disconnected");
143
+ }
144
+ handleClose() {
145
+ const wasConnected = this._state === "connected";
146
+ this._connectionId = undefined;
147
+ this.subscriptions.clear();
148
+ this.setState("disconnected");
149
+ // Attempt reconnection
150
+ const reconnect = this.config.reconnect;
151
+ if (wasConnected && reconnect?.enabled !== false) {
152
+ const maxAttempts = reconnect?.maxAttempts ?? 5;
153
+ const delay = reconnect?.delay ?? 1000;
154
+ if (this.reconnectAttempts < maxAttempts) {
155
+ this.reconnectAttempts++;
156
+ setTimeout(() => {
157
+ this.connect().catch((error) => {
158
+ console.error("Reconnection failed:", error);
159
+ });
160
+ }, delay * this.reconnectAttempts);
161
+ }
162
+ }
163
+ }
164
+ handleMessage(data) {
165
+ const type = data.type;
166
+ // Handle response to pending request
167
+ if (type === "res") {
168
+ const id = data.id;
169
+ const pending = this.pendingRequests.get(id);
170
+ if (pending) {
171
+ clearTimeout(pending.timeout);
172
+ this.pendingRequests.delete(id);
173
+ pending.resolve(data);
174
+ return;
175
+ }
176
+ }
177
+ // Handle pong
178
+ if (type === "pong") {
179
+ return;
180
+ }
181
+ // Handle error
182
+ if (type === "error") {
183
+ console.error("Gateway error:", data.message);
184
+ return;
185
+ }
186
+ // Handle session events (from event subscription or send streaming)
187
+ if (type === "event") {
188
+ const sessionId = data.sessionId;
189
+ const eventData = {
190
+ type: data.event,
191
+ sessionId,
192
+ ...data.data,
193
+ };
194
+ // Check if this event is for an active send stream
195
+ // We use sessionId to find the stream since executionId may not be set yet
196
+ for (const [, stream] of this.sendStreams) {
197
+ if (!stream.closed) {
198
+ const resolver = stream.resolvers.shift();
199
+ if (resolver) {
200
+ resolver({ value: eventData, done: false });
201
+ }
202
+ else {
203
+ stream.events.push(eventData);
204
+ }
205
+ }
206
+ }
207
+ // Also notify general event handlers
208
+ this.handleIncomingEvent(eventData);
209
+ return;
210
+ }
211
+ // Forward other events to handlers
212
+ this.handleIncomingEvent(data);
213
+ }
214
+ handleIncomingEvent(data) {
215
+ for (const handler of this.eventHandlers) {
216
+ try {
217
+ handler(data);
218
+ }
219
+ catch (error) {
220
+ console.error("Error in event handler:", error);
221
+ }
222
+ }
223
+ }
224
+ sendRaw(data) {
225
+ if (this.socket?.readyState === WebSocket.OPEN) {
226
+ this.socket.send(JSON.stringify(data));
227
+ }
228
+ }
229
+ async sendRequest(method, params = {}) {
230
+ await this.connect();
231
+ const id = `req-${++this.requestCounter}`;
232
+ const timeout = this.config.timeout ?? 30000;
233
+ return new Promise((resolve, reject) => {
234
+ const timer = setTimeout(() => {
235
+ this.pendingRequests.delete(id);
236
+ reject(new Error(`Request ${method} timed out`));
237
+ }, timeout);
238
+ this.pendingRequests.set(id, { resolve, reject, timeout: timer });
239
+ this.sendRaw({
240
+ type: "req",
241
+ id,
242
+ method,
243
+ params,
244
+ });
245
+ });
246
+ }
247
+ send(input, sessionId) {
248
+ const streamId = `stream-${++this.requestCounter}`;
249
+ const stream = {
250
+ events: [],
251
+ resolvers: [],
252
+ closed: false,
253
+ };
254
+ this.sendStreams.set(streamId, stream);
255
+ const self = this;
256
+ let sessionIdFromResponse;
257
+ let aborted = false;
258
+ // Start the send request
259
+ const sendPromise = this.sendRequest("send", {
260
+ sessionId: sessionId ?? "main",
261
+ message: typeof input === "string"
262
+ ? input
263
+ : "message" in input && input.message
264
+ ? (() => {
265
+ const msg = input.message;
266
+ if (typeof msg === "string")
267
+ return msg;
268
+ if (msg &&
269
+ typeof msg === "object" &&
270
+ "content" in msg &&
271
+ Array.isArray(msg.content)) {
272
+ const textBlock = msg.content.find((b) => b.type === "text");
273
+ return textBlock?.text ?? "";
274
+ }
275
+ return "";
276
+ })()
277
+ : "",
278
+ });
279
+ sendPromise
280
+ .then((response) => {
281
+ if (response.ok && response.payload) {
282
+ sessionIdFromResponse = response.payload.sessionId;
283
+ }
284
+ })
285
+ .catch((error) => {
286
+ // Close stream on error
287
+ stream.closed = true;
288
+ const errorEvent = { type: "error", error: error.message };
289
+ const resolver = stream.resolvers.shift();
290
+ if (resolver) {
291
+ resolver({ value: errorEvent, done: false });
292
+ }
293
+ // Then close
294
+ for (const r of stream.resolvers) {
295
+ r({ value: undefined, done: true });
296
+ }
297
+ stream.resolvers = [];
298
+ });
299
+ const iterable = {
300
+ async *[Symbol.asyncIterator]() {
301
+ try {
302
+ while (!stream.closed && !aborted) {
303
+ // Check for buffered events
304
+ if (stream.events.length > 0) {
305
+ const event = stream.events.shift();
306
+ yield event;
307
+ // Check for end events
308
+ if (event.type === "execution_end" || event.type === "message_end") {
309
+ break;
310
+ }
311
+ continue;
312
+ }
313
+ // Wait for next event
314
+ const result = await new Promise((resolve) => {
315
+ stream.resolvers.push(resolve);
316
+ });
317
+ if (result.done) {
318
+ break;
319
+ }
320
+ yield result.value;
321
+ // Check for end events
322
+ if (result.value.type === "execution_end" || result.value.type === "message_end") {
323
+ break;
324
+ }
325
+ }
326
+ }
327
+ finally {
328
+ stream.closed = true;
329
+ self.sendStreams.delete(streamId);
330
+ }
331
+ },
332
+ abort(reason) {
333
+ aborted = true;
334
+ stream.closed = true;
335
+ // Close all waiting resolvers
336
+ for (const resolver of stream.resolvers) {
337
+ resolver({ value: undefined, done: true });
338
+ }
339
+ stream.resolvers = [];
340
+ // Send abort request to server
341
+ if (sessionIdFromResponse) {
342
+ self.abortSession(sessionIdFromResponse, reason).catch(() => { });
343
+ }
344
+ },
345
+ };
346
+ return iterable;
347
+ }
348
+ async subscribeToSession(sessionId) {
349
+ if (this.subscriptions.has(sessionId)) {
350
+ return;
351
+ }
352
+ await this.sendRequest("subscribe", { sessionId });
353
+ this.subscriptions.add(sessionId);
354
+ }
355
+ async unsubscribeFromSession(sessionId) {
356
+ if (!this.subscriptions.has(sessionId)) {
357
+ return;
358
+ }
359
+ await this.sendRequest("unsubscribe", { sessionId });
360
+ this.subscriptions.delete(sessionId);
361
+ }
362
+ async abortSession(sessionId, reason) {
363
+ await this.sendRequest("abort", { sessionId, reason });
364
+ }
365
+ async closeSession(sessionId) {
366
+ await this.sendRequest("close", { sessionId });
367
+ this.subscriptions.delete(sessionId);
368
+ }
369
+ async submitToolResult(sessionId, toolUseId, result) {
370
+ await this.sendRequest("tool-response", { sessionId, toolUseId, result });
371
+ }
372
+ async publishToChannel(sessionId, channel, event) {
373
+ await this.sendRequest("channel", {
374
+ sessionId,
375
+ channel,
376
+ type: event.type,
377
+ payload: event.payload,
378
+ id: event.id,
379
+ metadata: event.metadata,
380
+ });
381
+ }
382
+ async subscribeToChannel(sessionId, channel) {
383
+ await this.sendRequest("channel-subscribe", { sessionId, channel });
384
+ }
385
+ onEvent(handler) {
386
+ this.eventHandlers.add(handler);
387
+ return () => {
388
+ this.eventHandlers.delete(handler);
389
+ };
390
+ }
391
+ onStateChange(handler) {
392
+ this.stateHandlers.add(handler);
393
+ return () => {
394
+ this.stateHandlers.delete(handler);
395
+ };
396
+ }
397
+ /** Send a ping to keep connection alive */
398
+ ping() {
399
+ this.sendRaw({ type: "ping", timestamp: Date.now() });
400
+ }
401
+ }
402
+ // ============================================================================
403
+ // Factory Function
404
+ // ============================================================================
405
+ export function createWSTransport(config) {
406
+ return new WSTransport(config);
407
+ }
408
+ //# sourceMappingURL=ws-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-transport.js","sourceRoot":"","sources":["../src/ws-transport.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "@agentick/client",
3
+ "version": "0.0.1",
4
+ "description": "Client SDK for Agentick - multiplexed sessions over SSE",
5
+ "keywords": [
6
+ "agent",
7
+ "ai",
8
+ "channels",
9
+ "client",
10
+ "sse",
11
+ "streaming"
12
+ ],
13
+ "license": "ISC",
14
+ "author": "Ryan Lindgren",
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "type": "module",
19
+ "main": "./dist/index.js",
20
+ "exports": {
21
+ ".": {
22
+ "types": "./dist/index.d.ts",
23
+ "import": "./dist/index.js"
24
+ }
25
+ },
26
+ "publishConfig": {
27
+ "access": "public"
28
+ },
29
+ "dependencies": {
30
+ "@agentick/shared": "0.0.1"
31
+ },
32
+ "devDependencies": {
33
+ "typescript": "^5.8.3"
34
+ },
35
+ "scripts": {
36
+ "build": "tsc -p tsconfig.build.json",
37
+ "test": "echo \"Tests run from workspace root\"",
38
+ "typecheck": "tsc -p tsconfig.build.json --noEmit",
39
+ "lint": "oxlint src/",
40
+ "format:check": "oxfmt --check src/",
41
+ "clean": "rm -rf dist",
42
+ "dev": "tsc --watch"
43
+ },
44
+ "types": "./dist/index.d.ts"
45
+ }