anthropic 1.77.1 → 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 (724) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +42 -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/stream.rb +1 -1
  23. data/lib/anthropic/internal/tracing.rb +1118 -0
  24. data/lib/anthropic/internal/transport/base_client.rb +174 -10
  25. data/lib/anthropic/internal/transport/pooled_net_requester.rb +6 -0
  26. data/lib/anthropic/models/anthropic_beta.rb +3 -0
  27. data/lib/anthropic/models/beta/agent_create_params.rb +20 -9
  28. data/lib/anthropic/models/beta/agent_update_params.rb +20 -9
  29. data/lib/anthropic/models/beta/beta_dream_input.rb +2 -2
  30. data/lib/anthropic/models/beta/beta_fallbacks_param.rb +6 -2
  31. data/lib/anthropic/models/beta/beta_managed_agents_agent.rb +18 -9
  32. data/lib/anthropic/models/beta/beta_managed_agents_agent_tool_config_params.rb +8 -8
  33. data/lib/anthropic/models/beta/beta_managed_agents_agent_toolset_default_config.rb +2 -2
  34. data/lib/anthropic/models/beta/beta_managed_agents_agent_toolset_default_config_params.rb +2 -2
  35. data/lib/anthropic/models/beta/beta_managed_agents_agent_with_overrides_params.rb +6 -6
  36. data/lib/anthropic/models/beta/beta_managed_agents_aws_role_execution_identity.rb +29 -0
  37. data/lib/anthropic/models/beta/beta_managed_agents_aws_role_execution_identity_params.rb +34 -0
  38. data/lib/anthropic/models/beta/beta_managed_agents_bash_tool_config.rb +2 -2
  39. data/lib/anthropic/models/beta/beta_managed_agents_bash_tool_config_params.rb +2 -2
  40. data/lib/anthropic/models/beta/beta_managed_agents_deployment_initial_event.rb +3 -3
  41. data/lib/anthropic/models/beta/beta_managed_agents_deployment_initial_event_params.rb +3 -3
  42. data/lib/anthropic/models/beta/beta_managed_agents_deployment_paused_reason.rb +2 -2
  43. data/lib/anthropic/models/beta/beta_managed_agents_deployment_paused_reason_error.rb +38 -14
  44. data/lib/anthropic/models/beta/beta_managed_agents_deployment_run.rb +16 -16
  45. data/lib/anthropic/models/beta/beta_managed_agents_deployment_user_define_outcome_event.rb +2 -2
  46. data/lib/anthropic/models/beta/beta_managed_agents_deployment_user_message_event.rb +4 -4
  47. data/lib/anthropic/models/beta/beta_managed_agents_edit_tool_config.rb +2 -2
  48. data/lib/anthropic/models/beta/beta_managed_agents_edit_tool_config_params.rb +2 -2
  49. data/lib/anthropic/models/beta/beta_managed_agents_execution_identity.rb +57 -0
  50. data/lib/anthropic/models/beta/beta_managed_agents_execution_identity_params.rb +62 -0
  51. data/lib/anthropic/models/beta/beta_managed_agents_github_repository_resource_config.rb +2 -2
  52. data/lib/anthropic/models/beta/beta_managed_agents_github_repository_resource_params.rb +2 -2
  53. data/lib/anthropic/models/beta/beta_managed_agents_glob_tool_config.rb +2 -2
  54. data/lib/anthropic/models/beta/beta_managed_agents_glob_tool_config_params.rb +2 -2
  55. data/lib/anthropic/models/beta/beta_managed_agents_grep_tool_config.rb +2 -2
  56. data/lib/anthropic/models/beta/beta_managed_agents_grep_tool_config_params.rb +2 -2
  57. data/lib/anthropic/models/beta/beta_managed_agents_mcp_tool_config.rb +2 -2
  58. data/lib/anthropic/models/beta/beta_managed_agents_mcp_tool_config_params.rb +2 -2
  59. data/lib/anthropic/models/beta/beta_managed_agents_mcp_toolset_default_config.rb +2 -2
  60. data/lib/anthropic/models/beta/beta_managed_agents_mcp_toolset_default_config_params.rb +2 -2
  61. data/lib/anthropic/models/beta/beta_managed_agents_model.rb +0 -2
  62. data/lib/anthropic/models/beta/beta_managed_agents_model_config.rb +5 -5
  63. data/lib/anthropic/models/beta/beta_managed_agents_multiagent.rb +43 -73
  64. data/lib/anthropic/models/beta/beta_managed_agents_multiagent20261001.rb +46 -0
  65. data/lib/anthropic/models/beta/beta_managed_agents_multiagent20261001_params.rb +67 -0
  66. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_advisor.rb +57 -0
  67. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_advisor_disabled.rb +21 -0
  68. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_advisor_disabled_params.rb +21 -0
  69. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_advisor_enabled.rb +29 -0
  70. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_advisor_enabled_params.rb +34 -0
  71. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_advisor_params.rb +61 -0
  72. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_coordinator.rb +2 -2
  73. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_inline_agents.rb +57 -0
  74. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_inline_agents_disabled.rb +21 -0
  75. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_inline_agents_disabled_params.rb +22 -0
  76. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_inline_agents_enabled.rb +21 -0
  77. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_inline_agents_enabled_params.rb +22 -0
  78. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_inline_agents_params.rb +57 -0
  79. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_params.rb +44 -26
  80. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_predefined_agent_params.rb +27 -0
  81. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_subagents.rb +63 -0
  82. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_subagents_disabled.rb +21 -0
  83. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_subagents_disabled_params.rb +22 -0
  84. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_subagents_enabled.rb +44 -0
  85. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_subagents_enabled_params.rb +55 -0
  86. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_subagents_params.rb +63 -0
  87. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_workflows.rb +63 -0
  88. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_workflows_disabled.rb +21 -0
  89. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_workflows_disabled_params.rb +22 -0
  90. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_workflows_enabled.rb +43 -0
  91. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_workflows_enabled_params.rb +55 -0
  92. data/lib/anthropic/models/beta/beta_managed_agents_multiagent_workflows_params.rb +63 -0
  93. data/lib/anthropic/models/beta/beta_managed_agents_read_tool_config.rb +2 -2
  94. data/lib/anthropic/models/beta/beta_managed_agents_read_tool_config_params.rb +2 -2
  95. data/lib/anthropic/models/beta/beta_managed_agents_service_account_execution_identity.rb +21 -0
  96. data/lib/anthropic/models/beta/beta_managed_agents_service_account_execution_identity_params.rb +23 -0
  97. data/lib/anthropic/models/beta/beta_managed_agents_session_agent.rb +19 -13
  98. data/lib/anthropic/models/beta/beta_managed_agents_session_agent_update.rb +3 -3
  99. data/lib/anthropic/models/beta/beta_managed_agents_session_multiagent.rb +63 -0
  100. data/lib/anthropic/models/beta/beta_managed_agents_session_multiagent20261001.rb +46 -0
  101. data/lib/anthropic/models/beta/beta_managed_agents_session_multiagent_coordinator.rb +8 -2
  102. data/lib/anthropic/models/beta/beta_managed_agents_session_multiagent_subagents.rb +63 -0
  103. data/lib/anthropic/models/beta/beta_managed_agents_session_multiagent_subagents_enabled.rb +45 -0
  104. data/lib/anthropic/models/beta/beta_managed_agents_session_multiagent_workflows.rb +63 -0
  105. data/lib/anthropic/models/beta/beta_managed_agents_session_multiagent_workflows_enabled.rb +44 -0
  106. data/lib/anthropic/models/beta/beta_managed_agents_session_resource_config.rb +3 -3
  107. data/lib/anthropic/models/beta/beta_managed_agents_session_thread_agent.rb +19 -6
  108. data/lib/anthropic/models/beta/beta_managed_agents_skill_params.rb +2 -2
  109. data/lib/anthropic/models/beta/beta_managed_agents_start_event_preview.rb +2 -2
  110. data/lib/anthropic/models/beta/beta_managed_agents_trigger_context.rb +2 -2
  111. data/lib/anthropic/models/beta/beta_managed_agents_user_tool_result_event.rb +4 -4
  112. data/lib/anthropic/models/beta/beta_managed_agents_web_fetch_tool_config.rb +2 -2
  113. data/lib/anthropic/models/beta/beta_managed_agents_web_fetch_tool_config_params.rb +2 -2
  114. data/lib/anthropic/models/beta/beta_managed_agents_web_search_tool_config.rb +2 -2
  115. data/lib/anthropic/models/beta/beta_managed_agents_web_search_tool_config_params.rb +2 -2
  116. data/lib/anthropic/models/beta/beta_managed_agents_write_tool_config.rb +2 -2
  117. data/lib/anthropic/models/beta/beta_managed_agents_write_tool_config_params.rb +2 -2
  118. data/lib/anthropic/models/beta/beta_message_delta_usage.rb +0 -1
  119. data/lib/anthropic/models/beta/beta_output_behavior.rb +2 -2
  120. data/lib/anthropic/models/beta/beta_thinking_config_adaptive.rb +6 -4
  121. data/lib/anthropic/models/beta/beta_thinking_config_enabled.rb +6 -4
  122. data/lib/anthropic/models/beta/beta_thinking_config_param.rb +8 -7
  123. data/lib/anthropic/models/beta/beta_usage.rb +0 -1
  124. data/lib/anthropic/models/beta/deployment_create_params.rb +3 -3
  125. data/lib/anthropic/models/beta/deployment_update_params.rb +3 -3
  126. data/lib/anthropic/models/beta/memory_stores/beta_managed_agents_actor.rb +3 -3
  127. data/lib/anthropic/models/beta/memory_stores/beta_managed_agents_error.rb +6 -3
  128. data/lib/anthropic/models/beta/memory_stores/beta_managed_agents_memory_list_item.rb +2 -2
  129. data/lib/anthropic/models/beta/message_count_tokens_params.rb +15 -10
  130. data/lib/anthropic/models/beta/message_create_params.rb +21 -12
  131. data/lib/anthropic/models/beta/messages/batch_create_params.rb +21 -12
  132. data/lib/anthropic/models/beta/organization/analytics/artifact_list_params.rb +12 -10
  133. data/lib/anthropic/models/beta/organization/analytics/connector_list_params.rb +8 -6
  134. data/lib/anthropic/models/beta/organization/analytics/plugin_list_params.rb +15 -12
  135. data/lib/anthropic/models/beta/organization/analytics/skill_list_params.rb +10 -8
  136. data/lib/anthropic/models/beta/organization/analytics/user_list_params.rb +8 -4
  137. data/lib/anthropic/models/beta/organization/beta_analytics_artifact_activity.rb +9 -7
  138. data/lib/anthropic/models/beta/organization/beta_analytics_chat_cowork_unified_chat_metrics.rb +142 -0
  139. data/lib/anthropic/models/beta/organization/beta_analytics_chat_cowork_unified_sessions_metrics.rb +186 -0
  140. data/lib/anthropic/models/beta/organization/beta_analytics_connector_activity.rb +59 -8
  141. data/lib/anthropic/models/beta/organization/beta_analytics_connector_chat_cowork_unified_chat_metrics.rb +30 -0
  142. data/lib/anthropic/models/beta/organization/beta_analytics_connector_chat_cowork_unified_sessions_metrics.rb +30 -0
  143. data/lib/anthropic/models/beta/organization/beta_analytics_cost_bucketed_result.rb +10 -6
  144. data/lib/anthropic/models/beta/organization/beta_analytics_cost_users_item.rb +10 -6
  145. data/lib/anthropic/models/beta/organization/beta_analytics_plugin_activity.rb +52 -12
  146. data/lib/anthropic/models/beta/organization/beta_analytics_product_filter.rb +5 -1
  147. data/lib/anthropic/models/beta/organization/beta_analytics_project_activity.rb +9 -7
  148. data/lib/anthropic/models/beta/organization/beta_analytics_single_day_activity_summary.rb +31 -1
  149. data/lib/anthropic/models/beta/organization/beta_analytics_skill_activity.rb +57 -8
  150. data/lib/anthropic/models/beta/organization/beta_analytics_skill_chat_cowork_unified_chat_metrics.rb +30 -0
  151. data/lib/anthropic/models/beta/organization/beta_analytics_skill_chat_cowork_unified_sessions_metrics.rb +30 -0
  152. data/lib/anthropic/models/beta/organization/beta_analytics_usage_bucketed_result.rb +10 -6
  153. data/lib/anthropic/models/beta/organization/beta_analytics_usage_users_item.rb +10 -6
  154. data/lib/anthropic/models/beta/organization/beta_analytics_user_activity.rb +44 -1
  155. data/lib/anthropic/models/beta/organization/beta_deleted_telemetry_destination.rb +30 -0
  156. data/lib/anthropic/models/beta/organization/beta_spend_limit.rb +2 -2
  157. data/lib/anthropic/models/beta/organization/beta_telemetry_destination.rb +118 -0
  158. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_content_mode.rb +29 -0
  159. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_delivery_health.rb +69 -0
  160. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason.rb +73 -0
  161. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_caller.rb +21 -0
  162. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_invalid_address.rb +29 -0
  163. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_redirect.rb +23 -0
  164. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_sustained_failure.rb +25 -0
  165. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_state.rb +71 -0
  166. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_state_disabled.rb +36 -0
  167. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_state_disabled_params.rb +24 -0
  168. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_state_enabled.rb +21 -0
  169. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_state_enabled_params.rb +23 -0
  170. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_state_params.rb +61 -0
  171. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_test_failure.rb +37 -0
  172. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_test_response.rb +35 -0
  173. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_test_result.rb +61 -0
  174. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_test_success.rb +21 -0
  175. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_traces.rb +61 -0
  176. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_traces_params.rb +71 -0
  177. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces.rb +69 -0
  178. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_all.rb +23 -0
  179. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_all_params.rb +23 -0
  180. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_exclude.rb +22 -0
  181. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_exclude_params.rb +49 -0
  182. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_include.rb +21 -0
  183. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_include_params.rb +49 -0
  184. data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_params.rb +70 -0
  185. data/lib/anthropic/models/beta/organization/invite_create_params.rb +4 -2
  186. data/lib/anthropic/models/beta/organization/spend_limit_list_params.rb +2 -5
  187. data/lib/anthropic/models/beta/organization/telemetry_destination_create_params.rb +93 -0
  188. data/lib/anthropic/models/beta/organization/telemetry_destination_delete_params.rb +34 -0
  189. data/lib/anthropic/models/beta/organization/telemetry_destination_list_params.rb +62 -0
  190. data/lib/anthropic/models/beta/organization/telemetry_destination_retrieve_params.rb +34 -0
  191. data/lib/anthropic/models/beta/organization/telemetry_destination_test_params.rb +34 -0
  192. data/lib/anthropic/models/beta/organization/telemetry_destination_update_params.rb +120 -0
  193. data/lib/anthropic/models/beta/organization/telemetry_destinations/beta_deleted_telemetry_destination_workspace.rb +40 -0
  194. data/lib/anthropic/models/beta/organization/telemetry_destinations/beta_telemetry_destination_workspace.rb +52 -0
  195. data/lib/anthropic/models/beta/organization/telemetry_destinations/workspace_add_params.rb +44 -0
  196. data/lib/anthropic/models/beta/organization/telemetry_destinations/workspace_list_params.rb +57 -0
  197. data/lib/anthropic/models/beta/organization/telemetry_destinations/workspace_remove_params.rb +44 -0
  198. data/lib/anthropic/models/beta/organization/user_update_params.rb +4 -2
  199. data/lib/anthropic/models/beta/session_create_params.rb +5 -5
  200. data/lib/anthropic/models/beta/sessions/beta_managed_agents_agent_custom_tool_use_event.rb +3 -1
  201. data/lib/anthropic/models/beta/sessions/beta_managed_agents_agent_mcp_tool_result_event.rb +4 -4
  202. data/lib/anthropic/models/beta/sessions/beta_managed_agents_agent_message_event.rb +2 -2
  203. data/lib/anthropic/models/beta/sessions/beta_managed_agents_agent_thread_message_received_event.rb +4 -4
  204. data/lib/anthropic/models/beta/sessions/beta_managed_agents_agent_thread_message_sent_event.rb +4 -4
  205. data/lib/anthropic/models/beta/sessions/beta_managed_agents_agent_tool_result_event.rb +4 -4
  206. data/lib/anthropic/models/beta/sessions/beta_managed_agents_billing_error.rb +3 -3
  207. data/lib/anthropic/models/beta/sessions/beta_managed_agents_credential_host_unreachable_error.rb +3 -3
  208. data/lib/anthropic/models/beta/sessions/beta_managed_agents_document_block.rb +4 -4
  209. data/lib/anthropic/models/beta/sessions/beta_managed_agents_event_params.rb +14 -8
  210. data/lib/anthropic/models/beta/sessions/beta_managed_agents_github_repository_resource.rb +2 -2
  211. data/lib/anthropic/models/beta/sessions/beta_managed_agents_image_block.rb +3 -3
  212. data/lib/anthropic/models/beta/sessions/beta_managed_agents_inline_agent.rb +197 -0
  213. data/lib/anthropic/models/beta/sessions/beta_managed_agents_max_workflow_runs_workflow_run_error.rb +35 -0
  214. data/lib/anthropic/models/beta/sessions/beta_managed_agents_mcp_authentication_failed_error.rb +3 -3
  215. data/lib/anthropic/models/beta/sessions/beta_managed_agents_mcp_connection_failed_error.rb +3 -3
  216. data/lib/anthropic/models/beta/sessions/beta_managed_agents_model_overloaded_error.rb +3 -3
  217. data/lib/anthropic/models/beta/sessions/beta_managed_agents_model_rate_limited_error.rb +3 -3
  218. data/lib/anthropic/models/beta/sessions/beta_managed_agents_model_request_failed_error.rb +3 -3
  219. data/lib/anthropic/models/beta/sessions/beta_managed_agents_program_workflow_run_error.rb +34 -0
  220. data/lib/anthropic/models/beta/sessions/beta_managed_agents_repository_authentication_error.rb +3 -3
  221. data/lib/anthropic/models/beta/sessions/beta_managed_agents_repository_checkout_error.rb +3 -3
  222. data/lib/anthropic/models/beta/sessions/beta_managed_agents_repository_clone_error.rb +3 -3
  223. data/lib/anthropic/models/beta/sessions/beta_managed_agents_repository_forbidden_error.rb +3 -3
  224. data/lib/anthropic/models/beta/sessions/beta_managed_agents_repository_not_found_error.rb +3 -3
  225. data/lib/anthropic/models/beta/sessions/beta_managed_agents_send_session_events.rb +8 -8
  226. data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_error_event.rb +14 -8
  227. data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_event.rb +125 -42
  228. data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_event_type.rb +7 -0
  229. data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_resource.rb +3 -3
  230. data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_status_idle_event.rb +4 -4
  231. data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_thread.rb +29 -8
  232. data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_thread_created_event.rb +14 -1
  233. data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_thread_status_idle_event.rb +4 -4
  234. data/lib/anthropic/models/beta/sessions/beta_managed_agents_stream_session_events.rb +127 -44
  235. data/lib/anthropic/models/beta/sessions/beta_managed_agents_stream_session_thread_events.rb +127 -44
  236. data/lib/anthropic/models/beta/sessions/beta_managed_agents_thread_limit_workflow_run_error.rb +34 -0
  237. data/lib/anthropic/models/beta/sessions/beta_managed_agents_timeout_workflow_run_error.rb +34 -0
  238. data/lib/anthropic/models/beta/sessions/beta_managed_agents_unknown_error.rb +3 -3
  239. data/lib/anthropic/models/beta/sessions/beta_managed_agents_unknown_workflow_run_error.rb +34 -0
  240. data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_custom_tool_result_event.rb +7 -7
  241. data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_custom_tool_result_event_params.rb +7 -7
  242. data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_define_outcome_event.rb +2 -2
  243. data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_define_outcome_event_params.rb +2 -2
  244. data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_message_event.rb +4 -4
  245. data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_message_event_params.rb +4 -4
  246. data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_tool_result_event_params.rb +4 -4
  247. data/lib/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_created_event.rb +79 -0
  248. data/lib/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_error.rb +83 -0
  249. data/lib/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_error_event.rb +60 -0
  250. data/lib/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_phase.rb +43 -0
  251. data/lib/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_phase_ended_event.rb +70 -0
  252. data/lib/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_phase_started_event.rb +59 -0
  253. data/lib/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_result.rb +63 -0
  254. data/lib/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_result_completed.rb +22 -0
  255. data/lib/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_result_error.rb +29 -0
  256. data/lib/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_result_stopped.rb +21 -0
  257. data/lib/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_status_ended_event.rb +59 -0
  258. data/lib/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_status_idle_event.rb +52 -0
  259. data/lib/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_status_running_event.rb +52 -0
  260. data/lib/anthropic/models/beta/sessions/resource_retrieve_response.rb +3 -3
  261. data/lib/anthropic/models/beta/sessions/resource_update_response.rb +3 -3
  262. data/lib/anthropic/models/beta/sessions/thread_list_params.rb +13 -1
  263. data/lib/anthropic/models/beta/vaults/beta_managed_agents_credential.rb +6 -3
  264. data/lib/anthropic/models/beta/vaults/beta_managed_agents_credential_networking_params.rb +7 -2
  265. data/lib/anthropic/models/beta/vaults/beta_managed_agents_environment_variable_auth_response.rb +7 -2
  266. data/lib/anthropic/models/beta/vaults/beta_managed_agents_mcp_oauth_refresh_params.rb +3 -3
  267. data/lib/anthropic/models/beta/vaults/beta_managed_agents_mcp_oauth_refresh_response.rb +12 -3
  268. data/lib/anthropic/models/beta/vaults/beta_managed_agents_mcp_oauth_refresh_update_params.rb +8 -2
  269. data/lib/anthropic/models/beta/vaults/credential_create_params.rb +6 -3
  270. data/lib/anthropic/models/beta/vaults/credential_update_params.rb +6 -3
  271. data/lib/anthropic/models/message_count_tokens_params.rb +15 -10
  272. data/lib/anthropic/models/message_create_params.rb +15 -10
  273. data/lib/anthropic/models/messages/batch_create_params.rb +15 -10
  274. data/lib/anthropic/models/model.rb +0 -2
  275. data/lib/anthropic/models/organization/invite_create_params.rb +4 -2
  276. data/lib/anthropic/models/organization/user_update_params.rb +4 -2
  277. data/lib/anthropic/models/thinking_config_adaptive.rb +6 -4
  278. data/lib/anthropic/models/thinking_config_enabled.rb +6 -4
  279. data/lib/anthropic/models/thinking_config_param.rb +8 -7
  280. data/lib/anthropic/request_options.rb +7 -0
  281. data/lib/anthropic/resources/beta/agents/versions.rb +4 -0
  282. data/lib/anthropic/resources/beta/agents.rb +24 -4
  283. data/lib/anthropic/resources/beta/deployment_runs.rb +16 -0
  284. data/lib/anthropic/resources/beta/deployments.rb +24 -0
  285. data/lib/anthropic/resources/beta/dreams.rb +15 -0
  286. data/lib/anthropic/resources/beta/environments/work.rb +42 -0
  287. data/lib/anthropic/resources/beta/environments.rb +18 -0
  288. data/lib/anthropic/resources/beta/files.rb +15 -0
  289. data/lib/anthropic/resources/beta/memory_stores/memories.rb +31 -0
  290. data/lib/anthropic/resources/beta/memory_stores/memory_versions.rb +28 -0
  291. data/lib/anthropic/resources/beta/memory_stores.rb +18 -0
  292. data/lib/anthropic/resources/beta/messages/batches.rb +19 -1
  293. data/lib/anthropic/resources/beta/messages.rb +12 -4
  294. data/lib/anthropic/resources/beta/models.rb +6 -0
  295. data/lib/anthropic/resources/beta/organization/analytics/apps/chat/projects.rb +3 -0
  296. data/lib/anthropic/resources/beta/organization/analytics/artifacts.rb +3 -0
  297. data/lib/anthropic/resources/beta/organization/analytics/connectors.rb +4 -0
  298. data/lib/anthropic/resources/beta/organization/analytics/cost_report.rb +20 -0
  299. data/lib/anthropic/resources/beta/organization/analytics/plugins.rb +4 -0
  300. data/lib/anthropic/resources/beta/organization/analytics/skills.rb +4 -0
  301. data/lib/anthropic/resources/beta/organization/analytics/summaries.rb +3 -0
  302. data/lib/anthropic/resources/beta/organization/analytics/usage_report.rb +20 -0
  303. data/lib/anthropic/resources/beta/organization/analytics/user_cost_report.rb +23 -0
  304. data/lib/anthropic/resources/beta/organization/analytics/user_usage_report.rb +23 -0
  305. data/lib/anthropic/resources/beta/organization/analytics/users.rb +4 -0
  306. data/lib/anthropic/resources/beta/organization/api_keys.rb +9 -0
  307. data/lib/anthropic/resources/beta/organization/compliance_settings.rb +4 -0
  308. data/lib/anthropic/resources/beta/organization/external_keys.rb +18 -0
  309. data/lib/anthropic/resources/beta/organization/federation/issuers.rb +15 -0
  310. data/lib/anthropic/resources/beta/organization/federation/rules/workspaces.rb +14 -0
  311. data/lib/anthropic/resources/beta/organization/federation/rules.rb +15 -0
  312. data/lib/anthropic/resources/beta/organization/invites.rb +12 -0
  313. data/lib/anthropic/resources/beta/organization/plugin_marketplaces.rb +14 -0
  314. data/lib/anthropic/resources/beta/organization/plugins/installation_settings.rb +16 -0
  315. data/lib/anthropic/resources/beta/organization/plugins/shares.rb +4 -0
  316. data/lib/anthropic/resources/beta/organization/plugins/versions.rb +22 -0
  317. data/lib/anthropic/resources/beta/organization/plugins.rb +27 -0
  318. data/lib/anthropic/resources/beta/organization/rate_limits.rb +3 -0
  319. data/lib/anthropic/resources/beta/organization/rbac_groups/members.rb +14 -0
  320. data/lib/anthropic/resources/beta/organization/rbac_groups.rb +15 -0
  321. data/lib/anthropic/resources/beta/organization/rbac_roles/permissions.rb +4 -0
  322. data/lib/anthropic/resources/beta/organization/rbac_roles.rb +6 -0
  323. data/lib/anthropic/resources/beta/organization/service_accounts/workspaces.rb +14 -0
  324. data/lib/anthropic/resources/beta/organization/service_accounts.rb +15 -0
  325. data/lib/anthropic/resources/beta/organization/spend_limits/effective.rb +5 -2
  326. data/lib/anthropic/resources/beta/organization/spend_limits/increase_requests.rb +12 -0
  327. data/lib/anthropic/resources/beta/organization/spend_limits.rb +17 -7
  328. data/lib/anthropic/resources/beta/organization/telemetry_destinations/workspaces.rb +173 -0
  329. data/lib/anthropic/resources/beta/organization/telemetry_destinations.rb +274 -0
  330. data/lib/anthropic/resources/beta/organization/users.rb +12 -0
  331. data/lib/anthropic/resources/beta/organization/workspaces/members.rb +26 -0
  332. data/lib/anthropic/resources/beta/organization/workspaces/rate_limits.rb +4 -0
  333. data/lib/anthropic/resources/beta/organization/workspaces/service_accounts.rb +26 -0
  334. data/lib/anthropic/resources/beta/organization/workspaces.rb +15 -0
  335. data/lib/anthropic/resources/beta/organization.rb +7 -0
  336. data/lib/anthropic/resources/beta/sessions/events.rb +22 -2
  337. data/lib/anthropic/resources/beta/sessions/resources.rb +26 -0
  338. data/lib/anthropic/resources/beta/sessions/threads/events.rb +16 -2
  339. data/lib/anthropic/resources/beta/sessions/threads.rb +20 -2
  340. data/lib/anthropic/resources/beta/sessions.rb +32 -0
  341. data/lib/anthropic/resources/beta/skills/versions.rb +17 -0
  342. data/lib/anthropic/resources/beta/skills.rb +12 -0
  343. data/lib/anthropic/resources/beta/tunnels/certificates.rb +20 -0
  344. data/lib/anthropic/resources/beta/tunnels.rb +18 -0
  345. data/lib/anthropic/resources/beta/user_profiles.rb +15 -0
  346. data/lib/anthropic/resources/beta/vaults/credentials.rb +38 -0
  347. data/lib/anthropic/resources/beta/vaults.rb +18 -0
  348. data/lib/anthropic/resources/completions.rb +5 -1
  349. data/lib/anthropic/resources/files.rb +15 -0
  350. data/lib/anthropic/resources/messages/batches.rb +19 -1
  351. data/lib/anthropic/resources/messages.rb +12 -4
  352. data/lib/anthropic/resources/models.rb +6 -0
  353. data/lib/anthropic/resources/organization/api_keys.rb +9 -0
  354. data/lib/anthropic/resources/organization/compliance_settings.rb +4 -0
  355. data/lib/anthropic/resources/organization/external_keys.rb +18 -0
  356. data/lib/anthropic/resources/organization/federation/issuers.rb +15 -0
  357. data/lib/anthropic/resources/organization/federation/rules/workspaces.rb +14 -0
  358. data/lib/anthropic/resources/organization/federation/rules.rb +15 -0
  359. data/lib/anthropic/resources/organization/invites.rb +12 -0
  360. data/lib/anthropic/resources/organization/rate_limits.rb +3 -0
  361. data/lib/anthropic/resources/organization/service_accounts/workspaces.rb +14 -0
  362. data/lib/anthropic/resources/organization/service_accounts.rb +15 -0
  363. data/lib/anthropic/resources/organization/users.rb +12 -0
  364. data/lib/anthropic/resources/organization/workspaces/members.rb +26 -0
  365. data/lib/anthropic/resources/organization/workspaces/rate_limits.rb +4 -0
  366. data/lib/anthropic/resources/organization/workspaces/service_accounts.rb +26 -0
  367. data/lib/anthropic/resources/organization/workspaces.rb +15 -0
  368. data/lib/anthropic/resources/organization.rb +2 -0
  369. data/lib/anthropic/resources/skills/versions.rb +14 -0
  370. data/lib/anthropic/resources/skills.rb +12 -0
  371. data/lib/anthropic/version.rb +1 -1
  372. data/lib/anthropic.rb +116 -0
  373. data/rbi/anthropic/client.rbi +28 -0
  374. data/rbi/anthropic/helpers/aws/client.rbi +6 -2
  375. data/rbi/anthropic/helpers/bedrock/client.rbi +6 -2
  376. data/rbi/anthropic/helpers/bedrock/mantle_client.rbi +6 -2
  377. data/rbi/anthropic/helpers/google_cloud/client.rbi +6 -2
  378. data/rbi/anthropic/helpers/streaming/message_stream.rbi +4 -1
  379. data/rbi/anthropic/helpers/vertex/client.rbi +6 -2
  380. data/rbi/anthropic/internal/tracing.rbi +847 -0
  381. data/rbi/anthropic/internal/transport/base_client.rbi +93 -5
  382. data/rbi/anthropic/internal/type/base_stream.rbi +2 -0
  383. data/rbi/anthropic/models/anthropic_beta.rbi +5 -0
  384. data/rbi/anthropic/models/beta/agent_create_params.rbi +52 -16
  385. data/rbi/anthropic/models/beta/agent_update_params.rbi +52 -16
  386. data/rbi/anthropic/models/beta/beta_fallback_param.rbi +3 -2
  387. data/rbi/anthropic/models/beta/beta_fallbacks_param.rbi +6 -2
  388. data/rbi/anthropic/models/beta/beta_managed_agents_agent.rbi +30 -10
  389. data/rbi/anthropic/models/beta/beta_managed_agents_agent_with_overrides_params.rbi +3 -3
  390. data/rbi/anthropic/models/beta/beta_managed_agents_aws_role_execution_identity.rbi +40 -0
  391. data/rbi/anthropic/models/beta/beta_managed_agents_aws_role_execution_identity_params.rbi +42 -0
  392. data/rbi/anthropic/models/beta/beta_managed_agents_execution_identity.rbi +85 -0
  393. data/rbi/anthropic/models/beta/beta_managed_agents_execution_identity_params.rbi +87 -0
  394. data/rbi/anthropic/models/beta/beta_managed_agents_model.rbi +0 -2
  395. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent.rbi +63 -137
  396. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent20261001.rbi +94 -0
  397. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent20261001_params.rbi +142 -0
  398. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_advisor.rbi +85 -0
  399. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_advisor_disabled.rbi +32 -0
  400. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_advisor_disabled_params.rbi +32 -0
  401. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_advisor_enabled.rbi +40 -0
  402. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_advisor_enabled_params.rbi +42 -0
  403. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_advisor_params.rbi +86 -0
  404. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_coordinator.rbi +4 -10
  405. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_inline_agents.rbi +82 -0
  406. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_inline_agents_disabled.rbi +32 -0
  407. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_inline_agents_disabled_params.rbi +32 -0
  408. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_inline_agents_enabled.rbi +32 -0
  409. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_inline_agents_enabled_params.rbi +32 -0
  410. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_inline_agents_params.rbi +82 -0
  411. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_params.rbi +81 -79
  412. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_predefined_agent_params.rbi +36 -0
  413. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_subagents.rbi +95 -0
  414. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_subagents_disabled.rbi +32 -0
  415. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_subagents_disabled_params.rbi +32 -0
  416. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_subagents_enabled.rbi +79 -0
  417. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_subagents_enabled_params.rbi +122 -0
  418. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_subagents_params.rbi +107 -0
  419. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_workflows.rbi +94 -0
  420. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_workflows_disabled.rbi +32 -0
  421. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_workflows_disabled_params.rbi +32 -0
  422. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_workflows_enabled.rbi +77 -0
  423. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_workflows_enabled_params.rbi +121 -0
  424. data/rbi/anthropic/models/beta/beta_managed_agents_multiagent_workflows_params.rbi +106 -0
  425. data/rbi/anthropic/models/beta/beta_managed_agents_service_account_execution_identity.rbi +32 -0
  426. data/rbi/anthropic/models/beta/beta_managed_agents_service_account_execution_identity_params.rbi +33 -0
  427. data/rbi/anthropic/models/beta/beta_managed_agents_session_agent.rbi +26 -14
  428. data/rbi/anthropic/models/beta/beta_managed_agents_session_multiagent.rbi +112 -0
  429. data/rbi/anthropic/models/beta/beta_managed_agents_session_multiagent20261001.rbi +94 -0
  430. data/rbi/anthropic/models/beta/beta_managed_agents_session_multiagent_coordinator.rbi +9 -0
  431. data/rbi/anthropic/models/beta/beta_managed_agents_session_multiagent_subagents.rbi +97 -0
  432. data/rbi/anthropic/models/beta/beta_managed_agents_session_multiagent_subagents_enabled.rbi +81 -0
  433. data/rbi/anthropic/models/beta/beta_managed_agents_session_multiagent_workflows.rbi +96 -0
  434. data/rbi/anthropic/models/beta/beta_managed_agents_session_multiagent_workflows_enabled.rbi +79 -0
  435. data/rbi/anthropic/models/beta/beta_managed_agents_session_thread_agent.rbi +19 -0
  436. data/rbi/anthropic/models/beta/beta_message_delta_usage.rbi +0 -2
  437. data/rbi/anthropic/models/beta/beta_thinking_config_adaptive.rbi +9 -6
  438. data/rbi/anthropic/models/beta/beta_thinking_config_enabled.rbi +9 -6
  439. data/rbi/anthropic/models/beta/beta_thinking_config_param.rbi +11 -9
  440. data/rbi/anthropic/models/beta/beta_usage.rbi +0 -2
  441. data/rbi/anthropic/models/beta/message_count_tokens_params.rbi +28 -18
  442. data/rbi/anthropic/models/beta/message_create_params.rbi +40 -22
  443. data/rbi/anthropic/models/beta/messages/batch_create_params.rbi +40 -22
  444. data/rbi/anthropic/models/beta/organization/analytics/artifact_list_params.rbi +24 -20
  445. data/rbi/anthropic/models/beta/organization/analytics/connector_list_params.rbi +16 -12
  446. data/rbi/anthropic/models/beta/organization/analytics/plugin_list_params.rbi +30 -24
  447. data/rbi/anthropic/models/beta/organization/analytics/skill_list_params.rbi +20 -16
  448. data/rbi/anthropic/models/beta/organization/analytics/user_list_params.rbi +16 -8
  449. data/rbi/anthropic/models/beta/organization/beta_analytics_artifact_activity.rbi +18 -14
  450. data/rbi/anthropic/models/beta/organization/beta_analytics_chat_cowork_unified_chat_metrics.rbi +189 -0
  451. data/rbi/anthropic/models/beta/organization/beta_analytics_chat_cowork_unified_sessions_metrics.rbi +236 -0
  452. data/rbi/anthropic/models/beta/organization/beta_analytics_connector_activity.rbi +136 -14
  453. data/rbi/anthropic/models/beta/organization/beta_analytics_connector_chat_cowork_unified_chat_metrics.rbi +50 -0
  454. data/rbi/anthropic/models/beta/organization/beta_analytics_connector_chat_cowork_unified_sessions_metrics.rbi +50 -0
  455. data/rbi/anthropic/models/beta/organization/beta_analytics_cost_bucketed_result.rbi +20 -12
  456. data/rbi/anthropic/models/beta/organization/beta_analytics_cost_users_item.rbi +20 -12
  457. data/rbi/anthropic/models/beta/organization/beta_analytics_plugin_activity.rbi +99 -18
  458. data/rbi/anthropic/models/beta/organization/beta_analytics_product_filter.rbi +9 -1
  459. data/rbi/anthropic/models/beta/organization/beta_analytics_project_activity.rbi +18 -14
  460. data/rbi/anthropic/models/beta/organization/beta_analytics_single_day_activity_summary.rbi +38 -0
  461. data/rbi/anthropic/models/beta/organization/beta_analytics_skill_activity.rbi +136 -14
  462. data/rbi/anthropic/models/beta/organization/beta_analytics_skill_chat_cowork_unified_chat_metrics.rbi +50 -0
  463. data/rbi/anthropic/models/beta/organization/beta_analytics_skill_chat_cowork_unified_sessions_metrics.rbi +50 -0
  464. data/rbi/anthropic/models/beta/organization/beta_analytics_usage_bucketed_result.rbi +20 -12
  465. data/rbi/anthropic/models/beta/organization/beta_analytics_usage_users_item.rbi +20 -12
  466. data/rbi/anthropic/models/beta/organization/beta_analytics_user_activity.rbi +113 -0
  467. data/rbi/anthropic/models/beta/organization/beta_deleted_telemetry_destination.rbi +39 -0
  468. data/rbi/anthropic/models/beta/organization/beta_spend_limit.rbi +4 -4
  469. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination.rbi +191 -0
  470. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_content_mode.rbi +53 -0
  471. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_delivery_health.rbi +106 -0
  472. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason.rbi +95 -0
  473. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_caller.rbi +31 -0
  474. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_invalid_address.rbi +39 -0
  475. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_redirect.rbi +33 -0
  476. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_sustained_failure.rbi +35 -0
  477. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_state.rbi +99 -0
  478. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_state_disabled.rbi +66 -0
  479. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_state_disabled_params.rbi +34 -0
  480. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_state_enabled.rbi +31 -0
  481. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_state_enabled_params.rbi +33 -0
  482. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_state_params.rbi +81 -0
  483. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_test_failure.rbi +47 -0
  484. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_test_response.rbi +62 -0
  485. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_test_result.rbi +88 -0
  486. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_test_success.rbi +31 -0
  487. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_traces.rbi +97 -0
  488. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_traces_params.rbi +120 -0
  489. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces.rbi +93 -0
  490. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_all.rbi +33 -0
  491. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_all_params.rbi +33 -0
  492. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_exclude.rbi +32 -0
  493. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_exclude_params.rbi +80 -0
  494. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_include.rbi +31 -0
  495. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_include_params.rbi +80 -0
  496. data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_params.rbi +107 -0
  497. data/rbi/anthropic/models/beta/organization/invite_create_params.rbi +6 -3
  498. data/rbi/anthropic/models/beta/organization/spend_limit_list_params.rbi +2 -8
  499. data/rbi/anthropic/models/beta/organization/telemetry_destination_create_params.rbi +186 -0
  500. data/rbi/anthropic/models/beta/organization/telemetry_destination_delete_params.rbi +73 -0
  501. data/rbi/anthropic/models/beta/organization/telemetry_destination_list_params.rbi +114 -0
  502. data/rbi/anthropic/models/beta/organization/telemetry_destination_retrieve_params.rbi +73 -0
  503. data/rbi/anthropic/models/beta/organization/telemetry_destination_test_params.rbi +73 -0
  504. data/rbi/anthropic/models/beta/organization/telemetry_destination_update_params.rbi +264 -0
  505. data/rbi/anthropic/models/beta/organization/telemetry_destinations/beta_deleted_telemetry_destination_workspace.rbi +61 -0
  506. data/rbi/anthropic/models/beta/organization/telemetry_destinations/beta_telemetry_destination_workspace.rbi +73 -0
  507. data/rbi/anthropic/models/beta/organization/telemetry_destinations/workspace_add_params.rbi +84 -0
  508. data/rbi/anthropic/models/beta/organization/telemetry_destinations/workspace_list_params.rbi +100 -0
  509. data/rbi/anthropic/models/beta/organization/telemetry_destinations/workspace_remove_params.rbi +84 -0
  510. data/rbi/anthropic/models/beta/organization/user_update_params.rbi +6 -3
  511. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_agent_custom_tool_use_event.rbi +3 -1
  512. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_event_params.rbi +2 -2
  513. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_inline_agent.rbi +342 -0
  514. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_max_workflow_runs_workflow_run_error.rbi +44 -0
  515. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_program_workflow_run_error.rbi +43 -0
  516. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_send_session_events.rbi +2 -2
  517. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_session_event.rbi +94 -20
  518. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_session_event_type.rbi +35 -0
  519. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_session_thread.rbi +32 -5
  520. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_session_thread_created_event.rbi +13 -3
  521. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_stream_session_events.rbi +94 -20
  522. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_stream_session_thread_events.rbi +94 -20
  523. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_thread_limit_workflow_run_error.rbi +43 -0
  524. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_timeout_workflow_run_error.rbi +43 -0
  525. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_unknown_workflow_run_error.rbi +43 -0
  526. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_user_custom_tool_result_event.rbi +4 -4
  527. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_user_custom_tool_result_event_params.rbi +4 -4
  528. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_created_event.rbi +111 -0
  529. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_error.rbi +105 -0
  530. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_error_event.rbi +91 -0
  531. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_phase.rbi +59 -0
  532. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_phase_ended_event.rbi +90 -0
  533. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_phase_started_event.rbi +79 -0
  534. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_result.rbi +97 -0
  535. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_result_completed.rbi +32 -0
  536. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_result_error.rbi +63 -0
  537. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_result_stopped.rbi +31 -0
  538. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_status_ended_event.rbi +88 -0
  539. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_status_idle_event.rbi +71 -0
  540. data/rbi/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_status_running_event.rbi +71 -0
  541. data/rbi/anthropic/models/beta/sessions/thread_list_params.rbi +38 -0
  542. data/rbi/anthropic/models/message_count_tokens_params.rbi +28 -18
  543. data/rbi/anthropic/models/message_create_params.rbi +28 -18
  544. data/rbi/anthropic/models/messages/batch_create_params.rbi +28 -18
  545. data/rbi/anthropic/models/model.rbi +0 -2
  546. data/rbi/anthropic/models/organization/invite_create_params.rbi +6 -3
  547. data/rbi/anthropic/models/organization/user_update_params.rbi +6 -3
  548. data/rbi/anthropic/models/thinking_config_adaptive.rbi +9 -6
  549. data/rbi/anthropic/models/thinking_config_enabled.rbi +9 -6
  550. data/rbi/anthropic/models/thinking_config_param.rbi +11 -9
  551. data/rbi/anthropic/request_options.rbi +5 -0
  552. data/rbi/anthropic/resources/beta/agents.rbi +30 -4
  553. data/rbi/anthropic/resources/beta/messages/batches.rbi +2 -1
  554. data/rbi/anthropic/resources/beta/messages.rbi +56 -32
  555. data/rbi/anthropic/resources/beta/organization/analytics/artifacts.rbi +12 -10
  556. data/rbi/anthropic/resources/beta/organization/analytics/connectors.rbi +8 -6
  557. data/rbi/anthropic/resources/beta/organization/analytics/plugins.rbi +15 -12
  558. data/rbi/anthropic/resources/beta/organization/analytics/skills.rbi +10 -8
  559. data/rbi/anthropic/resources/beta/organization/analytics/users.rbi +8 -4
  560. data/rbi/anthropic/resources/beta/organization/invites.rbi +2 -1
  561. data/rbi/anthropic/resources/beta/organization/spend_limits/effective.rbi +2 -2
  562. data/rbi/anthropic/resources/beta/organization/spend_limits.rbi +5 -10
  563. data/rbi/anthropic/resources/beta/organization/telemetry_destinations/workspaces.rbi +124 -0
  564. data/rbi/anthropic/resources/beta/organization/telemetry_destinations.rbi +300 -0
  565. data/rbi/anthropic/resources/beta/organization/users.rbi +2 -1
  566. data/rbi/anthropic/resources/beta/organization.rbi +7 -0
  567. data/rbi/anthropic/resources/beta/sessions/events.rbi +2 -1
  568. data/rbi/anthropic/resources/beta/sessions/threads/events.rbi +2 -1
  569. data/rbi/anthropic/resources/beta/sessions/threads.rbi +9 -0
  570. data/rbi/anthropic/resources/completions.rbi +6 -1
  571. data/rbi/anthropic/resources/messages/batches.rbi +2 -1
  572. data/rbi/anthropic/resources/messages.rbi +44 -28
  573. data/rbi/anthropic/resources/organization/invites.rbi +2 -1
  574. data/rbi/anthropic/resources/organization/users.rbi +2 -1
  575. data/sig/anthropic/client.rbs +1 -0
  576. data/sig/anthropic/helpers/bedrock/client.rbs +2 -1
  577. data/sig/anthropic/helpers/google_cloud/client.rbs +2 -1
  578. data/sig/anthropic/helpers/streaming/message_stream.rbs +2 -2
  579. data/sig/anthropic/helpers/vertex/client.rbs +2 -1
  580. data/sig/anthropic/internal/tracing.rbs +477 -0
  581. data/sig/anthropic/internal/transport/base_client.rbs +37 -2
  582. data/sig/anthropic/internal/type/base_stream.rbs +1 -1
  583. data/sig/anthropic/models/anthropic_beta.rbs +2 -0
  584. data/sig/anthropic/models/beta/agent_create_params.rbs +9 -4
  585. data/sig/anthropic/models/beta/agent_update_params.rbs +9 -4
  586. data/sig/anthropic/models/beta/beta_managed_agents_agent.rbs +9 -4
  587. data/sig/anthropic/models/beta/beta_managed_agents_aws_role_execution_identity.rbs +20 -0
  588. data/sig/anthropic/models/beta/beta_managed_agents_aws_role_execution_identity_params.rbs +20 -0
  589. data/sig/anthropic/models/beta/beta_managed_agents_execution_identity.rbs +42 -0
  590. data/sig/anthropic/models/beta/beta_managed_agents_execution_identity_params.rbs +42 -0
  591. data/sig/anthropic/models/beta/beta_managed_agents_model.rbs +0 -2
  592. data/sig/anthropic/models/beta/beta_managed_agents_multiagent.rbs +29 -59
  593. data/sig/anthropic/models/beta/beta_managed_agents_multiagent20261001.rbs +39 -0
  594. data/sig/anthropic/models/beta/beta_managed_agents_multiagent20261001_params.rbs +39 -0
  595. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_advisor.rbs +42 -0
  596. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_advisor_disabled.rbs +17 -0
  597. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_advisor_disabled_params.rbs +18 -0
  598. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_advisor_enabled.rbs +20 -0
  599. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_advisor_enabled_params.rbs +20 -0
  600. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_advisor_params.rbs +42 -0
  601. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_inline_agents.rbs +40 -0
  602. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_inline_agents_disabled.rbs +18 -0
  603. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_inline_agents_disabled_params.rbs +18 -0
  604. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_inline_agents_enabled.rbs +18 -0
  605. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_inline_agents_enabled_params.rbs +18 -0
  606. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_inline_agents_params.rbs +40 -0
  607. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_params.rbs +29 -20
  608. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_predefined_agent_params.rbs +18 -0
  609. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_subagents.rbs +44 -0
  610. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_subagents_disabled.rbs +18 -0
  611. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_subagents_disabled_params.rbs +18 -0
  612. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_subagents_enabled.rbs +34 -0
  613. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_subagents_enabled_params.rbs +34 -0
  614. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_subagents_params.rbs +44 -0
  615. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_workflows.rbs +44 -0
  616. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_workflows_disabled.rbs +18 -0
  617. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_workflows_disabled_params.rbs +18 -0
  618. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_workflows_enabled.rbs +34 -0
  619. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_workflows_enabled_params.rbs +34 -0
  620. data/sig/anthropic/models/beta/beta_managed_agents_multiagent_workflows_params.rbs +44 -0
  621. data/sig/anthropic/models/beta/beta_managed_agents_service_account_execution_identity.rbs +18 -0
  622. data/sig/anthropic/models/beta/beta_managed_agents_service_account_execution_identity_params.rbs +18 -0
  623. data/sig/anthropic/models/beta/beta_managed_agents_session_agent.rbs +9 -4
  624. data/sig/anthropic/models/beta/beta_managed_agents_session_multiagent.rbs +48 -0
  625. data/sig/anthropic/models/beta/beta_managed_agents_session_multiagent20261001.rbs +39 -0
  626. data/sig/anthropic/models/beta/beta_managed_agents_session_multiagent_coordinator.rbs +2 -0
  627. data/sig/anthropic/models/beta/beta_managed_agents_session_multiagent_subagents.rbs +44 -0
  628. data/sig/anthropic/models/beta/beta_managed_agents_session_multiagent_subagents_enabled.rbs +34 -0
  629. data/sig/anthropic/models/beta/beta_managed_agents_session_multiagent_workflows.rbs +44 -0
  630. data/sig/anthropic/models/beta/beta_managed_agents_session_multiagent_workflows_enabled.rbs +34 -0
  631. data/sig/anthropic/models/beta/beta_managed_agents_session_thread_agent.rbs +5 -0
  632. data/sig/anthropic/models/beta/organization/beta_analytics_chat_cowork_unified_chat_metrics.rbs +79 -0
  633. data/sig/anthropic/models/beta/organization/beta_analytics_chat_cowork_unified_sessions_metrics.rbs +104 -0
  634. data/sig/anthropic/models/beta/organization/beta_analytics_connector_activity.rbs +27 -0
  635. data/sig/anthropic/models/beta/organization/beta_analytics_connector_chat_cowork_unified_chat_metrics.rbs +22 -0
  636. data/sig/anthropic/models/beta/organization/beta_analytics_connector_chat_cowork_unified_sessions_metrics.rbs +20 -0
  637. data/sig/anthropic/models/beta/organization/beta_analytics_plugin_activity.rbs +18 -0
  638. data/sig/anthropic/models/beta/organization/beta_analytics_product_filter.rbs +2 -0
  639. data/sig/anthropic/models/beta/organization/beta_analytics_single_day_activity_summary.rbs +15 -0
  640. data/sig/anthropic/models/beta/organization/beta_analytics_skill_activity.rbs +27 -0
  641. data/sig/anthropic/models/beta/organization/beta_analytics_skill_chat_cowork_unified_chat_metrics.rbs +20 -0
  642. data/sig/anthropic/models/beta/organization/beta_analytics_skill_chat_cowork_unified_sessions_metrics.rbs +18 -0
  643. data/sig/anthropic/models/beta/organization/beta_analytics_user_activity.rbs +27 -0
  644. data/sig/anthropic/models/beta/organization/beta_deleted_telemetry_destination.rbs +23 -0
  645. data/sig/anthropic/models/beta/organization/beta_telemetry_destination.rbs +74 -0
  646. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_content_mode.rbs +23 -0
  647. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_delivery_health.rbs +30 -0
  648. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason.rbs +51 -0
  649. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_caller.rbs +18 -0
  650. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_invalid_address.rbs +18 -0
  651. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_redirect.rbs +18 -0
  652. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_sustained_failure.rbs +18 -0
  653. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_state.rbs +42 -0
  654. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_state_disabled.rbs +29 -0
  655. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_state_disabled_params.rbs +18 -0
  656. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_state_enabled.rbs +17 -0
  657. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_state_enabled_params.rbs +18 -0
  658. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_state_params.rbs +40 -0
  659. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_test_failure.rbs +20 -0
  660. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_test_response.rbs +29 -0
  661. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_test_result.rbs +42 -0
  662. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_test_success.rbs +17 -0
  663. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_traces.rbs +39 -0
  664. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_traces_params.rbs +41 -0
  665. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces.rbs +45 -0
  666. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_all.rbs +17 -0
  667. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_all_params.rbs +17 -0
  668. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_exclude.rbs +17 -0
  669. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_exclude_params.rbs +25 -0
  670. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_include.rbs +17 -0
  671. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_include_params.rbs +25 -0
  672. data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_params.rbs +48 -0
  673. data/sig/anthropic/models/beta/organization/telemetry_destination_create_params.rbs +65 -0
  674. data/sig/anthropic/models/beta/organization/telemetry_destination_delete_params.rbs +39 -0
  675. data/sig/anthropic/models/beta/organization/telemetry_destination_list_params.rbs +55 -0
  676. data/sig/anthropic/models/beta/organization/telemetry_destination_retrieve_params.rbs +39 -0
  677. data/sig/anthropic/models/beta/organization/telemetry_destination_test_params.rbs +39 -0
  678. data/sig/anthropic/models/beta/organization/telemetry_destination_update_params.rbs +79 -0
  679. data/sig/anthropic/models/beta/organization/telemetry_destinations/beta_deleted_telemetry_destination_workspace.rbs +36 -0
  680. data/sig/anthropic/models/beta/organization/telemetry_destinations/beta_telemetry_destination_workspace.rbs +41 -0
  681. data/sig/anthropic/models/beta/organization/telemetry_destinations/workspace_add_params.rbs +46 -0
  682. data/sig/anthropic/models/beta/organization/telemetry_destinations/workspace_list_params.rbs +55 -0
  683. data/sig/anthropic/models/beta/organization/telemetry_destinations/workspace_remove_params.rbs +46 -0
  684. data/sig/anthropic/models/beta/sessions/beta_managed_agents_inline_agent.rbs +157 -0
  685. data/sig/anthropic/models/beta/sessions/beta_managed_agents_max_workflow_runs_workflow_run_error.rbs +23 -0
  686. data/sig/anthropic/models/beta/sessions/beta_managed_agents_program_workflow_run_error.rbs +20 -0
  687. data/sig/anthropic/models/beta/sessions/beta_managed_agents_session_event.rbs +85 -5
  688. data/sig/anthropic/models/beta/sessions/beta_managed_agents_session_event_type.rbs +14 -0
  689. data/sig/anthropic/models/beta/sessions/beta_managed_agents_session_thread.rbs +28 -6
  690. data/sig/anthropic/models/beta/sessions/beta_managed_agents_session_thread_created_event.rbs +8 -3
  691. data/sig/anthropic/models/beta/sessions/beta_managed_agents_stream_session_events.rbs +85 -5
  692. data/sig/anthropic/models/beta/sessions/beta_managed_agents_stream_session_thread_events.rbs +85 -5
  693. data/sig/anthropic/models/beta/sessions/beta_managed_agents_thread_limit_workflow_run_error.rbs +20 -0
  694. data/sig/anthropic/models/beta/sessions/beta_managed_agents_timeout_workflow_run_error.rbs +20 -0
  695. data/sig/anthropic/models/beta/sessions/beta_managed_agents_unknown_workflow_run_error.rbs +20 -0
  696. data/sig/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_created_event.rbs +54 -0
  697. data/sig/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_error.rbs +66 -0
  698. data/sig/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_error_event.rbs +44 -0
  699. data/sig/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_phase.rbs +26 -0
  700. data/sig/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_phase_ended_event.rbs +49 -0
  701. data/sig/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_phase_started_event.rbs +44 -0
  702. data/sig/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_result.rbs +47 -0
  703. data/sig/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_result_completed.rbs +18 -0
  704. data/sig/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_result_error.rbs +29 -0
  705. data/sig/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_result_stopped.rbs +18 -0
  706. data/sig/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_status_ended_event.rbs +44 -0
  707. data/sig/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_status_idle_event.rbs +39 -0
  708. data/sig/anthropic/models/beta/sessions/beta_managed_agents_workflow_run_status_running_event.rbs +39 -0
  709. data/sig/anthropic/models/beta/sessions/thread_list_params.rbs +9 -0
  710. data/sig/anthropic/models/model.rbs +0 -2
  711. data/sig/anthropic/request_options.rbs +3 -0
  712. data/sig/anthropic/resources/beta/agents.rbs +4 -2
  713. data/sig/anthropic/resources/beta/messages/batches.rbs +1 -1
  714. data/sig/anthropic/resources/beta/messages.rbs +1 -1
  715. data/sig/anthropic/resources/beta/organization/telemetry_destinations/workspaces.rbs +35 -0
  716. data/sig/anthropic/resources/beta/organization/telemetry_destinations.rbs +61 -0
  717. data/sig/anthropic/resources/beta/organization.rbs +2 -0
  718. data/sig/anthropic/resources/beta/sessions/events.rbs +1 -1
  719. data/sig/anthropic/resources/beta/sessions/threads/events.rbs +1 -1
  720. data/sig/anthropic/resources/beta/sessions/threads.rbs +1 -0
  721. data/sig/anthropic/resources/completions.rbs +1 -1
  722. data/sig/anthropic/resources/messages/batches.rbs +1 -1
  723. data/sig/anthropic/resources/messages.rbs +1 -1
  724. metadata +352 -2
