anthropic 1.78.0 → 1.79.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 (497) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +35 -0
  3. data/LICENSE +8 -0
  4. data/README.md +42 -1
  5. data/lib/anthropic/client.rb +32 -0
  6. data/lib/anthropic/helpers/aws/client.rb +12 -2
  7. data/lib/anthropic/helpers/aws_auth.rb +8 -1
  8. data/lib/anthropic/helpers/bedrock/client.rb +19 -2
  9. data/lib/anthropic/helpers/bedrock/mantle_client.rb +19 -2
  10. data/lib/anthropic/helpers/google_cloud/client.rb +12 -2
  11. data/lib/anthropic/helpers/streaming/message_stream.rb +20 -43
  12. data/lib/anthropic/helpers/tools/runner.rb +104 -11
  13. data/lib/anthropic/helpers/tracing/attributes.rb +34 -0
  14. data/lib/anthropic/helpers/tracing/config.rb +16 -0
  15. data/lib/anthropic/helpers/tracing/content.rb +346 -0
  16. data/lib/anthropic/helpers/tracing/recorders.rb +131 -0
  17. data/lib/anthropic/helpers/tracing/response.rb +29 -0
  18. data/lib/anthropic/helpers/tracing/streamed_message.rb +189 -0
  19. data/lib/anthropic/helpers/tracing/tool_spans.rb +138 -0
  20. data/lib/anthropic/helpers/tracing.rb +13 -0
  21. data/lib/anthropic/helpers/vertex/client.rb +19 -2
  22. data/lib/anthropic/internal/tracing.rb +1118 -0
  23. data/lib/anthropic/internal/transport/base_client.rb +174 -10
  24. data/lib/anthropic/internal/transport/pooled_net_requester.rb +6 -0
  25. data/lib/anthropic/models/anthropic_beta.rb +3 -0
  26. data/lib/anthropic/models/beta/agent_create_params.rb +17 -6
  27. data/lib/anthropic/models/beta/agent_update_params.rb +17 -6
  28. data/lib/anthropic/models/beta/beta_dream_input.rb +2 -2
  29. data/lib/anthropic/models/beta/beta_fallbacks_param.rb +6 -2
  30. data/lib/anthropic/models/beta/beta_managed_agents_agent.rb +15 -6
  31. data/lib/anthropic/models/beta/beta_managed_agents_agent_tool_config_params.rb +8 -8
  32. data/lib/anthropic/models/beta/beta_managed_agents_agent_toolset_default_config.rb +2 -2
  33. data/lib/anthropic/models/beta/beta_managed_agents_agent_toolset_default_config_params.rb +2 -2
  34. data/lib/anthropic/models/beta/beta_managed_agents_agent_with_overrides_params.rb +6 -6
  35. data/lib/anthropic/models/beta/beta_managed_agents_aws_role_execution_identity.rb +29 -0
  36. data/lib/anthropic/models/beta/beta_managed_agents_aws_role_execution_identity_params.rb +34 -0
  37. data/lib/anthropic/models/beta/beta_managed_agents_bash_tool_config.rb +2 -2
  38. data/lib/anthropic/models/beta/beta_managed_agents_bash_tool_config_params.rb +2 -2
  39. data/lib/anthropic/models/beta/beta_managed_agents_deployment_initial_event.rb +3 -3
  40. data/lib/anthropic/models/beta/beta_managed_agents_deployment_initial_event_params.rb +3 -3
  41. data/lib/anthropic/models/beta/beta_managed_agents_deployment_paused_reason.rb +2 -2
  42. data/lib/anthropic/models/beta/beta_managed_agents_deployment_paused_reason_error.rb +38 -14
  43. data/lib/anthropic/models/beta/beta_managed_agents_deployment_run.rb +16 -16
  44. data/lib/anthropic/models/beta/beta_managed_agents_deployment_user_define_outcome_event.rb +2 -2
  45. data/lib/anthropic/models/beta/beta_managed_agents_deployment_user_message_event.rb +4 -4
  46. data/lib/anthropic/models/beta/beta_managed_agents_edit_tool_config.rb +2 -2
  47. data/lib/anthropic/models/beta/beta_managed_agents_edit_tool_config_params.rb +2 -2
  48. data/lib/anthropic/models/beta/beta_managed_agents_execution_identity.rb +57 -0
  49. data/lib/anthropic/models/beta/beta_managed_agents_execution_identity_params.rb +62 -0
  50. data/lib/anthropic/models/beta/beta_managed_agents_github_repository_resource_config.rb +2 -2
  51. data/lib/anthropic/models/beta/beta_managed_agents_github_repository_resource_params.rb +2 -2
  52. data/lib/anthropic/models/beta/beta_managed_agents_glob_tool_config.rb +2 -2
  53. data/lib/anthropic/models/beta/beta_managed_agents_glob_tool_config_params.rb +2 -2
  54. data/lib/anthropic/models/beta/beta_managed_agents_grep_tool_config.rb +2 -2
  55. data/lib/anthropic/models/beta/beta_managed_agents_grep_tool_config_params.rb +2 -2
  56. data/lib/anthropic/models/beta/beta_managed_agents_mcp_tool_config.rb +2 -2
  57. data/lib/anthropic/models/beta/beta_managed_agents_mcp_tool_config_params.rb +2 -2
  58. data/lib/anthropic/models/beta/beta_managed_agents_mcp_toolset_default_config.rb +2 -2
  59. data/lib/anthropic/models/beta/beta_managed_agents_mcp_toolset_default_config_params.rb +2 -2
  60. data/lib/anthropic/models/beta/beta_managed_agents_model.rb +0 -2
  61. data/lib/anthropic/models/beta/beta_managed_agents_model_config.rb +5 -5
  62. data/lib/anthropic/models/beta/beta_managed_agents_multiagent.rb +1 -1
  63. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_coordinator.rb +2 -2
  64. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_params.rb +1 -1
  65. data/lib/anthropic/models/beta/beta_managed_agents_read_tool_config.rb +2 -2
  66. data/lib/anthropic/models/beta/beta_managed_agents_read_tool_config_params.rb +2 -2
  67. data/lib/anthropic/models/beta/beta_managed_agents_service_account_execution_identity.rb +21 -0
  68. data/lib/anthropic/models/beta/beta_managed_agents_service_account_execution_identity_params.rb +23 -0
  69. data/lib/anthropic/models/beta/beta_managed_agents_session_agent.rb +16 -6
  70. data/lib/anthropic/models/beta/beta_managed_agents_session_agent_update.rb +3 -3
  71. data/lib/anthropic/models/beta/beta_managed_agents_session_multiagent.rb +1 -1
  72. data/lib/anthropic/models/beta/beta_managed_agents_session_multiagent_coordinator.rb +8 -2
  73. data/lib/anthropic/models/beta/beta_managed_agents_session_resource_config.rb +3 -3
  74. data/lib/anthropic/models/beta/beta_managed_agents_session_thread_agent.rb +19 -6
  75. data/lib/anthropic/models/beta/beta_managed_agents_skill_params.rb +2 -2
  76. data/lib/anthropic/models/beta/beta_managed_agents_start_event_preview.rb +2 -2
  77. data/lib/anthropic/models/beta/beta_managed_agents_trigger_context.rb +2 -2
  78. data/lib/anthropic/models/beta/beta_managed_agents_user_tool_result_event.rb +4 -4
  79. data/lib/anthropic/models/beta/beta_managed_agents_web_fetch_tool_config.rb +2 -2
  80. data/lib/anthropic/models/beta/beta_managed_agents_web_fetch_tool_config_params.rb +2 -2
  81. data/lib/anthropic/models/beta/beta_managed_agents_web_search_tool_config.rb +2 -2
  82. data/lib/anthropic/models/beta/beta_managed_agents_web_search_tool_config_params.rb +2 -2
  83. data/lib/anthropic/models/beta/beta_managed_agents_write_tool_config.rb +2 -2
  84. data/lib/anthropic/models/beta/beta_managed_agents_write_tool_config_params.rb +2 -2
  85. data/lib/anthropic/models/beta/beta_message_delta_usage.rb +0 -1
  86. data/lib/anthropic/models/beta/beta_output_behavior.rb +2 -2
  87. data/lib/anthropic/models/beta/beta_thinking_config_adaptive.rb +6 -4
  88. data/lib/anthropic/models/beta/beta_thinking_config_enabled.rb +6 -4
  89. data/lib/anthropic/models/beta/beta_thinking_config_param.rb +8 -7
  90. data/lib/anthropic/models/beta/beta_usage.rb +0 -1
  91. data/lib/anthropic/models/beta/deployment_create_params.rb +3 -3
  92. data/lib/anthropic/models/beta/deployment_update_params.rb +3 -3
  93. data/lib/anthropic/models/beta/memory_stores/beta_managed_agents_actor.rb +3 -3
  94. data/lib/anthropic/models/beta/memory_stores/beta_managed_agents_error.rb +6 -3
  95. data/lib/anthropic/models/beta/memory_stores/beta_managed_agents_memory_list_item.rb +2 -2
  96. data/lib/anthropic/models/beta/message_count_tokens_params.rb +15 -10
  97. data/lib/anthropic/models/beta/message_create_params.rb +21 -12
  98. data/lib/anthropic/models/beta/messages/batch_create_params.rb +21 -12
  99. data/lib/anthropic/models/beta/organization/beta_analytics_cost_bucketed_result.rb +3 -3
  100. data/lib/anthropic/models/beta/organization/beta_analytics_cost_users_item.rb +3 -3
  101. data/lib/anthropic/models/beta/organization/beta_analytics_usage_bucketed_result.rb +3 -3
  102. data/lib/anthropic/models/beta/organization/beta_analytics_usage_users_item.rb +3 -3
  103. data/lib/anthropic/models/beta/organization/beta_deleted_telemetry_destination.rb +30 -0
  104. data/lib/anthropic/models/beta/organization/beta_spend_limit.rb +2 -2
  105. data/lib/anthropic/models/beta/organization/beta_telemetry_destination.rb +118 -0
  106. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_content_mode.rb +29 -0
  107. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_delivery_health.rb +69 -0
  108. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason.rb +73 -0
  109. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_caller.rb +21 -0
  110. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_invalid_address.rb +29 -0
  111. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_redirect.rb +23 -0
  112. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_sustained_failure.rb +25 -0
  113. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_state.rb +71 -0
  114. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_state_disabled.rb +36 -0
  115. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_state_disabled_params.rb +24 -0
  116. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_state_enabled.rb +21 -0
  117. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_state_enabled_params.rb +23 -0
  118. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_state_params.rb +61 -0
  119. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_test_failure.rb +37 -0
  120. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_test_response.rb +35 -0
  121. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_test_result.rb +61 -0
  122. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_test_success.rb +21 -0
  123. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_traces.rb +61 -0
  124. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_traces_params.rb +71 -0
  125. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces.rb +69 -0
  126. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_all.rb +23 -0
  127. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_all_params.rb +23 -0
  128. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_exclude.rb +22 -0
  129. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_exclude_params.rb +49 -0
  130. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_include.rb +21 -0
  131. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_include_params.rb +49 -0
  132. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_params.rb +70 -0
  133. data/lib/anthropic/models/beta/organization/invite_create_params.rb +4 -2
  134. data/lib/anthropic/models/beta/organization/spend_limit_list_params.rb +2 -5
  135. data/lib/anthropic/models/beta/organization/telemetry_destination_create_params.rb +93 -0
  136. data/lib/anthropic/models/beta/organization/telemetry_destination_delete_params.rb +34 -0
  137. data/lib/anthropic/models/beta/organization/telemetry_destination_list_params.rb +62 -0
  138. data/lib/anthropic/models/beta/organization/telemetry_destination_retrieve_params.rb +34 -0
  139. data/lib/anthropic/models/beta/organization/telemetry_destination_test_params.rb +34 -0
  140. data/lib/anthropic/models/beta/organization/telemetry_destination_update_params.rb +120 -0
  141. data/lib/anthropic/models/beta/organization/telemetry_destinations/beta_deleted_telemetry_destination_workspace.rb +40 -0
  142. data/lib/anthropic/models/beta/organization/telemetry_destinations/beta_telemetry_destination_workspace.rb +52 -0
  143. data/lib/anthropic/models/beta/organization/telemetry_destinations/workspace_add_params.rb +44 -0
  144. data/lib/anthropic/models/beta/organization/telemetry_destinations/workspace_list_params.rb +57 -0
  145. data/lib/anthropic/models/beta/organization/telemetry_destinations/workspace_remove_params.rb +44 -0
  146. data/lib/anthropic/models/beta/organization/user_update_params.rb +4 -2
  147. data/lib/anthropic/models/beta/session_create_params.rb +5 -5
  148. data/lib/anthropic/models/beta/sessions/beta_managed_agents_agent_custom_tool_use_event.rb +3 -1
  149. data/lib/anthropic/models/beta/sessions/beta_managed_agents_agent_mcp_tool_result_event.rb +4 -4
  150. data/lib/anthropic/models/beta/sessions/beta_managed_agents_agent_message_event.rb +2 -2
  151. data/lib/anthropic/models/beta/sessions/beta_managed_agents_agent_thread_message_received_event.rb +4 -4
  152. data/lib/anthropic/models/beta/sessions/beta_managed_agents_agent_thread_message_sent_event.rb +4 -4
  153. data/lib/anthropic/models/beta/sessions/beta_managed_agents_agent_tool_result_event.rb +4 -4
  154. data/lib/anthropic/models/beta/sessions/beta_managed_agents_billing_error.rb +3 -3
  155. data/lib/anthropic/models/beta/sessions/beta_managed_agents_credential_host_unreachable_error.rb +3 -3
  156. data/lib/anthropic/models/beta/sessions/beta_managed_agents_document_block.rb +4 -4
  157. data/lib/anthropic/models/beta/sessions/beta_managed_agents_event_params.rb +14 -8
  158. data/lib/anthropic/models/beta/sessions/beta_managed_agents_github_repository_resource.rb +2 -2
  159. data/lib/anthropic/models/beta/sessions/beta_managed_agents_image_block.rb +3 -3
  160. data/lib/anthropic/models/beta/sessions/beta_managed_agents_inline_agent.rb +14 -6
  161. data/lib/anthropic/models/beta/sessions/beta_managed_agents_mcp_authentication_failed_error.rb +3 -3
  162. data/lib/anthropic/models/beta/sessions/beta_managed_agents_mcp_connection_failed_error.rb +3 -3
  163. data/lib/anthropic/models/beta/sessions/beta_managed_agents_model_overloaded_error.rb +3 -3
  164. data/lib/anthropic/models/beta/sessions/beta_managed_agents_model_rate_limited_error.rb +3 -3
  165. data/lib/anthropic/models/beta/sessions/beta_managed_agents_model_request_failed_error.rb +3 -3
  166. data/lib/anthropic/models/beta/sessions/beta_managed_agents_repository_authentication_error.rb +3 -3
  167. data/lib/anthropic/models/beta/sessions/beta_managed_agents_repository_checkout_error.rb +3 -3
  168. data/lib/anthropic/models/beta/sessions/beta_managed_agents_repository_clone_error.rb +3 -3
  169. data/lib/anthropic/models/beta/sessions/beta_managed_agents_repository_forbidden_error.rb +3 -3
  170. data/lib/anthropic/models/beta/sessions/beta_managed_agents_repository_not_found_error.rb +3 -3
  171. data/lib/anthropic/models/beta/sessions/beta_managed_agents_send_session_events.rb +8 -8
  172. data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_error_event.rb +14 -8
  173. data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_event.rb +64 -37
  174. data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_resource.rb +3 -3
  175. data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_status_idle_event.rb +4 -4
  176. data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_thread.rb +8 -2
  177. data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_thread_status_idle_event.rb +4 -4
  178. data/lib/anthropic/models/beta/sessions/beta_managed_agents_stream_session_events.rb +66 -39
  179. data/lib/anthropic/models/beta/sessions/beta_managed_agents_stream_session_thread_events.rb +66 -39
  180. data/lib/anthropic/models/beta/sessions/beta_managed_agents_unknown_error.rb +3 -3
  181. data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_custom_tool_result_event.rb +7 -7
  182. data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_custom_tool_result_event_params.rb +7 -7
  183. data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_define_outcome_event.rb +2 -2
  184. data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_define_outcome_event_params.rb +2 -2
  185. data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_message_event.rb +4 -4
  186. data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_message_event_params.rb +4 -4
  187. data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_tool_result_event_params.rb +4 -4
  188. data/lib/anthropic/models/beta/sessions/resource_retrieve_response.rb +3 -3
  189. data/lib/anthropic/models/beta/sessions/resource_update_response.rb +3 -3
  190. data/lib/anthropic/models/beta/vaults/beta_managed_agents_credential.rb +6 -3
  191. data/lib/anthropic/models/beta/vaults/beta_managed_agents_credential_networking_params.rb +7 -2
  192. data/lib/anthropic/models/beta/vaults/beta_managed_agents_environment_variable_auth_response.rb +7 -2
  193. data/lib/anthropic/models/beta/vaults/beta_managed_agents_mcp_oauth_refresh_params.rb +3 -3
  194. data/lib/anthropic/models/beta/vaults/beta_managed_agents_mcp_oauth_refresh_response.rb +12 -3
  195. data/lib/anthropic/models/beta/vaults/beta_managed_agents_mcp_oauth_refresh_update_params.rb +8 -2
  196. data/lib/anthropic/models/beta/vaults/credential_create_params.rb +6 -3
  197. data/lib/anthropic/models/beta/vaults/credential_update_params.rb +6 -3
  198. data/lib/anthropic/models/message_count_tokens_params.rb +15 -10
  199. data/lib/anthropic/models/message_create_params.rb +15 -10
  200. data/lib/anthropic/models/messages/batch_create_params.rb +15 -10
  201. data/lib/anthropic/models/model.rb +0 -2
  202. data/lib/anthropic/models/organization/invite_create_params.rb +4 -2
  203. data/lib/anthropic/models/organization/user_update_params.rb +4 -2
  204. data/lib/anthropic/models/thinking_config_adaptive.rb +6 -4
  205. data/lib/anthropic/models/thinking_config_enabled.rb +6 -4
  206. data/lib/anthropic/models/thinking_config_param.rb +8 -7
  207. data/lib/anthropic/request_options.rb +7 -0
  208. data/lib/anthropic/resources/beta/agents/versions.rb +4 -0
  209. data/lib/anthropic/resources/beta/agents.rb +22 -2
  210. data/lib/anthropic/resources/beta/deployment_runs.rb +16 -0
  211. data/lib/anthropic/resources/beta/deployments.rb +24 -0
  212. data/lib/anthropic/resources/beta/dreams.rb +15 -0
  213. data/lib/anthropic/resources/beta/environments/work.rb +42 -0
  214. data/lib/anthropic/resources/beta/environments.rb +18 -0
  215. data/lib/anthropic/resources/beta/files.rb +15 -0
  216. data/lib/anthropic/resources/beta/memory_stores/memories.rb +31 -0
  217. data/lib/anthropic/resources/beta/memory_stores/memory_versions.rb +28 -0
  218. data/lib/anthropic/resources/beta/memory_stores.rb +18 -0
  219. data/lib/anthropic/resources/beta/messages/batches.rb +19 -1
  220. data/lib/anthropic/resources/beta/messages.rb +12 -4
  221. data/lib/anthropic/resources/beta/models.rb +6 -0
  222. data/lib/anthropic/resources/beta/organization/analytics/apps/chat/projects.rb +3 -0
  223. data/lib/anthropic/resources/beta/organization/analytics/artifacts.rb +3 -0
  224. data/lib/anthropic/resources/beta/organization/analytics/connectors.rb +4 -0
  225. data/lib/anthropic/resources/beta/organization/analytics/cost_report.rb +20 -0
  226. data/lib/anthropic/resources/beta/organization/analytics/plugins.rb +4 -0
  227. data/lib/anthropic/resources/beta/organization/analytics/skills.rb +4 -0
  228. data/lib/anthropic/resources/beta/organization/analytics/summaries.rb +3 -0
  229. data/lib/anthropic/resources/beta/organization/analytics/usage_report.rb +20 -0
  230. data/lib/anthropic/resources/beta/organization/analytics/user_cost_report.rb +23 -0
  231. data/lib/anthropic/resources/beta/organization/analytics/user_usage_report.rb +23 -0
  232. data/lib/anthropic/resources/beta/organization/analytics/users.rb +4 -0
  233. data/lib/anthropic/resources/beta/organization/api_keys.rb +9 -0
  234. data/lib/anthropic/resources/beta/organization/compliance_settings.rb +4 -0
  235. data/lib/anthropic/resources/beta/organization/external_keys.rb +18 -0
  236. data/lib/anthropic/resources/beta/organization/federation/issuers.rb +15 -0
  237. data/lib/anthropic/resources/beta/organization/federation/rules/workspaces.rb +14 -0
  238. data/lib/anthropic/resources/beta/organization/federation/rules.rb +15 -0
  239. data/lib/anthropic/resources/beta/organization/invites.rb +12 -0
  240. data/lib/anthropic/resources/beta/organization/plugin_marketplaces.rb +14 -0
  241. data/lib/anthropic/resources/beta/organization/plugins/installation_settings.rb +16 -0
  242. data/lib/anthropic/resources/beta/organization/plugins/shares.rb +4 -0
  243. data/lib/anthropic/resources/beta/organization/plugins/versions.rb +22 -0
  244. data/lib/anthropic/resources/beta/organization/plugins.rb +27 -0
  245. data/lib/anthropic/resources/beta/organization/rate_limits.rb +3 -0
  246. data/lib/anthropic/resources/beta/organization/rbac_groups/members.rb +14 -0
  247. data/lib/anthropic/resources/beta/organization/rbac_groups.rb +15 -0
  248. data/lib/anthropic/resources/beta/organization/rbac_roles/permissions.rb +4 -0
  249. data/lib/anthropic/resources/beta/organization/rbac_roles.rb +6 -0
  250. data/lib/anthropic/resources/beta/organization/service_accounts/workspaces.rb +14 -0
  251. data/lib/anthropic/resources/beta/organization/service_accounts.rb +15 -0
  252. data/lib/anthropic/resources/beta/organization/spend_limits/effective.rb +5 -2
  253. data/lib/anthropic/resources/beta/organization/spend_limits/increase_requests.rb +12 -0
  254. data/lib/anthropic/resources/beta/organization/spend_limits.rb +17 -7
  255. data/lib/anthropic/resources/beta/organization/telemetry_destinations/workspaces.rb +173 -0
  256. data/lib/anthropic/resources/beta/organization/telemetry_destinations.rb +274 -0
  257. data/lib/anthropic/resources/beta/organization/users.rb +12 -0
  258. data/lib/anthropic/resources/beta/organization/workspaces/members.rb +26 -0
  259. data/lib/anthropic/resources/beta/organization/workspaces/rate_limits.rb +4 -0
  260. data/lib/anthropic/resources/beta/organization/workspaces/service_accounts.rb +26 -0
  261. data/lib/anthropic/resources/beta/organization/workspaces.rb +15 -0
  262. data/lib/anthropic/resources/beta/organization.rb +7 -0
  263. data/lib/anthropic/resources/beta/sessions/events.rb +21 -1
  264. data/lib/anthropic/resources/beta/sessions/resources.rb +26 -0
  265. data/lib/anthropic/resources/beta/sessions/threads/events.rb +15 -1
  266. data/lib/anthropic/resources/beta/sessions/threads.rb +16 -0
  267. data/lib/anthropic/resources/beta/sessions.rb +32 -0
  268. data/lib/anthropic/resources/beta/skills/versions.rb +17 -0
  269. data/lib/anthropic/resources/beta/skills.rb +12 -0
  270. data/lib/anthropic/resources/beta/tunnels/certificates.rb +20 -0
  271. data/lib/anthropic/resources/beta/tunnels.rb +18 -0
  272. data/lib/anthropic/resources/beta/user_profiles.rb +15 -0
  273. data/lib/anthropic/resources/beta/vaults/credentials.rb +38 -0
  274. data/lib/anthropic/resources/beta/vaults.rb +18 -0
  275. data/lib/anthropic/resources/completions.rb +5 -1
  276. data/lib/anthropic/resources/files.rb +15 -0
  277. data/lib/anthropic/resources/messages/batches.rb +19 -1
  278. data/lib/anthropic/resources/messages.rb +12 -4
  279. data/lib/anthropic/resources/models.rb +6 -0
  280. data/lib/anthropic/resources/organization/api_keys.rb +9 -0
  281. data/lib/anthropic/resources/organization/compliance_settings.rb +4 -0
  282. data/lib/anthropic/resources/organization/external_keys.rb +18 -0
  283. data/lib/anthropic/resources/organization/federation/issuers.rb +15 -0
  284. data/lib/anthropic/resources/organization/federation/rules/workspaces.rb +14 -0
  285. data/lib/anthropic/resources/organization/federation/rules.rb +15 -0
  286. data/lib/anthropic/resources/organization/invites.rb +12 -0
  287. data/lib/anthropic/resources/organization/rate_limits.rb +3 -0
  288. data/lib/anthropic/resources/organization/service_accounts/workspaces.rb +14 -0
  289. data/lib/anthropic/resources/organization/service_accounts.rb +15 -0
  290. data/lib/anthropic/resources/organization/users.rb +12 -0
  291. data/lib/anthropic/resources/organization/workspaces/members.rb +26 -0
  292. data/lib/anthropic/resources/organization/workspaces/rate_limits.rb +4 -0
  293. data/lib/anthropic/resources/organization/workspaces/service_accounts.rb +26 -0
  294. data/lib/anthropic/resources/organization/workspaces.rb +15 -0
  295. data/lib/anthropic/resources/organization.rb +2 -0
  296. data/lib/anthropic/resources/skills/versions.rb +14 -0
  297. data/lib/anthropic/resources/skills.rb +12 -0
  298. data/lib/anthropic/version.rb +1 -1
  299. data/lib/anthropic.rb +58 -0
  300. data/rbi/anthropic/client.rbi +28 -0
  301. data/rbi/anthropic/helpers/aws/client.rbi +6 -2
  302. data/rbi/anthropic/helpers/bedrock/client.rbi +6 -2
  303. data/rbi/anthropic/helpers/bedrock/mantle_client.rbi +6 -2
  304. data/rbi/anthropic/helpers/google_cloud/client.rbi +6 -2
  305. data/rbi/anthropic/helpers/streaming/message_stream.rbi +4 -1
  306. data/rbi/anthropic/helpers/vertex/client.rbi +6 -2
  307. data/rbi/anthropic/internal/tracing.rbi +847 -0
  308. data/rbi/anthropic/internal/transport/base_client.rbi +93 -5
  309. data/rbi/anthropic/internal/type/base_stream.rbi +2 -0
  310. data/rbi/anthropic/models/anthropic_beta.rbi +5 -0
  311. data/rbi/anthropic/models/beta/agent_create_params.rbi +34 -3
  312. data/rbi/anthropic/models/beta/agent_update_params.rbi +34 -3
  313. data/rbi/anthropic/models/beta/beta_fallback_param.rbi +3 -2
  314. data/rbi/anthropic/models/beta/beta_fallbacks_param.rbi +6 -2
  315. data/rbi/anthropic/models/beta/beta_managed_agents_agent.rbi +17 -0
  316. data/rbi/anthropic/models/beta/beta_managed_agents_agent_with_overrides_params.rbi +3 -3
  317. data/rbi/anthropic/models/beta/beta_managed_agents_aws_role_execution_identity.rbi +40 -0
  318. data/rbi/anthropic/models/beta/beta_managed_agents_aws_role_execution_identity_params.rbi +42 -0
  319. data/rbi/anthropic/models/beta/beta_managed_agents_execution_identity.rbi +85 -0
  320. data/rbi/anthropic/models/beta/beta_managed_agents_execution_identity_params.rbi +87 -0
  321. data/rbi/anthropic/models/beta/beta_managed_agents_model.rbi +0 -2
  322. data/rbi/anthropic/models/beta/beta_managed_agents_service_account_execution_identity.rbi +32 -0
  323. data/rbi/anthropic/models/beta/beta_managed_agents_service_account_execution_identity_params.rbi +33 -0
  324. data/rbi/anthropic/models/beta/beta_managed_agents_session_agent.rbi +19 -0
  325. data/rbi/anthropic/models/beta/beta_managed_agents_session_multiagent_coordinator.rbi +9 -0
  326. data/rbi/anthropic/models/beta/beta_managed_agents_session_thread_agent.rbi +19 -0
  327. data/rbi/anthropic/models/beta/beta_message_delta_usage.rbi +0 -2
  328. data/rbi/anthropic/models/beta/beta_thinking_config_adaptive.rbi +9 -6
  329. data/rbi/anthropic/models/beta/beta_thinking_config_enabled.rbi +9 -6
  330. data/rbi/anthropic/models/beta/beta_thinking_config_param.rbi +11 -9
  331. data/rbi/anthropic/models/beta/beta_usage.rbi +0 -2
  332. data/rbi/anthropic/models/beta/message_count_tokens_params.rbi +28 -18
  333. data/rbi/anthropic/models/beta/message_create_params.rbi +40 -22
  334. data/rbi/anthropic/models/beta/messages/batch_create_params.rbi +40 -22
  335. data/rbi/anthropic/models/beta/organization/beta_analytics_cost_bucketed_result.rbi +6 -6
  336. data/rbi/anthropic/models/beta/organization/beta_analytics_cost_users_item.rbi +6 -6
  337. data/rbi/anthropic/models/beta/organization/beta_analytics_usage_bucketed_result.rbi +6 -6
  338. data/rbi/anthropic/models/beta/organization/beta_analytics_usage_users_item.rbi +6 -6
  339. data/rbi/anthropic/models/beta/organization/beta_deleted_telemetry_destination.rbi +39 -0
  340. data/rbi/anthropic/models/beta/organization/beta_spend_limit.rbi +4 -4
  341. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination.rbi +191 -0
  342. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_content_mode.rbi +53 -0
  343. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_delivery_health.rbi +106 -0
  344. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason.rbi +95 -0
  345. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_caller.rbi +31 -0
  346. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_invalid_address.rbi +39 -0
  347. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_redirect.rbi +33 -0
  348. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_sustained_failure.rbi +35 -0
  349. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_state.rbi +99 -0
  350. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_state_disabled.rbi +66 -0
  351. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_state_disabled_params.rbi +34 -0
  352. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_state_enabled.rbi +31 -0
  353. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_state_enabled_params.rbi +33 -0
  354. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_state_params.rbi +81 -0
  355. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_test_failure.rbi +47 -0
  356. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_test_response.rbi +62 -0
  357. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_test_result.rbi +88 -0
  358. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_test_success.rbi +31 -0
  359. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_traces.rbi +97 -0
  360. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_traces_params.rbi +120 -0
  361. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces.rbi +93 -0
  362. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_all.rbi +33 -0
  363. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_all_params.rbi +33 -0
  364. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_exclude.rbi +32 -0
  365. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_exclude_params.rbi +80 -0
  366. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_include.rbi +31 -0
  367. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_include_params.rbi +80 -0
  368. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_params.rbi +107 -0
  369. data/rbi/anthropic/models/beta/organization/invite_create_params.rbi +6 -3
  370. data/rbi/anthropic/models/beta/organization/spend_limit_list_params.rbi +2 -8
  371. data/rbi/anthropic/models/beta/organization/telemetry_destination_create_params.rbi +186 -0
  372. data/rbi/anthropic/models/beta/organization/telemetry_destination_delete_params.rbi +73 -0
  373. data/rbi/anthropic/models/beta/organization/telemetry_destination_list_params.rbi +114 -0
  374. data/rbi/anthropic/models/beta/organization/telemetry_destination_retrieve_params.rbi +73 -0
  375. data/rbi/anthropic/models/beta/organization/telemetry_destination_test_params.rbi +73 -0
  376. data/rbi/anthropic/models/beta/organization/telemetry_destination_update_params.rbi +264 -0
  377. data/rbi/anthropic/models/beta/organization/telemetry_destinations/beta_deleted_telemetry_destination_workspace.rbi +61 -0
  378. data/rbi/anthropic/models/beta/organization/telemetry_destinations/beta_telemetry_destination_workspace.rbi +73 -0
  379. data/rbi/anthropic/models/beta/organization/telemetry_destinations/workspace_add_params.rbi +84 -0
  380. data/rbi/anthropic/models/beta/organization/telemetry_destinations/workspace_list_params.rbi +100 -0
  381. data/rbi/anthropic/models/beta/organization/telemetry_destinations/workspace_remove_params.rbi +84 -0
  382. data/rbi/anthropic/models/beta/organization/user_update_params.rbi +6 -3
  383. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_agent_custom_tool_use_event.rbi +3 -1
  384. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_event_params.rbi +2 -2
  385. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_inline_agent.rbi +17 -0
  386. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_send_session_events.rbi +2 -2
  387. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_session_event.rbi +2 -2
  388. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_session_thread.rbi +9 -0
  389. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_stream_session_events.rbi +2 -2
  390. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_stream_session_thread_events.rbi +2 -2
  391. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_user_custom_tool_result_event.rbi +4 -4
  392. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_user_custom_tool_result_event_params.rbi +4 -4
  393. data/rbi/anthropic/models/message_count_tokens_params.rbi +28 -18
  394. data/rbi/anthropic/models/message_create_params.rbi +28 -18
  395. data/rbi/anthropic/models/messages/batch_create_params.rbi +28 -18
  396. data/rbi/anthropic/models/model.rbi +0 -2
  397. data/rbi/anthropic/models/organization/invite_create_params.rbi +6 -3
  398. data/rbi/anthropic/models/organization/user_update_params.rbi +6 -3
  399. data/rbi/anthropic/models/thinking_config_adaptive.rbi +9 -6
  400. data/rbi/anthropic/models/thinking_config_enabled.rbi +9 -6
  401. data/rbi/anthropic/models/thinking_config_param.rbi +11 -9
  402. data/rbi/anthropic/request_options.rbi +5 -0
  403. data/rbi/anthropic/resources/beta/agents.rbi +22 -2
  404. data/rbi/anthropic/resources/beta/messages/batches.rbi +2 -1
  405. data/rbi/anthropic/resources/beta/messages.rbi +56 -32
  406. data/rbi/anthropic/resources/beta/organization/invites.rbi +2 -1
  407. data/rbi/anthropic/resources/beta/organization/spend_limits/effective.rbi +2 -2
  408. data/rbi/anthropic/resources/beta/organization/spend_limits.rbi +5 -10
  409. data/rbi/anthropic/resources/beta/organization/telemetry_destinations/workspaces.rbi +124 -0
  410. data/rbi/anthropic/resources/beta/organization/telemetry_destinations.rbi +300 -0
  411. data/rbi/anthropic/resources/beta/organization/users.rbi +2 -1
  412. data/rbi/anthropic/resources/beta/organization.rbi +7 -0
  413. data/rbi/anthropic/resources/beta/sessions/events.rbi +2 -1
  414. data/rbi/anthropic/resources/beta/sessions/threads/events.rbi +2 -1
  415. data/rbi/anthropic/resources/completions.rbi +6 -1
  416. data/rbi/anthropic/resources/messages/batches.rbi +2 -1
  417. data/rbi/anthropic/resources/messages.rbi +44 -28
  418. data/rbi/anthropic/resources/organization/invites.rbi +2 -1
  419. data/rbi/anthropic/resources/organization/users.rbi +2 -1
  420. data/sig/anthropic/client.rbs +1 -0
  421. data/sig/anthropic/helpers/bedrock/client.rbs +2 -1
  422. data/sig/anthropic/helpers/google_cloud/client.rbs +2 -1
  423. data/sig/anthropic/helpers/streaming/message_stream.rbs +2 -2
  424. data/sig/anthropic/helpers/vertex/client.rbs +2 -1
  425. data/sig/anthropic/internal/tracing.rbs +477 -0
  426. data/sig/anthropic/internal/transport/base_client.rbs +37 -2
  427. data/sig/anthropic/internal/type/base_stream.rbs +1 -1
  428. data/sig/anthropic/models/anthropic_beta.rbs +2 -0
  429. data/sig/anthropic/models/beta/agent_create_params.rbs +5 -0
  430. data/sig/anthropic/models/beta/agent_update_params.rbs +5 -0
  431. data/sig/anthropic/models/beta/beta_managed_agents_agent.rbs +5 -0
  432. data/sig/anthropic/models/beta/beta_managed_agents_aws_role_execution_identity.rbs +20 -0
  433. data/sig/anthropic/models/beta/beta_managed_agents_aws_role_execution_identity_params.rbs +20 -0
  434. data/sig/anthropic/models/beta/beta_managed_agents_execution_identity.rbs +42 -0
  435. data/sig/anthropic/models/beta/beta_managed_agents_execution_identity_params.rbs +42 -0
  436. data/sig/anthropic/models/beta/beta_managed_agents_model.rbs +0 -2
  437. data/sig/anthropic/models/beta/beta_managed_agents_service_account_execution_identity.rbs +18 -0
  438. data/sig/anthropic/models/beta/beta_managed_agents_service_account_execution_identity_params.rbs +18 -0
  439. data/sig/anthropic/models/beta/beta_managed_agents_session_agent.rbs +5 -0
  440. data/sig/anthropic/models/beta/beta_managed_agents_session_multiagent_coordinator.rbs +2 -0
  441. data/sig/anthropic/models/beta/beta_managed_agents_session_thread_agent.rbs +5 -0
  442. data/sig/anthropic/models/beta/organization/beta_deleted_telemetry_destination.rbs +23 -0
  443. data/sig/anthropic/models/beta/organization/beta_telemetry_destination.rbs +74 -0
  444. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_content_mode.rbs +23 -0
  445. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_delivery_health.rbs +30 -0
  446. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason.rbs +51 -0
  447. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_caller.rbs +18 -0
  448. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_invalid_address.rbs +18 -0
  449. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_redirect.rbs +18 -0
  450. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_sustained_failure.rbs +18 -0
  451. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_state.rbs +42 -0
  452. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_state_disabled.rbs +29 -0
  453. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_state_disabled_params.rbs +18 -0
  454. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_state_enabled.rbs +17 -0
  455. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_state_enabled_params.rbs +18 -0
  456. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_state_params.rbs +40 -0
  457. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_test_failure.rbs +20 -0
  458. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_test_response.rbs +29 -0
  459. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_test_result.rbs +42 -0
  460. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_test_success.rbs +17 -0
  461. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_traces.rbs +39 -0
  462. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_traces_params.rbs +41 -0
  463. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces.rbs +45 -0
  464. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_all.rbs +17 -0
  465. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_all_params.rbs +17 -0
  466. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_exclude.rbs +17 -0
  467. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_exclude_params.rbs +25 -0
  468. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_include.rbs +17 -0
  469. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_include_params.rbs +25 -0
  470. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_params.rbs +48 -0
  471. data/sig/anthropic/models/beta/organization/telemetry_destination_create_params.rbs +65 -0
  472. data/sig/anthropic/models/beta/organization/telemetry_destination_delete_params.rbs +39 -0
  473. data/sig/anthropic/models/beta/organization/telemetry_destination_list_params.rbs +55 -0
  474. data/sig/anthropic/models/beta/organization/telemetry_destination_retrieve_params.rbs +39 -0
  475. data/sig/anthropic/models/beta/organization/telemetry_destination_test_params.rbs +39 -0
  476. data/sig/anthropic/models/beta/organization/telemetry_destination_update_params.rbs +79 -0
  477. data/sig/anthropic/models/beta/organization/telemetry_destinations/beta_deleted_telemetry_destination_workspace.rbs +36 -0
  478. data/sig/anthropic/models/beta/organization/telemetry_destinations/beta_telemetry_destination_workspace.rbs +41 -0
  479. data/sig/anthropic/models/beta/organization/telemetry_destinations/workspace_add_params.rbs +46 -0
  480. data/sig/anthropic/models/beta/organization/telemetry_destinations/workspace_list_params.rbs +55 -0
  481. data/sig/anthropic/models/beta/organization/telemetry_destinations/workspace_remove_params.rbs +46 -0
  482. data/sig/anthropic/models/beta/sessions/beta_managed_agents_inline_agent.rbs +5 -0
  483. data/sig/anthropic/models/beta/sessions/beta_managed_agents_session_thread.rbs +3 -0
  484. data/sig/anthropic/models/model.rbs +0 -2
  485. data/sig/anthropic/request_options.rbs +3 -0
  486. data/sig/anthropic/resources/beta/agents.rbs +2 -0
  487. data/sig/anthropic/resources/beta/messages/batches.rbs +1 -1
  488. data/sig/anthropic/resources/beta/messages.rbs +1 -1
  489. data/sig/anthropic/resources/beta/organization/telemetry_destinations/workspaces.rbs +35 -0
  490. data/sig/anthropic/resources/beta/organization/telemetry_destinations.rbs +61 -0
  491. data/sig/anthropic/resources/beta/organization.rbs +2 -0
  492. data/sig/anthropic/resources/beta/sessions/events.rbs +1 -1
  493. data/sig/anthropic/resources/beta/sessions/threads/events.rbs +1 -1
  494. data/sig/anthropic/resources/completions.rbs +1 -1
  495. data/sig/anthropic/resources/messages/batches.rbs +1 -1
  496. data/sig/anthropic/resources/messages.rbs +1 -1
  497. metadata +178 -2
