@agentuity/runtime 2.0.11 → 3.0.0-alpha.1
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/index.d.ts +37 -65
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +59 -61
- package/dist/index.js.map +1 -1
- package/package.json +9 -38
- package/src/index.ts +58 -259
- package/AGENTS.md +0 -116
- package/dist/_config.d.ts +0 -100
- package/dist/_config.d.ts.map +0 -1
- package/dist/_config.js +0 -147
- package/dist/_config.js.map +0 -1
- package/dist/_context.d.ts +0 -80
- package/dist/_context.d.ts.map +0 -1
- package/dist/_context.js +0 -160
- package/dist/_context.js.map +0 -1
- package/dist/_events.d.ts +0 -64
- package/dist/_events.d.ts.map +0 -1
- package/dist/_events.js +0 -92
- package/dist/_events.js.map +0 -1
- package/dist/_globals.d.ts +0 -58
- package/dist/_globals.d.ts.map +0 -1
- package/dist/_globals.js +0 -71
- package/dist/_globals.js.map +0 -1
- package/dist/_idle.d.ts +0 -7
- package/dist/_idle.d.ts.map +0 -1
- package/dist/_idle.js +0 -10
- package/dist/_idle.js.map +0 -1
- package/dist/_metadata.d.ts +0 -117
- package/dist/_metadata.d.ts.map +0 -1
- package/dist/_metadata.js +0 -268
- package/dist/_metadata.js.map +0 -1
- package/dist/_process-protection.d.ts +0 -27
- package/dist/_process-protection.d.ts.map +0 -1
- package/dist/_process-protection.js +0 -56
- package/dist/_process-protection.js.map +0 -1
- package/dist/_server.d.ts +0 -50
- package/dist/_server.d.ts.map +0 -1
- package/dist/_server.js +0 -89
- package/dist/_server.js.map +0 -1
- package/dist/_services.d.ts +0 -25
- package/dist/_services.d.ts.map +0 -1
- package/dist/_services.js +0 -286
- package/dist/_services.js.map +0 -1
- package/dist/_standalone.d.ts +0 -212
- package/dist/_standalone.d.ts.map +0 -1
- package/dist/_standalone.js +0 -556
- package/dist/_standalone.js.map +0 -1
- package/dist/_tokens.d.ts +0 -12
- package/dist/_tokens.d.ts.map +0 -1
- package/dist/_tokens.js +0 -97
- package/dist/_tokens.js.map +0 -1
- package/dist/_util.d.ts +0 -16
- package/dist/_util.d.ts.map +0 -1
- package/dist/_util.js +0 -54
- package/dist/_util.js.map +0 -1
- package/dist/_validation.d.ts +0 -89
- package/dist/_validation.d.ts.map +0 -1
- package/dist/_validation.js +0 -29
- package/dist/_validation.js.map +0 -1
- package/dist/_waituntil.d.ts +0 -32
- package/dist/_waituntil.d.ts.map +0 -1
- package/dist/_waituntil.js +0 -156
- package/dist/_waituntil.js.map +0 -1
- package/dist/agent.d.ts +0 -1262
- package/dist/agent.d.ts.map +0 -1
- package/dist/agent.js +0 -981
- package/dist/agent.js.map +0 -1
- package/dist/app.d.ts +0 -514
- package/dist/app.d.ts.map +0 -1
- package/dist/app.js +0 -228
- package/dist/app.js.map +0 -1
- package/dist/bootstrap.d.ts +0 -44
- package/dist/bootstrap.d.ts.map +0 -1
- package/dist/bootstrap.js +0 -259
- package/dist/bootstrap.js.map +0 -1
- package/dist/bun-s3-patch.d.ts +0 -37
- package/dist/bun-s3-patch.d.ts.map +0 -1
- package/dist/bun-s3-patch.js +0 -142
- package/dist/bun-s3-patch.js.map +0 -1
- package/dist/cors.d.ts +0 -42
- package/dist/cors.d.ts.map +0 -1
- package/dist/cors.js +0 -117
- package/dist/cors.js.map +0 -1
- package/dist/dev-patches/aisdk.d.ts +0 -17
- package/dist/dev-patches/aisdk.d.ts.map +0 -1
- package/dist/dev-patches/aisdk.js +0 -160
- package/dist/dev-patches/aisdk.js.map +0 -1
- package/dist/dev-patches/gateway.d.ts +0 -16
- package/dist/dev-patches/gateway.d.ts.map +0 -1
- package/dist/dev-patches/gateway.js +0 -54
- package/dist/dev-patches/gateway.js.map +0 -1
- package/dist/dev-patches/index.d.ts +0 -21
- package/dist/dev-patches/index.d.ts.map +0 -1
- package/dist/dev-patches/index.js +0 -33
- package/dist/dev-patches/index.js.map +0 -1
- package/dist/dev-patches/otel-llm.d.ts +0 -12
- package/dist/dev-patches/otel-llm.d.ts.map +0 -1
- package/dist/dev-patches/otel-llm.js +0 -352
- package/dist/dev-patches/otel-llm.js.map +0 -1
- package/dist/devmode.d.ts +0 -3
- package/dist/devmode.d.ts.map +0 -1
- package/dist/devmode.js +0 -167
- package/dist/devmode.js.map +0 -1
- package/dist/eval.d.ts +0 -91
- package/dist/eval.d.ts.map +0 -1
- package/dist/eval.js +0 -16
- package/dist/eval.js.map +0 -1
- package/dist/handlers/_route-meta.d.ts +0 -22
- package/dist/handlers/_route-meta.d.ts.map +0 -1
- package/dist/handlers/_route-meta.js +0 -25
- package/dist/handlers/_route-meta.js.map +0 -1
- package/dist/handlers/cron.d.ts +0 -73
- package/dist/handlers/cron.d.ts.map +0 -1
- package/dist/handlers/cron.js +0 -43
- package/dist/handlers/cron.js.map +0 -1
- package/dist/handlers/index.d.ts +0 -6
- package/dist/handlers/index.d.ts.map +0 -1
- package/dist/handlers/index.js +0 -6
- package/dist/handlers/index.js.map +0 -1
- package/dist/handlers/sse.d.ts +0 -163
- package/dist/handlers/sse.d.ts.map +0 -1
- package/dist/handlers/sse.js +0 -175
- package/dist/handlers/sse.js.map +0 -1
- package/dist/handlers/stream.d.ts +0 -52
- package/dist/handlers/stream.d.ts.map +0 -1
- package/dist/handlers/stream.js +0 -108
- package/dist/handlers/stream.js.map +0 -1
- package/dist/handlers/webrtc.d.ts +0 -49
- package/dist/handlers/webrtc.d.ts.map +0 -1
- package/dist/handlers/webrtc.js +0 -109
- package/dist/handlers/webrtc.js.map +0 -1
- package/dist/handlers/websocket.d.ts +0 -88
- package/dist/handlers/websocket.d.ts.map +0 -1
- package/dist/handlers/websocket.js +0 -161
- package/dist/handlers/websocket.js.map +0 -1
- package/dist/logger/console.d.ts +0 -70
- package/dist/logger/console.d.ts.map +0 -1
- package/dist/logger/console.js +0 -278
- package/dist/logger/console.js.map +0 -1
- package/dist/logger/index.d.ts +0 -3
- package/dist/logger/index.d.ts.map +0 -1
- package/dist/logger/index.js +0 -3
- package/dist/logger/index.js.map +0 -1
- package/dist/logger/internal.d.ts +0 -79
- package/dist/logger/internal.d.ts.map +0 -1
- package/dist/logger/internal.js +0 -133
- package/dist/logger/internal.js.map +0 -1
- package/dist/logger/logger.d.ts +0 -41
- package/dist/logger/logger.d.ts.map +0 -1
- package/dist/logger/logger.js +0 -2
- package/dist/logger/logger.js.map +0 -1
- package/dist/logger/user.d.ts +0 -8
- package/dist/logger/user.d.ts.map +0 -1
- package/dist/logger/user.js +0 -7
- package/dist/logger/user.js.map +0 -1
- package/dist/logger/util.d.ts +0 -11
- package/dist/logger/util.d.ts.map +0 -1
- package/dist/logger/util.js +0 -77
- package/dist/logger/util.js.map +0 -1
- package/dist/middleware.d.ts +0 -105
- package/dist/middleware.d.ts.map +0 -1
- package/dist/middleware.js +0 -763
- package/dist/middleware.js.map +0 -1
- package/dist/otel/config.d.ts +0 -19
- package/dist/otel/config.d.ts.map +0 -1
- package/dist/otel/config.js +0 -26
- package/dist/otel/config.js.map +0 -1
- package/dist/otel/console.d.ts +0 -33
- package/dist/otel/console.d.ts.map +0 -1
- package/dist/otel/console.js +0 -86
- package/dist/otel/console.js.map +0 -1
- package/dist/otel/exporters/index.d.ts +0 -4
- package/dist/otel/exporters/index.d.ts.map +0 -1
- package/dist/otel/exporters/index.js +0 -4
- package/dist/otel/exporters/index.js.map +0 -1
- package/dist/otel/exporters/jsonl-log-exporter.d.ts +0 -36
- package/dist/otel/exporters/jsonl-log-exporter.d.ts.map +0 -1
- package/dist/otel/exporters/jsonl-log-exporter.js +0 -103
- package/dist/otel/exporters/jsonl-log-exporter.js.map +0 -1
- package/dist/otel/exporters/jsonl-metric-exporter.d.ts +0 -40
- package/dist/otel/exporters/jsonl-metric-exporter.d.ts.map +0 -1
- package/dist/otel/exporters/jsonl-metric-exporter.js +0 -104
- package/dist/otel/exporters/jsonl-metric-exporter.js.map +0 -1
- package/dist/otel/exporters/jsonl-trace-exporter.d.ts +0 -36
- package/dist/otel/exporters/jsonl-trace-exporter.d.ts.map +0 -1
- package/dist/otel/exporters/jsonl-trace-exporter.js +0 -111
- package/dist/otel/exporters/jsonl-trace-exporter.js.map +0 -1
- package/dist/otel/fetch.d.ts +0 -12
- package/dist/otel/fetch.d.ts.map +0 -1
- package/dist/otel/fetch.js +0 -82
- package/dist/otel/fetch.js.map +0 -1
- package/dist/otel/http.d.ts +0 -16
- package/dist/otel/http.d.ts.map +0 -1
- package/dist/otel/http.js +0 -44
- package/dist/otel/http.js.map +0 -1
- package/dist/otel/logger.d.ts +0 -37
- package/dist/otel/logger.d.ts.map +0 -1
- package/dist/otel/logger.js +0 -265
- package/dist/otel/logger.js.map +0 -1
- package/dist/otel/otel.d.ts +0 -68
- package/dist/otel/otel.d.ts.map +0 -1
- package/dist/otel/otel.js +0 -245
- package/dist/otel/otel.js.map +0 -1
- package/dist/otel/tracestate.d.ts +0 -44
- package/dist/otel/tracestate.d.ts.map +0 -1
- package/dist/otel/tracestate.js +0 -84
- package/dist/otel/tracestate.js.map +0 -1
- package/dist/router.d.ts +0 -66
- package/dist/router.d.ts.map +0 -1
- package/dist/router.js +0 -44
- package/dist/router.js.map +0 -1
- package/dist/services/evalrun/composite.d.ts +0 -21
- package/dist/services/evalrun/composite.d.ts.map +0 -1
- package/dist/services/evalrun/composite.js +0 -26
- package/dist/services/evalrun/composite.js.map +0 -1
- package/dist/services/evalrun/http.d.ts +0 -24
- package/dist/services/evalrun/http.d.ts.map +0 -1
- package/dist/services/evalrun/http.js +0 -115
- package/dist/services/evalrun/http.js.map +0 -1
- package/dist/services/evalrun/index.d.ts +0 -5
- package/dist/services/evalrun/index.d.ts.map +0 -1
- package/dist/services/evalrun/index.js +0 -5
- package/dist/services/evalrun/index.js.map +0 -1
- package/dist/services/evalrun/json.d.ts +0 -21
- package/dist/services/evalrun/json.d.ts.map +0 -1
- package/dist/services/evalrun/json.js +0 -38
- package/dist/services/evalrun/json.js.map +0 -1
- package/dist/services/evalrun/local.d.ts +0 -19
- package/dist/services/evalrun/local.d.ts.map +0 -1
- package/dist/services/evalrun/local.js +0 -22
- package/dist/services/evalrun/local.js.map +0 -1
- package/dist/services/local/_db.d.ts +0 -4
- package/dist/services/local/_db.d.ts.map +0 -1
- package/dist/services/local/_db.js +0 -281
- package/dist/services/local/_db.js.map +0 -1
- package/dist/services/local/_router.d.ts +0 -3
- package/dist/services/local/_router.d.ts.map +0 -1
- package/dist/services/local/_router.js +0 -28
- package/dist/services/local/_router.js.map +0 -1
- package/dist/services/local/_util.d.ts +0 -18
- package/dist/services/local/_util.d.ts.map +0 -1
- package/dist/services/local/_util.js +0 -44
- package/dist/services/local/_util.js.map +0 -1
- package/dist/services/local/email.d.ts +0 -24
- package/dist/services/local/email.d.ts.map +0 -1
- package/dist/services/local/email.js +0 -58
- package/dist/services/local/email.js.map +0 -1
- package/dist/services/local/index.d.ts +0 -10
- package/dist/services/local/index.d.ts.map +0 -1
- package/dist/services/local/index.js +0 -10
- package/dist/services/local/index.js.map +0 -1
- package/dist/services/local/keyvalue.d.ts +0 -17
- package/dist/services/local/keyvalue.d.ts.map +0 -1
- package/dist/services/local/keyvalue.js +0 -133
- package/dist/services/local/keyvalue.js.map +0 -1
- package/dist/services/local/queue.d.ts +0 -10
- package/dist/services/local/queue.d.ts.map +0 -1
- package/dist/services/local/queue.js +0 -96
- package/dist/services/local/queue.js.map +0 -1
- package/dist/services/local/stream.d.ts +0 -12
- package/dist/services/local/stream.d.ts.map +0 -1
- package/dist/services/local/stream.js +0 -266
- package/dist/services/local/stream.js.map +0 -1
- package/dist/services/local/task.d.ts +0 -55
- package/dist/services/local/task.d.ts.map +0 -1
- package/dist/services/local/task.js +0 -1248
- package/dist/services/local/task.js.map +0 -1
- package/dist/services/local/vector.d.ts +0 -17
- package/dist/services/local/vector.d.ts.map +0 -1
- package/dist/services/local/vector.js +0 -303
- package/dist/services/local/vector.js.map +0 -1
- package/dist/services/sandbox/http.d.ts +0 -23
- package/dist/services/sandbox/http.d.ts.map +0 -1
- package/dist/services/sandbox/http.js +0 -327
- package/dist/services/sandbox/http.js.map +0 -1
- package/dist/services/sandbox/index.d.ts +0 -2
- package/dist/services/sandbox/index.d.ts.map +0 -1
- package/dist/services/sandbox/index.js +0 -2
- package/dist/services/sandbox/index.js.map +0 -1
- package/dist/services/session/composite.d.ts +0 -21
- package/dist/services/session/composite.d.ts.map +0 -1
- package/dist/services/session/composite.js +0 -26
- package/dist/services/session/composite.js.map +0 -1
- package/dist/services/session/http.d.ts +0 -34
- package/dist/services/session/http.d.ts.map +0 -1
- package/dist/services/session/http.js +0 -124
- package/dist/services/session/http.js.map +0 -1
- package/dist/services/session/index.d.ts +0 -5
- package/dist/services/session/index.d.ts.map +0 -1
- package/dist/services/session/index.js +0 -5
- package/dist/services/session/index.js.map +0 -1
- package/dist/services/session/json.d.ts +0 -22
- package/dist/services/session/json.d.ts.map +0 -1
- package/dist/services/session/json.js +0 -35
- package/dist/services/session/json.js.map +0 -1
- package/dist/services/session/local.d.ts +0 -19
- package/dist/services/session/local.d.ts.map +0 -1
- package/dist/services/session/local.js +0 -23
- package/dist/services/session/local.js.map +0 -1
- package/dist/services/thread/local.d.ts +0 -20
- package/dist/services/thread/local.d.ts.map +0 -1
- package/dist/services/thread/local.js +0 -158
- package/dist/services/thread/local.js.map +0 -1
- package/dist/session.d.ts +0 -734
- package/dist/session.d.ts.map +0 -1
- package/dist/session.js +0 -1140
- package/dist/session.js.map +0 -1
- package/dist/signature.d.ts +0 -22
- package/dist/signature.d.ts.map +0 -1
- package/dist/signature.js +0 -63
- package/dist/signature.js.map +0 -1
- package/dist/validator.d.ts +0 -142
- package/dist/validator.d.ts.map +0 -1
- package/dist/validator.js +0 -149
- package/dist/validator.js.map +0 -1
- package/dist/version-check.d.ts +0 -20
- package/dist/version-check.d.ts.map +0 -1
- package/dist/version-check.js +0 -157
- package/dist/version-check.js.map +0 -1
- package/dist/web.d.ts +0 -8
- package/dist/web.d.ts.map +0 -1
- package/dist/web.js +0 -67
- package/dist/web.js.map +0 -1
- package/dist/webrtc-signaling.d.ts +0 -80
- package/dist/webrtc-signaling.d.ts.map +0 -1
- package/dist/webrtc-signaling.js +0 -237
- package/dist/webrtc-signaling.js.map +0 -1
- package/dist/workbench.d.ts +0 -17
- package/dist/workbench.d.ts.map +0 -1
- package/dist/workbench.js +0 -605
- package/dist/workbench.js.map +0 -1
- package/src/_config.ts +0 -163
- package/src/_context.ts +0 -240
- package/src/_events.ts +0 -142
- package/src/_globals.ts +0 -92
- package/src/_idle.ts +0 -10
- package/src/_metadata.ts +0 -407
- package/src/_process-protection.ts +0 -71
- package/src/_server.ts +0 -109
- package/src/_services.ts +0 -379
- package/src/_standalone.ts +0 -710
- package/src/_tokens.ts +0 -114
- package/src/_util.ts +0 -62
- package/src/_validation.ts +0 -119
- package/src/_waituntil.ts +0 -188
- package/src/agent.ts +0 -2739
- package/src/app.ts +0 -769
- package/src/bootstrap.ts +0 -321
- package/src/bun-s3-patch.ts +0 -224
- package/src/cors.ts +0 -137
- package/src/dev-patches/aisdk.ts +0 -169
- package/src/dev-patches/gateway.ts +0 -68
- package/src/dev-patches/index.ts +0 -37
- package/src/dev-patches/otel-llm.ts +0 -405
- package/src/devmode.ts +0 -171
- package/src/eval.ts +0 -109
- package/src/globals.d.ts +0 -28
- package/src/handlers/_route-meta.ts +0 -33
- package/src/handlers/cron.ts +0 -141
- package/src/handlers/index.ts +0 -18
- package/src/handlers/sse.ts +0 -358
- package/src/handlers/stream.ts +0 -121
- package/src/handlers/webrtc.ts +0 -125
- package/src/handlers/websocket.ts +0 -203
- package/src/logger/console.ts +0 -323
- package/src/logger/index.ts +0 -2
- package/src/logger/internal.ts +0 -165
- package/src/logger/logger.ts +0 -44
- package/src/logger/user.ts +0 -15
- package/src/logger/util.ts +0 -80
- package/src/middleware.ts +0 -1095
- package/src/otel/config.ts +0 -47
- package/src/otel/console.ts +0 -91
- package/src/otel/exporters/README.md +0 -217
- package/src/otel/exporters/index.ts +0 -3
- package/src/otel/exporters/jsonl-log-exporter.ts +0 -113
- package/src/otel/exporters/jsonl-metric-exporter.ts +0 -120
- package/src/otel/exporters/jsonl-trace-exporter.ts +0 -121
- package/src/otel/fetch.ts +0 -105
- package/src/otel/http.ts +0 -53
- package/src/otel/logger.ts +0 -293
- package/src/otel/otel.ts +0 -354
- package/src/otel/tracestate.ts +0 -108
- package/src/router.ts +0 -75
- package/src/services/evalrun/composite.ts +0 -34
- package/src/services/evalrun/http.ts +0 -167
- package/src/services/evalrun/index.ts +0 -4
- package/src/services/evalrun/json.ts +0 -46
- package/src/services/evalrun/local.ts +0 -28
- package/src/services/local/README.md +0 -1576
- package/src/services/local/_db.ts +0 -353
- package/src/services/local/_router.ts +0 -40
- package/src/services/local/_util.ts +0 -55
- package/src/services/local/email.ts +0 -91
- package/src/services/local/index.ts +0 -9
- package/src/services/local/keyvalue.ts +0 -174
- package/src/services/local/queue.ts +0 -145
- package/src/services/local/stream.ts +0 -358
- package/src/services/local/task.ts +0 -1711
- package/src/services/local/vector.ts +0 -438
- package/src/services/sandbox/http.ts +0 -522
- package/src/services/sandbox/index.ts +0 -1
- package/src/services/session/composite.ts +0 -33
- package/src/services/session/http.ts +0 -167
- package/src/services/session/index.ts +0 -4
- package/src/services/session/json.ts +0 -42
- package/src/services/session/local.ts +0 -33
- package/src/services/thread/local.ts +0 -199
- package/src/session.ts +0 -1960
- package/src/signature.ts +0 -82
- package/src/validator.ts +0 -283
- package/src/version-check.ts +0 -184
- package/src/web.ts +0 -76
- package/src/webrtc-signaling.ts +0 -288
- package/src/workbench.ts +0 -725
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
import type { Context, MiddlewareHandler } from 'hono';
|
|
2
|
-
import { upgradeWebSocket } from 'hono/bun';
|
|
3
|
-
import { context as otelContext, ROOT_CONTEXT } from '@opentelemetry/api';
|
|
4
|
-
import type { Env } from '../app';
|
|
5
|
-
import { tagRoute } from './_route-meta';
|
|
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
|
-
|
|
13
|
-
/**
|
|
14
|
-
* WebSocket connection interface for handling WebSocket events.
|
|
15
|
-
*/
|
|
16
|
-
export interface WebSocketConnection {
|
|
17
|
-
onOpen: (handler: (event: Event) => void | Promise<void>) => void;
|
|
18
|
-
onMessage: (handler: (event: MessageEvent) => void | Promise<void>) => void;
|
|
19
|
-
onClose: (handler: (event: CloseEvent) => void | Promise<void>) => void;
|
|
20
|
-
send: (data: string | ArrayBuffer | Uint8Array) => void;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Handler function for WebSocket connections.
|
|
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.
|
|
36
|
-
*/
|
|
37
|
-
export type WebSocketHandler<E extends Env = Env> = (
|
|
38
|
-
c: Context<E>,
|
|
39
|
-
ws: WebSocketConnection
|
|
40
|
-
) => void;
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Creates a WebSocket middleware for handling WebSocket connections.
|
|
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
|
-
*
|
|
50
|
-
* Use with router.get() to create a WebSocket endpoint:
|
|
51
|
-
*
|
|
52
|
-
* @example
|
|
53
|
-
* ```typescript
|
|
54
|
-
* // Basic synchronous usage
|
|
55
|
-
* import { createRouter, websocket } from '@agentuity/runtime';
|
|
56
|
-
*
|
|
57
|
-
* const router = createRouter();
|
|
58
|
-
*
|
|
59
|
-
* router.get('/ws', websocket((c, ws) => {
|
|
60
|
-
* ws.onOpen(() => {
|
|
61
|
-
* c.var.logger.info('WebSocket opened');
|
|
62
|
-
* ws.send('Welcome!');
|
|
63
|
-
* });
|
|
64
|
-
*
|
|
65
|
-
* ws.onMessage((event) => {
|
|
66
|
-
* c.var.logger.info('Received:', event.data);
|
|
67
|
-
* ws.send('Echo: ' + event.data);
|
|
68
|
-
* });
|
|
69
|
-
*
|
|
70
|
-
* ws.onClose(() => {
|
|
71
|
-
* c.var.logger.info('WebSocket closed');
|
|
72
|
-
* });
|
|
73
|
-
* }));
|
|
74
|
-
* ```
|
|
75
|
-
*
|
|
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
|
|
93
|
-
* @returns Hono middleware handler for WebSocket upgrade
|
|
94
|
-
*/
|
|
95
|
-
export function websocket<E extends Env = Env>(
|
|
96
|
-
handler: WebSocketHandler<E>
|
|
97
|
-
): MiddlewareHandler<E, string, { outputFormat: 'ws' }> {
|
|
98
|
-
const wsHandler = upgradeWebSocket((c: Context<E>) => {
|
|
99
|
-
let openHandler: ((event: Event) => void | Promise<void>) | undefined;
|
|
100
|
-
let messageHandler: ((event: MessageEvent) => void | Promise<void>) | undefined;
|
|
101
|
-
let closeHandler: ((event: CloseEvent) => void | Promise<void>) | undefined;
|
|
102
|
-
let initialized = false;
|
|
103
|
-
|
|
104
|
-
// Create done promise for session lifecycle deferral, but ONLY for actual
|
|
105
|
-
// WebSocket upgrade requests. The factory runs unconditionally for every
|
|
106
|
-
// request hitting this route (Hono calls createEvents before attempting
|
|
107
|
-
// server.upgrade). For non-upgrade HTTP requests, setting the promise would
|
|
108
|
-
// cause the middleware to hang forever waiting for an onClose that never fires.
|
|
109
|
-
let resolveDone: (() => void) | undefined;
|
|
110
|
-
const isUpgrade = c.req.header('upgrade')?.toLowerCase() === 'websocket';
|
|
111
|
-
|
|
112
|
-
if (isUpgrade) {
|
|
113
|
-
const donePromise = new Promise<void>((resolve) => {
|
|
114
|
-
resolveDone = resolve;
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
// Defensive: guard against future code adding rejection paths
|
|
118
|
-
donePromise.catch(() => {});
|
|
119
|
-
|
|
120
|
-
// Set on context so middleware defers session finalization until WS closes
|
|
121
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
122
|
-
(c as any).set(WS_DONE_PROMISE_KEY, donePromise);
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
const wsConnection: WebSocketConnection = {
|
|
126
|
-
onOpen: (h) => {
|
|
127
|
-
openHandler = h;
|
|
128
|
-
},
|
|
129
|
-
onMessage: (h) => {
|
|
130
|
-
messageHandler = h;
|
|
131
|
-
},
|
|
132
|
-
onClose: (h) => {
|
|
133
|
-
closeHandler = h;
|
|
134
|
-
},
|
|
135
|
-
send: (_data: string | ArrayBuffer | Uint8Array) => {
|
|
136
|
-
// This will be bound to the actual ws in the handlers
|
|
137
|
-
},
|
|
138
|
-
};
|
|
139
|
-
|
|
140
|
-
// IMPORTANT: We run in ROOT_CONTEXT (no active OTEL span) to avoid a Bun bug
|
|
141
|
-
// where OTEL-instrumented fetch conflicts with streaming responses.
|
|
142
|
-
// See: https://github.com/agentuity/sdk/issues/471
|
|
143
|
-
// See: https://github.com/oven-sh/bun/issues/24766
|
|
144
|
-
const runHandler = () => {
|
|
145
|
-
otelContext.with(ROOT_CONTEXT, () => {
|
|
146
|
-
handler(c, wsConnection);
|
|
147
|
-
});
|
|
148
|
-
initialized = true;
|
|
149
|
-
};
|
|
150
|
-
|
|
151
|
-
runHandler();
|
|
152
|
-
|
|
153
|
-
return {
|
|
154
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
155
|
-
onOpen: async (event: Event, ws: any) => {
|
|
156
|
-
try {
|
|
157
|
-
wsConnection.send = (data) => ws.send(data);
|
|
158
|
-
|
|
159
|
-
if (openHandler) {
|
|
160
|
-
await otelContext.with(ROOT_CONTEXT, () => openHandler!(event));
|
|
161
|
-
}
|
|
162
|
-
} catch (err) {
|
|
163
|
-
c.var.logger?.error('WebSocket onOpen error:', err);
|
|
164
|
-
throw err;
|
|
165
|
-
}
|
|
166
|
-
},
|
|
167
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
168
|
-
onMessage: async (event: MessageEvent, ws: any) => {
|
|
169
|
-
try {
|
|
170
|
-
if (!initialized) {
|
|
171
|
-
wsConnection.send = (data) => ws.send(data);
|
|
172
|
-
runHandler();
|
|
173
|
-
}
|
|
174
|
-
if (messageHandler) {
|
|
175
|
-
await otelContext.with(ROOT_CONTEXT, () => messageHandler!(event));
|
|
176
|
-
}
|
|
177
|
-
} catch (err) {
|
|
178
|
-
c.var.logger?.error('WebSocket onMessage error:', err);
|
|
179
|
-
throw err;
|
|
180
|
-
}
|
|
181
|
-
},
|
|
182
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
183
|
-
onClose: async (event: CloseEvent, _ws: any) => {
|
|
184
|
-
try {
|
|
185
|
-
if (closeHandler) {
|
|
186
|
-
await otelContext.with(ROOT_CONTEXT, () => closeHandler!(event));
|
|
187
|
-
}
|
|
188
|
-
} catch (err) {
|
|
189
|
-
c.var.logger?.error('WebSocket onClose error:', err);
|
|
190
|
-
} finally {
|
|
191
|
-
// Resolve the done promise to trigger session finalization
|
|
192
|
-
// This must fire even if the user's onClose handler throws
|
|
193
|
-
resolveDone?.();
|
|
194
|
-
}
|
|
195
|
-
},
|
|
196
|
-
};
|
|
197
|
-
});
|
|
198
|
-
|
|
199
|
-
const middleware: MiddlewareHandler<E, string, { outputFormat: 'ws' }> = (c, next) =>
|
|
200
|
-
(wsHandler as unknown as MiddlewareHandler<E, string, { outputFormat: 'ws' }>)(c, next);
|
|
201
|
-
|
|
202
|
-
return tagRoute(middleware, { type: 'websocket' });
|
|
203
|
-
}
|
package/src/logger/console.ts
DELETED
|
@@ -1,323 +0,0 @@
|
|
|
1
|
-
import type { LogLevel } from '@agentuity/core';
|
|
2
|
-
import { __originalConsole } from '../otel/logger';
|
|
3
|
-
import type { Logger } from './logger';
|
|
4
|
-
import { formatMessage } from './util';
|
|
5
|
-
|
|
6
|
-
const BOLD = '\x1b[1m';
|
|
7
|
-
const RESET = '\x1b[0m';
|
|
8
|
-
|
|
9
|
-
// Helper to convert hex color to ANSI 24-bit color code
|
|
10
|
-
function hexToAnsi(hex: string): string {
|
|
11
|
-
const r = parseInt(hex.slice(1, 3), 16);
|
|
12
|
-
const g = parseInt(hex.slice(3, 5), 16);
|
|
13
|
-
const b = parseInt(hex.slice(5, 7), 16);
|
|
14
|
-
return `\x1b[38;2;${r};${g};${b}m`;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
interface LogColors {
|
|
18
|
-
level: string;
|
|
19
|
-
message: string;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
function shouldUseColors(): boolean {
|
|
23
|
-
// FORCE_COLOR overrides all checks (used when stdout is piped but we still want colors)
|
|
24
|
-
if (process.env.FORCE_COLOR === '1') {
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
// Check for NO_COLOR environment variable (any non-empty value disables colors)
|
|
29
|
-
if (process.env.NO_COLOR) {
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// Check for TERM=dumb
|
|
34
|
-
if (process.env.TERM === 'dumb') {
|
|
35
|
-
return false;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// Check if stdout is a TTY
|
|
39
|
-
if (!process.stdout || typeof process.stdout.isTTY === 'undefined') {
|
|
40
|
-
return false;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
if (process.stdout && typeof process.stdout.isTTY !== 'undefined' && !process.stdout.isTTY) {
|
|
44
|
-
return false;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return true;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
type ColorScheme = 'light' | 'dark';
|
|
51
|
-
|
|
52
|
-
function getLogColors(scheme: ColorScheme): Record<LogLevel, LogColors> {
|
|
53
|
-
if (scheme === 'light') {
|
|
54
|
-
// Darker, high-contrast colors for light backgrounds
|
|
55
|
-
return {
|
|
56
|
-
trace: {
|
|
57
|
-
level: hexToAnsi('#008B8B') + BOLD, // Dark cyan
|
|
58
|
-
message: hexToAnsi('#4B4B4B'), // Dark gray
|
|
59
|
-
},
|
|
60
|
-
debug: {
|
|
61
|
-
level: hexToAnsi('#0000CD') + BOLD, // Medium blue
|
|
62
|
-
message: hexToAnsi('#006400'), // Dark green
|
|
63
|
-
},
|
|
64
|
-
info: {
|
|
65
|
-
level: hexToAnsi('#FF8C00') + BOLD, // Dark orange
|
|
66
|
-
message: hexToAnsi('#0066CC') + BOLD, // Strong blue
|
|
67
|
-
},
|
|
68
|
-
warn: {
|
|
69
|
-
level: hexToAnsi('#9400D3') + BOLD, // Dark violet
|
|
70
|
-
message: hexToAnsi('#8B008B'), // Dark magenta
|
|
71
|
-
},
|
|
72
|
-
error: {
|
|
73
|
-
level: hexToAnsi('#DC143C') + BOLD, // Crimson
|
|
74
|
-
message: hexToAnsi('#8B0000') + BOLD, // Dark red
|
|
75
|
-
},
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
// Dark mode colors (brighter for dark backgrounds)
|
|
80
|
-
return {
|
|
81
|
-
trace: {
|
|
82
|
-
level: hexToAnsi('#00FFFF') + BOLD, // Cyan
|
|
83
|
-
message: hexToAnsi('#A0A0A0'), // Light gray
|
|
84
|
-
},
|
|
85
|
-
debug: {
|
|
86
|
-
level: hexToAnsi('#5C9CFF') + BOLD, // Blue
|
|
87
|
-
message: hexToAnsi('#90EE90'), // Light green
|
|
88
|
-
},
|
|
89
|
-
info: {
|
|
90
|
-
level: hexToAnsi('#FFD700') + BOLD, // Gold/Yellow
|
|
91
|
-
message: hexToAnsi('#FFFFFF') + BOLD, // White
|
|
92
|
-
},
|
|
93
|
-
warn: {
|
|
94
|
-
level: hexToAnsi('#FF00FF') + BOLD, // Magenta
|
|
95
|
-
message: hexToAnsi('#FF00FF'), // Magenta
|
|
96
|
-
},
|
|
97
|
-
error: {
|
|
98
|
-
level: hexToAnsi('#FF4444') + BOLD, // Red
|
|
99
|
-
message: hexToAnsi('#FF4444'), // Red
|
|
100
|
-
},
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// Detect color scheme from environment
|
|
105
|
-
function detectColorScheme(): ColorScheme {
|
|
106
|
-
const scheme = process.env.COLOR_SCHEME?.toLowerCase();
|
|
107
|
-
if (scheme === 'light' || scheme === 'dark') {
|
|
108
|
-
return scheme;
|
|
109
|
-
}
|
|
110
|
-
if (process.env.CI) {
|
|
111
|
-
return 'light';
|
|
112
|
-
}
|
|
113
|
-
return 'dark'; // Default to dark mode
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
const NOCOLORS = Object.freeze({ level: '', reset: '', message: '' });
|
|
117
|
-
|
|
118
|
-
/**
|
|
119
|
-
* Console implementation of the Logger interface
|
|
120
|
-
*/
|
|
121
|
-
export default class ConsoleLogger implements Logger {
|
|
122
|
-
private context: Record<string, unknown>;
|
|
123
|
-
private formatContext: boolean;
|
|
124
|
-
private logLevel: LogLevel;
|
|
125
|
-
private colors: Record<LogLevel, LogColors>;
|
|
126
|
-
private detectedTraceLoopLog: boolean | undefined;
|
|
127
|
-
private useColors: boolean;
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Creates a new console logger
|
|
131
|
-
*
|
|
132
|
-
* @param context - Initial context for the logger
|
|
133
|
-
*/
|
|
134
|
-
constructor(
|
|
135
|
-
context: Record<string, unknown> = {},
|
|
136
|
-
formatContext = true,
|
|
137
|
-
logLevel: LogLevel = 'info'
|
|
138
|
-
) {
|
|
139
|
-
this.context = context;
|
|
140
|
-
this.formatContext = formatContext;
|
|
141
|
-
this.logLevel = logLevel;
|
|
142
|
-
this.useColors = shouldUseColors();
|
|
143
|
-
this.colors = this.useColors
|
|
144
|
-
? getLogColors(detectColorScheme())
|
|
145
|
-
: ({} as Record<LogLevel, LogColors>);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
private shouldLog(level: LogLevel): boolean {
|
|
149
|
-
switch (this.logLevel) {
|
|
150
|
-
case 'trace':
|
|
151
|
-
return true;
|
|
152
|
-
case 'debug':
|
|
153
|
-
return level === 'debug' || level === 'info' || level === 'warn' || level === 'error';
|
|
154
|
-
case 'info':
|
|
155
|
-
return level === 'info' || level === 'warn' || level === 'error';
|
|
156
|
-
case 'warn':
|
|
157
|
-
return level === 'warn' || level === 'error';
|
|
158
|
-
case 'error':
|
|
159
|
-
return level === 'error';
|
|
160
|
-
}
|
|
161
|
-
return false;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
/**
|
|
165
|
-
* Log a trace message (most verbose)
|
|
166
|
-
*
|
|
167
|
-
* @param message - The message to log
|
|
168
|
-
* @param args - Additional arguments to log
|
|
169
|
-
*/
|
|
170
|
-
trace(message: unknown, ...args: unknown[]): void {
|
|
171
|
-
if (!this.shouldLog('trace')) {
|
|
172
|
-
return;
|
|
173
|
-
}
|
|
174
|
-
try {
|
|
175
|
-
const colors = this.useColors ? this.colors.trace : NOCOLORS;
|
|
176
|
-
const formattedMessage = formatMessage(this.formatContext, this.context, message, args);
|
|
177
|
-
__originalConsole.debug(
|
|
178
|
-
`${colors.level}[TRACE]${RESET} ${colors.message}${formattedMessage}${RESET}`
|
|
179
|
-
);
|
|
180
|
-
} catch (err) {
|
|
181
|
-
// Fallback to direct logging if formatting fails
|
|
182
|
-
const colors = this.colors.trace;
|
|
183
|
-
__originalConsole.debug(`${colors.level}[TRACE]${RESET} ${message}`, ...args);
|
|
184
|
-
__originalConsole.error('Error formatting log message:', err);
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
/**
|
|
189
|
-
* Log a debug message
|
|
190
|
-
*
|
|
191
|
-
* @param message - The message to log
|
|
192
|
-
* @param args - Additional arguments to log
|
|
193
|
-
*/
|
|
194
|
-
debug(message: unknown, ...args: unknown[]): void {
|
|
195
|
-
if (!this.shouldLog('debug')) {
|
|
196
|
-
return;
|
|
197
|
-
}
|
|
198
|
-
try {
|
|
199
|
-
const colors = this.useColors ? this.colors.debug : NOCOLORS;
|
|
200
|
-
const formattedMessage = formatMessage(this.formatContext, this.context, message, args);
|
|
201
|
-
__originalConsole.debug(
|
|
202
|
-
`${colors.level}[DEBUG]${RESET} ${colors.message}${formattedMessage}${RESET}`
|
|
203
|
-
);
|
|
204
|
-
} catch (err) {
|
|
205
|
-
// Fallback to direct logging if formatting fails
|
|
206
|
-
const colors = this.colors.debug;
|
|
207
|
-
__originalConsole.debug(`${colors.level}[DEBUG]${RESET} ${message}`, ...args);
|
|
208
|
-
__originalConsole.error('Error formatting log message:', err);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
/**
|
|
213
|
-
* Log an info message
|
|
214
|
-
*
|
|
215
|
-
* @param message - The message to log
|
|
216
|
-
* @param args - Additional arguments to log
|
|
217
|
-
*/
|
|
218
|
-
info(message: unknown, ...args: unknown[]): void {
|
|
219
|
-
if (!this.shouldLog('info')) {
|
|
220
|
-
return;
|
|
221
|
-
}
|
|
222
|
-
// suppress the default traceloop message at info level
|
|
223
|
-
if (
|
|
224
|
-
!this.detectedTraceLoopLog &&
|
|
225
|
-
typeof message === 'string' &&
|
|
226
|
-
message.includes('Traceloop exporting traces to')
|
|
227
|
-
) {
|
|
228
|
-
this.detectedTraceLoopLog = true;
|
|
229
|
-
if (this.shouldLog('debug')) {
|
|
230
|
-
this.debug(message, ...args);
|
|
231
|
-
}
|
|
232
|
-
return;
|
|
233
|
-
}
|
|
234
|
-
try {
|
|
235
|
-
const colors = this.useColors ? this.colors.info : NOCOLORS;
|
|
236
|
-
const formattedMessage = formatMessage(this.formatContext, this.context, message, args);
|
|
237
|
-
__originalConsole.info(
|
|
238
|
-
`${colors.level}[INFO]${RESET} ${colors.message}${formattedMessage}${RESET}`
|
|
239
|
-
);
|
|
240
|
-
} catch (err) {
|
|
241
|
-
// Fallback to direct logging if formatting fails
|
|
242
|
-
const colors = this.colors.info;
|
|
243
|
-
__originalConsole.info(`${colors.level}[INFO]${RESET} ${message}`, ...args);
|
|
244
|
-
__originalConsole.error('Error formatting log message:', err);
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
/**
|
|
249
|
-
* Log a warning message
|
|
250
|
-
*
|
|
251
|
-
* @param message - The message to log
|
|
252
|
-
* @param args - Additional arguments to log
|
|
253
|
-
*/
|
|
254
|
-
warn(message: unknown, ...args: unknown[]): void {
|
|
255
|
-
if (!this.shouldLog('warn')) {
|
|
256
|
-
return;
|
|
257
|
-
}
|
|
258
|
-
try {
|
|
259
|
-
const colors = this.useColors ? this.colors.warn : NOCOLORS;
|
|
260
|
-
const formattedMessage = formatMessage(this.formatContext, this.context, message, args);
|
|
261
|
-
__originalConsole.warn(
|
|
262
|
-
`${colors.level}[WARN]${RESET} ${colors.message}${formattedMessage}${RESET}`
|
|
263
|
-
);
|
|
264
|
-
} catch (err) {
|
|
265
|
-
// Fallback to direct logging if formatting fails
|
|
266
|
-
const colors = this.colors.warn;
|
|
267
|
-
__originalConsole.warn(`${colors.level}[WARN]${RESET} ${message}`, ...args);
|
|
268
|
-
__originalConsole.error('Error formatting log message:', err);
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
/**
|
|
273
|
-
* Log an error message
|
|
274
|
-
*
|
|
275
|
-
* @param message - The message to log
|
|
276
|
-
* @param args - Additional arguments to log
|
|
277
|
-
*/
|
|
278
|
-
error(message: unknown, ...args: unknown[]): void {
|
|
279
|
-
if (!this.shouldLog('error')) {
|
|
280
|
-
return;
|
|
281
|
-
}
|
|
282
|
-
try {
|
|
283
|
-
const colors = this.useColors ? this.colors.error : NOCOLORS;
|
|
284
|
-
const formattedMessage = formatMessage(this.formatContext, this.context, message, args);
|
|
285
|
-
__originalConsole.error(
|
|
286
|
-
`${colors.level}[ERROR]${RESET} ${colors.message}${formattedMessage}${RESET}`
|
|
287
|
-
);
|
|
288
|
-
} catch (err) {
|
|
289
|
-
// Fallback to direct logging if formatting fails
|
|
290
|
-
const colors = this.colors.error;
|
|
291
|
-
__originalConsole.error(`${colors.level}[ERROR]${RESET} ${message}`, ...args);
|
|
292
|
-
__originalConsole.error('Error formatting log message:', err);
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
/**
|
|
297
|
-
* Log a fatal error message and exit the process
|
|
298
|
-
*
|
|
299
|
-
* @param message - The message to log
|
|
300
|
-
* @param args - Additional arguments to log
|
|
301
|
-
*/
|
|
302
|
-
fatal(message: unknown, ...args: unknown[]): never {
|
|
303
|
-
this.error(message, ...args);
|
|
304
|
-
process.exit(1);
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
/**
|
|
308
|
-
* Create a child logger with additional context
|
|
309
|
-
*
|
|
310
|
-
* @param opts - Additional context for the child logger
|
|
311
|
-
* @returns A new logger instance with the additional context
|
|
312
|
-
*/
|
|
313
|
-
child(opts: Record<string, unknown>): Logger {
|
|
314
|
-
return new ConsoleLogger(
|
|
315
|
-
{
|
|
316
|
-
...this.context,
|
|
317
|
-
...opts,
|
|
318
|
-
},
|
|
319
|
-
this.formatContext,
|
|
320
|
-
this.logLevel
|
|
321
|
-
);
|
|
322
|
-
}
|
|
323
|
-
}
|
package/src/logger/index.ts
DELETED
package/src/logger/internal.ts
DELETED
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import { formatMessage } from './util';
|
|
2
|
-
|
|
3
|
-
const cyan = '\x1b[1;96m';
|
|
4
|
-
const reset = '\x1b[0m';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Log levels for internal SDK logging
|
|
8
|
-
*/
|
|
9
|
-
export type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'silent';
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Internal logger configuration
|
|
13
|
-
*/
|
|
14
|
-
interface InternalLoggerConfig {
|
|
15
|
-
level: LogLevel;
|
|
16
|
-
context?: Record<string, unknown>;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Simple internal logger that doesn't depend on other SDK modules
|
|
21
|
-
* This logger is only for SDK internal diagnostics and debugging
|
|
22
|
-
*/
|
|
23
|
-
class InternalLogger {
|
|
24
|
-
private config: InternalLoggerConfig;
|
|
25
|
-
|
|
26
|
-
constructor() {
|
|
27
|
-
this.config = this.loadConfig();
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Load configuration from environment variables
|
|
32
|
-
*/
|
|
33
|
-
private loadConfig(): InternalLoggerConfig {
|
|
34
|
-
const envLevel = process.env.AGENTUITY_SDK_LOG_LEVEL?.toLowerCase();
|
|
35
|
-
|
|
36
|
-
// Validate log level
|
|
37
|
-
const validLevels: LogLevel[] = ['debug', 'info', 'warn', 'error', 'silent'];
|
|
38
|
-
const level = validLevels.includes(envLevel as LogLevel) ? (envLevel as LogLevel) : 'silent';
|
|
39
|
-
|
|
40
|
-
return {
|
|
41
|
-
level,
|
|
42
|
-
context: {
|
|
43
|
-
'@agentuity/source': 'sdk-internal',
|
|
44
|
-
'@agentuity/timestamp': new Date().toISOString(),
|
|
45
|
-
},
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Check if a log level should be output based on current configuration
|
|
51
|
-
*/
|
|
52
|
-
private shouldLog(level: LogLevel): boolean {
|
|
53
|
-
if (this.config.level === 'silent') return false;
|
|
54
|
-
|
|
55
|
-
const levelPriority = {
|
|
56
|
-
debug: 0,
|
|
57
|
-
info: 1,
|
|
58
|
-
warn: 2,
|
|
59
|
-
error: 3,
|
|
60
|
-
silent: 4,
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
return levelPriority[level] >= levelPriority[this.config.level];
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Format a log message with context
|
|
68
|
-
*/
|
|
69
|
-
private formatMessage(message: unknown, ...args: unknown[]): string {
|
|
70
|
-
const formattedMessage = formatMessage(false, this.config.context, message, args);
|
|
71
|
-
return `${cyan}[INTERNAL]${reset} ${formattedMessage}`;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Log a debug message
|
|
76
|
-
*/
|
|
77
|
-
debug(message: unknown, ...args: unknown[]): void {
|
|
78
|
-
if (this.shouldLog('debug')) {
|
|
79
|
-
console.debug(this.formatMessage(message, ...args));
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* Log an info message
|
|
85
|
-
*/
|
|
86
|
-
info(message: unknown, ...args: unknown[]): void {
|
|
87
|
-
if (this.shouldLog('info')) {
|
|
88
|
-
console.info(this.formatMessage(message, ...args));
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Log a warning message
|
|
94
|
-
*/
|
|
95
|
-
warn(message: unknown, ...args: unknown[]): void {
|
|
96
|
-
if (this.shouldLog('warn')) {
|
|
97
|
-
console.warn(this.formatMessage(message, ...args));
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Log an error message
|
|
103
|
-
*/
|
|
104
|
-
error(message: unknown, ...args: unknown[]): void {
|
|
105
|
-
if (this.shouldLog('error')) {
|
|
106
|
-
console.error(this.formatMessage(message, ...args));
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Update configuration at runtime
|
|
112
|
-
*/
|
|
113
|
-
updateConfig(config: Partial<InternalLoggerConfig>): void {
|
|
114
|
-
this.config = { ...this.config, ...config };
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* Get current configuration
|
|
119
|
-
*/
|
|
120
|
-
getConfig(): InternalLoggerConfig {
|
|
121
|
-
return { ...this.config };
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* Check if logging is enabled
|
|
126
|
-
*/
|
|
127
|
-
isEnabled(): boolean {
|
|
128
|
-
return this.config.level !== 'silent';
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Create a child logger with additional context
|
|
133
|
-
*/
|
|
134
|
-
child(context: Record<string, unknown>): InternalLogger {
|
|
135
|
-
const childLogger = new InternalLogger();
|
|
136
|
-
childLogger.updateConfig({
|
|
137
|
-
...this.config,
|
|
138
|
-
context: {
|
|
139
|
-
...this.config.context,
|
|
140
|
-
...context,
|
|
141
|
-
},
|
|
142
|
-
});
|
|
143
|
-
return childLogger;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
// Singleton instance - not exported
|
|
148
|
-
const internalLogger = new InternalLogger();
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* Internal logger for SDK use only
|
|
152
|
-
* This is NOT exported from the main SDK index
|
|
153
|
-
*/
|
|
154
|
-
export const internal = {
|
|
155
|
-
debug: (message: unknown, ...args: unknown[]) => internalLogger.debug(message, ...args),
|
|
156
|
-
info: (message: unknown, ...args: unknown[]) => internalLogger.info(message, ...args),
|
|
157
|
-
warn: (message: unknown, ...args: unknown[]) => internalLogger.warn(message, ...args),
|
|
158
|
-
error: (message: unknown, ...args: unknown[]) => internalLogger.error(message, ...args),
|
|
159
|
-
|
|
160
|
-
// Utility methods
|
|
161
|
-
updateConfig: (config: Partial<InternalLoggerConfig>) => internalLogger.updateConfig(config),
|
|
162
|
-
getConfig: () => internalLogger.getConfig(),
|
|
163
|
-
isEnabled: () => internalLogger.isEnabled(),
|
|
164
|
-
child: (context: Record<string, unknown>) => internalLogger.child(context),
|
|
165
|
-
};
|