@agentuity/runtime 0.0.103 → 0.0.105

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +61 -35
  2. package/dist/_config.d.ts.map +1 -1
  3. package/dist/_config.js +9 -2
  4. package/dist/_config.js.map +1 -1
  5. package/dist/agent.d.ts.map +1 -1
  6. package/dist/agent.js +6 -0
  7. package/dist/agent.js.map +1 -1
  8. package/dist/app.d.ts +5 -2
  9. package/dist/app.d.ts.map +1 -1
  10. package/dist/app.js.map +1 -1
  11. package/dist/eval.d.ts +2 -0
  12. package/dist/eval.d.ts.map +1 -1
  13. package/dist/handlers/cron.d.ts +47 -0
  14. package/dist/handlers/cron.d.ts.map +1 -0
  15. package/dist/handlers/cron.js +49 -0
  16. package/dist/handlers/cron.js.map +1 -0
  17. package/dist/handlers/index.d.ts +5 -0
  18. package/dist/handlers/index.d.ts.map +1 -0
  19. package/dist/handlers/index.js +5 -0
  20. package/dist/handlers/index.js.map +1 -0
  21. package/dist/handlers/sse.d.ts +74 -0
  22. package/dist/handlers/sse.d.ts.map +1 -0
  23. package/dist/handlers/sse.js +70 -0
  24. package/dist/handlers/sse.js.map +1 -0
  25. package/dist/handlers/stream.d.ts +52 -0
  26. package/dist/handlers/stream.d.ts.map +1 -0
  27. package/dist/handlers/stream.js +75 -0
  28. package/dist/handlers/stream.js.map +1 -0
  29. package/dist/handlers/websocket.d.ts +49 -0
  30. package/dist/handlers/websocket.d.ts.map +1 -0
  31. package/dist/handlers/websocket.js +130 -0
  32. package/dist/handlers/websocket.js.map +1 -0
  33. package/dist/index.d.ts +2 -2
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +4 -2
  36. package/dist/index.js.map +1 -1
  37. package/dist/otel/logger.d.ts +1 -4
  38. package/dist/otel/logger.d.ts.map +1 -1
  39. package/dist/otel/logger.js +11 -2
  40. package/dist/otel/logger.js.map +1 -1
  41. package/dist/router.d.ts +46 -236
  42. package/dist/router.d.ts.map +1 -1
  43. package/dist/router.js +82 -349
  44. package/dist/router.js.map +1 -1
  45. package/dist/workbench.d.ts +6 -2
  46. package/dist/workbench.d.ts.map +1 -1
  47. package/dist/workbench.js +29 -26
  48. package/dist/workbench.js.map +1 -1
  49. package/package.json +5 -7
  50. package/src/_config.ts +9 -2
  51. package/src/agent.ts +6 -0
  52. package/src/app.ts +7 -2
  53. package/src/eval.ts +2 -0
  54. package/src/handlers/cron.ts +70 -0
  55. package/src/handlers/index.ts +4 -0
  56. package/src/handlers/sse.ts +118 -0
  57. package/src/handlers/stream.ts +86 -0
  58. package/src/handlers/websocket.ts +153 -0
  59. package/src/index.ts +16 -3
  60. package/src/otel/logger.ts +13 -2
  61. package/src/router.ts +110 -597
  62. package/src/workbench.ts +30 -27
  63. package/dist/io/email.d.ts +0 -77
  64. package/dist/io/email.d.ts.map +0 -1
  65. package/dist/io/email.js +0 -162
  66. package/dist/io/email.js.map +0 -1
  67. package/src/io/email.ts +0 -191
