@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/otel/config.ts
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import type { LogLevel } from '@agentuity/core';
|
|
2
|
-
import type { SpanProcessor } from '@opentelemetry/sdk-trace-base';
|
|
3
|
-
import { getServiceUrls } from '@agentuity/server';
|
|
4
|
-
import * as runtimeConfig from '../_config';
|
|
5
|
-
import type { OtelConfig, OtelResponse } from './otel';
|
|
6
|
-
import { registerOtel } from './otel';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Configuration for user provided OpenTelemetry
|
|
10
|
-
*/
|
|
11
|
-
export interface CustomizedOtelConfig {
|
|
12
|
-
endpoint: string;
|
|
13
|
-
// only supports http/json for now
|
|
14
|
-
// protocol: 'grpc' | 'http/protobuf' | 'http/json';
|
|
15
|
-
serviceName: string;
|
|
16
|
-
resourceAttributes: Record<string, string>;
|
|
17
|
-
headers: Record<string, string>;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
interface OtelRegisterConfig {
|
|
21
|
-
processors?: SpanProcessor[];
|
|
22
|
-
logLevel?: LogLevel;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export function register(registerConfig: OtelRegisterConfig): OtelResponse {
|
|
26
|
-
const region = process.env.AGENTUITY_REGION ?? 'usc';
|
|
27
|
-
const serviceUrls = getServiceUrls(region);
|
|
28
|
-
const url = serviceUrls.otel;
|
|
29
|
-
const bearerToken = process.env.AGENTUITY_OTLP_BEARER_TOKEN ?? process.env.AGENTUITY_SDK_KEY;
|
|
30
|
-
const config: OtelConfig = {
|
|
31
|
-
spanProcessors: registerConfig.processors,
|
|
32
|
-
name: runtimeConfig.getAppName(),
|
|
33
|
-
version: runtimeConfig.getAppVersion(),
|
|
34
|
-
cliVersion: runtimeConfig.getCLIVersion(),
|
|
35
|
-
devmode: runtimeConfig.isDevMode(),
|
|
36
|
-
orgId: runtimeConfig.getOrganizationId(),
|
|
37
|
-
projectId: runtimeConfig.getProjectId(),
|
|
38
|
-
deploymentId: runtimeConfig.getDeploymentId(),
|
|
39
|
-
environment: runtimeConfig.getEnvironment(),
|
|
40
|
-
logLevel: registerConfig.logLevel,
|
|
41
|
-
jsonlBasePath: process.env.AGENTUITY_CLOUD_EXPORT_DIR,
|
|
42
|
-
bearerToken,
|
|
43
|
-
url,
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
return registerOtel(config);
|
|
47
|
-
}
|
package/src/otel/console.ts
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { SeverityNumber } from '@opentelemetry/api-logs';
|
|
2
|
-
import { type ExportResult, ExportResultCode } from '@opentelemetry/core';
|
|
3
|
-
import type { LogRecordExporter, ReadableLogRecord } from '@opentelemetry/sdk-logs';
|
|
4
|
-
import type { SpanExporter, ReadableSpan } from '@opentelemetry/sdk-trace-base';
|
|
5
|
-
import { __originalConsole } from './logger';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Console implementation of the LogRecordExporter interface
|
|
9
|
-
* Uses __originalConsole to avoid infinite loop when console is patched
|
|
10
|
-
*/
|
|
11
|
-
export class ConsoleLogRecordExporter implements LogRecordExporter {
|
|
12
|
-
private dumpRecords = false;
|
|
13
|
-
|
|
14
|
-
constructor(dumpRecords: boolean) {
|
|
15
|
-
this.dumpRecords = dumpRecords;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Exports log records to the console
|
|
19
|
-
*
|
|
20
|
-
* @param logs - The log records to export
|
|
21
|
-
* @param resultCallback - Callback function to report the export result
|
|
22
|
-
*/
|
|
23
|
-
export(logs: ReadableLogRecord[], resultCallback: (result: ExportResult) => void): void {
|
|
24
|
-
for (const log of logs) {
|
|
25
|
-
if (this.dumpRecords) {
|
|
26
|
-
__originalConsole.log('[LOG]', {
|
|
27
|
-
body: log.body,
|
|
28
|
-
severityNumber: log.severityNumber,
|
|
29
|
-
severityText: log.severityText,
|
|
30
|
-
timestamp: log.hrTime,
|
|
31
|
-
attributes: log.attributes,
|
|
32
|
-
resource: log.resource.attributes,
|
|
33
|
-
});
|
|
34
|
-
} else {
|
|
35
|
-
const severity = log.severityNumber ? SeverityNumber[log.severityNumber] : 'INFO';
|
|
36
|
-
const msg = `[${severity}] ${log.body}`;
|
|
37
|
-
switch (log.severityNumber) {
|
|
38
|
-
case SeverityNumber.DEBUG:
|
|
39
|
-
__originalConsole.debug(msg);
|
|
40
|
-
break;
|
|
41
|
-
case SeverityNumber.INFO:
|
|
42
|
-
__originalConsole.info(msg);
|
|
43
|
-
break;
|
|
44
|
-
case SeverityNumber.WARN:
|
|
45
|
-
__originalConsole.warn(msg);
|
|
46
|
-
break;
|
|
47
|
-
case SeverityNumber.ERROR:
|
|
48
|
-
__originalConsole.error(msg);
|
|
49
|
-
break;
|
|
50
|
-
default:
|
|
51
|
-
__originalConsole.log(msg);
|
|
52
|
-
break;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
resultCallback({ code: ExportResultCode.SUCCESS });
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Shuts down the exporter
|
|
61
|
-
*
|
|
62
|
-
* @returns A promise that resolves when shutdown is complete
|
|
63
|
-
*/
|
|
64
|
-
shutdown(): Promise<void> {
|
|
65
|
-
return Promise.resolve();
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Console implementation of the SpanExporter interface
|
|
71
|
-
* Uses __originalConsole to avoid infinite loop when console is patched
|
|
72
|
-
*/
|
|
73
|
-
export class DebugSpanExporter implements SpanExporter {
|
|
74
|
-
export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void {
|
|
75
|
-
for (const span of spans) {
|
|
76
|
-
__originalConsole.log('[SPAN]', {
|
|
77
|
-
name: span.name,
|
|
78
|
-
traceId: span.spanContext().traceId,
|
|
79
|
-
spanId: span.spanContext().spanId,
|
|
80
|
-
duration: span.duration,
|
|
81
|
-
status: span.status,
|
|
82
|
-
attributes: span.attributes,
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
resultCallback({ code: ExportResultCode.SUCCESS });
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
shutdown(): Promise<void> {
|
|
89
|
-
return Promise.resolve();
|
|
90
|
-
}
|
|
91
|
-
}
|
|
@@ -1,217 +0,0 @@
|
|
|
1
|
-
# JSONL Exporters
|
|
2
|
-
|
|
3
|
-
Custom OpenTelemetry exporters that write telemetry data (logs, traces, metrics) to JSONL (JSON Lines) files instead of sending directly to an OTLP endpoint.
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
These exporters write telemetry data to local files in JSONL format. Each line in the file represents a single telemetry item in JSON format. This allows for:
|
|
8
|
-
|
|
9
|
-
1. **Decoupled Processing**: Telemetry data is buffered locally and processed separately
|
|
10
|
-
2. **Reliability**: Data persists even if the OTLP endpoint is temporarily unavailable
|
|
11
|
-
3. **Batch Processing**: A separate cron job can read and send data in batches
|
|
12
|
-
4. **Easy Debugging**: JSONL files can be inspected directly
|
|
13
|
-
|
|
14
|
-
## How It Works
|
|
15
|
-
|
|
16
|
-
### 1. Writing Telemetry Data
|
|
17
|
-
|
|
18
|
-
The exporters write telemetry data to timestamped JSONL files:
|
|
19
|
-
|
|
20
|
-
- **Logs**: `./otel-data/logs-<timestamp>.jsonl`
|
|
21
|
-
- **Traces**: `./otel-data/traces-<timestamp>.jsonl`
|
|
22
|
-
- **Metrics**: `./otel-data/metrics-<timestamp>.jsonl`
|
|
23
|
-
|
|
24
|
-
Files are named with an ISO timestamp (with colons and periods replaced by hyphens) to ensure uniqueness. The exporters will continue writing to the same file as long as it exists.
|
|
25
|
-
|
|
26
|
-
### 2. Reading and Forwarding Data (External Process)
|
|
27
|
-
|
|
28
|
-
A separate cron job (recommended: every 30 seconds) should:
|
|
29
|
-
|
|
30
|
-
1. Read the JSONL files
|
|
31
|
-
2. Parse each line as a JSON object
|
|
32
|
-
3. Send the telemetry data to your OTLP endpoint
|
|
33
|
-
4. Delete the file after successful transmission
|
|
34
|
-
|
|
35
|
-
This decouples the application from the OTLP endpoint and provides resilience.
|
|
36
|
-
|
|
37
|
-
## Configuration
|
|
38
|
-
|
|
39
|
-
### Enabling JSONL Exporters
|
|
40
|
-
|
|
41
|
-
By default, JSONL exporters are enabled. You can configure them via the `OtelConfig`:
|
|
42
|
-
|
|
43
|
-
```typescript
|
|
44
|
-
import { registerOtel } from '@agentuity/runtime/otel';
|
|
45
|
-
|
|
46
|
-
registerOtel({
|
|
47
|
-
name: 'my-app',
|
|
48
|
-
version: '1.0.0',
|
|
49
|
-
url: 'https://otel.example.com',
|
|
50
|
-
useJsonlExporter: true, // Enable JSONL exporters (default: true)
|
|
51
|
-
jsonlBasePath: './.agentuity/otel-data', // Directory for JSONL files
|
|
52
|
-
});
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
### Disabling JSONL Exporters
|
|
56
|
-
|
|
57
|
-
To use the original OTLP exporters (direct network calls):
|
|
58
|
-
|
|
59
|
-
```typescript
|
|
60
|
-
registerOtel({
|
|
61
|
-
name: 'my-app',
|
|
62
|
-
version: '1.0.0',
|
|
63
|
-
url: 'https://otel.example.com',
|
|
64
|
-
useJsonlExporter: false, // Disable JSONL, use OTLP directly
|
|
65
|
-
});
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
## File Format
|
|
69
|
-
|
|
70
|
-
### Logs
|
|
71
|
-
|
|
72
|
-
Each log entry contains:
|
|
73
|
-
|
|
74
|
-
```json
|
|
75
|
-
{
|
|
76
|
-
"timestamp": [seconds, nanoseconds],
|
|
77
|
-
"observedTimestamp": [seconds, nanoseconds],
|
|
78
|
-
"severityNumber": 9,
|
|
79
|
-
"severityText": "INFO",
|
|
80
|
-
"body": "Log message",
|
|
81
|
-
"attributes": { "key": "value" },
|
|
82
|
-
"resource": { "@agentuity/orgId": "...", ... },
|
|
83
|
-
"instrumentationScope": { "name": "...", "version": "..." },
|
|
84
|
-
"spanContext": { "traceId": "...", "spanId": "...", ... }
|
|
85
|
-
}
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
### Traces
|
|
89
|
-
|
|
90
|
-
Each span contains:
|
|
91
|
-
|
|
92
|
-
```json
|
|
93
|
-
{
|
|
94
|
-
"traceId": "...",
|
|
95
|
-
"spanId": "...",
|
|
96
|
-
"traceState": "...",
|
|
97
|
-
"name": "operation-name",
|
|
98
|
-
"kind": 1,
|
|
99
|
-
"startTime": [seconds, nanoseconds],
|
|
100
|
-
"endTime": [seconds, nanoseconds],
|
|
101
|
-
"attributes": { "key": "value" },
|
|
102
|
-
"status": { "code": 0 },
|
|
103
|
-
"events": [],
|
|
104
|
-
"links": [],
|
|
105
|
-
"resource": { "@agentuity/orgId": "...", ... },
|
|
106
|
-
"droppedAttributesCount": 0,
|
|
107
|
-
"droppedEventsCount": 0,
|
|
108
|
-
"droppedLinksCount": 0,
|
|
109
|
-
"duration": [seconds, nanoseconds],
|
|
110
|
-
"ended": true
|
|
111
|
-
}
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
### Metrics
|
|
115
|
-
|
|
116
|
-
Each metric batch contains:
|
|
117
|
-
|
|
118
|
-
```json
|
|
119
|
-
{
|
|
120
|
-
"resource": { "@agentuity/orgId": "...", ... },
|
|
121
|
-
"scopeMetrics": [
|
|
122
|
-
{
|
|
123
|
-
"scope": { "name": "...", "version": "..." },
|
|
124
|
-
"metrics": [
|
|
125
|
-
{
|
|
126
|
-
"descriptor": { "name": "...", "description": "...", ... },
|
|
127
|
-
"dataPointType": 0,
|
|
128
|
-
"dataPoints": [...],
|
|
129
|
-
"aggregationTemporality": 1
|
|
130
|
-
}
|
|
131
|
-
]
|
|
132
|
-
}
|
|
133
|
-
]
|
|
134
|
-
}
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
## Example Cron Job
|
|
138
|
-
|
|
139
|
-
Here's an example script that reads JSONL files and forwards them to OTLP:
|
|
140
|
-
|
|
141
|
-
```typescript
|
|
142
|
-
#!/usr/bin/env bun
|
|
143
|
-
|
|
144
|
-
import { readdir, readFile, unlink } from 'node:fs/promises';
|
|
145
|
-
import { join } from 'node:path';
|
|
146
|
-
|
|
147
|
-
const OTEL_ENDPOINT = process.env.OTEL_ENDPOINT || 'https://otel.agentuity.cloud';
|
|
148
|
-
const OTEL_TOKEN = process.env.OTEL_TOKEN;
|
|
149
|
-
const DATA_DIR = process.env.DATA_DIR || './.agentuity/otel-data';
|
|
150
|
-
|
|
151
|
-
async function processFiles() {
|
|
152
|
-
const files = await readdir(DATA_DIR);
|
|
153
|
-
|
|
154
|
-
for (const file of files) {
|
|
155
|
-
if (file.endsWith('.jsonl')) {
|
|
156
|
-
const filePath = join(DATA_DIR, file);
|
|
157
|
-
const content = await readFile(filePath, 'utf-8');
|
|
158
|
-
const lines = content.trim().split('\n');
|
|
159
|
-
|
|
160
|
-
const type = file.startsWith('logs-')
|
|
161
|
-
? 'logs'
|
|
162
|
-
: file.startsWith('traces-')
|
|
163
|
-
? 'traces'
|
|
164
|
-
: 'metrics';
|
|
165
|
-
|
|
166
|
-
try {
|
|
167
|
-
// Send to OTLP endpoint
|
|
168
|
-
await fetch(`${OTEL_ENDPOINT}/v1/${type}`, {
|
|
169
|
-
method: 'POST',
|
|
170
|
-
headers: {
|
|
171
|
-
'Content-Type': 'application/json',
|
|
172
|
-
Authorization: `Bearer ${OTEL_TOKEN}`,
|
|
173
|
-
},
|
|
174
|
-
body: JSON.stringify({ [type]: lines.map((line) => JSON.parse(line)) }),
|
|
175
|
-
});
|
|
176
|
-
|
|
177
|
-
// Delete file after successful transmission
|
|
178
|
-
await unlink(filePath);
|
|
179
|
-
console.log(`Processed and deleted ${file}`);
|
|
180
|
-
} catch (error) {
|
|
181
|
-
console.error(`Failed to process ${file}:`, error);
|
|
182
|
-
// Don't delete the file on error, will retry next time
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
processFiles().catch(console.error);
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
Add this to your crontab to run every 30 seconds:
|
|
192
|
-
|
|
193
|
-
```bash
|
|
194
|
-
* * * * * /path/to/process-otel-data.ts
|
|
195
|
-
* * * * * sleep 30 && /path/to/process-otel-data.ts
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
## Exporters
|
|
199
|
-
|
|
200
|
-
### JSONLLogExporter
|
|
201
|
-
|
|
202
|
-
Implements `LogRecordExporter` interface.
|
|
203
|
-
|
|
204
|
-
### JSONLTraceExporter
|
|
205
|
-
|
|
206
|
-
Implements `SpanExporter` interface.
|
|
207
|
-
|
|
208
|
-
### JSONLMetricExporter
|
|
209
|
-
|
|
210
|
-
Implements `PushMetricExporter` interface.
|
|
211
|
-
|
|
212
|
-
## Notes
|
|
213
|
-
|
|
214
|
-
- Files are written synchronously using `appendFileSync` for simplicity and reliability
|
|
215
|
-
- File existence is checked before each write, creating a new file if necessary
|
|
216
|
-
- Timestamps in filenames use ISO format with special characters replaced by hyphens
|
|
217
|
-
- The exporters handle errors gracefully and report them via the callback mechanism
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { type ExportResult, ExportResultCode } from '@opentelemetry/core';
|
|
2
|
-
import type { LogRecordExporter, ReadableLogRecord } from '@opentelemetry/sdk-logs';
|
|
3
|
-
import { existsSync, appendFileSync, mkdirSync } from 'node:fs';
|
|
4
|
-
import { join } from 'node:path';
|
|
5
|
-
import { randomUUID } from 'node:crypto';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* JSONL implementation of the LogRecordExporter interface
|
|
9
|
-
* Writes logs to a timestamped JSONL file
|
|
10
|
-
*/
|
|
11
|
-
export class JSONLLogExporter implements LogRecordExporter {
|
|
12
|
-
private currentFile: string | null = null;
|
|
13
|
-
private readonly basePath: string;
|
|
14
|
-
private readonly filePrefix: string;
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Creates a new JSONL log record exporter
|
|
18
|
-
* @param basePath - Directory to store the JSONL files
|
|
19
|
-
*/
|
|
20
|
-
constructor(basePath: string) {
|
|
21
|
-
this.basePath = basePath;
|
|
22
|
-
this.filePrefix = 'otel-log';
|
|
23
|
-
this.ensureDirectory();
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
private ensureDirectory(): void {
|
|
27
|
-
if (!existsSync(this.basePath)) {
|
|
28
|
-
mkdirSync(this.basePath, { recursive: true });
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
private getOrCreateFile(): string {
|
|
33
|
-
// If current file exists, use it
|
|
34
|
-
if (this.currentFile && existsSync(this.currentFile)) {
|
|
35
|
-
return this.currentFile;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
this.currentFile = join(
|
|
39
|
-
this.basePath,
|
|
40
|
-
`${this.filePrefix}-${Date.now()}.${randomUUID()}.jsonl`
|
|
41
|
-
);
|
|
42
|
-
return this.currentFile;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Exports log records to a JSONL file
|
|
47
|
-
*
|
|
48
|
-
* @param logs - The log records to export
|
|
49
|
-
* @param resultCallback - Callback function to report the export result
|
|
50
|
-
*/
|
|
51
|
-
export(logs: ReadableLogRecord[], resultCallback: (result: ExportResult) => void): void {
|
|
52
|
-
try {
|
|
53
|
-
if (logs.length === 0) {
|
|
54
|
-
resultCallback({ code: ExportResultCode.SUCCESS });
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
const file = this.getOrCreateFile();
|
|
58
|
-
const lines: string[] = [];
|
|
59
|
-
for (const log of logs) {
|
|
60
|
-
const record = {
|
|
61
|
-
timestamp: log.hrTime,
|
|
62
|
-
observedTimestamp: log.hrTimeObserved,
|
|
63
|
-
severityNumber: log.severityNumber,
|
|
64
|
-
severityText: log.severityText,
|
|
65
|
-
body: log.body,
|
|
66
|
-
attributes: log.attributes,
|
|
67
|
-
resource: log.resource.attributes,
|
|
68
|
-
instrumentationScope: log.instrumentationScope,
|
|
69
|
-
spanContext: log.spanContext,
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
lines.push(JSON.stringify(record));
|
|
73
|
-
}
|
|
74
|
-
const payload = `${lines.join('\n')}\n`;
|
|
75
|
-
try {
|
|
76
|
-
appendFileSync(file, payload, 'utf-8');
|
|
77
|
-
} catch (err) {
|
|
78
|
-
// File may have been deleted, reset and retry once
|
|
79
|
-
const code = (err as NodeJS.ErrnoException).code;
|
|
80
|
-
if (code === 'ENOENT') {
|
|
81
|
-
this.currentFile = null;
|
|
82
|
-
const newFile = this.getOrCreateFile();
|
|
83
|
-
appendFileSync(newFile, payload, 'utf-8');
|
|
84
|
-
} else {
|
|
85
|
-
throw err;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
resultCallback({ code: ExportResultCode.SUCCESS });
|
|
90
|
-
} catch (error) {
|
|
91
|
-
resultCallback({
|
|
92
|
-
code: ExportResultCode.FAILED,
|
|
93
|
-
error: error instanceof Error ? error : new Error(String(error)),
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Shuts down the exporter
|
|
100
|
-
*
|
|
101
|
-
* @returns A promise that resolves when shutdown is complete
|
|
102
|
-
*/
|
|
103
|
-
async shutdown(): Promise<void> {
|
|
104
|
-
this.currentFile = null;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* Forces a flush of any pending data
|
|
109
|
-
*/
|
|
110
|
-
async forceFlush(): Promise<void> {
|
|
111
|
-
// No-op for file-based exporter as writes are synchronous
|
|
112
|
-
}
|
|
113
|
-
}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { type ExportResult, ExportResultCode } from '@opentelemetry/core';
|
|
2
|
-
import {
|
|
3
|
-
type PushMetricExporter,
|
|
4
|
-
type ResourceMetrics,
|
|
5
|
-
AggregationTemporality,
|
|
6
|
-
InstrumentType,
|
|
7
|
-
} from '@opentelemetry/sdk-metrics';
|
|
8
|
-
import { existsSync, appendFileSync, mkdirSync } from 'node:fs';
|
|
9
|
-
import { join } from 'node:path';
|
|
10
|
-
import { randomUUID } from 'node:crypto';
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* JSONL implementation of the PushMetricExporter interface
|
|
14
|
-
* Writes metrics to a timestamped JSONL file
|
|
15
|
-
*/
|
|
16
|
-
export class JSONLMetricExporter implements PushMetricExporter {
|
|
17
|
-
private currentFile: string | null = null;
|
|
18
|
-
private readonly basePath: string;
|
|
19
|
-
private readonly filePrefix: string;
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Creates a new JSONL metric exporter
|
|
23
|
-
* @param basePath - Directory to store the JSONL files
|
|
24
|
-
*/
|
|
25
|
-
constructor(basePath: string) {
|
|
26
|
-
this.basePath = basePath;
|
|
27
|
-
this.filePrefix = 'otel-metric';
|
|
28
|
-
this.ensureDirectory();
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
private ensureDirectory(): void {
|
|
32
|
-
if (!existsSync(this.basePath)) {
|
|
33
|
-
mkdirSync(this.basePath, { recursive: true });
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
private getOrCreateFile(): string {
|
|
38
|
-
// If current file exists, use it
|
|
39
|
-
if (this.currentFile && existsSync(this.currentFile)) {
|
|
40
|
-
return this.currentFile;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
this.currentFile = join(
|
|
44
|
-
this.basePath,
|
|
45
|
-
`${this.filePrefix}-${Date.now()}.${randomUUID()}.jsonl`
|
|
46
|
-
);
|
|
47
|
-
return this.currentFile;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Exports metrics to a JSONL file
|
|
52
|
-
*
|
|
53
|
-
* @param metrics - The resource metrics to export
|
|
54
|
-
* @param resultCallback - Callback function to report the export result
|
|
55
|
-
*/
|
|
56
|
-
export(metrics: ResourceMetrics, resultCallback: (result: ExportResult) => void): void {
|
|
57
|
-
try {
|
|
58
|
-
const file = this.getOrCreateFile();
|
|
59
|
-
|
|
60
|
-
const record = {
|
|
61
|
-
resource: metrics.resource.attributes,
|
|
62
|
-
scopeMetrics: metrics.scopeMetrics.map((sm) => ({
|
|
63
|
-
scope: sm.scope,
|
|
64
|
-
metrics: sm.metrics.map((m) => ({
|
|
65
|
-
descriptor: m.descriptor,
|
|
66
|
-
dataPointType: m.dataPointType,
|
|
67
|
-
dataPoints: m.dataPoints,
|
|
68
|
-
aggregationTemporality: m.aggregationTemporality,
|
|
69
|
-
})),
|
|
70
|
-
})),
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
const line = JSON.stringify(record) + '\n';
|
|
74
|
-
try {
|
|
75
|
-
appendFileSync(file, line, 'utf-8');
|
|
76
|
-
} catch (err) {
|
|
77
|
-
// File may have been deleted, reset and retry once
|
|
78
|
-
const code = (err as NodeJS.ErrnoException).code;
|
|
79
|
-
if (code === 'ENOENT') {
|
|
80
|
-
this.currentFile = null;
|
|
81
|
-
const newFile = this.getOrCreateFile();
|
|
82
|
-
appendFileSync(newFile, line, 'utf-8');
|
|
83
|
-
} else {
|
|
84
|
-
throw err;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
resultCallback({ code: ExportResultCode.SUCCESS });
|
|
89
|
-
} catch (error) {
|
|
90
|
-
resultCallback({
|
|
91
|
-
code: ExportResultCode.FAILED,
|
|
92
|
-
error: error instanceof Error ? error : new Error(String(error)),
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Shuts down the exporter
|
|
99
|
-
*
|
|
100
|
-
* @returns A promise that resolves when shutdown is complete
|
|
101
|
-
*/
|
|
102
|
-
async shutdown(): Promise<void> {
|
|
103
|
-
this.currentFile = null;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Forces a flush of any pending data
|
|
108
|
-
*/
|
|
109
|
-
async forceFlush(): Promise<void> {
|
|
110
|
-
// No-op for file-based exporter as writes are synchronous
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* Selects the aggregation temporality for the given instrument type
|
|
115
|
-
*/
|
|
116
|
-
selectAggregationTemporality?(_instrumentType: InstrumentType): AggregationTemporality {
|
|
117
|
-
// Default to cumulative temporality
|
|
118
|
-
return AggregationTemporality.CUMULATIVE;
|
|
119
|
-
}
|
|
120
|
-
}
|