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
@@ -111,7 +111,6 @@
111
111
  "aliases": [
112
112
  "DATADOG_API_KEY"
113
113
  ],
114
- "internalPropertyName": "apiKey",
115
114
  "sensitive": true
116
115
  }
117
116
  ],
@@ -119,6 +118,7 @@
119
118
  {
120
119
  "implementation": "A",
121
120
  "type": "boolean",
121
+ "namespace": "appsec",
122
122
  "configurationNames": [
123
123
  "appsec.apiSecurity.enabled",
124
124
  "experimental.appsec.apiSecurity.enabled"
@@ -133,6 +133,7 @@
133
133
  {
134
134
  "implementation": "A",
135
135
  "type": "boolean",
136
+ "namespace": "appsec",
136
137
  "configurationNames": [
137
138
  "appsec.apiSecurity.endpointCollectionEnabled",
138
139
  "experimental.appsec.apiSecurity.endpointCollectionEnabled"
@@ -144,6 +145,7 @@
144
145
  {
145
146
  "implementation": "A",
146
147
  "type": "int",
148
+ "namespace": "appsec",
147
149
  "configurationNames": [
148
150
  "appsec.apiSecurity.endpointCollectionMessageLimit",
149
151
  "experimental.appsec.apiSecurity.endpointCollectionMessageLimit"
@@ -155,7 +157,7 @@
155
157
  {
156
158
  "implementation": "A",
157
159
  "type": "decimal",
158
- "internalPropertyName": "appsec.apiSecurity.downstreamBodyAnalysisSampleRate",
160
+ "namespace": "appsec",
159
161
  "default": "0.5"
160
162
  }
161
163
  ],
@@ -163,7 +165,7 @@
163
165
  {
164
166
  "implementation": "A",
165
167
  "type": "int",
166
- "internalPropertyName": "appsec.apiSecurity.maxDownstreamRequestBodyAnalysis",
168
+ "namespace": "appsec",
167
169
  "default": "1"
168
170
  }
169
171
  ],
@@ -171,7 +173,7 @@
171
173
  {
172
174
  "implementation": "A",
173
175
  "type": "int",
174
- "internalPropertyName": "appsec.apiSecurity.maxDownstreamBodyBytes",
176
+ "namespace": "appsec",
175
177
  "default": "10485760"
176
178
  }
177
179
  ],
@@ -180,7 +182,7 @@
180
182
  "implementation": "A",
181
183
  "type": "decimal",
182
184
  "default": "30",
183
- "internalPropertyName": "appsec.apiSecurity.sampleDelay"
185
+ "namespace": "appsec"
184
186
  }
185
187
  ],
186
188
  "DD_APM_FLUSH_DEADLINE_MILLISECONDS": [
@@ -392,7 +394,7 @@
392
394
  "implementation": "B",
393
395
  "type": "boolean",
394
396
  "default": null,
395
- "internalPropertyName": "appsec.sca.enabled"
397
+ "namespace": "appsec"
396
398
  }
397
399
  ],
398
400
  "DD_APPSEC_STACK_TRACE_ENABLED": [
@@ -447,7 +449,8 @@
447
449
  {
448
450
  "implementation": "A",
449
451
  "type": "boolean",
450
- "default": "false"
452
+ "default": "false",
453
+ "namespace": "testOptimization"
451
454
  }
452
455
  ],
453
456
  "DD_CIVISIBILITY_AGENTLESS_URL": [
@@ -455,28 +458,32 @@
455
458
  "implementation": "A",
456
459
  "type": "string",
457
460
  "transform": "toURL",
458
- "default": null
461
+ "default": null,
462
+ "namespace": "testOptimization"
459
463
  }
460
464
  ],
461
465
  "DD_CIVISIBILITY_AUTO_INSTRUMENTATION_PROVIDER": [
462
466
  {
463
467
  "implementation": "A",
464
468
  "type": "string",
465
- "default": null
469
+ "default": null,
470
+ "namespace": "testOptimization"
466
471
  }
467
472
  ],
