@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 +11 -3
- package/dist/_server.js.map +1 -1
- package/dist/session.d.ts +24 -2
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +330 -22
- package/dist/session.js.map +1 -1
- package/package.json +6 -4
- package/src/_server.ts +11 -3
- package/src/session.ts +389 -22
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
|
-
|
|
111
|
-
|
|
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));
|
package/dist/_server.js.map
CHANGED
|
@@ -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
|
|
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>;
|
package/dist/session.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AACA,qEAAqE;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAAE,KAAK,GAAG,EAAa,MAAM,OAAO,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
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
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
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
|
-
|
|
128
|
-
|
|
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
|
-
|
|
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
|
-
|
|
145
|
-
|
|
146
|
-
|
|
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
|
}
|
package/dist/session.js.map
CHANGED
|
@@ -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.
|
|
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.
|
|
29
|
-
"@agentuity/server": "0.0.
|
|
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
|
-
|
|
158
|
-
|
|
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
|
-
|
|
488
|
-
|
|
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
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
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
|
-
}
|
|
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
|
-
|
|
519
|
-
|
|
520
|
-
|
|
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
|
}
|