datadog 2.42.0 → 2.44.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 (94) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +67 -2
  3. data/README.md +3 -0
  4. data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +46 -5
  5. data/ext/datadog_profiling_native_extension/collectors_idle_sampling_helper.c +6 -7
  6. data/ext/datadog_profiling_native_extension/collectors_stack.c +6 -7
  7. data/ext/datadog_profiling_native_extension/collectors_stack.h +1 -1
  8. data/ext/datadog_profiling_native_extension/collectors_thread_context.c +80 -36
  9. data/ext/datadog_profiling_native_extension/collectors_thread_context.h +3 -2
  10. data/ext/datadog_profiling_native_extension/extconf.rb +4 -2
  11. data/ext/datadog_profiling_native_extension/heap_recorder.c +13 -0
  12. data/ext/datadog_profiling_native_extension/heap_recorder.h +4 -0
  13. data/ext/datadog_profiling_native_extension/private_vm_api_access.c +34 -2
  14. data/ext/datadog_profiling_native_extension/private_vm_api_access.h +1 -0
  15. data/ext/datadog_profiling_native_extension/profiling.c +1 -0
  16. data/ext/datadog_profiling_native_extension/stack_recorder.c +17 -4
  17. data/ext/datadog_profiling_native_extension/time_helpers.h +5 -4
  18. data/ext/libdatadog_api/di.c +8 -3
  19. data/ext/libdatadog_api/extconf.rb +1 -1
  20. data/ext/libdatadog_api/feature_flags.c +8 -0
  21. data/ext/libdatadog_api/init.c +3 -1
  22. data/ext/libdatadog_api/otel_thread_context.c +51 -15
  23. data/ext/libdatadog_api/trace_exporter.c +642 -22
  24. data/ext/libdatadog_extconf_helpers.rb +14 -9
  25. data/lib/datadog/ai_guard/component.rb +17 -8
  26. data/lib/datadog/ai_guard/configuration/ext.rb +2 -0
  27. data/lib/datadog/ai_guard/configuration.rb +13 -0
  28. data/lib/datadog/ai_guard/contrib/ruby_llm/chat_instrumentation.rb +48 -55
  29. data/lib/datadog/ai_guard/contrib/ruby_llm/integration.rb +1 -1
  30. data/lib/datadog/ai_guard/contrib/ruby_llm/message_adapter.rb +76 -0
  31. data/lib/datadog/ai_guard/contrib/ruby_llm/patcher.rb +1 -0
  32. data/lib/datadog/ai_guard/contrib/ruby_llm/redaction_change_set.rb +135 -0
  33. data/lib/datadog/ai_guard/evaluation/client.rb +50 -0
  34. data/lib/datadog/ai_guard/evaluation/content_part.rb +12 -0
  35. data/lib/datadog/ai_guard/evaluation/message.rb +25 -7
  36. data/lib/datadog/ai_guard/evaluation/message_builder.rb +31 -0
  37. data/lib/datadog/ai_guard/evaluation/no_op_result.rb +6 -6
  38. data/lib/datadog/ai_guard/evaluation/outcome.rb +24 -0
  39. data/lib/datadog/ai_guard/evaluation/request.rb +4 -60
  40. data/lib/datadog/ai_guard/evaluation/response.rb +33 -0
  41. data/lib/datadog/ai_guard/evaluation/result.rb +11 -18
  42. data/lib/datadog/ai_guard/evaluation/tool_call.rb +15 -2
  43. data/lib/datadog/ai_guard/evaluation.rb +25 -11
  44. data/lib/datadog/ai_guard/ext.rb +1 -0
  45. data/lib/datadog/ai_guard/{api_client.rb → http_client.rb} +6 -4
  46. data/lib/datadog/ai_guard/metrics/telemetry.rb +43 -0
  47. data/lib/datadog/ai_guard/redaction/replacements.rb +97 -0
  48. data/lib/datadog/ai_guard/redaction/result.rb +29 -0
  49. data/lib/datadog/ai_guard/redaction.rb +80 -0
  50. data/lib/datadog/ai_guard.rb +58 -57
  51. data/lib/datadog/core/configuration/components.rb +9 -1
  52. data/lib/datadog/core/configuration/settings.rb +5 -2
  53. data/lib/datadog/core/configuration/supported_configurations.rb +8 -0
  54. data/lib/datadog/core/remote/client/capabilities.rb +10 -4
  55. data/lib/datadog/core/remote/component.rb +9 -2
  56. data/lib/datadog/core/remote/worker.rb +8 -0
  57. data/lib/datadog/di/instrumenter.rb +1 -1
  58. data/lib/datadog/di/probe_manager.rb +10 -5
  59. data/lib/datadog/di/proc_responder.rb +1 -1
  60. data/lib/datadog/open_feature/agentless/configuration_source.rb +246 -0
  61. data/lib/datadog/open_feature/agentless/parser.rb +43 -0
  62. data/lib/datadog/open_feature/agentless/response.rb +19 -0
  63. data/lib/datadog/open_feature/agentless/transport.rb +103 -0
  64. data/lib/datadog/open_feature/component.rb +57 -1
  65. data/lib/datadog/open_feature/configuration/agentless_endpoint.rb +90 -0
  66. data/lib/datadog/open_feature/configuration/source/resolution.rb +22 -0
  67. data/lib/datadog/open_feature/configuration/source.rb +43 -0
  68. data/lib/datadog/open_feature/configuration.rb +118 -0
  69. data/lib/datadog/open_feature/native_evaluator.rb +1 -14
  70. data/lib/datadog/open_feature/remote.rb +5 -5
  71. data/lib/datadog/open_feature/transport.rb +5 -0
  72. data/lib/datadog/opentelemetry/signal_configuration.rb +13 -9
  73. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +2 -2
  74. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +5 -7
  75. data/lib/datadog/profiling/collectors/info.rb +2 -6
  76. data/lib/datadog/symbol_database/extractor.rb +84 -102
  77. data/lib/datadog/tracing/component.rb +2 -0
  78. data/lib/datadog/tracing/configuration/ext.rb +1 -0
  79. data/lib/datadog/tracing/configuration/settings.rb +6 -0
  80. data/lib/datadog/tracing/context.rb +24 -2
  81. data/lib/datadog/tracing/context_provider.rb +9 -5
  82. data/lib/datadog/tracing/contrib/grape/endpoint.rb +32 -5
  83. data/lib/datadog/tracing/contrib/sequel/jdbc_connection_string.rb +140 -0
  84. data/lib/datadog/tracing/contrib/sequel/utils.rb +49 -62
  85. data/lib/datadog/tracing/metadata/ext.rb +3 -0
  86. data/lib/datadog/tracing/otel_thread_context.rb +78 -9
  87. data/lib/datadog/tracing/tracer.rb +15 -2
  88. data/lib/datadog/tracing/transport/native.rb +18 -26
  89. data/lib/datadog/tracing/transport/span_events_negotiation.rb +41 -0
  90. data/lib/datadog/tracing/transport/trace_formatter.rb +13 -3
  91. data/lib/datadog/tracing/transport/traces.rb +3 -23
  92. data/lib/datadog/version.rb +1 -1
  93. metadata +25 -7
  94. data/lib/datadog/ai_guard/evaluation/content_builder.rb +0 -31