468
473
  "DD_CIVISIBILITY_DANGEROUSLY_FORCE_COVERAGE": [
469
474
  {
470
475
  "implementation": "A",
471
476
  "type": "boolean",
472
- "default": "false"
477
+ "default": "false",
478
+ "namespace": "testOptimization"
473
479
  }
474
480
  ],
475
481
  "DD_CIVISIBILITY_DANGEROUSLY_FORCE_TEST_SKIPPING": [
476
482
  {
477
483
  "implementation": "A",
478
484
  "type": "boolean",
479
- "default": "false"
485
+ "default": "false",
486
+ "namespace": "testOptimization"
480
487
  }
481
488
  ],
482
489
  "DD_CIVISIBILITY_EARLY_FLAKE_DETECTION_ENABLED": [
@@ -484,14 +491,15 @@
484
491
  "implementation": "B",
485
492
  "type": "boolean",
486
493
  "default": "true",
487
- "internalPropertyName": "isEarlyFlakeDetectionEnabled"
494
+ "namespace": "testOptimization"
488
495
  }
489
496
  ],
490
497
  "DD_CIVISIBILITY_ENABLED": [
491
498
  {
492
499
  "implementation": "A",
493
500
  "type": "boolean",
494
- "default": "false"
501
+ "default": "false",
502
+ "namespace": "testOptimization"
495
503
  }
496
504
  ],
497
505
  "DD_CIVISIBILITY_FLAKY_RETRY_COUNT": [
@@ -499,7 +507,7 @@
499
507
  "implementation": "A",
500
508
  "type": "int",
501
509
  "default": "5",
502
- "internalPropertyName": "flakyTestRetriesCount"
510
+ "namespace": "testOptimization"
503
511
  }
504
512
  ],
505
513
  "DD_CIVISIBILITY_FLAKY_RETRY_ENABLED": [
@@ -507,14 +515,15 @@
507
515
  "implementation": "A",
508
516
  "type": "boolean",
509
517
  "default": "true",
510
- "internalPropertyName": "isFlakyTestRetriesEnabled"
518
+ "namespace": "testOptimization"
511
519
  }
512
520
  ],
513
521
  "DD_CIVISIBILITY_GIT_UNSHALLOW_ENABLED": [
514
522
  {
515
523
  "implementation": "A",
516
524
  "type": "boolean",
517
- "default": "true"
525
+ "default": "true",
526
+ "namespace": "testOptimization"
518
527
  }
519
528
  ],
520
529
  "DD_CIVISIBILITY_GIT_UPLOAD_ENABLED": [
@@ -522,7 +531,7 @@
522
531
  "implementation": "A",
523
532
  "type": "boolean",
524
533
  "default": "true",
525
- "internalPropertyName": "isGitUploadEnabled"
534
+ "namespace": "testOptimization"
526
535
  }
527
536
  ],
528
537
  "DD_CIVISIBILITY_IMPACTED_TESTS_DETECTION_ENABLED": [
@@ -530,7 +539,7 @@
530
539
  "implementation": "A",
531
540
  "type": "boolean",
532
541
  "default": "true",
533
- "internalPropertyName": "isImpactedTestsEnabled"
542
+ "namespace": "testOptimization"
534
543
  }
535
544
  ],
536
545
  "DD_CIVISIBILITY_ITR_ENABLED": [
@@ -538,7 +547,7 @@
538
547
  "implementation": "A",
539
548
  "type": "boolean",
540
549
  "default": "true",
541
- "internalPropertyName": "isIntelligentTestRunnerEnabled"
550
+ "namespace": "testOptimization"
542
551
  }
543
552
  ],
544
553
  "DD_ENABLE_LAGE_PACKAGE_NAME": [
@@ -552,35 +561,40 @@
552
561
  {
553
562
  "implementation": "A",
554
563
  "type": "boolean",
555
- "default": "true"
564
+ "default": "true",
565
+ "namespace": "testOptimization"
556
566
  }
557
567
  ],
558
568
  "DD_CIVISIBILITY_RUM_FLUSH_WAIT_MILLIS": [
559
569
  {
560
570
  "implementation": "A",
561
571
  "type": "int",
562
- "default": "500"
572
+ "default": "500",
573
+ "namespace": "testOptimization"
563
574
  }
564
575
  ],