package/dist/router.js CHANGED
@@ -1,29 +1,26 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- /* eslint-disable @typescript-eslint/no-empty-object-type */
3
- import { Hono, } from 'hono';
4
- import { stream as honoStream, streamSSE as honoStreamSSE } from 'hono/streaming';
5
- import { upgradeWebSocket } from 'hono/bun';
6
- import { hash, returnResponse } from './_util';
7
- import { getAgentAsyncLocalStorage } from './_context';
8
- import { parseEmail } from './io/email';
2
+ import { Hono } from 'hono';
3
+ import { returnResponse } from './_util';
9
4
  /**
10
5
  * Creates a Hono router with extended methods for Agentuity-specific routing patterns.
11
6
  *
12
- * In addition to standard HTTP methods (get, post, put, delete, patch), the router includes:
13
- * - **stream()** - Stream responses with ReadableStream
14
- * - **websocket()** - WebSocket connections
15
- * - **sse()** - Server-Sent Events
16
- * - **email()** - Email handler routing
17
- * - **sms()** - SMS handler routing
18
- * - **cron()** - Scheduled task routing
7
+ * Standard HTTP methods (get, post, put, delete, patch) are available, plus middleware
8
+ * functions for specialized protocols:
9
+ *
10
+ * - **websocket()** - WebSocket connections (import { websocket } from '@agentuity/runtime')
11
+ * - **sse()** - Server-Sent Events (import { sse } from '@agentuity/runtime')
12
+ * - **stream()** - Streaming responses (import { stream } from '@agentuity/runtime')
13
+ * - **cron()** - Scheduled tasks (import { cron } from '@agentuity/runtime')
19
14
  *
20
15
  * @template E - Environment type (Hono Env)
21
16
  * @template S - Schema type for route definitions
22
17
  *
23
- * @returns Extended Hono router with custom methods
18
+ * @returns Extended Hono router
24
19
  *
25
20
  * @example
26
21
  * ```typescript
22
+ * import { createRouter, websocket, sse, stream, cron } from '@agentuity/runtime';
23
+ *
27
24
  * const router = createRouter();
28
25
  *
29
26
  * // Standard HTTP routes
@@ -33,54 +30,32 @@ import { parseEmail } from './io/email';
33
30
  * return c.json({ received: body });
34
31
  * });
35
32
  *
36
- * // Streaming response
37
- * router.stream('/events', (c) => {
38
- * return new ReadableStream({
39
- * start(controller) {
40
- * controller.enqueue('event 1\n');
41
- * controller.enqueue('event 2\n');
42
- * controller.close();
43
- * }
44
- * });
45
- * });
46
- *
47
33
  * // WebSocket connection
48
- * router.websocket('/ws', (c) => (ws) => {
34
+ * router.get('/ws', websocket((c, ws) => {
49
35
  * ws.onMessage((event) => {
50
- * console.log('Received:', event.data);
51
36
  * ws.send('Echo: ' + event.data);
52
37
  * });
53
- * });
38
+ * }));
54
39
  *
55
40
  * // Server-Sent Events
56
- * router.sse('/notifications', (c) => async (stream) => {
57
- * let count = 0;
58
- * const interval = setInterval(() => {
59
- * stream.writeSSE({ data: `Message ${++count}` });
60
- * if (count >= 10) {
61
- * clearInterval(interval);
62
- * stream.close();
63
- * }
64
- * }, 1000);
65
- * });
41
+ * router.get('/events', sse((c, stream) => {
42
+ * stream.writeSSE({ data: 'Hello', event: 'message' });
43
+ * }));
66
44
  *
67
- * // Email routing
68
- * router.email('support@example.com', (email, c) => {
69
- * console.log('From:', email.fromEmail());
70
- * console.log('Subject:', email.subject());
71
- * return c.text('Email received');
72
- * });
73
- *
74
- * // SMS routing
75
- * router.sms({ number: '+1234567890' }, (c) => {
76
- * return c.text('SMS received');
77
- * });
45
+ * // Streaming response
46
+ * router.post('/stream', stream((c) => {
47
+ * return new ReadableStream({
48
+ * start(controller) {
49
+ * controller.enqueue('data\n');
50
+ * controller.close();
51
+ * }
52
+ * });
53
+ * }));
78
54
  *
79
- * // Scheduled cron
80
- * router.cron('0 0 * * *', (c) => {
81
- * console.log('Daily task running');
82
- * return c.text('OK');
83
- * });
55
+ * // Cron job
56
+ * router.post('/daily', cron('0 0 * * *', (c) => {
57
+ * return { status: 'complete' };
58
+ * }));
84
59
  * ```
85
60
  */