@@ -7,6 +7,7 @@ require_relative "../../core/transport/transport"
7
7
  require_relative "../../core/utils/enumerable_compat"
8
8
  require_relative "http/client"
9
9
  require_relative "serializable_trace"
10
+ require_relative "span_events_negotiation"
10
11
  require_relative "trace_formatter"
11
12
 
12
13
  module Datadog
@@ -99,7 +100,7 @@ module Datadog
99
100
 
100
101
  def encode_trace(encoder, trace, logger:, native_events_supported:)
101
102
  # Format the trace for transport
102
- TraceFormatter.format!(trace)
103
+ TraceFormatter.format!(trace, transport: "ruby")
103
104
 
104
105
  # Make the trace serializable
105
106
  serializable_trace = SerializableTrace.new(trace, native_events_supported: native_events_supported)
@@ -118,6 +119,7 @@ module Datadog
118
119
  # batches of traces into smaller chunks and handles
119
120
  # API version downgrade handshake.
120
121
  class Transport < Core::Transport::Transport
122
+ include SpanEventsNegotiation
121
123
  self.http_client_class = Tracing::Transport::HTTP::Client
122
124
 
123
125
  def send_traces(traces)
@@ -161,28 +163,6 @@ module Datadog
161
163
  def stats
162
164
  client.stats