565
576
  "DD_CIVISIBILITY_TEST_COMMAND": [
566
577
  {
567
578
  "implementation": "A",
568
579
  "type": "string",
569
- "default": null
580
+ "default": null,
581
+ "namespace": "testOptimization"
570
582
  }
571
583
  ],
572
584
  "DD_CIVISIBILITY_TEST_MODULE_ID": [
573
585
  {
574
586
  "implementation": "A",
575
587
  "type": "string",
576
- "default": null
588
+ "default": null,
589
+ "namespace": "testOptimization"
577
590
  }
578
591
  ],
579
592
  "DD_CIVISIBILITY_TEST_SESSION_ID": [
580
593
  {
581
594
  "implementation": "A",
582
595
  "type": "string",
583
- "default": null
596
+ "default": null,
597
+ "namespace": "testOptimization"
584
598
  }
585
599
  ],
586
600
  "DD_CODE_ORIGIN_FOR_SPANS_ENABLED": [
@@ -824,6 +838,13 @@
824
838
  "default": "false"
825
839
  }
826
840
  ],
841
+ "DD_EXPERIMENTAL_TEST_OPT_VITEST_NO_WORKER_INIT": [
842
+ {
843
+ "implementation": "A",
844
+ "type": "boolean",
845
+ "default": null
846
+ }
847
+ ],
827
848
  "DD_EXPERIMENTAL_TEST_REQUESTS_FS_CACHE": [
828
849
  {
829
850
  "implementation": "A",
@@ -1094,7 +1115,7 @@
1094
1115
  {
1095
1116
  "implementation": "B",
1096
1117
  "type": "string",
1097
- "internalPropertyName": "iast.securityControlsConfiguration",
1118
+ "namespace": "iast",
1098
1119
  "default": null
1099
1120
  }
1100
1121
  ],
@@ -1170,7 +1191,7 @@
1170
1191
  "aliases": [
1171
1192
  "DD_TRACE_TELEMETRY_ENABLED"
1172
1193
  ],
1173
- "internalPropertyName": "telemetry.enabled"
1194
+ "namespace": "telemetry"
1174
1195
  }
1175
1196
  ],
1176
1197
  "DD_INTERNAL_PROFILING_LONG_LIVED_THRESHOLD": [
@@ -1199,7 +1220,7 @@
1199
1220
  "implementation": "A",
1200
1221
  "type": "int",
1201
1222
  "default": "128",
1202
- "internalPropertyName": "langchain.spanCharLimit"
1223
+ "namespace": "langchain"
1203
1224
  }
1204
1225
  ],
1205
1226
  "DD_LANGCHAIN_SPAN_PROMPT_COMPLETION_SAMPLE_RATE": [
@@ -1207,7 +1228,7 @@
1207
1228
  "implementation": "A",
1208
1229
  "type": "decimal",
1209
1230
  "default": "1",
1210
- "internalPropertyName": "langchain.spanPromptCompletionSampleRate"
1231
+ "namespace": "langchain"
1211
1232
  }
1212
1233
  ],
1213
1234
  "DD_LLMOBS_AGENTLESS_ENABLED": [
@@ -1225,7 +1246,7 @@
1225
1246
  "implementation": "A",
1226
1247
  "type": "boolean",
1227
1248
  "default": "false",
1228
- "internalPropertyName": "llmobs.enabled"
1249
+ "namespace": "llmobs"
1229
1250
  }
1230
1251
  ],
1231
1252
  "DD_LLMOBS_ML_APP": [
@@ -1323,7 +1344,7 @@
1323
1344
  "implementation": "A",
1324
1345
  "type": "int",
1325
1346
  "default": "128",
1326
- "internalPropertyName": "openai.spanCharLimit"
1347
+ "namespace": "openai"
1327
1348
  }
1328
1349
  ],