@@ -122,8 +122,9 @@ module Anthropic
122
122
  # @return [Anthropic::Models::BetaMessage, nil]
123
123
  def next_message
124
124
  message = nil
125
- fold do
126
- message = @client.beta.messages.create(with_helper_header(_1, StainlessHelperHeader::BETA_TOOL_RUNNER))
125
+ fold do |params|
126
+ message =
127
+ @client.beta.messages.create(with_helper_header(params, StainlessHelperHeader::BETA_TOOL_RUNNER))
127
128
  [true, message]
128
129
  end
129
130
  message
@@ -132,7 +133,16 @@ module Anthropic
132
133
  # @return [Array<Anthropic::Models::BetaMessage>]
133
134
  def run_until_finished
134
135
  messages = []
135
- each_streaming { messages << _1.accumulated_message }
136
+ # Not `each_streaming`: an error from this block is the runner's, not the application's.
137
+ fold do |params|
138
+ stream =
139
+ @client.beta.messages.stream(with_helper_header(params, StainlessHelperHeader::BETA_TOOL_RUNNER))
140
+ message = stream.accumulated_message
141
+ messages << message
142
+ [false, message]
143
+ ensure
144
+ stream&.close
145
+ end
136
146
  messages
137
147
  end
138
148
 
@@ -142,9 +152,10 @@ module Anthropic
142
152
  raise ArgumentError.new("A block must be given to ##{__method__}")