163
165
  end
164
-
165
- private
166
-
167
- # Queries the agent for native span events serialization support.
168
- # This changes how the serialization of span events performed.
169
- def native_events_supported?
170
- return @native_events_supported if defined?(@native_events_supported)
171
-
172
- # Check for an explicit override
173
- option = Datadog.configuration.tracing.native_span_events
174
- unless option.nil?
175
- @native_events_supported = option
176
- return option
177
- end
178
-
179
- # Otherwise, check for agent support, to ensure a configuration-less setup.
180
- if (res = Datadog.send(:components).agent_info.fetch)
181
- @native_events_supported = res.span_events == true
182
- else
183
- false
184
- end
185
- end
186
166
  end
187
167
  end
188
168
  end
@@ -3,7 +3,7 @@
3
3
  module Datadog
4
4
  module VERSION
5
5
  MAJOR = 2
6
- MINOR = 42
6
+ MINOR = 44
7
7
  PATCH = 0
8
8
  PRE = nil
9
9
  BUILD = nil
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datadog
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.42.0
4
+ version: 2.44.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
@@ -63,14 +63,14 @@ dependencies:
63
63
  requirements:
64
64
  - - "~>"
65
65
  - !ruby/object:Gem::Version
66
- version: 40.0.0.2.0
66
+ version: 44.0.1.1.0
67
67
  type: :runtime
68
68
  prerelease: false
69
69
  version_requirements: !ruby/object:Gem::Requirement
70
70
  requirements:
71
71
  - - "~>"
72
72
  - !ruby/object:Gem::Version
73
- version: 40.0.0.2.0
73
+ version: 44.0.1.1.0
74
74
  - !ruby/object:Gem::Dependency
75
75
  name: logger
76
76
  requirement: !ruby/object:Gem::Requirement
@@ -190,7 +190,6 @@ files:
190
190
  - ext/libdatadog_extconf_helpers.rb
191
191
  - lib/datadog.rb
192
192
  - lib/datadog/ai_guard.rb
193
- - lib/datadog/ai_guard/api_client.rb
194
193
  - lib/datadog/ai_guard/autoload.rb
195
194
  - lib/datadog/ai_guard/component.rb
196
195
  - lib/datadog/ai_guard/configuration.rb
@@ -204,16 +203,26 @@ files:
204
203
  - lib/datadog/ai_guard/contrib/rails/patcher.rb
205
204
  - lib/datadog/ai_guard/contrib/ruby_llm/chat_instrumentation.rb
206
205
  - lib/datadog/ai_guard/contrib/ruby_llm/integration.rb
206
+ - lib/datadog/ai_guard/contrib/ruby_llm/message_adapter.rb
207
207
  - lib/datadog/ai_guard/contrib/ruby_llm/patcher.rb
208
+ - lib/datadog/ai_guard/contrib/ruby_llm/redaction_change_set.rb
208
209
  - lib/datadog/ai_guard/evaluation.rb
209
- - lib/datadog/ai_guard/evaluation/content_builder.rb
210
+ - lib/datadog/ai_guard/evaluation/client.rb
210
211
  - lib/datadog/ai_guard/evaluation/content_part.rb
211
212
  - lib/datadog/ai_guard/evaluation/message.rb
213
+ - lib/datadog/ai_guard/evaluation/message_builder.rb
212
214
  - lib/datadog/ai_guard/evaluation/no_op_result.rb
215
+ - lib/datadog/ai_guard/evaluation/outcome.rb
213
216
  - lib/datadog/ai_guard/evaluation/request.rb
217
+ - lib/datadog/ai_guard/evaluation/response.rb
214
218
  - lib/datadog/ai_guard/evaluation/result.rb
215
219
  - lib/datadog/ai_guard/evaluation/tool_call.rb
216
220
  - lib/datadog/ai_guard/ext.rb