1329
1350
  "DD_PIPELINE_EXECUTION_ID": [
@@ -1416,7 +1437,7 @@
1416
1437
  {
1417
1438
  "implementation": "B",
1418
1439
  "type": "string",
1419
- "internalPropertyName": "profiling.enabled",
1440
+ "namespace": "profiling",
1420
1441
  "configurationNames": [
1421
1442
  "profiling"
1422
1443
  ],
@@ -1578,7 +1599,7 @@
1578
1599
  "aliases": [
1579
1600
  "DD_REMOTE_CONFIG_ENABLED"
1580
1601
  ],
1581
- "internalPropertyName": "remoteConfig.enabled"
1602
+ "namespace": "remoteConfig"
1582
1603
  }
1583
1604
  ],
1584
1605
  "DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS": [
@@ -1740,7 +1761,7 @@
1740
1761
  "implementation": "A",
1741
1762
  "type": "boolean",
1742
1763
  "default": "false",
1743
- "internalPropertyName": "telemetry.debug"
1764
+ "namespace": "telemetry"
1744
1765
  }
1745
1766
  ],
1746
1767
  "DD_TELEMETRY_DEPENDENCY_COLLECTION_ENABLED": [
@@ -1748,7 +1769,7 @@
1748
1769
  "implementation": "A",
1749
1770
  "type": "boolean",
1750
1771
  "default": "true",
1751
- "internalPropertyName": "telemetry.dependencyCollection"
1772
+ "namespace": "telemetry"
1752
1773
  }
1753
1774
  ],
1754
1775
  "DD_TELEMETRY_FORWARDER_PATH": [
@@ -1763,7 +1784,7 @@
1763
1784
  "implementation": "A",
1764
1785
  "type": "int",
1765
1786
  "default": "86400",
1766
- "internalPropertyName": "telemetry.extendedHeartbeatInterval"
1787
+ "namespace": "telemetry"
1767
1788
  }
1768
1789
  ],
1769
1790
  "DD_TELEMETRY_HEARTBEAT_INTERVAL": [
@@ -1771,7 +1792,7 @@
1771
1792
  "implementation": "B",
1772
1793
  "type": "decimal",
1773
1794
  "default": "60.0",
1774
- "internalPropertyName": "telemetry.heartbeatInterval"
1795
+ "namespace": "telemetry"
1775
1796
  }
1776
1797
  ],
1777
1798
  "DD_TELEMETRY_LOG_COLLECTION_ENABLED": [
@@ -1779,7 +1800,7 @@
1779
1800
  "implementation": "A",
1780
1801
  "type": "boolean",
1781
1802
  "default": "true",
1782
- "internalPropertyName": "telemetry.logCollection"
1803
+ "namespace": "telemetry"
1783
1804
  }
1784
1805
  ],
1785
1806
  "DD_TELEMETRY_METRICS_ENABLED": [
@@ -1787,7 +1808,7 @@
1787
1808
  "implementation": "A",
1788
1809
  "type": "boolean",
1789
1810
  "default": "true",
1790
- "internalPropertyName": "telemetry.metrics"
1811
+ "namespace": "telemetry"
1791
1812
  }
1792
1813
  ],
1793
1814
  "DD_TEST_FAILED_TEST_REPLAY_ENABLED": [
@@ -1795,21 +1816,23 @@
1795
1816
  "implementation": "A",
1796
1817
  "type": "boolean",
1797
1818
  "default": "true",
1798
- "internalPropertyName": "isTestDynamicInstrumentationEnabled"
1819
+ "namespace": "testOptimization"
1799
1820
  }
1800
1821
  ],
1801
1822
  "DD_TEST_FLEET_CONFIG_PATH": [
1802
1823
  {
1803
1824
  "implementation": "A",
1804
1825
  "type": "string",
1805
- "default": null
1826
+ "default": null,
1827
+ "namespace": "testOptimization"
1806
1828
  }
1807
1829
  ],
1808
1830
  "DD_TEST_LOCAL_CONFIG_PATH": [
1809
1831
  {
1810
1832
  "implementation": "A",
1811
1833
  "type": "string",
1812
- "default": null
1834
+ "default": null,
1835
+ "namespace": "testOptimization"
1813
1836
  }
1814
1837
  ],
