dd-trace 5.110.0 → 5.111.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.
Files changed (115) hide show
  1. package/README.md +13 -8
  2. package/ci/init.js +21 -2
  3. package/ci/vitest-no-worker-init-setup.mjs +430 -0
  4. package/ext/tags.js +2 -0
  5. package/index.d.ts +13 -0
  6. package/initialize.mjs +5 -6
  7. package/loader-hook.mjs +76 -55
  8. package/package.json +9 -9
  9. package/packages/datadog-instrumentations/src/fs.js +8 -6
  10. package/packages/datadog-instrumentations/src/graphql.js +26 -495
  11. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/graphql.js +201 -0
  12. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/index.js +1 -0
  13. package/packages/datadog-instrumentations/src/mongoose.js +14 -2
  14. package/packages/datadog-instrumentations/src/vitest-main-no-worker-init.js +1293 -0
  15. package/packages/datadog-instrumentations/src/vitest-main.js +1567 -0
  16. package/packages/datadog-instrumentations/src/vitest-util.js +249 -0
  17. package/packages/datadog-instrumentations/src/vitest-worker.js +753 -0
  18. package/packages/datadog-instrumentations/src/vitest.js +11 -1855
  19. package/packages/datadog-plugin-aws-durable-execution-sdk-js/src/client.js +2 -2
  20. package/packages/datadog-plugin-aws-durable-execution-sdk-js/src/context.js +18 -10
  21. package/packages/datadog-plugin-aws-durable-execution-sdk-js/src/util.js +47 -11
  22. package/packages/datadog-plugin-cucumber/src/index.js +1 -1
  23. package/packages/datadog-plugin-cypress/src/cypress-plugin.js +10 -4
  24. package/packages/datadog-plugin-cypress/src/support.js +45 -1
  25. package/packages/datadog-plugin-express/src/code_origin.js +1 -1
  26. package/packages/datadog-plugin-fastify/src/code_origin.js +1 -1
  27. package/packages/datadog-plugin-graphql/src/execute.js +627 -11
  28. package/packages/datadog-plugin-graphql/src/index.js +20 -8
  29. package/packages/datadog-plugin-graphql/src/parse.js +24 -4
  30. package/packages/datadog-plugin-graphql/src/validate.js +16 -5
  31. package/packages/datadog-plugin-http/src/index.js +6 -8
  32. package/packages/datadog-plugin-jest/src/index.js +1 -1
  33. package/packages/datadog-plugin-mocha/src/index.js +1 -1
  34. package/packages/datadog-plugin-openai/src/services.js +2 -2
  35. package/packages/datadog-plugin-playwright/src/index.js +1 -1
  36. package/packages/datadog-plugin-vitest/src/index.js +69 -63
  37. package/packages/datadog-shimmer/src/shimmer.js +37 -16
  38. package/packages/dd-trace/src/aiguard/sdk.js +2 -2
  39. package/packages/dd-trace/src/appsec/api_security/sampler.js +3 -3
  40. package/packages/dd-trace/src/appsec/channels.js +3 -1
  41. package/packages/dd-trace/src/appsec/downstream_requests.js +4 -4
  42. package/packages/dd-trace/src/appsec/graphql.js +5 -5
  43. package/packages/dd-trace/src/appsec/iast/analyzers/nosql-injection-mongodb-analyzer.js +26 -19
  44. package/packages/dd-trace/src/appsec/iast/security-controls/index.js +2 -2
  45. package/packages/dd-trace/src/appsec/iast/telemetry/index.js +2 -1
  46. package/packages/dd-trace/src/appsec/index.js +10 -1
  47. package/packages/dd-trace/src/appsec/lambda.js +135 -0
  48. package/packages/dd-trace/src/appsec/reporter.js +49 -10
  49. package/packages/dd-trace/src/appsec/telemetry/index.js +1 -1
  50. package/packages/dd-trace/src/appsec/waf/index.js +16 -4
  51. package/packages/dd-trace/src/appsec/waf/waf_context_wrapper.js +4 -4
  52. package/packages/dd-trace/src/ci-visibility/early-flake-detection/get-known-tests.js +21 -6
  53. package/packages/dd-trace/src/ci-visibility/exporters/agent-proxy/index.js +2 -2
  54. package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +1 -1
  55. package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +1 -1
  56. package/packages/dd-trace/src/ci-visibility/exporters/agentless/index.js +3 -2
  57. package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +1 -1
  58. package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +55 -13
  59. package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +2 -2
  60. package/packages/dd-trace/src/ci-visibility/exporters/test-worker/writer.js +17 -0
  61. package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +47 -26
  62. package/packages/dd-trace/src/ci-visibility/log-submission/log-submission-plugin.js +2 -2
  63. package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +64 -53
  64. package/packages/dd-trace/src/ci-visibility/requests/upload-coverage-report.js +3 -3
  65. package/packages/dd-trace/src/ci-visibility/test-management/get-test-management-tests.js +23 -5
  66. package/packages/dd-trace/src/ci-visibility/test-optimization-http-cache-schema.js +128 -0
  67. package/packages/dd-trace/src/ci-visibility/test-optimization-http-cache.js +287 -0
  68. package/packages/dd-trace/src/config/defaults.js +3 -2
  69. package/packages/dd-trace/src/config/generated-config-types.d.ts +61 -57
  70. package/packages/dd-trace/src/config/helper.js +1 -0
  71. package/packages/dd-trace/src/config/index.js +35 -22
  72. package/packages/dd-trace/src/config/major-overrides.js +4 -2
  73. package/packages/dd-trace/src/config/remote_config.js +1 -1
  74. package/packages/dd-trace/src/config/supported-configurations.json +90 -56
  75. package/packages/dd-trace/src/constants.js +7 -0
  76. package/packages/dd-trace/src/datastreams/processor.js +11 -3
  77. package/packages/dd-trace/src/exporters/agent/index.js +1 -1
  78. package/packages/dd-trace/src/exporters/agentless/writer.js +4 -4
  79. package/packages/dd-trace/src/llmobs/index.js +1 -1
  80. package/packages/dd-trace/src/llmobs/plugins/base.js +4 -4
  81. package/packages/dd-trace/src/llmobs/plugins/langgraph/index.js +1 -1
  82. package/packages/dd-trace/src/llmobs/sdk.js +3 -3
  83. package/packages/dd-trace/src/llmobs/span_processor.js +1 -1
  84. package/packages/dd-trace/src/llmobs/tagger.js +3 -3
  85. package/packages/dd-trace/src/llmobs/writers/base.js +1 -1
  86. package/packages/dd-trace/src/opentelemetry/metrics/index.js +54 -5
  87. package/packages/dd-trace/src/opentelemetry/metrics/otlp_span_stats_exporter.js +40 -0
  88. package/packages/dd-trace/src/opentelemetry/metrics/otlp_span_stats_transformer.js +169 -0
  89. package/packages/dd-trace/src/opentelemetry/otlp/otlp_http_exporter_base.js +38 -39
  90. package/packages/dd-trace/src/opentelemetry/trace/index.js +4 -0
  91. package/packages/dd-trace/src/opentelemetry/tracer_provider.js +1 -1
  92. package/packages/dd-trace/src/opentracing/tracer.js +6 -1
  93. package/packages/dd-trace/src/plugin_manager.js +7 -7
  94. package/packages/dd-trace/src/plugins/ci_plugin.js +12 -3
  95. package/packages/dd-trace/src/plugins/util/llm.js +6 -1
  96. package/packages/dd-trace/src/plugins/util/test.js +11 -9
  97. package/packages/dd-trace/src/profiling/exporter_cli.js +2 -2
  98. package/packages/dd-trace/src/profiling/exporters/event_serializer.js +3 -3
  99. package/packages/dd-trace/src/profiling/profilers/wall.js +1 -1
  100. package/packages/dd-trace/src/proxy.js +8 -8
  101. package/packages/dd-trace/src/span_processor.js +5 -6
  102. package/packages/dd-trace/src/span_stats.js +96 -78
  103. package/packages/dd-trace/src/startup-log.js +2 -1
  104. package/packages/dd-trace/src/telemetry/dependencies.js +1 -1
  105. package/packages/dd-trace/src/telemetry/endpoints.js +6 -4
  106. package/packages/dd-trace/src/telemetry/index.js +2 -2
  107. package/packages/dd-trace/src/telemetry/logs/index.js +1 -1
  108. package/packages/dd-trace/src/telemetry/send-data.js +8 -8
  109. package/packages/dd-trace/src/telemetry/session-propagation.js +1 -1
  110. package/packages/dd-trace/src/telemetry/telemetry.js +9 -9
  111. package/vendor/dist/@datadog/sketches-js/index.js +1 -1
  112. package/vendor/dist/protobufjs/index.js +1 -1
  113. package/vendor/dist/protobufjs/minimal/index.js +1 -1
  114. package/vendor/dist/shell-quote/index.js +1 -1
  115. package/packages/datadog-plugin-graphql/src/resolve.js +0 -170
