@agentuity/telemetry 3.0.0-alpha.0
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/console.d.ts +33 -0
- package/dist/console.d.ts.map +1 -0
- package/dist/console.js +86 -0
- package/dist/console.js.map +1 -0
- package/dist/exporters/index.d.ts +4 -0
- package/dist/exporters/index.d.ts.map +1 -0
- package/dist/exporters/index.js +4 -0
- package/dist/exporters/index.js.map +1 -0
- package/dist/exporters/jsonl-log-exporter.d.ts +36 -0
- package/dist/exporters/jsonl-log-exporter.d.ts.map +1 -0
- package/dist/exporters/jsonl-log-exporter.js +103 -0
- package/dist/exporters/jsonl-log-exporter.js.map +1 -0
- package/dist/exporters/jsonl-metric-exporter.d.ts +40 -0
- package/dist/exporters/jsonl-metric-exporter.d.ts.map +1 -0
- package/dist/exporters/jsonl-metric-exporter.js +104 -0
- package/dist/exporters/jsonl-metric-exporter.js.map +1 -0
- package/dist/exporters/jsonl-trace-exporter.d.ts +36 -0
- package/dist/exporters/jsonl-trace-exporter.d.ts.map +1 -0
- package/dist/exporters/jsonl-trace-exporter.js +111 -0
- package/dist/exporters/jsonl-trace-exporter.js.map +1 -0
- package/dist/fetch.d.ts +12 -0
- package/dist/fetch.d.ts.map +1 -0
- package/dist/fetch.js +82 -0
- package/dist/fetch.js.map +1 -0
- package/dist/globals.d.ts +9 -0
- package/dist/globals.d.ts.map +1 -0
- package/dist/globals.js +13 -0
- package/dist/globals.js.map +1 -0
- package/dist/http.d.ts +16 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +44 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +50 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +62 -0
- package/dist/index.js.map +1 -0
- package/dist/logger/console.d.ts +69 -0
- package/dist/logger/console.d.ts.map +1 -0
- package/dist/logger/console.js +278 -0
- package/dist/logger/console.js.map +1 -0
- package/dist/logger/index.d.ts +4 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/index.js +3 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/logger/internal.d.ts +79 -0
- package/dist/logger/internal.d.ts.map +1 -0
- package/dist/logger/internal.js +133 -0
- package/dist/logger/internal.js.map +1 -0
- package/dist/logger/user.d.ts +8 -0
- package/dist/logger/user.d.ts.map +1 -0
- package/dist/logger/user.js +7 -0
- package/dist/logger/user.js.map +1 -0
- package/dist/logger/util.d.ts +11 -0
- package/dist/logger/util.d.ts.map +1 -0
- package/dist/logger/util.js +77 -0
- package/dist/logger/util.js.map +1 -0
- package/dist/logger.d.ts +40 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +259 -0
- package/dist/logger.js.map +1 -0
- package/dist/telemetry.d.ts +71 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +274 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/tracestate.d.ts +44 -0
- package/dist/tracestate.d.ts.map +1 -0
- package/dist/tracestate.js +84 -0
- package/dist/tracestate.js.map +1 -0
- package/package.json +58 -0
- package/src/console.ts +91 -0
- package/src/exporters/README.md +217 -0
- package/src/exporters/index.ts +3 -0
- package/src/exporters/jsonl-log-exporter.ts +113 -0
- package/src/exporters/jsonl-metric-exporter.ts +120 -0
- package/src/exporters/jsonl-trace-exporter.ts +121 -0
- package/src/fetch.ts +105 -0
- package/src/globals.ts +18 -0
- package/src/http.ts +53 -0
- package/src/index.ts +82 -0
- package/src/logger/console.ts +322 -0
- package/src/logger/index.ts +3 -0
- package/src/logger/internal.ts +165 -0
- package/src/logger/user.ts +15 -0
- package/src/logger/util.ts +80 -0
- package/src/logger.ts +285 -0
- package/src/telemetry.ts +403 -0
- package/src/tracestate.ts +108 -0
package/dist/logger.js
ADDED
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import { format } from 'node:util';
|
|
2
|
+
import { safeStringify } from '@agentuity/core';
|
|
3
|
+
import * as LogsAPI from '@opentelemetry/api-logs';
|
|
4
|
+
import ConsoleLogger from './logger/console';
|
|
5
|
+
/**
|
|
6
|
+
* Reference to the original console object before patching.
|
|
7
|
+
*/
|
|
8
|
+
export const __originalConsole = Object.create(console);
|
|
9
|
+
export class OtelLogger {
|
|
10
|
+
delegate;
|
|
11
|
+
context;
|
|
12
|
+
logger;
|
|
13
|
+
logLevel;
|
|
14
|
+
constructor(useConsole, delegate, context, logLevel) {
|
|
15
|
+
this.delegate = delegate;
|
|
16
|
+
this.context = context;
|
|
17
|
+
this.logLevel = logLevel ?? 'info';
|
|
18
|
+
this.logger = useConsole ? new ConsoleLogger(context, false, this.logLevel) : undefined;
|
|
19
|
+
}
|
|
20
|
+
formatMessage(message) {
|
|
21
|
+
if (typeof message === 'string') {
|
|
22
|
+
return message;
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
return safeStringify(message);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
// Handle circular references or other unknown stringification errors
|
|
29
|
+
return String(message);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
getAttributes() {
|
|
33
|
+
return this.context;
|
|
34
|
+
}
|
|
35
|
+
emit(severityNumber, severityText, body) {
|
|
36
|
+
const attributes = this.getAttributes();
|
|
37
|
+
try {
|
|
38
|
+
this.delegate.emit({
|
|
39
|
+
severityNumber,
|
|
40
|
+
severityText,
|
|
41
|
+
body,
|
|
42
|
+
attributes: attributes,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
// Log error to console if available, but don't fail the entire operation
|
|
47
|
+
this.logger?.error('Failed to emit log to OTLP instance:', error);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
shouldLog(level) {
|
|
51
|
+
switch (this.logLevel) {
|
|
52
|
+
case 'trace':
|
|
53
|
+
return true;
|
|
54
|
+
case 'debug':
|
|
55
|
+
return (level === LogsAPI.SeverityNumber.DEBUG ||
|
|
56
|
+
level === LogsAPI.SeverityNumber.INFO ||
|
|
57
|
+
level === LogsAPI.SeverityNumber.WARN ||
|
|
58
|
+
level === LogsAPI.SeverityNumber.ERROR);
|
|
59
|
+
case 'info':
|
|
60
|
+
return (level === LogsAPI.SeverityNumber.INFO ||
|
|
61
|
+
level === LogsAPI.SeverityNumber.WARN ||
|
|
62
|
+
level === LogsAPI.SeverityNumber.ERROR);
|
|
63
|
+
case 'warn':
|
|
64
|
+
return level === LogsAPI.SeverityNumber.WARN || level === LogsAPI.SeverityNumber.ERROR;
|
|
65
|
+
case 'error':
|
|
66
|
+
return level === LogsAPI.SeverityNumber.ERROR;
|
|
67
|
+
}
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
trace(message, ...args) {
|
|
71
|
+
if (!this.shouldLog(LogsAPI.SeverityNumber.TRACE)) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
this.logger?.trace(message, ...args);
|
|
75
|
+
let body;
|
|
76
|
+
try {
|
|
77
|
+
body = format(this.formatMessage(message), ...args);
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
// Fallback if format causes recursion
|
|
81
|
+
body = `${this.formatMessage(message)} ${args.map((arg) => String(arg)).join(' ')}`;
|
|
82
|
+
}
|
|
83
|
+
this.emit(LogsAPI.SeverityNumber.TRACE, 'TRACE', body);
|
|
84
|
+
}
|
|
85
|
+
debug(message, ...args) {
|
|
86
|
+
if (!this.shouldLog(LogsAPI.SeverityNumber.DEBUG)) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
this.logger?.debug(message, ...args);
|
|
90
|
+
let body;
|
|
91
|
+
try {
|
|
92
|
+
body = format(this.formatMessage(message), ...args);
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// Fallback if format causes recursion
|
|
96
|
+
body = `${this.formatMessage(message)} ${args.map((arg) => String(arg)).join(' ')}`;
|
|
97
|
+
}
|
|
98
|
+
this.emit(LogsAPI.SeverityNumber.DEBUG, 'DEBUG', body);
|
|
99
|
+
}
|
|
100
|
+
info(message, ...args) {
|
|
101
|
+
if (!this.shouldLog(LogsAPI.SeverityNumber.INFO)) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
this.logger?.info(message, ...args);
|
|
105
|
+
let body;
|
|
106
|
+
try {
|
|
107
|
+
body = format(this.formatMessage(message), ...args);
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
// Fallback if format causes recursion
|
|
111
|
+
body = `${this.formatMessage(message)} ${args.map((arg) => String(arg)).join(' ')}`;
|
|
112
|
+
}
|
|
113
|
+
this.emit(LogsAPI.SeverityNumber.INFO, 'INFO', body);
|
|
114
|
+
}
|
|
115
|
+
warn(message, ...args) {
|
|
116
|
+
if (!this.shouldLog(LogsAPI.SeverityNumber.WARN)) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
this.logger?.warn(message, ...args);
|
|
120
|
+
let body;
|
|
121
|
+
try {
|
|
122
|
+
body = format(this.formatMessage(message), ...args);
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
// Fallback if format causes recursion
|
|
126
|
+
body = `${this.formatMessage(message)} ${args.map((arg) => String(arg)).join(' ')}`;
|
|
127
|
+
}
|
|
128
|
+
this.emit(LogsAPI.SeverityNumber.WARN, 'WARN', body);
|
|
129
|
+
}
|
|
130
|
+
error(message, ...args) {
|
|
131
|
+
if (!this.shouldLog(LogsAPI.SeverityNumber.ERROR)) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
this.logger?.error(message, ...args);
|
|
135
|
+
let body;
|
|
136
|
+
try {
|
|
137
|
+
body = format(this.formatMessage(message), ...args);
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
// Fallback if format causes recursion
|
|
141
|
+
body = `${this.formatMessage(message)} ${args.map((arg) => String(arg)).join(' ')}`;
|
|
142
|
+
}
|
|
143
|
+
this.emit(LogsAPI.SeverityNumber.ERROR, 'ERROR', body);
|
|
144
|
+
}
|
|
145
|
+
fatal(message, ...args) {
|
|
146
|
+
this.error(message, ...args);
|
|
147
|
+
process.exit(1);
|
|
148
|
+
}
|
|
149
|
+
child(opts) {
|
|
150
|
+
return new OtelLogger(!!this.logger, this.delegate, {
|
|
151
|
+
...(this.context ?? {}),
|
|
152
|
+
...opts,
|
|
153
|
+
}, this.logLevel);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Creates a logger that integrates with OpenTelemetry
|
|
158
|
+
*
|
|
159
|
+
* @param useConsole - Whether to also log to the console
|
|
160
|
+
* @param context - Additional context to include with log records
|
|
161
|
+
* @returns A logger instance
|
|
162
|
+
*/
|
|
163
|
+
export function createLogger(useConsole, context, logLevel) {
|
|
164
|
+
const delegate = LogsAPI.logs.getLogger('default', undefined, {
|
|
165
|
+
scopeAttributes: context,
|
|
166
|
+
});
|
|
167
|
+
return new OtelLogger(useConsole, delegate, context, logLevel);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Patches the global console object to integrate with OpenTelemetry logging
|
|
171
|
+
*
|
|
172
|
+
* @param attributes - Attributes to include with all console log records
|
|
173
|
+
*/
|
|
174
|
+
export function patchConsole(enabled, attributes, logLevel) {
|
|
175
|
+
if (!enabled) {
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
const _patch = { ...__originalConsole };
|
|
179
|
+
const delegate = createLogger(true, attributes, logLevel);
|
|
180
|
+
// Patch individual console methods instead of reassigning the whole object
|
|
181
|
+
_patch.log = (...args) => {
|
|
182
|
+
delegate.info(args[0], ...args.slice(1));
|
|
183
|
+
};
|
|
184
|
+
_patch.error = (...args) => {
|
|
185
|
+
delegate.error(args[0], ...args.slice(1));
|
|
186
|
+
};
|
|
187
|
+
_patch.warn = (...args) => {
|
|
188
|
+
delegate.warn(args[0], ...args.slice(1));
|
|
189
|
+
};
|
|
190
|
+
_patch.debug = (...args) => {
|
|
191
|
+
delegate.debug(args[0], ...args.slice(1));
|
|
192
|
+
};
|
|
193
|
+
_patch.info = (...args) => {
|
|
194
|
+
delegate.info(args[0], ...args.slice(1));
|
|
195
|
+
};
|
|
196
|
+
_patch.dir = (...args) => {
|
|
197
|
+
let msg = '';
|
|
198
|
+
if (args.length === 1) {
|
|
199
|
+
msg = format(args[0]);
|
|
200
|
+
}
|
|
201
|
+
else if (args.length >= 2) {
|
|
202
|
+
msg = format(args[0], args[1]);
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
msg = safeStringify(args);
|
|
206
|
+
}
|
|
207
|
+
delegate.debug(msg);
|
|
208
|
+
};
|
|
209
|
+
_patch.dirxml = (...args) => {
|
|
210
|
+
delegate.debug('dirxml:', ...args);
|
|
211
|
+
};
|
|
212
|
+
_patch.table = (...args) => {
|
|
213
|
+
delegate.debug('table:', ...args);
|
|
214
|
+
};
|
|
215
|
+
_patch.trace = (...args) => {
|
|
216
|
+
delegate.debug(args[0], ...args.slice(1));
|
|
217
|
+
};
|
|
218
|
+
_patch.group = (...args) => {
|
|
219
|
+
delegate.debug('group:', ...args);
|
|
220
|
+
};
|
|
221
|
+
_patch.groupCollapsed = (...args) => {
|
|
222
|
+
delegate.debug('groupCollapsed:', ...args);
|
|
223
|
+
};
|
|
224
|
+
_patch.groupEnd = () => {
|
|
225
|
+
delegate.debug('groupEnd');
|
|
226
|
+
};
|
|
227
|
+
_patch.clear = () => {
|
|
228
|
+
/* no-op */
|
|
229
|
+
};
|
|
230
|
+
_patch.count = (...args) => {
|
|
231
|
+
delegate.debug('count:', ...args);
|
|
232
|
+
};
|
|
233
|
+
_patch.countReset = (...args) => {
|
|
234
|
+
delegate.debug('countReset:', ...args);
|
|
235
|
+
};
|
|
236
|
+
_patch.assert = (condition, ...args) => {
|
|
237
|
+
if (!condition) {
|
|
238
|
+
delegate.error('assertion failed:', ...args);
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
_patch.time = (...args) => {
|
|
242
|
+
delegate.debug('time:', ...args);
|
|
243
|
+
};
|
|
244
|
+
_patch.timeLog = (...args) => {
|
|
245
|
+
delegate.debug('timeLog:', ...args);
|
|
246
|
+
};
|
|
247
|
+
_patch.timeEnd = (...args) => {
|
|
248
|
+
delegate.debug('timeEnd:', ...args);
|
|
249
|
+
};
|
|
250
|
+
_patch.profile = (...args) => {
|
|
251
|
+
delegate.debug('profile:', ...args);
|
|
252
|
+
};
|
|
253
|
+
_patch.profileEnd = (...args) => {
|
|
254
|
+
delegate.debug('profileEnd:', ...args);
|
|
255
|
+
};
|
|
256
|
+
// biome-ignore lint/suspicious/noGlobalAssign: intentionally replacing console with instrumented version
|
|
257
|
+
console = globalThis.console = _patch;
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { SpanProcessor } from '@opentelemetry/sdk-trace-base';
|
|
2
|
+
import { type Meter, type Tracer } from '@opentelemetry/api';
|
|
3
|
+
import type { Resource } from '@opentelemetry/resources';
|
|
4
|
+
import type { Logger } from './logger';
|
|
5
|
+
import type { LogLevel } from '@agentuity/core';
|
|
6
|
+
/**
|
|
7
|
+
* Configuration for Telemetry/OTel initialization
|
|
8
|
+
*/
|
|
9
|
+
export interface TelemetryConfig {
|
|
10
|
+
/** Service name (default: AGENTUITY_APP_NAME env) */
|
|
11
|
+
name?: string;
|
|
12
|
+
/** Service version (default: AGENTUITY_APP_VERSION env) */
|
|
13
|
+
version?: string;
|
|
14
|
+
/** OTel collector URL (default: derived from AGENTUITY_REGION) */
|
|
15
|
+
url?: string;
|
|
16
|
+
/** Bearer token for auth (default: AGENTUITY_SDK_KEY) */
|
|
17
|
+
bearerToken?: string;
|
|
18
|
+
/** Organization ID (default: AGENTUITY_CLOUD_ORG_ID) */
|
|
19
|
+
orgId?: string;
|
|
20
|
+
/** Project ID (default: AGENTUITY_CLOUD_PROJECT_ID) */
|
|
21
|
+
projectId?: string;
|
|
22
|
+
/** Deployment ID (default: AGENTUITY_CLOUD_DEPLOYMENT_ID) */
|
|
23
|
+
deploymentId?: string;
|
|
24
|
+
/** Environment (default: AGENTUITY_ENVIRONMENT or NODE_ENV) */
|
|
25
|
+
environment?: string;
|
|
26
|
+
/** CLI version (default: AGENTUITY_CLI_VERSION) */
|
|
27
|
+
cliVersion?: string;
|
|
28
|
+
/** SDK version */
|
|
29
|
+
sdkVersion?: string;
|
|
30
|
+
/** Development mode (default: AGENTUITY_SDK_DEV_MODE) */
|
|
31
|
+
devmode?: boolean;
|
|
32
|
+
/** Custom span processors */
|
|
33
|
+
spanProcessors?: Array<SpanProcessor>;
|
|
34
|
+
/** Log level (default: 'warn') */
|
|
35
|
+
logLevel?: LogLevel;
|
|
36
|
+
/** JSONL export base path (default: AGENTUITY_CLOUD_EXPORT_DIR) */
|
|
37
|
+
jsonlBasePath?: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Response from Telemetry initialization
|
|
41
|
+
*/
|
|
42
|
+
export interface TelemetryResponse {
|
|
43
|
+
tracer: Tracer;
|
|
44
|
+
meter: Meter;
|
|
45
|
+
logger: Logger;
|
|
46
|
+
shutdown: () => Promise<void>;
|
|
47
|
+
}
|
|
48
|
+
export declare const createResource: (config: Required<TelemetryConfig>) => Resource;
|
|
49
|
+
/**
|
|
50
|
+
* Registers and initializes Telemetry with the specified configuration.
|
|
51
|
+
*
|
|
52
|
+
* Idempotent: if called again (e.g. during bun --hot reload), the previous
|
|
53
|
+
* instance is shut down before creating a new one.
|
|
54
|
+
*
|
|
55
|
+
* @param config - Optional configuration overrides (defaults from env vars)
|
|
56
|
+
* @returns An object containing the tracer, logger, and shutdown function
|
|
57
|
+
*/
|
|
58
|
+
export declare function registerTelemetry(config?: TelemetryConfig): TelemetryResponse;
|
|
59
|
+
/**
|
|
60
|
+
* Alias for registerTelemetry (shorter name)
|
|
61
|
+
*/
|
|
62
|
+
export declare const register: typeof registerTelemetry;
|
|
63
|
+
/**
|
|
64
|
+
* Get the current telemetry instance (or undefined if not initialized)
|
|
65
|
+
*/
|
|
66
|
+
export declare function getTelemetry(): TelemetryResponse | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* Ensure telemetry is initialized (auto-init from env vars if needed)
|
|
69
|
+
*/
|
|
70
|
+
export declare function ensureInitialized(): TelemetryResponse;
|
|
71
|
+
//# sourceMappingURL=telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAsB,EAAE,KAAK,KAAK,EAAwB,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAclG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAUzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAIvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAKhD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6BAA6B;IAC7B,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IACtC,kCAAkC;IAClC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAKD,eAAO,MAAM,cAAc,GAAI,QAAQ,QAAQ,CAAC,eAAe,CAAC,KAAG,QAwBlE,CAAC;AAuEF;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,iBAAiB,CAiM7E;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,0BAAoB,CAAC;AAE1C;;GAEG;AACH,wBAAgB,YAAY,IAAI,iBAAiB,GAAG,SAAS,CAE5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,iBAAiB,CAMrD"}
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
import { BatchSpanProcessor, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base';
|
|
2
|
+
import opentelemetry, { metrics, propagation } from '@opentelemetry/api';
|
|
3
|
+
import * as LogsAPI from '@opentelemetry/api-logs';
|
|
4
|
+
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
|
|
5
|
+
import { CompositePropagator, W3CBaggagePropagator, W3CTraceContextPropagator, } from '@opentelemetry/core';
|
|
6
|
+
import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';
|
|
7
|
+
import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
|
|
8
|
+
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
|
|
9
|
+
import { HostMetrics } from '@opentelemetry/host-metrics';
|
|
10
|
+
import { CompressionAlgorithm } from '@opentelemetry/otlp-exporter-base';
|
|
11
|
+
import { resourceFromAttributes } from '@opentelemetry/resources';
|
|
12
|
+
import { BatchLogRecordProcessor, LoggerProvider, SimpleLogRecordProcessor, } from '@opentelemetry/sdk-logs';
|
|
13
|
+
import { MeterProvider, PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';
|
|
14
|
+
import { NodeSDK } from '@opentelemetry/sdk-node';
|
|
15
|
+
import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';
|
|
16
|
+
import { ConsoleLogRecordExporter, DebugSpanExporter } from './console';
|
|
17
|
+
import { instrumentFetch } from './fetch';
|
|
18
|
+
import { createLogger, patchConsole } from './logger';
|
|
19
|
+
import { JSONLLogExporter, JSONLTraceExporter, JSONLMetricExporter } from './exporters';
|
|
20
|
+
import { telemetry as telemetryGlobal } from './globals';
|
|
21
|
+
import { getServiceUrls } from '@agentuity/server';
|
|
22
|
+
const devmodeExportInterval = 1_000; // 1 second
|
|
23
|
+
const productionExportInterval = 10_000; // 10 seconds
|
|
24
|
+
export const createResource = (config) => {
|
|
25
|
+
const { name, version, orgId, projectId, deploymentId, environment, devmode, cliVersion, sdkVersion, } = config;
|
|
26
|
+
return resourceFromAttributes({
|
|
27
|
+
[ATTR_SERVICE_NAME]: name,
|
|
28
|
+
[ATTR_SERVICE_VERSION]: version,
|
|
29
|
+
'@agentuity/orgId': orgId,
|
|
30
|
+
'@agentuity/projectId': projectId,
|
|
31
|
+
'@agentuity/deploymentId': deploymentId,
|
|
32
|
+
'@agentuity/env': environment,
|
|
33
|
+
'@agentuity/devmode': devmode,
|
|
34
|
+
'@agentuity/sdkVersion': sdkVersion,
|
|
35
|
+
'@agentuity/cliVersion': cliVersion,
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
const createLoggerProvider = ({ url, headers, resource, jsonlBasePath, useConsoleExporters, logLevel: _logLevel, }) => {
|
|
39
|
+
let processor;
|
|
40
|
+
let exporter;
|
|
41
|
+
if (useConsoleExporters) {
|
|
42
|
+
processor = new SimpleLogRecordProcessor(new ConsoleLogRecordExporter(true));
|
|
43
|
+
}
|
|
44
|
+
else if (jsonlBasePath) {
|
|
45
|
+
exporter = new JSONLLogExporter(jsonlBasePath);
|
|
46
|
+
processor = new BatchLogRecordProcessor(exporter);
|
|
47
|
+
}
|
|
48
|
+
else if (url) {
|
|
49
|
+
const otlpExporter = new OTLPLogExporter({
|
|
50
|
+
url: `${url}/v1/logs`,
|
|
51
|
+
headers,
|
|
52
|
+
compression: CompressionAlgorithm.GZIP,
|
|
53
|
+
timeoutMillis: 10_000,
|
|
54
|
+
});
|
|
55
|
+
exporter = otlpExporter;
|
|
56
|
+
processor = new BatchLogRecordProcessor(otlpExporter);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
processor = new SimpleLogRecordProcessor(new ConsoleLogRecordExporter(false));
|
|
60
|
+
}
|
|
61
|
+
const provider = new LoggerProvider({
|
|
62
|
+
resource,
|
|
63
|
+
processors: [processor],
|
|
64
|
+
});
|
|
65
|
+
LogsAPI.logs.setGlobalLoggerProvider(provider);
|
|
66
|
+
return { processor, provider, exporter };
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Get configuration from environment variables
|
|
70
|
+
*/
|
|
71
|
+
function getConfigFromEnv() {
|
|
72
|
+
const region = process.env.AGENTUITY_REGION ?? 'usc';
|
|
73
|
+
const serviceUrls = getServiceUrls(region);
|
|
74
|
+
return {
|
|
75
|
+
name: process.env.AGENTUITY_APP_NAME ?? 'agentuity-app',
|
|
76
|
+
version: process.env.AGENTUITY_APP_VERSION ?? '1.0.0',
|
|
77
|
+
url: serviceUrls.otel,
|
|
78
|
+
bearerToken: process.env.AGENTUITY_OTLP_BEARER_TOKEN ?? process.env.AGENTUITY_SDK_KEY ?? '',
|
|
79
|
+
orgId: process.env.AGENTUITY_CLOUD_ORG_ID ?? 'unknown',
|
|
80
|
+
projectId: process.env.AGENTUITY_CLOUD_PROJECT_ID ?? 'unknown',
|
|
81
|
+
deploymentId: process.env.AGENTUITY_CLOUD_DEPLOYMENT_ID ?? 'unknown',
|
|
82
|
+
environment: process.env.AGENTUITY_ENVIRONMENT ?? process.env.NODE_ENV ?? 'development',
|
|
83
|
+
cliVersion: process.env.AGENTUITY_CLI_VERSION ?? 'unknown',
|
|
84
|
+
sdkVersion: process.env.AGENTUITY_CLOUD_SDK_VERSION ?? 'unknown',
|
|
85
|
+
devmode: process.env.AGENTUITY_SDK_DEV_MODE === 'true',
|
|
86
|
+
logLevel: 'warn',
|
|
87
|
+
jsonlBasePath: process.env.AGENTUITY_CLOUD_EXPORT_DIR ?? '',
|
|
88
|
+
spanProcessors: [],
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Registers and initializes Telemetry with the specified configuration.
|
|
93
|
+
*
|
|
94
|
+
* Idempotent: if called again (e.g. during bun --hot reload), the previous
|
|
95
|
+
* instance is shut down before creating a new one.
|
|
96
|
+
*
|
|
97
|
+
* @param config - Optional configuration overrides (defaults from env vars)
|
|
98
|
+
* @returns An object containing the tracer, logger, and shutdown function
|
|
99
|
+
*/
|
|
100
|
+
export function registerTelemetry(config) {
|
|
101
|
+
// Shut down previous instance if this is a hot reload
|
|
102
|
+
const previous = telemetryGlobal.get();
|
|
103
|
+
if (previous) {
|
|
104
|
+
previous.shutdown().catch(() => { });
|
|
105
|
+
}
|
|
106
|
+
// Merge provided config with env defaults
|
|
107
|
+
const envConfig = getConfigFromEnv();
|
|
108
|
+
const mergedConfig = {
|
|
109
|
+
name: config?.name ?? envConfig.name,
|
|
110
|
+
version: config?.version ?? envConfig.version,
|
|
111
|
+
url: config?.url ?? envConfig.url,
|
|
112
|
+
bearerToken: config?.bearerToken ?? envConfig.bearerToken,
|
|
113
|
+
orgId: config?.orgId ?? envConfig.orgId,
|
|
114
|
+
projectId: config?.projectId ?? envConfig.projectId,
|
|
115
|
+
deploymentId: config?.deploymentId ?? envConfig.deploymentId,
|
|
116
|
+
environment: config?.environment ?? envConfig.environment,
|
|
117
|
+
cliVersion: config?.cliVersion ?? envConfig.cliVersion,
|
|
118
|
+
sdkVersion: config?.sdkVersion ?? envConfig.sdkVersion,
|
|
119
|
+
devmode: config?.devmode ?? envConfig.devmode,
|
|
120
|
+
logLevel: config?.logLevel ?? envConfig.logLevel,
|
|
121
|
+
jsonlBasePath: config?.jsonlBasePath ?? envConfig.jsonlBasePath,
|
|
122
|
+
spanProcessors: config?.spanProcessors ?? envConfig.spanProcessors,
|
|
123
|
+
};
|
|
124
|
+
const { url, name, version, bearerToken, environment, orgId, projectId, deploymentId, devmode, logLevel, jsonlBasePath, spanProcessors, } = mergedConfig;
|
|
125
|
+
let headers;
|
|
126
|
+
if (bearerToken) {
|
|
127
|
+
headers = { Authorization: `Bearer ${bearerToken}` };
|
|
128
|
+
}
|
|
129
|
+
// Use console debug exporters for local debugging
|
|
130
|
+
const useConsoleExporters = process.env.AGENTUITY_DEBUG_OTEL_CONSOLE === 'true';
|
|
131
|
+
const resource = createResource(mergedConfig);
|
|
132
|
+
const loggerProvider = createLoggerProvider({
|
|
133
|
+
url,
|
|
134
|
+
headers,
|
|
135
|
+
resource,
|
|
136
|
+
logLevel,
|
|
137
|
+
jsonlBasePath: jsonlBasePath || undefined,
|
|
138
|
+
useConsoleExporters,
|
|
139
|
+
});
|
|
140
|
+
const attrs = {
|
|
141
|
+
'@agentuity/orgId': orgId,
|
|
142
|
+
'@agentuity/projectId': projectId,
|
|
143
|
+
'@agentuity/deploymentId': deploymentId,
|
|
144
|
+
'@agentuity/env': environment,
|
|
145
|
+
'@agentuity/devmode': devmode,
|
|
146
|
+
'@agentuity/language': 'javascript',
|
|
147
|
+
};
|
|
148
|
+
const logger = createLogger(!!url, attrs, logLevel);
|
|
149
|
+
// Don't patch console if using console exporters (avoid double logging)
|
|
150
|
+
if (!useConsoleExporters) {
|
|
151
|
+
patchConsole(!!url, attrs, logLevel);
|
|
152
|
+
}
|
|
153
|
+
// Build trace exporter (OTLP or JSONL)
|
|
154
|
+
const traceExporter = jsonlBasePath
|
|
155
|
+
? new JSONLTraceExporter(jsonlBasePath)
|
|
156
|
+
: url
|
|
157
|
+
? new OTLPTraceExporter({
|
|
158
|
+
url: `${url}/v1/traces`,
|
|
159
|
+
headers,
|
|
160
|
+
keepAlive: true,
|
|
161
|
+
compression: CompressionAlgorithm.GZIP,
|
|
162
|
+
})
|
|
163
|
+
: undefined;
|
|
164
|
+
// Build metric exporter (OTLP or JSONL)
|
|
165
|
+
const metricExporter = jsonlBasePath
|
|
166
|
+
? new JSONLMetricExporter(jsonlBasePath)
|
|
167
|
+
: url
|
|
168
|
+
? new OTLPMetricExporter({
|
|
169
|
+
url: `${url}/v1/metrics`,
|
|
170
|
+
headers,
|
|
171
|
+
keepAlive: true,
|
|
172
|
+
compression: CompressionAlgorithm.GZIP,
|
|
173
|
+
})
|
|
174
|
+
: undefined;
|
|
175
|
+
// Create span processors
|
|
176
|
+
const allSpanProcessors = [];
|
|
177
|
+
if (traceExporter) {
|
|
178
|
+
allSpanProcessors.push(new BatchSpanProcessor(traceExporter));
|
|
179
|
+
}
|
|
180
|
+
if (useConsoleExporters) {
|
|
181
|
+
allSpanProcessors.push(new SimpleSpanProcessor(new DebugSpanExporter()));
|
|
182
|
+
}
|
|
183
|
+
// Add custom span processors
|
|
184
|
+
allSpanProcessors.push(...spanProcessors);
|
|
185
|
+
// Create metric readers
|
|
186
|
+
const sdkMetricReader = metricExporter
|
|
187
|
+
? new PeriodicExportingMetricReader({
|
|
188
|
+
exporter: metricExporter,
|
|
189
|
+
exportTimeoutMillis: devmode ? devmodeExportInterval : productionExportInterval,
|
|
190
|
+
exportIntervalMillis: devmode ? devmodeExportInterval : productionExportInterval,
|
|
191
|
+
})
|
|
192
|
+
: undefined;
|
|
193
|
+
const hostMetricReader = metricExporter
|
|
194
|
+
? new PeriodicExportingMetricReader({
|
|
195
|
+
exporter: metricExporter,
|
|
196
|
+
exportTimeoutMillis: devmode ? devmodeExportInterval : productionExportInterval,
|
|
197
|
+
exportIntervalMillis: devmode ? devmodeExportInterval : productionExportInterval,
|
|
198
|
+
})
|
|
199
|
+
: undefined;
|
|
200
|
+
const meterProvider = hostMetricReader
|
|
201
|
+
? new MeterProvider({ resource, readers: [hostMetricReader] })
|
|
202
|
+
: undefined;
|
|
203
|
+
if (meterProvider) {
|
|
204
|
+
metrics.setGlobalMeterProvider(meterProvider);
|
|
205
|
+
}
|
|
206
|
+
const hostMetrics = meterProvider ? new HostMetrics({ meterProvider }) : undefined;
|
|
207
|
+
let running = false;
|
|
208
|
+
let instrumentationSDK;
|
|
209
|
+
if (url || useConsoleExporters) {
|
|
210
|
+
const propagator = new CompositePropagator({
|
|
211
|
+
propagators: [new W3CTraceContextPropagator(), new W3CBaggagePropagator()],
|
|
212
|
+
});
|
|
213
|
+
propagation.setGlobalPropagator(propagator);
|
|
214
|
+
instrumentFetch();
|
|
215
|
+
instrumentationSDK = new NodeSDK({
|
|
216
|
+
logRecordProcessor: loggerProvider.processor,
|
|
217
|
+
metricReader: sdkMetricReader,
|
|
218
|
+
instrumentations: [getNodeAutoInstrumentations()],
|
|
219
|
+
resource,
|
|
220
|
+
textMapPropagator: propagator,
|
|
221
|
+
spanProcessors: allSpanProcessors,
|
|
222
|
+
});
|
|
223
|
+
instrumentationSDK.start();
|
|
224
|
+
hostMetrics?.start();
|
|
225
|
+
logger.debug('Telemetry configured successfully');
|
|
226
|
+
logger.debug('Sending telemetry data to %s', url);
|
|
227
|
+
running = true;
|
|
228
|
+
}
|
|
229
|
+
const tracer = opentelemetry.trace.getTracer(name, version);
|
|
230
|
+
const meter = metrics.getMeter(name, version);
|
|
231
|
+
const shutdown = async () => {
|
|
232
|
+
if (running) {
|
|
233
|
+
running = false;
|
|
234
|
+
logger.debug('shutting down OpenTelemetry');
|
|
235
|
+
await loggerProvider.provider
|
|
236
|
+
.forceFlush()
|
|
237
|
+
.catch((e) => logger.warn('error in forceFlush. %s', e));
|
|
238
|
+
await loggerProvider.exporter
|
|
239
|
+
?.shutdown()
|
|
240
|
+
.catch((e) => !devmode && logger.warn('error in shutdown of exporter. %s', e));
|
|
241
|
+
await instrumentationSDK
|
|
242
|
+
?.shutdown()
|
|
243
|
+
.catch((e) => !devmode && logger.warn('error in shutdown of instrumentation. %s', e));
|
|
244
|
+
logger.debug('shut down OpenTelemetry');
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
if (url && bearerToken) {
|
|
248
|
+
logger.info('connected to Agentuity Agent Cloud');
|
|
249
|
+
}
|
|
250
|
+
const instance = { tracer, meter, logger, shutdown };
|
|
251
|
+
telemetryGlobal.set(instance);
|
|
252
|
+
return instance;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Alias for registerTelemetry (shorter name)
|
|
256
|
+
*/
|
|
257
|
+
export const register = registerTelemetry;
|
|
258
|
+
/**
|
|
259
|
+
* Get the current telemetry instance (or undefined if not initialized)
|
|
260
|
+
*/
|
|
261
|
+
export function getTelemetry() {
|
|
262
|
+
return telemetryGlobal.get();
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Ensure telemetry is initialized (auto-init from env vars if needed)
|
|
266
|
+
*/
|
|
267
|
+
export function ensureInitialized() {
|
|
268
|
+
let instance = telemetryGlobal.get();
|
|
269
|
+
if (!instance) {
|
|
270
|
+
instance = registerTelemetry();
|
|
271
|
+
}
|
|
272
|
+
return instance;
|
|
273
|
+
}
|
|
274
|
+
//# sourceMappingURL=telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
|