1815
1838
  "DD_TEST_MANAGEMENT_ATTEMPT_TO_FIX_RETRIES": [
@@ -1817,7 +1840,7 @@
1817
1840
  "implementation": "C",
1818
1841
  "type": "int",
1819
1842
  "default": "20",
1820
- "internalPropertyName": "testManagementAttemptToFixRetries"
1843
+ "namespace": "testOptimization"
1821
1844
  }
1822
1845
  ],
1823
1846
  "DD_TEST_MANAGEMENT_ENABLED": [
@@ -1825,7 +1848,7 @@
1825
1848
  "implementation": "A",
1826
1849
  "type": "boolean",
1827
1850
  "default": "true",
1828
- "internalPropertyName": "isTestManagementEnabled"
1851
+ "namespace": "testOptimization"
1829
1852
  }
1830
1853
  ],
1831
1854
  "DD_TEST_SESSION_NAME": [
@@ -2557,8 +2580,7 @@
2557
2580
  {
2558
2581
  "implementation": "A",
2559
2582
  "type": "boolean",
2560
- "default": "true",
2561
- "internalPropertyName": "tracing"
2583
+ "default": "true"
2562
2584
  }
2563
2585
  ],
2564
2586
  "DD_TRACE_ENCODING_DEBUG": [
@@ -3115,6 +3137,14 @@
3115
3137
  "default": "true"
3116
3138
  }
3117
3139
  ],
3140
+ "_DD_TRACE_METRICS_OTEL_FLUSH_INTERVAL": [
3141
+ {
3142
+ "implementation": "A",
3143
+ "type": "int",
3144
+ "default": "10000",
3145
+ "allowed": "[1-9]\\d*"
3146
+ }
3147
+ ],
3118
3148
  "DD_TRACE_MICROGATEWAY_CORE_ENABLED": [
3119
3149
  {
3120
3150
  "implementation": "A",
@@ -3292,8 +3322,7 @@
3292
3322
  {
3293
3323
  "implementation": "F",
3294
3324
  "type": "string",
3295
- "default": "(?:p(?:ass)?w(?:or)?d|pass(?:_?phrase)?|secret|(?:api_?|private_?|public_?|access_?|secret_?)key(?:_?id)?|token|consumer_?(?:id|key|secret)|sign(?:ed|ature)?|auth(?:entication|orization)?)(?:(?:\\s|%20)*(?:=|%3D)[^&]+|(?:\"|%22)(?:\\s|%20)*(?::|%3A)(?:\\s|%20)*(?:\"|%22)(?:%2[^2]|%[^2]|[^\"%])+(?:\"|%22))|bearer(?:\\s|%20)+[a-z0-9\\._\\-]+|token(?::|%3A)[a-z0-9]{13}|gh[opsu]_[0-9a-zA-Z]{36}|ey[I-L](?:[\\w=-]|%3D)+\\.ey[I-L](?:[\\w=-]|%3D)+(?:\\.(?:[\\w.+\\/=-]|%3D|%2F|%2B)+)?|[\\-]{5}BEGIN(?:[a-z\\s]|%20)+PRIVATE(?:\\s|%20)KEY[\\-]{5}[^\\-]+[\\-]{5}END(?:[a-z\\s]|%20)+PRIVATE(?:\\s|%20)KEY|ssh-rsa(?:\\s|%20)*(?:[a-z0-9\\/\\.+]|%2F|%5C|%2B){100,}",
3296
- "internalPropertyName": "queryStringObfuscation"
3325
+ "default": "(?:p(?:ass)?w(?:or)?d|pass(?:_?phrase)?|secret|(?:api_?|private_?|public_?|access_?|secret_?)key(?:_?id)?|token|consumer_?(?:id|key|secret)|sign(?:ed|ature)?|auth(?:entication|orization)?)(?:(?:\\s|%20)*(?:=|%3D)[^&]+|(?:\"|%22)(?:\\s|%20)*(?::|%3A)(?:\\s|%20)*(?:\"|%22)(?:%2[^2]|%[^2]|[^\"%])+(?:\"|%22))|bearer(?:\\s|%20)+[a-z0-9\\._\\-]+|token(?::|%3A)[a-z0-9]{13}|gh[opsu]_[0-9a-zA-Z]{36}|ey[I-L](?:[\\w=-]|%3D)+\\.ey[I-L](?:[\\w=-]|%3D)+(?:\\.(?:[\\w.+\\/=-]|%3D|%2F|%2B)+)?|[\\-]{5}BEGIN(?:[a-z\\s]|%20)+PRIVATE(?:\\s|%20)KEY[\\-]{5}[^\\-]+[\\-]{5}END(?:[a-z\\s]|%20)+PRIVATE(?:\\s|%20)KEY|ssh-rsa(?:\\s|%20)*(?:[a-z0-9\\/\\.+]|%2F|%5C|%2B){100,}"
3297
3326
  }
3298
3327
  ],
3299
3328
  "DD_TRACE_OPENAI_ENABLED": [
@@ -3331,14 +3360,14 @@
3331
3360
  "default": "true"
3332
3361
  }
3333
3362
  ],
