dd-trace 4.48.0 → 4.49.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 (98) hide show
  1. package/LICENSE-3rdparty.csv +1 -0
  2. package/index.d.ts +335 -0
  3. package/package.json +13 -7
  4. package/packages/datadog-code-origin/index.js +4 -4
  5. package/packages/datadog-core/src/utils/src/parse-tags.js +33 -0
  6. package/packages/datadog-esbuild/index.js +4 -2
  7. package/packages/datadog-instrumentations/src/amqplib.js +65 -5
  8. package/packages/datadog-instrumentations/src/child_process.js +135 -27
  9. package/packages/datadog-instrumentations/src/helpers/hooks.js +3 -0
  10. package/packages/datadog-instrumentations/src/helpers/register.js +9 -0
  11. package/packages/datadog-instrumentations/src/kafkajs.js +123 -63
  12. package/packages/datadog-instrumentations/src/mocha/utils.js +2 -2
  13. package/packages/datadog-instrumentations/src/multer.js +37 -0
  14. package/packages/datadog-instrumentations/src/openai.js +2 -2
  15. package/packages/datadog-instrumentations/src/url.js +84 -0
  16. package/packages/datadog-instrumentations/src/utils/src/extract-package-and-module-path.js +7 -4
  17. package/packages/datadog-plugin-amqplib/src/consumer.js +4 -4
  18. package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +1 -0
  19. package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +1 -0
  20. package/packages/datadog-plugin-aws-sdk/src/services/s3.js +1 -0
  21. package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +1 -0
  22. package/packages/datadog-plugin-fastify/src/code_origin.js +2 -2
  23. package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +8 -1
  24. package/packages/datadog-plugin-google-cloud-pubsub/src/producer.js +8 -0
  25. package/packages/datadog-plugin-grpc/src/client.js +3 -0
  26. package/packages/datadog-plugin-grpc/src/server.js +3 -0
  27. package/packages/datadog-plugin-kafkajs/src/batch-consumer.js +6 -3
  28. package/packages/datadog-plugin-kafkajs/src/consumer.js +8 -4
  29. package/packages/datadog-plugin-kafkajs/src/producer.js +10 -4
  30. package/packages/datadog-plugin-mocha/src/index.js +4 -1
  31. package/packages/datadog-plugin-openai/src/index.js +9 -1015
  32. package/packages/datadog-plugin-openai/src/tracing.js +1023 -0
  33. package/packages/dd-trace/src/appsec/addresses.js +2 -0
  34. package/packages/dd-trace/src/appsec/channels.js +3 -1
  35. package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +55 -7
  36. package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +4 -2
  37. package/packages/dd-trace/src/appsec/index.js +3 -0
  38. package/packages/dd-trace/src/appsec/rasp/command_injection.js +49 -0
  39. package/packages/dd-trace/src/appsec/rasp/index.js +3 -0
  40. package/packages/dd-trace/src/appsec/rasp/ssrf.js +4 -3
  41. package/packages/dd-trace/src/appsec/rasp/utils.js +3 -2
  42. package/packages/dd-trace/src/appsec/recommended.json +2 -4
  43. package/packages/dd-trace/src/appsec/remote_config/capabilities.js +1 -0
  44. package/packages/dd-trace/src/appsec/remote_config/index.js +2 -0
  45. package/packages/dd-trace/src/appsec/reporter.js +5 -4
  46. package/packages/dd-trace/src/appsec/sdk/track_event.js +5 -3
  47. package/packages/dd-trace/src/appsec/waf/waf_manager.js +4 -0
  48. package/packages/dd-trace/src/azure_metadata.js +120 -0
  49. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/index.js +97 -0
  50. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +90 -0
  51. package/packages/dd-trace/src/ci-visibility/exporters/agent-proxy/index.js +19 -1
  52. package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +53 -0
  53. package/packages/dd-trace/src/ci-visibility/exporters/agentless/index.js +8 -1
  54. package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +43 -0
  55. package/packages/dd-trace/src/config.js +75 -6
  56. package/packages/dd-trace/src/constants.js +3 -1
  57. package/packages/dd-trace/src/datastreams/pathway.js +1 -0
  58. package/packages/dd-trace/src/debugger/devtools_client/index.js +9 -13
  59. package/packages/dd-trace/src/debugger/devtools_client/send.js +15 -1
  60. package/packages/dd-trace/src/debugger/devtools_client/snapshot/collector.js +57 -23
  61. package/packages/dd-trace/src/debugger/devtools_client/snapshot/index.js +12 -2
  62. package/packages/dd-trace/src/debugger/devtools_client/snapshot/processor.js +31 -20
  63. package/packages/dd-trace/src/debugger/devtools_client/snapshot/symbols.js +6 -0
  64. package/packages/dd-trace/src/debugger/devtools_client/state.js +11 -2
  65. package/packages/dd-trace/src/debugger/index.js +10 -3
  66. package/packages/dd-trace/src/llmobs/constants/tags.js +34 -0
  67. package/packages/dd-trace/src/llmobs/constants/text.js +6 -0
  68. package/packages/dd-trace/src/llmobs/constants/writers.js +13 -0
  69. package/packages/dd-trace/src/llmobs/index.js +103 -0
  70. package/packages/dd-trace/src/llmobs/noop.js +82 -0
  71. package/packages/dd-trace/src/llmobs/plugins/base.js +65 -0
  72. package/packages/dd-trace/src/llmobs/plugins/openai.js +205 -0
  73. package/packages/dd-trace/src/llmobs/sdk.js +377 -0
  74. package/packages/dd-trace/src/llmobs/span_processor.js +195 -0
  75. package/packages/dd-trace/src/llmobs/storage.js +7 -0
  76. package/packages/dd-trace/src/llmobs/tagger.js +322 -0
  77. package/packages/dd-trace/src/llmobs/util.js +176 -0
  78. package/packages/dd-trace/src/llmobs/writers/base.js +111 -0
  79. package/packages/dd-trace/src/llmobs/writers/evaluations.js +29 -0
  80. package/packages/dd-trace/src/llmobs/writers/spans/agentProxy.js +23 -0
  81. package/packages/dd-trace/src/llmobs/writers/spans/agentless.js +17 -0
  82. package/packages/dd-trace/src/llmobs/writers/spans/base.js +49 -0
  83. package/packages/dd-trace/src/noop/proxy.js +3 -0
  84. package/packages/dd-trace/src/noop/span.js +3 -0
  85. package/packages/dd-trace/src/opentelemetry/span.js +1 -1
  86. package/packages/dd-trace/src/opentelemetry/tracer.js +1 -0
  87. package/packages/dd-trace/src/opentracing/propagation/text_map.js +73 -12
  88. package/packages/dd-trace/src/opentracing/span.js +12 -0
  89. package/packages/dd-trace/src/opentracing/tracer.js +8 -1
  90. package/packages/dd-trace/src/payload-tagging/config/aws.json +71 -3
  91. package/packages/dd-trace/src/plugins/outbound.js +9 -0
  92. package/packages/dd-trace/src/priority_sampler.js +16 -0
  93. package/packages/dd-trace/src/profiling/config.js +3 -1
  94. package/packages/dd-trace/src/profiling/exporters/agent.js +7 -5
  95. package/packages/dd-trace/src/profiling/profilers/wall.js +2 -1
  96. package/packages/dd-trace/src/proxy.js +8 -1
  97. package/packages/dd-trace/src/span_processor.js +5 -0
  98. package/packages/dd-trace/src/telemetry/index.js +11 -1