143
153
  end
144
154
 
145
- fold do
146
- message = @client.beta.messages.create(with_helper_header(_1, StainlessHelperHeader::BETA_TOOL_RUNNER))
147
- blk.call(message)
155
+ fold do |params|
156
+ message =
157
+ @client.beta.messages.create(with_helper_header(params, StainlessHelperHeader::BETA_TOOL_RUNNER))
158
+ in_app { blk.call(message) }
148
159
  [false, message]
149
160
  end
150
161
  end
@@ -155,9 +166,10 @@ module Anthropic
155
166
  raise ArgumentError.new("A block must be given to ##{__method__}")
156
167
  end
157
168
 
158
- fold do
159
- stream = @client.beta.messages.stream(with_helper_header(_1, StainlessHelperHeader::BETA_TOOL_RUNNER))
160
- blk.call(stream)
169
+ fold do |params|
170
+ stream =
171
+ @client.beta.messages.stream(with_helper_header(params, StainlessHelperHeader::BETA_TOOL_RUNNER))
172
+ in_app { blk.call(stream) }
161
173
  [false, stream.accumulated_message]
162
174
  ensure
163
175
  stream&.close
@@ -166,11 +178,74 @@ module Anthropic
166
178
 
167
179
  # @api private
168
180
  #
181
+ # Runs the runner's own code with the tool runner span current.
182
+ private def in_tool_runner(&blk)
183
+ otel_context = @tool_runner_otel_context
184
+ otel_context ? OpenTelemetry::Context.with_current(otel_context, &blk) : yield
185
+ end
186
+
187
+ # @api private
188
+ #
189
+ # @param raw [Object]
190
+ #
191
+ # @return [Array<Object>, String]
192
+ private def tool_result_content(raw) = raw.is_a?(Array) ? raw : raw.to_s
193
+
194
+ # @api private
195
+ #
196
+ # Runs the application's block in the context it started the loop from, where the tool runner
197
+ # span is not current. An error it raises is the application stopping the runner, except an API
198
+ # error: that is the stream the runner yielded failing as the application reads it.
199
+ private def in_app(&blk)
200
+ otel_context = @app_otel_context
201
+ otel_context ? OpenTelemetry::Context.with_current(otel_context, &blk) : yield
202
+ rescue Anthropic::Errors::APIError
203
+ raise
204
+ rescue StandardError
205
+ @stopped_by_app = true
206
+ raise
207
+ end
208
+
209
+ # @api private
210
+ #
211
+ # Runs one loop in its `anthropic.messages.tool_runner` span, which has no status when the
212
+ # application stops the loop.
213
+ #
169
214
  # @yieldparam [Array(Boolean, Anthropic::Models::Beta::MessageCreateParams)]