3334
- "DD_TRACE_OTEL_SEMANTICS_ENABLED": [
3363
+ "DD_TRACE_OTEL_ENABLED": [
3335
3364
  {
3336
3365
  "implementation": "A",
3337
3366
  "type": "boolean",
3338
3367
  "default": "false"
3339
3368
  }
3340
3369
  ],
3341
- "DD_TRACE_OTEL_ENABLED": [
3370
+ "DD_TRACE_OTEL_SEMANTICS_ENABLED": [
3342
3371
  {
3343
3372
  "implementation": "A",
3344
3373
  "type": "boolean",
@@ -3633,8 +3662,7 @@
3633
3662
  {
3634
3663
  "implementation": "A",
3635
3664
  "type": "boolean",
3636
- "default": "false",
3637
- "internalPropertyName": "resourceRenamingEnabled"
3665
+ "default": "false"
3638
3666
  }
3639
3667
  ],
3640
3668
  "DD_TRACE_RESTIFY_ENABLED": [
@@ -3685,8 +3713,7 @@
3685
3713
  {
3686
3714
  "implementation": "A",
3687
3715
  "type": "string",
3688
- "default": null,
3689
- "internalPropertyName": "scope"
3716
+ "default": null
3690
3717
  }
3691
3718
  ],
3692
3719
  "DD_TRACE_SELENIUM_ENABLED": [
@@ -3764,7 +3791,7 @@
3764
3791
  {
3765
3792
  "implementation": "A",
3766
3793
  "type": "boolean",
3767
- "internalPropertyName": "stats.enabled",
3794
+ "namespace": "stats",
3768
3795
  "configurationNames": [
3769
3796
  "stats"
3770
3797
  ],
@@ -3910,7 +3937,7 @@
3910
3937
  "implementation": "A",
3911
3938
  "type": "int",
3912
3939
  "default": "128",
3913
- "internalPropertyName": "vertexai.spanCharLimit"
3940
+ "namespace": "vertexai"
3914
3941
  }
3915
3942
  ],
3916
3943
  "DD_VERTEXAI_SPAN_PROMPT_COMPLETION_SAMPLE_RATE": [
@@ -3918,7 +3945,7 @@
3918
3945
  "implementation": "A",
3919
3946
  "type": "decimal",
3920
3947
  "default": "1",
3921
- "internalPropertyName": "vertexai.spanPromptCompletionSampleRate"
3948
+ "namespace": "vertexai"
3922
3949
  }
3923
3950
  ],
3924
3951
  "DD_VITEST_WORKER": [
@@ -4182,6 +4209,13 @@
4182
4209
  "default": null,
4183
4210
  "allowed": "\\d+(\\.\\d+)?"
4184
4211
  }
4212
+ ],
4213
+ "OTEL_TRACES_SPAN_METRICS_ENABLED": [
4214
+ {
4215
+ "implementation": "A",
4216
+ "type": "boolean",
4217
+ "default": null
4218
+ }
4185
4219
  ]
4186
4220
  }
4187
4221
  }
@@ -61,4 +61,11 @@ module.exports = {
61
61
  UPSTREAM: 'span-pointer-up',
62
62
  DOWNSTREAM: 'span-pointer-down',
63
63
  }),
