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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +35 -0
- data/LICENSE +8 -0
- data/README.md +42 -1
- data/lib/anthropic/client.rb +32 -0
- data/lib/anthropic/helpers/aws/client.rb +12 -2
- data/lib/anthropic/helpers/aws_auth.rb +8 -1
- data/lib/anthropic/helpers/bedrock/client.rb +19 -2
- data/lib/anthropic/helpers/bedrock/mantle_client.rb +19 -2
- data/lib/anthropic/helpers/google_cloud/client.rb +12 -2
- data/lib/anthropic/helpers/streaming/message_stream.rb +20 -43
- data/lib/anthropic/helpers/tools/runner.rb +104 -11
- data/lib/anthropic/helpers/tracing/attributes.rb +34 -0
- data/lib/anthropic/helpers/tracing/config.rb +16 -0
- data/lib/anthropic/helpers/tracing/content.rb +346 -0
- data/lib/anthropic/helpers/tracing/recorders.rb +131 -0
- data/lib/anthropic/helpers/tracing/response.rb +29 -0
- data/lib/anthropic/helpers/tracing/streamed_message.rb +189 -0
- data/lib/anthropic/helpers/tracing/tool_spans.rb +138 -0
- data/lib/anthropic/helpers/tracing.rb +13 -0
- data/lib/anthropic/helpers/vertex/client.rb +19 -2
- data/lib/anthropic/internal/tracing.rb +1118 -0
- data/lib/anthropic/internal/transport/base_client.rb +174 -10
- data/lib/anthropic/internal/transport/pooled_net_requester.rb +6 -0
- data/lib/anthropic/models/anthropic_beta.rb +3 -0
- data/lib/anthropic/models/beta/agent_create_params.rb +17 -6
- data/lib/anthropic/models/beta/agent_update_params.rb +17 -6
- data/lib/anthropic/models/beta/beta_dream_input.rb +2 -2
- data/lib/anthropic/models/beta/beta_fallbacks_param.rb +6 -2
- data/lib/anthropic/models/beta/beta_managed_agents_agent.rb +15 -6
- data/lib/anthropic/models/beta/beta_managed_agents_agent_tool_config_params.rb +8 -8
- data/lib/anthropic/models/beta/beta_managed_agents_agent_toolset_default_config.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_agent_toolset_default_config_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_agent_with_overrides_params.rb +6 -6
- data/lib/anthropic/models/beta/beta_managed_agents_aws_role_execution_identity.rb +29 -0
- data/lib/anthropic/models/beta/beta_managed_agents_aws_role_execution_identity_params.rb +34 -0
- data/lib/anthropic/models/beta/beta_managed_agents_bash_tool_config.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_bash_tool_config_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_deployment_initial_event.rb +3 -3
- data/lib/anthropic/models/beta/beta_managed_agents_deployment_initial_event_params.rb +3 -3
- data/lib/anthropic/models/beta/beta_managed_agents_deployment_paused_reason.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_deployment_paused_reason_error.rb +38 -14
- data/lib/anthropic/models/beta/beta_managed_agents_deployment_run.rb +16 -16
- data/lib/anthropic/models/beta/beta_managed_agents_deployment_user_define_outcome_event.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_deployment_user_message_event.rb +4 -4
- data/lib/anthropic/models/beta/beta_managed_agents_edit_tool_config.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_edit_tool_config_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_execution_identity.rb +57 -0
- data/lib/anthropic/models/beta/beta_managed_agents_execution_identity_params.rb +62 -0
- data/lib/anthropic/models/beta/beta_managed_agents_github_repository_resource_config.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_github_repository_resource_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_glob_tool_config.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_glob_tool_config_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_grep_tool_config.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_grep_tool_config_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_mcp_tool_config.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_mcp_tool_config_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_mcp_toolset_default_config.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_mcp_toolset_default_config_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_model.rb +0 -2
- data/lib/anthropic/models/beta/beta_managed_agents_model_config.rb +5 -5
- data/lib/anthropic/models/beta/beta_managed_agents_multiagent.rb +1 -1
- data/lib/anthropic/models/beta/beta_managed_agents_multiagent_coordinator.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_multiagent_params.rb +1 -1
- data/lib/anthropic/models/beta/beta_managed_agents_read_tool_config.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_read_tool_config_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_service_account_execution_identity.rb +21 -0
- data/lib/anthropic/models/beta/beta_managed_agents_service_account_execution_identity_params.rb +23 -0
- data/lib/anthropic/models/beta/beta_managed_agents_session_agent.rb +16 -6
- data/lib/anthropic/models/beta/beta_managed_agents_session_agent_update.rb +3 -3
- data/lib/anthropic/models/beta/beta_managed_agents_session_multiagent.rb +1 -1
- data/lib/anthropic/models/beta/beta_managed_agents_session_multiagent_coordinator.rb +8 -2
- data/lib/anthropic/models/beta/beta_managed_agents_session_resource_config.rb +3 -3
- data/lib/anthropic/models/beta/beta_managed_agents_session_thread_agent.rb +19 -6
- data/lib/anthropic/models/beta/beta_managed_agents_skill_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_start_event_preview.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_trigger_context.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_user_tool_result_event.rb +4 -4
- data/lib/anthropic/models/beta/beta_managed_agents_web_fetch_tool_config.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_web_fetch_tool_config_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_web_search_tool_config.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_web_search_tool_config_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_write_tool_config.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_write_tool_config_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_message_delta_usage.rb +0 -1
- data/lib/anthropic/models/beta/beta_output_behavior.rb +2 -2
- data/lib/anthropic/models/beta/beta_thinking_config_adaptive.rb +6 -4
- data/lib/anthropic/models/beta/beta_thinking_config_enabled.rb +6 -4
- data/lib/anthropic/models/beta/beta_thinking_config_param.rb +8 -7
- data/lib/anthropic/models/beta/beta_usage.rb +0 -1
- data/lib/anthropic/models/beta/deployment_create_params.rb +3 -3
- data/lib/anthropic/models/beta/deployment_update_params.rb +3 -3
- data/lib/anthropic/models/beta/memory_stores/beta_managed_agents_actor.rb +3 -3
- data/lib/anthropic/models/beta/memory_stores/beta_managed_agents_error.rb +6 -3
- data/lib/anthropic/models/beta/memory_stores/beta_managed_agents_memory_list_item.rb +2 -2
- data/lib/anthropic/models/beta/message_count_tokens_params.rb +15 -10
- data/lib/anthropic/models/beta/message_create_params.rb +21 -12
- data/lib/anthropic/models/beta/messages/batch_create_params.rb +21 -12
- data/lib/anthropic/models/beta/organization/beta_analytics_cost_bucketed_result.rb +3 -3
- data/lib/anthropic/models/beta/organization/beta_analytics_cost_users_item.rb +3 -3
- data/lib/anthropic/models/beta/organization/beta_analytics_usage_bucketed_result.rb +3 -3
- data/lib/anthropic/models/beta/organization/beta_analytics_usage_users_item.rb +3 -3
- data/lib/anthropic/models/beta/organization/beta_deleted_telemetry_destination.rb +30 -0
- data/lib/anthropic/models/beta/organization/beta_spend_limit.rb +2 -2
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination.rb +118 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_content_mode.rb +29 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_delivery_health.rb +69 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason.rb +73 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_caller.rb +21 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_invalid_address.rb +29 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_redirect.rb +23 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_sustained_failure.rb +25 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_state.rb +71 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_state_disabled.rb +36 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_state_disabled_params.rb +24 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_state_enabled.rb +21 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_state_enabled_params.rb +23 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_state_params.rb +61 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_test_failure.rb +37 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_test_response.rb +35 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_test_result.rb +61 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_test_success.rb +21 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_traces.rb +61 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_traces_params.rb +71 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces.rb +69 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_all.rb +23 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_all_params.rb +23 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_exclude.rb +22 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_exclude_params.rb +49 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_include.rb +21 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_include_params.rb +49 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_params.rb +70 -0
- data/lib/anthropic/models/beta/organization/invite_create_params.rb +4 -2
- data/lib/anthropic/models/beta/organization/spend_limit_list_params.rb +2 -5
- data/lib/anthropic/models/beta/organization/telemetry_destination_create_params.rb +93 -0
- data/lib/anthropic/models/beta/organization/telemetry_destination_delete_params.rb +34 -0
- data/lib/anthropic/models/beta/organization/telemetry_destination_list_params.rb +62 -0
- data/lib/anthropic/models/beta/organization/telemetry_destination_retrieve_params.rb +34 -0
- data/lib/anthropic/models/beta/organization/telemetry_destination_test_params.rb +34 -0
- data/lib/anthropic/models/beta/organization/telemetry_destination_update_params.rb +120 -0
- data/lib/anthropic/models/beta/organization/telemetry_destinations/beta_deleted_telemetry_destination_workspace.rb +40 -0
- data/lib/anthropic/models/beta/organization/telemetry_destinations/beta_telemetry_destination_workspace.rb +52 -0
- data/lib/anthropic/models/beta/organization/telemetry_destinations/workspace_add_params.rb +44 -0
- data/lib/anthropic/models/beta/organization/telemetry_destinations/workspace_list_params.rb +57 -0
- data/lib/anthropic/models/beta/organization/telemetry_destinations/workspace_remove_params.rb +44 -0
- data/lib/anthropic/models/beta/organization/user_update_params.rb +4 -2
- data/lib/anthropic/models/beta/session_create_params.rb +5 -5
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_agent_custom_tool_use_event.rb +3 -1
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_agent_mcp_tool_result_event.rb +4 -4
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_agent_message_event.rb +2 -2
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_agent_thread_message_received_event.rb +4 -4
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_agent_thread_message_sent_event.rb +4 -4
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_agent_tool_result_event.rb +4 -4
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_billing_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_credential_host_unreachable_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_document_block.rb +4 -4
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_event_params.rb +14 -8
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_github_repository_resource.rb +2 -2
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_image_block.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_inline_agent.rb +14 -6
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_mcp_authentication_failed_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_mcp_connection_failed_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_model_overloaded_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_model_rate_limited_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_model_request_failed_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_repository_authentication_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_repository_checkout_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_repository_clone_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_repository_forbidden_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_repository_not_found_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_send_session_events.rb +8 -8
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_error_event.rb +14 -8
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_event.rb +64 -37
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_resource.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_status_idle_event.rb +4 -4
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_thread.rb +8 -2
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_thread_status_idle_event.rb +4 -4
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_stream_session_events.rb +66 -39
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_stream_session_thread_events.rb +66 -39
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_unknown_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_custom_tool_result_event.rb +7 -7
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_custom_tool_result_event_params.rb +7 -7
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_define_outcome_event.rb +2 -2
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_define_outcome_event_params.rb +2 -2
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_message_event.rb +4 -4
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_message_event_params.rb +4 -4
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_tool_result_event_params.rb +4 -4
- data/lib/anthropic/models/beta/sessions/resource_retrieve_response.rb +3 -3
- data/lib/anthropic/models/beta/sessions/resource_update_response.rb +3 -3
- data/lib/anthropic/models/beta/vaults/beta_managed_agents_credential.rb +6 -3
- data/lib/anthropic/models/beta/vaults/beta_managed_agents_credential_networking_params.rb +7 -2
- data/lib/anthropic/models/beta/vaults/beta_managed_agents_environment_variable_auth_response.rb +7 -2
- data/lib/anthropic/models/beta/vaults/beta_managed_agents_mcp_oauth_refresh_params.rb +3 -3
- data/lib/anthropic/models/beta/vaults/beta_managed_agents_mcp_oauth_refresh_response.rb +12 -3
- data/lib/anthropic/models/beta/vaults/beta_managed_agents_mcp_oauth_refresh_update_params.rb +8 -2
- data/lib/anthropic/models/beta/vaults/credential_create_params.rb +6 -3
- data/lib/anthropic/models/beta/vaults/credential_update_params.rb +6 -3
- data/lib/anthropic/models/message_count_tokens_params.rb +15 -10
- data/lib/anthropic/models/message_create_params.rb +15 -10
- data/lib/anthropic/models/messages/batch_create_params.rb +15 -10
- data/lib/anthropic/models/model.rb +0 -2
- data/lib/anthropic/models/organization/invite_create_params.rb +4 -2
- data/lib/anthropic/models/organization/user_update_params.rb +4 -2
- data/lib/anthropic/models/thinking_config_adaptive.rb +6 -4
- data/lib/anthropic/models/thinking_config_enabled.rb +6 -4
- data/lib/anthropic/models/thinking_config_param.rb +8 -7
- data/lib/anthropic/request_options.rb +7 -0
- data/lib/anthropic/resources/beta/agents/versions.rb +4 -0
- data/lib/anthropic/resources/beta/agents.rb +22 -2
- data/lib/anthropic/resources/beta/deployment_runs.rb +16 -0
- data/lib/anthropic/resources/beta/deployments.rb +24 -0
- data/lib/anthropic/resources/beta/dreams.rb +15 -0
- data/lib/anthropic/resources/beta/environments/work.rb +42 -0
- data/lib/anthropic/resources/beta/environments.rb +18 -0
- data/lib/anthropic/resources/beta/files.rb +15 -0
- data/lib/anthropic/resources/beta/memory_stores/memories.rb +31 -0
- data/lib/anthropic/resources/beta/memory_stores/memory_versions.rb +28 -0
- data/lib/anthropic/resources/beta/memory_stores.rb +18 -0
- data/lib/anthropic/resources/beta/messages/batches.rb +19 -1
- data/lib/anthropic/resources/beta/messages.rb +12 -4
- data/lib/anthropic/resources/beta/models.rb +6 -0
- data/lib/anthropic/resources/beta/organization/analytics/apps/chat/projects.rb +3 -0
- data/lib/anthropic/resources/beta/organization/analytics/artifacts.rb +3 -0
- data/lib/anthropic/resources/beta/organization/analytics/connectors.rb +4 -0
- data/lib/anthropic/resources/beta/organization/analytics/cost_report.rb +20 -0
- data/lib/anthropic/resources/beta/organization/analytics/plugins.rb +4 -0
- data/lib/anthropic/resources/beta/organization/analytics/skills.rb +4 -0
- data/lib/anthropic/resources/beta/organization/analytics/summaries.rb +3 -0
- data/lib/anthropic/resources/beta/organization/analytics/usage_report.rb +20 -0
- data/lib/anthropic/resources/beta/organization/analytics/user_cost_report.rb +23 -0
- data/lib/anthropic/resources/beta/organization/analytics/user_usage_report.rb +23 -0
- data/lib/anthropic/resources/beta/organization/analytics/users.rb +4 -0
- data/lib/anthropic/resources/beta/organization/api_keys.rb +9 -0
- data/lib/anthropic/resources/beta/organization/compliance_settings.rb +4 -0
- data/lib/anthropic/resources/beta/organization/external_keys.rb +18 -0
- data/lib/anthropic/resources/beta/organization/federation/issuers.rb +15 -0
- data/lib/anthropic/resources/beta/organization/federation/rules/workspaces.rb +14 -0
- data/lib/anthropic/resources/beta/organization/federation/rules.rb +15 -0
- data/lib/anthropic/resources/beta/organization/invites.rb +12 -0
- data/lib/anthropic/resources/beta/organization/plugin_marketplaces.rb +14 -0
- data/lib/anthropic/resources/beta/organization/plugins/installation_settings.rb +16 -0
- data/lib/anthropic/resources/beta/organization/plugins/shares.rb +4 -0
- data/lib/anthropic/resources/beta/organization/plugins/versions.rb +22 -0
- data/lib/anthropic/resources/beta/organization/plugins.rb +27 -0
- data/lib/anthropic/resources/beta/organization/rate_limits.rb +3 -0
- data/lib/anthropic/resources/beta/organization/rbac_groups/members.rb +14 -0
- data/lib/anthropic/resources/beta/organization/rbac_groups.rb +15 -0
- data/lib/anthropic/resources/beta/organization/rbac_roles/permissions.rb +4 -0
- data/lib/anthropic/resources/beta/organization/rbac_roles.rb +6 -0
- data/lib/anthropic/resources/beta/organization/service_accounts/workspaces.rb +14 -0
- data/lib/anthropic/resources/beta/organization/service_accounts.rb +15 -0
- data/lib/anthropic/resources/beta/organization/spend_limits/effective.rb +5 -2
- data/lib/anthropic/resources/beta/organization/spend_limits/increase_requests.rb +12 -0
- data/lib/anthropic/resources/beta/organization/spend_limits.rb +17 -7
- data/lib/anthropic/resources/beta/organization/telemetry_destinations/workspaces.rb +173 -0
- data/lib/anthropic/resources/beta/organization/telemetry_destinations.rb +274 -0
- data/lib/anthropic/resources/beta/organization/users.rb +12 -0
- data/lib/anthropic/resources/beta/organization/workspaces/members.rb +26 -0
- data/lib/anthropic/resources/beta/organization/workspaces/rate_limits.rb +4 -0
- data/lib/anthropic/resources/beta/organization/workspaces/service_accounts.rb +26 -0
- data/lib/anthropic/resources/beta/organization/workspaces.rb +15 -0
- data/lib/anthropic/resources/beta/organization.rb +7 -0
- data/lib/anthropic/resources/beta/sessions/events.rb +21 -1
- data/lib/anthropic/resources/beta/sessions/resources.rb +26 -0
- data/lib/anthropic/resources/beta/sessions/threads/events.rb +15 -1
- data/lib/anthropic/resources/beta/sessions/threads.rb +16 -0
- data/lib/anthropic/resources/beta/sessions.rb +32 -0
- data/lib/anthropic/resources/beta/skills/versions.rb +17 -0
- data/lib/anthropic/resources/beta/skills.rb +12 -0
- data/lib/anthropic/resources/beta/tunnels/certificates.rb +20 -0
- data/lib/anthropic/resources/beta/tunnels.rb +18 -0
- data/lib/anthropic/resources/beta/user_profiles.rb +15 -0
- data/lib/anthropic/resources/beta/vaults/credentials.rb +38 -0
- data/lib/anthropic/resources/beta/vaults.rb +18 -0
- data/lib/anthropic/resources/completions.rb +5 -1
- data/lib/anthropic/resources/files.rb +15 -0
- data/lib/anthropic/resources/messages/batches.rb +19 -1
- data/lib/anthropic/resources/messages.rb +12 -4
- data/lib/anthropic/resources/models.rb +6 -0
- data/lib/anthropic/resources/organization/api_keys.rb +9 -0
- data/lib/anthropic/resources/organization/compliance_settings.rb +4 -0
- data/lib/anthropic/resources/organization/external_keys.rb +18 -0
- data/lib/anthropic/resources/organization/federation/issuers.rb +15 -0
- data/lib/anthropic/resources/organization/federation/rules/workspaces.rb +14 -0
- data/lib/anthropic/resources/organization/federation/rules.rb +15 -0
- data/lib/anthropic/resources/organization/invites.rb +12 -0
- data/lib/anthropic/resources/organization/rate_limits.rb +3 -0
- data/lib/anthropic/resources/organization/service_accounts/workspaces.rb +14 -0
- data/lib/anthropic/resources/organization/service_accounts.rb +15 -0
- data/lib/anthropic/resources/organization/users.rb +12 -0
- data/lib/anthropic/resources/organization/workspaces/members.rb +26 -0
- data/lib/anthropic/resources/organization/workspaces/rate_limits.rb +4 -0
- data/lib/anthropic/resources/organization/workspaces/service_accounts.rb +26 -0
- data/lib/anthropic/resources/organization/workspaces.rb +15 -0
- data/lib/anthropic/resources/organization.rb +2 -0
- data/lib/anthropic/resources/skills/versions.rb +14 -0
- data/lib/anthropic/resources/skills.rb +12 -0
- data/lib/anthropic/version.rb +1 -1
- data/lib/anthropic.rb +58 -0
- data/rbi/anthropic/client.rbi +28 -0
- data/rbi/anthropic/helpers/aws/client.rbi +6 -2
- data/rbi/anthropic/helpers/bedrock/client.rbi +6 -2
- data/rbi/anthropic/helpers/bedrock/mantle_client.rbi +6 -2
- data/rbi/anthropic/helpers/google_cloud/client.rbi +6 -2
- data/rbi/anthropic/helpers/streaming/message_stream.rbi +4 -1
- data/rbi/anthropic/helpers/vertex/client.rbi +6 -2
- data/rbi/anthropic/internal/tracing.rbi +847 -0
- data/rbi/anthropic/internal/transport/base_client.rbi +93 -5
- data/rbi/anthropic/internal/type/base_stream.rbi +2 -0
- data/rbi/anthropic/models/anthropic_beta.rbi +5 -0
- data/rbi/anthropic/models/beta/agent_create_params.rbi +34 -3
- data/rbi/anthropic/models/beta/agent_update_params.rbi +34 -3
- data/rbi/anthropic/models/beta/beta_fallback_param.rbi +3 -2
- data/rbi/anthropic/models/beta/beta_fallbacks_param.rbi +6 -2
- data/rbi/anthropic/models/beta/beta_managed_agents_agent.rbi +17 -0
- data/rbi/anthropic/models/beta/beta_managed_agents_agent_with_overrides_params.rbi +3 -3
- data/rbi/anthropic/models/beta/beta_managed_agents_aws_role_execution_identity.rbi +40 -0
- data/rbi/anthropic/models/beta/beta_managed_agents_aws_role_execution_identity_params.rbi +42 -0
- data/rbi/anthropic/models/beta/beta_managed_agents_execution_identity.rbi +85 -0
- data/rbi/anthropic/models/beta/beta_managed_agents_execution_identity_params.rbi +87 -0
- data/rbi/anthropic/models/beta/beta_managed_agents_model.rbi +0 -2
- data/rbi/anthropic/models/beta/beta_managed_agents_service_account_execution_identity.rbi +32 -0
- data/rbi/anthropic/models/beta/beta_managed_agents_service_account_execution_identity_params.rbi +33 -0
- data/rbi/anthropic/models/beta/beta_managed_agents_session_agent.rbi +19 -0
- data/rbi/anthropic/models/beta/beta_managed_agents_session_multiagent_coordinator.rbi +9 -0
- data/rbi/anthropic/models/beta/beta_managed_agents_session_thread_agent.rbi +19 -0
- data/rbi/anthropic/models/beta/beta_message_delta_usage.rbi +0 -2
- data/rbi/anthropic/models/beta/beta_thinking_config_adaptive.rbi +9 -6
- data/rbi/anthropic/models/beta/beta_thinking_config_enabled.rbi +9 -6
- data/rbi/anthropic/models/beta/beta_thinking_config_param.rbi +11 -9
- data/rbi/anthropic/models/beta/beta_usage.rbi +0 -2
- data/rbi/anthropic/models/beta/message_count_tokens_params.rbi +28 -18
- data/rbi/anthropic/models/beta/message_create_params.rbi +40 -22
- data/rbi/anthropic/models/beta/messages/batch_create_params.rbi +40 -22
- data/rbi/anthropic/models/beta/organization/beta_analytics_cost_bucketed_result.rbi +6 -6
- data/rbi/anthropic/models/beta/organization/beta_analytics_cost_users_item.rbi +6 -6
- data/rbi/anthropic/models/beta/organization/beta_analytics_usage_bucketed_result.rbi +6 -6
- data/rbi/anthropic/models/beta/organization/beta_analytics_usage_users_item.rbi +6 -6
- data/rbi/anthropic/models/beta/organization/beta_deleted_telemetry_destination.rbi +39 -0
- data/rbi/anthropic/models/beta/organization/beta_spend_limit.rbi +4 -4
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination.rbi +191 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_content_mode.rbi +53 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_delivery_health.rbi +106 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason.rbi +95 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_caller.rbi +31 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_invalid_address.rbi +39 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_redirect.rbi +33 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_sustained_failure.rbi +35 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_state.rbi +99 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_state_disabled.rbi +66 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_state_disabled_params.rbi +34 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_state_enabled.rbi +31 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_state_enabled_params.rbi +33 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_state_params.rbi +81 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_test_failure.rbi +47 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_test_response.rbi +62 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_test_result.rbi +88 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_test_success.rbi +31 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_traces.rbi +97 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_traces_params.rbi +120 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces.rbi +93 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_all.rbi +33 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_all_params.rbi +33 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_exclude.rbi +32 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_exclude_params.rbi +80 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_include.rbi +31 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_include_params.rbi +80 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_params.rbi +107 -0
- data/rbi/anthropic/models/beta/organization/invite_create_params.rbi +6 -3
- data/rbi/anthropic/models/beta/organization/spend_limit_list_params.rbi +2 -8
- data/rbi/anthropic/models/beta/organization/telemetry_destination_create_params.rbi +186 -0
- data/rbi/anthropic/models/beta/organization/telemetry_destination_delete_params.rbi +73 -0
- data/rbi/anthropic/models/beta/organization/telemetry_destination_list_params.rbi +114 -0
- data/rbi/anthropic/models/beta/organization/telemetry_destination_retrieve_params.rbi +73 -0
- data/rbi/anthropic/models/beta/organization/telemetry_destination_test_params.rbi +73 -0
- data/rbi/anthropic/models/beta/organization/telemetry_destination_update_params.rbi +264 -0
- data/rbi/anthropic/models/beta/organization/telemetry_destinations/beta_deleted_telemetry_destination_workspace.rbi +61 -0
- data/rbi/anthropic/models/beta/organization/telemetry_destinations/beta_telemetry_destination_workspace.rbi +73 -0
- data/rbi/anthropic/models/beta/organization/telemetry_destinations/workspace_add_params.rbi +84 -0
- data/rbi/anthropic/models/beta/organization/telemetry_destinations/workspace_list_params.rbi +100 -0
- data/rbi/anthropic/models/beta/organization/telemetry_destinations/workspace_remove_params.rbi +84 -0
- data/rbi/anthropic/models/beta/organization/user_update_params.rbi +6 -3
- data/rbi/anthropic/models/beta/sessions/beta_managed_agents_agent_custom_tool_use_event.rbi +3 -1
- data/rbi/anthropic/models/beta/sessions/beta_managed_agents_event_params.rbi +2 -2
- data/rbi/anthropic/models/beta/sessions/beta_managed_agents_inline_agent.rbi +17 -0
- data/rbi/anthropic/models/beta/sessions/beta_managed_agents_send_session_events.rbi +2 -2
- data/rbi/anthropic/models/beta/sessions/beta_managed_agents_session_event.rbi +2 -2
- data/rbi/anthropic/models/beta/sessions/beta_managed_agents_session_thread.rbi +9 -0
- data/rbi/anthropic/models/beta/sessions/beta_managed_agents_stream_session_events.rbi +2 -2
- data/rbi/anthropic/models/beta/sessions/beta_managed_agents_stream_session_thread_events.rbi +2 -2
- data/rbi/anthropic/models/beta/sessions/beta_managed_agents_user_custom_tool_result_event.rbi +4 -4
- data/rbi/anthropic/models/beta/sessions/beta_managed_agents_user_custom_tool_result_event_params.rbi +4 -4
- data/rbi/anthropic/models/message_count_tokens_params.rbi +28 -18
- data/rbi/anthropic/models/message_create_params.rbi +28 -18
- data/rbi/anthropic/models/messages/batch_create_params.rbi +28 -18
- data/rbi/anthropic/models/model.rbi +0 -2
- data/rbi/anthropic/models/organization/invite_create_params.rbi +6 -3
- data/rbi/anthropic/models/organization/user_update_params.rbi +6 -3
- data/rbi/anthropic/models/thinking_config_adaptive.rbi +9 -6
- data/rbi/anthropic/models/thinking_config_enabled.rbi +9 -6
- data/rbi/anthropic/models/thinking_config_param.rbi +11 -9
- data/rbi/anthropic/request_options.rbi +5 -0
- data/rbi/anthropic/resources/beta/agents.rbi +22 -2
- data/rbi/anthropic/resources/beta/messages/batches.rbi +2 -1
- data/rbi/anthropic/resources/beta/messages.rbi +56 -32
- data/rbi/anthropic/resources/beta/organization/invites.rbi +2 -1
- data/rbi/anthropic/resources/beta/organization/spend_limits/effective.rbi +2 -2
- data/rbi/anthropic/resources/beta/organization/spend_limits.rbi +5 -10
- data/rbi/anthropic/resources/beta/organization/telemetry_destinations/workspaces.rbi +124 -0
- data/rbi/anthropic/resources/beta/organization/telemetry_destinations.rbi +300 -0
- data/rbi/anthropic/resources/beta/organization/users.rbi +2 -1
- data/rbi/anthropic/resources/beta/organization.rbi +7 -0
- data/rbi/anthropic/resources/beta/sessions/events.rbi +2 -1
- data/rbi/anthropic/resources/beta/sessions/threads/events.rbi +2 -1
- data/rbi/anthropic/resources/completions.rbi +6 -1
- data/rbi/anthropic/resources/messages/batches.rbi +2 -1
- data/rbi/anthropic/resources/messages.rbi +44 -28
- data/rbi/anthropic/resources/organization/invites.rbi +2 -1
- data/rbi/anthropic/resources/organization/users.rbi +2 -1
- data/sig/anthropic/client.rbs +1 -0
- data/sig/anthropic/helpers/bedrock/client.rbs +2 -1
- data/sig/anthropic/helpers/google_cloud/client.rbs +2 -1
- data/sig/anthropic/helpers/streaming/message_stream.rbs +2 -2
- data/sig/anthropic/helpers/vertex/client.rbs +2 -1
- data/sig/anthropic/internal/tracing.rbs +477 -0
- data/sig/anthropic/internal/transport/base_client.rbs +37 -2
- data/sig/anthropic/internal/type/base_stream.rbs +1 -1
- data/sig/anthropic/models/anthropic_beta.rbs +2 -0
- data/sig/anthropic/models/beta/agent_create_params.rbs +5 -0
- data/sig/anthropic/models/beta/agent_update_params.rbs +5 -0
- data/sig/anthropic/models/beta/beta_managed_agents_agent.rbs +5 -0
- data/sig/anthropic/models/beta/beta_managed_agents_aws_role_execution_identity.rbs +20 -0
- data/sig/anthropic/models/beta/beta_managed_agents_aws_role_execution_identity_params.rbs +20 -0
- data/sig/anthropic/models/beta/beta_managed_agents_execution_identity.rbs +42 -0
- data/sig/anthropic/models/beta/beta_managed_agents_execution_identity_params.rbs +42 -0
- data/sig/anthropic/models/beta/beta_managed_agents_model.rbs +0 -2
- data/sig/anthropic/models/beta/beta_managed_agents_service_account_execution_identity.rbs +18 -0
- data/sig/anthropic/models/beta/beta_managed_agents_service_account_execution_identity_params.rbs +18 -0
- data/sig/anthropic/models/beta/beta_managed_agents_session_agent.rbs +5 -0
- data/sig/anthropic/models/beta/beta_managed_agents_session_multiagent_coordinator.rbs +2 -0
- data/sig/anthropic/models/beta/beta_managed_agents_session_thread_agent.rbs +5 -0
- data/sig/anthropic/models/beta/organization/beta_deleted_telemetry_destination.rbs +23 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination.rbs +74 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_content_mode.rbs +23 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_delivery_health.rbs +30 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason.rbs +51 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_caller.rbs +18 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_invalid_address.rbs +18 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_redirect.rbs +18 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_sustained_failure.rbs +18 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_state.rbs +42 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_state_disabled.rbs +29 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_state_disabled_params.rbs +18 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_state_enabled.rbs +17 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_state_enabled_params.rbs +18 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_state_params.rbs +40 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_test_failure.rbs +20 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_test_response.rbs +29 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_test_result.rbs +42 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_test_success.rbs +17 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_traces.rbs +39 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_traces_params.rbs +41 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces.rbs +45 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_all.rbs +17 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_all_params.rbs +17 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_exclude.rbs +17 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_exclude_params.rbs +25 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_include.rbs +17 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_include_params.rbs +25 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_params.rbs +48 -0
- data/sig/anthropic/models/beta/organization/telemetry_destination_create_params.rbs +65 -0
- data/sig/anthropic/models/beta/organization/telemetry_destination_delete_params.rbs +39 -0
- data/sig/anthropic/models/beta/organization/telemetry_destination_list_params.rbs +55 -0
- data/sig/anthropic/models/beta/organization/telemetry_destination_retrieve_params.rbs +39 -0
- data/sig/anthropic/models/beta/organization/telemetry_destination_test_params.rbs +39 -0
- data/sig/anthropic/models/beta/organization/telemetry_destination_update_params.rbs +79 -0
- data/sig/anthropic/models/beta/organization/telemetry_destinations/beta_deleted_telemetry_destination_workspace.rbs +36 -0
- data/sig/anthropic/models/beta/organization/telemetry_destinations/beta_telemetry_destination_workspace.rbs +41 -0
- data/sig/anthropic/models/beta/organization/telemetry_destinations/workspace_add_params.rbs +46 -0
- data/sig/anthropic/models/beta/organization/telemetry_destinations/workspace_list_params.rbs +55 -0
- data/sig/anthropic/models/beta/organization/telemetry_destinations/workspace_remove_params.rbs +46 -0
- data/sig/anthropic/models/beta/sessions/beta_managed_agents_inline_agent.rbs +5 -0
- data/sig/anthropic/models/beta/sessions/beta_managed_agents_session_thread.rbs +3 -0
- data/sig/anthropic/models/model.rbs +0 -2
- data/sig/anthropic/request_options.rbs +3 -0
- data/sig/anthropic/resources/beta/agents.rbs +2 -0
- data/sig/anthropic/resources/beta/messages/batches.rbs +1 -1
- data/sig/anthropic/resources/beta/messages.rbs +1 -1
- data/sig/anthropic/resources/beta/organization/telemetry_destinations/workspaces.rbs +35 -0
- data/sig/anthropic/resources/beta/organization/telemetry_destinations.rbs +61 -0
- data/sig/anthropic/resources/beta/organization.rbs +2 -0
- data/sig/anthropic/resources/beta/sessions/events.rbs +1 -1
- data/sig/anthropic/resources/beta/sessions/threads/events.rbs +1 -1
- data/sig/anthropic/resources/completions.rbs +1 -1
- data/sig/anthropic/resources/messages/batches.rbs +1 -1
- data/sig/anthropic/resources/messages.rbs +1 -1
- metadata +178 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 74e6cbcdcbbf6d31ad5a08947e0b061fb8be75a367c6be4aac63cf7a715279fc
|
|
4
|
+
data.tar.gz: 9dcb1523d20c8af4dce1dadd9d6387f6dca92c0c2c8647eed98caa4a1e915197
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4d5532e5feec100f1edd36c35e00bc9b61192624fcd785710373fcb439fdc300cc0b499142df492bdc92098ebfe4a29ec36216fb0e8636f0c0e272c42865cdd0
|
|
7
|
+
data.tar.gz: 734afbe0a5d61ca96d6872c8ac7ee0ec771ac76b07349843b826e14cad1afa8a46619ed6ee416b3ba48405c4f3453800a174f15fe75f7e78a8f774b3384f979b
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.79.0](https://github.com/anthropics/anthropic-sdk-ruby/compare/v1.78.0...v1.79.0) (2026-10-14)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* **api:** add execution_identity to Managed Agents agents
|
|
8
|
+
* **api:** add organization_type_not_supported error to spend limit lists
|
|
9
|
+
* **api:** add telemetry destination test endpoint
|
|
10
|
+
* **api:** add telemetry destinations to the Admin API
|
|
11
|
+
* **client:** add OpenTelemetry tracing for API calls, streaming and tool runs, on by default: once the application registers a tracer provider each call emits a span, and each request carries the trace context in the headers of the registered propagator, such as `traceparent`. `open_telemetry: false` or `ANTHROPIC_OPEN_TELEMETRY=false` turns both off, and `open_telemetry: {propagation: false}` or `ANTHROPIC_OPEN_TELEMETRY_PROPAGATION=false` only the headers, where a variable applies only to a client that is given no `open_telemetry` option. Adds the dependency `opentelemetry-api` (`>= 1.2.4`, `< 2`)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
|
|
16
|
+
* **api:** rename telemetry destination test response model
|
|
17
|
+
* **client:** ignore OpenTelemetry env vars when the option is set
|
|
18
|
+
* **client:** keep the discriminator when a union's .new builds a variant
|
|
19
|
+
* **streaming:** keep every field of a tool use block when attaching its parsed input
|
|
20
|
+
* **streaming:** pass events of an unknown type through the message stream helper untouched
|
|
21
|
+
* **tools:** name the toolset on the tool runner's result for a toolset member's call
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### Chores
|
|
25
|
+
|
|
26
|
+
* **docs:** correct prefill, thinking, fallback and model descriptions
|
|
27
|
+
* **docs:** document the scope required to assign the managed role
|
|
28
|
+
* **docs:** update model examples
|
|
29
|
+
* include the license files in the published packages
|
|
30
|
+
* **internal:** narrow the tripwire test rule in the contributor guides
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Documentation
|
|
34
|
+
|
|
35
|
+
* **api:** clarify when custom tool results can be sent
|
|
36
|
+
* **api:** say is_enabled is always true for user spend limits
|
|
37
|
+
|
|
3
38
|
## [1.78.0](https://github.com/anthropics/anthropic-sdk-ruby/compare/v1.77.1...v1.78.0) (2026-10-09)
|
|
4
39
|
|
|
5
40
|
### Features
|
data/LICENSE
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
Copyright 2023 Anthropic, PBC.
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
4
|
+
|
|
5
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
6
|
+
|
|
7
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
8
|
+
|
data/README.md
CHANGED
|
@@ -15,7 +15,7 @@ Add to your application's Gemfile:
|
|
|
15
15
|
<!-- x-release-please-start-version -->
|
|
16
16
|
|
|
17
17
|
```ruby
|
|
18
|
-
gem "anthropic", "~> 1.
|
|
18
|
+
gem "anthropic", "~> 1.79.0"
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
<!-- x-release-please-end -->
|
|
@@ -44,6 +44,47 @@ puts(message.content)
|
|
|
44
44
|
|
|
45
45
|
Ruby 3.2.0+
|
|
46
46
|
|
|
47
|
+
## OpenTelemetry
|
|
48
|
+
|
|
49
|
+
Spans are on by default.
|
|
50
|
+
Register a tracer provider with OpenTelemetry, for example with `OpenTelemetry::SDK.configure`, and every client reports each API call as a span.
|
|
51
|
+
No client option is needed.
|
|
52
|
+
Each request also carries the trace context in the headers that the registered propagator writes, such as `traceparent`, with or without a tracer provider.
|
|
53
|
+
|
|
54
|
+
The `open_telemetry` client option changes the default:
|
|
55
|
+
|
|
56
|
+
- `open_telemetry: {tracer_provider: provider}` uses `provider` instead of the registered tracer provider.
|
|
57
|
+
- `open_telemetry: {propagation: false}` sends no trace context headers, such as `traceparent` and `baggage`, with the client's requests.
|
|
58
|
+
It is for an application whose HTTP client instrumentation already sends them, so that a request does not carry them twice. The spans are unaffected.
|
|
59
|
+
- `open_telemetry: false` turns the spans and the trace context headers off. It is short for `{traces: false}`, which is short for `{traces: {enabled: false}}`.
|
|
60
|
+
- `open_telemetry: {traces: {content_mode: :content}}` adds the messages, stop sequences, and tool calls to the spans.
|
|
61
|
+
It also adds `url.query` and `url.full` to the span of a request whose query has an `email`, `path_prefix` or `expected_content_sha256` parameter, which has neither otherwise.
|
|
62
|
+
- `open_telemetry: {traces: {max_content_bytes: 65_536}}` sets the most bytes of content that one span holds, in place of 0.75 MB.
|
|
63
|
+
A span whose content is cut to fit has `anthropic.content.truncated`.
|
|
64
|
+
|
|
65
|
+
`open_telemetry: true` is short for `{traces: true}`, and `traces: true` is short for `traces: {enabled: true}`.
|
|
66
|
+
With `enabled: false`, the other keys of `traces` are unused.
|
|
67
|
+
What the option leaves unset has its default.
|
|
68
|
+
|
|
69
|
+
A client that is given no `open_telemetry` option reads the environment when it is made: `ANTHROPIC_OPEN_TELEMETRY=false` turns its spans and the trace context headers off, `ANTHROPIC_OPEN_TELEMETRY_PROPAGATION=false` turns only the headers off, `ANTHROPIC_OPEN_TELEMETRY_TRACES_CONTENT_MODE=content` adds the content, and `ANTHROPIC_OPEN_TELEMETRY_TRACES_MAX_CONTENT_BYTES=65536` sets the most bytes.
|
|
70
|
+
A client that is given the option, even `true` or `{}`, reads none of these variables: `open_telemetry: true` turns the spans on whatever `ANTHROPIC_OPEN_TELEMETRY` says.
|
|
71
|
+
|
|
72
|
+
The keys of the option, and of its `traces`, can be Symbols or Strings, and a key that the option does not have raises `ArgumentError`.
|
|
73
|
+
So does a `propagation` other than `true` or `false`, a `content_mode` other than `:metadata_only` or `:content`, and a `max_content_bytes` that is not an Integer of 1 or more.
|
|
74
|
+
An environment variable with such a value is ignored.
|
|
75
|
+
|
|
76
|
+
One request option sets `gen_ai.conversation.id` on the span of a call:
|
|
77
|
+
|
|
78
|
+
```ruby
|
|
79
|
+
anthropic.messages.create(**params, request_options: {open_telemetry: {conversation_id: id}})
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
`conversation_id` is the only key of the request option, and any other key raises `ArgumentError`: the tracer provider, `propagation` and the `traces` settings belong to the client.
|
|
83
|
+
Without it, the span of a request to a Session thread, such as `beta.sessions.threads.retrieve`, has the thread's ID as its `gen_ai.conversation.id`.
|
|
84
|
+
|
|
85
|
+
In the content mode, the content of a streamed response comes from the message that `messages.stream` accumulates.
|
|
86
|
+
The span of a `messages.stream_raw` call has the request's content only.
|
|
87
|
+
|
|
47
88
|
## Contributing
|
|
48
89
|
|
|
49
90
|
See [CONTRIBUTING.md](./CONTRIBUTING.md).
|
data/lib/anthropic/client.rb
CHANGED
|
@@ -190,6 +190,36 @@ module Anthropic
|
|
|
190
190
|
# @param timeout [Float, nil] Request timeout in seconds. Defaults to
|
|
191
191
|
# `Anthropic::Client::DEFAULT_TIMEOUT_IN_SECONDS` when `nil`.
|
|
192
192
|
#
|
|
193
|
+
# @param open_telemetry [Hash{Symbol=>Object}, Boolean, nil] OpenTelemetry tracing of this client's API calls. Each call emits a span when
|
|
194
|
+
# the application has registered a tracer provider with the OpenTelemetry API.
|
|
195
|
+
# `true` and `false` are short for `{traces: true}` and `{traces: false}`. Keys
|
|
196
|
+
# can be Strings, and an unknown key raises `ArgumentError`. A client that is
|
|
197
|
+
# given no option reads `ENV["ANTHROPIC_OPEN_TELEMETRY"]`, where `false` is
|
|
198
|
+
# `open_telemetry: false`, `ENV["ANTHROPIC_OPEN_TELEMETRY_PROPAGATION"]`, where
|
|
199
|
+
# `false` is `propagation: false`,
|
|
200
|
+
# `ENV["ANTHROPIC_OPEN_TELEMETRY_TRACES_CONTENT_MODE"]` and
|
|
201
|
+
# `ENV["ANTHROPIC_OPEN_TELEMETRY_TRACES_MAX_CONTENT_BYTES"]`. A client that is
|
|
202
|
+
# given the option, even `true` or `{}`, reads none of them.
|
|
203
|
+
#
|
|
204
|
+
# @option open_telemetry [#tracer] :tracer_provider Used in place of the registered tracer provider.
|
|
205
|
+
#
|
|
206
|
+
# @option open_telemetry [Boolean] :propagation `false` sends no trace context headers, such as `traceparent`, with this
|
|
207
|
+
# client's requests, for an application whose HTTP client instrumentation already
|
|
208
|
+
# sends them, so that a request does not carry them twice. The spans are
|
|
209
|
+
# unaffected. Defaults to `true`.
|
|
210
|
+
#
|
|
211
|
+
# @option open_telemetry [Hash{Symbol=>Object}, Boolean] :traces The settings of the spans. `true` and `false` are short for `{enabled: true}`
|
|
212
|
+
# and `{enabled: false}`. Its keys:
|
|
213
|
+
#
|
|
214
|
+
# - `:enabled` (Boolean): `false` disables the spans, and the other keys are then
|
|
215
|
+
# unused. Defaults to `true`.
|
|
216
|
+
# - `:content_mode` (Symbol, String): `:content` adds the content of requests and
|
|
217
|
+
# responses to the spans, and `:metadata_only` does not. Defaults to
|
|
218
|
+
# `:metadata_only`.
|
|
219
|
+
# - `:max_content_bytes` (Integer): the most bytes of content that one span holds,
|
|
220
|
+
# 1 or more. Content over the bound is cut, and the span then has
|
|
221
|
+
# `anthropic.content.truncated`. Defaults to 0.75 MB.
|
|
222
|
+
#
|
|
193
223
|
# @param initial_retry_delay [Float]
|
|
194
224
|
#
|
|
195
225
|
# @param max_retry_delay [Float]
|
|
@@ -207,6 +237,7 @@ module Anthropic
|
|
|
207
237
|
proxy: nil,
|
|
208
238
|
max_retries: self.class::DEFAULT_MAX_RETRIES,
|
|
209
239
|
timeout: nil,
|
|
240
|
+
open_telemetry: nil,
|
|
210
241
|
initial_retry_delay: self.class::DEFAULT_INITIAL_RETRY_DELAY,
|
|
211
242
|
max_retry_delay: self.class::DEFAULT_MAX_RETRY_DELAY,
|
|
212
243
|
middleware: nil
|
|
@@ -298,6 +329,7 @@ module Anthropic
|
|
|
298
329
|
base_url: base_url,
|
|
299
330
|
proxy: proxy,
|
|
300
331
|
timeout: timeout,
|
|
332
|
+
open_telemetry: open_telemetry,
|
|
301
333
|
max_retries: max_retries,
|
|
302
334
|
initial_retry_delay: initial_retry_delay,
|
|
303
335
|
max_retry_delay: max_retry_delay,
|
|
@@ -54,6 +54,9 @@ module Anthropic
|
|
|
54
54
|
#
|
|
55
55
|
# @param max_retry_delay [Float]
|
|
56
56
|
#
|
|
57
|
+
# @param open_telemetry [Hash{Symbol=>Object}, Boolean, nil] OpenTelemetry tracing of this
|
|
58
|
+
# client's API calls. See {Anthropic::Client#initialize}.
|
|
59
|
+
#
|
|
57
60
|
def initialize(
|
|
58
61
|
api_key: nil,
|
|
59
62
|
aws_access_key: nil,
|
|
@@ -67,7 +70,8 @@ module Anthropic
|
|
|
67
70
|
max_retries: self.class::DEFAULT_MAX_RETRIES,
|
|
68
71
|
timeout: nil,
|
|
69
72
|
initial_retry_delay: self.class::DEFAULT_INITIAL_RETRY_DELAY,
|
|
70
|
-
max_retry_delay: self.class::DEFAULT_MAX_RETRY_DELAY
|
|
73
|
+
max_retry_delay: self.class::DEFAULT_MAX_RETRY_DELAY,
|
|
74
|
+
open_telemetry: nil
|
|
71
75
|
)
|
|
72
76
|
effective_api_key, resolved_base_url = setup_aws_auth(
|
|
73
77
|
api_key: api_key,
|
|
@@ -96,10 +100,16 @@ module Anthropic
|
|
|
96
100
|
timeout: timeout,
|
|
97
101
|
max_retries: max_retries,
|
|
98
102
|
initial_retry_delay: initial_retry_delay,
|
|
99
|
-
max_retry_delay: max_retry_delay
|
|
103
|
+
max_retry_delay: max_retry_delay,
|
|
104
|
+
open_telemetry: open_telemetry
|
|
100
105
|
)
|
|
101
106
|
end
|
|
102
107
|
|
|
108
|
+
# @api private
|
|
109
|
+
#
|
|
110
|
+
# @return [String]
|
|
111
|
+
private def open_telemetry_scope = "#{super}.aws"
|
|
112
|
+
|
|
103
113
|
# @api private
|
|
104
114
|
#
|
|
105
115
|
# @return [#call]
|
|
@@ -185,6 +185,10 @@ module Anthropic
|
|
|
185
185
|
# a `StringIO`, which the terminal's encoding passes through untouched,
|
|
186
186
|
# so the signed payload is exactly the bytes that go over the wire.
|
|
187
187
|
#
|
|
188
|
+
# The headers that carry a trace context are sent but not signed: an HTTP
|
|
189
|
+
# instrumentation may replace them with the context of its own span after
|
|
190
|
+
# this, which would invalidate a signature that covered them.
|
|
191
|
+
#
|
|
188
192
|
# @param req [Anthropic::APIRequest]
|
|
189
193
|
# @return [Anthropic::APIRequest]
|
|
190
194
|
private def sign_aws_request(req)
|
|
@@ -201,7 +205,10 @@ module Anthropic
|
|
|
201
205
|
StringIO.new(encoded.to_s)
|
|
202
206
|
end
|
|
203
207
|
|
|
204
|
-
|
|
208
|
+
# The propagator is read per request: the application may register it after it makes the client.
|
|
209
|
+
unsigned = %w[traceparent tracestate baggage] | Anthropic::Internal::Tracing.trace_header_names(nil)
|
|
210
|
+
signable = headers.reject { |name, _| unsigned.include?(name.to_s.downcase) }
|
|
211
|
+
signed = @signer.sign_request(http_method: req.method, url: req.url, body: body, headers: signable)
|
|
205
212
|
headers = Anthropic::Internal::Util.normalized_headers(headers, signed.headers)
|
|
206
213
|
headers.delete("connection")
|
|
207
214
|
req.with(headers: headers, body: body)
|
|
@@ -61,6 +61,9 @@ module Anthropic
|
|
|
61
61
|
# the Bedrock URL rewrite and SigV4 signing happen inside the continuation, per
|
|
62
62
|
# attempt.
|
|
63
63
|
#
|
|
64
|
+
# @param open_telemetry [Hash{Symbol=>Object}, Boolean, nil] OpenTelemetry tracing of this
|
|
65
|
+
# client's API calls. See {Anthropic::Client#initialize}.
|
|
66
|
+
#
|
|
64
67
|
def initialize(
|
|
65
68
|
aws_region: nil,
|
|
66
69
|
base_url: nil,
|
|
@@ -73,7 +76,8 @@ module Anthropic
|
|
|
73
76
|
aws_session_token: nil,
|
|
74
77
|
aws_profile: nil,
|
|
75
78
|
api_key: nil,
|
|
76
|
-
middleware: nil
|
|
79
|
+
middleware: nil,
|
|
80
|
+
open_telemetry: nil
|
|
77
81
|
)
|
|
78
82
|
api_key ||= ENV["AWS_BEARER_TOKEN_BEDROCK"]
|
|
79
83
|
|
|
@@ -140,7 +144,8 @@ module Anthropic
|
|
|
140
144
|
max_retries: max_retries,
|
|
141
145
|
initial_retry_delay: initial_retry_delay,
|
|
142
146
|
max_retry_delay: max_retry_delay,
|
|
143
|
-
middleware: middleware
|
|
147
|
+
middleware: middleware,
|
|
148
|
+
open_telemetry: open_telemetry
|
|
144
149
|
)
|
|
145
150
|
end
|
|
146
151
|
|
|
@@ -206,6 +211,18 @@ module Anthropic
|
|
|
206
211
|
super
|
|
207
212
|
end
|
|
208
213
|
|
|
214
|
+
# @api private
|
|
215
|
+
#
|
|
216
|
+
# @return [Hash{String=>String}]
|
|
217
|
+
def open_telemetry_attributes
|
|
218
|
+
{**super, Anthropic::Internal::Tracing::GEN_AI_PROVIDER_NAME => "aws.bedrock"}
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
# @api private
|
|
222
|
+
#
|
|
223
|
+
# @return [String]
|
|
224
|
+
private def open_telemetry_scope = "#{super}.bedrock"
|
|
225
|
+
|
|
209
226
|
# @api private
|
|
210
227
|
#
|
|
211
228
|
# The Bedrock provider middleware: rewrites the canonical request into
|
|
@@ -58,6 +58,9 @@ module Anthropic
|
|
|
58
58
|
#
|
|
59
59
|
# @param max_retry_delay [Float]
|
|
60
60
|
#
|
|
61
|
+
# @param open_telemetry [Hash{Symbol=>Object}, Boolean, nil] OpenTelemetry tracing of this
|
|
62
|
+
# client's API calls. See {Anthropic::Client#initialize}.
|
|
63
|
+
#
|
|
61
64
|
def initialize(
|
|
62
65
|
api_key: nil,
|
|
63
66
|
aws_access_key: nil,
|
|
@@ -70,7 +73,8 @@ module Anthropic
|
|
|
70
73
|
max_retries: self.class::DEFAULT_MAX_RETRIES,
|
|
71
74
|
timeout: nil,
|
|
72
75
|
initial_retry_delay: self.class::DEFAULT_INITIAL_RETRY_DELAY,
|
|
73
|
-
max_retry_delay: self.class::DEFAULT_MAX_RETRY_DELAY
|
|
76
|
+
max_retry_delay: self.class::DEFAULT_MAX_RETRY_DELAY,
|
|
77
|
+
open_telemetry: nil
|
|
74
78
|
)
|
|
75
79
|
effective_api_key, resolved_base_url = setup_aws_auth(
|
|
76
80
|
api_key: api_key,
|
|
@@ -94,7 +98,8 @@ module Anthropic
|
|
|
94
98
|
max_retries: max_retries,
|
|
95
99
|
timeout: timeout,
|
|
96
100
|
initial_retry_delay: initial_retry_delay,
|
|
97
|
-
max_retry_delay: max_retry_delay
|
|
101
|
+
max_retry_delay: max_retry_delay,
|
|
102
|
+
open_telemetry: open_telemetry
|
|
98
103
|
)
|
|
99
104
|
|
|
100
105
|
# Only initialize supported resources
|
|
@@ -126,6 +131,18 @@ module Anthropic
|
|
|
126
131
|
"Skills are not supported on Bedrock Mantle. Only Messages (/v1/messages) is supported."
|
|
127
132
|
end
|
|
128
133
|
|
|
134
|
+
# @api private
|
|
135
|
+
#
|
|
136
|
+
# @return [Hash{String=>String}]
|
|
137
|
+
def open_telemetry_attributes
|
|
138
|
+
{**super, Anthropic::Internal::Tracing::GEN_AI_PROVIDER_NAME => "aws.bedrock"}
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
# @api private
|
|
142
|
+
#
|
|
143
|
+
# @return [String]
|
|
144
|
+
private def open_telemetry_scope = "#{super}.bedrock"
|
|
145
|
+
|
|
129
146
|
# @api private
|
|
130
147
|
#
|
|
131
148
|
# @return [#call]
|
|
@@ -87,6 +87,9 @@ module Anthropic
|
|
|
87
87
|
# is applied per attempt, after user middleware.
|
|
88
88
|
#
|
|
89
89
|
# @raise [ArgumentError]
|
|
90
|
+
#
|
|
91
|
+
# @param open_telemetry [Hash{Symbol=>Object}, Boolean, nil] OpenTelemetry tracing of this
|
|
92
|
+
# client's API calls. See {Anthropic::Client#initialize}.
|
|
90
93
|
def initialize(
|
|
91
94
|
project: ENV["ANTHROPIC_GOOGLE_CLOUD_PROJECT"] || ENV["GOOGLE_CLOUD_PROJECT"],
|
|
92
95
|
location: ENV["ANTHROPIC_GOOGLE_CLOUD_LOCATION"] || "global",
|
|
@@ -99,7 +102,8 @@ module Anthropic
|
|
|
99
102
|
timeout: nil,
|
|
100
103
|
initial_retry_delay: self.class::DEFAULT_INITIAL_RETRY_DELAY,
|
|
101
104
|
max_retry_delay: self.class::DEFAULT_MAX_RETRY_DELAY,
|
|
102
|
-
middleware: nil
|
|
105
|
+
middleware: nil,
|
|
106
|
+
open_telemetry: nil
|
|
103
107
|
)
|
|
104
108
|
if skip_auth && (token_provider || google_credentials)
|
|
105
109
|
raise ArgumentError.new(
|
|
@@ -151,7 +155,8 @@ module Anthropic
|
|
|
151
155
|
max_retries: max_retries,
|
|
152
156
|
initial_retry_delay: initial_retry_delay,
|
|
153
157
|
max_retry_delay: max_retry_delay,
|
|
154
|
-
middleware: middleware
|
|
158
|
+
middleware: middleware,
|
|
159
|
+
open_telemetry: open_telemetry
|
|
155
160
|
)
|
|
156
161
|
end
|
|
157
162
|
|
|
@@ -180,6 +185,11 @@ module Anthropic
|
|
|
180
185
|
# @return [Hash{String=>String}]
|
|
181
186
|
private def auth_headers = {}
|
|
182
187
|
|
|
188
|
+
# @api private
|
|
189
|
+
#
|
|
190
|
+
# @return [String]
|
|
191
|
+
private def open_telemetry_scope = "#{super}.google_cloud"
|
|
192
|
+
|
|
183
193
|
# @api private
|
|
184
194
|
#
|
|
185
195
|
# The Google Cloud provider middleware: applies the Google OAuth
|
|
@@ -22,12 +22,20 @@ module Anthropic
|
|
|
22
22
|
#
|
|
23
23
|
# @return [Enumerable<generic<Elem>>]
|
|
24
24
|
private def iterator
|
|
25
|
-
|
|
25
|
+
# Closing this stream closes the raw stream, which ends the request.
|
|
26
|
+
@iterator ||= Anthropic::Internal::Util.chain_fused(@raw_stream.to_enum) do |y|
|
|
26
27
|
@raw_stream.each do |raw_event|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
# An event of a type this version doesn't know arrives as the closest known class, with
|
|
29
|
+
# `type` left as a String.
|
|
30
|
+
unless raw_event.type.is_a?(Symbol)
|
|
31
|
+
y << raw_event
|
|
32
|
+
next
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
@accumated_message_snapshot =
|
|
36
|
+
Anthropic::Helpers::Tracing.accumulate_streamed_message(@raw_stream) do
|
|
37
|
+
accumulate_event(event: raw_event, current_snapshot: @accumated_message_snapshot)
|
|
38
|
+
end
|
|
31
39
|
events_to_yield = build_events(event: raw_event, message_snapshot: @accumated_message_snapshot)
|
|
32
40
|
events_to_yield.each(&y)
|
|
33
41
|
end
|
|
@@ -96,18 +104,11 @@ module Anthropic
|
|
|
96
104
|
raise ArgumentError.new(message)
|
|
97
105
|
end
|
|
98
106
|
|
|
99
|
-
if current_snapshot.nil?
|
|
100
|
-
return event.message if event.type == :message_start
|
|
101
|
-
|
|
102
|
-
message = "Unexpected event order, got \"#{event.type}\" before \":message_start\""
|
|
103
|
-
raise RuntimeError.new(message)
|
|
104
|
-
end
|
|
105
|
-
|
|
106
107
|
case event
|
|
107
108
|
in Anthropic::Models::RawMessageStartEvent
|
|
108
|
-
# `coerce` returns `event.message` itself when it is already a Message
|
|
109
|
-
#
|
|
110
|
-
#
|
|
109
|
+
# `coerce` returns `event.message` itself when it is already a Message, so the snapshot *is*
|
|
110
|
+
# the message_start event's message and the branches below mutate it in place rather than
|
|
111
|
+
# an isolated copy.
|
|
111
112
|
return Anthropic::Internal::Type::Converter.coerce(Anthropic::Models::Message, event.message)
|
|
112
113
|
in Anthropic::Models::BetaRawMessageStartEvent
|
|
113
114
|
return Anthropic::Internal::Type::Converter.coerce(Anthropic::Models::BetaMessage, event.message)
|
|
@@ -316,6 +317,7 @@ module Anthropic
|
|
|
316
317
|
# @api private
|
|
317
318
|
#
|
|
318
319
|
# Parse tool use blocks and text blocks with structured output in the message.
|
|
320
|
+
# A block is kept as it arrived, with only `parsed` added to it.
|
|
319
321
|
#
|
|
320
322
|
# @param message [Anthropic::Models::Message] The message to parse
|
|
321
323
|
#
|
|
@@ -324,7 +326,7 @@ module Anthropic
|
|
|
324
326
|
return message unless message&.content
|
|
325
327
|
|
|
326
328
|
# rubocop:disable Metrics/BlockLength
|
|
327
|
-
message.content.
|
|
329
|
+
message.content.each do |content|
|
|
328
330
|
case content.type
|
|
329
331
|
when :tool_use
|
|
330
332
|
next unless (tool = @tools[content.name])
|
|
@@ -342,20 +344,7 @@ module Anthropic
|
|
|
342
344
|
e
|
|
343
345
|
end
|
|
344
346
|
|
|
345
|
-
|
|
346
|
-
case content
|
|
347
|
-
in Anthropic::ContentBlock
|
|
348
|
-
Anthropic::Models::ToolUseBlock
|
|
349
|
-
else
|
|
350
|
-
Anthropic::Models::BetaToolUseBlock
|
|
351
|
-
end
|
|
352
|
-
message.content[index] = cls.new(
|
|
353
|
-
id: content.id,
|
|
354
|
-
input: content.input,
|
|
355
|
-
name: content.name,
|
|
356
|
-
type: content.type,
|
|
357
|
-
parsed: parsed
|
|
358
|
-
)
|
|
347
|
+
content.parsed = parsed
|
|
359
348
|
when :text
|
|
360
349
|
next unless (model = @models.first&.last)
|
|
361
350
|
|
|
@@ -367,19 +356,7 @@ module Anthropic
|
|
|
367
356
|
{error: e.message}
|
|
368
357
|
end
|
|
369
358
|
|
|
370
|
-
|
|
371
|
-
case content
|
|
372
|
-
in Anthropic::ContentBlock
|
|
373
|
-
Anthropic::Models::TextBlock
|
|
374
|
-
else
|
|
375
|
-
Anthropic::Models::BetaTextBlock
|
|
376
|
-
end
|
|
377
|
-
message.content[index] = cls.new(
|
|
378
|
-
citations: content.citations,
|
|
379
|
-
text: content.text,
|
|
380
|
-
type: content.type,
|
|
381
|
-
parsed: parsed
|
|
382
|
-
)
|
|
359
|
+
content.parsed = parsed
|
|
383
360
|
end
|
|
384
361
|
end
|
|
385
362
|
# rubocop:enable Metrics/BlockLength
|
|
@@ -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 =
|
|
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
|
|
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 =
|
|
147
|
-
|
|
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 =
|
|
160
|
-
|
|
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
|
-
|
|
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
|
|
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)
|