@agentuity/runtime 1.0.20 → 1.0.21

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.
@@ -1,4 +1,4 @@
1
- export { websocket, type WebSocketConnection, type WebSocketHandler } from './websocket';
1
+ export { websocket, type WebSocketConnection, type WebSocketHandler, WS_DONE_PROMISE_KEY, } from './websocket';
2
2
  export { sse, type SSEMessage, type SSEStream, type SSEHandler, type SSEOptions, STREAM_DONE_PROMISE_KEY, IS_STREAMING_RESPONSE_KEY, } from './sse';
3
3
  export { stream, type StreamHandler } from './stream';
4
4
  export { cron, type CronHandler, type CronMetadata } from './cron';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,mBAAmB,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EACN,GAAG,EACH,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,UAAU,EACf,uBAAuB,EACvB,yBAAyB,GACzB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,SAAS,EACT,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,mBAAmB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,GAAG,EACH,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,UAAU,EACf,uBAAuB,EACvB,yBAAyB,GACzB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC"}
@@ -1,4 +1,4 @@
1
- export { websocket } from './websocket';
1
+ export { websocket, WS_DONE_PROMISE_KEY, } from './websocket';
2
2
  export { sse, STREAM_DONE_PROMISE_KEY, IS_STREAMING_RESPONSE_KEY, } from './sse';
3
3
  export { stream } from './stream';
4
4
  export { cron } from './cron';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAmD,MAAM,aAAa,CAAC;AACzF,OAAO,EACN,GAAG,EAKH,uBAAuB,EACvB,yBAAyB,GACzB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,MAAM,EAAsB,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,IAAI,EAAuC,MAAM,QAAQ,CAAC;AACnE,OAAO,EAAE,MAAM,EAA0C,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,SAAS,EAGT,mBAAmB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,GAAG,EAKH,uBAAuB,EACvB,yBAAyB,GACzB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,MAAM,EAAsB,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,IAAI,EAAuC,MAAM,QAAQ,CAAC;AACnE,OAAO,EAAE,MAAM,EAA0C,MAAM,UAAU,CAAC"}
@@ -1,5 +1,10 @@
1
1
  import type { Context, MiddlewareHandler } from 'hono';
2
2
  import type { Env } from '../app';
3
+ /**
4
+ * Context key for WebSocket close promise.
5
+ * Used by middleware to defer session finalization until WebSocket closes.
6
+ */
7
+ export declare const WS_DONE_PROMISE_KEY = "_wsDonePromise";
3
8
  /**
4
9
  * WebSocket connection interface for handling WebSocket events.
5
10
  */
