@cyanheads/mcp-ts-core 0.13.7 → 0.13.8
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/AGENTS.md +3 -3
- package/CLAUDE.md +3 -3
- package/README.md +3 -1
- package/changelog/0.13.x/0.13.8.md +101 -0
- package/dist/config/index.d.ts +9 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +19 -0
- package/dist/config/index.js.map +1 -1
- package/dist/core/app.d.ts.map +1 -1
- package/dist/core/app.js +14 -2
- package/dist/core/app.js.map +1 -1
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/context.js +13 -3
- package/dist/core/context.js.map +1 -1
- package/dist/core/worker.d.ts +2 -0
- package/dist/core/worker.d.ts.map +1 -1
- package/dist/core/worker.js +2 -0
- package/dist/core/worker.js.map +1 -1
- package/dist/linter/rules/enrichment-rules.d.ts +3 -2
- package/dist/linter/rules/enrichment-rules.d.ts.map +1 -1
- package/dist/linter/rules/enrichment-rules.js +9 -2
- package/dist/linter/rules/enrichment-rules.js.map +1 -1
- package/dist/linter/rules/handler-body-rules.d.ts.map +1 -1
- package/dist/linter/rules/handler-body-rules.js +10 -4
- package/dist/linter/rules/handler-body-rules.js.map +1 -1
- package/dist/linter/rules/schema-rules.d.ts +5 -0
- package/dist/linter/rules/schema-rules.d.ts.map +1 -1
- package/dist/linter/rules/schema-rules.js +44 -17
- package/dist/linter/rules/schema-rules.js.map +1 -1
- package/dist/mcp-server/outputContract.d.ts +33 -0
- package/dist/mcp-server/outputContract.d.ts.map +1 -0
- package/dist/mcp-server/outputContract.js +43 -0
- package/dist/mcp-server/outputContract.js.map +1 -0
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts.map +1 -1
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js +10 -2
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js.map +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts +16 -5
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts.map +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js +65 -13
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js.map +1 -1
- package/dist/mcp-server/transports/auth/lib/authUtils.js +4 -1
- package/dist/mcp-server/transports/auth/lib/authUtils.js.map +1 -1
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.d.ts.map +1 -1
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js +1 -1
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js.map +1 -1
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts.map +1 -1
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js +2 -5
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js.map +1 -1
- package/dist/mcp-server/transports/http/sessionStore.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/sessionStore.js +2 -2
- package/dist/mcp-server/transports/http/sessionStore.js.map +1 -1
- package/dist/services/canvas/core/CanvasRegistry.js +1 -1
- package/dist/services/canvas/core/CanvasRegistry.js.map +1 -1
- package/dist/services/canvas/core/DataCanvas.d.ts.map +1 -1
- package/dist/services/canvas/core/DataCanvas.js +7 -5
- package/dist/services/canvas/core/DataCanvas.js.map +1 -1
- package/dist/services/canvas/core/canvasFactory.d.ts.map +1 -1
- package/dist/services/canvas/core/canvasFactory.js +2 -2
- package/dist/services/canvas/core/canvasFactory.js.map +1 -1
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.d.ts.map +1 -1
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.js +25 -16
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.js.map +1 -1
- package/dist/services/llm/providers/openrouter.provider.js +1 -1
- package/dist/services/llm/providers/openrouter.provider.js.map +1 -1
- package/dist/services/speech/providers/elevenlabs.provider.js +3 -3
- package/dist/services/speech/providers/elevenlabs.provider.js.map +1 -1
- package/dist/services/speech/providers/whisper.provider.d.ts.map +1 -1
- package/dist/services/speech/providers/whisper.provider.js +5 -5
- package/dist/services/speech/providers/whisper.provider.js.map +1 -1
- package/dist/storage/core/StorageService.d.ts.map +1 -1
- package/dist/storage/core/StorageService.js +3 -6
- package/dist/storage/core/StorageService.js.map +1 -1
- package/dist/storage/core/storageFactory.d.ts.map +1 -1
- package/dist/storage/core/storageFactory.js +12 -15
- package/dist/storage/core/storageFactory.js.map +1 -1
- package/dist/storage/core/storageValidation.d.ts +13 -13
- package/dist/storage/core/storageValidation.d.ts.map +1 -1
- package/dist/storage/core/storageValidation.js +49 -125
- package/dist/storage/core/storageValidation.js.map +1 -1
- package/dist/storage/providers/cloudflare/d1Provider.d.ts.map +1 -1
- package/dist/storage/providers/cloudflare/d1Provider.js +5 -3
- package/dist/storage/providers/cloudflare/d1Provider.js.map +1 -1
- package/dist/storage/providers/cloudflare/kvProvider.d.ts.map +1 -1
- package/dist/storage/providers/cloudflare/kvProvider.js +1 -1
- package/dist/storage/providers/cloudflare/kvProvider.js.map +1 -1
- package/dist/storage/providers/cloudflare/r2Provider.d.ts.map +1 -1
- package/dist/storage/providers/cloudflare/r2Provider.js +3 -3
- package/dist/storage/providers/cloudflare/r2Provider.js.map +1 -1
- package/dist/storage/providers/fileSystem/fileSystemProvider.js +4 -4
- package/dist/storage/providers/fileSystem/fileSystemProvider.js.map +1 -1
- package/dist/storage/providers/inMemory/inMemoryProvider.d.ts +1 -1
- package/dist/storage/providers/inMemory/inMemoryProvider.d.ts.map +1 -1
- package/dist/storage/providers/inMemory/inMemoryProvider.js +6 -5
- package/dist/storage/providers/inMemory/inMemoryProvider.js.map +1 -1
- package/dist/testing/fuzz.d.ts.map +1 -1
- package/dist/testing/fuzz.js +7 -1
- package/dist/testing/fuzz.js.map +1 -1
- package/dist/testing/index.d.ts +15 -2
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +51 -6
- package/dist/testing/index.js.map +1 -1
- package/dist/types-global/errors.d.ts +7 -4
- package/dist/types-global/errors.d.ts.map +1 -1
- package/dist/types-global/errors.js.map +1 -1
- package/dist/utils/formatting/codeSpan.d.ts +27 -0
- package/dist/utils/formatting/codeSpan.d.ts.map +1 -0
- package/dist/utils/formatting/codeSpan.js +42 -0
- package/dist/utils/formatting/codeSpan.js.map +1 -0
- package/dist/utils/formatting/diffFormatter.d.ts.map +1 -1
- package/dist/utils/formatting/diffFormatter.js +7 -15
- package/dist/utils/formatting/diffFormatter.js.map +1 -1
- package/dist/utils/formatting/markdownBuilder.d.ts +12 -5
- package/dist/utils/formatting/markdownBuilder.d.ts.map +1 -1
- package/dist/utils/formatting/markdownBuilder.js +14 -2
- package/dist/utils/formatting/markdownBuilder.js.map +1 -1
- package/dist/utils/formatting/tableFormatter.d.ts.map +1 -1
- package/dist/utils/formatting/tableFormatter.js +5 -9
- package/dist/utils/formatting/tableFormatter.js.map +1 -1
- package/dist/utils/formatting/treeFormatter.d.ts.map +1 -1
- package/dist/utils/formatting/treeFormatter.js +5 -9
- package/dist/utils/formatting/treeFormatter.js.map +1 -1
- package/dist/utils/internal/error-handler/errorHandler.d.ts +17 -10
- package/dist/utils/internal/error-handler/errorHandler.d.ts.map +1 -1
- package/dist/utils/internal/error-handler/errorHandler.js +47 -26
- package/dist/utils/internal/error-handler/errorHandler.js.map +1 -1
- package/dist/utils/internal/error-handler/mappings.d.ts +17 -1
- package/dist/utils/internal/error-handler/mappings.d.ts.map +1 -1
- package/dist/utils/internal/error-handler/mappings.js +22 -1
- package/dist/utils/internal/error-handler/mappings.js.map +1 -1
- package/dist/utils/internal/error-handler/types.d.ts +2 -0
- package/dist/utils/internal/error-handler/types.d.ts.map +1 -1
- package/dist/utils/internal/logger.d.ts +75 -3
- package/dist/utils/internal/logger.d.ts.map +1 -1
- package/dist/utils/internal/logger.js +181 -52
- package/dist/utils/internal/logger.js.map +1 -1
- package/dist/utils/internal/performance.d.ts +11 -0
- package/dist/utils/internal/performance.d.ts.map +1 -1
- package/dist/utils/internal/performance.js +46 -12
- package/dist/utils/internal/performance.js.map +1 -1
- package/dist/utils/network/fetchWithTimeout.d.ts +11 -5
- package/dist/utils/network/fetchWithTimeout.d.ts.map +1 -1
- package/dist/utils/network/fetchWithTimeout.js +50 -23
- package/dist/utils/network/fetchWithTimeout.js.map +1 -1
- package/dist/utils/network/retry.d.ts +16 -8
- package/dist/utils/network/retry.d.ts.map +1 -1
- package/dist/utils/network/retry.js +19 -8
- package/dist/utils/network/retry.js.map +1 -1
- package/dist/utils/overflow/outlineOnOverflow.d.ts +18 -2
- package/dist/utils/overflow/outlineOnOverflow.d.ts.map +1 -1
- package/dist/utils/overflow/outlineOnOverflow.js +28 -3
- package/dist/utils/overflow/outlineOnOverflow.js.map +1 -1
- package/dist/utils/pagination/pagination.d.ts +3 -1
- package/dist/utils/pagination/pagination.d.ts.map +1 -1
- package/dist/utils/pagination/pagination.js +10 -2
- package/dist/utils/pagination/pagination.js.map +1 -1
- package/dist/utils/parsing/csvParser.d.ts.map +1 -1
- package/dist/utils/parsing/csvParser.js +4 -2
- package/dist/utils/parsing/csvParser.js.map +1 -1
- package/dist/utils/parsing/htmlExtractor.js +1 -1
- package/dist/utils/parsing/htmlExtractor.js.map +1 -1
- package/dist/utils/parsing/jsonParser.d.ts.map +1 -1
- package/dist/utils/parsing/jsonParser.js +3 -1
- package/dist/utils/parsing/jsonParser.js.map +1 -1
- package/dist/utils/parsing/xmlParser.d.ts.map +1 -1
- package/dist/utils/parsing/xmlParser.js +3 -1
- package/dist/utils/parsing/xmlParser.js.map +1 -1
- package/dist/utils/parsing/yamlParser.d.ts.map +1 -1
- package/dist/utils/parsing/yamlParser.js +3 -1
- package/dist/utils/parsing/yamlParser.js.map +1 -1
- package/dist/utils/security/idGenerator.d.ts.map +1 -1
- package/dist/utils/security/idGenerator.js +20 -4
- package/dist/utils/security/idGenerator.js.map +1 -1
- package/dist/utils/security/sanitization.d.ts +31 -0
- package/dist/utils/security/sanitization.d.ts.map +1 -1
- package/dist/utils/security/sanitization.js +98 -11
- package/dist/utils/security/sanitization.js.map +1 -1
- package/dist/utils/telemetry/attributes.d.ts +16 -1
- package/dist/utils/telemetry/attributes.d.ts.map +1 -1
- package/dist/utils/telemetry/attributes.js +16 -1
- package/dist/utils/telemetry/attributes.js.map +1 -1
- package/dist/utils/telemetry/instrumentation.d.ts +9 -3
- package/dist/utils/telemetry/instrumentation.d.ts.map +1 -1
- package/dist/utils/telemetry/instrumentation.js +85 -13
- package/dist/utils/telemetry/instrumentation.js.map +1 -1
- package/framework-skills/api-auth/SKILL.md +3 -1
- package/framework-skills/api-canvas/SKILL.md +3 -3
- package/framework-skills/api-config/SKILL.md +6 -3
- package/framework-skills/api-context/SKILL.md +3 -3
- package/framework-skills/api-errors/SKILL.md +16 -11
- package/framework-skills/api-linter/SKILL.md +7 -3
- package/framework-skills/api-telemetry/SKILL.md +31 -11
- package/framework-skills/api-testing/SKILL.md +5 -3
- package/framework-skills/api-utils/SKILL.md +9 -9
- package/framework-skills/api-utils/references/formatting.md +1 -1
- package/framework-skills/api-utils/references/parsing.md +2 -2
- package/framework-skills/api-utils/references/security.md +6 -4
- package/framework-skills/git-wrapup/SKILL.md +5 -2
- package/framework-skills/maintenance/SKILL.md +2 -2
- package/framework-skills/polish-docs-meta/SKILL.md +1 -1
- package/framework-skills/polish-docs-meta/references/readme.md +1 -0
- package/framework-skills/release-and-publish/SKILL.md +2 -2
- package/framework-skills/techniques/SKILL.md +1 -1
- package/framework-skills/techniques/references/outline-on-overflow.md +12 -7
- package/package.json +18 -3
- package/scripts/check-skill-versions.ts +103 -22
- package/scripts/devcheck.ts +4 -3
- package/scripts/lint-packaging.ts +38 -1
- package/templates/.env.example +4 -0
- package/templates/Dockerfile +26 -6
- package/templates/package.json +1 -0
|
@@ -45,6 +45,18 @@ function isAllowedUrl(input, protocols) {
|
|
|
45
45
|
}
|
|
46
46
|
/** A plain decimal: optional sign, optional fraction, no exponent or separators. */
|
|
47
47
|
const NUMERIC_STRING = /^[+-]?([0-9]*\.)?[0-9]+$/;
|
|
48
|
+
/** `data.reason` + recovery shared by every `sanitizeNumber` rejection. */
|
|
49
|
+
const INVALID_NUMBER = {
|
|
50
|
+
reason: 'invalid_number',
|
|
51
|
+
recovery: {
|
|
52
|
+
hint: 'Provide a finite decimal number, such as 42 or -3.5, without an exponent or thousands separators.',
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
const PATH_REJECTION_HINTS = {
|
|
56
|
+
invalid_path: 'Provide a non-empty path string that contains no null bytes.',
|
|
57
|
+
path_traversal: 'Provide a relative path that stays inside the permitted directory, with no `..` segments climbing out of it.',
|
|
58
|
+
absolute_path_disallowed: 'Provide a relative path instead of an absolute one.',
|
|
59
|
+
};
|
|
48
60
|
// Dynamically import 'path' only in Node.js environments.
|
|
49
61
|
// Top-level await ensures the module is loaded before any sanitizePath call.
|
|
50
62
|
let pathModule;
|
|
@@ -341,7 +353,7 @@ export class Sanitization {
|
|
|
341
353
|
operation: 'Sanitization.sanitizeString.jsAttempt',
|
|
342
354
|
additionalContext: { inputSnippet: input.substring(0, 50) },
|
|
343
355
|
}));
|
|
344
|
-
throw validationError('JavaScript sanitization is not supported through sanitizeString due to security risks.');
|
|
356
|
+
throw validationError('JavaScript sanitization is not supported through sanitizeString due to security risks.', { reason: 'unsupported_sanitize_context' });
|
|
345
357
|
default: {
|
|
346
358
|
const sanitizeHtmlFn = await loadSanitizeHtml();
|
|
347
359
|
return sanitizeHtmlFn(input, { allowedTags: [], allowedAttributes: {} });
|
|
@@ -392,7 +404,13 @@ export class Sanitization {
|
|
|
392
404
|
return trimmedInput;
|
|
393
405
|
}
|
|
394
406
|
catch (error) {
|
|
395
|
-
throw validationError(error instanceof Error ? error.message : 'Invalid or unsafe URL provided.', {
|
|
407
|
+
throw validationError(error instanceof Error ? error.message : 'Invalid or unsafe URL provided.', {
|
|
408
|
+
input,
|
|
409
|
+
reason: 'invalid_url',
|
|
410
|
+
recovery: {
|
|
411
|
+
hint: `Provide an absolute URL with a host and no whitespace or angle brackets, using one of these schemes: ${allowedProtocols.join(', ')}.`,
|
|
412
|
+
},
|
|
413
|
+
});
|
|
396
414
|
}
|
|
397
415
|
});
|
|
398
416
|
}
|
|
@@ -438,11 +456,16 @@ export class Sanitization {
|
|
|
438
456
|
...(resolvedRootDir && { rootDir: resolvedRootDir }),
|
|
439
457
|
};
|
|
440
458
|
let wasAbsoluteInitially = false;
|
|
459
|
+
const rejectPath = (message, reason) => validationError(message, {
|
|
460
|
+
input: originalInput,
|
|
461
|
+
reason,
|
|
462
|
+
recovery: { hint: PATH_REJECTION_HINTS[reason] },
|
|
463
|
+
});
|
|
441
464
|
try {
|
|
442
465
|
if (!input || typeof input !== 'string')
|
|
443
|
-
throw
|
|
466
|
+
throw rejectPath('Invalid path input: must be a non-empty string.', 'invalid_path');
|
|
444
467
|
if (input.includes('\0'))
|
|
445
|
-
throw
|
|
468
|
+
throw rejectPath('Path contains null byte, which is disallowed.', 'invalid_path');
|
|
446
469
|
let normalized = path.normalize(input);
|
|
447
470
|
wasAbsoluteInitially = path.isAbsolute(normalized);
|
|
448
471
|
if (effectiveOptions.toPosix) {
|
|
@@ -452,18 +475,18 @@ export class Sanitization {
|
|
|
452
475
|
if (resolvedRootDir) {
|
|
453
476
|
const fullPath = path.resolve(resolvedRootDir, normalized);
|
|
454
477
|
if (!fullPath.startsWith(resolvedRootDir + path.sep) && fullPath !== resolvedRootDir) {
|
|
455
|
-
throw
|
|
478
|
+
throw rejectPath('Path traversal detected: attempts to escape the defined root directory.', 'path_traversal');
|
|
456
479
|
}
|
|
457
480
|
finalSanitizedPath = path.relative(resolvedRootDir, fullPath);
|
|
458
481
|
finalSanitizedPath = finalSanitizedPath === '' ? '.' : finalSanitizedPath;
|
|
459
482
|
if (path.isAbsolute(finalSanitizedPath) && !effectiveOptions.allowAbsolute) {
|
|
460
|
-
throw
|
|
483
|
+
throw rejectPath('Path resolved to absolute outside root when absolute paths are disallowed.', 'path_traversal');
|
|
461
484
|
}
|
|
462
485
|
}
|
|
463
486
|
else {
|
|
464
487
|
if (path.isAbsolute(normalized)) {
|
|
465
488
|
if (!effectiveOptions.allowAbsolute) {
|
|
466
|
-
throw
|
|
489
|
+
throw rejectPath('Absolute paths are disallowed by current options.', 'absolute_path_disallowed');
|
|
467
490
|
}
|
|
468
491
|
else {
|
|
469
492
|
finalSanitizedPath = normalized;
|
|
@@ -474,7 +497,7 @@ export class Sanitization {
|
|
|
474
497
|
const currentWorkingDir = path.resolve('.');
|
|
475
498
|
if (!resolvedAgainstCwd.startsWith(currentWorkingDir + path.sep) &&
|
|
476
499
|
resolvedAgainstCwd !== currentWorkingDir) {
|
|
477
|
-
throw
|
|
500
|
+
throw rejectPath('Relative path traversal detected (escapes current working directory context).', 'path_traversal');
|
|
478
501
|
}
|
|
479
502
|
finalSanitizedPath = normalized;
|
|
480
503
|
}
|
|
@@ -498,7 +521,9 @@ export class Sanitization {
|
|
|
498
521
|
errorMessage: error instanceof Error ? error.message : String(error),
|
|
499
522
|
},
|
|
500
523
|
}));
|
|
501
|
-
|
|
524
|
+
if (error instanceof McpError)
|
|
525
|
+
throw error;
|
|
526
|
+
throw rejectPath(error instanceof Error ? error.message : 'Invalid or unsafe path provided.', 'invalid_path');
|
|
502
527
|
}
|
|
503
528
|
}
|
|
504
529
|
/**
|
|
@@ -545,6 +570,8 @@ export class Sanitization {
|
|
|
545
570
|
throw validationError(`JSON string exceeds maximum allowed size of ${maxSize} bytes.`, {
|
|
546
571
|
actualSize: computeBytes(input),
|
|
547
572
|
maxSize,
|
|
573
|
+
reason: 'json_too_large',
|
|
574
|
+
recovery: { hint: `Send a JSON payload of at most ${maxSize} bytes.` },
|
|
548
575
|
});
|
|
549
576
|
}
|
|
550
577
|
return JSON.parse(input);
|
|
@@ -554,6 +581,8 @@ export class Sanitization {
|
|
|
554
581
|
throw error;
|
|
555
582
|
throw validationError(error instanceof Error ? error.message : 'Invalid JSON format.', {
|
|
556
583
|
inputPreview: input.length > 100 ? `${input.substring(0, 100)}...` : input,
|
|
584
|
+
reason: 'invalid_json',
|
|
585
|
+
recovery: { hint: 'Send the value as a well-formed JSON string.' },
|
|
557
586
|
});
|
|
558
587
|
}
|
|
559
588
|
}
|
|
@@ -591,7 +620,10 @@ export class Sanitization {
|
|
|
591
620
|
if (typeof input === 'string') {
|
|
592
621
|
const trimmedInput = input.trim();
|
|
593
622
|
if (!NUMERIC_STRING.test(trimmedInput)) {
|
|
594
|
-
throw validationError('Invalid number format: input is empty or not numeric.', {
|
|
623
|
+
throw validationError('Invalid number format: input is empty or not numeric.', {
|
|
624
|
+
input,
|
|
625
|
+
...INVALID_NUMBER,
|
|
626
|
+
});
|
|
595
627
|
}
|
|
596
628
|
value = parseFloat(trimmedInput);
|
|
597
629
|
}
|
|
@@ -601,10 +633,14 @@ export class Sanitization {
|
|
|
601
633
|
else {
|
|
602
634
|
throw validationError('Invalid input type: expected number or string.', {
|
|
603
635
|
input: String(input),
|
|
636
|
+
...INVALID_NUMBER,
|
|
604
637
|
});
|
|
605
638
|
}
|
|
606
639
|
if (Number.isNaN(value) || !Number.isFinite(value)) {
|
|
607
|
-
throw validationError('Invalid number value (NaN or Infinity).', {
|
|
640
|
+
throw validationError('Invalid number value (NaN or Infinity).', {
|
|
641
|
+
input,
|
|
642
|
+
...INVALID_NUMBER,
|
|
643
|
+
});
|
|
608
644
|
}
|
|
609
645
|
let clamped = false;
|
|
610
646
|
const originalValueForLog = value;
|
|
@@ -675,6 +711,57 @@ export class Sanitization {
|
|
|
675
711
|
return '[Log Sanitization Failed]';
|
|
676
712
|
}
|
|
677
713
|
}
|
|
714
|
+
/**
|
|
715
|
+
* Redacts, serializes, and caps a value for a log field: {@link sanitizeForLogging},
|
|
716
|
+
* then `JSON.stringify`, then truncation to at most `maxBytes` UTF-8 bytes.
|
|
717
|
+
*
|
|
718
|
+
* Redaction runs first, so a cut can never keep the prefix of a secret the
|
|
719
|
+
* redactor would have replaced. The cut lands on a character boundary — never
|
|
720
|
+
* inside a multi-byte sequence or between the halves of a surrogate pair — so
|
|
721
|
+
* the result is always well-formed. It is a prefix of the whole serialization,
|
|
722
|
+
* so a truncated payload is no longer valid JSON; `truncated` says so.
|
|
723
|
+
*
|
|
724
|
+
* Returned as a string rather than an object because the logger drops values
|
|
725
|
+
* nested past its sanitize depth, which would silently strip the deep parts of
|
|
726
|
+
* a payload. A value `JSON.stringify` rejects (a `bigint`) yields
|
|
727
|
+
* `'[Log Serialization Failed]'` rather than throwing into the caller's path.
|
|
728
|
+
*
|
|
729
|
+
* Key-name redaction only: a secret inside a free-form string value (a query,
|
|
730
|
+
* a message) is serialized as-is.
|
|
731
|
+
*
|
|
732
|
+
* @param value - The value to serialize.
|
|
733
|
+
* @param maxBytes - Maximum UTF-8 byte length of `text`.
|
|
734
|
+
* @returns `text`, the serialized and possibly truncated payload, and `truncated`.
|
|
735
|
+
* @example
|
|
736
|
+
* ```ts
|
|
737
|
+
* sanitization.serializeForLogging({ query: 'q', apiKey: 'sk-1' }, 16_384);
|
|
738
|
+
* // => { text: '{"query":"q","apiKey":"[REDACTED]"}', truncated: false }
|
|
739
|
+
* ```
|
|
740
|
+
*/
|
|
741
|
+
serializeForLogging(value, maxBytes) {
|
|
742
|
+
let json;
|
|
743
|
+
try {
|
|
744
|
+
json = JSON.stringify(this.sanitizeForLogging(value)) ?? 'undefined';
|
|
745
|
+
}
|
|
746
|
+
catch {
|
|
747
|
+
return { text: '[Log Serialization Failed]', truncated: false };
|
|
748
|
+
}
|
|
749
|
+
// Counted by hand rather than with `TextEncoder.encodeInto`, whose fill of a
|
|
750
|
+
// short buffer differs by runtime (Node stops up to two bytes early). A
|
|
751
|
+
// high surrogate starts a 4-byte pair and is sliced only with its partner;
|
|
752
|
+
// `JSON.stringify` escapes lone surrogates, so none reach here.
|
|
753
|
+
let bytes = 0;
|
|
754
|
+
for (let i = 0; i < json.length; i++) {
|
|
755
|
+
const unit = json.charCodeAt(i);
|
|
756
|
+
const width = unit < 0x80 ? 1 : unit < 0x800 ? 2 : unit >= 0xd800 && unit < 0xdc00 ? 4 : 3;
|
|
757
|
+
if (bytes + width > maxBytes)
|
|
758
|
+
return { text: json.slice(0, i), truncated: true };
|
|
759
|
+
bytes += width;
|
|
760
|
+
if (width === 4)
|
|
761
|
+
i++;
|
|
762
|
+
}
|
|
763
|
+
return { text: json, truncated: false };
|
|
764
|
+
}
|
|
678
765
|
/**
|
|
679
766
|
* Recursively redacts sensitive fields in an object or array in place.
|
|
680
767
|
* @param obj - The object or array to redact.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitization.js","sourceRoot":"","sources":["../../../src/utils/security/sanitization.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sanitization.js","sourceRoot":"","sources":["../../../src/utils/security/sanitization.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,10 +35,19 @@ export declare const ATTR_MCP_TOOL_SUCCESS = "mcp.tool.success";
|
|
|
35
35
|
* dashboards can separate incomplete rounds from completed calls.
|
|
36
36
|
*/
|
|
37
37
|
export declare const ATTR_MCP_TOOL_INPUT_REQUIRED = "mcp.tool.input_required";
|
|
38
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* JSON-RPC error code from the thrown `McpError`, present when `mcp.tool.success` is `false`.
|
|
40
|
+
* Also the code label on `mcp.tool.rejections`, where it is the code the caller received.
|
|
41
|
+
*/
|
|
39
42
|
export declare const ATTR_MCP_TOOL_ERROR_CODE = "mcp.tool.error_code";
|
|
40
43
|
/** Broad error category: 'upstream' (external API), 'server' (internal bug), or 'client' (bad input). */
|
|
41
44
|
export declare const ATTR_MCP_TOOL_ERROR_CATEGORY = "mcp.tool.error_category";
|
|
45
|
+
/**
|
|
46
|
+
* How a measured tool call ended, on `mcp.tool.calls` and `mcp.tool.errors`: `ok` (a result
|
|
47
|
+
* or an `input_required` round), `error`, or `cancelled` (`RequestCancelled`, -32011 — the
|
|
48
|
+
* caller hung up). Separates a hang-up from a failure without moving `mcp.tool.success`.
|
|
49
|
+
*/
|
|
50
|
+
export declare const ATTR_MCP_TOOL_OUTCOME = "mcp.tool.outcome";
|
|
42
51
|
/** Whether the tool returned a result containing partial failures (non-empty `failed` array). */
|
|
43
52
|
export declare const ATTR_MCP_TOOL_PARTIAL_SUCCESS = "mcp.tool.partial_success";
|
|
44
53
|
/** Whether the tool populated agent-facing enrichment (`ctx.enrich`) on this call. */
|
|
@@ -177,6 +186,12 @@ export declare const ATTR_MCP_AUTH_SUBJECT = "mcp.auth.subject";
|
|
|
177
186
|
export declare const ATTR_MCP_CONNECTION_TRANSPORT = "mcp.connection.transport";
|
|
178
187
|
/** Classified JSON-RPC error code from ErrorHandler (e.g., `-32001`, `-32602`). */
|
|
179
188
|
export declare const ATTR_MCP_ERROR_CLASSIFIED_CODE = "mcp.error.classified_code";
|
|
189
|
+
/**
|
|
190
|
+
* Origin bucket of the classified code — `upstream`, `server`, or `client` — from the same
|
|
191
|
+
* `getErrorCategory` that fills `mcp.tool.error_category` and `mcp.prompt.error_category`,
|
|
192
|
+
* so it separates the canvas tenant-cap refusal (`server`) from upstream throttling on `-32003`.
|
|
193
|
+
*/
|
|
194
|
+
export declare const ATTR_MCP_ERROR_CATEGORY = "mcp.error.category";
|
|
180
195
|
/**
|
|
181
196
|
* Log level a definition declared for this failure mode: `debug`, `info`,
|
|
182
197
|
* `notice`, or `warning`. Set only on a record whose declared severity
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../../../src/utils/telemetry/attributes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,uBAAuB,CAAC;AAE5D,iGAAiG;AACjG,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AAMpD;;GAEG;AACH,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAElD,0DAA0D;AAC1D,eAAO,MAAM,yBAAyB,yBAAyB,CAAC;AAEhE,wDAAwD;AACxD,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAElE,yEAAyE;AACzE,eAAO,MAAM,yBAAyB,yBAAyB,CAAC;AAEhE;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AAExD;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,4BAA4B,CAAC;AAEtE
|
|
1
|
+
{"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../../../src/utils/telemetry/attributes.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,10 +41,19 @@ export const ATTR_MCP_TOOL_SUCCESS = 'mcp.tool.success';
|
|
|
41
41
|
* dashboards can separate incomplete rounds from completed calls.
|
|
42
42
|
*/
|
|
43
43
|
export const ATTR_MCP_TOOL_INPUT_REQUIRED = 'mcp.tool.input_required';
|
|
44
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* JSON-RPC error code from the thrown `McpError`, present when `mcp.tool.success` is `false`.
|
|
46
|
+
* Also the code label on `mcp.tool.rejections`, where it is the code the caller received.
|
|
47
|
+
*/
|
|
45
48
|
export const ATTR_MCP_TOOL_ERROR_CODE = 'mcp.tool.error_code';
|
|
46
49
|
/** Broad error category: 'upstream' (external API), 'server' (internal bug), or 'client' (bad input). */
|
|
47
50
|
export const ATTR_MCP_TOOL_ERROR_CATEGORY = 'mcp.tool.error_category';
|
|
51
|
+
/**
|
|
52
|
+
* How a measured tool call ended, on `mcp.tool.calls` and `mcp.tool.errors`: `ok` (a result
|
|
53
|
+
* or an `input_required` round), `error`, or `cancelled` (`RequestCancelled`, -32011 — the
|
|
54
|
+
* caller hung up). Separates a hang-up from a failure without moving `mcp.tool.success`.
|
|
55
|
+
*/
|
|
56
|
+
export const ATTR_MCP_TOOL_OUTCOME = 'mcp.tool.outcome';
|
|
48
57
|
/** Whether the tool returned a result containing partial failures (non-empty `failed` array). */
|
|
49
58
|
export const ATTR_MCP_TOOL_PARTIAL_SUCCESS = 'mcp.tool.partial_success';
|
|
50
59
|
/** Whether the tool populated agent-facing enrichment (`ctx.enrich`) on this call. */
|
|
@@ -228,6 +237,12 @@ export const ATTR_MCP_CONNECTION_TRANSPORT = 'mcp.connection.transport';
|
|
|
228
237
|
// ============================================================================
|
|
229
238
|
/** Classified JSON-RPC error code from ErrorHandler (e.g., `-32001`, `-32602`). */
|
|
230
239
|
export const ATTR_MCP_ERROR_CLASSIFIED_CODE = 'mcp.error.classified_code';
|
|
240
|
+
/**
|
|
241
|
+
* Origin bucket of the classified code — `upstream`, `server`, or `client` — from the same
|
|
242
|
+
* `getErrorCategory` that fills `mcp.tool.error_category` and `mcp.prompt.error_category`,
|
|
243
|
+
* so it separates the canvas tenant-cap refusal (`server`) from upstream throttling on `-32003`.
|
|
244
|
+
*/
|
|
245
|
+
export const ATTR_MCP_ERROR_CATEGORY = 'mcp.error.category';
|
|
231
246
|
/**
|
|
232
247
|
* Log level a definition declared for this failure mode: `debug`, `info`,
|
|
233
248
|
* `notice`, or `warning`. Set only on a record whose declared severity
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attributes.js","sourceRoot":"","sources":["../../../src/utils/telemetry/attributes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,+EAA+E;AAC/E,yDAAyD;AACzD,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AAE5D,iGAAiG;AACjG,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AAEpD,+EAA+E;AAC/E,gCAAgC;AAChC,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAElD,0DAA0D;AAC1D,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAAsB,CAAC;AAEhE,wDAAwD;AACxD,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAuB,CAAC;AAElE,yEAAyE;AACzE,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAAsB,CAAC;AAEhE;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAAkB,CAAC;AAExD;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAyB,CAAC;AAEtE
|
|
1
|
+
{"version":3,"file":"attributes.js","sourceRoot":"","sources":["../../../src/utils/telemetry/attributes.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,12 +27,18 @@ export declare let sdk: NodeSDK | null;
|
|
|
27
27
|
* `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT`, else `OTEL_EXPORTER_OTLP_ENDPOINT` + `v1/traces`)
|
|
28
28
|
* - OTLP metrics exporter + `PeriodicExportingMetricReader` at 15 s intervals (when a metrics
|
|
29
29
|
* endpoint resolves: `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT`, else the base + `v1/metrics`)
|
|
30
|
-
* -
|
|
31
|
-
*
|
|
30
|
+
* - OTLP log exporter + `BatchLogRecordProcessor` only when `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT`
|
|
31
|
+
* is set (never derived from the base), with the framework logger attached to the Logs API;
|
|
32
|
+
* otherwise no log record processors. Every list is passed explicitly, so `NodeSDK`'s
|
|
33
|
+
* env-driven defaults never export anything the framework config did not ask for
|
|
32
34
|
* - `TraceIdRatioBasedSampler` using `config.openTelemetry.samplingRatio`
|
|
33
35
|
* - Node auto-instrumentations (HTTP enabled, FS disabled)
|
|
34
|
-
* - Pino instrumentation
|
|
36
|
+
* - Pino instrumentation, which reaches only a `pino` loaded after `start()` — the framework
|
|
37
|
+
* logger's records carry `traceId`/`spanId` from the request context instead
|
|
35
38
|
* - Cloud resource attributes via `detectCloudResource()`
|
|
39
|
+
* - One diag logger: the framework's, writing every level to stderr at
|
|
40
|
+
* `config.openTelemetry.logLevel` (aliases resolved). `NodeSDK` would register a console
|
|
41
|
+
* logger of its own when `OTEL_LOG_LEVEL` is set, so its constructor never sees the variable.
|
|
36
42
|
*
|
|
37
43
|
* @returns Promise that resolves when initialization is complete (or was already complete)
|
|
38
44
|
* @throws Error if `NodeSDK.start()` or any lazy import fails; re-thrown after resetting `sdk` to `null`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../../src/utils/telemetry/instrumentation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../../src/utils/telemetry/instrumentation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAavD;;;;;GAKG;AACH,eAAO,IAAI,GAAG,EAAE,OAAO,GAAG,IAAW,CAAC;AAiGtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CA0K7D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,qBAAqB,CAAC,SAAS,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB3E"}
|
|
@@ -4,9 +4,16 @@
|
|
|
4
4
|
* Supports both Node.js (full NodeSDK) and serverless runtimes (lightweight telemetry).
|
|
5
5
|
* @module src/utils/telemetry/instrumentation
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
7
|
+
import { DiagLogLevel, diag } from '@opentelemetry/api';
|
|
8
8
|
import { config } from '../../config/index.js';
|
|
9
|
+
import { setOtelLogSink } from '../internal/logger.js';
|
|
9
10
|
import { runtimeCaps } from '../internal/runtime.js';
|
|
11
|
+
/**
|
|
12
|
+
* Metric export cadence, and the per-export timeout. The reader clamps a
|
|
13
|
+
* timeout longer than its interval down to it and logs a notice on every boot
|
|
14
|
+
* saying so, so the timeout is set to the interval outright.
|
|
15
|
+
*/
|
|
16
|
+
const METRIC_EXPORT_INTERVAL_MS = 15_000;
|
|
10
17
|
/**
|
|
11
18
|
* The active OpenTelemetry `NodeSDK` instance, or `null` when telemetry is disabled,
|
|
12
19
|
* the runtime is not Node/Bun, or the SDK has been shut down.
|
|
@@ -69,6 +76,36 @@ function detectCloudResource() {
|
|
|
69
76
|
}
|
|
70
77
|
return attrs;
|
|
71
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* A diag logger that writes every level to stderr. `DiagConsoleLogger` sends
|
|
81
|
+
* `info` and `debug` to stdout, which the stdio transport reserves for JSON-RPC.
|
|
82
|
+
*/
|
|
83
|
+
function createStderrDiagLogger(format) {
|
|
84
|
+
const write = (message, ...args) => {
|
|
85
|
+
process.stderr.write(`${format(message, ...args)}\n`);
|
|
86
|
+
};
|
|
87
|
+
return { debug: write, error: write, info: write, verbose: write, warn: write };
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Runs `construct` with `OTEL_LOG_LEVEL` absent from `process.env`, restoring
|
|
91
|
+
* it afterwards. `NodeSDK`'s constructor registers a `DiagConsoleLogger` of its
|
|
92
|
+
* own whenever the variable is set: it parses the raw value, so the
|
|
93
|
+
* framework's aliases (`warning`, `err`) read as unknown; it writes info and
|
|
94
|
+
* debug to stdout; and at `DEBUG` it announces its own registration there
|
|
95
|
+
* before anything could replace it. The framework's diag logger already
|
|
96
|
+
* carries the configured level, so the constructor never needs to see it.
|
|
97
|
+
*/
|
|
98
|
+
function withoutOtelLogLevelEnv(construct) {
|
|
99
|
+
const level = process.env.OTEL_LOG_LEVEL;
|
|
100
|
+
delete process.env.OTEL_LOG_LEVEL;
|
|
101
|
+
try {
|
|
102
|
+
return construct();
|
|
103
|
+
}
|
|
104
|
+
finally {
|
|
105
|
+
if (level !== undefined)
|
|
106
|
+
process.env.OTEL_LOG_LEVEL = level;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
72
109
|
/**
|
|
73
110
|
* Initializes the OpenTelemetry SDK with runtime-appropriate configuration.
|
|
74
111
|
* Idempotent — safe to call multiple times; subsequent calls return the existing promise or resolve immediately.
|
|
@@ -84,12 +121,18 @@ function detectCloudResource() {
|
|
|
84
121
|
* `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT`, else `OTEL_EXPORTER_OTLP_ENDPOINT` + `v1/traces`)
|
|
85
122
|
* - OTLP metrics exporter + `PeriodicExportingMetricReader` at 15 s intervals (when a metrics
|
|
86
123
|
* endpoint resolves: `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT`, else the base + `v1/metrics`)
|
|
87
|
-
* -
|
|
88
|
-
*
|
|
124
|
+
* - OTLP log exporter + `BatchLogRecordProcessor` only when `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT`
|
|
125
|
+
* is set (never derived from the base), with the framework logger attached to the Logs API;
|
|
126
|
+
* otherwise no log record processors. Every list is passed explicitly, so `NodeSDK`'s
|
|
127
|
+
* env-driven defaults never export anything the framework config did not ask for
|
|
89
128
|
* - `TraceIdRatioBasedSampler` using `config.openTelemetry.samplingRatio`
|
|
90
129
|
* - Node auto-instrumentations (HTTP enabled, FS disabled)
|
|
91
|
-
* - Pino instrumentation
|
|
130
|
+
* - Pino instrumentation, which reaches only a `pino` loaded after `start()` — the framework
|
|
131
|
+
* logger's records carry `traceId`/`spanId` from the request context instead
|
|
92
132
|
* - Cloud resource attributes via `detectCloudResource()`
|
|
133
|
+
* - One diag logger: the framework's, writing every level to stderr at
|
|
134
|
+
* `config.openTelemetry.logLevel` (aliases resolved). `NodeSDK` would register a console
|
|
135
|
+
* logger of its own when `OTEL_LOG_LEVEL` is set, so its constructor never sees the variable.
|
|
93
136
|
*
|
|
94
137
|
* @returns Promise that resolves when initialization is complete (or was already complete)
|
|
95
138
|
* @throws Error if `NodeSDK.start()` or any lazy import fails; re-thrown after resetting `sdk` to `null`
|
|
@@ -122,7 +165,7 @@ export async function initializeOpenTelemetry() {
|
|
|
122
165
|
}
|
|
123
166
|
try {
|
|
124
167
|
// Lazy-load Node-specific modules
|
|
125
|
-
const [{ HttpInstrumentation }, { OTLPMetricExporter }, { OTLPTraceExporter }, { PinoInstrumentation }, { resourceFromAttributes }, { PeriodicExportingMetricReader }, { NodeSDK }, { BatchSpanProcessor, TraceIdRatioBasedSampler }, { ATTR_DEPLOYMENT_ENVIRONMENT_NAME, ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION },] = await Promise.all([
|
|
168
|
+
const [{ HttpInstrumentation }, { OTLPMetricExporter }, { OTLPTraceExporter }, { PinoInstrumentation }, { resourceFromAttributes }, { PeriodicExportingMetricReader }, { NodeSDK }, { BatchSpanProcessor, TraceIdRatioBasedSampler }, { ATTR_DEPLOYMENT_ENVIRONMENT_NAME, ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION }, { format },] = await Promise.all([
|
|
126
169
|
import('@opentelemetry/instrumentation-http'),
|
|
127
170
|
import('@opentelemetry/exporter-metrics-otlp-http'),
|
|
128
171
|
import('@opentelemetry/exporter-trace-otlp-http'),
|
|
@@ -132,14 +175,20 @@ export async function initializeOpenTelemetry() {
|
|
|
132
175
|
import('@opentelemetry/sdk-node'),
|
|
133
176
|
import('@opentelemetry/sdk-trace-node'),
|
|
134
177
|
import('@opentelemetry/semantic-conventions'),
|
|
178
|
+
import('node:util'),
|
|
135
179
|
]);
|
|
136
180
|
const otelLogLevelString = config.openTelemetry.logLevel.toUpperCase();
|
|
137
|
-
|
|
138
|
-
|
|
181
|
+
diag.setLogger(createStderrDiagLogger(format), {
|
|
182
|
+
logLevel: DiagLogLevel[otelLogLevelString] ?? DiagLogLevel.INFO,
|
|
183
|
+
// The framework owns diag once OTel is on; replacing an earlier registration
|
|
184
|
+
// (a re-initialization after shutdown included) is not worth a stack trace.
|
|
185
|
+
suppressOverrideMessage: true,
|
|
186
|
+
});
|
|
139
187
|
const tracesEndpoint = config.openTelemetry.tracesEndpoint;
|
|
140
188
|
const metricsEndpoint = config.openTelemetry.metricsEndpoint;
|
|
141
|
-
|
|
142
|
-
|
|
189
|
+
const logsEndpoint = config.openTelemetry.logsEndpoint;
|
|
190
|
+
if (!tracesEndpoint && !metricsEndpoint && !logsEndpoint) {
|
|
191
|
+
diag.warn('OTEL_ENABLED is true, but no OTLP endpoint for traces, metrics, or logs is configured. OpenTelemetry will not export any telemetry. Set OTEL_EXPORTER_OTLP_ENDPOINT, or the signal-specific OTEL_EXPORTER_OTLP_TRACES_ENDPOINT / OTEL_EXPORTER_OTLP_METRICS_ENDPOINT / OTEL_EXPORTER_OTLP_LOGS_ENDPOINT.');
|
|
143
192
|
}
|
|
144
193
|
const resource = resourceFromAttributes({
|
|
145
194
|
[ATTR_SERVICE_NAME]: config.openTelemetry.serviceName,
|
|
@@ -161,22 +210,39 @@ export async function initializeOpenTelemetry() {
|
|
|
161
210
|
diag.info(`Using OTLP exporter for metrics, endpoint: ${metricsEndpoint}`);
|
|
162
211
|
metricReaders.push(new PeriodicExportingMetricReader({
|
|
163
212
|
exporter: new OTLPMetricExporter({ url: metricsEndpoint }),
|
|
164
|
-
exportIntervalMillis:
|
|
213
|
+
exportIntervalMillis: METRIC_EXPORT_INTERVAL_MS,
|
|
214
|
+
exportTimeoutMillis: METRIC_EXPORT_INTERVAL_MS,
|
|
165
215
|
}));
|
|
166
216
|
}
|
|
167
217
|
else {
|
|
168
218
|
diag.info('No OTLP metrics endpoint configured. Metrics will not be exported.');
|
|
169
219
|
}
|
|
220
|
+
/**
|
|
221
|
+
* The log packages are optional peers loaded only when log export is
|
|
222
|
+
* asked for, so a deployment without them never reaches these imports.
|
|
223
|
+
*/
|
|
224
|
+
const logRecordProcessors = [];
|
|
225
|
+
let loggerProvider;
|
|
226
|
+
if (logsEndpoint) {
|
|
227
|
+
const [{ BatchLogRecordProcessor }, { OTLPLogExporter }, { logs }] = await Promise.all([
|
|
228
|
+
import('@opentelemetry/sdk-logs'),
|
|
229
|
+
import('@opentelemetry/exporter-logs-otlp-http'),
|
|
230
|
+
import('@opentelemetry/api-logs'),
|
|
231
|
+
]);
|
|
232
|
+
diag.info(`Using OTLP exporter for logs, endpoint: ${logsEndpoint}`);
|
|
233
|
+
logRecordProcessors.push(new BatchLogRecordProcessor({ exporter: new OTLPLogExporter({ url: logsEndpoint }) }));
|
|
234
|
+
loggerProvider = logs;
|
|
235
|
+
}
|
|
170
236
|
/**
|
|
171
237
|
* All three lists are passed explicitly, empty or not: an omitted one
|
|
172
238
|
* makes `NodeSDK` build its own OTLP exporter from `OTEL_*` env vars
|
|
173
239
|
* (defaulting to localhost:4318), exporting outside the framework config.
|
|
174
240
|
*/
|
|
175
|
-
sdk = new NodeSDK({
|
|
241
|
+
sdk = withoutOtelLogLevelEnv(() => new NodeSDK({
|
|
176
242
|
resource,
|
|
177
243
|
spanProcessors,
|
|
178
244
|
metricReaders,
|
|
179
|
-
logRecordProcessors
|
|
245
|
+
logRecordProcessors,
|
|
180
246
|
sampler: new TraceIdRatioBasedSampler(config.openTelemetry.samplingRatio),
|
|
181
247
|
instrumentations: [
|
|
182
248
|
new HttpInstrumentation({
|
|
@@ -189,8 +255,13 @@ export async function initializeOpenTelemetry() {
|
|
|
189
255
|
},
|
|
190
256
|
}),
|
|
191
257
|
],
|
|
192
|
-
});
|
|
258
|
+
}));
|
|
193
259
|
sdk.start();
|
|
260
|
+
// `PinoInstrumentation` never sees the framework's `pino` (imported at module
|
|
261
|
+
// load, before `start()`), so the logger forwards its records to the Logs API itself.
|
|
262
|
+
if (loggerProvider) {
|
|
263
|
+
setOtelLogSink(loggerProvider.getLogger(config.openTelemetry.serviceName, config.openTelemetry.serviceVersion));
|
|
264
|
+
}
|
|
194
265
|
isOtelInitialized = true;
|
|
195
266
|
diag.info(`OpenTelemetry NodeSDK initialized for ${config.openTelemetry.serviceName} v${config.openTelemetry.serviceVersion}`);
|
|
196
267
|
}
|
|
@@ -227,6 +298,7 @@ export async function shutdownOpenTelemetry(timeoutMs = 5000) {
|
|
|
227
298
|
return;
|
|
228
299
|
}
|
|
229
300
|
let timer;
|
|
301
|
+
setOtelLogSink(undefined);
|
|
230
302
|
try {
|
|
231
303
|
const shutdownPromise = sdk.shutdown();
|
|
232
304
|
await new Promise((resolve, reject) => {
|