170
215
  private def fold(&blk)
171
216
  @compaction_phase = nil if @compaction_phase == :handling
172
217
  return nil if finished? && @pending_compaction.nil?
173
218
 
219
+ # A loop the application starts from inside another one has its own span.
220
+ outer = [@tool_runner_otel_context, @app_otel_context, @stopped_by_app]
221
+ @stopped_by_app = false
222
+ tool_runner_span = Anthropic::Helpers::Tracing.start_tool_runner_span(@client, params)
223
+ if tool_runner_span
224
+ @tool_runner_otel_context = OpenTelemetry::Trace.context_with_span(tool_runner_span)
225
+ # The application can start each loop from another context, so it is read on every entry.
226
+ @app_otel_context = OpenTelemetry::Context.current
227
+ else
228
+ @tool_runner_otel_context = @app_otel_context = nil
229
+ end
230
+ begin
231
+ value = in_tool_runner { run_loop(&blk) }
232
+ returned = true
233
+ value
234
+ rescue StandardError => e
235
+ error = e unless @stopped_by_app
236
+ raise
237
+ ensure
238
+ if tool_runner_span
239
+ Anthropic::Helpers::Tracing.end_tool_runner_span(tool_runner_span, returned: returned, error: error)
240
+ end
241
+ @tool_runner_otel_context, @app_otel_context, @stopped_by_app = outer
242
+ end
243
+ end
244
+
245
+ # @api private
246
+ #
247
+ # @yieldparam [Array(Boolean, Anthropic::Models::Beta::MessageCreateParams)]
248
+ private def run_loop(&blk)
174
249
  brk = false
