@agentuity/runtime 0.0.51 → 0.0.53
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/_config.js +99 -0
- package/dist/_config.js.map +1 -0
- package/dist/_context.d.ts +11 -11
- package/dist/_context.d.ts.map +1 -1
- package/dist/_context.js +84 -0
- package/dist/_context.js.map +1 -0
- package/dist/_idle.js +24 -0
- package/dist/_idle.js.map +1 -0
- package/dist/_server.js +489 -0
- package/dist/_server.js.map +1 -0
- package/dist/_services.js +258 -0
- package/dist/_services.js.map +1 -0
- package/dist/_tokens.js +98 -0
- package/dist/_tokens.js.map +1 -0
- package/dist/_util.js +54 -0
- package/dist/_util.js.map +1 -0
- package/dist/_waituntil.js +87 -0
- package/dist/_waituntil.js.map +1 -0
- package/dist/agent.d.ts +24 -15
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +507 -0
- package/dist/agent.js.map +1 -0
- package/dist/app.d.ts +6 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +72 -0
- package/dist/app.js.map +1 -0
- package/dist/eval.d.ts +1 -1
- package/dist/eval.d.ts.map +1 -1
- package/dist/eval.js +2 -0
- package/dist/eval.js.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/io/email.js +154 -0
- package/dist/io/email.js.map +1 -0
- package/dist/logger/console.js +274 -0
- package/dist/logger/console.js.map +1 -0
- package/dist/logger/index.js +3 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/logger/internal.js +133 -0
- package/dist/logger/internal.js.map +1 -0
- package/dist/logger/logger.js +2 -0
- package/dist/logger/logger.js.map +1 -0
- package/dist/logger/user.js +7 -0
- package/dist/logger/user.js.map +1 -0
- package/dist/logger/util.js +77 -0
- package/dist/logger/util.js.map +1 -0
- package/dist/otel/config.js +23 -0
- package/dist/otel/config.js.map +1 -0
- package/dist/otel/console.js +52 -0
- package/dist/otel/console.js.map +1 -0
- package/dist/otel/exporters/index.js +4 -0
- package/dist/otel/exporters/index.js.map +1 -0
- package/dist/otel/exporters/jsonl-log-exporter.js +103 -0
- package/dist/otel/exporters/jsonl-log-exporter.js.map +1 -0
- package/dist/otel/exporters/jsonl-metric-exporter.js +104 -0
- package/dist/otel/exporters/jsonl-metric-exporter.js.map +1 -0
- package/dist/otel/exporters/jsonl-trace-exporter.js +111 -0
- package/dist/otel/exporters/jsonl-trace-exporter.js.map +1 -0
- package/dist/otel/fetch.js +81 -0
- package/dist/otel/fetch.js.map +1 -0
- package/dist/otel/http.js +44 -0
- package/dist/otel/http.js.map +1 -0
- package/dist/otel/logger.js +278 -0
- package/dist/otel/logger.js.map +1 -0
- package/dist/otel/otel.js +233 -0
- package/dist/otel/otel.js.map +1 -0
- package/dist/router.js +350 -0
- package/dist/router.js.map +1 -0
- package/dist/services/evalrun/composite.js +26 -0
- package/dist/services/evalrun/composite.js.map +1 -0
- package/dist/services/evalrun/http.js +74 -0
- package/dist/services/evalrun/http.js.map +1 -0
- package/dist/services/evalrun/index.js +5 -0
- package/dist/services/evalrun/index.js.map +1 -0
- package/dist/services/evalrun/json.js +38 -0
- package/dist/services/evalrun/json.js.map +1 -0
- package/dist/services/evalrun/local.js +22 -0
- package/dist/services/evalrun/local.js.map +1 -0
- package/dist/services/local/_db.js +144 -0
- package/dist/services/local/_db.js.map +1 -0
- package/dist/services/local/_router.js +60 -0
- package/dist/services/local/_router.js.map +1 -0
- package/dist/services/local/_util.js +42 -0
- package/dist/services/local/_util.js.map +1 -0
- package/dist/services/local/index.js +8 -0
- package/dist/services/local/index.js.map +1 -0
- package/dist/services/local/keyvalue.js +114 -0
- package/dist/services/local/keyvalue.js.map +1 -0
- package/dist/services/local/objectstore.js +117 -0
- package/dist/services/local/objectstore.js.map +1 -0
- package/dist/services/local/stream.js +218 -0
- package/dist/services/local/stream.js.map +1 -0
- package/dist/services/local/vector.js +183 -0
- package/dist/services/local/vector.js.map +1 -0
- package/dist/services/session/composite.js +26 -0
- package/dist/services/session/composite.js.map +1 -0
- package/dist/services/session/http.js +42 -0
- package/dist/services/session/http.js.map +1 -0
- package/dist/services/session/index.js +5 -0
- package/dist/services/session/index.js.map +1 -0
- package/dist/services/session/json.js +35 -0
- package/dist/services/session/json.js.map +1 -0
- package/dist/services/session/local.js +22 -0
- package/dist/services/session/local.js.map +1 -0
- package/dist/session.js +199 -0
- package/dist/session.js.map +1 -0
- package/dist/workbench.js +38 -0
- package/dist/workbench.js.map +1 -0
- package/package.json +5 -5
- package/src/_context.ts +34 -13
- package/src/agent.ts +76 -40
- package/src/app.ts +6 -1
- package/src/eval.ts +1 -1
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import opentelemetry, { metrics, propagation } from '@opentelemetry/api';
|
|
2
|
+
import * as LogsAPI from '@opentelemetry/api-logs';
|
|
3
|
+
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
|
|
4
|
+
import { CompositePropagator, W3CBaggagePropagator, W3CTraceContextPropagator, } from '@opentelemetry/core';
|
|
5
|
+
import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';
|
|
6
|
+
import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
|
|
7
|
+
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
|
|
8
|
+
import { HostMetrics } from '@opentelemetry/host-metrics';
|
|
9
|
+
import { CompressionAlgorithm } from '@opentelemetry/otlp-exporter-base';
|
|
10
|
+
import { resourceFromAttributes } from '@opentelemetry/resources';
|
|
11
|
+
import { BatchLogRecordProcessor, LoggerProvider, SimpleLogRecordProcessor, } from '@opentelemetry/sdk-logs';
|
|
12
|
+
import { MeterProvider, PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';
|
|
13
|
+
import { NodeSDK } from '@opentelemetry/sdk-node';
|
|
14
|
+
import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';
|
|
15
|
+
import { initialize } from '@traceloop/node-server-sdk';
|
|
16
|
+
import { ConsoleLogRecordExporter } from './console';
|
|
17
|
+
import { instrumentFetch } from './fetch';
|
|
18
|
+
import { createLogger, patchConsole } from './logger';
|
|
19
|
+
import { getSDKVersion, isAuthenticated } from '../_config';
|
|
20
|
+
import { JSONLLogExporter, JSONLTraceExporter, JSONLMetricExporter } from './exporters';
|
|
21
|
+
const devmodeExportInterval = 1_000; // 1 second
|
|
22
|
+
const productionExportInterval = 10_000; // 10 seconds
|
|
23
|
+
export const createResource = (config) => {
|
|
24
|
+
const { name, version, orgId, projectId, deploymentId, environment, devmode, cliVersion } = config;
|
|
25
|
+
const sdkVersion = getSDKVersion();
|
|
26
|
+
return resourceFromAttributes({
|
|
27
|
+
[ATTR_SERVICE_NAME]: name,
|
|
28
|
+
[ATTR_SERVICE_VERSION]: version,
|
|
29
|
+
'@agentuity/orgId': orgId ?? 'unknown',
|
|
30
|
+
'@agentuity/projectId': projectId ?? 'unknown',
|
|
31
|
+
'@agentuity/deploymentId': deploymentId ?? 'unknown',
|
|
32
|
+
'@agentuity/env': environment,
|
|
33
|
+
'@agentuity/devmode': devmode,
|
|
34
|
+
'@agentuity/sdkVersion': sdkVersion ?? 'unknown',
|
|
35
|
+
'@agentuity/cliVersion': cliVersion ?? 'unknown',
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
export const createAgentuityLoggerProvider = ({ url, headers, resource, logLevel, jsonlBasePath, }) => {
|
|
39
|
+
let processor;
|
|
40
|
+
let exporter;
|
|
41
|
+
if (jsonlBasePath) {
|
|
42
|
+
exporter = new JSONLLogExporter(jsonlBasePath);
|
|
43
|
+
processor = new BatchLogRecordProcessor(exporter);
|
|
44
|
+
}
|
|
45
|
+
else if (url) {
|
|
46
|
+
// Original OTLP export behavior
|
|
47
|
+
const otlpExporter = new OTLPLogExporter({
|
|
48
|
+
url: `${url}/v1/logs`,
|
|
49
|
+
headers,
|
|
50
|
+
compression: CompressionAlgorithm.GZIP,
|
|
51
|
+
timeoutMillis: 10_000,
|
|
52
|
+
});
|
|
53
|
+
exporter = otlpExporter;
|
|
54
|
+
processor = new BatchLogRecordProcessor(otlpExporter);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
processor = new SimpleLogRecordProcessor(new ConsoleLogRecordExporter(logLevel));
|
|
58
|
+
}
|
|
59
|
+
const provider = new LoggerProvider({
|
|
60
|
+
resource,
|
|
61
|
+
processors: [processor],
|
|
62
|
+
});
|
|
63
|
+
LogsAPI.logs.setGlobalLoggerProvider(provider);
|
|
64
|
+
return {
|
|
65
|
+
processor,
|
|
66
|
+
provider,
|
|
67
|
+
exporter,
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
export const createUserLoggerProvider = ({ url, headers, resource, }) => {
|
|
71
|
+
const exporter = new OTLPLogExporter({
|
|
72
|
+
url: `${url}/v1/logs`,
|
|
73
|
+
headers,
|
|
74
|
+
compression: CompressionAlgorithm.GZIP,
|
|
75
|
+
timeoutMillis: 10_000,
|
|
76
|
+
});
|
|
77
|
+
const processor = new BatchLogRecordProcessor(exporter);
|
|
78
|
+
const provider = new LoggerProvider({
|
|
79
|
+
resource,
|
|
80
|
+
processors: [processor],
|
|
81
|
+
});
|
|
82
|
+
return {
|
|
83
|
+
provider,
|
|
84
|
+
exporter,
|
|
85
|
+
processor,
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Registers and initializes OpenTelemetry with the specified configuration
|
|
90
|
+
*
|
|
91
|
+
* @param config - The configuration for OpenTelemetry
|
|
92
|
+
* @returns An object containing the tracer, logger, and shutdown function
|
|
93
|
+
*/
|
|
94
|
+
export function registerOtel(config) {
|
|
95
|
+
const { url, name, version, bearerToken, environment = 'development', orgId, projectId, deploymentId, devmode = false, logLevel = 'warn', jsonlBasePath = undefined, } = config;
|
|
96
|
+
let headers;
|
|
97
|
+
if (bearerToken) {
|
|
98
|
+
headers = {};
|
|
99
|
+
headers.Authorization = `Bearer ${bearerToken}`;
|
|
100
|
+
}
|
|
101
|
+
const resource = createResource(config);
|
|
102
|
+
const loggerProvider = createAgentuityLoggerProvider({
|
|
103
|
+
url,
|
|
104
|
+
headers,
|
|
105
|
+
resource,
|
|
106
|
+
logLevel,
|
|
107
|
+
jsonlBasePath,
|
|
108
|
+
});
|
|
109
|
+
const attrs = {
|
|
110
|
+
'@agentuity/orgId': orgId ?? 'unknown',
|
|
111
|
+
'@agentuity/projectId': projectId ?? 'unknown',
|
|
112
|
+
'@agentuity/deploymentId': deploymentId ?? 'unknown',
|
|
113
|
+
'@agentuity/env': environment,
|
|
114
|
+
'@agentuity/devmode': devmode,
|
|
115
|
+
'@agentuity/language': 'javascript',
|
|
116
|
+
};
|
|
117
|
+
const logger = createLogger(!!url, attrs, logLevel);
|
|
118
|
+
// must do this after we have created the logger
|
|
119
|
+
patchConsole(!!url, attrs, logLevel);
|
|
120
|
+
const traceExporter = url
|
|
121
|
+
? jsonlBasePath
|
|
122
|
+
? new JSONLTraceExporter(jsonlBasePath)
|
|
123
|
+
: new OTLPTraceExporter({
|
|
124
|
+
url: `${url}/v1/traces`,
|
|
125
|
+
headers,
|
|
126
|
+
keepAlive: true,
|
|
127
|
+
})
|
|
128
|
+
: undefined;
|
|
129
|
+
const metricExporter = url
|
|
130
|
+
? jsonlBasePath
|
|
131
|
+
? new JSONLMetricExporter(jsonlBasePath)
|
|
132
|
+
: new OTLPMetricExporter({
|
|
133
|
+
url: `${url}/v1/metrics`,
|
|
134
|
+
headers,
|
|
135
|
+
keepAlive: true,
|
|
136
|
+
})
|
|
137
|
+
: undefined;
|
|
138
|
+
// Create a separate metric reader for the NodeSDK
|
|
139
|
+
const sdkMetricReader = url && metricExporter
|
|
140
|
+
? new PeriodicExportingMetricReader({
|
|
141
|
+
exporter: metricExporter,
|
|
142
|
+
exportTimeoutMillis: devmode ? devmodeExportInterval : productionExportInterval,
|
|
143
|
+
exportIntervalMillis: devmode ? devmodeExportInterval : productionExportInterval,
|
|
144
|
+
})
|
|
145
|
+
: undefined;
|
|
146
|
+
// Create a separate metric reader for the MeterProvider
|
|
147
|
+
const hostMetricReader = url && metricExporter
|
|
148
|
+
? new PeriodicExportingMetricReader({
|
|
149
|
+
exporter: metricExporter,
|
|
150
|
+
exportTimeoutMillis: devmode ? devmodeExportInterval : productionExportInterval,
|
|
151
|
+
exportIntervalMillis: devmode ? devmodeExportInterval : productionExportInterval,
|
|
152
|
+
})
|
|
153
|
+
: undefined;
|
|
154
|
+
const meterProvider = hostMetricReader
|
|
155
|
+
? new MeterProvider({
|
|
156
|
+
resource,
|
|
157
|
+
readers: [hostMetricReader],
|
|
158
|
+
})
|
|
159
|
+
: undefined;
|
|
160
|
+
if (meterProvider) {
|
|
161
|
+
metrics.setGlobalMeterProvider(meterProvider);
|
|
162
|
+
}
|
|
163
|
+
const hostMetrics = meterProvider ? new HostMetrics({ meterProvider }) : undefined;
|
|
164
|
+
let running = false;
|
|
165
|
+
let instrumentationSDK;
|
|
166
|
+
if (url) {
|
|
167
|
+
const propagator = new CompositePropagator({
|
|
168
|
+
propagators: [new W3CTraceContextPropagator(), new W3CBaggagePropagator()],
|
|
169
|
+
});
|
|
170
|
+
propagation.setGlobalPropagator(propagator);
|
|
171
|
+
instrumentFetch();
|
|
172
|
+
instrumentationSDK = new NodeSDK({
|
|
173
|
+
logRecordProcessor: loggerProvider.processor,
|
|
174
|
+
traceExporter,
|
|
175
|
+
metricReader: sdkMetricReader,
|
|
176
|
+
instrumentations: [getNodeAutoInstrumentations()],
|
|
177
|
+
resource,
|
|
178
|
+
textMapPropagator: propagator,
|
|
179
|
+
spanProcessors: config.spanProcessors,
|
|
180
|
+
});
|
|
181
|
+
instrumentationSDK.start();
|
|
182
|
+
hostMetrics?.start();
|
|
183
|
+
try {
|
|
184
|
+
const projectName = config.projectId || '';
|
|
185
|
+
const orgId = config.orgId || '';
|
|
186
|
+
const appName = `${orgId}:${projectName}`;
|
|
187
|
+
const traceloopHeaders = {};
|
|
188
|
+
if (bearerToken) {
|
|
189
|
+
traceloopHeaders.Authorization = `Bearer ${bearerToken}`;
|
|
190
|
+
}
|
|
191
|
+
initialize({
|
|
192
|
+
appName,
|
|
193
|
+
baseUrl: url,
|
|
194
|
+
headers: traceloopHeaders,
|
|
195
|
+
disableBatch: devmode,
|
|
196
|
+
logLevel: 'error',
|
|
197
|
+
tracingEnabled: false, // Disable traceloop's own tracing (equivalent to Python's telemetryEnabled: false)
|
|
198
|
+
// Note: JavaScript SDK doesn't support resourceAttributes like Python
|
|
199
|
+
});
|
|
200
|
+
logger.debug(`Telemetry initialized with app_name: ${appName}`);
|
|
201
|
+
logger.debug('Telemetry configured successfully');
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
logger.warn('Telemetry not available, skipping automatic instrumentation', {
|
|
205
|
+
error: error instanceof Error ? error.message : String(error),
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
running = true;
|
|
209
|
+
}
|
|
210
|
+
const tracer = opentelemetry.trace.getTracer(name, version);
|
|
211
|
+
const meter = metrics.getMeter(name, version);
|
|
212
|
+
const shutdown = async () => {
|
|
213
|
+
if (running) {
|
|
214
|
+
running = false;
|
|
215
|
+
logger.debug('shutting down OpenTelemetry');
|
|
216
|
+
await loggerProvider.provider
|
|
217
|
+
.forceFlush()
|
|
218
|
+
.catch((e) => logger.warn('error in forceFlush of otel provider. %s', e));
|
|
219
|
+
await loggerProvider.exporter
|
|
220
|
+
?.shutdown()
|
|
221
|
+
.catch((e) => !devmode && logger.warn('error in shutdown of otel exporter. %s', e));
|
|
222
|
+
await instrumentationSDK
|
|
223
|
+
?.shutdown()
|
|
224
|
+
.catch((e) => !devmode && logger.warn('error in shutdown of otel instrumentation. %s', e));
|
|
225
|
+
logger.debug('shut down OpenTelemetry');
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
if (url && isAuthenticated()) {
|
|
229
|
+
logger.debug('connected to Agentuity Agent Cloud');
|
|
230
|
+
}
|
|
231
|
+
return { tracer, meter, logger, shutdown };
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=otel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"otel.js","sourceRoot":"","sources":["../../src/otel/otel.ts"],"names":[],"mappings":"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"}
|
package/dist/router.js
ADDED
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-empty-object-type */
|
|
3
|
+
import { Hono } from 'hono';
|
|
4
|
+
import { stream as honoStream, streamSSE as honoStreamSSE } from 'hono/streaming';
|
|
5
|
+
import { upgradeWebSocket as honoUpgradeWebSocket } from 'hono/bun';
|
|
6
|
+
import { hash, returnResponse } from './_util';
|
|
7
|
+
import { getAgentAsyncLocalStorage } from './_context';
|
|
8
|
+
import { parseEmail } from './io/email';
|
|
9
|
+
export const createRouter = () => {
|
|
10
|
+
const router = new Hono();
|
|
11
|
+
// tslint:disable-next-line:no-any no-unused-variable
|
|
12
|
+
// biome-ignore lint:no-any
|
|
13
|
+
const _router = router;
|
|
14
|
+
for (const method of ['get', 'put', 'post', 'delete', 'options', 'patch']) {
|
|
15
|
+
const _originalInvoker = _router[method].bind(router);
|
|
16
|
+
_router[method] = (path, ...args) => {
|
|
17
|
+
if (args.length === 1) {
|
|
18
|
+
const arg = args[0];
|
|
19
|
+
// Check if it's a middleware (not our agent handler)
|
|
20
|
+
if (typeof arg === 'function' && arg.length === 2) {
|
|
21
|
+
// Middleware only: (path, middleware)
|
|
22
|
+
return _originalInvoker(path, arg);
|
|
23
|
+
}
|
|
24
|
+
// 2-arg: (path, handler)
|
|
25
|
+
const handler = arg;
|
|
26
|
+
const wrapper = async (c) => {
|
|
27
|
+
let result = handler(c);
|
|
28
|
+
if (result instanceof Promise)
|
|
29
|
+
result = await result;
|
|
30
|
+
// If handler returns a Response (e.g., websocket upgrade), return it unchanged
|
|
31
|
+
if (result instanceof Response)
|
|
32
|
+
return result;
|
|
33
|
+
return returnResponse(c, result);
|
|
34
|
+
};
|
|
35
|
+
return _originalInvoker(path, wrapper);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
// 3-arg: (path, middleware, handler)
|
|
39
|
+
const middleware = args[0];
|
|
40
|
+
const handler = args[1];
|
|
41
|
+
const wrapper = async (c) => {
|
|
42
|
+
let result = handler(c);
|
|
43
|
+
if (result instanceof Promise)
|
|
44
|
+
result = await result;
|
|
45
|
+
// If handler returns a Response (e.g., websocket upgrade), return it unchanged
|
|
46
|
+
if (result instanceof Response) {
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
return returnResponse(c, result);
|
|
50
|
+
};
|
|
51
|
+
return _originalInvoker(path, middleware, wrapper);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
// shim in special routes
|
|
56
|
+
_router.email = (address, ...args) => {
|
|
57
|
+
let middleware;
|
|
58
|
+
let handler;
|
|
59
|
+
if (args.length === 1) {
|
|
60
|
+
handler = args[0];
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
middleware = args[0];
|
|
64
|
+
handler = args[1];
|
|
65
|
+
}
|
|
66
|
+
const id = hash(address);
|
|
67
|
+
const path = `/${id}`;
|
|
68
|
+
// registerEmailHandler(address)
|
|
69
|
+
const wrapper = async (c) => {
|
|
70
|
+
const contentType = (c.req.header('content-type') || '').trim().toLowerCase();
|
|
71
|
+
if (!contentType.includes('message/rfc822')) {
|
|
72
|
+
return c.text('Bad Request: Content-Type must be message/rfc822', 400);
|
|
73
|
+
}
|
|
74
|
+
const arrayBuffer = await c.req.arrayBuffer();
|
|
75
|
+
const buffer = Buffer.from(arrayBuffer);
|
|
76
|
+
const email = await parseEmail(buffer);
|
|
77
|
+
let result = handler(email, c);
|
|
78
|
+
if (result instanceof Promise)
|
|
79
|
+
result = await result;
|
|
80
|
+
if (result === undefined) {
|
|
81
|
+
return c.text('OK', 200);
|
|
82
|
+
}
|
|
83
|
+
return returnResponse(c, result);
|
|
84
|
+
};
|
|
85
|
+
if (middleware) {
|
|
86
|
+
return router.post(path, middleware, wrapper);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
return router.post(path, wrapper);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
_router.sms = ({ number }, handler) => {
|
|
93
|
+
const id = hash(number);
|
|
94
|
+
const path = `/${id}`;
|
|
95
|
+
// registerSMSHandler(number)
|
|
96
|
+
const wrapper = async (c) => {
|
|
97
|
+
let result = handler(c);
|
|
98
|
+
if (result instanceof Promise)
|
|
99
|
+
result = await result;
|
|
100
|
+
return returnResponse(c, result);
|
|
101
|
+
};
|
|
102
|
+
return router.post(path, wrapper);
|
|
103
|
+
};
|
|
104
|
+
_router.cron = (schedule, handler) => {
|
|
105
|
+
const id = hash(schedule);
|
|
106
|
+
const path = `/${id}`;
|
|
107
|
+
// registerCronHandler(schedule)
|
|
108
|
+
const wrapper = async (c) => {
|
|
109
|
+
let result = handler(c);
|
|
110
|
+
if (result instanceof Promise)
|
|
111
|
+
result = await result;
|
|
112
|
+
return returnResponse(c, result);
|
|
113
|
+
};
|
|
114
|
+
return router.post(path, wrapper);
|
|
115
|
+
};
|
|
116
|
+
_router.stream = (path, ...args) => {
|
|
117
|
+
let middleware;
|
|
118
|
+
let handler;
|
|
119
|
+
if (args.length === 1) {
|
|
120
|
+
handler = args[0];
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
middleware = args[0];
|
|
124
|
+
handler = args[1];
|
|
125
|
+
}
|
|
126
|
+
const wrapper = (c) => {
|
|
127
|
+
// Capture the AgentContext from the request
|
|
128
|
+
const asyncLocalStorage = getAgentAsyncLocalStorage();
|
|
129
|
+
const capturedContext = asyncLocalStorage.getStore();
|
|
130
|
+
return honoStream(c, async (s) => {
|
|
131
|
+
const runInContext = async () => {
|
|
132
|
+
try {
|
|
133
|
+
let streamResult = handler(c);
|
|
134
|
+
if (streamResult instanceof Promise)
|
|
135
|
+
streamResult = await streamResult;
|
|
136
|
+
await s.pipe(streamResult);
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
c.var.logger.error('Stream error:', err);
|
|
140
|
+
throw err;
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
if (capturedContext) {
|
|
144
|
+
await asyncLocalStorage.run(capturedContext, runInContext);
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
await runInContext();
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
};
|
|
151
|
+
if (middleware) {
|
|
152
|
+
return router.get(path, middleware, wrapper);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
return router.get(path, wrapper);
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
_router.websocket = (path, ...args) => {
|
|
159
|
+
let middleware;
|
|
160
|
+
let handler;
|
|
161
|
+
if (args.length === 1) {
|
|
162
|
+
handler = args[0];
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
middleware = args[0];
|
|
166
|
+
handler = args[1];
|
|
167
|
+
}
|
|
168
|
+
const wrapper = honoUpgradeWebSocket((c) => {
|
|
169
|
+
let openHandler;
|
|
170
|
+
let messageHandler;
|
|
171
|
+
let closeHandler;
|
|
172
|
+
let initialized = false;
|
|
173
|
+
// Capture the AgentContext from the upgrade request
|
|
174
|
+
const asyncLocalStorage = getAgentAsyncLocalStorage();
|
|
175
|
+
const capturedContext = asyncLocalStorage.getStore();
|
|
176
|
+
const wsConnection = {
|
|
177
|
+
onOpen: (h) => {
|
|
178
|
+
openHandler = h;
|
|
179
|
+
},
|
|
180
|
+
onMessage: (h) => {
|
|
181
|
+
messageHandler = h;
|
|
182
|
+
},
|
|
183
|
+
onClose: (h) => {
|
|
184
|
+
closeHandler = h;
|
|
185
|
+
},
|
|
186
|
+
send: (_data) => {
|
|
187
|
+
// This will be bound to the actual ws in the handlers
|
|
188
|
+
},
|
|
189
|
+
};
|
|
190
|
+
const setupResult = handler(c);
|
|
191
|
+
const setupFn = typeof setupResult === 'function' ? setupResult : null;
|
|
192
|
+
// Call setup IMMEDIATELY during upgrade, not in onOpen
|
|
193
|
+
// This allows the user's code to register handlers before events fire
|
|
194
|
+
if (setupFn) {
|
|
195
|
+
if (capturedContext) {
|
|
196
|
+
asyncLocalStorage.run(capturedContext, () => setupFn(wsConnection));
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
setupFn(wsConnection);
|
|
200
|
+
}
|
|
201
|
+
initialized = true;
|
|
202
|
+
}
|
|
203
|
+
return {
|
|
204
|
+
onOpen: async (event, ws) => {
|
|
205
|
+
try {
|
|
206
|
+
// Bind the real ws.send now that we have the actual websocket
|
|
207
|
+
wsConnection.send = (data) => ws.send(data);
|
|
208
|
+
if (openHandler) {
|
|
209
|
+
// Run handler in captured context
|
|
210
|
+
const handler = openHandler;
|
|
211
|
+
if (capturedContext) {
|
|
212
|
+
await asyncLocalStorage.run(capturedContext, () => handler(event));
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
await handler(event);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
catch (err) {
|
|
220
|
+
c.var.logger?.error('WebSocket onOpen error:', err);
|
|
221
|
+
throw err;
|
|
222
|
+
}
|
|
223
|
+
},
|
|
224
|
+
onMessage: async (event, ws) => {
|
|
225
|
+
try {
|
|
226
|
+
// Lazy initialization fallback (shouldn't normally happen)
|
|
227
|
+
if (!initialized && setupFn) {
|
|
228
|
+
wsConnection.send = (data) => ws.send(data);
|
|
229
|
+
if (capturedContext) {
|
|
230
|
+
await asyncLocalStorage.run(capturedContext, async () => {
|
|
231
|
+
const result = setupFn(wsConnection);
|
|
232
|
+
if (result instanceof Promise)
|
|
233
|
+
await result;
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
const result = setupFn(wsConnection);
|
|
238
|
+
if (result instanceof Promise)
|
|
239
|
+
await result;
|
|
240
|
+
}
|
|
241
|
+
initialized = true;
|
|
242
|
+
}
|
|
243
|
+
if (messageHandler) {
|
|
244
|
+
// Run handler in captured context
|
|
245
|
+
const handler = messageHandler;
|
|
246
|
+
if (capturedContext) {
|
|
247
|
+
await asyncLocalStorage.run(capturedContext, () => handler(event));
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
await handler(event);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
catch (err) {
|
|
255
|
+
c.var.logger?.error('WebSocket onMessage error:', err);
|
|
256
|
+
throw err;
|
|
257
|
+
}
|
|
258
|
+
},
|
|
259
|
+
onClose: async (event, _ws) => {
|
|
260
|
+
try {
|
|
261
|
+
if (closeHandler) {
|
|
262
|
+
// Run handler in captured context
|
|
263
|
+
const handler = closeHandler;
|
|
264
|
+
if (capturedContext) {
|
|
265
|
+
await asyncLocalStorage.run(capturedContext, () => handler(event));
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
await handler(event);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
catch (err) {
|
|
273
|
+
c.var.logger?.error('WebSocket onClose error:', err);
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
};
|
|
277
|
+
});
|
|
278
|
+
// wrapper is what upgradeWebSocket(...) returned. Force arity=2 so our get shim
|
|
279
|
+
// recognizes it as middleware and does not wrap/convert undefined -> 200.
|
|
280
|
+
const wsMiddleware = (c, next) => wrapper(c, next);
|
|
281
|
+
if (middleware) {
|
|
282
|
+
// Compose into a single middleware to avoid the 3-arg route which treats the
|
|
283
|
+
// second function as a handler and wraps it.
|
|
284
|
+
const composed = async (c, next) => {
|
|
285
|
+
return middleware(c, async () => {
|
|
286
|
+
await wsMiddleware(c, next);
|
|
287
|
+
});
|
|
288
|
+
};
|
|
289
|
+
return router.get(path, composed);
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
return router.get(path, wsMiddleware);
|
|
293
|
+
}
|
|
294
|
+
};
|
|
295
|
+
_router.sse = (path, ...args) => {
|
|
296
|
+
let middleware;
|
|
297
|
+
let handler;
|
|
298
|
+
if (args.length === 1) {
|
|
299
|
+
handler = args[0];
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
middleware = args[0];
|
|
303
|
+
handler = args[1];
|
|
304
|
+
}
|
|
305
|
+
const wrapper = (c) => {
|
|
306
|
+
// Capture the AgentContext from the request
|
|
307
|
+
const asyncLocalStorage = getAgentAsyncLocalStorage();
|
|
308
|
+
const capturedContext = asyncLocalStorage.getStore();
|
|
309
|
+
return honoStreamSSE(c, async (stream) => {
|
|
310
|
+
// Wrap the stream to intercept write() calls
|
|
311
|
+
const wrappedStream = {
|
|
312
|
+
...stream,
|
|
313
|
+
write: async (data) => {
|
|
314
|
+
// Convert simple write to writeSSE format
|
|
315
|
+
if (typeof data === 'string' ||
|
|
316
|
+
typeof data === 'number' ||
|
|
317
|
+
typeof data === 'boolean') {
|
|
318
|
+
return stream.writeSSE({ data: String(data) });
|
|
319
|
+
}
|
|
320
|
+
else if (typeof data === 'object' && data !== null) {
|
|
321
|
+
// If it's already an SSE message object, pass it through
|
|
322
|
+
return stream.writeSSE(data);
|
|
323
|
+
}
|
|
324
|
+
return stream.writeSSE({ data: String(data) });
|
|
325
|
+
},
|
|
326
|
+
writeSSE: stream.writeSSE.bind(stream),
|
|
327
|
+
onAbort: stream.onAbort.bind(stream),
|
|
328
|
+
close: stream.close?.bind(stream),
|
|
329
|
+
};
|
|
330
|
+
const runInContext = async () => {
|
|
331
|
+
await handler(c)(wrappedStream);
|
|
332
|
+
};
|
|
333
|
+
if (capturedContext) {
|
|
334
|
+
await asyncLocalStorage.run(capturedContext, runInContext);
|
|
335
|
+
}
|
|
336
|
+
else {
|
|
337
|
+
await runInContext();
|
|
338
|
+
}
|
|
339
|
+
});
|
|
340
|
+
};
|
|
341
|
+
if (middleware) {
|
|
342
|
+
return router.get(path, middleware, wrapper);
|
|
343
|
+
}
|
|
344
|
+
else {
|
|
345
|
+
return router.get(path, wrapper);
|
|
346
|
+
}
|
|
347
|
+
};
|
|
348
|
+
return router;
|
|
349
|
+
};
|
|
350
|
+
//# sourceMappingURL=router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An implementation of the EvalRunEventProvider which wraps multiple providers
|
|
3
|
+
*/
|
|
4
|
+
export class CompositeEvalRunEventProvider {
|
|
5
|
+
providers;
|
|
6
|
+
constructor(...providers) {
|
|
7
|
+
this.providers = providers;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* called when the eval run starts
|
|
11
|
+
*
|
|
12
|
+
* @param event EvalRunStartEvent
|
|
13
|
+
*/
|
|
14
|
+
async start(event) {
|
|
15
|
+
await Promise.allSettled(this.providers.map((provider) => provider.start(event)));
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* called when the eval run completes
|
|
19
|
+
*
|
|
20
|
+
* @param event EvalRunCompleteEvent
|
|
21
|
+
*/
|
|
22
|
+
async complete(event) {
|
|
23
|
+
await Promise.allSettled(this.providers.map((provider) => provider.complete(event)));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=composite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composite.js","sourceRoot":"","sources":["../../../src/services/evalrun/composite.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,OAAO,6BAA6B;IACjC,SAAS,CAAyB;IAE1C,YAAY,GAAG,SAAiC;QAC/C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAC,KAAwB;QACnC,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnF,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAQ,CAAC,KAA2B;QACzC,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtF,CAAC;CACD"}
|