@@ -12,15 +17,31 @@ export interface WebSocketConnection {
12
17
  /**
13
18
  * Handler function for WebSocket connections.
14
19
  * Receives the Hono context and WebSocket connection with a flattened signature.
20
+ *
21
+ * **This handler must be synchronous** (returns `void`, not `Promise<void>`).
22
+ * The handler is called inside Hono's `upgradeWebSocket` factory, which must
23
+ * return event handlers synchronously for the HTTP upgrade to complete. If the
24
+ * handler were async, any `ws.onOpen`/`ws.onMessage`/`ws.onClose` registrations
25
+ * after an `await` would be silently lost because the factory returns before
26
+ * they are registered.
27
+ *
28
+ * To perform async work, place it inside the `onOpen`, `onMessage`, or `onClose`
29
+ * callbacks, which are properly awaited by the runtime.
15
30
  */
16
- export type WebSocketHandler<E extends Env = Env> = (c: Context<E>, ws: WebSocketConnection) => void | Promise<void>;
31
+ export type WebSocketHandler<E extends Env = Env> = (c: Context<E>, ws: WebSocketConnection) => void;
17
32
  /**
18
33
  * Creates a WebSocket middleware for handling WebSocket connections.
19
34
  *
35
+ * The handler must be **synchronous** — it runs inside Hono's `upgradeWebSocket`
36
+ * factory which must return event handlers synchronously for the HTTP upgrade to
37
+ * complete. Async work should go inside `onOpen`, `onMessage`, or `onClose`
38
+ * callbacks, which are properly awaited by the runtime.
39
+ *
20
40
  * Use with router.get() to create a WebSocket endpoint:
21
41
  *
22
42
  * @example
23
43
  * ```typescript
44
+ * // Basic synchronous usage
24
45
  * import { createRouter, websocket } from '@agentuity/runtime';
25
46
  *
26
47
  * const router = createRouter();
@@ -42,7 +63,23 @@ export type WebSocketHandler<E extends Env = Env> = (c: Context<E>, ws: WebSocke
42
63
  * }));
43
64
  * ```
44
65
  *
45
- * @param handler - Handler function receiving context and WebSocket connection
66
+ * @example
67
+ * ```typescript
68
+ * // Async work inside callbacks (correct pattern)
69
+ * router.get('/ws', websocket((c, ws) => {
70
+ * ws.onOpen(async () => {
71
+ * const user = await fetchUser(c.var.auth);
72
+ * ws.send(JSON.stringify({ welcome: user.name }));
73
+ * });
74
+ *
75
+ * ws.onMessage(async (event) => {
76
+ * const result = await processMessage(event.data);
77
+ * ws.send(JSON.stringify(result));
78
+ * });
79
+ * }));
80
+ * ```
81
+ *
82
+ * @param handler - Synchronous handler function receiving context and WebSocket connection
46
83
  * @returns Hono middleware handler for WebSocket upgrade
47
84
  */
48
85
  export declare function websocket<E extends Env = Env>(handler: WebSocketHandler<E>): MiddlewareHandler<E>;
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/handlers/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAIvD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAElC;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAClE,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC5E,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IACxE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,KAAK,IAAI,CAAC;CACxD;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CACnD,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EACb,EAAE,EAAE,mBAAmB,KACnB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CA6GjG"}
1
+ {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/handlers/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAIvD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAElC;;;GAGG;AACH,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAClE,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC5E,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IACxE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,KAAK,IAAI,CAAC;CACxD;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CACnD,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EACb,EAAE,EAAE,mBAAmB,KACnB,IAAI,CAAC;AAEV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAsIjG"}
@@ -1,13 +1,24 @@
1
1
  import { upgradeWebSocket } from 'hono/bun';
2
2
  import { context as otelContext, ROOT_CONTEXT } from '@opentelemetry/api';
3
3
  import { getAgentAsyncLocalStorage } from '../_context';
4
+ /**
5
+ * Context key for WebSocket close promise.
6
+ * Used by middleware to defer session finalization until WebSocket closes.
7
+ */
8
+ export const WS_DONE_PROMISE_KEY = '_wsDonePromise';
4
9
  /**
5
10
  * Creates a WebSocket middleware for handling WebSocket connections.
6
11
  *
12
+ * The handler must be **synchronous** — it runs inside Hono's `upgradeWebSocket`
13
+ * factory which must return event handlers synchronously for the HTTP upgrade to
14
+ * complete. Async work should go inside `onOpen`, `onMessage`, or `onClose`
15
+ * callbacks, which are properly awaited by the runtime.
16
+ *
7
17
  * Use with router.get() to create a WebSocket endpoint:
8
18
  *
9
19
  * @example
10
20
  * ```typescript
21
+ * // Basic synchronous usage
11
22
  * import { createRouter, websocket } from '@agentuity/runtime';
12
23
  *
13
24
  * const router = createRouter();
@@ -29,7 +40,23 @@ import { getAgentAsyncLocalStorage } from '../_context';
29
40
  * }));
30
41
  * ```
31
42
  *
32
- * @param handler - Handler function receiving context and WebSocket connection
43
+ * @example
44
+ * ```typescript
45
+ * // Async work inside callbacks (correct pattern)
46
+ * router.get('/ws', websocket((c, ws) => {
47
+ * ws.onOpen(async () => {
48
+ * const user = await fetchUser(c.var.auth);
49
+ * ws.send(JSON.stringify({ welcome: user.name }));
50
+ * });
51
+ *
52
+ * ws.onMessage(async (event) => {
53
+ * const result = await processMessage(event.data);
54
+ * ws.send(JSON.stringify(result));
55
+ * });
56
+ * }));
57
+ * ```
58
+ *
59
+ * @param handler - Synchronous handler function receiving context and WebSocket connection
33
60
  * @returns Hono middleware handler for WebSocket upgrade
34
61
  */
35
62
  export function websocket(handler) {
@@ -40,6 +67,23 @@ export function websocket(handler) {
40
67
  let initialized = false;
41
68
  const asyncLocalStorage = getAgentAsyncLocalStorage();
42
69
  const capturedContext = asyncLocalStorage.getStore();
70
+ // Create done promise for session lifecycle deferral, but ONLY for actual
71
+ // WebSocket upgrade requests. The factory runs unconditionally for every
72
+ // request hitting this route (Hono calls createEvents before attempting
73
+ // server.upgrade). For non-upgrade HTTP requests, setting the promise would
74
+ // cause the middleware to hang forever waiting for an onClose that never fires.
75
+ let resolveDone;
76
+ const isUpgrade = c.req.header('upgrade')?.toLowerCase() === 'websocket';
77
+ if (isUpgrade) {
78
+ const donePromise = new Promise((resolve) => {
79
+ resolveDone = resolve;
80
+ });
81
+ // Defensive: guard against future code adding rejection paths
82
+ donePromise.catch(() => { });
83
+ // Set on context so middleware defers session finalization until WS closes
84
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
85
+ c.set(WS_DONE_PROMISE_KEY, donePromise);
86
+ }
43
87
  const wsConnection = {
44
88
  onOpen: (h) => {
45
89
  openHandler = h;
@@ -134,6 +178,11 @@ export function websocket(handler) {
134
178
  catch (err) {
135
179
  c.var.logger?.error('WebSocket onClose error:', err);
136
180
  }
181
+ finally {
182
+ // Resolve the done promise to trigger session finalization
183
+ // This must fire even if the user's onClose handler throws
184
+ resolveDone?.();
185
+ }
137
186
  },
138
187
  };
139
188
  });
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/handlers/websocket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/handlers/websocket.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,KAAK,EAAE,GAAG,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEhE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAQvC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAkCxD,eAAO,MAAM,wBAAwB,yIAc3B,CAAC;AAuBX,MAAM,WAAW,gBAAgB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,WAAW,CAAC,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,oEAsD5D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,CAAC,EAAE,UAAU,oEA+E9D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,qEAwlBnC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,2BAA2B,CAC1C,YAAY,CAAC,EAAE,iBAAiB;AAChC;;;GAGG;AACH,cAAc,CAAC,EAAE,MAAM;IAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,KAAK,CAAA;CAAE,GAAG,SAAS,oEAmD9E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,qEA6BzC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,KAAK,EAAE,GAAG,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEhE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAQvC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAmCxD,eAAO,MAAM,wBAAwB,yIAc3B,CAAC;AAuBX,MAAM,WAAW,gBAAgB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,WAAW,CAAC,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,oEAsD5D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,CAAC,EAAE,UAAU,oEA+E9D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,qEAiuBnC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,2BAA2B,CAC1C,YAAY,CAAC,EAAE,iBAAiB;AAChC;;;GAGG;AACH,cAAc,CAAC,EAAE,MAAM;IAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,KAAK,CAAA;CAAE,GAAG,SAAS,oEAmD9E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,qEA6BzC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
@@ -18,6 +18,7 @@ import * as runtimeConfig from './_config';
18
18
  import { getSessionEventProvider } from './_services';
19
19
  import { internal } from './logger/internal';
20
20
  import { STREAM_DONE_PROMISE_KEY, IS_STREAMING_RESPONSE_KEY } from './handlers/sse';
21
+ import { WS_DONE_PROMISE_KEY } from './handlers/websocket';
21
22
  import { loadBuildMetadata } from './_metadata';
22
23
  const SESSION_HEADER = 'x-session-id';
23
24
  const THREAD_HEADER = 'x-thread-id';
@@ -284,6 +285,7 @@ export function createOtelMiddleware() {
284
285
  const thread = await threadProvider.restore(c);
285
286
  const session = await sessionProvider.restore(thread, sessionId);
286
287
  const handler = new WaitUntilHandler(tracer);
288
+ const isWsUpgrade = c.req.header('upgrade')?.toLowerCase() === 'websocket';
287
289
  c.set('sessionId', sessionId);
288
290
  c.set('thread', thread);
289
291
  c.set('session', session);
@@ -293,7 +295,7 @@ export function createOtelMiddleware() {
293
295
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
294
296
  c.set('agentIds', agentIds);
295
297
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
296
- c.set('trigger', 'api');
298
+ c.set('trigger', isWsUpgrade ? 'websocket' : 'api');
297
299
  // Send session start event (so evalruns can reference this session)
298
300
  // The provider decides whether to send based on available data (orgId, projectId, etc.)
299
301
  // Skip for workbench routes that don't need session tracking
@@ -339,7 +341,7 @@ export function createOtelMiddleware() {
339
341
  projectId: projectId || '',
340
342
  deploymentId: deploymentId || undefined,
341
343
  devmode: isDevMode,
342
- trigger: 'api',
344
+ trigger: isWsUpgrade ? 'websocket' : 'api',
343
345
  routeId,
344
346
  environment: runtimeConfig.getEnvironment(),
345
347
  url: c.req.path,
@@ -401,13 +403,16 @@ export function createOtelMiddleware() {
401
403
  const streamDone = c.get(STREAM_DONE_PROMISE_KEY);
402
404
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
403
405
  const isStreaming = Boolean(c.get(IS_STREAMING_RESPONSE_KEY));
406
+ // Check if this is a WebSocket response that needs deferred finalization
407
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
408
+ const wsDone = c.get(WS_DONE_PROMISE_KEY);
404
409
  // Check if Hono caught an error (c.error is set by Hono's error handler)
405
410
  // or if the response status indicates an error
406
411
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
407
412
  const honoError = c.error;
408
413
  responseStatus = c.res?.status ?? 200;
409
414
  const isError = honoError || responseStatus >= 500;
410
- internal.info('[request] %s %s - status: %d, streaming: %s, error: %s (session: %s)', method, url.pathname, responseStatus, isStreaming, isError, sessionId);
415
+ internal.info('[request] %s %s - status: %d, streaming: %s, websocket: %s, error: %s (session: %s)', method, url.pathname, responseStatus, isStreaming, Boolean(wsDone), isError, sessionId);
411
416
  if (isError) {
412
417
  // Capture error message for finalization
413
418
  errorMessage = honoError
@@ -501,6 +506,75 @@ export function createOtelMiddleware() {
501
506
  }
502
507
  });
503
508
  }
509
+ else if (wsDone) {
510
+ // WebSocket connection — defer finalization until onClose fires
511
+ internal.info('[request] %s %s - websocket response, deferring finalization until close (session: %s)', method, url.pathname, sessionId);
512
+ // For WebSocket, we end the span inside waitUntil after the connection closes
513
+ shouldEndSpanInFinally = false;
514
+ // Capture pending promises BEFORE adding finalization waitUntil to avoid deadlock
515
+ const pendingPromises = handler.getPendingSnapshot();
516
+ const hasPendingTasks = pendingPromises.length > 0;
517
+ if (hasPendingTasks) {
518
+ internal.info('[request] %s %s - %d pending waitUntil tasks to wait for after websocket close (session: %s)', method, url.pathname, pendingPromises.length, sessionId);
519
+ }
520
+ // Capture values needed for span attributes
521
+ const capturedResponseStatus = responseStatus;
522
+ const capturedErrorMessage = errorMessage;
523
+ // Use waitUntil to handle WebSocket close and finalization
524
+ handler.waitUntil(async () => {
525
+ let wsError = undefined;
526
+ try {
527
+ await wsDone;
528
+ internal.info('[request] %s %s - websocket closed (session: %s)', method, url.pathname, sessionId);
529
+ }
530
+ catch (ex) {
531
+ wsError = ex;
532
+ internal.info('[request] %s %s - websocket closed with error: %s (session: %s)', method, url.pathname, ex, sessionId);
533
+ }
534
+ // Record duration now that WebSocket is closed
535
+ const wsDurationMs = performance.now() - requestStartTime;
536
+ const durationNs = Math.round(wsDurationMs * 1_000_000);
537
+ internal.info('[request] %s %s - recording websocket duration: %sms (session: %s)', method, url.pathname, wsDurationMs.toFixed(2), sessionId);
538
+ // Determine final status
539
+ const finalStatus = wsError ? 500 : capturedResponseStatus;
540
+ const finalErrorMessage = wsError
541
+ ? wsError instanceof Error
542
+ ? (wsError.stack ?? wsError.message)
543
+ : String(wsError)
544
+ : capturedErrorMessage;
545
+ try {
546
+ // Wait for pending tasks captured BEFORE this waitUntil was added
547
+ if (hasPendingTasks) {
548
+ internal.info('[request] %s %s - waiting for %d pending waitUntil tasks (session: %s)', method, url.pathname, pendingPromises.length, sessionId);
549
+ const logger = c.get('logger');
550
+ await handler.waitForPromises(pendingPromises, logger, sessionId);
551
+ internal.info('[request] %s %s - all waitUntil tasks complete (session: %s)', method, url.pathname, sessionId);
552
+ }
553
+ // Finalize session after WebSocket closes
554
+ await finalizeSession(finalStatus >= 500 ? finalStatus : undefined, finalErrorMessage);
555
+ internal.info('[request] %s %s - websocket session finalization complete (session: %s)', method, url.pathname, sessionId);
556
+ }
557
+ finally {
558
+ // Set span attributes and end span AFTER all work is done
559
+ span.setAttribute('@agentuity/request.duration', durationNs);
560
+ span.setAttribute('http.status_code', finalStatus);
561
+ if (wsError) {
562
+ span.setStatus({
563
+ code: SpanStatusCode.ERROR,
564
+ message: finalErrorMessage ?? 'WebSocket ended with error',
565
+ });
566
+ if (wsError instanceof Error) {
567
+ span.recordException(wsError);
568
+ }
569
+ }
570
+ else {
571
+ span.setStatus({ code: SpanStatusCode.OK });
572
+ }
573
+ span.end();
574
+ internal.info('[request] %s %s - websocket span ended (session: %s)', method, url.pathname, sessionId);
575
+ }
576
+ });
577
+ }
504
578
  else {
505
579
  // Non-streaming: record duration immediately
506
580
  const durationNs = Math.round(handlerDurationMs * 1_000_000);
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,QAAQ,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE3F,OAAO,KAAK,aAAa,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,cAAc,GAAG,cAAc,CAAC;AACtC,MAAM,aAAa,GAAG,aAAa,CAAC;AACpC,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAEzC;;;GAGG;AACH,MAAM,6BAA6B,GAAG,IAAI,GAAG,CAAC;IAC7C,0BAA0B;IAC1B,8BAA8B;IAC9B,6BAA6B;IAC7B,qCAAqC;IACrC,uCAAuC;IACvC,qCAAqC;CACrC,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACpC,qCAAqC;IACrC,uCAAuC;IACvC,qCAAqC;CACrC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACvC,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,IAAI;IACJ,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,OAAO;IACP,OAAO;IACP,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,KAAK;CACI,CAAC;AAEX,8DAA8D;AAC9D,SAAS,6BAA6B,CAAC,CAAM;IAC5C,KAAK,MAAM,QAAQ,IAAI,wBAAwB,EAAE,CAAC;QACjD,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;YACvD,SAAS;QACV,CAAC;QAED,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE;YAClC,GAAG;gBACF,MAAM,IAAI,KAAK,CACd,gCAAgC,QAAQ,iBAAiB,QAAQ,IAAI;oBACpE,iBAAiB,QAAQ,sDAAsD;oBAC/E,iEAAiE,CAClE,CAAC;YACH,CAAC;YACD,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,KAAK;SACjB,CAAC,CAAC;IACJ,CAAC;AACF,CAAC;AASD;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAwB;IAC5D,8DAA8D;IAC9D,OAAO,gBAAgB,CAAW,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QACnD,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAE7B,qDAAqD;QACrD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QACpD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;QAE9C,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QAE5B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC/B,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QACzB,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE/B,6BAA6B,CAAC,CAAC,CAAC,CAAC;QAEjC,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,WAAW,CAAC;QAC3E,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAElC,IAAI,CAAC,WAAW,EAAE,CAAC;YAClB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAEhC,IAAI,CAAC,WAAW,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACzD,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,GAAG,QAAQ,GAAG,CAAC,CAAC;YAE1C,uCAAuC;YACvC,MAAM,YAAY,GAAG,aAAa,CAAC,eAAe,EAAE,CAAC;YACrD,IAAI,YAAY,EAAE,CAAC;gBAClB,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;YAC3C,CAAC;QACF,CAAC;QAED,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,KAAK,CAClB,8BAA8B,EAC9B,CAAC,CAAC,GAAG,CAAC,MAAM,EACZ,CAAC,CAAC,GAAG,CAAC,IAAI,EACV,CAAC,CAAC,GAAG,CAAC,MAAM,EACZ,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAC9C,CAAC;QACH,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,UAAU,oBAAoB,CAAC,aAA0B;IAC9D,8DAA8D;IAC9D,OAAO,gBAAgB,CAAW,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QACnD,qDAAqD;QACrD,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,SAAS,EAAE,IAAI,CAAC;QAChC,MAAM,WAAW,GAAG;YACnB,GAAG,OAAO;YACV,GAAG,aAAa;SAChB,CAAC;QAEF,qCAAqC;QACrC,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,eAAe,EAAE,GAAG,WAAW,CAAC;QAEvE,uDAAuD;QACvD,IAAI,aAAgE,CAAC;QACrE,IAAI,UAAU,EAAE,CAAC;YAChB,gEAAgE;YAChE,aAAa,GAAG,uBAAuB,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;QAC7D,CAAC;aAAM,IAAI,eAAe,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjD,iCAAiC;YACjC,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC;QACxC,CAAC;aAAM,CAAC;YACP,qDAAqD;YACrD,aAAa,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC;QAC5C,CAAC;QAED,iFAAiF;QACjF,MAAM,oBAAoB,GAAG,CAAC,aAAa,CAAC,CAAC;QAC7C,MAAM,qBAAqB,GAAG;YAC7B,aAAa;YACb,eAAe;YACf,aAAa;YACb,cAAc;YACd,iBAAiB;SACjB,CAAC;QAEF,oDAAoD;QACpD,MAAM,mBAAmB,GAAG;YAC3B,cAAc;YACd,eAAe;YACf,QAAQ;YACR,QAAQ;YACR,kBAAkB;SAClB,CAAC;QAEF,qDAAqD;QACrD,MAAM,oBAAoB,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAEhD,MAAM,iBAAiB,GAAG;YACzB,GAAG,CAAC,eAAe,CAAC,YAAY,IAAI,mBAAmB,CAAC;YACxD,GAAG,oBAAoB;SACvB,CAAC;QAEF,MAAM,cAAc,GAAG,IAAI,CAAC;YAC3B,GAAG,eAAe;YAClB,MAAM,EAAE,aAAa;YACrB,wEAAwE;YACxE,YAAY,EAAE,iBAAiB;YAC/B,YAAY,EAAE,eAAe,CAAC,YAAY,IAAI;gBAC7C,MAAM;gBACN,KAAK;gBACL,SAAS;gBACT,MAAM;gBACN,KAAK;gBACL,QAAQ;gBACR,OAAO;aACP;YACD,wEAAwE;YACxE,aAAa,EAAE;gBACd,GAAG,CAAC,eAAe,CAAC,aAAa,IAAI,oBAAoB,CAAC;gBAC1D,GAAG,qBAAqB;aACxB;YACD,MAAM,EAAE,eAAe,CAAC,MAAM,IAAI,GAAG;YACrC,WAAW,EAAE,eAAe,CAAC,WAAW,IAAI,IAAI;SAChD,CAAC,CAAC;QAEH,OAAO,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IACnC,8DAA8D;IAC9D,OAAO,gBAAgB,CAAW,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QACnD,+DAA+D;QAC/D,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,OAAO,IAAI,EAAE,CAAC;QACf,CAAC;QAED,2EAA2E;QAC3E,MAAM,iBAAiB,GAAG,6BAA6B,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAExE,sDAAsD;QACtD,MAAM,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QAC9E,MAAM,gBAAgB,GAAG,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC;QAEhE,MAAM,gBAAgB,GAAG,8BAA8B,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;QAC5B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;QAC3C,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;QAE7C,MAAM,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAmB,EAAE;YAC9D,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YAE9C,wDAAwD;YACxD,2DAA2D;YAC3D,+DAA+D;YAC/D,gEAAgE;YAChE,+DAA+D;YAC/D,iDAAiD;YACjD,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,EAAE,CAAC;YAC/C,MAAM,KAAK,GAAG,aAAa,CAAC,iBAAiB,EAAE,CAAC;YAChD,MAAM,YAAY,GAAG,aAAa,CAAC,eAAe,EAAE,CAAC;YACrD,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC;YAE5C,QAAQ,CAAC,IAAI,CACZ,yEAAyE,EACzE,KAAK,IAAI,kCAAkC,EAC3C,SAAS,IAAI,sCAAsC,EACnD,YAAY,IAAI,MAAM,EACtB,SAAS,CACT,CAAC;YAEF,MAAM,eAAe,GAAG,2BAA2B,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;gBACrE,GAAG,EAAE,SAAS;gBACd,GAAG,EAAE,KAAK;gBACV,GAAG,EAAE,YAAY;gBACjB,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;aAC9B,CAAC,CAAC;YAEH,MAAM,MAAM,CAAC,eAAe,CAC3B,GAAG,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,EAC3B;gBACC,IAAI,EAAE,QAAQ,CAAC,MAAM;gBACrB,UAAU,EAAE;oBACX,aAAa,EAAE,MAAM;oBACrB,WAAW,EAAE,GAAG,CAAC,IAAI;oBACrB,iBAAiB,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE;oBACnD,WAAW,EAAE,GAAG,CAAC,QAAQ;iBACzB;aACD,EACD,eAAe,EACf,KAAK,EAAE,IAAI,EAAiB,EAAE;gBAC7B,oDAAoD;gBACpD,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;gBAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBAChC,MAAM,SAAS,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAE9E,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC/C,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBACjE,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBAE7C,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;gBAC9B,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACxB,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC1B,8DAA8D;gBAC7D,CAAS,CAAC,GAAG,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;gBAC5C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;gBACnC,8DAA8D;gBAC7D,CAAS,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBACrC,8DAA8D;gBAC7D,CAAS,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAEjC,oEAAoE;gBACpE,wFAAwF;gBACxF,6DAA6D;gBAC7D,MAAM,oBAAoB,GAAG,uBAAuB,EAAE,CAAC;gBACvD,IAAI,oBAAoB,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBAChD,IAAI,CAAC;wBACJ,kEAAkE;wBAClE,oEAAoE;wBACpE,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;wBACrC,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;wBAE/C,iEAAiE;wBACjE,MAAM,aAAa,GAAG,CAAC,CAAS,EAAE,EAAE;4BACnC,MAAM,OAAO,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;4BACtC,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gCACjD,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gCACtB,CAAC,CAAC,OAAO,CAAC;wBACZ,CAAC,CAAC;wBACF,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBAE9C,2EAA2E;wBAC3E,+EAA+E;wBAC/E,MAAM,wBAAwB,GAAG,CAAC,OAAe,EAAE,SAAiB,EAAE,EAAE;4BACvE,IAAI,OAAO,KAAK,SAAS;gCAAE,OAAO,IAAI,CAAC;4BACvC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;gCAAE,OAAO,KAAK,CAAC;4BAC/C,gEAAgE;4BAChE,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;4BACvE,OAAO,eAAe,KAAK,GAAG,CAAC;wBAChC,CAAC,CAAC;wBAEF,8CAA8C;wBAC9C,IAAI,KAAK,GAAG,QAAQ,EAAE,MAAM,EAAE,IAAI,CACjC,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,WAAW;4BACtC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,WAAW,CACtC,CAAC;wBACF,sFAAsF;wBACtF,IAAI,CAAC,KAAK,EAAE,CAAC;4BACZ,KAAK,GAAG,QAAQ,EAAE,MAAM,EAAE,IAAI,CAC7B,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,WAAW;gCACtC,wBAAwB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAC7D,CAAC;wBACH,CAAC;wBACD,MAAM,OAAO,GAAG,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC;wBAEhC,MAAM,oBAAoB,CAAC,KAAK,CAAC;4BAChC,EAAE,EAAE,SAAS;4BACb,QAAQ,EAAE,MAAM,CAAC,EAAE;4BACnB,KAAK,EAAE,KAAK,IAAI,EAAE;4BAClB,SAAS,EAAE,SAAS,IAAI,EAAE;4BAC1B,YAAY,EAAE,YAAY,IAAI,SAAS;4BACvC,OAAO,EAAE,SAAS;4BAClB,OAAO,EAAE,KAAK;4BACd,OAAO;4BACP,WAAW,EAAE,aAAa,CAAC,cAAc,EAAE;4BAC3C,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI;4BACf,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM;yBACpB,CAAC,CAAC;oBACJ,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACd,6DAA6D;oBAC9D,CAAC;gBACF,CAAC;gBAED,wEAAwE;gBACxE,MAAM,eAAe,GAAG,KAAK,EAAE,UAAmB,EAAE,KAAc,EAAE,EAAE;oBACrE,QAAQ,CAAC,IAAI,CACZ,sDAAsD,EACtD,SAAS,EACT,MAAM,CAAC,EAAE,EACT,KAAK,CACL,CAAC;oBACF,MAAM,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACpC,QAAQ,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;oBAC5D,MAAM,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAClC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;oBAExC,0DAA0D;oBAC1D,IAAI,oBAAoB,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBAChD,IAAI,CAAC;4BACJ,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;4BAC7C,QAAQ,CAAC,IAAI,CACZ,wDAAwD,EACxD,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,MAAM,CAC9C,CAAC;4BACF,8DAA8D;4BAC9D,MAAM,WAAW,GAAI,CAAS,CAAC,GAAG,CAAC,UAAU,CAA4B,CAAC;4BAC1E,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;4BAC5E,QAAQ,CAAC,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;4BAClD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;4BACrC,MAAM,oBAAoB,CAAC,QAAQ,CAAC;gCACnC,EAAE,EAAE,SAAS;gCACb,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;gCACpC,UAAU,EAAE,UAAU,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,IAAI,GAAG;gCAC9C,KAAK;gCACL,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;gCACjD,QAAQ;6BACR,CAAC,CAAC;4BACH,QAAQ,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;wBACxD,CAAC;wBAAC,OAAO,EAAE,EAAE,CAAC;4BACb,QAAQ,CAAC,IAAI,CACZ,6CAA6C,EAC7C,EAAE,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CACrC,CAAC;4BACF,iEAAiE;wBAClE,CAAC;oBACF,CAAC;gBACF,CAAC,CAAC;gBAEF,+BAA+B;gBAC/B,IAAI,cAAc,GAAG,GAAG,CAAC;gBACzB,IAAI,YAAgC,CAAC;gBACrC,IAAI,iBAAiB,GAAG,CAAC,CAAC;gBAC1B,iGAAiG;gBACjG,IAAI,sBAAsB,GAAG,IAAI,CAAC;gBAElC,IAAI,CAAC;oBACJ,QAAQ,CAAC,IAAI,CACZ,kDAAkD,EAClD,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,SAAS,CACT,CAAC;oBAEF,MAAM,IAAI,EAAE,CAAC;oBAEb,uFAAuF;oBACvF,qFAAqF;oBACrF,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC;oBAEzD,QAAQ,CAAC,IAAI,CACZ,2DAA2D,EAC3D,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAC5B,SAAS,CACT,CAAC;oBAEF,yEAAyE;oBACzE,8DAA8D;oBAC9D,MAAM,UAAU,GAAI,CAAS,CAAC,GAAG,CAAC,uBAAuB,CAE7C,CAAC;oBACb,8DAA8D;oBAC9D,MAAM,WAAW,GAAG,OAAO,CAAE,CAAS,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;oBAEvE,yEAAyE;oBACzE,+CAA+C;oBAC/C,8DAA8D;oBAC9D,MAAM,SAAS,GAAI,CAAS,CAAC,KAA0B,CAAC;oBACxD,cAAc,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,IAAI,GAAG,CAAC;oBACtC,MAAM,OAAO,GAAG,SAAS,IAAI,cAAc,IAAI,GAAG,CAAC;oBAEnD,QAAQ,CAAC,IAAI,CACZ,sEAAsE,EACtE,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,cAAc,EACd,WAAW,EACX,OAAO,EACP,SAAS,CACT,CAAC;oBAEF,IAAI,OAAO,EAAE,CAAC;wBACb,yCAAyC;wBACzC,YAAY,GAAG,SAAS;4BACvB,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,OAAO,CAAC;4BACxC,CAAC,CAAC,QAAQ,cAAc,EAAE,CAAC;wBAC5B,IAAI,CAAC,SAAS,CAAC;4BACd,IAAI,EAAE,cAAc,CAAC,KAAK;4BAC1B,OAAO,EAAE,SAAS,EAAE,OAAO,IAAI,YAAY;yBAC3C,CAAC,CAAC;wBACH,IAAI,SAAS,EAAE,CAAC;4BACf,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;wBACjC,CAAC;oBACF,CAAC;yBAAM,CAAC;wBACP,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC7C,CAAC;oBAED,mEAAmE;oBACnE,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;wBAC/B,QAAQ,CAAC,IAAI,CACZ,4EAA4E,EAC5E,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,SAAS,CACT,CAAC;wBAEF,2EAA2E;wBAC3E,sBAAsB,GAAG,KAAK,CAAC;wBAE/B,kFAAkF;wBAClF,MAAM,eAAe,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;wBACrD,MAAM,eAAe,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;wBAEnD,IAAI,eAAe,EAAE,CAAC;4BACrB,QAAQ,CAAC,IAAI,CACZ,qFAAqF,EACrF,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,eAAe,CAAC,MAAM,EACtB,SAAS,CACT,CAAC;wBACH,CAAC;wBAED,oFAAoF;wBACpF,MAAM,sBAAsB,GAAG,cAAc,CAAC;wBAC9C,MAAM,oBAAoB,GAAG,YAAY,CAAC;wBAE1C,6DAA6D;wBAC7D,qDAAqD;wBACrD,2EAA2E;wBAC3E,qDAAqD;wBACrD,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;4BAC5B,wEAAwE;4BACxE,IAAI,WAAW,GAAY,SAAS,CAAC;4BAErC,IAAI,CAAC;gCACJ,MAAM,UAAU,CAAC;gCACjB,QAAQ,CAAC,IAAI,CACZ,kDAAkD,EAClD,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,SAAS,CACT,CAAC;4BACH,CAAC;4BAAC,OAAO,EAAE,EAAE,CAAC;gCACb,WAAW,GAAG,EAAE,CAAC;gCACjB,QAAQ,CAAC,IAAI,CACZ,6DAA6D,EAC7D,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,EAAE,EACF,SAAS,CACT,CAAC;4BACH,CAAC;4BAED,kFAAkF;4BAClF,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC;4BAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;4BAC5D,QAAQ,CAAC,IAAI,CACZ,iEAAiE,EACjE,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAC3B,SAAS,CACT,CAAC;4BAEF,uDAAuD;4BACvD,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC;4BAC/D,MAAM,iBAAiB,GAAG,WAAW;gCACpC,CAAC,CAAC,WAAW,YAAY,KAAK;oCAC7B,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,OAAO,CAAC;oCAC5C,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;gCACtB,CAAC,CAAC,oBAAoB,CAAC;4BAExB,IAAI,CAAC;gCACJ,gFAAgF;gCAChF,IAAI,eAAe,EAAE,CAAC;oCACrB,QAAQ,CAAC,IAAI,CACZ,wEAAwE,EACxE,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,eAAe,CAAC,MAAM,EACtB,SAAS,CACT,CAAC;oCACF,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oCAC/B,MAAM,OAAO,CAAC,eAAe,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;oCAClE,QAAQ,CAAC,IAAI,CACZ,8DAA8D,EAC9D,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,SAAS,CACT,CAAC;gCACH,CAAC;gCAED,2DAA2D;gCAC3D,MAAM,eAAe,CACpB,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAC5C,iBAAiB,CACjB,CAAC;gCACF,QAAQ,CAAC,IAAI,CACZ,sEAAsE,EACtE,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,SAAS,CACT,CAAC;4BACH,CAAC;oCAAS,CAAC;gCACV,0DAA0D;gCAC1D,IAAI,CAAC,YAAY,CAAC,6BAA6B,EAAE,UAAU,CAAC,CAAC;gCAC7D,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;gCAEnD,sDAAsD;gCACtD,IAAI,WAAW,EAAE,CAAC;oCACjB,IAAI,CAAC,SAAS,CAAC;wCACd,IAAI,EAAE,cAAc,CAAC,KAAK;wCAC1B,OAAO,EAAE,iBAAiB,IAAI,yBAAyB;qCACvD,CAAC,CAAC;oCACH,IAAI,WAAW,YAAY,KAAK,EAAE,CAAC;wCAClC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;oCACnC,CAAC;gCACF,CAAC;qCAAM,CAAC;oCACP,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;gCAC7C,CAAC;gCAED,IAAI,CAAC,GAAG,EAAE,CAAC;gCACX,QAAQ,CAAC,IAAI,CACZ,mDAAmD,EACnD,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,SAAS,CACT,CAAC;gCACF,0EAA0E;gCAC1E,yEAAyE;gCACzE,mDAAmD;4BACpD,CAAC;wBACF,CAAC,CAAC,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACP,6CAA6C;wBAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC;wBAC7D,QAAQ,CAAC,IAAI,CACZ,iEAAiE,EACjE,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAC5B,UAAU,EACV,SAAS,CACT,CAAC;wBACF,IAAI,CAAC,YAAY,CAAC,6BAA6B,EAAE,UAAU,CAAC,CAAC;wBAC7D,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;wBAEtD,mFAAmF;wBACnF,wEAAwE;wBACxE,MAAM,eAAe,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;wBACrD,MAAM,eAAe,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;wBAEnD,IAAI,eAAe,EAAE,CAAC;4BACrB,QAAQ,CAAC,IAAI,CACZ,wEAAwE,EACxE,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,eAAe,CAAC,MAAM,EACtB,SAAS,CACT,CAAC;wBACH,CAAC;wBAED,+CAA+C;wBAC/C,MAAM,sBAAsB,GAAG,cAAc,CAAC;wBAC9C,MAAM,oBAAoB,GAAG,YAAY,CAAC;wBAE1C,2DAA2D;wBAC3D,0EAA0E;wBAC1E,OAAO,CAAC,SAAS,CAChB,KAAK,IAAI,EAAE;4BACV,gGAAgG;4BAChG,IAAI,eAAe,EAAE,CAAC;gCACrB,QAAQ,CAAC,IAAI,CACZ,wEAAwE,EACxE,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,eAAe,CAAC,MAAM,EACtB,SAAS,CACT,CAAC;gCACF,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gCAC/B,MAAM,OAAO,CAAC,eAAe,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;gCAClE,QAAQ,CAAC,IAAI,CACZ,8DAA8D,EAC9D,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,SAAS,CACT,CAAC;4BACH,CAAC;4BAED,6CAA6C;4BAC7C,QAAQ,CAAC,IAAI,CACZ,+DAA+D,EAC/D,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,SAAS,CACT,CAAC;4BACF,IAAI,CAAC;gCACJ,MAAM,eAAe,CACpB,sBAAsB,IAAI,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,EAClE,oBAAoB,CACpB,CAAC;gCACF,QAAQ,CAAC,IAAI,CACZ,+DAA+D,EAC/D,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,SAAS,CACT,CAAC;4BACH,CAAC;4BAAC,OAAO,EAAE,EAAE,CAAC;gCACb,QAAQ,CAAC,KAAK,CACb,iEAAiE,EACjE,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,EAAE,EACF,SAAS,CACT,CAAC;4BACH,CAAC;4BACD,0EAA0E;4BAC1E,yEAAyE;4BACzE,mDAAmD;wBACpD,CAAC,EACD,EAAE,MAAM,EAAE,IAAI,EAAE,CAChB,CAAC;oBACH,CAAC;gBACF,CAAC;gBAAC,OAAO,EAAE,EAAE,CAAC;oBACb,yDAAyD;oBACzD,MAAM,mBAAmB,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC;oBACjE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;oBAC/D,QAAQ,CAAC,IAAI,CACZ,oEAAoE,EACpE,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,EAC9B,SAAS,CACT,CAAC;oBACF,IAAI,CAAC,YAAY,CAAC,6BAA6B,EAAE,UAAU,CAAC,CAAC;oBAC7D,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;oBAE3C,IAAI,EAAE,YAAY,KAAK,EAAE,CAAC;wBACzB,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;oBAC1B,CAAC;oBACD,YAAY,GAAG,EAAE,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBAC3E,cAAc,GAAG,GAAG,CAAC;oBACrB,IAAI,CAAC,SAAS,CAAC;wBACd,IAAI,EAAE,cAAc,CAAC,KAAK;wBAC1B,OAAO,EAAE,EAAE,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;qBACtD,CAAC,CAAC;oBAEH,sDAAsD;oBACtD,MAAM,oBAAoB,GAAG,YAAY,CAAC;oBAE1C,kFAAkF;oBAClF,MAAM,eAAe,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;oBACrD,MAAM,eAAe,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;oBAEnD,IAAI,eAAe,EAAE,CAAC;wBACrB,QAAQ,CAAC,IAAI,CACZ,oFAAoF,EACpF,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,eAAe,CAAC,MAAM,EACtB,SAAS,CACT,CAAC;oBACH,CAAC;oBAED,yCAAyC;oBACzC,0EAA0E;oBAC1E,OAAO,CAAC,SAAS,CAChB,KAAK,IAAI,EAAE;wBACV,gFAAgF;wBAChF,IAAI,eAAe,EAAE,CAAC;4BACrB,QAAQ,CAAC,IAAI,CACZ,wEAAwE,EACxE,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,eAAe,CAAC,MAAM,EACtB,SAAS,CACT,CAAC;4BACF,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;4BAC/B,MAAM,OAAO,CAAC,eAAe,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;4BAClE,QAAQ,CAAC,IAAI,CACZ,8DAA8D,EAC9D,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,SAAS,CACT,CAAC;wBACH,CAAC;wBAED,IAAI,CAAC;4BACJ,MAAM,eAAe,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;wBAClD,CAAC;wBAAC,OAAO,UAAU,EAAE,CAAC;4BACrB,QAAQ,CAAC,KAAK,CACb,uEAAuE,EACvE,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,UAAU,EACV,SAAS,CACT,CAAC;wBACH,CAAC;wBACD,0EAA0E;wBAC1E,yEAAyE;wBACzE,mDAAmD;oBACpD,CAAC,EACD,EAAE,MAAM,EAAE,IAAI,EAAE,CAChB,CAAC;oBAEF,MAAM,EAAE,CAAC;gBACV,CAAC;wBAAS,CAAC;oBACV,+EAA+E;oBAC/E,MAAM,OAAO,GAA2B,EAAE,CAAC;oBAC3C,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;oBAC9C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;wBACxC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC7B,CAAC;oBACD,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;oBACjE,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,QAAQ,OAAO,EAAE,CAAC,CAAC;oBAE5C,QAAQ,CAAC,IAAI,CACZ,gEAAgE,EAChE,MAAM,EACN,GAAG,CAAC,QAAQ,EACZ,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAC5B,SAAS,CACT,CAAC;oBAEF,iDAAiD;oBACjD,2FAA2F;oBAC3F,IAAI,sBAAsB,EAAE,CAAC;wBAC5B,IAAI,CAAC,GAAG,EAAE,CAAC;oBACZ,CAAC;gBACF,CAAC;YACF,CAAC,CACD,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,2BAA2B,CAC1C,YAAgC;AAChC;;;GAGG;AACH,cAA8E;IAE9E,8DAA8D;IAC9D,OAAO,gBAAgB,CAAW,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QACnD,oDAAoD;QACpD,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;QACrE,MAAM,oBAAoB,GAAG,SAAS,EAAE,WAAW,CAAC;QAEpD,8CAA8C;QAC9C,IAAI,oBAAoB,KAAK,KAAK,IAAI,YAAY,EAAE,OAAO,KAAK,KAAK,EAAE,CAAC;YACvE,OAAO,IAAI,EAAE,CAAC;QACf,CAAC;QAED,gEAAgE;QAChE,MAAM,MAAM,GAAsB;YACjC,GAAG,CAAC,OAAO,oBAAoB,KAAK,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,GAAG,YAAY;SACf,CAAC;QAEF,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,SAAS,GAAG,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;QAEzE,8BAA8B;QAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,OAAO,IAAI,EAAE,CAAC;QACf,CAAC;QAED,kCAAkC;QAClC,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,WAAW,EAAE,CAAC;YACtD,OAAO,IAAI,EAAE,CAAC;QACf,CAAC;QAED,oCAAoC;QACpC,MAAM,cAAc,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACvD,IAAI,CAAC,cAAc,EAAE,CAAC;YACrB,OAAO,IAAI,EAAE,CAAC;QACf,CAAC;QAED,sBAAsB;QACtB,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,EAAE,CAAC;QACf,CAAC;QAED,8CAA8C;QAC9C,MAAM,kBAAkB,GAAG,QAAQ,CAAC;YACnC,SAAS;YACT,GAAG,WAAW;SACd,CAAC,CAAC;QAEH,MAAM,kBAAkB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,0BAA0B;IACzC,8DAA8D;IAC9D,OAAO,gBAAgB,CAAW,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QACnD,sDAAsD;QACtD,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QAE1D,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAElC,yFAAyF;QACzF,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAE/C,kCAAkC;QAClC,+CAA+C;QAC/C,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE;YACrD,QAAQ,EAAE,KAAK,EAAE,uCAAuC;YACxD,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,GAAG;YACT,MAAM,EAAE,MAAM,EAAE,SAAS;SACzB,CAAC,CAAC;QAEH,yDAAyD;QACzD,mDAAmD;QACnD,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAEjC,MAAM,IAAI,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,WAAW,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentuity/runtime",
3
- "version": "1.0.20",
3
+ "version": "1.0.21",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Agentuity employees and contributors",
6
6
  "type": "module",
@@ -26,11 +26,11 @@
26
26
  "prepublishOnly": "bun run clean && bun run build"
27
27
  },
28
28
  "dependencies": {
29
- "@agentuity/auth": "1.0.20",
30
- "@agentuity/core": "1.0.20",
31
- "@agentuity/frontend": "1.0.20",
32
- "@agentuity/schema": "1.0.20",
33
- "@agentuity/server": "1.0.20",
29
+ "@agentuity/auth": "1.0.21",
30
+ "@agentuity/core": "1.0.21",
31
+ "@agentuity/frontend": "1.0.21",
32
+ "@agentuity/schema": "1.0.21",
33
+ "@agentuity/server": "1.0.21",
34
34
  "@opentelemetry/api": "^1.9.0",
35
35
  "@opentelemetry/api-logs": "^0.207.0",
36
36
  "@opentelemetry/auto-instrumentations-node": "^0.66.0",
@@ -50,7 +50,7 @@
50
50
  "zod": "^4.3.5"
51
51
  },
52
52
  "devDependencies": {
53
- "@agentuity/test-utils": "1.0.20",
53
+ "@agentuity/test-utils": "1.0.21",
54
54
  "@types/bun": "latest",
55
55
  "@types/react": "^19.2.2",
56
56
  "@types/react-dom": "^19.2.2",
@@ -1,4 +1,9 @@
1
- export { websocket, type WebSocketConnection, type WebSocketHandler } from './websocket';
1
+ export {
2
+ websocket,
3
+ type WebSocketConnection,
4
+ type WebSocketHandler,
5
+ WS_DONE_PROMISE_KEY,
6
+ } from './websocket';
2
7
  export {
3
8
  sse,
4
9
  type SSEMessage,
@@ -4,6 +4,12 @@ import { context as otelContext, ROOT_CONTEXT } from '@opentelemetry/api';
4
4
  import { getAgentAsyncLocalStorage } from '../_context';
5
5
  import type { Env } from '../app';
6
6
 
7
+ /**
8
+ * Context key for WebSocket close promise.
9
+ * Used by middleware to defer session finalization until WebSocket closes.
10
+ */
11
+ export const WS_DONE_PROMISE_KEY = '_wsDonePromise';
12
+
7
13
  /**
8
14
  * WebSocket connection interface for handling WebSocket events.
9
15
  */
@@ -17,19 +23,35 @@ export interface WebSocketConnection {
17
23
  /**
18
24
  * Handler function for WebSocket connections.
19
25
  * Receives the Hono context and WebSocket connection with a flattened signature.
26
+ *
27
+ * **This handler must be synchronous** (returns `void`, not `Promise<void>`).
28
+ * The handler is called inside Hono's `upgradeWebSocket` factory, which must
29
+ * return event handlers synchronously for the HTTP upgrade to complete. If the
30
+ * handler were async, any `ws.onOpen`/`ws.onMessage`/`ws.onClose` registrations
31
+ * after an `await` would be silently lost because the factory returns before
32
+ * they are registered.
33
+ *
34
+ * To perform async work, place it inside the `onOpen`, `onMessage`, or `onClose`
35
+ * callbacks, which are properly awaited by the runtime.
20
36
  */
21
37
  export type WebSocketHandler<E extends Env = Env> = (
22
38
  c: Context<E>,
23
39
  ws: WebSocketConnection
24
- ) => void | Promise<void>;
40
+ ) => void;
25
41
 
26
42
  /**
27
43
  * Creates a WebSocket middleware for handling WebSocket connections.
28
44
  *
45
+ * The handler must be **synchronous** — it runs inside Hono's `upgradeWebSocket`
46
+ * factory which must return event handlers synchronously for the HTTP upgrade to
47
+ * complete. Async work should go inside `onOpen`, `onMessage`, or `onClose`
48
+ * callbacks, which are properly awaited by the runtime.
49
+ *
29
50
  * Use with router.get() to create a WebSocket endpoint:
30
51
  *
31
52
  * @example
32
53
  * ```typescript
54
+ * // Basic synchronous usage
33
55
  * import { createRouter, websocket } from '@agentuity/runtime';
34
56
  *
35
57
  * const router = createRouter();
@@ -51,7 +73,23 @@ export type WebSocketHandler<E extends Env = Env> = (
51
73
  * }));
52
74
  * ```
53
75
  *
54
- * @param handler - Handler function receiving context and WebSocket connection
76
+ * @example
77
+ * ```typescript
78
+ * // Async work inside callbacks (correct pattern)
79
+ * router.get('/ws', websocket((c, ws) => {
80
+ * ws.onOpen(async () => {
81
+ * const user = await fetchUser(c.var.auth);
82
+ * ws.send(JSON.stringify({ welcome: user.name }));
83
+ * });
84
+ *
85
+ * ws.onMessage(async (event) => {
86
+ * const result = await processMessage(event.data);
87
+ * ws.send(JSON.stringify(result));
88
+ * });
89
+ * }));
90
+ * ```
91
+ *
92
+ * @param handler - Synchronous handler function receiving context and WebSocket connection
55
93
  * @returns Hono middleware handler for WebSocket upgrade
56
94
  */
57
95
  export function websocket<E extends Env = Env>(handler: WebSocketHandler<E>): MiddlewareHandler<E> {
@@ -64,6 +102,27 @@ export function websocket<E extends Env = Env>(handler: WebSocketHandler<E>): Mi
64
102
  const asyncLocalStorage = getAgentAsyncLocalStorage();
65
103
  const capturedContext = asyncLocalStorage.getStore();
66
104
 
105
+ // Create done promise for session lifecycle deferral, but ONLY for actual
106
+ // WebSocket upgrade requests. The factory runs unconditionally for every
107
+ // request hitting this route (Hono calls createEvents before attempting
108
+ // server.upgrade). For non-upgrade HTTP requests, setting the promise would
109
+ // cause the middleware to hang forever waiting for an onClose that never fires.
110
+ let resolveDone: (() => void) | undefined;
111
+ const isUpgrade = c.req.header('upgrade')?.toLowerCase() === 'websocket';
112
+
113
+ if (isUpgrade) {
114
+ const donePromise = new Promise<void>((resolve) => {
115
+ resolveDone = resolve;
116
+ });
117
+
118
+ // Defensive: guard against future code adding rejection paths
119
+ donePromise.catch(() => {});
120
+
121
+ // Set on context so middleware defers session finalization until WS closes
122
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
123
+ (c as any).set(WS_DONE_PROMISE_KEY, donePromise);
124
+ }
125
+
67
126
  const wsConnection: WebSocketConnection = {
68
127
  onOpen: (h) => {
69
128
  openHandler = h;
@@ -154,6 +213,10 @@ export function websocket<E extends Env = Env>(handler: WebSocketHandler<E>): Mi
154
213
  }
155
214
  } catch (err) {
156
215
  c.var.logger?.error('WebSocket onClose error:', err);
216
+ } finally {
217
+ // Resolve the done promise to trigger session finalization
218
+ // This must fire even if the user's onClose handler throws
219
+ resolveDone?.();
157
220
  }
158
221
  },
159
222
  };
package/src/middleware.ts CHANGED
@@ -22,6 +22,7 @@ import * as runtimeConfig from './_config';
22
22
  import { getSessionEventProvider } from './_services';
23
23
  import { internal } from './logger/internal';
24
24
  import { STREAM_DONE_PROMISE_KEY, IS_STREAMING_RESPONSE_KEY } from './handlers/sse';
25
+ import { WS_DONE_PROMISE_KEY } from './handlers/websocket';
25
26
  import { loadBuildMetadata } from './_metadata';
26
27
 
27
28
  const SESSION_HEADER = 'x-session-id';
@@ -347,6 +348,7 @@ export function createOtelMiddleware() {
347
348
  const thread = await threadProvider.restore(c);
348
349
  const session = await sessionProvider.restore(thread, sessionId);
349
350
  const handler = new WaitUntilHandler(tracer);
351
+ const isWsUpgrade = c.req.header('upgrade')?.toLowerCase() === 'websocket';
350
352
 
351
353
  c.set('sessionId', sessionId);
352
354
  c.set('thread', thread);
@@ -357,7 +359,7 @@ export function createOtelMiddleware() {
357
359
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
358
360
  (c as any).set('agentIds', agentIds);
359
361
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
360
- (c as any).set('trigger', 'api');
362
+ (c as any).set('trigger', isWsUpgrade ? 'websocket' : 'api');
361
363
 
362
364
  // Send session start event (so evalruns can reference this session)
363
365
  // The provider decides whether to send based on available data (orgId, projectId, etc.)
@@ -412,7 +414,7 @@ export function createOtelMiddleware() {
412
414
  projectId: projectId || '',
413
415
  deploymentId: deploymentId || undefined,
414
416
  devmode: isDevMode,
415
- trigger: 'api',
417
+ trigger: isWsUpgrade ? 'websocket' : 'api',
416
418
  routeId,
417
419
  environment: runtimeConfig.getEnvironment(),
418
420
  url: c.req.path,
@@ -505,6 +507,12 @@ export function createOtelMiddleware() {
505
507
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
506
508
  const isStreaming = Boolean((c as any).get(IS_STREAMING_RESPONSE_KEY));
507
509
 
510
+ // Check if this is a WebSocket response that needs deferred finalization
511
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
512
+ const wsDone = (c as any).get(WS_DONE_PROMISE_KEY) as
513
+ | Promise<void>
514
+ | undefined;
515
+
508
516
  // Check if Hono caught an error (c.error is set by Hono's error handler)
509
517
  // or if the response status indicates an error
510
518
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -513,11 +521,12 @@ export function createOtelMiddleware() {
513
521
  const isError = honoError || responseStatus >= 500;
514
522
 
515
523
  internal.info(
516
- '[request] %s %s - status: %d, streaming: %s, error: %s (session: %s)',
524
+ '[request] %s %s - status: %d, streaming: %s, websocket: %s, error: %s (session: %s)',
517
525
  method,
518
526
  url.pathname,
519
527
  responseStatus,
520
528
  isStreaming,
529
+ Boolean(wsDone),
521
530
  isError,
522
531
  sessionId
523
532
  );
@@ -675,6 +684,135 @@ export function createOtelMiddleware() {
675
684
  // it would wait for this very promise to complete.
676
685
  }
677
686
  });
687
+ } else if (wsDone) {
688
+ // WebSocket connection — defer finalization until onClose fires
689
+ internal.info(
690
+ '[request] %s %s - websocket response, deferring finalization until close (session: %s)',
691
+ method,
692
+ url.pathname,
693
+ sessionId
694
+ );
695
+
696
+ // For WebSocket, we end the span inside waitUntil after the connection closes
697
+ shouldEndSpanInFinally = false;
698
+
699
+ // Capture pending promises BEFORE adding finalization waitUntil to avoid deadlock
700
+ const pendingPromises = handler.getPendingSnapshot();
701
+ const hasPendingTasks = pendingPromises.length > 0;
702
+
703
+ if (hasPendingTasks) {
704
+ internal.info(
705
+ '[request] %s %s - %d pending waitUntil tasks to wait for after websocket close (session: %s)',
706
+ method,
707
+ url.pathname,
708
+ pendingPromises.length,
709
+ sessionId
710
+ );
711
+ }
712
+
713
+ // Capture values needed for span attributes
714
+ const capturedResponseStatus = responseStatus;
715
+ const capturedErrorMessage = errorMessage;
716
+
717
+ // Use waitUntil to handle WebSocket close and finalization
718
+ handler.waitUntil(async () => {
719
+ let wsError: unknown = undefined;
720
+
721
+ try {
722
+ await wsDone;
723
+ internal.info(
724
+ '[request] %s %s - websocket closed (session: %s)',
725
+ method,
726
+ url.pathname,
727
+ sessionId
728
+ );
729
+ } catch (ex) {
730
+ wsError = ex;
731
+ internal.info(
732
+ '[request] %s %s - websocket closed with error: %s (session: %s)',
733
+ method,
734
+ url.pathname,
735
+ ex,
736
+ sessionId
737
+ );
738
+ }
739
+
740
+ // Record duration now that WebSocket is closed
741
+ const wsDurationMs = performance.now() - requestStartTime;
742
+ const durationNs = Math.round(wsDurationMs * 1_000_000);
743
+ internal.info(
744
+ '[request] %s %s - recording websocket duration: %sms (session: %s)',
745
+ method,
746
+ url.pathname,
747
+ wsDurationMs.toFixed(2),
748
+ sessionId
749
+ );
750
+
751
+ // Determine final status
752
+ const finalStatus = wsError ? 500 : capturedResponseStatus;
753
+ const finalErrorMessage = wsError
754
+ ? wsError instanceof Error
755
+ ? (wsError.stack ?? wsError.message)
756
+ : String(wsError)
757
+ : capturedErrorMessage;
758
+
759
+ try {
760
+ // Wait for pending tasks captured BEFORE this waitUntil was added
761
+ if (hasPendingTasks) {
762
+ internal.info(
763
+ '[request] %s %s - waiting for %d pending waitUntil tasks (session: %s)',
764
+ method,
765
+ url.pathname,
766
+ pendingPromises.length,
767
+ sessionId
768
+ );
769
+ const logger = c.get('logger');
770
+ await handler.waitForPromises(pendingPromises, logger, sessionId);
771
+ internal.info(
772
+ '[request] %s %s - all waitUntil tasks complete (session: %s)',
773
+ method,
774
+ url.pathname,
775
+ sessionId
776
+ );
777
+ }
778
+
779
+ // Finalize session after WebSocket closes
780
+ await finalizeSession(
781
+ finalStatus >= 500 ? finalStatus : undefined,
782
+ finalErrorMessage
783
+ );
784
+ internal.info(
785
+ '[request] %s %s - websocket session finalization complete (session: %s)',
786
+ method,
787
+ url.pathname,
788
+ sessionId
789
+ );
790
+ } finally {
791
+ // Set span attributes and end span AFTER all work is done
792
+ span.setAttribute('@agentuity/request.duration', durationNs);
793
+ span.setAttribute('http.status_code', finalStatus);
794
+
795
+ if (wsError) {
796
+ span.setStatus({
797
+ code: SpanStatusCode.ERROR,
798
+ message: finalErrorMessage ?? 'WebSocket ended with error',
799
+ });
800
+ if (wsError instanceof Error) {
801
+ span.recordException(wsError);
802
+ }
803
+ } else {
804
+ span.setStatus({ code: SpanStatusCode.OK });
805
+ }
806
+
807
+ span.end();
808
+ internal.info(
809
+ '[request] %s %s - websocket span ended (session: %s)',
810
+ method,
811
+ url.pathname,
812
+ sessionId
813
+ );
814
+ }
815
+ });
678
816
  } else {
679
817
  // Non-streaming: record duration immediately
680
818
  const durationNs = Math.round(handlerDurationMs * 1_000_000);