175
250
  # rubocop:disable Metrics/BlockLength
176
251
  # rubocop:disable Style/CaseEquality
@@ -213,27 +288,42 @@ module Anthropic
213
288
  mapped =
214
289
  tool_uses.map do |tool_use|
215
290
  resp = {type: :tool_result, tool_use_id: tool_use.id}
291
+ # The result of a toolset member's call has to name the toolset as the call does.
292
+ resp[:toolset_name] = tool_use[:toolset_name] if tool_use[:toolset_name].is_a?(String)
216
293
  if available.include?(tool_use.name) &&
217
294
  (tool = @tool_overrides.fetch(tool_use.name) do
218
295
  tools.find do
219
296
  _1.class.model === tool_use.parsed && Anthropic::Helpers::Messages.tool_api_name(_1) == tool_use.name
220
297
  end
221
298
  end)
299
+ tool_use_span = Anthropic::Helpers::Tracing.start_tool_use_span(
300
+ @client,
301
+ tool,
302
+ tool_use,
303
+ params[:request_options]
304
+ )
222
305
  begin
223
306
  # `parsed` was read against `params[:tools]`, which an added tool is not in.
224
307
  input = tool_use.parsed
225
308
  input = Anthropic::Internal::Type::Converter.coerce(tool, tool_use.input) if @tool_overrides.key?(tool_use.name)
