@agentuity/runtime 0.0.61 → 0.0.62

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.
package/dist/_server.js CHANGED
@@ -107,9 +107,9 @@ export const createServer = async (router, appStateInitializer, config) => {
107
107
  if (globalServerInstance) {
108
108
  return [globalServerInstance, globalAppState];
109
109
  }
110
- startupPromise = new Promise((resolve) => {
111
- startupPromiseResolver = resolve;
112
- });
110
+ const { promise, resolve } = Promise.withResolvers();
111
+ startupPromise = promise;
112
+ startupPromiseResolver = resolve;
113
113
  runtimeConfig.init();
114
114
  const logLevel = process.env.AGENTUITY_LOG_LEVEL || 'info';
115
115
  const port = getPort();
@@ -428,11 +428,13 @@ const otelMiddleware = createMiddleware(async (c, next) => {
428
428
  await threadProvider.save(thread);
429
429
  span.setStatus({ code: SpanStatusCode.OK });
430
430
  if (shouldSendSession && canSendSessionEvents) {
431
+ const userData = session.serializeUserData();
431
432
  sessionEventProvider
432
433
  .complete({
433
434
  id: sessionId,
434
435
  statusCode: c.res.status,
435
436
  agentIds: Array.from(agentIds),
437
+ userData,
436
438
  })
437
439
  .then(() => { })
438
440
  .catch((ex) => c.var.logger.error(ex));
@@ -450,12 +452,14 @@ const otelMiddleware = createMiddleware(async (c, next) => {
450
452
  });
451
453
  c.var.logger.error(message);
452
454
  if (shouldSendSession && canSendSessionEvents) {
455
+ const userData = session.serializeUserData();
453
456
  sessionEventProvider
454
457
  .complete({
455
458
  id: sessionId,
456
459
  statusCode: c.res.status,
457
460
  error: message,
458
461
  agentIds: Array.from(agentIds),
462
+ userData,
459
463
  })
460
464
  .then(() => { })
461
465
  .catch((ex) => c.var.logger.error(ex));
@@ -468,11 +472,13 @@ const otelMiddleware = createMiddleware(async (c, next) => {
468
472
  else {
469
473
  span.setStatus({ code: SpanStatusCode.OK });
470
474
  if (shouldSendSession && canSendSessionEvents) {
475
+ const userData = session.serializeUserData();
471
476
  sessionEventProvider
472
477
  .complete({
473
478
  id: sessionId,
474
479
  statusCode: c.res.status,
475
480
  agentIds: Array.from(agentIds),
481
+ userData,
476
482
  })
477
483
  .then(() => { })
478
484
  .catch((ex) => c.var.logger.error(ex));
@@ -490,12 +496,14 @@ const otelMiddleware = createMiddleware(async (c, next) => {
490
496
  });
491
497
  c.var.logger.error(message);
492
498
  if (shouldSendSession && canSendSessionEvents) {
499
+ const userData = session.serializeUserData();
493
500
  sessionEventProvider
494
501
  .complete({
495
502
  id: sessionId,
496
503
  statusCode: c.res.status,
497
504
  error: message,
498
505
  agentIds: Array.from(agentIds),
506
+ userData,
499
507
  })
500
508
  .then(() => { })
501
509
  .catch((ex) => c.var.logger.error(ex));
@@ -1 +1 @@
1
- {"version":3,"file":"_server.js","sourceRoot":"","sources":["../src/_server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_server.js","sourceRoot":"","sources":["../src/_server.ts"],"names":[],"mappings":"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"}
package/dist/session.d.ts CHANGED
@@ -162,6 +162,11 @@ export interface Session {
162
162
  * @param callback - The callback function to remove
163
163
  */
164
164
  removeEventListener(eventName: 'completed', callback: (eventName: 'completed', session: Session) => Promise<void> | void): void;
165
+ /**
166
+ * Return the session data as a serializable string or return undefined if not
167
+ * data should be serialized.
168
+ */
169
+ serializeUserData(): string | undefined;
165
170
  }
166
171
  /**
167
172
  * Provider interface for managing thread lifecycle and persistence.
@@ -316,13 +321,23 @@ export declare class DefaultThread implements Thread {
316
321
  readonly id: string;
317
322
  readonly state: Map<string, unknown>;
318
323
  private provider;
319
- constructor(provider: ThreadProvider, id: string);
324
+ constructor(provider: ThreadProvider, id: string, initialStateJson?: string);
320
325
  addEventListener(eventName: ThreadEventName, callback: ThreadEventCallback<any>): void;
321
326
  removeEventListener(eventName: ThreadEventName, callback: ThreadEventCallback<any>): void;
322
327
  fireEvent(eventName: ThreadEventName): Promise<void>;
323
328
  destroy(): Promise<void>;
324
329
  touch(): void;
325
330
  expired(): boolean;
331
+ /**
332
+ * Check if thread state has been modified since restore
333
+ * @internal
334
+ */
335
+ isDirty(): boolean;
336
+ /**
337
+ * Get serialized state for saving
338
+ * @internal
339
+ */
340
+ getSerializedState(): string;
326
341
  }
327
342
  export declare class DefaultSession implements Session {
328
343
  readonly id: string;
@@ -332,9 +347,16 @@ export declare class DefaultSession implements Session {
332
347
  addEventListener(eventName: SessionEventName, callback: SessionEventCallback<any>): void;
333
348
  removeEventListener(eventName: SessionEventName, callback: SessionEventCallback<any>): void;
334
349
  fireEvent(eventName: SessionEventName): Promise<void>;
350
+ /**
351
+ * Serialize session state to JSON string for persistence.
352
+ * Returns undefined if state is empty or exceeds 1MB limit.
353
+ * @internal
354
+ */
355
+ serializeUserData(): string | undefined;
335
356
  }
336
357
  export declare class DefaultThreadProvider implements ThreadProvider {
337
- private threads;
358
+ private wsClient;
359
+ private wsConnecting;
338
360
  initialize(_appState: AppState): Promise<void>;
339
361
  restore(ctx: Context<Env>): Promise<Thread>;
340
362
  save(thread: Thread): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
package/dist/session.js CHANGED
@@ -1,5 +1,7 @@
1
1
  import { getCookie, setCookie } from 'hono/cookie';
2
2
  import { fireEvent } from './app';
3
+ import { getServiceUrls } from '@agentuity/server';
4
+ import { WebSocket } from 'ws';
3
5
  // WeakMap to store event listeners for Thread and Session instances
4
6
  const threadEventListeners = new WeakMap();
5
7
  const sessionEventListeners = new WeakMap();
@@ -35,14 +37,16 @@ export function generateId(prefix) {
35
37
  }
36
38
  export class DefaultThread {
37
39
  #lastUsed;
40
+ #initialStateJson;
38
41
  id;
39
42
  state;
40
43
  provider;
41
- constructor(provider, id) {
44
+ constructor(provider, id, initialStateJson) {
42
45
  this.provider = provider;
43
46
  this.id = id;
44
47
  this.state = new Map();
45
48
  this.#lastUsed = Date.now();
49
+ this.#initialStateJson = initialStateJson;
46
50
  }
47
51
  addEventListener(eventName, callback) {
48
52
  let listeners = threadEventListeners.get(this);
@@ -70,7 +74,7 @@ export class DefaultThread {
70
74
  await fireThreadEvent(this, eventName);
71
75
  }
72
76
  async destroy() {
73
- this.provider.destroy(this);
77
+ await this.provider.destroy(this);
74
78
  }
75
79
  touch() {
76
80
  this.#lastUsed = Date.now();
@@ -78,6 +82,24 @@ export class DefaultThread {
78
82
  expired() {
79
83
  return Date.now() - this.#lastUsed >= 3.6e6; // 1 hour
80
84
  }
85
+ /**
86
+ * Check if thread state has been modified since restore
87
+ * @internal
88
+ */
89
+ isDirty() {
90
+ if (this.state.size === 0 && !this.#initialStateJson) {
91
+ return false;
92
+ }
93
+ const currentJson = JSON.stringify(Object.fromEntries(this.state));
94
+ return currentJson !== this.#initialStateJson;
95
+ }
96
+ /**
97
+ * Get serialized state for saving
98
+ * @internal
99
+ */
100
+ getSerializedState() {
101
+ return JSON.stringify(Object.fromEntries(this.state));
102
+ }
81
103
  }
82
104
  export class DefaultSession {
83
105
  id;
@@ -113,24 +135,259 @@ export class DefaultSession {
113
135
  async fireEvent(eventName) {
114
136
  await fireSessionEvent(this, eventName);
115
137
  }
138
+ /**
139
+ * Serialize session state to JSON string for persistence.
140
+ * Returns undefined if state is empty or exceeds 1MB limit.
141
+ * @internal
142
+ */
143
+ serializeUserData() {
144
+ if (this.state.size === 0) {
145
+ return undefined;
146
+ }
147
+ try {
148
+ const obj = Object.fromEntries(this.state);
149
+ const json = JSON.stringify(obj);
150
+ // Check 1MB limit (1,048,576 bytes)
151
+ const sizeInBytes = new TextEncoder().encode(json).length;
152
+ if (sizeInBytes > 1048576) {
153
+ console.error(`Session ${this.id} user_data exceeds 1MB limit (${sizeInBytes} bytes), data will not be persisted`);
154
+ return undefined;
155
+ }
156
+ return json;
157
+ }
158
+ catch (err) {
159
+ console.error(`Failed to serialize session ${this.id} user_data:`, err);
160
+ return undefined;
161
+ }
162
+ }
116
163
  }
117
- export class DefaultThreadProvider {
118
- threads = new Map();
119
- async initialize(_appState) {
120
- setInterval(() => {
121
- for (const [, thread] of this.threads) {
122
- if (thread.expired()) {
123
- void (async () => {
124
- try {
125
- await this.destroy(thread);
164
+ /**
165
+ * WebSocket client for thread state persistence
166
+ * @internal
167
+ */
168
+ class ThreadWebSocketClient {
169
+ ws = null;
170
+ authenticated = false;
171
+ pendingRequests = new Map();
172
+ requestCounter = 0;
173
+ reconnectAttempts = 0;
174
+ maxReconnectAttempts = 5;
175
+ apiKey;
176
+ wsUrl;
177
+ wsConnecting = null;
178
+ constructor(apiKey, wsUrl) {
179
+ this.apiKey = apiKey;
180
+ this.wsUrl = wsUrl;
181
+ }
182
+ async connect() {
183
+ return new Promise((resolve, reject) => {
184
+ // Set connection timeout
185
+ const connectionTimeout = setTimeout(() => {
186
+ this.cleanup();
187
+ reject(new Error('WebSocket connection timeout (10s)'));
188
+ }, 10000);
189
+ try {
190
+ this.ws = new WebSocket(this.wsUrl);
191
+ this.ws.on('open', () => {
192
+ // Send authentication (do NOT clear timeout yet - wait for auth response)
193
+ this.ws?.send(JSON.stringify({ authorization: this.apiKey }));
194
+ });
195
+ this.ws.on('message', (data) => {
196
+ try {
197
+ const message = JSON.parse(data.toString());
198
+ // Handle auth response
199
+ if ('success' in message && !this.authenticated) {
200
+ clearTimeout(connectionTimeout);
201
+ if (message.success) {
202
+ this.authenticated = true;
203
+ this.reconnectAttempts = 0;
204
+ resolve();
205
+ }
206
+ else {
207
+ const err = new Error(`WebSocket authentication failed: ${message.error || 'Unknown error'}`);
208
+ this.cleanup();
209
+ reject(err);
210
+ }
211
+ return;
126
212
  }
127
- catch (err) {
128
- console.error('Failed to destroy expired thread', err);
213
+ // Handle action response
214
+ if ('id' in message && this.pendingRequests.has(message.id)) {
215
+ const pending = this.pendingRequests.get(message.id);
216
+ this.pendingRequests.delete(message.id);
217
+ if (message.success) {
218
+ pending.resolve(message.data);
219
+ }
220
+ else {
221
+ pending.reject(new Error(message.error || 'Request failed'));
222
+ }
129
223
  }
130
- })();
131
- }
224
+ }
225
+ catch {
226
+ // Ignore parse errors
227
+ }
228
+ });
229
+ this.ws.on('error', (err) => {
230
+ clearTimeout(connectionTimeout);
231
+ if (!this.authenticated) {
232
+ reject(new Error(`WebSocket error: ${err.message}`));
233
+ }
234
+ });
235
+ this.ws.on('close', () => {
236
+ clearTimeout(connectionTimeout);
237
+ const wasAuthenticated = this.authenticated;
238
+ this.authenticated = false;
239
+ // Reject all pending requests
240
+ for (const [id, pending] of this.pendingRequests) {
241
+ pending.reject(new Error('WebSocket connection closed'));
242
+ this.pendingRequests.delete(id);
243
+ }
244
+ // Reject connecting promise if still pending
245
+ if (!wasAuthenticated) {
246
+ reject(new Error('WebSocket closed before authentication'));
247
+ }
248
+ // Attempt reconnection only if we were previously authenticated
249
+ if (wasAuthenticated && this.reconnectAttempts < this.maxReconnectAttempts) {
250
+ this.reconnectAttempts++;
251
+ const delay = Math.min(1000 * Math.pow(2, this.reconnectAttempts), 30000);
252
+ // Schedule reconnection with backoff delay
253
+ setTimeout(() => {
254
+ // Create new connection promise for reconnection
255
+ this.wsConnecting = this.connect().catch(() => {
256
+ // Reconnection failed, reset
257
+ this.wsConnecting = null;
258
+ });
259
+ }, delay);
260
+ }
261
+ });
132
262
  }
133
- }, 60_000).unref();
263
+ catch (err) {
264
+ clearTimeout(connectionTimeout);
265
+ reject(err);
266
+ }
267
+ });
268
+ }
269
+ async restore(threadId) {
270
+ // Wait for connection/reconnection if in progress
271
+ if (this.wsConnecting) {
272
+ await this.wsConnecting;
273
+ }
274
+ if (!this.authenticated || !this.ws) {
275
+ throw new Error('WebSocket not connected or authenticated');
276
+ }
277
+ return new Promise((resolve, reject) => {
278
+ const requestId = `req_${++this.requestCounter}`;
279
+ this.pendingRequests.set(requestId, { resolve, reject });
280
+ const message = {
281
+ id: requestId,
282
+ action: 'restore',
283
+ data: { thread_id: threadId },
284
+ };
285
+ this.ws.send(JSON.stringify(message));
286
+ // Timeout after 10 seconds
287
+ setTimeout(() => {
288
+ if (this.pendingRequests.has(requestId)) {
289
+ this.pendingRequests.delete(requestId);
290
+ reject(new Error('Request timeout'));
291
+ }
292
+ }, 10000);
293
+ });
294
+ }
295
+ async save(threadId, userData) {
296
+ // Wait for connection/reconnection if in progress
297
+ if (this.wsConnecting) {
298
+ await this.wsConnecting;
299
+ }
300
+ if (!this.authenticated || !this.ws) {
301
+ throw new Error('WebSocket not connected or authenticated');
302
+ }
303
+ // Check 1MB limit
304
+ const sizeInBytes = new TextEncoder().encode(userData).length;
305
+ if (sizeInBytes > 1048576) {
306
+ console.error(`Thread ${threadId} user_data exceeds 1MB limit (${sizeInBytes} bytes), data will not be persisted`);
307
+ return;
308
+ }
309
+ return new Promise((resolve, reject) => {
310
+ const requestId = crypto.randomUUID();
311
+ this.pendingRequests.set(requestId, {
312
+ resolve: () => resolve(),
313
+ reject,
314
+ });
315
+ const message = {
316
+ id: requestId,
317
+ action: 'save',
318
+ data: { thread_id: threadId, user_data: userData },
319
+ };
320
+ this.ws.send(JSON.stringify(message));
321
+ // Timeout after 10 seconds
322
+ setTimeout(() => {
323
+ if (this.pendingRequests.has(requestId)) {
324
+ this.pendingRequests.delete(requestId);
325
+ reject(new Error('Request timeout'));
326
+ }
327
+ }, 10_000);
328
+ });
329
+ }
330
+ async delete(threadId) {
331
+ // Wait for connection/reconnection if in progress
332
+ if (this.wsConnecting) {
333
+ await this.wsConnecting;
334
+ }
335
+ if (!this.authenticated || !this.ws) {
336
+ throw new Error('WebSocket not connected or authenticated');
337
+ }
338
+ return new Promise((resolve, reject) => {
339
+ const requestId = crypto.randomUUID();
340
+ this.pendingRequests.set(requestId, {
341
+ resolve: () => resolve(),
342
+ reject,
343
+ });
344
+ const message = {
345
+ id: requestId,
346
+ action: 'delete',
347
+ data: { thread_id: threadId },
348
+ };
349
+ this.ws.send(JSON.stringify(message));
350
+ // Timeout after 10 seconds
351
+ setTimeout(() => {
352
+ if (this.pendingRequests.has(requestId)) {
353
+ this.pendingRequests.delete(requestId);
354
+ reject(new Error('Request timeout'));
355
+ }
356
+ }, 10_000);
357
+ });
358
+ }
359
+ cleanup() {
360
+ if (this.ws) {
361
+ this.ws.close();
362
+ this.ws = null;
363
+ }
364
+ this.authenticated = false;
365
+ this.pendingRequests.clear();
366
+ }
367
+ }
368
+ export class DefaultThreadProvider {
369
+ wsClient = null;
370
+ wsConnecting = null;
371
+ async initialize(_appState) {
372
+ // Initialize WebSocket connection for thread persistence (async, non-blocking)
373
+ const apiKey = process.env.AGENTUITY_SDK_KEY;
374
+ if (apiKey) {
375
+ const serviceUrls = getServiceUrls();
376
+ const catalystUrl = serviceUrls.catalyst;
377
+ const wsUrl = new URL('/thread/ws', catalystUrl.replace(/^http/, 'ws'));
378
+ this.wsClient = new ThreadWebSocketClient(apiKey, wsUrl.toString());
379
+ // Connect in background, don't block initialization
380
+ this.wsConnecting = this.wsClient
381
+ .connect()
382
+ .then(() => {
383
+ this.wsConnecting = null;
384
+ })
385
+ .catch((err) => {
386
+ console.error('Failed to connect to thread WebSocket:', err);
387
+ this.wsClient = null;
388
+ this.wsConnecting = null;
389
+ });
390
+ }
134
391
  }
135
392
  async restore(ctx) {
136
393
  const cookie = getCookie(ctx);
@@ -141,29 +398,80 @@ export class DefaultThreadProvider {
141
398
  threadId = threadId || generateId('thrd');
142
399
  if (threadId) {
143
400
  setCookie(ctx, 'atid', threadId);
144
- const existing = this.threads.get(threadId);
145
- if (existing) {
146
- return existing;
401
+ }
402
+ // Wait for WebSocket connection if still connecting
403
+ if (this.wsConnecting) {
404
+ await this.wsConnecting;
405
+ }
406
+ // Restore thread state from WebSocket if available
407
+ let initialStateJson;
408
+ if (this.wsClient) {
409
+ try {
410
+ const restoredData = await this.wsClient.restore(threadId);
411
+ if (restoredData) {
412
+ initialStateJson = restoredData;
413
+ }
414
+ }
415
+ catch {
416
+ // Continue with empty state rather than failing
417
+ }
418
+ }
419
+ const thread = new DefaultThread(this, threadId, initialStateJson);
420
+ // Populate thread state from restored data
421
+ if (initialStateJson) {
422
+ try {
423
+ const data = JSON.parse(initialStateJson);
424
+ for (const [key, value] of Object.entries(data)) {
425
+ thread.state.set(key, value);
426
+ }
427
+ }
428
+ catch {
429
+ // Continue with empty state if parsing fails
147
430
  }
148
431
  }
149
- const thread = new DefaultThread(this, threadId);
150
- this.threads.set(thread.id, thread);
151
432
  await fireEvent('thread.created', thread);
152
433
  return thread;
153
434
  }
154
435
  async save(thread) {
155
436
  if (thread instanceof DefaultThread) {
156
437
  thread.touch();
438
+ // Wait for WebSocket connection if still connecting
439
+ if (this.wsConnecting) {
440
+ await this.wsConnecting;
441
+ }
442
+ // Only save to WebSocket if state has changed
443
+ if (this.wsClient && thread.isDirty()) {
444
+ try {
445
+ const serialized = thread.getSerializedState();
446
+ await this.wsClient.save(thread.id, serialized);
447
+ }
448
+ catch {
449
+ // Don't throw - allow request to complete even if save fails
450
+ }
451
+ }
157
452
  }
158
453
  }
159
454
  async destroy(thread) {
160
455
  if (thread instanceof DefaultThread) {
161
456
  try {
457
+ // Wait for WebSocket connection if still connecting
458
+ if (this.wsConnecting) {
459
+ await this.wsConnecting;
460
+ }
461
+ // Delete thread from remote storage
462
+ if (this.wsClient) {
463
+ try {
464
+ await this.wsClient.delete(thread.id);
465
+ }
466
+ catch (err) {
467
+ console.error(`Failed to delete thread ${thread.id} from remote storage:`, err);
468
+ // Continue with local cleanup even if remote delete fails
469
+ }
470
+ }
162
471
  await thread.fireEvent('destroyed');
163
472
  await fireEvent('thread.destroyed', thread);
164
473
  }
165
474
  finally {
166
- this.threads.delete(thread.id);
167
475
  threadEventListeners.delete(thread);
168
476
  }
169
477
  }
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentuity/runtime",
3
- "version": "0.0.61",
3
+ "version": "0.0.62",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Agentuity employees and contributors",
6
6
  "type": "module",
@@ -25,8 +25,8 @@
25
25
  "prepublishOnly": "bun run clean && bun run build"
26
26
  },
27
27
  "dependencies": {
28
- "@agentuity/core": "0.0.61",
29
- "@agentuity/server": "0.0.61",
28
+ "@agentuity/core": "0.0.62",
29
+ "@agentuity/server": "0.0.62",
30
30
  "@opentelemetry/api": "^1.9.0",
31
31
  "@opentelemetry/api-logs": "^0.207.0",
32
32
  "@opentelemetry/auto-instrumentations-node": "^0.66.0",
@@ -46,7 +46,9 @@
46
46
  "@traceloop/node-server-sdk": "0.21.1",
47
47
  "zod": "^4.1.12",
48
48
  "mailparser": "^3.7.1",
49
- "@types/mailparser": "^3.4.6"
49
+ "@types/mailparser": "^3.4.6",
50
+ "ws": "^8.18.0",
51
+ "@types/ws": "^8.5.13"
50
52
  },
51
53
  "peerDependencies": {
52
54
  "hono": "^4.10.3"
package/src/_server.ts CHANGED
@@ -154,9 +154,9 @@ export const createServer = async <TAppState>(
154
154
  return [globalServerInstance, globalAppState as TAppState];
155
155
  }
156
156
 
157
- startupPromise = new Promise((resolve) => {
158
- startupPromiseResolver = resolve;
159
- });
157
+ const { promise, resolve } = Promise.withResolvers<void>();
158
+ startupPromise = promise;
159
+ startupPromiseResolver = resolve;
160
160
 
161
161
  runtimeConfig.init();
162
162
 
@@ -537,11 +537,13 @@ const otelMiddleware = createMiddleware<Env>(async (c, next) => {
537
537
  await threadProvider.save(thread);
538
538
  span.setStatus({ code: SpanStatusCode.OK });
539
539
  if (shouldSendSession && canSendSessionEvents) {
540
+ const userData = session.serializeUserData();
540
541
  sessionEventProvider
541
542
  .complete({
542
543
  id: sessionId,
543
544
  statusCode: c.res.status,
544
545
  agentIds: Array.from(agentIds),
546
+ userData,
545
547
  })
546
548
  .then(() => {})
547
549
  .catch((ex) => c.var.logger.error(ex));
@@ -559,12 +561,14 @@ const otelMiddleware = createMiddleware<Env>(async (c, next) => {
559
561
  });
560
562
  c.var.logger.error(message);
561
563
  if (shouldSendSession && canSendSessionEvents) {
564
+ const userData = session.serializeUserData();
562
565
  sessionEventProvider
563
566
  .complete({
564
567
  id: sessionId,
565
568
  statusCode: c.res.status,
566
569
  error: message,
567
570
  agentIds: Array.from(agentIds),
571
+ userData,
568
572
  })
569
573
  .then(() => {})
570
574
  .catch((ex) => c.var.logger.error(ex));
@@ -576,11 +580,13 @@ const otelMiddleware = createMiddleware<Env>(async (c, next) => {
576
580
  } else {
577
581
  span.setStatus({ code: SpanStatusCode.OK });
578
582
  if (shouldSendSession && canSendSessionEvents) {
583
+ const userData = session.serializeUserData();
579
584
  sessionEventProvider
580
585
  .complete({
581
586
  id: sessionId,
582
587
  statusCode: c.res.status,
583
588
  agentIds: Array.from(agentIds),
589
+ userData,
584
590
  })
585
591
  .then(() => {})
586
592
  .catch((ex) => c.var.logger.error(ex));
@@ -597,12 +603,14 @@ const otelMiddleware = createMiddleware<Env>(async (c, next) => {
597
603
  });
598
604
  c.var.logger.error(message);
599
605
  if (shouldSendSession && canSendSessionEvents) {
606
+ const userData = session.serializeUserData();
600
607
  sessionEventProvider
601
608
  .complete({
602
609
  id: sessionId,
603
610
  statusCode: c.res.status,
604
611
  error: message,
605
612
  agentIds: Array.from(agentIds),
613
+ userData,
606
614
  })
607
615
  .then(() => {})
608
616
  .catch((ex) => c.var.logger.error(ex));
package/src/session.ts CHANGED
@@ -4,6 +4,8 @@ import type { Context } from 'hono';
4
4
  import { getCookie, setCookie } from 'hono/cookie';
5
5
  import { type Env, fireEvent } from './app';
6
6
  import type { AppState } from './index';
7
+ import { getServiceUrls } from '@agentuity/server';
8
+ import { WebSocket } from 'ws';
7
9
 
8
10
  export type ThreadEventName = 'destroyed';
9
11
  export type SessionEventName = 'completed';
@@ -195,6 +197,12 @@ export interface Session {
195
197
  eventName: 'completed',
196
198
  callback: (eventName: 'completed', session: Session) => Promise<void> | void
197
199
  ): void;
200
+
201
+ /**
202
+ * Return the session data as a serializable string or return undefined if not
203
+ * data should be serialized.
204
+ */
205
+ serializeUserData(): string | undefined;
198
206
  }
199
207
 
200
208
  /**
@@ -396,15 +404,17 @@ export function generateId(prefix?: string): string {
396
404
 
397
405
  export class DefaultThread implements Thread {
398
406
  #lastUsed: number;
407
+ #initialStateJson: string | undefined;
399
408
  readonly id: string;
400
409
  readonly state: Map<string, unknown>;
401
410
  private provider: ThreadProvider;
402
411
 
403
- constructor(provider: ThreadProvider, id: string) {
412
+ constructor(provider: ThreadProvider, id: string, initialStateJson?: string) {
404
413
  this.provider = provider;
405
414
  this.id = id;
406
415
  this.state = new Map();
407
416
  this.#lastUsed = Date.now();
417
+ this.#initialStateJson = initialStateJson;
408
418
  }
409
419
 
410
420
  addEventListener(eventName: ThreadEventName, callback: ThreadEventCallback<any>): void {
@@ -434,7 +444,7 @@ export class DefaultThread implements Thread {
434
444
  }
435
445
 
436
446
  async destroy(): Promise<void> {
437
- this.provider.destroy(this);
447
+ await this.provider.destroy(this);
438
448
  }
439
449
 
440
450
  touch() {
@@ -444,6 +454,28 @@ export class DefaultThread implements Thread {
444
454
  expired() {
445
455
  return Date.now() - this.#lastUsed >= 3.6e6; // 1 hour
446
456
  }
457
+
458
+ /**
459
+ * Check if thread state has been modified since restore
460
+ * @internal
461
+ */
462
+ isDirty(): boolean {
463
+ if (this.state.size === 0 && !this.#initialStateJson) {
464
+ return false;
465
+ }
466
+
467
+ const currentJson = JSON.stringify(Object.fromEntries(this.state));
468
+
469
+ return currentJson !== this.#initialStateJson;
470
+ }
471
+
472
+ /**
473
+ * Get serialized state for saving
474
+ * @internal
475
+ */
476
+ getSerializedState(): string {
477
+ return JSON.stringify(Object.fromEntries(this.state));
478
+ }
447
479
  }
448
480
 
449
481
  export class DefaultSession implements Session {
@@ -482,25 +514,305 @@ export class DefaultSession implements Session {
482
514
  async fireEvent(eventName: SessionEventName): Promise<void> {
483
515
  await fireSessionEvent(this, eventName);
484
516
  }
517
+
518
+ /**
519
+ * Serialize session state to JSON string for persistence.
520
+ * Returns undefined if state is empty or exceeds 1MB limit.
521
+ * @internal
522
+ */
523
+ serializeUserData(): string | undefined {
524
+ if (this.state.size === 0) {
525
+ return undefined;
526
+ }
527
+
528
+ try {
529
+ const obj = Object.fromEntries(this.state);
530
+ const json = JSON.stringify(obj);
531
+
532
+ // Check 1MB limit (1,048,576 bytes)
533
+ const sizeInBytes = new TextEncoder().encode(json).length;
534
+ if (sizeInBytes > 1048576) {
535
+ console.error(
536
+ `Session ${this.id} user_data exceeds 1MB limit (${sizeInBytes} bytes), data will not be persisted`
537
+ );
538
+ return undefined;
539
+ }
540
+
541
+ return json;
542
+ } catch (err) {
543
+ console.error(`Failed to serialize session ${this.id} user_data:`, err);
544
+ return undefined;
545
+ }
546
+ }
485
547
  }
486
548
 
487
- export class DefaultThreadProvider implements ThreadProvider {
488
- private threads = new Map<string, DefaultThread>();
549
+ /**
550
+ * WebSocket client for thread state persistence
551
+ * @internal
552
+ */
553
+ class ThreadWebSocketClient {
554
+ private ws: WebSocket | null = null;
555
+ private authenticated = false;
556
+ private pendingRequests = new Map<
557
+ string,
558
+ { resolve: (data?: string) => void; reject: (err: Error) => void }
559
+ >();
560
+ private requestCounter = 0;
561
+ private reconnectAttempts = 0;
562
+ private maxReconnectAttempts = 5;
563
+ private apiKey: string;
564
+ private wsUrl: string;
565
+ private wsConnecting: Promise<void> | null = null;
566
+
567
+ constructor(apiKey: string, wsUrl: string) {
568
+ this.apiKey = apiKey;
569
+ this.wsUrl = wsUrl;
570
+ }
489
571
 
490
- async initialize(_appState: AppState): Promise<void> {
491
- setInterval(() => {
492
- for (const [, thread] of this.threads) {
493
- if (thread.expired()) {
494
- void (async () => {
495
- try {
496
- await this.destroy(thread);
497
- } catch (err) {
498
- console.error('Failed to destroy expired thread', err);
572
+ async connect(): Promise<void> {
573
+ return new Promise((resolve, reject) => {
574
+ // Set connection timeout
575
+ const connectionTimeout = setTimeout(() => {
576
+ this.cleanup();
577
+ reject(new Error('WebSocket connection timeout (10s)'));
578
+ }, 10000);
579
+
580
+ try {
581
+ this.ws = new WebSocket(this.wsUrl);
582
+
583
+ this.ws.on('open', () => {
584
+ // Send authentication (do NOT clear timeout yet - wait for auth response)
585
+ this.ws?.send(JSON.stringify({ authorization: this.apiKey }));
586
+ });
587
+
588
+ this.ws.on('message', (data: any) => {
589
+ try {
590
+ const message = JSON.parse(data.toString());
591
+
592
+ // Handle auth response
593
+ if ('success' in message && !this.authenticated) {
594
+ clearTimeout(connectionTimeout);
595
+ if (message.success) {
596
+ this.authenticated = true;
597
+ this.reconnectAttempts = 0;
598
+ resolve();
599
+ } else {
600
+ const err = new Error(
601
+ `WebSocket authentication failed: ${message.error || 'Unknown error'}`
602
+ );
603
+ this.cleanup();
604
+ reject(err);
605
+ }
606
+ return;
499
607
  }
500
- })();
501
- }
608
+
609
+ // Handle action response
610
+ if ('id' in message && this.pendingRequests.has(message.id)) {
611
+ const pending = this.pendingRequests.get(message.id)!;
612
+ this.pendingRequests.delete(message.id);
613
+
614
+ if (message.success) {
615
+ pending.resolve(message.data);
616
+ } else {
617
+ pending.reject(new Error(message.error || 'Request failed'));
618
+ }
619
+ }
620
+ } catch {
621
+ // Ignore parse errors
622
+ }
623
+ });
624
+
625
+ this.ws.on('error', (err: Error) => {
626
+ clearTimeout(connectionTimeout);
627
+ if (!this.authenticated) {
628
+ reject(new Error(`WebSocket error: ${err.message}`));
629
+ }
630
+ });
631
+
632
+ this.ws.on('close', () => {
633
+ clearTimeout(connectionTimeout);
634
+ const wasAuthenticated = this.authenticated;
635
+ this.authenticated = false;
636
+
637
+ // Reject all pending requests
638
+ for (const [id, pending] of this.pendingRequests) {
639
+ pending.reject(new Error('WebSocket connection closed'));
640
+ this.pendingRequests.delete(id);
641
+ }
642
+
643
+ // Reject connecting promise if still pending
644
+ if (!wasAuthenticated) {
645
+ reject(new Error('WebSocket closed before authentication'));
646
+ }
647
+
648
+ // Attempt reconnection only if we were previously authenticated
649
+ if (wasAuthenticated && this.reconnectAttempts < this.maxReconnectAttempts) {
650
+ this.reconnectAttempts++;
651
+ const delay = Math.min(1000 * Math.pow(2, this.reconnectAttempts), 30000);
652
+
653
+ // Schedule reconnection with backoff delay
654
+ setTimeout(() => {
655
+ // Create new connection promise for reconnection
656
+ this.wsConnecting = this.connect().catch(() => {
657
+ // Reconnection failed, reset
658
+ this.wsConnecting = null;
659
+ });
660
+ }, delay);
661
+ }
662
+ });
663
+ } catch (err) {
664
+ clearTimeout(connectionTimeout);
665
+ reject(err);
502
666
  }
503
- }, 60_000).unref();
667
+ });
668
+ }
669
+
670
+ async restore(threadId: string): Promise<string | undefined> {
671
+ // Wait for connection/reconnection if in progress
672
+ if (this.wsConnecting) {
673
+ await this.wsConnecting;
674
+ }
675
+
676
+ if (!this.authenticated || !this.ws) {
677
+ throw new Error('WebSocket not connected or authenticated');
678
+ }
679
+
680
+ return new Promise((resolve, reject) => {
681
+ const requestId = `req_${++this.requestCounter}`;
682
+ this.pendingRequests.set(requestId, { resolve, reject });
683
+
684
+ const message = {
685
+ id: requestId,
686
+ action: 'restore',
687
+ data: { thread_id: threadId },
688
+ };
689
+
690
+ this.ws!.send(JSON.stringify(message));
691
+
692
+ // Timeout after 10 seconds
693
+ setTimeout(() => {
694
+ if (this.pendingRequests.has(requestId)) {
695
+ this.pendingRequests.delete(requestId);
696
+ reject(new Error('Request timeout'));
697
+ }
698
+ }, 10000);
699
+ });
700
+ }
701
+
702
+ async save(threadId: string, userData: string): Promise<void> {
703
+ // Wait for connection/reconnection if in progress
704
+ if (this.wsConnecting) {
705
+ await this.wsConnecting;
706
+ }
707
+
708
+ if (!this.authenticated || !this.ws) {
709
+ throw new Error('WebSocket not connected or authenticated');
710
+ }
711
+
712
+ // Check 1MB limit
713
+ const sizeInBytes = new TextEncoder().encode(userData).length;
714
+ if (sizeInBytes > 1048576) {
715
+ console.error(
716
+ `Thread ${threadId} user_data exceeds 1MB limit (${sizeInBytes} bytes), data will not be persisted`
717
+ );
718
+ return;
719
+ }
720
+
721
+ return new Promise((resolve, reject) => {
722
+ const requestId = crypto.randomUUID();
723
+ this.pendingRequests.set(requestId, {
724
+ resolve: () => resolve(),
725
+ reject,
726
+ });
727
+
728
+ const message = {
729
+ id: requestId,
730
+ action: 'save',
731
+ data: { thread_id: threadId, user_data: userData },
732
+ };
733
+
734
+ this.ws!.send(JSON.stringify(message));
735
+
736
+ // Timeout after 10 seconds
737
+ setTimeout(() => {
738
+ if (this.pendingRequests.has(requestId)) {
739
+ this.pendingRequests.delete(requestId);
740
+ reject(new Error('Request timeout'));
741
+ }
742
+ }, 10_000);
743
+ });
744
+ }
745
+
746
+ async delete(threadId: string): Promise<void> {
747
+ // Wait for connection/reconnection if in progress
748
+ if (this.wsConnecting) {
749
+ await this.wsConnecting;
750
+ }
751
+
752
+ if (!this.authenticated || !this.ws) {
753
+ throw new Error('WebSocket not connected or authenticated');
754
+ }
755
+
756
+ return new Promise((resolve, reject) => {
757
+ const requestId = crypto.randomUUID();
758
+ this.pendingRequests.set(requestId, {
759
+ resolve: () => resolve(),
760
+ reject,
761
+ });
762
+
763
+ const message = {
764
+ id: requestId,
765
+ action: 'delete',
766
+ data: { thread_id: threadId },
767
+ };
768
+
769
+ this.ws!.send(JSON.stringify(message));
770
+
771
+ // Timeout after 10 seconds
772
+ setTimeout(() => {
773
+ if (this.pendingRequests.has(requestId)) {
774
+ this.pendingRequests.delete(requestId);
775
+ reject(new Error('Request timeout'));
776
+ }
777
+ }, 10_000);
778
+ });
779
+ }
780
+
781
+ cleanup(): void {
782
+ if (this.ws) {
783
+ this.ws.close();
784
+ this.ws = null;
785
+ }
786
+ this.authenticated = false;
787
+ this.pendingRequests.clear();
788
+ }
789
+ }
790
+
791
+ export class DefaultThreadProvider implements ThreadProvider {
792
+ private wsClient: ThreadWebSocketClient | null = null;
793
+ private wsConnecting: Promise<void> | null = null;
794
+
795
+ async initialize(_appState: AppState): Promise<void> {
796
+ // Initialize WebSocket connection for thread persistence (async, non-blocking)
797
+ const apiKey = process.env.AGENTUITY_SDK_KEY;
798
+ if (apiKey) {
799
+ const serviceUrls = getServiceUrls();
800
+ const catalystUrl = serviceUrls.catalyst;
801
+ const wsUrl = new URL('/thread/ws', catalystUrl.replace(/^http/, 'ws'));
802
+
803
+ this.wsClient = new ThreadWebSocketClient(apiKey, wsUrl.toString());
804
+ // Connect in background, don't block initialization
805
+ this.wsConnecting = this.wsClient
806
+ .connect()
807
+ .then(() => {
808
+ this.wsConnecting = null;
809
+ })
810
+ .catch((err) => {
811
+ console.error('Failed to connect to thread WebSocket:', err);
812
+ this.wsClient = null;
813
+ this.wsConnecting = null;
814
+ });
815
+ }
504
816
  }
505
817
 
506
818
  async restore(ctx: Context<Env>): Promise<Thread> {
@@ -515,14 +827,40 @@ export class DefaultThreadProvider implements ThreadProvider {
515
827
 
516
828
  if (threadId) {
517
829
  setCookie(ctx, 'atid', threadId);
518
- const existing = this.threads.get(threadId);
519
- if (existing) {
520
- return existing;
830
+ }
831
+
832
+ // Wait for WebSocket connection if still connecting
833
+ if (this.wsConnecting) {
834
+ await this.wsConnecting;
835
+ }
836
+
837
+ // Restore thread state from WebSocket if available
838
+ let initialStateJson: string | undefined;
839
+ if (this.wsClient) {
840
+ try {
841
+ const restoredData = await this.wsClient.restore(threadId);
842
+ if (restoredData) {
843
+ initialStateJson = restoredData;
844
+ }
845
+ } catch {
846
+ // Continue with empty state rather than failing
847
+ }
848
+ }
849
+
850
+ const thread = new DefaultThread(this, threadId, initialStateJson);
851
+
852
+ // Populate thread state from restored data
853
+ if (initialStateJson) {
854
+ try {
855
+ const data = JSON.parse(initialStateJson);
856
+ for (const [key, value] of Object.entries(data)) {
857
+ thread.state.set(key, value);
858
+ }
859
+ } catch {
860
+ // Continue with empty state if parsing fails
521
861
  }
522
862
  }
523
863
 
524
- const thread = new DefaultThread(this, threadId);
525
- this.threads.set(thread.id, thread);
526
864
  await fireEvent('thread.created', thread);
527
865
  return thread;
528
866
  }
@@ -530,16 +868,45 @@ export class DefaultThreadProvider implements ThreadProvider {
530
868
  async save(thread: Thread): Promise<void> {
531
869
  if (thread instanceof DefaultThread) {
532
870
  thread.touch();
871
+
872
+ // Wait for WebSocket connection if still connecting
873
+ if (this.wsConnecting) {
874
+ await this.wsConnecting;
875
+ }
876
+
877
+ // Only save to WebSocket if state has changed
878
+ if (this.wsClient && thread.isDirty()) {
879
+ try {
880
+ const serialized = thread.getSerializedState();
881
+ await this.wsClient.save(thread.id, serialized);
882
+ } catch {
883
+ // Don't throw - allow request to complete even if save fails
884
+ }
885
+ }
533
886
  }
534
887
  }
535
888
 
536
889
  async destroy(thread: Thread): Promise<void> {
537
890
  if (thread instanceof DefaultThread) {
538
891
  try {
892
+ // Wait for WebSocket connection if still connecting
893
+ if (this.wsConnecting) {
894
+ await this.wsConnecting;
895
+ }
896
+
897
+ // Delete thread from remote storage
898
+ if (this.wsClient) {
899
+ try {
900
+ await this.wsClient.delete(thread.id);
901
+ } catch (err) {
902
+ console.error(`Failed to delete thread ${thread.id} from remote storage:`, err);
903
+ // Continue with local cleanup even if remote delete fails
904
+ }
905
+ }
906
+
539
907
  await thread.fireEvent('destroyed');
540
908
  await fireEvent('thread.destroyed', thread);
541
909
  } finally {
542
- this.threads.delete(thread.id);
543
910
  threadEventListeners.delete(thread);
544
911
  }
545
912
  }