@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
package/src/app.ts
DELETED
|
@@ -1,769 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { type Env as HonoEnv } from 'hono';
|
|
3
|
-
import type { cors } from 'hono/cors';
|
|
4
|
-
import type { compress } from 'hono/compress';
|
|
5
|
-
import type { Logger } from './logger';
|
|
6
|
-
import type { Meter, Tracer } from '@opentelemetry/api';
|
|
7
|
-
import type {
|
|
8
|
-
KeyValueStorage,
|
|
9
|
-
SessionEventProvider,
|
|
10
|
-
EvalRunEventProvider,
|
|
11
|
-
StreamStorage,
|
|
12
|
-
VectorStorage,
|
|
13
|
-
SandboxService,
|
|
14
|
-
QueueService,
|
|
15
|
-
EmailService,
|
|
16
|
-
ScheduleService,
|
|
17
|
-
TaskStorage,
|
|
18
|
-
SessionStartEvent,
|
|
19
|
-
} from '@agentuity/core';
|
|
20
|
-
|
|
21
|
-
import type { ThreadProvider, SessionProvider, Session, Thread } from './session';
|
|
22
|
-
import type WaitUntilHandler from './_waituntil';
|
|
23
|
-
import type { Context } from 'hono';
|
|
24
|
-
|
|
25
|
-
type HonoCorsOptions = NonNullable<Parameters<typeof cors>[0]>;
|
|
26
|
-
type HonoCompressOptions = Parameters<typeof compress>[0];
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Agentuity-specific CORS options for same-origin restriction.
|
|
30
|
-
*/
|
|
31
|
-
export interface AgentuityCorsSameOriginOptions {
|
|
32
|
-
/**
|
|
33
|
-
* Enable same-origin restriction for CORS.
|
|
34
|
-
*
|
|
35
|
-
* When true, only allows origins from:
|
|
36
|
-
* - AGENTUITY_BASE_URL environment variable
|
|
37
|
-
* - AGENTUITY_CLOUD_DOMAINS environment variable (comma-separated)
|
|
38
|
-
* - AUTH_TRUSTED_DOMAINS environment variable (comma-separated)
|
|
39
|
-
* - The same-origin of the incoming request URL
|
|
40
|
-
* - Any additional origins specified in `allowedOrigins`
|
|
41
|
-
*
|
|
42
|
-
* When false or omitted, the default behavior is to reflect any origin
|
|
43
|
-
* (backwards compatible).
|
|
44
|
-
*
|
|
45
|
-
* @default false
|
|
46
|
-
*/
|
|
47
|
-
sameOrigin?: boolean;
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Additional origins to allow when `sameOrigin` is true.
|
|
51
|
-
* Can be full URLs (https://example.com) or bare domains (example.com).
|
|
52
|
-
*
|
|
53
|
-
* These are merged with the origins derived from environment variables.
|
|
54
|
-
*/
|
|
55
|
-
allowedOrigins?: string[];
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Extended CORS configuration options.
|
|
60
|
-
*
|
|
61
|
-
* Combines Hono's CORS options with Agentuity-specific settings for
|
|
62
|
-
* easy same-origin restriction.
|
|
63
|
-
*
|
|
64
|
-
* @example
|
|
65
|
-
* ```typescript
|
|
66
|
-
* // Simple opt-in to trusted origins only
|
|
67
|
-
* const app = await createApp({
|
|
68
|
-
* cors: { sameOrigin: true }
|
|
69
|
-
* });
|
|
70
|
-
*
|
|
71
|
-
* // With additional allowed origins
|
|
72
|
-
* const app = await createApp({
|
|
73
|
-
* cors: {
|
|
74
|
-
* sameOrigin: true,
|
|
75
|
-
* allowedOrigins: ['https://admin.myapp.com'],
|
|
76
|
-
* }
|
|
77
|
-
* });
|
|
78
|
-
* ```
|
|
79
|
-
*/
|
|
80
|
-
export type CorsConfig = HonoCorsOptions & AgentuityCorsSameOriginOptions;
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Configuration options for response compression middleware.
|
|
84
|
-
*
|
|
85
|
-
* @example
|
|
86
|
-
* ```typescript
|
|
87
|
-
* const app = await createApp({
|
|
88
|
-
* compression: {
|
|
89
|
-
* enabled: true,
|
|
90
|
-
* threshold: 1024,
|
|
91
|
-
* }
|
|
92
|
-
* });
|
|
93
|
-
* ```
|
|
94
|
-
*/
|
|
95
|
-
export interface CompressionConfig {
|
|
96
|
-
/**
|
|
97
|
-
* Enable or disable compression globally.
|
|
98
|
-
* @default true
|
|
99
|
-
*/
|
|
100
|
-
enabled?: boolean;
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Minimum response body size in bytes before compression is attempted.
|
|
104
|
-
* Responses smaller than this threshold will not be compressed.
|
|
105
|
-
* @default 1024
|
|
106
|
-
*/
|
|
107
|
-
threshold?: number;
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* Optional filter function to skip compression for specific requests.
|
|
111
|
-
* Return false to skip compression for the request.
|
|
112
|
-
*
|
|
113
|
-
* @example
|
|
114
|
-
* ```typescript
|
|
115
|
-
* filter: (c) => !c.req.path.startsWith('/internal')
|
|
116
|
-
* ```
|
|
117
|
-
*/
|
|
118
|
-
filter?: (c: Context) => boolean;
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Raw options passed through to Hono's compress middleware.
|
|
122
|
-
* These are merged with Agentuity's defaults.
|
|
123
|
-
*/
|
|
124
|
-
honoOptions?: HonoCompressOptions;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* Web analytics configuration options.
|
|
129
|
-
*/
|
|
130
|
-
export interface AnalyticsOptions {
|
|
131
|
-
/** Enable/disable analytics @default true */
|
|
132
|
-
enabled?: boolean;
|
|
133
|
-
/** Require explicit user consent before tracking @default false */
|
|
134
|
-
requireConsent?: boolean;
|
|
135
|
-
/** Track click events on elements with data-analytics attribute @default true */
|
|
136
|
-
trackClicks?: boolean;
|
|
137
|
-
/** Track scroll depth @default true */
|
|
138
|
-
trackScroll?: boolean;
|
|
139
|
-
/** Track outbound link clicks @default true */
|
|
140
|
-
trackOutboundLinks?: boolean;
|
|
141
|
-
/** Track form submissions @default false */
|
|
142
|
-
trackForms?: boolean;
|
|
143
|
-
/** Track Core Web Vitals (LCP, FID, CLS) @default true */
|
|
144
|
-
trackWebVitals?: boolean;
|
|
145
|
-
/** Track JavaScript errors @default true */
|
|
146
|
-
trackErrors?: boolean;
|
|
147
|
-
/** Track SPA navigation changes @default true */
|
|
148
|
-
trackSPANavigation?: boolean;
|
|
149
|
-
/** Sampling rate (0-1) @default 1 */
|
|
150
|
-
sampleRate?: number;
|
|
151
|
-
/** URL patterns to exclude from tracking */
|
|
152
|
-
excludePatterns?: string[];
|
|
153
|
-
/** Global properties attached to every event */
|
|
154
|
-
globalProperties?: Record<string, unknown>;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* Workbench UI configuration options.
|
|
159
|
-
*/
|
|
160
|
-
export interface WorkbenchOptions {
|
|
161
|
-
/** Route path for the workbench UI @default '/workbench' */
|
|
162
|
-
route?: string;
|
|
163
|
-
/** Custom headers to include in workbench responses */
|
|
164
|
-
headers?: Record<string, string>;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
export interface AppConfig {
|
|
168
|
-
/**
|
|
169
|
-
* Configure CORS (Cross-Origin Resource Sharing) settings.
|
|
170
|
-
*
|
|
171
|
-
* By default, CORS reflects any origin (backwards compatible).
|
|
172
|
-
* Use `sameOrigin: true` to restrict to trusted origins only.
|
|
173
|
-
*
|
|
174
|
-
* @example
|
|
175
|
-
* ```typescript
|
|
176
|
-
* // Restrict to trusted origins (recommended for production)
|
|
177
|
-
* const app = await createApp({
|
|
178
|
-
* cors: { sameOrigin: true }
|
|
179
|
-
* });
|
|
180
|
-
*
|
|
181
|
-
* // Add additional allowed origins
|
|
182
|
-
* const app = await createApp({
|
|
183
|
-
* cors: {
|
|
184
|
-
* sameOrigin: true,
|
|
185
|
-
* allowedOrigins: ['https://admin.myapp.com'],
|
|
186
|
-
* }
|
|
187
|
-
* });
|
|
188
|
-
* ```
|
|
189
|
-
*/
|
|
190
|
-
cors?: CorsConfig;
|
|
191
|
-
/**
|
|
192
|
-
* Configure response compression.
|
|
193
|
-
* Set to `false` to disable compression entirely.
|
|
194
|
-
*
|
|
195
|
-
* @example
|
|
196
|
-
* ```typescript
|
|
197
|
-
* const app = await createApp({
|
|
198
|
-
* compression: {
|
|
199
|
-
* threshold: 2048,
|
|
200
|
-
* }
|
|
201
|
-
* });
|
|
202
|
-
*
|
|
203
|
-
* // Or disable compression:
|
|
204
|
-
* const app = await createApp({ compression: false });
|
|
205
|
-
* ```
|
|
206
|
-
*/
|
|
207
|
-
compression?: CompressionConfig | false;
|
|
208
|
-
/**
|
|
209
|
-
* Override the default services
|
|
210
|
-
*/
|
|
211
|
-
services?: {
|
|
212
|
-
/**
|
|
213
|
-
* if true (default false), will use local services and override any others
|
|
214
|
-
*/
|
|
215
|
-
useLocal?: boolean;
|
|
216
|
-
/**
|
|
217
|
-
* the KeyValueStorage to override instead of the default
|
|
218
|
-
*/
|
|
219
|
-
keyvalue?: KeyValueStorage;
|
|
220
|
-
/**
|
|
221
|
-
* the StreamStorage to override instead of the default
|
|
222
|
-
*/
|
|
223
|
-
stream?: StreamStorage;
|
|
224
|
-
/**
|
|
225
|
-
* the VectorStorage to override instead of the default
|
|
226
|
-
*/
|
|
227
|
-
vector?: VectorStorage;
|
|
228
|
-
/**
|
|
229
|
-
* the TaskStorage to override instead of the default
|
|
230
|
-
*/
|
|
231
|
-
task?: TaskStorage;
|
|
232
|
-
/**
|
|
233
|
-
* the ThreadProvider to override instead of the default
|
|
234
|
-
*/
|
|
235
|
-
thread?: ThreadProvider;
|
|
236
|
-
/**
|
|
237
|
-
* the SessionProvider to override instead of the default
|
|
238
|
-
*/
|
|
239
|
-
session?: SessionProvider;
|
|
240
|
-
/**
|
|
241
|
-
* the SessionEventProvider to override instead of the default
|
|
242
|
-
*/
|
|
243
|
-
sessionEvent?: SessionEventProvider;
|
|
244
|
-
/**
|
|
245
|
-
* the EvalRunEventProvider to override instead of the default
|
|
246
|
-
*/
|
|
247
|
-
evalRunEvent?: EvalRunEventProvider;
|
|
248
|
-
/**
|
|
249
|
-
* the EmailService to override instead of the default
|
|
250
|
-
*/
|
|
251
|
-
email?: EmailService;
|
|
252
|
-
};
|
|
253
|
-
/**
|
|
254
|
-
* Optional request timeout in seconds. If not provided, will default
|
|
255
|
-
* to zero which will cause the request to wait indefinitely.
|
|
256
|
-
*/
|
|
257
|
-
requestTimeout?: number;
|
|
258
|
-
|
|
259
|
-
/**
|
|
260
|
-
* Configure web analytics for frontend tracking.
|
|
261
|
-
*
|
|
262
|
-
* Set to `true` to enable with defaults, `false` to disable, or provide
|
|
263
|
-
* a configuration object to customize tracking behavior.
|
|
264
|
-
*
|
|
265
|
-
* @default true
|
|
266
|
-
*
|
|
267
|
-
* @example
|
|
268
|
-
* ```typescript
|
|
269
|
-
* // Enable with defaults
|
|
270
|
-
* const app = await createApp({ analytics: true });
|
|
271
|
-
*
|
|
272
|
-
* // Disable analytics
|
|
273
|
-
* const app = await createApp({ analytics: false });
|
|
274
|
-
*
|
|
275
|
-
* // Custom configuration
|
|
276
|
-
* const app = await createApp({
|
|
277
|
-
* analytics: {
|
|
278
|
-
* trackClicks: false,
|
|
279
|
-
* sampleRate: 0.5,
|
|
280
|
-
* }
|
|
281
|
-
* });
|
|
282
|
-
* ```
|
|
283
|
-
*/
|
|
284
|
-
analytics?: boolean | AnalyticsOptions;
|
|
285
|
-
|
|
286
|
-
/**
|
|
287
|
-
* Configure the workbench UI for agent testing.
|
|
288
|
-
*
|
|
289
|
-
* Set to `true` to enable at `/workbench`, a string to set a custom route,
|
|
290
|
-
* or an object for full configuration. Only active in development mode.
|
|
291
|
-
*
|
|
292
|
-
* @example
|
|
293
|
-
* ```typescript
|
|
294
|
-
* // Enable at default route (/workbench)
|
|
295
|
-
* const app = await createApp({ workbench: true });
|
|
296
|
-
*
|
|
297
|
-
* // Custom route
|
|
298
|
-
* const app = await createApp({ workbench: '/debug' });
|
|
299
|
-
*
|
|
300
|
-
* // Full configuration
|
|
301
|
-
* const app = await createApp({
|
|
302
|
-
* workbench: {
|
|
303
|
-
* route: '/debug',
|
|
304
|
-
* headers: { 'X-Custom': 'value' },
|
|
305
|
-
* }
|
|
306
|
-
* });
|
|
307
|
-
* ```
|
|
308
|
-
*/
|
|
309
|
-
workbench?: boolean | string | WorkbenchOptions;
|
|
310
|
-
|
|
311
|
-
/**
|
|
312
|
-
* **Experimental** — Optional user-provided router(s) to use instead of file-based routing.
|
|
313
|
-
*
|
|
314
|
-
* When provided, the CLI's generated entry file mounts these routers instead
|
|
315
|
-
* of auto-discovering individual route files from `src/api/`. All Agentuity
|
|
316
|
-
* middleware (CORS, OTel, agent context) is applied to each mount path.
|
|
317
|
-
*
|
|
318
|
-
* Accepts three forms:
|
|
319
|
-
* - A plain `Hono` instance → mounted at `/api` (default)
|
|
320
|
-
* - A `{ path, router }` object → mounted at the specified path
|
|
321
|
-
* - An array of `{ path, router }` objects → each mounted at its path
|
|
322
|
-
*
|
|
323
|
-
* Use `createRouter()` to get typed access to Agentuity context variables
|
|
324
|
-
* (`c.var.logger`, `c.var.thread`, `c.var.session`, etc.), or use
|
|
325
|
-
* `new Hono<Env>()` for the same types with a plain Hono instance.
|
|
326
|
-
*
|
|
327
|
-
* @experimental This API may change in future releases.
|
|
328
|
-
*
|
|
329
|
-
* @example Single router (mounted at /api)
|
|
330
|
-
* ```typescript
|
|
331
|
-
* const router = createRouter();
|
|
332
|
-
* router.route('/users', usersRouter);
|
|
333
|
-
* export const app = await createApp({ router });
|
|
334
|
-
* ```
|
|
335
|
-
*
|
|
336
|
-
* @example Single router at custom path
|
|
337
|
-
* ```typescript
|
|
338
|
-
* const router = createRouter();
|
|
339
|
-
* router.route('/users', usersRouter);
|
|
340
|
-
* export const app = await createApp({
|
|
341
|
-
* router: { path: '/v1', router },
|
|
342
|
-
* });
|
|
343
|
-
* ```
|
|
344
|
-
*
|
|
345
|
-
* @example Multiple routers at different paths
|
|
346
|
-
* ```typescript
|
|
347
|
-
* export const app = await createApp({
|
|
348
|
-
* router: [
|
|
349
|
-
* { path: '/api/v1', router: v1Router },
|
|
350
|
-
* { path: '/api/v2', router: v2Router },
|
|
351
|
-
* ],
|
|
352
|
-
* });
|
|
353
|
-
* ```
|
|
354
|
-
*/
|
|
355
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
356
|
-
router?: import('hono').Hono<any, any, any> | RouteMount | RouteMount[];
|
|
357
|
-
|
|
358
|
-
/**
|
|
359
|
-
* Agents to register with this application.
|
|
360
|
-
*
|
|
361
|
-
* Each agent is a value returned by `createAgent()`. Importing the agent
|
|
362
|
-
* module triggers self-registration; listing them here ensures they are
|
|
363
|
-
* included in the build and available for workbench metadata, setup/shutdown
|
|
364
|
-
* lifecycle, and agent-to-agent calls via `ctx.invoke()`.
|
|
365
|
-
*
|
|
366
|
-
* Type safety for agent calls comes from direct imports — use
|
|
367
|
-
* `ctx.invoke(() => myAgent.run(input))` for fully typed invocations.
|
|
368
|
-
*
|
|
369
|
-
* @example
|
|
370
|
-
* ```typescript
|
|
371
|
-
* import greeting from './agent/greeting/agent';
|
|
372
|
-
* import session from './agent/session/agent';
|
|
373
|
-
*
|
|
374
|
-
* export default await createApp({
|
|
375
|
-
* agents: [greeting, session],
|
|
376
|
-
* router,
|
|
377
|
-
* });
|
|
378
|
-
* ```
|
|
379
|
-
*/
|
|
380
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
381
|
-
agents?: import('./agent').AgentRunner<any, any, any>[];
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
/**
|
|
385
|
-
* A user-provided router with its mount path.
|
|
386
|
-
*
|
|
387
|
-
* @experimental This API may change in future releases.
|
|
388
|
-
*/
|
|
389
|
-
export interface RouteMount {
|
|
390
|
-
/**
|
|
391
|
-
* The base path to mount the router at (e.g. `/api`, `/api/v1`).
|
|
392
|
-
* Agentuity middleware (CORS, OTel, agent context) is applied to `{path}/*`.
|
|
393
|
-
*/
|
|
394
|
-
path: string;
|
|
395
|
-
/**
|
|
396
|
-
* The Hono router to mount.
|
|
397
|
-
*/
|
|
398
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
399
|
-
router: import('hono').Hono<any, any, any>;
|
|
400
|
-
}
|
|
401
|
-
|
|
402
|
-
export interface Variables<TAppState = Record<string, never>> {
|
|
403
|
-
logger: Logger;
|
|
404
|
-
meter: Meter;
|
|
405
|
-
tracer: Tracer;
|
|
406
|
-
sessionId: string;
|
|
407
|
-
thread: Thread;
|
|
408
|
-
session: Session;
|
|
409
|
-
kv: KeyValueStorage;
|
|
410
|
-
stream: StreamStorage;
|
|
411
|
-
vector: VectorStorage;
|
|
412
|
-
sandbox: SandboxService;
|
|
413
|
-
queue: QueueService;
|
|
414
|
-
email: EmailService;
|
|
415
|
-
schedule: ScheduleService;
|
|
416
|
-
task: TaskStorage;
|
|
417
|
-
app: TAppState;
|
|
418
|
-
// Web analytics context (set by createWebSessionMiddleware, thread-only tracking)
|
|
419
|
-
_webThreadId?: string;
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
export type TriggerType = SessionStartEvent['trigger'];
|
|
423
|
-
|
|
424
|
-
export interface PrivateVariables {
|
|
425
|
-
waitUntilHandler: WaitUntilHandler;
|
|
426
|
-
routeId?: string;
|
|
427
|
-
agentIds: Set<string>;
|
|
428
|
-
trigger: TriggerType;
|
|
429
|
-
agentRunSpanId?: string;
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
export interface Env<TAppState = Record<string, never>> extends HonoEnv {
|
|
433
|
-
Variables: Variables<TAppState>;
|
|
434
|
-
}
|
|
435
|
-
|
|
436
|
-
/**
|
|
437
|
-
* Get the global app instance (stub for backwards compatibility)
|
|
438
|
-
* Returns null in Vite-native architecture
|
|
439
|
-
*/
|
|
440
|
-
export function getApp(): null {
|
|
441
|
-
return null;
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
// Re-export event functions from _events
|
|
445
|
-
export { fireEvent } from './_events';
|
|
446
|
-
|
|
447
|
-
import type { Hono } from 'hono';
|
|
448
|
-
|
|
449
|
-
// ============================================================================
|
|
450
|
-
// Vite-native createApp implementation
|
|
451
|
-
// ============================================================================
|
|
452
|
-
|
|
453
|
-
/**
|
|
454
|
-
* Simple server interface for backwards compatibility
|
|
455
|
-
*/
|
|
456
|
-
export interface Server {
|
|
457
|
-
/**
|
|
458
|
-
* The server URL (e.g., "http://localhost:3500")
|
|
459
|
-
*/
|
|
460
|
-
url: string;
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
export interface AppResult {
|
|
464
|
-
/**
|
|
465
|
-
* App configuration
|
|
466
|
-
*/
|
|
467
|
-
config?: AppConfig;
|
|
468
|
-
/**
|
|
469
|
-
* The Hono router instance
|
|
470
|
-
*/
|
|
471
|
-
router: import('hono').Hono<Env>;
|
|
472
|
-
/**
|
|
473
|
-
* Server information
|
|
474
|
-
*/
|
|
475
|
-
server: Server;
|
|
476
|
-
/**
|
|
477
|
-
* Logger instance
|
|
478
|
-
*/
|
|
479
|
-
logger: Logger;
|
|
480
|
-
/**
|
|
481
|
-
* Fetch handler for the application.
|
|
482
|
-
* Bun --hot uses this on the default export to hot-swap the running server's
|
|
483
|
-
* request handler without restarting the process.
|
|
484
|
-
*/
|
|
485
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
486
|
-
fetch: (req: Request, ...args: any[]) => Response | Promise<Response>;
|
|
487
|
-
/**
|
|
488
|
-
* Port the server listens on.
|
|
489
|
-
* Used by Bun --hot alongside `fetch` to configure the server.
|
|
490
|
-
*/
|
|
491
|
-
port: number;
|
|
492
|
-
/**
|
|
493
|
-
* Hostname the server binds to.
|
|
494
|
-
*/
|
|
495
|
-
hostname: string;
|
|
496
|
-
/**
|
|
497
|
-
* WebSocket handler for Bun.serve().
|
|
498
|
-
* Required by Bun --hot to enable WebSocket upgrade support.
|
|
499
|
-
*/
|
|
500
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
501
|
-
websocket?: any;
|
|
502
|
-
}
|
|
503
|
-
|
|
504
|
-
/**
|
|
505
|
-
* Create and start an Agentuity application.
|
|
506
|
-
*
|
|
507
|
-
* This is the single entry point for the entire server lifecycle:
|
|
508
|
-
* OTel, middleware, route mounting, services, and Bun.serve().
|
|
509
|
-
*
|
|
510
|
-
* @example
|
|
511
|
-
* ```typescript
|
|
512
|
-
* import { createApp } from '@agentuity/runtime';
|
|
513
|
-
* import router from './src/api/router';
|
|
514
|
-
* import agents from './src/agent';
|
|
515
|
-
*
|
|
516
|
-
* export default await createApp({
|
|
517
|
-
* router: { path: '/api', router },
|
|
518
|
-
* agents,
|
|
519
|
-
* });
|
|
520
|
-
* ```
|
|
521
|
-
*/
|
|
522
|
-
export async function createApp(config?: AppConfig): Promise<AppResult> {
|
|
523
|
-
// --- Imports (lazy to avoid circular deps) ---
|
|
524
|
-
const { bootstrapRuntimeEnv } = await import('@agentuity/server');
|
|
525
|
-
const { register } = await import('./otel/config');
|
|
526
|
-
const { setGlobalLogger, setGlobalTracer, setGlobalRouter, getSpanProcessors } = await import(
|
|
527
|
-
'./_server'
|
|
528
|
-
);
|
|
529
|
-
const { createServices, getThreadProvider, getSessionProvider } = await import('./_services');
|
|
530
|
-
const {
|
|
531
|
-
createBaseMiddleware,
|
|
532
|
-
createCorsMiddleware,
|
|
533
|
-
createOtelMiddleware,
|
|
534
|
-
createCompressionMiddleware,
|
|
535
|
-
} = await import('./middleware');
|
|
536
|
-
const { runAgentSetups, createAgentMiddleware } = await import('./agent');
|
|
537
|
-
const { loadBuildMetadata } = await import('./_metadata');
|
|
538
|
-
const { patchBunS3ForStorageDev } = await import('./bun-s3-patch');
|
|
539
|
-
const { createWorkbenchRouter } = await import('./workbench');
|
|
540
|
-
const {
|
|
541
|
-
isDevelopment,
|
|
542
|
-
resolveAnalyticsConfig,
|
|
543
|
-
resolveWorkbenchConfig,
|
|
544
|
-
registerHealthRoutes,
|
|
545
|
-
registerAnalyticsRoutes,
|
|
546
|
-
registerWebRoutes,
|
|
547
|
-
registerWorkbenchUI,
|
|
548
|
-
startServer,
|
|
549
|
-
} = await import('./bootstrap');
|
|
550
|
-
const { websocket } = await import('hono/bun');
|
|
551
|
-
|
|
552
|
-
// --- Step 0: Environment ---
|
|
553
|
-
if (isDevelopment()) {
|
|
554
|
-
bootstrapRuntimeEnv();
|
|
555
|
-
}
|
|
556
|
-
if (isDevelopment() && process.env.AGENTUITY_NO_BUNDLE === 'true') {
|
|
557
|
-
const { applyDevPatches } = await import('./dev-patches');
|
|
558
|
-
await applyDevPatches();
|
|
559
|
-
}
|
|
560
|
-
loadBuildMetadata();
|
|
561
|
-
patchBunS3ForStorageDev();
|
|
562
|
-
|
|
563
|
-
// --- Step 1: Telemetry ---
|
|
564
|
-
const otel = register({
|
|
565
|
-
processors: getSpanProcessors(),
|
|
566
|
-
logLevel: (process.env.AGENTUITY_LOG_LEVEL || 'info') as import('@agentuity/core').LogLevel,
|
|
567
|
-
});
|
|
568
|
-
setGlobalLogger(otel.logger);
|
|
569
|
-
setGlobalTracer(otel.tracer);
|
|
570
|
-
|
|
571
|
-
// --- Step 1b: Version consistency check ---
|
|
572
|
-
const { checkVersionConsistency } = await import('./version-check');
|
|
573
|
-
checkVersionConsistency(otel.logger);
|
|
574
|
-
|
|
575
|
-
// --- Step 2: Router + middleware ---
|
|
576
|
-
const { createRouter } = await import('./router');
|
|
577
|
-
const app = createRouter();
|
|
578
|
-
setGlobalRouter(app);
|
|
579
|
-
|
|
580
|
-
app.use('*', createCompressionMiddleware(config?.compression));
|
|
581
|
-
app.use(
|
|
582
|
-
'*',
|
|
583
|
-
createBaseMiddleware({
|
|
584
|
-
logger: otel.logger,
|
|
585
|
-
tracer: otel.tracer,
|
|
586
|
-
meter: otel.meter,
|
|
587
|
-
})
|
|
588
|
-
);
|
|
589
|
-
app.use('/_agentuity/workbench/*', createOtelMiddleware());
|
|
590
|
-
|
|
591
|
-
// --- Step 3: Services ---
|
|
592
|
-
const port = process.env.PORT || '3500';
|
|
593
|
-
const serverUrl = `http://127.0.0.1:${port}`;
|
|
594
|
-
createServices(otel.logger, config, serverUrl);
|
|
595
|
-
|
|
596
|
-
const threadProvider = getThreadProvider();
|
|
597
|
-
const sessionProvider = getSessionProvider();
|
|
598
|
-
await threadProvider.initialize({});
|
|
599
|
-
await sessionProvider.initialize({});
|
|
600
|
-
|
|
601
|
-
// --- Step 4: Routes ---
|
|
602
|
-
const analyticsConfig = resolveAnalyticsConfig(config?.analytics);
|
|
603
|
-
const workbenchConfig = resolveWorkbenchConfig(config?.workbench);
|
|
604
|
-
|
|
605
|
-
registerHealthRoutes(app);
|
|
606
|
-
|
|
607
|
-
if (analyticsConfig.enabled) {
|
|
608
|
-
registerAnalyticsRoutes(app, analyticsConfig);
|
|
609
|
-
}
|
|
610
|
-
|
|
611
|
-
// Mount user routers
|
|
612
|
-
if (config?.router) {
|
|
613
|
-
const mounts = normalizeRouterConfig(config.router);
|
|
614
|
-
for (const mount of mounts) {
|
|
615
|
-
const prefix = mount.path.endsWith('/') ? mount.path + '*' : mount.path + '/*';
|
|
616
|
-
app.use(prefix, createCorsMiddleware(config?.cors));
|
|
617
|
-
app.use(prefix, createOtelMiddleware());
|
|
618
|
-
app.use(prefix, createAgentMiddleware(''));
|
|
619
|
-
app.route(mount.path, mount.router);
|
|
620
|
-
}
|
|
621
|
-
}
|
|
622
|
-
|
|
623
|
-
// Workbench
|
|
624
|
-
const workbenchRouter = createWorkbenchRouter();
|
|
625
|
-
app.route('/', workbenchRouter);
|
|
626
|
-
registerWorkbenchUI(app, workbenchConfig);
|
|
627
|
-
|
|
628
|
-
// Web (production static serving)
|
|
629
|
-
registerWebRoutes(app, analyticsConfig);
|
|
630
|
-
|
|
631
|
-
// --- Step 5: Agent lifecycle + server ---
|
|
632
|
-
await runAgentSetups({});
|
|
633
|
-
|
|
634
|
-
// In dev mode with --hot, Bun manages the server via the default export's
|
|
635
|
-
// `fetch` property. In production, we start Bun.serve() explicitly.
|
|
636
|
-
if (!isDevelopment()) {
|
|
637
|
-
startServer(app, { requestTimeout: config?.requestTimeout });
|
|
638
|
-
}
|
|
639
|
-
|
|
640
|
-
// Only log on first startup, not on --hot reloads
|
|
641
|
-
const { serverStarted } = await import('./_globals');
|
|
642
|
-
if (!serverStarted.get()) {
|
|
643
|
-
serverStarted.set(true);
|
|
644
|
-
otel.logger.debug('Server listening on %s', serverUrl);
|
|
645
|
-
}
|
|
646
|
-
|
|
647
|
-
const portNumber = parseInt(port, 10);
|
|
648
|
-
|
|
649
|
-
const result: AppResult = {
|
|
650
|
-
config,
|
|
651
|
-
router: app as Hono<Env>,
|
|
652
|
-
server: { url: serverUrl },
|
|
653
|
-
logger: otel.logger,
|
|
654
|
-
// Bun --hot picks up `fetch` and `port` on the default export to
|
|
655
|
-
// hot-swap the running server's request handler without restarting.
|
|
656
|
-
fetch: app.fetch,
|
|
657
|
-
port: portNumber,
|
|
658
|
-
hostname: '127.0.0.1',
|
|
659
|
-
websocket,
|
|
660
|
-
};
|
|
661
|
-
|
|
662
|
-
// In production, startServer() already called Bun.serve(). If we leave
|
|
663
|
-
// `fetch` + `port` on the default export, Bun v1.2+ auto-serves from it
|
|
664
|
-
// too — causing EADDRINUSE. Strip those properties so only the explicit
|
|
665
|
-
// Bun.serve() is active.
|
|
666
|
-
if (!isDevelopment()) {
|
|
667
|
-
delete (result as unknown as Record<string, unknown>).fetch;
|
|
668
|
-
delete (result as unknown as Record<string, unknown>).port;
|
|
669
|
-
delete (result as unknown as Record<string, unknown>).hostname;
|
|
670
|
-
delete (result as unknown as Record<string, unknown>).websocket;
|
|
671
|
-
}
|
|
672
|
-
|
|
673
|
-
return result;
|
|
674
|
-
}
|
|
675
|
-
|
|
676
|
-
/**
|
|
677
|
-
* Normalize the router config into a consistent RouteMount[] form.
|
|
678
|
-
* - Plain Hono → [{ path: '/api', router }]
|
|
679
|
-
* - { path, router } → [{ path, router }]
|
|
680
|
-
* - [{ path, router }, ...] → as-is
|
|
681
|
-
* @internal
|
|
682
|
-
*/
|
|
683
|
-
export function normalizeRouterConfig(
|
|
684
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
685
|
-
router: import('hono').Hono<any, any, any> | RouteMount | RouteMount[]
|
|
686
|
-
): RouteMount[] {
|
|
687
|
-
if (Array.isArray(router)) {
|
|
688
|
-
return router;
|
|
689
|
-
}
|
|
690
|
-
if ('router' in router && 'path' in router) {
|
|
691
|
-
return [router as RouteMount];
|
|
692
|
-
}
|
|
693
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
694
|
-
return [{ path: '/api', router: router as import('hono').Hono<any, any, any> }];
|
|
695
|
-
}
|
|
696
|
-
|
|
697
|
-
/**
|
|
698
|
-
* A shutdown hook function.
|
|
699
|
-
*/
|
|
700
|
-
export type ShutdownHook = () => Promise<void> | void;
|
|
701
|
-
|
|
702
|
-
/**
|
|
703
|
-
* Gets the global shutdown hooks registry.
|
|
704
|
-
*/
|
|
705
|
-
function getShutdownHooks(): ShutdownHook[] {
|
|
706
|
-
const key = Symbol.for('@agentuity/runtime:shutdown-hooks');
|
|
707
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
708
|
-
const g = globalThis as any;
|
|
709
|
-
if (!g[key]) {
|
|
710
|
-
g[key] = [];
|
|
711
|
-
}
|
|
712
|
-
return g[key];
|
|
713
|
-
}
|
|
714
|
-
|
|
715
|
-
/**
|
|
716
|
-
* Registers a shutdown hook to be called during graceful shutdown.
|
|
717
|
-
*
|
|
718
|
-
* Hooks are called in reverse order of registration (LIFO) after the
|
|
719
|
-
* app's shutdown callback and agent shutdowns have completed.
|
|
720
|
-
*
|
|
721
|
-
* This is useful for packages like @agentuity/postgres to register
|
|
722
|
-
* their own cleanup logic without requiring explicit wiring in each app.
|
|
723
|
-
*
|
|
724
|
-
* @param hook - The function to call during shutdown
|
|
725
|
-
* @returns A function to unregister the hook
|
|
726
|
-
*
|
|
727
|
-
* @example
|
|
728
|
-
* ```typescript
|
|
729
|
-
* import { registerShutdownHook } from '@agentuity/runtime';
|
|
730
|
-
*
|
|
731
|
-
* // Register a cleanup function
|
|
732
|
-
* const unregister = registerShutdownHook(async () => {
|
|
733
|
-
* await myResource.close();
|
|
734
|
-
* });
|
|
735
|
-
*
|
|
736
|
-
* // Later, if needed, unregister it
|
|
737
|
-
* unregister();
|
|
738
|
-
* ```
|
|
739
|
-
*/
|
|
740
|
-
export function registerShutdownHook(hook: ShutdownHook): () => void {
|
|
741
|
-
const hooks = getShutdownHooks();
|
|
742
|
-
hooks.push(hook);
|
|
743
|
-
|
|
744
|
-
return () => {
|
|
745
|
-
const index = hooks.indexOf(hook);
|
|
746
|
-
if (index !== -1) {
|
|
747
|
-
hooks.splice(index, 1);
|
|
748
|
-
}
|
|
749
|
-
};
|
|
750
|
-
}
|
|
751
|
-
|
|
752
|
-
/**
|
|
753
|
-
* Run all registered shutdown hooks.
|
|
754
|
-
* Called during graceful shutdown (SIGTERM/SIGINT).
|
|
755
|
-
*
|
|
756
|
-
* Hooks are called in reverse order of registration (LIFO).
|
|
757
|
-
*/
|
|
758
|
-
export async function runShutdown(): Promise<void> {
|
|
759
|
-
const hooks = getShutdownHooks();
|
|
760
|
-
for (let i = hooks.length - 1; i >= 0; i--) {
|
|
761
|
-
const hook = hooks[i];
|
|
762
|
-
if (!hook) continue;
|
|
763
|
-
try {
|
|
764
|
-
await hook();
|
|
765
|
-
} catch {
|
|
766
|
-
// Ignore errors during shutdown hooks
|
|
767
|
-
}
|
|
768
|
-
}
|
|
769
|
-
}
|