@@ -16,6 +16,7 @@ const NoopDogStatsDClient = require('./noop/dogstatsd')
16
16
  const spanleak = require('./spanleak')
17
17
  const { SSIHeuristics } = require('./profiling/ssi-heuristics')
18
18
  const appsecStandalone = require('./appsec/standalone')
19
+ const LLMObsSDK = require('./llmobs/sdk')
19
20
 
20
21
  class LazyModule {
21
22
  constructor (provider) {
@@ -46,7 +47,8 @@ class Tracer extends NoopProxy {
46
47
  // these requires must work with esm bundler
47
48
  this._modules = {
48
49
  appsec: new LazyModule(() => require('./appsec')),
49
- iast: new LazyModule(() => require('./appsec/iast'))
50
+ iast: new LazyModule(() => require('./appsec/iast')),
51
+ llmobs: new LazyModule(() => require('./llmobs'))
50
52
  }
51
53
  }
52
54
 
@@ -195,11 +197,15 @@ class Tracer extends NoopProxy {
195
197
  if (config.appsec.enabled) {
196
198
  this._modules.appsec.enable(config)
197
199
  }
200
+ if (config.llmobs.enabled) {
201
+ this._modules.llmobs.enable(config)
202
+ }
198
203
  if (!this._tracingInitialized) {
199
204
  const prioritySampler = appsecStandalone.configure(config)
200
205
  this._tracer = new DatadogTracer(config, prioritySampler)
201
206
  this.dataStreamsCheckpointer = this._tracer.dataStreamsCheckpointer
202
207
  this.appsec = new AppsecSdk(this._tracer, config)
208
+ this.llmobs = new LLMObsSDK(this._tracer, this._modules.llmobs, config)
203
209
  this._tracingInitialized = true
204
210
  }
205
211
  if (config.iast.enabled) {
@@ -208,6 +214,7 @@ class Tracer extends NoopProxy {
208
214
  } else if (this._tracingInitialized) {
209
215
  this._modules.appsec.disable()
210
216
  this._modules.iast.disable()
217
+ this._modules.llmobs.disable()
211
218
  }
212
219
 
213
220
  if (this._tracingInitialized) {
@@ -10,6 +10,9 @@ const { SpanStatsProcessor } = require('./span_stats')
10
10
  const startedSpans = new WeakSet()
11
11
  const finishedSpans = new WeakSet()
12
12
 
13
+ const { channel } = require('dc-polyfill')
14
+ const spanProcessCh = channel('dd-trace:span:process')
15
+
13
16
  class SpanProcessor {
14
17
  constructor (exporter, prioritySampler, config) {
15
18
  this._exporter = exporter
@@ -45,6 +48,8 @@ class SpanProcessor {
45
48
  const formattedSpan = format(span)
46
49
  this._stats.onSpanFinished(formattedSpan)
47
50
  formatted.push(formattedSpan)
51
+
52
+ spanProcessCh.publish({ span })
48
53
  } else {
49
54
  active.push(span)
50
55
  }
@@ -314,7 +314,17 @@ function updateConfig (changes, config) {
314
314
  logInjection: 'DD_LOG_INJECTION',
315
315
  headerTags: 'DD_TRACE_HEADER_TAGS',
316
316
  tags: 'DD_TAGS',
317
- 'sampler.rules': 'DD_TRACE_SAMPLING_RULES'
317
+ 'sampler.rules': 'DD_TRACE_SAMPLING_RULES',
318
+ traceEnabled: 'DD_TRACE_ENABLED',
319
+ url: 'DD_TRACE_AGENT_URL',
320
+ 'sampler.rateLimit': 'DD_TRACE_RATE_LIMIT',
321
+ queryStringObfuscation: 'DD_TRACE_OBFUSCATION_QUERY_STRING_REGEXP',
322
+ version: 'DD_VERSION',
323
+ env: 'DD_ENV',
324
+ service: 'DD_SERVICE',
325
+ clientIpHeader: 'DD_TRACE_CLIENT_IP_HEADER',
326
+ 'grpc.client.error.statuses': 'DD_GRPC_CLIENT_ERROR_STATUSES',
327
+ 'grpc.server.error.statuses': 'DD_GRPC_SERVER_ERROR_STATUSES'
318
328
  }
319
329
 
320
330
  const namesNeedFormatting = new Set(['DD_TAGS', 'peerServiceMapping', 'serviceMapping'])