dd-trace 6.19.0 → 6.20.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 (77) hide show
  1. package/index.d.ts +163 -22
  2. package/package.json +2 -2
  3. package/packages/datadog-esbuild/index.js +9 -6
  4. package/packages/datadog-instrumentations/src/ai.js +26 -0
  5. package/packages/datadog-instrumentations/src/aws-sdk.js +2 -2
  6. package/packages/datadog-instrumentations/src/helpers/hooks.js +0 -7
  7. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentation-registry.js +2 -2
  8. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/ai.js +25 -0
  9. package/packages/datadog-plugin-openai/src/stream-helpers.js +50 -1
  10. package/packages/dd-trace/src/config/generated-config-types.d.ts +4 -0
  11. package/packages/dd-trace/src/config/remote_config.js +12 -0
  12. package/packages/dd-trace/src/config/supported-configurations.json +21 -0
  13. package/packages/dd-trace/src/debugger/constants.js +13 -4
  14. package/packages/dd-trace/src/debugger/devtools_client/breakpoints.js +14 -1
  15. package/packages/dd-trace/src/debugger/devtools_client/condition.js +109 -6
  16. package/packages/dd-trace/src/debugger/devtools_client/config.js +2 -0
  17. package/packages/dd-trace/src/debugger/devtools_client/index.js +65 -6
  18. package/packages/dd-trace/src/debugger/devtools_client/probe_sampler.js +22 -10
  19. package/packages/dd-trace/src/debugger/devtools_client/remote_config.js +12 -8
  20. package/packages/dd-trace/src/debugger/devtools_client/send.js +14 -0
  21. package/packages/dd-trace/src/debugger/devtools_client/snapshot/index.js +43 -5
  22. package/packages/dd-trace/src/debugger/devtools_client/snapshot/processor.js +3 -8
  23. package/packages/dd-trace/src/debugger/devtools_client/snapshot/redaction.js +2 -122
  24. package/packages/dd-trace/src/debugger/guardrail-metrics.js +0 -2
  25. package/packages/dd-trace/src/debugger/index.js +60 -28
  26. package/packages/dd-trace/src/debugger/inspect-segment.js +92 -23
  27. package/packages/dd-trace/src/debugger/pause-duration-histogram.js +74 -0
  28. package/packages/dd-trace/src/debugger/probe_sampler.js +192 -52
  29. package/packages/dd-trace/src/debugger/redaction.js +139 -0
  30. package/packages/dd-trace/src/knuth-hash.js +17 -0
  31. package/packages/dd-trace/src/llmobs/constants/tags.js +2 -0
  32. package/packages/dd-trace/src/llmobs/experiments/client.js +66 -2
  33. package/packages/dd-trace/src/llmobs/experiments/evaluator.js +138 -0
  34. package/packages/dd-trace/src/llmobs/experiments/experiment.js +213 -90
  35. package/packages/dd-trace/src/llmobs/experiments/index.js +40 -1
  36. package/packages/dd-trace/src/llmobs/experiments/noop.js +53 -2
  37. package/packages/dd-trace/src/llmobs/experiments/remote-evaluator.js +110 -0
  38. package/packages/dd-trace/src/llmobs/experiments/util.js +34 -6
  39. package/packages/dd-trace/src/llmobs/plugins/openai/index.js +2 -2
  40. package/packages/dd-trace/src/llmobs/sdk.js +19 -3
  41. package/packages/dd-trace/src/llmobs/span_processor.js +42 -26
  42. package/packages/dd-trace/src/llmobs/tagger.js +35 -0
  43. package/packages/dd-trace/src/llmobs/writers/base.js +1 -6
  44. package/packages/dd-trace/src/openfeature/constants/constants.js +10 -0
  45. package/packages/dd-trace/src/openfeature/flagging_provider.js +14 -1
  46. package/packages/dd-trace/src/openfeature/writers/base.js +39 -18
  47. package/packages/dd-trace/src/openfeature/writers/flag-eval-evp-hook.js +105 -0
  48. package/packages/dd-trace/src/openfeature/writers/flag-evaluation-aggregation.js +190 -0
  49. package/packages/dd-trace/src/openfeature/writers/flag-evaluation-consumer.js +233 -0
  50. package/packages/dd-trace/src/openfeature/writers/flag-evaluation-context.js +262 -0
  51. package/packages/dd-trace/src/openfeature/writers/flag-evaluation-payload.js +181 -0
  52. package/packages/dd-trace/src/openfeature/writers/flag-evaluation-pii.js +108 -0
  53. package/packages/dd-trace/src/openfeature/writers/flag-evaluation-telemetry.js +154 -0
  54. package/packages/dd-trace/src/openfeature/writers/flag-evaluation-worker.js +77 -0
  55. package/packages/dd-trace/src/openfeature/writers/flag-evaluations.js +398 -0
  56. package/packages/dd-trace/src/openfeature/writers/util.js +5 -4
  57. package/packages/dd-trace/src/opentelemetry/context_manager.js +3 -0
  58. package/packages/dd-trace/src/opentelemetry/span_context.js +6 -2
  59. package/packages/dd-trace/src/opentelemetry/trace/otlp_transformer.js +6 -0
  60. package/packages/dd-trace/src/opentelemetry/tracer.js +16 -18
  61. package/packages/dd-trace/src/opentracing/propagation/text_map.js +116 -25
  62. package/packages/dd-trace/src/opentracing/propagation/tracestate.js +80 -16
  63. package/packages/dd-trace/src/opentracing/span.js +14 -9
  64. package/packages/dd-trace/src/opentracing/tracer.js +10 -3
  65. package/packages/dd-trace/src/otel-sampling.js +171 -0
  66. package/packages/dd-trace/src/plugins/index.js +0 -1
  67. package/packages/dd-trace/src/priority_sampler.js +155 -33
  68. package/packages/dd-trace/src/remote_config/capabilities.js +9 -0
  69. package/packages/dd-trace/src/sampler.js +2 -5
  70. package/packages/dd-trace/src/sampling_rule.js +4 -8
  71. package/packages/dd-trace/src/span_format.js +6 -0
  72. package/packages/dd-trace/src/span_processor.js +26 -2
  73. package/packages/dd-trace/src/standalone/index.js +5 -4
  74. package/packages/dd-trace/src/standalone/tracesource_priority_sampler.js +25 -5
  75. package/packages/dd-trace/src/telemetry/metrics.js +4 -3
  76. package/packages/datadog-instrumentations/src/postgres.js +0 -7
  77. package/packages/datadog-instrumentations/src/supabase.js +0 -15
