dd-trace 5.110.0 → 5.112.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 (164) hide show
  1. package/LICENSE-3rdparty.csv +1 -2
  2. package/README.md +13 -8
  3. package/ci/init.js +21 -2
  4. package/ci/vitest-no-worker-init-setup.mjs +430 -0
  5. package/ext/tags.js +2 -0
  6. package/index.d.ts +34 -1
  7. package/initialize.mjs +5 -6
  8. package/loader-hook.mjs +76 -55
  9. package/package.json +37 -34
  10. package/packages/datadog-instrumentations/src/ai.js +45 -0
  11. package/packages/datadog-instrumentations/src/apollo-server.js +5 -13
  12. package/packages/datadog-instrumentations/src/child_process.js +3 -3
  13. package/packages/datadog-instrumentations/src/claude-agent-sdk.js +587 -0
  14. package/packages/datadog-instrumentations/src/cucumber.js +102 -43
  15. package/packages/datadog-instrumentations/src/cypress-config.js +11 -3
  16. package/packages/datadog-instrumentations/src/fastify.js +27 -8
  17. package/packages/datadog-instrumentations/src/fs.js +8 -6
  18. package/packages/datadog-instrumentations/src/graphql.js +26 -495
  19. package/packages/datadog-instrumentations/src/helpers/hooks.js +1 -0
  20. package/packages/datadog-instrumentations/src/helpers/instrument.js +7 -0
  21. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/ai.js +6 -6
  22. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/claude-agent-sdk.js +17 -0
  23. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/graphql.js +201 -0
  24. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/index.js +2 -0
  25. package/packages/datadog-instrumentations/src/jest.js +713 -63
  26. package/packages/datadog-instrumentations/src/mocha/main.js +24 -3
  27. package/packages/datadog-instrumentations/src/mocha/utils.js +128 -22
  28. package/packages/datadog-instrumentations/src/mocha/worker.js +13 -0
  29. package/packages/datadog-instrumentations/src/mongodb.js +74 -0
  30. package/packages/datadog-instrumentations/src/mongoose.js +13 -2
  31. package/packages/datadog-instrumentations/src/playwright.js +13 -9
  32. package/packages/datadog-instrumentations/src/vitest-main-no-worker-init.js +1297 -0
  33. package/packages/datadog-instrumentations/src/vitest-main.js +1594 -0
  34. package/packages/datadog-instrumentations/src/vitest-util.js +254 -0
  35. package/packages/datadog-instrumentations/src/vitest-worker.js +823 -0
  36. package/packages/datadog-instrumentations/src/vitest.js +11 -1855
  37. package/packages/datadog-plugin-ai/src/index.js +1 -1
  38. package/packages/datadog-plugin-ai/src/tracing.js +66 -3
  39. package/packages/datadog-plugin-ai/src/utils.js +17 -4
  40. package/packages/datadog-plugin-aws-durable-execution-sdk-js/src/client.js +2 -2
  41. package/packages/datadog-plugin-aws-durable-execution-sdk-js/src/context.js +19 -10
  42. package/packages/datadog-plugin-aws-durable-execution-sdk-js/src/handler.js +1 -0
  43. package/packages/datadog-plugin-aws-durable-execution-sdk-js/src/util.js +47 -11
  44. package/packages/datadog-plugin-child_process/src/index.js +13 -2
  45. package/packages/datadog-plugin-claude-agent-sdk/src/index.js +31 -0
  46. package/packages/datadog-plugin-claude-agent-sdk/src/tracing.js +107 -0
  47. package/packages/datadog-plugin-claude-agent-sdk/src/util.js +15 -0
  48. package/packages/datadog-plugin-cucumber/src/index.js +15 -24
  49. package/packages/datadog-plugin-cypress/src/cypress-plugin.js +360 -14
  50. package/packages/datadog-plugin-cypress/src/index.js +47 -2
  51. package/packages/datadog-plugin-cypress/src/plugin.js +1 -0
  52. package/packages/datadog-plugin-cypress/src/support.js +45 -1
  53. package/packages/datadog-plugin-express/src/code_origin.js +1 -1
  54. package/packages/datadog-plugin-fastify/src/code_origin.js +1 -1
  55. package/packages/datadog-plugin-graphql/src/execute.js +639 -12
  56. package/packages/datadog-plugin-graphql/src/index.js +37 -9
  57. package/packages/datadog-plugin-graphql/src/parse.js +24 -4
  58. package/packages/datadog-plugin-graphql/src/utils.js +9 -2
  59. package/packages/datadog-plugin-graphql/src/validate.js +17 -6
  60. package/packages/datadog-plugin-http/src/index.js +6 -8
  61. package/packages/datadog-plugin-jest/src/index.js +31 -15
  62. package/packages/datadog-plugin-mocha/src/index.js +40 -15
  63. package/packages/datadog-plugin-mongodb-core/src/bulk-write.js +43 -0
  64. package/packages/datadog-plugin-mongodb-core/src/index.js +8 -443
  65. package/packages/datadog-plugin-mongodb-core/src/query.js +452 -0
  66. package/packages/datadog-plugin-openai/src/services.js +2 -2
  67. package/packages/datadog-plugin-playwright/src/index.js +4 -3
  68. package/packages/datadog-plugin-vitest/src/index.js +120 -72
  69. package/packages/datadog-shimmer/src/shimmer.js +37 -16
  70. package/packages/dd-trace/src/aiguard/index.js +9 -14
  71. package/packages/dd-trace/src/aiguard/integrations/index.js +34 -0
  72. package/packages/dd-trace/src/aiguard/integrations/openai.js +47 -33
  73. package/packages/dd-trace/src/aiguard/integrations/vercel-ai.js +42 -28
  74. package/packages/dd-trace/src/aiguard/sdk.js +2 -2
  75. package/packages/dd-trace/src/appsec/api_security/sampler.js +3 -3
  76. package/packages/dd-trace/src/appsec/channels.js +3 -1
  77. package/packages/dd-trace/src/appsec/downstream_requests.js +4 -4
  78. package/packages/dd-trace/src/appsec/graphql.js +14 -11
  79. package/packages/dd-trace/src/appsec/iast/analyzers/nosql-injection-mongodb-analyzer.js +23 -23
  80. package/packages/dd-trace/src/appsec/iast/security-controls/index.js +2 -2
  81. package/packages/dd-trace/src/appsec/iast/telemetry/index.js +2 -1
  82. package/packages/dd-trace/src/appsec/index.js +10 -1
  83. package/packages/dd-trace/src/appsec/lambda.js +135 -0
  84. package/packages/dd-trace/src/appsec/reporter.js +49 -10
  85. package/packages/dd-trace/src/appsec/telemetry/index.js +1 -1
  86. package/packages/dd-trace/src/appsec/waf/index.js +16 -4
  87. package/packages/dd-trace/src/appsec/waf/waf_context_wrapper.js +4 -4
  88. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/index.js +26 -1
  89. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +115 -24
  90. package/packages/dd-trace/src/ci-visibility/early-flake-detection/get-known-tests.js +21 -6
  91. package/packages/dd-trace/src/ci-visibility/exporters/agent-proxy/index.js +5 -2
  92. package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +1 -1
  93. package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +1 -1
  94. package/packages/dd-trace/src/ci-visibility/exporters/agentless/index.js +6 -2
  95. package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +1 -1
  96. package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +130 -20
  97. package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +2 -2
  98. package/packages/dd-trace/src/ci-visibility/exporters/test-worker/writer.js +17 -0
  99. package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +47 -26
  100. package/packages/dd-trace/src/ci-visibility/log-submission/log-submission-plugin.js +2 -2
  101. package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +64 -53
  102. package/packages/dd-trace/src/ci-visibility/requests/upload-coverage-report.js +3 -3
  103. package/packages/dd-trace/src/ci-visibility/requests/upload-test-screenshot.js +156 -0
  104. package/packages/dd-trace/src/ci-visibility/test-management/get-test-management-tests.js +23 -5
  105. package/packages/dd-trace/src/ci-visibility/test-optimization-http-cache-schema.js +128 -0
  106. package/packages/dd-trace/src/ci-visibility/test-optimization-http-cache.js +287 -0
  107. package/packages/dd-trace/src/config/defaults.js +3 -2
  108. package/packages/dd-trace/src/config/generated-config-types.d.ts +71 -57
  109. package/packages/dd-trace/src/config/helper.js +1 -0
  110. package/packages/dd-trace/src/config/index.js +35 -22
  111. package/packages/dd-trace/src/config/major-overrides.js +4 -2
  112. package/packages/dd-trace/src/config/remote_config.js +1 -1
  113. package/packages/dd-trace/src/config/supported-configurations.json +127 -56
  114. package/packages/dd-trace/src/constants.js +7 -0
  115. package/packages/dd-trace/src/crashtracking/crashtracker.js +2 -2
  116. package/packages/dd-trace/src/datastreams/processor.js +11 -3
  117. package/packages/dd-trace/src/exporters/agent/index.js +1 -1
  118. package/packages/dd-trace/src/exporters/agentless/writer.js +4 -4
  119. package/packages/dd-trace/src/llmobs/index.js +1 -1
  120. package/packages/dd-trace/src/llmobs/plugins/ai/ddTelemetry.js +403 -0
  121. package/packages/dd-trace/src/llmobs/plugins/ai/index.js +8 -395
  122. package/packages/dd-trace/src/llmobs/plugins/ai/util.js +27 -0
  123. package/packages/dd-trace/src/llmobs/plugins/ai/vercelTelemetry.js +363 -0
  124. package/packages/dd-trace/src/llmobs/plugins/base.js +4 -4
  125. package/packages/dd-trace/src/llmobs/plugins/claude-agent-sdk/index.js +270 -0
  126. package/packages/dd-trace/src/llmobs/plugins/claude-agent-sdk/utils.js +10 -0
  127. package/packages/dd-trace/src/llmobs/plugins/langgraph/index.js +1 -1
  128. package/packages/dd-trace/src/llmobs/sdk.js +3 -3
  129. package/packages/dd-trace/src/llmobs/span_processor.js +1 -1
  130. package/packages/dd-trace/src/llmobs/tagger.js +3 -3
  131. package/packages/dd-trace/src/llmobs/writers/base.js +1 -1
  132. package/packages/dd-trace/src/opentelemetry/metrics/index.js +54 -5
  133. package/packages/dd-trace/src/opentelemetry/metrics/otlp_span_stats_exporter.js +40 -0
  134. package/packages/dd-trace/src/opentelemetry/metrics/otlp_span_stats_transformer.js +169 -0
  135. package/packages/dd-trace/src/opentelemetry/otlp/otlp_http_exporter_base.js +38 -39
  136. package/packages/dd-trace/src/opentelemetry/span.js +5 -0
  137. package/packages/dd-trace/src/opentelemetry/trace/index.js +4 -0
  138. package/packages/dd-trace/src/opentelemetry/tracer_provider.js +1 -1
  139. package/packages/dd-trace/src/opentracing/tracer.js +6 -1
  140. package/packages/dd-trace/src/plugin_manager.js +23 -7
  141. package/packages/dd-trace/src/plugins/ci_plugin.js +159 -10
  142. package/packages/dd-trace/src/plugins/index.js +2 -0
  143. package/packages/dd-trace/src/plugins/util/llm.js +6 -1
  144. package/packages/dd-trace/src/plugins/util/test.js +15 -9
  145. package/packages/dd-trace/src/profiling/exporter_cli.js +2 -2
  146. package/packages/dd-trace/src/profiling/exporters/agent.js +28 -3
  147. package/packages/dd-trace/src/profiling/exporters/event_serializer.js +3 -3
  148. package/packages/dd-trace/src/profiling/profilers/wall.js +1 -1
  149. package/packages/dd-trace/src/proxy.js +8 -8
  150. package/packages/dd-trace/src/span_processor.js +5 -6
  151. package/packages/dd-trace/src/span_stats.js +96 -78
  152. package/packages/dd-trace/src/startup-log.js +2 -1
  153. package/packages/dd-trace/src/telemetry/dependencies.js +1 -1
  154. package/packages/dd-trace/src/telemetry/endpoints.js +6 -4
  155. package/packages/dd-trace/src/telemetry/index.js +2 -2
  156. package/packages/dd-trace/src/telemetry/logs/index.js +1 -1
  157. package/packages/dd-trace/src/telemetry/send-data.js +8 -8
  158. package/packages/dd-trace/src/telemetry/session-propagation.js +1 -1
  159. package/packages/dd-trace/src/telemetry/telemetry.js +9 -9
  160. package/vendor/dist/@datadog/sketches-js/index.js +1 -1
  161. package/vendor/dist/protobufjs/index.js +1 -1
  162. package/vendor/dist/protobufjs/minimal/index.js +1 -1
  163. package/vendor/dist/shell-quote/index.js +1 -1
  164. 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;