@@ -0,0 +1,189 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Anthropic
4
+ module Helpers
5
+ module Tracing
6
+ class << self
7
+ # A failure to record must not fail the application's code, so an error raised in the block
8
+ # is logged, and the value is then `nil`.
9
+ #
10
+ # @param what [String]
11
+ def recording(what)
12
+ yield
13
+ rescue StandardError => e
14
+ OpenTelemetry.logger.debug("anthropic: could not record #{what} on its span: #{e.class}")
15
+ nil
16
+ end
17
+
18
+ # The enumerator that reads `events` and records the Message they carry on `span`, and what
19
+ # it has recorded so far.
20
+ #
21
+ # @param span [OpenTelemetry::Trace::Span]
22
+ # @param events [Enumerable<Anthropic::Internal::Type::BaseModel>] the events of the stream
23
+ # @param params [Hash{Symbol=>Object}] the request's body
24
+ # @param start_time [Float] when the API call started, on the monotonic clock
25
+ # @param content [Boolean] whether the span has the `content` attributes
26
+ # @param content_limit [Integer] the most bytes the `content` attributes hold
27
+ #
28
+ # @return [Array(Enumerator, Anthropic::Helpers::Tracing::StreamedMessage)]
29
+ def follow_streamed_message(span, events, params:, start_time:, content:, content_limit: CONTENT_LIMIT)
30
+ tracker = StreamedMessage.new(
31
+ span,
32
+ params: params,
33
+ start_time: start_time,
34
+ content: content,
35
+ content_limit: content_limit
36
+ )
37
+ recording = Enumerator.new do |y|
38
+ events.each do |event|
39
+ tracker.observe(event)
40
+ y << event
41
+ end
42
+ tracker.ended_by_server
43
+ ensure
44
+ tracker.set_attributes
45
+ end
46
+ # The SDK closes a stream by rewinding its enumerator. That does not resume a read
47
+ # suspended in `Enumerator#next`, whose `ensure` would never run, so the Message is
48
+ # recorded here too.
49
+ recording.define_singleton_method(:rewind) do
50
+ tracker.set_attributes
51
+ events.rewind
52
+ self
53
+ end
54
+ [recording, tracker]
55
+ end
56
+
57
+ # Runs the block, in which a stream helper folds one event into the Message it accumulates,
58
+ # and gives that Message to the span that follows `stream`, when one does. An event that the
59
+ # block fails on leaves the span without the Message.
60
+ #
61
+ # @param stream [Anthropic::Internal::Type::BaseStream] the raw stream that the helper reads
62
+ #
63
+ # @return [Anthropic::Models::Message, Anthropic::Models::Beta::BetaMessage]
64
+ def accumulate_streamed_message(stream)
65
+ tracker = stream.streamed_message if stream.is_a?(Anthropic::Internal::TracedStream)
66
+ tracker&.snapshot = nil
67
+ message = yield
68
+ tracker&.snapshot = message
69
+ message
70
+ end
71
+ end
72
+
73
+ # What a span records of a streamed Message, as far as the stream has been read. None of its
74
+ # methods raises. The content is not rebuilt here: it comes from the Message that a stream
75
+ # helper accumulates ({Tracing.accumulate_streamed_message}), so a raw stream has none.
76
+ class StreamedMessage
77
+ # The counts of `message_start` that a later `message_delta` replaces with the final ones.
78
+ PROVISIONAL_USAGE = [:output_tokens, :output_tokens_details, :iterations].freeze
79
+
80
+ # @param value [Anthropic::Models::Message, Anthropic::Models::Beta::BetaMessage, nil]
81
+ attr_writer :snapshot
82
+
83
+ # @param span [OpenTelemetry::Trace::Span]
84
+ # @param params [Hash{Symbol=>Object}] the request's body
85
+ # @param start_time [Float] when the API call started, on the monotonic clock
86
+ # @param content [Boolean] whether the span has the `content` attributes
87
+ # @param content_limit [Integer] the most bytes the `content` attributes hold
88
+ def initialize(span, params:, start_time:, content:, content_limit: CONTENT_LIMIT)
89
+ @span = span
90
+ @params = params
91
+ @start_time = start_time
92
+ @content = content
93
+ @content_limit = content_limit
94
+ @timed = false
95
+ @message = nil
96
+ @snapshot = nil
97
+ @stopped = false
98
+ @recorded = false
99
+ end
100
+
101
+ # @param event [Anthropic::Internal::Type::BaseModel]
102
+ def observe(event)
103
+ Tracing.recording("a streamed message") { fold(event) }
104
+ end
105
+
106
+ # `[]` reads a field of an event as it is, so nothing is converted: a stream is mostly content
107
+ # deltas, which cost nothing here after the first.
108
+ #
109
+ # @param event [Anthropic::Internal::Type::BaseModel]
110
+ private def fold(event)
111
+ case event[:type].to_sym
112
+ in :message_start
113
+ message = event[:message]
114
+ @message = {
115
+ id: message[:id],
116
+ model: message[:model],
117
+ usage: message[:usage].to_h.except(*PROVISIONAL_USAGE)
118
+ }
119
+ in :content_block_start if @message && event[:content_block][:type].to_sym == :fallback
120
+ @message[:model] = event[:content_block][:to][:model]
121
+ in :content_block_delta unless @timed
122
+ @timed = true
123
+ @span.set_attribute(
124
+ GEN_AI_RESPONSE_TIME_TO_FIRST_CHUNK,
125
+ Anthropic::Internal::Util.monotonic_secs - @start_time
126
+ )
127
+ in :message_delta unless @message.nil?
128
+ event[:usage].to_h.each do |key, value|
129
+ # The cache writes by lifetime come from `message_start` only.
130
+ @message[:usage][key] = value unless value.nil? || key == :cache_creation
131
+ end
132
+ stop_reason = event[:delta][:stop_reason]
133
+ @message[:stop_reason] = stop_reason unless stop_reason.nil?
134
+ in :message_stop
135
+ @stopped = true
136
+ else
137
+ nil
138
+ end
139
+ end
140
+
141
+ # The server ending the stream is the only end that sets a status here: `OK` after
142
+ # `message_stop`, and `api_error` before it, where the server cut the stream short.
143
+ def ended_by_server
144
+ # A second read of the stream ends at once, after the span.
145
+ return if @recorded
146
+
147
+ Tracing.recording("a streamed message") do
148
+ if @stopped
149
+ @span.status = OpenTelemetry::Trace::Status.ok
150
+ else
151
+ @span.status = OpenTelemetry::Trace::Status.error
152
+ @span.set_attribute(Anthropic::Internal::Tracing::ERROR_TYPE, "api_error")
153
+ end
154
+ end
155
+ end
156
+
157
+ # Only the first call does anything.
158
+ def set_attributes
159
+ return if @recorded
160
+
161
+ @recorded = true
162
+ Tracing.recording("a streamed message") do
163
+ unless @message.nil?
164
+ Anthropic::Internal::Tracing.set_response_attributes(
165
+ @span,
166
+ Anthropic::Internal::Tracing::SpanName::MESSAGES_CREATE,
167
+ @message
168
+ )
169
+ Tracing.set_computed_usage_attributes(@span, @message[:usage])
170
+ end
171
+ end
172
+ set_content
173
+ end
174
+
175
+ # The content of the request is written again with the output, so that the size bound counts both.
176
+ private def set_content
177
+ return if !@content || @snapshot.nil?
178
+
179
+ Tracing.recording("a streamed message") do
180
+ content = @snapshot.content
181
+ # The input of a tool use is the text of its JSON until its block ends, and `arguments` holds an object.
182
+ content = content&.map { _1[:input].is_a?(String) ? {**_1.to_h, input: {}} : _1 } unless @stopped
183
+ Tracing.set_message_content_attributes(@span, @params, content, limit: @content_limit)
184
+ end
185
+ end
186
+ end
187
+ end
188
+ end
189
+ end
@@ -0,0 +1,138 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Anthropic
4
+ module Helpers
5
+ module Tracing
6
+ class << self
7
+ # Returns `nil` when the client's spans are disabled, or when the span cannot start. A failure
8
+ # to read `params` is logged, and the span then starts without attributes.
9
+ #
10
+ # @param client [Anthropic::Client]
11
+ # @param params [Hash{Symbol=>Object}] the runner's, as the application gave them
12
+ #
13
+ # @return [OpenTelemetry::Trace::Span, nil]
14
+ def start_tool_runner_span(client, params)
15
+ tracer = client.open_telemetry_tracer
16
+ return nil if tracer.nil?
17
+
18
+ names = Anthropic::Internal::Tracing
19
+ attributes = recording("the tool runner") do
20
+ {
21
+ **client.open_telemetry_attributes,
22
+ names::GEN_AI_OPERATION_NAME => GEN_AI_OPERATION_NAME_VALUE_INVOKE_AGENT,
23
+ names::GEN_AI_REQUEST_MODEL => params[:model]&.to_s,
24
+ GEN_AI_CONVERSATION_ID => conversation_id(params[:request_options]),
25
+ GEN_AI_OUTPUT_TYPE => (GEN_AI_OUTPUT_TYPE_VALUE_JSON if json_output_format?(params))
26
+ }.compact
27
+ end
28
+ recording("the tool runner") do
29
+ tracer.start_span("anthropic.messages.tool_runner", kind: :internal, attributes: attributes)
30
+ end
31
+ end
32
+
33
+ # The status is `ERROR` for `error`, `OK` for a loop that returned, and unset when the
34
+ # application stopped the loop.
35
+ #
36
+ # @param span [OpenTelemetry::Trace::Span]
37
+ # @param returned [Boolean] whether the loop returned
38
+ # @param error [StandardError, nil] what the loop failed with
39
+ def end_tool_runner_span(span, returned:, error:)
40
+ recording("the tool runner") do
41
+ if error
42
+ Anthropic::Internal::Tracing.set_error_status(span, error)
43
+ elsif returned
44
+ span.status = OpenTelemetry::Trace::Status.ok
45
+ end
46
+ span.finish
47
+ end
48
+ end
49
+
50
+ # Returns `nil` when the client's spans are disabled, or when the span cannot start.
51
+ # {end_tool_use_span} ends the span.
52
+ #
53
+ # @param client [Anthropic::Client]
54
+ # @param tool [Anthropic::Helpers::Tools::BaseTool] the tool that runs
55
+ # @param tool_use [Anthropic::Models::Beta::BetaToolUseBlock]
56
+ # @param request_options [Anthropic::RequestOptions, Hash{Symbol=>Object}, nil]
57
+ #
58
+ # @return [OpenTelemetry::Trace::Span, nil]
59
+ def start_tool_use_span(client, tool, tool_use, request_options)
60
+ tracer = client.open_telemetry_tracer
61
+ return nil if tracer.nil?
62
+
63
+ mcp = tool.is_a?(Anthropic::Helpers::Tools::Mcp::Tool)
64
+ operation = mcp ? "anthropic.mcp_tool_use" : "anthropic.custom_tool_use"
65
+ attributes = {
66
+ **client.open_telemetry_attributes,
67
+ Anthropic::Internal::Tracing::GEN_AI_OPERATION_NAME => GEN_AI_OPERATION_NAME_VALUE_EXECUTE_TOOL,
68
+ GEN_AI_TOOL_NAME => tool_use.name,
69
+ GEN_AI_TOOL_CALL_ID => tool_use.id,
70
+ GEN_AI_TOOL_TYPE => GEN_AI_TOOL_TYPE_VALUE_FUNCTION
71
+ }
72
+ # Read as it is, so that a value of another type sets no attribute and raises nothing.
73
+ toolset_name = tool_use[:toolset_name]
74
+ attributes[ANTHROPIC_TOOLSET_NAME] = toolset_name if toolset_name.is_a?(String)
75
+ description = tool_description(tool)
76
+ attributes[GEN_AI_TOOL_DESCRIPTION] = description unless description.nil?
77
+ # Options that cannot be read set no ID, and do not fail the run.
78
+ id = begin
79
+ conversation_id(request_options)
80
+ rescue StandardError
81
+ nil
82
+ end
83
+ attributes[GEN_AI_CONVERSATION_ID] = id unless id.nil?
84
+ recording("the tool run") do
85
+ tracer.start_span(
86
+ "#{operation} #{tool_use.name}",
87
+ kind: :internal,
88
+ attributes: attributes
89
+ )
90
+ end
91
+ end
92
+
93
+ # `nil` for no description, an empty one, or one that is not text ({utf8_text}): it can come from
94
+ # an MCP server.
95
+ #
96
+ # @param tool [Anthropic::Helpers::Tools::BaseTool]
97
+ #
98
+ # @return [String, nil]
99
+ def tool_description(tool)
100
+ description = tool.class.doc_string
101
+ return nil unless description.is_a?(String) && !description.empty?
102
+
103
+ utf8_text(description)
104
+ end
105
+
106
+ # @param client [Anthropic::Client]
107
+ # @param span [OpenTelemetry::Trace::Span]
108
+ # @param input [Hash{Symbol=>Object}] the `input` of the `tool_use` block
109
+ # @param result [Hash{Symbol=>Object}, nil] the `tool_result` block, or `nil` for a run that was
110
+ # interrupted, which leaves the status unset
111
+ def end_tool_use_span(client, span, input, result)
112
+ recording("the tool run") do
113
+ next unless span.recording? && client.open_telemetry_content?
114
+
115
+ set_content_attributes(
116
+ span,
117
+ nil,
118
+ {
119
+ GEN_AI_TOOL_CALL_ARGUMENTS => input,
120
+ ANTHROPIC_TOOL_RESULT_CONTENT => (tool_result_content(result[:content]) unless result.nil?)
121
+ },
122
+ limit: client.open_telemetry_max_content_bytes
123
+ )
124
+ end
125
+ recording("the tool run") do
126
+ if result&.[](:is_error)
127
+ span.status = OpenTelemetry::Trace::Status.error
128
+ span.set_attribute(Anthropic::Internal::Tracing::ERROR_TYPE, "tool_error")
129
+ elsif result
130
+ span.status = OpenTelemetry::Trace::Status.ok
131
+ end
132
+ span.finish
133
+ end
134
+ end
135
+ end
136
+ end
137
+ end
138
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Anthropic
4
+ module Helpers
5
+ # @api private
6
+ #
7
+ # The span attributes that {Anthropic::Internal::Tracing} cannot take from its tables: the
8
+ # computed ones, the Message that a stream carries, and the content of requests and responses.
9
+ # The tool runner's two `INTERNAL` spans start and end here too.
10
+ module Tracing
11
+ end
12
+ end
13
+ end
@@ -43,6 +43,9 @@ module Anthropic
43
43
  # the Vertex URL rewrite and OAuth header happen inside the continuation, per