@@ -21,9 +21,9 @@ class TraceSourcePrioritySampler extends PrioritySampler {
21
21
  * @override
22
22
  * @returns {import('../priority_sampler').SamplingPriority|undefined}
23
23
  */
24
- _getPriorityFromTags (tags, context) {
25
- if (Object.hasOwn(tags, MANUAL_KEEP) &&
26
- tags[MANUAL_KEEP] !== false &&
24
+ _getPriorityFromTag (key, value, context) {
25
+ if (key === MANUAL_KEEP &&
26
+ value !== false &&
27
27
  hasTraceSourcePropagationTag(context._trace.tags)
28
28
  ) {
29
29
  return USER_KEEP
@@ -32,11 +32,17 @@ class TraceSourcePrioritySampler extends PrioritySampler {
32
32
 
33
33
  /**
34
34
  * @override
35
+ * @param {import('../opentracing/span')} span
36
+ * @param {boolean} [recordDecision]
37
+ * @returns {import('../priority_sampler').SamplingPriority}
35
38
  */
36
- _getPriorityFromAuto (span) {
39
+ _getPriorityFromAuto (span, recordDecision = false) {
37
40
  const context = this._getContext(span)
38
41
 
39
- context._sampling.mechanism = SAMPLING_MECHANISM_DEFAULT
42
+ if (recordDecision) {
43
+ context._sampling.mechanism = SAMPLING_MECHANISM_DEFAULT
44
+ this._recordDecisionMetadata(context)
45
+ }
40
46
 
41
47
  if (hasTraceSourcePropagationTag(context._trace.tags)) {
42
48
  return USER_KEEP
@@ -45,6 +51,20 @@ class TraceSourcePrioritySampler extends PrioritySampler {
45
51
  return this._isSampledByRateLimit(context) ? AUTO_KEEP : AUTO_REJECT
46
52
  }
47
53
 
54
+ /**
55
+ * Evaluates and records the standalone automatic sampling decision.
56
+ *
57
+ * @override
58
+ * @param {import('../opentracing/span')} span
59
+ * @returns {import('../priority_sampler').SamplingPriority}
60
+ */
61
+ decideFromAuto (span) {
62
+ const context = this._getContext(span)
63
+ const priority = this._getPriorityFromAuto(span, true)
64
+ context._sampling.priority = priority
65
+ return priority
66
+ }
67
+
48
68
  /**
49
69
  * @override
50
70
  */
@@ -137,16 +137,17 @@ class DistributionMetric extends Metric {
137
137
 
138
138
  /**
139
139
  * @param {number} [value]
140
+ * @param {number} [count] - The number of times the value was observed, which must be a positive integer
140
141
  */
141
- track (value = 1) {
142
+ track (value = 1, count = 1) {
142
143
  if (typeof value !== 'number' || !Number.isFinite(value)) return
143
144
 
144
145
  if (this.sketch === undefined) {
145
146
  this.sketch = createSketch()
146
147
  }
147
148
 
148
- this.sketch.accept(value)
149
- this.pointCount++
149
+ this.sketch.accept(value, count)
150
+ this.pointCount += count
150
151
  }
151
152
 
152
153
  /**
@@ -1,7 +0,0 @@
1
- 'use strict'
2
-
3
- const { addHook, getHooks } = require('./helpers/instrument')
4
-
5
- for (const hook of getHooks('postgres').values()) {
6
- addHook(hook, exports => exports)
7
- }
@@ -1,15 +0,0 @@
1
- 'use strict'
2
-
3
- const { addHook, getHooks } = require('./helpers/instrument')
4
-
5
- addHook({ name: '@supabase/supabase-js', versions: ['>=2.112.2'] }, exports => exports)
6
-
7
- for (const hook of getHooks([
8
- '@supabase/auth-js',
9
- '@supabase/storage-js',
10
- '@supabase/realtime-js',
11
- '@supabase/functions-js',
12
- '@supabase/postgrest-js',
13
- ]).values()) {
14
- addHook(hook, exports => exports)
15
- }