64
+ // https://github.com/grpc/grpc/blob/master/doc/statuscodes.md
65
+ GRPC_STATUS_NAMES: [
66
+ 'OK', 'CANCELLED', 'UNKNOWN', 'INVALID_ARGUMENT', 'DEADLINE_EXCEEDED',
67
+ 'NOT_FOUND', 'ALREADY_EXISTS', 'PERMISSION_DENIED', 'RESOURCE_EXHAUSTED',
68
+ 'FAILED_PRECONDITION', 'ABORTED', 'OUT_OF_RANGE', 'UNIMPLEMENTED',
69
+ 'INTERNAL', 'UNAVAILABLE', 'DATA_LOSS', 'UNAUTHENTICATED',
70
+ ],
64
71
  }
@@ -235,7 +235,11 @@ class DataStreamsProcessor {
235
235
  this._schemaSamplers = {}
236
236
  this._checkpointRegistry = new CheckpointRegistry()
237
237
 
238
- if (this.enabled) {
238
+ // `flushInterval === 0` is the "flush on write" sentinel the trace exporter already honors
239
+ // (agent exporter `export()`); a background timer of `0` would instead fire on every event-loop
240
+ // tick, decoupled from when checkpoints are recorded, and a single tick landing while the agent
241
+ // is unreachable drops the bucket for good (it is cleared on serialize). Push on record instead.
242
+ if (this.enabled && flushInterval !== 0) {
239
243
  this.timer = setInterval(this.onInterval.bind(this), flushInterval)
240
244
  this.timer.unref?.()
241
245
  }
@@ -282,6 +286,7 @@ class DataStreamsProcessor {
282
286
  // StatsPoint already converted the 8-byte Buffer hash to a uint64 BigInt.
283
287
  span.setTag(PATHWAY_HASH, statsPoint.hash.toString())
284
288
  }
289
+ if (this.flushInterval === 0) this.onInterval()
285
290
  }
286
291
 
287
292
  setCheckpoint (edgeTags, span, ctx, payloadSize = 0) {
@@ -356,8 +361,9 @@ class DataStreamsProcessor {
356
361
 
357
362
  recordOffset ({ timestamp, ...backlogData }) {
358
363
  if (!this.enabled) return
359
- return this.bucketFromTimestamp(timestamp)
360
- .forBacklog(backlogData)
364
+ const backlog = this.bucketFromTimestamp(timestamp).forBacklog(backlogData)
365
+ if (this.flushInterval === 0) this.onInterval()
366
+ return backlog
361
367
  }
362
368
 
363
369
  setOffset (offsetObj) {
@@ -401,6 +407,8 @@ class DataStreamsProcessor {
401
407
  // Number() cast is safe here: 10s bucket granularity tolerates ~0.5ns precision loss
402
408
  this.bucketFromTimestamp(Number(timestampNs)).addTransaction(entry)
403
409
 
410
+ if (this.flushInterval === 0) this.onInterval()
411
+
404
412
  if (span) {
405
413
  span.setTag(DSM_TRANSACTION_ID, transactionId)
406
414
  span.setTag(DSM_TRANSACTION_CHECKPOINT, checkpointName)
@@ -13,7 +13,7 @@ class AgentExporter {
13
13
  this._url = config.url
14
14
 
15
15
  const headers = {}
16
- if (stats.enabled || apmTracingEnabled === false) {
16
+ if (stats.DD_TRACE_STATS_COMPUTATION_ENABLED || apmTracingEnabled === false) {
17
17
  headers['Datadog-Client-Computed-Stats'] = 'yes'
18
18
  }
19
19
 
@@ -40,7 +40,7 @@ class AgentlessWriter extends BaseWriter {
40
40
  }
41
41
  }
42
42
 
43
- if (!getConfig().apiKey) {
43
+ if (!getConfig().DD_API_KEY) {
44
44
  this.#apiKeyMissing = true
45
45
  log.error('DD_API_KEY is required for agentless trace intake. Set DD_API_KEY. Traces will not be sent.')
46
46
  }
@@ -109,8 +109,8 @@ class AgentlessWriter extends BaseWriter {
109
109
  return
110
110
  }
111
111
 
112
- const apiKey = getConfig().apiKey
113
- if (!apiKey) {
112
+ const { DD_API_KEY } = getConfig()
113
+ if (!DD_API_KEY) {
114
114
  if (!this.#apiKeyMissing) {
115
115
  this.#apiKeyMissing = true
116
116
  log.error('DD_API_KEY is required for agentless trace intake. Set DD_API_KEY. Traces will not be sent.')
@@ -126,7 +126,7 @@ class AgentlessWriter extends BaseWriter {
126
126
  method: 'POST',
127
127
  headers: {
128
128
  'Content-Type': 'application/json',
129
- 'dd-api-key': apiKey,
129
+ 'dd-api-key': DD_API_KEY,
130
130
  'X-Datadog-Trace-Count': String(count),
131
131
  'Datadog-Meta-Lang': 'nodejs',
132
132
  'Datadog-Meta-Lang-Version': process.version,
@@ -75,7 +75,7 @@ function enable (config) {
75
75
  injectCh.subscribe(handleLLMObsInjection)
76
76
 
77
77
  setAgentStrategy(config, useAgentless => {
78
- if (useAgentless && !(config.apiKey && config.site)) {
78
+ if (useAgentless && !(config.DD_API_KEY && config.site)) {
79
79
  if (DD_MAJOR < 6 || !config?.startupLogs) {
80
80
  // eslint-disable-next-line no-console
81
81
  console.error(INCOMPATIBLE_INITIALIZATION)
@@ -25,7 +25,7 @@ class LLMObsPlugin extends TracingPlugin {
25
25
  start (ctx) {
26
26
  // even though llmobs span events won't be enqueued if llmobs is disabled
27
27
  // we should avoid doing any computations here (these listeners aren't disabled)
28
- const enabled = this._tracerConfig.llmobs.enabled
28
+ const enabled = this._tracerConfig.llmobs.DD_LLMOBS_ENABLED
29
29
  if (!enabled) return
30
30
 
31
31
  const parentStore = llmobsStorage.getStore()
@@ -52,7 +52,7 @@ class LLMObsPlugin extends TracingPlugin {
52
52
  }
53
53
 
54
54
  end (ctx) {
55
- const enabled = this._tracerConfig.llmobs.enabled
55
+ const enabled = this._tracerConfig.llmobs.DD_LLMOBS_ENABLED
56
56
  if (!enabled) return
57
57
 
58
58
  // only attempt to restore the context if the current span was an LLMObs span
@@ -67,7 +67,7 @@ class LLMObsPlugin extends TracingPlugin {
67
67
  asyncEnd (ctx) {
68
68
  // even though llmobs span events won't be enqueued if llmobs is disabled
69
69
  // we should avoid doing any computations here (these listeners aren't disabled)
70
- const enabled = this._tracerConfig.llmobs.enabled
70
+ const enabled = this._tracerConfig.llmobs.DD_LLMOBS_ENABLED
71
71
  if (!enabled) return
72
72
 
73
73
  const apmStore = ctx.currentStore
@@ -85,7 +85,7 @@ class LLMObsPlugin extends TracingPlugin {
85
85
 
86
86
  configure (config) {
87
87
  // we do not want to enable any LLMObs plugins if it is disabled on the tracer
88
- const llmobsEnabled = this._tracerConfig.llmobs.enabled
88
+ const llmobsEnabled = this._tracerConfig.llmobs.DD_LLMOBS_ENABLED
89
89
  if (llmobsEnabled === false) {
90
90
  config = typeof config === 'boolean' ? false : { ...config, enabled: false } // override to false
91
91
  }
@@ -14,7 +14,7 @@ class PregelStreamLLMObsPlugin extends LLMObsPlugin {
14
14
  getLLMObsSpanRegisterOptions (ctx) {
15
15
  const name = ctx.self.name || 'LangGraph'
16
16
 
17
- const enabled = this._tracerConfig.llmobs.enabled
17
+ const enabled = this._tracerConfig.llmobs.DD_LLMOBS_ENABLED
18
18
  if (!enabled) return
19
19
 
20
20
  const span = ctx.currentStore?.span