44
44
  # attempt.
45
45
  #
46
+ # @param open_telemetry [Hash{Symbol=>Object}, Boolean, nil] OpenTelemetry tracing of this
47
+ # client's API calls. See {Anthropic::Client#initialize}.
48
+ #
46
49
  def initialize(
47
50
  region: ENV["CLOUD_ML_REGION"],
48
51
  project_id: ENV["ANTHROPIC_VERTEX_PROJECT_ID"],
@@ -51,7 +54,8 @@ module Anthropic
51
54
  timeout: nil,
52
55
  initial_retry_delay: DEFAULT_INITIAL_RETRY_DELAY,
53
56
  max_retry_delay: DEFAULT_MAX_RETRY_DELAY,
54
- middleware: nil
57
+ middleware: nil,
58
+ open_telemetry: nil
55
59
  )
56
60
  begin
57
61
  require("googleauth")
@@ -111,7 +115,8 @@ module Anthropic
111
115
  max_retries: max_retries,
112
116
  initial_retry_delay: initial_retry_delay,
113
117
  max_retry_delay: max_retry_delay,
114
- middleware: middleware
118
+ middleware: middleware,
119
+ open_telemetry: open_telemetry
115
120
  )
116
121
 
117
122
  @messages = Anthropic::Resources::Messages.new(client: self)
@@ -184,6 +189,18 @@ module Anthropic
184
189
  super
185
190
  end
186
191
 
192
+ # @api private
193
+ #
194
+ # @return [Hash{String=>String}]
195
+ def open_telemetry_attributes
196
+ {**super, Anthropic::Internal::Tracing::GEN_AI_PROVIDER_NAME => "gcp.vertex_ai"}
197
+ end
198
+
199
+ # @api private
200
+ #
201
+ # @return [String]
202
+ private def open_telemetry_scope = "#{super}.vertex"
203
+
187
204
  # @api private
188
205
  #
189
206
  # The Vertex provider middleware: rewrites the canonical request into