@agentuity/runtime 0.1.7 → 0.1.8
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/handlers/sse.d.ts.map +1 -1
- package/dist/handlers/sse.js +18 -6
- package/dist/handlers/sse.js.map +1 -1
- package/dist/handlers/stream.d.ts.map +1 -1
- package/dist/handlers/stream.js +17 -6
- package/dist/handlers/stream.js.map +1 -1
- package/dist/handlers/websocket.d.ts.map +1 -1
- package/dist/handlers/websocket.js +37 -24
- package/dist/handlers/websocket.js.map +1 -1
- package/package.json +7 -7
- package/src/handlers/sse.ts +17 -5
- package/src/handlers/stream.ts +16 -5
- package/src/handlers/websocket.ts +33 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/handlers/sse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/handlers/sse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAI7C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAElC;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,uBAAuB,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,yBAAyB,yBAAyB,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACzB;;;;OAIG;IACH,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE;;OAEG;IACH,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD;;OAEG;IACH,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IACxC;;OAEG;IACH,KAAK,EAAE,MAAM,IAAI,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAC7C,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EACb,MAAM,EAAE,SAAS,KACb,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AA2B1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CA8I3E"}
|
package/dist/handlers/sse.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { stream as honoStream } from 'hono/streaming';
|
|
2
|
+
import { context as otelContext, ROOT_CONTEXT } from '@opentelemetry/api';
|
|
2
3
|
import { getAgentAsyncLocalStorage } from '../_context';
|
|
3
4
|
/**
|
|
4
5
|
* Context variable key for stream completion promise.
|
|
@@ -189,12 +190,23 @@ export function sse(handler) {
|
|
|
189
190
|
// Run handler with AsyncLocalStorage context propagation.
|
|
190
191
|
// honoStream already uses a fire-and-forget pattern internally,
|
|
191
192
|
// so we can safely await here - the response is already being sent.
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
193
|
+
//
|
|
194
|
+
// IMPORTANT: We run in ROOT_CONTEXT (no active OTEL span) to avoid a Bun bug
|
|
195
|
+
// where OTEL-instrumented fetch conflicts with streaming responses.
|
|
196
|
+
// This causes "ReadableStream has already been used" errors when AI SDK's
|
|
197
|
+
// generateText/generateObject (which use fetch + stream.tee() internally)
|
|
198
|
+
// are called inside SSE handlers. Running without an active span makes
|
|
199
|
+
// our OTEL fetch wrapper use the original unpatched fetch.
|
|
200
|
+
// See: https://github.com/agentuity/sdk/issues/471
|
|
201
|
+
// See: https://github.com/oven-sh/bun/issues/24766
|
|
202
|
+
await otelContext.with(ROOT_CONTEXT, async () => {
|
|
203
|
+
if (capturedContext) {
|
|
204
|
+
await asyncLocalStorage.run(capturedContext, runInContext);
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
await runInContext();
|
|
208
|
+
}
|
|
209
|
+
});
|
|
198
210
|
});
|
|
199
211
|
};
|
|
200
212
|
}
|
package/dist/handlers/sse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/handlers/sse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAGxD;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AAE5D;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAAsB,CAAC;AA6ChE;;;GAGG;AACH,SAAS,gBAAgB,CAAC,OAAmB;IAC5C,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,IAAI,UAAU,OAAO,CAAC,KAAK,IAAI,CAAC;IACrC,CAAC;IACD,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;QAChB,IAAI,IAAI,OAAO,OAAO,CAAC,EAAE,IAAI,CAAC;IAC/B,CAAC;IACD,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,IAAI,IAAI,UAAU,OAAO,CAAC,KAAK,IAAI,CAAC;IACrC,CAAC;IACD,iEAAiE;IACjE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC9B,IAAI,IAAI,SAAS,IAAI,IAAI,CAAC;IAC3B,CAAC;IACD,8CAA8C;IAC9C,IAAI,IAAI,IAAI,CAAC;IACb,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,UAAU,GAAG,CAAsB,OAAsB;IAC9D,OAAO,CAAC,CAAa,EAAE,EAAE;QACxB,MAAM,iBAAiB,GAAG,yBAAyB,EAAE,CAAC;QACtD,MAAM,eAAe,GAAG,iBAAiB,CAAC,QAAQ,EAAE,CAAC;QAErD,6DAA6D;QAC7D,uEAAuE;QACvE,IAAI,WAAqC,CAAC;QAC1C,IAAI,UAAoD,CAAC;QACzD,MAAM,WAAW,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzD,WAAW,GAAG,OAAO,CAAC;YACtB,UAAU,GAAG,MAAM,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,8EAA8E;QAC9E,iFAAiF;QACjF,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE;YACtB,oEAAoE;QACrE,CAAC,CAAC,CAAC;QAEH,kDAAkD;QAClD,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,MAAM,QAAQ,GAAG,CAAC,KAAe,EAAE,EAAE;YACpC,IAAI,MAAM;gBAAE,OAAO;YACnB,MAAM,GAAG,IAAI,CAAC;YACd,IAAI,KAAK,IAAI,UAAU,EAAE,CAAC;gBACzB,UAAU,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;iBAAM,IAAI,WAAW,EAAE,CAAC;gBACxB,WAAW,EAAE,CAAC;YACf,CAAC;QACF,CAAC,CAAC;QAEF,2CAA2C;QAC3C,8DAA8D;QAC7D,CAAS,CAAC,GAAG,CAAC,uBAAuB,EAAE,WAAW,CAAC,CAAC;QACrD,8DAA8D;QAC7D,CAAS,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;QAEhD,2BAA2B;QAC3B,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC;QAC9C,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QACtC,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAErC,2CAA2C;QAC3C,iFAAiF;QACjF,6EAA6E;QAC7E,4EAA4E;QAC5E,4EAA4E;QAC5E,wEAAwE;QACxE,yDAAyD;QACzD,mDAAmD;QAEnD,8DAA8D;QAC9D,OAAO,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAM,EAAE,EAAE;YACrC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;YAElC,+CAA+C;YAC/C,IAAI,iBAA2C,CAAC;YAEhD,4CAA4C;YAC5C,MAAM,gBAAgB,GAAG,KAAK,EAAE,OAAmB,EAAiB,EAAE;gBACrE,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBAC5C,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC;YAEF,MAAM,aAAa,GAAc;gBAChC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;oBACrB,IACC,OAAO,IAAI,KAAK,QAAQ;wBACxB,OAAO,IAAI,KAAK,QAAQ;wBACxB,OAAO,IAAI,KAAK,SAAS,EACxB,CAAC;wBACF,OAAO,gBAAgB,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACjD,CAAC;yBAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;wBACtD,OAAO,gBAAgB,CAAC,IAAkB,CAAC,CAAC;oBAC7C,CAAC;oBACD,OAAO,gBAAgB,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjD,CAAC;gBACD,QAAQ,EAAE,gBAAgB;gBAC1B,OAAO,EAAE,CAAC,QAAoB,EAAE,EAAE;oBACjC,iBAAiB,GAAG,QAAQ,CAAC;oBAC7B,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;wBACd,IAAI,CAAC;4BACJ,QAAQ,EAAE,CAAC;wBACZ,CAAC;gCAAS,CAAC;4BACV,+BAA+B;4BAC/B,QAAQ,EAAE,CAAC;wBACZ,CAAC;oBACF,CAAC,CAAC,CAAC;gBACJ,CAAC;gBACD,KAAK,EAAE,GAAG,EAAE;oBACX,IAAI,CAAC;wBACJ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;oBACb,CAAC;4BAAS,CAAC;wBACV,+BAA+B;wBAC/B,QAAQ,EAAE,CAAC;oBACZ,CAAC;gBACF,CAAC;aACD,CAAC;YAEF,sEAAsE;YACtE,qEAAqE;YACrE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACxB,2DAA2D;oBAC3D,iDAAiD;oBACjD,QAAQ,EAAE,CAAC;gBACZ,CAAC;YACF,CAAC,CAAC,CAAC;YAEH,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE;gBAC/B,IAAI,CAAC;oBACJ,MAAM,OAAO,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;oBAChC,QAAQ,EAAE,CAAC;gBACZ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACd,6DAA6D;oBAC7D,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;oBACjD,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACf,CAAC;YACF,CAAC,CAAC;YAEF,0DAA0D;YAC1D,gEAAgE;YAChE,oEAAoE;YACpE,IAAI,eAAe,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/handlers/sse.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/handlers/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/handlers/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAI7C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAGlC;;;GAGG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAChD,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KACT,cAAc,CAAC,UAAU,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC;AAExF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAqEjF"}
|
package/dist/handlers/stream.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { stream as honoStream } from 'hono/streaming';
|
|
2
|
+
import { context as otelContext, ROOT_CONTEXT } from '@opentelemetry/api';
|
|
2
3
|
import { getAgentAsyncLocalStorage } from '../_context';
|
|
3
4
|
import { STREAM_DONE_PROMISE_KEY, IS_STREAMING_RESPONSE_KEY } from './sse';
|
|
4
5
|
/**
|
|
@@ -93,12 +94,22 @@ export function stream(handler) {
|
|
|
93
94
|
throw err;
|
|
94
95
|
}
|
|
95
96
|
};
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
97
|
+
// IMPORTANT: We run in ROOT_CONTEXT (no active OTEL span) to avoid a Bun bug
|
|
98
|
+
// where OTEL-instrumented fetch conflicts with streaming responses.
|
|
99
|
+
// This causes "ReadableStream has already been used" errors when AI SDK's
|
|
100
|
+
// generateText/generateObject (which use fetch + stream.tee() internally)
|
|
101
|
+
// are called inside stream handlers. Running without an active span makes
|
|
102
|
+
// our OTEL fetch wrapper use the original unpatched fetch.
|
|
103
|
+
// See: https://github.com/agentuity/sdk/issues/471
|
|
104
|
+
// See: https://github.com/oven-sh/bun/issues/24766
|
|
105
|
+
await otelContext.with(ROOT_CONTEXT, async () => {
|
|
106
|
+
if (capturedContext) {
|
|
107
|
+
await asyncLocalStorage.run(capturedContext, runInContext);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
await runInContext();
|
|
111
|
+
}
|
|
112
|
+
});
|
|
102
113
|
});
|
|
103
114
|
};
|
|
104
115
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/handlers/stream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,OAAO,CAAC;AAU3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,UAAU,MAAM,CAAsB,OAAyB;IACpE,OAAO,CAAC,CAAa,EAAE,EAAE;QACxB,MAAM,iBAAiB,GAAG,yBAAyB,EAAE,CAAC;QACtD,MAAM,eAAe,GAAG,iBAAiB,CAAC,QAAQ,EAAE,CAAC;QAErD,6DAA6D;QAC7D,4EAA4E;QAC5E,IAAI,WAAqC,CAAC;QAC1C,IAAI,UAAoD,CAAC;QACzD,MAAM,WAAW,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzD,WAAW,GAAG,OAAO,CAAC;YACtB,UAAU,GAAG,MAAM,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,kDAAkD;QAClD,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,MAAM,QAAQ,GAAG,CAAC,KAAe,EAAE,EAAE;YACpC,IAAI,MAAM;gBAAE,OAAO;YACnB,MAAM,GAAG,IAAI,CAAC;YACd,IAAI,KAAK,IAAI,UAAU,EAAE,CAAC;gBACzB,UAAU,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;iBAAM,IAAI,WAAW,EAAE,CAAC;gBACxB,WAAW,EAAE,CAAC;YACf,CAAC;QACF,CAAC,CAAC;QAEF,2CAA2C;QAC3C,8DAA8D;QAC7D,CAAS,CAAC,GAAG,CAAC,uBAAuB,EAAE,WAAW,CAAC,CAAC;QACrD,8DAA8D;QAC7D,CAAS,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;QAEhD,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,0BAA0B,CAAC,CAAC;QAErD,8DAA8D;QAC9D,OAAO,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAM,EAAE,EAAE;YACrC,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE;gBAC/B,IAAI,CAAC;oBACJ,IAAI,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC9B,IAAI,YAAY,YAAY,OAAO,EAAE,CAAC;wBACrC,YAAY,GAAG,MAAM,YAAY,CAAC;oBACnC,CAAC;oBACD,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBAC3B,gCAAgC;oBAChC,QAAQ,EAAE,CAAC;gBACZ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACd,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;oBAC1C,QAAQ,CAAC,GAAG,CAAC,CAAC;oBACd,MAAM,GAAG,CAAC;gBACX,CAAC;YACF,CAAC,CAAC;YAEF,IAAI,eAAe,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/handlers/stream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,OAAO,CAAC;AAU3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,UAAU,MAAM,CAAsB,OAAyB;IACpE,OAAO,CAAC,CAAa,EAAE,EAAE;QACxB,MAAM,iBAAiB,GAAG,yBAAyB,EAAE,CAAC;QACtD,MAAM,eAAe,GAAG,iBAAiB,CAAC,QAAQ,EAAE,CAAC;QAErD,6DAA6D;QAC7D,4EAA4E;QAC5E,IAAI,WAAqC,CAAC;QAC1C,IAAI,UAAoD,CAAC;QACzD,MAAM,WAAW,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzD,WAAW,GAAG,OAAO,CAAC;YACtB,UAAU,GAAG,MAAM,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,kDAAkD;QAClD,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,MAAM,QAAQ,GAAG,CAAC,KAAe,EAAE,EAAE;YACpC,IAAI,MAAM;gBAAE,OAAO;YACnB,MAAM,GAAG,IAAI,CAAC;YACd,IAAI,KAAK,IAAI,UAAU,EAAE,CAAC;gBACzB,UAAU,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;iBAAM,IAAI,WAAW,EAAE,CAAC;gBACxB,WAAW,EAAE,CAAC;YACf,CAAC;QACF,CAAC,CAAC;QAEF,2CAA2C;QAC3C,8DAA8D;QAC7D,CAAS,CAAC,GAAG,CAAC,uBAAuB,EAAE,WAAW,CAAC,CAAC;QACrD,8DAA8D;QAC7D,CAAS,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;QAEhD,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,0BAA0B,CAAC,CAAC;QAErD,8DAA8D;QAC9D,OAAO,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAM,EAAE,EAAE;YACrC,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE;gBAC/B,IAAI,CAAC;oBACJ,IAAI,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC9B,IAAI,YAAY,YAAY,OAAO,EAAE,CAAC;wBACrC,YAAY,GAAG,MAAM,YAAY,CAAC;oBACnC,CAAC;oBACD,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBAC3B,gCAAgC;oBAChC,QAAQ,EAAE,CAAC;gBACZ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACd,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;oBAC1C,QAAQ,CAAC,GAAG,CAAC,CAAC;oBACd,MAAM,GAAG,CAAC;gBACX,CAAC;YACF,CAAC,CAAC;YAEF,6EAA6E;YAC7E,oEAAoE;YACpE,0EAA0E;YAC1E,0EAA0E;YAC1E,0EAA0E;YAC1E,2DAA2D;YAC3D,mDAAmD;YACnD,mDAAmD;YACnD,MAAM,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;gBAC/C,IAAI,eAAe,EAAE,CAAC;oBACrB,MAAM,iBAAiB,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;gBAC5D,CAAC;qBAAM,CAAC;oBACP,MAAM,YAAY,EAAE,CAAC;gBACtB,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;AACH,CAAC"}
|
|
@@ -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;
|
|
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,4 +1,5 @@
|
|
|
1
1
|
import { upgradeWebSocket } from 'hono/bun';
|
|
2
|
+
import { context as otelContext, ROOT_CONTEXT } from '@opentelemetry/api';
|
|
2
3
|
import { getAgentAsyncLocalStorage } from '../_context';
|
|
3
4
|
/**
|
|
4
5
|
* Creates a WebSocket middleware for handling WebSocket connections.
|
|
@@ -53,13 +54,19 @@ export function websocket(handler) {
|
|
|
53
54
|
// This will be bound to the actual ws in the handlers
|
|
54
55
|
},
|
|
55
56
|
};
|
|
57
|
+
// IMPORTANT: We run in ROOT_CONTEXT (no active OTEL span) to avoid a Bun bug
|
|
58
|
+
// where OTEL-instrumented fetch conflicts with streaming responses.
|
|
59
|
+
// See: https://github.com/agentuity/sdk/issues/471
|
|
60
|
+
// See: https://github.com/oven-sh/bun/issues/24766
|
|
56
61
|
const runHandler = () => {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
62
|
+
otelContext.with(ROOT_CONTEXT, () => {
|
|
63
|
+
if (capturedContext) {
|
|
64
|
+
asyncLocalStorage.run(capturedContext, () => handler(c, wsConnection));
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
handler(c, wsConnection);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
63
70
|
initialized = true;
|
|
64
71
|
};
|
|
65
72
|
runHandler();
|
|
@@ -70,12 +77,14 @@ export function websocket(handler) {
|
|
|
70
77
|
wsConnection.send = (data) => ws.send(data);
|
|
71
78
|
if (openHandler) {
|
|
72
79
|
const h = openHandler;
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
80
|
+
await otelContext.with(ROOT_CONTEXT, async () => {
|
|
81
|
+
if (capturedContext) {
|
|
82
|
+
await asyncLocalStorage.run(capturedContext, () => h(event));
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
await h(event);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
79
88
|
}
|
|
80
89
|
}
|
|
81
90
|
catch (err) {
|
|
@@ -92,12 +101,14 @@ export function websocket(handler) {
|
|
|
92
101
|
}
|
|
93
102
|
if (messageHandler) {
|
|
94
103
|
const h = messageHandler;
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
104
|
+
await otelContext.with(ROOT_CONTEXT, async () => {
|
|
105
|
+
if (capturedContext) {
|
|
106
|
+
await asyncLocalStorage.run(capturedContext, () => h(event));
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
await h(event);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
101
112
|
}
|
|
102
113
|
}
|
|
103
114
|
catch (err) {
|
|
@@ -110,12 +121,14 @@ export function websocket(handler) {
|
|
|
110
121
|
try {
|
|
111
122
|
if (closeHandler) {
|
|
112
123
|
const h = closeHandler;
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
124
|
+
await otelContext.with(ROOT_CONTEXT, async () => {
|
|
125
|
+
if (capturedContext) {
|
|
126
|
+
await asyncLocalStorage.run(capturedContext, () => h(event));
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
await h(event);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
119
132
|
}
|
|
120
133
|
}
|
|
121
134
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/handlers/websocket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAsBxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,SAAS,CAAsB,OAA4B;IAC1E,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAa,EAAE,EAAE;QACpD,IAAI,WAAiE,CAAC;QACtE,IAAI,cAA2E,CAAC;QAChF,IAAI,YAAuE,CAAC;QAC5E,IAAI,WAAW,GAAG,KAAK,CAAC;QAExB,MAAM,iBAAiB,GAAG,yBAAyB,EAAE,CAAC;QACtD,MAAM,eAAe,GAAG,iBAAiB,CAAC,QAAQ,EAAE,CAAC;QAErD,MAAM,YAAY,GAAwB;YACzC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;gBACb,WAAW,GAAG,CAAC,CAAC;YACjB,CAAC;YACD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;gBAChB,cAAc,GAAG,CAAC,CAAC;YACpB,CAAC;YACD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACd,YAAY,GAAG,CAAC,CAAC;YAClB,CAAC;YACD,IAAI,EAAE,CAAC,KAAwC,EAAE,EAAE;gBAClD,sDAAsD;YACvD,CAAC;SACD,CAAC;QAEF,MAAM,UAAU,GAAG,GAAG,EAAE;YACvB,IAAI,eAAe,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/handlers/websocket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAsBxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,SAAS,CAAsB,OAA4B;IAC1E,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAa,EAAE,EAAE;QACpD,IAAI,WAAiE,CAAC;QACtE,IAAI,cAA2E,CAAC;QAChF,IAAI,YAAuE,CAAC;QAC5E,IAAI,WAAW,GAAG,KAAK,CAAC;QAExB,MAAM,iBAAiB,GAAG,yBAAyB,EAAE,CAAC;QACtD,MAAM,eAAe,GAAG,iBAAiB,CAAC,QAAQ,EAAE,CAAC;QAErD,MAAM,YAAY,GAAwB;YACzC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;gBACb,WAAW,GAAG,CAAC,CAAC;YACjB,CAAC;YACD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;gBAChB,cAAc,GAAG,CAAC,CAAC;YACpB,CAAC;YACD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACd,YAAY,GAAG,CAAC,CAAC;YAClB,CAAC;YACD,IAAI,EAAE,CAAC,KAAwC,EAAE,EAAE;gBAClD,sDAAsD;YACvD,CAAC;SACD,CAAC;QAEF,6EAA6E;QAC7E,oEAAoE;QACpE,mDAAmD;QACnD,mDAAmD;QACnD,MAAM,UAAU,GAAG,GAAG,EAAE;YACvB,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE;gBACnC,IAAI,eAAe,EAAE,CAAC;oBACrB,iBAAiB,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;gBACxE,CAAC;qBAAM,CAAC;oBACP,OAAO,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;gBAC1B,CAAC;YACF,CAAC,CAAC,CAAC;YACH,WAAW,GAAG,IAAI,CAAC;QACpB,CAAC,CAAC;QAEF,UAAU,EAAE,CAAC;QAEb,OAAO;YACN,8DAA8D;YAC9D,MAAM,EAAE,KAAK,EAAE,KAAY,EAAE,EAAO,EAAE,EAAE;gBACvC,IAAI,CAAC;oBACJ,YAAY,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAE5C,IAAI,WAAW,EAAE,CAAC;wBACjB,MAAM,CAAC,GAAG,WAAW,CAAC;wBACtB,MAAM,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;4BAC/C,IAAI,eAAe,EAAE,CAAC;gCACrB,MAAM,iBAAiB,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;4BAC9D,CAAC;iCAAM,CAAC;gCACP,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;4BAChB,CAAC;wBACF,CAAC,CAAC,CAAC;oBACJ,CAAC;gBACF,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACd,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;oBACpD,MAAM,GAAG,CAAC;gBACX,CAAC;YACF,CAAC;YACD,8DAA8D;YAC9D,SAAS,EAAE,KAAK,EAAE,KAAmB,EAAE,EAAO,EAAE,EAAE;gBACjD,IAAI,CAAC;oBACJ,IAAI,CAAC,WAAW,EAAE,CAAC;wBAClB,YAAY,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC5C,UAAU,EAAE,CAAC;oBACd,CAAC;oBACD,IAAI,cAAc,EAAE,CAAC;wBACpB,MAAM,CAAC,GAAG,cAAc,CAAC;wBACzB,MAAM,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;4BAC/C,IAAI,eAAe,EAAE,CAAC;gCACrB,MAAM,iBAAiB,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;4BAC9D,CAAC;iCAAM,CAAC;gCACP,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;4BAChB,CAAC;wBACF,CAAC,CAAC,CAAC;oBACJ,CAAC;gBACF,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACd,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;oBACvD,MAAM,GAAG,CAAC;gBACX,CAAC;YACF,CAAC;YACD,8DAA8D;YAC9D,OAAO,EAAE,KAAK,EAAE,KAAiB,EAAE,GAAQ,EAAE,EAAE;gBAC9C,IAAI,CAAC;oBACJ,IAAI,YAAY,EAAE,CAAC;wBAClB,MAAM,CAAC,GAAG,YAAY,CAAC;wBACvB,MAAM,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;4BAC/C,IAAI,eAAe,EAAE,CAAC;gCACrB,MAAM,iBAAiB,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;4BAC9D,CAAC;iCAAM,CAAC;gCACP,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;4BAChB,CAAC;wBACF,CAAC,CAAC,CAAC;oBACJ,CAAC;gBACF,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACd,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;gBACtD,CAAC;YACF,CAAC;SACD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAyB,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CACnD,SAA6C,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAEzD,OAAO,UAAU,CAAC;AACnB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentuity/runtime",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
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": "0.1.
|
|
30
|
-
"@agentuity/core": "0.1.
|
|
31
|
-
"@agentuity/frontend": "0.1.
|
|
32
|
-
"@agentuity/schema": "0.1.
|
|
33
|
-
"@agentuity/server": "0.1.
|
|
29
|
+
"@agentuity/auth": "0.1.8",
|
|
30
|
+
"@agentuity/core": "0.1.8",
|
|
31
|
+
"@agentuity/frontend": "0.1.8",
|
|
32
|
+
"@agentuity/schema": "0.1.8",
|
|
33
|
+
"@agentuity/server": "0.1.8",
|
|
34
34
|
"@opentelemetry/api": "^1.9.0",
|
|
35
35
|
"@opentelemetry/api-logs": "^0.207.0",
|
|
36
36
|
"@opentelemetry/auto-instrumentations-node": "^0.66.0",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"zod": "^4.3.5"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@agentuity/test-utils": "0.1.
|
|
55
|
+
"@agentuity/test-utils": "0.1.8",
|
|
56
56
|
"@types/bun": "latest",
|
|
57
57
|
"@types/react": "^19.2.2",
|
|
58
58
|
"@types/react-dom": "^19.2.2",
|
package/src/handlers/sse.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Context, Handler } from 'hono';
|
|
2
2
|
import { stream as honoStream } from 'hono/streaming';
|
|
3
|
+
import { context as otelContext, ROOT_CONTEXT } from '@opentelemetry/api';
|
|
3
4
|
import { getAgentAsyncLocalStorage } from '../_context';
|
|
4
5
|
import type { Env } from '../app';
|
|
5
6
|
|
|
@@ -247,11 +248,22 @@ export function sse<E extends Env = Env>(handler: SSEHandler<E>): Handler<E> {
|
|
|
247
248
|
// Run handler with AsyncLocalStorage context propagation.
|
|
248
249
|
// honoStream already uses a fire-and-forget pattern internally,
|
|
249
250
|
// so we can safely await here - the response is already being sent.
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
251
|
+
//
|
|
252
|
+
// IMPORTANT: We run in ROOT_CONTEXT (no active OTEL span) to avoid a Bun bug
|
|
253
|
+
// where OTEL-instrumented fetch conflicts with streaming responses.
|
|
254
|
+
// This causes "ReadableStream has already been used" errors when AI SDK's
|
|
255
|
+
// generateText/generateObject (which use fetch + stream.tee() internally)
|
|
256
|
+
// are called inside SSE handlers. Running without an active span makes
|
|
257
|
+
// our OTEL fetch wrapper use the original unpatched fetch.
|
|
258
|
+
// See: https://github.com/agentuity/sdk/issues/471
|
|
259
|
+
// See: https://github.com/oven-sh/bun/issues/24766
|
|
260
|
+
await otelContext.with(ROOT_CONTEXT, async () => {
|
|
261
|
+
if (capturedContext) {
|
|
262
|
+
await asyncLocalStorage.run(capturedContext, runInContext);
|
|
263
|
+
} else {
|
|
264
|
+
await runInContext();
|
|
265
|
+
}
|
|
266
|
+
});
|
|
255
267
|
});
|
|
256
268
|
};
|
|
257
269
|
}
|
package/src/handlers/stream.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Context, Handler } from 'hono';
|
|
2
2
|
import { stream as honoStream } from 'hono/streaming';
|
|
3
|
+
import { context as otelContext, ROOT_CONTEXT } from '@opentelemetry/api';
|
|
3
4
|
import { getAgentAsyncLocalStorage } from '../_context';
|
|
4
5
|
import type { Env } from '../app';
|
|
5
6
|
import { STREAM_DONE_PROMISE_KEY, IS_STREAMING_RESPONSE_KEY } from './sse';
|
|
@@ -107,11 +108,21 @@ export function stream<E extends Env = Env>(handler: StreamHandler<E>): Handler<
|
|
|
107
108
|
}
|
|
108
109
|
};
|
|
109
110
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
111
|
+
// IMPORTANT: We run in ROOT_CONTEXT (no active OTEL span) to avoid a Bun bug
|
|
112
|
+
// where OTEL-instrumented fetch conflicts with streaming responses.
|
|
113
|
+
// This causes "ReadableStream has already been used" errors when AI SDK's
|
|
114
|
+
// generateText/generateObject (which use fetch + stream.tee() internally)
|
|
115
|
+
// are called inside stream handlers. Running without an active span makes
|
|
116
|
+
// our OTEL fetch wrapper use the original unpatched fetch.
|
|
117
|
+
// See: https://github.com/agentuity/sdk/issues/471
|
|
118
|
+
// See: https://github.com/oven-sh/bun/issues/24766
|
|
119
|
+
await otelContext.with(ROOT_CONTEXT, async () => {
|
|
120
|
+
if (capturedContext) {
|
|
121
|
+
await asyncLocalStorage.run(capturedContext, runInContext);
|
|
122
|
+
} else {
|
|
123
|
+
await runInContext();
|
|
124
|
+
}
|
|
125
|
+
});
|
|
115
126
|
});
|
|
116
127
|
};
|
|
117
128
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Context, MiddlewareHandler } from 'hono';
|
|
2
2
|
import { upgradeWebSocket } from 'hono/bun';
|
|
3
|
+
import { context as otelContext, ROOT_CONTEXT } from '@opentelemetry/api';
|
|
3
4
|
import { getAgentAsyncLocalStorage } from '../_context';
|
|
4
5
|
import type { Env } from '../app';
|
|
5
6
|
|
|
@@ -78,12 +79,18 @@ export function websocket<E extends Env = Env>(handler: WebSocketHandler<E>): Mi
|
|
|
78
79
|
},
|
|
79
80
|
};
|
|
80
81
|
|
|
82
|
+
// IMPORTANT: We run in ROOT_CONTEXT (no active OTEL span) to avoid a Bun bug
|
|
83
|
+
// where OTEL-instrumented fetch conflicts with streaming responses.
|
|
84
|
+
// See: https://github.com/agentuity/sdk/issues/471
|
|
85
|
+
// See: https://github.com/oven-sh/bun/issues/24766
|
|
81
86
|
const runHandler = () => {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
+
otelContext.with(ROOT_CONTEXT, () => {
|
|
88
|
+
if (capturedContext) {
|
|
89
|
+
asyncLocalStorage.run(capturedContext, () => handler(c, wsConnection));
|
|
90
|
+
} else {
|
|
91
|
+
handler(c, wsConnection);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
87
94
|
initialized = true;
|
|
88
95
|
};
|
|
89
96
|
|
|
@@ -97,11 +104,13 @@ export function websocket<E extends Env = Env>(handler: WebSocketHandler<E>): Mi
|
|
|
97
104
|
|
|
98
105
|
if (openHandler) {
|
|
99
106
|
const h = openHandler;
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
107
|
+
await otelContext.with(ROOT_CONTEXT, async () => {
|
|
108
|
+
if (capturedContext) {
|
|
109
|
+
await asyncLocalStorage.run(capturedContext, () => h(event));
|
|
110
|
+
} else {
|
|
111
|
+
await h(event);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
105
114
|
}
|
|
106
115
|
} catch (err) {
|
|
107
116
|
c.var.logger?.error('WebSocket onOpen error:', err);
|
|
@@ -117,11 +126,13 @@ export function websocket<E extends Env = Env>(handler: WebSocketHandler<E>): Mi
|
|
|
117
126
|
}
|
|
118
127
|
if (messageHandler) {
|
|
119
128
|
const h = messageHandler;
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
129
|
+
await otelContext.with(ROOT_CONTEXT, async () => {
|
|
130
|
+
if (capturedContext) {
|
|
131
|
+
await asyncLocalStorage.run(capturedContext, () => h(event));
|
|
132
|
+
} else {
|
|
133
|
+
await h(event);
|
|
134
|
+
}
|
|
135
|
+
});
|
|
125
136
|
}
|
|
126
137
|
} catch (err) {
|
|
127
138
|
c.var.logger?.error('WebSocket onMessage error:', err);
|
|
@@ -133,11 +144,13 @@ export function websocket<E extends Env = Env>(handler: WebSocketHandler<E>): Mi
|
|
|
133
144
|
try {
|
|
134
145
|
if (closeHandler) {
|
|
135
146
|
const h = closeHandler;
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
147
|
+
await otelContext.with(ROOT_CONTEXT, async () => {
|
|
148
|
+
if (capturedContext) {
|
|
149
|
+
await asyncLocalStorage.run(capturedContext, () => h(event));
|
|
150
|
+
} else {
|
|
151
|
+
await h(event);
|
|
152
|
+
}
|
|
153
|
+
});
|
|
141
154
|
}
|
|
142
155
|
} catch (err) {
|
|
143
156
|
c.var.logger?.error('WebSocket onClose error:', err);
|