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
@@ -46,7 +46,6 @@ function isValidId (value) {
46
46
  * Renders an idempotency key into a value safe to carry in the upload's query string.
47
47
  *
48
48
  * @param {string} idempotencyKey - Raw per-artifact idempotency key
49
- * @returns {string} Query-safe, deterministic representation of the key
50
49
  */
51
50
  function toIdempotencyQueryValue (idempotencyKey) {
52
51
  const separatorIndex = idempotencyKey.indexOf(':')
@@ -76,7 +75,6 @@ function toIdempotencyQueryValue (idempotencyKey) {
76
75
  * @param {number} [options.deadline] - Absolute finalization deadline in epoch milliseconds
77
76
  * @param {AbortSignal} [options.signal] - Signal used to cancel the upload
78
77
  * @param {Function} callback - Callback function (err)
79
- * @returns {void}
80
78
  */
81
79
  function uploadTestMedia (options, callback) {
82
80
  const {
@@ -216,7 +214,6 @@ function uploadTestMedia (options, callback) {
216
214
  *
217
215
  * @param {object} options - Upload options
218
216
  * @param {Function} callback - Callback function (err)
219
- * @returns {void}
220
217
  */
221
218
  function uploadTestScreenshot (options, callback) {
222
219
  uploadTestMedia({ ...options, kind: 'screenshot' }, callback)
@@ -227,7 +224,6 @@ function uploadTestScreenshot (options, callback) {
227
224
  *
228
225
  * @param {object} options - Upload options
229
226
  * @param {Function} callback - Callback function (err)
230
- * @returns {void}
231
227
  */
232
228
  function uploadTestVideo (options, callback) {
233
229
  uploadTestMedia({ ...options, kind: 'video' }, callback)
@@ -238,7 +234,6 @@ function uploadTestVideo (options, callback) {
238
234
  *
239
235
  * @param {object} options - Upload options
240
236
  * @param {Function} callback - Callback function (err)
241
- * @returns {void}
242
237
  */
243
238
  function uploadTestSuiteVideo (options, callback) {
244
239
  uploadTestMedia({ ...options, kind: 'video' }, callback)
@@ -21,7 +21,6 @@ let activeRequests = 0
21
21
  * @param {object} options - HTTP request options
22
22
  * @param {(error: Error|null, result?: string|null, statusCode?: number,
23
23
  * headers?: import('node:http').IncomingHttpHeaders) => void} callback
24
- * @returns {void}
25
24
  */
26
25
  function requestVideo (body, options, callback) {
27
26
  if (activeRequests >= MAX_ACTIVE_REQUESTS) {
@@ -75,6 +75,16 @@ function distributionMetric (name, tags, measure) {
75
75
  ciVisibilityMetrics.distribution(name, formatMetricTags(tags)).track(measure)
76
76
  }
77
77
 
78
+ /**
79
+ * Records that dynamic, duration-based ATR retries are enabled for this session.
80
+ *
81
+ * @param {boolean} hasCustomBuckets
82
+ */
83
+ function recordDynamicAtrRetries (hasCustomBuckets) {
84
+ const tags = hasCustomBuckets ? { has_custom_buckets: 'true' } : {}
85
+ incrementCountMetric(TELEMETRY_DYNAMIC_ATR_RETRIES_ENABLED, tags)
86
+ }
87
+
78
88
  // CI Visibility telemetry events
79
89
  const TELEMETRY_TEST_SESSION = 'test_session'
80
90
  const TELEMETRY_EVENT_CREATED = 'event_created'
@@ -134,6 +144,7 @@ const TELEMETRY_TEST_MANAGEMENT_TESTS_MS = 'test_management_tests.request_ms'
134
144
  const TELEMETRY_TEST_MANAGEMENT_TESTS_ERRORS = 'test_management_tests.request_errors'
135
145
  const TELEMETRY_TEST_MANAGEMENT_TESTS_RESPONSE_TESTS = 'test_management_tests.response_tests'
136
146
  const TELEMETRY_TEST_MANAGEMENT_TESTS_RESPONSE_BYTES = 'test_management_tests.response_bytes'
147
+ const TELEMETRY_DYNAMIC_ATR_RETRIES_ENABLED = 'dynamic_atr_retries.enabled'
137
148
 
138
149
  function getErrorTypeFromStatusCode (statusCode) {
139
150
  if (typeof statusCode !== 'number') return 'network'
@@ -149,6 +160,7 @@ function getErrorTypeFromStatusCode (statusCode) {
149
160
  module.exports = {
150
161
  incrementCountMetric,
151
162
  distributionMetric,
163
+ recordDynamicAtrRetries,
152
164
  TELEMETRY_TEST_SESSION,
153
165
  TELEMETRY_EVENT_CREATED,
154
166
  TELEMETRY_EVENT_FINISHED,
@@ -204,4 +216,5 @@ module.exports = {
204
216
  TELEMETRY_TEST_MANAGEMENT_TESTS_ERRORS,
205
217
  TELEMETRY_TEST_MANAGEMENT_TESTS_RESPONSE_TESTS,
206
218
  TELEMETRY_TEST_MANAGEMENT_TESTS_RESPONSE_BYTES,
219
+ TELEMETRY_DYNAMIC_ATR_RETRIES_ENABLED,
207
220
  }
@@ -22,7 +22,6 @@ function getSettingsCachePath () {
22
22
  /**
23
23
  * Sets up the test optimization settings cache file path.
24
24
  * Returns the existing path if already set, otherwise creates a new one.
25
- * @returns {string} The cache file path.
26
25
  */
27
26
  function setupSettingsCachePath () {
28
27
  const existing = getSettingsCachePath()
@@ -17,7 +17,6 @@ const SCREENSHOT_UPLOAD_RESULT_ERROR = 'error'
17
17
  *
18
18
  * @param {object|string} screenshot - Framework screenshot metadata or its file path
19
19
  * @param {string} filePath - Resolved screenshot file path
20
- * @returns {number} Capture time in epoch milliseconds
21
20
  */
22
21
  function getScreenshotCapturedAtMs (screenshot, filePath) {
23
22
  const takenAt = screenshot !== null && typeof screenshot === 'object' ? screenshot.takenAt : undefined
@@ -73,7 +72,6 @@ function getScreenshotUploadTag (uploadResult) {
73
72
  *
74
73
  * @param {object} testSpan - Test span to tag
75
74
  * @param {string|undefined} uploadResult - Aggregate screenshot upload result
76
- * @returns {void}
77
75
  */
78
76
  function setScreenshotUploadTags (testSpan, uploadResult) {
79
77
  const uploadTag = getScreenshotUploadTag(uploadResult)
@@ -42,7 +42,6 @@ function getVideoUploadTag (uploadResult) {
42
42
  * @param {object} span - Test or test suite span to tag
43
43
  * @param {string|undefined} uploadResult - Aggregate video upload result
44
44
  * @param {string} [scope] - Media lookup scope
45
- * @returns {void}
46
45
  */
47
46
  function setVideoUploadTags (span, uploadResult, scope) {
48
47
  const uploadTag = getVideoUploadTag(uploadResult)
@@ -47,10 +47,11 @@ function warnInvalidValue (value, optionName, source, baseMessage, error, outcom
47
47
  error.stack = error.toString()
48
48
  message += `\n\n${util.inspect(error)}`
49
49
  }
50
+ const telemetryError = { code: null, message }
50
51
  if (telemetryEntry) {
51
- telemetryEntry.error = { message }
52
+ telemetryEntry.error = telemetryError
52
53
  } else {
53
- parseErrors.set(telemetryKey, { message })
54
+ parseErrors.set(telemetryKey, telemetryError)
54
55
  }
55
56
  log ??= require('../log')
56
57
  const logLevel = error ? 'error' : 'warn'
@@ -4,11 +4,18 @@
4
4
  export interface GeneratedConfig {
5
5
  _DD_APM_TRACING_AGENTLESS_ENABLED: boolean;
6
6
  _DD_TRACE_METRICS_OTEL_FLUSH_INTERVAL: number;
7
+ aiguard: {
8
+ DD_AI_GUARD_ANALYZE_STREAM_RESPONSES_ENABLED: boolean;
9
+ DD_AI_GUARD_BLOCK: boolean;
10
+ DD_AI_GUARD_ENABLED: boolean;
11
+ DD_AI_GUARD_ENDPOINT: string | undefined;
12
+ DD_AI_GUARD_MAX_CONTENT_SIZE: number;
13
+ DD_AI_GUARD_MAX_MESSAGES_LENGTH: number;
14
+ DD_AI_GUARD_REDACTION_ENABLED: boolean;
15
+ DD_AI_GUARD_TIMEOUT: number;
16
+ };
7
17
  apmTracingEnabled: boolean;
8
18
  appsec: {
9
- blockedTemplateGraphql: string | undefined;
10
- blockedTemplateHtml: string | undefined;
11
- blockedTemplateJson: string | undefined;
12
19
  DD_API_SECURITY_DOWNSTREAM_BODY_ANALYSIS_SAMPLE_RATE: number;
13
20
  DD_API_SECURITY_ENABLED: boolean;
14
21
  DD_API_SECURITY_ENDPOINT_COLLECTION_ENABLED: boolean;
@@ -17,30 +24,26 @@ export interface GeneratedConfig {
17
24
  DD_API_SECURITY_MAX_DOWNSTREAM_REQUEST_BODY_ANALYSIS: number;
18
25
  DD_API_SECURITY_SAMPLE_DELAY: number;
19
26
  DD_APPSEC_AGENTIC_ONBOARDING: string;
27
+ DD_APPSEC_AUTO_USER_INSTRUMENTATION_MODE: string;
28
+ DD_APPSEC_COLLECT_ALL_HEADERS: boolean;
29
+ DD_APPSEC_ENABLED: boolean | undefined;
30
+ DD_APPSEC_GRAPHQL_BLOCKED_TEMPLATE_JSON: string | undefined;
31
+ DD_APPSEC_HEADER_COLLECTION_REDACTION_ENABLED: boolean;
32
+ DD_APPSEC_HTTP_BLOCKED_TEMPLATE_HTML: string | undefined;
33
+ DD_APPSEC_HTTP_BLOCKED_TEMPLATE_JSON: string | undefined;
34
+ DD_APPSEC_MAX_COLLECTED_HEADERS: number;
35
+ DD_APPSEC_MAX_STACK_TRACE_DEPTH: number;
36
+ DD_APPSEC_MAX_STACK_TRACES: number;
37
+ DD_APPSEC_OBFUSCATION_PARAMETER_KEY_REGEXP: string;
38
+ DD_APPSEC_OBFUSCATION_PARAMETER_VALUE_REGEXP: string;
39
+ DD_APPSEC_RASP_COLLECT_REQUEST_BODY: boolean;
40
+ DD_APPSEC_RASP_ENABLED: boolean;
41
+ DD_APPSEC_RULES: string | undefined;
20
42
  DD_APPSEC_SCA_ENABLED: boolean | undefined;
21
- enabled: boolean | undefined;
22
- eventTracking: {
23
- mode: string;
24
- };
25
- extendedHeadersCollection: {
26
- enabled: boolean;
27
- maxHeaders: number;
28
- redaction: boolean;
29
- };
30
- obfuscatorKeyRegex: string;
31
- obfuscatorValueRegex: string;
32
- rasp: {
33
- bodyCollection: boolean;
34
- enabled: boolean;
35
- };
36
- rateLimit: number;
37
- rules: string | undefined;
38
- stackTrace: {
39
- enabled: boolean;
40
- maxDepth: number;
41
- maxStackTraces: number;
42
- };
43
- wafTimeout: number;
43
+ DD_APPSEC_STACK_TRACE_ENABLED: boolean;
44
+ DD_APPSEC_TRACE_RATE_LIMIT: number;
45
+ DD_APPSEC_WAF_TIMEOUT: number;
46
+ DD_EXPERIMENTAL_APPSEC_STANDALONE_ENABLED: boolean;
44
47
  };
45
48
  baggageMaxBytes: number;
46
49
  baggageMaxItems: number;
@@ -115,6 +118,10 @@ export interface GeneratedConfig {
115
118
  DD_INTERNAL_PROFILING_LONG_LIVED_THRESHOLD: number;
116
119
  DD_INTERNAL_PROFILING_TIMELINE_SAMPLING_ENABLED: boolean;
117
120
  DD_LAMBDA_HANDLER: string | undefined;
121
+ DD_LLMOBS_PROMPTS_CACHE_DIR: string | undefined;
122
+ DD_LLMOBS_PROMPTS_CACHE_TTL: number;
123
+ DD_LLMOBS_PROMPTS_FILE_CACHE_ENABLED: boolean;
124
+ DD_LLMOBS_PROMPTS_TIMEOUT: number;
118
125
  DD_LOGS_OTEL_ENABLED: boolean;
119
126
  DD_METRICS_OTEL_ENABLED: boolean;
120
127
  DD_MINI_AGENT_PATH: string | undefined;
@@ -131,7 +138,7 @@ export interface GeneratedConfig {
131
138
  DD_PROFILING_EXPERIMENTAL_CPU_ENABLED: boolean;
132
139
  DD_PROFILING_EXPERIMENTAL_ENDPOINT_COLLECTION_ENABLED: boolean;
133
140
  DD_PROFILING_EXPERIMENTAL_OOM_EXPORT_STRATEGIES: string[];
134
- DD_PROFILING_EXPERIMENTAL_OOM_HEAP_LIMIT_EXTENSION_SIZE: number;
141
+ DD_PROFILING_EXPERIMENTAL_OOM_HEAP_LIMIT_EXTENSION_SIZE: number | 'auto';
135
142
  DD_PROFILING_EXPERIMENTAL_OOM_MAX_HEAP_EXTENSION_COUNT: number;
136
143
  DD_PROFILING_EXPERIMENTAL_OOM_MONITORING_ENABLED: boolean;
137
144
  DD_PROFILING_EXPERIMENTAL_TIMELINE_ENABLED: boolean;
@@ -358,6 +365,7 @@ export interface GeneratedConfig {
358
365
  DD_TRACE_PLAYWRIGHT_CORE_ENABLED: boolean;
359
366
  DD_TRACE_PLAYWRIGHT_ENABLED: boolean;
360
367
  DD_TRACE_PLAYWRIGHT_TEST_ENABLED: boolean;
368
+ DD_TRACE_POSTGRES_ENABLED: boolean;
361
369
  DD_TRACE_PRISMA_ENABLED: boolean;
362
370
  DD_TRACE_PROCESS_ENABLED: boolean;
363
371
  DD_TRACE_PROMISE_ENABLED: boolean;
@@ -386,6 +394,7 @@ export interface GeneratedConfig {
386
394
  DD_TRACE_SPAN_LEAK_DEBUG: number;
387
395
  DD_TRACE_SQLITE3_ENABLED: boolean;
388
396
  DD_TRACE_SUFFIXPLUGIN_ENABLED: boolean;
397
+ DD_TRACE_SUPABASE_ENABLED: boolean;
389
398
  DD_TRACE_TAGS: Record<string, string> | undefined;
390
399
  DD_TRACE_TEDIOUS_ENABLED: boolean;
391
400
  DD_TRACE_UNDICI_ENABLED: boolean;
@@ -414,20 +423,6 @@ export interface GeneratedConfig {
414
423
  };
415
424
  env: string | undefined;
416
425
  experimental: {
417
- aiguard: {
418
- block: boolean;
419
- enabled: boolean;
420
- endpoint: string | undefined;
421
- maxContentSize: number;
422
- maxMessagesLength: number;
423
- redactionEnabled: boolean;
424
- timeout: number;
425
- };
426
- appsec: {
427
- standalone: {
428
- enabled: boolean;
429
- };
430
- };
431
426
  b3: boolean;
432
427
  enableGetRumData: boolean;
433
428
  exporter: string;
@@ -451,20 +446,18 @@ export interface GeneratedConfig {
451
446
  headerTags: string[];
452
447
  hostname: string;
453
448
  iast: {
454
- dbRowsToTaint: number;
449
+ DD_IAST_DB_ROWS_TO_TAINT: number;
450
+ DD_IAST_DEDUPLICATION_ENABLED: boolean;
451
+ DD_IAST_ENABLED: boolean;
452
+ DD_IAST_MAX_CONCURRENT_REQUESTS: number;
453
+ DD_IAST_MAX_CONTEXT_OPERATIONS: number;
454
+ DD_IAST_REDACTION_ENABLED: boolean;
455
+ DD_IAST_REDACTION_NAME_PATTERN: string;
456
+ DD_IAST_REDACTION_VALUE_PATTERN: string;
457
+ DD_IAST_REQUEST_SAMPLING: number;
455
458
  DD_IAST_SECURITY_CONTROLS_CONFIGURATION: string | undefined;
456
- deduplicationEnabled: boolean;
457
- enabled: boolean;
458
- maxConcurrentRequests: number;
459
- maxContextOperations: number;
460
- redactionEnabled: boolean;
461
- redactionNamePattern: string;
462
- redactionValuePattern: string;
463
- requestSampling: number;
464
- stackTrace: {
465
- enabled: boolean;
466
- };
467
- telemetryVerbosity: string;
459
+ DD_IAST_STACK_TRACE_ENABLED: boolean;
460
+ DD_IAST_TELEMETRY_VERBOSITY: string;
468
461
  };
469
462
  inferredProxyServicesEnabled: boolean;
470
463
  langchain: {
@@ -473,19 +466,20 @@ export interface GeneratedConfig {
473
466
  };
474
467
  legacyBaggageEnabled: boolean;
475
468
  llmobs: {
476
- agentlessEnabled: boolean | undefined;
469
+ DD_LLMOBS_AGENTLESS_ENABLED: boolean | undefined;
477
470
  DD_LLMOBS_ENABLED: boolean;
478
- mlApp: string | undefined;
479
- projectName: string | undefined;
480
- sampleRate: number;
471
+ DD_LLMOBS_ML_APP: string | undefined;
472
+ DD_LLMOBS_PROJECT_NAME: string | undefined;
473
+ DD_LLMOBS_SAMPLE_RATE: number;
481
474
  };
482
475
  logInjection: boolean;
483
476
  logLevel: "debug" | "info" | "warn" | "error";
484
477
  middlewareTracingEnabled: boolean;
485
478
  openai: {
479
+ DD_OPENAI_LOGS_ENABLED: boolean;
480
+ DD_OPENAI_REALTIME_ENABLED: boolean;
486
481
  DD_OPENAI_SPAN_CHAR_LIMIT: number;
487
482
  };
488
- openAiLogsEnabled: boolean;
489
483
  OTEL_BSP_MAX_EXPORT_BATCH_SIZE: number;
490
484
  OTEL_BSP_MAX_QUEUE_SIZE: number;
491
485
  OTEL_BSP_SCHEDULE_DELAY: number;
@@ -493,14 +487,14 @@ export interface GeneratedConfig {
493
487
  OTEL_EXPORTER_OTLP_HEADERS: Record<string, string> | undefined;
494
488
  OTEL_EXPORTER_OTLP_LOGS_ENDPOINT: string;
495
489
  OTEL_EXPORTER_OTLP_LOGS_HEADERS: Record<string, string> | undefined;
496
- OTEL_EXPORTER_OTLP_LOGS_PROTOCOL: string;
490
+ OTEL_EXPORTER_OTLP_LOGS_PROTOCOL: "grpc" | "http/json" | "http/protobuf";
497
491
  OTEL_EXPORTER_OTLP_LOGS_TIMEOUT: number;
498
492
  OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: string;
499
493
  OTEL_EXPORTER_OTLP_METRICS_HEADERS: Record<string, string> | undefined;
500
- OTEL_EXPORTER_OTLP_METRICS_PROTOCOL: string;
494
+ OTEL_EXPORTER_OTLP_METRICS_PROTOCOL: "grpc" | "http/json" | "http/protobuf";
501
495
  OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "DELTA" | "CUMULATIVE" | "LOWMEMORY";
502
496
  OTEL_EXPORTER_OTLP_METRICS_TIMEOUT: number;
503
- OTEL_EXPORTER_OTLP_PROTOCOL: string;
497
+ OTEL_EXPORTER_OTLP_PROTOCOL: "grpc" | "http/json" | "http/protobuf";
504
498
  OTEL_EXPORTER_OTLP_TIMEOUT: number;
505
499
  OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: string;
506
500
  OTEL_EXPORTER_OTLP_TRACES_HEADERS: Record<string, string> | undefined;
@@ -565,6 +559,8 @@ export interface GeneratedConfig {
565
559
  DD_CIVISIBILITY_CODE_COVERAGE_REPORT_UPLOAD_ENABLED: boolean;
566
560
  DD_CIVISIBILITY_DANGEROUSLY_FORCE_COVERAGE: boolean;
567
561
  DD_CIVISIBILITY_DANGEROUSLY_FORCE_TEST_SKIPPING: boolean;
562
+ DD_CIVISIBILITY_DYNAMIC_ATR_BUCKETS: string[] | undefined;
563
+ DD_CIVISIBILITY_DYNAMIC_ATR_ENABLED: boolean;
568
564
  DD_CIVISIBILITY_EARLY_FLAKE_DETECTION_ENABLED: boolean;
569
565
  DD_CIVISIBILITY_ENABLED: boolean;
570
566
  DD_CIVISIBILITY_FLAKY_RETRY_COUNT: number;
@@ -615,6 +611,7 @@ export interface GeneratedEnvVarConfig {
615
611
  DD_AGENTLESS_ENABLED: boolean;
616
612
  DD_AGENTLESS_LOG_SUBMISSION_ENABLED: boolean;
617
613
  DD_AGENTLESS_LOG_SUBMISSION_URL: string | undefined;
614
+ DD_AI_GUARD_ANALYZE_STREAM_RESPONSES_ENABLED: boolean;
618
615
  DD_AI_GUARD_BLOCK: boolean;
619
616
  DD_AI_GUARD_ENABLED: boolean;
620
617
  DD_AI_GUARD_ENDPOINT: string | undefined;
@@ -663,6 +660,8 @@ export interface GeneratedEnvVarConfig {
663
660
  DD_CIVISIBILITY_CODE_COVERAGE_REPORT_UPLOAD_ENABLED: boolean;
664
661
  DD_CIVISIBILITY_DANGEROUSLY_FORCE_COVERAGE: boolean;
665
662
  DD_CIVISIBILITY_DANGEROUSLY_FORCE_TEST_SKIPPING: boolean;
663
+ DD_CIVISIBILITY_DYNAMIC_ATR_BUCKETS: string[] | undefined;
664
+ DD_CIVISIBILITY_DYNAMIC_ATR_ENABLED: boolean;
666
665
  DD_CIVISIBILITY_EARLY_FLAKE_DETECTION_ENABLED: boolean;
667
666
  DD_CIVISIBILITY_ENABLED: boolean;
668
667
  DD_CIVISIBILITY_FLAKY_RETRY_COUNT: number;
@@ -766,6 +765,12 @@ export interface GeneratedEnvVarConfig {
766
765
  DD_LLMOBS_ENABLED: boolean;
767
766
  DD_LLMOBS_ML_APP: string | undefined;
768
767
  DD_LLMOBS_PROJECT_NAME: string | undefined;
768
+ DD_LLMOBS_PROMPTS_CACHE_DIR: string | undefined;
769
+ DD_LLMOBS_PROMPTS_CACHE_TTL: number;
770
+ DD_LLMOBS_PROMPTS_CACHE_TTL_SECONDS: number;
771
+ DD_LLMOBS_PROMPTS_FILE_CACHE_ENABLED: boolean;
772
+ DD_LLMOBS_PROMPTS_TIMEOUT: number;
773
+ DD_LLMOBS_PROMPTS_TIMEOUT_SECONDS: number;
769
774
  DD_LLMOBS_SAMPLE_RATE: number;
770
775
  DD_LOG_LEVEL: "debug" | "info" | "warn" | "error";
771
776
  DD_LOGS_INJECTION: boolean;
@@ -773,6 +778,7 @@ export interface GeneratedEnvVarConfig {
773
778
  DD_METRICS_OTEL_ENABLED: boolean;
774
779
  DD_MINI_AGENT_PATH: string | undefined;
775
780
  DD_OPENAI_LOGS_ENABLED: boolean;
781
+ DD_OPENAI_REALTIME_ENABLED: boolean;
776
782
  DD_OPENAI_SPAN_CHAR_LIMIT: number;
777
783
  DD_PIPELINE_EXECUTION_ID: string | undefined;
778
784
  DD_PLAYWRIGHT_WORKER: string | undefined;
@@ -788,7 +794,7 @@ export interface GeneratedEnvVarConfig {
788
794
  DD_PROFILING_EXPERIMENTAL_CPU_ENABLED: boolean;
789
795
  DD_PROFILING_EXPERIMENTAL_ENDPOINT_COLLECTION_ENABLED: boolean;
790
796
  DD_PROFILING_EXPERIMENTAL_OOM_EXPORT_STRATEGIES: string[];
791
- DD_PROFILING_EXPERIMENTAL_OOM_HEAP_LIMIT_EXTENSION_SIZE: number;
797
+ DD_PROFILING_EXPERIMENTAL_OOM_HEAP_LIMIT_EXTENSION_SIZE: number | 'auto';
792
798
  DD_PROFILING_EXPERIMENTAL_OOM_MAX_HEAP_EXTENSION_COUNT: number;
793
799
  DD_PROFILING_EXPERIMENTAL_OOM_MONITORING_ENABLED: boolean;
794
800
  DD_PROFILING_EXPERIMENTAL_TIMELINE_ENABLED: boolean;
@@ -1071,6 +1077,7 @@ export interface GeneratedEnvVarConfig {
1071
1077
  DD_TRACE_PLAYWRIGHT_CORE_ENABLED: boolean;
1072
1078
  DD_TRACE_PLAYWRIGHT_ENABLED: boolean;
1073
1079
  DD_TRACE_PLAYWRIGHT_TEST_ENABLED: boolean;
1080
+ DD_TRACE_POSTGRES_ENABLED: boolean;
1074
1081
  DD_TRACE_PRISMA_ENABLED: boolean;
1075
1082
  DD_TRACE_PROCESS_ENABLED: boolean;
1076
1083
  DD_TRACE_PROMISE_ENABLED: boolean;
@@ -1109,6 +1116,7 @@ export interface GeneratedEnvVarConfig {
1109
1116
  DD_TRACE_STARTUP_LOGS: boolean;
1110
1117
  DD_TRACE_STATS_COMPUTATION_ENABLED: boolean;
1111
1118
  DD_TRACE_SUFFIXPLUGIN_ENABLED: boolean;
1119
+ DD_TRACE_SUPABASE_ENABLED: boolean;
1112
1120
  DD_TRACE_TAGS: Record<string, string> | undefined;
1113
1121
  DD_TRACE_TEDIOUS_ENABLED: boolean;
1114
1122
  DD_TRACE_TELEMETRY_ENABLED: boolean;
@@ -1138,14 +1146,14 @@ export interface GeneratedEnvVarConfig {
1138
1146
  OTEL_EXPORTER_OTLP_HEADERS: Record<string, string> | undefined;
1139
1147
  OTEL_EXPORTER_OTLP_LOGS_ENDPOINT: string | undefined;
1140
1148
  OTEL_EXPORTER_OTLP_LOGS_HEADERS: Record<string, string> | undefined;
1141
- OTEL_EXPORTER_OTLP_LOGS_PROTOCOL: string;
1149
+ OTEL_EXPORTER_OTLP_LOGS_PROTOCOL: "grpc" | "http/json" | "http/protobuf";
1142
1150
  OTEL_EXPORTER_OTLP_LOGS_TIMEOUT: number;
1143
1151
  OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: string | undefined;
1144
1152
  OTEL_EXPORTER_OTLP_METRICS_HEADERS: Record<string, string> | undefined;
1145
- OTEL_EXPORTER_OTLP_METRICS_PROTOCOL: string;
1153
+ OTEL_EXPORTER_OTLP_METRICS_PROTOCOL: "grpc" | "http/json" | "http/protobuf";
1146
1154
  OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "DELTA" | "CUMULATIVE" | "LOWMEMORY";
1147
1155
  OTEL_EXPORTER_OTLP_METRICS_TIMEOUT: number;
1148
- OTEL_EXPORTER_OTLP_PROTOCOL: string;
1156
+ OTEL_EXPORTER_OTLP_PROTOCOL: "grpc" | "http/json" | "http/protobuf";
1149
1157
  OTEL_EXPORTER_OTLP_TIMEOUT: number;
1150
1158
  OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: string | undefined;
1151
1159
  OTEL_EXPORTER_OTLP_TRACES_HEADERS: Record<string, string> | undefined;
@@ -143,10 +143,16 @@ function getEnvNameFromSource (name, source) {
143
143
  }
144
144
  }
145
145
 
146
+ /**
147
+ * @param {string} name
148
+ */
149
+ function isSupportedConfiguration (name) {
150
+ return supportedConfigurations[name] !== undefined || aliasToCanonical[name] !== undefined
151
+ }
152
+
146
153
  function validateAccess (name) {
147
154
  if ((name.startsWith('DD_') || name.startsWith('OTEL_')) &&
148
- !supportedConfigurations[name] &&
149
- !aliasToCanonical[name]) {
155
+ !isSupportedConfiguration(name)) {
150
156
  throw new Error(`Missing ${name} env/configuration in "supported-configurations.json" file.`)
151
157
  }
152
158
  }
@@ -284,6 +290,7 @@ function getValueFromEnvSources (name, skipDefault) {
284
290
 
285
291
  module.exports = {
286
292
  getValueFromEnvSources,
293
+ isSupportedConfiguration,
287
294
 
288
295
  /**
289
296
  * Expose raw stable config maps and warnings for consumers that need
@@ -24,6 +24,7 @@ const {
24
24
  } = require('../serverless')
25
25
  const { ORIGIN_KEY, DATADOG_MINI_AGENT_PATH } = require('../constants')
26
26
  const { appendRules } = require('../payload-tagging/config')
27
+ const { createSiteUrl } = require('../exporters/common/url')
27
28
  const ConfigBase = require('./config-base')
28
29
  const {
29
30
  getEnvironmentVariable,
@@ -66,7 +67,6 @@ channel('datadog:identity:update').subscribe(refreshRuntimeId)
66
67
  * Lazily generates the process-wide runtime ID on first access instead of at module load,
67
68
  * so modules that merely require this file without constructing a Config never pay for it.
68
69
  *
69
- * @returns {string}
70
70
  */
71
71
  function getRuntimeId () {
72
72
  runtimeId ??= uuid()
@@ -102,6 +102,10 @@ const tracerMetrics = telemetryMetrics.manager.namespace('tracers')
102
102
  /** @type {Config | null} */
103
103
  let configInstance = null
104
104
 
105
+ // Fires whenever remote config applies a new value; profiling and other RC-driven consumers
106
+ // subscribe here instead of proxy.js hardcoding a call into each of them.
107
+ const configUpdateChannel = channel('datadog:config:update')
108
+
105
109
  // An entry that is undefined means it is the default value.
106
110
  /** @type {Map<ConfigPath, TelemetrySource>} */
107
111
  const trackedConfigOrigins = new Map()
@@ -262,7 +266,7 @@ class Config extends ConfigBase {
262
266
 
263
267
  /**
264
268
  * @param {import('./helper').TracerEnv} envs
265
- * @param {'env_var' | 'local_stable_config' | 'fleet_stable_config'} source
269
+ * @param {'env_var' | 'local_stable_config' | 'fleet_stable_config' | 'remote_config'} source
266
270
  */
267
271
  #applyEnvs (envs, source) {
268
272
  for (const [name, value] of Object.entries(envs)) {
@@ -276,7 +280,7 @@ class Config extends ConfigBase {
276
280
 
277
281
  /**
278
282
  * @param {TracerOptions} options
279
- * @param {'code' | 'remote_config'} source
283
+ * @param {'code'} source
280
284
  * @param {string} [root]
281
285
  */
282
286
  #applyOptions (options, source, root = '') {
@@ -284,13 +288,8 @@ class Config extends ConfigBase {
284
288
  const fullName = root ? `${root}.${name}` : name
285
289
  let entry = optionsTable[fullName]
286
290
  if (!entry) {
287
- // TODO: Fix this by by changing remote config to use env styles.
288
- if (name !== 'DD_TRACE_ENABLED' || source !== 'remote_config') {
289
- log.warn('Unknown option %s with value %o', fullName, value)
290
- continue
291
- }
292
- // @ts-expect-error - The entry is defined in the configurationsTable.
293
- entry = configurationsTable.DD_TRACE_ENABLED
291
+ log.warn('Unknown option %s with value %o', fullName, value)
292
+ continue
294
293
  }
295
294
 
296
295
  if (entry.nestedProperties) {
@@ -336,24 +335,26 @@ class Config extends ConfigBase {
336
335
  }
337
336
 
338
337
  /**
339
- * Set the configuration with remote config settings.
340
- * Applies remote configuration, recalculates derived values, and merges all configuration sources.
338
+ * Set the configuration with SDK_CONFIGURATION remote config settings.
339
+ * Resolves env-var names via `configurationsTable`, since this payload is keyed by env var name.
341
340
  *
342
- * @param {TracerOptions|null} options - Configurations received via Remote
343
- * Config or null to reset all remote configuration
341
+ * @param {Partial<Record<import('./helper').SupportedEnvKey, string>>|null} options - Env-var-keyed
342
+ * configs received via the SDK_CONFIGURATION remote config product, or null to reset all remote configuration
344
343
  */
345
344
  setRemoteConfig (options) {
346
- // Clear all RC-managed fields to ensure previous values don't persist.
347
- // State is instead managed by the `RCClientLibConfigManager` class
345
+ // Replace the complete RC layer so omitted fields fall back to their previous source.
346
+ // TODO: Remove this reset once forward-fixing configurations explicitly unapply removed values.
348
347
  undo(this, 'remote_config')
349
348
 
350
349
  // Special case: if options is null, nothing to apply
351
350
  // This happens when all remote configs are removed
352
351
  if (options !== null) {
353
- this.#applyOptions(options, 'remote_config')
352
+ // Resolve aliases and drop configs this tracer version doesn't recognize
353
+ this.#applyEnvs(getEnvironmentVariables(options, true), 'remote_config')
354
354
  }
355
355
 
356
356
  this.#applyCalculated()
357
+ configUpdateChannel.publish(this)
357
358
  }
358
359
 
359
360
  /**
@@ -438,7 +439,7 @@ class Config extends ConfigBase {
438
439
  // Enable resource renaming when appsec is enabled and only
439
440
  // if DD_TRACE_RESOURCE_RENAMING_ENABLED is not explicitly set
440
441
  if (!trackedConfigOrigins.has('DD_TRACE_RESOURCE_RENAMING_ENABLED')) {
441
- setAndTrack(this, 'DD_TRACE_RESOURCE_RENAMING_ENABLED', this.appsec.enabled ?? false)
442
+ setAndTrack(this, 'DD_TRACE_RESOURCE_RENAMING_ENABLED', this.appsec.DD_APPSEC_ENABLED ?? false)
442
443
  }
443
444
 
444
445
  if (!trackedConfigOrigins.has('spanComputePeerService') && this.spanAttributeSchema !== 'v0') {
@@ -474,8 +475,8 @@ class Config extends ConfigBase {
474
475
  }
475
476
 
476
477
  if (!trackedConfigOrigins.has('apmTracingEnabled') &&
477
- trackedConfigOrigins.has('experimental.appsec.standalone.enabled')) {
478
- setAndTrack(this, 'apmTracingEnabled', !this.experimental.appsec.standalone.enabled)
478
+ trackedConfigOrigins.has('appsec.DD_EXPERIMENTAL_APPSEC_STANDALONE_ENABLED')) {
479
+ setAndTrack(this, 'apmTracingEnabled', !this.appsec.DD_EXPERIMENTAL_APPSEC_STANDALONE_ENABLED)
479
480
  }
480
481
 
481
482
  if (this.cloudPayloadTagging?.request || this.cloudPayloadTagging?.response) {
@@ -495,9 +496,6 @@ class Config extends ConfigBase {
495
496
 
496
497
  const agentlessTracingEnabled = this.DD_AGENTLESS_ENABLED ||
497
498
  isTrue(getEnvironmentVariable('_DD_APM_TRACING_AGENTLESS_ENABLED'))
498
- if (agentlessTracingEnabled && !this.isCiVisibility) {
499
- setAndTrack(this, 'OTEL_TRACES_EXPORTER', 'none')
500
- }
501
499
 
502
500
  // Apply the OTel sampler when the user opted into OTel traces or explicitly set the sampler.
503
501
  // OTEL_TRACES_SAMPLER has `default: parentbased_always_on` (per OTel spec), so opt-in users
@@ -532,9 +530,9 @@ class Config extends ConfigBase {
532
530
  // For LLMObs, we want to auto enable it when other llmobs options are defined.
533
531
  if (!this.llmobs.DD_LLMOBS_ENABLED &&
534
532
  !trackedConfigOrigins.has('llmobs.DD_LLMOBS_ENABLED') &&
535
- (trackedConfigOrigins.has('llmobs.agentlessEnabled') ||
536
- trackedConfigOrigins.has('llmobs.mlApp') ||
537
- trackedConfigOrigins.has('llmobs.projectName'))) {
533
+ (trackedConfigOrigins.has('llmobs.DD_LLMOBS_AGENTLESS_ENABLED') ||
534
+ trackedConfigOrigins.has('llmobs.DD_LLMOBS_ML_APP') ||
535
+ trackedConfigOrigins.has('llmobs.DD_LLMOBS_PROJECT_NAME'))) {
538
536
  setAndTrack(this, 'llmobs.DD_LLMOBS_ENABLED', true)
539
537
  }
540
538
 
@@ -650,7 +648,7 @@ class Config extends ConfigBase {
650
648
  setAndTrack(this, 'DD_AGENTLESS_LOG_SUBMISSION_ENABLED', true)
651
649
  }
652
650
  setAndTrack(this, 'testOptimization.DD_CIVISIBILITY_AGENTLESS_ENABLED', true)
653
- setAndTrack(this, 'llmobs.agentlessEnabled', true)
651
+ setAndTrack(this, 'llmobs.DD_LLMOBS_AGENTLESS_ENABLED', true)
654
652
  setAndTrack(this, 'featureFlags.DD_FEATURE_FLAGS_CONFIGURATION_SOURCE', 'agentless')
655
653
  if (this.DD_API_KEY === undefined) {
656
654
  setAndTrack(this, 'dynamicInstrumentation.enabled', false)
@@ -699,16 +697,33 @@ class Config extends ConfigBase {
699
697
 
700
698
  // TODO: This could likely be moved to the base class and allow easier GRPC handling
701
699
  // Default OTLP endpoints follow the configured agent host so users who point DD at a custom
702
- // agent (DD_AGENT_HOST / DD_TRACE_AGENT_URL) also reach OTLP on that host.
703
- const defaultOtlpBase = this.OTEL_EXPORTER_OTLP_ENDPOINT?.replace(/\/$/, '') ?? `http://${agentHostname}:4318`
700
+ // agent (DD_AGENT_HOST / DD_TRACE_AGENT_URL) also reach OTLP on that host. In agentless mode
701
+ // there is no agent to relay through, so OTLP goes straight to the per-site intake instead.
702
+ const otlpAgentlessOrigin = agentlessTracingEnabled && !this.OTEL_EXPORTER_OTLP_ENDPOINT
703
+ ? createSiteUrl(this.site, 'otlp')?.origin
704
+ : undefined
705
+ const defaultOtlpBase = otlpAgentlessOrigin ??
706
+ this.OTEL_EXPORTER_OTLP_ENDPOINT?.replace(/\/$/, '') ?? `http://${agentHostname}:4318`
707
+
708
+ const assignOtlpHeaderApiKey = (configName) => {
709
+ if (otlpAgentlessOrigin) {
710
+ this[configName] ??= { ...this.OTEL_EXPORTER_OTLP_HEADERS }
711
+ this[configName]['dd-api-key'] = this.DD_API_KEY
712
+ setAndTrack(this, configName, this[configName])
713
+ }
714
+ }
715
+
704
716
  if (!this.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT) {
705
717
  setAndTrack(this, 'OTEL_EXPORTER_OTLP_LOGS_ENDPOINT', `${defaultOtlpBase}/v1/logs`)
718
+ assignOtlpHeaderApiKey('OTEL_EXPORTER_OTLP_LOGS_HEADERS')
706
719
  }
707
720
  if (!this.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT) {
708
721
  setAndTrack(this, 'OTEL_EXPORTER_OTLP_METRICS_ENDPOINT', `${defaultOtlpBase}/v1/metrics`)
722
+ assignOtlpHeaderApiKey('OTEL_EXPORTER_OTLP_METRICS_HEADERS')
709
723
  }
710
724
  if (!this.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT) {
711
725
  setAndTrack(this, 'OTEL_EXPORTER_OTLP_TRACES_ENDPOINT', `${defaultOtlpBase}/v1/traces`)
726
+ assignOtlpHeaderApiKey('OTEL_EXPORTER_OTLP_TRACES_HEADERS')
712
727
  }
713
728
 
714
729
  const autoTraceMetrics = this.OTEL_TRACES_EXPORTER === 'otlp' && this.DD_METRICS_OTEL_ENABLED === true