221
+ - lib/datadog/ai_guard/http_client.rb
222
+ - lib/datadog/ai_guard/metrics/telemetry.rb
223
+ - lib/datadog/ai_guard/redaction.rb
224
+ - lib/datadog/ai_guard/redaction/replacements.rb
225
+ - lib/datadog/ai_guard/redaction/result.rb
217
226
  - lib/datadog/appsec.rb
218
227
  - lib/datadog/appsec/actions_handler.rb
219
228
  - lib/datadog/appsec/actions_handler/serializable_backtrace.rb
@@ -577,8 +586,15 @@ files:
577
586
  - lib/datadog/kit/identity.rb
578
587
  - lib/datadog/kit/tracing/method_tracer.rb
579
588
  - lib/datadog/open_feature.rb
589
+ - lib/datadog/open_feature/agentless/configuration_source.rb
590
+ - lib/datadog/open_feature/agentless/parser.rb
591
+ - lib/datadog/open_feature/agentless/response.rb
592
+ - lib/datadog/open_feature/agentless/transport.rb
580
593
  - lib/datadog/open_feature/component.rb
581
594
  - lib/datadog/open_feature/configuration.rb
595
+ - lib/datadog/open_feature/configuration/agentless_endpoint.rb
596
+ - lib/datadog/open_feature/configuration/source.rb
597
+ - lib/datadog/open_feature/configuration/source/resolution.rb
582
598
  - lib/datadog/open_feature/evaluation_engine.rb
583
599
  - lib/datadog/open_feature/exposures/batch_builder.rb
584
600
  - lib/datadog/open_feature/exposures/buffer.rb
@@ -1025,6 +1041,7 @@ files:
1025
1041
  - lib/datadog/tracing/contrib/sequel/dataset.rb
1026
1042
  - lib/datadog/tracing/contrib/sequel/ext.rb
1027
1043
  - lib/datadog/tracing/contrib/sequel/integration.rb
1044
+ - lib/datadog/tracing/contrib/sequel/jdbc_connection_string.rb
1028
1045
  - lib/datadog/tracing/contrib/sequel/patcher.rb
1029
1046
  - lib/datadog/tracing/contrib/sequel/utils.rb
1030
1047
  - lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb
@@ -1159,6 +1176,7 @@ files:
1159
1176
  - lib/datadog/tracing/transport/native.rb
1160
1177
  - lib/datadog/tracing/transport/native/response.rb
1161
1178
  - lib/datadog/tracing/transport/serializable_trace.rb
1179
+ - lib/datadog/tracing/transport/span_events_negotiation.rb
1162
1180
  - lib/datadog/tracing/transport/statistics.rb
1163
1181
  - lib/datadog/tracing/transport/trace_formatter.rb
1164
1182
  - lib/datadog/tracing/transport/traces.rb
@@ -1172,8 +1190,8 @@ licenses:
1172
1190
  - Apache-2.0
1173
1191
  metadata:
1174
1192
  allowed_push_host: https://rubygems.org
1175
- changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.42.0/CHANGELOG.md
1176
- source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.42.0
1193
+ changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.44.0/CHANGELOG.md
1194
+ source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.44.0
1177
1195
  post_install_message: 'JRuby support in the datadog gem is deprecated. Details: https://dtdg.co/jruby-deprecation'
1178
1196
  rdoc_options: []
1179
1197
  require_paths:
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Datadog
4
- module AIGuard
5
- module Evaluation
6
- # Builder for collecting content parts inside a message block.
7
- #
8
- # Used via the block form of {Datadog::AIGuard.message}:
9
- #
10
- # Datadog::AIGuard.message(role: :user) do |m|
11
- # m.text("What's in this image?")
12
- # m.image_url("https://example.com/img.png")
13
- # end
14
- class ContentBuilder
15
- attr_reader :parts
16
-
17
- def initialize
18
- @parts = []
19
- end
20
-
21
- def text(text)
22
- @parts << ContentPart::Text.new(text)
23
- end
24
-
25
- def image_url(url)
26
- @parts << ContentPart::ImageURL.new(url)
27
- end
28
- end
29
- end
30
- end
31
- end