@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.
- package/README.md +61 -35
- package/dist/_config.d.ts.map +1 -1
- package/dist/_config.js +9 -2
- package/dist/_config.js.map +1 -1
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +6 -0
- package/dist/agent.js.map +1 -1
- package/dist/app.d.ts +5 -2
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js.map +1 -1
- package/dist/eval.d.ts +2 -0
- package/dist/eval.d.ts.map +1 -1
- package/dist/handlers/cron.d.ts +47 -0
- package/dist/handlers/cron.d.ts.map +1 -0
- package/dist/handlers/cron.js +49 -0
- package/dist/handlers/cron.js.map +1 -0
- package/dist/handlers/index.d.ts +5 -0
- package/dist/handlers/index.d.ts.map +1 -0
- package/dist/handlers/index.js +5 -0
- package/dist/handlers/index.js.map +1 -0
- package/dist/handlers/sse.d.ts +74 -0
- package/dist/handlers/sse.d.ts.map +1 -0
- package/dist/handlers/sse.js +70 -0
- package/dist/handlers/sse.js.map +1 -0
- package/dist/handlers/stream.d.ts +52 -0
- package/dist/handlers/stream.d.ts.map +1 -0
- package/dist/handlers/stream.js +75 -0
- package/dist/handlers/stream.js.map +1 -0
- package/dist/handlers/websocket.d.ts +49 -0
- package/dist/handlers/websocket.d.ts.map +1 -0
- package/dist/handlers/websocket.js +130 -0
- package/dist/handlers/websocket.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/otel/logger.d.ts +1 -4
- package/dist/otel/logger.d.ts.map +1 -1
- package/dist/otel/logger.js +11 -2
- package/dist/otel/logger.js.map +1 -1
- package/dist/router.d.ts +46 -236
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +82 -349
- package/dist/router.js.map +1 -1
- package/dist/workbench.d.ts +6 -2
- package/dist/workbench.d.ts.map +1 -1
- package/dist/workbench.js +29 -26
- package/dist/workbench.js.map +1 -1
- package/package.json +5 -7
- package/src/_config.ts +9 -2
- package/src/agent.ts +6 -0
- package/src/app.ts +7 -2
- package/src/eval.ts +2 -0
- package/src/handlers/cron.ts +70 -0
- package/src/handlers/index.ts +4 -0
- package/src/handlers/sse.ts +118 -0
- package/src/handlers/stream.ts +86 -0
- package/src/handlers/websocket.ts +153 -0
- package/src/index.ts +16 -3
- package/src/otel/logger.ts +13 -2
- package/src/router.ts +110 -597
- package/src/workbench.ts +30 -27
- package/dist/io/email.d.ts +0 -77
- package/dist/io/email.d.ts.map +0 -1
- package/dist/io/email.js +0 -162
- package/dist/io/email.js.map +0 -1
- package/src/io/email.ts +0 -191
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { Context, Handler } from 'hono';
|
|
2
|
+
import type { Env } from '../app';
|
|
3
|
+
/**
|
|
4
|
+
* SSE message format for Server-Sent Events.
|
|
5
|
+
*/
|
|
6
|
+
export interface SSEMessage {
|
|
7
|
+
data: string;
|
|
8
|
+
event?: string;
|
|
9
|
+
id?: string;
|
|
10
|
+
retry?: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* SSE stream interface for writing Server-Sent Events.
|
|
14
|
+
*/
|
|
15
|
+
export interface SSEStream {
|
|
16
|
+
/**
|
|
17
|
+
* Write a simple value as SSE data.
|
|
18
|
+
* Strings, numbers, and booleans are converted to string data.
|
|
19
|
+
* Objects are passed through as SSE message format.
|
|
20
|
+
*/
|
|
21
|
+
write: (data: string | number | boolean | SSEMessage) => Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Write a properly formatted SSE message.
|
|
24
|
+
*/
|
|
25
|
+
writeSSE: (message: SSEMessage) => Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Register a callback for when the client aborts the connection.
|
|
28
|
+
*/
|
|
29
|
+
onAbort: (callback: () => void) => void;
|
|
30
|
+
/**
|
|
31
|
+
* Close the SSE stream.
|
|
32
|
+
*/
|
|
33
|
+
close: () => void;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Handler function for SSE connections.
|
|
37
|
+
* Receives the Hono context and SSE stream with a flattened signature.
|
|
38
|
+
*/
|
|
39
|
+
export type SSEHandler<E extends Env = Env> = (c: Context<E>, stream: SSEStream) => void | Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Creates an SSE (Server-Sent Events) middleware for streaming updates to clients.
|
|
42
|
+
*
|
|
43
|
+
* Use with router.get() to create an SSE endpoint:
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* import { createRouter, sse } from '@agentuity/runtime';
|
|
48
|
+
*
|
|
49
|
+
* const router = createRouter();
|
|
50
|
+
*
|
|
51
|
+
* router.get('/events', sse((c, stream) => {
|
|
52
|
+
* let count = 0;
|
|
53
|
+
* const interval = setInterval(() => {
|
|
54
|
+
* stream.writeSSE({
|
|
55
|
+
* data: `Event ${++count}`,
|
|
56
|
+
* event: 'update'
|
|
57
|
+
* });
|
|
58
|
+
* if (count >= 10) {
|
|
59
|
+
* clearInterval(interval);
|
|
60
|
+
* stream.close();
|
|
61
|
+
* }
|
|
62
|
+
* }, 1000);
|
|
63
|
+
*
|
|
64
|
+
* stream.onAbort(() => {
|
|
65
|
+
* clearInterval(interval);
|
|
66
|
+
* });
|
|
67
|
+
* }));
|
|
68
|
+
* ```
|
|
69
|
+
*
|
|
70
|
+
* @param handler - Handler function receiving context and SSE stream
|
|
71
|
+
* @returns Hono handler for SSE streaming
|
|
72
|
+
*/
|
|
73
|
+
export declare function sse<E extends Env = Env>(handler: SSEHandler<E>): Handler<E>;
|
|
74
|
+
//# sourceMappingURL=sse.d.ts.map
|
|
@@ -0,0 +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;AAG7C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAElC;;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;AAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAoC3E"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { streamSSE as honoStreamSSE } from 'hono/streaming';
|
|
2
|
+
import { getAgentAsyncLocalStorage } from '../_context';
|
|
3
|
+
/**
|
|
4
|
+
* Creates an SSE (Server-Sent Events) middleware for streaming updates to clients.
|
|
5
|
+
*
|
|
6
|
+
* Use with router.get() to create an SSE endpoint:
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { createRouter, sse } from '@agentuity/runtime';
|
|
11
|
+
*
|
|
12
|
+
* const router = createRouter();
|
|
13
|
+
*
|
|
14
|
+
* router.get('/events', sse((c, stream) => {
|
|
15
|
+
* let count = 0;
|
|
16
|
+
* const interval = setInterval(() => {
|
|
17
|
+
* stream.writeSSE({
|
|
18
|
+
* data: `Event ${++count}`,
|
|
19
|
+
* event: 'update'
|
|
20
|
+
* });
|
|
21
|
+
* if (count >= 10) {
|
|
22
|
+
* clearInterval(interval);
|
|
23
|
+
* stream.close();
|
|
24
|
+
* }
|
|
25
|
+
* }, 1000);
|
|
26
|
+
*
|
|
27
|
+
* stream.onAbort(() => {
|
|
28
|
+
* clearInterval(interval);
|
|
29
|
+
* });
|
|
30
|
+
* }));
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @param handler - Handler function receiving context and SSE stream
|
|
34
|
+
* @returns Hono handler for SSE streaming
|
|
35
|
+
*/
|
|
36
|
+
export function sse(handler) {
|
|
37
|
+
return (c) => {
|
|
38
|
+
const asyncLocalStorage = getAgentAsyncLocalStorage();
|
|
39
|
+
const capturedContext = asyncLocalStorage.getStore();
|
|
40
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
41
|
+
return honoStreamSSE(c, async (stream) => {
|
|
42
|
+
const wrappedStream = {
|
|
43
|
+
write: async (data) => {
|
|
44
|
+
if (typeof data === 'string' ||
|
|
45
|
+
typeof data === 'number' ||
|
|
46
|
+
typeof data === 'boolean') {
|
|
47
|
+
return stream.writeSSE({ data: String(data) });
|
|
48
|
+
}
|
|
49
|
+
else if (typeof data === 'object' && data !== null) {
|
|
50
|
+
return stream.writeSSE(data);
|
|
51
|
+
}
|
|
52
|
+
return stream.writeSSE({ data: String(data) });
|
|
53
|
+
},
|
|
54
|
+
writeSSE: stream.writeSSE.bind(stream),
|
|
55
|
+
onAbort: stream.onAbort.bind(stream),
|
|
56
|
+
close: stream.close?.bind(stream) ?? (() => { }),
|
|
57
|
+
};
|
|
58
|
+
const runInContext = async () => {
|
|
59
|
+
await handler(c, wrappedStream);
|
|
60
|
+
};
|
|
61
|
+
if (capturedContext) {
|
|
62
|
+
await asyncLocalStorage.run(capturedContext, runInContext);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
await runInContext();
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=sse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/handlers/sse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AA8CxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;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,8DAA8D;QAC9D,OAAO,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,MAAW,EAAE,EAAE;YAC7C,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,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAChD,CAAC;yBAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;wBACtD,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBAC9B,CAAC;oBACD,OAAO,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChD,CAAC;gBACD,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;gBACtC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;gBACpC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;aAC/C,CAAC;YAEF,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE;gBAC/B,MAAM,OAAO,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;YACjC,CAAC,CAAC;YAEF,IAAI,eAAe,EAAE,CAAC;gBACrB,MAAM,iBAAiB,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACP,MAAM,YAAY,EAAE,CAAC;YACtB,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { Context, Handler } from 'hono';
|
|
2
|
+
import type { Env } from '../app';
|
|
3
|
+
/**
|
|
4
|
+
* Handler function for streaming responses.
|
|
5
|
+
* Returns a ReadableStream that will be piped to the response.
|
|
6
|
+
*/
|
|
7
|
+
export type StreamHandler<E extends Env = Env> = (c: Context<E>) => ReadableStream<Uint8Array | string> | Promise<ReadableStream<Uint8Array | string>>;
|
|
8
|
+
/**
|
|
9
|
+
* Creates a streaming middleware for returning ReadableStream responses.
|
|
10
|
+
*
|
|
11
|
+
* Use with router.post() (or any HTTP method) to create a streaming endpoint:
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* import { createRouter, stream } from '@agentuity/runtime';
|
|
16
|
+
*
|
|
17
|
+
* const router = createRouter();
|
|
18
|
+
*
|
|
19
|
+
* router.post('/events', stream((c) => {
|
|
20
|
+
* return new ReadableStream({
|
|
21
|
+
* start(controller) {
|
|
22
|
+
* controller.enqueue('event 1\n');
|
|
23
|
+
* controller.enqueue('event 2\n');
|
|
24
|
+
* controller.close();
|
|
25
|
+
* }
|
|
26
|
+
* });
|
|
27
|
+
* }));
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```typescript
|
|
32
|
+
* // Async stream with data from request body
|
|
33
|
+
* router.post('/process', stream(async (c) => {
|
|
34
|
+
* const body = await c.req.json();
|
|
35
|
+
*
|
|
36
|
+
* return new ReadableStream({
|
|
37
|
+
* async start(controller) {
|
|
38
|
+
* for (const item of body.items) {
|
|
39
|
+
* controller.enqueue(`Processing: ${item}\n`);
|
|
40
|
+
* await new Promise(r => setTimeout(r, 100));
|
|
41
|
+
* }
|
|
42
|
+
* controller.close();
|
|
43
|
+
* }
|
|
44
|
+
* });
|
|
45
|
+
* }));
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* @param handler - Handler function returning a ReadableStream
|
|
49
|
+
* @returns Hono handler for streaming response
|
|
50
|
+
*/
|
|
51
|
+
export declare function stream<E extends Env = Env>(handler: StreamHandler<E>): Handler<E>;
|
|
52
|
+
//# sourceMappingURL=stream.d.ts.map
|
|
@@ -0,0 +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;AAG7C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAElC;;;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,CA6BjF"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { stream as honoStream } from 'hono/streaming';
|
|
2
|
+
import { getAgentAsyncLocalStorage } from '../_context';
|
|
3
|
+
/**
|
|
4
|
+
* Creates a streaming middleware for returning ReadableStream responses.
|
|
5
|
+
*
|
|
6
|
+
* Use with router.post() (or any HTTP method) to create a streaming endpoint:
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { createRouter, stream } from '@agentuity/runtime';
|
|
11
|
+
*
|
|
12
|
+
* const router = createRouter();
|
|
13
|
+
*
|
|
14
|
+
* router.post('/events', stream((c) => {
|
|
15
|
+
* return new ReadableStream({
|
|
16
|
+
* start(controller) {
|
|
17
|
+
* controller.enqueue('event 1\n');
|
|
18
|
+
* controller.enqueue('event 2\n');
|
|
19
|
+
* controller.close();
|
|
20
|
+
* }
|
|
21
|
+
* });
|
|
22
|
+
* }));
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* // Async stream with data from request body
|
|
28
|
+
* router.post('/process', stream(async (c) => {
|
|
29
|
+
* const body = await c.req.json();
|
|
30
|
+
*
|
|
31
|
+
* return new ReadableStream({
|
|
32
|
+
* async start(controller) {
|
|
33
|
+
* for (const item of body.items) {
|
|
34
|
+
* controller.enqueue(`Processing: ${item}\n`);
|
|
35
|
+
* await new Promise(r => setTimeout(r, 100));
|
|
36
|
+
* }
|
|
37
|
+
* controller.close();
|
|
38
|
+
* }
|
|
39
|
+
* });
|
|
40
|
+
* }));
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* @param handler - Handler function returning a ReadableStream
|
|
44
|
+
* @returns Hono handler for streaming response
|
|
45
|
+
*/
|
|
46
|
+
export function stream(handler) {
|
|
47
|
+
return (c) => {
|
|
48
|
+
const asyncLocalStorage = getAgentAsyncLocalStorage();
|
|
49
|
+
const capturedContext = asyncLocalStorage.getStore();
|
|
50
|
+
c.header('Content-Type', 'application/octet-stream');
|
|
51
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
52
|
+
return honoStream(c, async (s) => {
|
|
53
|
+
const runInContext = async () => {
|
|
54
|
+
try {
|
|
55
|
+
let streamResult = handler(c);
|
|
56
|
+
if (streamResult instanceof Promise) {
|
|
57
|
+
streamResult = await streamResult;
|
|
58
|
+
}
|
|
59
|
+
await s.pipe(streamResult);
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
c.var.logger?.error('Stream error:', err);
|
|
63
|
+
throw err;
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
if (capturedContext) {
|
|
67
|
+
await asyncLocalStorage.run(capturedContext, runInContext);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
await runInContext();
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=stream.js.map
|
|
@@ -0,0 +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;AAWxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,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;gBAC5B,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACd,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;oBAC1C,MAAM,GAAG,CAAC;gBACX,CAAC;YACF,CAAC,CAAC;YAEF,IAAI,eAAe,EAAE,CAAC;gBACrB,MAAM,iBAAiB,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACP,MAAM,YAAY,EAAE,CAAC;YACtB,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { Context, MiddlewareHandler } from 'hono';
|
|
2
|
+
import type { Env } from '../app';
|
|
3
|
+
/**
|
|
4
|
+
* WebSocket connection interface for handling WebSocket events.
|
|
5
|
+
*/
|
|
6
|
+
export interface WebSocketConnection {
|
|
7
|
+
onOpen: (handler: (event: Event) => void | Promise<void>) => void;
|
|
8
|
+
onMessage: (handler: (event: MessageEvent) => void | Promise<void>) => void;
|
|
9
|
+
onClose: (handler: (event: CloseEvent) => void | Promise<void>) => void;
|
|
10
|
+
send: (data: string | ArrayBuffer | Uint8Array) => void;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Handler function for WebSocket connections.
|
|
14
|
+
* Receives the Hono context and WebSocket connection with a flattened signature.
|
|
15
|
+
*/
|
|
16
|
+
export type WebSocketHandler<E extends Env = Env> = (c: Context<E>, ws: WebSocketConnection) => void | Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Creates a WebSocket middleware for handling WebSocket connections.
|
|
19
|
+
*
|
|
20
|
+
* Use with router.get() to create a WebSocket endpoint:
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* import { createRouter, websocket } from '@agentuity/runtime';
|
|
25
|
+
*
|
|
26
|
+
* const router = createRouter();
|
|
27
|
+
*
|
|
28
|
+
* router.get('/ws', websocket((c, ws) => {
|
|
29
|
+
* ws.onOpen(() => {
|
|
30
|
+
* c.var.logger.info('WebSocket opened');
|
|
31
|
+
* ws.send('Welcome!');
|
|
32
|
+
* });
|
|
33
|
+
*
|
|
34
|
+
* ws.onMessage((event) => {
|
|
35
|
+
* c.var.logger.info('Received:', event.data);
|
|
36
|
+
* ws.send('Echo: ' + event.data);
|
|
37
|
+
* });
|
|
38
|
+
*
|
|
39
|
+
* ws.onClose(() => {
|
|
40
|
+
* c.var.logger.info('WebSocket closed');
|
|
41
|
+
* });
|
|
42
|
+
* }));
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* @param handler - Handler function receiving context and WebSocket connection
|
|
46
|
+
* @returns Hono middleware handler for WebSocket upgrade
|
|
47
|
+
*/
|
|
48
|
+
export declare function websocket<E extends Env = Env>(handler: WebSocketHandler<E>): MiddlewareHandler<E>;
|
|
49
|
+
//# sourceMappingURL=websocket.d.ts.map
|
|
@@ -0,0 +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;AAGvD,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,CAiGjG"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { upgradeWebSocket } from 'hono/bun';
|
|
2
|
+
import { getAgentAsyncLocalStorage } from '../_context';
|
|
3
|
+
/**
|
|
4
|
+
* Creates a WebSocket middleware for handling WebSocket connections.
|
|
5
|
+
*
|
|
6
|
+
* Use with router.get() to create a WebSocket endpoint:
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { createRouter, websocket } from '@agentuity/runtime';
|
|
11
|
+
*
|
|
12
|
+
* const router = createRouter();
|
|
13
|
+
*
|
|
14
|
+
* router.get('/ws', websocket((c, ws) => {
|
|
15
|
+
* ws.onOpen(() => {
|
|
16
|
+
* c.var.logger.info('WebSocket opened');
|
|
17
|
+
* ws.send('Welcome!');
|
|
18
|
+
* });
|
|
19
|
+
*
|
|
20
|
+
* ws.onMessage((event) => {
|
|
21
|
+
* c.var.logger.info('Received:', event.data);
|
|
22
|
+
* ws.send('Echo: ' + event.data);
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* ws.onClose(() => {
|
|
26
|
+
* c.var.logger.info('WebSocket closed');
|
|
27
|
+
* });
|
|
28
|
+
* }));
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @param handler - Handler function receiving context and WebSocket connection
|
|
32
|
+
* @returns Hono middleware handler for WebSocket upgrade
|
|
33
|
+
*/
|
|
34
|
+
export function websocket(handler) {
|
|
35
|
+
const wsHandler = upgradeWebSocket((c) => {
|
|
36
|
+
let openHandler;
|
|
37
|
+
let messageHandler;
|
|
38
|
+
let closeHandler;
|
|
39
|
+
let initialized = false;
|
|
40
|
+
const asyncLocalStorage = getAgentAsyncLocalStorage();
|
|
41
|
+
const capturedContext = asyncLocalStorage.getStore();
|
|
42
|
+
const wsConnection = {
|
|
43
|
+
onOpen: (h) => {
|
|
44
|
+
openHandler = h;
|
|
45
|
+
},
|
|
46
|
+
onMessage: (h) => {
|
|
47
|
+
messageHandler = h;
|
|
48
|
+
},
|
|
49
|
+
onClose: (h) => {
|
|
50
|
+
closeHandler = h;
|
|
51
|
+
},
|
|
52
|
+
send: (_data) => {
|
|
53
|
+
// This will be bound to the actual ws in the handlers
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
const runHandler = () => {
|
|
57
|
+
if (capturedContext) {
|
|
58
|
+
asyncLocalStorage.run(capturedContext, () => handler(c, wsConnection));
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
handler(c, wsConnection);
|
|
62
|
+
}
|
|
63
|
+
initialized = true;
|
|
64
|
+
};
|
|
65
|
+
runHandler();
|
|
66
|
+
return {
|
|
67
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
68
|
+
onOpen: async (event, ws) => {
|
|
69
|
+
try {
|
|
70
|
+
wsConnection.send = (data) => ws.send(data);
|
|
71
|
+
if (openHandler) {
|
|
72
|
+
const h = openHandler;
|
|
73
|
+
if (capturedContext) {
|
|
74
|
+
await asyncLocalStorage.run(capturedContext, () => h(event));
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
await h(event);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
c.var.logger?.error('WebSocket onOpen error:', err);
|
|
83
|
+
throw err;
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
87
|
+
onMessage: async (event, ws) => {
|
|
88
|
+
try {
|
|
89
|
+
if (!initialized) {
|
|
90
|
+
wsConnection.send = (data) => ws.send(data);
|
|
91
|
+
runHandler();
|
|
92
|
+
}
|
|
93
|
+
if (messageHandler) {
|
|
94
|
+
const h = messageHandler;
|
|
95
|
+
if (capturedContext) {
|
|
96
|
+
await asyncLocalStorage.run(capturedContext, () => h(event));
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
await h(event);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
c.var.logger?.error('WebSocket onMessage error:', err);
|
|
105
|
+
throw err;
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
109
|
+
onClose: async (event, _ws) => {
|
|
110
|
+
try {
|
|
111
|
+
if (closeHandler) {
|
|
112
|
+
const h = closeHandler;
|
|
113
|
+
if (capturedContext) {
|
|
114
|
+
await asyncLocalStorage.run(capturedContext, () => h(event));
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
await h(event);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
catch (err) {
|
|
122
|
+
c.var.logger?.error('WebSocket onClose error:', err);
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
});
|
|
127
|
+
const middleware = (c, next) => wsHandler(c, next);
|
|
128
|
+
return middleware;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=websocket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/handlers/websocket.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,7 +8,8 @@ export { enableProcessExitProtection } from './_process-protection';
|
|
|
8
8
|
export { internalExit } from './_process-protection';
|
|
9
9
|
export { registerDevModeRoutes } from './devmode';
|
|
10
10
|
export { type HonoEnv, type WebSocketConnection, createRouter } from './router';
|
|
11
|
-
export {
|
|
11
|
+
export { websocket, type WebSocketHandler, sse, type SSEMessage, type SSEStream, type SSEHandler, stream, type StreamHandler, cron, type CronHandler, type CronMetadata, } from './handlers';
|
|
12
|
+
export { EvalHandlerResultSchema, type EvalContext, type EvalRunResultMetadata, type EvalHandlerResult, type EvalRunResultSuccess, type EvalRunResultError, type EvalRunResult, type CreateEvalRunRequest, type ExternalEvalMetadata, type EvalMetadata, type EvalFunction, type Eval, } from './eval';
|
|
12
13
|
export { type ThreadEventName, type SessionEventName, type Thread, type Session, type ThreadIDProvider, type ThreadProvider, type SessionProvider, generateId, DefaultThreadIDProvider, DefaultThread, } from './session';
|
|
13
14
|
export { LocalThreadProvider } from './services/thread/local';
|
|
14
15
|
export { createWorkbenchExecutionRoute, createWorkbenchRouter, createWorkbenchMetadataRoute, createWorkbenchWebsocketRoute, } from './workbench';
|
|
@@ -18,7 +19,6 @@ export type { Logger } from './logger';
|
|
|
18
19
|
export { getRouter, setGlobalRouter, createLogger, getLogger, setGlobalLogger, getTracer, setGlobalTracer, addSpanProcessor, getSpanProcessors, privateContext, notifyReady, getServer, AGENT_CONTEXT_PROPERTIES, } from './_server';
|
|
19
20
|
export { hasWaitUntilPending } from './_waituntil';
|
|
20
21
|
export { createAgentContext, StandaloneAgentContext, type StandaloneContextOptions, type InvokeOptions, } from './_standalone';
|
|
21
|
-
export { Email, parseEmail } from './io/email';
|
|
22
22
|
export { HTTPEvalRunEventProvider, LocalEvalRunEventProvider, JSONEvalRunEventProvider, CompositeEvalRunEventProvider, } from './services/evalrun';
|
|
23
23
|
export { getEvalRunEventProvider, getThreadProvider, getSessionProvider } from './_services';
|
|
24
24
|
export type { RouteSchema, GetRouteSchema } from './_validation';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,KAAK,EACV,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,qBAAqB,EACrB,eAAe,EACf,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,aAAa,EACb,cAAc,EACd,cAAc,EACd,KAAK,yBAAyB,EAC9B,WAAW,EACX,sBAAsB,EACtB,qBAAqB,EACrB,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,iBAAiB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACN,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,GAAG,EACR,KAAK,SAAS,EACd,SAAS,EACT,MAAM,EACN,WAAW,EACX,YAAY,EACZ,WAAW,EACX,SAAS,GACT,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGlE,OAAO,EACN,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,2BAA2B,GAC3B,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAGpE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAGlD,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,mBAAmB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGhF,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,IAAI,GACT,MAAM,QAAQ,CAAC;AAGhB,OAAO,EACN,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,MAAM,EACX,KAAK,OAAO,EACZ,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,UAAU,EACV,uBAAuB,EACvB,aAAa,GACb,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,OAAO,EACN,6BAA6B,EAC7B,qBAAqB,EACrB,4BAA4B,EAC5B,6BAA6B,GAC7B,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAGxC,OAAO,EAAE,KAAK,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7D,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGvC,OAAO,EACN,SAAS,EACT,eAAe,EACf,YAAY,EACZ,SAAS,EACT,eAAe,EACf,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,SAAS,EACT,wBAAwB,GACxB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGnD,OAAO,EACN,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,aAAa,GAClB,MAAM,eAAe,CAAC;AAGvB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -15,6 +15,10 @@ export { internalExit } from './_process-protection';
|
|
|
15
15
|
export { registerDevModeRoutes } from './devmode';
|
|
16
16
|
// router.ts exports
|
|
17
17
|
export { createRouter } from './router';
|
|
18
|
+
// protocol handler exports (websocket, sse, stream, cron)
|
|
19
|
+
export { websocket, sse, stream, cron, } from './handlers';
|
|
20
|
+
// eval.ts exports
|
|
21
|
+
export { EvalHandlerResultSchema, } from './eval';
|
|
18
22
|
// session.ts exports
|
|
19
23
|
export { generateId, DefaultThreadIDProvider, DefaultThread, } from './session';
|
|
20
24
|
// services/thread/local exports
|
|
@@ -31,8 +35,6 @@ export { getRouter, setGlobalRouter, createLogger, getLogger, setGlobalLogger, g
|
|
|
31
35
|
export { hasWaitUntilPending } from './_waituntil';
|
|
32
36
|
// _standalone.ts exports
|
|
33
37
|
export { createAgentContext, StandaloneAgentContext, } from './_standalone';
|
|
34
|
-
// io/email exports
|
|
35
|
-
export { Email, parseEmail } from './io/email';
|
|
36
38
|
// services/evalrun exports
|
|
37
39
|
export { HTTPEvalRunEventProvider, LocalEvalRunEventProvider, JSONEvalRunEventProvider, CompositeEvalRunEventProvider, } from './services/evalrun';
|
|
38
40
|
// _services.ts exports
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,OAAO,EASN,qBAAqB,EACrB,eAAe,EAGf,aAAa,EACb,cAAc,EACd,cAAc,EAEd,WAAW,EACX,sBAAsB,EACtB,qBAAqB,EACrB,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,iBAAiB,GACjB,MAAM,SAAS,CAAC;AAEjB,iDAAiD;AACjD,OAAO,EAQN,SAAS,EACT,MAAM,EACN,WAAW,EACX,YAAY,EACZ,WAAW,EACX,SAAS,GACT,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAElE,sCAAsC;AACtC,OAAO,EACN,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,2BAA2B,GAC3B,MAAM,cAAc,CAAC;AAEtB,mDAAmD;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEpE,6DAA6D;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,qBAAqB;AACrB,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAElD,oBAAoB;AACpB,OAAO,EAA0C,YAAY,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,OAAO,EASN,qBAAqB,EACrB,eAAe,EAGf,aAAa,EACb,cAAc,EACd,cAAc,EAEd,WAAW,EACX,sBAAsB,EACtB,qBAAqB,EACrB,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,iBAAiB,GACjB,MAAM,SAAS,CAAC;AAEjB,iDAAiD;AACjD,OAAO,EAQN,SAAS,EACT,MAAM,EACN,WAAW,EACX,YAAY,EACZ,WAAW,EACX,SAAS,GACT,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAElE,sCAAsC;AACtC,OAAO,EACN,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,2BAA2B,GAC3B,MAAM,cAAc,CAAC;AAEtB,mDAAmD;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEpE,6DAA6D;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,qBAAqB;AACrB,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAElD,oBAAoB;AACpB,OAAO,EAA0C,YAAY,EAAE,MAAM,UAAU,CAAC;AAEhF,0DAA0D;AAC1D,OAAO,EACN,SAAS,EAET,GAAG,EAIH,MAAM,EAEN,IAAI,GAGJ,MAAM,YAAY,CAAC;AAEpB,kBAAkB;AAClB,OAAO,EACN,uBAAuB,GAYvB,MAAM,QAAQ,CAAC;AAEhB,qBAAqB;AACrB,OAAO,EAQN,UAAU,EACV,uBAAuB,EACvB,aAAa,GACb,MAAM,WAAW,CAAC;AAEnB,gCAAgC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,uBAAuB;AACvB,OAAO,EACN,6BAA6B,EAC7B,qBAAqB,EACrB,4BAA4B,EAC5B,6BAA6B,GAC7B,MAAM,aAAa,CAAC;AAErB,iBAAiB;AACjB,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAExC,uBAAuB;AACvB,OAAO,EAAuB,SAAS,EAAE,MAAM,aAAa,CAAC;AAK7D,qBAAqB;AACrB,OAAO,EACN,SAAS,EACT,eAAe,EACf,YAAY,EACZ,SAAS,EACT,eAAe,EACf,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,SAAS,EACT,wBAAwB,GACxB,MAAM,WAAW,CAAC;AAEnB,wBAAwB;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,yBAAyB;AACzB,OAAO,EACN,kBAAkB,EAClB,sBAAsB,GAGtB,MAAM,eAAe,CAAC;AAEvB,2BAA2B;AAC3B,OAAO,EACN,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,6BAA6B,GAC7B,MAAM,oBAAoB,CAAC;AAE5B,uBAAuB;AACvB,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AA6C7F,uEAAuE;AACvE,iFAAiF;AACjF,2CAA2C;AAC3C,OAAO,EAAE,mBAAmB,EAAgC,MAAM,mBAAmB,CAAC"}
|
package/dist/otel/logger.d.ts
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { type LogLevel } from '@agentuity/core';
|
|
2
2
|
import * as LogsAPI from '@opentelemetry/api-logs';
|
|
3
3
|
import type { Logger } from '../logger';
|
|
4
|
-
|
|
5
|
-
* Reference to the original console object before patching
|
|
6
|
-
*/
|
|
7
|
-
export declare const __originalConsole: any;
|
|
4
|
+
export declare const __originalConsole: Console;
|
|
8
5
|
export declare class OtelLogger implements Logger {
|
|
9
6
|
private readonly delegate;
|
|
10
7
|
private readonly context;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/otel/logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,OAAO,MAAM,yBAAyB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/otel/logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,OAAO,MAAM,yBAAyB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAYxC,eAAO,MAAM,iBAAiB,EAAE,OAAoD,CAAC;AAOrF,qBAAa,UAAW,YAAW,MAAM;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;IAC9D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;gBAGnC,UAAU,EAAE,OAAO,EACnB,QAAQ,EAAE,OAAO,CAAC,MAAM,EACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC7C,QAAQ,CAAC,EAAE,QAAQ;IAQpB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,IAAI;IAgBZ,OAAO,CAAC,SAAS;IAyBjB,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE;IAc1C,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE;IAc1C,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE;IAczC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE;IAczC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE;IAc1C,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK;IAIlD,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;CAW5C;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC3B,UAAU,EAAE,OAAO,EACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,QAAQ,CAAC,EAAE,QAAQ,GACjB,MAAM,CAKR;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC3B,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,QAAQ,EAAE,QAAQ,QAqFlB"}
|
package/dist/otel/logger.js
CHANGED
|
@@ -3,9 +3,18 @@ import { safeStringify } from '@agentuity/core';
|
|
|
3
3
|
import * as LogsAPI from '@opentelemetry/api-logs';
|
|
4
4
|
import ConsoleLogger from '../logger/console';
|
|
5
5
|
/**
|
|
6
|
-
* Reference to the original console object before patching
|
|
6
|
+
* Reference to the original console object before patching.
|
|
7
|
+
* We use a global symbol to ensure we only capture the original console once,
|
|
8
|
+
* preventing double-patching on hot reload.
|
|
7
9
|
*/
|
|
8
|
-
|
|
10
|
+
const ORIGINAL_CONSOLE_KEY = Symbol.for('agentuity.originalConsole');
|
|
11
|
+
// Check if we've already saved the original console (prevents double-patching on reload)
|
|
12
|
+
const existingOriginal = globalThis[ORIGINAL_CONSOLE_KEY];
|
|
13
|
+
export const __originalConsole = existingOriginal ?? Object.create(console);
|
|
14
|
+
// Save to global if not already saved
|
|
15
|
+
if (!existingOriginal) {
|
|
16
|
+
globalThis[ORIGINAL_CONSOLE_KEY] = __originalConsole;
|
|
17
|
+
}
|
|
9
18
|
export class OtelLogger {
|
|
10
19
|
delegate;
|
|
11
20
|
context;
|
package/dist/otel/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/otel/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,aAAa,EAAiB,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,OAAO,MAAM,yBAAyB,CAAC;AAEnD,OAAO,aAAa,MAAM,mBAAmB,CAAC;AAE9C
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/otel/logger.ts"],"names":[],"mappings":"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"}
|