@@ -229,6 +213,7 @@ export interface GeneratedConfig {
229
213
  DD_TRACE_BUNYAN_ENABLED: boolean;
230
214
  DD_TRACE_CASSANDRA_DRIVER_ENABLED: boolean;
231
215
  DD_TRACE_CHILD_PROCESS_ENABLED: boolean;
216
+ DD_TRACE_CLAUDE_AGENT_SDK_ENABLED: boolean;
232
217
  DD_TRACE_COLLECTIONS_ENABLED: boolean;
233
218
  DD_TRACE_COMMONPLUGIN_ENABLED: boolean;
234
219
  DD_TRACE_CONFLUENTINC_KAFKA_JAVASCRIPT_ENABLED: boolean;
@@ -249,6 +234,7 @@ export interface GeneratedConfig {
249
234
  DD_TRACE_ELASTIC_TRANSPORT_ENABLED: boolean;
250
235
  DD_TRACE_ELASTICSEARCH_ENABLED: boolean;
251
236
  DD_TRACE_ELECTRON_ENABLED: boolean;
237
+ DD_TRACE_ENABLED: boolean;
252
238
  DD_TRACE_ENCODING_DEBUG: boolean;
253
239
  DD_TRACE_EXPERIMENTAL_RUNTIME_ID_ENABLED: boolean;
254
240
  DD_TRACE_EXPERIMENTAL_SPAN_COUNTS: boolean;
@@ -267,11 +253,14 @@ export interface GeneratedConfig {
267
253
  DD_TRACE_GOOGLE_CLOUD_VERTEXAI_ENABLED: boolean;
268
254
  DD_TRACE_GOOGLE_GAX_ENABLED: boolean;
269
255
  DD_TRACE_GOOGLE_GENAI_ENABLED: boolean;
256
+ DD_TRACE_GRAPHQL_COLLAPSE: boolean;
257
+ DD_TRACE_GRAPHQL_DEPTH: number;
270
258
  DD_TRACE_GRAPHQL_ENABLED: boolean;
271
259
  DD_TRACE_GRAPHQL_ERROR_EXTENSIONS: string[];
272
260
  DD_TRACE_GRAPHQL_TAG_ENABLED: boolean;
273
261
  DD_TRACE_GRAPHQL_TOOLS_ENABLED: boolean;
274
262
  DD_TRACE_GRAPHQL_TOOLS_EXECUTOR_ENABLED: boolean;
263
+ DD_TRACE_GRAPHQL_VARIABLES: string[];
275
264
  DD_TRACE_GRAPHQL_YOGA_ENABLED: boolean;
276
265
  DD_TRACE_GRPC_ENABLED: boolean;
277
266
  DD_TRACE_GRPC_GRPC_JS_ENABLED: boolean;
@@ -342,6 +331,7 @@ export interface GeneratedConfig {
342
331
  DD_TRACE_NODE_REDIS_CLIENT_ENABLED: boolean;
343
332
  DD_TRACE_NODE_SERIALIZE_ENABLED: boolean;
344
333
  DD_TRACE_NYC_ENABLED: boolean;
334
+ DD_TRACE_OBFUSCATION_QUERY_STRING_REGEXP: string;
345
335
  DD_TRACE_OPENAI_ENABLED: boolean;
346
336
  DD_TRACE_OPENSEARCH_ENABLED: boolean;
347
337
  DD_TRACE_OPENSEARCH_PROJECT_OPENSEARCH_ENABLED: boolean;
@@ -376,9 +366,11 @@ export interface GeneratedConfig {
376
366
  DD_TRACE_REDIS_CLIENT_ENABLED: boolean;
377
367
  DD_TRACE_REDIS_ENABLED: boolean;
378
368
  DD_TRACE_REQUEST_ENABLED: boolean;
369
+ DD_TRACE_RESOURCE_RENAMING_ENABLED: boolean;
379
370
  DD_TRACE_RESTIFY_ENABLED: boolean;
380
371
  DD_TRACE_RHEA_ENABLED: boolean;
381
372
  DD_TRACE_ROUTER_ENABLED: boolean;
373
+ DD_TRACE_SCOPE: string | undefined;
382
374
  DD_TRACE_SELENIUM_ENABLED: boolean;
383
375
  DD_TRACE_SELENIUM_WEBDRIVER_ENABLED: boolean;
384
376
  DD_TRACE_SEQUELIZE_ENABLED: boolean;
@@ -439,13 +431,13 @@ export interface GeneratedConfig {
439
431
  };
440
432
  };
441
433
  };
442
- flakyTestRetriesCount: number;
443
434
  flushInterval: number;
444
435
  flushMinSpans: number;
445
436
  headerTags: string[];
446
437
  hostname: string;
447
438
  iast: {
448
439
  dbRowsToTaint: number;
440
+ DD_IAST_SECURITY_CONTROLS_CONFIGURATION: string | undefined;
449
441
  deduplicationEnabled: boolean;
450
442
  enabled: boolean;
451
443
  maxConcurrentRequests: number;
@@ -454,28 +446,20 @@ export interface GeneratedConfig {
454
446
  redactionNamePattern: string;
455
447
  redactionValuePattern: string;
456
448
  requestSampling: number;
457
- securityControlsConfiguration: string | undefined;
458
449
  stackTrace: {
459
450
  enabled: boolean;
460
451
  };
461
452
  telemetryVerbosity: string;
462
453
  };
463
454
  inferredProxyServicesEnabled: boolean;
464
- isEarlyFlakeDetectionEnabled: boolean;
465
- isFlakyTestRetriesEnabled: boolean;
466
- isGitUploadEnabled: boolean;
467
- isImpactedTestsEnabled: boolean;
468
- isIntelligentTestRunnerEnabled: boolean;
469
- isTestDynamicInstrumentationEnabled: boolean;
470
- isTestManagementEnabled: boolean;
471
455
  langchain: {
472
- spanCharLimit: number;
473
- spanPromptCompletionSampleRate: number;
456
+ DD_LANGCHAIN_SPAN_CHAR_LIMIT: number;
457
+ DD_LANGCHAIN_SPAN_PROMPT_COMPLETION_SAMPLE_RATE: number;
474
458
  };
475
459
  legacyBaggageEnabled: boolean;
476
460
  llmobs: {
477
461
  agentlessEnabled: boolean | undefined;
478
- enabled: boolean;
462
+ DD_LLMOBS_ENABLED: boolean;
479
463
  mlApp: string | undefined;
480
464
  sampleRate: number;
481
465
  };
@@ -483,7 +467,7 @@ export interface GeneratedConfig {
483
467
  logLevel: "debug" | "info" | "warn" | "error";
484
468
  middlewareTracingEnabled: boolean;
485
469
  openai: {
486
- spanCharLimit: number;
470
+ DD_OPENAI_SPAN_CHAR_LIMIT: number;
487
471
  };
488
472
  openAiLogsEnabled: boolean;
489
473
  OTEL_BSP_MAX_EXPORT_BATCH_SIZE: number;
@@ -515,20 +499,19 @@ export interface GeneratedConfig {
515
499
  OTEL_TRACES_EXPORTER: "none" | "otlp" | undefined;
516
500
  OTEL_TRACES_SAMPLER: "always_on" | "always_off" | "traceidratio" | "parentbased_always_on" | "parentbased_always_off" | "parentbased_traceidratio";
517
501
  OTEL_TRACES_SAMPLER_ARG: number | undefined;
502
+ OTEL_TRACES_SPAN_METRICS_ENABLED: boolean | undefined;
518
503
  peerServiceMapping: Record<string, string>;
519
504
  port: string | number;
520
505
  profiling: {
521
- enabled: 'true' | 'false' | 'auto';
506
+ DD_PROFILING_ENABLED: 'true' | 'false' | 'auto';
522
507
  };
523
508
  protocolVersion: string;
524
- queryStringObfuscation: string;
525
509
  rateLimit: number;
526
510
  remoteConfig: {
527
- enabled: boolean;
511
+ DD_REMOTE_CONFIGURATION_ENABLED: boolean;
528
512
  pollInterval: number;
529
513
  };
530
514
  reportHostname: boolean;
531
- resourceRenamingEnabled: boolean;
532
515
  runtimeMetrics: {
533
516
  enabled: boolean;
534
517
  eventLoop: boolean;
@@ -538,7 +521,6 @@ export interface GeneratedConfig {
538
521
  runtimeMetricsRuntimeId: boolean;
539
522
  sampleRate: number | undefined;
540
523
  samplingRules: import('../../../../index').SamplingRule[];
541
- scope: string | undefined;
542
524
  service: string;
543
525
  serviceMapping: Record<string, string>;
544
526
  site: string;
@@ -548,19 +530,44 @@ export interface GeneratedConfig {
548
530
  spanSamplingRules: import('../../../../index').SpanSamplingRule[] | undefined;
549
531
  startupLogs: boolean;
550
532
  stats: {
551
- enabled: boolean;
533
+ DD_TRACE_STATS_COMPUTATION_ENABLED: boolean;
552
534
  };
553
535
  tags: Record<string, string>;
554
536
  telemetry: {
555
- debug: boolean;
556
- dependencyCollection: boolean;
557
- enabled: boolean;
558
- extendedHeartbeatInterval: number;
559
- heartbeatInterval: number;
560
- logCollection: boolean;
561
- metrics: boolean;
537
+ DD_INSTRUMENTATION_TELEMETRY_ENABLED: boolean;
538
+ DD_TELEMETRY_DEBUG: boolean;
539
+ DD_TELEMETRY_DEPENDENCY_COLLECTION_ENABLED: boolean;
540
+ DD_TELEMETRY_EXTENDED_HEARTBEAT_INTERVAL: number;
541
+ DD_TELEMETRY_HEARTBEAT_INTERVAL: number;
542
+ DD_TELEMETRY_LOG_COLLECTION_ENABLED: boolean;
543
+ DD_TELEMETRY_METRICS_ENABLED: boolean;
544
+ };
545
+ testOptimization: {
546
+ DD_CIVISIBILITY_AGENTLESS_ENABLED: boolean;
547
+ DD_CIVISIBILITY_AGENTLESS_URL: URL | undefined;
548
+ DD_CIVISIBILITY_AUTO_INSTRUMENTATION_PROVIDER: string | undefined;
549
+ DD_CIVISIBILITY_DANGEROUSLY_FORCE_COVERAGE: boolean;
550
+ DD_CIVISIBILITY_DANGEROUSLY_FORCE_TEST_SKIPPING: boolean;
551
+ DD_CIVISIBILITY_EARLY_FLAKE_DETECTION_ENABLED: boolean;
552
+ DD_CIVISIBILITY_ENABLED: boolean;
553
+ DD_CIVISIBILITY_FLAKY_RETRY_COUNT: number;
554
+ DD_CIVISIBILITY_FLAKY_RETRY_ENABLED: boolean;
555
+ DD_CIVISIBILITY_GIT_UNSHALLOW_ENABLED: boolean;
556
+ DD_CIVISIBILITY_GIT_UPLOAD_ENABLED: boolean;
557
+ DD_CIVISIBILITY_IMPACTED_TESTS_DETECTION_ENABLED: boolean;
558
+ DD_CIVISIBILITY_ITR_ENABLED: boolean;
559
+ DD_CIVISIBILITY_MANUAL_API_ENABLED: boolean;
560
+ DD_CIVISIBILITY_RUM_FLUSH_WAIT_MILLIS: number;
561
+ DD_CIVISIBILITY_TEST_COMMAND: string | undefined;
562
+ DD_CIVISIBILITY_TEST_MODULE_ID: string | undefined;
563
+ DD_CIVISIBILITY_TEST_SESSION_ID: string | undefined;
564
+ DD_TEST_FAILED_TEST_REPLAY_ENABLED: boolean;
565
+ DD_TEST_FAILURE_SCREENSHOTS_ENABLED: boolean | undefined;
566
+ DD_TEST_FLEET_CONFIG_PATH: string | undefined;
567
+ DD_TEST_LOCAL_CONFIG_PATH: string | undefined;
568
+ DD_TEST_MANAGEMENT_ATTEMPT_TO_FIX_RETRIES: number;
569
+ DD_TEST_MANAGEMENT_ENABLED: boolean;
562
570
  };
563
- testManagementAttemptToFixRetries: number;
564
571
  traceId128BitGenerationEnabled: boolean;
565
572
  traceId128BitLoggingEnabled: boolean;
566
573
  tracePropagationStyle: {
@@ -570,17 +577,17 @@ export interface GeneratedConfig {
570
577
  traceWebsocketMessagesEnabled: boolean;
571
578
  traceWebsocketMessagesInheritSampling: boolean;
572
579
  traceWebsocketMessagesSeparateTraces: boolean;
573
- tracing: boolean;
574
580
  url: string | URL;
575
581
  version: string | undefined;
576
582
  vertexai: {
577
- spanCharLimit: number;
578
- spanPromptCompletionSampleRate: number;
583
+ DD_VERTEXAI_SPAN_CHAR_LIMIT: number;
584
+ DD_VERTEXAI_SPAN_PROMPT_COMPLETION_SAMPLE_RATE: number;
579
585
  };
580
586
  }
581
587
 
582
588
  export interface GeneratedEnvVarConfig {
583
589
  _DD_APM_TRACING_AGENTLESS_ENABLED: boolean;
590
+ _DD_TRACE_METRICS_OTEL_FLUSH_INTERVAL: number;
584
591
  DATADOG_API_KEY: string | undefined;
585
592
  DD_ACTION_EXECUTION_ID: string | undefined;
586
593
  DD_AGENT_HOST: string;
@@ -675,6 +682,7 @@ export interface GeneratedEnvVarConfig {
675
682
  DD_EXPERIMENTAL_TEST_OPT_GIT_CACHE_DIR: string | undefined;
676
683
  DD_EXPERIMENTAL_TEST_OPT_GIT_CACHE_ENABLED: boolean;
677
684
  DD_EXPERIMENTAL_TEST_OPT_SETTINGS_CACHE: string;
685
+ DD_EXPERIMENTAL_TEST_OPT_VITEST_NO_WORKER_INIT: boolean | undefined;
678
686
  DD_EXPERIMENTAL_TEST_REQUESTS_FS_CACHE: boolean;
679
687
  DD_EXTERNAL_ENV: string | undefined;
680
688
  DD_GIT_BRANCH: string | undefined;
@@ -787,6 +795,7 @@ export interface GeneratedEnvVarConfig {
787
795
  DD_TELEMETRY_LOG_COLLECTION_ENABLED: boolean;
788
796
  DD_TELEMETRY_METRICS_ENABLED: boolean;
789
797
  DD_TEST_FAILED_TEST_REPLAY_ENABLED: boolean;
798
+ DD_TEST_FAILURE_SCREENSHOTS_ENABLED: boolean | undefined;
790
799
  DD_TEST_FLEET_CONFIG_PATH: string | undefined;
791
800
  DD_TEST_LOCAL_CONFIG_PATH: string | undefined;
792
801
  DD_TEST_MANAGEMENT_ATTEMPT_TO_FIX_RETRIES: number;
@@ -865,6 +874,7 @@ export interface GeneratedEnvVarConfig {
865
874
  DD_TRACE_BUNYAN_ENABLED: boolean;
866
875
  DD_TRACE_CASSANDRA_DRIVER_ENABLED: boolean;
867
876
  DD_TRACE_CHILD_PROCESS_ENABLED: boolean;
877
+ DD_TRACE_CLAUDE_AGENT_SDK_ENABLED: boolean;
868
878
  DD_TRACE_CLIENT_IP_ENABLED: boolean;
869
879
  DD_TRACE_CLIENT_IP_HEADER: string | undefined;
870
880
  DD_TRACE_CLOUD_PAYLOAD_TAGGING_MAX_DEPTH: number;
@@ -914,11 +924,14 @@ export interface GeneratedEnvVarConfig {
914
924
  DD_TRACE_GOOGLE_CLOUD_VERTEXAI_ENABLED: boolean;
915
925
  DD_TRACE_GOOGLE_GAX_ENABLED: boolean;
916
926
  DD_TRACE_GOOGLE_GENAI_ENABLED: boolean;
927
+ DD_TRACE_GRAPHQL_COLLAPSE: boolean;
928
+ DD_TRACE_GRAPHQL_DEPTH: number;
917
929
  DD_TRACE_GRAPHQL_ENABLED: boolean;
918
930
  DD_TRACE_GRAPHQL_ERROR_EXTENSIONS: string[];
919
931
  DD_TRACE_GRAPHQL_TAG_ENABLED: boolean;
920
932
  DD_TRACE_GRAPHQL_TOOLS_ENABLED: boolean;
921
933
  DD_TRACE_GRAPHQL_TOOLS_EXECUTOR_ENABLED: boolean;
934
+ DD_TRACE_GRAPHQL_VARIABLES: string[];
922
935
  DD_TRACE_GRAPHQL_YOGA_ENABLED: boolean;
923
936
  DD_TRACE_GRPC_ENABLED: boolean;
924
937
  DD_TRACE_GRPC_GRPC_JS_ENABLED: boolean;
@@ -1109,4 +1122,5 @@ export interface GeneratedEnvVarConfig {
1109
1122
  OTEL_TRACES_EXPORTER: "none" | "otlp" | undefined;
1110
1123
  OTEL_TRACES_SAMPLER: "always_on" | "always_off" | "traceidratio" | "parentbased_always_on" | "parentbased_always_off" | "parentbased_traceidratio";
1111
1124
  OTEL_TRACES_SAMPLER_ARG: number | undefined;
1125
+ OTEL_TRACES_SPAN_METRICS_ENABLED: boolean | undefined;
1112
1126
  }
@@ -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',