@brizz/sdk 0.1.22 → 0.1.26
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/README.md +30 -25
- package/dist/index.cjs +307 -348
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +277 -318
- package/dist/preload.cjs +282 -330
- package/dist/preload.js +265 -313
- package/package.json +3 -3
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/preload.cjs.map +0 -1
- package/dist/preload.js.map +0 -1
package/dist/preload.js
CHANGED
|
@@ -142,6 +142,38 @@ function setLogLevel(level) {
|
|
|
142
142
|
import { resourceFromAttributes as resourceFromAttributes3 } from "@opentelemetry/resources";
|
|
143
143
|
import { NodeSDK } from "@opentelemetry/sdk-node";
|
|
144
144
|
|
|
145
|
+
// src/internal/dsn.ts
|
|
146
|
+
var PLACEHOLDER_SERVICE = "<service-name>";
|
|
147
|
+
var SERVICE_NAME_HEADER = "X-Brizz-Service-Name";
|
|
148
|
+
function parseDSN(dsn) {
|
|
149
|
+
let parsed;
|
|
150
|
+
try {
|
|
151
|
+
parsed = new globalThis.URL(dsn);
|
|
152
|
+
} catch {
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
if (parsed.protocol !== "http:" && parsed.protocol !== "https:" || !parsed.username || !parsed.host) {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
const scheme = parsed.protocol === "https:" ? "https" : "http";
|
|
159
|
+
let service;
|
|
160
|
+
try {
|
|
161
|
+
service = decodeURIComponent(parsed.pathname.replace(/^\//, ""));
|
|
162
|
+
} catch {
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
if (service === "" || service === PLACEHOLDER_SERVICE) {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
return {
|
|
169
|
+
scheme,
|
|
170
|
+
host: parsed.host,
|
|
171
|
+
bearer: decodeURIComponent(parsed.username),
|
|
172
|
+
service,
|
|
173
|
+
baseUrl: `${scheme}://${parsed.host}`
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
|
|
145
177
|
// src/internal/config.ts
|
|
146
178
|
function resolveConfig(options) {
|
|
147
179
|
const envLogLevel = process.env["BRIZZ_LOG_LEVEL"] || options.logLevel?.toString() || DEFAULT_LOG_LEVEL.toString();
|
|
@@ -168,6 +200,7 @@ function resolveConfig(options) {
|
|
|
168
200
|
appName: options.appName,
|
|
169
201
|
baseUrl: options.baseUrl,
|
|
170
202
|
hasApiKey: !!options.apiKey,
|
|
203
|
+
dsnProvided: !!(process.env["BRIZZ_DSN"] || options.dsn),
|
|
171
204
|
disableBatch: options.disableBatch,
|
|
172
205
|
logLevel: resolvedLogLevel,
|
|
173
206
|
headersCount: Object.keys(options.headers || {}).length,
|
|
@@ -195,7 +228,42 @@ function resolveConfig(options) {
|
|
|
195
228
|
logLevel: resolvedLogLevel,
|
|
196
229
|
masking: resolvedMasking
|
|
197
230
|
};
|
|
198
|
-
|
|
231
|
+
const dsnInput = process.env["BRIZZ_DSN"] || options.dsn;
|
|
232
|
+
let parsedDSN = null;
|
|
233
|
+
if (dsnInput) {
|
|
234
|
+
const kwargConflicts = [];
|
|
235
|
+
if (options.apiKey !== void 0) {
|
|
236
|
+
kwargConflicts.push("apiKey");
|
|
237
|
+
}
|
|
238
|
+
if (options.baseUrl !== void 0) {
|
|
239
|
+
kwargConflicts.push("baseUrl");
|
|
240
|
+
}
|
|
241
|
+
if (options.appName !== void 0) {
|
|
242
|
+
kwargConflicts.push("appName");
|
|
243
|
+
}
|
|
244
|
+
if (kwargConflicts.length > 0) {
|
|
245
|
+
throw new Error(
|
|
246
|
+
`dsn cannot be combined with kwargs ${kwargConflicts.join(", ")}. The DSN bundles bearer, gateway URL, and service name \u2014 choose one configuration style.`
|
|
247
|
+
);
|
|
248
|
+
}
|
|
249
|
+
const envConflicts = ["BRIZZ_API_KEY", "BRIZZ_BASE_URL", "BRIZZ_APP_NAME"].filter(
|
|
250
|
+
(name) => process.env[name] !== void 0
|
|
251
|
+
);
|
|
252
|
+
if (envConflicts.length > 0) {
|
|
253
|
+
logger.warn(
|
|
254
|
+
`Ignoring ${envConflicts.join(", ")} \u2014 dsn / BRIZZ_DSN takes precedence.`
|
|
255
|
+
);
|
|
256
|
+
}
|
|
257
|
+
resolvedConfig.apiKey = void 0;
|
|
258
|
+
resolvedConfig.baseUrl = "https://telemetry.brizz.dev";
|
|
259
|
+
resolvedConfig.appName = "unknown-app";
|
|
260
|
+
parsedDSN = parseDSN(dsnInput);
|
|
261
|
+
if (parsedDSN) {
|
|
262
|
+
resolvedConfig.appName = parsedDSN.service;
|
|
263
|
+
resolvedConfig.baseUrl = parsedDSN.baseUrl;
|
|
264
|
+
resolvedConfig.apiKey = parsedDSN.bearer;
|
|
265
|
+
}
|
|
266
|
+
} else if (resolvedConfig.apiKey) {
|
|
199
267
|
resolvedConfig.headers["Authorization"] = `Bearer ${resolvedConfig.apiKey}`;
|
|
200
268
|
}
|
|
201
269
|
if (process.env["BRIZZ_HEADERS"]) {
|
|
@@ -210,14 +278,28 @@ function resolveConfig(options) {
|
|
|
210
278
|
throw new Error("Invalid JSON in BRIZZ_HEADERS environment variable", { cause: error });
|
|
211
279
|
}
|
|
212
280
|
}
|
|
281
|
+
if (dsnInput) {
|
|
282
|
+
const authHeaderKeys = /* @__PURE__ */ new Set(["authorization", SERVICE_NAME_HEADER.toLowerCase()]);
|
|
283
|
+
resolvedConfig.headers = Object.fromEntries(
|
|
284
|
+
Object.entries(resolvedConfig.headers).filter(
|
|
285
|
+
([key]) => !authHeaderKeys.has(key.toLowerCase())
|
|
286
|
+
)
|
|
287
|
+
);
|
|
288
|
+
if (parsedDSN) {
|
|
289
|
+
resolvedConfig.headers["Authorization"] = `Bearer ${parsedDSN.bearer}`;
|
|
290
|
+
resolvedConfig.headers[SERVICE_NAME_HEADER] = parsedDSN.service;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
213
293
|
logger.debug("Configuration resolved with environment variables", {
|
|
214
294
|
appName: resolvedConfig.appName,
|
|
215
295
|
baseUrl: resolvedConfig.baseUrl,
|
|
216
296
|
hasApiKey: !!resolvedConfig.apiKey,
|
|
297
|
+
dsnProvided: !!dsnInput,
|
|
217
298
|
disableBatch: resolvedConfig.disableBatch,
|
|
218
299
|
envOverrides: {
|
|
219
300
|
hasEnvApiKey: !!process.env["BRIZZ_API_KEY"],
|
|
220
301
|
hasEnvBaseUrl: !!process.env["BRIZZ_BASE_URL"],
|
|
302
|
+
hasEnvDsn: !!process.env["BRIZZ_DSN"],
|
|
221
303
|
hasEnvBatch: !!process.env["BRIZZ_DISABLE_BATCH"],
|
|
222
304
|
hasEnvHeaders: !!process.env["BRIZZ_HEADERS"]
|
|
223
305
|
}
|
|
@@ -248,7 +330,119 @@ import { trace as trace2 } from "@opentelemetry/api";
|
|
|
248
330
|
import { InstrumentationNodeModuleDefinition } from "@opentelemetry/instrumentation";
|
|
249
331
|
|
|
250
332
|
// src/internal/instrumentation/mcp/patches/protocol.ts
|
|
251
|
-
import { context as context2, propagation, SpanKind, trace } from "@opentelemetry/api";
|
|
333
|
+
import { context as context2, propagation, SpanKind as SpanKind2, trace } from "@opentelemetry/api";
|
|
334
|
+
|
|
335
|
+
// src/internal/instrumentation/mcp/schemas.ts
|
|
336
|
+
import { SpanKind, SpanStatusCode } from "@opentelemetry/api";
|
|
337
|
+
|
|
338
|
+
// src/internal/instrumentation/mcp/semantic-conventions.ts
|
|
339
|
+
var MCP_TOOL_NAME = "mcp.tool.name";
|
|
340
|
+
var MCP_TOOL_ARGUMENTS = "mcp.tool.arguments";
|
|
341
|
+
var MCP_TOOL_RESULT = "mcp.tool.result";
|
|
342
|
+
var MCP_COMPONENT_TYPE = "mcp.component.type";
|
|
343
|
+
var MCP_COMPONENT_TOOL = "tool";
|
|
344
|
+
var MCP_COMPONENT_TOOL_SCHEMA = "tool_schema";
|
|
345
|
+
var MCP_TOOL_SCHEMA_PARAMETERS = "mcp.tool.schema.parameters";
|
|
346
|
+
var MCP_TOOL_SCHEMA_OUTPUT = "mcp.tool.schema.output";
|
|
347
|
+
var MCP_TOOL_DESCRIPTION = "mcp.tool.description";
|
|
348
|
+
var SPAN_NAME_TOOL_REGISTER = "mcp.tool.register";
|
|
349
|
+
var MCP_METHOD_NAME = "mcp.method.name";
|
|
350
|
+
var MCP_REQUEST_ID = "mcp.request.id";
|
|
351
|
+
var MCP_SESSION_ID = "mcp.session.id";
|
|
352
|
+
var MCP_PROTOCOL_VERSION = "mcp.protocol.version";
|
|
353
|
+
var MCP_RESOURCE_URI = "mcp.resource.uri";
|
|
354
|
+
var RPC_SYSTEM = "rpc.system";
|
|
355
|
+
var RPC_SYSTEM_MCP = "mcp";
|
|
356
|
+
var RPC_RESPONSE_STATUS_CODE = "rpc.response.status_code";
|
|
357
|
+
var GEN_AI_TOOL_NAME = "gen_ai.tool.name";
|
|
358
|
+
var GEN_AI_PROMPT_NAME = "gen_ai.prompt.name";
|
|
359
|
+
var GEN_AI_OPERATION_NAME = "gen_ai.operation.name";
|
|
360
|
+
var GEN_AI_OPERATION_EXECUTE_TOOL = "execute_tool";
|
|
361
|
+
var NETWORK_TRANSPORT = "network.transport";
|
|
362
|
+
var ERROR_TYPE = "error.type";
|
|
363
|
+
var ERROR_TYPE_TOOL = "tool_error";
|
|
364
|
+
var JSONRPC_REQUEST_ID = "jsonrpc.request.id";
|
|
365
|
+
var SPAN_NAME_TOOLS_CALL = "tools/call";
|
|
366
|
+
var MAX_ATTRIBUTE_LENGTH = 32 * 1024;
|
|
367
|
+
var TRUNCATION_SUFFIX = "\u2026(truncated)";
|
|
368
|
+
var METHOD_TOOLS_CALL = "tools/call";
|
|
369
|
+
var METHOD_TOOLS_LIST = "tools/list";
|
|
370
|
+
var METHOD_RESOURCES_READ = "resources/read";
|
|
371
|
+
var METHOD_PROMPTS_GET = "prompts/get";
|
|
372
|
+
var METHOD_INITIALIZE = "initialize";
|
|
373
|
+
|
|
374
|
+
// src/internal/instrumentation/mcp/schemas.ts
|
|
375
|
+
var _MAX_SCHEMA_ATTR_BYTES = 4e3;
|
|
376
|
+
function truncateSchemaAttr(value) {
|
|
377
|
+
if (value.length <= _MAX_SCHEMA_ATTR_BYTES) {
|
|
378
|
+
return value;
|
|
379
|
+
}
|
|
380
|
+
return `{"_truncated":true,"original_length":${value.length}}`;
|
|
381
|
+
}
|
|
382
|
+
function safeStringify(value) {
|
|
383
|
+
if (value === null || value === void 0) {
|
|
384
|
+
return "";
|
|
385
|
+
}
|
|
386
|
+
try {
|
|
387
|
+
return JSON.stringify(value);
|
|
388
|
+
} catch {
|
|
389
|
+
return "";
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
function emitSchemaSpansFromListResponse(result, transportSessionId, tracer) {
|
|
393
|
+
if (!transportSessionId) {
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
396
|
+
const tools = extractTools(result);
|
|
397
|
+
if (tools === void 0) {
|
|
398
|
+
return;
|
|
399
|
+
}
|
|
400
|
+
for (const tool of tools) {
|
|
401
|
+
const name = typeof tool.name === "string" ? tool.name : void 0;
|
|
402
|
+
if (!name) {
|
|
403
|
+
continue;
|
|
404
|
+
}
|
|
405
|
+
const span = tracer.startSpan(`${SPAN_NAME_TOOL_REGISTER} ${name}`, {
|
|
406
|
+
kind: SpanKind.INTERNAL
|
|
407
|
+
});
|
|
408
|
+
try {
|
|
409
|
+
stampSchemaAttributes(span, name, transportSessionId, tool);
|
|
410
|
+
span.setStatus({ code: SpanStatusCode.OK });
|
|
411
|
+
} finally {
|
|
412
|
+
span.end();
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
function stampSchemaAttributes(span, toolName, transportSessionId, tool) {
|
|
417
|
+
if (!span.isRecording()) {
|
|
418
|
+
logger.warn(
|
|
419
|
+
`Brizz MCP: schema span is not recording; dropping attributes for ${toolName}`
|
|
420
|
+
);
|
|
421
|
+
return;
|
|
422
|
+
}
|
|
423
|
+
const description = typeof tool.description === "string" ? tool.description : "";
|
|
424
|
+
const parameters = truncateSchemaAttr(safeStringify(tool.inputSchema));
|
|
425
|
+
const outputSchema = tool.outputSchema !== void 0 && tool.outputSchema !== null ? truncateSchemaAttr(safeStringify(tool.outputSchema)) : "";
|
|
426
|
+
span.setAttribute(RPC_SYSTEM, RPC_SYSTEM_MCP);
|
|
427
|
+
span.setAttribute(MCP_COMPONENT_TYPE, MCP_COMPONENT_TOOL_SCHEMA);
|
|
428
|
+
span.setAttribute(MCP_SESSION_ID, transportSessionId);
|
|
429
|
+
span.setAttribute(MCP_TOOL_NAME, toolName);
|
|
430
|
+
span.setAttribute(MCP_TOOL_SCHEMA_PARAMETERS, parameters);
|
|
431
|
+
span.setAttribute(MCP_TOOL_SCHEMA_OUTPUT, outputSchema);
|
|
432
|
+
span.setAttribute(MCP_TOOL_DESCRIPTION, description);
|
|
433
|
+
}
|
|
434
|
+
function extractTools(result) {
|
|
435
|
+
if (!result || typeof result !== "object") {
|
|
436
|
+
return void 0;
|
|
437
|
+
}
|
|
438
|
+
const tools = result.tools;
|
|
439
|
+
if (!Array.isArray(tools)) {
|
|
440
|
+
return void 0;
|
|
441
|
+
}
|
|
442
|
+
return tools.filter(
|
|
443
|
+
(t) => t !== null && typeof t === "object"
|
|
444
|
+
);
|
|
445
|
+
}
|
|
252
446
|
|
|
253
447
|
// src/internal/instrumentation/mcp/session.ts
|
|
254
448
|
import { context } from "@opentelemetry/api";
|
|
@@ -289,39 +483,7 @@ function stampAndPropagateSession(span, sessionId, baseContext = context.active(
|
|
|
289
483
|
}
|
|
290
484
|
|
|
291
485
|
// src/internal/instrumentation/mcp/patches/attributes.ts
|
|
292
|
-
import { SpanStatusCode } from "@opentelemetry/api";
|
|
293
|
-
|
|
294
|
-
// src/internal/instrumentation/mcp/semantic-conventions.ts
|
|
295
|
-
var MCP_TOOL_NAME = "mcp.tool.name";
|
|
296
|
-
var MCP_TOOL_ARGUMENTS = "mcp.tool.arguments";
|
|
297
|
-
var MCP_TOOL_RESULT = "mcp.tool.result";
|
|
298
|
-
var MCP_COMPONENT_TYPE = "mcp.component.type";
|
|
299
|
-
var MCP_COMPONENT_TOOL = "tool";
|
|
300
|
-
var MCP_METHOD_NAME = "mcp.method.name";
|
|
301
|
-
var MCP_REQUEST_ID = "mcp.request.id";
|
|
302
|
-
var MCP_SESSION_ID = "mcp.session.id";
|
|
303
|
-
var MCP_PROTOCOL_VERSION = "mcp.protocol.version";
|
|
304
|
-
var MCP_RESOURCE_URI = "mcp.resource.uri";
|
|
305
|
-
var RPC_SYSTEM = "rpc.system";
|
|
306
|
-
var RPC_SYSTEM_MCP = "mcp";
|
|
307
|
-
var RPC_RESPONSE_STATUS_CODE = "rpc.response.status_code";
|
|
308
|
-
var GEN_AI_TOOL_NAME = "gen_ai.tool.name";
|
|
309
|
-
var GEN_AI_PROMPT_NAME = "gen_ai.prompt.name";
|
|
310
|
-
var GEN_AI_OPERATION_NAME = "gen_ai.operation.name";
|
|
311
|
-
var GEN_AI_OPERATION_EXECUTE_TOOL = "execute_tool";
|
|
312
|
-
var NETWORK_TRANSPORT = "network.transport";
|
|
313
|
-
var ERROR_TYPE = "error.type";
|
|
314
|
-
var ERROR_TYPE_TOOL = "tool_error";
|
|
315
|
-
var JSONRPC_REQUEST_ID = "jsonrpc.request.id";
|
|
316
|
-
var SPAN_NAME_TOOLS_CALL = "tools/call";
|
|
317
|
-
var MAX_ATTRIBUTE_LENGTH = 32 * 1024;
|
|
318
|
-
var TRUNCATION_SUFFIX = "\u2026(truncated)";
|
|
319
|
-
var METHOD_TOOLS_CALL = "tools/call";
|
|
320
|
-
var METHOD_RESOURCES_READ = "resources/read";
|
|
321
|
-
var METHOD_PROMPTS_GET = "prompts/get";
|
|
322
|
-
var METHOD_INITIALIZE = "initialize";
|
|
323
|
-
|
|
324
|
-
// src/internal/instrumentation/mcp/patches/attributes.ts
|
|
486
|
+
import { SpanStatusCode as SpanStatusCode2 } from "@opentelemetry/api";
|
|
325
487
|
function deriveSpanName(method, params) {
|
|
326
488
|
try {
|
|
327
489
|
if (method === METHOD_TOOLS_CALL) {
|
|
@@ -424,7 +586,7 @@ function applyResultAttributes(span, method, result) {
|
|
|
424
586
|
if (obj && obj["isError"] === true) {
|
|
425
587
|
span.setAttribute(ERROR_TYPE, ERROR_TYPE_TOOL);
|
|
426
588
|
const message = extractToolErrorMessage(obj);
|
|
427
|
-
span.setStatus({ code:
|
|
589
|
+
span.setStatus({ code: SpanStatusCode2.ERROR, message });
|
|
428
590
|
}
|
|
429
591
|
}
|
|
430
592
|
function applyErrorAttributes(span, err) {
|
|
@@ -448,7 +610,7 @@ function applyErrorAttributes(span, err) {
|
|
|
448
610
|
} catch {
|
|
449
611
|
}
|
|
450
612
|
span.setStatus({
|
|
451
|
-
code:
|
|
613
|
+
code: SpanStatusCode2.ERROR,
|
|
452
614
|
message: typeof error?.message === "string" ? error.message : void 0
|
|
453
615
|
});
|
|
454
616
|
}
|
|
@@ -580,7 +742,20 @@ function wrapOnRequest(original, tracer) {
|
|
|
580
742
|
return original.apply(this, args);
|
|
581
743
|
}
|
|
582
744
|
const { span, spanCtx } = started;
|
|
583
|
-
const
|
|
745
|
+
const transportSessionId = this.sessionId ?? this._transport?.sessionId;
|
|
746
|
+
const postResult = method === METHOD_TOOLS_LIST ? (result) => {
|
|
747
|
+
try {
|
|
748
|
+
emitSchemaSpansFromListResponse(result, transportSessionId, tracer);
|
|
749
|
+
} catch (error) {
|
|
750
|
+
logger.warn(
|
|
751
|
+
`Brizz MCP: failed to emit tools/list schema spans: ${String(error)}`
|
|
752
|
+
);
|
|
753
|
+
}
|
|
754
|
+
} : void 0;
|
|
755
|
+
const wrappedHandler = (req, extra) => context2.with(
|
|
756
|
+
spanCtx,
|
|
757
|
+
() => executeHandler(span, method, handler, req, extra, postResult)
|
|
758
|
+
);
|
|
584
759
|
const hadEntry = handlers.has(method);
|
|
585
760
|
const prev = handlers.get(method);
|
|
586
761
|
handlers.set(method, wrappedHandler);
|
|
@@ -603,7 +778,7 @@ function wrapOnRequest(original, tracer) {
|
|
|
603
778
|
}
|
|
604
779
|
};
|
|
605
780
|
}
|
|
606
|
-
function executeAroundSpan(span, method, run) {
|
|
781
|
+
function executeAroundSpan(span, method, run, postResult) {
|
|
607
782
|
let result;
|
|
608
783
|
try {
|
|
609
784
|
result = run();
|
|
@@ -614,12 +789,18 @@ function executeAroundSpan(span, method, run) {
|
|
|
614
789
|
}
|
|
615
790
|
if (!isThenable(result)) {
|
|
616
791
|
safeApplyResultAttributes(span, method, result);
|
|
792
|
+
if (postResult) {
|
|
793
|
+
postResult(result);
|
|
794
|
+
}
|
|
617
795
|
safeEnd(span);
|
|
618
796
|
return result;
|
|
619
797
|
}
|
|
620
798
|
return result.then(
|
|
621
799
|
(value) => {
|
|
622
800
|
safeApplyResultAttributes(span, method, value);
|
|
801
|
+
if (postResult) {
|
|
802
|
+
postResult(value);
|
|
803
|
+
}
|
|
623
804
|
safeEnd(span);
|
|
624
805
|
return value;
|
|
625
806
|
},
|
|
@@ -630,13 +811,13 @@ function executeAroundSpan(span, method, run) {
|
|
|
630
811
|
}
|
|
631
812
|
);
|
|
632
813
|
}
|
|
633
|
-
function executeHandler(span, method, handler, req, extra) {
|
|
634
|
-
return executeAroundSpan(span, method, () => handler(req, extra));
|
|
814
|
+
function executeHandler(span, method, handler, req, extra, postResult) {
|
|
815
|
+
return executeAroundSpan(span, method, () => handler(req, extra), postResult);
|
|
635
816
|
}
|
|
636
817
|
function safeStartClientSpan(tracer, request, protocol) {
|
|
637
818
|
try {
|
|
638
819
|
const spanName = deriveSpanName(request.method, request.params);
|
|
639
|
-
const span = tracer.startSpan(spanName, { kind:
|
|
820
|
+
const span = tracer.startSpan(spanName, { kind: SpanKind2.CLIENT });
|
|
640
821
|
applyClientRequestAttributes(
|
|
641
822
|
span,
|
|
642
823
|
request,
|
|
@@ -654,7 +835,7 @@ function safeStartServerSpan(tracer, request, protocol) {
|
|
|
654
835
|
const spanName = deriveSpanName(request.method, request.params);
|
|
655
836
|
const span = tracer.startSpan(
|
|
656
837
|
spanName,
|
|
657
|
-
{ kind:
|
|
838
|
+
{ kind: SpanKind2.SERVER },
|
|
658
839
|
parentCtx
|
|
659
840
|
);
|
|
660
841
|
applyServerRequestAttributes(span, request, protocol);
|
|
@@ -710,7 +891,7 @@ function safeEnd(span) {
|
|
|
710
891
|
|
|
711
892
|
// src/internal/version.ts
|
|
712
893
|
function getSDKVersion() {
|
|
713
|
-
return "0.1.
|
|
894
|
+
return "0.1.26";
|
|
714
895
|
}
|
|
715
896
|
|
|
716
897
|
// src/internal/instrumentation/mcp/version.ts
|
|
@@ -982,21 +1163,11 @@ import { BatchLogRecordProcessor, SimpleLogRecordProcessor } from "@opentelemetr
|
|
|
982
1163
|
|
|
983
1164
|
// src/internal/masking/patterns.ts
|
|
984
1165
|
var DEFAULT_PII_PATTERNS = [
|
|
985
|
-
// Email addresses
|
|
986
|
-
{
|
|
987
|
-
name: "email_addresses",
|
|
988
|
-
pattern: String.raw`\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b`
|
|
989
|
-
},
|
|
990
1166
|
// Phone numbers (US format)
|
|
991
1167
|
{
|
|
992
1168
|
name: "us_phone_numbers",
|
|
993
1169
|
pattern: String.raw`(?:^|[\s])(?:\+?1[-.\s]*)?(?:\([0-9]{3}\)\s?[0-9]{3}[-.\s]?[0-9]{4}|[0-9]{3}[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}|[0-9]{10})(?=[\s]|$)`
|
|
994
1170
|
},
|
|
995
|
-
// Social Security Numbers
|
|
996
|
-
{
|
|
997
|
-
name: "ssn",
|
|
998
|
-
pattern: String.raw`\b(?!000|666|9\d{2})\d{3}[-\s]?(?!00)\d{2}[-\s]?(?!0000)\d{4}\b`
|
|
999
|
-
},
|
|
1000
1171
|
// Credit card numbers
|
|
1001
1172
|
{
|
|
1002
1173
|
name: "credit_cards",
|
|
@@ -1020,19 +1191,11 @@ var DEFAULT_PII_PATTERNS = [
|
|
|
1020
1191
|
name: "openai_keys",
|
|
1021
1192
|
pattern: String.raw`\bsk[-_][a-zA-Z0-9]{20,}\b`
|
|
1022
1193
|
},
|
|
1023
|
-
{
|
|
1024
|
-
name: "base64_secrets",
|
|
1025
|
-
pattern: String.raw`\b[A-Za-z0-9+/]{64,}={0,2}\b`
|
|
1026
|
-
},
|
|
1027
1194
|
// AWS Keys
|
|
1028
1195
|
{
|
|
1029
1196
|
name: "aws_access_keys",
|
|
1030
1197
|
pattern: String.raw`\b(?:AKIA|ABIA|ACCA|ASIA)[0-9A-Z]{16}\b`
|
|
1031
1198
|
},
|
|
1032
|
-
{
|
|
1033
|
-
name: "aws_secret_keys",
|
|
1034
|
-
pattern: String.raw`\b[A-Za-z0-9/+=]*[A-Z][A-Za-z0-9/+=]*[a-z][A-Za-z0-9/+=]*[/+=][A-Za-z0-9/+=]{30,}\b`
|
|
1035
|
-
},
|
|
1036
1199
|
// GitHub tokens
|
|
1037
1200
|
{
|
|
1038
1201
|
name: "github_tokens",
|
|
@@ -1063,11 +1226,6 @@ var DEFAULT_PII_PATTERNS = [
|
|
|
1063
1226
|
name: "ipv6_addresses",
|
|
1064
1227
|
pattern: String.raw`\b(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\b`
|
|
1065
1228
|
},
|
|
1066
|
-
// Medical records
|
|
1067
|
-
{
|
|
1068
|
-
name: "medical_record_numbers",
|
|
1069
|
-
pattern: String.raw`\b(?:[Mm][Rr][Nn])[-\s]?\d{6,10}\b`
|
|
1070
|
-
},
|
|
1071
1229
|
// Bitcoin addresses
|
|
1072
1230
|
{
|
|
1073
1231
|
name: "bitcoin_addresses",
|
|
@@ -1078,11 +1236,6 @@ var DEFAULT_PII_PATTERNS = [
|
|
|
1078
1236
|
name: "ethereum_addresses",
|
|
1079
1237
|
pattern: String.raw`\b0x[a-fA-F0-9]{40}(?![a-fA-F0-9])\b`
|
|
1080
1238
|
},
|
|
1081
|
-
// UUIDs
|
|
1082
|
-
{
|
|
1083
|
-
name: "uuids",
|
|
1084
|
-
pattern: String.raw`\b[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}(?![0-9a-fA-F-])\b`
|
|
1085
|
-
},
|
|
1086
1239
|
// Database connection strings
|
|
1087
1240
|
{
|
|
1088
1241
|
name: "database_connections",
|
|
@@ -1101,90 +1254,6 @@ var DEFAULT_PII_PATTERNS = [
|
|
|
1101
1254
|
name: "certificates",
|
|
1102
1255
|
pattern: "-----BEGIN CERTIFICATE-----"
|
|
1103
1256
|
},
|
|
1104
|
-
// Date of birth patterns
|
|
1105
|
-
{
|
|
1106
|
-
name: "date_of_birth_us",
|
|
1107
|
-
pattern: String.raw`\b(?:0[1-9]|1[0-2])[-/](?:0[1-9]|[12]\\d|3[01])[-/](?:19|20)\\d{2}\b`
|
|
1108
|
-
},
|
|
1109
|
-
{
|
|
1110
|
-
name: "date_of_birth_iso",
|
|
1111
|
-
pattern: String.raw`\b(?:19|20)\\d{2}[-/](?:0[1-9]|1[0-2])[-/](?:0[1-9]|[12]\\d|3[01])\b`
|
|
1112
|
-
},
|
|
1113
|
-
// US Identification Numbers
|
|
1114
|
-
{
|
|
1115
|
-
name: "us_passport_numbers",
|
|
1116
|
-
pattern: String.raw`\b[A-Z]?\\d{6,9}\b`
|
|
1117
|
-
},
|
|
1118
|
-
{
|
|
1119
|
-
name: "drivers_license",
|
|
1120
|
-
pattern: String.raw`\b[A-Z]{1,2}\\d{3,8}[-\s]?\\d{2,5}[-\s]?\\d{2,5}[-\s]?\\d{1,5}[-\s]?\\d?\b`
|
|
1121
|
-
},
|
|
1122
|
-
{
|
|
1123
|
-
name: "bank_account_numbers",
|
|
1124
|
-
pattern: String.raw`\b\\d{10,17}\b`
|
|
1125
|
-
},
|
|
1126
|
-
{
|
|
1127
|
-
name: "aba_routing_numbers",
|
|
1128
|
-
pattern: String.raw`\b((0[0-9])|(1[0-2])|(2[1-9])|(3[0-2])|(6[1-9])|(7[0-2])|80)([0-9]{7})\b`
|
|
1129
|
-
},
|
|
1130
|
-
{
|
|
1131
|
-
name: "health_insurance_numbers",
|
|
1132
|
-
pattern: String.raw`\b\\d{10}[A-Z]\b`
|
|
1133
|
-
},
|
|
1134
|
-
{
|
|
1135
|
-
name: "employee_ids",
|
|
1136
|
-
pattern: String.raw`\b(?:[Ee][Mm][Pp]|[Ee][Mm][Pp][Ll][Oo][Yy][Ee][Ee]|[Ee])[-\s]?\\d{5,8}\b`
|
|
1137
|
-
},
|
|
1138
|
-
{
|
|
1139
|
-
name: "tax_ein",
|
|
1140
|
-
pattern: String.raw`\b\\d{2}-\\d{7}\b`
|
|
1141
|
-
},
|
|
1142
|
-
{
|
|
1143
|
-
name: "medicare_beneficiary_id",
|
|
1144
|
-
pattern: String.raw`\b[1-9][A-Z][A-Z0-9]\\d-[A-Z][A-Z0-9]\\d-[A-Z][A-Z0-9]\\d{2}\b`
|
|
1145
|
-
},
|
|
1146
|
-
{
|
|
1147
|
-
name: "national_provider_id",
|
|
1148
|
-
pattern: String.raw`\b1\\d{9}\b`
|
|
1149
|
-
},
|
|
1150
|
-
{
|
|
1151
|
-
name: "dea_numbers",
|
|
1152
|
-
pattern: String.raw`\b[A-Z]{2}\\d{7}\b`
|
|
1153
|
-
},
|
|
1154
|
-
{
|
|
1155
|
-
name: "itin",
|
|
1156
|
-
pattern: String.raw`\b9\\d{2}(?:[ \\-]?)[7,8]\\d(?:[ \\-]?)\\d{4}\b`
|
|
1157
|
-
},
|
|
1158
|
-
// Vehicle and Location
|
|
1159
|
-
{
|
|
1160
|
-
name: "vin_numbers",
|
|
1161
|
-
pattern: String.raw`\b[A-HJ-NPR-Z0-9]{17}\b`
|
|
1162
|
-
},
|
|
1163
|
-
{
|
|
1164
|
-
name: "coordinates",
|
|
1165
|
-
pattern: String.raw`\b[-+]?(?:[0-8]?\\d(?:\\.\\d+)?|90(?:\\.0+)?),\\s*[-+]?(?:1[0-7]\\d(?:\\.\\d+)?|180(?:\\.0+)?|[0-9]?\\d(?:\\.\\d+)?)\b`
|
|
1166
|
-
},
|
|
1167
|
-
{
|
|
1168
|
-
name: "us_license_plates",
|
|
1169
|
-
pattern: String.raw`\b[A-Z]{1,3}[-\s]\\d{1,4}[A-Z]?\b|\b\\d{1,2}[A-Z]{1,3}\\d{1,4}\b`
|
|
1170
|
-
},
|
|
1171
|
-
{
|
|
1172
|
-
name: "us_zip_codes",
|
|
1173
|
-
pattern: String.raw`\b(\\d{5}-\\d{4}|\\d{5})\b`
|
|
1174
|
-
},
|
|
1175
|
-
{
|
|
1176
|
-
name: "us_street_addresses",
|
|
1177
|
-
pattern: String.raw`\b\\d{1,8}\b[\\s\\S]{10,100}?\b(AK|AL|AR|AZ|CA|CO|CT|DC|DE|FL|GA|HI|IA|ID|IL|IN|KS|KY|LA|MA|MD|ME|MI|MN|MO|MS|MT|NC|ND|NE|NH|NJ|NM|NV|NY|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VA|VT|WA|WI|WV|WY)\b\\s\\d{5}\b`
|
|
1178
|
-
},
|
|
1179
|
-
// International Banking
|
|
1180
|
-
{
|
|
1181
|
-
name: "iban",
|
|
1182
|
-
pattern: String.raw`\b[A-Z]{2}\d{2}[A-Z0-9]{4}\d{7}([A-Z0-9]?){0,16}\b`
|
|
1183
|
-
},
|
|
1184
|
-
{
|
|
1185
|
-
name: "swift_bic",
|
|
1186
|
-
pattern: String.raw`\b[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?\b`
|
|
1187
|
-
},
|
|
1188
1257
|
// Additional API Keys and Tokens
|
|
1189
1258
|
{
|
|
1190
1259
|
name: "google_oauth",
|
|
@@ -1247,73 +1316,6 @@ var DEFAULT_PII_PATTERNS = [
|
|
|
1247
1316
|
name: "putty_ssh_keys",
|
|
1248
1317
|
pattern: String.raw`PuTTY-User-Key-File-2: ssh-(?:rsa|dss)\s*Encryption: none(?:.|\s?)*?Private-MAC:`
|
|
1249
1318
|
},
|
|
1250
|
-
// International Phone Numbers
|
|
1251
|
-
{
|
|
1252
|
-
name: "france_phone_numbers",
|
|
1253
|
-
pattern: String.raw`\b([0O]?[1lI][1lI])?[3E][3E][0O]?[\\dOIlZEASB]{9}\b`
|
|
1254
|
-
},
|
|
1255
|
-
{
|
|
1256
|
-
name: "german_phone_numbers",
|
|
1257
|
-
pattern: String.raw`\b[\d\w]\d{2}[\d\w]{6}\d[\d\w]\b`
|
|
1258
|
-
},
|
|
1259
|
-
{
|
|
1260
|
-
name: "uk_phone_numbers",
|
|
1261
|
-
pattern: String.raw`\b([0O]?[1lI][1lI])?[4A][4A][\\dOIlZEASB]{10,11}\b`
|
|
1262
|
-
},
|
|
1263
|
-
// International IDs
|
|
1264
|
-
{
|
|
1265
|
-
name: "uk_drivers_license",
|
|
1266
|
-
pattern: String.raw`\b[A-Z]{5}\d{6}[A-Z]{2}\d{1}[A-Z]{2}\b`
|
|
1267
|
-
},
|
|
1268
|
-
{
|
|
1269
|
-
name: "uk_passport",
|
|
1270
|
-
pattern: String.raw`\b\\d{10}GB[RP]\\d{7}[UMF]{1}\\d{9}\b`
|
|
1271
|
-
},
|
|
1272
|
-
{
|
|
1273
|
-
name: "argentina_dni",
|
|
1274
|
-
pattern: String.raw`\b\\d{2}\\.\\d{3}\\.\\d{3}\b`
|
|
1275
|
-
},
|
|
1276
|
-
{
|
|
1277
|
-
name: "australia_tfn",
|
|
1278
|
-
pattern: String.raw`\b[Tt][Ff][Nn](:|:\\s|\\s|)(\\d{8,9})\b`
|
|
1279
|
-
},
|
|
1280
|
-
{
|
|
1281
|
-
name: "canada_passport",
|
|
1282
|
-
pattern: String.raw`\b[\\w]{2}[\\d]{6}\b`
|
|
1283
|
-
},
|
|
1284
|
-
{
|
|
1285
|
-
name: "croatia_vat",
|
|
1286
|
-
pattern: String.raw`\bHR\\d{11}\b`
|
|
1287
|
-
},
|
|
1288
|
-
{
|
|
1289
|
-
name: "czech_vat",
|
|
1290
|
-
pattern: String.raw`\bCZ\\d{8,10}\b`
|
|
1291
|
-
},
|
|
1292
|
-
{
|
|
1293
|
-
name: "denmark_personal_id",
|
|
1294
|
-
pattern: String.raw`\b(?:\\d{10}|\\d{6}[-\\s]\\d{4})\b`
|
|
1295
|
-
},
|
|
1296
|
-
{
|
|
1297
|
-
name: "france_national_id",
|
|
1298
|
-
pattern: String.raw`\b\\d{12}\b`
|
|
1299
|
-
},
|
|
1300
|
-
{
|
|
1301
|
-
name: "france_ssn",
|
|
1302
|
-
pattern: String.raw`\b(?:\\d{13}|\\d{13}\\s\\d{2})\b`
|
|
1303
|
-
},
|
|
1304
|
-
{
|
|
1305
|
-
name: "france_passport",
|
|
1306
|
-
pattern: String.raw`\b\\d{2}11\\d{5}\b`
|
|
1307
|
-
},
|
|
1308
|
-
{
|
|
1309
|
-
name: "california_drivers_license",
|
|
1310
|
-
pattern: String.raw`\b[A-Z]{1}\\d{7}\b`
|
|
1311
|
-
},
|
|
1312
|
-
// Medical and Healthcare
|
|
1313
|
-
{
|
|
1314
|
-
name: "hipaa_ndc",
|
|
1315
|
-
pattern: String.raw`\b\\d{4,5}-\\d{3,4}-\\d{1,2}\b`
|
|
1316
|
-
},
|
|
1317
1319
|
// Security and Network
|
|
1318
1320
|
{
|
|
1319
1321
|
name: "cve_numbers",
|
|
@@ -1347,44 +1349,6 @@ var DEFAULT_PII_PATTERNS = [
|
|
|
1347
1349
|
{
|
|
1348
1350
|
name: "discover_cards",
|
|
1349
1351
|
pattern: String.raw`\b65[4-9][0-9]{13}|64[4-9][0-9]{13}|6011[0-9]{12}\b`
|
|
1350
|
-
},
|
|
1351
|
-
{
|
|
1352
|
-
name: "enhanced_credit_cards",
|
|
1353
|
-
pattern: String.raw`\b((4\\d{3}|5[1-5]\\d{2}|2\\d{3}|3[47]\\d{1,2})[\\s\\-]?\\d{4,6}[\\s\\-]?\\d{4,6}?([\\s\\-]\\d{3,4})?(\\d{3})?)\b`
|
|
1354
|
-
},
|
|
1355
|
-
// Bank Routing Numbers (US specific)
|
|
1356
|
-
{
|
|
1357
|
-
name: "bbva_routing_ca",
|
|
1358
|
-
pattern: String.raw`\\b321170538\\b`
|
|
1359
|
-
},
|
|
1360
|
-
{
|
|
1361
|
-
name: "boa_routing_ca",
|
|
1362
|
-
pattern: String.raw`\\b(?:121|026)00(?:0|9)(?:358|593)\\b`
|
|
1363
|
-
},
|
|
1364
|
-
{
|
|
1365
|
-
name: "chase_routing_ca",
|
|
1366
|
-
pattern: String.raw`\\b322271627\\b`
|
|
1367
|
-
},
|
|
1368
|
-
{
|
|
1369
|
-
name: "citibank_routing_ca",
|
|
1370
|
-
pattern: String.raw`\\b32(?:11|22)71(?:18|72)4\\b`
|
|
1371
|
-
},
|
|
1372
|
-
{
|
|
1373
|
-
name: "usbank_routing_ca",
|
|
1374
|
-
pattern: String.raw`\\b12(?:1122676|2235821)\\b`
|
|
1375
|
-
},
|
|
1376
|
-
{
|
|
1377
|
-
name: "united_bank_routing_ca",
|
|
1378
|
-
pattern: String.raw`\\b122243350\\b`
|
|
1379
|
-
},
|
|
1380
|
-
{
|
|
1381
|
-
name: "wells_fargo_routing_ca",
|
|
1382
|
-
pattern: String.raw`\\b121042882\\b`
|
|
1383
|
-
},
|
|
1384
|
-
// Unrealistic alphanumeric identifiers
|
|
1385
|
-
{
|
|
1386
|
-
name: "generic_non_usual",
|
|
1387
|
-
pattern: String.raw`(?:^|\s)(?=[A-Za-z0-9_\)\*\=@]*[A-Za-z])(?=[A-Za-z0-9_\)\*\=@]*[0-9])([A-Za-z0-9_\)\*\=@]{5,})(?=\s|$)`
|
|
1388
1352
|
}
|
|
1389
1353
|
];
|
|
1390
1354
|
|
|
@@ -2046,12 +2010,6 @@ function applyContextAttributes(span) {
|
|
|
2046
2010
|
var DEFAULT_MASKING_RULES = [
|
|
2047
2011
|
{
|
|
2048
2012
|
mode: "partial",
|
|
2049
|
-
attributePattern: "gen_ai.prompt",
|
|
2050
|
-
patterns: DEFAULT_PII_PATTERNS
|
|
2051
|
-
},
|
|
2052
|
-
{
|
|
2053
|
-
mode: "partial",
|
|
2054
|
-
attributePattern: "gen_ai.completion",
|
|
2055
2013
|
patterns: DEFAULT_PII_PATTERNS
|
|
2056
2014
|
}
|
|
2057
2015
|
];
|
|
@@ -2061,24 +2019,16 @@ var BrizzSimpleSpanProcessor = class extends SimpleSpanProcessor {
|
|
|
2061
2019
|
super(spanExporter);
|
|
2062
2020
|
this.config = config;
|
|
2063
2021
|
}
|
|
2064
|
-
// Will work with the following code:
|
|
2065
|
-
// const span = tracer.startSpan('sensitive-operation',{attributes:{
|
|
2066
|
-
// 'user.password': 'secret123',
|
|
2067
|
-
// 'user.email': 'user@example.com',
|
|
2068
|
-
// }});
|
|
2069
|
-
//
|
|
2070
|
-
// Won't work because onStart is called before attributes are set:
|
|
2071
|
-
// span.setAttributes({
|
|
2072
|
-
// 'user.password': 'secret123',
|
|
2073
|
-
// 'user.email': 'user@example.com'
|
|
2074
|
-
// });
|
|
2075
2022
|
onStart(span, parentContext) {
|
|
2023
|
+
applyContextAttributes(span);
|
|
2024
|
+
super.onStart(span, parentContext);
|
|
2025
|
+
}
|
|
2026
|
+
onEnd(span) {
|
|
2076
2027
|
const maskingConfig = this.config.masking?.spanMasking;
|
|
2077
2028
|
if (maskingConfig) {
|
|
2078
|
-
|
|
2029
|
+
maskReadableSpan(span, maskingConfig);
|
|
2079
2030
|
}
|
|
2080
|
-
|
|
2081
|
-
super.onStart(span, parentContext);
|
|
2031
|
+
super.onEnd(span);
|
|
2082
2032
|
}
|
|
2083
2033
|
};
|
|
2084
2034
|
var BrizzBatchSpanProcessor = class extends BatchSpanProcessor {
|
|
@@ -2088,39 +2038,39 @@ var BrizzBatchSpanProcessor = class extends BatchSpanProcessor {
|
|
|
2088
2038
|
this.config = config;
|
|
2089
2039
|
}
|
|
2090
2040
|
onStart(span, parentContext) {
|
|
2041
|
+
applyContextAttributes(span);
|
|
2042
|
+
super.onStart(span, parentContext);
|
|
2043
|
+
}
|
|
2044
|
+
onEnd(span) {
|
|
2091
2045
|
const maskingConfig = this.config.masking?.spanMasking;
|
|
2092
2046
|
if (maskingConfig) {
|
|
2093
|
-
|
|
2047
|
+
maskReadableSpan(span, maskingConfig);
|
|
2094
2048
|
}
|
|
2095
|
-
|
|
2096
|
-
super.onStart(span, parentContext);
|
|
2049
|
+
super.onEnd(span);
|
|
2097
2050
|
}
|
|
2098
2051
|
};
|
|
2099
|
-
function
|
|
2100
|
-
|
|
2101
|
-
|
|
2052
|
+
function maskReadableSpan(span, config) {
|
|
2053
|
+
const attrs = span.attributes;
|
|
2054
|
+
if (!attrs || Object.keys(attrs).length === 0) {
|
|
2055
|
+
return;
|
|
2102
2056
|
}
|
|
2103
|
-
let rules = config.rules
|
|
2057
|
+
let rules = config.rules ? [...config.rules] : [];
|
|
2104
2058
|
if (!config.disableDefaultRules) {
|
|
2105
|
-
rules = [...
|
|
2059
|
+
rules = [...rules, ...DEFAULT_MASKING_RULES];
|
|
2106
2060
|
}
|
|
2107
2061
|
try {
|
|
2108
|
-
const
|
|
2109
|
-
for (const [
|
|
2110
|
-
|
|
2111
|
-
}
|
|
2112
|
-
const
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
merged[key] = value;
|
|
2062
|
+
const input = {};
|
|
2063
|
+
for (const [k, v] of Object.entries(attrs)) {
|
|
2064
|
+
input[k] = v;
|
|
2065
|
+
}
|
|
2066
|
+
const masked = maskAttributes(input, rules);
|
|
2067
|
+
for (const [k, v] of Object.entries(masked ?? {})) {
|
|
2068
|
+
if (attrs[k] !== v) {
|
|
2069
|
+
attrs[k] = v;
|
|
2117
2070
|
}
|
|
2118
|
-
span.setAttributes(merged);
|
|
2119
2071
|
}
|
|
2120
|
-
return span;
|
|
2121
2072
|
} catch (error) {
|
|
2122
|
-
logger.error("Error masking span
|
|
2123
|
-
return span;
|
|
2073
|
+
logger.error("Error masking span", { err: error });
|
|
2124
2074
|
}
|
|
2125
2075
|
}
|
|
2126
2076
|
|
|
@@ -2233,7 +2183,7 @@ function getSpanProcessor() {
|
|
|
2233
2183
|
}
|
|
2234
2184
|
|
|
2235
2185
|
// src/internal/trace/session.ts
|
|
2236
|
-
import { context as context5, trace as trace3, SpanStatusCode as
|
|
2186
|
+
import { context as context5, trace as trace3, SpanStatusCode as SpanStatusCode3 } from "@opentelemetry/api";
|
|
2237
2187
|
|
|
2238
2188
|
// src/internal/sdk.ts
|
|
2239
2189
|
var _Brizz = class __Brizz {
|
|
@@ -2565,17 +2515,19 @@ if (runtime.isESM && runtime.supportsLoaderAPI) {
|
|
|
2565
2515
|
maybeRegisterESMLoader();
|
|
2566
2516
|
}
|
|
2567
2517
|
try {
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
|
|
2518
|
+
const logLevel = process.env["BRIZZ_LOG_LEVEL"] || DEFAULT_LOG_LEVEL.toString();
|
|
2519
|
+
if (process.env["BRIZZ_DSN"]) {
|
|
2520
|
+
Brizz.initialize({ logLevel, disableNodeSdk: false });
|
|
2521
|
+
} else {
|
|
2522
|
+
Brizz.initialize({
|
|
2523
|
+
apiKey: process.env["BRIZZ_API_KEY"],
|
|
2524
|
+
baseUrl: process.env["BRIZZ_BASE_URL"],
|
|
2525
|
+
appName: process.env["BRIZZ_APP_NAME"] || process.env["OTEL_SERVICE_NAME"],
|
|
2526
|
+
logLevel,
|
|
2527
|
+
disableNodeSdk: false
|
|
2528
|
+
});
|
|
2529
|
+
}
|
|
2577
2530
|
logger.info(`SDK auto-initialized for ${runtime.isESM ? "ESM" : "CJS"} runtime`);
|
|
2578
2531
|
} catch (error) {
|
|
2579
2532
|
logger.warn("Failed to auto-initialize SDK:", { error });
|
|
2580
2533
|
}
|
|
2581
|
-
//# sourceMappingURL=preload.js.map
|