226
- raw = tool.call(input)
309
+ run = proc { tool.call(input) }
310
+ raw = tool_use_span ? OpenTelemetry::Trace.with_span(tool_use_span, &run) : run.call
227
311
  is_error = false
228
312
  rescue StandardError => e
229
313
  is_error = true
230
314
  raw = e.message
315
+ ensure
316
+ if tool_use_span
317
+ # `is_error` is unset when the run was interrupted, and then so is the span's status.
318
+ result = {content: tool_result_content(raw), is_error:} unless is_error.nil?
319
+ Anthropic::Helpers::Tracing.end_tool_use_span(@client, tool_use_span, tool_use.input, result)
320
+ end
231
321
  end
232
322
  else
233
323
  is_error = true
234
324
  raw = "Error: parsed '#{tool_use.name}' not found"
235
325
  end
236
- content = raw.is_a?(Array) ? raw : raw.to_s
326
+ content = tool_result_content(raw)
237
327
  {**resp, content:, is_error:}
238
328
  end
239
329
 
@@ -585,6 +675,9 @@ module Anthropic
585
675
  @tool_overrides = {}
586
676
  @pending_compaction = nil
587
677
  @compaction_phase = nil
678
+ @tool_runner_otel_context = nil
679
+ @app_otel_context = nil
680
+ @stopped_by_app = false
588
681
  end
