@agentuity/runtime 0.0.61 → 0.0.63
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 +12 -4
- package/dist/_server.js.map +1 -1
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +1 -7
- package/dist/agent.js.map +1 -1
- package/dist/session.d.ts +68 -13
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +365 -36
- package/dist/session.js.map +1 -1
- package/package.json +6 -4
- package/src/_server.ts +12 -4
- package/src/agent.ts +1 -7
- package/src/session.ts +469 -44
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();
|
|
@@ -33,16 +35,32 @@ export function generateId(prefix) {
|
|
|
33
35
|
crypto.getRandomValues(arr);
|
|
34
36
|
return `${prefix}${prefix ? '_' : ''}${arr.toHex()}`;
|
|
35
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* DefaultThreadIDProvider will look for a cookie named `atid` and use that as
|
|
40
|
+
* the thread id or if not found, generate a new one.
|
|
41
|
+
*/
|
|
42
|
+
export class DefaultThreadIDProvider {
|
|
43
|
+
getThreadId(_appState, ctx) {
|
|
44
|
+
const cookie = getCookie(ctx);
|
|
45
|
+
let threadId;
|
|
46
|
+
if (cookie.atid?.startsWith('thrd_')) {
|
|
47
|
+
threadId = cookie.atid;
|
|
48
|
+
}
|
|
49
|
+
threadId = threadId || generateId('thrd');
|
|
50
|
+
setCookie(ctx, 'atid', threadId);
|
|
51
|
+
return threadId;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
36
54
|
export class DefaultThread {
|
|
37
|
-
#
|
|
55
|
+
#initialStateJson;
|
|
38
56
|
id;
|
|
39
57
|
state;
|
|
40
58
|
provider;
|
|
41
|
-
constructor(provider, id) {
|
|
59
|
+
constructor(provider, id, initialStateJson) {
|
|
42
60
|
this.provider = provider;
|
|
43
61
|
this.id = id;
|
|
44
62
|
this.state = new Map();
|
|
45
|
-
this.#
|
|
63
|
+
this.#initialStateJson = initialStateJson;
|
|
46
64
|
}
|
|
47
65
|
addEventListener(eventName, callback) {
|
|
48
66
|
let listeners = threadEventListeners.get(this);
|
|
@@ -70,13 +88,25 @@ export class DefaultThread {
|
|
|
70
88
|
await fireThreadEvent(this, eventName);
|
|
71
89
|
}
|
|
72
90
|
async destroy() {
|
|
73
|
-
this.provider.destroy(this);
|
|
91
|
+
await this.provider.destroy(this);
|
|
74
92
|
}
|
|
75
|
-
|
|
76
|
-
|
|
93
|
+
/**
|
|
94
|
+
* Check if thread state has been modified since restore
|
|
95
|
+
* @internal
|
|
96
|
+
*/
|
|
97
|
+
isDirty() {
|
|
98
|
+
if (this.state.size === 0 && !this.#initialStateJson) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
const currentJson = JSON.stringify(Object.fromEntries(this.state));
|
|
102
|
+
return currentJson !== this.#initialStateJson;
|
|
77
103
|
}
|
|
78
|
-
|
|
79
|
-
|
|
104
|
+
/**
|
|
105
|
+
* Get serialized state for saving
|
|
106
|
+
* @internal
|
|
107
|
+
*/
|
|
108
|
+
getSerializedState() {
|
|
109
|
+
return JSON.stringify(Object.fromEntries(this.state));
|
|
80
110
|
}
|
|
81
111
|
}
|
|
82
112
|
export class DefaultSession {
|
|
@@ -113,57 +143,356 @@ export class DefaultSession {
|
|
|
113
143
|
async fireEvent(eventName) {
|
|
114
144
|
await fireSessionEvent(this, eventName);
|
|
115
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Serialize session state to JSON string for persistence.
|
|
148
|
+
* Returns undefined if state is empty or exceeds 1MB limit.
|
|
149
|
+
* @internal
|
|
150
|
+
*/
|
|
151
|
+
serializeUserData() {
|
|
152
|
+
if (this.state.size === 0) {
|
|
153
|
+
return undefined;
|
|
154
|
+
}
|
|
155
|
+
try {
|
|
156
|
+
const obj = Object.fromEntries(this.state);
|
|
157
|
+
const json = JSON.stringify(obj);
|
|
158
|
+
// Check 1MB limit (1,048,576 bytes)
|
|
159
|
+
const sizeInBytes = new TextEncoder().encode(json).length;
|
|
160
|
+
if (sizeInBytes > 1048576) {
|
|
161
|
+
console.error(`Session ${this.id} user_data exceeds 1MB limit (${sizeInBytes} bytes), data will not be persisted`);
|
|
162
|
+
return undefined;
|
|
163
|
+
}
|
|
164
|
+
return json;
|
|
165
|
+
}
|
|
166
|
+
catch (err) {
|
|
167
|
+
console.error(`Failed to serialize session ${this.id} user_data:`, err);
|
|
168
|
+
return undefined;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
116
171
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
172
|
+
/**
|
|
173
|
+
* WebSocket client for thread state persistence
|
|
174
|
+
* @internal
|
|
175
|
+
*/
|
|
176
|
+
class ThreadWebSocketClient {
|
|
177
|
+
ws = null;
|
|
178
|
+
authenticated = false;
|
|
179
|
+
pendingRequests = new Map();
|
|
180
|
+
reconnectAttempts = 0;
|
|
181
|
+
maxReconnectAttempts = 5;
|
|
182
|
+
apiKey;
|
|
183
|
+
wsUrl;
|
|
184
|
+
wsConnecting = null;
|
|
185
|
+
constructor(apiKey, wsUrl) {
|
|
186
|
+
this.apiKey = apiKey;
|
|
187
|
+
this.wsUrl = wsUrl;
|
|
188
|
+
}
|
|
189
|
+
async connect() {
|
|
190
|
+
return new Promise((resolve, reject) => {
|
|
191
|
+
// Set connection timeout
|
|
192
|
+
const connectionTimeout = setTimeout(() => {
|
|
193
|
+
this.cleanup();
|
|
194
|
+
reject(new Error('WebSocket connection timeout (10s)'));
|
|
195
|
+
}, 10_000);
|
|
196
|
+
try {
|
|
197
|
+
this.ws = new WebSocket(this.wsUrl);
|
|
198
|
+
this.ws.on('open', () => {
|
|
199
|
+
// Send authentication (do NOT clear timeout yet - wait for auth response)
|
|
200
|
+
this.ws?.send(JSON.stringify({ authorization: this.apiKey }));
|
|
201
|
+
});
|
|
202
|
+
this.ws.on('message', (data) => {
|
|
203
|
+
try {
|
|
204
|
+
const message = JSON.parse(data.toString());
|
|
205
|
+
// Handle auth response
|
|
206
|
+
if ('success' in message && !this.authenticated) {
|
|
207
|
+
clearTimeout(connectionTimeout);
|
|
208
|
+
if (message.success) {
|
|
209
|
+
this.authenticated = true;
|
|
210
|
+
this.reconnectAttempts = 0;
|
|
211
|
+
resolve();
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
const err = new Error(`WebSocket authentication failed: ${message.error || 'Unknown error'}`);
|
|
215
|
+
this.cleanup();
|
|
216
|
+
reject(err);
|
|
217
|
+
}
|
|
218
|
+
return;
|
|
126
219
|
}
|
|
127
|
-
|
|
128
|
-
|
|
220
|
+
// Handle action response
|
|
221
|
+
if ('id' in message && this.pendingRequests.has(message.id)) {
|
|
222
|
+
const pending = this.pendingRequests.get(message.id);
|
|
223
|
+
this.pendingRequests.delete(message.id);
|
|
224
|
+
if (message.success) {
|
|
225
|
+
pending.resolve(message.data);
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
pending.reject(new Error(message.error || 'Request failed'));
|
|
229
|
+
}
|
|
129
230
|
}
|
|
130
|
-
}
|
|
131
|
-
|
|
231
|
+
}
|
|
232
|
+
catch {
|
|
233
|
+
// Ignore parse errors
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
this.ws.on('error', (err) => {
|
|
237
|
+
clearTimeout(connectionTimeout);
|
|
238
|
+
if (!this.authenticated) {
|
|
239
|
+
reject(new Error(`WebSocket error: ${err.message}`));
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
this.ws.on('close', () => {
|
|
243
|
+
clearTimeout(connectionTimeout);
|
|
244
|
+
const wasAuthenticated = this.authenticated;
|
|
245
|
+
this.authenticated = false;
|
|
246
|
+
// Reject all pending requests
|
|
247
|
+
for (const [id, pending] of this.pendingRequests) {
|
|
248
|
+
pending.reject(new Error('WebSocket connection closed'));
|
|
249
|
+
this.pendingRequests.delete(id);
|
|
250
|
+
}
|
|
251
|
+
// Reject connecting promise if still pending
|
|
252
|
+
if (!wasAuthenticated) {
|
|
253
|
+
reject(new Error('WebSocket closed before authentication'));
|
|
254
|
+
}
|
|
255
|
+
// Attempt reconnection only if we were previously authenticated
|
|
256
|
+
if (wasAuthenticated && this.reconnectAttempts < this.maxReconnectAttempts) {
|
|
257
|
+
this.reconnectAttempts++;
|
|
258
|
+
const delay = Math.min(1000 * Math.pow(2, this.reconnectAttempts), 30_000);
|
|
259
|
+
// Schedule reconnection with backoff delay
|
|
260
|
+
setTimeout(() => {
|
|
261
|
+
// Create new connection promise for reconnection
|
|
262
|
+
this.wsConnecting = this.connect().catch(() => {
|
|
263
|
+
// Reconnection failed, reset
|
|
264
|
+
this.wsConnecting = null;
|
|
265
|
+
});
|
|
266
|
+
}, delay);
|
|
267
|
+
}
|
|
268
|
+
});
|
|
132
269
|
}
|
|
133
|
-
|
|
270
|
+
catch (err) {
|
|
271
|
+
clearTimeout(connectionTimeout);
|
|
272
|
+
reject(err);
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
async restore(threadId) {
|
|
277
|
+
// Wait for connection/reconnection if in progress
|
|
278
|
+
if (this.wsConnecting) {
|
|
279
|
+
await this.wsConnecting;
|
|
280
|
+
}
|
|
281
|
+
if (!this.authenticated || !this.ws) {
|
|
282
|
+
throw new Error('WebSocket not connected or authenticated');
|
|
283
|
+
}
|
|
284
|
+
return new Promise((resolve, reject) => {
|
|
285
|
+
const requestId = crypto.randomUUID();
|
|
286
|
+
this.pendingRequests.set(requestId, { resolve, reject });
|
|
287
|
+
const message = {
|
|
288
|
+
id: requestId,
|
|
289
|
+
action: 'restore',
|
|
290
|
+
data: { thread_id: threadId },
|
|
291
|
+
};
|
|
292
|
+
this.ws.send(JSON.stringify(message));
|
|
293
|
+
// Timeout after 10 seconds
|
|
294
|
+
setTimeout(() => {
|
|
295
|
+
if (this.pendingRequests.has(requestId)) {
|
|
296
|
+
this.pendingRequests.delete(requestId);
|
|
297
|
+
reject(new Error('Request timeout'));
|
|
298
|
+
}
|
|
299
|
+
}, 10000);
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
async save(threadId, userData) {
|
|
303
|
+
// Wait for connection/reconnection if in progress
|
|
304
|
+
if (this.wsConnecting) {
|
|
305
|
+
await this.wsConnecting;
|
|
306
|
+
}
|
|
307
|
+
if (!this.authenticated || !this.ws) {
|
|
308
|
+
throw new Error('WebSocket not connected or authenticated');
|
|
309
|
+
}
|
|
310
|
+
// Check 1MB limit
|
|
311
|
+
const sizeInBytes = new TextEncoder().encode(userData).length;
|
|
312
|
+
if (sizeInBytes > 1048576) {
|
|
313
|
+
console.error(`Thread ${threadId} user_data exceeds 1MB limit (${sizeInBytes} bytes), data will not be persisted`);
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
return new Promise((resolve, reject) => {
|
|
317
|
+
const requestId = crypto.randomUUID();
|
|
318
|
+
this.pendingRequests.set(requestId, {
|
|
319
|
+
resolve: () => resolve(),
|
|
320
|
+
reject,
|
|
321
|
+
});
|
|
322
|
+
const message = {
|
|
323
|
+
id: requestId,
|
|
324
|
+
action: 'save',
|
|
325
|
+
data: { thread_id: threadId, user_data: userData },
|
|
326
|
+
};
|
|
327
|
+
this.ws.send(JSON.stringify(message));
|
|
328
|
+
// Timeout after 10 seconds
|
|
329
|
+
setTimeout(() => {
|
|
330
|
+
if (this.pendingRequests.has(requestId)) {
|
|
331
|
+
this.pendingRequests.delete(requestId);
|
|
332
|
+
reject(new Error('Request timeout'));
|
|
333
|
+
}
|
|
334
|
+
}, 10_000);
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
async delete(threadId) {
|
|
338
|
+
// Wait for connection/reconnection if in progress
|
|
339
|
+
if (this.wsConnecting) {
|
|
340
|
+
await this.wsConnecting;
|
|
341
|
+
}
|
|
342
|
+
if (!this.authenticated || !this.ws) {
|
|
343
|
+
throw new Error('WebSocket not connected or authenticated');
|
|
344
|
+
}
|
|
345
|
+
return new Promise((resolve, reject) => {
|
|
346
|
+
const requestId = crypto.randomUUID();
|
|
347
|
+
this.pendingRequests.set(requestId, {
|
|
348
|
+
resolve: () => resolve(),
|
|
349
|
+
reject,
|
|
350
|
+
});
|
|
351
|
+
const message = {
|
|
352
|
+
id: requestId,
|
|
353
|
+
action: 'delete',
|
|
354
|
+
data: { thread_id: threadId },
|
|
355
|
+
};
|
|
356
|
+
this.ws.send(JSON.stringify(message));
|
|
357
|
+
// Timeout after 10 seconds
|
|
358
|
+
setTimeout(() => {
|
|
359
|
+
if (this.pendingRequests.has(requestId)) {
|
|
360
|
+
this.pendingRequests.delete(requestId);
|
|
361
|
+
reject(new Error('Request timeout'));
|
|
362
|
+
}
|
|
363
|
+
}, 10_000);
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
cleanup() {
|
|
367
|
+
if (this.ws) {
|
|
368
|
+
this.ws.close();
|
|
369
|
+
this.ws = null;
|
|
370
|
+
}
|
|
371
|
+
this.authenticated = false;
|
|
372
|
+
this.pendingRequests.clear();
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
const validThreadIdCharacters = /^[a-zA-Z0-9-]+$/;
|
|
376
|
+
export class DefaultThreadProvider {
|
|
377
|
+
appState = null;
|
|
378
|
+
wsClient = null;
|
|
379
|
+
wsConnecting = null;
|
|
380
|
+
threadIDProvider = null;
|
|
381
|
+
async initialize(appState) {
|
|
382
|
+
this.appState = appState;
|
|
383
|
+
this.threadIDProvider = new DefaultThreadIDProvider();
|
|
384
|
+
// Initialize WebSocket connection for thread persistence (async, non-blocking)
|
|
385
|
+
const apiKey = process.env.AGENTUITY_SDK_KEY;
|
|
386
|
+
if (apiKey) {
|
|
387
|
+
const serviceUrls = getServiceUrls();
|
|
388
|
+
const catalystUrl = serviceUrls.catalyst;
|
|
389
|
+
const wsUrl = new URL('/thread/ws', catalystUrl.replace(/^http/, 'ws'));
|
|
390
|
+
this.wsClient = new ThreadWebSocketClient(apiKey, wsUrl.toString());
|
|
391
|
+
// Connect in background, don't block initialization
|
|
392
|
+
this.wsConnecting = this.wsClient
|
|
393
|
+
.connect()
|
|
394
|
+
.then(() => {
|
|
395
|
+
this.wsConnecting = null;
|
|
396
|
+
})
|
|
397
|
+
.catch((err) => {
|
|
398
|
+
console.error('Failed to connect to thread WebSocket:', err);
|
|
399
|
+
this.wsClient = null;
|
|
400
|
+
this.wsConnecting = null;
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
setThreadIDProvider(provider) {
|
|
405
|
+
this.threadIDProvider = provider;
|
|
134
406
|
}
|
|
135
407
|
async restore(ctx) {
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
threadId = cookie.atid;
|
|
408
|
+
const threadId = this.threadIDProvider.getThreadId(this.appState, ctx);
|
|
409
|
+
if (!threadId) {
|
|
410
|
+
throw new Error(`the ThreadIDProvider returned an empty thread id for getThreadId`);
|
|
140
411
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
412
|
+
if (!threadId.startsWith('thrd_')) {
|
|
413
|
+
throw new Error(`the ThreadIDProvider returned an invalid thread id (${threadId}) for getThreadId. The thread id must start with the prefix 'thrd_'.`);
|
|
414
|
+
}
|
|
415
|
+
if (threadId.length > 64) {
|
|
416
|
+
throw new Error(`the ThreadIDProvider returned an invalid thread id (${threadId}) for getThreadId. The thread id must be less than 64 characters long.`);
|
|
417
|
+
}
|
|
418
|
+
if (threadId.length < 32) {
|
|
419
|
+
throw new Error(`the ThreadIDProvider returned an invalid thread id (${threadId}) for getThreadId. The thread id must be at least 32 characters long.`);
|
|
420
|
+
}
|
|
421
|
+
if (!validThreadIdCharacters.test(threadId.substring(5))) {
|
|
422
|
+
throw new Error(`the ThreadIDProvider returned an invalid thread id (${threadId}) for getThreadId. The thread id must contain only characters that match the regular expression [a-zA-Z0-9-].`);
|
|
423
|
+
}
|
|
424
|
+
// Wait for WebSocket connection if still connecting
|
|
425
|
+
if (this.wsConnecting) {
|
|
426
|
+
await this.wsConnecting;
|
|
427
|
+
}
|
|
428
|
+
// Restore thread state from WebSocket if available
|
|
429
|
+
let initialStateJson;
|
|
430
|
+
if (this.wsClient) {
|
|
431
|
+
try {
|
|
432
|
+
const restoredData = await this.wsClient.restore(threadId);
|
|
433
|
+
if (restoredData) {
|
|
434
|
+
initialStateJson = restoredData;
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
catch {
|
|
438
|
+
// Continue with empty state rather than failing
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
const thread = new DefaultThread(this, threadId, initialStateJson);
|
|
442
|
+
// Populate thread state from restored data
|
|
443
|
+
if (initialStateJson) {
|
|
444
|
+
try {
|
|
445
|
+
const data = JSON.parse(initialStateJson);
|
|
446
|
+
for (const [key, value] of Object.entries(data)) {
|
|
447
|
+
thread.state.set(key, value);
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
catch {
|
|
451
|
+
// Continue with empty state if parsing fails
|
|
147
452
|
}
|
|
148
453
|
}
|
|
149
|
-
const thread = new DefaultThread(this, threadId);
|
|
150
|
-
this.threads.set(thread.id, thread);
|
|
151
454
|
await fireEvent('thread.created', thread);
|
|
152
455
|
return thread;
|
|
153
456
|
}
|
|
154
457
|
async save(thread) {
|
|
155
458
|
if (thread instanceof DefaultThread) {
|
|
156
|
-
|
|
459
|
+
// Wait for WebSocket connection if still connecting
|
|
460
|
+
if (this.wsConnecting) {
|
|
461
|
+
await this.wsConnecting;
|
|
462
|
+
}
|
|
463
|
+
// Only save to WebSocket if state has changed
|
|
464
|
+
if (this.wsClient && thread.isDirty()) {
|
|
465
|
+
try {
|
|
466
|
+
const serialized = thread.getSerializedState();
|
|
467
|
+
await this.wsClient.save(thread.id, serialized);
|
|
468
|
+
}
|
|
469
|
+
catch {
|
|
470
|
+
// Don't throw - allow request to complete even if save fails
|
|
471
|
+
}
|
|
472
|
+
}
|
|
157
473
|
}
|
|
158
474
|
}
|
|
159
475
|
async destroy(thread) {
|
|
160
476
|
if (thread instanceof DefaultThread) {
|
|
161
477
|
try {
|
|
478
|
+
// Wait for WebSocket connection if still connecting
|
|
479
|
+
if (this.wsConnecting) {
|
|
480
|
+
await this.wsConnecting;
|
|
481
|
+
}
|
|
482
|
+
// Delete thread from remote storage
|
|
483
|
+
if (this.wsClient) {
|
|
484
|
+
try {
|
|
485
|
+
await this.wsClient.delete(thread.id);
|
|
486
|
+
}
|
|
487
|
+
catch (err) {
|
|
488
|
+
console.error(`Failed to delete thread ${thread.id} from remote storage:`, err);
|
|
489
|
+
// Continue with local cleanup even if remote delete fails
|
|
490
|
+
}
|
|
491
|
+
}
|
|
162
492
|
await thread.fireEvent('destroyed');
|
|
163
493
|
await fireEvent('thread.destroyed', thread);
|
|
164
494
|
}
|
|
165
495
|
finally {
|
|
166
|
-
this.threads.delete(thread.id);
|
|
167
496
|
threadEventListeners.delete(thread);
|
|
168
497
|
}
|
|
169
498
|
}
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAY,SAAS,EAAE,MAAM,OAAO,CAAC;AA6V5C,oEAAoE;AACpE,MAAM,oBAAoB,GAAG,IAAI,OAAO,EAGrC,CAAC;AACJ,MAAM,qBAAqB,GAAG,IAAI,OAAO,EAGtC,CAAC;AAEJ,wCAAwC;AACxC,KAAK,UAAU,eAAe,CAAC,MAAc,EAAE,SAA0B;IACxE,MAAM,SAAS,GAAG,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,CAAC,SAAS;QAAE,OAAO;IAEvB,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO;IAE/C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAClC,MAAO,QAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;AACF,CAAC;AAED,yCAAyC;AACzC,KAAK,UAAU,gBAAgB,CAAC,OAAgB,EAAE,SAA2B;IAC5E,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrD,IAAI,CAAC,SAAS;QAAE,OAAO;IAEvB,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO;IAE/C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAClC,MAAO,QAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;AACF,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,UAAU,CAAC,MAAe;IACzC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC/B,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,OAAO,aAAa;IACzB,SAAS,CAAS;IACT,EAAE,CAAS;IACX,KAAK,CAAuB;IAC7B,QAAQ,CAAiB;IAEjC,YAAY,QAAwB,EAAE,EAAU;QAC/C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,CAAC;IAED,gBAAgB,CAAC,SAA0B,EAAE,QAAkC;QAC9E,IAAI,SAAS,GAAG,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;YACtB,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;YACtB,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACrC,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAED,mBAAmB,CAAC,SAA0B,EAAE,QAAkC;QACjF,MAAM,SAAS,GAAG,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAA0B;QACzC,MAAM,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,OAAO;QACZ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,CAAC;IAED,OAAO;QACN,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC,SAAS;IACvD,CAAC;CACD;AAED,MAAM,OAAO,cAAc;IACjB,EAAE,CAAS;IACX,MAAM,CAAS;IACf,KAAK,CAAuB;IAErC,YAAY,MAAc,EAAE,EAAU;QACrC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;IACxB,CAAC;IAED,gBAAgB,CAAC,SAA2B,EAAE,QAAmC;QAChF,IAAI,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;YACtB,qBAAqB,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;YACtB,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACrC,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAED,mBAAmB,CAAC,SAA2B,EAAE,QAAmC;QACnF,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAA2B;QAC1C,MAAM,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC;CACD;AAED,MAAM,OAAO,qBAAqB;IACzB,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;IAEnD,KAAK,CAAC,UAAU,CAAC,SAAmB;QACnC,WAAW,CAAC,GAAG,EAAE;YAChB,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACvC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;oBACtB,KAAK,CAAC,KAAK,IAAI,EAAE;wBAChB,IAAI,CAAC;4BACJ,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;wBAC5B,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACd,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAC;wBACxD,CAAC;oBACF,CAAC,CAAC,EAAE,CAAC;gBACN,CAAC;YACF,CAAC;QACF,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAiB;QAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,QAA4B,CAAC;QAEjC,IAAI,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,CAAC;QAED,QAAQ,GAAG,QAAQ,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QAE1C,IAAI,QAAQ,EAAE,CAAC;YACd,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,QAAQ,EAAE,CAAC;gBACd,OAAO,QAAQ,CAAC;YACjB,CAAC;QACF,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACpC,MAAM,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAC1C,OAAO,MAAM,CAAC;IACf,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc;QACxB,IAAI,MAAM,YAAY,aAAa,EAAE,CAAC;YACrC,MAAM,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;IACF,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc;QAC3B,IAAI,MAAM,YAAY,aAAa,EAAE,CAAC;YACrC,IAAI,CAAC;gBACJ,MAAM,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBACpC,MAAM,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;YAC7C,CAAC;oBAAS,CAAC;gBACV,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC/B,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACrC,CAAC;QACF,CAAC;IACF,CAAC;CACD;AAED,MAAM,OAAO,sBAAsB;IAC1B,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IAErD,KAAK,CAAC,UAAU,CAAC,SAAmB;QACnC,kDAAkD;IACnD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,SAAiB;QAC9C,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,OAAO,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAChD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACtC,MAAM,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAgB;QAC1B,IAAI,OAAO,YAAY,cAAc,EAAE,CAAC;YACvC,IAAI,CAAC;gBACJ,MAAM,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBACrC,MAAM,SAAS,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;YAC/C,CAAC;oBAAS,CAAC;gBACV,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACjC,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACvC,CAAC;QACF,CAAC;IACF,CAAC;CACD"}
|
|
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.63",
|
|
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.63",
|
|
29
|
+
"@agentuity/server": "0.0.63",
|
|
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
|
|
|
@@ -431,7 +431,7 @@ export const createServer = async <TAppState>(
|
|
|
431
431
|
const createAgentuityAPIs = () => {
|
|
432
432
|
const router = new Hono<Env>();
|
|
433
433
|
router.get('idle', (c) => {
|
|
434
|
-
if (isIdle()
|
|
434
|
+
if (isIdle() && !isShutdown) {
|
|
435
435
|
return c.text('OK', { status: 200 });
|
|
436
436
|
}
|
|
437
437
|
return c.text('NO', { status: 200 });
|
|
@@ -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/agent.ts
CHANGED
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
type StandardSchemaV1,
|
|
7
7
|
type StreamStorage,
|
|
8
8
|
type VectorStorage,
|
|
9
|
+
toCamelCase,
|
|
9
10
|
} from '@agentuity/core';
|
|
10
11
|
import { context, SpanStatusCode, type Tracer, trace } from '@opentelemetry/api';
|
|
11
12
|
import type { Context, MiddlewareHandler } from 'hono';
|
|
@@ -1594,13 +1595,6 @@ const createAgentRunner = <
|
|
|
1594
1595
|
export const populateAgentsRegistry = (ctx: Context): any => {
|
|
1595
1596
|
const agentsObj: any = {};
|
|
1596
1597
|
|
|
1597
|
-
// Convert kebab-case to camelCase
|
|
1598
|
-
const toCamelCase = (str: string): string => {
|
|
1599
|
-
return str
|
|
1600
|
-
.replace(/[-_\s]+(.)?/g, (_, char) => (char ? char.toUpperCase() : ''))
|
|
1601
|
-
.replace(/^(.)/, (char) => char.toLowerCase());
|
|
1602
|
-
};
|
|
1603
|
-
|
|
1604
1598
|
// Build nested structure for agents and subagents
|
|
1605
1599
|
for (const [name, agentFn] of agents) {
|
|
1606
1600
|
const runner = createAgentRunner(agentFn, ctx);
|