@@ -3,21 +3,20 @@
3
3
 
4
4
  export interface GeneratedConfig {
5
5
  _DD_APM_TRACING_AGENTLESS_ENABLED: boolean;
6
- apiKey: string | undefined;
6
+ _DD_TRACE_METRICS_OTEL_FLUSH_INTERVAL: number;
7
7
  apmTracingEnabled: boolean;
8
8
  appsec: {
9
- apiSecurity: {
10
- downstreamBodyAnalysisSampleRate: number;
11
- enabled: boolean;
12
- endpointCollectionEnabled: boolean;
13
- endpointCollectionMessageLimit: number;
14
- maxDownstreamBodyBytes: number;
15
- maxDownstreamRequestBodyAnalysis: number;
16
- sampleDelay: number;
17
- };
18
9
  blockedTemplateGraphql: string | undefined;
19
10
  blockedTemplateHtml: string | undefined;
20
11
  blockedTemplateJson: string | undefined;
12
+ DD_API_SECURITY_DOWNSTREAM_BODY_ANALYSIS_SAMPLE_RATE: number;
13
+ DD_API_SECURITY_ENABLED: boolean;
14
+ DD_API_SECURITY_ENDPOINT_COLLECTION_ENABLED: boolean;
15
+ DD_API_SECURITY_ENDPOINT_COLLECTION_MESSAGE_LIMIT: number;
16
+ DD_API_SECURITY_MAX_DOWNSTREAM_BODY_BYTES: number;
17
+ DD_API_SECURITY_MAX_DOWNSTREAM_REQUEST_BODY_ANALYSIS: number;
18
+ DD_API_SECURITY_SAMPLE_DELAY: number;
19
+ DD_APPSEC_SCA_ENABLED: boolean | undefined;
21
20
  enabled: boolean | undefined;
22
21
  eventTracking: {
23
22
  mode: string;
@@ -35,9 +34,6 @@ export interface GeneratedConfig {
35
34
  };
36
35
  rateLimit: number;
37
36
  rules: string | undefined;
38
- sca: {
39
- enabled: boolean | undefined;
40
- };
41
37
  stackTrace: {
42
38
  enabled: boolean;
43
39
  maxDepth: number;
@@ -70,21 +66,10 @@ export interface GeneratedConfig {
70
66
  DD_ACTION_EXECUTION_ID: string | undefined;
71
67
  DD_AGENTLESS_LOG_SUBMISSION_ENABLED: boolean;
72
68
  DD_AGENTLESS_LOG_SUBMISSION_URL: string | undefined;
69
+ DD_API_KEY: string | undefined;
73
70
  DD_APM_FLUSH_DEADLINE_MILLISECONDS: number;
74
71
  DD_APP_KEY: string | undefined;
75
72
  DD_AZURE_RESOURCE_GROUP: string | undefined;
76
- DD_CIVISIBILITY_AGENTLESS_ENABLED: boolean;
77
- DD_CIVISIBILITY_AGENTLESS_URL: URL | undefined;
78
- DD_CIVISIBILITY_AUTO_INSTRUMENTATION_PROVIDER: string | undefined;
79
- DD_CIVISIBILITY_DANGEROUSLY_FORCE_COVERAGE: boolean;
80
- DD_CIVISIBILITY_DANGEROUSLY_FORCE_TEST_SKIPPING: boolean;
81
- DD_CIVISIBILITY_ENABLED: boolean;
82
- DD_CIVISIBILITY_GIT_UNSHALLOW_ENABLED: boolean;
83
- DD_CIVISIBILITY_MANUAL_API_ENABLED: boolean;
84
- DD_CIVISIBILITY_RUM_FLUSH_WAIT_MILLIS: number;
85
- DD_CIVISIBILITY_TEST_COMMAND: string | undefined;
86
- DD_CIVISIBILITY_TEST_MODULE_ID: string | undefined;
87
- DD_CIVISIBILITY_TEST_SESSION_ID: string | undefined;
88
73
  DD_CRASHTRACKING_ENABLED: boolean;
89
74
  DD_CUSTOM_PARENT_ID: string | undefined;
90
75
  DD_CUSTOM_TRACE_ID: string | undefined;
@@ -95,6 +80,7 @@ export interface GeneratedConfig {
95
80
  DD_EXPERIMENTAL_TEST_OPT_GIT_CACHE_DIR: string | undefined;
96
81
  DD_EXPERIMENTAL_TEST_OPT_GIT_CACHE_ENABLED: boolean;
97
82
  DD_EXPERIMENTAL_TEST_OPT_SETTINGS_CACHE: string;
83
+ DD_EXPERIMENTAL_TEST_OPT_VITEST_NO_WORKER_INIT: boolean | undefined;
98
84
  DD_EXPERIMENTAL_TEST_REQUESTS_FS_CACHE: boolean;
99
85
  DD_EXTERNAL_ENV: string | undefined;
100
86
  DD_GIT_BRANCH: string | undefined;
@@ -162,8 +148,6 @@ export interface GeneratedConfig {
162
148
  DD_RUNTIME_METRICS_FLUSH_INTERVAL: number;
163
149
  DD_SPAN_SAMPLING_RULES_FILE: string | undefined;
164
150
  DD_TELEMETRY_FORWARDER_PATH: string | undefined;
165
- DD_TEST_FLEET_CONFIG_PATH: string | undefined;
166
- DD_TEST_LOCAL_CONFIG_PATH: string | undefined;
167
151
  DD_TEST_SESSION_NAME: string | undefined;
168
152
  DD_TRACE_AEROSPIKE_ENABLED: boolean;
169
153
  DD_TRACE_AI_ENABLED: boolean;
@@ -249,6 +233,7 @@ export interface GeneratedConfig {
249
233
  DD_TRACE_ELASTIC_TRANSPORT_ENABLED: boolean;
250
234
  DD_TRACE_ELASTICSEARCH_ENABLED: boolean;
251
235
  DD_TRACE_ELECTRON_ENABLED: boolean;
236
+ DD_TRACE_ENABLED: boolean;
252
237
  DD_TRACE_ENCODING_DEBUG: boolean;
253
238
  DD_TRACE_EXPERIMENTAL_RUNTIME_ID_ENABLED: boolean;
254
239
  DD_TRACE_EXPERIMENTAL_SPAN_COUNTS: boolean;
@@ -342,6 +327,7 @@ export interface GeneratedConfig {
342
327
  DD_TRACE_NODE_REDIS_CLIENT_ENABLED: boolean;
343
328
  DD_TRACE_NODE_SERIALIZE_ENABLED: boolean;
344
329
  DD_TRACE_NYC_ENABLED: boolean;
330
+ DD_TRACE_OBFUSCATION_QUERY_STRING_REGEXP: string;
345
331
  DD_TRACE_OPENAI_ENABLED: boolean;
346
332
  DD_TRACE_OPENSEARCH_ENABLED: boolean;
347
333
  DD_TRACE_OPENSEARCH_PROJECT_OPENSEARCH_ENABLED: boolean;
@@ -376,9 +362,11 @@ export interface GeneratedConfig {
376
362
  DD_TRACE_REDIS_CLIENT_ENABLED: boolean;
377
363
  DD_TRACE_REDIS_ENABLED: boolean;
378
364
  DD_TRACE_REQUEST_ENABLED: boolean;
365
+ DD_TRACE_RESOURCE_RENAMING_ENABLED: boolean;
379
366
  DD_TRACE_RESTIFY_ENABLED: boolean;
380
367
  DD_TRACE_RHEA_ENABLED: boolean;
381
368
  DD_TRACE_ROUTER_ENABLED: boolean;
369
+ DD_TRACE_SCOPE: string | undefined;
382
370
  DD_TRACE_SELENIUM_ENABLED: boolean;
383
371
  DD_TRACE_SELENIUM_WEBDRIVER_ENABLED: boolean;
384
372
  DD_TRACE_SEQUELIZE_ENABLED: boolean;
@@ -439,13 +427,13 @@ export interface GeneratedConfig {
439
427
  };
440
428
  };
441
429
  };
442
- flakyTestRetriesCount: number;
443
430
  flushInterval: number;
444
431
  flushMinSpans: number;
445
432
  headerTags: string[];
446
433
  hostname: string;
447
434
  iast: {
448
435
  dbRowsToTaint: number;
436
+ DD_IAST_SECURITY_CONTROLS_CONFIGURATION: string | undefined;
449
437
  deduplicationEnabled: boolean;
450
438
  enabled: boolean;
451
439
  maxConcurrentRequests: number;
@@ -454,28 +442,20 @@ export interface GeneratedConfig {
454
442
  redactionNamePattern: string;
455
443
  redactionValuePattern: string;
456
444
  requestSampling: number;
457
- securityControlsConfiguration: string | undefined;
458
445
  stackTrace: {
459
446
  enabled: boolean;
460
447
  };
461
448
  telemetryVerbosity: string;
462
449
  };
463
450
  inferredProxyServicesEnabled: boolean;
464
- isEarlyFlakeDetectionEnabled: boolean;
465
- isFlakyTestRetriesEnabled: boolean;
466
- isGitUploadEnabled: boolean;
467
- isImpactedTestsEnabled: boolean;
468
- isIntelligentTestRunnerEnabled: boolean;
469
- isTestDynamicInstrumentationEnabled: boolean;
470
- isTestManagementEnabled: boolean;
471
451
  langchain: {
472
- spanCharLimit: number;
473
- spanPromptCompletionSampleRate: number;
452
+ DD_LANGCHAIN_SPAN_CHAR_LIMIT: number;
453
+ DD_LANGCHAIN_SPAN_PROMPT_COMPLETION_SAMPLE_RATE: number;
474
454
  };
475
455
  legacyBaggageEnabled: boolean;
476
456
  llmobs: {
477
457
  agentlessEnabled: boolean | undefined;
478
- enabled: boolean;
458
+ DD_LLMOBS_ENABLED: boolean;
479
459
  mlApp: string | undefined;
480
460
  sampleRate: number;
481
461
  };
@@ -483,7 +463,7 @@ export interface GeneratedConfig {
483
463
  logLevel: "debug" | "info" | "warn" | "error";
484
464
  middlewareTracingEnabled: boolean;
485
465
  openai: {
486
- spanCharLimit: number;
466
+ DD_OPENAI_SPAN_CHAR_LIMIT: number;
487
467
  };
488
468
  openAiLogsEnabled: boolean;
489
469
  OTEL_BSP_MAX_EXPORT_BATCH_SIZE: number;
@@ -515,20 +495,19 @@ export interface GeneratedConfig {
515
495
  OTEL_TRACES_EXPORTER: "none" | "otlp" | undefined;
516
496
  OTEL_TRACES_SAMPLER: "always_on" | "always_off" | "traceidratio" | "parentbased_always_on" | "parentbased_always_off" | "parentbased_traceidratio";
517
497
  OTEL_TRACES_SAMPLER_ARG: number | undefined;
498
+ OTEL_TRACES_SPAN_METRICS_ENABLED: boolean | undefined;
518
499
  peerServiceMapping: Record<string, string>;
519
500
  port: string | number;
520
501
  profiling: {
521
- enabled: 'true' | 'false' | 'auto';
502
+ DD_PROFILING_ENABLED: 'true' | 'false' | 'auto';
522
503
  };
523
504
  protocolVersion: string;
524
- queryStringObfuscation: string;
525
505
  rateLimit: number;
526
506
  remoteConfig: {
527
- enabled: boolean;
507
+ DD_REMOTE_CONFIGURATION_ENABLED: boolean;
528
508
  pollInterval: number;
529
509
  };
530
510
  reportHostname: boolean;
531
- resourceRenamingEnabled: boolean;
532
511
  runtimeMetrics: {
533
512
  enabled: boolean;
534
513
  eventLoop: boolean;
@@ -538,7 +517,6 @@ export interface GeneratedConfig {
538
517
  runtimeMetricsRuntimeId: boolean;
539
518
  sampleRate: number | undefined;
540
519
  samplingRules: import('../../../../index').SamplingRule[];
541
- scope: string | undefined;
542
520
  service: string;
543
521
  serviceMapping: Record<string, string>;
544
522
  site: string;
@@ -548,19 +526,43 @@ export interface GeneratedConfig {
548
526
  spanSamplingRules: import('../../../../index').SpanSamplingRule[] | undefined;
549
527
  startupLogs: boolean;
550
528
  stats: {
551
- enabled: boolean;
529
+ DD_TRACE_STATS_COMPUTATION_ENABLED: boolean;
552
530
  };
553
531
  tags: Record<string, string>;
554
532
  telemetry: {
555
- debug: boolean;
556
- dependencyCollection: boolean;
557
- enabled: boolean;
558
- extendedHeartbeatInterval: number;
559
- heartbeatInterval: number;
560
- logCollection: boolean;
561
- metrics: boolean;
533
+ DD_INSTRUMENTATION_TELEMETRY_ENABLED: boolean;
534
+ DD_TELEMETRY_DEBUG: boolean;
535
+ DD_TELEMETRY_DEPENDENCY_COLLECTION_ENABLED: boolean;
536
+ DD_TELEMETRY_EXTENDED_HEARTBEAT_INTERVAL: number;
537
+ DD_TELEMETRY_HEARTBEAT_INTERVAL: number;
538
+ DD_TELEMETRY_LOG_COLLECTION_ENABLED: boolean;
539
+ DD_TELEMETRY_METRICS_ENABLED: boolean;
540
+ };
541
+ testOptimization: {
542
+ DD_CIVISIBILITY_AGENTLESS_ENABLED: boolean;
543
+ DD_CIVISIBILITY_AGENTLESS_URL: URL | undefined;
544
+ DD_CIVISIBILITY_AUTO_INSTRUMENTATION_PROVIDER: string | undefined;
545
+ DD_CIVISIBILITY_DANGEROUSLY_FORCE_COVERAGE: boolean;
546
+ DD_CIVISIBILITY_DANGEROUSLY_FORCE_TEST_SKIPPING: boolean;
547
+ DD_CIVISIBILITY_EARLY_FLAKE_DETECTION_ENABLED: boolean;
548
+ DD_CIVISIBILITY_ENABLED: boolean;
549
+ DD_CIVISIBILITY_FLAKY_RETRY_COUNT: number;
550
+ DD_CIVISIBILITY_FLAKY_RETRY_ENABLED: boolean;
551
+ DD_CIVISIBILITY_GIT_UNSHALLOW_ENABLED: boolean;
552
+ DD_CIVISIBILITY_GIT_UPLOAD_ENABLED: boolean;
553
+ DD_CIVISIBILITY_IMPACTED_TESTS_DETECTION_ENABLED: boolean;
554
+ DD_CIVISIBILITY_ITR_ENABLED: boolean;
555
+ DD_CIVISIBILITY_MANUAL_API_ENABLED: boolean;
556
+ DD_CIVISIBILITY_RUM_FLUSH_WAIT_MILLIS: number;
557
+ DD_CIVISIBILITY_TEST_COMMAND: string | undefined;
558
+ DD_CIVISIBILITY_TEST_MODULE_ID: string | undefined;
559
+ DD_CIVISIBILITY_TEST_SESSION_ID: string | undefined;
560
+ DD_TEST_FAILED_TEST_REPLAY_ENABLED: boolean;
561
+ DD_TEST_FLEET_CONFIG_PATH: string | undefined;
562
+ DD_TEST_LOCAL_CONFIG_PATH: string | undefined;
563
+ DD_TEST_MANAGEMENT_ATTEMPT_TO_FIX_RETRIES: number;
564
+ DD_TEST_MANAGEMENT_ENABLED: boolean;
562
565
  };
563
- testManagementAttemptToFixRetries: number;
564
566
  traceId128BitGenerationEnabled: boolean;
565
567
  traceId128BitLoggingEnabled: boolean;
566
568
  tracePropagationStyle: {
@@ -570,17 +572,17 @@ export interface GeneratedConfig {
570
572
  traceWebsocketMessagesEnabled: boolean;
571
573
  traceWebsocketMessagesInheritSampling: boolean;
572
574
  traceWebsocketMessagesSeparateTraces: boolean;
573
- tracing: boolean;
574
575
  url: string | URL;
575
576
  version: string | undefined;
576
577
  vertexai: {
577
- spanCharLimit: number;
578
- spanPromptCompletionSampleRate: number;
578
+ DD_VERTEXAI_SPAN_CHAR_LIMIT: number;
579
+ DD_VERTEXAI_SPAN_PROMPT_COMPLETION_SAMPLE_RATE: number;
579
580
  };
580
581
  }
581
582
 
582
583
  export interface GeneratedEnvVarConfig {
583
584
  _DD_APM_TRACING_AGENTLESS_ENABLED: boolean;
585
+ _DD_TRACE_METRICS_OTEL_FLUSH_INTERVAL: number;
584
586
  DATADOG_API_KEY: string | undefined;
585
587
  DD_ACTION_EXECUTION_ID: string | undefined;
586
588
  DD_AGENT_HOST: string;
@@ -675,6 +677,7 @@ export interface GeneratedEnvVarConfig {
675
677
  DD_EXPERIMENTAL_TEST_OPT_GIT_CACHE_DIR: string | undefined;
676
678
  DD_EXPERIMENTAL_TEST_OPT_GIT_CACHE_ENABLED: boolean;
677
679
  DD_EXPERIMENTAL_TEST_OPT_SETTINGS_CACHE: string;
680
+ DD_EXPERIMENTAL_TEST_OPT_VITEST_NO_WORKER_INIT: boolean | undefined;
678
681
  DD_EXPERIMENTAL_TEST_REQUESTS_FS_CACHE: boolean;
679
682
  DD_EXTERNAL_ENV: string | undefined;
680
683
  DD_GIT_BRANCH: string | undefined;
@@ -1109,4 +1112,5 @@ export interface GeneratedEnvVarConfig {
1109
1112
  OTEL_TRACES_EXPORTER: "none" | "otlp" | undefined;
1110
1113
  OTEL_TRACES_SAMPLER: "always_on" | "always_off" | "traceidratio" | "parentbased_always_on" | "parentbased_always_off" | "parentbased_traceidratio";
1111
1114
  OTEL_TRACES_SAMPLER_ARG: number | undefined;
1115
+ OTEL_TRACES_SPAN_METRICS_ENABLED: boolean | undefined;
1112
1116
  }
@@ -10,6 +10,7 @@
10
10
  * @property {string[]} [aliases]
11
11
  * @property {string[]} [configurationNames]
12
12
  * @property {string} [internalPropertyName]
13
+ * @property {string} [namespace] Nests the canonical env name under this property path (e.g. `telemetry`).
13
14
  * @property {string} [transform]
14
15
  * @property {string} [allowed]
15
16
  * @property {string|boolean} [deprecated]
@@ -25,6 +25,7 @@ const {
25
25
  getEnvironmentVariable,
26
26
  getEnvironmentVariables,
27
27
  getStableConfigSources,
28
+ getValueFromEnvSources,
28
29
  } = require('./helper')
29
30
  const {
30
31
  defaults,
@@ -245,12 +246,12 @@ class Config extends ConfigBase {
245
246
  let entry = optionsTable[fullName]
246
247
  if (!entry) {
247
248
  // TODO: Fix this by by changing remote config to use env styles.
248
- if (name !== 'tracing' || source !== 'remote_config') {
249
+ if (name !== 'DD_TRACE_ENABLED' || source !== 'remote_config') {
249
250
  log.warn('Unknown option %s with value %o', fullName, value)
250
251
  continue
251
252
  }
252
253
  // @ts-expect-error - The entry is defined in the configurationsTable.
253
- entry = configurationsTable.tracing
254
+ entry = configurationsTable.DD_TRACE_ENABLED
254
255
  }
255
256
 
256
257
  if (entry.nestedProperties) {
@@ -286,7 +287,7 @@ class Config extends ConfigBase {
286
287
  }
287
288
  // TODO: Coerce mismatched types to the expected type, if possible. E.g., strings <> numbers
288
289
  const transformed = value !== undefined && entry.transformer ? entry.transformer(value, fullName, source) : value
289
- setAndTrack(this, entry.property, transformed, value, source)
290
+ setAndTrack(this, entry.property ?? name, transformed, value, source)
290
291
  }
291
292
  }
292
293
 
@@ -358,21 +359,22 @@ class Config extends ConfigBase {
358
359
  setAndTrack(this, 'OTEL_TRACES_EXPORTER', 'none')
359
360
  }
360
361
 
361
- if (this.telemetry.heartbeatInterval) {
362
- setAndTrack(this, 'telemetry.heartbeatInterval', Math.floor(this.telemetry.heartbeatInterval * 1000))
362
+ if (this.telemetry.DD_TELEMETRY_HEARTBEAT_INTERVAL) {
363
+ setAndTrack(this, 'telemetry.DD_TELEMETRY_HEARTBEAT_INTERVAL',
364
+ Math.floor(this.telemetry.DD_TELEMETRY_HEARTBEAT_INTERVAL * 1000))
363
365
  }
364
366
 
365
367
  // Allocation profiling needs a sampling hook only available on Node.js 26+.
366
368
  setAndTrack(this, 'DD_PROFILING_ALLOCATION_ENABLED', NODE_MAJOR >= 26 && this.DD_PROFILING_ALLOCATION_ENABLED)
367
- if (this.telemetry.extendedHeartbeatInterval) {
368
- setAndTrack(this, 'telemetry.extendedHeartbeatInterval',
369
- Math.floor(this.telemetry.extendedHeartbeatInterval * 1000))
369
+ if (this.telemetry.DD_TELEMETRY_EXTENDED_HEARTBEAT_INTERVAL) {
370
+ setAndTrack(this, 'telemetry.DD_TELEMETRY_EXTENDED_HEARTBEAT_INTERVAL',
371
+ Math.floor(this.telemetry.DD_TELEMETRY_EXTENDED_HEARTBEAT_INTERVAL * 1000))
370
372
  }
371
373
 
372
- // Enable resourceRenamingEnabled when appsec is enabled and only
374
+ // Enable resource renaming when appsec is enabled and only
373
375
  // if DD_TRACE_RESOURCE_RENAMING_ENABLED is not explicitly set
374
- if (!trackedConfigOrigins.has('resourceRenamingEnabled')) {
375
- setAndTrack(this, 'resourceRenamingEnabled', this.appsec.enabled ?? false)
376
+ if (!trackedConfigOrigins.has('DD_TRACE_RESOURCE_RENAMING_ENABLED')) {
377
+ setAndTrack(this, 'DD_TRACE_RESOURCE_RENAMING_ENABLED', this.appsec.enabled ?? false)
376
378
  }
377
379
 
378
380
  if (!trackedConfigOrigins.has('spanComputePeerService') && this.spanAttributeSchema !== 'v0') {
@@ -380,9 +382,9 @@ class Config extends ConfigBase {
380
382
  }
381
383
 
382
384
  if (!this.apmTracingEnabled) {
383
- setAndTrack(this, 'stats.enabled', false)
384
- } else if (!trackedConfigOrigins.has('stats.enabled')) {
385
- setAndTrack(this, 'stats.enabled', getIsGCPFunction() || getIsAzureFunction())
385
+ setAndTrack(this, 'stats.DD_TRACE_STATS_COMPUTATION_ENABLED', false)
386
+ } else if (!trackedConfigOrigins.has('stats.DD_TRACE_STATS_COMPUTATION_ENABLED')) {
387
+ setAndTrack(this, 'stats.DD_TRACE_STATS_COMPUTATION_ENABLED', getIsGCPFunction() || getIsAzureFunction())
386
388
  }
387
389
 
388
390
  // TODO: Remove the experimental env vars as a major or deprecate the option?
@@ -454,11 +456,11 @@ class Config extends ConfigBase {
454
456
  }
455
457
 
456
458
  // For LLMObs, we want to auto enable it when other llmobs options are defined.
457
- if (!this.llmobs.enabled &&
458
- !trackedConfigOrigins.has('llmobs.enabled') &&
459
+ if (!this.llmobs.DD_LLMOBS_ENABLED &&
460
+ !trackedConfigOrigins.has('llmobs.DD_LLMOBS_ENABLED') &&
459
461
  (trackedConfigOrigins.has('llmobs.agentlessEnabled') ||
460
462
  trackedConfigOrigins.has('llmobs.mlApp'))) {
461
- setAndTrack(this, 'llmobs.enabled', true)
463
+ setAndTrack(this, 'llmobs.DD_LLMOBS_ENABLED', true)
462
464
  }
463
465
 
464
466
  if (this.OTEL_RESOURCE_ATTRIBUTES) {
@@ -551,14 +553,15 @@ class Config extends ConfigBase {
551
553
  this.tags['runtime-id'] = RUNTIME_ID
552
554
 
553
555
  if (IS_SERVERLESS) {
554
- setAndTrack(this, 'telemetry.enabled', false)
556
+ setAndTrack(this, 'telemetry.DD_INSTRUMENTATION_TELEMETRY_ENABLED', false)
555
557
  setAndTrack(this, 'DD_CRASHTRACKING_ENABLED', false)
556
- setAndTrack(this, 'remoteConfig.enabled', false)
558
+ setAndTrack(this, 'remoteConfig.DD_REMOTE_CONFIGURATION_ENABLED', false)
557
559
  }
558
560
 
559
561
  // TODO: Should this unconditionally be disabled?
560
- if (getEnvironmentVariable('JEST_WORKER_ID') && !trackedConfigOrigins.has('telemetry.enabled')) {
561
- setAndTrack(this, 'telemetry.enabled', false)
562
+ if (getEnvironmentVariable('JEST_WORKER_ID') &&
563
+ !trackedConfigOrigins.has('telemetry.DD_INSTRUMENTATION_TELEMETRY_ENABLED')) {
564
+ setAndTrack(this, 'telemetry.DD_INSTRUMENTATION_TELEMETRY_ENABLED', false)
562
565
  }
563
566
 
564
567
  // Experimental agentless APM span intake
@@ -568,7 +571,7 @@ class Config extends ConfigBase {
568
571
  if (agentlessEnabled) {
569
572
  setAndTrack(this, 'experimental.exporter', 'agentless')
570
573
  // Disable client-side stats computation
571
- setAndTrack(this, 'stats.enabled', false)
574
+ setAndTrack(this, 'stats.DD_TRACE_STATS_COMPUTATION_ENABLED', false)
572
575
  // Enable hostname reporting
573
576
  setAndTrack(this, 'reportHostname', true)
574
577
  // Disable rate limiting - server-side sampling will be used
@@ -602,6 +605,16 @@ class Config extends ConfigBase {
602
605
  setAndTrack(this, 'OTEL_EXPORTER_OTLP_TRACES_ENDPOINT', `${defaultOtlpBase}/v1/traces`)
603
606
  }
604
607
 
608
+ const autoTraceMetrics = this.OTEL_TRACES_EXPORTER === 'otlp' && this.DD_METRICS_OTEL_ENABLED === true
609
+ setAndTrack(this, 'OTEL_TRACES_SPAN_METRICS_ENABLED', this.OTEL_TRACES_SPAN_METRICS_ENABLED ?? autoTraceMetrics)
610
+
611
+ if (this.OTEL_TRACES_SPAN_METRICS_ENABLED) {
612
+ this.stats = { ...this.stats, DD_TRACE_STATS_COMPUTATION_ENABLED: true }
613
+ }
614
+
615
+ const flushInterval = getValueFromEnvSources('_DD_TRACE_METRICS_OTEL_FLUSH_INTERVAL')
616
+ setAndTrack(this, '_DD_TRACE_METRICS_OTEL_FLUSH_INTERVAL', flushInterval)
617
+
605
618
  if (process.platform === 'win32') {
606
619
  // OOM monitoring does not work properly on Windows, so it will be disabled.
607
620
  deactivateIfEnabledAndWarnOnWindows(this, 'DD_PROFILING_EXPERIMENTAL_OOM_MONITORING_ENABLED')
@@ -72,11 +72,13 @@ function applyV5Overrides (supportedConfigurations) {
72
72
  const iastEntry = supportedConfigurations.DD_IAST_SECURITY_CONTROLS_CONFIGURATION?.[0]
73
73
  if (!iastEntry) return
74
74
 
75
+ // v5 kept this configurable through the (experimental) iast.* programmatic API. The entry
76
+ // still carries `namespace: "iast"`, so these names route to iast.DD_IAST_SECURITY_CONTROLS_CONFIGURATION
77
+ // and the property path stays canonical across majors.
75
78
  iastEntry.configurationNames = [
76
- iastEntry.internalPropertyName || iastEntry.configurationNames?.[0],
79
+ 'iast.securityControlsConfiguration',
77
80
  `${EXPERIMENTAL_IAST_PREFIX}.securityControlsConfiguration`,
78
81
  ]
79
- delete iastEntry.internalPropertyName
80
82
  }
81
83
 
82
84
  /**
@@ -228,7 +228,7 @@ const optionLookupTable = {
228
228
  code_origin_enabled: 'codeOriginForSpans.enabled',
229
229
  tracing_sampling_rate: 'sampleRate',
230
230
  log_injection_enabled: 'logInjection',
231
- tracing_enabled: 'tracing',
231
+ tracing_enabled: 'DD_TRACE_ENABLED',
232
232
  tracing_sampling_rules: 'samplingRules',
233
233
  tracing_header_tags: 'headerTags',
234
234
  tracing_tags: 'tags',