589
682
 
590
683
  private def with_helper_header(params, helper)
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Anthropic
4
+ module Helpers
5
+ module Tracing
6
+ GEN_AI_CONVERSATION_ID = "gen_ai.conversation.id"
7
+ GEN_AI_INPUT_MESSAGES = "gen_ai.input.messages"
8
+ GEN_AI_OUTPUT_MESSAGES = "gen_ai.output.messages"
9
+ GEN_AI_OUTPUT_TYPE = "gen_ai.output.type"
10
+ GEN_AI_REQUEST_STOP_SEQUENCES = "gen_ai.request.stop_sequences"
11
+ GEN_AI_RESPONSE_TIME_TO_FIRST_CHUNK = "gen_ai.response.time_to_first_chunk"
12
+ GEN_AI_SYSTEM_INSTRUCTIONS = "gen_ai.system_instructions"
13
+ GEN_AI_TOOL_CALL_ARGUMENTS = "gen_ai.tool.call.arguments"
14
+ GEN_AI_TOOL_CALL_ID = "gen_ai.tool.call.id"
15
+ GEN_AI_TOOL_DESCRIPTION = "gen_ai.tool.description"
16
+ GEN_AI_TOOL_NAME = "gen_ai.tool.name"
17
+ GEN_AI_TOOL_TYPE = "gen_ai.tool.type"
18
+ GEN_AI_USAGE_INPUT_TOKENS = "gen_ai.usage.input_tokens"
19
+ GEN_AI_OPERATION_NAME_VALUE_EXECUTE_TOOL = "execute_tool"
20
+ GEN_AI_OPERATION_NAME_VALUE_INVOKE_AGENT = "invoke_agent"
21
+ GEN_AI_TOOL_TYPE_VALUE_FUNCTION = "function"
22
+ GEN_AI_OUTPUT_TYPE_VALUE_JSON = "json"
23
+
24
+ ANTHROPIC_CONTENT_TRUNCATED = "anthropic.content.truncated"
25
+ ANTHROPIC_MESSAGE_BATCH_REQUEST_COUNT = "anthropic.message.batch.request_count"
26
+ ANTHROPIC_SESSION_THREAD_ID = "anthropic.session.thread.id"
27
+ ANTHROPIC_TOOLSET_NAME = "anthropic.toolset.name"
28
+ ANTHROPIC_TOOL_RESULT_CONTENT = "anthropic.tool_result.content"
29
+ ANTHROPIC_USAGE_COMPACTION_INPUT_TOKENS = "anthropic.usage.compaction.input_tokens"
30
+ ANTHROPIC_USAGE_COMPACTION_OUTPUT_TOKENS = "anthropic.usage.compaction.output_tokens"
31
+ GEN_AI_AGENT_ID = "gen_ai.agent.id"
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Anthropic
4
+ module Helpers
5
+ module Tracing
6
+ class << self
7
+ # @param options [Anthropic::RequestOptions, Hash{Symbol=>Object}, nil] request options
8
+ #
9
+ # @return [String, nil]
10
+ def conversation_id(options)
11
+ Anthropic::Internal::Tracing.request_option(options.to_h[:open_telemetry])[:conversation_id]&.to_s
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,346 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Anthropic
4
+ module Helpers
5
+ module Tracing
6
+ # The most bytes the `content` attributes of one span hold, unless the client's
7
+ # `max_content_bytes` sets another bound.
8
+ CONTENT_LIMIT = Anthropic::Internal::Tracing::DEFAULT_MAX_CONTENT_BYTES
9
+
10
+ class << self
11
+ # @param span [OpenTelemetry::Trace::Span]
12
+ # @param body [Hash{Symbol=>Object}]
13
+ # @param output [Array<Object>, nil] the response's content, once complete
14
+ # @param limit [Integer] the most bytes the `content` attributes hold
15
+ def set_message_content_attributes(span, body, output, limit: CONTENT_LIMIT)
16
+ body = symbolize_keys(body.slice(:messages, :system, :stop_sequences))
17
+ output = [{role: "assistant", parts: parts(output)}] unless output.nil?
18
+ stop_sequences = body[:stop_sequences]
19
+ set_content_attributes(
20
+ span,
21
+ messages(body[:messages]),
22
+ {
23
+ GEN_AI_SYSTEM_INSTRUCTIONS => (parts(body[:system]) unless body[:system].nil?),
24
+ GEN_AI_OUTPUT_MESSAGES => output
25
+ },
26
+ stop_sequences: (text_array(stop_sequences) if stop_sequences.is_a?(Array)),
27
+ limit: limit
28
+ )
29
+ end
30
+
31
+ # `nil` when `string` is not text in its encoding: an exporter fails on a string that is not
32
+ # valid UTF-8, which would lose every span it exports with it.
33
+ #
34
+ # @param string [String]
35
+ #
36
+ # @return [String, nil]
37
+ def utf8_text(string)
38
+ text =
39
+ if string.encoding == Encoding::BINARY
40
+ string.dup.force_encoding(Encoding::UTF_8)
41
+ else
42
+ string.encode(Encoding::UTF_8)
43
+ end
44
+ text if text.valid_encoding?
45
+ rescue EncodingError
46
+ nil
47
+ end
48
+
49
+ # `nil` when any item is not text ({utf8_text}).
50
+ #
51
+ # @param array [Array<Object>]
52
+ #
53
+ # @return [Array<String>, nil]
54
+ def text_array(array)
55
+ texts = array.map { utf8_text(_1.to_s) }
56
+ texts unless texts.any?(&:nil?)
57
+ end
58
+
59
+ # @param content [String, Array<Object>, nil]
60
+ #
61
+ # @return [Array<Hash{Symbol=>Object}>]
62
+ def parts(content)
63
+ case content
64
+ in String
65
+ [{type: "text", content: content}]
66
+ in Array
67
+ content.map { part(_1) }
68
+ else
69
+ []
70
+ end
71
+ end
72
+
73
+ # The content blocks of a `tool_result` block. A `text` or `search_result` block keeps its
74
+ # fields ({result_value}), and any other block only its type.
75
+ #
76
+ # @param content [String, Array<Object>, nil]
77
+ #
78
+ # @return [Array<Object>]
79
+ def tool_result_content(content) = tool_result_blocks(symbolize_keys(content))
80
+
81
+ # A deep copy of `value` whose Hashes have Symbol keys, and whose models are such Hashes.
82
+ #
83
+ # @param value [Object]
84
+ #
85
+ # @return [Object]
86
+ def symbolize_keys(value)
87
+ case value
88
+ in Hash
89
+ value.to_h { |key, item| [key.is_a?(String) ? key.to_sym : key, symbolize_keys(item)] }
90
+ in Array
91
+ value.map { symbolize_keys(_1) }
92
+ in Anthropic::Internal::Type::BaseModel
93
+ symbolize_keys(value.to_h)
94
+ else
95
+ value
96
+ end
97
+ end
98
+
99
+ # The `content` of a result block other than `tool_result`, such as `web_search_tool_result`.
100
+ #
101
+ # @param content [String, Array<Object>, Hash{Symbol=>Object}, Anthropic::Internal::Type::BaseModel, nil]
102
+ #
103
+ # @return [Array<Object>, Hash{Symbol=>Object}]
104
+ def result_block_content(content)
105
+ case content
106
+ in nil
107
+ []
108
+ in String
109
+ [{type: "text", text: content}]
110
+ in Array
111
+ content.map do
112
+ type = block_type(_1)
113
+ %w[text search_result web_search_result].include?(type) ? result_value(_1) : {type: type}
114
+ end
115
+ else
116
+ result_value(content)
117
+ end
118
+ end
119
+
120
+ # `value` without its `encrypted_*` fields, which are opaque, and without image and document
121
+ # data, which is large and binary.
122
+ #
123
+ # @param value [Object]
124
+ #
125
+ # @return [Object]
126
+ def result_value(value)
127
+ case value
128
+ in Hash | Anthropic::Internal::Type::BaseModel
129
+ type = block_type(value)
130
+ return {type: type} if %w[image document].include?(type)
131
+
132
+ fields = value.to_h.reject { |name, _| name.to_s.start_with?("encrypted_") }
133
+ view = type == "text_editor_code_execution_view_result"
134
+ fields = fields.except(:content) if view && %w[image pdf].include?(fields[:file_type].to_s)
135
+ fields.transform_values { result_value(_1) }
136
+ in Array
137
+ value.map { result_value(_1) }
138
+ else
139
+ value
140
+ end
141
+ end
142
+
143
+ # @param block [Hash{Symbol=>Object}, Anthropic::Internal::Type::BaseModel]
144
+ #
145
+ # @return [String]
146
+ def block_type(block)
147
+ case block[:type]
148
+ in String | Symbol => type
149
+ type.to_s
150
+ else
151
+ "unknown"
152
+ end
153
+ end
154
+
155
+ # @param block [Hash{Symbol=>Object}, Anthropic::Internal::Type::BaseModel]
156
+ #
157
+ # @return [Hash{Symbol=>Object}]
158
+ def part(block)
159
+ case block_type(block)
160
+ in "text"
161
+ {type: "text", content: block[:text].to_s}
162
+ in "thinking"
163
+ {type: "reasoning", content: block[:thinking].to_s}
164
+ in "tool_use" | "server_tool_use" => type
165
+ call = {type: "tool_call", id: block[:id], name: block[:name], arguments: block[:input]}
166
+ # Only the `tool_use` of a toolset member has the name, and a `nil` one is left out.
167
+ toolset_name = block[:toolset_name] if type == "tool_use"
168
+ toolset_name.is_a?(String) ? {**call, anthropic_toolset_name: toolset_name} : call
169
+ in "mcp_tool_use"
170
+ {
171
+ type: "tool_call",
172
+ id: block[:id],
173
+ name: block[:name],
174
+ arguments: block[:input],
175
+ anthropic_mcp_server_name: block[:server_name]
176
+ }
177
+ in "tool_result"
178
+ {
179
+ type: "tool_call_response",
180
+ id: block[:tool_use_id],
181
+ response: tool_result_blocks(block[:content])
182
+ }
183
+ in /_tool_result\z/
184
+ {
185
+ type: "tool_call_response",
186
+ id: block[:tool_use_id],
187
+ response: result_block_content(block[:content])
188
+ }
189
+ in type
190
+ {type: "anthropic_#{type}"}
191
+ end
192
+ end
193
+
194
+ # @param messages [Array<Object>, nil]
195
+ #
196
+ # @return [Array<Hash{Symbol=>Object}>]
197
+ def messages(messages)
198
+ Array(messages).map { {role: _1[:role].to_s, parts: parts(_1[:content])} }
199
+ end
200
+
201
+ # Sets each value as one JSON string, and `stop_sequences` as it is. When they total more than
202
+ # `limit`, content is removed, and the span gets `anthropic.content.truncated`.
203
+ # First, `stop_sequences`, or the `gen_ai.tool.call.arguments` of a tool's span, is left out
204
+ # whole when it is over `limit` by itself.
205
+ # Then message parts are removed whole ({truncate_parts}): those of
206
+ # `gen_ai.system_instructions`, then of each input message, oldest first, then of each output
207
+ # message. On a tool's span, `anthropic.tool_result.content` loses content blocks instead, the
208
+ # last one first.
209
+ # Emptied lists stay, so what is left can still be over a small `limit`.
210
+ #
211
+ # @param span [OpenTelemetry::Trace::Span]
212
+ # @param input [Array<Hash{Symbol=>Object}>, nil] the value of `gen_ai.input.messages`
213
+ # @param others [Hash{String=>Object, nil}] the other attributes, by name
214
+ # @param stop_sequences [Array<String>, nil] the value of `gen_ai.request.stop_sequences`
215
+ # @param limit [Integer] the most bytes the values hold
216
+ def set_content_attributes(span, input, others, stop_sequences: nil, limit: CONTENT_LIMIT)
217
+ values = {**others, GEN_AI_INPUT_MESSAGES => input}.compact
218
+ jsons = values.transform_values { JSON.generate(_1) }
219
+ stop_sequences = nil if stop_sequences&.empty?
220
+ stop_bytes = stop_sequences.to_a.sum(&:bytesize)
221
+ reduced = false
222
+ if stop_bytes > limit
223
+ stop_sequences = nil
224
+ stop_bytes = 0
225
+ reduced = true
226
+ end
227
+ if jsons[GEN_AI_TOOL_CALL_ARGUMENTS].to_s.bytesize > limit
228
+ jsons.delete(GEN_AI_TOOL_CALL_ARGUMENTS)
229
+ reduced = true
230
+ end
231
+ excess = jsons.sum { _2.bytesize } + stop_bytes - limit
232
+ blocks = others[ANTHROPIC_TOOL_RESULT_CONTENT]
233
+ if excess.positive? && blocks&.any?
234
+ jsons[ANTHROPIC_TOOL_RESULT_CONTENT] = JSON.generate(blocks.first(kept_items(blocks, excess)))
235
+ reduced = true
236
+ elsif excess.positive?
237
+ fitted = values.slice(GEN_AI_SYSTEM_INSTRUCTIONS).transform_values(&:dup)
238
+ [GEN_AI_INPUT_MESSAGES, GEN_AI_OUTPUT_MESSAGES].each do |name|
239
+ fitted[name] = values[name].map { {**_1, parts: _1[:parts].dup} } if values.key?(name)
240
+ end
241
+ lists = fitted.flat_map do |name, value|
242
+ name == GEN_AI_SYSTEM_INSTRUCTIONS ? [value] : value.map { _1[:parts] }
243
+ end
244
+ if truncate_parts(lists, excess)
245
+ fitted.each { jsons[_1] = JSON.generate(_2) }
246
+ reduced = true
247
+ end
248
+ end
249
+ jsons.each { span.set_attribute(_1, _2) }
250
+ span.set_attribute(GEN_AI_REQUEST_STOP_SEQUENCES, stop_sequences) unless stop_sequences.nil?
251
+ # Absent, never `false`, on a span that keeps all of its content.
252
+ span.set_attribute(ANTHROPIC_CONTENT_TRUNCATED, true) if reduced
253
+ end
254
+
255
+ # Removes parts from `lists`, in place, from the first on, until `excess` fewer bytes of JSON
256
+ # remain. The last part left, when it is a `text` part, loses the end of its `content` instead.
257
+ #
258
+ # @param lists [Array<Array<Hash{Symbol=>Object}>>] every list of parts of a span, in the
259
+ # order in which they lose parts
260
+ # @param excess [Integer] how far the span's `content` attributes are over the limit
261
+ #
262
+ # @return [Boolean] whether a part was removed or cut
263
+ def truncate_parts(lists, excess)
264
+ left = lists.sum(&:length)
265
+ reduced = false
266
+ lists.each do |parts|
267
+ while excess.positive? && parts.any?
268
+ part = parts.first
269
+ if left == 1 && part[:type] == "text"
270
+ text = text_within(part[:content], excess)
271
+ parts[0] = {**part, content: text}
272
+ return reduced || text != part[:content]
273
+ end
274
+
275
+ parts.shift
276
+ left -= 1
277
+ reduced = true
278
+ # A part that is not the last of its list goes with the comma after it.
279
+ excess -= JSON.generate(part).bytesize + (parts.empty? ? 0 : 1)
280
+ end
281
+ end
282
+ reduced
283
+ end
284
+
285
+ private
286
+
287
+ # How many of `items` stay once items are removed from the end until `excess` fewer bytes of
288
+ # JSON remain.
289
+ #
290
+ # @param items [Array<Object>]
291
+ # @param excess [Integer]
292
+ #
293
+ # @return [Integer]
294
+ def kept_items(items, excess)
295
+ keep = items.length
296
+ while keep.positive? && excess.positive?
297
+ keep -= 1
298
+ # An item that is not the first goes with the comma before it.
299
+ excess -= JSON.generate(items[keep]).bytesize + (keep.zero? ? 0 : 1)
300
+ end
301
+ keep
302
+ end
303
+
304
+ # @param content [String, Array<Object>, nil] with Symbol keys
305
+ #
306
+ # @return [Array<Object>]
307
+ def tool_result_blocks(content)
308
+ return [] if content.nil?
309
+ return [{type: "text", text: content}] if content.is_a?(String)
310
+
311
+ content.map do
312
+ type = block_type(_1)
313
+ %w[text search_result].include?(type) ? result_value(_1) : {type: type}
314
+ end
315
+ end
316
+
317
+ # The longest start of `text` whose JSON is at least `excess` bytes shorter. The cut is made
318
+ # in the JSON, where the bytes are counted, and ends between two characters.
319
+ #
320
+ # @param text [String]
321
+ # @param excess [Integer]
322
+ #
323
+ # @return [String]
324
+ def text_within(text, excess)
325
+ json = JSON.generate(text)
326
+ length = json.bytesize - 2 - excess
327
+ return "" unless length.positive?
328
+
329
+ # A byte of the form 10xxxxxx is inside a character.
330
+ length -= 1 while json.getbyte(length + 1) & 0xC0 == 0x80
331
+ kept = json.byteslice(1, length)
332
+ slash = kept.byterindex("\\")
333
+ if slash && slash > kept.bytesize - 6
334
+ first = slash
335
+ first -= 1 while first.positive? && kept.getbyte(first - 1) == "\\".ord
336
+ # The last of an odd number of backslashes starts an escape: `\u` and four digits, or
337
+ # one character.
338
+ escape = kept.getbyte(slash + 1) == "u".ord ? 6 : 2
339
+ kept = kept.byteslice(0, slash) if (slash - first).even? && slash + escape > kept.bytesize
340
+ end
341
+ JSON.parse(%("#{kept}"))
342
+ end
343
+ end
344
+ end
345
+ end
346
+ end