dd-trace 6.15.0 → 6.17.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 (378) hide show
  1. package/README.md +15 -0
  2. package/ci/diagnose.js +0 -23
  3. package/ci/test-optimization-validation/approval-artifacts.js +0 -3
  4. package/ci/test-optimization-validation/approval.js +0 -6
  5. package/ci/test-optimization-validation/artifact-id.js +0 -1
  6. package/ci/test-optimization-validation/bounded-json.js +0 -1
  7. package/ci/test-optimization-validation/cli.js +0 -12
  8. package/ci/test-optimization-validation/command-output-policy.js +0 -1
  9. package/ci/test-optimization-validation/command-runner.js +0 -3
  10. package/ci/test-optimization-validation/environment.js +0 -4
  11. package/ci/test-optimization-validation/executable-approval.js +0 -1
  12. package/ci/test-optimization-validation/executable.js +0 -5
  13. package/ci/test-optimization-validation/framework-adapters/cucumber.js +4 -8
  14. package/ci/test-optimization-validation/framework-adapters/cypress.js +0 -3
  15. package/ci/test-optimization-validation/framework-adapters/playwright.js +0 -6
  16. package/ci/test-optimization-validation/framework-adapters/vitest.js +0 -4
  17. package/ci/test-optimization-validation/generated-test-contract.js +0 -5
  18. package/ci/test-optimization-validation/generated-verifier.js +0 -1
  19. package/ci/test-optimization-validation/literal-environment.js +0 -1
  20. package/ci/test-optimization-validation/manifest-scaffold.js +0 -17
  21. package/ci/test-optimization-validation/manifest-schema.js +0 -21
  22. package/ci/test-optimization-validation/offline-fixtures.js +0 -4
  23. package/ci/test-optimization-validation/package-check.js +4 -1
  24. package/ci/test-optimization-validation/plan-writer.js +0 -11
  25. package/ci/test-optimization-validation/preflight-runner.js +0 -1
  26. package/ci/test-optimization-validation/redaction.js +0 -4
  27. package/ci/test-optimization-validation/report-writer.js +0 -16
  28. package/ci/test-optimization-validation/runner-command.js +0 -3
  29. package/ci/test-optimization-validation/runner-contract.js +0 -4
  30. package/ci/test-optimization-validation/safe-files.js +0 -1
  31. package/ci/test-optimization-validation/scenarios/basic-reporting.js +0 -1
  32. package/ci/test-optimization-validation/scenarios/ci-wiring.js +1 -2
  33. package/ci/test-optimization-validation/source-text.js +0 -3
  34. package/ci/vitest-no-worker-init-setup.mjs +41 -16
  35. package/index.d.ts +169 -0
  36. package/next.d.ts +27 -0
  37. package/next.js +3 -0
  38. package/package.json +28 -23
  39. package/packages/datadog-esbuild/index.js +14 -1
  40. package/packages/datadog-esbuild/src/resolver.js +284 -0
  41. package/packages/datadog-esbuild/src/utils.js +162 -120
  42. package/packages/datadog-instrumentations/src/aerospike.js +28 -6
  43. package/packages/datadog-instrumentations/src/ai.js +39 -97
  44. package/packages/datadog-instrumentations/src/anthropic.js +76 -134
  45. package/packages/datadog-instrumentations/src/aws-durable-execution-sdk-js.js +1 -3
  46. package/packages/datadog-instrumentations/src/aws-sdk.js +0 -2
  47. package/packages/datadog-instrumentations/src/azure-cosmos.js +1 -1
  48. package/packages/datadog-instrumentations/src/azure-durable-functions.js +23 -9
  49. package/packages/datadog-instrumentations/src/azure-functions.js +48 -0
  50. package/packages/datadog-instrumentations/src/bullmq.js +1 -1
  51. package/packages/datadog-instrumentations/src/claude-agent-sdk.js +1 -3
  52. package/packages/datadog-instrumentations/src/console.js +97 -0
  53. package/packages/datadog-instrumentations/src/cucumber.js +72 -12
  54. package/packages/datadog-instrumentations/src/cypress-config.js +0 -23
  55. package/packages/datadog-instrumentations/src/dd-trace-api.js +2 -2
  56. package/packages/datadog-instrumentations/src/graphql.js +1 -1
  57. package/packages/datadog-instrumentations/src/helpers/bundler-register.js +39 -14
  58. package/packages/datadog-instrumentations/src/helpers/channel.js +0 -2
  59. package/packages/datadog-instrumentations/src/helpers/graphql-jit-runtime.js +0 -5
  60. package/packages/datadog-instrumentations/src/helpers/hooks.js +8 -0
  61. package/packages/datadog-instrumentations/src/helpers/instrument.js +25 -8
  62. package/packages/datadog-instrumentations/src/helpers/instrumentation-utils.js +69 -0
  63. package/packages/datadog-instrumentations/src/helpers/pool-acquire.js +0 -6
  64. package/packages/datadog-instrumentations/src/helpers/register.js +13 -64
  65. package/packages/datadog-instrumentations/src/helpers/rewriter/index.js +109 -29
  66. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentation-registry.js +39 -0
  67. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/azure-durable-functions.js +17 -0
  68. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/index.js +3 -16
  69. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/playwright.js +12 -0
  70. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/postgres.js +36 -0
  71. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/supabase.js +128 -0
  72. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/webdriverio.js +6 -7
  73. package/packages/datadog-instrumentations/src/helpers/rewriter/targets.json +17 -0
  74. package/packages/datadog-instrumentations/src/helpers/rewriter/transforms/postgres.js +388 -0
  75. package/packages/datadog-instrumentations/src/helpers/rewriter/transforms.js +99 -75
  76. package/packages/datadog-instrumentations/src/helpers/router-helper.js +0 -1
  77. package/packages/datadog-instrumentations/src/jest.js +141 -51
  78. package/packages/datadog-instrumentations/src/knex.js +0 -1
  79. package/packages/datadog-instrumentations/src/langchain.js +1 -1
  80. package/packages/datadog-instrumentations/src/langgraph.js +1 -1
  81. package/packages/datadog-instrumentations/src/mariadb-bundle.js +0 -24
  82. package/packages/datadog-instrumentations/src/mariadb.js +0 -2
  83. package/packages/datadog-instrumentations/src/mercurius.js +1 -1
  84. package/packages/datadog-instrumentations/src/mocha/common.js +0 -1
  85. package/packages/datadog-instrumentations/src/mocha/main.js +22 -25
  86. package/packages/datadog-instrumentations/src/mocha/utils.js +119 -49
  87. package/packages/datadog-instrumentations/src/mocha/webdriverio-protocol.js +0 -6
  88. package/packages/datadog-instrumentations/src/mocha/worker.js +14 -17
  89. package/packages/datadog-instrumentations/src/modelcontextprotocol-sdk.js +1 -1
  90. package/packages/datadog-instrumentations/src/mysql2.js +0 -2
  91. package/packages/datadog-instrumentations/src/openai-agents.js +1 -1
  92. package/packages/datadog-instrumentations/src/openai-realtime/audio-accumulator.js +241 -0
  93. package/packages/datadog-instrumentations/src/openai-realtime/events.js +76 -0
  94. package/packages/datadog-instrumentations/src/openai-realtime/index.js +301 -0
  95. package/packages/datadog-instrumentations/src/openai-realtime/session.js +998 -0
  96. package/packages/datadog-instrumentations/src/openai-realtime/turns.js +211 -0
  97. package/packages/datadog-instrumentations/src/openai.js +97 -80
  98. package/packages/datadog-instrumentations/src/oracledb.js +9 -3
  99. package/packages/datadog-instrumentations/src/playwright-reporter.js +3 -16
  100. package/packages/datadog-instrumentations/src/playwright.js +238 -55
  101. package/packages/datadog-instrumentations/src/postgres.js +7 -0
  102. package/packages/datadog-instrumentations/src/router.js +0 -2
  103. package/packages/datadog-instrumentations/src/rum-browser-scripts.js +0 -2
  104. package/packages/datadog-instrumentations/src/sequelize.js +0 -1
  105. package/packages/datadog-instrumentations/src/supabase.js +15 -0
  106. package/packages/datadog-instrumentations/src/vitest-main-no-worker-init.js +18 -18
  107. package/packages/datadog-instrumentations/src/vitest-main.js +37 -17
  108. package/packages/datadog-instrumentations/src/vitest-util.js +7 -1
  109. package/packages/datadog-instrumentations/src/vitest-worker.js +56 -23
  110. package/packages/datadog-instrumentations/src/webdriverio.js +23 -42
  111. package/packages/datadog-instrumentations/src/ws.js +0 -1
  112. package/packages/datadog-plugin-ai/src/utils.js +0 -2
  113. package/packages/datadog-plugin-aws-durable-execution-sdk-js/src/trace-checkpoint.js +0 -1
  114. package/packages/datadog-plugin-aws-durable-execution-sdk-js/src/util.js +0 -2
  115. package/packages/datadog-plugin-aws-sdk/src/base.js +0 -1
  116. package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/utils.js +7 -2
  117. package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +0 -1
  118. package/packages/datadog-plugin-aws-sdk/src/util.js +0 -1
  119. package/packages/datadog-plugin-azure-cosmos/src/index.js +1 -1
  120. package/packages/datadog-plugin-azure-durable-functions/src/index.js +95 -1
  121. package/packages/datadog-plugin-cucumber/src/index.js +10 -0
  122. package/packages/datadog-plugin-cypress/src/cypress-plugin.js +171 -75
  123. package/packages/datadog-plugin-cypress/src/finalization.js +0 -3
  124. package/packages/datadog-plugin-cypress/src/source-map-utils.js +0 -4
  125. package/packages/datadog-plugin-cypress/src/support.js +52 -7
  126. package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +2 -24
  127. package/packages/datadog-plugin-google-cloud-pubsub/src/pubsub-push-subscription.js +2 -36
  128. package/packages/datadog-plugin-google-cloud-pubsub/src/pubsub-request-context.js +31 -0
  129. package/packages/datadog-plugin-graphql/src/resolve-error.js +32 -11
  130. package/packages/datadog-plugin-graphql/src/utils.js +0 -5
  131. package/packages/datadog-plugin-jest/src/index.js +13 -0
  132. package/packages/datadog-plugin-kafkajs/src/producer.js +0 -1
  133. package/packages/datadog-plugin-mocha/src/index.js +39 -11
  134. package/packages/datadog-plugin-mongodb-core/src/query.js +0 -1
  135. package/packages/datadog-plugin-openai/src/index.js +16 -1
  136. package/packages/datadog-plugin-openai/src/realtime.js +144 -0
  137. package/packages/datadog-plugin-openai-agents/src/integration.js +0 -4
  138. package/packages/datadog-plugin-openai-agents/src/util.js +0 -1
  139. package/packages/datadog-plugin-playwright/src/index.js +76 -9
  140. package/packages/datadog-plugin-postgres/src/index.js +167 -0
  141. package/packages/datadog-plugin-prisma/src/datadog-tracing-helper.js +0 -1
  142. package/packages/datadog-plugin-redis/src/index.js +15 -1
  143. package/packages/datadog-plugin-supabase/src/error.js +18 -0
  144. package/packages/datadog-plugin-supabase/src/index.js +21 -0
  145. package/packages/datadog-plugin-supabase/src/supabase-auth-js-gotrueclient-getuser.js +69 -0
  146. package/packages/datadog-plugin-supabase/src/supabase-functions-js-functionsclient-invoke.js +70 -0
  147. package/packages/datadog-plugin-supabase/src/supabase-postgrest-js-postgrestbuilder-then.js +122 -0
  148. package/packages/datadog-plugin-supabase/src/supabase-realtime-js-realtimechannel-send.js +66 -0
  149. package/packages/datadog-plugin-supabase/src/supabase-storage-js-handle-request.js +93 -0
  150. package/packages/datadog-plugin-supabase/src/url.js +17 -0
  151. package/packages/datadog-plugin-vitest/src/index.js +10 -0
  152. package/packages/datadog-plugin-ws/src/util.js +0 -4
  153. package/packages/datadog-turbopack/index.js +206 -0
  154. package/packages/datadog-turbopack/src/constants.js +5 -0
  155. package/packages/datadog-turbopack/src/loader.js +484 -0
  156. package/packages/datadog-webpack/src/loader.js +0 -1
  157. package/packages/dd-trace/src/aiguard/client.js +2 -3
  158. package/packages/dd-trace/src/aiguard/evaluation.js +6 -12
  159. package/packages/dd-trace/src/aiguard/index.js +3 -2
  160. package/packages/dd-trace/src/aiguard/integrations/anthropic.js +53 -25
  161. package/packages/dd-trace/src/aiguard/integrations/evaluate.js +49 -25
  162. package/packages/dd-trace/src/aiguard/integrations/index.js +4 -3
  163. package/packages/dd-trace/src/aiguard/integrations/openai.js +132 -29
  164. package/packages/dd-trace/src/aiguard/integrations/vercel-ai.js +116 -42
  165. package/packages/dd-trace/src/aiguard/messages/anthropic.js +0 -2
  166. package/packages/dd-trace/src/aiguard/messages/openai.js +64 -1
  167. package/packages/dd-trace/src/aiguard/messages/utils.js +29 -2
  168. package/packages/dd-trace/src/aiguard/messages/vercel-ai.js +25 -0
  169. package/packages/dd-trace/src/aiguard/redaction.js +0 -1
  170. package/packages/dd-trace/src/aiguard/sdk.js +1 -1
  171. package/packages/dd-trace/src/appsec/activation.js +1 -1
  172. package/packages/dd-trace/src/appsec/api_security/normalized-route.js +0 -5
  173. package/packages/dd-trace/src/appsec/api_security/sampler.js +0 -4
  174. package/packages/dd-trace/src/appsec/blocking/index.js +3 -3
  175. package/packages/dd-trace/src/appsec/downstream_requests.js +1 -4
  176. package/packages/dd-trace/src/appsec/iast/index.js +1 -1
  177. package/packages/dd-trace/src/appsec/iast/overhead-controller.js +5 -5
  178. package/packages/dd-trace/src/appsec/iast/taint-tracking/index.js +1 -1
  179. package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +1 -1
  180. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +3 -3
  181. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/sql-sensitive-analyzer.js +8 -10
  182. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/url-sensitive-analyzer.js +2 -2
  183. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-handler.js +2 -2
  184. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/utils.js +4 -1
  185. package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +7 -7
  186. package/packages/dd-trace/src/appsec/index.js +2 -2
  187. package/packages/dd-trace/src/appsec/lambda.js +71 -2
  188. package/packages/dd-trace/src/appsec/rasp/utils.js +5 -1
  189. package/packages/dd-trace/src/appsec/remote_config.js +8 -6
  190. package/packages/dd-trace/src/appsec/reporter.js +10 -6
  191. package/packages/dd-trace/src/appsec/rule_manager.js +3 -3
  192. package/packages/dd-trace/src/appsec/sdk/track_event.js +0 -2
  193. package/packages/dd-trace/src/appsec/telemetry/api_security.js +1 -3
  194. package/packages/dd-trace/src/appsec/telemetry/common.js +4 -0
  195. package/packages/dd-trace/src/appsec/telemetry/index.js +23 -5
  196. package/packages/dd-trace/src/appsec/telemetry/rasp.js +1 -20
  197. package/packages/dd-trace/src/appsec/telemetry/user.js +1 -3
  198. package/packages/dd-trace/src/appsec/telemetry/waf.js +1 -20
  199. package/packages/dd-trace/src/appsec/waf/index.js +2 -2
  200. package/packages/dd-trace/src/appsec/waf/waf_manager.js +8 -5
  201. package/packages/dd-trace/src/carrier.js +0 -5
  202. package/packages/dd-trace/src/ci-visibility/dynamic-atr-retries.js +104 -0
  203. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +0 -2
  204. package/packages/dd-trace/src/ci-visibility/efd-retry-policy.js +34 -3
  205. package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +0 -1
  206. package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +0 -1
  207. package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +0 -1
  208. package/packages/dd-trace/src/ci-visibility/exporters/ci-validation/index.js +0 -4
  209. package/packages/dd-trace/src/ci-visibility/exporters/ci-validation/msgpack-to-json.js +0 -1
  210. package/packages/dd-trace/src/ci-visibility/exporters/ci-validation/sink.js +0 -2
  211. package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +37 -15
  212. package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +0 -3
  213. package/packages/dd-trace/src/ci-visibility/exporters/request.js +0 -11
  214. package/packages/dd-trace/src/ci-visibility/exporters/settings-cache-key.js +0 -1
  215. package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +0 -1
  216. package/packages/dd-trace/src/ci-visibility/requests/fs-cache.js +0 -6
  217. package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +2 -2
  218. package/packages/dd-trace/src/ci-visibility/requests/rate-limit.js +0 -1
  219. package/packages/dd-trace/src/ci-visibility/requests/upload-test-screenshot.js +0 -5
  220. package/packages/dd-trace/src/ci-visibility/requests/video-request.js +0 -1
  221. package/packages/dd-trace/src/ci-visibility/telemetry.js +13 -0
  222. package/packages/dd-trace/src/ci-visibility/test-optimization-cache.js +0 -1
  223. package/packages/dd-trace/src/ci-visibility/test-screenshot.js +0 -2
  224. package/packages/dd-trace/src/ci-visibility/test-video.js +0 -1
  225. package/packages/dd-trace/src/config/defaults.js +3 -2
  226. package/packages/dd-trace/src/config/generated-config-types.d.ts +74 -66
  227. package/packages/dd-trace/src/config/helper.js +9 -2
  228. package/packages/dd-trace/src/config/index.js +44 -29
  229. package/packages/dd-trace/src/config/parsers.js +34 -6
  230. package/packages/dd-trace/src/config/remote_config.js +25 -109
  231. package/packages/dd-trace/src/config/supported-configurations.json +146 -9
  232. package/packages/dd-trace/src/datastreams/encoding.js +0 -1
  233. package/packages/dd-trace/src/datastreams/pathway.js +0 -1
  234. package/packages/dd-trace/src/debugger/constants.js +10 -0
  235. package/packages/dd-trace/src/debugger/devtools_client/breakpoints.js +76 -17
  236. package/packages/dd-trace/src/debugger/devtools_client/config.js +2 -0
  237. package/packages/dd-trace/src/debugger/devtools_client/guardrail-metrics.js +15 -0
  238. package/packages/dd-trace/src/debugger/devtools_client/index.js +103 -27
  239. package/packages/dd-trace/src/debugger/devtools_client/json-buffer.js +50 -7
  240. package/packages/dd-trace/src/debugger/devtools_client/log.js +3 -1
  241. package/packages/dd-trace/src/debugger/devtools_client/probe_sampler.js +34 -8
  242. package/packages/dd-trace/src/debugger/devtools_client/send.js +40 -14
  243. package/packages/dd-trace/src/debugger/devtools_client/snapshot/index.js +53 -13
  244. package/packages/dd-trace/src/debugger/devtools_client/snapshot/processor.js +118 -71
  245. package/packages/dd-trace/src/debugger/devtools_client/snapshot-pruner.js +0 -3
  246. package/packages/dd-trace/src/debugger/devtools_client/status.js +20 -6
  247. package/packages/dd-trace/src/debugger/guardrail-metrics.js +167 -0
  248. package/packages/dd-trace/src/debugger/index.js +50 -2
  249. package/packages/dd-trace/src/debugger/inspect-segment.js +0 -3
  250. package/packages/dd-trace/src/debugger/probe_sampler.js +133 -9
  251. package/packages/dd-trace/src/debugger/probe_sampler_constants.js +31 -1
  252. package/packages/dd-trace/src/dogstatsd.js +0 -23
  253. package/packages/dd-trace/src/encode/0.4-cross-payload.js +0 -3
  254. package/packages/dd-trace/src/encode/0.4.js +0 -7
  255. package/packages/dd-trace/src/encode/0.5.js +0 -2
  256. package/packages/dd-trace/src/encode/tags-processors.js +0 -1
  257. package/packages/dd-trace/src/evp_proxy/discovery.js +3 -5
  258. package/packages/dd-trace/src/evp_proxy/path.js +11 -4
  259. package/packages/dd-trace/src/exporters/agent/writer.js +0 -1
  260. package/packages/dd-trace/src/exporters/agentless/index.js +0 -1
  261. package/packages/dd-trace/src/exporters/agentless/intake.js +0 -1
  262. package/packages/dd-trace/src/exporters/agentless/writer.js +0 -3
  263. package/packages/dd-trace/src/exporters/common/docker.js +4 -1
  264. package/packages/dd-trace/src/exporters/common/final-flush-request-tracker.js +0 -6
  265. package/packages/dd-trace/src/exporters/common/proxy.js +3 -0
  266. package/packages/dd-trace/src/exporters/common/request.js +1 -0
  267. package/packages/dd-trace/src/exporters/common/url.js +0 -2
  268. package/packages/dd-trace/src/exporters/common/writer.js +0 -2
  269. package/packages/dd-trace/src/id.js +0 -11
  270. package/packages/dd-trace/src/llmobs/audio-codec.js +192 -0
  271. package/packages/dd-trace/src/llmobs/audio-utils.js +121 -0
  272. package/packages/dd-trace/src/llmobs/constants/audio.js +35 -0
  273. package/packages/dd-trace/src/llmobs/constants/prompts.js +14 -0
  274. package/packages/dd-trace/src/llmobs/constants/tags.js +17 -0
  275. package/packages/dd-trace/src/llmobs/eval-metric.js +0 -6
  276. package/packages/dd-trace/src/llmobs/experiments/dataset.js +0 -4
  277. package/packages/dd-trace/src/llmobs/experiments/experiment.js +0 -3
  278. package/packages/dd-trace/src/llmobs/experiments/index.js +7 -6
  279. package/packages/dd-trace/src/llmobs/experiments/util.js +1 -11
  280. package/packages/dd-trace/src/llmobs/index.js +1 -3
  281. package/packages/dd-trace/src/llmobs/noop.js +10 -0
  282. package/packages/dd-trace/src/llmobs/plugins/ai/util.js +0 -4
  283. package/packages/dd-trace/src/llmobs/plugins/anthropic/util.js +0 -1
  284. package/packages/dd-trace/src/llmobs/plugins/genai/util.js +0 -4
  285. package/packages/dd-trace/src/llmobs/plugins/modelcontextprotocol-sdk/utils.js +0 -2
  286. package/packages/dd-trace/src/llmobs/plugins/openai/constants.js +0 -2
  287. package/packages/dd-trace/src/llmobs/plugins/openai/index.js +4 -6
  288. package/packages/dd-trace/src/llmobs/plugins/openai/realtime.js +285 -0
  289. package/packages/dd-trace/src/llmobs/plugins/openai/utils.js +16 -3
  290. package/packages/dd-trace/src/llmobs/prompts/cache.js +272 -0
  291. package/packages/dd-trace/src/llmobs/prompts/manager.js +639 -0
  292. package/packages/dd-trace/src/llmobs/prompts/noop.js +29 -0
  293. package/packages/dd-trace/src/llmobs/prompts/prompt.js +92 -0
  294. package/packages/dd-trace/src/llmobs/sdk.js +21 -6
  295. package/packages/dd-trace/src/llmobs/span_processor.js +81 -2
  296. package/packages/dd-trace/src/llmobs/tagger.js +30 -7
  297. package/packages/dd-trace/src/llmobs/telemetry.js +36 -4
  298. package/packages/dd-trace/src/llmobs/util.js +0 -34
  299. package/packages/dd-trace/src/llmobs/writers/base.js +0 -1
  300. package/packages/dd-trace/src/llmobs/writers/util.js +1 -2
  301. package/packages/dd-trace/src/log/channels.js +3 -0
  302. package/packages/dd-trace/src/log/index.js +23 -5
  303. package/packages/dd-trace/src/log-submission/log-submission-plugin.js +74 -6
  304. package/packages/dd-trace/src/msgpack/chunk.js +0 -1
  305. package/packages/dd-trace/src/openfeature/agentless_configuration_source.js +0 -12
  306. package/packages/dd-trace/src/openfeature/encoding.js +0 -2
  307. package/packages/dd-trace/src/openfeature/eval-metrics-hook.js +0 -1
  308. package/packages/dd-trace/src/openfeature/index.js +0 -4
  309. package/packages/dd-trace/src/openfeature/span-enrichment-hook.js +0 -1
  310. package/packages/dd-trace/src/openfeature/span-enrichment.js +0 -4
  311. package/packages/dd-trace/src/openfeature/writers/base.js +0 -6
  312. package/packages/dd-trace/src/openfeature/writers/exposures.js +0 -5
  313. package/packages/dd-trace/src/openfeature/writers/util.js +0 -4
  314. package/packages/dd-trace/src/opentelemetry/logs/logger.js +0 -1
  315. package/packages/dd-trace/src/opentelemetry/logs/logger_provider.js +0 -1
  316. package/packages/dd-trace/src/opentelemetry/logs/otlp_http_log_exporter.js +0 -1
  317. package/packages/dd-trace/src/opentelemetry/logs/otlp_transformer.js +0 -2
  318. package/packages/dd-trace/src/opentelemetry/metrics/index.js +1 -1
  319. package/packages/dd-trace/src/opentelemetry/metrics/meter_provider.js +4 -4
  320. package/packages/dd-trace/src/opentelemetry/metrics/otlp_span_stats_transformer.js +0 -1
  321. package/packages/dd-trace/src/opentelemetry/metrics/otlp_transformer.js +0 -1
  322. package/packages/dd-trace/src/opentelemetry/metrics/periodic_metric_reader.js +103 -35
  323. package/packages/dd-trace/src/opentelemetry/metrics/time.js +0 -1
  324. package/packages/dd-trace/src/opentelemetry/otlp/otlp_http_exporter_base.js +36 -13
  325. package/packages/dd-trace/src/opentelemetry/otlp/otlp_transformer_base.js +0 -1
  326. package/packages/dd-trace/src/opentelemetry/span-helpers.js +0 -1
  327. package/packages/dd-trace/src/opentelemetry/trace/otlp_http_trace_exporter.js +0 -1
  328. package/packages/dd-trace/src/opentelemetry/trace/otlp_transformer.js +0 -3
  329. package/packages/dd-trace/src/opentracing/propagation/text_map.js +0 -6
  330. package/packages/dd-trace/src/opentracing/span_context.js +0 -1
  331. package/packages/dd-trace/src/otel-thread-ctx.js +38 -11
  332. package/packages/dd-trace/src/payload-tagging/tagging.js +15 -3
  333. package/packages/dd-trace/src/plugin_manager.js +9 -3
  334. package/packages/dd-trace/src/plugins/ci_plugin.js +0 -1
  335. package/packages/dd-trace/src/plugins/database.js +2 -6
  336. package/packages/dd-trace/src/plugins/index.js +8 -0
  337. package/packages/dd-trace/src/plugins/plugin.js +0 -4
  338. package/packages/dd-trace/src/plugins/tracing.js +1 -1
  339. package/packages/dd-trace/src/plugins/util/git.js +1 -3
  340. package/packages/dd-trace/src/plugins/util/http-otel-semantics.js +0 -1
  341. package/packages/dd-trace/src/plugins/util/llm.js +0 -2
  342. package/packages/dd-trace/src/plugins/util/status-validator.js +0 -1
  343. package/packages/dd-trace/src/plugins/util/test.js +25 -21
  344. package/packages/dd-trace/src/plugins/util/url.js +0 -5
  345. package/packages/dd-trace/src/priority_sampler.js +0 -6
  346. package/packages/dd-trace/src/process-tags/index.js +0 -1
  347. package/packages/dd-trace/src/profiler.js +132 -35
  348. package/packages/dd-trace/src/profiling/exporters/event_serializer.js +0 -1
  349. package/packages/dd-trace/src/profiling/profiler.js +101 -41
  350. package/packages/dd-trace/src/profiling/ssi-heuristics.js +29 -15
  351. package/packages/dd-trace/src/propagation-hash/index.js +0 -1
  352. package/packages/dd-trace/src/proxy.js +21 -45
  353. package/packages/dd-trace/src/random_sampler.js +0 -4
  354. package/packages/dd-trace/src/rate_limiter.js +0 -4
  355. package/packages/dd-trace/src/remote_config/capabilities.js +1 -9
  356. package/packages/dd-trace/src/remote_config/index.js +0 -1
  357. package/packages/dd-trace/src/runtime_metrics/otlp_runtime_metrics.js +0 -3
  358. package/packages/dd-trace/src/sampler.js +0 -4
  359. package/packages/dd-trace/src/sampling_rule.js +0 -7
  360. package/packages/dd-trace/src/serverless/vercel.js +0 -1
  361. package/packages/dd-trace/src/serverless.js +0 -1
  362. package/packages/dd-trace/src/service-naming/index.js +0 -1
  363. package/packages/dd-trace/src/service-naming/schemas/util.js +0 -1
  364. package/packages/dd-trace/src/service-naming/schemas/v0/storage.js +7 -0
  365. package/packages/dd-trace/src/service-naming/schemas/v1/storage.js +5 -0
  366. package/packages/dd-trace/src/span_processor.js +2 -2
  367. package/packages/dd-trace/src/span_sampler.js +0 -1
  368. package/packages/dd-trace/src/standalone/product.js +2 -2
  369. package/packages/dd-trace/src/standalone/tracesource.js +0 -1
  370. package/packages/dd-trace/src/startup-log.js +1 -1
  371. package/packages/dd-trace/src/telemetry/endpoints.js +0 -8
  372. package/packages/dd-trace/src/telemetry/logs/index.js +16 -5
  373. package/packages/dd-trace/src/telemetry/logs/log-collector.js +16 -6
  374. package/packages/dd-trace/src/telemetry/metrics.js +0 -2
  375. package/packages/dd-trace/src/telemetry/telemetry.js +4 -1
  376. package/packages/dd-trace/src/util.js +13 -1
  377. package/vendor/dist/@datadog/openfeature-node-server/index.js +1 -1
  378. package/packages/dd-trace/src/llmobs/plugins/claude-agent-sdk/utils.js +0 -10