86
61
  export const createRouter = () => {
@@ -127,303 +102,61 @@ export const createRouter = () => {
127
102
  return _originalInvoker(path, ...newArgs);
128
103
  };
129
104
  }
130
- // shim in special routes
131
- _router.email = (address, ...args) => {
132
- let middleware;
133
- let handler;
134
- if (args.length === 1) {
135
- handler = args[0];
136
- }
137
- else {
138
- middleware = args[0];
139
- handler = args[1];
140
- }
141
- const id = hash(address);
142
- const path = `/${id}`;
143
- // registerEmailHandler(address)
144
- const wrapper = async (c) => {
145
- const contentType = (c.req.header('content-type') || '').trim().toLowerCase();
146
- if (!contentType.includes('message/rfc822')) {
147
- return c.text('Bad Request: Content-Type must be message/rfc822', 400);
148
- }
149
- const arrayBuffer = await c.req.arrayBuffer();
150
- const buffer = Buffer.from(arrayBuffer);
151
- const email = await parseEmail(buffer);
152
- let result = handler(email, c);
153
- if (result instanceof Promise)
154
- result = await result;
155
- if (result === undefined) {
156
- return c.text('OK', 200);
157
- }
158
- return returnResponse(c, result);
159
- };
160
- if (middleware) {
161
- return router.post(path, middleware, wrapper);
162
- }
163
- else {
164
- return router.post(path, wrapper);
165
- }
166
- };
167
- _router.sms = ({ number }, handler) => {
168
- const id = hash(number);
169
- const path = `/${id}`;
170
- // registerSMSHandler(number)
171
- const wrapper = async (c) => {
172
- let result = handler(c);
173
- if (result instanceof Promise)
174
- result = await result;
175
- return returnResponse(c, result);
176
- };
177
- return router.post(path, wrapper);
105
+ // Deprecated stubs that throw errors with migration instructions
106
+ _router.websocket = (path, ..._args) => {
107
+ throw new Error(`router.websocket() is deprecated and has been removed.\n\n` +
108
+ `Migration: Use the websocket middleware instead:\n\n` +
109
+ ` import { createRouter, websocket } from '@agentuity/runtime';\n\n` +
110
+ ` const router = createRouter();\n\n` +
111
+ ` // Before (deprecated):\n` +
112
+ ` // router.websocket('${path}', (c) => (ws) => { ... });\n\n` +
113
+ ` // After:\n` +
114
+ ` router.get('${path}', websocket((c, ws) => {\n` +
115
+ ` ws.onMessage((event) => {\n` +
116
+ ` ws.send('Echo: ' + event.data);\n` +
117
+ ` });\n` +
118
+ ` }));`);
178
119
  };
179
- _router.cron = (schedule, handler) => {
180
- const id = hash(schedule);
181
- const path = `/${id}`;
182
- // registerCronHandler(schedule)
183
- const wrapper = async (c) => {
184
- let result = handler(c);
185
- if (result instanceof Promise)
186
- result = await result;
187
- return returnResponse(c, result);
188
- };
189
- return router.post(path, wrapper);
120
+ _router.sse = (path, ..._args) => {
121
+ throw new Error(`router.sse() is deprecated and has been removed.\n\n` +
122
+ `Migration: Use the sse middleware instead:\n\n` +
123
+ ` import { createRouter, sse } from '@agentuity/runtime';\n\n` +
124
+ ` const router = createRouter();\n\n` +
125
+ ` // Before (deprecated):\n` +
126
+ ` // router.sse('${path}', (c) => async (stream) => { ... });\n\n` +
127
+ ` // After:\n` +
128
+ ` router.get('${path}', sse((c, stream) => {\n` +
129
+ ` stream.writeSSE({ data: 'Hello', event: 'message' });\n` +
130
+ ` }));`);
190
131
  };
191
- _router.stream = (path, ...args) => {
192
- let middleware;
193
- let handler;
194
- if (args.length === 1) {
195
- handler = args[0];
196
- }
197
- else {
198
- middleware = args[0];
199
- handler = args[1];
200
- }
201
- const wrapper = (c) => {
202
- // Capture the AgentContext from the request
203
- const asyncLocalStorage = getAgentAsyncLocalStorage();
204
- const capturedContext = asyncLocalStorage.getStore();
205
- // Set Content-Type header for streaming response detection by clients
206
- c.header('Content-Type', 'application/octet-stream');
207
- return honoStream(c, async (s) => {
208
- const runInContext = async () => {
209
- try {
210
- let streamResult = handler(c);
211
- if (streamResult instanceof Promise)
212
- streamResult = await streamResult;
213
- await s.pipe(streamResult);
214
- }
215
- catch (err) {
216
- c.var.logger.error('Stream error:', err);
217
- throw err;
218
- }
219
- };
220
- if (capturedContext) {
221
- await asyncLocalStorage.run(capturedContext, runInContext);
222
- }
223
- else {
224
- await runInContext();
225
- }
226
- });
227
- };
228
- // Use POST for stream routes - allows accepting request body
229
- // (validators will handle input validation if present)
230
- if (middleware) {
231
- return router.post(path, middleware, wrapper);
232
- }
233
- else {
234
- return router.post(path, wrapper);
235
- }
132
+ _router.stream = (path, ..._args) => {
133
+ throw new Error(`router.stream() is deprecated and has been removed.\n\n` +
134
+ `Migration: Use the stream middleware instead:\n\n` +
135
+ ` import { createRouter, stream } from '@agentuity/runtime';\n\n` +
136
+ ` const router = createRouter();\n\n` +
137
+ ` // Before (deprecated):\n` +
138
+ ` // router.stream('${path}', (c) => new ReadableStream({ ... }));\n\n` +
139
+ ` // After:\n` +
140
+ ` router.post('${path}', stream((c) => {\n` +
141
+ ` return new ReadableStream({\n` +
142
+ ` start(controller) {\n` +
143
+ ` controller.enqueue('data\\n');\n` +
144
+ ` controller.close();\n` +
145
+ ` }\n` +
146
+ ` });\n` +
147
+ ` }));`);
236
148
  };
237
- _router.websocket = (path, ...args) => {
238
- let middleware;
239
- let handler;
240
- if (args.length === 1) {
241
- handler = args[0];
242
- }
243
- else {
244
- middleware = args[0];
245
- handler = args[1];
246
- }
247
- // Use upgradeWebSocket directly from hono/bun
248
- const wrapper = upgradeWebSocket((c) => {
249
- let openHandler;
250
- let messageHandler;
251
- let closeHandler;
252
- let initialized = false;
253
- // Capture the AgentContext from the upgrade request
254
- const asyncLocalStorage = getAgentAsyncLocalStorage();
255
- const capturedContext = asyncLocalStorage.getStore();
256
- const wsConnection = {
257
- onOpen: (h) => {
258
- openHandler = h;
259
- },
260
- onMessage: (h) => {
261
- messageHandler = h;
262
- },
263
- onClose: (h) => {
264
- closeHandler = h;
265
- },
266
- send: (_data) => {
267
- // This will be bound to the actual ws in the handlers
268
- },
269
- };
270
- const setupResult = handler(c);
271
- const setupFn = typeof setupResult === 'function' ? setupResult : null;
272
- // Call setup IMMEDIATELY during upgrade, not in onOpen
273
- // This allows the user's code to register handlers before events fire
274
- if (setupFn) {
275
- if (capturedContext) {
276
- asyncLocalStorage.run(capturedContext, () => setupFn(wsConnection));
277
- }
278
- else {
279
- setupFn(wsConnection);
280
- }
281
- initialized = true;
282
- }
283
- return {
284
- onOpen: async (event, ws) => {
285
- try {
286
- // Bind the real ws.send now that we have the actual websocket
287
- wsConnection.send = (data) => ws.send(data);
288
- if (openHandler) {
289
- // Run handler in captured context
290
- const handler = openHandler;
291
- if (capturedContext) {
292
- await asyncLocalStorage.run(capturedContext, () => handler(event));
293
- }
294
- else {
295
- await handler(event);
296
- }
297
- }
298
- }
299
- catch (err) {
300
- c.var.logger?.error('WebSocket onOpen error:', err);
301
- throw err;
302
- }
303
- },
304
- onMessage: async (event, ws) => {
305
- try {
306
- // Lazy initialization fallback (shouldn't normally happen)
307
- if (!initialized && setupFn) {
308
- wsConnection.send = (data) => ws.send(data);
309
- if (capturedContext) {
310
- await asyncLocalStorage.run(capturedContext, async () => {
311
- const result = setupFn(wsConnection);
312
- if (result instanceof Promise)
313
- await result;
314
- });
315
- }
316
- else {
317
- const result = setupFn(wsConnection);
318
- if (result instanceof Promise)
319
- await result;
320
- }
321
- initialized = true;
322
- }
323
- if (messageHandler) {
324
- // Run handler in captured context
325
- const handler = messageHandler;
326
- if (capturedContext) {
327
- await asyncLocalStorage.run(capturedContext, () => handler(event));
328
- }
329
- else {
330
- await handler(event);
331
- }
332
- }
333
- }
334
- catch (err) {
335
- c.var.logger?.error('WebSocket onMessage error:', err);
336
- throw err;
337
- }
338
- },
339
- onClose: async (event, _ws) => {
340
- try {
341
- if (closeHandler) {
342
- // Run handler in captured context
343
- const handler = closeHandler;
344
- if (capturedContext) {
345
- await asyncLocalStorage.run(capturedContext, () => handler(event));
346
- }
347
- else {
348
- await handler(event);
349
- }
350
- }
351
- }
352
- catch (err) {
353
- c.var.logger?.error('WebSocket onClose error:', err);
354
- }
355
- },
356
- };
357
- });
358
- // wrapper is what upgradeWebSocket(...) returned. Force arity=2 so our get shim
359
- // recognizes it as middleware and does not wrap/convert undefined -> 200.
360
- const wsMiddleware = (c, next) => wrapper(c, next);
361
- if (middleware) {
362
- // Compose into a single middleware to avoid the 3-arg route which treats the
363
- // second function as a handler and wraps it.
364
- const composed = async (c, next) => {
365
- return middleware(c, async () => {
366
- await wsMiddleware(c, next);
367
- });
368
- };
369
- return router.get(path, composed);
370
- }
371
- else {
372
- return router.get(path, wsMiddleware);
373
- }
374
- };
375
- _router.sse = (path, ...args) => {
376
- let middleware;
377
- let handler;
378
- if (args.length === 1) {
379
- handler = args[0];
380
- }
381
- else {
382
- middleware = args[0];
383
- handler = args[1];
384
- }
385
- const wrapper = (c) => {
386
- // Capture the AgentContext from the request
387
- const asyncLocalStorage = getAgentAsyncLocalStorage();
388
- const capturedContext = asyncLocalStorage.getStore();
389
- return honoStreamSSE(c, async (stream) => {
390
- // Wrap the stream to intercept write() calls
391
- const wrappedStream = {
392
- ...stream,
393
- write: async (data) => {
394
- // Convert simple write to writeSSE format
395
- if (typeof data === 'string' ||
396
- typeof data === 'number' ||
397
- typeof data === 'boolean') {
398
- return stream.writeSSE({ data: String(data) });
399
- }
400
- else if (typeof data === 'object' && data !== null) {
401
- // If it's already an SSE message object, pass it through
402
- return stream.writeSSE(data);
403
- }
404
- return stream.writeSSE({ data: String(data) });
405
- },
406
- writeSSE: stream.writeSSE.bind(stream),
407
- onAbort: stream.onAbort.bind(stream),
408
- close: stream.close?.bind(stream),
409
- };
410
- const runInContext = async () => {
411
- await handler(c)(wrappedStream);
412
- };
413
- if (capturedContext) {
414
- await asyncLocalStorage.run(capturedContext, runInContext);
415
- }
416
- else {
417
- await runInContext();
418
- }
419
- });
420
- };
421
- if (middleware) {
422
- return router.get(path, middleware, wrapper);
423
- }
424
- else {
425
- return router.get(path, wrapper);
426
- }
149
+ _router.cron = (schedule, ..._args) => {
150
+ throw new Error(`router.cron() is deprecated and has been removed.\n\n` +
151
+ `Migration: Use the cron middleware instead:\n\n` +
152
+ ` import { createRouter, cron } from '@agentuity/runtime';\n\n` +
153
+ ` const router = createRouter();\n\n` +
154
+ ` // Before (deprecated):\n` +
155
+ ` // router.cron('${schedule}', (c) => { ... });\n\n` +
156
+ ` // After:\n` +
157
+ ` router.post('/your-cron-path', cron('${schedule}', (c) => {\n` +
158
+ ` return { status: 'complete' };\n` +
159
+ ` }));`);
427
160
  };
428
161
  return router;
429
162
  };
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAgB,IAAI,EAAoC,MAAM,MAAM,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAoDzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAA+D,EAAE;IAC5F,MAAM,MAAM,GAAG,IAAI,IAAI,EAAQ,CAAC;IAChC,qDAAqD;IACrD,2BAA2B;IAC3B,MAAM,OAAO,GAAG,MAAa,CAAC;IAE9B,KAAK,MAAM,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;QAC3E,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtD,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,GAAG,IAAW,EAAE,EAAE;YAClD,4EAA4E;YAC5E,iEAAiE;YACjE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;YAED,sFAAsF;YACtF,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YACnC,OAAO,YAAY,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,UAAU,EAAE,CAAC;gBACtE,YAAY,EAAE,CAAC;YAChB,CAAC;YAED,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;gBACtB,uCAAuC;gBACvC,OAAO,gBAAgB,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;YACxC,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;YAEnC,0EAA0E;YAC1E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,wCAAwC;gBACxC,OAAO,gBAAgB,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;YACxC,CAAC;YAED,kDAAkD;YAClD,MAAM,OAAO,GAAG,KAAK,EAAE,CAAU,EAAqB,EAAE;gBACvD,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACxB,IAAI,MAAM,YAAY,OAAO;oBAAE,MAAM,GAAG,MAAM,MAAM,CAAC;gBACrD,qDAAqD;gBACrD,IAAI,MAAM,YAAY,QAAQ;oBAAE,OAAO,MAAM,CAAC;gBAC9C,OAAO,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAClC,CAAC,CAAC;YAEF,uCAAuC;YACvC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;YAC1B,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC;YAEhC,OAAO,gBAAgB,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC;QAC3C,CAAC,CAAC;IACH,CAAC;IAED,iEAAiE;IACjE,OAAO,CAAC,SAAS,GAAG,CAAC,IAAY,EAAE,GAAG,KAAY,EAAE,EAAE;QACrD,MAAM,IAAI,KAAK,CACd,4DAA4D;YAC3D,sDAAsD;YACtD,qEAAqE;YACrE,sCAAsC;YACtC,6BAA6B;YAC7B,0BAA0B,IAAI,iCAAiC;YAC/D,eAAe;YACf,iBAAiB,IAAI,6BAA6B;YAClD,iCAAiC;YACjC,yCAAyC;YACzC,WAAW;YACX,QAAQ,CACT,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CAAC,GAAG,GAAG,CAAC,IAAY,EAAE,GAAG,KAAY,EAAE,EAAE;QAC/C,MAAM,IAAI,KAAK,CACd,sDAAsD;YACrD,gDAAgD;YAChD,+DAA+D;YAC/D,sCAAsC;YACtC,6BAA6B;YAC7B,oBAAoB,IAAI,2CAA2C;YACnE,eAAe;YACf,iBAAiB,IAAI,2BAA2B;YAChD,6DAA6D;YAC7D,QAAQ,CACT,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CAAC,MAAM,GAAG,CAAC,IAAY,EAAE,GAAG,KAAY,EAAE,EAAE;QAClD,MAAM,IAAI,KAAK,CACd,yDAAyD;YACxD,mDAAmD;YACnD,kEAAkE;YAClE,sCAAsC;YACtC,6BAA6B;YAC7B,uBAAuB,IAAI,6CAA6C;YACxE,eAAe;YACf,kBAAkB,IAAI,sBAAsB;YAC5C,mCAAmC;YACnC,6BAA6B;YAC7B,0CAA0C;YAC1C,+BAA+B;YAC/B,WAAW;YACX,WAAW;YACX,QAAQ,CACT,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CAAC,IAAI,GAAG,CAAC,QAAgB,EAAE,GAAG,KAAY,EAAE,EAAE;QACpD,MAAM,IAAI,KAAK,CACd,uDAAuD;YACtD,iDAAiD;YACjD,gEAAgE;YAChE,sCAAsC;YACtC,6BAA6B;YAC7B,qBAAqB,QAAQ,yBAAyB;YACtD,eAAe;YACf,0CAA0C,QAAQ,eAAe;YACjE,sCAAsC;YACtC,QAAQ,CACT,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,MAAM,CAAC;AACf,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { Context, Handler } from 'hono';
2
- import type { WebSocketConnection } from './router';
2
+ import { type WebSocketConnection } from './handlers/websocket';
3
3
  export declare const createWorkbenchExecutionRoute: () => Handler;
4
4
  export declare const createWorkbenchClearStateRoute: () => Handler;
5
5
  export declare const createWorkbenchStateRoute: () => Handler;
@@ -9,5 +9,9 @@ export declare const createWorkbenchStateRoute: () => Handler;
9
9
  export declare const createWorkbenchRouter: () => import("hono").Hono<import("./app").Env<Record<string, never>>, import("hono").Schema, "/">;
10
10
  export declare const createWorkbenchSampleRoute: () => Handler;
11
11
  export declare const createWorkbenchMetadataRoute: () => Handler;
12
- export declare const createWorkbenchWebsocketRoute: () => (_ctx: Context) => (ws: WebSocketConnection) => void;
12
+ export declare const createWorkbenchWebsocketHandler: () => (_c: Context, ws: WebSocketConnection) => void;
13
+ /**
14
+ * @deprecated Use createWorkbenchWebsocketHandler instead
15
+ */
16
+ export declare const createWorkbenchWebsocketRoute: () => (_c: Context, ws: WebSocketConnection) => void;
13
17
  //# sourceMappingURL=workbench.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workbench.d.ts","sourceRoot":"","sources":["../src/workbench.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAK7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAKpD,eAAO,MAAM,6BAA6B,QAAO,OAwHhD,CAAC;AAEF,eAAO,MAAM,8BAA8B,QAAO,OA+CjD,CAAC;AAEF,eAAO,MAAM,yBAAyB,QAAO,OAwC5C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,mGAsCjC,CAAC;AAEF,eAAO,MAAM,0BAA0B,QAAO,OAoJ7C,CAAC;AAEF,eAAO,MAAM,4BAA4B,QAAO,OAuF/C,CAAC;AAKF,eAAO,MAAM,6BAA6B,SACjC,MAAM,OAAO,MACZ,IAAI,mBAAmB,SA6BhC,CAAC"}
1
+ {"version":3,"file":"workbench.d.ts","sourceRoot":"","sources":["../src/workbench.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAK7C,OAAO,EAAa,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAK3E,eAAO,MAAM,6BAA6B,QAAO,OAwHhD,CAAC;AAEF,eAAO,MAAM,8BAA8B,QAAO,OA+CjD,CAAC;AAEF,eAAO,MAAM,yBAAyB,QAAO,OAwC5C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,mGAsCjC,CAAC;AAEF,eAAO,MAAM,0BAA0B,QAAO,OAoJ7C,CAAC;AAEF,eAAO,MAAM,4BAA4B,QAAO,OAuF/C,CAAC;AAKF,eAAO,MAAM,+BAA+B,SACnC,IAAI,OAAO,EAAE,IAAI,mBAAmB,SA4B5C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,6BAA6B,SAjCjC,IAAI,OAAO,EAAE,IAAI,mBAAmB,SAiC+B,CAAC"}
package/dist/workbench.js CHANGED
@@ -2,6 +2,7 @@ import { timingSafeEqual } from 'node:crypto';
2
2
  import { toJSONSchema } from '@agentuity/server';
3
3
  import { getAgents, createAgentMiddleware } from './agent';
4
4
  import { createRouter } from './router';
5
+ import { websocket } from './handlers/websocket';
5
6
  import { privateContext } from './_server';
6
7
  import { getThreadProvider } from './_services';
7
8
  import { loadBuildMetadata, getAgentMetadataByAgentId, hasMetadata } from './_metadata';
@@ -220,7 +221,7 @@ export const createWorkbenchRouter = () => {
220
221
  // Apply agent middleware to ensure proper context is available
221
222
  router.use('/_agentuity/workbench/*', createAgentMiddleware(''));
222
223
  // Add workbench routes
223
- router.websocket('/_agentuity/workbench/ws', createWorkbenchWebsocketRoute());
224
+ router.get('/_agentuity/workbench/ws', websocket(createWorkbenchWebsocketHandler()));
224
225
  router.get('/_agentuity/workbench/metadata.json', createWorkbenchMetadataRoute());
225
226
  router.get('/_agentuity/workbench/sample', createWorkbenchSampleRoute());
226
227
  router.get('/_agentuity/workbench/state', createWorkbenchStateRoute());
@@ -422,34 +423,36 @@ export const createWorkbenchMetadataRoute = () => {
422
423
  };
423
424
  // Store WebSocket connections to notify them on app restart
424
425
  const workbenchWebSockets = new Set();
425
- export const createWorkbenchWebsocketRoute = () => {
426
- return (_ctx) => {
427
- return (ws) => {
428
- ws.onOpen(() => {
429
- workbenchWebSockets.add(ws);
430
- ws.send('alive');
431
- });
432
- ws.onMessage((event) => {
433
- const message = event.data;
434
- // If a client sends a message (CLI), broadcast to all other clients
435
- if (message === 'restarting' || message === 'alive') {
436
- // Broadcast the message to all other clients (excluding this CLI connection)
437
- for (const clientWs of workbenchWebSockets) {
438
- if (clientWs !== ws) {
439
- try {
440
- clientWs.send(message);
441
- }
442
- catch (_error) {
443
- workbenchWebSockets.delete(clientWs);
444
- }
426
+ export const createWorkbenchWebsocketHandler = () => {
427
+ return (_c, ws) => {
428
+ ws.onOpen(() => {
429
+ workbenchWebSockets.add(ws);
430
+ ws.send('alive');
431
+ });
432
+ ws.onMessage((event) => {
433
+ const message = event.data;
434
+ // If a client sends a message (CLI), broadcast to all other clients
435
+ if (message === 'restarting' || message === 'alive') {
436
+ // Broadcast the message to all other clients (excluding this CLI connection)
437
+ for (const clientWs of workbenchWebSockets) {
438
+ if (clientWs !== ws) {
439
+ try {
440
+ clientWs.send(message);
441
+ }
442
+ catch (_error) {
443
+ workbenchWebSockets.delete(clientWs);
445
444
  }
446
445
  }
447
446
  }
448
- });
449
- ws.onClose(() => {
450
- workbenchWebSockets.delete(ws);
451
- });
452
- };
447
+ }
448
+ });
449
+ ws.onClose(() => {
450
+ workbenchWebSockets.delete(ws);
451
+ });
453
452
  };
454
453
  };
454
+ /**
455
+ * @deprecated Use createWorkbenchWebsocketHandler instead
456
+ */
457
+ export const createWorkbenchWebsocketRoute = createWorkbenchWebsocketHandler;
455
458
  //# sourceMappingURL=workbench.js.map