@@ -149,7 +149,6 @@ function createPoolAcquisition (pool, options, queryCtx, mode) {
149
149
  * Queues a delayed acquisition for pool events that no longer carry its async-local context.
150
150
  *
151
151
  * @param {PoolAcquisition} acquisition
152
- * @returns {void}
153
152
  */
154
153
  function queuePoolAcquisition (acquisition) {
155
154
  let pending = pendingPoolAcquisitions.get(acquisition.pool)
@@ -164,7 +163,6 @@ function queuePoolAcquisition (acquisition) {
164
163
  * Reports whether an acquisition still needs a matching pool event.
165
164
  *
166
165
  * @param {PoolAcquisition} acquisition
167
- * @returns {boolean}
168
166
  */
169
167
  function isPoolAcquisitionPending (acquisition) {
170
168
  return !acquisition.acquired && !acquisition.finished && !acquisition.errorReported
@@ -174,7 +172,6 @@ function isPoolAcquisitionPending (acquisition) {
174
172
  * Releases a consumed acquisition and periodically compacts its queue.
175
173
  *
176
174
  * @param {PendingPoolAcquisitions} pending
177
- * @returns {void}
178
175
  */
179
176
  function discardPoolAcquisition (pending) {
180
177
  pending.acquisitions[pending.index++] = undefined
@@ -195,7 +192,6 @@ function discardPoolAcquisition (pending) {
195
192
  * Removes completed entries from the front of a pool's acquisition queue.
196
193
  *
197
194
  * @param {object} pool
198
- * @returns {void}
199
195
  */
200
196
  function prunePoolAcquisitions (pool) {
201
197
  const pending = pendingPoolAcquisitions.get(pool)
@@ -235,7 +231,6 @@ function takePoolAcquisition (pool) {
235
231
  * Records the pool wait when MariaDB announces that the calling operation acquired a connection.
236
232
  *
237
233
  * @param {object} pool
238
- * @returns {void}
239
234
  */
240
235
  function recordPoolAcquisition (pool) {
241
236
  let acquisition = poolAcquisitionStorage?.getStore()
@@ -263,7 +258,6 @@ function recordPoolAcquisition (pool) {
263
258
  * Starts a pooled command after MariaDB has acquired the connection that will execute it.
264
259
  *
265
260
  * @param {PoolAcquisition} acquisition
266
- * @returns {void}
267
261
  */
268
262
  function startPoolCommand (acquisition) {
269
263
  const queryCtx = acquisition.queryCtx
@@ -277,7 +271,6 @@ function startPoolCommand (acquisition) {
277
271
  * Starts a command lifecycle without running connector work inside its span store.
278
272
  *
279
273
  * @param {object} ctx
280
- * @returns {void}
281
274
  */
282
275
  function runCommandStart (ctx) {
283
276
  startCh.runStores(ctx, noop)
@@ -288,7 +281,6 @@ function runCommandStart (ctx) {
288
281
  *
289
282
  * @param {PoolAcquisition | undefined} acquisition
290
283
  * @param {unknown} error
291
- * @returns {void}
292
284
  */
293
285
  function reportPoolQueryAcquireError (acquisition, error) {
294
286
  if (acquisition === undefined || acquisition.acquired || acquisition.errorReported) return
@@ -346,7 +338,6 @@ function runPoolAcquisition (acquisition, method, receiver, args) {
346
338
  *
347
339
  * @param {PoolAcquisition | undefined} acquisition
348
340
  * @param {unknown} [error]
349
- * @returns {void}
350
341
  */
351
342
  function finishPoolCommandAcquisition (acquisition, error) {
352
343
  if (acquisition === undefined) return
@@ -375,7 +366,6 @@ function runSkippedPoolMethod (method, receiver, args) {
375
366
  *
376
367
  * @param {PoolAcquisition} acquisition
377
368
  * @param {unknown} [error]
378
- * @returns {void}
379
369
  */
380
370
  function finishExplicitPoolAcquisition (acquisition, error) {
381
371
  if (acquisition.finished) return
@@ -395,7 +385,6 @@ function finishExplicitPoolAcquisition (acquisition, error) {
395
385
  *
396
386
  * @param {object} pool
397
387
  * @param {Function} observer
398
- * @returns {void}
399
388
  */
400
389
  function restorePoolAcquisitionObserver (pool, observer) {
401
390
  const listeners = pool.listeners('acquire')
@@ -409,7 +398,6 @@ function restorePoolAcquisitionObserver (pool, observer) {
409
398
  * Observes public acquire events forwarded by a bundled pool.
410
399
  *
411
400
  * @param {object} pool
412
- * @returns {void}
413
401
  */
414
402
  function observePoolAcquisitions (pool) {
415
403
  const observer = () => {
@@ -428,7 +416,6 @@ function observePoolAcquisitions (pool) {
428
416
  * Marks a command as active on its owning public connection.
429
417
  *
430
418
  * @param {object | undefined} owner
431
- * @returns {void}
432
419
  */
433
420
  function startCommand (owner) {
434
421
  if (owner === undefined) return
@@ -439,7 +426,6 @@ function startCommand (owner) {
439
426
  * Releases one active command without clearing concurrent commands.
440
427
  *
441
428
  * @param {object | undefined} owner
442
- * @returns {void}
443
429
  */
444
430
  function endCommand (owner) {
445
431
  if (owner === undefined) return
@@ -458,7 +444,6 @@ function endCommand (owner) {
458
444
  * @param {object | undefined} owner
459
445
  * @param {Error} [error]
460
446
  * @param {unknown} [result]
461
- * @returns {void}
462
447
  */
463
448
  function finishCommandState (ctx, owner, error, result) {
464
449
  endCommand(owner)
@@ -476,7 +461,6 @@ function finishCommandState (ctx, owner, error, result) {
476
461
  * @param {object | undefined} owner
477
462
  * @param {Error} [error]
478
463
  * @param {unknown} [result]
479
- * @returns {void}
480
464
  */
481
465
  function finishCommand (ctx, owner, error, result) {
482
466
  finishCommandState(ctx, owner, error, result)
@@ -490,7 +474,6 @@ function finishCommand (ctx, owner, error, result) {
490
474
  * @param {number} callbackIndex
491
475
  * @param {unknown} callback
492
476
  * @param {(callback?: Function) => Function} createCallback
493
- * @returns {void}
494
477
  */
495
478
  function setCommandCallback (args, callbackIndex, callback, createCallback) {
496
479
  if (typeof callback === 'function') {
@@ -750,7 +733,6 @@ function createWrapStream (options, preparedSql, commandOwner) {
750
733
  *
751
734
  * @param {object} client
752
735
  * @param {(command: Function) => Function} wrapper
753
- * @returns {void}
754
736
  */
755
737
  function wrapClientCommands (client, wrapper) {
756
738
  if (wrappedClients.has(client)) return
@@ -769,7 +751,6 @@ function wrapClientCommands (client, wrapper) {
769
751
  * @param {(options: object, sql?: unknown, owner?: object, commandArity?: number,
770
752
  * trackActiveCommands?: boolean, poolAcquisition?: 'measure' | 'observe') =>
771
753
  * (command: Function) => Function} createWrapper
772
- * @returns {void}
773
754
  */
774
755
  function wrapPoolCommands (pool, options, createWrapper) {
775
756
  if (wrappedClients.has(pool)) return
@@ -789,7 +770,6 @@ function wrapPoolCommands (pool, options, createWrapper) {
789
770
  * @param {object} options
790
771
  * @param {(options: object, sql: string, owner?: object, commandArity?: number) =>
791
772
  * (command: Function) => Function} createWrapper
792
- * @returns {void}
793
773
  */
794
774
  function wrapTransactionMethods (client, options, createWrapper) {
795
775
  for (const [method, sql] of transactionMethods) {
@@ -1115,7 +1095,6 @@ function createWrapCallbackGetConnection (options) {
1115
1095
  * @param {object} pool
1116
1096
  * @param {object} options
1117
1097
  * @param {(connection: object, options: object) => object} wrapConnection
1118
- * @returns {void}
1119
1098
  */
1120
1099
  function wrapPoolConnectionEvent (pool, options, wrapConnection) {
1121
1100
  shimmer.wrap(pool, 'emit', emit => function (event, connection) {
@@ -1131,7 +1110,6 @@ function wrapPoolConnectionEvent (pool, options, wrapConnection) {
1131
1110
  * @param {object} cluster
1132
1111
  * @param {Function} defaultOptions
1133
1112
  * @param {ClusterSelectionStorage} selectionStorage
1134
- * @returns {void}
1135
1113
  */
1136
1114
  function captureClusterOptions (cluster, defaultOptions, selectionStorage) {
1137
1115
  /** @type {Map<string, ClusterNodeOptions>} */
@@ -1198,7 +1176,6 @@ function captureClusterOptions (cluster, defaultOptions, selectionStorage) {
1198
1176
  *
1199
1177
  * @param {Map<string, ClusterNodeOptions>} optionsByIdentifier
1200
1178
  * @param {string} pattern
1201
- * @returns {void}
1202
1179
  */
1203
1180
  function removeClusterOptions (optionsByIdentifier, pattern) {
1204
1181
  const regularExpression = new RegExp(pattern)
@@ -1227,7 +1204,6 @@ function runClusterGetConnection (getConnection, receiver, args) {
1227
1204
  * @param {ClusterSelection} selection
1228
1205
  * @param {number | undefined} start
1229
1206
  * @param {unknown} error
1230
- * @returns {void}
1231
1207
  */
1232
1208
  function reportBundledClusterAcquireError (selection, start, error) {
1233
1209
  if (!acquireStartCh.hasSubscribers) return
@@ -208,7 +208,6 @@ function wrapPoolQuery (method) {
208
208
 
209
209
  /**
210
210
  * @param {Function} Pool
211
- * @returns {boolean}
212
211
  */
213
212
  function claimPoolWrap (Pool) {
214
213
  if (wrappedPools.has(Pool)) return false
@@ -267,7 +266,6 @@ function startPoolAcquireTiming (timing) {
267
266
 
268
267
  /**
269
268
  * @param {PoolAcquireTiming} timing
270
- * @returns {number}
271
269
  */
272
270
  function finishPoolAcquireTiming (timing) {
273
271
  const poolWaitTime = (timing.poolWaitTime ?? 0) + acquireWait(timing.poolAcquireStart)
@@ -6,6 +6,6 @@
6
6
 
7
7
  const { addHook, getHooks } = require('./helpers/instrument')
8
8
 
9
- for (const hook of getHooks('mercurius')) {
9
+ for (const hook of getHooks('mercurius').values()) {
10
10
  addHook(hook, exports => exports)
11
11
  }
@@ -16,7 +16,6 @@ const patched = new WeakSet()
16
16
  *
17
17
  * @param {string[]} versions
18
18
  * @param {(Mocha: Function, frameworkVersion: string) => Function} wrapMochaRun
19
- * @returns {void}
20
19
  */
21
20
  function addMochaRunHooks (versions, wrapMochaRun) {
22
21
  const patchedMochaConstructors = new WeakSet()
@@ -224,7 +224,6 @@ function getCoverageRootDir () {
224
224
  * from the suite path.
225
225
  *
226
226
  * @param {string} testSuiteAbsolutePath
227
- * @returns {boolean}
228
227
  */
229
228
  function isModifiedTestSuite (testSuiteAbsolutePath) {
230
229
  const testPath = getTestSuitePath(testSuiteAbsolutePath, getCoverageRootDir())
@@ -318,7 +317,7 @@ function getOnEndHandler (isParallel, onDone) {
318
317
  let error = frameworkError
319
318
  if (this.stats) {
320
319
  status = this.stats.failures === 0 ? 'pass' : 'fail'
321
- if (this.stats.tests === 0) {
320
+ if (this.stats.tests === 0 && this.stats.failures === 0) {
322
321
  status = 'skip'
323
322
  }
324
323
  } else if (this.failures !== 0) {
@@ -330,6 +329,7 @@ function getOnEndHandler (isParallel, onDone) {
330
329
  } else if (status === 'fail') {
331
330
  error = new Error(`Failed tests: ${this.failures}.`)
332
331
  }
332
+ const isExpectedEmptySession = arguments.length === 0 && status === 'skip'
333
333
 
334
334
  testFileToSuiteCtx.clear()
335
335
 
@@ -373,6 +373,7 @@ function getOnEndHandler (isParallel, onDone) {
373
373
  isTestManagementEnabled: config.isTestManagementTestsEnabled,
374
374
  isParallel,
375
375
  isFrameworkError: arguments.length > 0,
376
+ isExpectedEmptySession,
376
377
  }, () => {
377
378
  try {
378
379
  onDone()
@@ -394,7 +395,6 @@ function getOnEndHandler (isParallel, onDone) {
394
395
  * Applies Test Optimization failure suppression once per runner execution.
395
396
  *
396
397
  * @param {object} runner
397
- * @returns {void}
398
398
  */
399
399
  function adjustRunnerFailuresOnce (runner) {
400
400
  if (runnerFailuresAdjusted.has(runner)) return
@@ -427,7 +427,6 @@ function getRunnerRecoveryState (runner) {
427
427
  *
428
428
  * @param {object} runner
429
429
  * @param {object} test
430
- * @returns {void}
431
430
  */
432
431
  function markTestPending (runner, test) {
433
432
  const state = getRunnerRecoveryState(runner)
@@ -447,7 +446,6 @@ function markTestPending (runner, test) {
447
446
  *
448
447
  * @param {object} runner
449
448
  * @param {object} test
450
- * @returns {void}
451
449
  */
452
450
  function markTestTerminal (runner, test) {
453
451
  getRunnerRecoveryState(runner).tests.add(test)
@@ -458,7 +456,6 @@ function markTestTerminal (runner, test) {
458
456
  * Restores test and hook state changed only to abort the current run.
459
457
  *
460
458
  * @param {object} runner
461
- * @returns {void}
462
459
  */
463
460
  function restoreReporterMutations (runner) {
464
461
  const state = runnerRecoveryStates.get(runner)
@@ -490,7 +487,6 @@ function restoreReporterMutations (runner) {
490
487
  *
491
488
  * @param {object} runner
492
489
  * @param {object} test
493
- * @returns {void}
494
490
  */
495
491
  function stopCurrentTest (runner, test) {
496
492
  const hookDown = runner.hookDown
@@ -512,7 +508,6 @@ function stopCurrentTest (runner, test) {
512
508
  *
513
509
  * @param {object} runner
514
510
  * @param {object} hook
515
- * @returns {void}
516
511
  */
517
512
  function stopCurrentHook (runner, hook) {
518
513
  const hookMethod = runner.hook
@@ -556,7 +551,6 @@ function stopCurrentHook (runner, hook) {
556
551
  *
557
552
  * @param {object} runner
558
553
  * @param {object} test
559
- * @returns {void}
560
554
  */
561
555
  function stopAfterEachHooks (runner, test) {
562
556
  const hookUp = runner.hookUp
@@ -572,7 +566,6 @@ function stopAfterEachHooks (runner, test) {
572
566
  * Prevents Mocha from entering any subsequent user hooks after a reporter error.
573
567
  *
574
568
  * @param {object} runner
575
- * @returns {void}
576
569
  */
577
570
  function stopFutureHooks (runner) {
578
571
  if (runnerHookMethods.has(runner)) return
@@ -587,7 +580,6 @@ function stopFutureHooks (runner) {
587
580
  * Restores the runner hook method after reporter-error finalization.
588
581
  *
589
582
  * @param {object} runner
590
- * @returns {void}
591
583
  */
592
584
  function restoreFutureHooks (runner) {
593
585
  const hook = runnerHookMethods.get(runner)
@@ -602,7 +594,6 @@ function restoreFutureHooks (runner) {
602
594
  *
603
595
  * @param {object} runner
604
596
  * @param {object} hook
605
- * @returns {boolean} whether the completed hook was a before-each hook
606
597
  */
607
598
  function stopRemainingCurrentHooks (runner, hook) {
608
599
  const hookLists = [hook.parent?._beforeAll, hook.parent?._beforeEach, hook.parent?._afterEach, hook.parent?._afterAll]
@@ -631,7 +622,6 @@ function stopRemainingCurrentHooks (runner, hook) {
631
622
  *
632
623
  * @param {object} runner
633
624
  * @param {object} hook
634
- * @returns {void}
635
625
  */
636
626
  function stopAfterHookEnd (runner, hook) {
637
627
  if (!stopRemainingCurrentHooks(runner, hook) || !runner.test) return
@@ -643,7 +633,6 @@ function stopAfterHookEnd (runner, hook) {
643
633
  * Prevents Mocha from entering the root suite after a run-start reporter error.
644
634
  *
645
635
  * @param {object} runner
646
- * @returns {void}
647
636
  */
648
637
  function stopRootSuite (runner) {
649
638
  const runSuite = runner.runSuite
@@ -664,7 +653,6 @@ function createSkippedParallelFileRunner () {
664
653
  * Prevents a parallel run-start reporter error from scheduling test workers.
665
654
  *
666
655
  * @param {object} runner
667
- * @returns {void}
668
656
  */
669
657
  function stopParallelWorkers (runner) {
670
658
  const state = getRunnerRecoveryState(runner)
@@ -680,7 +668,6 @@ function stopParallelWorkers (runner) {
680
668
  * Resets suite coverage after every reporter has observed the completed suite.
681
669
  *
682
670
  * @param {object} runner
683
- * @returns {void}
684
671
  */
685
672
  function resetPendingSuiteCoverage (runner) {
686
673
  if (!runnersWithPendingCoverageReset.delete(runner) || !global.__coverage__) return
@@ -734,7 +721,6 @@ function getFrameworkFinalizationError (frameworkError) {
734
721
  * runs Datadog's end handler and propagates the original error after finalization.
735
722
  *
736
723
  * @param {Function} Runner
737
- * @returns {void}
738
724
  */
739
725
  function wrapRunnerEmit (Runner) {
740
726
  if (wrappedRunnerEmitPrototypes.has(Runner.prototype)) return
@@ -875,7 +861,6 @@ function isFailedTestReplayEnabled () {
875
861
  * Mirrors Mocha 5's private exclusivity check.
876
862
  *
877
863
  * @param {MochaSuite} suite
878
- * @returns {boolean}
879
864
  */
880
865
  function hasOnly (suite) {
881
866
  if (suite._onlyTests.length || suite._onlySuites.length) return true
@@ -890,7 +875,6 @@ function hasOnly (suite) {
890
875
  * Mirrors Mocha 5's private exclusivity filter.
891
876
  *
892
877
  * @param {MochaSuite} suite
893
- * @returns {boolean}
894
878
  */
895
879
  function filterOnly (suite) {
896
880
  if (suite._onlyTests.length) {
@@ -1038,6 +1022,8 @@ function getExecutionConfiguration (runner, isParallel, frameworkVersion, onFini
1038
1022
  config.isSuitesSkippingEnabled = config.isItrEnabled && libraryConfig.isSuitesSkippingEnabled
1039
1023
  config.isFlakyTestRetriesEnabled = libraryConfig.isFlakyTestRetriesEnabled
1040
1024
  config.flakyTestRetriesCount = libraryConfig.flakyTestRetriesCount
1025
+ config.isDynamicAtrEnabled = libraryConfig.isDynamicAtrEnabled
1026
+ config.dynamicAtrBuckets = libraryConfig.dynamicAtrBuckets
1041
1027
  config.isDiEnabled = libraryConfig.isDiEnabled
1042
1028
  config.isTestDynamicInstrumentationEnabled = isTestDynamicInstrumentationEnabled
1043
1029
 
@@ -1072,7 +1058,6 @@ function getExecutionConfiguration (runner, isParallel, frameworkVersion, onFini
1072
1058
 
1073
1059
  /**
1074
1060
  * @param {import('mocha').Runner} runner
1075
- * @returns {void}
1076
1061
  */
1077
1062
  function startMochaRunner (runner) {
1078
1063
  if (readyRunners.has(runner)) {
@@ -1122,9 +1107,16 @@ function wrapMochaRun (Mocha, frameworkVersion) {
1122
1107
 
1123
1108
  // `options.delay` does not work in parallel mode, so we can't delay the execution this way
1124
1109
  // This needs to be both here and in `runMocha` hook. Read the comment in `runMocha` hook for more info.
1110
+ const originalDelay = this.options.delay
1125
1111
  this.options.delay = true
1126
1112
 
1127
- const runner = run.apply(this, args)
1113
+ let runner
1114
+ try {
1115
+ runner = run.apply(this, args)
1116
+ } finally {
1117
+ // Only this runner needs the configuration delay, including when the next run disables the plugin.
1118
+ this.options.delay = originalDelay
1119
+ }
1128
1120
 
1129
1121
  this.files.forEach((path) => {
1130
1122
  const isUnskippable = isMarkedAsUnskippable({ path })
@@ -1134,7 +1126,7 @@ function wrapMochaRun (Mocha, frameworkVersion) {
1134
1126
  })
1135
1127
 
1136
1128
  getExecutionConfiguration(runner, false, frameworkVersion, () => {
1137
- if (isFailedTestReplayEnabled()) {
1129
+ if (isFailedTestReplayEnabled() || config.isFlakyTestRetriesEnabled) {
1138
1130
  patchFailedTestReplayHookUp(runner.constructor)
1139
1131
  }
1140
1132
  if (config.isKnownTestsEnabled) {
@@ -1204,8 +1196,10 @@ addHook({
1204
1196
  name: 'mocha',
1205
1197
  versions: [MINIMUM_MOCHA_VERSION],
1206
1198
  filePattern: String.raw`lib/runner\.(?:c?js)$`,
1207
- }, function (Runner, frameworkVersion) {
1208
- if (patched.has(Runner)) return Runner
1199
+ }, function (runnerPackage, frameworkVersion) {
1200
+ const Runner = runnerPackage.Runner ?? runnerPackage.default ?? runnerPackage
1201
+ if (typeof Runner !== 'function') return
1202
+ if (patched.has(Runner)) return
1209
1203
 
1210
1204
  patched.add(Runner)
1211
1205
  wrapRunnerEmit(Runner)
@@ -1214,6 +1208,7 @@ addHook({
1214
1208
 
1215
1209
  shimmer.wrap(Runner.prototype, 'run', run => function (...args) {
1216
1210
  if (!testFinishCh.hasSubscribers) {
1211
+ resetRunState(this.suite)
1217
1212
  return runMochaRunner(run, this, args)
1218
1213
  }
1219
1214
 
@@ -1550,7 +1545,7 @@ addHook({
1550
1545
  return runMochaRunner(run, this, args)
1551
1546
  })
1552
1547
 
1553
- return Runner
1548
+ return runnerPackage
1554
1549
  })
1555
1550
 
1556
1551
  // Used both in serial and parallel mode, and by both the main process and the workers
@@ -1796,6 +1791,8 @@ addHook({
1796
1791
  if (config.isFlakyTestRetriesEnabled) {
1797
1792
  newWorkerArgs._ddIsFlakyTestRetriesEnabled = true
1798
1793
  newWorkerArgs._ddFlakyTestRetriesCount = config.flakyTestRetriesCount
1794
+ newWorkerArgs._ddIsDynamicAtrEnabled = config.isDynamicAtrEnabled
1795
+ newWorkerArgs._ddDynamicAtrBuckets = config.dynamicAtrBuckets
1799
1796
  }
1800
1797
 
1801
1798
  if (isFailedTestReplayEnabled()) {